基于ZYNQ AP SoC的安全駕駛系統(tǒng)設(shè)計
作者 莫長江 李俊宏 駱綺健 陳明波 嶺南師范學(xué)院 信息工程學(xué)院(廣東 湛江 524048)
本文引用地址:http://cafeforensic.com/article/201702/344567.htm摘要:針對系統(tǒng)對實時圖像處理的需求,本文提出了一種基于ZYNQ AP SoC的安全駕駛系統(tǒng)設(shè)計方案。本系統(tǒng)由ZYNQ架構(gòu)中的PL(FPGA)部分負責(zé)驅(qū)動CMOS攝像頭,將采集的圖像進行灰度轉(zhuǎn)換,傳給PS(ARM)部分運行Adaboost算法,對圖像進行人臉檢測,從而獲取駕駛員的眼睛和嘴巴的坐標(biāo)值、面積值和張開度,并利用OpenCV的PERCLOS算法制定疲勞狀態(tài)標(biāo)準(zhǔn),給出預(yù)警信息。同時,ARM通過USB驅(qū)動攝像頭,實現(xiàn)行車記錄,并通過酒精濃度傳感器采集車內(nèi)酒精濃度,實現(xiàn)酒駕預(yù)警。通過實驗表明,本系統(tǒng)性能穩(wěn)定,實現(xiàn)了保障安全駕駛的目的。
引言
疲勞駕駛和酒駕是嚴重的交通違法行為,駕駛員疲勞行車時,會造成反應(yīng)遲鈍、困倦、四肢無力,不能及時發(fā)現(xiàn)路面交通情況以采取準(zhǔn)確的駕駛操控措施,極易發(fā)生交通事故[1]。據(jù)交通部統(tǒng)計,2015年間,由于駕駛員疲勞駕駛導(dǎo)致的交通事故占總數(shù)的10.64%,在重特大交通事故中約占45%。在美國,每年與疲勞駕駛相關(guān)的車禍奪去了15000人的生命。而酒后的駕駛員會出現(xiàn)視覺障礙、運動反射神經(jīng)遲鈍、判斷力降低。有數(shù)據(jù)顯示,在中國,每年因酒駕導(dǎo)致的交通事故占40%~50%,可見,車輛裝備具有疲勞檢測和酒駕提醒的安全駕駛系統(tǒng)的必要性。
1 硬件系統(tǒng)架構(gòu)及方案
基于ZYNQ AP SoC(ZYNQ All Programmable SoC)的安全駕駛系統(tǒng)的硬件系統(tǒng)[2]如圖1所示,系統(tǒng)主要由高速CMOS圖像傳感器Ov7725、130萬像素USB網(wǎng)絡(luò)攝像頭、Zynq-7000可擴展處理芯片、數(shù)據(jù)存儲單元DDR3、HDMI顯示屏、酒精傳感器和喇叭等組成。Xilinx公司的Zynq-7000可擴展處理芯片是整個系統(tǒng)的核心,其包含處理系統(tǒng)(Processing System,PS)和可編程邏輯(Programmable Logic,PL)兩部分,PS部分集成了最高頻率為667GHz的高性能雙核ARM Cortex-A9處理器,而PL部分包含28nm工藝的FPGA(Field-Programmable Gate Array)邏輯單元和DSP資源。
PL端通過I2C協(xié)議驅(qū)動[3]Ov7725攝像頭,將攝像頭采集的圖像數(shù)據(jù)緩存于一個異步時鐘FIFO(First Input First Output)隊列中,而FIFO的寫時鐘由Ov7725攝像頭模塊提供,異步讀時鐘由VDMA Engine提供,并在讀過程進行灰度圖轉(zhuǎn)換,后將數(shù)據(jù)讀入VDMA Engine。
PS端通過AMBA高速總線AXI_HP接口,驅(qū)動DDR3控制器,并讀取一幀圖片數(shù)據(jù),并對圖片進行臉部識別等圖像處理,得到人臉五官特征值。(3)PS端同時通過USB-Host總線對網(wǎng)絡(luò)攝像頭進行配置,并得到圖像數(shù)據(jù),在Linux系統(tǒng)下將圖像通過HDMI顯示器顯示,并將圖像數(shù)據(jù)存儲到SD存儲卡中。(4)PS端在Linux系統(tǒng)下驅(qū)動內(nèi)部集成的12位精度ADC轉(zhuǎn)換器,將酒精傳感器采集的模擬信號進行數(shù)字轉(zhuǎn)換。
預(yù)警提示最終通過調(diào)用程序預(yù)設(shè)的語音組合,由HDMI接口輸出到帶功放或者音頻接口的HDMI顯示設(shè)備,達到提醒駕駛員的目的。
2 軟件系統(tǒng)設(shè)計
軟件系統(tǒng)架構(gòu)如圖2,采用Linaro系統(tǒng),其是在Linux系統(tǒng)基礎(chǔ)下,由ARM、飛思卡爾、IBM、Samsung、ST-Ericsson 及德州儀器 (TI)等半導(dǎo)體廠商聯(lián)合為嵌入式SoC架構(gòu)平臺而設(shè)計的開源系統(tǒng)。其次,本系統(tǒng)使用開源的OpenCV(Open Source Computer Vision Library)進行圖像的高級處理[4],并采用具有跨平臺優(yōu)勢、易擴展的Qt圖形界面開發(fā)框架作為軟件APP的界面設(shè)計與產(chǎn)品封裝。如果說系統(tǒng)硬件是骨架和軀體,那么軟件算法就是思想和靈魂。編寫程序之前,需要搭建好軟件開發(fā)環(huán)境,步驟如圖3。
3 疲勞檢測算法分析
本系統(tǒng)的疲勞檢測流程如圖4,系統(tǒng)啟動后會對駕駛員的臉部信息[5]進行獲取,因為駕駛員在圖像中的位置相對固定,通過基于Haar特征的AdaBoost級聯(lián)分類器[6],對駕駛員進行人臉檢測,得到駕駛員的臉坐標(biāo),并提取檢測的臉部作為ROI(region of interes),圖像繼續(xù)對人眼和嘴巴進行定位,得到人眼和嘴巴的特征值圖像后,進而進行二值化處理,再經(jīng)過形態(tài)學(xué)濾波器,對二值化圖像先腐蝕后膨脹,消除小物體,在纖細點處分離物體,然后通過OpenCV里面的findcontours算子尋找并標(biāo)記輪廓,從而去除圖片中的噪聲和圖片邊緣無關(guān)物體,精確得到眼睛和嘴巴的輪廓,然后對該輪廓計算收斂的面積、高度和寬度。經(jīng)過上述步驟后,便得到了駕駛員的臉部五官坐標(biāo)之間的距離比例關(guān)系。之后,實時地對獲取攝像頭的圖像數(shù)據(jù),按照得到的臉部坐標(biāo)對圖像進行分割,并進行AdaBoost人臉識別處理,再根據(jù)初始化時得到的人眼坐標(biāo),進一步分割圖像,提高運算速度,進行人眼識別,得到實時的人眼坐標(biāo),通過人臉五官的分布比例,定位到嘴巴,然后計算人眼和嘴巴的睜開度、打哈欠數(shù)、閉眼持續(xù)時間,根據(jù)PERCLOS算法[7]制定的標(biāo)準(zhǔn),對駕駛員進行疲勞提醒。
評論