多算法融合的疲劳驾驶监测算法设计与实现

2016-12-14 07:48陈东伟
太原理工大学学报 2016年4期
关键词:睁眼人眼特征值

陈东伟,张 喆,韩 娜,郭 浩

(1.北京理工大学珠海学院 计算机学院,广东 珠海 519085;2.太原理工大学 计算机科学与技术学院,太原 030024;3.山西省公安厅网络安全保卫总队,太原 030001)



多算法融合的疲劳驾驶监测算法设计与实现

陈东伟1,2,张 喆3,韩 娜1,郭 浩2

(1.北京理工大学珠海学院 计算机学院,广东 珠海 519085;2.太原理工大学 计算机科学与技术学院,太原 030024;3.山西省公安厅网络安全保卫总队,太原 030001)

现实中基于图像处理的疲劳驾驶监测往往因环境的变化而具有不确定性。监测算法不规范,以致于疲劳驾驶监测任务很具有挑战性。为了解决此问题,提出了一种基于多算法融合的动态滑动窗口算法框架。首先利用Adaboost算法识别人眼,然后改进Otsu算法来自适应各种不同环境;进而提出动态滑动窗口算法来得到睁闭眼之间的最佳阈值;最终,利用改进的PERCLOS算法估计疲劳驾驶状态的不同级别。针对环境的变化采用睁闭眼判断窗口随人眼特征变化而更新的策略,系统使用摄像头实时捕获人眼图像,并在PC机上进行仿真测试,可在130~150 ms之间实现不同疲劳状态的识别。实验结果表明,此算法框架能够有效、快速的分辨驾驶员不同的疲劳状态。

Adaboost算法;自适应Otsu算法;动态滑动窗口;PERCLOS算法;人眼检测; 疲劳驾驶

目前较多的交通事故都是由疲劳驾驶而引起的,早期对疲劳驾驶的客观测评主要从医学角度出发,根据驾驶员的脑电波形、心电波形、肌电波形来确定其疲劳程度[1]。然而最稳定和可靠的方法仍然是基于图像处理的人眼监测[2-3]。

研究驾驶员眼睛闭合状态的前提必须要实现人眼定位,而人眼定位方法有很多,基于肤色模型的方法,灰度投影法,基于模板的方法,基于神经网络的方法,基于特征提取法等。VIOLA et al[4]提出了一种基于Haar-Like小波特征的Adaboost[5-7]人脸检测方法,极大的提高了人脸检测速度,成为人脸检测领域的主流方法,而该方法同样适用于人眼定位。

最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称Otsu[8].按图像的灰度特性,将图像分成背景和目标两部分。背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大,类间方差最大的分割意味着错分概率最小[9]。使用Otsu阈值分割算法[10]在一定程度上能有效改善光线带来的影响,增强系统对复杂环境的适应性。

眼睛的状态(如睁闭眼、眨眼、眼动检测或瞳孔反应等)是能够反映驾驶员警觉度的重要信息,且利用眼睛的行为[11]来进行驾驶员疲劳状态的估计是可行的。DINGES et al[12]提出了几种用于疲劳监测的技术指标:眼睛闭合的比例(percentage of eyelid closure time, PERCLOS)[13]和双目眨眼监控[14-15]。

本文以Adaboost算法为核心实现人眼定位,改进Otsu算法来适应不同的环境;然后,提出动态滑动窗口监测算法(Dynamic Sliding Window Detection,DSWD)框架;进而利用改进的PERCLOS算法监测驾驶员的疲劳状态;最终,通过大量的实验验证了提出的算法框架对于疲劳驾驶监测的有效性。

1 方 法

1.1 自适应Otsu算法

由于车内环境的明亮程度有4种情况,其灰度直方图如图1所示:

图1 不同环境下的灰度直方图Fig.1 Gray level histogram under different environments

对于第一种情况,它的图像直方图分布均匀,是最理想的。但是实验中往往得到的图片是后面3种情况,偏暗或偏亮。如果直接用Otsu算法,把空域部分考虑进去,则求出的阈值会有偏差。因此有必要自动获取合适的阈值,使得可以适应环境的变化。采用累加的方法,去除像素值点空域的部分,考虑像素点较多的像素值。这样得出的阈值是较可靠的。改进的Otsu算法如下。

算法1 优化的otsu算法

Input: data(图像数据), rows(图像的高), clos(图像的宽)

Output: otsu-value(最佳阈值)

1) 根据输入的图像,生成归一化直方图

l-hist=histogram(data,rows,cols);

d-hist=histogram-one(l-hist,vmax);

2) 初始化ip-right和p-right

fori=0 to 255 do

ip-right+=i* d-hist[i];

p-right+=d-hist[i];

end for

3)图像出错判断,if p-right==0 then 图像为空,程序退出

