Как получить передний план на бинарном изображении (MATLAB) - PullRequest
0 голосов
/ 06 октября 2011

У меня есть двоичная фотография позирующего человека, и я хочу игнорировать фоновую (черную) часть и получить только передний план (сам человек, белый).
Я хочу, чтобы это слило человека с другим фоном.

Я застрял здесь. Я не знаю, как продолжить:

mypic = imread('model1.jpg');

binarymypic = im2bw(mypic);

Заранее спасибо.

1 Ответ

1 голос
/ 07 октября 2011

Предполагая, что у вас есть A и B, которые имеют одинаковый размер, вы можете скопировать нужные пиксели от A до B, используя логическую маску I:

B(I) = A(I);

В этом случае A - это мипик, I - это binarymypic, а B содержит фон.

РЕДАКТИРОВАТЬ : Попробуйте:

mypic = imread('model1.jpg');
backgroundimage = imread('background.jpg');

% Check assumptions
assert(size(mypic,3) == 3, 'Expecting true colour foreground image')
assert(size(mypic,3) == 3, 'Expecting true colour background image')
assert(isequal(size(mypic), size(backgroundimage)), 'Images should have the same size')

mask = im2bw(rgb2gray(mypic));

in = reshape(mypic, [], 3);
out = reshape(backgroundimage, [], 3);
out(mask,1) = in(mask,1); % Red
out(mask,2) = in(mask,2); % Green
out(mask,3) = in(mask,3); % Blue

finalimage = reshape(out, size(backgroundimage));
imshow(finalimage)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...