Построение массива изображений в 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]