基于FPGA的疲劳驾驶检测算法研究与设计
2016-10-14曹国震彭寒谭伟
曹国震,彭寒,谭伟
(1.西安航空学院陕西西安710077;2.西北工业大学计算机学院,陕西西安710072;3.西安导航技术研究所陕西西安710068)
基于FPGA的疲劳驾驶检测算法研究与设计
曹国震1,彭寒2,谭伟3
(1.西安航空学院陕西西安710077;2.西北工业大学计算机学院,陕西西安710072;3.西安导航技术研究所陕西西安710068)
随着交通工具大幅度增加,同时事故率也居高不下,疲劳驾驶是导致交通事故的一个重要因素。在过去的技术研究和应用中,绝大多数都是基于PC机和DPS的算法研究实现,不适用于车载,而在车载系统中不仅要实时性高而且要求体积小、方便安装使用,因此本文提出一种基于FPGA嵌入式的疲劳驾驶检测技术系统并对在FPGA上算法特点进行了研究、验证,通过实验证明了算法设计有和优化的有效性。
FPGA;Sebol算子;疲劳驾驶;差分法
驾驶疲劳是指驾驶人员在长时间连续行车后,产生生理机能和心理机能的失调,而在客观上出现驾驶技能下降的现象。疲劳后会感到困倦瞌睡,四肢无力,注意力不集中,极易发生道路交通事故。据德国保险公司协会估计,德国大约有25%的导致人员伤亡的交通事故都是因为疲劳驾驶而引发。在法国由于疲劳瞌睡而产生事故的,占人身伤害事故的14.9%,占死亡事故的20.6%。在美国每年因疲劳驾驶导致近200万起车祸。在国内2008年统计的10起死亡率达到10人以上的交通事故有8起是因为司机疲劳驾驶瞌睡造成的。
目前国内外已经有很多单位和研究者对疲劳驾驶进行了各种研究,并发表了相关的学术论文,国外学者Dawson D[1]、LAL S K L[2-3]、等等的研究已经取得的成果,国内学者傅天宇[4]、胡鸿[5]、袁翔[6]等人的研究也取得一定成果,但是都未给出具体实现方法。
因此,研究开发高性能的驾驶者疲劳状态实时监测及预警技术,对改善我国交通安全状况意义重大。在过去的几十年中,疲劳驾驶研究已成为当前智能运输系统研究的一个重要领域与热点,国内外专家和学者都在积极开展相关研究工作。
现有驾驶疲劳检测方法可大致分为四类分别是:基于生理信号的检测方法、基于生理反应信号的检测方法、基于驾驶员操作行为的检测方法和基于车辆轨迹的检测方法。
通过分析对比可知,基于生理反应特征的检测方法无论是在检测的准确行还是在硬件实现的可行性都是较优的。
1 FPGA硬件实现算法研究
在基于视觉的疲劳检测中,经常会被使用的是PERCLOS算法,ERCLOS算法是通过对眼睛闭合时间来判断是否处于疲劳状态。这种方因为判断因素的单一性通常会出现误判错判,本文是采用对驾驶员脸部的眼睛和嘴巴同时检测结果的综合判断方法来确定是否疲劳。
1.1图像采集模块
图像的采集是系统的重要一部分也是后续各模块处理的基础,系统图像的采集模块使用SAA7113H为视频解码器。在系统进入工作之后,FPGA首先通过I2C总线对SAA7113H进行配置和初始化,完成之后,AD_OK信号通知开始采集,在时钟频率为27 MHz下输出8位的ITU656 YUV4:2:2格式图像数据。
8位VPO输出总线是按照U-Y-V-Y-U-Y的顺序输出的,如果每个数据都采集则最后得到的是一帧完整的彩色图像,系统考虑到时间和存储容量大小,选择提取灰度像素点即隔点提取Y中数据值。在一行完成之后,继续下一行,如此循环。
1.2图像预处理模块
图像在形成、传输、接受和处理过程中,不可避免存在着外部干扰和内部干扰。数字化过程中由于量化误差噪声,传输过程中的误差以及人为因素等均会存在着一定程度的噪声十扰,恶化图像的质量,使图像模糊,特征淹没,给图像分析带来困难。因此在进行图像的处理之前需要做预处理即图像的平滑、滤波处理。
可以用来做图像滤波的算法有很多,如卡尔曼滤波、gauss滤波、gabor滤波、均值滤波、中值滤波等等。一般来说简单的算法实用性强但可靠性并不高,复杂算法可靠性高但是实用性却不高,系统在满足可靠性上选取方便实现的实用性强的算法。
文中窗口固定模板设计能充分的利用FPGA的并行流水线结构,能大大加快数据的处理操作节省处理时间。固定的模板窗口通常有3*3,5*5,7*7甚至更大,本文选用3*3窗口模板。
1.3均值滤波器
均值滤波也称线性滤波,其采用的主要方法为邻域平均法。其基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点作为处理后图像在该点上的灰度。在实际的均值滤波处理时,通常是采用模板操作来完成的。
1.4中值滤波器
1971年,由J.W.Jukey首先提出的一种典型非线性平滑滤波技术,它将每一个像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。
本文在上述3*3加速窗口的基础上对快速中值滤波算法进行改进改良,充分利用了FPGA硬件的并行处理和流水操作的优势,设计出一种具有更快速度分列分行中值滤波器。
2 脸部图像目标检测
本文算法应用背景为车辆行驶中的驾驶员的疲劳状态检测,检测的目标位驾驶员面部,系统对驾驶员面部图像是以25帧/秒的采集速度来进行即40 ms采集一幅。在采集时使用的CDD传感器是固定驾驶员前方,这样采集进来的图像主要是以驾驶员的脸部图像为主体的,其背景图像部分较少且稳定。
2.1背景差分检测法
背景差分法是目标检测中常用的一种方法,是利用当前帧图像与背景图像的差分图像来检测目标区域的一种方法,即将当前帧图像与背景图像相减得到一帧新的差分图像,如若差值大于某一阀值,则认为此像素点为运动目标上的点,阀值大小决定了检测算法的灵敏度。
处理步骤为:首先使第n帧图像与背景图像的对应像素点做减法运算得到差分图像,再与阂值比较得到二值化图像。其运算步骤简单,速度快,能得到完整的运动目标信息,但光照等外部条件造成的场景变化对背景差分法检测结果影响较大,需要实时的更新背景模型。本文的背景模型的计算方法:第n+1帧图像在处理时使用的背景模型图像的像素值为前n帧图像像素点的平均值。由于系统在存储容量上的限制,在同一时刻只会存储临近2,3帧图像。
2.2帧间差分检测法
帧间差分法是智能监控系统中常用的一种检测方法,是通过对视频图像序列中相邻两帧做差分运算来获得运动目标轮廓的方法。其算法实现简单,程序设计复杂度低,对光线等场景变化不太敏感,能够适应各种动态环境,稳定性较好,但不能提取完整区域,只能提取边界,同时依赖帧间的时间间隔。对于快速运动的物体,则需选择较小的时间间隔;而对于慢速运动的物体,应该选择较大的时间差。在FPGA的应用实现中,把采集的图像是分为奇偶帧,做帧间差分运算是把奇数帧和偶数帧分开存储再做差分计算,然后与阀值比较判断。
2.3混合差分法
鉴于背景差分和帧间差分法的优缺点,将其结合起来使用,使它们的优势互补从而来克服相互的缺点,提高检测效果。改进思想为:将图像中连续两帧的帧间图像和背景图像直接进行操作,再将结果进行二值化处理得到结果。具体步骤如下:
1)从视频图像中选取背景图像Bn(x,y);
2)选取连续的两帧图像In(x,y)和In-1(x,y);
3)两帧图像相减得到残差Fd(x,y),从中提取出完整目标;
4)利用两个连续的残差Fd(x,y)与Fg(x,y)相交得到运动区域。
5)利用形态学处理得到运动区域。
3 基于sobel算子的眼睛和嘴巴边缘提取
边缘即为灰度变化剧烈的地方,其中包含着需要提取和定位的眼睛和嘴巴的边界信息,sobel以使用边缘提取的方法将其提取出来,sobel边缘提取算法无论是从处理效果和硬件的实现难易程度都是一个比较好的选择。
Sobel算子的优点是算法简单,并且所得的边缘光滑连续,对噪声具有一定的平滑作用。其缺点是边界较粗,会检测出一些伪边缘,边缘定位精度不够高,因此为了在FPGA上实现,本文设计了sobel算子加速流程,具体如图1所示。
图1 sobel算子加速图
4 实验分析
实验一、sebol算子加速实验
在SignalTapII逻辑分析仪下采集到的sobel边缘检测模块工作波形如下图所示,图中clkin为灰度像素时钟的二分频时钟,data_in为滤波模块输出的图像灰度值,在延时10 ns以后输出给边缘检测模块。边缘检测模块中p1-p9为选取的3x3模板内的9个像素值,edge_out为边缘检测输出结果,line_cnt为处理的当前行值,取仿真波形中第187行,pix_cnt为当前行的像素计数值,addr_out为生成的像素地址,将数据写入SRAM的此地址中。图示在每一个像素clk_in输入以后,在每一个时钟的高电平和低电平期间均输出一个滤波结果,经仿真测试算法实现可靠,实验结果如图2所示。
实验二、人脸边缘提取与检测实验
实验平台为一台笔记本电脑用于算法仿真,一块FPGA DE2开发板,开发板自带显示屏与摄像头以及必要的附属设备。首先从一段视频里选择一段有眨眼动作的片段,如图3所示;然后利用sobel算子进行整体运算识别出眼睛和嘴巴,从图中可以清晰地找到眼睛和嘴巴的轮廓如图4所示;最后使用混合差分法检测是否有眨眼的动作,可以看出人在眨眼的时候图像像素有明显的变化,如图5所示。
图2 sebol算子加速实验图
图3 视频图像
图4 轮廓提取
5 结论
文中设计了一种基于FPGA的视觉疲劳驾驶系统,比对分析了目标检测系统中常用的算法,并对部分算法做了改进和实现,为了能充分发挥出FPGA硬件的快速性,采用和提出了一种硬件流水线的快速结构,使得图像数据的处理都能按照流水方式进行,节省了大量的重复数据读取操作时间,同时也对目标检测系统中的算法做了硬件的实现,如中值、均值滤波、Sobel检测等,通过实验证明了论文设计的有效性。
图5 混合差分
[1]Dawson D,Lamond,N,Donkin K,et al.Quantitative similarity between the cognitive psychomotor performance decrement associated with sustained akefulness and alcohol intoxication.In Hartley,L.R(Ed)Managing Fatigue in Transportation Proceedings of the Third International Conference on Fatigue and Transportation,Fremantle,Western Australia[C].Oxford UK.Elsevier Science Ltd,1998.
[2]LAL S K L,CRAIG A.Electroence Phalography Activity Associated with Driver Fatigue:Implications for a Fatigue Countermeasur Device[J].Joumal of Psychophysiology,2001,15(3):183-189.
[3]LAL S K L,CRAIG A,BOORD P,et al.Development of an Algorithm for an EEG-based Driver Fatigue Countermeasure[J].Journal of Safely Research,2003,34(3):321-328.
[4]傅天宇.防疲劳驾驶系统的设计[J].森林工程,2014,2(30): 114-149.
[5]胡鸿,易灿南,廖远志,等.车载驾驶员疲劳驾驶预警与控制系统研究[J].中国安全生产科学技术,2014,10(11):101-106.
[6]袁翔,孙香梅.疲劳驾驶检测方法研究进展[J].汽车工程学报,2012,3(2):157-164.
Fatigue driving detection algorithm research based on FPGA
CAO Guo-zhen1,PENG Han2,TAN Wei3
(1.Xi'an Aviation Academy,Xi'an 710077,China;2.School of Computer Science,Northwestern Polytechnical University,Xi'an 710072,China;3.Xi'an Institute of Navigation Technology,Xi'an 710068,China)
With the vehicles increase,accident rate is high at the same time,the fatigue driving is an important factor which causes the traffic accident.In technology research and application of the past,the vast majority are based on PC and DPS algorithm implementation,does not apply to car,and in the on-board system should not only high real-time performance and installation requirements of small size,easy to use,so this paper presents a fatigue detection technology based on FPGA embedded system and the algorithm on the FPGA is studied,validation,experiments prove the effectiveness of the algorithm is designed and optimized.
FPGA;Sebol operator;fatigue;finite difference method
TN911.73
A
1674-6236(2016)12-0165-03
2015-06-21稿件编号:201506198
国家青年科学基金(61201321)
曹国震(1980—),男,陕西榆林人,硕士研究生,讲师。研究方向:计算机应用技术、信息安全。