Как я могу изменить цвет фона изображения?

Я бы хотел remove/change цвет фона изображения в Matlab.

Кто-нибудь знает, как это сделать?

Вот пример изображения, я хочу убрать зеленый цвет фона.

http://cdn4.frip.in/wp-content/uploads/2013/05/custom-widget-area-for-wordpress.jpg

1 ответ

Решение

Самый простой ответ будет,

c = [70 100 70];
thresh = 50;
A = imread('image.jpg');
B = zeros(size(A));
Ar = A(:,:,1);
Ag = A(:,:,2);
Ab = A(:,:,3);
Br = B(:,:,1);
Bg = B(:,:,2);
Bb = B(:,:,3);
logmap = (Ar > (c(1) - thresh)).*(Ar < (c(1) + thresh)).*...
         (Ag > (c(2) - thresh)).*(Ag < (c(2) + thresh)).*...
         (Ab > (c(3) - thresh)).*(Ab < (c(3) + thresh));
Ar(logmap == 1) = Br(logmap == 1);
Ag(logmap == 1) = Bg(logmap == 1); 
Ab(logmap == 1) = Bb(logmap == 1);
A = cat(3 ,Ar,Ag,Ab);
imshow(A);

Вы должны изменить c (цвет фона) и thresh (порог для c) и найдите лучшее, что подходит вашему фону.

Вы можете определить B как ваше новое фоновое изображение. Пример добавления Bb(:,:) = 255;даст вам синий фон.

Вы даже можете определить B как изображение.

Чтобы обнаружить фон, вы можете найти цвет, который наиболее часто используется на изображении, но это не обязательно фон, я думаю.

Другие вопросы по тегам