如何更改图像的背景颜色?
Posted
技术标签:
【中文标题】如何更改图像的背景颜色?【英文标题】:How can I change the background color of the image? 【发布时间】:2014-11-20 06:04:55 【问题描述】:我想remove/change
Matlab 中图像的背景颜色。
有人知道怎么做吗?
这是一个示例图像,我想删除绿色背景颜色。
(来源:frip.in)
【问题讨论】:
你知道背景是什么颜色吗? 不,我不知道。由于有不同的情况,其中一些可能是绿色背景色,而另一些可能是其他颜色。有没有办法做到这一点? 顺便说一句,不同区域的背景颜色可能略有不同。如上图所示,某些区域呈浅绿色。 【参考方案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
定义为新的背景图片。 Fr 示例添加Bb(:,:) = 255;
会给你一个蓝色的背景。
您甚至可以将B
定义为图像。
为了检测背景,您可以找到图像中最常用的颜色,但我认为这不一定是背景。
【讨论】:
感谢您的回答。什么是 C 和 thresh?根据什么规则来更改其他图像的这两个值?非常感谢! c 是绿色的定义(在 [R G B] 上定义,值从 0 到 255)。 Thresh 是你的阈值,它定义了绿色和非绿色之间的区别。 我明白了。非常感谢你!如果我们事先不知道背景颜色是什么,有没有办法改变颜色,因为会有很多不同背景颜色的图像?还是直接去掉背景色? @Kim 你可以通过分析三个 RGB 层的直方图找到图像的默认背景。 @R.Bergamote。一个关于查找图像默认背景颜色的示例代码?谢谢以上是关于如何更改图像的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章