基于机器视觉的驾驶员疲劳检测方法
扫描二维码
随时随地手机看文章
引 言
虽然汽车在日常生活中带给人们诸多便利,但也带来了越来越多的交通事故,使得广大家庭和社会遭受巨大的伤害和损失。事故中,由疲劳驾驶所引发的事故数量占绝大多数,因此研发一款用来监测驾驶人员有无疲劳的系统具有重大意义
目前,检测疲劳驾驶的方法主要分为如下三类
(1) 生理信号法 :借助医疗仪表和设备生理指标对疲劳状况进行分析 [1]
(2) 利用传感器监测车辆运行状态参数来判断其是否正常行驶,并分析驾驶员是否疲劳
(3) 针对驾驶人员的反应特征,采用图像检测与分割算法找到嘴巴和眼睛等器官 [2,3],根据嘴巴和眼睛识别人体疲劳状态的反应特征[4,5],并通过这些反应特征判断驾驶员是否疲劳驾驶
本文提出了一种基于人脸特征的驾驶员疲劳检测算法,采用Adaboost 级联分类器对人脸进行检测,在提取的人脸图像基础上再进行人眼和嘴巴定位,并对其状态进行检测,将睁闭眼和嘴巴张合度进行信息融合,精确判断驾驶人员有无疲劳驾驶情况
1 疲劳检测系统总体方案设计
疲劳驾驶检测系统主要由图像采集模块、人脸检测模块特征定位及状态分析模块、信息融合模块构成,其系统流程如图 1 所示
2 人脸检测
采用 Adaboost 算法进行检测,首先获得不同的弱分类器再把其线性组合成为强分类器,最后通过级联方式构建最终的级联分类器,算法主要包含以下重要的部分
(1) 利用 Haar特征描述人脸的共有属性
(2) 建立一种名为积分图像的特征,快速获取几种不同的图像矩形特征
(3) 利用 Adaboost 算法进行训练
(4) 建立层级分类器
3 眼睛和嘴部状态检测
3.1 眼睛状态检测
对眼睛区域定位的同时可判断人眼的状况,实现以检代测的效果,对眼睛睁闭情形进行区分的流程如图 2 所示
人眼状态的检测针对视频中每一帧的图像进行,人眼的疲劳状态是一个时间段内的状态,因此检测采用PERCLOS Percentage of Eyelid Closure over the Pupil over Time PERCLOS)方法来判定 [6],当眼睛张开度大于 20%认为是睁眼,小于等于 20%认为是闭眼。在实际情况中可以根据图像来判断有无睁闭眼。PERCLOS 计算依据式(1)
3.2 嘴部状态检测
嘴巴的状态有很多种,其中打哈欠是一种疲劳状态的体现,因此只要将打哈欠的嘴巴状态与其他状态进行区分,就能判别驾驶员是否疲劳。通过嘴巴的几何形状来计算其张开度 O,将嘴巴用矩形框标记位置,用嘴巴的高 H 与宽 W 之比计算嘴巴的张开度 :
不同的 O 值代表嘴巴处在不同的张开状况,当嘴巴处于全张开状态时,O 值约为 0.8,将该值作为阈值以判别驾驶员是否打哈欠,从而可以确定其是否处于疲劳状态。
4 疲劳状态判定
将两种信息融合以减小误差,其中嘴部特征(打哈欠比眼睛特征(PERCLOS)更优。此外,由于打哈欠持续的时间较久,约为 5 s,对比疲劳时眨眼的时间更长,因此受外界影响更小。一旦出现打哈欠较长的状况,就能判定驾驶员处于疲劳状态。
根据检测两眼状态采用的 PERCLOS 标准可将其分为两类 :清醒状态(PECRCLOS 参数值< 20%)和疲劳状态(PECRCLOS 参数值≥ 20%);根据有无打哈欠将嘴巴张开大小分为两种 :疲劳状态(打哈欠)和清醒状态(未打哈欠)。本文综合上述两种标准最终判定驾驶员是否处于疲劳状态。
5 实验结果与分析
5.1 人脸检测
通过 OpenCV 开源库对大量图片进行训练,得到人脸分类器,实现对人脸的检测定位,结果如图 3 所示。
5.2 疲劳检测
眼睛状态测试结果见表 1 所列。在疲劳时通过眼睛状态来判断的准确度达 80.83%,表明以眼睛状况来检测疲劳的方法可行。同时从误检的结果可知,只从眼睛状况来检测有无疲劳仍存在问题。
6 结 语
本文基于 Adaboost 级联分类器的人脸检测算法来检测人眼、嘴巴,减少搜索范围,提高速度。通过分析提取的驾驶员人眼、嘴巴特征,实现对有无疲劳的准确检测。测试表明,在不同环境下,本文提出的方法在每个阶段基本都能实现疲劳驾驶的检测。但本文所用方法的检测时间较长,检测效率较低,如何提高检测效率将是下一阶段研究的重点。