基于DirectShow的人眼检测

2015-12-23 00:54刘晓亮王元庆曹利群周必业李鸣皋
计算机工程与设计 2015年7期
关键词:人眼肤色人脸

万 泉,徐 斌,刘晓亮,王元庆,曹利群,周必业,李鸣皋

(1.南京大学 电子科学与工程学院,江苏 南京210093;2.中国人民解放军海军总医院,北京100088)

0 引 言

目前基于立体视差技术的立体显示器,采用的是辅助立体显示和无辅助立体显示两种方式[1],其中辅助立体显示多是借助立体眼镜和立体头盔,该方式具有舒适性不强和易疲劳的缺点。而裸眼立体显示器基于无辅助立体显示,解决了上述缺点。本文中的裸眼立体显示器采用了指向背光式的方式实现裸眼立体显示[1],该技术方案主要是将左、右图像分别精确投影到观看者的左、右眼,为此,精确定位人眼的位置是该技术方案的关键技术之一[2]。

本文提出了基于DirectShow 的人眼检测方案,采用人脸-人眼的两层结构进行人眼检测,将基于统计特征的Ada-Boost算法和基于模板匹配的ASM 相结合,弥补了二者的不足之处,在保证实时性的基础上提高了人眼定位的精度。本文在用肤色检测选出候选点后,采用多尺度Ada-Boost算法实现人脸检测,并在参考AdaBoost检测结果的基础上,采用ASM 算法精确快速地定位人眼的位置,在一定距离内实时精确地检测并定位人眼。此外,该方案可以在无需关注硬件具体执行细节的情况下实现双焦视距拼接技术。

1 人眼检测算法

目前常用的人眼检测的方法可以分为以下3类:基于模板匹配的方法、基于灰度投影的方法和基于统计的方法[3]。在基于模板匹配的方法中[4],早期采用眼睛作为单个子模板建模,每一个子模板按照线分割定义。后期Coots[5]等提出了基于主动形状模型 (ASM)和主动表观模型 (AAM)两种方法。基于模板匹配的方法计算量高,不适用于实时处理,且初始位置要求在检测目标的附近。基于灰度投影的方法中,Kanade[6]最早将积分投影函数成功地应用于人脸识别。Feng和Yuen[6]提出了方差投影函数,然而这种方法对背景复杂的情况效果不佳,同时易受到眉毛、睫毛、眼镜等因素干扰。基于统计特征的方法[4]包括神经网络方法、隐马尔可夫模型方法、支持向量机方法(SVM)等,其中最具代表性的是AdaBoost算法[7]。基于统计特征的方法相对与前两种提高了检测的精确度,但是它需要大量合理分布的样本完成分类器的训练,过程复杂,精度与基于模板匹配的方法相比有所降低。

由于人眼检测问题的复杂性,上述人眼定位方法的精度与算法实现的实时性之间是相互矛盾的。如果精确定位人眼的位置,相应的算法在时间复杂度上较高,很难满足实时定位的要求,如果降低其时间复杂度,快速定位人眼的位置,定位的精度又会因此下降。同时,人眼检测算法对图像的分辨率也有相应的要求,分辨率较低的情况下很难实现准确的人眼定位,这使得人眼定位在实际应用中的范围十分有限。

为了达到实时精确检测人眼位置的目的,本文采用的是基于DirectShow 系统将肤色检测、AdaBoost和ASM(主动变形模板,Active Shape Model)等方法相结合完成人眼检测。算法的大致流程是:首先,采取隔行抽样的肤色检测预处理办法,在图像中选取人脸可能的候选区域,并通过AdaBoost在候选点中排除非人脸区域,确定人脸区域;然后,在检测到的人脸范围内,运用ASM 算法精确定位人眼位置。该算法流程提高了区域分割的预处理速度,并借助多尺度的AdaBoost检测算法,提高ASM 中特征点定位的速度和精度。

1.1 肤色检测

