2010-08-15 5 views
2

Je veux écrire un programme qui peut créer des collages aléatoires à partir d'un dossier donné d'images. Pour commencer, je veux créer un collage simple à partir de trois images. Quelque chose comme ceci:Comment créer un collage dans MATLAB?

alt text

J'ai presque pas de code en ce moment

clc; 
clear all; 
close all; 

a = imread('a.png'); 
b = imread('b.png'); 
c = imread('c.png'); 

% create a new image of size X x Y 

% for a simple collage 

% place a in the top half 
% place b in the bottom left 
% place c in the bottom right 

Comment cela peut-il être fait dans Matlab?


Comment puis-je étirer, tourner puis placez les images individuelles sur une toile, pour que je puisse avoir la liberté complète, tout en créant le collage? Le placement de l'image peut donc se produire que les images se trouvent en dehors de la zone de la toile.

Stretching images pour former est le collage est une façon, mais je veux être en mesure d'étirer et de les placer

+0

De quelle taille sont les différentes images? Et si toutes les images sont carrées? – Jonas

+0

Avez-vous la boîte à outils de traitement d'image? – Jonas

Répondre

3

En supposant que vous voulez étirer les images en forme et que vous avez la boîte à outils de traitement d'image , vous pouvez effectuer le collage de la manière suivante, en utilisant IMRESIZE:

Créez une fonction que vous enregistrez en tant que fichier .m. C'est beaucoup plus sûr que d'appeler tout effacer/tout fermer

function collImg = collage 
%#COLLIMG creates a collage of three images called 'a.png' 'b.png' and 'c.png' 
%# 
%# OUTPUT collImg : collage image, with individual images arranged as [a;b,c] 
%# 

a = imread('a.png'); 
b = imread('b.png'); 
c = imread('c.png'); 

newImageSize = [512,512]; %# or anything else that is even 

%# get the new sizes - this approach requires even image size 
newSizeA = newImageSize./[2,1]; 
newSizeB = newImageSize./[2,2]; 
newSizeC = newImageSize./[2,2]; 

%# resize the images and stick together 
%# place a in the top half 
%# place b in the bottom left 
%# place c in the bottom right 
collImg = [imresize(a,newSizeA);imresize(b,newSizeB),imresize(c,newSizeC)]; 

%# display the image 
figure,imshow(collImg) 
+0

Merci! oui, je peux utiliser la boîte à outils. Je veux pouvoir placer les images sur n'importe quelle partie de la toile. Quelle est la meilleure façon de le faire? – Lazer

+0

Vous commencez par définir le point central et la nouvelle taille de chaque image. Puis (en boucle) vous redimensionnez les images, utilisez 'imrotate' pour les faire pivoter, et enfin vous placez l'image sur le collage de sorte que le centre soit là où vous voulez qu'il soit. – Jonas

Questions connexes