2010-12-02 11 views
0

Wenn ich zwei Bilder von verschiedenen Dimensionen habe .... als kann ich es tun, wie ich ein Fenster mit Größe gleich der Summe der Größen von zwei Bildern haben, bedeutet Fenster (Größe) = Größe von image1 + Größe des Bildes 2 und als diese Magiern in diesem Fenster fügen Sie sie gemeinsam zeigen ..... ist es möglich,? wenn ja, als wieVerbinden von Bildern verschiedener Dimensionen in Matlab

+0

möglich Duplikat [wie zwei Bilder auf einem Fenster Matlab kombinieren?] (Http://stackoverflow.com/questions/4037779/how-to-combine-two-images-on-one-window- Matlab) – gnovice

+0

@gnovice nicht genau duplizieren, da die Größen hier nicht gleich sind. – Shai

Antwort

2

aus Ihrer Beschreibung soll es klingt Sie konstruieren eine blockdiagonale Matrix aus den beiden Bildern, da dann die Größe des Ergebnisses die Summe der Größen (entlang jeder Dimension) ist. Die Art und Weise, es zu tun ist, um die blkdiag Funktion zu verwenden:

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

Natürlich sind die Nebendiagonalblöcke werden mit Nullen aufgefüllt.

EDIT:

Ihre raffinierte Frage zu beantworten, haben Sie die kürzere Bild mit Nullen aufzufüllen, so dass es auf der gleichen Höhe wie die längere Bild angezeigt wird. Dann können Sie sie nebeneinander verketten. Unter der Annahme, img1 ist länger, es so etwas wie aussehen:

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

aber ich möchte horiztional Bilder beitreten. – chee

+0

Aber Sie sagten, Sie möchten die Größe Summe der Größen sein. Wenn Sie sie horizontal verbinden, wird das Ergebnis die Höhe des längeren haben, nicht die Summe. Bitte erläutern Sie genauer, was Sie erreichen möchten. –

+0

ok ja du hast Recht .... was ich will, ist das resultierende Bild mit längerer Höhe.wenn Dimension von image1 = 250x320, und von image2 = 220x320 .... resultierende Bild sollte Dimensionen = 250x640 haben. – chee

2

ich diesen Code geschrieben haben zwei Bilder horizontal zu verbinden. img1 und img2 sollten Graustufen sein.

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 
Verwandte Themen