Build an array of images in Matlab
I'm doing a Matlab project and I need to know how to build an array of images.
I need to have the ability to move through the array in a similar format as a C ar开发者_开发知识库ray with some kind of index.I tried it with this:
images = [image1 image2 image3 image4 image5];
but I get this error:
CAT arguments dimensions are not consistent.
I checked the size(image)
method for every one of the images and all of them are from the same dimension.
What could be wrong or alternatively how I can do this in other way?
thanks.
There are two ways you can build an array of images:
1. A 3D array
You catenate your images (all should be the same size) along the third dimension like so:
imgArray=cat(3,image1,image2,image3,...)
You can then access each individual image by indexing the third dimension. E.g.
image1=imgArray(:,:,1);
2. A cell array
In this case, you group your images into a cell array, and each image is contained in its own cell.
imgCell={image1,image2,image3,...};
This is a good choice (the only choice) when your images are of different sizes. To access each individual image, you can index the cell as follows:
image1=imgCell{1};
This code:
images = [image1 ... image5];
Is functionally equivalent to these statements:
images = horzcat(image1, ..., image5);
images = cat(2, image1, ..., image5);
You get the error because there's at least one dimension in your image[1-5] that is not the same. The only dimension that's allowed to be a different size is the first argument to cat (so in this case the 2nd or columns dimension).
Try reshaping (vector1 = reshape(image1, 1, size(image1,1)*size(image1,2))
) each image so that you get a vector and then put these vectors into your array like images = [vector1; vector2; vector3; vector4; vector5]
精彩评论