我想要remove/change
Matlab 中图像的背景颜色。
有人知道怎么做吗?
这是一个示例图像,我想删除绿色背景颜色。
(来源:frip.in)
最简单的答案是,
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
(background color) 和thresh
(threshold for c
) 并找到最适合您的背景的颜色。
您可以定义B
为新的背景图像。Fr 示例添加Bb(:,:) = 255;
将为您提供蓝色背景。
您甚至可以定义B
为图像。
为了检测背景,您可以找到图像中最常用的颜色,但我认为这不一定是背景。