4
您好亲爱Matlab的专家,重塑阵列,排序逐行对于每个图像
我有图像的阵列,假设一个2×3网格的图像(6个图像)。每张图片的分辨率为4 x 4(为简单起见)。可以说图像是灰度的。
予加载的图像转换成一个4D矩阵尺寸为2×3×4×4。现在我想创建的条目的列向量
1:在图像的第一行的第一像素1,1
2:在图像的第一行的第二像素1,1
3:...
16:在图像1最后一行的最后一个像素,1
17:第一像素第一排在图片2中,1
...
等模式。我能成功地与一帮的for循环创建此:
for imageX = 1 : resolution(2)
for imageY = 1 : resolution(1)
for pixelX = 1 : resolution(4)
for pixelY = 1 : resolution(3)
% linear index for 4D indices
row = ((imageY - 1) * resolution(2) + imageX - 1) * resolution(3) * resolution(4) + ...
(pixelY - 1) * resolution(4) + pixelX;
lightFieldVector(row) = lightField(imageY, imageX, pixelY, pixelX);
end
end
end
end
如果循环的这个丑陋的堆可以由几个reshape
和permute
操作来代替我想知道。我认为是这样,但我无法找到正确的顺序。我几次使用这些方法,但只能使用2D矩阵。从文档中我可以得出结论,重塑将会'列第一',所以这将是我需要的相反。
我感谢您的帮助, 阿德里安
哇,这是一个非常快的答案! – aeduG 2015-03-02 21:23:28
逆向过程如何?它会是这样的:lightField = permute(reshape(lightFieldVector,resolution),[4,3,2,1]); ? – aeduG 2015-03-02 21:29:30
难道你不知道光速是在Divakar之后受到启发吗? (哈哈笑话)。 +1 – rayryeng 2015-03-02 21:34:16