Вы извлекли две области одинакового размера из двух изображений. Если вы хотите поместить их рядом на одном и том же изображении, используйте cat
, или эквивалентно, используйте квадратные скобки []
:
next_to_each_other = [P1,P2];
on_top_of_each_other = [P1;P2];
Но учтите, что вы можете собрать эти вещи вместе, даже если они не имеют одинаковые размеры. Например, если I1
равно N
x M
пикселей, а I2
равно N
x K
(с N
вертикальным размером, как обычно в MATLAB), тогда вы все равно можете сделать [I1,I2]
потому что вертикальный размер совпадает.
Если ни вертикальный, ни горизонтальный размеры не совпадают, вы можете заполнить единицу нулями (или любым другим подходящим значением), используя padarray
, прежде чем соединять их вместе:
ny1 = size(I1,1);
ny2 = size(I2,1);
if ny1<ny2
I1 = padarray(I1,[ny2-ny1,0,0],0,'post'); % The 0 is the value to pad
elseif ny2<ny1
I2 = padarray(I2,[ny1-ny2,0,0],0,'post'); % The 0 is the value to pad
end
out = [I1,I2];
padarray
также позволяет реплицировать данные в матрице вместо заполнения нулями. Прочитайте документацию, чтобы найти то, что подходит. padarray
требуется набор инструментов для обработки изображений. Если у вас его нет, вы можете повторить его функциональность, создав массив с нулями соответствующего размера с помощью функции zeros
и добавив его к изображению с помощью чего-то вроде [I1;zeros(ny2-ny1,size(I1,2),size(I1,3)]
.