一种复杂环境下的人眼定位算法

2015-12-22 05:22刘相滨周治民张波云
湖南师范大学自然科学学报 2015年4期
关键词:人眼人脸分类器

刘相滨,周治民,张波云

(1.湖南师范大学图像识别与计算机视觉研究所,中国长沙 410081;2.湖南警察学院信息技术系,中国长沙 410138)

人脸识别是生物特征识别中最具发展潜力的技术之一,也一直是图像处理与机器视觉领域关注的热点.双眼作为人脸最规则和最稳定的局部特征,在人脸识别中非常重要,只要眼睛被精确定位,就可以降低识别算法的复杂度,从而提高人脸的识别速度和精度.因此,很多学者把人眼的定位作为人脸识别的突破口和人脸识别的关键技术之一.

近年来,国内外学者相继提出了一些人眼的定位方法,如PCA[1],支持向量机(SVM),基于Ada-Boost[2-5],以及基于模板[6-7]等方法,这些方法都获得了一定的成效.总的来说,这些方法主要分为两个步骤:(1)粗定位,找出人脸范围内的可能眼睛块;(2)精确定位,应用一些方法确定双眼的准确位置.谭台哲等[6]利用形态学商图像对人眼区域和皮肤区域有明显不同响应值的特点,提出一种基于形态学商模板的高效人眼定位方法.Kumar 等[7]首先通过投影对眼睛进行粗定位,然后采用模板匹配的方法对眼睛进行准确定位,但该方法所涉及的模板匹配计算量太大,而且对分辨率、尺寸、光照、旋转非常敏感.车昊等[8]提出了一种多层结构的快速眼睛定位算法,该算法先通过MER(极小值区域)进行眼睛粗定位,再利用由自然约束条件、眼睛坐标及灰度参数、Krisch 梯度特征所构成的三层筛选结构逐步去除错误的候选,从而得到正确的候选,最后利用局部图像的重心来微调眼睛的位置.这种方法对眼睛粗定位算法的正确率要求较高,而且难以消除眉毛、鼻孔等对眼睛定位的影响.Wen 等[9]利用通用投影函数(GPF)进行眼睛定位,计算量小、实现简单并且容易理解,不足的地方是当图像光照不均匀或有噪声时,通用投影函数的极值点不明显,从而很难准确地获得眼睛位置.李爱平等[10]则通过灰度投影与改进Hough 变换的方法进行人眼定位,算法实现简单,但没有将人眼的微结构特征考虑进来,特别是当眼睛睁开程度较小时定位误差较大.黄增喜等[11]充分利用人眼的灰度信息在已定位的人脸区域内找到大概眼眉区域,然后用改进的灰度投影算法实现眉毛和眼睛的分离,再融合图像灰度、图像块结构等信息筛选出人眼位置,但筛选的约束条件之间联系过于紧密,且计算量相对较大.余龙华等[3]采用AdaBoost 算法训练得到普通的单眼分类器或双眼分类器,最终利用分类器得到的人眼位置的中心来定位人眼位置,这种方法简单快速,但在训练人眼分类器时没有考虑到眼睛瞳孔位置的可移动性及眼睛所处各种姿态的复杂情况,故不能简单地将人眼的精确位置定位在矩形的中心.

以上算法在一些特定情况下具有良好的定位效果,但在不同光照、不同分辨率、有遮挡、复杂背景、多姿态等复杂环境下都存在一些不足,为此,本文结合AdaBoost 算法具有决策树正确率高、速度快等优点,提出一种新的人眼定位方法.该方法首先利用基于Haar-like 特征的AdaBoost 级联分类器检测出人脸区域,在人脸的上半部分区域内采用文中训练的多姿态人眼强分类器粗定位人眼区域,定义为感兴趣区域(ROI),然后对ROI 中的小图像块进行二值化图像处理,最后根据ROI 内瞳孔区域边界的灰度值变化较剧烈的特点寻找小图像块中的最大连通域,该最大连通域即为人眼的准确位置[12].在本文算法中,多姿态人眼分类器只选取眉毛以下的区域作为样本,因而能够避免现有一些算法将眼睛错误定位到睫毛的不足,一定程度上克服了人脸可塑性和光照等其他因素带来的干扰.实验结果表明,本文算法能够在复杂环境下对人眼位置进行准确定位.

1 AdaBoost 算法

Freund 和Schapire 在1996年提出的AdaBoost 算法是一种迭代方法,目的是通过从大量的弱分类器中选取最具有分类意义的组合组成一个强分类器,提高检测的精确度.在此基础上,Viola 和Jones 在2001年提出了基于Haar-like 特征的AdaBoost 人脸检测方法,极大地提高了人脸检测的速度和精度,从而使得人脸检测技术真正得到了应用.Viola 等人设计的人脸级联检测器如图1所示.

图1 人脸级联检测器Fig.1 Face cascade detector

图2 Haar-like 特征Fig.2 Haar-like features

