APP下载

一种改进的高亮度区域肤色像素检测算法*

2014-09-17蔡灿辉朱建清

通信技术 2014年5期
关键词:高亮度色度肤色

郑 颖,蔡灿辉,朱建清

(1.华侨大学 信息科学与工程学院,福建厦门361021;2.中国科学院自动化研究所,北京100190)

0 引言

肤色是人体表面最显著的特征之一,它对姿势、旋转、表情等变化不敏感,因此可以利用肤色检测从图像中有效分割出前景目标,减小待搜索范围。随着计算机视觉和图像处理的快速发展,肤色检测显得越来越重要,它在人脸检测[1]、手势识别、基于内容的图像检索和色情图像识别及过滤等方面都有着重要的应用。

研究表明,尽管不同种族、年龄、性别的人脸肤色看上去不同,但这种不同主要体现在亮度而非色度上。而大部分由CCD摄像机采集得到的图像都是亮度和色度高度相关的RGB形式,肤色对光照的变化很敏感,从而导致肤色像素的检测变得困难,特别是在高亮度条件下。高亮度肤色像素的检测是肤色检测的一个难点,原因有两点:

1)高亮度情况下肤色和非肤色具有很高的相似度。人类视觉在高亮度情况下对颜色不敏感,各种颜色往往都是一片白亮。这个时候仅靠色度差异来区分肤色和非肤色是十分困难的。

2)高亮度肤色像素的色度和亮度不完全独立。

现有的研究中主要有两类方法解决上述问题:①建立更精确的肤色模型;②减小亮度和色度的相关性。经典的肤色检测算法一般先进行线性或非线性颜色空间变换,以减小亮度和色度的相关性,从而降低光照对肤色的影响。然后在变换后的颜色空间上利用二维色度子空间进行肤色建模,建模的方法有划定肤色范围[2]、单高斯模型[3]、直方图查找表[4]、混合高斯模型[5]、椭圆边界法[6]等。现有的各种颜色空间不能完全消除亮度和色度的相关性,且经典算法仅使用二维色度信息进行肤色建模,在高亮度情况下极易发生漏检。为了克服肤色检测的这些难点,人们在YCbCr颜色空间上提出了一些改进算法[7-9]。文献[7]对可见亮度范围内的每一个亮度Y,统计出其对应色度的范围,根据每个像素的Y分量,索引出其相应色度范围,若该像素的色度落入这个范围,则判断为肤色。文献[8]采用Y_Cb和Y_Cr两个子空间的直方图查找表建立肤色模型,并使用贝叶斯准则建立肤色分类器,这需要比文献[4]多一倍的内存空间。文献[9]把满足 Y>120,Cb>95和 Cr>100条件的像素判断为肤色像素,该算法的不足之处是会把非肤色的高亮区域判别为肤色区域。为了提高高亮度区域肤色像素检测的正确率,文中在分析高亮度肤色像素的邻域和边缘信息的基础上,提出一种基于亮度连续性准则的高亮度肤色像素检测算法。实验结果表明该算法能在不增大对肤色样本数量和内存空间需求的前提下,准确地检测出图片中高亮度区域的肤色像素。

1 改进的肤色检测算法

1.1 高亮度区域肤色像素的特征分析

由于高亮度情况下肤色和非肤色像素的分布非常近似,看起来都是“白亮一片”,因此仅仅靠色度信息区别肤色和非肤色十分困难。为了说明当亮度足够高时,亮度对肤色检测的影响,文中从网上下载132张图片,对每张图片手工截取高亮度肤色和非肤色区域,做出如图1所示的Cb和Cr色度直方图。其中,实线曲线为肤色分布,虚线曲线为非肤色分布。从图1中可以看出,在高亮度情况下,肤色像素的色度主要集中在130>Cb>100,160>Cr>128 范围;非肤色像素的色度主要集中在144>Cb>106,147>Cr>112范围。肤色和非肤色的色度有较大的重叠,所以很难用固定区间来划定肤色。因此,必须对高亮度区域肤色像素的特性进行深入的分析,找出其内在的规律,从而实现更准确的高亮度区域肤色像素检测。

图1 肤色和非肤色的色度子直方图Fig.1 Chroma histogram of skin color and non-skin color

