一种实用的绿幕分割方法
2018-12-17许意杭曾国安
许意杭 曾国安
摘要:绿幕分割技术被广泛应用于影视制作、直播互动等。目前的绿幕分割技术大多追求效率,准确度以及抗干扰能力较低,且对个人用户不友好。随着自媒体时代的来临,追求实用的绿幕分割技术的需求越来越迫切。该文介绍了一种实用的绿幕分割技术,该技术对背景绿幕及环境光颜色不敏感,且能够在分割边缘取得比较好的效果。个人用户能够非常方便使用该技术对绿幕前景进行分割提取,并对背景完成替换,可以达到实时完成的效率。
关键词: 绿幕分割; HSV色彩空间; 阿尔法抠图; 软分割; 图像处理
中图分类号:TN911 文献标识码:A 文章编号:1009-3044(2018)25-0208-02
A Practical Green Screen Segmentation Method
XU Yi-hang,ZENG Guo-an
(Xiangtanxian No.1 Middle School, Xiangtan 411100, China)
Abstract:Green screen segmentation technology is widely used in film and television production, live broadcast interaction and so on. Most current green screen segmentation technologies pursue efficiency, but their accuracy and anti-interference ability are low, and they are not friendly to individual users. With the advent of the We media, the demand for practical green screen segmentation technology has become increasingly urgent. This paper presents a practical green screen segmentation technique, which is insensitive to the background green screen and ambient light colors, and can achieve better results at the segmentation edge. Individual users can easily use the technology to segment and extract the foreground of the green screen and replace the background to achieve real-time completion efficiency.
Key words:green screen segmentation; HSV color space; alpha matting; soft matting; image processing
1 概述
由于场景的局限性,也为了增加交互性及娱乐性,绿幕分割技术被广泛应用于文化、教育、娱乐等领域。例如在视频直播中,用户可以通过选择的图片作为背景,一些小動画作为美化元素定位在背景上;将用户的摄像头输入的内容作为需要进行抠像处理的元素,经过实时抠像处理后,定位在新背景的指定位置上,实现类似“虚拟演播室”的效果。绿幕功能让人们通过简易的方式就能够获得复杂的场景,极大地提升了视频的展现效果。用户通常用绿幕布置为场景中的背景,而后期采用分割抠图技术可以在图像和视频中将绿幕与前景目标区域进行分离,以达到替换背景的目的。使用绿色的幕布主要是为了能容易地与常见的前景目标(比如人的皮肤)来区分。
本文在分析了绿幕分割算法在设计时需要考虑因素的基础上,提出了一种实用、易用、高效的绿幕分割算法的设计思路和技术路线。该算法对环境光和绿幕颜色不敏感,且基本能保证实时处理的运行效率。实验证明本方法对不同前景目标和背景绿幕都能很好地处理。
2 绿幕分割算法
常见的绿幕分割技术都是采用硬分割,即在分割时判断图像中的像素点为前景目标或者背景。这种分割的效率很高,但是处理复杂边缘(比如毛发)的效果很差,这是由于硬分割处理边缘不够平滑。采用软分割则能避免这类问题,Alpha Matting[1]就是一类有效的软分割方法。该类方法认为一幅图像的不同的区域背景和前景参与的比例不一样,而且在每个像素点这两个比例之和为100%:在只有背景的地方,前景参与比例为0%;在只有前景的地方,背景参与比例为0%;而在背景与前景交界的区域,前景与背景的参与比例都是介于0%与100%之间的。这个比例值可以定义为一个未知数α ,而整张图像的所有像素点的 α构成了一张掩码图像。对于绿幕图像中一个像素点值 P来说,有 [P=α×PF+(1-α)×PB]。其中 [PF] 为分割后前景目标像素值,而 [PB] 为分割后背景目标像素值。如果分割完成后要用另外的背景图像进行替换的话,假设新背景中对应的像素点值为Q,则更换背景后该像素点值应该为[α×PF+(1-α)×Q] 。本文提出的绿幕分割算法就是基于Alpha Matting的。另外,由于采用的绿幕颜色与拍摄时光线颜色可能会有差异,通常需要比较稳定的算法能去除这两者的干扰。本文提出的绿幕分割算法能很好地处理这个问题,达到适用于不同绿幕和环境光颜色的效果。
2.1 算法描述
本文提出的绿幕分割方法算法流程如下,其中算法输入为单张RGB彩色图像I,输出为分割好的前景掩码M,M用来描述前景目标在图像中所有区域的参与比例:
[绿幕分割算法流程
输入:彩色图像I。
输出:前景掩码M。
1. 选取图像中最绿的像素值 [(ri,gi,bi)];
[argminiri2+(gi-1)2+bi2 (0≤ri,gi,bi≤1)]
2. 对rgb图像I做色彩空间转换(rgb2hsv),获得最绿像素值的色调值[hi];
3. 根据图像I中像素的[(h,s,v)]值判断是否为绿幕背景:
[|h-hi|<0.2 s>0.25 v>0.25]
4. 通过膨胀和腐蚀操作获得粗略掩码图;
5. 结合粗略掩码图和彩色图像I,利用Closed-form Matting获得精细的前景掩码。 ]
下面是关于该算法详细步骤及分析:
第一步:遍历需要分割的彩色图像I 中所有的像素点值,计算这些像素点值与绿点(0,1,0)的距离,选取图像中色彩距离最小的那个像素点,记作i;获得该点像素值是为了能够判断绿幕在当前环境光下的颜色;通常同一块幕布在较均匀的环境光下会呈现相似的色调,因此可以利用这一点来有效区分前景目标和绿幕背景。
第二步:对彩色图像做色彩空间变换,将彩色图像的每个像素点从RGB色彩空间转到HSV色彩空间,并获得像素i的色调 [hi];HSV色彩空间由色调(H)、饱和度(S)、明度(V)构成,比较适合用于区分不同的颜色[2-3]。设 [(r,g,b)] 为一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 [r], [g] 和 [b] 中的最大者。设 min 等于这些值中的最小者。要找到在 HSV 空间中的 [(h,s,v)] 值,这里的 [h∈[0,1)] 是角度的色相角,而 [s,v∈[0,1)] 是饱和度和明度,计算为:
[v=max]
第三步:遍历图像I中各像素点的 [(h,s,v)] 值,将满足要求的像素点视为绿幕背景区域(α=0),不满足要求的像素点视为前景区域(α=1);色调与最绿点色调接近,且饱和度与明度都大于0.25的区域都被视为绿幕背景。注意这里除了色调的限制,还加上了饱和度及明度的限制。这是因为背景绿幕由于光照通常明度和饱和度都比较高,而且加上这些限制能有效地排除前景目标暗区域由于成像噪声导致色调偏绿的情况。
第四步:通过形态学运算中腐蚀,膨胀的运算操作,分别将背景区域与前景区域缩小,而将它们的边界区域视为不确定区域(α=0.5),生成粗略掩码三分图(tri-map)[4];本文使用窗口大小为5,形状为disk的腐蚀与膨胀操作。窗口的大小一般取决于图像前景目标边缘的齐整度,一般齐整度较高的前景目标需要更宽的不确定区域,因此需要更大的腐蚀与膨胀操作窗口,但这样会导致第五步计算复杂度的急剧增加。本文为寻求分割效果与效率之间的权衡,使用统一的窗口大小,这样每一张图像的处理时间大致相同,这样能保证处理实时视频数据的稳定性。
第五步,基于原始彩色图像I 和获得的粗略掩码三分图,借助Closed-form Matting[5]方法实时生成精细的前景掩码,实现对图像I 的绿幕分割。同属于Alpha Matting的方法还有Shared Sampling[6],Global Sampling[7]等,本文采用Closed-form Matting主要是因为它使用了拉普拉斯抠图矩阵最小化方法,能用闭合形式方案解决分割优化欠定问题,因此能够达到非常高的效率,同时能够非常容易地利用多核CPU或者GPU并行加速。
在获得前景掩码以后,利用每个像素点的 α 值,能够对原始图像的绿幕背景实现任意替换。当然,为了最终融合图像的效果,我们在拍摄绿幕图像和选取新背景图像应当保证光照情况大致相似,避免光照不均匀或者光照方向差异过于明显的情况。这些情况会导致最终融合图像的前景目标和背景图像的光照不协调,严重破坏融合图像的展示效果。当然,利用目前流行的深度学习方法可以对绿幕图像和背景图像的光照进行估计和处理,但效果不一定好,而且会大大增加算法的复杂度。
2.2 实验结果
为证明该技术的有效性,我们在Intel core i7,主频3.4GHz、内存8GB的计算机上,利用Matlab2014a实现了绿幕图像分割。我们处理的图像分别对风景、人物作为前景,并在图像中使用了不同的绿幕颜色,实验取得了不错的效果。图1为使用本方法处理图片的一个实验结果。图1(a)为原图I,图1(b)为替换的背景,图1(c)为替换后的结果,图1(d)为第三步获得的硬分割掩码,图1(e)为膨胀腐蚀后得到的粗略掩码,图1(f)为利用Closed-form Matting方法获得的精细掩码。实验图片分辨率为500×300,在未使用任何加速手段时处理时间为0.1s,可以基本达到实时处理效率。
图2为使用本方法处理图片的另一个实验结果。图2(a)为原图I,图2(b)为替换的背景,图2(c)为替换后的结果。原图的分辨率很低,且经过JPEG压缩后较为模糊,前景人物的阴影对分割也会产生影响,但最终实验结果仍然可以接受,说明本方法受实验图片中的噪声干扰比较小。注意到图2与图1中绿幕颜色差异较大,而本方法都能有效处理,说明本方法对环境光颜色和绿幕颜色不敏感。
3 结论
随着多媒体的广泛传播和自媒体时代的来临,为了能丰富展示内容、增强交互性,绿幕技术使用得越来越普遍,而简单实用、对个人用户友好的绿幕分割技术有着很好的应用价值。本文通过分析这类技术的设计原理,结合不同的计算机图像处理方法,设计并实现了一项实用的绿幕分割技术,为读者提供了实现图像视频绿幕背景替换的思路。该技术抗干扰性强,步骤简单,计算复杂度低,便于移植到移动设备或嵌入式系统中,可以为更多的个人用户提供方便的绿幕展示手段。未来我们会编写一套能够实时处理视频绿幕合成功能的程序;输入为Direct Show提供的视频捕获接口的输出,并利用CUDA硬件加速功能,实现聊天背景更换的实时系统。
参考文献:
[1] 蒋建国, 张婕, 詹曙, 等. 层次式图切分快速分割算法[J]. 图学学报, 2012, 33(1): 44-49.
[2] 田巍, 庄镇泉. 基于 HSV 色彩空间的自适应肤色检测[J]. 计算机工程与应用, 2004, 40(14): 81-85.
[3] 包全磊. 基于 HSV 空间的彩色图像分割[J]. 软件导刊, 2010 (7): 171-172.
[4] 李闻, 韩国强, 顾艳春, 等. 一种鲁棒视频抠图算法[J]. 计算机应用研究, 2010, 27(1): 358-361.
[5] Levin A, Lischinski D, Weiss Y. A closed-form solution to natural image matting[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2008, 30(2): 228-242.
[6] Gastal E S,Oliveira M M. Shared Sampling for Real Time Alpha Matting. In Computer Graphics Forum. Blackwell Publishing Ltd.,2010,29(2):575-584.
[7] He K, Rhemann C, Rother C, et al. A global sampling method for alpha matting[C]//Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on. IEEE, 2011: 2049-2056.
[8] 張文哲,彭延军,牛翠霞.全局 Poisson 抠图的实现与改进[J].系统仿真学报,2008(z1):92-93.
【通联编辑:唐一东】