陆 晓,冯 桑,呙 腾,黄 超
(广东工业大学,广东 广州 510006)
疲劳驾驶是交通事故的一个主要原因,如果能在疲劳产生的初期给驾驶员进行预警提示,那么就会大大减少交通事故的发生。因此,在驾驶中实时监测驾驶员的疲劳状况成为当前国内外研究的热点。目前,疲劳驾驶的检测方法主要包括检测驾驶员的生理特征,如脑电图、眼电图、心电图等[1],检测驾驶员身体动作特征,如眼部的动作变化[2-3]、驾驶员头部动作与特征[4-6]、手部特征 (利用转向盘上的传感器检测驾驶员对转向盘施加的压力,来判断是否疲劳驾驶的安全装置[7])。其中,检测驾驶员眼部特征的方法由于其直接、非接触性等优点,是目前被广泛采用的方法。
PERCLOS(Percentage of Eyelid Closure Over the Pupil over time)是由卡内基梅隆研究所提出的,指的是在一定的时间内眼睛闭合所占的时间比例。在实际应用过程中,眼睛闭合程度超过某一标准的时间占某一特定时间的百分比,表现出与驾驶疲劳程度较好的相关性。通过摄像头获取驾驶员眼睛闭合时间的数据,作为判断驾驶员疲劳程度的依据。PERCLOS计算公式:
式中:P(t)——眼睛的开闭状况;N——t时间内采集到的有效帧数;T——疲劳评价系数。
当眼睛闭合超过80%时P(t)=1,反之P(t)=0。如果PERCLOS大于40%,就认为驾驶员处于疲劳状态[8]。
准确地识别人眼是判断驾驶员疲劳状况的关键环节。常用的人眼识别方法有:①模板匹配法:通过在输入图像上滑动图像块,对实际的图像块和输入图像进行匹配;②灰度投影法:利用人脸特征的灰度值差别和人脸的几何分布关系确定人眼位置。
本文采取模板匹配与灰度投影结合的方法来进行人眼的识别,先用模板匹配找出眼睛所在的区域,然后对人眼区域进行灰度投影,得出人眼的开闭状况。
系统主要包括OV7670 CMOS摄像头、FIFO存储芯片AL422B、AVR单片机以及处理图像的车载PC,硬件结构如图1所示。其中,摄像头采用OV7670摄像头,其灵敏度高,可以使用低电压驱动,具有标准的SCCB接口,支持VGA、YUV422、RGB565等格式输出。AL422B作为FIFO存储芯片,存储采集到的图像信息。AVR芯片ATMEGA16L设置摄像头的工作参数,从AL422B读取图像数据并传送到车载PC进行处理。
系统上电后,首先由摄像头采集图像信息并将其存储在Al422B存储芯片中,然后由ATMEGA16L读取图像数据并将其传送到车载PC,车载PC对图像进行处理,识别人眼的状态,再根据PERCLOS方法判断驾驶员的疲劳状况,从而给出预警信息。
数字图像采集中常用的有CMOS(Complementary Metal-Oxide-Semiconductor)与CCD(Charge Coupled Device)摄像头,与CCD相比,CMOS具有灵敏度高、分辨率高、低功耗以及成本低廉等优势,所以本文采用CMOS摄像头OV7670(图2)。
OV7670摄像头是整个系统的最前端,其集成了一个640×480的感光阵列、帧 (行)控制电路、视频时序产生电路、模拟信号处理电路、A/D转换电路、数字信号输出电路及寄存器SCCB编程接口。感光阵列得到原始的彩色图像信号后,模拟处理电路完成诸如颜色分离与均衡、增益控制、gamma校正、白电平调整等主要的信号处理工作,最后可根据需要输出多种标准的视频信号。视频时序产生电路用于产生行同步、场同步、混合视频同步等多种同步信号和像素时钟等多种内部时钟信号,外部控制器可通过SCCB总线接口设置或读取OV7670的工作状态、工作方式以及数据的输出格式等,其SCCB控制时序如图3所示。
其中,SCL为由主机发出的单向信号线,输出时钟信号,总线空闲时主机驱动SCL为1,当总线挂起时主机驱动SCL为0;SDA为双向数据传输线,既可以由主机驱动也可以由从机驱动。当总线空闲时保持浮动,状态不固定 (0、1或三态高阻)。当总线挂起时,驱动SDA为0。为了不让该总线产生未知的状态,主机和从机必须保持SDA的电平。
图4为OV7670、ATMEGA16L与AL422B的接线图,HREF为行同步信号,VSYNC为场同步信号,SCL与SDA分别是SCCB总线的时钟线与数据线。其中VSYNC为场同步信号,其下降沿表示一帧图像的开始,HREF为行同步信号,高电平时表示一行的图像数据开始输出。一帧图像开始后,仅当HREF为高,PCLK上升沿时,数据为有效的像素值。对图像数据的采集是通过中断触发的,这里用VSYNC、HREF、PCLK的上升沿触发3个中断。当采集到VSYNC中断时开始一帧图像数据的采集,HREF中断到来时开始采集一行图像数据,一行数据采集完成后,等待下次HREF中断,开始采集下一行数据,以此类推。对HREF中断采集480次,就得到640×480像素点的一帧图像的数据。
由于OV7670产生的数据在速率上与接口电路不匹配,因此数据缓存必不可少。AL422B是Aver-Logic公司推出的一个存储容量为393216字节×8位的FIFO存储芯片。由于其所有的寻址、刷新等操作都由集成在芯片内部的控制系统完成,因而使用非常简单。目前市场上的FIFO存储体的存储容量都较小,很难适应视频技术的高速发展,而AL422B的存储空间为3M位,对于普通的视频应用绰绰有余,并且它加快了存取速度,因此可以在本系统中应用。AL422B的内部功能如图5所示。
AL422B的写时序如图6所示。WCK为AL422B的写入时钟,周期最大为1000ns,最小为20ns,其上升沿时数据写入,随着该时钟输入,其内部写指针自动增加。显然,AL422B的速度足够。
AL422B的读时序如图7所示。图中RCK为AL422B的读出时钟,周期最大为1 000 ns,最小为20 ns。当/RE和/OE有效时,在RCK上升沿数据有效,随着该时钟输入,其内部的读指针自动增加。当单片机的主频为12 MHz,可以用单片机中的ALE/WR/RD合成RCK信号。再利用图像芯片的数据输出特性和单片机的中断功能及AL422B的特点加以解决。对于容量问题,利用AL422B的大存储容量 (3M位)就可以满足要求。
下位机程序基于AVR Studio环境开发,运行于AVR芯片ATMEGA16L[9],主要实现配置OV7670工作参数,读取并传输图像数据的功能。首先对AL422B、OV7670进行初始化,通过SCCB总线配置OV7670的寄存器,使其输出RGB565格式图像数据,存储到缓存芯片AL422B,由ATMEGA16L将图像数据传送到车载PC,下位机程序流程如图8所示。
采用帧率CMOS摄像头OV7670采集驾驶员的脸部图像,并以6s作为一个检测周期 (时间取太短,误警率会增加;时间取太长,则不能及时报警),并每隔0.33 s取1帧图像 (即每秒取3帧图像)进行疲劳检测,每个检测周期中包含18帧图像。由于已经实现了对驾驶员眼睛状态的识别,则可以通过统计一个检测周期内,驾驶员眼睛闭合状态的帧数和周期内总的帧数,得到驾驶员的疲劳指数,即:PERCLOS=闭眼帧数/总帧数×100%。开眼帧与闭眼帧的二值图与灰度投影如图9所示。
根据前面介绍过的PERCLOS方法,当PERCLOS大于指定阈值40%时,则判定驾驶员处于疲劳驾驶状态,并给予驾驶员预警信息。
基于以上硬件与软件的设计,实现了AVR单片机对CMOS摄像头OV7670的配置,用AL422B存储并转发图像数据,将图像数据传送到车载PC,并利用上位机软件实现了图像数据的处理。系统运行良好,很好地识别了人眼的位置及状态,并能够根据图像信息判断驾驶员的疲劳状态,给出有效的预警。
[1]Lin CT,Ko LW,Chung IF,et al.Adaptive EEG-based Alertness Estimation System by Using ICA-based Fuzzy Neural Networks[C].IEEE Transactions on Circuits and Systems,2006,53(11):2469-2476.
[2]Wang RB,Guo KY,Shi SM,et al.A monitoring method of driver fatigue behavior based on machine vision[C]. IEEE Symposium on Intelligent Vehicles,2003:110-113.
[3]D'Orazio T,Leo M,Guaragnella C,et al.A visual approach fordriverinattention detection[C].Pattern Recognition,2007,40(8):2341-2355.
[4]施树明,金立生,王荣本,等.基于机器视觉的驾驶员嘴部状态检测方法[J].吉林大学学报,2004,34(2):232-236.
[5]Kithil PW,Jones RD,Jone M.Development of driver alertnessdetection systemsusingoverhead capacitive sensor array[C].SAE Technical Paper Series,982292, SAEInternational,1998.
[6]Luis M,Nuevo J,Sotelo MA,et al.Real-time system for monitoring driver vigilance[C].IEEE Transactions on Intelligent Transportation Systems,2006,7(1):63-77.
[7]Thum CC,Mustafa MM,Hussain A,et al.Driver fatigue detection using steering grip force[C].Student Conference on Research and Development SCOReD Proceedings, 2003:45-48.
[8]Brown,I.D.Pros Peets for technological countermeasures against driver fatigue.Accident Analysis and Prevention[J].1997,29(4):132-143.
[9]马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2011.