朱真真,王 伟,段晓东,王存睿
(1.大连民族学院 大连市民族文化数字技术重点实验室,辽宁 大连116605;2.北方民族大学 计算机科学与工程学院,宁夏 银川750021)
眼部状态检测技术可应用于人类面部表情分析、心理分析、人机交互等社会生活的各个方面。例如,通过检测人眼开合程度、眨眼次数等眼部状态信息,可以反映出驾驶员的疲劳状况[1-6],防止意外交通事故的发生。在活体检测中,也可将检测出的眼睛状态变化情况作为判别依据。
眼睛状态检测方法主要可分为基于眼睛模板、外形和特征三种方法。基于模板的眼睛状态检测方法,采用动态或通用眼睛模板匹配搜索眼睛位置的感兴趣区域(ROI),进而对人眼状态进行判别;基于外形的眼睛状态检测方法[7]利用眼睛的几何形状对眼睛状态进行检测;基于特征的眼睛状态检测方法[8-9]通过提取眼睛的图像特征如眼睛颜色特征、眼睑形状、瞳孔密度、灰度分布特征、虹膜边缘等特征作为识别依据,对眼部状态进行检测。刘志波等提出了用多种方法组合对眼睛状态进行检测[10],李英[11]等人也提出将灰度模板方法、Fisher 方法、投影法、识别上眼睑的方法以及Hough 变换[12-13]的方法相结合,用来检测眼睛状态。上述方法虽然提高了抗光照影响力和检测的准确率,但由于计算的复杂度较高,很难达到实时性检测的要求。
可见光采集眼部图像时易受外界光线变化影响,因此图片需要进行预处理。光照预处理算法虽然能在一定程度上消除光照的影响,但也会损失部分图像信息。使用红外摄像头采集的人眼近红外图像受光照的影响较小,可使用微软公司Kinect 传感器的红外摄像头采集人脸区域中的眼部图片。文章提出了一种基于Kinect 的人眼实时状态检测方法。利用Kinect 采集人脸红外图像,通过对眼部区域的定位,提取该区域的Haar - like特征作为特征向量,利用机器学习算法对手工标定的大量人眼状态数据集进行学习,进而构建人眼状态的实时检测系统。
利用Kinect 设备采集了39 名测试者的375段彩色图像流、红外视频流和人脸网格数据作为研究人眼状态的数据集。为了加强对戴眼镜眼睛状态的识别,在数据集中采集了大量戴眼镜样本。数据样本包含正常睁眼、闭眼、仰视、俯视、斜视、眯眼等不同眼睛状态。由于民族、性别和个体之间的差异使得眼部特征也存在差异性,所以实验中还采集了不同民族、不同性别和不同眼部区域大小的样本,用来完善数据集。通过对眼部区域进行人工标定构建形成人眼状态数据集,样本采集中的部分图片数据如图1。
利用人脸网格对眼睛区域进行定位。Kinect可通过主动红外对人脸进行快速检测和特征点定位[14]如图2,Kinect 通过追踪技术自动检测出人脸位置,采用区域生长法从具有彩色信息的深度图像中自动分割出完整的人脸区域,然后利用移动最小二乘法对人脸图像进行滤波,并采用最近点迭代算法对人脸进行特征点定位,获得三维人脸网格确定眼睛位置,具体流程如图2。
眼部区域定位是判断眼睛状态的关键。三维人脸网格特征点定位可以确定上下眼睑和内外眼角的位置信息,实验中利用这4 个坐标位置确定眼部区域,并获取红外图像、彩色图像和深度图像等区域的信息。实验中区域选取的误差将导致状态识别出现误差,由于人脸网格会随人脸运动的变化而变化,所以头部姿态变换也是影响人眼区域选取的一个重要因素。因此将人脸头部姿态也作为人眼区域的特征向量,进而提高眼睛状态识别的准确率。
图1 部分人脸数据库的样本图片
图2 眼部区域定位流程图
Haar-like 特征由于执行效率高且模板丰富通常被用于人脸检测等领域[15-16]。根据眼部结构特征,利用图3 的6 个Haar -like 矩形特征作为眼部区域的特征模板,通过构建特征向量描述9 种眼部基本形态。其中,模板A、B 可描述眼球在左、右和上、下位置时的灰度值变化;C、E 可描述眼球在水平方向和垂直方向上灰度值的变化情况;D、F 可描述眼球左下、右上、左上、右下和正中时的眼睛状态。
图3 Haar-like 的六种矩形特征模板
利用Kinect 采集的眼部区域红外视频流和头部姿态角度特征构建了人眼状态检测数据集。训练集涵盖9 种眼部状态共3800 帧人眼状态数据。实验中,根据每个模板各自的特点依次计算出相应模板的Haar-like 特征值,得出每个Haar -like 特征对人眼状态的敏感程度。选取其中敏感程度较高的特征模板作为弱分类器,并将它们组合为强分类器,利用决策树C5.0 对数据集进行机器学习。
实验的硬件环境为Intel(R)core(TM)i3 -3240 CPU@ 3. 40GHZ6G 内存,软件环境为windows7、vs2010。实验时从人眼特征数据库中选取3800 帧图像数据作为实验样本,其中3400 帧作为训练集,400 帧作为测试集。首先利用单个Haar-like 特征模板分析Haar-like 特征的识别效果,然后将所有Haar-like 特征作为特征向量进行机器学习,最终得出眼睛状态的识别结果。经测试得,该算法可满足实时检测眼睛状态的要求,判断的准确率见表1。
表1 测试结果
使用单一模板C、E、F 时,系统识别的准确率已达到或接近90 %;使用模板A、B、D 虽然识别的准确率较低,但对于仰视、侧视、眯眼等状态识别较好。使用多个Haar-like 模板作为人眼特征向量进行机器学习时预测的准确率达到97 %,高于其他任何单一模板的准确率,并且能够实时检测人眼平视、侧视、仰视、眯眼等眼部状态。
同时系统本身也存在着一定的局限性,如测试者大幅度歪头、侧脸、低头时将导致眼睛区域定位错误,进而降低识别率。区域定位错误而导致误判的典型情况如图4。此外,当测试者所戴镜框的颜色较深时也会导致圈定的眼部范围过大或过小,从而导致识别错误。经测试得,系统以每秒30 帧的速度对人眼状态进行检测,其中单个状态识别的平均速度为4 ms,满足实时性检测的要求。
图4 特殊情况下的测试者眼睛定位样本图片
文章提出一种基于Kinect 的人眼状态实时检测的方法。实验中通过Kinect 采集红外图像和人脸网格数据,利用人眼区域的Haar -like 特征和头部姿态数据,构建数据集并进行机器学习,通过分类器得出分类规则,研究了利用单一模板时,Haar-like 特征的识别效果和每个特征模板适于识别的状态,最终将多个特征结合起来,使人眼状态识别的准确率达到97 %。文章在最后论述了系统的使用条件和范围,研究并列举了出现错误识别的原因,最终构建了一个基于Kinect 的人眼状态实时检测系统。
[1]成波,张广渊,冯睿嘉,等. 基于眼睛状态识别的驾驶员疲劳实时监测[J]. 汽车工程,2008 (11):1001 -1005.
[2]余丹炯. 驾驶困倦预警系统中眼部状态识别技术的研究[D].南京:河海大学,2007.
[3]曹永. 驾驶员眼睛开闭状态计算机图像识别技术开发[D].青岛:青岛大学,2011.
[4]吴文娴. 基于被动视觉的机车驾驶疲劳实时检测系统的研究[J]. 铁路计算机应用,2011(02):5 -9.
[5]TIAN Z C,QIN H B. Real -time driver eye status detection[C]∥Proceedings of International Conference on Vehicular Electronics and Safety. Xian China :IEEE Press,2005(10):285 -289.
[6]HONG T Y,QIN H B,SUN Q S. An improved real time eye status identification system in driver drowsiness detection[C]∥Proceedings of International Conference on Control and Automation. Guangzhou China:IEEE Press,2007(5):1449 -1453.
[7]张建明,汪大庆. 基于AdaBoost 算法的多姿态人脸实时视频检测[J].计算机工程与设计,2010.
[8]曹倩霞,罗大庸,李顺. 基于眼睛特征跟踪的眼睛状态跟踪[J]. 计算机测量与控制,2007(12):1794 -1797.
[9]张文聪,邓宏平,李斌,等. 基于径向对称变换的眼睛睁闭状态检测[J]. 中国科学技术大学学报,2010(05):460 -465.
[10]刘志波,周石琳,张官亮,等. 一种眼睛状态检测的组合方法[J]. 现代电子技术,2013(08):101 -108.
[11]李英,赖剑煌,阮邦志. 眼睛状态检测的组合方法[J]. 中国图象图形学报,2003(10):39 -44.
[12]曹菊英,赵跃龙. 基于水平投影和Hough 查找圆法的人眼状态识别研究[J]. 科学技术与工程,2007(9):1969 -1971.
[13]向淑兰,犹轶. 径向对称和圆形霍夫相结合的眼睛状态识别[J]. 光电工程,2011(05):133 -138.
[14]孟春宁. 人眼检测与跟踪的方法及应用研究[D].天津:南开大学,2013.
[15]刘晓克,孙爓华,周永霞.基于新haar-like 特征的多角度人脸检测[J].计算机工程,2009,35(19):195 -197.
[16]陈勇飞,刘新明.基于肤色和类haar 特征的人脸图像的人眼检测[J].计算机工程与应用,2008,33:174 -176.