分类器以Haar-like 矩形特征作为分类的依据.为了有效地筛除大量的非人脸窗口,整个人脸检测器由多级子分类器(组)级联而成,每个子分类器对应一个Haar-like 矩形特征.检测器对输入的待检测窗口进行逐级检验,如果其中的某一级子分类器将其判断为非人脸,则立即筛除,不再进行检测.而且,在检测不同大小的人脸窗口时,并不对人脸窗口进行缩放,而是变换各个分类器的尺度和阈值,从而大大缩短了检测时间.后来,Rainer 等人扩展了Harr-like 矩形特征,增加了倾斜特征,如图2所示,进一步提高了人脸检测效果.

2 本文算法

现有的很多算法在复杂环境下人眼定位不准确,或在人眼定位后,精确的人眼位置还需要对眼球的位置做进一步的修正,为此,本文提出了一种改进算法,通过构建一个基于AdaBoost 算法的多姿态人眼强分类器实现对人眼的一步定位.

基于AdaBoost 算法的分类器效果与样本的选择、训练级数有重要关系[2].假设P 为训练级数,S 为样本的数量,ε 为错误率,D 为分类器的检测率,则它们存在如下关系:

1)在P 不变的情况下,S 增加,分类器最终ε 降低;

2)S 不变,P 增加,分类器的检测率D 缓慢降低,ε 迅速降低;

3)S 不变,P 增加到一定大小,分类器无检测效果.

根据这样的关系,本文设计的多姿态单眼强分类器中P 为10 级,样本为2 200 张多姿态、不同光照及噪声情况下的人眼图像,通过训练得到人眼强分类器.

有些学者对双眼分类器做了研究,但是双眼强分类器在姿态上不能很好地适应上下、左右偏转等情况,并且降低了检测的效率.而训练多姿态单眼强分类器能够很好的适应较大幅度偏转的人眼检测.为了进一步提高检测效率,本文根据人眼在人脸图像中的分布缩小检测范围,但为了保证适应多姿态人眼不被漏检,设定脸部图像高度的1/5 到1/2 处为检测区域,并将检测得到的人眼用矩形框标出.

在得到了眉毛下面的矩形眼睛区域后,不能简单地把矩形中心定为人眼中心位置,因为矩形的中心不一定是人眼的瞳孔位置,还需要进一步精确定位人眼位置.文献[13]对灰度图像中的眼睛特征进行了深入研究,眼睛部分具有以下特征:1)眼睛局部范围内灰度值一般低于背景灰度,表现为中间瞳孔部位黑而两边白;2)眼睛边缘灰度值变化较剧烈;3)眼睛内部瞳孔区域灰度变化缓慢.根据这些特性,本文通过搜索眼睛图像区域内的最大连通域,标出其最大连通域的中心位置来确定瞳孔的位置.

本文算法的流程图如图3所示,具体算法过程分为3 步.1)基于AdaBoost 的人脸定位

图3 算法流程图Fig.3 Flow chart of the algorithm

图4 人眼粗定位示意图Fig.4 Diagram of preliminary eye localization

人脸定位是人眼定位的前期工作,本文首先采用OpenCV 自带的人脸分类器在整个图像范围内搜索到人脸区域,然后将检测到的人脸用矩形框标出,得到人脸检测窗Wf.由于在人脸识别时,原始图像的整个区域都会被扫描,70%~80%的非人脸区域在筛选式级联的前两个节点被拒绝,每个节点使用大约10 个决策树,因而能够快速得到准确的人脸区域(Wf),如图4(a)所示,为下一步人脸区域内粗定位人眼提供了较好的支持.

2)人脸区域内的人眼粗定位

根据人眼在人脸中的位置分布缩小搜索范围来粗定位人眼位置,同时为了适应各种姿态变化引起的人眼位置偏差,本文将人眼检测范围约束到人脸窗口的上半部分,即多姿态人眼强分类器通过检测人脸区域(Wf)上半部分得到人眼区域(We),如图4(b)所示,大小为m×n,并定义We为感兴趣区域(ROI).

3)基于最大连通域的人眼精确定位

连通域一般是指图像中具有相同像素且位置相邻的前景像素点组成的图像区域.本文采用基于形态学的方法来提取ROI 区域中的连通域,然后找出面积最大的连通域,最大连通域的中心即为精确的人眼位置.

为了验证在多姿态、不同光照下得到的人眼图像的最大连通域中心位置即是人眼的中心位置,本文对大量样本图像及非样本图像进行了实验研究分析,部分实验结果如图5所示,其中,图5(b)左边的图像为16个连通域,右边为8 个连通域,眼球中瞳孔所在的连通域是最大的,如图5(c)中“+”位置即为精确的人眼位置.实验结果表明,算法得到的人眼中心位置和实际相吻合.

图5 提取人眼ROI 区域内最大连通分量中心位置示意图Fig.5 Diagram of extracting the center of the largest connected regions in the ROI

