人脸图像信息处理与识别技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 基于肤色检测的人脸定位算法

3.3.1 人脸检测算法流程

肤色是人脸非常重要的特征之一。研究表明,尽管不同种族、不同年龄、不同性别的人脸肤色看上去不同,但是这种不同主要集中在亮度上,在去除亮度的色度空间中,不同的人脸肤色分布具有聚类性。实现基于人脸肤色特征的人脸检测快速算法,首先要建立适当的肤色模型,利用图像的肤色信息进行粗检测,提取出肤色区域,然后对提取出来的肤色区域进行滤波、边缘检测,分割出候选人脸区域,最后在候选人脸的上半部分区域所对应的灰度图像进行水平和垂直方向的投影,通过极小值点的坐标值确定人眼的位置,并通过人眼在人脸的先验知识判断和调整人脸区域的范围,从而提高了人脸检测速度。

3.3.2 彩色空间及其转换

大部分彩色录像机、彩色照相机等图像捕捉设备都采用R、G、B模式来表示颜色,而R、G、B色彩空间中色度信息和亮度信息是混合在一起的。为了利用肤色在色度空间的聚类性,需要把颜色表达中的色度信息与亮度信息分开。将色度和亮度分开表达的色彩模型有很多种,以下首先介绍几种常用的色彩空间,并简要说明它们的特点及用于检测定位人脸的方法,再在此基础之上提出适合本书介绍的检测算法所用的彩色空间。

1.RGB彩色空间

这是最常用的彩色空间。国际照明委员会(CIE)采用红(R)、绿(G)、蓝(B)三种单色作为彩色空间的三个分量,这就是RGB彩色空间。三维空间中的三个轴分别与红、绿、蓝三基色相对应,原点对应于黑点,离原点最远的顶点对应于白点,而其他颜色则落在三维空间中由红、绿、蓝三基色构成的彩色立方体中。其他彩色空间一般以RGB彩色空间为基础,是RGB彩色空间的线性或非线性函数。RGB彩色空间颜色模型如图3.1所示。

图3.1 RGB颜色空间模型

2.归一化RGB彩色空间

在一定的光照条件下,人脸的肤色在归一化的RGB彩色空间里符合高斯分布,即每个像素的亮度值为I=R +G +B,其归一化的三种颜色分量为:r=R/I,g=G/I,b=B/I,且r +g +b=1。其中rgb三者中的两者是独立的。肤色在色度空间的聚类特性可以用高斯模型N(μ,∑2)来表示,其中

式中,N为所用的像素点的个数。

通过样本确定几个参数后,上述模型就可以作为肤色检测分类器用于分割图像中的肤色区域。很多利用肤色信息的人脸检测算法都使用归一化RGB彩色空间的高斯模型作为肤色检测器,但归一化RGB彩色空间中的rgb只去除了RGB中相对亮度成分,因此算法的亮度适应性不好。

3.YIQ彩色空间

YIQ是NTSC电视传输中采用的彩色模型,NTSC的RGB模型与YIQ模型之间的变换关系为

亮度由Y分量表示,IQ分量表示图像色度。

YIQ彩色空间与RGB彩色空间是线性关系,使用YIQ彩色空间来分割图像中的肤色区域时,肤色的色度值和光源的光谱成分密切相关。因此,肤色聚类的结果只能应用于特定的光照条件下,且不能有高光和阴影的影响。

4.HIS(Hue, Intensity, Saturation)彩色空间

HIS彩色模型中H表示色调(Hue),I表示密度(Intensity,对应成像亮度和图像灰度),S表示色饱和度(Saturation)。对任何三个在[0, 1]范围内的RGB值与HIS模型中的ISH分量,可由下面给出的公式计算:

HIS彩色模型中的颜色分量可定义在如图3.2(a)所示的三角形中。对其中的任意点P,其H的值对应指向该点的向量与R轴的夹角。这个点的S值与指向该点的向量长度成正比,越长越饱和。此模型中,I 的值是与垂直于三角形并通过三角形中心的直线有关,沿着位于三角形下方的直线,亮度逐渐由暗到黑;相反,在三角形上方,亮度逐渐由明亮变到白。在三维空间中将色调、饱和度、亮度结合起来,则得到如图3.2(b)所示的双棱锥结构。

