基于FPGA+DSP的智能車全景視覺(jué)系統(tǒng)
基于單相機(jī)的全景視覺(jué)系統(tǒng)是利用凸面鏡反射四周圖像進(jìn)行定位,在計(jì)算資源有限時(shí)是一種較好的選擇,且視覺(jué)導(dǎo)航等方向的應(yīng)用也成為一種最實(shí)用的方法[1-2],這種方案雖然視野開(kāi)闊,但獲取的信息有限,真實(shí)的系統(tǒng)中很難應(yīng)用。隨著芯片計(jì)算能力的不斷提高,基于多通道的全景視覺(jué)系統(tǒng)已逐漸成為可能。本文介紹的智能車多通道全景視覺(jué)是指以觀測(cè)點(diǎn)為中心,多個(gè)相機(jī)可同時(shí)觀測(cè)車輛的前中、前左、前右、后左、后右和頂上6個(gè)方向的景物。該系統(tǒng)中的6臺(tái)數(shù)字相機(jī)中5臺(tái)分布在車輛的側(cè)面,1臺(tái)在頂部,可以得到車輛周圍全景360°的圖像。該系統(tǒng)每個(gè)相機(jī)的分辨率為百萬(wàn)像素,即1 280×1 024,幀率為30 f/s,即便圖像為8 bit單色,系統(tǒng)的總數(shù)據(jù)率也高達(dá)200 MB/s以上。同時(shí),6個(gè)相機(jī)圖像需要預(yù)處理,投影到同一坐標(biāo)系,或者拼接成單幅完整圖像才能滿足智能車導(dǎo)航系統(tǒng)的要求,這些涉及到大量復(fù)雜計(jì)算。針對(duì)這些要求,該系統(tǒng)的硬件處理部分利用了DSP和FPGA芯片各自的特長(zhǎng),選用高速DSP+FPGA[3-6]的方案,而DSP方案也是海量圖像處理中普遍應(yīng)用的[7]。高性能通用C6416 DSP芯片,配合FPGA進(jìn)行高度并行數(shù)據(jù)處理,可實(shí)現(xiàn)高速實(shí)時(shí)的視覺(jué)圖像處理。這種方案的優(yōu)點(diǎn)在于,不僅可以利用DSP的高速處理能力,同時(shí)利用FPGA的控制能力和在高度并行化數(shù)據(jù)處理方面的優(yōu)勢(shì),相比其他方案更容易滿足全景視覺(jué)系統(tǒng)所需要的高度實(shí)時(shí)處理。
1 系統(tǒng)總體方案設(shè)計(jì)
為適合高速圖像采集,本系統(tǒng)選用CMOS傳感器,CMOS的一個(gè)優(yōu)點(diǎn)是數(shù)據(jù)讀取速度快。系統(tǒng)由高速CMOS相機(jī)、基于CamLink技術(shù)的圖像讀取、FPGA+DSP的圖像處理三部分構(gòu)成,如圖1所示。從圖1可以看出,該系統(tǒng)有兩片F(xiàn)PGA,圖像讀取模塊中的FPGA1負(fù)責(zé)從CMOS相機(jī)抓圖和通訊控制,F(xiàn)PGA2則輔助兩片DSP進(jìn)行高速圖像處理,實(shí)現(xiàn)同時(shí)對(duì)6個(gè)相機(jī)圖像的實(shí)時(shí)處理。
邏輯控制芯片F(xiàn)PGA1選用XILINX公司的XC3S1000LFG456作為視頻數(shù)據(jù)采集控制芯片,該芯片是Spartan3低功耗系列的一種,具有1 M個(gè)邏輯門(mén),24個(gè)18×18乘法器及豐富的片上存儲(chǔ)空間,足夠進(jìn)行視頻采集的同步邏輯控制。并行計(jì)算FPGA選用XILINX公司Virtex-4系列中的XC4VFX60-FF1152,內(nèi)部有4 Mbit RAM,56 880個(gè)邏輯門(mén)和128個(gè)XtremeDSP模塊,足夠進(jìn)行大量高速數(shù)據(jù)處理,特別是片上18 KRAM模塊工作在500 MHz,支持真正的雙端口讀寫(xiě)同步操作,為該芯片作為芯片間高速數(shù)據(jù)交互提供了資源。2個(gè)協(xié)處理DSP芯片為T(mén)I公司高性能C6416,擁有8個(gè)并行處理單元,工作頻率為600 Hz,最高處理速度可達(dá)4 800 兆指令/秒(MFLOPS)。
系統(tǒng)設(shè)計(jì)采集圖像大小為1 280×1 024像素,最高速度可達(dá)每相機(jī)60 f/s的實(shí)時(shí)采集。6路攝像頭輸出的數(shù)字視頻信號(hào)經(jīng)過(guò)FPGA1進(jìn)行同步分離后,進(jìn)入輸入端高速數(shù)據(jù)緩沖區(qū)。系統(tǒng)采用兩片ZBT SRAM進(jìn)行乒乓數(shù)據(jù)采集,當(dāng)一幀圖像采集完,F(xiàn)PGA1通知FPGA2進(jìn)行數(shù)據(jù)轉(zhuǎn)移,F(xiàn)PGA2將數(shù)據(jù)預(yù)處理后由DSP經(jīng)EDMA保存到SRAM后等待進(jìn)一步處理。
2 多通道數(shù)字圖像采集
由于智能車的目標(biāo)是在公路上行駛,該系統(tǒng)需要處理場(chǎng)景中快速運(yùn)動(dòng)的物體,要求圖像采集模塊必須足夠快地從相機(jī)轉(zhuǎn)移出幀數(shù)據(jù),以便對(duì)快速運(yùn)動(dòng)的物體軌跡進(jìn)行記錄,因此,相機(jī)模塊的處理速度是決定該系統(tǒng)是否達(dá)到要求的重要一環(huán)。由于相機(jī)技術(shù)的快速發(fā)展,已經(jīng)能從市面上買(mǎi)到足夠快的傳感器來(lái)捕獲高速運(yùn)動(dòng)的物體,如車輛。
2.1 圖像抓取模塊
MT9M413是一種分辨率為130萬(wàn)像素1 280×1 024的CMOS傳感器,最高可實(shí)現(xiàn)500 fps的采集速度。而MT9M413內(nèi)部集成有10 bit A/D轉(zhuǎn)換器,可直接輸出3.3 V的數(shù)字信號(hào),無(wú)需電平轉(zhuǎn)換電路,簡(jiǎn)化了系統(tǒng)的設(shè)計(jì)。MT9M413可以工作在灰度或彩色模式下,但是卻需要不同的偏置參考電壓,兩片數(shù)模轉(zhuǎn)化芯片DAC6573用于生成該偏置電壓。圖2給出了相機(jī)模塊的框圖。
高速相機(jī)模塊主要包括以下三部分:
(1)傳感器部分:包括高速像素時(shí)鐘下的光電信號(hào)轉(zhuǎn)換傳感器。
(2)信號(hào)分離:預(yù)先編寫(xiě)好在FPGA1內(nèi)部的程序,用來(lái)產(chǎn)生傳感器模塊和數(shù)據(jù)接口所需要的控制信號(hào)。
(3)接口板:將數(shù)字信號(hào)轉(zhuǎn)換成高速LVDS信號(hào)對(duì),并從主處模塊接收控制信號(hào)。
該模塊的三個(gè)部分通過(guò)高速Samtec連接器(QTH-090-01-L-D-A)連在一起,以增加系統(tǒng)的靈活性。主處理板與高速相機(jī)模塊間采用CamLink協(xié)議連接,以滿足系統(tǒng)很高的帶寬。根據(jù)采集圖像的大小、幀率和數(shù)據(jù)位精度,CamLink電路可配置成基本、中等、全幅3種模式,由FPGA1中的程序控制。FPGA1的另一個(gè)任務(wù)是進(jìn)行視頻信號(hào)的同步、通知FPGA2設(shè)置參數(shù),如視頻開(kāi)窗、幀率、曝光時(shí)間等。
2.2 FPGA控制模塊
系統(tǒng)的邏輯控制芯片是FG456,其主要工作是控制輸入/輸出幀存,以便通知主處理芯片及時(shí)將存在ZBT SRAM中的圖像數(shù)據(jù)讀出,片上可編程時(shí)鐘PLL用來(lái)產(chǎn)生驅(qū)動(dòng)該FPGA所需的不同時(shí)鐘,F(xiàn)PGA內(nèi)部的計(jì)數(shù)器通過(guò)改變加法器不同的進(jìn)位信號(hào)控制采集圖像的大小。
FPGA1接收到來(lái)自CMOS傳感器的視頻同步信號(hào)后,開(kāi)始將原始像素?cái)?shù)據(jù)按照CamLink協(xié)議打包通過(guò)高速Semtec連接器送到下一個(gè)模塊中的FPGA2。
2.3 ZBT-RAM中的數(shù)據(jù)乒乓
系統(tǒng)設(shè)計(jì)的視頻信號(hào)采集能力是,從CMOS采集到1 024×1 024大小的數(shù)字圖像,并通過(guò)兩片Zero-bus turnaround(ZBT) SRAM作為數(shù)據(jù)乒乓的幀緩存,ZBT SRAM沒(méi)有總線延遲,不需像DDR那樣必須通過(guò)FIFO進(jìn)行管理。ZBT SRAM為系統(tǒng)提供了最大的吞吐量,從而提供了最大的系統(tǒng)帶寬[8-9]。為保證系統(tǒng)的高速性能,F(xiàn)PGA1的3個(gè)內(nèi)部時(shí)鐘管理模塊DCMs用來(lái)產(chǎn)生ZBT-RAM需要的時(shí)鐘,一個(gè)為控制時(shí)鐘,另外兩個(gè)為視頻輸入的banks的信號(hào)。系統(tǒng)中的兩片1 M×36 bit ZBT SRAM,每片ZBT SRAM可同時(shí)接收兩路視頻的滿幀數(shù)據(jù)采集。如果兩路信號(hào)都為60 f/s,則每秒采集120 MB數(shù)據(jù),而ZBT SRAM的工作頻率為250 MHz,最大數(shù)據(jù)吞吐為4.5 GB/s,完全滿足數(shù)據(jù)采集速度系統(tǒng)的要求。
3 芯片間通信
多芯片協(xié)處理系統(tǒng)中最重要的一個(gè)方面就是芯片間數(shù)據(jù)通信的效率,該效率直接影響系統(tǒng)的運(yùn)行效率。而數(shù)據(jù)延遲和傳輸帶寬,是最值得關(guān)注的兩個(gè)方面。本系統(tǒng)采用多種方式進(jìn)行數(shù)據(jù)傳輸,提高了系統(tǒng)的靈活性。
3.1 FPGA2與DSPs間的數(shù)據(jù)通信
根據(jù)應(yīng)用特點(diǎn)和系統(tǒng)接口,本系統(tǒng)采用兩種方式連接FPGA和DSP:32 bit EMIF-A and McBSP0。選用32 bit EMIF-A作為DSP與FPGA間進(jìn)行高速數(shù)據(jù)通信主要原因是傳輸速率高,可充分利用TMS320C6416內(nèi)EDMA方式傳輸數(shù)據(jù)的優(yōu)點(diǎn)。如圖3所示。
FPGA內(nèi)部的EMIF FIFO接口模塊用于轉(zhuǎn)換DSP的EMIF信號(hào),將數(shù)據(jù)轉(zhuǎn)移至接收FIFO。當(dāng)接收滿一幀數(shù)據(jù)后,F(xiàn)PGA的計(jì)算內(nèi)核開(kāi)始從該接收FIFO獲取數(shù)據(jù)并處理,然后將處理完的數(shù)據(jù)寫(xiě)到發(fā)送FIFO。發(fā)送FIFO數(shù)據(jù)滿時(shí),啟動(dòng)DMA中斷將數(shù)據(jù)傳送到DSP片內(nèi)Cache。由于該EMIF-A是工作在133 MHz的32 bit總線,峰值數(shù)據(jù)率可達(dá)532 MB/s。
FPGA2與DSPs間的第二種通信方法是McBSP(Multichannel Buffered Serial Port),兩個(gè)DSP的McBSP0連到FPGA。McBSP是一種全復(fù)用串行口,工作頻率為125 Mb/s。進(jìn)行串行通信時(shí),具有獨(dú)立的幀同步FSX,F(xiàn)SR和位同步時(shí)鐘CLKX、CLKR,提供系統(tǒng)時(shí)鐘信號(hào)為CLKS。在從模式下,可由外部時(shí)鐘驅(qū)動(dòng),主模式下可由McBSP采樣時(shí)鐘驅(qū)動(dòng)。接收和發(fā)送也很簡(jiǎn)單,各需要一個(gè)數(shù)據(jù)線:DR,DX。McBSP通信協(xié)議簡(jiǎn)單,可節(jié)省FPGA的資源。
3.2 兩片DSP間的數(shù)據(jù)通信
兩片DSP之間的通信也有兩種通信方式。第一種通信是通過(guò)McBSP接口。為了獲得最大的數(shù)據(jù)傳送率,將兩片DSP的McBSP1和McBSP2連接起來(lái),這樣每個(gè)DSP可以做為時(shí)鐘主控和幀主控。換句話說(shuō),同一片DSP的一個(gè)McBSP接口作為主控在通信時(shí)產(chǎn)生數(shù)據(jù)發(fā)送時(shí)鐘和幀同步時(shí)鐘,同時(shí)另外一個(gè)接口作為從控等待控制信號(hào)以接收數(shù)據(jù)。圖中,當(dāng)DSP-A的McBSP1為主控發(fā)送數(shù)據(jù)時(shí),McBSP2為從控;同時(shí)DSP-B的McBSP2為主控,DSP-A的McBSP1等待從DSP-B的同步信號(hào)以接收數(shù)據(jù)。
除了McBSP之外,兩片DSP間還通過(guò)EMIF-A進(jìn)行高速連接映射,F(xiàn)PGA內(nèi)部的32 bit雙向接口通過(guò)FIFO實(shí)現(xiàn),如圖4所示。這種基于FIFO的雙向數(shù)據(jù)傳送口支持DSP間復(fù)雜的數(shù)據(jù)交換和控制消息傳遞。DSP的EMIF-A工作頻率為133 MHz,數(shù)據(jù)傳輸時(shí),F(xiàn)PGA的可編程FIFO閾值中斷支持DSP間通過(guò)EDMA方式。
3.3 與上位機(jī)PC的數(shù)據(jù)通信
為了實(shí)現(xiàn)從PC進(jìn)行遠(yuǎn)程控制,特別是用無(wú)線網(wǎng)絡(luò)連接控制通信,系統(tǒng)特別設(shè)計(jì)了以太網(wǎng)接口、USB2.0接口和PCI接口。網(wǎng)絡(luò)連接是通過(guò)FPGA2的標(biāo)準(zhǔn)GMII接口,以太網(wǎng)PHY連接到外部RJ45。GPIO接口配置成USB2.0數(shù)據(jù)接口,而4個(gè)PCI則是將PCI芯片連接到FPGA2內(nèi)的MGT模塊來(lái)實(shí)現(xiàn)的。
4 高速并行數(shù)字圖像處理結(jié)果
在智能車視覺(jué)系統(tǒng)中,除了要預(yù)先將多通道畫(huà)面進(jìn)行拼接等預(yù)處理外,更重要的是完成自動(dòng)導(dǎo)航和目標(biāo)跟蹤,這些都牽涉到海量數(shù)據(jù)流的實(shí)時(shí)傳輸和運(yùn)算。本次實(shí)驗(yàn)為基于特征點(diǎn)的運(yùn)動(dòng)物體追蹤,包括以下步驟:(1)背景學(xué)習(xí);(2)全畫(huà)面運(yùn)動(dòng)估計(jì)、圖像差分;(3)差分部分的特征提取;(4)特征點(diǎn)的幀間運(yùn)動(dòng)估計(jì);(5)基于K-means法的特征點(diǎn)分類。
基于全景畫(huà)面的特征點(diǎn)跟蹤需要對(duì)多通道視頻同時(shí)進(jìn)行運(yùn)算,運(yùn)算過(guò)程復(fù)雜,包括跟蹤前與跟蹤后的處理任務(wù),如何將這些任務(wù)分配到不同的芯片上并使板載資源做到任務(wù)間最大共享,需要根據(jù)任務(wù)強(qiáng)度估計(jì)后放到不同的芯片上。同時(shí),由于μC/OS是一種可移植性強(qiáng)、代碼微小的實(shí)時(shí)、多任務(wù)操作系統(tǒng),適合在本系統(tǒng)的DSP上運(yùn)行[10]。移植μC/OS操作系統(tǒng)到一個(gè)DSP上,將該DSP作為主控DSP進(jìn)行任務(wù)分配,本次實(shí)驗(yàn)的各個(gè)任務(wù)分配如圖5所示。由于兩個(gè)DSP協(xié)助FPGA2進(jìn)行運(yùn)算具有強(qiáng)大的計(jì)算能力,可進(jìn)行多目標(biāo)跟蹤,F(xiàn)PGA2承擔(dān)了大量的并行數(shù)據(jù)運(yùn)算,如運(yùn)動(dòng)探測(cè)包括的差分、運(yùn)動(dòng)估計(jì)、圖像拼接,而DSP則承擔(dān)特征點(diǎn)提取和追蹤這些不能并行運(yùn)算的部分。實(shí)驗(yàn)結(jié)果表明,6路視頻采集后的全景圖像上可作實(shí)時(shí)多目標(biāo)追蹤。
本系統(tǒng)通過(guò)選用FPGA+DSP相配合的方式,同時(shí)利用了兩種芯片的性能優(yōu)勢(shì),既保證系統(tǒng)的執(zhí)行速度,也能保證可靠的邏輯控制。該系統(tǒng)實(shí)現(xiàn)了6路1 M大小視頻圖像信號(hào)的同時(shí)采集和處理,由FPGA1對(duì)系統(tǒng)的運(yùn)行邏輯進(jìn)行控制,通過(guò)優(yōu)化在DSP上運(yùn)行的圖像處理程序,可實(shí)現(xiàn)智能車導(dǎo)航應(yīng)用中全景圖像范圍內(nèi)的目標(biāo)追蹤。該系統(tǒng)還可作為一個(gè)獨(dú)立的圖像處理系統(tǒng),后續(xù)通過(guò)添加其他如立體視覺(jué)和光學(xué)跟蹤等的算法,形成其他多方面的圖像應(yīng)用研究平臺(tái)。同時(shí)該方案也為其他基于多DSP和FPGA混合圖像處理平臺(tái)設(shè)計(jì)提供了參考。
評(píng)論