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