图3.2 HIS彩色模型

HIS彩色空间有两个特点:①I分量与图像的彩色信息无关;②HS分量与人感受颜色的方式是紧密相连的。这些特点使HIS彩色空间非常适合于借助人的视觉系统来感知彩色特征的图像处理算法。

5.HSV(Hue, Saturation, Value)彩色空间

HSV彩色空间由分别代表色调(Hue)、色饱和度(Saturation)、亮度(Value)的成分组成, HSV色彩模型可由六角模型表示出,如图3.3所示。

图3.3 HSV六面体彩色模型

色度(H)可由绕垂直轴的旋转角度α 定出。从红色0开始,在0~360范围之间的值,它给出了某种颜色的光谱组成。饱和度(S)是在0~1之间变化的,是某种光的主波中纯光的比例。亮度(V)也在0到1之间变化,是一个相对亮度。当V=0时,这个点对应于黑色,而这时的色度、饱和度是无定义和没有意义的。当R=G=B时,沿着V轴的任意一点的饱和度为零,色度是没有意义的。用下面一系列等式可以实现从RGB彩色空间到HSV彩色空间的转换。

HSV彩色空间在视觉上是均匀的,与人类的颜色视觉有很好的一致性,在彩色图像分割中得到广泛应用,是用于肤色分割的典型彩色空间。

6.YCbCr彩色空间

这种彩色空间是以演播室质量标准为目标的CCIR601编码方案中采用的彩色表示模型,被广泛应用在电视的色彩显示等领域中。在YCbCr颜色空间中,Y分量表示颜色的亮度,Cr和Cb分量分别表示红色和蓝色的色度。YCbCr颜色空间的主要优点是其计算效率高,把亮度信息与色度信息分离开来,便于图像增强和色度分析等彩色图像处理工作。

为了消除光照因素的影响,在实验中选择YCbCr颜色模型,对输入彩色图像进行彩色空间转换,将其从相关性较高的RGB颜色空间转换到颜色分量互不相关的YCbCr颜色空间。转换公式如下:

在比较了上述各彩色空间的特点后,采用YCbCr彩色空间具有以下一些优点:

① YCbCr彩色空间具有与人类视觉感知过程相类似的构成原理。

② YCbCr彩色格式被广泛用在电视显示等领域中,也是许多视频压缩编码,如MPEG、JPEG等标准中普遍采用的颜色表示格式。

③ YCbCr彩色格式具有与HIS等其他一些彩色格式相类似的将色彩中的亮度分量分离出来的优点,同时相比HIS等其他一些彩色格式,YCbCr彩色格式的计算过程和空间坐标表示形式比较简单。

④ 实验结果表示在YCbCr彩色空间中肤色的聚类特性比较好,图3.4为蒙古人和高加索人的脸部肤色在YCbCr色度空间的分布图(样本分别来自于复旦大学电工系工控实验室和美国普度大学图像实验室)。由图3.4可知,在YCbCr彩色空间中,肤色分布集中在很小的一个区域范围内,并且受人种的影响不大。

图3.4 肤色在YCbCr色度空间的分布图

在实验中,图3.5是读入的原始图像,图3.6是Cb分量图像,图3.7是Cr分量图像。从图3.6和图3.7可以看出,肤色在YCbCr颜色空间具有很好的聚类性。

图3.5 读取图像

图3.6 Cb分量图像

图3.7 Cr分量图像

3.3.3 肤色模型的建立及肤色的提取

色度信息在很多彩色图像分割的应用中是很有效的,也非常适合于将皮肤区域从图像背景中分割出来,虽然不同人的皮肤颜色可能相差很大,但它们在色度上的差异要远小于亮度上的差异。也就是说,不同人的肤色在色度上往往是很相近的,只是在亮度上有较大差异。人类皮肤的颜色在色度空间中的分布被证明是聚类在色度空间中一个较小的区域中的。

所谓肤色模型,就是用一种代数的(解析的)或查表等形式来表达哪些像素的色彩属于肤色,或者表征出某一像素的色彩与肤色的相似程度的模型。

在3.3.2节中叙述的彩色空间中选用YCbCr空间。下面将统计出肤色在YCbCr空间的分布,即建立肤色统计模型。

