基于视觉的可靠性疲劳驾驶检测技术研究

2011-06-25 09:39赵永胜
电视技术 2011年15期
关键词:人眼人脸灰度

隋 博,赵永胜

(河南省电力通信自动化公司,河南 郑州 450052)

1 常见的疲劳检测技术简介

驾驶员疲劳状态实时检测及预警技术能够在驾驶员的疲劳驾驶行为发生之初,检测到危险状况,随即发出报警信息,要求驾驶员采取措施避免进入疲劳状态,从而有效地保障驾驶员的行车安全。

早期的驾驶疲劳测评主要是从医学角度出发,借助医疗器械进行的。随着科学的进步,疲劳驾驶测量方法也有了很大的发展,其中具有代表性的有基于驾驶人生理信号的方法、基于驾驶人生理反应特征的方法、基于驾驶人操作行为的方法和基于车辆状态信息的检测方法。各种疲劳检测方法的对比见表1。

表1 疲劳检测技术对比表

基于驾驶人生理信号的检测方法对于疲劳判断,在所有检测方法中是最可靠的。但生理信号需要采用接触式测量,且对个人依赖程度较大。因此该方法主要应用在实验阶段,作为实验的对照参数,实用性不高。准确性对于基于操作行为的检测是关键问题。同样的问题也会出现在基于行驶轨迹的检测中,目前还没有统一的标准来认定如何通过车辆的速度和偏移度来判断驾驶员的疲劳。

相比其他检测方法,基于驾驶员生理反应特征的检测方法具有非接触式测量的优点。对于疲劳状态的识别有国际上认可的疲劳检测模型PERCLOS作为标准,具有精度高和实用性好的优势。视觉疲劳检测技术是基于驾驶员生理反应特征检测方法的代表,也是目前该领域内研究的重点方向。

2 基于视觉的疲劳驾驶检测技术

视觉疲劳检测技术实际上是用基于驾驶员生理特征的方法来进行疲劳检测。通常通过简单的观察驾驶员面部特征(如眼睛,头部,脸部)的变化来评价是否疲劳。其中最典型的困倦特征表现在眼睛。例如,长时间的眨眼,缓慢的眼睑活动,眼睛睁开程度变小或闭合,无变化的视线等。计算机视觉是基于生理特征检测方案的最佳技术选择。

基于视觉的驾驶员疲劳检测算法流程如图1所示。首先是视频图像采集过程,视频图像信息的清晰程度和饱和度等因素,会直接影响到检测算法的准确性。图像预处理过程是系统流程的第二步,通过若干图像算法处理原始图像是为了给人脸检测提供符合要求的标准格式图像。人脸检测是系统中的关键步骤。人脸检测算法的选择要从算法精度、实用性、实时性、可移植性等方面综合考虑。人眼跟踪的方法比较多,可以根据人脸的位置,通过“三庭五眼”的原则大致定位,也可以用单独的人眼定位算法选择人眼区域。最后,经过特征提取和PER⁃CLOS计算,结束循环检测的一次流程。

3 相关技术研究

3.1 人脸检测

人脸检测是基于视觉的疲劳驾驶检测算法中的关键步骤。人脸检测是指在输入图像中确定人脸(如果存在)的位置、大小和姿态的过程(即设置感兴趣区域),见图2。

人脸属于非刚性物体,其检测方法的关键和困难就在于如何建立起合适的数学模型来描述人脸目标模式的多样性,人脸检测的基本思想一般采用以下步骤:先对人脸进行建模,然后比较所有可能的待检测区域与人脸模型的匹配度,从而得到可能存在的人脸区域。大体上可以把目前的人脸检测方法分为四类:基于知识的检测方法,特征不变的检测方法,模板匹配的检测方法,基于外观的检测方法。各种人脸检测算法都有自己的优势和缺陷。然而真正影响人脸检测算法在实际中应用的重要因素,归根结底还是算法的准确性和实时性无法匹配的问题。很多学者在此方向上作了大量研究,AdaBoost算法的提出使得人脸检测走向实用。

AdaBoost算法是基于特征的检测方法,通过寻找那些即使当姿势、视角和光线条件变化时仍然存在的结构特征,并利用这些特征来定位人脸。该算法将矩形作为人脸检测的特征向量(特征矩阵)。在给定有限的数据情况下,基于特征的检测能够编码特定区域的状态,而且基于特征的系统比基于像素的系统要快得多。如图3所示,将特征矩阵组合形成特征模板,就能描述人面部一些区域线性或者边缘特征。如图4所示,编号(1)~(5)分别代表5类不同的矩阵模板。(1)和(2)可以反映图像的边缘特征,(3)和(4)反映图像的线性特征,(5)主要用来反映图像在特定方向上的特征。例如图3中的人脸图像,人眼要比脸颊颜色更深这一特征正是使用模板(2)来描述。

