基于ZYNQ AP SoC的安全駕駛系統設計
具體算法分析:
本文引用地址:http://dyxdggzs.com/article/201702/344567.htm(1)本系統的臉部采集算法采用基于Haar特征的AdaBoost級聯(lián)分類(lèi)器,其具有精度和速度較快的優(yōu)點(diǎn),在A(yíng)daBoost算法中,核心思想是針對同一個(gè)訓練集訓練不同的弱分類(lèi)器,然后聚合起來(lái),構成強分類(lèi)器。它根據每次訓練集中的每個(gè)樣本進(jìn)行分類(lèi)判決,以及上一次的總體分類(lèi)的準確度來(lái)決定每個(gè)樣本的權值,最后將每次訓練得到的分類(lèi)器融合起來(lái),作為最終的判決分類(lèi)器,運行在A(yíng)RM嵌入式系統上,檢測速度較慢。而因為駕駛位置相對固定,當系統啟動(dòng)時(shí),通過(guò)detectMultiScale函數對駕駛員位置和臉部五官進(jìn)行初定位,這樣可以通過(guò)駕駛員坐標,分割圖像,降低分類(lèi)器級數,提高檢測速度。而且,駕駛員駕駛機動(dòng)時(shí)候,位置基本無(wú)變化,可采取隔2幀圖像檢測一次人臉位置,并更新的駕駛員位置坐標值。另外,由于人臉五官在臉部中的位置分布是固定的,可采用初始化時(shí)得到的五官坐標分布與五官之間的距離,提取檢測圖像的ROI部分,進(jìn)一步降低運算量。 部分程序如下:
pFaceCas->detectMultiScale(dstImFull,faceRectInit,1.1,2,0,Size(30,30));
pEyesCas->detectMultiScale(dstGImeyes,eyeRectInit,1.1,4,0|CV_HAAR_SCALE_IMAGE , Size(5,5) );
faceRectInitV=Rect(faceRectInitVX,faceRectInitVY,faceRectInitVW,faceRectInitVH*6/5);
dstGImface = dstImFull(faceRectInitV);
檢測效果如圖5,檢測統計結果如表1。
(2)采用morphologyEx函數,對識別提取的眼和嘴巴ROI圖像進(jìn)行開(kāi)運算形態(tài)學(xué)濾波。開(kāi)運算算法實(shí)際是對圖像先進(jìn)性腐蝕后膨脹,而形態(tài)學(xué)圖象處理表現為一種鄰域運算形式,一種特殊定義的鄰域稱(chēng)之為“結構元素”(Structure Element),它在每個(gè)像素位置上與二值圖象對應的區域進(jìn)行特定的邏輯運算,邏輯運算的結果為輸出圖象的相應像素。開(kāi)運算能達到消除小物體、在纖細點(diǎn)處分離物體、平滑較大物體的邊界的同時(shí)并不明顯改變其面積的效果,假設給定二值圖象B(x,y)和作為結構元素的二值模板X(qián)(i,j)。
腐蝕運算:
開(kāi)運算:
開(kāi)運算程序如下:
Mat element = getStructuringElement(MORPH_RECT,Size(3,3));
Mat element2 = getStructuringElement(MORPH_RECT,Size(7,7));
morphologyEx(leyeT,leyeTm,MORPH_ERODE,element); // 腐蝕
morphologyEx(leyeTm,leyeTm,MORPH_DILATE,element2); // 膨脹
開(kāi)運算效果如圖6。
(3)OpenCV里面的findcontours算子能標記并提取臉部五官輪廓,通過(guò)提取出來(lái)的輪廓,計算得到眼睛、嘴巴的最大逼近張開(kāi)度,然后通過(guò)比較,可判斷出駕駛員的眼睛開(kāi)閉狀態(tài)、打哈欠次數。處理效果如圖7,代碼實(shí)現如下:
vector
vector
Mat image1 = dstTImmouth.clone();
findContours(image1,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);
int i = 0 ;int crea;
for( ;i
crea = fabs(contourArea(contours[i]));
if(crea>=500) {cout<
qDebug()<<crea<<endl; p="" }
Rect box = boundingRect(contours[i]);
dstTImmouth = dstTImmouth(box);
4 行車(chē)記錄與酒精檢測
隨著(zhù)道路上機動(dòng)車(chē)數量的增多,在開(kāi)車(chē)的路上難免有小刮小碰,遇到撞車(chē)黨和碰瓷黨的事件常有發(fā)生,所以本系統集成有行車(chē)記錄儀功能,記錄每一個(gè)行車(chē)過(guò)程的細節,維護司機的合法權益。如圖8,系統具有清除內存、內存剩余量、續航時(shí)間報時(shí)和回播功能。同時(shí),系統集成了12位精度的數模轉換器和酒精傳感器,實(shí)時(shí)對酒駕行為提出警報。
5 結論
本系統在ZYNQ ApSoC平臺下,集成疲勞檢測、行車(chē)記錄、酒駕判斷功能,對人臉檢測算法進(jìn)行了嵌入式架構移植,對AdaBoost算法進(jìn)行了嵌入式優(yōu)化,利用ZYNQ的ARM+FPGA的架構優(yōu)勢,在(PL)FPGA端對圖像進(jìn)行了灰度轉換預處理,在PS(ARM)端,對來(lái)自PL端的圖像進(jìn)行了降噪和人臉檢測、人臉五官特征值提取。
本系統的運行圖如圖9,通過(guò)實(shí)驗,參考表1,識別率較高,達到了預定的功能,適用于車(chē)輛防止交通事故的發(fā)生等一體化行車(chē)安全場(chǎng)景,加以完善,有廣泛的應用前景。
參考文獻:
[1]李慶梅,鐘燕科.機車(chē)司機疲勞駕駛監測[J].制造業(yè)自動(dòng)化,2011(24):50-53.
[2]Mike Santarini.Zynq-7000 EPP為創(chuàng )新開(kāi)啟新時(shí)代[J].電子技術(shù)應用,2011(07):29-31.
[3]邢艷芳,張延冬.基于Zynq的OLED驅動(dòng)設計[J].液晶與顯示,2014(02):75-79.
[4]逯沛龍,符意德.圖像預處理算法在ZYNQ芯片上的設計與實(shí)現[J].計算機與數字工程,2015(06):184-186+206.
[5]張瑩,李勇平,敖新宇.基于OpenCV的通用人臉檢測模塊設計[J].計算機工程與科學(xué),2011(01):101-105.
[6]楊定禮,趙正敏,白秋產(chǎn).基于A(yíng)dboost與空間支持向量域分類(lèi)的人臉檢測[J].電路與系統學(xué)報,2013(02):325-329.
[7]陳健.基于眼動(dòng)數據和PERCLOS的管制員疲勞狀態(tài)研究[J].無(wú)線(xiàn)互聯(lián)科技,2015(10):135-136.
[8]楊捷,高增梁,湯健彬.基于A(yíng)RM的新型行車(chē)記錄儀[J].儀器儀表學(xué)報,2004:320-321.
本文來(lái)源于《電子產(chǎn)品世界》2017年第2期第38頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。
評論