李其虎,任國強,吳欽章, 楊 輝
(1.中國科學院光電技術研究所,成都 610209;2.中國科學院研究生院,北京 100149)
紅外技術作為一種重要的光電成像手段,在軍事探測以及民用技術領域占據著重要地位[1-2]。由于受到無線帶寬的限制,如何對紅外圖像高效地傳輸就顯得極為重要。國外對此問題早有研究,但由于技術的保密性,資料較少;國內在此方面的研究則起步較晚。文獻[3]中給出的無人機載圖像實時傳輸方案的研究在一定程度上解決了傳輸問題,但是其圖像質量指標、信道編碼效率等均不高,且抗多徑干擾差。因此研究新的數字圖像傳輸系統已成為迫切需求,圖像壓縮正是圖像數據高效傳輸的關鍵所在[4-6]。基于紅外序列圖像自身獨特的特點,需要在終端沒有任何損失的情況下恢復原始信號,故只能采取無損壓縮算法對初始信號進行壓縮。在實際工程中,選擇什么樣的嵌入式系統平臺來完成對紅外圖像壓縮傳輸也是至關重要的。目前有些紅外圖像處理系統使用FPGA實現可重構計算系統,運算速度快,但對于復雜算法的實現難度較高,且靈活性差;而DSP芯片強大的數據運算處理能力以及FPGA芯片豐富的可編程邏輯資源和I/O接口使得DSP+FPGA的硬件結構成為目前最流行的硬件結構[7]。其中DSP負責實現圖像處理算法,FPGA負責實現各種接口電路以及一些圖像預處理工作以減輕DSP的負擔。
本文根據實際工程需求采用Xilinx公司的Virtex2Pro系列FPGA來完成對紅外序列圖像的采集;利用其內嵌的高速串行通信接口RocketIO,實現了SRIO協議;選擇TMS320C6455作為壓縮算法的實現平臺;利用其內部SRIO與FPGA進行高速通信。實驗表明SRIO的實測傳輸速度約為2.26 Gb/s,完全滿足實際工程需求。
紅外實時圖像處理系統的實驗硬件框圖見圖1。

圖1 紅外圖像處理系統框圖Fig.1 Diagram of infrared image processing system
該結構主要以FPGA+DSP為核心,再加上相應的外圍存儲設備和必要外圍接口(如Camera link口等)。圖1中紅外相機輸入圖像的大小為256×320,深度為14 bit灰度圖像數據。相機通過Camera link接口與FPGA進行連接。FPGA與DSP之間通過高速串口(SRIO)相連接。C6455外圍有EMAC網絡端口,可以實現千兆網速傳輸。該系統主要用于測試所設計的紅外圖像處理系統的可行性,調試FPGA對數據的采集、DSP與FPGA之間的數據通信以及DSP對傳送過來的數據進行壓縮在終端能否正常解碼恢復原始數據。實際應用中是將DSP壓縮過的數據通過無線網絡從機上傳送到接收端。
圖像的編碼方法分為兩類:有損壓縮和無損壓縮。有損壓縮即允許編碼過程中丟失一些無用或作用不大的信息,不能精確地重建原始圖像;無損壓縮則是編碼過程中僅僅去除圖像的冗余,圖像信息保證不丟失,從而可以完整地重建原始圖像。近年來對無損壓縮方法的研究大致可以分為兩個方向:基于預測的方法[8]和基于變換的方法[9]。其中基于預測方法的無損壓縮代表性的算法有JPEG+DPCM和已經成為無損壓縮標準的JPEG_LS算法。JPEG的無損壓縮模式和JPEG_LS算法都只包括預測和編碼兩個環節,不需要對原始圖像數據進行變換和量化。但是JPEG無損編碼模式的預測方式簡單,一共只提供了8個線性預測器,對預測的結果與原始數據的差值進行統一的Huffman編碼。這種簡單的預測模式和統一編碼方式使得JPEG無損壓縮模式壓縮比并不高;而JPEG_LS算法的編碼采用的是非線性預測,編碼方式根據上下文統計模型所得到的參數自由選擇Golomb編碼和游程編碼。式(1)給出了JPEG_LS預測算法的預測公式:

利用預測出的 Pi,j值與真實值 Ni,j之間進行差值計算,對殘差進行相應的編碼。由于JPEG_LS算法在編碼時無需進行變換,且熵編碼算法簡單、無損壓縮壓縮比高,使得該算法被廣泛應用于眾多需要無損壓縮的領域。
相對于預測模式無損編碼,變換模式無損編碼主要基于整數DWT的無損壓縮算法。其中具有代表性的即為SPIHT和JPEG 2000算法。由于SPIHT算法中使用的是鏈表結構方式[10],硬件實現對存儲器需求較高,其壓縮比并不高。JPEG 2000無損壓縮模式也是采用5/3整數小波進行變換[11],對變換后的數據進行高性能的EBCOT編碼,從而使得其具有較高的壓縮比。但是實現起來復雜度較高,算法硬件實現速度較慢。總而言之,基于小波變換編碼方法的最大優勢在于可以實現嵌入式碼流,即對重要的圖像信息進行優先的編碼,但是對于在需要進行無損壓縮的情況下,這種優勢就并不存在。而基于預測的無損編碼,應不需要對數據進行變換。算法復雜度低,實現起來要簡單,使得基于預測的無損編碼方式更多地應用于需要無損壓縮的場合。在PC機VC 6.0環境下分別開發了上述4種無損壓縮算法,針對不同圖像(如圖2所示)得到4種算法的壓縮比,如表1所示。