图2给出了高亮度区域肤色像素分布特点示意图。图2(a)为一幅包含高亮度肤色像素的图像,其中肩膀的大部分像素处于高亮度区域。图2(b)给出了图2(a)中肩膀部分的放大图,从中可以看出高亮度肤色像素周围是正常亮度肤色像素。图2(c)给出了图2(b)的亮度分布图。从图2(c)不难看出,由正常亮度的肤色像素到高亮度的肤色像素之间的变化是一种渐变过程。

通过实验我们发现类似的现象在自然图像中普遍存在。换言之,自然图像中高亮度肤色区域的分布通常具有如下两个特点:

1)图像中肤色区域的亮度是渐变而不是剧变的,在正常情况下,人体肤色区域内部不会出现明显的亮度边缘。

2)高亮度肤色区域的外围通常存在正常亮度的肤色像素。

上述两个特点分别表明了肤色区域的亮度连续性和空间连续性,文中称之为人体肤色区域亮度和空间连续性原理。基于这个原理,可以利用边缘检测在亮度子空间中有效地分割出肤色区域和非肤色区域,进一步地,采用区域生长法在已检测到的正常亮度的肤色区域中检测出高亮度的肤色像素。

图2 高亮度区域肤色像素分布特点示意Fig.2 Distribution diagram of skin color pixels in high illuminated region

图3给出了一张具有高亮度肤色区域的照片及相应的边缘分布图以说明肤色区域的亮度和空间连续性特点。其中图3(b)是图3(a)的亮度Canny边缘检测图,从图3(b)可以看出在高亮度肤色区域和低亮度肤色区域之间并没有明显的边缘。因此,在肤色检测时如果把人体肤色的这两个特点也考虑进去,就可以更好地解决高亮度肤色像素漏检的难题。

图3 肤色区域亮度和空间连续性Fig.3 Spatial and luminance continuity of skin color region

为此,文中提出一种基于人体肤色区域亮度和空间连续性原理的肤色检测算法,该算法分成两个阶段:图像中正常亮度区域的肤色像素检测阶段和图像中可能存在的高亮度肤色像素检测阶段。正常亮度的肤色区域检测可根据使用环境和条件选择文献[2-6]中的任何一种方法。考虑到文献[3]采用的单高斯模型(SGM,Single Gaussian Model)方法在小样本情况下的肤色聚类效果显著,不需要大量的肤色样本,在检测时计算量不大不用建立查询表,而且检测效果比较好,所以文中采用单高斯建模方法进行正常亮度肤色检测。高亮度肤色像素检测阶段则是在前一阶段检测结果的基础上采用人体肤色区域亮度和空间连续性原理检测出高亮度肤色像素。

1.2 基于单高斯模型的肤色检测

基于单高斯模型的肤色检测算法主要包括颜色空间的选取、肤色建模、肤色分割三个部分,下面从这三个方面详细介绍基于单高斯建模的肤色检测算法。

1.2.1 颜色空间的选取

RGB颜色空间是最常用的颜色空间,但是RGB值不仅包含色度信息也包含亮度信息,所以环境光照的变化很容易导致RGB值发生变化,因此不宜在RGB颜色空间中建立肤色模型。文中选择YCbCr颜色空间,该空间色度受亮度变化的影响较小,与其他颜色空间相比具有如下优点:

1)YCbCr颜色空间广泛应用于图像和视频压缩标准,例如MPEG和JPEG。

2)YCbCr颜色空间是RGB空间的线性变换,转换计算简单。

2)YCbCr颜色空间与HIS,HSL,HSV等相似,独立表示亮度和色度分量。

4)YCbCr颜色空间是离散空间,聚类算法易于实现。

5)YCbCr颜色空间是感知均匀的颜色空间,同HSI相比,肤色在YCbCr的聚类更紧簇。

图4是肤色在颜色空间上的聚类图,其中图4(a)是肤色在Cb-Cr子空间上的聚类,图4(b)是肤色在H-S子空间上的聚类。从图4容易看出,肤色在YCbCr颜色空间上聚类比在HSI颜色空间上聚类更紧凑。

YCbCr颜色空间和RGB颜色空间的转换关系式如下:

式中,YCbCr的信号范围是 Y∈ 16,235[ ],Cb和 Cr∈[16,235]。

图4 肤色在不同颜色空间上的聚类Fig.4 Cluster diagram of Skin color in different color space

