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