AdaBoost算法首先利用特征矩阵提取人面部特征,如眉毛、眼睛、鼻子、嘴和发际。然后根据提取的特征,建立统计模型描述特征之间的关系并确定存在的人脸。相比于其他人脸检测算法,AdaBoost算法具有精度高、速度快的优势。

3.2 数字图像处理技术

3.2.1 图像和色彩空间

在一个典型的多媒体计算机系统中,常常涉及到用几种不同的色彩空间表示图形和图像的颜色,以适合不同场合的应用。因此,数字图像的生成、存储、处理及显示时对应不同的色彩空间需要作不同的处理和转换。RGB色彩空间是使用最多的色彩空间,它采用R(红)、G(绿)、B(蓝)三种颜色的相加来产生其他颜色。YUV色彩空间被欧洲的电视系统所采用(属于SECAM和PAL系统),其中Y是指亮度,U和V是指色度。GRB与YUV之间的对应关系如下

除上述色彩空间外,YCbCr色彩空间也是一种常见的色彩空间,JPEG采用的正是该色彩空间。它是从YUV色彩空间衍生出来的,其中对Y和V进行少量调整而得到的。另外,还有CMY和YIQ等色彩空间,它们都适用于不同的领域和应用。

3.2.2 图像平滑处理

图像生成和传输过程中经常收到各种噪声的干扰和影响,噪声使图像质量下降。为了达到系统的处理要求,就要抑制噪声,改善图像质量,也就是对图像进行平滑和去噪声的处理。

3.2.3 灰度变换

只含有亮度信息,不含有色彩信息的图像是灰度图像。通常将灰度级别划分成0~255,0表示最暗(全黑),255表示最亮(全白),中间值表示灰色。灰度变换的目的一般是为了改善图像显示画质,使图像更加清晰。灰度变换又被称为图像的对比度增强变换或对比度拉伸变换。

3.2.4 二值运算

图像的二值处理,只能针对灰度图像。它是将灰度图像上的点的灰度置为0或255,也就是将整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值图像。二值运算的目的是为了使目标物体和背景分开。

3.3 PERCLOS

PERCLOS是指在单位时间里眼睛闭合时间所占的百分比率。PERCLOS被认为是目前最具有前景的疲劳检测模型。

图5是PERCLOS的数学模型示意图,若用f代表眼睛闭合时间的百分率,则有

定义眼睛瞳孔开度大于20%是睁开,而瞳孔开度等于20%或者更小为闭合。公式中,t1代表眼睛(由眼皮遮盖瞳孔的大小来决定)最大闭合到80%所用的时间;t2代表眼睛闭合80%到闭合20%所用的时间;t3代表眼睛闭合20%到睁开20%所用的时间;t4代表眼睛睁开20%到睁开80%所用的时间。f值越大,则说明驾驶员的疲劳程度越高。

4 疲劳驾驶状态识别

4.1 输入图像预处理

为了给人眼状态判断的算法提供更好品质的输入图像,需要对原始图像进行灰度化处理。预处理的另一个重要步骤是直方图均衡化。由于摄像头采集图像容易受驾驶环境、曝光不足或过度、设备的非线性等因素的影响,都会出现对比度不足,图像细节分辨不清的问题。另外,自然图像由于其灰度通常分布在较窄的区间,也会引起图像细节不清楚。而直方图归一化的目的就是把灰度图像增强亮度对比使得特征突出,同时减少亮度不平均而造成的干扰。在可靠性疲劳检测算法中,直方图均衡化处理有很重要的意义。一般驾驶员面靠近车窗的半边人脸易受到光照影响,亮度会明显大于背光半边人脸。如果不进行输入图像直方化处理,会影响最终检测结果。也可进行多次迭代处理,以达到图像亮度均衡的要求。

4.2 驾驶员人眼特征区域提取

利用AdaBoost算法使用人脸分类器对图像进行模式识别,对图像中的人脸区域进行标定。人脸检测功能能够给人眼的定位提供基础图像,同时还能够验证人眼区域的正确位置。最重要的是,确定人脸位置后,在人脸图像上定位人眼区域可以大大节省直接在整幅图像上寻找人眼的开销,减少了算法的执行时间,提高了算法的效率。人眼检测使用与人脸检测相同的分类算法。不同的地方在于,人脸检测的搜索区域是整幅图像,而人眼检测搜索的区域只在人脸区域。如果人脸定位失败,则无须进行人眼检测,直接转到下一帧图像的处理。

4.3 驾驶员人眼闭合程度判断

图像算法最终任务需要提供能够用于PERCLOS算法的人眼闭合程度(百分比)。在完成了人眼的精确定位后,剩下的工作就是该特征参数的提取。得到人眼闭合参数信息并不困难,可以通过观察人眼中虹膜(深色区域)特征的变化来进行判断。