肤色模型是根据大量样本的统计数据建立的。针对不同种族的人:亚洲人、高加索人和非洲人,选择在一般室内外照明背景下的人脸照片,以便所建立的肤色模型具有一般性。

建立肤色模型的步骤如下:首先从彩色图像中手工裁剪出皮肤区域,所采用的样本中考虑了不同光照、种族、年龄和性别等因素,以保证实验样本的代表性。然后将这些皮肤区域中的每个像素点从RGB空间转换成YCbCr空间表示,观察这些肤色区域的像素点在色度空间中的分布,即色度分量Cb和Cr的值,得到其在色度空间中的分布范围。实验结果表明将肤色的范围定为110 ≤ Cb ≤125,140 ≤ Cr ≤170区间内肤色提取的效果比较好。

肤色提取时,对于一幅被检测的彩色图像,首先将它转换到YCbCr颜色空间,在被检测图像中逐点扫描,将每个像素点的RGB值利用式(3.13)计算得到相应的Y、Cb、Cr值,将满足Cb、Cr分量条件的像素点在对应的RGB颜色空间中将其置为RGB(255, 255, 255),否则置为RGB(0, 0, 0),即把肤色像素点在对应的RGB颜色空间中置为白色,非肤色像素点置为黑色,从而在原始图像中提取出肤色区域。图3.8是在YCbCr肤色模型中的肤色提取图像,图3.8表明采用该方法的肤色提取结果比较好。

图3.8 肤色提取图像

3.3.4 邻域滤波噪声消除算法

邻域平均法是一种局部空间域处理的算法。设一幅数字图像f(x, y)为M×N的阵列,平滑后的图像为g(x, y),它的每个像素的灰度由包含(x, y)的预定邻域的几个像素的灰度级的平均值所决定,即用下式得到平滑图像。

式中,x=1, 2, … ,M;y=1, 2, …,NS是(x, y)像素点的预定邻域[不包括(x, y)的像素点];kS内的坐标点总数。

设噪声e(x, y)是加性白噪声,均值为0,方差为σ2,而且噪声与图像f(x, y)互不相关。噪声干扰的图像为

经邻域平均法处理后的图像g(x, y)为

处理后残余噪声的平均值为

残余噪声的方差为

上式表明,邻域平均处理后,残余噪声的方差减小为原来的1/k。但是图像由f(x, y)变为,这将会引起图像中目标对象的轮廓变模糊或细节特征消失。

最典型的邻域S有两种,分别为4邻域和8邻域,用模板表示邻域平均算法,4邻域和8邻域的模板表示如下:

模板沿水平和垂直两个方向逐点移动,从而平滑整幅图像。模板内各系数之和为1,用这样的模板处理常数图像时,图像没有变化;对一般图像处理后,整幅图像灰度的平均值可以保持不变。图3.9和图3.10分别是肤色提取的4邻域平均滤波图像和8邻域平均滤波图像。

图3.9 肤色提取4邻域平均滤波图像

图3.10 肤色提取8邻域平均滤波图像

维纳滤波可以实现图像噪声的自适应滤除。维纳滤波函数根据图像的局部方差来调整滤波器的输出。当局部方差大时,滤波器的平滑效果较小;当局部方差小时,滤波器的平滑效果较强。

维纳滤波函数采用的算法是首先估计出像素的局部矩阵的均值和方差:

式中,η是图像中每个像素的M ×N的邻域。然后,对每一个像素利用维纳滤波器估计出其灰度值:

式中,ν2是图像噪声的方差。

维纳滤波函数提供的自适应滤波通常比线性滤波的效果好,它比相应的线性滤波器具有更好的选择性,可以更好地保存图像的边缘和高频细节信息。另外,维纳滤波函数使用起来非常方便,同时计算出滤波器的参数,并对图像进行滤波计算,而且维纳滤波函数并不比线性滤波器需要更多的计算时间。图3.11是肤色提取后的维纳滤波图像。

图3.11 肤色提取后的维纳滤波图像

