曹國震,彭寒,譚偉
(1.西安航空學院陜西西安710077;2.西北工業(yè)大學計算機學院,陜西西安710072;3.西安導航技術(shù)研究所陜西西安710068)
基于FPGA的疲勞駕駛檢測算法研究與設計
曹國震1,彭寒2,譚偉3
(1.西安航空學院陜西西安710077;2.西北工業(yè)大學計算機學院,陜西西安710072;3.西安導航技術(shù)研究所陜西西安710068)
隨著交通工具大幅度增加,同時事故率也居高不下,疲勞駕駛是導致交通事故的一個重要因素。在過去的技術(shù)研究和應用中,絕大多數(shù)都是基于PC機和DPS的算法研究實現(xiàn),不適用于車載,而在車載系統(tǒng)中不僅要實時性高而且要求體積小、方便安裝使用,因此本文提出一種基于FPGA嵌入式的疲勞駕駛檢測技術(shù)系統(tǒng)并對在FPGA上算法特點進行了研究、驗證,通過實驗證明了算法設計有和優(yōu)化的有效性。
FPGA;Sebol算子;疲勞駕駛;差分法
駕駛疲勞是指駕駛?cè)藛T在長時間連續(xù)行車后,產(chǎn)生生理機能和心理機能的失調(diào),而在客觀上出現(xiàn)駕駛技能下降的現(xiàn)象。疲勞后會感到困倦瞌睡,四肢無力,注意力不集中,極易發(fā)生道路交通事故。據(jù)德國保險公司協(xié)會估計,德國大約有25%的導致人員傷亡的交通事故都是因為疲勞駕駛而引發(fā)。在法國由于疲勞瞌睡而產(chǎn)生事故的,占人身傷害事故的14.9%,占死亡事故的20.6%。在美國每年因疲勞駕駛導致近200萬起車禍。在國內(nèi)2008年統(tǒng)計的10起死亡率達到10人以上的交通事故有8起是因為司機疲勞駕駛瞌睡造成的。
目前國內(nèi)外已經(jīng)有很多單位和研究者對疲勞駕駛進行了各種研究,并發(fā)表了相關(guān)的學術(shù)論文,國外學者Dawson D[1]、LAL S K L[2-3]、等等的研究已經(jīng)取得的成果,國內(nèi)學者傅天宇[4]、胡鴻[5]、袁翔[6]等人的研究也取得一定成果,但是都未給出具體實現(xiàn)方法。
因此,研究開發(fā)高性能的駕駛者疲勞狀態(tài)實時監(jiān)測及預警技術(shù),對改善我國交通安全狀況意義重大。在過去的幾十年中,疲勞駕駛研究已成為當前智能運輸系統(tǒng)研究的一個重要領(lǐng)域與熱點,國內(nèi)外專家和學者都在積極開展相關(guān)研究工作。
現(xiàn)有駕駛疲勞檢測方法可大致分為四類分別是:基于生理信號的檢測方法、基于生理反應信號的檢測方法、基于駕駛員操作行為的檢測方法和基于車輛軌跡的檢測方法。
通過分析對比可知,基于生理反應特征的檢測方法無論是在檢測的準確行還是在硬件實現(xiàn)的可行性都是較優(yōu)的。
在基于視覺的疲勞檢測中,經(jīng)常會被使用的是PERCLOS算法,ERCLOS算法是通過對眼睛閉合時間來判斷是否處于疲勞狀態(tài)。這種方因為判斷因素的單一性通常會出現(xiàn)誤判錯判,本文是采用對駕駛員臉部的眼睛和嘴巴同時檢測結(jié)果的綜合判斷方法來確定是否疲勞。
1.1圖像采集模塊
圖像的采集是系統(tǒng)的重要一部分也是后續(xù)各模塊處理的基礎,系統(tǒng)圖像的采集模塊使用SAA7113H為視頻解碼器。在系統(tǒng)進入工作之后,F(xiàn)PGA首先通過I2C總線對SAA7113H進行配置和初始化,完成之后,AD_OK信號通知開始采集,在時鐘頻率為27 MHz下輸出8位的ITU656 YUV4:2:2格式圖像數(shù)據(jù)。
8位VPO輸出總線是按照U-Y-V-Y-U-Y的順序輸出的,如果每個數(shù)據(jù)都采集則最后得到的是一幀完整的彩色圖像,系統(tǒng)考慮到時間和存儲容量大小,選擇提取灰度像素點即隔點提取Y中數(shù)據(jù)值。在一行完成之后,繼續(xù)下一行,如此循環(huán)。
1.2圖像預處理模塊
圖像在形成、傳輸、接受和處理過程中,不可避免存在著外部干擾和內(nèi)部干擾。數(shù)字化過程中由于量化誤差噪聲,傳輸過程中的誤差以及人為因素等均會存在著一定程度的噪聲十擾,惡化圖像的質(zhì)量,使圖像模糊,特征淹沒,給圖像分析帶來困難。因此在進行圖像的處理之前需要做預處理即圖像的平滑、濾波處理。
可以用來做圖像濾波的算法有很多,如卡爾曼濾波、gauss濾波、gabor濾波、均值濾波、中值濾波等等。一般來說簡單的算法實用性強但可靠性并不高,復雜算法可靠性高但是實用性卻不高,系統(tǒng)在滿足可靠性上選取方便實現(xiàn)的實用性強的算法。
文中窗口固定模板設計能充分的利用FPGA的并行流水線結(jié)構(gòu),能大大加快數(shù)據(jù)的處理操作節(jié)省處理時間。固定的模板窗口通常有3*3,5*5,7*7甚至更大,本文選用3*3窗口模板。
1.3均值濾波器
均值濾波也稱線性濾波,其采用的主要方法為鄰域平均法。其基本原理是用均值代替原圖像中的各個像素值,即對待處理的當前像素點選擇一個模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當前像素點作為處理后圖像在該點上的灰度。在實際的均值濾波處理時,通常是采用模板操作來完成的。
1.4中值濾波器
1971年,由J.W.Jukey首先提出的一種典型非線性平滑濾波技術(shù),它將每一個像素點的灰度值設置為該點某鄰域窗口內(nèi)的所有像素點灰度值的中值。
本文在上述3*3加速窗口的基礎上對快速中值濾波算法進行改進改良,充分利用了FPGA硬件的并行處理和流水操作的優(yōu)勢,設計出一種具有更快速度分列分行中值濾波器。
本文算法應用背景為車輛行駛中的駕駛員的疲勞狀態(tài)檢測,檢測的目標位駕駛員面部,系統(tǒng)對駕駛員面部圖像是以25幀/秒的采集速度來進行即40 ms采集一幅。在采集時使用的CDD傳感器是固定駕駛員前方,這樣采集進來的圖像主要是以駕駛員的臉部圖像為主體的,其背景圖像部分較少且穩(wěn)定。
2.1背景差分檢測法
背景差分法是目標檢測中常用的一種方法,是利用當前幀圖像與背景圖像的差分圖像來檢測目標區(qū)域的一種方法,即將當前幀圖像與背景圖像相減得到一幀新的差分圖像,如若差值大于某一閥值,則認為此像素點為運動目標上的點,閥值大小決定了檢測算法的靈敏度。
處理步驟為:首先使第n幀圖像與背景圖像的對應像素點做減法運算得到差分圖像,再與閡值比較得到二值化圖像。其運算步驟簡單,速度快,能得到完整的運動目標信息,但光照等外部條件造成的場景變化對背景差分法檢測結(jié)果影響較大,需要實時的更新背景模型。本文的背景模型的計算方法:第n+1幀圖像在處理時使用的背景模型圖像的像素值為前n幀圖像像素點的平均值。由于系統(tǒng)在存儲容量上的限制,在同一時刻只會存儲臨近2,3幀圖像。
2.2幀間差分檢測法
幀間差分法是智能監(jiān)控系統(tǒng)中常用的一種檢測方法,是通過對視頻圖像序列中相鄰兩幀做差分運算來獲得運動目標輪廓的方法。其算法實現(xiàn)簡單,程序設計復雜度低,對光線等場景變化不太敏感,能夠適應各種動態(tài)環(huán)境,穩(wěn)定性較好,但不能提取完整區(qū)域,只能提取邊界,同時依賴幀間的時間間隔。對于快速運動的物體,則需選擇較小的時間間隔;而對于慢速運動的物體,應該選擇較大的時間差。在FPGA的應用實現(xiàn)中,把采集的圖像是分為奇偶幀,做幀間差分運算是把奇數(shù)幀和偶數(shù)幀分開存儲再做差分計算,然后與閥值比較判斷。
2.3混合差分法
鑒于背景差分和幀間差分法的優(yōu)缺點,將其結(jié)合起來使用,使它們的優(yōu)勢互補從而來克服相互的缺點,提高檢測效果。改進思想為:將圖像中連續(xù)兩幀的幀間圖像和背景圖像直接進行操作,再將結(jié)果進行二值化處理得到結(jié)果。具體步驟如下:
1)從視頻圖像中選取背景圖像Bn(x,y);
2)選取連續(xù)的兩幀圖像In(x,y)和In-1(x,y);
3)兩幀圖像相減得到殘差Fd(x,y),從中提取出完整目標;
4)利用兩個連續(xù)的殘差Fd(x,y)與Fg(x,y)相交得到運動區(qū)域。
5)利用形態(tài)學處理得到運動區(qū)域。
邊緣即為灰度變化劇烈的地方,其中包含著需要提取和定位的眼睛和嘴巴的邊界信息,sobel以使用邊緣提取的方法將其提取出來,sobel邊緣提取算法無論是從處理效果和硬件的實現(xiàn)難易程度都是一個比較好的選擇。
Sobel算子的優(yōu)點是算法簡單,并且所得的邊緣光滑連續(xù),對噪聲具有一定的平滑作用。其缺點是邊界較粗,會檢測出一些偽邊緣,邊緣定位精度不夠高,因此為了在FPGA上實現(xiàn),本文設計了sobel算子加速流程,具體如圖1所示。
圖1 sobel算子加速圖
實驗一、sebol算子加速實驗
在SignalTapII邏輯分析儀下采集到的sobel邊緣檢測模塊工作波形如下圖所示,圖中clkin為灰度像素時鐘的二分頻時鐘,data_in為濾波模塊輸出的圖像灰度值,在延時10 ns以后輸出給邊緣檢測模塊。邊緣檢測模塊中p1-p9為選取的3x3模板內(nèi)的9個像素值,edge_out為邊緣檢測輸出結(jié)果,line_cnt為處理的當前行值,取仿真波形中第187行,pix_cnt為當前行的像素計數(shù)值,addr_out為生成的像素地址,將數(shù)據(jù)寫入SRAM的此地址中。圖示在每一個像素clk_in輸入以后,在每一個時鐘的高電平和低電平期間均輸出一個濾波結(jié)果,經(jīng)仿真測試算法實現(xiàn)可靠,實驗結(jié)果如圖2所示。
實驗二、人臉邊緣提取與檢測實驗
實驗平臺為一臺筆記本電腦用于算法仿真,一塊FPGA DE2開發(fā)板,開發(fā)板自帶顯示屏與攝像頭以及必要的附屬設備。首先從一段視頻里選擇一段有眨眼動作的片段,如圖3所示;然后利用sobel算子進行整體運算識別出眼睛和嘴巴,從圖中可以清晰地找到眼睛和嘴巴的輪廓如圖4所示;最后使用混合差分法檢測是否有眨眼的動作,可以看出人在眨眼的時候圖像像素有明顯的變化,如圖5所示。
圖2 sebol算子加速實驗圖
圖3 視頻圖像
圖4 輪廓提取
文中設計了一種基于FPGA的視覺疲勞駕駛系統(tǒng),比對分析了目標檢測系統(tǒng)中常用的算法,并對部分算法做了改進和實現(xiàn),為了能充分發(fā)揮出FPGA硬件的快速性,采用和提出了一種硬件流水線的快速結(jié)構(gòu),使得圖像數(shù)據(jù)的處理都能按照流水方式進行,節(jié)省了大量的重復數(shù)據(jù)讀取操作時間,同時也對目標檢測系統(tǒng)中的算法做了硬件的實現(xiàn),如中值、均值濾波、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,F(xiàn)remantle,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]傅天宇.防疲勞駕駛系統(tǒng)的設計[J].森林工程,2014,2(30): 114-149.
[5]胡鴻,易燦南,廖遠志,等.車載駕駛員疲勞駕駛預警與控制系統(tǒng)研究[J].中國安全生產(chǎn)科學技術(shù),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—),男,陜西榆林人,碩士研究生,講師。研究方向:計算機應用技術(shù)、信息安全。