2013-05-02 146 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