中值滤波是一种非线性的信号处理技术,由于它在实际运算过程中并不需要图像的统计特性,所以用它来抑制图像中的噪声比较方便。当然,对受到噪声污染的退化图像也可以采用线性滤波方法来处理,在许多情况下是很有效的。但是多数线性滤波器具有低通特征,在去除噪声的同时也使图像的细节模糊。而中值滤波方法在某些条件下可以做到既去除噪声又保护了图像边缘的较满意的复原。

中值滤波的基本原理是把数字图像或数字序列中某一点的值用该点的一个邻域中各点值的中值代替。其中,中值的定义如下。

一组数x1,x2,x3,…,xn,把n个数按值的大小顺序排列如下:

xi 1≤xi2≤xi3≤…≤xin

则中值滤波器可以定义为

式中,y称为序列x1,x2,x3,…xn的中值。

把一个点的特定长度或形状的邻域称为窗口。一维情形下,中值滤波器是一个含有奇数个像素的滑动窗口。窗口正中间那个像素的值用窗口内像素值的中值代替。

中值滤波器的工作步骤如下:

① 将模板在图像中移动,并将模板中心与图中某个像素位置重合;

② 读取模板对应像素值,将这些灰度值从小到大排成一列;

③ 按照式(3.24)得到模板输出值,将输出值赋给对应模板中心位置的像素。

中值滤波的窗口形状和尺寸设计对滤波效果影响较大。不同的图像内容和不同的应用要求,往往采用不同的窗口形状和尺寸。这里采用滤波的目的是既要消除噪声又要保持图像的细节,所以使用了中值滤波器。中值滤波器的模板邻域越大,消除噪声的能力越强,同时图像的细节也去掉的越多。综合这两个因素,为了在消除噪声的同时保护好边缘信息,通过相关实验这里采用3 × 3窗口中值滤波器消除噪声。图3.12和图3.13分别是3 × 3中值滤波图像、5× 5中值滤波图像,比较了几种不同的滤波方法证明用3× 3窗口中值滤波的效果优于其他滤波方法。

图3.12 肤色提取3× 3中值滤波图像

图3.13 肤色提取5× 5中值滤波图像

3.3.5 基于边缘检测的肤色区域分割

Sobel算子是一种梯度算子,它采用3 × 3邻域在像素之间计算梯度。考虑下图中所示的点(i,j)周围点的排列。

Sobel算子的梯度幅值为

其中的偏导数用下式计算:

其中,常系数c=2。这一算子把重点放在接近于模板中心的像素点,是边缘检测器中最常用的算子之一。其边缘检测结果如图3.14所示。

图3.14 Sobel算子边缘检测结果

Marr和Hildreth将高斯滤波和拉普拉斯边缘检测结合在一起,形成Log(Laplacian-Gauss)算法。Log边缘检测器的基本特征是:

① 平滑滤波器是高斯滤波器;

② 增强步骤采用二阶导数(二维拉普拉斯函数);

③ 边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值;

④ 使用线性内差方法在子像素分辨率水平上估计边缘的位置。

这种方法的特点是图像首先与高斯滤波器进行卷积,这一步既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除。由于平滑会导致边缘的延展,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘点,这一点可以用二阶导数的零交叉点来实现。拉普拉斯函数可以视为二维二阶导数的近似。为了避免检测出非显著边缘,应选择一阶导数大于某一阈值的零交叉点作为边缘点。

Log算子对图像f(x, y)进行边缘检测,输出h(x, y)是通过卷积运算得到的,即

其中高斯滤波器对图像进行平滑,拉普拉斯算子将边缘点转换成零交叉点来实现,边缘检测通过零交叉点的检测实现。Log算子边缘检测结果如图3.15所示。

图3.15 Log算子边缘检测结果

在高斯噪声中,一个典型的边缘代表一个阶跃的强度变化。根据这个模型,好的边缘检测算子应该有3个指标:

① 低失误概率,即真正的边缘点尽可能少的丢失又要尽可能避免将非边缘点检测为边缘;

② 高位置精度,检测的边缘点尽可能接近真实的边缘;

③ 对每一个边缘点有唯一的响应,得到单像素宽度的边缘。

坎尼(Canny)算子提出了边缘检测算子的如下3个准则。

① 信噪比准则;

② 定位精度准则;

③ 单边缘响应准则。

