Matlab访问来自多维数组的向量

时间:2014-02-25 12:18:01

标签: arrays image matlab matrix vectorization

我有一个尺寸为300x200x3x20的4D矩阵,其中300x200是一个视频帧的大小,3是通道数(红 - 绿 - 蓝通道),20是帧数。

  1. 我想从这个矩阵中提取所有颜色向量,并将它们存储在大小为3x1,200,000(300 x 200 x 20 = 1,200,000)的2D数组中,其中每一行代表RGB颜色空间的一个组成部分。每列包含原始矩阵中一个像素的RGB值。

  2. 此外,我想对这些数据进行按像素操作,例如提取视觉特征,但我找不到有效访问第三维矢量的方法。

  3. 如何在不使用循环的情况下有效地执行这些操作?

2 个答案:

答案 0 :(得分:2)

试试这段代码 -

IN = your_4D_data;
OUT = reshape(permute(IN,[3 1 2 4]),3,numel(IN)/3);

答案 1 :(得分:1)

help reshape说: B =重塑(A,m,n,p,...)或B =重塑(A,[mnp ...])返回一个n维数组,其元素与A相同,但重新形状为大小为m- by-n-by-p-by -....指定尺寸的乘积m * n * p * ...必须与数字(A)相同。

这就是你要找的东西吗?

另外,您可以按下这样的像素:Matrix(i,j,:,k),它为您提供第k帧中像素i,j的3个颜色系列。

相关问题