4)遍历0~255像素值

fori=0 to 255 do

p-left+=d-hist[i]; if(0==p-left) continue;

p-right-=d-hist[i];if(0==p-right) break;

ip-left+=i* d-hist[i];ip-right-=i* d-hist[i];

end for

ave-left=ip-left/p-left; ave-right=ip-right/p-right;

sigma=p-left * p-right * (ave-left-ave-right) * (ave-left-ave-right);

If(sigma> fmax)

then fmax=sigma and then otsu-value=i;

Return otsu-value

算法2 动态滑动窗口算法

Input: 睁眼和闭眼的特征值average-eye

Output: 人眼的状态,1表示睁眼,2表示闭眼,0表示未知状态(my-eyes-state)

#在程序初始化时,摄像头捕获的第11帧图片到第50帧图片(必须睁眼的),获取每一帧图片的睁眼特征值,再求平均值average-eye

1.2 动态滑动窗口监测算法

系统提取了人眼特征数据后,可以根据睁闭眼特征数据区间的差异来设定固定的阈值,从而判断人是处于睁眼状态还是闭眼状态。

设定固定阈值的人眼状态判断算法描述如下:

人眼特征值记为“TAverage”,固定的阈值记为“F”;

如图2所示,固定阈值的人眼状态判断,当TAverage>F时,为睁眼状态;当TAverage

图2 固定阈值的人眼状态判断Fig.2 Constant threshold for eye status judgment

设定固定阈值的人眼状态判断算法存在一个很明显的缺点,就是当驾驶员和摄像头的距离发生变化时,睁闭眼特征值TAverage会发生改变,睁眼特征值和闭眼特征值同时变大或者变小,造成睁闭眼区间发生改变,而固定的阈值F不再适用。

为了解决这个问题,提出了一种动态的人眼状态判断算法。

图3 动态阈值的人眼状态判断Fig.3 Dynamic threshold for eye status judgment

如图3所示,睁闭眼判断窗口会随人眼特征数据的改变而改变,数据空间会保存指定时间内的睁闭眼特征数据,通过对数据空间求平均值来反馈睁闭眼判断窗口。

当系统突然受到外界环境的影响,人眼特征数据会发生突变,发生突变的数据会影响系统的稳定性。对于该类数据,系统会自动丢弃。算法描述如下。

算法3 动态滑动窗口算法

Input: 睁眼和闭眼的特征值average-eye

Output: 人眼的状态,1表示睁眼,2表示闭眼,0表示未知状态(my-eyes-state)

#在程序初始化时,摄像头捕获的第11帧图片到第50帧图片(必须睁眼的),获取每一帧图片的睁眼特征值,再求平均值average-eye

1) 初始化睁闭眼特征的数据区间

fori: 0 to 9 do

Eye-open-arr[i]=average-eye;

Eye-close-arr[i]=average-eye-2*EYE-PRECISION;

end for

2) 初始化睁闭眼特征平均值

eye-open-state=average-eye;

eye-close-state=average-eye-2*EYE-PRECISION;

3) 初始化 my-eyes-state=0; 返回值设置为未知眼睛状态

4) 根据睁眼区间的平均值,来确定闭眼区间的平均值

If 睁眼区间与闭眼区间重叠

Then eye-close-state=eye-open-state-2*EYE-PRECISION-1;

5) If (average-eye 在睁眼区间内, 即average-eye 大于eye-open-state-EYE-PRECISION 且 average-eye 小于 4*EYE-PRECISION+eye-open-state)

then my-eyes-state=1; 返回值设置为睁眼状态

eye-open-arr[(++eye-open-index)%10]=average-eye; 改变睁眼区间里的值

eye-open-state=平均值(Eye-open-arr, 10); 求平均值

6) else if (average-eye 在闭眼区间内, 即average-eye 小于eye-close-state+EYE-PRECISION 且 average-eye 大于 4*EYE-PRECISION+eye-close-state)

then my-eyes-state=2; 返回值设置为闭眼状态

eye-close-arr[(++eye-close-index)%10]=average-eye; 改变睁眼区间里的值

eye-close-state=平均值(eye-close-arr, 10); 求平均值

7) 返回 my-eyes-state

1.3 PERCLOS人眼疲劳检测法

PERCLOS(Percentage of Eyelid Closure Time),是指利用单位时间内眼睛闭合时间所占比例来判定驾驶员的疲劳程度,是美国联邦公路管理局推荐的人眼疲劳检测方法。

PERCLOS在具体试验中有P70,P80,EM三种测量方式。其中P80被认为最能反映认得疲劳程度[16]。P70表示眼皮盖过瞳孔的面积超过70%所占的时间比例。P80表示眼皮盖过瞳孔的面积超过80%所占的时间比例。Em表示眼皮盖过瞳孔的面积超过50%所占的时间比例。

