在matlab中连接不同维度的图像

时间:2010-12-02 05:54:28

标签: matlab

如果我有两个不同尺寸的图像.... 我可以这样做,就像我有一个大小等于两个图像的大小总和的窗口,意思是  窗口(大小)=图像大小1 +图像大小2 然后将这些法师粘贴在此窗口上以共同显示它们 .....有可能吗?如果是,那么

2 个答案:

答案 0 :(得分:2)

根据你的描述,你觉得你想要从两个图像构造一个块对角矩阵,因为那时结果的大小将是大小的总和(沿着每个维度)。这样做的方法是使用blkdiag函数:

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

当然,非对角线块用零填充。

编辑:

回答您提出的问题时,您必须用零填充较短的图像,使其与较长的图像处于同一高度。然后你可以并排连接它们。假设img1 更长,它看起来像是:

h1 = size(img1, 1);
[h2, w2] = size(img2);
img2a = [img2; zeros(h1-h2, w2)];
img = [img1, img2a];

答案 1 :(得分:2)

我已编写此代码以水平连接两个图像。 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