3 实验结果与分析

本文算法采用VC 6.0+OpenCV 1.0 予以实现.

考虑到依据眼睛特征进行人眼定位的过程中容易将眼睛定位到眉毛或者睫毛,且在不同分辨率图片中人眼的大小不一样,同一图片中因人的位置不同眼睛大小也不同,因此本文在训练分类器时建立了一个包含2200 张人眼正样本和900 张非人眼的负样本的样本集.样本为20×10 像素、39×19 像素、42×24 像素、45×21 像素、76×38 像素、84×36 像素等不同大小眉毛以下的人眼区域图片.正负样本为从ORL 和Yale 人脸库中不同光照、轻微遮挡以及存在噪声等条件下的人脸图像上截取的人眼图像,同时加入了一些来自摄像头(HYC-W280)实拍的图像.部分人眼样本如图6所示,部分非人眼样本如图7所示.

图6 部分人眼样本Fig.6 Samples of eye

图7 部分非人眼样本Fig.7 Samples of negative eye

所有在人眼强分类器中进行训练的正负样本的描述文件都是通过ObjectMarker 获得.ObjectMarker 是一款专门用来训练分类器时生成样本描述文件的工具软件,其优点是在获取正负样本图像的过程中可以移动、缩小、放大等,这样就能够更准确地得到人眼样本图像及图像的描述信息,并自动生成样本描述文件.通过正负样本的描述文件在OpenCV 中自带的Haar 训练器训练得到人眼强分类器,能够在人脸范围内较为精确地找到眉毛以下的眼睛位置,效果如图4所示.

本文算法在自建的综合人脸图片库进行了大量验证,然后分别在ORL 和Yale 人脸库中实验并与文献[3]算法结果进行了比较,如表1所示,从表1 可以看出,本文算法对光照、多姿态等复杂环境有更好的鲁棒性,定位的精度和准确率都有一定程度的提高.

表1 人眼精确定位算法结果比较Tab.1 Results comparison of eye localization algorithms

4 结束语

本文算法充分利用了人眼局部图像的信息快速实现了人眼的准确定位,与现有算法相比,眼睛定位的精度和速度都有一定程度上的提高,且在低分辨率、侧光、多姿态等复杂环境下具有更好的鲁棒性.不足的是,当在低分辨率的视频图像中出现多个人脸时,定位的速度和准确率均有所下降,特别是对那些瞳孔不太明显的眼睛块会出现漏检现象,因此对低分辨率的多人眼视频图像中的人眼准确定位还需进一步的研究.

[1]曹 林,杜康宁.基于加权PCA 的人眼定位算法[J].北京信息科技大学学报:自然科学版,2010,25(3):52-55.

[2]刘 艺,龚卫国,李伟红.双层结构AdaBoost 健壮分类器用于人眼精确定位[J].计算机应用,2008,28(3):801-803.

[3]余龙华,王 宏,钟洪声.人眼检测及瞳孔定位[J].计算机工程与应用,2013,49(3):186-189.

[4]郑玉铎,田杨萌,靳 薇.基于AdaBoost 和ASM 算法的人眼定位[J].北京信息科技大学学报:自然科学版,2013,28(3):73-76.

[5]杨定礼,张宇林,周红标,等.人眼定位与AdaBoost Gabor 滤波的人脸检测算法[J].计算机应用研究,2014,31(7):2021-2029.

[6]谭台哲,叶 青.基于形态学商模板的人眼定位方法[J].计算机应用与软件,2015,32(1):194-198.

[7]KUMAR V,MEHTA M.Face recognition using line edge map[J].Int J Multidiscipl Curr Res,2014,7(2):59-61.

[8]车 昊,黄 磊,刘迎建,等.一个基于多层结构的快速眼睛定位算法[J].中国图象图形学报,2008,13(3):472-479.

[9]WEN G,BO C,SHAN S G,et al.The CAS-PEAL large-scale Chinese face database and baseline evaluations[J].IEEE Trans Syst,Man Cyber,A:Syst Humans,2008,38(1):149-161.

[10]李爱平,魏 江,郝思思.基于灰度投影与改进Hough 变换的人眼定位算法[J].电子设计工程,2014,22(16):171-173.

[11]黄增喜,张海军,李一波,等.一种快速的自动人眼定位方法[J].计算机工程与应用,2011,47(7):183-186.

[12]张江鑫,谢 晋,邝万坤.基于人脸五官特征的空域差错掩盖算法[J].中国图象图形学报,2013,18(8):913-918.

[13]张 铮,王艳平,薛桂香.数字图像处理与机器视觉[M].北京:人民邮电出版社,2010.

猜你喜欢
人眼人脸分类器
有特点的人脸
一起学画人脸
人眼X光
人眼为什么能看到虚像
三国漫——人脸解锁
基于实例的强分类器快速集成方法
闪瞎人眼的,还有唇
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
看人,星光璀璨缭人眼