本项目并没有使用P80,P70,Em等标准作为疲劳判断的依据,而是对PERCLOS标准进行改进,即一定时间内采集一定的帧数,眼睛闭合帧数占总帧数的百分比。

式中,P表示一定时间内眼睛处于闭合状态的帧数占所采集的视频流的总帧数的比例。

系统采集到的每一帧图像数据都可分为开眼状态和闭眼状态两种,根据以上算法可判断出每一帧数据的状态,但是不能只根据当前一帧驾驶员眼睛的状态来判断是否疲劳,需要对一段时间内驾驶员眼睛状态的连续数据进行统计,判断出驾驶员的疲劳状态。改进后的算法连续采集若干帧图像数据,若P大于等于90%,则判断驾驶员为严重疲劳状态,若P处于60%~90%之间,则判断驾驶员为轻度疲劳状态,若P小于60%,则判断驾驶员为正常状态。

2 实验结果分析

本系统算法具有较好的准确度,所花费的时间大概为130~150 ms左右,满足实时性需求。

2.1 理想状态下的结果

图4所示为测试者处于静止状态,人眼与摄像头的距离不变,光线环境没有明显的变化。

图4 理想条件下的睁闭眼特征值统计图Fig.4 Eigenvalue statistical figure for eyes under ideal conditions with fixed threshold and DSWD algorithm

如图4(a),系列1为人眼特征值,图4(b)系列2为人眼状态。其中系列2值为1时为睁眼状态,系列2值为2时为闭眼状态。

如图4(a)所示为采用固定阈值人眼状态判断算法的睁闭眼特征值统计结果,睁眼平均值的范围在12至14之间,闭眼平均值的范围在7至9之间。

如图4(b)所示为采用动态滑动窗口监测算法的睁闭眼特征值统计结果,睁眼平均值的范围在10至14之间,闭眼平均值的范围在6至9之间。

根据图4可得出结论,当测试者处于静止状态,人眼与摄像头的距离不变,光线环境没有明显的变化,使用动态滑动窗口监测算法和固定阈值人眼状态判断算法,睁闭眼特征值变化没有太大的差异。

2.2 真实环境下的结果

图5 真实环境下的睁闭眼特征值统计图Fig.5 Eigenvalue statistical figure for eyes under real conditions with fixed threshold and DSWD algorithm

如图5所示,系列1表示人眼特征值的变化;系列2表示人眼的状态,当系列2值为1时为睁眼状态,系列2值为2时为闭眼状态;系列3表示疲劳状态,系列3数值的大小表现为驾驶员的疲劳的强度。

在图5(a)中,开始时人眼状态为睁眼,睁眼平均值在10至15之间,闭眼平均值在5至8之间,当眼睛向摄像头的方向靠近时(图中为睁眼状态下靠近摄像头),平均值会增大,此时的睁眼平均值在15至20之间,闭眼平均值在8至13之间。而DSWD算法依然判断为闭眼状态,符合实际的情况。

在图5(b)中,开始时的人眼状态、平均值以及疲劳状态都和图5(a)中的值相近,当眼睛和摄像头之间的距离减少时,平均值同样增大,但在出现的闭眼情况时,固定阈值算法判断出来的结果会在睁闭眼之间发生跳动。

上述结果表明DWSD算法能够在真实环境下达到较好的效果。

3 结束语

提出了一个新的算法框架用于实现疲劳驾驶的实时监测。其包含Adaboost算法、改进的Otsu算法、自行设计的DSWD算法和改进的PERCLOS算法。与目前的技术理论相比,本文所提出的算法可以动态适应人眼和摄像头的距离,以及各种不同的环境,因此可以使用与实际的驾驶操作。但系统仍会受到一些外界因素的影响,如周围环境光线,驾驶员戴眼镜以及头部姿态偏转太大等情况。有待在以后改进,进一步提高算法的速度和准确率。

[1] FAN X,SUN Y,YIN B,et al.Gabor based dynamic representation for human fatigue monitoring in facial image sequences[J].Pattern Recogn Lett,2010,31:234-243.

[2] PEARLMAN W A.Image processing by the human eye[J].The International Society for Optical Engineering,1989:1148-1153.

[3] 陈云华,张灵,丁伍洋,等.精神疲劳实时监测中多面部特征时序分类模型[J].中国图象图形学报,2013,18(8):953-960.

[4] VIOLA P,JONES M.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.

[5] XIONG C,XIE M,WANG L.Driver fatigue detection based on adaBoost[J].Advances in Intelligent and Soft Computing,2012,159:13-17.

[6] JIN Y,SU G,WEI L.Implementation of face detecting algorithm of adaBoost based on DSP[J].Comput Eng Design,2008,14:32-35.

