基于图像灰度特征的人眼定位及状态识别

2018-03-21 09:27田全王蕴哲
电脑知识与技术 2018年3期

田全 王蕴哲

摘要:针对眉毛和眼镜框等区域对人眼定位造成较大影响的问题,根据人眼周围区域各部位灰度值变化特征,提出了一种新的人眼定位及开闭状态识别算法。该算法利用AdaBoost算法对人眼进行粗定位,通过图像水平积分法,根据积分极值点特征完成人眼特征的精确定位,实现人眼部位条状区域的分割。最后利用投影法得出人眼的开闭状态。实验结果表明,该文提出的方法能够有效准确的实现人眼部位的精确定位,对人眼开闭状态识别率能够满足实际需求,且对图像中的各种干扰因素具有较强的鲁棒性。

关键词:人眼定位;人眼状态识别; AdaBoost算法;水平积分投影法

中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2018)03-0170-03

Abstract: Aiming at the problem that eyebrow frame and other areas have great influence on human eye location, a new eye location and state recognition algorithm is proposed Based on the change of gray value in different parts of the human eye. The algorithm uses AdaBoost algorithm to locate the human eye roughly, and completes the precise location of human eye Based on the integral extremum point feature by image horizontal integration method, and realizes the segmentation of human eye part. Finally, by using the projection method of opening and closing state of the eye. Experimental results show that the proposed method can accurately and accurately locate human eyes, and it can meet the actual demand of human eye opening and closing state, and is robust to all kinds of interference factors in images.

Key words: eye location; eye state recognition; AdaBoost algorithm; projection method

1 概述

在車辆辅助驾驶系统中,人眼作为人脸特征的关键特征,其定位精度和开闭状态判断的准确度直接影响系统对于驾驶员行车过程中分神或者疲劳状态检测的准确性[1]。目前人眼定位算法已较成熟,常用方法有以下几种:一是基于形状的人眼定位方法,如Hough变换法,利用瞳孔或虹膜的圆形特征,以眼睑或眼角的几何特征加以辅助,能够实现人眼的精确定位[2]。该方法常用于安检口身份验证及手机解锁等场合,通常需要指定被测者头部保持固定的姿势,同时,该方法对测量设备精度要求较高,相应的增加了测量成本,同时,在被测者半闭眼或者完全闭眼情况下,无法完成人眼的定位;二是基于模板匹配进行人眼定位,该方法利用选定的模板图像与待测图像各区域进行比较,选出相似度最高的区域作为匹配结果[3]。其优点是原理简单,操作便捷,缺点是由于每次匹配需要对图像进行全局扫描,计算量较大,难以满足实时检测需要,同时算法对头部运动以及光照变化等因素的鲁棒性较差;三是基于图像的色彩、频域、纹理等特征,结合机器学习算法,通过样本训练得出的人眼定位决策模型完成定位。然而,该方法受限于样本数量和样本多样性的影响,且在图像中存在眼镜镜片反光、光照较暗等影响因素下,极易发生误定位。

针对目前人眼定位算法存在的缺陷,本文提出了一种新的人眼定位方法。该方法首先利用AdaBoost算法得到图像中人眼区域的大致定位,对已得到的眼睛区域图像进行水平灰度投影,根据不同区域的灰度特征排除干扰区域,得到人眼条状区域;利用大津法[4]选取自适应阈值对人眼条状区域进行二值化,最终利用二值化图像的投影区域宽高比作为判定标准,实现人眼开闭状态的检测。实验结果表明该方法能够避免眼镜框、眉毛等区域对人眼定位造成的干扰,有效提高了人眼定位与开闭状态检测的准确率。

2 基于灰度特征的人眼定位算法

2.1 AdaBoost算法原理

AdaBoost算法是由Freund和Schapire提出的一种迭代机器学习方法。算法的核心思想是从一系列弱学习算法出发,通过迭代,得到一系列弱分类器,将这些弱分类器进行加权组合,得到一个强分类器,从而实现将弱学习算法提升(Boost)为强学习算法的目的[5]。

算法的具体实现原理[6]是:对于一个给定的训练样本数据集,

对于后续迭代,基本分类器在样本训练集上的分类误差率为

其中,表达式的值当时为1,当时为0,从而得到每次迭代后更新数据训练集的权值分布为

由分类器的线性组合得到最终分类器:

利用AdaBoost算法得到的人眼区域粗定位图像如图1所示,可见图像中含有许多干扰因素,需要进行后续处理加以排除。

2.2 基于图像灰度特征的检测原理

大量实际检测数据表明,基于AdaBoost算法得出的人眼粗定位图像在图像x轴方向定位较准确,而在y轴方向容易受眉毛、头发、眼镜框和眼镜表面反光的影响,导致定位出现偏差。因此,在AdaBoost算法定位基础上,对人眼区域沿y轴方向周边区域对图像的灰度特征进行了分析,利用各部位灰度特征的不同对图像加以区分,从而实现人眼区域的再定位。

考察人眼部位图像的灰度值特征,发现人眼部位图像灰度值明显低于其周边图像灰度值。对图1中的图像进行水平灰度积分投影,并计算积分图曲线中的极小值位置,则人眼部位在图像中的y轴坐标必然对应于其中某个极值点。然而,由于图像中眉毛、眼镜框等部位也在水平积分图中体现为极小值点,同时,受到图像本身存在的光照不均、镜片反光、图像噪声等诸多因素影响,积分图的极值点序列中必然存在大量冗余极值点。如图2所示,本文采用如下算法,定位人眼部位对应的极值点。