如图6所示,精确的人眼区域图像需要经过高斯去噪、二值变换、图像求反等步骤,才能得到最终的目标图像。从目标图像可以看出,人眼的角膜已经被清楚地从背景图像中分离出来。在各种图像处理算法中,高斯去噪是为了消除图像存在的噪声和干扰,平滑轮廓。例如,人眼虹膜中心会一般存在一块白色的反光区域,这块区域通过平滑处理可以减小甚至消除,如果不进行此类处理,得到的图像效果会使最后的计算产生误差。二值变换和图像求反是为了将人眼虹膜从背景图像中分离,从而为计算人眼开合程度所做的最后准备。通过以上几个关键步骤,就可以将驾驶员眼部状态信息清晰地反应出来。

通过二值化的目标图像计算人眼开闭信息的方法有很多。最简单的就是直接计算目标图像中白色区域的面积,将该区域的面积视为虹膜的面积。但是这种方法的缺点是误差比较大,因为在人眼闭合时,上下眼睑阴影产生的面积并不是虹膜的面积,会影响计算结果。本算法使用求图像投影最大像素和的方法,在一定程度上减小了误差的产生。如图7所示,在目标图像投影后的最大投影值与人眼开闭程度之间建立一个简单的映射关系,利用这种对应关系将投影值转化成为人眼闭合程度的百分数表示,最后结合PERCLOS模型完成驾驶员疲劳判断。

4.4 加调整参数的自适应阈值算法

白天和黑夜的交替会使得驾驶员所处的环境光线亮度变化剧烈。使用确定阈值的二值算法无法满足检测需求,这是因为光线的变化会改变图像整体像素的灰度值。同样的阈值在白天和在夜间分离出来的人眼区域会不同,而且差异很大。所以,必须选择合适的自适应阈值的二值算法,减少由于光线变化造成的影响,才能保证人眼目标提取出来的区域统一。

本算法采用Otsu算法作为图像分割的方法,在完成人眼局部图像定位后,通过该算法进行人眼的虹膜目标提取。分割效果如图8所示。

由图8可以看出,用Otsu法得出的阈值直接用于图像二值化,对图像的分割效果达不到区分眼睛开合的要求。所以尝试用Otsu得到一个阈值T1的情况下,再加入一个调整值T2,令T=T1+T2,然后实验测试分割效果。经过大量实验后发现,T2取45时(最大灰度为255的图像),能得到突出虹膜的二值图,并且区分人眼的开闭效果明显,如图9所示。

通过对比可以看出,加上调整阈值的Otsu算法得到的图像眼睛虹膜的轮廓比较分明,更适合作为中间图像。根据此方法得到的目标图像再经过灰度投影算法的处理,完全可以满足判断上下眼睑距离的要求。

5 小结

疲劳驾驶是导致交通事故频发的主要因素之一,实时准确的驾驶员疲劳预警技术能改善交通安全状况,具有长远的社会意义。本文主要研究了各种图像处理技术在基于视觉的疲劳检测中的综合应用。设计了利用PERCLOS模型进行疲劳驾驶行为判断算法流程,还针对复杂背景、不同光照强度等特殊情况,提出加入调整参数的自适应阈值算法。通过实验验证,本方案具有精度高、可靠性和实时性好的特点,能够满足疲劳驾驶检测要求。

[1]VOOLA P.Rapid object detection using a boost cascade of simple features[C]//Proc.IEEE Conference on Computer Vision and Pattern Recognition.[S.l.]:IEEE Press,2001:511-518.

[2]CHEN Chiyuan.Driver fatigue detection based on eye tracking and dynamic template matching[C]//Proc.IEEE International Conference on Networking.[S.l.]:IEEE Press,2004:7-12

[3]夏芹,宋义伟.基于PERCLOS的驾驶疲劳监控方法进展[J].模式识别与仿真,2008,27(6):43-46.

[4]王磊.驾驶疲劳检测方法的研究进展[J].自动化与信息工程,2007,24(1):245-248.

[5]高晓晶,于鸿洋.在司机疲劳监控中的人眼状态检测方法研究[J].电视技术,2009,33(S2):212-213.

[6]江水郎,杨明.面向驾驶员疲劳检测的双空间人眼定位办法[J].计算机工程,2008,34(24):180-182.

猜你喜欢
人眼人脸灰度
采用改进导重法的拓扑结构灰度单元过滤技术
有特点的人脸
一起学画人脸
人眼X光
人眼为什么能看到虚像
三国漫——人脸解锁
基于最大加权投影求解的彩色图像灰度化对比度保留算法
闪瞎人眼的,还有唇
基于灰度线性建模的亚像素图像抖动量计算
看人,星光璀璨缭人眼