一种结合显著性检测的肖像照片自动背景虚化算法

2019-02-15 09:28苏超然陈羽中
小型微型计算机系统 2019年2期
关键词:肖像滤波前景

苏超然,陈羽中,2

1(福州大学 数学与计算机科学学院, 福州 350108) 2(福建省网络计算与智能信息处理重点实验室, 福州 350108)

1 引 言

随着智能设备的快速普及,智能手机拍摄的照片多数属于肖像照片.由于不具备专业的照片后期处理技术,大部分智能设备用户对后期自动美化肖像照片具有很强的需求.其中,背景虚化技术又称为浅景深技术,是一种用来突显摄影主体,有层次地表达视觉美感的美化方式.目前,随着智能设备硬件的快速发展,实现背景虚化技术主要依赖两种硬件基础,一是智能设备的后置双摄像头,二是智能设备的前置景深传感器.这两者都是通过硬件辅助获取场景的深度信息来合成图像的景深渲染效果.当具备单张图像场景的深度信息作为先验,算法对单张照片进行景深渲染也相对简便.然而,这两种硬件基础目前还未普及,现有大量智能手机一般是机身前后各只放置一个摄像头.除硬件实现背景虚化外,还有一些软件功能实现,如普通智能设备的用户能够利用照片美化软件并手动选取照片中的前景区域,再调整对背景的模糊设置来得到相似效果.但由于该操作过程较为繁琐,因此一种设备成本低、操作简易、且仅依赖单张图像的背景虚化算法成为计算机视觉的研究热点.

早期一些工作[1-3]利用机器学习算法来估计单张图像的深度信息,其主要是一种数据驱动的方式进行训练.算法利用大量的训练图像以及对应的深度信息来训练算法,再利用训练好的算法来评估没有深度信息的图像.近期,针对于双摄像头的智能手机有一种快速的双侧空间立体匹配算法被提出[ 4 ].在对图像背景虚化处理中,这个算法发现深度边缘信息相比于精确的深度估计信息更重要.换句话说,即肖像照片中处于不同深度的人像区域和背景区域之间的分割边界要比精准地估计整个场景深度信息来的重要.所以其实无论是否具备场景的深度信息作为先验,前景人像部分和背景之间的边界更为重要.对于肖像照片的背景虚化处理中,用户更关注的也是肖像照片中前景人像区域以及区域边界是否清晰.

由于肖像图中人像的特殊空间位置,算法很容易融合先验知识来加速推理过程.其中,显著物体检测算法[ 5 ]是一种基于背景检测的显著性优化算法(Saliency Optimization简称SO算法),产生的显著图经常被视作前景物体的先验知识应用于各种场景.文献[ 6 ]认为肖像照片中前景的人像区域通常也会是显著图中的显著区域.其中算法将人脸特征加入到SO算法中来优化显著图,并且算法基于显著图的先验信息利用一种新的梯度域引导滤波算法[ 7 ]同时模糊肖像照片中的背景并增强前景中人像区域的细节.算法通过对输入图像进行下采样来降低整体计算复杂度,是一种快速的背景虚化算法.但是算法没有确定出前景人像区域与背景的边界,会导致部分人像区域也被虚化.

本文提出了基于显著性检测的肖像照背景虚化算法.首先,本文同样基于SO算法产生的显著图作为先验信息.但是,由于显著算法产生的显著图是基于超像素表示,并且算法是从一个初始假设出发——处于图像边界上的超像素块更有可能属于背景区域,这个假设明显地不适用于肖像照片.由于肖像照片中人像区域一般会占据照片底部的大部分区域,所以本文认为对初始假设的背景超像素块集合进行筛选是有必要的,并引入了一个背景超像素块优化策略来优化算法产生的显著图.然后,基于超像素表示的显著图,本文应用超像素尺度的GrabCut算法[ 8 ]快速地确定出前景人像区域与背景的边界.最后,基于确定性的边界以及显著图的先验信息,本文可以利用快速版本的引导滤波算法[ 9 ]直接对前景区域中更显著的区域选择性地进行细节增强,并对背景区域进行统一地模糊操作来达到背景虚化的效果.

2 显著性检测优化

对于肖像照片来说,人像区域一般会占据照片底部的大部分区域,也就是说图像底边上的部分超像素块可以直接假设为不属于背景.而SO算法[ 5 ]创新之处在于提出边界连接先验,其假设当一个超像素块与图像边界有更强的关联性时,该超像素块更有可能属于背景区域.虽然当直接假设图像底部边界的超像素块不属于背景时,SO算法对人像区域的显著性检测能得到很大提升,但我们认为这样的做法仍有不足.由于拍摄肖像照的用户并非都具备专业的摄影技术,拍摄的肖像照片中人像区域还是容易触及图像的左右边界.因此,这种情况下当直接将图像左右边界上的超像素块假设为背景超像素块时,算法就会将部分属于人像区域的超像素块错误地假设为属于背景,从而对人像区域的显著性检测就会造成错误.实验中本文发现引入背景超像素块优化策略之后,这样的错误能够得到有效的处理.