[7] ZHANG J,WANG D.Building multi-view real-time video face detection system based on adaboost algorithm[J].Comput Eng Design,2010,31(18):4065-4068.

[8] OTSU N.A Threshold selection method from gray-level histograms[J].IEEE Trans Syst Man Cybern,1979,9(l):62-66.

[9] LIN T,Chen S.Study on the method for driver’s eyes fatigue state detection based on haar-like feature[J].School of Electronic & Engineering,South China University of Technology,2008,25(7):120-124.

[10] YANG J G,LI B Z,CHEN H J.Adaptive edge detection method for image polluted using canny operator and otsu threshold selection[J].Advanced Materials Research,2011,301-303:797-804.

[11] ROBERT J T,ARVOR L R,JAMES R J.Effect of eye enucleation and eyelid closure upon the brain and associated visual structures in the mouse I.A report on degenerative changes[J].Journal of Experimental Zoology,1962,150(3):165-183.

[12] DASGUPTA A,GEORGE A,HAPPY S L,et al.An on-board vision based system for drowsiness detection in automotive drivers[J].International Journal of Advances in Engineering Sciences & Applied Mathematics,2013,5(2-3):94-103.

[13] TIJERINA L,BLOMMER M,CURRY R,et al.Effects of adaptive lane departure warning system on driver response to a surprise event[J].Transportation Research Record Journal of the Transportation Research Board,2010,2185(-1):1-7.

[14] SAMPEI K,OGAWA M,TORRESORRES C,et al.Mental fatigue monitoring using a wearable transparent eye detection system[J].Micromachines,2016,7(2):15-19.

[15] JOW J,PAK B C,DONG H L.A novel viscosity measurement technique using a falling ball viscometer with a high-speed camera[J].Kstle International Journal,2007,8:16-20.

[16] YUAN W,YUAN Y.Algorithm research of the eye open degree detection base on PERCLOS[J].Comput Eng Design,2010,26:67-73.

(编辑:刘笑达)

Design and Implementation of Fatigue Driving Detection Algorithm Based on Multi-algorithm Fusion

CHEN Dongwei1,2,ZHANG Zhe3,HAN Na1,GUO Hao2

(1.Department of Computer,Beijing Institute of Technology,Zhuhai Guangdong 519085,China;2.CollegeofComputerScienceandTechnology,TaiyuanUniversityofTechnology,TaiyuanShanxi030024,China;3.NetworkSecurityTeamofShanxiPublicSecurityDepartment,TaiyuanShanxi030001,China)

Fatigue driving detection based on image processing in practice often shows uncertainty because of the ehauge in environments.The lack of mormalization in monitoring algorithm makes the fatigue driving detection task very challenging. In order to solve this problem, this paper proposed a dynamic sliding window algorithm framework based on multi-algorithm fusion. This algorithm framework firstly recognizes human eyes with AdaBoost algorithm, then an improved Otsu algorithm is modified to automatically adapt to varied environments. Furthermore, it proposes an effective algorithm based on dynamic sliding window in order to compute optimal threshold between open and close eye window. Finally, it estimates the different level of fatigue driving with improved percentage of eyelid closure time (PERCLOS) algorithm. According to changes in the environment, the algorithm framework adopts the strategy that eyes judgment window updates following eyes features variation,human eyes images are captured with camera in real time, and the proposed method is simulated on personal computer to recognize different level of fatigue driving between 130 ms to 150 ms.This paper presents a new learning strategy and multi-algorithm framework. The comparative experiments demonstrate that the proposed algorithm framework can effectively discriminate different level of fatigue state in driving by eye state tracking.

adaboost algorithm;adaptive otsu algorithm;dynamic sliding window;PERCLOS algorithm;eye state tracking;fatigue driving

1007-9432(2016)04-0518-05

2016-03-01

国家自然科学青年基金资助项目(61402318); 2015年广东高校省级重点平台和重大科研项目(2015KQNCX211);2015年度广东省前沿与关键技术创新专项资金(重大科技专项)项目(2015B010108003);2014年北京理工大学珠海学院校级科研发展基金项目(XK-2014-02)

陈东伟(1982-),男,太原人,讲师,博士,主要从事智能信息处理,脑信息学,嵌入式系统研究, (E-mail)38566905@qq.com

郭浩,副教授,主要从事智能信息处理、脑信息学,脑网络组学研究,(E-mail)43672782@qq.com

TP399

A

10.16355/j.cnki.issn1007-9432tyut.2016.04.016

猜你喜欢
睁眼人眼特征值
一类内部具有不连续性的不定Strum-Liouville算子的非实特征值问题
一类带强制位势的p-Laplace特征值问题
基于一类特殊特征值集的扩散算子逆谱问题
单圈图关联矩阵的特征值
人眼X光
人眼为什么能看到虚像
你不知道的睡眠冷知识
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