在Matlab中构建一个图像数组

时间:2011-06-27 17:38:34

标签: arrays image matlab

我正在做一个Matlab项目,我需要知道如何构建一个图像数组 我需要能够以类似于具有某种索引的C数组的格式移动数组。

我试过这个:

images = [image1 image2 image3 image4 image5];

但是我收到了这个错误:

  

CAT参数维度不一致。

我为每个图像检查了size(image)方法,并且所有图像都来自同一维度。

有什么可能是错的,或者我怎么能以其他方式做到这一点?

感谢。

3 个答案:

答案 0 :(得分:23)

有两种方法可以构建图像数组:

1。一个3D数组

你可以沿着第三个维度连接你的图像(所有图像都应该是相同的尺寸),如下所示:

imgArray=cat(3,image1,image2,image3,...)

然后,您可以通过索引第三维来访问每个单独的图像。 E.g。

image1=imgArray(:,:,1);

2。单元格数组

在这种情况下,您将图像分组为单元格数组,每个图像都包含在自己的单元格中。

imgCell={image1,image2,image3,...};

当您的图像尺寸不同时,这是一个不错的选择(唯一的选择)。要访问每个单独的图像,您可以按如下方式索引单元格:

image1=imgCell{1};

答案 1 :(得分:4)

此代码:

images = [image1 ... image5];

在功能上等同于这些陈述:

images = horzcat(image1, ..., image5);
images = cat(2, image1, ..., image5);

您收到错误,因为图片[1-5]中至少有一个维度不相同。允许使用不同大小的唯一维度是cat的第一个参数(所以在这种情况下是第二个或列维度)。

答案 2 :(得分:2)

尝试重塑每个图片(vector1 = reshape(image1, 1, size(image1,1)*size(image1,2))),以便获得一个向量,然后将这些向量放入数组中,如images = [vector1; vector2; vector3; vector4; vector5]