APP下载

基于mean shift的头发自动检测

2010-07-25傅文林胡福乔

微型电脑应用 2010年10期
关键词:高斯人脸头发

傅文林,胡福乔

0 引言

对于头发的自动分割进行试验研究,并提出自己的算法框架。算法利用mean shift和混合高斯模型,结合颜色,纹理,头发位置特征来检测头发。本方法分为三步。首先利用adaboost算法检测人脸及人眼,人脸及人眼的位置确定可进行人脸大小归一化及得到头发位置模板。其次,抽取头发特征向量并利用mean shift对头部区域所有像素进行聚类,得到聚类区域。最后,利用混合高斯模型判定聚类区域是否为头发区域,进而检测出头发。试验证明本方法运行速度快,并可在简单及复杂背景下有效检测头发。

近年来,人脸检测与识别成为热点,且逐渐走向成熟,对于人脸识别比较常用的方法可见文献[1]。主流的人脸识别算法主要是通过抽取人脸全局特征作为特征向量进行匹配识别。但全局特征向量在特征空间中容易存在向量对齐问题,故常采用抽取局部特征向量(如头发)作为辅助识别。头发是个很重要的局部外表特征,同样的,头发分析在以下的领域存在很大应用价值:身份识别,年龄和性别估计,图像检索。由于头发本身具有颜色多样性及形状变化性,故头发的分割及分析具有很大的困难,而于 对于头发检测研究比较少,近年来相关的论文如下:

Yacoob和Davis[3]利用rgb信息构建简单的头发和皮肤颜色模型,然后使用此颜色模型去判别人脸区域附近的像素是否为头发像素。此算法简单,快速,但仅能分割简单,归一化背景下的头发。

在Lee的方法[4]中,他利用头发颜色和位置信息构建高斯混合模型,然后再用图割算法最小化能量函数,从而得到头发和人脸的分割。然而在他的方法中同样存在缺陷。首先,在算法上构建能量函数中的头发位置信息采用的是绝对位置,因此它要求测试图片中人脸必须位于图片的正中间,否则会产生大量误检。其次如论文所述,对于头发与昏暗背景的判断容易产生误差。最后,因为基于像素单位的多类图割算法具有复杂的计算度,需要较长的运算时间。

C.Rousset[5]结合频域掩膜(frequential mask)和颜色掩膜去分割头发。在简单背景下此方法有一定效果,但在复杂背景及光照条件下,此方法同样存在大量误检。

我们目标是设计一种方法,能够在简单和复杂背景下较好的分割头发。方法还需考虑些特殊条件,如变化的光照,与目标相似的颜色背景。同样的,它要能够处理彩色图片和灰度图片,灰度图片中仅利用颜色信息时不够的。本文算法分为三步。首先,检测人脸及人眼。其次,抽取头发特征向量,利用mean shift算法对像素聚类,聚成一个个区域。最后,构建混合高斯模型,判断步骤二聚类而成的区域是否为头发像素区域。在头发特征向量的抽取过程中,一些典型的特征,如颜色,位置及纹理都在被考虑中。在实验过程中,发现头发颜色易受变化的光照影响,因此,为了提高头发检测正确率及让算法能适应不同光照条件,用不同光照条件下的头发区域去训练混合高斯模型。本文用不同光照,不同人脸尺寸大小,和不同环境下的图片测试算法,结果证明算法具有快速性,较高的准确率,及较好的鲁棒性。具体的算法流程如下所述:

1 头发分割

本文算法,如图1描述,是个多步骤方法,算法中的每步都去除部分非头发像素(或头发区域),最后得到头发像素(头发区域)。

1.1 人脸&人眼检测及头部区域定义

人脸检测及眼睛定位存在很多成熟算法[6],本文采用基于boosted分类器的方法检测人脸及人眼。人脸及人眼的检测可以减少环境因素的干扰,同时能归一化人脸图片,以便头发位置模板的提取及匹配,更好的进行头发分割。

通过人脸及人眼的检测及定位,可归一化人脸到某一大小。考虑到头发是环绕在人脸这一事实,本文提出定义头部区域这一概念,其中头部区域包含了人脸和头发。在C.Rousset的方法中,它用Viola和Jones[7]的人脸盒子及人体学数据来定义头部区域公式。在本文中,采用许多归一化后的头发训练图片来形成可能的头发区域,由此头发区域来定义头部区域公式,具体流程如下图所示:

