一、复杂度

1. 现实环境的影响:
绿色不是一个固定的像素值, 它会随光线亮暗,绿布的颜色, 相机的成像质量,反光,色溢等各种因素影响,所以不能用简单的判断一个像素值,就认为是绿或不绿;也不是一个平滑过度的值,比如光线强的地方或相机好,绿色的成像就好一些, 光线差或手机差,绿色就完全不同。

2. 相机设备的影响:
比如iphone12手机和iphone8手机对着同一个绿布, 成像就完全不同; iphone手机和android手机, 甚至android的高端手机和低端手机,对着同一个绿布,成像也不相同;(这也是大部分手机厂家不断广告他们的相机如何如何好的原因)。

3. 绿布的影响:
常见的绿布有三种(如下),需要在不经过用户调节的情况下, 直接抠掉,因为如果要给用户出一个教程, 教会用户明白各种参数, 让用户根据自己的场景不断的调节抠绿的一些参数, 本身就已经是错误的。

 

 

Android 绿幕 demo 手机用绿幕_复杂度

 

 

 

二、 精细度:

1.需要抠的好, 适合常见光线条件下的大部分场景,并在抠完后没有绿边, 自然干净。如果不精细, 就有会绿边,这样叠加背景后, 看上去, 就容易出戏, 让人感觉不舒服;

2.并且在抠绿后, 不能对其他颜色产生影响, 如果绿色去掉了,但其他 颜色变色了, 也会影响整体的画质,降低用户的体验;

 

 

三、抠绿算法

1. 别家的算法:
大部分用的是开源的chromaKey算法(色度键), 有GPU版本和C语言版本,算法原理是把一个范围内的绿色通过HSB转换,然后调节平滑度,把指定像素的值趋向于透明。这样的算法是对指定颜色做抠去, 需要用户点击选取一下颜色,然后对指定颜色像素做抠图,然后用户调节平滑度和其他参数才可以抠去; 缺点是:抠的不干净, 用户学习成本高,需要用户反复的调节才可以勉强可用;

2. 蓝松的绿幕抠图: https://www.lansongai.com/GreenMatting.html
自研的抠图算法, 采用卷积等核心处理,可以自动抠去不同的绿色,并支持不同的功能需求,大部分的场景下不需要调节, 相机对着绿布, 就自然抠去了, 几乎零学习成本。 我们一直认为好的调节,就是尽量不调节;当然提供了各种阈值强度等调节接口,以方便在特定场合下使用。