【问题标题】:How to reshape 1D RGB to 2D RGB image in Matlab?如何在 Matlab 中将 1D RGB 图像重塑为 2D RGB 图像?
【发布时间】:2014-07-11 17:13:15
【问题描述】:

假设我有以下结构的一维 RGB 数组:

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

在哪里

N = H*W;

an 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 电话?

【问题讨论】:

  • 在这个例子中你所拥有的不是 Matlab 中的一维。您的实际数组是否只是一维数字数组,其中前三分之一是您的 R 值,第二个三分之一是您的 G 值,最后三分之一是您的 B 值?
  • 显然,从 Matlab 的角度来看,它是数字的二维数组。从逻辑的角度来看,它是一维像素数组,其中所有像素都沿 Matlab 的第二维布局,像素组件沿 Matlab 的第一维布局。

标签: arrays matlab matrix reshape


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-07-31
    • 2020-12-21
    • 1970-01-01
    • 2015-08-15
    • 2020-04-06
    • 2021-12-15
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多