Как я могу создать коллаж в MATLAB? - PullRequest
2 голосов
/ 15 августа 2010

Я хочу написать программу, которая может создавать случайные коллажи из заданной папки изображений.

Для начала я хочу создать простой коллаж из трех изображений. Примерно так:

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?


Как я могу растянуть , повернуть и затем разместить отдельные изображения на холсте, чтобы я мог получить полную свободу при создании коллажа? Размещение изображения может произойти так, что изображения лежат вне области холста.

alt text

Растягивание изображений для формирования коллажей - это один из способов, но я хочу иметь возможность растягивать и размещать их

1 Ответ

3 голосов
/ 15 августа 2010

Предполагая, что вы хотите растянуть изображения до формы, и что у вас есть набор инструментов для обработки изображений, вы можете сделать коллаж следующим образом, используя ИЗОБРАЖЕНИЕ :

Создайте сохраненную функциюкак файл .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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...