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