2013-12-16 2 views
0

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

То, что я сейчас это:

image

Так что я в принципе хочу то же самое без черной окантовки вокруг листа белой бумаги. Это мой код:

resizedBg(startrow:startrow+size(rscrop,1)-1, startcol:startcol+size(rscrop,2)-1, :) = rscrop; 

Заранее благодарен!

ответ

0

В принципе, вы можете действовать так, как будто у вас есть маска.

Позвольте быть вашим первым изображением A и вторым B. Вы хотите заполнить B везде A полностью черным. Он переводит непосредственно в Matlab, как:

C = zeros(size(B,1), size(B,2),3); 
C(startRow:startRow+size(A,1)-1, startCol:startCol+size(A,2)-1,:) = A; 
M = repmat(sum(C,3)==0,1,1,3); 
C(M) = B(M); 

Я расширить маски М над 3-х измерениях, чтобы можно было использовать непосредственно в качестве маски.

+0

Не совсем ... Я хочу вставить A в B. A меньше, чем B, и я знаю начальную позицию. A - искаженный белый прямоугольник, заполненный черным, чтобы иметь прямоугольное изображение. B - серый фон. – user3038350

+0

@ user3038350 Ответ исправлен, правильно ли сейчас? Я предполагаю, что вы хотите изображение с таким же размером, как B. Является ли ваш фон RGB-подобным изображением или реальным серым (1 байт на пиксель)? – Bentoy13

+0

Я получаю сообщение об ошибке repmat (со слишком большим количеством аргументов). Оба изображения находятся в RGB. – user3038350

Смежные вопросы