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