肤色是人脸区域中重要而稳定的特征,在人脸检测中,肤色检测作为预处理阶段广泛使用的区域分割方法,在速度方面具有显著的优势,并且在存在遮掩以及不同尺度姿态等不利因素的情况下,拥有较强的鲁棒性。目前在肤色检测时经常使用RGB、HSV、YCrCb、HSI和YIQ 等色彩空间表示肤色。由于不同肤色之间的差异主要是由亮度差异引起,而在色度方面较为接近并趋于集中在一个很小的区域内,因此可以通过色度选取人脸的候选区域。本文肤色检测中选取的色彩空间为YCrCb,Y 分量表示亮度,Cr分量表示RGB信号中红色部分与其亮度值之间的差值,Cb分量表示RGB信号中蓝色部分与其亮度值之间的差值。该色彩空间的优势是实现了色度和亮度之间的分离,从而可以快速提取色度信息,并将其用来选取图像中人脸区域的候选点[8]。

在肤色检测中,目前常见的算法有直方图归一查表法、分布阈值界定法、单高斯模型法、混合高斯模型法和椭圆边界模型法等。肤色在YCrCb色彩空间中的CrCb平面上呈现近似椭圆的分布特性。实际中肤色的颜色与亮度之间呈现非线性函数关系。在低亮度的条件下,色度的聚类性会随亮度的变化呈现非线性降低。为了避免色度的聚类受到亮度变化的影响,在研究YCrCb色彩空间的肤色聚类情况时,将其中的高光阴影部分排除。在YCrCb空间内进行色度非线性变换的过程中,用Cb-Y 和Cr-Y 表示肤色区域的中轴线,将选取的样本点投影到CrCb平面后,效果如图1所示。由于该椭圆模型在该平面上是倾斜的,为方便建立椭圆边界方程,采用K-L 变换进行旋转和平移,得到了统计椭圆模型。变换投影过程中的公式如式 (1)所示,投影后的椭圆边界方程公式如式 (2)所示

图1 YCrCb色彩空间样本点的投影

在肤色检测的过程中,将YCrCb色彩空间内的采样点在此平面内进行投影,并将投影在该椭圆边界内的样本点视为肤色候选点。

1.2 AdaBoost算法

AdaBoost[9]算法的训练和检测,使用的是输入图像的矩形特征,即Haar特征,作为其特征模板,矩形特征的信息可用5元组 (x,y,w,h,angle)表示,其中 (x,y)表示该矩形特征的左上角坐标, (w,h)分别表示该矩形特征的宽和高,angle表示该矩形特征的旋转角度。常用的矩形特征有线性特征、边缘特征、点特征、对角线特征等,图2中展示了部分矩形特征,一般将矩形中白色部分和黑色部分的差值作为该矩形特征的特征值。

图2 部分矩形特征

为了提高运算速度,Viola等引入了积分图的概念,在积分图中,s(x,y)为原图像中点i(x,y)上方和左方所有点的灰度值之和

t(x,y)为i(x,y)上方所有点的灰度值之和,s (x,y)的计算公式如式 (4)所示

(x,y,w,h,angle)的矩形特征的特征值W 计算表达式为式 (5)所示

在计算多尺度Haar-Like特征时,可利用积分图,通过查表法快速计算。由于其消耗时间为常量,因此可以提高运算速度。

1.3 ASM 算法

ASM 是一种基于统计学习模型的特征点提取的方法,其特征点一般选取高曲率点、拐角点、T 型连接处等,同时在图像的边界点处等间距选取中间点。通过对大量训练样本中的特征点位置进行统计,对当前标定好的形状作归一化处理,将人脸训练样本集中的形状向量对齐,并在此基础上进行PCA 主成分分析,寻找形状变化的统计信息和规律,得到由特征点构建的起点分布模型 (principle distribute model,PDM),将其作为反映人脸形状变化规律的形状统计模板。本文中的特征点采用的是XM2VTS人脸库标准模型,其中定义了68个人脸特征点。

在训练集中有N 个样本,每个样本有n 个特征点,(xij,yij)是第i个样本第j个特征点坐标,每个样本为一个形状向量S[10]i原字符串

N 个向量协方差矩阵C为

并且Pk,λk(k=1,2,...,2n)分别为协方差矩阵C的特征向量和特征值,其中λk≥λk+1,这里选取前t个特征值和特征向量使得特征值满足式 (9)

式中:fv——比例系数,通常取值范围为95%~99%,VT为所有特征值之和,用来构建线性模型,从而近似地表示点分布模型S′

