微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 基于新的肤色模型的人脸检测方法

基于新的肤色模型的人脸检测方法

时间:12-11 来源:互联网 点击:

0 引言
人脸检测一直是一个研究热点,它涉及到模式识别、图像处理、计算机视觉以及神经网络等许多交叉学科,在数字视频处理、视觉监测等方面有着重要的应用价值。目前国内外的研究中,围绕彩色图像中肤色这一特征的算法越来越多,同时利用肤色进行定位和分割也比较快速准确,简单直观,这使得彩色图像处理与人类视觉感受自然而然地结合了起来。肤色是人脸的重要信息,具有相对的稳定性并可和大多数背景物体的颜色相区别,也与物体的大小、伸缩及姿态基本上无关。

1 Hsu R L肤色检测算法
Hsu R L在论文中提出了一种可变光照及复杂背景下的肤色检测算法,该算法应用于人脸检测中可以取得较好的效果。
Hsu R L首先采用一种光照补偿算法。它将整个图像中所有像素的亮度从高到低进行排列,然后取前5%的像素,如果这些像素的数目足够多,就将它们的亮度作为“参考白” (Reference Wlaite),即将它们的色彩的R、G、B分量值都调整为最大的255。整幅图像的其它像素点的色彩值也都按这一调整尺度进行变换肤色检测时,由于在Hsu R L采用的YCbCr色度空间中,色度值CbCr对亮度值Y总是存在着一定的非线性的依赖关系,这种依赖关系在很大程度上影响了肤色的检测,所以,Hsu R L在论文中提出了一种非线性变换方法,以消除色度对亮度的依赖关系。其非线性变换公式如下:


式中,Ci表示Ch或是Cr,WCk=46.97,WLCb=23,WHCb=14,WCr=38.76,WLCr=20,WHCr=10,Kl=125,Kh=188,这些参数均是Hsu R L由大量训练样本中估计取得的。
Hsu R L对Heinich―Hertz―Institute(HHI)图像库图片中的肤色点进行了统计,图1所示是肤色点在非线性变换后的yCb′C′r空间分布图。在变换后,其Cb′Cr′区域中采用椭圆模型描述肤色分布,其椭圆模型可表示如下:

上式中,根据肤色在Cb′Cr′空间内的分布形状,可取cx=109.38,cy=152.02,θ=2.53,ecx=1.60,ecy=2.4l,a=25.39,b=14.03。最后,便可对图像中的每个像素进行检测,若其变换后的Cb′Cr′值在椭圆区域之内,则视为肤色像素点,否则,为非肤色像素点。

2 新的肤色算法
Hsu R L的方法虽然可以较好进行人脸肤色检测,但是,Hsu R L的椭圆模型则是根据大量肤色点在Cb′Cr′区域的分布规律建立起来的,不一定适合每张输入图像。对每幅图像来说,肤色点的聚类分布范围很小,而且位置分布不同。如在图2所示的肤色分布中,其有些区域(如红色),相对于肤色点来说,范围就扩大了,以至于HsuR L的椭圆模型很容易将非肤色点也包含进来,从而导致肤色点的“过检测”。而有时,背景中的一些区域也可能被检测为肤色像素点,比如图2(c)所出现的情况。

为此,本文在Hsu R L方法的基础上,提出了一种基于单幅图像自身肤色分布特征的新的检测算法。该新算法即考虑到肤色在某个特定的肤色空间中所具有的统计特征,同时又考虑到光线变化的影响。
本肤色检测算法主要是针对单幅图像中人脸的肤色分布来进行区域分割,同时结合肤色信息,自动选取类似的区域作为肤色区域,从而克服了传统通过大量肤色样本统计得到的肤色模型来进行肤色检测容易导致的过检测问题。该检测算法的流程图如图3所示。

3 新算法的实现
新算法的具体实现步骤可以分为颜色空间变换。
3.1 颜色空间变换
新算法首先将图像的色度空间由RGB转换为YCbCr空间,并按式(1)~(4)进行非线性变换。这是因为非线性变换后的颜色空间Cb′Cr′受到亮度的影响较小,能更好地利用色彩空间的颜色信息进行建模。
3.2 CbCr二维直方图
统计每个像素的Cb′Cr′值并取其对数值,以形成一个Cb′Cr′值的二维直方图。通过实验发现,由于正常光照下的某个特定人脸的绝大部分区域的颜色都具有很强的一致性,其肤色点Cb′Cr′分量的二维直方图通常都呈一定的峰状。
3.3 标记及直方图分割
提取二维直方图中的峰值时,为便于消除干扰,应引入一个参数K:


其中,S表示从峰值到邻近峰谷的最短距离,H表示峰值的高,图4所示是进行标记的示意图。

做标记时,首先检测二维直方图中的各个峰值区域,并将参数K大于阈值的峰值作为标记(阈值为10%),以便于下一步的肤色检测。
本文采用了一种水平面下移的方法来对二维直方图区域进行分割,即将二维直方图看成位于水平面以下的峰谷,然后调整水平面,使之逐步下移,这样,各个山峰便依次显露出来。通常可先设定水平面高度H,然后下调水平面d,对高于水平面(H-d)的峰值点分配一个唯一的标记,再接着调整水平面的高度,检测位于H-2d与H-d之间的像素值。若该像素是一个新的峰值点,则分配新的标记;否则,在其周围寻找距离最近且已经标记过的像素,并给它分配相同的标记。直到给定高度上所有像素都分配到一个标记为止。图5所示是水平面下移算法流程图。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top