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