如何在Matlab中将Image矩阵转换为矢量

时间:2014-06-23 19:47:22

标签: matlab image-processing

我似乎无法弄清楚这一点: 我需要将矩阵重塑为一个向量,到目前为止,我有这个:

img = imread('image.png');
grayImage = rgb2gray(img);
imageArray = reshape(grayImage, r, c);

输出的内容如下:

imgVector=[1 2 3 4 5 6 7 8 9 0]

我的问题是我需要它做这样的事情:

imgArray=[1 2 3
          4 5 6 
          7 8 9]

重塑为:

imgVector=[1 2 3 6 5 4 7 8 9]

我希望有道理。基本上我需要它解压缩,所以它在下一行之后从左到右,然后从右到左。任何帮助,将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:2)

从根本上说,你要做的就是从左到右翻转每一行,这样内置函数fliplr就可以了。

要一步完成,只需选择索引操作中的每一行:

>> imgArray=[1 2 3; 4 5 6; 7 8 9]

imgArray =

     1     2     3
     4     5     6
     7     8     9

>> imgArray(2:2:end,:)=fliplr(imgArray(2:2:end,:))

imgArray =

     1     2     3
     6     5     4
     7     8     9

然后你可以通过重塑将其变成一个矢量。

imgVector=reshape(imgArray',1,[]);
 #%transpose the array----^

由于重组是按列完成的,因此首先转置数组以获得所需的格式。

答案 1 :(得分:1)

您可以使用fliplr函数,它反转向量的顺序。 这是一个简单的例子:

A = [1 2 3;4 5 6;7 8 9];

A =

     1     2     3
     4     5     6
     7     8     9

A(2,:) = fliplr(A(2,:));

A =

     1     2     3
     6     5     4
     7     8     9

因此可以为整个图像使用循环翻转每隔一行。希望有所帮助!