2013-05-02 83 views
-1

我很感兴趣如何给定的图像转换成矩阵形式只是数字?例如我们采取以下图片如何转换图像矩阵

enter image description here

,因为我知道存在着MATLAB特殊功能,这分解给定的图像到颜色和数字,比如我已经看到了这码本网站

I = imread('test.jpg'); 
b = dec2bin(I); % b becomes vector 
% some actions with binary vector 
du = bin2dec(b); 
du = reshape(du,size(I)); % converting vector du to 3d Image array 
imwrite(uint8(du), 'du.jpg'); %save our du to file du.jpg 

I = imread('du.jpg'); %test if it saved correctly 
imshow(du) 

上,并转化为我的图片,这样

I=imread('tensor_in.jpg'); 

b=dec2bin(I) 

,只有零得到下面的数组,其实和一个

00001110 
00001111 
00010000 
00010000 
00010001 
00010010 
00010011 
00010101 
00010110 
00011000 
00011001 
00011000 
00010101 
00010101 
00010101 
00010101 
00010101 
00010101 
00010101 
00010101 
00011000 
00011000 
00011000 
00011000 
00011000 
00011000 
00011000 
00011000 
00011011 
00011011 
00011011 
00011011 
00011011 
00011011 
00011011 
00011011 
00011100 
00011100 
00011100 
00011101 
00011101 
00011110 
00011110 
00011101 
00011110 
00011011 
00011011 
00011011 
00100000 
00100011 
00101001 
00101011 
00101111 

显然我没有继续,因为它的大小是

<151074x8 char> 

,并遵循相同的规则,例如

0 0 0 
0 0 1 
0 1 0 
0 1 1 
1 0 0 
1 0 1 
1 1 0 
1 1 1 

但我很感兴趣,如果不是获取数字数组,如何获得数组wi TH另一些数字,例如像

2 1 3 
4 21 23 
67 89 100 

比方说像this.could我在Matlab吗?请帮我

+0

我不知道我的理解 - 你说你想要得到的RGB像素值,为整数,在列表中? – jazzbassrob 2013-05-02 10:29:52

+0

I = imread('test.jpg') 你试过这个... 如果它的彩色图像,尝试我= rgb2gray(imread('test.jpg')) – sridutt 2013-05-02 10:31:07

+0

我感兴趣,如果我可以得到一些从图片数量的阵列,也许像素值,但实际上我想是得到这样的数字,通过这个数字可以创建 – 2013-05-02 10:32:29

回答

4

拿督,当您使用

I = imread('test.jpg'); 

你的形象已经在一个数组形式。每个“数字”告诉你一部分颜色信息。

如果图像文件是在索引表格,你会得到一个N×M的数组(大小为N×M的图像)。

如果图像没有被索引,就会得到一个NxMx3阵列,其中每三个N×M个阵列的对应,分别对红,绿和蓝色通道。

我建议你学习MATLAB如何处理图片:http://www.mathworks.de/de/help/matlab/creating_plots/working-with-images-in-matlab-graphics.html

+0

所以为获得除0和1以外的任何实数,我应该添加颜色信息? – 2013-05-02 14:18:54

+0

@dato你不需要“添加”任何东西。颜色信息存在于NxMx3矩阵I中.I(1,1,1)将给出像素(1,1)的红色分量,I(231,218,3)将给出像素的蓝色分量(231,218) 。 – beaker 2013-05-02 17:49:02