объединение изображений разных размеров в Matlab - PullRequest
0 голосов
/ 02 декабря 2010

если у меня есть два изображения разных размеров .... чем я могу это сделать, если у меня есть окно с размером, равным сумме размеров двух изображений, означает окно (размер) = размер изображения1 + размер изображения2 и затем вставьте этих магов в это окно, чтобы показать их совместно ..... возможно ли это? Если да, то чем

Ответы [ 2 ]

2 голосов
/ 23 ноября 2014

Я написал этот код для объединения двух изображений по горизонтали.img1 и img2 должны быть в оттенках серого.

function [ output_args ] = sideBySideImage( img1, img2 )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here, expects a black and white images


    [r1, c1] = size(img1);
    [r2, c2] = size(img2);

    if r1<r2    %rows in first img are less, so we add some rows in it
        temp_row = zeros(1,c1);
        while r1~=r2
            img1 = [img1; temp_row];
            [r1, c1] = size(img1);
            [r2, c2] = size(img2);
        end
    elseif r1>r2    %rows in second img are less, so we add some rows in it
        temp_row = zeros(1,c2);
        while r1~=r2
            img2 = [img2; temp_row];
            [r1, c1] = size(img1);
            [r2, c2] = size(img2);
        end
    end



    output_args = [img1, img2];

end
2 голосов
/ 02 декабря 2010

Из вашего описания звучит, что вы хотите построить блочно-диагональную матрицу из двух изображений, поскольку тогда размер результата будет суммой размеров (по каждому измерению). Способ сделать это - использовать функцию blkdiag:

img1 = randn(70,100);
img2 = randn(50,110);
img = blkdiag(img1,img2);
imshow(img)

Конечно, недиагональные блоки дополняются нулями.

EDIT:

Отвечая на уточненный вопрос, вы должны заполнить более короткое изображение нулями, чтобы оно стало на той же высоте, что и более длинное изображение. Тогда вы можете объединить их рядом. Если предположить, что img1 длиннее , это будет выглядеть примерно так:

h1 = size(img1, 1);
[h2, w2] = size(img2);
img2a = [img2; zeros(h1-h2, w2)];
img = [img1, img2a];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...