一种基于Haar和肤色分割算法的人脸检测

2021-02-23 09:27程耀瑜李树军
兵器装备工程学报 2021年1期
关键词:肤色人脸阈值

程耀瑜,丰 婧,李树军,贺 磊

(1.中北大学 信息与通信工程学院, 太原 030051;2.宁波军鸽防务科技有限公司, 浙江 宁波 315000; 3.中北大学 机电工程学院, 太原 030051)

随着信息技术飞速发展,人脸检测和人脸识别技术已经成为当前的研究热点。人脸检测属于计算机视觉的范畴,主要用在人脸识别的预处理,在复杂背景下人脸检测的需求越来越大,人脸检测也逐渐发展为一个单独的研究方向。目前大多数的人脸检测都是针对正面、准正面人脸图像的研究,而对于发生俯仰或者左右侧的情况下人脸姿态研究相对较少。

人脸检测技术不仅包括检测图像中是否存在人脸,还需要标记出人脸的所在位置,但现实中往往由于人脸内在的变化(嘴的开闭、人脸的遮挡等)和外在条件的变化(光照的变化、图像的成像条件等),给人脸检测造成了一定的难度。常用的人脸检测方法可以分为以下3种:基于知识的方法、基于统计模型的方法、基于模板匹配的方法[1]。其中,基于知识的方法又包含灰度特征、结构特征、纹理特征、肤色特征、轮廓特征等,而利用肤色特征信息来实现人脸和背景的分离是目前最常用的人脸分割方法。

闫河等[2]提出了一种新的Haar-like特征实现人脸检测;林国军等[3]通过空间颜色转换实现肤色定位人脸检测。本文采用Haar特征算法进行人脸检测,在无法正确检测的情况下,引入GrabCut图像分割算法消除人像背景对肤色分割的影响,继而使用肤色分割算法进行人脸检测。实验结果表明,利用上述方法对人脸进行检测,可以很好地避免漏检、误检的问题,降低了环境对人脸检测的影响,在很大程度上提高了人脸检测的准确率,为后续的人脸识别提供了条件。

1 人脸检测系统设计

系统对单人脸图像进行检测,在通过Haar特征检测之后,对人脸检测结果进行判断,若人脸检测个数为1,则认为检测成功;若人脸检测个数不为1,则认为Haar特征检测失效,转而使用GrabCut算法提取目标前景,将其转换到YCrCb空间,利用Otsu算法进行自动阈值分割,得到肤色分割图像,并对其进行阈值二值化、中值滤波等预处理,通过几何特征筛选人脸特征,最终得到人脸检测的图像。需要说明的是,误检也存在检测结果个数为1的情况,但检测到的对象不是人脸,由于其发生的概率较小,在这里忽略不计。算法流程如图1所示。

图1 算法流程框图

2 人脸检测算法原理

2.1 Haar特征

Haar特征也称Haar-like特征,是一种简单且高效的图像特征,其基于矩形区域相似的强度差异Haar小波。C.P.Papageorgiou等[4]在2002年提出将Haar-like特征用于人脸检测;后来P.Viola和M.Jones[5]将其扩展,定义了4个基本特征结构,并分为3类:边缘特征、线性特征和对角线特征,组合成特征模板,如图2所示。

图2 4个基本特征结构

Haar特征模板内有白色和黑色2种矩形,用白色区域中的像素值之和减去黑色区域中的像素值之和,得到的就是一个特征值,Haar特征值反映了图像的灰度变化情况。为了快速计算Haar特征,他们还提出积分图的方法,如图3所示。在积分图像上任意位置(x,y)处的ii(x,y)表示该点左上角所有像素之和,即:

(1)

则区域A的像素值可以表示为:

SumA=ii(x,y)+ii(u,v)-ii(x,v)-ii(u,y)

(2)

图3 积分图

后续经过改进与发展,R.Lienhart等[6-7]提出引入45°倾斜特征,扩展至14个特征原型:4个边缘特性、8个线特性和2个中心环绕特性,以及一个特殊的对角线特性,以便能够提取到更丰富的边缘信息,如图4所示。

图4 Haar特征原型示意图

2.2 GrabCut

图像分割是计算机视觉领域中一个重要的研究内容,目前基于图论的分割技术已经成为新的研究热点,此方法基于能量优化算法,将图像分割问题转换为图的最小割优化问题。其中GrabCut[8-9]是一种基于图论的分割方法,广泛应用于前景分割(image segmentation)、医学处理(medical treatment)、纹理分割(texture segmentation)及立体视觉(stereo vision)等方面。GrabCut是对GraphCut的改进版,采用RGB三通道混合高斯模型(gaussians mixture model,GMM)建模,根据分割模型参数不断迭代更新完成学习过程,实现能量函数收敛于最小值,输入包含目标前景的区域就可以完成前景与背景的分离。

整个图的Gibbs能量函数为:

(3)

式(3)中:U函数部分表示能量函数的区域数据项;V函数表示能量函数的光滑项(边界项)。

使用混合多高斯模型D(x)表示某个像素属于前景或背景的概率,这里K=5,有:

(4)

(5)

式(4)、(5)中:πi表示第i个单高斯函数对概率贡献的权重系数;gi为第i单高斯函数;μi为第i个单高斯函数的均值; ∑i为第i个单高斯函数的协方差。

区域数据项U函数为:

(6)

(7)

光滑项V函数为:

(8)

式(8)中:C是相邻颜色对的集合;γ是一个常量值,γ=50;β=(2〈(zm-zn)2〉)-1。