以上述指标和准则为基础,利用泛函求导的方法可导出坎尼边缘检测器是信噪比与定位之乘积的最优逼近算子,表达式近似于高斯函数的一阶导数。将坎尼3个准则相结合可以获得最优的检测算子。坎尼边缘检测的算法步骤如下:

① 用高斯滤波器平滑图像;

② 用一阶偏导的有限差分来计算梯度的幅值和方向;

③ 对梯度幅值进行非极大值抑制;

④ 用双阈值算法检测和连接边缘。

坎尼算子边缘检测结果如图3.16所示,比较了几种不同的边缘检测方法证明用Canny算子检测边缘优于其他方法。

图3.16 Canny算子边缘检测结果

3.3.6 人脸区域粗分割

综合了基于边界的方法和基于区域的方法的优缺点:基于边界的方法处理的像素数量相对较少,各像素点间的相邻关系也相对简单,所以处理起来的速度要比基于区域的方法快;但由于基于边界的方法是从局部特性来求图像整体的分割,因此在全局宏观性质的考虑上不如基于区域的方法。这里采用了将两种方法相结合的算法:基于边界的方法主要用于前期初始矩阵序列的产生,争取快速地得到包含人脸区域的外接矩形;然后再用基于区域的方法,全局考虑,对初始矩形序列进行规并,得到进一步的输出矩形。

如图3.16所示提取边界之后,对边界的连通关系做处理并由边界的连通性和闭合性得到初始的一系列矩形。再将初始的矩形序列进行规并处理得到进一步的输出矩形。其中首先通过链码跟踪获得目标区域的外轮廓链码,在对应的链表结点中取出最大x值和最小x值,得到外接矩形宽度;取出最大y值和最小y值,得到外接矩形高度;统计肤色区域的面积(像素个数),然后根据区域形状和大小进一步排除不可能为人脸的区域。规则如下:

① 如果目标区域面积太小,则删除该区域,因为人脸在图像中要占一定比例,这里设定人脸的最小尺寸为20×20像素。

② 根据目标区域的面积和外接矩形的面积之比不应过小,应该大于某个阈值,否则删除该区域(这样可以排除一些不规则但和肤色色调接近的物体,同时也可以排除一些人体的其他非人脸区域,如弯曲的四肢等),这里保守设定阈值为0.35。

③ 根据人脸区域的长宽比应该符合一个约束范围,所以目标区域外接矩形的长(H)和宽(W)之比H/W或W/H应该在某个合适范围内,利用该约束范围可快速排除那些太过狭长或横轴长度明显超标的区域。根据实验,选取比值在0.5~2范围内的区域为人脸区域,不满足这种比例关系的区域被去除掉。

基于形状和大小的分割系统所得结果如图3.17所示。

图3.17 基于形状和大小的分割图像

3.3.7 基于双眼确认的人脸区域定位

人脸区域的灰度在水平和垂直方向上的投影具有很明显的规律性,即对人脸进行水平侧面灰度投影时,在眼、鼻孔、嘴的水平位置将会分别出现极小值。如对双眼区进行垂直灰度投影,则在双眼位置上会分别出现极小值;而在双眼之间的鼻梁区出现极大值。

首先把原始图像转换成灰度图像,为了增强灰度图像,再把转换后的灰度图像进行直方图均衡化,以得到更好的效果。因为在候选的矩形区域中,双眼位于矩形区域的上半部分,所以对候选矩形的上半部分所对应的灰度增强图像分别向水平和垂直方向投影,会在矩形的上半部分的左右两边分别出现一个极小值,对应左右眼。然后利用双眼在人脸上分布的先验知识判断和调整人脸矩形区域的大小和位置。图3.18是原始图像的灰度图像,图3.19是原始图像的灰度直方图,图3.20是直方图均衡化后的灰度图像,图3.21是直方图均衡化后的灰度图像的直方图。

图3.18 原始图像的灰度图像

图3.19 原始图像的灰度直方图

图3.20 直方图均衡化后的灰度图像

图3.21 直方图均衡化后的灰度图像的直方图

图3.22是在直方图均衡化后的灰度图像上所对应的候选矩形的上半部分区域分别向水平和垂直方向投影,求取极小值,得到左右眼的位置后人脸检测精确定位的最后结果。

图3.22 人脸检测精确定位