表1 4種算法無損壓縮性能比較Table 1 Performance of four kinds of lossless compressing arithmetics
再綜合考慮算法的執行復雜度與壓縮比,最終選擇了JPEG_LS作為系統核心壓縮算法。

圖2 測試圖像Fig.2 Test images
紅外CCD圖像數據首先被采集到FPGA內實現的FIFO中,通過FIFO中的數據量控制SRIO接口是否發起傳輸,從而實現了FPGA與DSP之間的數據通信,當一幀圖像數據由FPGA傳輸到DSP中,系統難點在于如何在FPGA內實現SRIO協議,并保持FPGA與DSP之間的SRIO通信的同步。
首先要在FPGA內的高速串行通信接口RocketIO上實現SRIO接口協議。我們使用Xilinx公司提供的Core_generator工具來產生SRIO模塊。設置SRIO屬性時要將FPGA設為主設備,以發起讀或寫操作,DSP作為SRIO的一個從設備,只需要對主設備的請求作出響應。在生成SRIO模塊后,需要根據SRIO協議對SRIO模塊的一些參數進行調整,如調整差分電壓的峰-峰值最小為175 mV,根據SRIO時鐘調整PLL的乘數因子,是否使用傳輸損耗的自適應補償等,然后才考慮建立與DSP之間的SRIO連接并實時檢測連接狀態,并保持同步。
在FPGA內生成的SRIO模塊中有一個Port_initialized端口信號,如果此信號為高,則表明FPGA與DSP之間的SRIO連接已建立,此時,就可通過SRIO接口傳輸數據。在FPGA端,通過NWRITE_R命令向地址0x00900000到0x00910000周期性的寫入數據,而0x00900000到0x00910000是映射到DSP的L2存儲區域的,即建立連接后,DSP的存儲區域對FPGA是透明的,只需要在 FPGA內寫入到0x00900000到0x00910000地址區間,就可以將數據傳遞到 DSP。SRIO傳輸是以數據包的形式進行的,因此要考慮如何將多個包傳遞給DSP。在生成FIFO后,利用FIFO的rd_data_count端口來發起SRIO傳輸。rd_data_count記錄的是FIFO中可讀的數據量,當rd_data_count達到320時,將傳輸有效信號置高,這樣,FIFO中的10個數據包就會通過SRIO接口傳遞給DSP。由于SRIO傳輸是3.125 Gb/s,保持數據同步變得尤為重要,所以必須保證lnk_rrdy_n和lnk_trdy_n有效,這兩個信號表示了SRIO的正常通信狀態。另一個同步問題是圖像幀的同步,由于采集的原始數據是以數據包的形式傳遞的,而原始數據中并沒有圖像幀的幀頭幀尾等信息,本傳輸平臺用兩個GPIO信號來解決這個問題。設定GPIO_1表示幀有效信號,而GPIO_2通知DSP 10個數據包傳輸完成。DSP接收數據時,首先檢測GPIO_1信號是否有效,若GPIO_1為低,則表明圖像數據處于幀效應期,只有等到GPIO_2為高時,才能保證圖像數據的對齊,不會出現圖像數據幀的錯位現象,即將上一幀的圖像數據與當前幀的數據拼接在一起。由于FPGA是將采集的數據連續不斷地寫入到FIFO,因此,FPGA會連續地發起傳輸,這樣,數據就能連續地通過SRIO進入到DSP。在DSP端通過設定一個計數器,當DSP接收的數據包恰好是一幀圖像數據的時候,DSP就會進行任務切換,對傳送過來的數據進行壓縮,將壓縮后的數據傳送到PC機端顯示。在PC機端,通過MFC編程,利用Socket網絡通信,接收從DSP傳輸進來的數據,并將接收到的數據進行顯示。
DSP 中算法優化有多種[12-13],優化也是無止境的。故只需要將優化的速度達到工程實際要求即可。
1)存儲器優化。實驗表明,若代碼和需要訪問的數據在DSP片內存儲區(IRAM),其代碼運行速度要比代碼和數據片外DDR2中快5倍左右。因此,優化首先應將執行代碼和數據放到片內以快速提高編碼運行速度。
2)編譯器優化。CCS中提供眾多參數選項,經過反復測試,最終在硬件上運行時最佳選項為-q-o3-mt。實驗測試結果表明該編譯器選項打開,程序運行速度將提高3倍左右。
3)C代碼優化。代碼級優化中的內容很多,包括乘法語句的優化、浮點運算的優化、以及inline語句的使用等。在此針對JPEG_LS算法代碼中判斷轉化語句過多,介紹如何優化該類判斷性語句。判斷跳轉語句是C程序員在編程時經常使用的一種語句。因為它能使整個程序的結構看起來很清楚,便于其他程序員閱讀。但大量判斷跳轉語句的使用是非常影響程序在DSP上的運行速率的。如果在循環內部出現判斷跳轉語句,由于每個跳轉指令都會帶來5個延遲間隙,將導致程序執行時間延長。另外,循環內跳轉也將使軟件的軟流水受到阻塞,影響代碼的并行執行。因此盡可能用邏輯判斷語句來代替判斷跳轉語句,可以避免不必要的跳轉,從而提高代碼的執行效率。
在對C代碼優化后,對于耗時嚴重的部分,還可以使用線性匯編將其重寫。利用線性匯編改寫程序,可以使程序執行時間大幅度降低。
本文設計系統應用在光電經緯儀中,在夜間對某機場起落飛機進行跟蹤實驗。由于紅外圖像每個像素都是14 bit表示,為了在PC機中顯示,需要將14 bit數據轉換成8 bit數據(灰度級為0~255),利用式(2)進行轉換。

