摘 要: 针对汽车驾驶员疲劳驾驶检测的要求,设计了一种基于图像处理DSP芯片DM6437的疲劳驾驶视觉检测系统。通过DSP的GPIO口用软件控制摄像头轴上和轴外的两种不同波长的近红外光源(850 nm/950 nn)交替采集驾驶员图像,根据亮瞳效应两帧图像差分后粗定位人眼,用模板检测提取人眼的边界,根据PERCLOS值方法判断驾驶员是否疲劳。根据人眼的不同状态分别处理,用蜂鸣器作为报警系统提醒驾驶员。实验表明,该系统简单实用,而且能够全天候准确快速地判断驾驶员是否疲劳。
关键词: 疲劳检测; DSP; 亮瞳效应; PERCLOS
疲劳驾驶是造成交通事故的主要原因之一,根据公安部交通管理局发布的2009年全国道路交通事故情况显示,2009年,全国共发生道路交通事故238 351起,造成67 759人死亡、275 125人受伤,直接财产损失9.1亿元,其中疲劳驾驶造成的事故占一定比重。减少疲劳驾驶可以降低公共财产和个人人身财产损失,因此研究防疲劳驾驶系统具有重要的意义。
国内外有许多研究防疲劳驾驶监测系统,就目前来看,防疲劳监测系统并没有实现市场化原因有两点:一是各种方法都有一定的缺陷,比如用肤色变换提取人脸定位人眼的方法和灰度图像积分投影的方法因受光照影响,定位不准确;二是运行时间慢,达不到实时监测。针对此两点不足设计了本系统。
本系统用轴上和轴外的不同波长的近红外光采集图像,根据亮瞳效应分别能得到亮瞳孔图像和暗瞳孔图像,差分后快速定位人眼,用模板检测提取人眼边界,判断疲劳状态。系统的创新点是人眼定位方法简单准确,疲劳判断标准全面快速。
1 疲劳状态检测原理
1.1 人眼睁开程度检测原理
人的眼睛是一个精巧的光学成像系统,可以简单地把人眼抽象成一个光学模型,晶状体等效为一个凸透镜,视网膜看做一个光屏。进入人眼的光线是通过晶状体后成像于视网膜上,并且光线能被视网膜反射出去。根据人眼的特性,设计出有效的光源使采集到的图像出现亮瞳孔和暗瞳孔。
亮瞳效应(bright eye effect)[1]是美国著名的学者Hutchinson在眼睛运动检测专利中提出的,当靠近摄像头光轴的红外光源照射到人脸时,视网膜反射光会使瞳孔显得很亮就是所谓的亮瞳效应,当然眼角膜也会反射光,会在眼球上出现比较小的亮点(glint)[2],如图1所示。经过试验发现,出现亮瞳孔的亮度主要跟三个因素有关:离摄像头光轴的距离、光源的波长、光照强度。距离摄像头光轴的距离越近,反射光就越多进入摄像头,瞳孔就会显得越亮。人眼瞳孔对近红外光有较高的透射率,而人眼视网膜对不同的波长的光具有不同的反射量,对850 nm的红外光能把90%的入射光反射回去,对950 nm的红外光能把40%的入射光反射回去[3]。因此靠近摄像头轴上的光源选择850 nm的红外光较好,容易产生亮瞳孔,轴外的光源选择950 nm的红外光较好,会出现暗瞳孔。由于外界可见光会影响到亮瞳效应,因此在摄像头上会加上近红外滤光片,考虑到成本和使用效果用830 nm的高通滤光片就可以了。结合光源的光照强度和摄像头的视角,本系统的使用范围在40 cm~1 m之间,经过测试可以满足在汽车中的使用。
1.2 人眼疲劳状况监测原理
系统主要是靠人眼的闭合程度和持续的时间来判断驾驶员是否疲劳,采集到的图像人眼只会存在三个状态分别是:完全闭合、正常睁开、半睁半闭(眯眼的情况)。系统必须根据不同状态出现的时间来判定疲劳状态。
当眼睛完全闭合时,采集的两帧图像并没有亮瞳孔和暗瞳孔之分,不好定位人眼,这时将检测不到人眼作为一个特征来处理。连续5次都检测不到人眼说明人眼一直处于闭合状态,证明驾驶员疲劳了,这时启动报警系统提醒驾驶员。
大多数情况下,采集到的图像都是人眼睁开的状态(包括正常睁开和眯眼),采用PERCLOS法判断驾驶员的疲劳状态。到目前为止PERCLOS法是判断眼部疲劳状态的最有效的方法[4],PERCLOS是单位时间内眼睛闭合所占时间的百分比[5],比较科学的就是P80,即眼睛闭合80%所占时间的百分比。由于每个人的眼睛大小都不一样,不能用同一阈值去判断眼睛是否闭合了80%,通过图像处理得到的参数是眼睛的高宽比h(t),设定每次系统启动后把前10次得到的参数h(t)都存到一个数组A[10]中,然后在数组A[10]中找到最大的Amax存储到一个固定的地址中,以后每次得到一个高宽比h(t),人眼闭合程度p(t)就可以如式(1)求出:
在此系统中PERCLOS定义为5 s人眼闭合80%以上的帧数占图像总帧数的百分比。当PERCLOS大于40%时判定驾驶员疲劳,启动报警系统提醒驾驶员。
2 驾驶员疲劳状况监测系统的研制
2.1 硬件系统
设置在驾驶员前方的摄像机实时获取驾驶员脸部视频图像,经过视频解码器转换成数字图像,经微处理器送入数据存储器。本系统通过控制电源转换开关,从而获取两种不同波长光源照射的脸部图像,通过软件处理能够快速确定人眼位置。为本系统编写的应用程序存放在程序存储器中,系统上电时,通过引导程序将存放在程序存储器中的应用程序自动引导至微处理器中的数据存储区。当系统判定驾驶员处于驾驶疲劳状态时,通过蜂鸣器给予警示。该系统功能框图如图2所示。
2.2 软件系统
软件系统流程图如图3所示,利用亮瞳效应,轴上和轴外不同波长的交替使用会得到两帧瞳孔亮度差距很大的图像,由于采集两帧图像的时间间隔非常短,只有20 ms,基本上驾驶员的位置没有什么变化,所以两帧图像除瞳孔外,别的地方亮度差距不大。先对两帧图像中值滤波后,再差分,会得到瞳孔位置很突出的差分图像,粗定位眼睛的位置,根据眼睛的特征设置模板,提取出人眼的边界,最后计算PERCLOS值判断驾驶员的疲劳状态,当差分后找不到一对瞳孔时说明采集的两帧图像人眼都是完全闭合的,出现这种状况时把找不到瞳孔作为一个特征来处理,连续出现找不到瞳孔时系统判定人眼一直闭合,判定驾驶员已经疲劳,启动蜂鸣器提醒驾驶员。
2.3 系统模块
本系统分为4个模块,分别为:图像采集模块、图像处理模块、疲劳判断模块和报警系统模块。
2.3.1 图像采集模块
根据亮暗瞳孔的形成原理,要想产生亮暗交替的瞳孔图像,需要在同一平面内放置两组近红外光源,一组放在摄像头光轴上,另一组置于轴外。当只打开轴上光源时,就可获得亮瞳孔图像;当只打开轴外光源时,就可获得暗瞳孔图像。由于半导体发光二极管(LED)具有效率高、体积小、寿命长,易于制造成各种特定形状和容易实现不同照射角度等优点,故光源结构中都采用LED作为发光元件。光源设计如图4。
2.3.2图像处理模块
由于采集的过程中肯定会存在噪声,所以先用一个3×3的模板对采集到的图像进行中值滤波,减少噪声对图像处理的干扰。图5是中值滤波后的亮瞳孔图像和暗瞳孔图像。
因为采集两帧图像的时间间隔非常短,两帧图像的位置基本上没什么变化,由于一帧图像瞳孔位置是亮点,另一帧图像瞳孔位置亮度小,而两帧图像别的区域亮度值变化不大,所以差分后的图像瞳孔位置应该是最亮的区域。通过观察差分图像,也能发现差分后瞳孔位置基本上是图像上最亮的部位,可以根据这个特征粗定位人眼。在应用上驾驶员脸部区域离摄像头镜头位置距离在40 cm~1 m之间,连续采集图像时,眼睛小区域的面积差别不是很大,在差分图像上找到最亮点Imax1,通过这个亮点找到一个小区域,把这个小区域的亮度值都设定为零后再在差分图像上找到另外一个最亮点Imax2,根据这个亮点再扩展一个小区域,这两个小区域就是驾驶员左右眼的区域,如图6所示。这种方法的优点是粗定位速度快而且可以避免阈值的设定。
目前,用于提取人眼边界的方法有很多种,包括各种算子的边缘提取和灰度图像积分投影等等。在此系统中,可以根据粗定位后图像的特征来提取人眼边界。在粗定位图像中,通过观察发现,上眼睑的边界有一特征,就是上面的灰度值比下面的灰度值大;同理,下眼睑的边界特征是:下面的灰度值比上面的大。定义一个模板分两次在粗定位图像上搜索,分别找到满足这两个特征的点,如图7(b)。在扫描过程中找到上眼睑的最高点M(x3,y3)、下眼睑的最低点N(x4,y4),左临界点L(x5,y5)、右临界点R(x6,y6)。得到与眼睛边界相切的矩形框如图7(c)。
人眼的高宽比h(t)可以求出如式(2):
2.3.3 疲劳状态判断
在前面图像处理时,差分图像后会找到两个点Imax1(x1,y1)、Imax2(x2,y2)。人眼睁开情况下,这两个点应该在左右瞳孔里,由于左右瞳孔是对称的两个区域,通过实验测试亮点的垂直坐标距离在[0,10]区间里并且水平坐标距离在[25,50]区间里,依此作为依据判断是否检测到人眼。设定一个计数函数,如果连续五次检测都没有检测到对称的双瞳孔说明人眼完全闭合了,软件通过GPIO口启动蜂鸣器提醒驾驶员。
在能定位人眼时根据PERCLOS值来判断疲劳状态,如前面原理描述一样处理。
2.3.4报警系统
报警系统采用价格便宜的蜂鸣器,用DSP的GPIO口控制蜂鸣器的启动与停止。
3 实验结果及分析
利用实验室的设备制作光源,将DSP开发板与光源和仿真器连接,通过仿真器连接PC机和开发板,在CCS3.3环境下调试该系统,最后把程序嵌入到开发板中。连续采集两帧图像的时间间隔为20 ms,为了尽量加快图像处理时间并且满足系统需要,图像大小设定为360×384。测试结果如表1所示。
检测失误的原因是:虽然安装了近红外高通滤光片,但白天阳光强烈时阳光中的近红外光也很多,影响光源的光照强度,因考虑到成本,滤光片的效果一般,影响了系统的试验结果。另外出现判断失误的原因是,测试人员头部左右摆动幅度太大,摄像头采集图像时采集不到人眼图像。
此系统的主要优点是定位方法简单并且实用,针对人眼的不同状态,系统分别采用不同的判断疲劳标准,这种方法减小了误判率,缩短了系统处理时间,但有一些缺陷还需要改进。首先,利用亮瞳效应定位人眼,当驾驶员戴眼镜时会出现亮斑再用此方法定位人眼就会出现错误定位。其次,通过研究表明红外光长期照射人眼不健康,以后可以尝试减少红外光的照射时间,用可见光和红外光混合使用。 |