如何在Matlab中重塑1D RGB到2D RGB图像?

时间:2014-07-11 17:13:15

标签: arrays matlab matrix reshape

假设我有以下结构的1D RGB数组:

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

,其中

N = H*W;

ans H和W分别是图片的高度和宽度。

如何将其重塑为彩色图像格式HxW,由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重塑按列工作)

更新

这种重塑可以通过以下方式完成

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调用缩短时间吗?

1 个答案:

答案 0 :(得分:3)

我认为您正在寻找的是:reshape(I', H, W, 3)