1.2.2 肤色建模

单高斯模型就是利用高斯分布来拟合肤色的色度概率密度分布。它的基础是来自两个观察结果:

1)肤色是以一定的概率密度出现,人与人之间的肤色差异导致其概率密度的不同。

2)在一定的光照条件下肤色色度分布呈正态分布。

图5是肤色在CbCr颜色空间的分布情况,其中图5(a)是直方图,图5(b)是单高斯概率密度图。单高斯模型采用椭圆高斯联合概率密度函数:

式中,x是像素色度向量,均值向量μ和协方差矩阵∑是高斯分布的参数,由训练样本最大似然估计(ML)估计得到:

文中在IMM人脸数据库中手工选取肤色像素,训练出单高斯模型参数如下:

为了减小计算复杂度,文中采用马氏距离(Mahalanobis Distance)作为衡量输入像素和肤色模型的接近程度:

对每个像素点利用式(4)计算出马氏距离,在实验中先设定一个阈值θ,用以判断当前像素点是否为肤色像素。如果马氏距离d2>θ时,判定该点为肤色点,否则为非肤色点。阈值θ的取值直接影响到肤色检测结果,如果θ过大则肤色检测的漏检率大,相反,如果θ过小则肤色检测的误检率大。实际上图像内容各不相同,只用一个固定阈值进行肤色分割,显然是不合理的,需要阈值θ自适应的肤色分割算法。

图5 肤色在CbCr颜色空间上的分布Fig.5 Distribution of skin color in CbCr color space

1.2.3 自适应阈值分割算法

通过观察发现:当分割阈值θ从大到小变化时,图像中判定为肤色像素的数量会相应增大,在最佳阈值处的肤色像素数量变化率最小。所以在0.55:0.05的预置阈值范围内,以0.05的步长,依次对图像进行分割并记录下阈值变化时属于肤色像素数量的变化,然后找出肤色像素数量变化最小时的阈值作为最佳阈值。

1.3 高亮度肤色像素的检测

根据上节所讨论的基于单高斯模型的肤色检测算法的实验效果,文中设定Y∈[180,235]为高亮度像素。在已检测出正常亮度下肤色区域的基础上,即可利用文中所提出的人体肤色区域亮度和空间连续性原理对高亮度区域的肤色像素进行检测。高亮度肤色像素检测算法具体如下:

对每个亮度值Y满足180<Y<235的点,如果满足下述三个条件:

1)其4邻域中至少有1个肤色像素。

2)其8邻域中没有1个像素属于边缘像素。

3)当前像素的色度同时满足130>Cb>100和160>Cr>128。

则判定该点为高亮度肤色像素点。

1.4 算法描述

综上所述,可得文中所提出的具有高亮度肤色像素检测的人脸检测算法如下:

对输入图像f进行低通滤波处理,滤除噪声。

用基于单高斯模型的肤色检测算法对图像f进行正常亮度区域的肤色检测,得到初始的肤色标志图r(肤色像素点置为1,其余的像素点置为0)。

对肤色标志图r进行形态学闭运算,填充一些细小的“空洞”。

对输入的亮度图像进行Canny边缘检测,得到亮度图像的边缘标志图e(边缘像素点置为1,否则置为0)。

对每个亮度值Y满足180<Y<235的像素点,如果该点满足下述三个条件则肤色标志图r的对应位置置为1:

a.在肤色标志图r对应位置的4邻域中至少有1个非0点;

b.在边缘标志图e对应位置的8邻域均为0;c.当前像素的色度同时满足130>Cb>100和160>Cr>128。

输出最终的肤色标志图r,并根据肤色标志图提取肤色区域。

2 实验结果及分析