式中:b——分布模型的参数,通过改变b的数值能够改变点分布模型的形状[11],一般取bi=,i=1,2,...,t。

对于N 个训练样本及待检测的人脸区域,由于在相同的特征点周围的灰度信息是相似的,可通过搜寻纹理信息匹配的最佳位置作为特征点的位置。因此记录每个特征点附近的纹理信息,得到特征点附近的灰度分布规律,构建局部灰度模型。当对指定的人脸区域进行ASM 特征点定位时,将点分布模型覆盖在待检测图像上,利用局部灰度模型进行搜索,通过循环迭代寻找马氏距离最小的点作为每个特征点的最新位置,调整形状模型的参数,修正模板与待检测人脸之间的偏差,并在多次迭代之后确定特征点的最佳位置。

1.4 人眼定位的实现流程

完整的人眼定位流程如图3所示。为了达到实时人眼定位的效果,在检测的过程中,相对于原先的算法,有如下几处优化:在肤色检测中,会出现投影在椭圆边界内的噪声干扰。为了克服个别噪声点的干扰,同时提高实时检测的速度,在检测过程中,将待检测图像分割成若干4*4的较小区域,对每个区域隔行抽取相同数量的像素并进行投影,只有满足投影后椭圆内像素总数超过阈值的区域才会被设定为候选区域。对上一步肤色检测中得到的候选区域使用AdaBoost进行人脸检测,排除候选区域中非人脸区域。为了检测到不同距离的观测者,应对大小不一的人脸,在使用AdaBoost进行人脸检测的过程中采用多个尺度对同一个候选区域进行多次检测,不仅可以提高检测的准确率,并确保可以检测到一定范围内不同尺寸的人脸,同时也确定待检测人脸区域的最佳匹配尺度,为其后使用ASM 定位人眼位置做好相应准备。在使用ASM 进行特征点定位的过程中,由于实际应用中背景差异过大,人脸外部的像素特征无法事先确定,可能会形成局部极小值的问题,影响循环迭代的结果。为了提高ASM 的准确率,ASM 的统计模板以多尺度AdaBoost算法中寻找到的人脸大小及最佳匹配尺度为参考,使用比该尺度即人脸略小的模板进行特征点定位。将该尺度作为ASM 在人脸区域的初步搜索范围,使得点分布模型从人脸内部逐渐向外扩张,从而减小人脸外部区域的影响,同时减少迭代次数,提高特征点定位的速度,经过多次迭代最终确定表示人眼位置的特征点。

图3 人眼检测算法流程

2 基于DirectShow的人眼检测

2.1 DirectShow简介

DirectShow 是Microsoft在ActiveMovie 和Video for Windows的基础上经过Direct X6.0 中的DirectX Media发展而来的新一代基于COM 的流媒体处理的开发包,集成了DirectDraw、DirectSound等技术。它为在Windows平台上开发不同格式的媒体文件播放、音视频采集等高性能要求的多媒体应用,提供了相应完备的解决方案,使客户能够轻松地在Windows应用平台上创建多媒体应用程序。DirectShow 的主要优势在于削弱了应用程序开发成员和硬件厂商之间的联系,使开发人员能够在无需关注硬件的具体执行细节的情况下使用该硬件。其设计的核心思想是使应用程序开发人员不再处理复杂的数据传输、硬件差异、同步性等工作,由DirectShow 完成相应的总体应用框架和底层工作。基于DirectShow 开发的多媒体应用,具有能处理巨大的多媒体数据量,保证数据处理的高效性,处理各种各样的媒体格式问题,支持目标系统中不可预知的硬件等优点[12]。

Filter作为DirectShow 中基本单位之一,属于COM 组件。DirectShow 系统位于应用层中,通过采用Filter Graph的模型对整个数据流处理过程进行管理,其中参与数据处理的各个功能模块即为Filter,通过一系列Filter按一定顺序链接协同工作实现指定的多媒体功能。Filter分为以下3类:

Source Filter:负责读取数据,其来源有本地文件、计算机网络、广播电视或其余的一些数码产品等。

Transform Filter:负责从上一个Filter中接收数据并对其进行相应处理,之后将数据发送给下一个Filter,本文提出的解决方案中的人眼检测主要是在Transform Filter中进行实现。

