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