一种基于眼部状态的疲劳驾驶检测方法
2016-06-07毛须伟景文博王晓曼刘学张姗姗张茂桢
毛须伟,景文博,王晓曼,刘学,张姗姗,张茂桢
(1.长春理工大学 电子信息工程学院,长春 130022;2.长春理工大学 光电工程学院,长春 130022)
一种基于眼部状态的疲劳驾驶检测方法
毛须伟1,景文博2,王晓曼1,刘学1,张姗姗1,张茂桢1
(1.长春理工大学电子信息工程学院,长春130022;2.长春理工大学光电工程学院,长春130022)
摘要:针对传统的疲劳驾驶检测准确率低和实时性差的问题,提出了一种基于眼部状态的疲劳驾驶检测方法。利用CCD相机实时获取驾驶员的脸部图像,采用直方图均衡化增强图像的对比度;通过改进的cascade(Hear分类器)的人脸检测算法检测出脸部区域;利用OTSU阈值分割和形态学运算提取人眼区域,根据人眼的宽高比判定眼睛的闭合程度;依据PERCLOS-P80原理和眨眼频率判断驾驶员的疲劳状态。实验结果表明:改进的人脸检测算法对每帧图像的检测时间约为45ms,在人脸检测速度上提高了2.3倍,为整个疲劳驾驶检测节省了大量的时间。研究疲劳驾驶检测方法检测一帧图像的时间约为65ms,而且在不同的光照强度下的检测均有较高的准确率,满足疲劳驾驶检测对准确性和实时性的要求。
关键词:疲劳驾驶;人脸检测;人眼检测;PERCLOS-P80
随着世界经济的快速发展,汽车的数量越来越多,由驾驶员疲劳驾驶造成的交通事故也越来越多,为了预防交通事故的发生,研究一种能有效检测驾驶员疲劳并及时给出报警的方法有着重要的现实意义。
近年来,对于疲劳驾驶检测技术国内外取得了大量的研究成果。主要方法分为以下几类:彭军强通过检测驾驶员的脑电信号和肌电信号等生理特征判定驾驶员的疲劳状态[1],但该方法需在驾驶员的身上安装相应的设备,影响正常驾驶;Jin L S提出通过检测方向盘的状态来判定驾驶员的疲劳程度[2],但是该方法没有确定的的判断标准,易出现误判或是漏判的情况;Lenskiy基于颜色和纹理特征实现了驾驶员眼部的准确定位和分割[3],但这种方法检测速度慢,难以保证实时性;成波利用多重回归对PERCLOS、平均睁眼程度以及最长闭合时间3个指标进行融合实现了对疲劳状态的检测[4],但该方法检测的准确率低且实时性差。
针对上述方法存在的问题,提出一种基于眼部状态的疲劳驾驶检测方法。通过CCD相机实时获取驾驶员的脸部图像,对图像进行直方图均衡化预处理,增强图像的对比度;该方法通过逐步缩小检测区域进行疲劳检测。首先,利用改进的cascade (Hear分类器)的人脸检测算法检测出脸部区域;然后在脸部区域的上半部分进行人眼检测,并计算眼睛的宽高比,利用眼睛的宽高比衡量眼睛的闭合程度;最后依据PERCLOS原理和眨眼频率进行疲劳判定。该方法能够快速并准确地检测出驾驶员是否处于疲劳状态,适用于对驾驶员疲劳程度的实时性检测。
1 系统检测原理
眼睛的闭合程度和眨眼频率能直接反映一个人的疲劳程度,通过获取驾驶员的眼部状态判断驾驶员是否疲劳驾驶。疲劳驾驶检测系统由CCD相机、图像处理单元和报警单元组成。如图1所示,将CCD相机置于车内的仪表盘附近,实时监测驾驶员的眼部状态,在图像处理单元对图像进行实时处理和检测,如果检测到驾驶员处于疲劳驾驶状态,则报警单元给予警示,避免因疲劳驾驶导致交通事故的发生。
图1 疲劳驾驶检测系统结构图
2 人脸检测和人眼检测
2.1直方图均衡化处理
由于受到光照等天气状况的影响,导致采集到的驾驶员的图像对比度差,影响图像的阈值分割效果,使得人脸检测和人眼检测不准确,为后续驾驶员的疲劳检测带来不便。因此,需要合理的图像增强算法对驾驶员图像进行预处理。
直方图均衡化是图像增强中比较常用方法,与其它方法相比,该方法简单、执行速度快并且能有效的增强图像中目标与背景的对比度,采用直方图均衡化对采集到的驾驶员图像进行预处理。假定图像中的总像素为N,灰度级总数为L个,第k个灰度级的值为rk,图像中具有灰度级rk的像素数目为nk,则该图像中灰度级rk的像素出现的概率为:
对其进行均衡化处理的变换函数为:
图2所示为根据直方图均衡化的原理对获取的图像进行预处理的结果。
图2 直方图均衡化
2.2人脸检测
为了快速并精确的检测人眼,首先需进行人脸检测,采用基于cascade(Hear分类器)的人脸检测算法[5],在图像分辨率为768×576的情况下,检测一帧图像所用的时间为150ms,对人脸进行实时检测的帧频小于7帧/s,不能满足检测的实时性,同时影响后续的疲劳判断的准确性,为了减少检测过程中所花费的时间,对上述算法进行改进和优化,以减少对检测脸部的计算复杂度。
在cascade(Hear分类器)人脸检测算法中,有两个参数将极大地影响计算时间,一个是感兴趣区域(表示为FACE_ROI),另一个是最小搜索窗口(表示为MIN_WND)。在进行第一帧检测时,设置MIN_WND为一个较小的区域,使FACE_ROI覆盖整个图像,对人脸进行检测并用矩形框标示出脸部区域。在正常驾驶的过程中,驾驶员的面部不会发生迅速的移动,实时获取的图像也不会发生急剧的变化,因此,在后续的人脸检测过程中,可将上一帧检测到脸部区域按照一定比例分别进行扩展和缩小,并将扩展后的脸部区域作为本次检测的FACE_ROI,将缩小后的脸部区域作为本次检测的MIN_WND,经过反复试验得出:综合考虑到检测的精度和速度,通常将扩展倍率设置为5/4,缩小的倍率设置为4/5,如果没有检测到脸部,对FACE_ROI进行进一步的扩展,并对MIN_WND再次缩小直至脸部被检测到或是区域扩展和缩小达到边界为止。利用该方法对人脸进行检测的流程如图所示,经过试验得到:该方法检测一帧图像所用时间为45ms,极大提高了脸部检测速度。
图3 人脸检测流程
如图4所示为使用改进后的算法在不同光照强度下的人脸检测的结果,图4中的(b)为在正常光照下的人脸检测结果,(a)为在强光下的人脸检测结果,(c)为在弱光下的检测结果。
图4 不同光照条件下的人脸检测结果对比
2.3眼部特征提取
在进行人眼检测过程中,可缩小检测区域,在已检测出的人脸区域的上半部分进行人眼检测。首先采用最大类间方差(OTSU阈值法)对图像进行分割,分离出头发、眉毛和眼睛等特征区域。
设图像的灰度值为0~m-1级,用T将其分成两组C0={0~T-1}和C1={T~m-1},C0产生的概率为ω0,C1产生的概率为ω1,C0的像素平均值为μ0,C1的像素平均值为μ1。
全部采样的灰度平均值为:
两组间的方差用下式求出:
从1~m -1之间改变T,求上式为最大值时的T,即求max δ2(T)时的T∗值,此时,T∗便是阈值。
按照上述原理将人脸的上半部分进行OTSU阈值分割后,头发、眉毛、眼睛等被分割出来,如图5所示为分割效果。
图5 图像OTSU阈值分割
形态学中的开运算能去掉边缘的毛刺突起,去除点和细线的干扰。因此对分割后的图像做形态学开运算处理,使已分离的各部分特征更加清晰,处理后的图像如图6所示。
图6 图像的形态学运算处理
通过上图可知:经过形态学运算处理后的人眼和眉毛等区域边界更加平滑,皮肤纹理、眉毛等毛刺突起基本消除,人眼图像的形态学处理更有利于人眼状态的检测。
2.4眼睛闭合程度判断
眼睛的闭合程度主要是通过眼睛的高度[6]或宽高比来衡量的。但由于人眼的大小不尽相同,同时图像的分辨率和像素大小等因素也会影响到眼睛高度的判定,因此通过人眼的高度判定驾驶员的疲劳状态在严重干扰情况下误差较大,存在一定的局限性。经过大量的实验统计得知:当人眼完全睁开或闭合时眼睛的宽高比稳定在较小的范围,且不易受到其他客观因素的影响。采用积分投影法计算人眼的宽度和高度,根据人眼的宽高比判定眼睛的闭合程度。
积分投影是自动定位特征时常用的一种技术。设G(x,y)表示图像在(x,y)处的灰度值,在图像[y1,y2]区域的水平积分投影表示为:
在图像[x1,x2]区域的垂直积分投影表示为:
首先,对人脸上半部分的图像作水平积分投影如图7所示:
图7 水平积分投影示意图
由图7可以看出:最下面的波谷对应眼睛在垂直方向上的位置(即纵坐标y),波谷的高度H即为眼睛的高度,上下两个波谷之间的距离h为眉毛与眼睛之间的距离。为了避免水平积分投影时眉毛和头发的影响[7],将区域进一步缩小,在人脸的上半部分区域取一个以y为中心,高度为h的条形区域,在该区域内作垂直积分投影,投影曲线如图8所示。
图8 垂直积分投影示意图
如图8所示,由垂直积分投影曲线可以得到人眼的宽度W,计算人眼宽高比就可以判定人眼的闭合程度,人眼的闭合程度(The Closure Of Eye)可表示为:
由于不同驾驶员的眼睛形状存在差异,在不同光照、天气等情况下眼睛的状态也不尽相同,直接采用TCOE判断驾驶员的疲劳程度会增加判定的虚警率。假设驾驶员初始状态是清醒的,此时眼睛的闭合程度为TCOEinit,将TCOE进行修正:
根据修正后TCOE的阈值判定眼睛的闭合程度,有效的减少了眼睛形状和外界条件的影响,提高了判定的准确率。若人眼闭合80%时的TCOE的阈值用ThreshP80表示,则人眼的闭合状态可根据下式判断:
通过对大量人眼图像的训练统计得知:当人眼的闭合程度大于80%时,修正后TCOE的值大于4,故可将ThreshP80设定为4。
2.5眨眼频率
眨眼频率是指单位时间内眨眼的次数。眨眼频率能在一定程度上反映驾驶员疲劳程度。如果上一帧图像人眼的TCOE≤ThreshP80,而当前帧图像人眼的TCOE≤ThreshP80,即视为一次眨眼过程;或者上一帧图像人眼的TCOE≤ThreshP80,而当前帧图像人眼的TCOE≤ThreshP80,同样也视为一次眨眼过程。
由于正常人每分钟的眨眼次数在15~30次/分钟,如果眨眼频率小于15次/分钟,则有可能是驾驶员在一段时间内处于闭眼状态,或者是在发呆、走神等等,也是疲劳的征兆;如果眨眼频率大于30次/分钟,则有可能是人眼在受到强光或风吹的影响时,会出现快速眨眼的应激反应,不能判定为疲劳状态。如图9所示为眨眼频率比值与疲劳关系。
图9 眨眼频率比值与疲劳关系
3 疲劳判定
PERCLOS(percentage of eyelid closure)为眼睛闭合程度超过某一阈值的时间占总时间的百分比。PERCLOS方法是当前主流的驾驶员疲劳状态判断方法[8,9]。PERCLOS原理中的P80标准认为眼睛闭合超过80%则认为眼睛处于闭合状态。PERCLOS-P80的测量原理[10]如图10所示,图11为眼睛睁开程度示意图。
图10 PERCLOS测量原理
图11 眼睛睁开程度示意图
如图10所示,纵轴表示的是眼睛闭合的程度,横轴表示时间,t1是眼睛从完全睁开到20%闭合所用时间,t2是眼睛从完全睁开到80%闭合所用时间,t3是眼睛从完全睁开到下一次80%闭合所用时间,t4是眼睛从完全睁开到下一次20%闭合所用时间。计算眼睛闭合时间所占百分比,即PERCLOS的值f:
若在某段时间采集的图像帧数为N,其中眼睛闭合程度大于80%的帧数为K,则PERCLOS值f为:
依据PERCLOS-P80标准判别驾驶员的疲劳状态,通过大量实验得出:当驾驶员处于清醒状态时,f值绝大多数大于0.18;当驾驶员处于疲劳状态时,f值绝大多数小于0.18,因此可将f=0.18定义为疲劳判定的阈值。人眼在受到强光或风吹的影响时,会出现快速眨眼的应激反应。在这个过程中,f值很可能超过阈值,但这种异常情况并不是由驾驶员疲劳导致的,此时系统会出现误判的情况,针对这种情况,引入眨眼频率辅助PERCLOS-P80标准进行疲劳程度判断。
为了避免因人眼的应激反应导致的误判,可首先计算眼睛的PERCLOS值,如果由PERCLOS值判定驾驶员处于疲劳状态,此时对眨眼频率进行判定,若频率大于30次/分钟,则判定该情况为应激反应而非疲劳状态;若频率小于30次/分钟则判定为疲劳状态。
在眼睛定位出现错误或跟踪眼睛丢失时或摄像头获取图像失败,都会影响到对眼睛闭合程度和眨眼频率的判定,最终导致对疲劳程度的判定出现偏差,由公式(11)可推导出判定误差为:
其中ΔN为获取图像失败造成的帧丢失数,ΔK为眼睛定位出现错误或跟踪眼睛丢失造成的眼睛检测遗漏或错误的帧数。由公式(12)可知,为了减小疲劳判定误差,提高检测的准确率,应选取性能好、帧频高的相机;进行疲劳判定时应采集尽可能多的人脸图像,并且提高眼部定位和疲劳判定算法的准确性。
基于PERCLOSE-P80标准和眨眼频率的疲劳判断流程如图12所示。
图12 疲劳判断流程
4 实验与结果分析
设计实验模拟驾驶员开车的状态,利用Mikrotron公司的EosensCL型相机获取人脸视频图像并进行疲劳程度的判断,使用的相机分辨率为1280×1024,帧频为500fps,该型号的相机具有图像分辨率高、帧频高的特点,采用该类型的相机采集人脸图像减少了丢帧的可能性,提高了疲劳检测的准确率。为了减少疲劳判定过程中帧丢失带来的误差,依据公式(12)以及其理论分析,并综合考虑实验设计的复杂度,实验过程中采集400帧图像进行统计分析,分别在强光、正常光照和弱光条件下进行实验,并对每组图像进行检测统计。
表1 不同光照条件下人脸检测准确率
对获取的图像进行人脸检测,实验中对采用基于cascade(Hear分类器)的人脸检测算法和改进算法的人脸检测精度和速度进行对比,表1为两种算法在不同光照强度下人脸检测成功率的对比。
由表1可知:两种算法在不同光照情况下的检测成功率基本一致,两者均有较高的检测准确率。
如图13所示为两种人脸检测算法在不同光照强度下的检测时间对比。
图13 两种算法的检测时间对比
由图13可得出:采用传统的基于cascade(Hear分类器)的人脸检测算法检测一帧图像所需的平均时间约为150ms,而改进的人脸检测算法的平均检测时间约为45ms,相比之下,改进的算法检测速度提高了2.3倍,为疲劳驾驶检测节省了大量的时间。
成功检测到人脸以后,对人眼进行检测并判定出眼睛的闭合程度和眨眼频率,如表2所示为在不同光照强度下利用本文算法对眼睛的闭合程度和眨眼频率判定的准确率。
表2 不同光照条件下人眼检测准确率
从表2可以看出:在不同的光照条件下,该算法对人眼的闭合程度以及眨眼频率的判定均有较高的准确率。确保了后续对驾驶员疲劳程度判断的准确性。
如图14所示为在不同光照强度下对人眼的闭合程度和眨眼频率的判定所用时间的对比。
图14 不同光照条件下对人眼的闭合程度和眨眼频率判定时间对比
由图14可知:在不同光照强度下对人眼的闭合程度和眨眼频率的判定所用时间平均值约20ms,能够在较短的时间内完成对人眼的检测及判定,为系统实时检测驾驶员的疲劳状态提供了可靠的保证。
综合以上的实验数据可知:本文提出的疲劳驾驶检测方法对每帧图像的检测时间约为65ms,而且在不同的光照条件下检测均有较高的准确率,满足疲劳驾驶检测对实时性和准确性的要求。
5 结论
本文通过对基于cascade(Hear分类器)的人脸检测算法进行改进和优化,使得人脸检测速度提高了2.3倍,采用PERCLOSE-P80原理并结合眨眼频率对驾驶员的疲劳程度作出判断,依据这种判定方式避免了因驾驶员的应激反应导致的误判现象,提高了疲劳驾驶检测的准确率。通过大量的实验表明:在图像分辨率为1280×1024的情况下,本文提出的疲劳驾驶检测算法对每帧图像的平均检测时间约为65ms,且在不同的光照条件下检测均有较高的准确率。该方法操作简单易于实现,可用于对驾驶员疲劳程度的实时监测。
参考文献
[1]彭军强,吴平东,殷罡.疲劳驾驶的脑电特性探索[J].北京理工大学报,2007,27(7):585-589.
[2]Jin L S,Niu Q N,Hou H J,et al. Driver cognitive distraction detection using driving performance measures[J].Discrete Dynamics in Nature and Society,2012,30(10):1555-1565.
[3]Lenskiy A A,Lee J S. Driver’s eye blinking detection using novel color and texture segmentation algorithms[J].International Journal of Control Automation and Systems,2012,10(2):317-327.
[4]成波,张广渊,冯睿嘉,等.基于眼睛状态识别的驾驶员疲劳实时检测[J].汽车工程,2008,30(11):1001-1005.
[5]Paul Viola,Michael J Jones. Rapid object detection using a boosted cascade of simple features[A]. In:Proceeding of IEEE International Conference on Computer Vision and Pattern Recognition Hawaii:IEEE,2001:511-518.
[6]蒋建国,刘扬,詹曙,等.灰度视频序列中驾驶员疲劳实时检测方法[J].合肥工业大学学报:自然科学版,2008,31(9):1424-1427,1442.
[7]章玲,蒋建国,齐美彬.一种微分与积分投影相结合的眼睛定位方法[J].合肥工业大学学报:自然科学版,2006,29(2):182-185.
[8]董占勋,孙守迁,吴群,等.心率变异性与驾驶疲劳相关性研究[J].浙江大学学报:工学版,2010,44(1):46-50.
[9]郁伟炜,吴卿.基于HMM的驾驶员疲劳识别在智能汽车空间的应用[J].计算机应用于软件,2011,28(10):43-46.
[10]宋正河,周一鸣.基于PERCLOS的机动车驾驶员驾驶疲劳的识别算法[J].中国农业大学学报,2002,7(2):104-109.
A Fatigue Driving Detection Method Based on Eye State
MAO Xuwei1,JING Wenbo2,WANG Xiaoman1,LIU Xue1,ZHANG Shanshan1,ZHANG Maozhen1
(1. School of Electronics and Information Engineering,Changchun University of Science and Technology,Changchun 130022;2. School of Optoelectronic Engineering,Changchun University of Science and Technology,Changchun 130022)
Abstract:According to the problem of low accuracy and poor real-time with traditional fatigue driving detection method,a fatigue driving detection method based on eye state was proposed. Using the CCD camera to capture face image of driver in real time,using histogram equalization to enhance image contrast;The face area was detected by improved face detection method based on cascade;Extracting the eye area with OTSU threshold and morphology operation,The eye closure degree is determined by the aspect ratio of eye;Using PERCLOS-P80 and blink frequency to judge whether Driver is fatigue. Experimental results show that Detecting a frame needs about 45ms with Improved face detection algorithm,The face detection speed increased by 2.3 times,to save a lot of time for the entire fatigue driving detection. The fatigue driving detection method in this paper needs about 65ms per frame,and it has high accuracy at different light intensities,which meets the requirements of the precision and real-time for the fatigue driving detection.
Key words:fatigue driving;face detection;eye detection;PERCLOSE-P80
中图分类号:TP391.41
文献标识码:A
文章编号:1672-9870(2016)02-0125-06
收稿日期:2015-06-15
作者简介:毛须伟(1991-),男,硕士研究生,E-mail:1291056753@qq.com
通讯作者:景文博(1980-),男,博士,副教授,E-mail:wenbojing@sina.com