首先,对于对应行灰度值过低或过高的极值点加以排除。根据经验可知,灰度值过低区域极值点通常位于头发区域,而灰度值过高区域极值点往往位于人眼下方皮肤部位,本文根据实际检测总结,排除掉灰度值高于图像行灰度值积分平均值1.1倍的极值点和低于0.35倍的极值点。

对于因图像噪声或光照不均产生的冗余极值点,在图像中通常呈密集分布的状态,采用从上至下对极值点搜索合并来排除这类极值点。实现方法为:从图像最上方的极值点开始,向下搜索k行范围内距离最近的极值点(这里k值根据经验取10),比较两個极值点对应行的水平灰度积分值大小,取较小值所在行作为新的比较基准值,并继续向下进行迭代搜索。由于实际情况中,人眼、眉毛、眼镜框等关键部位的灰度值积分均小于其他部位灰度值积分,所以该搜索方法能够在不丢失关键极值点数据信息的前提下,实现冗余极值点的合并。

对于一些孤立的冗余极值点,按照上面的搜索方法难以进行排除,这类冗余极值点通常由于图像噪声干扰产生,在图像的积分图中呈现尖刺状,灰度值变化趋势不连续,其上下两行灰度积分图的二阶差分值不相等,利用该特点,能够排除这类极值点。

如图3所示,为去除冗余极值点后的剩余极值点位置,集中在眉毛和眼镜框位置。其中,眉毛区域的灰度值积分通常低于眼睛区域的灰度值积分;而眼镜框所在位置的灰度值积分根据眼镜框颜色不同,可能低于也可能高于人眼区域;而其余极值点位置的灰度值均高于人眼区域。根据这一灰度值特征,按照如下方法得到人眼区域对应极值点:

(1) 若仅存在一个极值点,则认为该点为人眼极值点;

(2) 若存在两个极值点,则取下方极值点为人眼极值点;

(3) 若存在多个极值点,则先剔除最上方极值点后,计算每个极值点对应行临近上方和下方共4行灰度值积分的和,取该值最低的位置作为人眼区域位置。

如图4所示,为人眼部位极值点对应行扩展后的条形区域,对该图进行大津法二值化,并计算二值图像的水平投影高度h和竖直投影宽度l的比值作为人眼开合度的判断标准,人眼开合度可以表示为:

其中, 为人眼条形图像的水平竖直投影的宽高比, 分别为人眼完全睁开和闭合时的宽高比。这里判定阈值取经验值0.4,大于该阈值时认为人眼处于睁开状态,小于该值时认为处于闭眼状态,从而实现了人眼的定位与开闭状态判断。

3 实验

为了验证本文算法对于人眼定位及开闭状态识别算法性能,根据环境光照强弱和是否佩戴眼镜的区别,分别验证了白天不戴眼镜、白天戴眼镜、傍晚不戴眼镜、傍晚戴眼镜4段视频共1967帧图像的检测效果,视频采用红外摄像头进行拍摄,帧速率为30FPS,分辨率为640*480,表1所示为不同状态下人眼定位结果,并与只采用AdaBoost算法直接定位的结果进行了对比。

对实验数据进行分析,发现在白天无眼镜状态,由于光照条件较好,图像细节明显,两种方法均有较高的定位准确率;白天有眼镜状态,受到镜面反光影响,AdaBoost方法定位准确率受到较大影响,而本文方法影响较小;傍晚无眼镜条件下,由于光照不足,图像细节变弱,此时眉毛成为主要干扰因素;傍晚有眼镜条件下,两种方法检测准确率都有不同程度的下降。

表2所示为人眼开闭状态检测结果。实验结果表明,本文采用的人眼定位方法和开闭状态检测算法能够满足不同场景下实际应用的需要。

4 结论

提出了一种基于图像灰度特征的人眼定位与开闭状态识别方法。利用AdaBoost算法训练分类器,对待测视频中的人眼区域进行粗定位,由于人眼周围区域各部位在图像中具有不同的灰度值大小与变化状态,利用该特征排除了冗余极值点,得到了人眼区域的精确定位。最后对人眼条形图像求取水平投影和竖直投影,通过计算宽高比确定人眼的开闭状态。实验结果表明,与传统的直接使用AdaBoost算法检测人眼相比,本文方法对于光照不均及眼镜框、眉毛等干扰具有较强的鲁棒性,在图像中存在这类干扰时,本文算法的检测精度有较大提高。在不同视频检测中,本文算法的人眼定位精度达到了84%,人眼开闭状态检测准确度达到了88%,能够满足疲劳检测的精度要求。

参考文献:

[1] Yang M H, Kriegman D J, Ahuja N. Detecting Faces in Images: A Survey[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2002, 24(1):34-58.

[2] Wu Y L, Yeh C T, Hung W C, et al. Gaze direction estimation using support vector machine with active appearance model[J]. Multimedia Tools & Applications, 2014, 70(3):2037-2062.

[3] Mbouna R O, Kong S G, Chun M G. Visual Analysis of Eye State and Head Pose for Driver Alertness Monitoring[J]. IEEE Transactions on Intelligent Transportation Systems, 2013, 14(3):1462-1469.

[4] Otsu N. A Threshold Selection Method from Gray-Level Histograms[J]. IEEE Transactions on Systems Man & Cybernetics, 2007, 9(1):62-66.

[5] G. R?tsch, T. Onoda, K.R. Müller. Soft Margins for AdaBoost[J]. Machine Learning, 2001, 42(3):287-320.

[6] Viola P, Jones M. Fast and Robust Classification using Asymmetric AdaBoost and a Detector Cascade[J]. Advances in Neural Information Processing Systems, 2001, 14:1311-1318.