首先我们知道图像的一个色彩空间就是RGB,意思是说从该角度看,每一张图片其实都是由Red(红色)、Green(绿色)、Blue(蓝色)这样的三基色组成。因此在许多电影拍摄或照相过程中,会经常用使用绿色或蓝色作为背景图片,因为这两个颜色是三基色之一,比较好容易识别出来,然后去除掉,方便后期添加特效或P图等操作。
这里我们就来聊聊如何去除图像的蓝绿色背景。以去除绿色背景为例,既然我们可以把图片的色彩分成红绿蓝三种颜色分量。那么毋庸置疑的就是某一处的像素呈现绿色,那么它的绿色的颜色分量相对其它两个颜色分量的值一定会大一些,但是仅考虑这种值大小就来判断一个像素点是否为绿色是远远不够的。因为色彩的定义是根据人的视觉来的,例如(R,G,B)=(1,4,1),这里的绿色分量值比其他两个颜色分量值加起来都多,但是这样的像素呈现出来却是黑色。这个现象其实是与色彩饱和度有关,不同的光照,给予同样的一个颜色不同的呈现效果,当光照为0时,该像素即使是绿色也是看不出来的。因此,我们应当根据实际情况,设定一个变量,对于不同的光照程度,我们可以让测试人员设置不同的变量,通过对该变量的调整来达到用户想要的去绿色效果。这里,我们还要根据变量以及三个颜色分量来设定一定的公式,目前该公式仅为个人经测试所得,并不一定具有权威性。
公式如下:
绿色>=(红色+蓝色)/((变量+100)/100) and 绿色>=55
当满足该公式所设定的条件时,我们就可以认为该处的像素值呈现的是绿色。
下面是部分代码以及效果图:
这就是判断该像素点为绿色的语句:
这是效果图一:
效果图二: