计 算 机 系 统 应 用 2009 年 第 8 期
基于 PERCLOS 的驾驶员疲劳检测算法①
Fatigue Detection Algorithm Based on PERCLOS
郭永彩 李文涛 高 潮 (重庆大学 光电技术及系统教育部重点实验室 重庆 400030)
摘 要: 提出了基于 PERCLOS 的驾驶员疲劳检测方法,通过测量在一定的时间内眼睛闭合时所占的时间比例
检测驾驶员的疲劳情况。设计的系统由红外光源、人眼图像传感、图像处理及眼睛面积补偿算法等组
成。在提取人眼图像过程中,利用人眼对 850nm/940nm 这两种波长的红外光线的吸收率的明显差
异,得到差分图像后可将眼睛与其余部分分离,同时也避免了背景光线的干扰,特别适合于夜间容易
出现疲劳驾驶时段的检测。在眼睛面积的计算过程中,通过面积补偿算法,修正驾驶员眼睛与检测设
备距离相对变化引起的误差,提高了检测系统的准确率。
关键词: 疲劳驾驶 PERCLOS 红外光线 差分图像 面积补偿
中国 2005 年交通事故报告显示,因为疲劳驾驶
导致的死亡占全部交通事故死亡人数的 2.6%;美国
国家公路交通安全局(NHTSA)调查显示,因为疲劳驾
驶导致的死亡人数占交通事故死亡总人数的 3.7%;还
有很大一部分原因为“采取措施不当”的交通事故也
被怀疑为疲劳驾驶导致。由此可见,疲劳驾驶是交通
事故的一个主要原因。因此,如何在驾驶中实时检测
出疲劳的发生成为当前国内外研究的热点。
疲劳是由于体力或脑力劳动使人产生生理机能和
心理机能失调的现象。驾驶疲劳是驾驶车辆时,由于
驾驶作业引起的身体上的变化、心理上的疲劳以及客
观测定驾驶技能低落的总称[1]。疲劳虽然是一个正常
的生理现象,但是对驾驶员这一特殊的群体,就可能
引起严重的后果,甚至危及生命。因此,对驾驶员疲
劳的检测具有重要的现实意义,应用要求十分迫切。
1 各种疲劳驾驶的检测方法
目前驾驶员疲劳特征的检测方法较多,主要可以
分为接触式和非接触式的检测两大类。
1.1 接触式检测
接触式检测主要是通过附着于驾驶员身上的传感
器检测驾驶员身体特征变化来检测疲劳驾驶情况。具
体有脑电图检测和头部位置感应。疲劳产生的脑电变
① 收稿时间:2008-12-09
54 研究开发 Research and Development
化大脑皮层兴奋与抑制时,其脑电图上的表现是不相
同的。通过记录各种脑电波的幅频响应,统计其分布,
可达到疲劳检测的目的;疲劳时头部会经常向下倾
斜,利用传感器检测司机的头部位置可反映司机的疲
劳状况。
接触式疲劳检测有着明显的缺点。首先,设备需
要与驾驶员有身体上的接触,对驾驶员有干扰;其次,
脑电图容易受外界因素的干扰且个体间的生理反映差
距较大,价格过高,因此难以在实际中使用。
1.2 非接触式检测
非接触式检测主要是通过非接触的传感器检测驾
驶员身体特征变化或车辆状态来检测疲劳驾驶情况。
车辆状态的检测主要是通过方向盘的状态检测以及道
路追踪器来检测疲劳驾驶情况,其中方向盘检测是根
据驾驶员疲劳程度加深时,方向盘的转动幅度次数会
增多,握紧方向盘的力量变大;道路追踪器是通过安
装在车辆上的摄像头检测车辆越过车道线的频率和时
间来确定驾驶员的疲劳程度。这两种检测方法的准确
率都不高,只能作为辅助检测手段。驾驶员身体特征
检测包括利用瞳孔计以及眼睛闭合百分比 PERCLOS
的检测。其中瞳孔计是检测某一段时间瞳孔直径的变
化频率,PERCLOS 方法是检测某一段时间内眼睛闭合
时间所占的比例。
2009 年 第 8 期 计 算 机 系 统 应 用
大量实验证明 PERCLOS 方法是准确率最高的检
测方法,是被美国公路交通安全局(NHTSA)惟一认可
的疲劳驾驶检测方法[2]。
2 PERCLOS原理及实现方法
2.1 PERCLOS 原理
PERCLOS 是 Percent Eye Closure 的缩写,指在
一定的时间内眼睛闭合时所占的时间比例[3]。在具体
试验中有 P70,P80, EM 三种测量方式。其中 P80 被
认为最能反映人的疲劳程度。图 1 为 PERCLOS 值的
测量原理图[4]。图中曲线为一次眼睛闭合与睁开过程
中睁开程度随时间的变化曲线,可根据此曲线得到所
需测量的眼睛某个程度的闭合或睁开持续的时间,从
而计算出 PERCLOS 值。图中 t1 为眼睛完全睁开到闭
合 20%的时间;t2 为眼睛完全睁开到闭合 80%的时间;
t3 为眼睛完全睁开到下一次睁开 20%的时间;t4 为眼
睛完全睁开到下一次睁开 80%的时间。通过测量出 t1
到 t4 的值就能计算出 PERCLOS 的值 f。
式中,f 为眼睛闭合时间所占某一特定时间的百分率。
对于 P80 测量方式来说,我们认为当 PERCLOS 值
f>0.15 时,认为驾驶员处于疲劳状态。
−
−
t
t
t
t
3
4
f
=
2
1
图 1 PERLOS 值的测量原理图
2.2 PERCLOS 实现方法及系统硬件构成
研究表明,视网膜对 850nm 波长红外线的反射
率约为 90%,对 940nm 红外线的反射率约为 40%,
面部其他位置对这两种波长红外线反射率相当[5]。用
相同光照度的这两个波长的红外光源照射,同时采集
到的两个波长的反射图像只有视网膜灰度不同,其它
位置灰度基本完全相同。如将两幅图像相减,面部绝
大部分区域灰度值接近于 0,只有视网膜的灰度比较
大,因此可方便地从脸部头像中找出眼睛的位置,并
计算瞳孔的面积。
本文研究的 PERCLOS 疲劳检测系统硬件框图如
图 2 所示:
图 2 PERCLOS 疲劳检测系统硬件框图
红外灯阵列提供等光照强度的 850nm/940nm
红外光源;红外摄像机同时拍摄两个波长的司机面部
反射图像;滤光片分别滤出 850nm 和 940nm 波长
的反射图像;图像处理模块完成图像相减、眼睛位置
跟踪、眼睛面积补偿和计算等;控制系统控制各模块
的同步,控制红外灯阵列的光照强度;告警系统输出
声光告警信息,提醒疲倦的驾驶员。
3 PERCLOS疲劳检测算法设计及实现
3.1 疲劳检测算法流程
本文研究的 PERCLOS 疲劳检测方法为:通过相
同光照度的两个波长的红外光源照射,采集到两个波
长的反射图像并且进行相减,经过二值化后将眼睛部
分与脸部其他部分分开,从而进行眼睛面积的计算,
统计一段时间内驾驶员眼睛闭合的时间所占的比例。
在眼睛面积计算的同时,需修正驾驶员眼睛与检测设
备距离相对变化引起的眼睛面积变化。疲劳检测算法
的流程框图如图 3 所示。
在疲劳检测算法流程中,最为关键的是眼睛位置
跟踪算法与眼睛面积修正算法。其中眼睛位置跟踪算
法充分利用了眼睛与脸部其他部位对 850nm 和
940nm 波长反射率不同的特点,通过采集相同光照
下这两个波长的反射图像,由于同时采集到的两幅图
像只有眼睛部分灰度不同,其他位置灰度基本完全相
同。因此通过相减运算,可将眼睛部分与脸部其余部
分分离出来,从而为接下来的眼睛面积计算以及面积
补偿算法提供基础[6,7]。
Research and Development 研究开发 55
计 算 机 系 统 应 用 2009 年 第 8 期
图 3 疲劳检测算法流程框图
双眼间距 d,眉心 f;头部运动后双眼位置为 BB,眉
心 F1,图像中双眼间距 d1,眉心 f1。
(1) 前后运动:眉心位置不变,双眼间距比例
d1/d,因此双眼面积与正常位置双眼面积比例应该为
(d1/d)2。
(2) 转动:眉心位置不变,双眼与眉心的举例分
别为 dx 和 dy,则双眼面积与正常位置双眼面积比例
应该是(2*dx/d)2 和(2*dy/d)2。
(3) 左右运动:眉心位置移动距离Δd,则双眼面
积与正常位置双眼面积比例应该是(d-2Δd/d)2 和
(d+2Δd/d)2。
4 实验结果及结论
4.1 实验过程及结果
(1) 眼睛定位实验
本文基于上述疲劳检测算法,利用 MATLAB 对眼
睛定位以及眼睛面积补偿过程进行了仿真实验。图 5
中从左到右依次为 850nm 波长反射图像、950nm 波
长反射图像以及两幅图像进行差分的结果图。图 6 总
从左到右依次为差分前的灰度直方图、差分后的灰度
直方图以及将差分后图像二值化后得到的眼睛定位结
果图。
3.2 眼睛面积计算的补偿
在计算眼睛面积时,由于驾驶员头部相对于检测
设备有位置移动,因此为了实现实时跟踪驾驶员眼睛
位置并且计算面积,需要修正眼睛与检测设备距离相
对变化引起的眼睛面积变化。
眼睛面积补偿算法包括训练过程和校正过程。
其中训练过程是在初始几分钟,主要完成驾驶员眼
睛的定位,正常双眼面积的计算;校正过程是一个
三个自由度的几何运算,可以分解为三个单自由度
的几何运算。
眼睛面积补偿算法原理如图 4 所示。
(a)850nm 波长 (b) 950nm 波长 (c)差分图像
反射图像 反射图像
图 5 双波长反射图像以及差分图像
图 4 眼睛面积补偿算法原理图
(左图为前后运动; 中间为转动; 右图为左右运动)
如图所示:正常双眼位置为 AA,眉心 F,图像中
a 差分前灰 b 差分后的灰 c 眼睛定位
度直方图 度直方图 结果
图 6 差分前后灰度直方图以及眼睛定位结果图
(2) 眼睛面积误差补偿实验
由 MATLAB 图像处理工具箱中的 bwarea 函数计
56 研究开发 Research and Development
2009 年 第 8 期 计 算 机 系 统 应 用
确 地 定 位 眼 睛 位 置 并 计 算 其 面 积 , 从 而 提 高 了
PERCLOS 计算的准确性和可靠性。
(3) 本系统采用机器视觉方法,并利用红外光源
成像,避免了与驾驶员的直接身体接触,排除了环境
光源的干扰,提高了装置的适用性,满足任何驾驶情
况下对驾驶员状态的监测要求。
(4) 引入眼睛面积补偿算法,有效地解决了由于
驾驶员头部运动造成的眼睛面积变化的问题,提高了
系统检测的准确率。
算得知,图 6(c)中眼睛部分面积为 77.3755(图像眼
睛部分的像素个数),并以此为初始情况下的眼睛面
积。图 7 为另一时刻得到的眼睛定位结果图,经计算
此时刻眼睛面积为 89.3578,与初始状态面积相比相
对误差达到了 15.48%。经对比得到此时刻眉心位置
不变,但眼睛间距发生了变化,因此可知此时驾驶员
头部相对于初始情况发生了前后运动,造成眼睛面积
的变化(面积明显变大),从而引起误差。基于上述眼睛
面积补偿算法,经过眉心定位与对比,距离计算,最
终得到补偿后眼睛面积为 79.4798,将相对误差降低
到了 2.72%。可见经过眼睛面积补偿后,得到的眼睛
面积能更真实的反映驾驶员的眼睛状态,能更准确地
判断驾驶员的疲劳状态。
参考文献
1 Stutts JC, Wilkins JW, Vaughn BV. Why do people
have drowsy driving crashes. AAA Foundation for
Traffic Safety, Washington, 1999.
2 PERCLOS:A Valid Psychophysiological Measure of
Alertness As Assessed by Psychomotor Vigilance,
Washington, Office of Motor Carriers, 1998.
3 宋正河,周一鸣.基于 PERCLOS 的机动车驾驶员驾驶
疲劳的识别算法.中国农业大学学报, 2002,7(2): 104
-109.
4 韩相军,梁艳荣,关永.基于 DSP 的嵌入式驾驶疲劳监
测系统研究.公路交通科技, 2007,24(1):147-150.
5 刘志强,汪呖.驾驶员疲劳监测方法设计.农业机械学
报, 2006,37(4):26-29.
6 徐飞,施晓红.MATLAB 应用图像处理.西安:西安电
子科技大学出版社, 2002:101-123.
7 杨秋芬,桂卫华,胡豁生,周书仁. 驾驶员疲劳驾驶中
的眼睛定位创新算法.计算机工程与应用,2008,44(6):
20-24.
图 7 某时刻眼睛结果定位图(非初始状态)
4.2 结论
(1) 从实验过程可以看出,采用 850/940nm 双
波长检测眼睛状态,经过将图像进行差分后图像的灰
度值差别明显,便于提取眼睛部分图像,表明该检测
方法有效。
(2) 从眼睛定位结果可以看出,采用本文所述方
法对驾驶员眼睛状态进行检测,能有效地将眼睛与脸
部图像其余部分分离,避免了背景环境的干扰,能准
Research and Development 研究开发 57