Rendering Filter:一般处于整个Filter链的末端,用于将处理后数据输出,将其展现给用户或进行保存等处理。

2.2 基于DirectShow的人眼检测框架

采用DirectShow 系统对常见的视频捕捉问题进行处理是比较容易的。这是因为DirectShow 拥有一套先进的应用架构。视频捕捉卡通常以一个Filter的形式出现在Direct-Show 中。在处理视频捕捉时,我们借助Filter Graph,将该Filter作为Source Filter接入整个系统,实现在无需考虑硬件具体信息的情况下完成视频捕捉。

本文构建的DirectShow 系统结构如图4所示,其中上文中的人眼检测算法在Transform Filter中实现,Transform Filter负责对Source Filter中捕捉的图像进行检测,将处理后的图像发送到Rendering Filter中使其在屏幕上显示出来。由于AdaBoost和ASM 算法均要求图像分辨率不能太低,因此实际应用中单个摄像头的纵向探测范围有限,使得人眼检测的纵向范围也相应有限。为了能够增加实际中的纵向探测范围,在该体系结构的基础上采用双焦视距拼接技术。同时为了减少切换摄像头时对整个系统的改动以及减少总共使用的Filter数量,当应用程序选定需要切换的摄像头后,DirectShow 中各Filter之间断开链接,在将新的摄像头作为Source Filter接入整个系统后再重新链接,其余的Filter均不改动。Transform Filter中的人眼定位算法对于不同摄像头是通用的,仅在使用的参数方面有所不同。为了实现不同摄像头对同一个Transform Filter的共用,该系统在Transform Filter中储存所有摄像头使用的参数。由于在DirectShow 中Filter之间以Sample的形式传递数据,而Sample中只包含图像信息,很难直接在Transform Filter中得知正在使用摄像头的信息,因此需要在应用程序和Transform Filter之间构建进程通信,使Tranform Filter在切换摄像头时得知更换后摄像头的信息,并将参数修改为该摄像头对应的数据。通过这种方式,可以在切换摄像头时只替换其中的Source Filter,而DirectShow 中的其余部分保持不变,从而减少整个系统中使用的Filter数量。

3 实验结果

本文选取的人眼检测距离分别为1m 和5m,采用640*480的摄像头。

在实时监测的过程中,抽取50帧图像进行分析。分析数据如表1所示,其中虹膜直径平均为13.9个像素。由表中数据可知,采用AdaBoost算法和ASM 算法相结合时人眼定位的精度相对于仅用AdaBoost算法有所提高。

距离为1 m 检测效果如图5 所示。其中图5 (a)~(c)为仅用Adaboost检测结果,图5 (d)~ (f)为加入ASM 后检测的结果。

距离为5 m 检测效果如图6 所示。其中图5 (a)~(c)为仅用Adaboost检测结果,图5 (d)~ (f)为加入ASM 后检测的结果。

图4 用于人眼检测的DirectShow 系统结构

表1 人眼检测精度比较

图5 距离1 M 的测试结果

从实际中仅用AdaBoost算法和AdaBoost算法与ASM算法相结合的测试效果相比较,可以观测到加入ASM 算法后人眼定位的精度有所提高。同时,在人脸-人眼的两层结构中,先采用AdaBoost算法确定人脸的位置,提高了检测速率,实现了实时检测。并通过双焦视距拼接技术提高了纵向探测深度,实现了不同纵向距离的人眼定位。

图6 距离5m 的测试结果

同时,在肤色检测的预处理过程中采用了椭圆边界模型,对不同光照条件适应性强,图7为不同光照条件下的对比图,实际检测效果良好,未受光照条件不同的影响。

4 结束语

使用DirectShow 进行多媒体应用开发是十分高效的。本文设计了基于DirectShow 实现的实时人眼检测系统方案,该方案稳定可靠、易于维护、视频质量高。将多尺度AdaBoost检测出的人脸尺度大小与ASM 的初步搜索范围相结合,实现了实时精确的人眼定位,并使用双焦视距拼接技术提高了纵向探测范围。同时,由于DirectShow 具有无需关注硬件具体属性的特性,因此后期摄像头的更改与加入对整个系统的修改量极小,从而使得不同检测范围与环境下的硬件配置易于实现,具有良好的通用性。此外,在DirectShow 开放性的体系下,可通过接入第三方的Transform Filter实现更多功能,拥有良好的扩充性,使得该体系结构具有良好的发展前景。

