??? 摘 要: 介紹了用數字信號處理器實現視頻流控制處理功能的軟硬件設計方案。重點論述了如何設計DSP的軟件及外圍硬件,完成IEEE1394設備自標識及數據傳輸的詳細過程。同時還提出了一種用于運動目標檢測" title="運動目標檢測">運動目標檢測的變加權背景恢復算法及其DSP實現方案。這種用DSP實現數字視覺算法的成功嘗試,對于實現其他視覺功能具有一定的借鑒意義。
??? 關鍵詞: DSP? IEEE1394a? 視頻采集? 運動目標檢測
?
??? 本文介紹了一種以DSP為核心、基于IEEE1394總線的圖像實時采集處理系統的軟硬件設計。此外還提出了一種易于用DSP實現且存儲器資源占用率小的運動目標檢測算法。據了解,目前國內外大多數的計算機視覺研究都是用計算機軟件處理實現的,因此在實時性" title="實時性">實時性和成本方面受計算機平臺的制約。本文討論了一種計算機視覺系統的硬件平臺設計方案,并在此平臺上實現了運動目標檢測??梢哉f,這是一次用DSP實現計算機視覺算法的成功嘗試,對于其它算法的硬件實現有一定的借鑒意義。
??? 采用IEEE1394總線作為傳輸接口是實現實時圖像采集的根本保證。IEEE1394是由國際電氣和電子工程師協會(IEEE)制定的一種高速串行總線協議。1394總線具有以下優點[1]:
??? ·支持熱插拔和即插即用;
??? ·提供統一的通用接口,并且具有總線供電能力(每一端口的最大輸出電流為1.5A,輸出電壓8~33Vdc);
??? ·傳輸速率" title="傳輸速率">傳輸速率高100~400Mbps;
??? ·不依賴計算機,支持1394設備間的點對點傳輸。
??? 其中第四點是目前常用的USB2.0總線無法實現的,也正是這一優點使得1394不僅是一種計算機外設連接總線,更是多種消費類電子產品的連接方案。
??? 另外,為了實現數字視頻圖像的實時采集和處理,充分發揮1394總線的高速傳輸速率,筆者選用了TI公司的TMS320VC33數字信號處理器作為主控制器。這是一款高性能浮點DSP,它具有17ns的指令周期和60MIPS的處理能力[2]。
??? 下面將分別介紹這套DSP系統的工作原理,軟、硬件設計以及運動目標檢測算法的改進和實現。
1 系統組成及工作原理
??? 本系統是為驗證并實現各種計算機視覺算法而搭建的一個硬件平臺,用五片512K×8bit的SRAM分別作為幀緩存和DSP的擴展RAM。還有一片20萬門的FPGA用作系統的邏輯控制及以后機器視覺算法的硬件實現。系統的結構框圖如圖1所示。
?
??? 系統的工作原理如下:系統上電或復位后,DSP首先從FlashROM中自動裝入代碼并開始運行,等待1394電纜插入。當電纜插入后,DSP通過解析根節點發來的請求包發出對應的內容作為應答,直至根節點發現該設備。之后,只要根節點發出讀數據請求,DSP就根據請求包的內容從幀緩沖RAM中取出數據,通過1394鏈路層" title="鏈路層">鏈路層和物理層芯片將其送到1394總線上。
??? 圖像數據的采集、處理和傳輸三個步驟以流水線的方式,在同一時刻各掌握一片幀緩存RAM的訪問權,并行工作。當各個步驟都完成后,在FPGA的控制下同時切換各片幀緩存的控制權,開始流水線的下一個周期。各個步驟對三片幀緩存RAM的控制次序如圖2所示。
?
??? 這種流水線式的電路結構實現了圖像采集、圖像處理、圖像傳輸三個步驟并行工作,極大地提高了處理的連續性和實時性。
2? DSP硬件設計
??? DSP在本系統中的任務有三個:首先是通過鏈路層和物理層芯片與根節點通信,完成自標識過程;其二是處理采集好的一幀圖像,并把它再存回幀緩存;其三是自標識完成后,響應根節點發來的數據讀請求,從幀緩沖RAM中讀出處理過的圖像數據并送到總線上。整個系統由一片TMS320VC33、一片20萬門的FPGA(EP20k200EBC356)、五片512KB高速SRAM(IS61LV5128AL)、一片Flash(AM29LV400B)、一片1394鏈路層芯片(TSB12LV32)、一片1394物理層芯片(TSB41LV04a)以及DSP電源及看門狗芯片(PS767D301)組成。其中TMS320VC33作為主控制器與TSB12LV32的主控制器接口相連。FPGA在DSP的控制下向1394鏈路層芯片的DataMover端口發送數據。此外FPGA還有地址譯碼、時序調整以及幀緩存切換等功能。三片SRAM作為幀緩存器,另外兩片作為DSP的擴展RAM,每片RAM內存放一幀圖像(300K字節),其訪問時間為12ns,因此完全適合TMS320VC33以零等待方式訪問。物理層芯片TSB12LV04a只與鏈路層芯片通信,與DSP無關,它負責進行總線上的差分" title="差分">差分模擬信號與系統的數字信號之間的轉換。Flash用來存放DSP代碼,它經過地址譯碼直接與DSP相連。DSP復位后由Boot-Loader將代碼從Flash加載到DSP片內RAM中開始運行??梢酝ㄟ^DSP的JTAG接口方便地進行Flash的在系統擦寫。由于AM12LV400B的訪問時間為70ns,DSP訪問Flash時至少應加入5個等待周期。
3 DSP軟件設計
??? DSP的軟件開發是在TI公司提供的Code Composer(CC)環境下,結合DSP硬件仿真器完成。代碼的開發根據實際情況使用C語言和匯編語言的混合編程。在實現設備自標識的過程中使用C語言,這是因為這個過程邏輯關系比較復雜,但只在總線復位初始化時執行一次,用C語言可以提高可讀性,減小開發難度,同時也不會對系統的性能有太大影響。而在進行圖像處理和響應數據讀請求包時,則使用了匯編語言。原因是這些代碼使用頻繁,直接影響系統的速度。
?? ?響應1394總線的自標識過程是系統設計的難點,也是1394接口設計最重要的部分。DSP的響應必須符合IEEE1394a協議中規定的自標識步驟,圖3描述了DSP的動作流程。
?
??? 自標識過程實際上是根節點(主機)請求讀取葉節點(設備)配置ROM的過程??梢詧绦惺聞盏?394串行總線節點都應該實現配置ROM,它為配置和診斷與設備相關的問題提供了一些必要的信息。例如,對于一個連接到計算機上的1394設備而言,設備加電后,計算機首先讀取配置ROM中的內容,從而分辨出這是一個什么樣的設備。配置ROM中包含的信息有:
??? ·為識別本設備驅動程序所需要的信息;
??? ·為識別診斷軟件所必須的信息;
??? ·為指定設備設計總線的各種性能所需要的信息;
??? ·為指定可選的模塊、節點以及元件特征和參數所需要的信息。
??? 正常格式的配置ROM形成了一個樹結構,它包括很多分支和葉子,這些分支和葉子都是由指針聯系起來的,其中有限選項也有任選項[3][4]。
??? DSP要做的就是把配置ROM的內容以異步讀應答包的形式發給計算機,而配置ROM的內容是開發人員根據所開發的系統自己定義的。當計算機正確讀完配置ROM的內容后,就會顯示發現新硬件或自動裝入相應的1394設備驅動程序。
??? 所有的1394數據傳輸都是以包為單位。其中包頭含此次傳輸的傳輸速率(Spd)、事務標簽(tLable)、事務代碼(tCode)、源節點ID、目的節點ID等信息。這些信息必須符合協議要求,例如一個讀請求數據塊應答包,傳輸速率為400Mbps,那么Spd=10、tCode=7,源節點ID和目的節點ID分別是請求包的目的節點ID和源節點ID,tLable和請求包的相等。
??? 自標識完成后,DSP開始處理采集好的圖像數據,同時以中斷子程序的方式啟動數據發送。由于本系統采用1394總線的異步傳輸方式,每次數據傳輸都由主機(PC)發起,所以DSP以中斷的方式響應主機發來的讀請求,每次中斷服務中發送一個數據包。在采集、處理、傳輸三個步驟中,顯然處理是最耗費時間的,為了確保這三個步驟都完成后再切換到流水線的下一個周期,中斷子程序中還要判斷是否一幀圖像已經發完,如果已經發完一幀,則關閉中斷,等到圖像處理步驟完成后,幀緩存切換完畢再打開中斷。
??? 整個軟件部分完成后,燒寫Flash并實現程序的引導加載(Boot-Loader)也是重要的一步。TMS320VC33的引導加載功能是通過DSP復位后自動運行駐留在片內ROM的地址0x45處的一段代碼實現的。這段代碼可以根據復位時INT0~INT3引腳上的狀態決定裝載的源地址(只能是0x1000、0x400000、0xFFF000或串口0),并將源地址處的代碼轉移到指定的片內RAM中,然后從指定的程序入口點開始運行[5]。
4 幀間平均運動檢測算法的改進與實現
??? 運動目標檢測跟蹤是計算機視覺中十分重要的一個熱門研究領域,近年來出現了許多新的算法。但可以歸結為以下四大類:基于光流場分析的算法、基于主動輪廓的算法、基于統計模型的算法以及基于圖像差分的方法。前三種算法與第四種方法相比,具有精度高、定位準并且能夠得出運動參數的優點。但是算法的復雜性較高,目前難以在普通的硬件平臺上實現實時處理。因此,圖像差分方法被廣泛用于實時運動檢測系統。
??? 在實際應用中差分圖像的獲得有兩種途徑:其一是利用相鄰兩幀之間的差來獲得差分圖像;其二是通過將當前幀和固定的背景幀相減來獲得差分圖像。第一種方法在應用中容易出現“空洞”現象,檢測結果的大小與目標運動的速度有關,從而影響了動目標檢測的精度;第二種方法,由于背景是固定的,那么若外界條件有較明顯的變化,例如光照等條件發生變化時,當前的實際背景圖像就會發生變化,從而獲得的差分圖像是不準確的,噪聲比較大。故這種方法僅適用于背景條件不變或者是變化限制在一定范圍內的情況。
??? 本文針對背景和攝像機都靜止這一特定應用場合,選用了基于背景消減的運動檢測和跟蹤算法。這種算法的關鍵在于背景重建,在此應用了基于幀間平均的背景重建方法[6],并在此基礎上針對硬件可實現性和處理的實時性提出了改進。最后,為了克服背景消減算法噪聲較大的先天不足,采用了形態學濾波的方法去處噪聲。
??? 幀間平均算法使用當前幀之前各幀的像素平均值作為當前背景的估計值,如下式所示:
???
??? 從公式中可以看出,這種算法只需要在圖像采集系統的基礎上多添加一片幀存儲器用來存儲估計背景即可,因此對硬件資源要求低。另外,背景是隨著n增加逐漸恢復的,所以背景恢復過程并不影響圖像處理結果的實時傳輸和顯示。顯然,n越大,背景恢復越真實,可以控制n的大小來調整處理時間和處理效果之間的平衡。
??? 然而,由于上面的公式中有除法運算,所以無論使用FPGA還是DSP來實現都有一定的困難。以DSP為例,對于本系統所用的TMS320C3x系列DSP來說,一次整數除法運算要用約100條指令,這顯然對處理的實時性有很大的影響。
??? 為了克服這一算法缺陷,提出了如下的變加權均值算法:
???
??? 上式中,各幀取平均值時并沒有采用相同的加權,而是以2的整數冪2m作為步長,在每個步長內,對已估計出的背景都給予該步長內最大的加權值(2m-1)/2m,這比原算法中背景的加權值(n-1)/n更大,也就是說變加權算法在背景估計中更加依賴于已經估計出的背景,這有利于消除當前幀中噪聲對背景估計的影響。在整個背景估計過程中,m越大,步長也越大,同時已估計出的背景的權重也越大。同時可以看到,除數都變成了2的整數冪,可以用移位來實現,與原算法相比,運算效率提高了近100倍。然而,處理效果并未因此而受到損失,這是因為這種加權值的改變遵循這樣一種事實:隨著幀數的增加,估計出的背景的可信度越來越高,當前幀對背景的影響也越來越小,所以已估計出的背景在公式中所占的比重也應該越來越大。實驗證明:m=6時,已經足可以估計出較為真實的背景了。
??? DSP的擴展RAM用來存放已經估計出的背景,將當前幀與背景相減取絕對值,再進行二值化,就得到了運動目標的二值化圖像。為了消除噪聲的影響,最后使用一個7×7的菱形結構元素對圖像進行形態學開運算。最終的結果再存回幀緩存。
??? 圖4是處理結果傳回主機后,用VC實現的應用程序界面,其中左上角是在原始圖像上添加的動目標檢測結果,右上角是二值化的動目標,左下角是背景恢復圖,右下角是運動跟蹤軌跡;圖5是n=64時,恢復出的背景;圖6是利用改進的變加權幀間平均算法得到的目標運動檢測結果,其中較大的方框是形態學濾波前的檢測結果,受到車燈倒影的影響(如圖中白色圓圈標示),檢測結果精度很差,內部較小的方框則通過形態學濾波解決了這個問題。
?
?
?
??? 經測試表明:本系統工作穩定,傳輸速率高(30fps@640×480),處理效果好,可擴展性強,是機器視覺算法硬件實現的一次成功嘗試。但是目前的算法還有待改進,例如在保證實時性和硬件易實現性的前提下,大片的燈光倒影很難再用形態學濾波的方法消除。這是下一步要著重解決的問題。
參考文獻
1 Don Anderson. FireWire系統體系.北京:中國電力出版社,2001
2 Texas Instrument. TMS320VC33 Digital Signal Processor. July 2002
3 IEEE Standard for a High Performance Serial Bus(IEEE Std?1394-1995).Approved 12 December 1995
4 IEEE Standard for a High Performance Serial Bus-Amend-ment 1(IEEE Std 1394a-2000).? Approved 30 March 2000
5 Texas Instrument. TMS320C3x User's Guide. July 1997
6 Andrew H, S.Lai, Nelson.H, C. Yung. A fast and accurate?scoreboard algorithm for estimating stationary backgrounds in?an image sequence. Proceedings of IEEE International Symposium on Circuits and Systems, 1998: 241~244