图2 头部区域定义

从头发的聚类结果,可以得到包含头发和脸的头部区域定义公式如下:“头发和人脸”区域宽度 = 3.6*人脸宽度“头发和人脸”区域高度 = 3.7*人脸高度

1.2 头发特征向量

考虑到一些特殊状况,如灰度图像包含较少的颜色信息,头发颜色与背景图像类似,仅利用颜色特征信息是不够的,故我们抽取纹理特征,颜色特征及x,y坐标位置来表征头发特征向量。

抽取纹理特征,本文采用高斯差分滤波器DOG 和高斯偏移差分滤波DOOG。DOG和DOOG是计算机视觉和图像处理领域常用的一种滤波器,它的传递函数是两个不同宽度的高斯函数的差分。DOG和DOOG在许多方面表现出了优良的性能,例如对人眼视觉中感受视野的研究表明,视神经细胞的输出可以用DOG和DOOG来描述。DOG和DOOG的运算相对于Gabor来说也很简单。

模型包含三个步骤(1)用高斯差分滤波器和高斯偏移差分滤波器对图像做卷积,得到响应 (2)强化空域上的强响应 (3) 得到纹理边缘本文中,采用两个不同幅值的DOG和六个不同方向的DOOG滤波器。滤波器如下图所示。

图3 DOG和DOOG滤波器

1.3 mean shift 算法

Mean shift 算法是基于核密度估计的爬山算法。它在很多领域都有所使用,比如聚类,图像分割,目标跟踪。它的基本算法思想如下:

数据集{xi, i = 1,…..n}, xi 为d维的特征向量。头发特征向量的抽取如2.3.1所述。某样本点的Mean Shift向量可定义如下:

w为样本点的权值,在本文中,用头发相对位置概率P(rd|s)取代权值。这意味着增加可能头发区域中像素的权值,使得头发像素聚集更紧密,快速。像素相对位置概率P(rd|s)为0时被聚成非头发类,P(rd|s)越大越倾向于聚集成头发类。G(X)为核函数,由核函数形成的特征空间如下:

其中hs,hr控制着平滑的解析度,hs 表示空间域窗口半径,hr 表示颜色域窗口半径。通过实验,当hs=4 和hr=6.5时,可获得较好的结果。

用mean shift 聚类后,可获得许多区域,需对区域做进一步精确分类判断,判断其是否为头发区域,其中非头发区域包括人脸区域,衣服区域,帽子区域。

1.4 头发混合模型

构建高斯混合模型。头发特征包括颜色和纹理特征。本文用头发特征训练高斯混合模型。训练图片包含各种光照情况图片,如下图所示。训练混合高斯模型包含2个步骤,离线训练和在线更新步骤。本文图象库头发颜色类型主要为黑,白,灰颜色。但头发颜色易受光照,年龄和性别等条件影响,故我们采用多维混合高斯模型。

图4 强,弱光条件下的头发图像

在应用GMM前,使用k-means算法聚类训练头发像素,并获得初始化GMM参数。每个聚类中心分别代表头发在不同的条件下(光照,颜色,性别)的特征。经过试验,设k=5,即五维混合高斯模型可获得较好的分割头发结果。在训练过程中,应用EM算法更新GMM参数。

区域分割经由高斯混合模型概率。通过头发特征高斯混合模型,可计算像素属于头发的概率,进而判断像素是否为头发像素,得到头发模板。

判别函数如下:

p(x,μ,σ)为通过如下公式计算得到的高斯后验概率

当像素属于头发模型的概率低于一设定阈值时,此像素将判定为非头发类型。在本文中,一个合适的阈值设为0.0023.

GMM 和EM算法有一定复杂度。如果每个像素都计算混合高斯模型概率,则计算复杂度将增加,同时将存在大量空洞在高斯判断后。所以本文用mean shift聚类成的区域代替像素来计算头发混合高斯模型概率,并在线更新高斯模型参数。其中每个区域可用mean shift聚类而成的中心点来表征。如果中心点的混合高斯概率大于阈值,这整个区域都将判定为头发区域。如此计算复杂度将大大减少。

2 实验结果

2.1 图像数据库

