2010-08-15 5 views
2

주어진 사진 폴더에서 임의의 콜라주를 만들 수있는 프로그램을 작성하고 싶습니다.어떻게 MATLAB에서 콜라주를 만들 수 있습니까?

시작하려면 세 가지 이미지로 간단한 콜라주를 만들고 싶습니다. 이런 식으로 뭔가 : 나는 지금

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 

이는 MATLAB에서 할 수있는 방법은 거의 코드가 없습니다

alt text

?


내가 어떻게 스트레치, 회전 콜라주를 만드는 동안 나는 완전한 자유를 가질 수 있도록 다음, 캔버스에 개별 이미지를 배치? 이미지 배치는 ​​이미지가 캔바스 영역 외부에 놓이게 될 수도 있습니다. 콜라주 형성하기 위해 이미지를 스트레칭

하나의 방법이지만, 나는 스트레칭과 당신이 모양으로 이미지를 스트레칭 할 가정 그들에게

+0

개별 이미지의 크기는 무엇입니까? 모든 이미지가 사각형이면 어떨까요? – Jonas

+0

이미지 처리 도구 상자가 있습니까? – Jonas

답변

3

를 배치 할 수 있도록하려면 당신은 이미지 처리 도구 상자를 가지고 IMRESIZE을 사용하여 콜라주를 수행 할 수 있습니다.

.m 파일로 저장하는 함수를 만듭니다. 이것은 전체/모두 닫기를 선택하는 것보다 훨씬 안전합니다

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

감사! 예, 도구 상자를 사용할 수 있습니다. 캔버스의 어느 부분 에나 이미지를 배치하고 싶습니다. 그렇게하는 가장 좋은 방법은 무엇입니까? – Lazer

+0

먼저 각 이미지의 중심점과 새 크기를 정의하십시오. 그런 다음 (루프 안에서) 이미지의 크기를 변경하고, 이미지를 회전 시키려면'imrotate'를 사용하고, 마지막으로 콜라주에 이미지를 놓습니다. 그러면 중심이 원하는 위치에 놓입니다. – Jonas

관련 문제