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