(1)

(2)

(3)

(4)

(5)

其中σc是数值大小在[0.5,2.5]之间的参数,通常设置为1.

(6)

(7)

3 前景边界计算及快速背景虚化

3.1 前景边界计算

由于本文利用超像素尺度的GrabCut算法得到的边界本质上是超像素分割算法得出的边界的组合,所以我们着重考虑了超像素算法的边界回归率以及分割错误率,我们采用的是较新的LSC算法[ 10 ].相比于广泛使用的SLIC算法[ 12 ],本文采用的LSC算法具有更高的边界回归率以及较低的分割错误率,这使得我们利用超像素GrabCut算法产生的边界更加准确.

不同于传统的GrabCut算法需要通过用户交互操作来获取标记三分图(trimap),本文利用超像素尺度的显著图来直接地生成标记三分图.我们对显著图进行归一化处理后,设置两个阈值来标记出属于前景区域的超像素以及属于背景区域的超像素.对于属于背景区域的超像素,我们设置一个较低的固定阈值tb为0.1,将显著值小于该阈值的超像素标记为属于背景区域.对于属于前景区域的超像素,本文利用大津法[ 11 ]处理全部超像素的显著值得到一个阈值tf,将显著值大于该阈值的超像素标记为属于前景区域.而其他未标记的超像素则被标记为属于未知区域.由于我们得到的显著图是基于超像素表示的,所以我们的标记三分图也就从二维矩阵转换成一个向量,其中每一个标记相对应一个超像素.

3.2 快速背景虚化

在进行快速背景虚化滤波的过程中,本文使用的是引导滤波的快速实现版本[ 14 ].引导滤波算法需要两个输入,引导图像I和待滤波图像p,产生一个滤波输出图像q.引导滤波核的思想是基于局部线性模型:

qi=akIi+bk,∀i∈wk,

(8)

(9)

(10)

其中,i表示图像中像素的下标,k表示半径为r的方形滤波窗口w的下标.ak和bk是通过将最小化滤波后的重建误差[ 9 ]的问题转换成线性回归问题得到的闭合解.μk和σk是引导图像I在第k个滤波窗口中的均值和方差.ε是一个用来控制平滑程度的正则化参数.由于算法是计算图像中多个半径为r的方形滤波窗口,并得出对应的ak和bk,所以对于每一个像素点的参数a和b就可以使之等价于包含该像素点的所有窗口的参数的均值.所以有

(11)

本文只使用引导滤波进行模糊操作,所以引导滤波算法需要两个输入是相同的,为带滤波图像p.

在经过引导滤波得到图像的模糊结果后,文献[ 9 ]认为可以通过找出模糊结果与原图像的差异作为原图像边缘细节,并适当的扩大原图像中这些差异来增强原图像的细节.所以有细节增强后的图像e,对应细节增强有公式

ei=(pi-qi)·λ+pi

(12)

其中λ是一个常数项,对应于细节增强的程度.

在文献[ 14 ]中提出的快速的引导滤波算法是通过先对图像进行下采样,得到计算后的图像局部引导滤波参数后,再对这些参数进行上采样,从而得到对应原图像的引导滤波参数.由于图像滤波时依赖的是图像的局部相关性,对下采样后的图像得出的结果参数再进行上采样后,与原图像由公式(11)计算得到的滤波结果和直接对原图像进行引导滤波的结果也是非常相近的,同时假设下采样参数为k,那么算法耗时就是原来算法耗时的1/(k2).

不同于文献[ 6 ],本文算法是利用引导滤波算法直接对前景区域中更显著的区域选择性地进行细节增强,并对背景区域进行统一地模糊操作来达到背景虚化的效果.本文将公式(11)和公式(12)修改为如下

(13)

(14)

其中,si为显著图中像素点的显著值,取值范围为[0,1].mi为分割掩码图中像素点的分割结果,mi∈[0,1].λ是一个常数项,实验中我们取2.

这里本文增加了一些简单的矩阵乘加操作,在快速引导滤波的基础上,不为了背景虚化增加太多额外计算量.相比于文献[ 6 ]的实现,虽然我们无法一边对图像进行模糊操作,一边进行细节增强,但本文的实现方式基于超像素尺度的GrabCut算法的分割结果确定除了前后景的边界,将前景和背景分开进行处理,更加具有针对性.

4 实验结果分析

本算法运行的软件环境为MATLAB(R2016b)以及Microsoft Visual Studio 2013.系统环境为Windows10,计算机CPU为3.40GHz,内存为8GB.实验中展示的五张高清肖像图像时来自于文献[ 15 ]的数据集,并且都是从flickr网站下载的,文献[ 6 ]有给出对应图像的下载地址.实验中,本算法将下采样参数k设置为4,输入图像进行超像素分割时设置每个超像素包含110个像素点.

图1 显著性检测结果对比Fig.1 Comparisons of saliency detection result

图1中,(a)是原图像,(b)是显著性算法[ 5 ](SO算法)生成的显著图,(c)是文献[ 6 ]改进SO算法后生成的显著图,(d)是本文算法改进SO算法后生成的显著图.

