我正在做一个Matlab项目,我需要知道如何构建一个图像数组 我需要能够以类似于具有某种索引的C数组的格式移动数组。
我试过这个:
images = [image1 image2 image3 image4 image5];
但是我收到了这个错误:
CAT参数维度不一致。
我为每个图像检查了size(image)
方法,并且所有图像都来自同一维度。
有什么可能是错的,或者我怎么能以其他方式做到这一点?
感谢。
答案 0 :(得分:23)
有两种方法可以构建图像数组:
你可以沿着第三个维度连接你的图像(所有图像都应该是相同的尺寸),如下所示:
imgArray=cat(3,image1,image2,image3,...)
然后,您可以通过索引第三维来访问每个单独的图像。 E.g。
image1=imgArray(:,:,1);
在这种情况下,您将图像分组为单元格数组,每个图像都包含在自己的单元格中。
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]