2010-12-02 30 views
0

は、 ウィンドウ(サイズを意味します)=画像のイメージ1 +サイズの大きさは2 と、このウィンドウ上でこれらのメイジを貼り付けるよりも、それが可能である.....共同 それらを表示するには?それはあなたが構築したいどのように聞こえるかはMATLABで異なる大きさの画像を結合

+0

の可能重複[1ウィンドウMathWorks社のMATLAB上の2枚の画像を合成する方法?](http://stackoverflow.com/questions/4037779/how-to-combine-two-images-on-one-window- matlab) – gnovice

+0

@gnoviceは正確には重複していませんが、ここのサイズは同じではありません。 – Shai

答えて

2

あなたの説明から、よりyesの場合2つの画像からのブロック対角行列であり、結果のサイズは(各次元に沿った)サイズの合計になるからである。非対角ブロックはゼロが埋め込まれもちろん

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

:それを行う方法はblkdiag機能を使用することです。

EDIT:それは長い画像と同じ高さになるように、あなたの洗練された質問に答える

は、あなたがパッドにゼロで短いイメージを持っています。次に、それらを並べて連結することができます。私は水平に2枚の画像を結合するため、このコードを書かれている

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

しかし、私はhorizantallyに画像に参加したい。 – chee

+0

しかし、あなたはサイズを合計したいと言った。それらを水平に結合すると、その結果は合計ではなく、より長いものの高さになります。あなたが達成しようとしていることをより詳しく説明してください。 –

+0

いいえはいあなたは正しいです....私が望むのは、image1 = 250x320、image2 = 220x320 ....のより長いheight.ifの次元の結果の画像です。結果の画像の寸法は250x640です。 – chee

2

img1長いであると仮定すると、それは次のようになります。 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 
関連する問題