实验发现,对于肖像图像,显著性算法[ 5 ](SO算法)是直接将图像边界上的超像素都当作是背景,这样产生的显著图只检测到了人像区域的人脸部分,而其中的身体部分则没有很好的检测,如图1(b).而进一步,文献[ 6 ]是只把图像上边界以及左右边界上的超像素当作是背景,同时还将人脸检测的结果作为先验信息来增强显著图的检测效果.然而,如果肖像照片中人像区域会稍微触及图像的左右边界或者上边界,该算法产生的显著图中一部分人像区域的检测结果就会受影响,如图1(c)中第1、4、5行.而本文算法通过引入背景超像素块优化策略,产生的显著图对于人像区域的检测会更加一致,且不会受上述问题影响,如图1(d).

图2中,(a)是原图像,(b)是本文算法改进SO算法后生成的显著图,(c)是本文利用显著图产生的标记三分图映射到原图像分辨率下的结果图,(d)是本文算法基于标记三分图利用超像素尺度的GrabCut算法分割得到的前景超像素区域,并映射到原图分辨率下的结果图.由图2(d)可以看出,本文算法能够较完整地分割出前景人像区域.

由于前景边界本质上是超像素边界的组合,所以前景边界还是比较粗糙.针对这个问题,本文认为可以利用matting算法进行进一步优化,matting结果图如图2(e)所示,可以看出前景边界得到平滑和校正.这里本文利用的是matting算法[ 16 ],虽然matting算法处理后的前景边界相比于分割得到的前景边界更加细致,但同时matting算法[ 16 ]处理高清肖像照片非常耗时,所以本文没有进一步将matting算法加入本文的算法中.

图2 前景边界图及其优化结果Fig.2 Foreground boundary and its refined result

本文算法基于显著性检测结果以及超像素尺度的GrabCut算法分割结果,这两者分别对应了图2(b)以及图2(d),利用引导滤波算法直接对前景区域中更显著的区域选择性地进行细节增强,并对背景区域进行统一地模糊操作来达到背景虚化的效果.本文挑选了3张具有代表性的肖像图来对比本文算法以及文献[ 6 ]的背景虚化效果,如图3.

图3 背景虚化结果图对比Fig.3 Comparisons of background defocus result

从图3中,结合图1(c)文献[ 6 ]得到的显著图,可以看出文献[ 6 ]得到的背景虚化结果图,其算法会模糊那些显著图检测较弱的人像区域(如图3第1行结果以及第2行结果).另外由于其算法没有得到前景和背景的确定性边界,对于人像区域附近的背景区域的模糊也并不准确(如图3第3行结果).

然而,从图1(d)的显著图结果,本文算法由于引入背景超像素块优化策略使SO算法对人像区域的检测更加准确,这避免大范围地模糊了人像区域(如图3第2行结果).另外,结合图2(d),由于分割错误率更低的LSC超像素分割算法得到的边界很好地保留了前景的边界结构,并且GrabCut算法能够进一步分割出显著性检测较弱的区域,这使本文算法得到的前景边界保留了更多人像区域的细节(如图3第1行结果).最后,算法对背景的模糊中考虑了前景边界,从而对人像区域附近的背景区域的模糊更加准确(如图3第3行结果).

表1 算法各个过程耗时(以秒计)Table 1 Time cost of different phase in algorithm

除此之外,本文算法各个过程耗时如表1所示,对应耗时结果是当下采样参数k设置为4,输入图像进行超像素分割时设置每个超像素包含110个像素点时得到的.超像素尺度的GrabCut算法是由C++实现而由MATLAB程序进行调用之外,显著性检测算法以及快速引导滤波算法都是由MATLAB实现.使用者可以通过适当地修改下采样参数 以及超像素分割中的参数来改变算法的计算效率,但这始终是一个权衡算法时效性和前景边界精确度的过程.从表1,本文算法设置如上参数时,对于典型的1024×1024大小的输入图像,耗时能够控制在1s以内.(表1中图像编号图(a)1表示第1行的原图像,图1(a)2则表示第2行的原图像,以此类推).

5 结 语

本文一方面为显著性算法引入背景超像素块优化策略提高了显著性检测的效果,并利用基于超像素尺度的GrabCut算法进一步分割更完整的人像区域.另一方面,基于显著性检测以及图像分割得到的前景边界,对前景区域中更显著的区域选择性地进行细节增强,并对背景区域进行统一地模糊操作来达到背景虚化的效果.实验表明,该方法与已有方法相比,能有效地区分出前景人像区域以及背景区域,并使算法兼具时效性以及较好的背景虚化效果.

猜你喜欢
肖像滤波前景
船岸通信技术下舰船导航信号非线性滤波
地毯肖像
我国旅游房地产开发前景的探讨
叙利亚肖像
去世66年后,他的肖像上了钞票
四种作物 北方种植有前景
《肖像》
一种考虑GPS信号中断的导航滤波算法
离岸央票:需求与前景
高效LCL滤波电路的分析与设计