本文设计通过鼠标选取人脸所在位置标注前景框,提取前景消除周围环境的影响。具体的实现步骤为:

步骤1通过鼠标框选人脸所在位置,矩形外的区域自动认为是背景像素,矩形内视为“可能是目标”的像素;

步骤2Grabcut算法对目标区域进行初始化标记,前景区域的标签为αn=1,背景区域的标签为αn=0;

步骤3使用高斯混合模型(GMM)对前景和背景建模;

步骤4对每个像素分配GMM中的高斯分量;

步骤5根据Gibbs能量函数公式不断学习更新优化GMM模型中的参数;

步骤6使用最小割与最大流算法(mincut & maxflow)对图片进行分割;

步骤7重复步骤4~步骤6,直至能量函数收敛。

2.3 肤色分割

目前,在人脸检测中常用的色彩空间主要有3种:RGB空间、HSV空间和YCrCb空间。其中,基于RGB范围来判定皮肤容易受到光线的影响,鲁棒性不好;而YCrCb颜色空间(亦称YUV)是被欧洲电视系统所采用的一种颜色编码方法,主要用于优化彩色视频信号的传输,不容易受到光线强弱的干扰,而且具有很好的聚类性,也容易从RGB空间转换,分割效果良好。转换公式为:

(9)

式(9)中:Y为颜色的亮度成分;Cb和Cr为蓝色和红色的浓度偏移量成分。

确定了YCrCb彩色空间,接下来要建立肤色模型,目前肤色建模的方法有很多种,其中最流行的是非参数化肤色模型,它是一种基于直方图统计的方法,可以根据肤色样本自动调节分割阈值,不需要人为设定参数,本文采用最大类间方差法[10-11],此方法是Otsu在1979年提出的,亦称Otsu方法,此方法基于灰度值给出的类间分离阈值是最佳阈值,容易计算,不受图像亮度和对比度的影响,可以达到很好的分割效果,效果图如图5所示,为后续进行人脸检测缩小范围。

图5 原图和肤色分割效果

3 图像预处理

在对肤色提取后的图像进行Haar特征检测之后,正脸一般都会检测出来,但是对于非正对人脸的检测率就不是很高,因此对于没有检测出的对象还要进行下一步的操作,得到非正对人脸的检测结果。

阈值化图像就是对灰度图像进行二值化操作,首先利用最大类间方差法求出一个阈值,并设定此阈值为门限,然后遍历图像中的像素点依次与阈值比较,判断图像像素为0还是255,最终形成二值图像,使整个图像呈现黑白的效果,以便凸显出目标的轮廓。效果如图6所示。

图6 二值化效果

平滑滤波也称模糊处理,可以减少图像上的噪声,实质是对像素点领域的像素值施于某种算法,以其结果替代锚点处对应的像素值。中值滤波法是一种非线性平滑技术,对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够很好的保护信号边缘,使之不被模糊。

经过以上步骤的操作,已经基本确定了疑似肤色的区域,接下来要根据人脸的几何特征进行筛选,去掉干扰项,最终确定人脸区域的位置。具体规则如下:

1) 设置目标区域外接矩形的最小尺寸为100×100;

2) 目标区域的长宽之比的区间为[0.6,2.5],以消除胳膊等狭长区域的影响;

3) 目标区域与其外接矩形的面积大于0.5。

4 试验结果分析

试验环境:软件平台为Visual Studio 2015专业版,硬件配置为Windows10操作系统(Intel i7,8GB内存),编程语言为 C++,使用OpenCV开源库作为算法的开发工具包。

人脸检测的结果如图7所示。本文采用的实验数据是不同背景条件下的单人脸图像,共计400张,有3部分来源:① 网络上搜索的不同背景、不同姿势的人脸图像100张;② 从包含人脸的视频图像中,取出视频帧图像100张;③ 人脸数据集FDDB中选取图像200张。

实验结果表明,使用Haar单一算法漏检率偏高,通过GrabCut和肤色检测算法结合使用对Haar特征检测不理想的结果进一步检测,可以有效降低单一算法的误检率和漏检率,也进一步提高了人脸检测的准确率。算法对比结果见表1。虽然本文引入了GrabCut的迭代能量最小化分割算法,较大地增加了分割图像的时间,却能更准确地得到目标图像,从而提高了人脸检测的准确性。人脸检测算法的时间对比见表2。

图7 人脸检测结果

表1 人脸检测算法的对比结果

表2 人脸检测算法的时间对比

为了进一步验证该算法对人脸检测的有效性,本文在对图像进行人脸检测的基础上引入了实时的人脸检测,实时检测结果表明:本文算法对多个角度的人脸检测均具有很好的鲁棒性。部分实时人脸检测视频帧效果如图8所示。

图8 部分人脸检测的实时视频帧效果

5 结论

提出一种新的算法来进行人脸检测,即先使用Haar特征算法进行人脸检测,在其无法得到正确结果的情况下,再使用GrabCut分割算法消除了人像背景的影响以提高人脸检测的准确性,继而使用肤色检测算法提高侧脸、低头等情况下人脸检测的成功率。实验结果表明使用该算法可以很好地解决使用Haar单一算法进行人脸检测造成的检测率低、容易漏检误检等问题,可为后续成功进行人脸识别提供参考。

猜你喜欢
肤色人脸阈值
改进的软硬阈值法及其在地震数据降噪中的研究
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
有特点的人脸
玻璃窗上的人脸
肤色(外一首)
改进小波阈值对热泵电机振动信号的去噪研究
人的肤色为什么不同
为什么人有不同的肤色?
“领家系”可爱脸VS“高冷系”美人脸