陸 曉,馮 桑,咼 騰,黃 超
(廣東工業大學,廣東 廣州 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.