设为首页 加入收藏 期刊导航 网站地图
  • 首页
  • 期刊
    • 数学与物理
    • 地球与环境
    • 信息通讯
    • 经济与管理
    • 生命科学
    • 工程技术
    • 医药卫生
    • 人文社科
    • 化学与材料
  • 会议
  • 合作
  • 新闻
  • 我们
  • 招聘
  • 千人智库
  • 我要投搞
  • 办刊

期刊菜单

  • ●领域
  • ●编委
  • ●投稿须知
  • ●最新文章
  • ●检索
  • ●投稿

文章导航

  • ●Abstract
  • ●Full-Text PDF
  • ●Full-Text HTML
  • ●Full-Text ePUB
  • ●Linked References
  • ●How to Cite this Article
Computer Science and Application 计算机科学与应用, 2012, 2, 246-250
http://dx.doi.org/10.12677/csa.2012.25043 Published Online December 2012 (http://www.hanspub.org/journal/csa.html)
Implementation of Fatigue Detection Algorithm Based on
Geometric Features*
Jingd an Wan g, Ch uan hu a Jiang, Zongbo Hao
School of Computer Science & Engineering, University of Electronic Science and Technology of China, Chengdu
Email: wjd719@yeah.net
Received: Oct. 21st, 2012; revised: Nov. 16th, 2012; accepted: Nov. 25th, 2012
Abstract: The Adaboost algorithm based on the face of the classifier can accurately detect and positioning face, then
through trying three methods to locate the human eye, such as Frame Difference and geometric feature method, extract-
ing human eye image to obtain the binary image of eye by gray processing, gauss smooth, adaptive threshold. Finally,
the algorithm will further accurately judge the driver is in a state of fatigue through the analysis of eyes’ feature. The
experimental results show that the method of Geometric Feature has anti-jamming effect in positioning the human eye,
and the eyes feature significantly can ensure Robustness and real-time.
Keywords: Image Pre-Processing; Classifier; Geometric Features; Fatigue State
基于几何特征的疲劳检测算法研究与实现*
王景丹,江春华,郝宗波
电子科技大学计算机科学与工程学院,成都
Email: wjd719@yeah.net
收稿日期:2012 年10 月21日;修回日期:2012 年11月16 日;录用日期:2012年11月25日
摘 要:采用基于人脸分类器的Adaboost 算法可以准确检测并定位人脸,然后通过尝试帧差法及几何特征法来
定位人眼,提取人眼图像,进行灰度化、高斯平滑、自适应阈值等预处理,最终获取人眼二值化图像,进一步
精确到眼睛部位,分析眼睛的状态特征,判定驾驶员是否处于疲劳状态。实验结果表明几何特征定位人眼的方
法有抗干扰的效果,眼睛特征表现明显,鲁棒性好,同时也能够保证实时性。
关键词:图像预处理;分类器;几何特征;疲劳状态
1. 引言
疲劳检测算法是模式识别和机器视觉领域的前
沿课题,由于驾驶人员在驾驶过程中需要高度集中、
时刻关注路况信息,长时间驾驶必然导致精力不足、
疲劳懈怠,如何实时地、智能地避免疲劳驾驶、消除
车祸隐患是相关部门亟需解决的问题,一种实时的、
能够准确判断疲劳状态的、不妨碍驾驶的疲劳检测系
统成为国内外研究者的研究方向。早期研究阶段采用
车载心电图[1]、脑电图[2]等方法协助监控驾驶员,但
这种方法较为滞后、所需设备复杂、易干扰驾驶员正
常驾驶。已知人在疲劳时眼睛将会发生明显的变化:
精力充沛时,眼睛睁开;进入轻度疲劳时,眼睛睁开
变小;疲劳以至于睡眠时,眼睛经常出现完全合上的
状况[3]。这些特征是可以被检测的,目前常见的疲劳
检测算法都是针对视频文件进行图像处理和模式识
别,提取人物面部信息、眼睛信息,判断驾驶员的行
为状态,并针对疲劳驾驶行为发出报警信号。疲劳检
测最重要的环节是人脸识别和眼睛特征提取,人脸识
*资助信息:四川省成都市铁路局远程视频监控系统升级与再研发
(1);远程视频监控系统后续完善(2)。
Copyright © 2012 Hanspub
246
基于几何特征的疲劳检测算法研究与实现
别的常用算法是Adaboost 算法、几何特征算法与肤色
分割算法[4,5],Adaboost 算法是采集大量人脸样本,训
练人脸分类器,从而实现智能检测定位人脸的算法,
样本越多、差异性越大,鲁棒性越好,准确率越高;
几何特征算法是通过椭圆提炼和拟合人脸来定位到
人脸区域,能够较好地定位人脸区域,但不适合人脸
偏转情况;肤色分割算法是利用人脸肤色的聚类性来
检测出人脸区域,但会受到毛发等干扰因素。眼睛定
位常使用积分投影法[6]、连通域法,积分投影法是利
用水平和垂直灰度积分投影曲线结合人脸的结构特
征找到眼睛位置坐标,此法能准确定位眼睛位置,但
不能得到眼睛区域范围,即无法判断眼睛睁闭状态;
连通域法是通过对二值图像的扫描和分析得到连通
域划分,继而判定眼睛区域范围,此法眼睛闭合状态
不易检测,毛发干扰性较大,可作为疲劳检测的辅助
手段。其中肤色分割算法和积分投影法常结合使用,
适用于光线环境稳定、人物静止的条件下,不能应用
于光线变化剧烈的环境中,本文的研究背景是光线变
化剧烈的高速高路以及火车线路,因此要尽力消除变
化剧烈的光线影响,本文提出的改进算法是首先利用
对光照不敏感的Adaboost 算法实现人脸检测及定位,
然后采用帧差法和几何特征判定法相结合的方式来
定位人眼,再通过聚类方法精确判断人眼的睁闭状
态。该算法流程如图1所示。
2. 人脸检测
目前,国内外研究表明人脸定位及跟踪算法已经
开始
人脸检测模块
几何特征定位人眼模块
帧差法辅助判定人眼
分析帧图像判定人眼睁闭状态
循环处理视频帧,记录每种状态持续
帧数,判定驾驶员是否进入疲劳状态
结束
图像预处理模块
Figure 1. Fatigue detection algorithm module
图1. 疲劳检测算法模块图
很成熟,常见的算法有肤色 分割算法、Adaboost 算法,
其中肤色分割算法是利用肤色的聚类性来确定人脸肤
色区域,它没有使用特殊的脸部特征,因此允许被跟
踪对象自由活动,并且头部方向和姿态的变化不会影
响对于肤色区域的确定[7]。但是由于光源的颜色以及光
照的角度不同所造成的高亮和阴影等诸多因素的影
响,利用颜色分割人脸仍然是一个非 常困难的问题。
驾驶员进行疲劳状态检测时,由于车辆高速运行
会引起周围环境明暗度的迅速变化,不适合采用肤色
分割法,为了能够在这种特殊环境下精确定位人脸,
可采用基于人脸分类器的Adaboost 算法进行人脸的
检测与定位。其基本思想是通过采集大量的样本,利
用多个分类能力一般的弱分类器通过一定的方法叠
加起来构成一个分类能力很强的强分类器,再将若干
个强分类器串联成为级联分类器,由训练和检测两部
分完成视频图像中的人脸检测与定位[3]。
人脸检测算法的具体实现是:首先对图像进行灰
度化、直方图均衡化等预处理,然后加载已经训练好
的人脸分类器,就能自动检测出目标对象,最后将只
含人脸的图像单独保存。因为基于AdaBoost 算法的
人脸识别已经很成熟,本文直接使用opencv 实现的结
果定位人脸。
3. 人眼定位
从简单的阈值法、模板匹配[8]到神经网络、弹性
模板匹配、遗传算法等均被相关研究者尝试性的用于
人眼定位。目前比较常用的人眼检测方法有:灰度积
分投影法[9]、Hough 变换方法、可变形模板及对称变
换法等。它们各有优劣,适用环境总是有所局限,比
如基于 Haar 分类器的人眼检测算法的结果常常包含
眉毛、头发等干扰因素;利用连通域法定位眼睛的结
果很不稳定,表现为前一帧得到一只眼睛,后一帧也
许就是两只眼睛;灰度积分投影法在光线过暗时不能
精确定位到人眼。本文研究重点是避免环境光照明暗
变化因素带来的干扰,据此本文将采用帧差法和几何
特征法[10]结合的方式精确定位到人眼,并准确判断出
人眼的睁闭状态。
3.1. 帧差法
帧差法主要针对于帧图像中背景静止,目标对象
Copyright © 2012 Hanspub 247
基于几何特征的疲劳检测算法研究与实现
静止或者移动较为缓慢的情况[11]。众所周知,大多数
人在精神状态良好下会不断眨眼,而在疲劳状态下闭
眼时间明显大于正常状态的眨眼闭合时间,同时,当
背景及人脸静止时只有眼珠处于活动状态[11],同时驾
驶室里背景图像均为静止状态,故帧差法可用于来判
断驾驶员是否处于疲劳状态。
帧差法的具体实现方法是:连续两帧求差 diff,
当diff 为0时,表示眼睛连续处于静止状态,包含两
种情况:1) 持续睁开;2) 持续闭合;当 diff 不为 0
时,表示眼睛处于眨眼状态。
定义一个帧数组,维数为n,记录连续n个帧,
存储其睁眼、闭眼状态,如果连续 M(M 为疲劳阈值
帧数)个帧为闭眼状态,则表示驾驶人员开始进入疲劳
状态,帧数组如图2所示。
利用帧差法处理人脸图像时,一般设置第一帧为
睁眼状态。此外,为了提高算法的实时性,可采用跳
帧法,即取第1帧后,接着直接取第6帧进行处理。
跳帧法的缺点是如果被跳过去的帧出现与期望相悖
的状态,可能会延迟疲劳状态的判定。
3.2. 几何特征判定法
几何特征判定法就是利用人脸器官的几何分布
来定位人眼,对获取的人眼图像进行预处理,最终得
到人眼二值图像,分析二值图像特征,计算瞳孔面积
[12]。几何特征判定法主要适用于正脸及微 侧脸的状态。
已知的先验知识有:1) 人脸是基本对称的椭圆区
域;2) 眼睛位于人脸区域上部中轴线两侧,且位于人
脸上部 3/5 位置;3) 人眼的长宽比例,两眼间距与人
眼长度的关系,两眼连线的倾斜角度。
图像预处理阶段尤为重要,如果这阶段处理不
好,后面的特征提取、识别根本无法展开。图像预处
理过程主要包括对获取的人眼图像进行光线补偿、灰
度化、高斯平滑(去噪处理)、直方图均衡化、图像对
比度增强、二值化,如图3所示。
本文中没有使用直方图均衡化,因为直方图均衡
化的目的是归一化图像亮度和增强对比度,在二值化
灰度图之前进行直方图均衡化的结果是使眉毛区域
×√√√√ √√√√ √×
Figure 2. Frame array
图2. 帧数组
光线补偿
灰度化
高斯平滑
二值化
直方图均衡化(舍弃)
Figure 3. Image pre-processing
图3. 图像预处理过程
得到标记,连通域个数变得更多,从而干扰眼睛定位
的因素增多,这是不可取的,故而舍弃直方图均衡化。
在睁眼状态下,由于可能会出现头发、眉毛等干
扰因素,所以在进一步处理眼睛状态前进行一次聚类
处理,聚类是一个将数据集划分为若干个子集,并使
同一集合内的数据对象彼此相似,而集合中的数据对
象具有较大的差异的过程,目前常用的聚类算法有 C
均值算法和模糊C- 均值算法(FCM)。本论文采用修正
的聚类去除眼珠周围的干扰区域,对可能的眼珠区域
范围进行求和,通过点与初步给定的中心之间的距
离,及周围黑色象素数目来判断眼珠周围黑点是否属
于眼睛,排除干扰,增强人眼检测的精确度。
4. 疲劳检测算法描述
4.1. 疲劳检测算法流程
首先通过摄像头实时读取视频,然后逐帧读取视
频,然后经过人脸检测与定位、人眼检测与定位,最
后通过对眼睛部位的状态来判定驾驶员是否处于疲
劳状态。具体实现流程如图4所示,其中fClose 表示
持续闭眼帧数。
4.2. 疲劳状态判定
研究表明正常情况下人们眼睛闭合的时间在
0.2~0.3 s 之间,驾驶时若眼睛闭合时间达到 0.5 s 就容
易发生交通事故。宾夕法尼亚大学智能交通实验室和
NHTSA 采用 PERCLOS(眼睛闭合时间占特定时间的
百分率)作为精神生理疲劳程度的测量指标[13,14]。
PERCLOS 测量的参数是在单位时间内(1 min)眼睛闭
合程度超过80%以上的时间占总时间的百分比,它连续
跟踪测量眼睑的睁闭,并且根据相应的阈值提醒可能
发生的瞌睡[15]。PERCLOS 计算睁闭眼是建立在利用
Copyright © 2012 Hanspub
248
基于几何特征的疲劳检测算法研究与实现
开始
读取摄像头获取视频,
并设置fClose初值为0
帧图像灰度转换
是否需要缩
放图像
是
缩放图像
加载人脸分类器
检测并定位人脸
否
是否检测
到人脸
几何特征法
定位人眼
是
否
人眼图像预处理
处理二值化人眼图像,
提取目标对象特征
目标对象长宽
比是否小于3:1 判定此帧为
失效帧
是
否
判定为一次
睁眼状态
fClose>fClose _ max?
是
否
判定驾驶员进入疲劳
状态,并置fClose=0
fClose++
视频帧是否
读取完毕
结束
否
是
Figure 4. Fatigue detection algorithm flow chart
图4. 疲劳检测算法流程图
摄像头找到眼睛位置的基础上,提取出眼睛的图像,
并且计算图像的高度来判断眼睛的睁闭,它属于非接
触式、实时式的监测方法,使用方便,对驾驶员没有
负面影响。
已知正常的人眼闭合时间是 0.17 s,而疲劳时人
眼闭合时间长达1.68 s,设置连续闭眼帧数为fClose,
初值设为 0,疲劳临界阈值设为:fClose_max。当连
续fClose_max帧为闭眼状态,即判断为疲劳,具体如
表1所示。
fClose_max 是在循环处理每一帧图像时动态取
值的,其计算公式为:
fClose_max = (int)(1/duration) * 1.68 (1)
其中,变量 duration 是处理一帧视频所需的时间(秒
级),并且是在处理每一帧时动态取值的。它的计算公
式是:
tmp = (finish − start)/CLOCKS_PER_SEC; (2)
这里还需要设置"if(duration < tmp) duration =
tmp;"条件判断是因为如果在 while 循环处理帧图像时
检测不出眼睛,则detect_face函数的执行时间就会缩
短,进而导致duration 值变小,可能出现误报警,所
以需要保证duration为每一帧处理时间的最大值。
5. 疲劳检测结果分析
针对本文提出的算法在 Windows 平台下和光照
平缓的实验室环境下进行了实验,首先采用 USB摄
像头获取实时视频,在实验中不断调整人物与镜头间
距离,并不断偏转头部,测试头部可以偏转的程度,
实验证明头部偏转程度最大可呈30˚角度,眼睛的识
别率达 99.8%,针对睁闭眼状态检测的准确率达97%。
实验结果数据如表2所示。
睁眼状态下的实验结果如图5所示。
闭眼状态下的实验结果如图6所示。
最终实验结果表明:几何特征判定法能够缩小定
位眼睛范围,去除了头发、眉毛等因素的干扰,经过
Table 1. Fatigue state decision table
表1. 疲劳状态判定表
闭眼帧数 fclose 是否疲劳
fclose > fClose_max 深度疲劳
fClose_max-5 < fclose < fClose_max 轻度疲劳
fclose < fClose_max-5 清醒状态
Table 2. Experimental results data
表2. 实验结果数据表
帧数 头部偏转程度 眼睛识别率 睁闭识别率
5297 0˚ 100% 98%
5297 15˚ 99.6% 96%
5297 30˚ 96% 92%
5297 45˚ 56% 89%
Copyright © 2012 Hanspub 249
基于几何特征的疲劳检测算法研究与实现
Copyright © 2012 Hanspub
250
(a) (b) (c)
Figure 5. Eyes open situation: (a) Video frame image; (b) Eye posi-
tioned by geometric features; (c) Binary image of eye
图5. 睁眼情况:(a) 视频帧图像;(b) 几何特征法定位的人眼;(c)
人眼二值图
(a) (b) (c)
Figure 6. Eyes closed situation: (a) Video frame image; (b) Eye
positioned by geometric features; (c) Binary image of eye
图6. 闭眼情况:(a) 视频帧图像;(b) 几何特征法定位的人眼;(c)
人眼二值图
图像预处理的二值化图像能够精确的给出眼睛的形
状、位置和大小。当二值图像中目标对象表现为长方
形,且长宽比大于 4:1 时,则判定此帧为闭眼状态;
当二值图像中目标对象表现为圆形、椭圆形或者椭圆
形上方有弧线,且长宽比远远小于3:1时,则判定此
帧为睁眼状态。
6. 结束语
本文提出了一种基于几何特征的疲劳检测算法,
该算法通过尝试帧差法及几何特征法来定位人眼,提
取人眼图像,进行灰度化、高斯平滑、自适应阈值等
预处理,最终获取人眼二值化图像,进一步精确到眼
睛部位,然后通过聚类法分析眼睛的状态特征,判定
驾驶员是否处于疲劳状态。实验结果表明几何特征定
位人眼的方法有抗干扰的效果,眼睛特征表现明显,
鲁棒性好,同时也能够保证实时性。在实际的驾驶环
境中,由于驾驶员并不能时刻处于静止状态,疲劳状
态下会出现头部下垂、严重偏转情况,下一步的研究
重点是实现头部偏转剧烈情况下的疲劳检测和眼睛
实时跟踪,如何提高驾驶员在真实驾驶环境下疲劳检
测的实时性、准确性和鲁棒性仍然是一个富有挑战性
的问题。
参考文献 (References)
[1] 吴群. 基于心电信号的驾驶疲劳检测方法研究[D]. 浙江大学,
2008.
[2] 吴绍斌, 高利, 王刘安. 基于脑电信号的驾驶疲劳检测研究
[J]. 北京理工大学学报, 2009, 29(12): 1072-1075.
[3] 李洪研, 赵学敏. 基于人眼 PERCLOS 特征的列车驾驶员疲
劳检测系统[J]. 技术创新, 2011, 12: 32-34.
[4] 朱双燕. 基于肤色的人脸检测与识别方法的研究[D]. 武汉理
工大学, 2007.
[5] 范一峰, 颜志英. 基于Adaboost算法和肤色验证的人脸检测
研究[J]. 微计算机信息, 2010, 21: 231-232.
[6] 曹菊英. 基于积分投影的司机图像眼睛定位方法[J]. 信息技
术, 2007, 31(7): 20-22.
[7] 郭磊, 王秋光. Adaboost人脸检测算法研究及 OpenCV 实现[J].
哈尔滨理工大学学报, 2009, 14(5): 123-126.
[8] 袁英. 基于视觉的汽车驾驶员疲劳检测算法研究[D]. 沈阳工
业大学, 2010.
[9] J. Tang, Z. H. Fang, S. F. Hu and Y. Sun. Driver fatigue detec-
tion algorithm based on eye features. 7th International Confer-
ence on Fuzzy Systems and Knowledge Discovery (FSKD),
2010, 5: 2308-2311.
[10] 高永萍, 秦华标, 余卫宇. 基于几何特征的人眼精确定位新
方法[J]. 微计算机信息, 2007, 33: 199-201.
[11] Y. Kurylyak, F. Lamonacal and G. Mirabelli. Detection of the
eye blinks for human’s fatigue monitoring. IEEE International
Symposium on Medical Measurements and Applications Pro-
ceedings, 2012, 18(19): 1-4.
[12] Y. T. Feng. A combined eye states identification method for
detection of driver fatigue. IET International Communication
Conference on Wireless Mobile and Computing (CCWMC
2009), 2009, 7(9): 217-220.
[13] 苑玮琦, 袁英. 基于 PERCLOS 的眼睛张开程度检测算法研
究[J]. 微计算机信息, 2010, 25: 46-48.
[14] 郭永彩, 李文涛, 高潮. 基于 PERCLOS的驾驶员疲劳检测算
法[J]. 计算机系统应用, 2009, 8: 54-57.
[15] L. L. Li. A method of driving fatigue detection based on eye
location. IEEE 3rd International Conference on Communication
Software and Networks (ICCSN), 2011, 27(29): 480-484.

版权所有:汉斯出版社 (Hans Publishers) Copyright © 2012 Hans Publishers Inc. All rights reserved.