王志强,苗翔宇
(华北水利水电大学,河南 郑州 450003)
近年来,随着手机和相机拍照技术的进步,照片的像素也越来越高。脸部的各种瑕疵,比如雀斑、痘痘等都被如实记录下来,严重影响了照片的美观。现在人们在追求美观、光滑、白皙面部图像的同时,要保留头发、耳朵等细节部位。一些美颜算法在进行美颜的时候使细节严重模糊。如美图秀秀,在处理照片时,不能很好地保留细节,造成画面失真。因此,对于人脸图像的处理美化成为图像处理方面研究的热点。
国内外对自动人脸美化有了一定的研究。有一些基于多媒体的非线性滤波器[1]可以较好地处理粗糙皮肤,通过去除高频噪声实现除斑、除痘,但是算法耗时过长,且参数众多,处理速度慢。Arakawa[2]利用ε-filter进行去除脸上瑕疵,ε-filter是一种低通滤波器,在处理皱纹时效果显著,但是在处理痘痘、雀斑比较突出的瑕疵时略显不足。
针对此情况,本文提出了基于肤色分割的人脸美化算法,实现对面部照片的美化操作,同时兼顾保留脸部细节部分,降低了照片的修改痕迹。
在数字化图像中,皮肤平滑区域的像素值表现均衡。而在皮肤瑕疵部分,像素有明显的起伏,数值波动较大。这些瑕疵在空间域表示为小振幅值,而在频域内则表现为高频噪声[3]。通过计算皮肤M×M区域像素灰度值的均值与方差,发现在较为平滑的区域像素灰度值均值相等或者差值较小。而在皮肤瑕疵的地方,图像灰度值与灰度均值差值较大,并且远大于该区域的方差。因此采用滤波器对图像进行卷积运算以达到平滑人脸瑕疵部分的目的。
在实验过程中发现只对图像进行高斯滤波的情况下,人面部的一些细节无法被保留,面部轮廓和五官同样进行了模糊,没有达到理想效果。因此在基本的高斯滤波基础上还需要加入其他影响权值的因素。
在面部轮廓区域内,相邻的像素灰度值差值较大,从而形成了一条较为明显的分界,在视觉上形成了面部轮廓和五官轮廓。可以根据这一特性增加领域内与中心像素灰度差值较大的像素点权重,强化边界对图像的影响,从而实现边界的保留[4]。
公式前半部分为基本的高斯滤波,以定义域为参考,距离中心点越远所占权重越小。公式后半部分以值域作为权重的参考,与中心像素灰度的差值越大,所占的权重越大,对图像的卷积产生更大的影响,同时兼顾了定义域与值域。
当模板内像素与模板中心像素值差越大时,该像素点所占的权重越大。在像素差值不大的区域内,即与中心像素颜色相近时,距离模板中心越小的区域像素权重较大。从而综合考虑了距离和相似程度因素,有效地保留了边缘信息。
保边滤波与高斯滤波的效果对比如图1所示。
图像(b)是对图像(a)只做基于定义域的滤波处理,其面部轮廓不够明显,眼睛和鼻子等五官变得模糊。图像(c)是加入值域做参考处理,相比较于图像(b)有了改善,面部五官变得清晰,同时面部的瑕疵也得到了较好的处理。
图1 保边滤波与高斯滤波效果对比
采用保边滤波器对人脸图像进行保边操作,但是对于非皮肤部分处理得不够理想,例如发丝也进行了模糊处理。因此采用肤色检测进行皮肤部分和非皮肤部分的肤色分割。目前对于面部检测研究主要有两大方向:一种是根据人脸五官特征进行划分,另一种是根据肤色模型分离出皮肤区域。
根据人脸五官特征划分面部区域通常先提取人脸器官,利用几何形状描述人脸的面部特征。但是这些几何参数的变化比较敏感,而人脸表情复杂多样,所以造成算法实现困难。基于肤色模型的色彩识别方式是一种基于统计原理的分割技术[5-6],人的肤色基本可以确定在一定的范围内,人脸肤色及头发在色彩空间的分布满足一定的分布规律。利用这一特性可以进行一定的阈值分割。
YCbCr色彩空间下图像信息被分为3个部分。Y表示图像亮度数据,Cb表示图像的蓝色色彩信息,Cr表示图像的红色色彩信息。在RGB的色彩空间下,亮度信息和色彩信息混合,不同光照条件下脸部得到不同的检测效果,不能很好地确认皮肤区域。相比之下,YCbCr色彩模型中亮度和色彩被分别表示出,而人的视觉对图像亮度的变化比色彩变化更敏锐,因此在不同光照条件下两种色度是稳定的。
统计发现人面部皮肤区域的Cb和Cr数值具有聚类的特点[7],肤色在不同的光照条件下,Cb和Cr分布较为集中。其中Cb分量集中在80~140,Cr分量集中在120~150。图像在YCbCr空间中皮肤区域的色彩值表现得更加集聚,有明显的区分。因此,通过一定的阈值来确定皮肤范围,实现肤色分割,分割效果如图2所示。
图2 YCbCr色彩空间下的肤色分割
图2是在YCbCr色彩空间下,对两张不同亮度的图像进行分割的效果对比,(a)图是曝光过量的图像,(b)图是正常曝光的图像,相对应的分割效果为(c)(d)图。可以看出亮度还是对分割产生了影响,在鼻梁和发丝区域存在一些偏差,但是不是很明显。
在进行了滤波操作后,面部的一些瑕疵基本被处理掉,再进行肤色分割技术,可以确定皮肤与非皮肤的区域。需要将两种处理之后的图像进行融合,可以实现保留人脸的细节和提高皮肤质感。
采用alpha通道融合技术,通过设定alpha值调整融合两幅图像,可以实现对于非皮肤部分的精确保留。alpha通道是用来表示图像透明的通道,由[0,255]之间的数值来表示图像的透明程度,数值255表示完全透明,数值0表示不透明。若图像A、B进行alpha通道融合,设B图像的透明系数为alpha,为了便于分析,将alpha取值映射到[0,1]内,数值1表示图像完全透明,则每个通道的色彩混合公式如下[8]:
其中R(x),G(x),B(x),分别表示红、绿、蓝3个分量的数值,而alpha实际决定了两张图片的混合比例,通过调整alpha可以产生不同的混合效果。如果透明的比例按照2的N次幂来分级,可以快速运算。如果按照256级进行计算alpha=1/256,B图的权重为(256-n)/256,根据公式(2)可以算出图像的红色分量融合后的数值:
R(C)=((256-n)*R(B)+n*R(A))>>8 (3)
在进行图像融合时,若像素在皮肤区域进行alpha通道融合。经过多次实验发现alpha值在0.7~0.8时,处理的皮肤部分效果最佳,既处理了皮肤瑕疵又提升了皮肤的质感,保证了美化效果更加自然。当遍历到非皮肤区域时,alpha的值为0,即去除模糊处理过的非皮肤部分,保留原始未处理的图像。
只进行保边滤波处理和结合肤色检测处理的效果对比如图3所示。进行保边滤波操作时发根会发生模糊,而结合肤色检测技术后发根很好地保留下来,使处理效果更加自然。
实验中发现,由于光照原因,图像中的人脸会表现出不同的亮度,如果固定的在亮度上增加一定的数值,则有可能会造成面部图像部分区域过曝。因此,先对人脸的所有像素的亮度进行统计,找到分布频率最高亮度信息标注为max,计算max和特定数值h之间的差d,即d=h-max。再对人脸区域所有像素亮度基础上增加d,从而达到皮肤美白的效果。
图3 保边滤波与结合肤色检测处理后的效果对比
经过统计发现该面部图像亮度信息分布,亮度值130出现的次数最多,计算高度提升值d=h-130,以此方式提升亮度可以解决因为光照等原因产生的色彩不均衡问题。
如果只对人脸皮肤区域提升亮度,在皮肤与非皮肤区域会产生明显的分割,亮度变化突兀不自然,产生明显的过渡现象。针对这一现象,采用自适应模板来确认皮肤和边缘亮度差值d。首先根据人脸区域的大小确定处理的模板尺寸,设人脸区域长为l,宽为W,通过比对发现模板半径r为max(l/30,w/30)时效果最佳。将二值图F(x,y)中的每一像素数值与领域内(2r+l)2像素点的数值进行求和得到sum,采用二次函数来处理[9],可以得到较好的改善。由此人脸区域像素提升的亮度值变为可以有效避免只对皮肤区域进行亮度提升而产生的明显过度现象。
本算法美颜前后的对比如图4所示。
图4 本文算法与美图秀秀对比
经过对比发现,本文算法对人脸美颜效果明显,图中雀斑基本处理掉了,皮肤质感明显提高,而且发丝等细节也被完整地保留,处理结果足以与美图秀秀媲美。
针对人脸图像皮肤瑕疵,本文首先进行高斯滤波处理,高斯滤波处理之后导致五官变得模糊,因此加入值域做参考,使五官变得清晰。为了保留发丝、耳朵等细节方面的真实性,在双边滤波的基础上进行YCbCr色彩空间下的肤色检测,以达到对皮肤部分处理,非皮肤部分保留。再将滤波操作和肤色检测两种处理之后的图像进行alpha半透明图像叠加,在提高皮肤质感、消除瑕疵的同时保留图像的细节,使处理更加真实。最后再对图像进行整体的美白,使图像变得白皙亮丽。但是本文算法在处理与人脸肤色相近的区域时,会导致误判,接下来将继续研究,进一步提升美白效果。