实验采用的图像库都是关于正面人脸的。为了得到混合高斯模型的初始参数和头发位置模板,采用400张拥有简单背景的人脸图片(640*480 像素)作为训练图像。接着,对这些图片进行手动头发分割,用这些手动分割好的头发像素训练高斯混合模型,并且得到头发位置模板及各类发型模板。为了测试算法的有效性,采用2个不同的图像测试库。第一个图像测试库由300张图片(640*480像素),具有简单,归一化的背景。它用来测量算法对于头发的颜色多样性及头发形状的变化性的检测正确率由多少。第二个图像测试库包含200张不同大小的人脸图片,图片具有复杂背景,用来测量算法在复杂背景,变化光照,不同人脸尺寸下的鲁棒性。部分典型图片可见头发分割结果图。

2.2 头发分割结果及分析

本文算法处理一副图片(大小 640*480),在2GHz Core2 PC上耗费约900ms。人脸检测约需50至60ms,mean shift较耗时间,本文仅在头部区域运行mean shift算法,故耗时约600ms。因为使用mean shift聚类后的区域做混合高斯判断,故GMM仅耗时50ms。而Lee的方法因为采用图割(graph-cut)做多类分割,故由很高的计算复杂度,约需耗时3秒。

通过彩色图像和灰度图像头发分割各一个例子,并与Lee[4]和 Yacoob[3]进行对比,如图所示,可以看出在彩色图像中,本文算法结果类似于Lee的方法。Yacoob仅利用简单的颜色聚类算法,因此它无法去除类似头发颜色的衣服的干扰,把衣服误检成头发。

图5 (a)输入图像 (b)本文方法 (c)Yacoob方法 (d) Lee方法

在灰度图像中,正如预期的当在头发与背景颜色相一致的情况下,仅利用位置与颜色信息的 Lee的算法产生了误检。而Yacoob的检测结果类似于Lee算法。由于本文算法综合考虑了纹理,颜色及位置信息,故得到个更好的分割结果,如下图所示。

图5 (a)输入图像 (b)本文方法 (c)Yacoob方法 (d) Lee方法

本文采用误检率及漏检率来衡量算法性能。误检率表示误把背景像素当成头发像素的百分率,漏检率表示把头发像素当成背景像素的百分率。

表格1 头发分割结果表

从结果表中,本文算法在某些复杂环境下:变化光照,复杂背景,不同人脸尺寸,都具有较好的头发分割效果。但当人脸检测错误,背景颜色及纹理与目标头发相似,容易产生头发像素误检及漏检。

3 结论与展望

在本文中,我们提出了一种具有较好的实时性的检测头发的方法,本文中的算法能将头发与易混淆的背景区分开来。通过实验我们发现,当场景简单时,文中的算法能得到较好的结果,但当场景与头发颜色与纹理相一致的时候,本文中的算法所得到的结果不尽理想,所以,未来我们的工作将集中于解决如何更好的提高算法的鲁棒性上。

[1] Chellappa R, Wilson C L, and Sirohey S.Human and machine recognition of faces: A survey. Proceedings of the IEEE, 83(5):705–740, 1995.

[2] Cai J, Goshtasby A. Detecting human faces in color images. Image and Vision Computing, 1999(1), 18: 63-75.[3] Yaser Yacoob and Larry S. Davis: Detection and Analysis of Hair. IEEE Trans. Pattern Analysis and Machine Intelligence, 28(7), 2006.

[4] Kuang-chih Lee,Dragomir Anguelov, Baris Sumengen,Salih: MarkovRandom Field Models for Hair and Face Segmentation,IEEE Conf. On Automatic Face and Gesture Recognition, September 17-19, 2008.

[5] Rousset C and Coulon P Y.Frequential and Color Anaysis for Hair Mask Segmentation. ICIP 2008.

[6] Lienhart R, Liang L, and Kuranov A.A Detector Tree of Boosted Classifiers for Real-Time Object Detection and Tracking. Proc. IEEE Int’l Conf. Multimedia & Expo, July 2003.

[7] Viola P and Jones M.Compositing Rapid object detection using a boosted cascade of simple features. IEEE Computer vision and Pattern recognition, 511-518, 2001.

猜你喜欢

高斯人脸头发
有特点的人脸
我的头发『断了』
一起学画人脸
数学王子高斯
天才数学家——高斯
头发飘起来了
三国漫——人脸解锁
头发剪坏的你可以这么办
头发
从自卑到自信 瑞恩·高斯林