Построение массива изображений в Matlab

Я делаю проект MATLAB и мне нужно знать, как построить массив изображений.
Мне нужно иметь возможность перемещаться по массиву в аналогичном формате как массив C с каким-то индексом.

Я попытался это:

images = [image1 image2 image3 image4 image5];

но я получаю эту ошибку:

размеры аргументов CAT не согласуются.

Я проверил size(image) метод для каждого из изображений, и все они из той же измерение.

что может быть не так или как я могу сделать это другим способом?

спасибо.

3 ответов


существует два способа создания массива изображений:

1. Массив 3D

вы catenate изображения (все должны быть одинакового размера) вдоль третьего измерения, как так:

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

затем вы можете получить доступ к каждому отдельному изображению, индексируя третье измерение. Е. Г.

image1=imgArray(:,:,1);

2. Массив ячеек

в этом случае вы группируете свои изображения в массив ячеек, и каждое изображение содержится в своем собственном клетка.

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

Это хороший выбор (единственный выбор), когда ваши изображения разных размеров. Чтобы получить доступ к каждому отдельному изображению, вы можете проиндексировать ячейку следующим образом:

image1=imgCell{1};

этот код:

images = [image1 ... image5];

функционально эквивалентно этим утверждениям:

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

вы получаете ошибку, потому что в вашем изображении есть хотя бы одно измерение[1-5], которое не совпадает. Единственным измерением, которое может быть другого размера, является первый аргумент cat (так что в этом случае 2-е или измерение столбцов).


попробуйте изменить форму (vector1 = reshape(image1, 1, size(image1,1)*size(image1,2))) каждое изображение, чтобы вы получили вектор, а затем поместите эти векторы в свой массив, как images = [vector1; vector2; vector3; vector4; vector5]