图7 不同光照条件下的对比

[1]WANG Yuanqing.Overview of 3DTV technologies[J].Journal of Nanjing University (Natural Sciences),2014,50 (3):361-370 (in Chinese).[王元庆.立体电视技术及其现状 [J].南京大学学报 (自然科学),2014,50 (3):361-370.]

[2]Xue YL, Wang YQ. Multi-user autostereoscopic 2D/3D switchable flat-panel display [J].Journal of Technology,2014,10 (9):737-745.

[3]HAN Jing,WANG Yuanqing.Eye detection based on real AdaBoost and bright pupil effect[J].Electronic Measurement Technology,2009,32 (8):114-117 (in Chinese). [韩晶,王元庆.基于亮瞳效应的连续AdaBoost人眼检测 [J].电子测量技术,2009,32 (8):114-117.]

[4]XU Lai,ZHOU Delong.Technology of human eyes detection[J].Computer Systems&Applications,2010,19 (6):226-232 (in Chinese).[徐来,周德龙.人眼检测技术的方法研究[J].计算机系统应用,2010,19 (6):226-232.]

[5]LI Ying,LAI Jianhuang,RUAN Bongzhi. Multi-template ASM and its application in facial feature points detection [J]. Journal of Computer Research and Development,2007,44(1):133-140 (in Chinese).[李英,赖剑煌,阮邦志.多模板ASM 方法及其在人脸特征点检测中的应用 [J].计算机研究与发展,2007,44 (1):133-140.]

[6]LU Yufeng,LI Chunling,YANG Xiujian.Recognition of eyes’states based on variance projections function [J].Journal of Shandong Institute of Light Industry,2009,23 (4):74-77 (in Chinese).[路玉峰,李春玲,杨秀建.基于方差投影函数的人眼状态识别[J].山东轻工业学院学报,2009,23 (4):74-77.]

[7]CAO Ying,MAO Qiguang,LIU Jiachen,et al.Advance and prospects of AdaBoost algorithm [J].Acta Automatica Sinica,2013,39 (6):745-758 (in Chinese). [曹莹,苗启广,刘家辰,等.AdaBoost算法研究进展与展望 [J].自动化学报,2013,39 (6):745-758.]

[8]ZONG Xinlu,XIONG Shengwu,ZHU Guofeng.Color image face detection based on skin color and AdaBoost algorithm [J].Application Research of Computers,2007,24 (10):178-180(in Chinese). [宗欣露,熊盛武,朱国锋.基于肤色和Ada-Boost算法的彩色人脸图像检测 [J].计算机应用研究,2007,24 (10):178-180.]

[9]XU Pin,TONG Gui,QU Jing.Face detection in video based on AdaBoost algorithm and eye location [J].Video application&project,2011,35 (9):114-117 (in Chinese).[徐品,童癸,瞿静.基于AdaBoost 算法和人眼定位的动态人脸检测[J].视频应用与工程,2011,35 (9):114-117.]

[10]ZHENG Yuduo,TIAN Yangmeng,JIN Wei.Eye localization based on AdaBoost and active shape model[J].Journal of Beijing Information Science and Technology University,2013,28 (3):73-76 (in Chinese). [郑玉铎,田杨萌,靳薇.基于AdaBoost和ASM 算法的人眼定位 [J].北京信息科技大学学报,2013,28 (3):73-76.]

[11]ZHU Jie,TANG Zhenmin.ASM and color Gabor features for facial feature extraction [J].Computer Science,2010,37(4):265-268 (in Chinese). [朱杰,唐振民.ASM 与彩色Gabor特征相结合的人脸关键特征点提取 [J].计算机科学,2010,37 (4):265-268.]

[12]LU Qiming.Direct show development guide[M].Beijing:Tsinghua University Press,2003:1-4 (in Chinese). [陆其明.DirectShow开发指南[M].北京:清华大学出版社,2003:1-4.]

猜你喜欢
人眼肤色人脸
有特点的人脸
一起学画人脸
Conversation in a house
人的肤色为什么不同
为什么人有不同的肤色?
人眼X光
人眼为什么能看到虚像
三国漫——人脸解锁
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