2010-08-15 53 views
2

我想写一个程序,可以从给定的图片文件夹创建随机拼贴。如何在MATLAB中创建拼贴?

首先,我想从三个图像创建一个简单的拼贴画。事情是这样的:

alt text

我现在所拥有的

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做到几乎无码?


我怎样才能拉伸旋转,然后放置在画布上的各个图像,这样我可以有完全的自由,同时创造拼贴?图像的位置可能发生在图像位于画布区域之外的位置。

拉伸图片以构成是拼贴是一种方式,但我希望能够伸展并把它们

+0

什么大小的个别图像?如果所有的图像都是方形的呢? – Jonas 2010-08-15 14:12:58

+0

你有图像处理工具箱吗? – Jonas 2010-08-15 15:06:39

回答

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 2010-08-15 17:52:58

+0

您首先定义每个图像的中心点和新尺寸。然后(在一个循环中)调整图像的大小,使用'imrotate'旋转它们,最后将图像放到拼贴画上,以使中心位于您想要的位置。 – Jonas 2010-08-17 03:00:32