- Visual C++数字图像模式识别典型案例详解
- 冯伟兴 梁洪 王臣业编著
- 1590字
- 2025-03-16 03:50:46
5.2.2 人脸肤色相似度计算
人脸的肤色不依赖于面部的其他特征,对于人脸姿态和表情的变化不敏感,具有较好的稳定性,而且明显区别于大多数背景物体的颜色。大量实验证明,不同肤色的人脸对应的色调是比较一致的,其区别主要在于灰度。因此,为了进行人脸检测,这里采用人脸肤色作为识别人脸的特征,即采用基于肤色法进行人脸识别。为了准确进行人脸肤色识别,首先将人脸图像从RGB颜色空间映射到YCbCr颜色空间,然后建立肤色模型并求得相似度矩阵,最后用相似度矩阵中的最大值对相似度矩阵进行归一化,该归一化矩阵将用于后续人脸检测。
1.RGB颜色空间到YCbCr颜色空间的映射
人类的肤色在YCbCr颜色空间相对比较集中(被称为肤色的聚类特性),因此选用在YCbCr颜色空间中进行人脸检测,需完成RGB颜色空间到YCbCr颜色空间的映射。
在从RGB到YCbCr的转换过程中,输入、输出数据都是8位二进制格式。转换公式如下:
Y=0.2990R+0.5870G+0.1140B

Cr=0.5000R-0.4187G-0.0813B+128
式中,R、G、B是RGB颜色空间中红、绿、蓝3种颜色通道的颜色值。
YCbCr颜色空间中,Y的范围为16~235,Cb和Cr的范围为16~240。但是,由于Y和Cb、Cr可能偶然超出16~235和16~240范围(视频处理和噪声的缘故),根据以上公式可知,此时RGB的值可能偏移到0~15和236~255范围内。
计算机系统中的RGB数值范围为0~255,因此,使用以下的方程式会更加方便:
Y=0.257R+0.504G+0.098B+16

Cr=0.439R-0.368G-0.071B+128
2.肤色模型
不同种族、不同年龄、不同性别的人的肤色看起来存在差异,但这个差异主要体现在亮度上。当去除亮度,肤色就具有很高的聚类性。
在RGB颜色空间,为了去除光照影响,人脸肤色需进行亮度归一化。归一化的颜色分量分别为r,g,b。

式中,r、g、b分别来自于R、G、B,相互独立且r+g+b=1。由于这种归一仅去除了R、G、B中的相对亮度成分R+G+B,而r、g、b仍存在亮度信息,所以这种方法用于肤色检测效果不好。即
在YCbCr色彩空间,归一化色度直方图后,假定肤色满足二维高斯模型M=(m,C),其中m为均值,m=E(x),x=(Cb,Cr)T,C 为协方差矩阵,C=E[(x-m)(x-m)],通过这个肤色模型检测任意一个像素是否肤色的概率为

已经证明,这个模型能很好地区分出人脸和非人脸。
3.亮度补偿
由于光照会影响到图片的亮度,这里采用Gary World算法对RGB图像进行快速颜色补偿,

式中,Cstd为标准亮度图像R、G、B的平均值;Cave为输入图像R、G、B的平均值;C为原图像的像素值;Cnew为亮度补偿后的像素值。
4.中值滤波
中值滤波是抑制噪声的一种非线性平滑处理方法,由J.W.Jukey首次提出并将其应用于时间序列的一维信号处理技术中,后来人们将其用于二维数字图像处理中。
中值滤波也是一种邻域运算,但不是简单地以待处理像素点(i,j)的8个相邻像素的灰度均值来取代该点的灰度,对于给定的n个像素(n为奇数)的灰度值{a1,a2,…,an},将其按大小进行排序,利用排在中间的灰度值来取代待处理像素点的原始灰度,其实质上是用与相邻像素接近的灰度值来取代与相邻像素相差较大的灰度,按此操作遍历图像,即可得到平滑后的图像。
阵列[x(i,j)]M×N经过窗口为Mn的中值滤波后,待处理像素点(i,j)的响应输出为

式中,Mn表示待处理点的邻域模板,窗口模板可以是正方形或十字形的,分别如图5-3a和图5-3b所示

图5-3 中值滤波器的模板
5.肤色相似度计算
为了方便在后续处理中利用图像像素的邻域信息,我们首先将像素从彩色空间变到一维空间。根据肤色在色度空间中的高斯分布,对于彩色图像中的每个像素点,将其从RGB色彩空间变换到YCgCr色彩空间后,就可以计算
该点属于皮肤区域的概率,即根据该点距离高斯分布中心的远近得到其与肤色的相似度,即

对一幅图像中的每个像素点计算完毕后,我们统计出该幅图像上所有像素点的最大肤色相似度Pmax(Cg,Cr),并将每个像素点的肤色相似度P(Cg,Cr)除以该图像中的最大肤色相似度(Cg,Cr),即可将各个像素的肤色相似度值归一到[0,1]之间。该值越大,表示属于肤色的可能性也越大,反之越小。为了显示各像素与肤色的相似程度,我们将各像素的肤色相似度值乘以255,然后取整,将其变换到[0,255]之间,即在相似度值的基础上把一幅彩色图像转换为一幅肤色相似度灰度图像。该转换仅仅是为了显示相似度效果而作的转换。Pmax