如何更改图像的背景颜色?

时间:2014-11-20 06:04:55

标签: matlab image-processing image-effects

我想在Matlab中remove/change图像的背景颜色。

任何人都知道怎么做?

这是一个示例图片,我想删除绿色背景颜色。

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

1 个答案:

答案 0 :(得分:4)

最简单的答案是,

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);

enter image description here

您应该更改c(背景颜色)和threshc的阈值)并找到最适合您背景的效果。

您可以将B定义为新的背景图片。添加Bb(:,:) = 255;的示例将为您提供蓝色背景。

enter image description here

您甚至可以将B定义为图像。

为了检测背景,您可以找到图像中使用最多的颜色,但这不一定是我认为的背景。