陳亮亮+劉玉瑩+詹春
摘 要:為了更好的解決無人車定點追蹤的問題,本文提出了一種基于OpenCL的圖像追蹤算法。特定目標物的檢測和連續(xù)跟蹤技術(shù)是目前計算機視覺領(lǐng)域的前沿方向和熱點研究[1]。本設(shè)計是將OpenCV中的CamShift算法移植到DE1-SoC開發(fā)板的OpenCL平臺上。整個設(shè)計分為五個模塊:視頻模塊、音頻模塊、超聲波測距模塊、藍牙音箱驅(qū)動模塊和算法移植模塊。最終小車能夠?qū)崿F(xiàn)定點追蹤固定目標物,且在目標物的正前方10cm處停下同時外接藍牙音箱響起樂曲。
關(guān)鍵詞:OpenCV;定點追蹤;OpenCL;計算機視覺
中圖分類號:TP391.4 文獻標識碼:A
1 引言(Introduction)
特定目標物的檢測和連續(xù)跟蹤技術(shù)是目前計算機視覺領(lǐng)域的前沿方向和熱點研究,因為其融合多學科的先進技術(shù),在諸多行業(yè)廣泛使用,更因為因其背后蘊藏著巨大的經(jīng)濟效益和商機,引起諸多科研機構(gòu)、學術(shù)界和企業(yè)界的關(guān)注。當前很多的科研機構(gòu)、企業(yè)都在該領(lǐng)域投入了大量精力進行研究和探索,取得了豐碩成果[2]。本設(shè)計是將OpenCV中的CamShift算法移植到DE1-SoC開發(fā)板的OpenCL上,根據(jù)鼠標框選區(qū)域的色度光譜來進行固定目標物的跟蹤。
本設(shè)計選擇了友晶科技提供的DE1-SoC開發(fā)板,這款開發(fā)板是Altera Cyclone V SoC的專用平臺[3]。隨著FPGA技術(shù)的高速發(fā)展,芯片規(guī)模不斷提升,帶來了更強的性能的同時,也實現(xiàn)了更低的功耗[4,5]。FPGA憑借其強大的并行信號處理能力,在應(yīng)對控制復雜度低、數(shù)據(jù)量大的運算時具有較強的優(yōu)勢[6]。但是在復雜算法的實現(xiàn)上,F(xiàn)PGA卻遠沒有32位精簡指令集計算機(RISC)處理器靈活方便,所以在設(shè)計具有復雜算法和控制邏輯的系統(tǒng)時,往往需要RISC和FPGA結(jié)合使用[7]。這樣電路設(shè)計的難度也就相應(yīng)地增加。而Altera的Cyclone V SoC將RISC硬核處理器系統(tǒng)和FPGA集成到一起實現(xiàn)了功能的互補,大大減小了硬件電路復雜性和體積,同時也降低了功耗,提高了系統(tǒng)可靠性[8]。
DE1-SoC開發(fā)板提供了板載USB Blaster II JTAG在線調(diào)試功能、SD卡啟動、HPS享1GB DDR3內(nèi)存、FPGA享64MB SDRAM內(nèi)存、VGA高清顯示、ADC采樣、10/100/1000M以太網(wǎng)、USBx2接口、FPGA擴展等豐富的擴展接口和硬件資源。DE1-SoC開發(fā)板系統(tǒng)框圖如圖1所示[9]。
本設(shè)計實現(xiàn)的具體功能如下:
在小車車頭位置固定一個車載高清攝像頭,讀取車正前方可視角大約170°的圖像,與存在FPGA的SDRAM中的基準圖像進行比較,這里我們選取的基準圖像為鼠標在顯示屏上框選的480*480的白色區(qū)域。首先,攝像頭取得480*480的圖像存儲在SDRAM中,然后檢測圖像的中線位置上是否有白色區(qū)域。若是在中線位置沒有白色區(qū)域,則車頭左右擺動微小的角度來定位白色區(qū)域。若是中線位置有白色區(qū)域,發(fā)送一個控制信號給FPGA,驅(qū)動小車直行。若是白色區(qū)域在中線位置的左側(cè),發(fā)送一個控制信號給FPGA,控制小車左轉(zhuǎn)。若是白色區(qū)域在中線位置的右側(cè),發(fā)送一個控制信號給FPGA,控制小車右轉(zhuǎn)。為防止小車與白色固定目標物相碰撞,我們應(yīng)用了HC-SR04超聲波模塊來控制小車與目標物之間至少保持10cm的安全距離,當距離到了10cm時超聲波模塊會返回一個控制信號給FPGA,這時小車停止運動,同時啟動音頻模塊,響起音樂。
2 系統(tǒng)實現(xiàn)原理(System realization principle)
整個系統(tǒng)分為五個模塊:視頻模塊、音頻模塊、超聲波測距模塊、藍牙音箱驅(qū)動模塊和圖像算法移植模塊。整體設(shè)計結(jié)構(gòu)如圖2所示。
其中,音頻模塊、視頻模塊和超聲波測距模塊由FPGA部分控制,藍牙音箱驅(qū)動模塊和圖像算法移植模塊由ARM部分控制。下面將詳細分析各個子模塊的實現(xiàn)原理。
2.1 視頻模塊
在DE1-SoC開發(fā)板上提供了一塊視頻解碼芯片ADV7180,此塊解碼芯片是受I2C總線協(xié)議的控制[10]。視頻顯示原理如圖3所示。
首先通過TD_Detect檢測模塊檢測外部圖像,并選擇合適的視頻制式,如圖4所示,默認視頻制式為NTSC。
其次將采集到的圖像經(jīng)過ITU_656_Decoder解碼生成YCbCr的圖像格式,如圖5所示。
接下來將解碼出來的YCbCr信號隔行寫入到SDRAM中,并且通過SDRAM隔行讀出來,如圖6所示。
最后通過下面三個模塊,將存儲在SDRAM中的YCbCr的信號先轉(zhuǎn)換為4:4:4的圖像格式,再轉(zhuǎn)換為RGB圖像格式,通過VGA接口顯示在屏幕上,如圖7所示。
2.2 音頻模塊
在DE1-SoC開發(fā)板上提供了一塊24位的音頻解碼芯片WM8731,此芯片支持麥克風line-in和line-out。WM8731也受I2C總線協(xié)議控制[11]。音頻模塊實現(xiàn)原理如圖8所示。
其中,核心模塊為子模塊HIGH,是用來存放音頻文件的,我們存放的是《我和你》樂曲的音頻。
2.3 超聲波測距模塊
測距模塊是利用超聲波模塊HC-SR04,它有VCC、GND、Trig、Echo四個管腳,只要給Trig一個大于10μs的高電平,在Echo端口接收到的高電平時間就是此次測距的時間,其測距公式:s=t*340/2,我們可以設(shè)置其高電平的時間來設(shè)置其距離。超聲波測距模塊實現(xiàn)原理如圖9所示。
2.4 藍牙音箱驅(qū)動模塊
我們使用USB的外部擴展,在DE1-SoC開發(fā)板上安裝藍牙音箱的發(fā)送端,然后在Linux系統(tǒng)上與我們的藍牙音響連接,從而實現(xiàn)音頻信號的放大。藍牙音箱驅(qū)動模塊軟件流程如圖10所示[12]。
2.5 圖像算法移植模塊
我們利用一個人臉掃描的算法原理來掃描攝像頭掃描到圖像的顏色,將OpenCV中的CamShift算法(連續(xù)自適應(yīng)的MeanShift算法)移植到DE1-SoC開發(fā)板上的OpenCL上,根據(jù)鼠標框選區(qū)域的色度光譜來進行攝像頭讀入的視頻目標的追蹤,對白色目標物進行定位追蹤[11]。圖像算法移植模塊軟件流程如圖11所示[10]。
3 系統(tǒng)測試(System testing)
將五個子模塊整合在一起,構(gòu)成了一個完整的智能小車定點追蹤系統(tǒng),整體聯(lián)調(diào)的效果圖如圖12和圖13所示。
4 結(jié)論(Conclusion)
(1)在DE1-SoC開發(fā)板上運行Linux,我們首先需要設(shè)定串口終端,把開發(fā)板連接在電腦上,然后找到相應(yīng)的外接裝置。執(zhí)行putty.exe來選擇Serial來進行串口通信,進行保存后就可以關(guān)閉此窗口。接著是制作microSD card Image,下載好image file后使用win32DiskImager.exe來把Linux image刻錄到SD內(nèi),在開發(fā)板上電后,打開putty.exe,當系統(tǒng)boot起來后輸入root并按下enter就可以登入系統(tǒng)。
(2)在DE1-SoC開發(fā)板上實現(xiàn)ARM/HPS到FPGA的通信。首先我們需要先搭建一個Qsys硬件系統(tǒng);然后需要寫一個完成相應(yīng)功能的C語言代碼(主要是結(jié)合開發(fā)板完成地址的映射和寄存器配置及功能實現(xiàn)),我們主要是寫了一個可控制小車左轉(zhuǎn)、右轉(zhuǎn),以及前進后退的控制程序;其次是創(chuàng)建Makefile文件,制定編譯工程的一系列規(guī)則(可根據(jù)案例把文件名和地址改為自己的文件名和地址即可);最后打開embedded文件中的Embedded_Command_Shell.bat,輸入cd切換路徑,然后輸入自己的文件位置,輸入make即可在原文件中生成一個空白文檔形式的可執(zhí)行文件。打開Putty.exe就可以,用u盤把生成的可執(zhí)行文件拷入優(yōu)盤,然后把開發(fā)板上電,輸入相應(yīng)的命令把此文件存入Linux路徑下的root即可。然后在Quartus中下載FPGA硬件sof文件,最后在串口終端輸入“./+生成的文件名即可”。我們主要用ARM控制FPGA的GPIO口。
(3)在DE1-SoC開發(fā)板上提供了一塊視頻解碼芯片ADV7180,此塊解碼芯片是基于I2C總線協(xié)議的傳輸。當外置攝像頭掃描到物體時首先會生成YCbCr格式的圖像,然后存入SDRAM,接著Ycbcr格式通過解碼生成RGB格式,通過VGA接口在顯示屏上顯示圖像。
(4)在DE1-SoC開發(fā)板上提供了一塊24位的音頻解碼芯片WM8731,此塊解碼芯片是基于I2C總線協(xié)議的傳輸。通過鎖相環(huán)分頻后,控制聲音模塊,將固定樂曲的音調(diào)用MIF Maker生成MIF文件存入ROM中,在數(shù)碼管上顯示樂譜,通過外置藍牙音箱進行聲音放大。
(5)硬件小車模塊主要是通過L298模塊來驅(qū)動直流電機控制小車模塊的移動,通過FPGA端口的GPIO口的控制信號來給小車移動的相應(yīng)信號。電源主要采用電池給開發(fā)板供電,然后通過降壓后又給電機以及相應(yīng)模塊供電。
參考文獻(References)
[1] Lazaro J L,Garci J C,Mazo M.Distributed Architecture for Control and Path Planning of Autonomous Vehicles,2001(03):112-116.
[2] Liu Wanli,Wang Zhankui,Zhu Hua.Novel Method of Trajectory Tracking and Posture Stabilization for Mobile Robot[S.I.].IEEE Press,2010.
[3] Regional objects based image retrieval[A].Proceedings of the 2011 Chinese Control and Decision Conference(CCDC),2011.
[4] 何燚,張翼飛.基于雙目視覺的移動機器人避障算法仿真研究[J].計算機仿真,2013(02):21-24.
[5] 汪明磊.智能車輛自主導航中避障路徑規(guī)劃與跟蹤控制研究[D].合肥工業(yè)大學,2013.
[6] 武麗.基于圖像傳感器的黑線提取及抗干擾算法研究[J].電子技術(shù)應(yīng)用,2012(02):11-13.
[7] 崔瑾娟.移動機器人路徑規(guī)劃技術(shù)現(xiàn)狀與展望[J].安陽師范學院學報,2013(02):11-15.
[8] 胡永仕,張陽.基于遺傳模糊算法的智能車輛避障路徑規(guī)劃研究[J].福州大學學報(自然科學版),2015(02):16-20.
[9] 阮曉芳.多路超聲波機器人的模糊避障研究[J].計算機測量與控制,2012(12):51-53.
[10] 友晶科技.Altera DE1-SoC培訓教材[M].友晶科技,2002.
[11] 毛星云,冷雪飛.OpenCV3編程入門[M].電子工業(yè)出版社,2015.
[12] 張茜.智能車輛的軌跡跟蹤控制方法研究[D].哈爾濱工業(yè)大學,2015.
作者簡介:
陳亮亮(1982-),女,碩士,講師.研究領(lǐng)域:信息處理,微電子技術(shù)應(yīng)用.
劉玉瑩(1972-),女,碩士,副教授.研究領(lǐng)域:信息處理.
詹 春(1975-),女,碩士,副教授.研究領(lǐng)域:信息處理.