为了验证所提出的基于人体肤色区域亮度和空间连续性原理的高亮度肤色像素检测算法的效果,文中对多幅具有高亮度肤色像素区域的图像进行测试,并和文献[6,8]中的检测算法进行了对比,图6给出了部分实验结果。其中,图6(a)是具有高亮度肤色的原始图片;图6(b)是文献[6]所提出方法的检测效果图;图6(c)是文献[8]所提出方法的检测效果图;图6(d)是基于单高斯模型算法的检测效果图;图6(e)是文中产生的肤色标志图;图6(f)是文中算法的检测效果图。从图6(b)可以看出文献[6]的检测算法既会把白色区域误检为肤色区域,又会把不少肤色区域误检为非肤色区域,导致相当多的黑洞产生。从图6(c)可以看出文献[8]提出的方法虽然可以检测出高亮度肤色像素,但是同时也把高亮度背景像素误检为肤色像素,导致经过文献[8]提出的方法进行肤色检测后的结果几乎和原始图像一样,导致算法失败。从图 6(d)到图6(f)可以看到基于单高斯模型方法不能检测出图像中的高亮度区域的肤色像素,而在单高斯模型检测结果的基础上采用文中提出的高亮度肤色区域检测算法可以较准确地检测出图像中的高亮度肤色区域,同时误检率也比文献[6]提出的方法低。

图6 肤色分割效果比较Fig.6 Comparison of skin color segmentation performance

3 结语

文中分析了高亮度肤色区域的分布特点,提出在基于单高斯模型的肤色检测算法基础上,利用邻域信息和亮度边缘信息确定高亮度区域中的肤色像素点,实现含有高亮度肤色区域的肤色检测,在不增加肤色样本量和存储空间的前提下,解决了只利用色度信息检测肤色会对高亮度肤色产生漏检等问题。实验结果证明文中提出的方法准确地检测出图片中高亮度肤色区域,同时降低误检率,可以适用于更广的亮度范围。

[1] 崔晓琳,蔡灿辉,朱建清.一种基于肤色后置滤波的快速人脸检测算法[J].通信技术,2013,46(08):116-119.CUI Xiao-lin,CAI Can-hui,ZHU Jian-qing.A Fast Face-Detection Algorithm Based on Post Skin-Color-Verification[J]. CommunicationsTechnology,2013(08):116-119.

[2] CHAI D,NGAN K N.Locating Facial Region of A Head-and-shoulders Color Image[C]//Proceedings of the third IEEE International Conference on Automatic Face and Gesture Recognition.[s.l.]:IEEE,1998:124-129.

[3] YANG M H,AHUJA N.Detecting Human Faces in Color Images[C]//Proceedings of International Conference on Image Processing.[s.l.]:IEEE,1998:127-130.

[4] CHAI D,BOUZERDOUM A.A Bayesian Approach to Skin Color Classification in YCbCr Color Space[C]//Proceedings of TENCON.[s.l.]:IEEE,2000:421-424.

[5] ZHU X,YANG L,WAIBEL A.Segmenting Hands of Arbitrary Color[C]//Proceedings of the fourth IEEE International Conference on Automatic Face and Gesture Recognition.[s.l.]:IEEE,2000:446-453.

[6] HSU R L,ABDEL-MOTTALEB M,JAIN A K.Face Detection in Color Images[J].Pattern Analysis and Machine Intelligence,IEEE Transactions on,2002,24(05):696-706.

[7] 雷明,张军英,董济扬.一种可变光照条件下的肤色检测算法[J].计算机工程与应用,2002,38(24):123-125.LEI M,ZHANG J Y,DONG J Y.A Skin Color Detecting Algorithm under Variant Light Condition[J].Computer Engineering and Applications,2002,38(24):123-125.

[8] 吕东辉,王滨.YCbCr空间中一种基于贝叶斯判决的肤色检测方法[J].中国图形图象学报,2006,11(01):48-52.LV Donghui,WANG Bin.A Skin Detection Method Based on Bayes Decision in YCbCr Color Space.Jounal of Image and Graphics,2006,11(1):48-52.

[9] LIN C.Face Detection in Complicated Backgrounds and Different Illumination Conditions by Using YCbCr Color Space and Neural Network[J].Pattern Recognition Letters,2007,28(16):2190-2200.

猜你喜欢

高亮度色度肤色
难得的透明感与立体感 0.66英寸UHD 4K芯片与高亮度激光的结合 Optoma(奥图码)EL500K
肤色(外一首)
Conversation in a house
人的肤色为什么不同
色彩艳丽的高亮度入门4K投影 Acer(宏碁)H6810BD
为什么人有不同的肤色?
“移动投影机”中的高亮度机型 Acer宏碁|K631i
山楂酒色度测定及其影响因素
高亮度冷场电子源研究进展
基于改进色度模型的非接触式心率检测与估计