0引言 隨著居民汽車擁有量的逐年增加以及人們生活節奏的加快,因疲勞駕駛導致的交通事故數也逐年增加。全世界每年因交通事故而導致的死亡人數達60萬,直接經濟損失約125億美元,這些事故中57%的災難性事故與駕駛員疲勞駕駛有關。因此,研究和開發一套非接觸式疲勞駕駛監測系統有著非常大的社會現實意義。 1系統硬件設計 本預警系統主要由微控制器、圖像數據采集模塊、LED預警模塊、通信接口以及電源模塊五大部分組成,如圖1所示。根據處理速度和精度的要求,采用32位ARM處理器。為了減小對駕駛員的影響,更好地實現非接觸式,本文選用了300萬像素的CMOS攝像頭OV3640模塊,與CCD相比,CMOS具有靈敏度高、分辨率高、低功耗以及成本低廉等優勢。 圖1 系統硬件組成 圖2 LED原理圖 圖3 蜂蜜器原理圖 由于Rea16410開發板上沒有蜂鳴器等發聲的裝置,并且蜂鳴器發聲和LED發光的原理類似,所以本文使用LED發光報警。圖2是開發板內LED的原理圖。只要給后面的引腳一個低電平就能使LED發出耀眼的紅光,從而報警。在這里再簡單介紹下蜂鳴器發聲的原理,原理圖如圖3所示給P1引腳低電平就能使蜂鳴器發聲。 2系統軟件設計 2.1開發環境的搭建 如果說系統硬件是骨架和軀體,那么軟件算法就是思想。編寫程序之前需要先建立好軟件開發環境。軟件開發環境的搭建流程圖如圖4所示。 圖4 開發環境搭建流程圖 圖5 人臉示范圖 2.2 Adaboost算法 Adaboost算法的基本思想就是利用大量的分類能力一般的弱分類器(weak classifier)通過一定的方法疊加起來構成一個具有很強分類能力的強分類器(strong classifier)。 Adaboost算法的實現,采用的是輸入圖像的矩形特征,也叫Haar特征。臉部的一些特征可以由矩形特征簡單地描繪。用圖5示范。 上圖中兩個矩形特征,表示出人臉的某些特征。比如中間一幅表示眼睛區域的顏色比臉頰區域的顏色深,右邊一幅表示鼻梁兩側比鼻梁的顏色要深。同樣,其他目標,如眼睛等,為了得到眼睛圖像的信息,必須進行眼睛定位。現有的眼睛定位方法很多,基于膚色模型的方法、灰度投影法、基于模板的方法、基于神經網絡的方法、基于特征提取等。本系統利用Adaboost算法構造一個基于類Haar特征的層疊式分類器來進行人眼定位。類Haar特征通常由2~4個矩形組成,如圖6所示。 圖6 類Haar特征圖 2.3使用Haar識別人眼 人臉的Haar特征分類器是一個XML文件,該文件中會描述人臉的Haar特征值。Haar特征還可以描述眼睛嘴唇或其他物體。 OpenCV已經自帶了人臉的Haar特征分類器。在/usr/locaI/Opencv-2.4.3/data/haarcascades下。haarcascade_frontalface_al t.xml與haarcascade frontalface alt2.xml都是用來檢測人臉的Haar分類器,haarcascade_eve.xm l與haarcascade eye tree eyegla sses.xml都是用來檢測人眼的Haar分類器,這個haarcascades目錄下還有人的全身,嘴唇的Haar分類器。圖7是檢測到的人臉。 圖7 人臉識別圖 圖8 人眼閾值檢測圖 2.4用閾值法判斷疲勞狀態 由上述算法定位眼睛并截取下來,使用sobel實現邊緣檢測再進行二值化處理,將二值化的圖像暫存在臨時文件夾中,調用臨時文件夾中的圖片,for循環遍歷圖片像素點,比較黑色像素點坐標并得到上下最大落差值,據此給定相應的高度閾值。當檢測到的眼睛高度值等于或小于設定的眼睛高度閾值就記錄下來,若連續五幀眼睛的高度值等于或小于閾值,則系統判定駕駛員處于疲勞狀態。整個系統流程如圖9所示。 圖9 眼睛處理流程圖 3系統整體設計方案 3.1系統設計流程 整個系統設計流程:1)檢測攝像頭和開發板;2)獲取圖像。通過攝像頭實時地獲取駕駛員的頭像;3)搭建軟件開發環境。移植QpenCV到ARM下,在Linux下安裝QT;4)人眼方面的處理。首先使用OpenCV里自帶的Haar分類器進行眼睛識別定位,然后將提取出來的眼睛區域圖像進行二值化處理,最后通過掃描二值化圖像的黑像素點,得到眼睛最高點和最低點兩個點的坐標,通過坐標差值計算出眼睛的高度值;5)判斷疲勞。當檢測到眼睛的高度值小于或等于設定的眼睛高度閾值,則記錄下來,若連續五幀眼睛的高度值都小于或等于閾值,則判定駕駛員處于疲勞狀態;6)報警。LED發光報警;7)編寫疲勞駕駛的GUI.流程圖如圖10所示。 圖10 系統流程圖 3.2系統GUI的設計 在人和計算機的互動過程中,有一層面,即我們所說的界面(interface)。GUI(Graphical User Interface)即圖形用戶界面,作為一種可視化的用戶界面,使用圖形界面代替正文界面。它的作用是實現用戶和計算機之間的良好的交互。 應用程序的編譯環境是Qt Creator,使用疲勞預警系統時,剛打開會出現以下顯示begin的一個button,觸摸開始按鈕系統就會進入疲勞監測程序,監測結束判斷疲勞時開發板給led燈以示預警。結束預警系統時,只需輕觸界面的“close”鍵即可返回一開始的begin界面。如圖11所示。 圖11 GUI界面 輕觸eye系統進入主界面后,可以通過界面最下端的顯示區域觀察。當駕駛員閉眼時,系統最下端則會獲取到閉眼狀態的圖像,當連續五幀圖像都是閉眼時,系統就會報警。圖12系統界面。 圖12 系統界面 4結束語 本文是基于ARM處理器設計的駕駛員疲勞預警系統,在搭建好的ARM平臺開發環境的基礎上,利用QT技術設計系統界面,最后基于OpenCV移植駕駛員疲勞預警算法。本文設計的預警系統具有以下優點或特色:1)采用性能強勁的ARM系列處理平臺作為系統的硬件環境,與其他如DSP+ARM的架構相比,在處理性能相差不大的情況下,系統的硬件成本大大降低,更符合經濟的要求;2)相比腦電圖、眼電圖、心電圖等需要接觸駕駛員身體的裝置,本設計采用攝像頭實現非接觸式,更方便使用;3)依據系統各個處理模塊的特點,采用多種算法相結合的辦法實現系統,更加體現實時性、高效性。 |