其中:PIR表示原始紅外圖像像素值;Px為轉化后的值。
圖3為經緯儀中紅外相機采集到沒有經過壓縮直接存入保存到硬盤中的紅外圖像,利用式(2)在PC機中顯示出的結果。圖4為采集到的紅外圖像經過本文設計系統后,傳輸到PC中,利用式(2)顯示出的結果。

圖3 原始紅外圖像Fig.3 Original IR image

圖4 解碼后紅外圖像Fig.4 Decoded IR image
實驗結果表明,如果在DSP中直接對深度為14 bit的紅外序列圖像進行無損壓縮,則壓縮比大小只有4倍。如果在DSP中將14 bit的紅外圖像采用式(2)轉換為8 bit圖像壓縮,則壓縮比可以達到21倍。故可以根據實際工程需求采用不同的方法進行壓縮后傳輸。
經過對兩幅紅外圖像數據分析得知,采用本文所述系統,將壓縮后的紅外圖像再解壓出來與原始紅外圖像完全一致。進而驗證了本文所設計系統的正確性。
針對紅外實時圖像處理系統構建的FPGA+DSP硬件平臺,考慮到硬件各自的特性和工程的實際應用。以DSP+FPGA為硬件核心平臺,以SRIO為數據傳輸的紐帶,比較分析了4種常見的圖像無損壓縮算法,最后選擇了以JPEG_LS為軟件算法核心,對紅外序列圖像進行傳輸和無損壓縮。為驗證系統的可行性,利用DSP自帶的EMAC網口將壓縮后的數據傳輸到PC機中,并實時顯示。實驗結果表明,該系統圖像壓縮與傳輸性能可靠,可以對紅外序列圖像達到27幀/s的無損壓縮。
[1]XU Hong,WANG Xiangjun.Applications of multispectral/hyperspectral imageing technologies in military[J].Infrared and Laser Engineering,2007,36(1):14-17.
[2]梁海龍,韋志棉,趙葉星.適用于無人機圖像傳輸數據鏈的同步技術[J].電光與控制,2010,17(10):68-83.
[3]劉榮科,張曉林.無人機載圖像實時傳輸方案的研究[J].北京航空航天大學學報,2002,28(2):208-212.
[4]CAO Libao,ZHAO Baojun.High-speed real-time data compression system based on C64X [J].Infrared and Laser Engineering,2007,36(3):403-407.
[5]DEEVER A T,HEMAMI S S.Efficient sign coding and estimation of zero-quantized coefficients in embedded wavelet image codecs[J].IEEE Trans Image Process,2003,12(4):420-430.
[6]DEEVER A T,HEMAMI S S.Lossless image compression with projection-based and adaptive reversibie integer wavelet transforms[J].IEEE Trans Image Process,2003,12(5):489-499.
[7]PAN Xiaodong,CHEN Zexiang,GAO shengjiu,et al.Collection and display of infrared image data on FPGA+DSP[J].Infrared and Laser Engineering,2007,36(6):968-971.
[8]WANG Wencheng,LU Jinming,ZHANG Yonglin.Predictive coding and disposal of quantized error for lossless compression of image[J].Journal of Optoelectronics·Laser,2004,15(5):608-611.
[9]PAN Hong.A binary wavelet transform-based loosless image coding algorithm[J].Journal of Electronics& Information Technology,2008,30(7):1671-1675.
[10]SAID A,PEARLMAN W A,SENIOR M.A new fast and efficient image codec based on set partitioning in hierarchical trees[J].IEEE Transaction on Circuits and Systems forVideo Technology,1996,6(3):243-250.
[11]TAUBMAN D S,MARCELLIN M W.JPEG 2000 image compression fundamentals,standards and pracyice[M].Kluwer Academic Publishers,2001:130-135.
[12]TMS320C6000 optimizing compiler user’s guide[Z].Texas Instruments Incorporated,2002:262-264.
[13]XU Yong,XU Zhiyoug,ZHANG Qiheng,et al.Low complexity image compression scheme for hardware implementation[J].Optics and Precision Engineering,2009,9(17):2263-2268.