2010-12-02 69 views
0

如果我有兩個不同尺寸的圖像....比 我可以這樣做,就像我有一個窗口的大小等於兩個圖像的大小之和,意思是 window(size )=圖像的圖像1 +尺寸的大小2 比粘貼此窗口上這些法師們展示他們共同 .....這可能嗎?如果是的不是如何在matlab中加入不同尺寸的圖像

+0

可能重複[如何將兩個圖像上的一個窗口MATLAB結合?](http://stackoverflow.com/questions/4037779/how-to-combine-two-images-on-one-window- matlab) – gnovice 2010-12-03 14:34:46

+0

@gnovice不完全重複,因爲這裏的大小是不一樣的。 – Shai 2014-11-23 08:40:01

回答

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]; 
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