2010-12-02 4 views
0

si j'ai deux images de dimensions différentes .... que puis-je le faire comme j'ai une fenêtre avec une taille égale à la somme des tailles de deux images, des moyens fenêtre (taille) = taille image1 + taille de l'image 2 et que coller ces mages sur cette fenêtre pour les montrer ensemble ..... est-il possible? si oui, que la façon dontjoindre des images de différentes dimensions dans matlab

+0

double possible de [comment combiner deux images sur une fenêtre Matlab?] (Http://stackoverflow.com/questions/4037779/how-to-combine-two-images-on-one-window- matlab) – gnovice

+0

@gnovice pas exactement dupliquer comme les tailles ici ne sont pas les mêmes. – Shai

Répondre

2

d'après votre description, il semble que vous voulez construire une matrice bloc-diagonale à partir des deux images, puisque la taille du résultat sera la somme des tailles (le long de chaque dimension). La façon de le faire est d'utiliser la fonction blkdiag:

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

Bien sûr, les blocs hors diagonale sont complétées par des zéros.

EDIT:

répondre à votre question raffinée, vous devez pad l'image plus courte avec des zéros il devient à la même hauteur que la plus image. Ensuite, vous pouvez les concaténer côte à côte. En supposant img1 est plus, il ressemblerait à quelque chose comme:

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

mais je veux joindre des images de manière horizontale. – chee

+0

Mais vous avez dit que vous voulez que la taille soit la somme des tailles. Si vous les joignez horizontalement, le résultat aura la hauteur de la plus longue, pas la somme. S'il vous plaît expliquer plus en détail ce que vous essayez d'atteindre. –

+0

ok oui vous avez raison .... ce que je veux, c'est l'image résultante avec une taille plus grande. Taille de l'image1 = 250x320, et de l'image2 = 220x320 .... l'image obtenue devrait avoir des dimensions = 250x640. – chee

2

J'ai écrit ce code pour joindre deux images horizontalement. img1 et img2 devraient être en niveaux de gris.

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 
Questions connexes