2014-07-11 86 views
0

假設我有以下結構的一維RGB陣列:如何在Matlab中重塑1D RGB到2D RGB圖像?

I = [r1 r2 ... rN; g1 g2 ... gN; b1 b2 ... bN]; 

其中

N = H*W; 

ANS H和W分別是圖像的高度和寬度。

如何把它重塑有色圖像格式高x寬,這是由3D矩陣表示,這樣

I2(1,1,1) = r1 
I2(1,1,2) = g1 
I2(1,1,3) = b1 
I2(2,1,1) = r2 
I2(2,1,2) = g2 
I2(2,1,3) = b2 
... 
I2(H,W,1) = rN 
I2(H,W,2) = gN 
I2(H,W,3) = bN 

(如果我是正確的思維,正常的1D - > 2D按列重塑作品)

UPDATE

該整形可以做下面的方式

R = I(1,:); 
R = reshape(R,H,W); 

G = I(2,:); 
G = reshape(G,H,W); 

B = I(3,:); 
B = reshape(B,H,W); 

I2 = cat(3, R, G, B); 

它可以做得更短,例如一個reshape電話?

+0

你在這個例子中有我什麼都不用在Matlab 1D。你的實際數組只是一個一維數組數組,其中前三分之一是你的R值,三分之一是G值,還有三分之一是你的B值? –

+0

顯然,從Matlab的角度來看,它是二維數組數組。從邏輯角度來看,它是一維像素陣列,其中所有像素都沿着Matlab的第二維排列,而像素組件則沿着Matlab的第一維排列。 –

回答

3

我想你要找的是什麼:reshape(I', H, W, 3)

+0

+1 - 這是正確的 – rayryeng