航空圖像由于可以提供大量豐富的直觀信息,因而在軍事偵察、搶險救災、氣象探測等領域得到了廣泛應用。
航空圖像由于是遠距離成像,所以分辨率較低且數據量很大。如果要把拍攝的航空圖像實時回傳,就必須對其進行壓縮編碼。由于圖像壓縮算法復雜,因此決定了回傳系統必須采用高速數字信號處理芯片來實現。DSP作為當前運算性能最高的信號處理芯片,成為實現系統方案的最佳選擇。
目前進行圖像壓縮的方法很多,主要集中在小波變換、分形壓縮、神經網絡編碼等幾個領域。其中小波變換編碼憑借其優良的時頻特性和多分辨率特性成為最熱門的研究方向之一,并在圖像壓縮領域占據了主導地位。但傳統的小波變換計算復雜,且都是在頻域進行。1994年,W.Sweldens提出了一種新的小波構造方案——提升小波。它可以進行原位運算,硬件實現時較為容易,且可以節省內存空間,這一點對于提高系統性能、降低系統成本非常重要;和傳統的小波變換相比,它可以把計算復雜度減小一半,運算速度非常快;此外,提升方案適合用SIMD(單指令多數據流)來實現,這和DSP的多總線讀寫結構是一致的[1]。鑒于提升方案的諸多優點,本系統在具體實現時其小波變換部分采用提升算法來實現。
Shaprio于1992年提出了零樹編碼方案,它采用全新的零樹結構來表征小波系數,使小波變換應用于圖像壓縮的優越性得到了充分的體現[2]。由于零樹法高效的性能,人們在其基礎上又提出了各種改進方法。1996年,Said和Pearlman提出了基于等級樹集合分割的算法——SPIHT算法[3]。該算法也是基于零樹思想,但采用集合劃分來進行編碼,在系數組織方面更有效,壓縮效率也更高。SPIHT算法已經成為公認的編碼效率最高的算法之一,即使不采用算術編碼進行熵編碼,編碼效率仍然很高,優于前面的零樹編碼。因此,本系統在具體實現時采用SPIHT算法對小波系數進行編碼。
1 軟件實現
1.1提升小波的實現
由于圖像的非平穩統計特性,任何一組小波基都不可能同時最優地刻畫所有的圖像特征,因此存在小波基的選取問題。從熵、峰-峰比PPR、廣義編碼增益、抗誤差性能分析等幾個方面綜合比較,本系統采用Antini9/7作為提升方案的小波基[4]。該小波提升方案的實現過程如下:
Antini9/7的分析濾波器為:
首先對圖像進行行變換,然后進行列變換,最后對圖像系數按圖1所示的規則進行重新排列。
1.2 邊界處理問題
在圖像壓縮的工程應用時,邊界處理問題是關鍵技術之一。如果處理不好,信號將不能完全重構,會直接影響重構圖像的質量。對此,提升方案原文中介紹的做法是采用插值細分算法,在邊界點重新計算濾波器的系數值,這樣就無需對信號進行邊界處理[5]。但通過對插值細分算法實現過程的深入研究發現,這樣會帶來浮點計算等額外的計算量,并且破壞了提升方案原本多讀單寫的結構特點,使邊界處理問題變得非常復雜。此外,對于二維圖像處理而言,無需考慮不規則面的情況,在邊界點的處理上可以采用相對簡單的邊界延拓法。經過比較發現,采用邊界延拓法處理問題更為簡單,不僅計算量大大減少,而且保留了多讀單寫的結構,效果也不錯。因此,本系統在具體實現時用邊界延拓法代替提升方案原文中的插值細分算法,實際使用的是全對稱延拓方式。
1.3 SPIHT算法的具體實現
對SPIHT算法進行編程實現時,為了提高執行效率,對具體實現過程做了部分改進。
假設LIS為非顯著點集鏈表,每個鏈表的元素為坐標值(i,j)和類型標志;LIP為非顯著點鏈表,每個鏈表的元素為坐標值(i,j);LSP為顯著點鏈表,每個鏈表的元素為坐標值(i,j)。
用C語言對該算法進行實現時,LIP和LSP結構存儲了像素點在圖像中的坐標位置,根據它可從圖像中檢索出相應的像素值。對于C6xDSP,這樣做需要用多條取數指令輾轉訪問內存才能獲得像素值。但經過分析知道,在編碼程序中,僅當對LIS鏈表中元素進行零樹判斷和子節點處理時才需要根據坐標進行像素點訪問,像素點被放入LIP或者LSP后,只需對像素值進行訪問、修改,沒有必要再通過坐標進行像素值的訪問,可直接在LIP和LSP結構中存儲像素值,從而提高編碼速度。
在解碼時,因為在LIP和LSP的掃描過程中需根據輸入位流的0、1值對像素值進行更新,所以必須存儲像素點的坐標,由于圖像可以改為用一維線性數組存儲,故只需在LIP和LSP中存儲像素點在圖像中的偏移。
1.4 試驗結果
采用標準圖像Zelda對本系統算法和Shaprio的零樹法(EZW)進行測試比較。小波變換分解級數采用六級,試驗結果見表1。
從表1可以看出,本系統算法重構圖像的信噪比比零樹法平均高0.3dB,其性能的優越性是顯而易見的。
2 軟件優化
本系統算法采用C語言編程實現后,首先在ATEME公司的NVDK6416開發板上進行算法調試和代碼優化,主要采用如下優化手段。
2.1基于C語言環境的優化
為了提高程序的執行效率,在編程實現算法時,應采用一些具體的優化手段。在SPIHT編解碼中門限值的初始化和逐步降階中,對于2次冪整數的乘除運算可采用比特的移位操作來代替;盡量少使用局部變量,多使用全局變量和static變量;對于多次重復訪問的變量,如for循環中的變量,可設置為register變量;函數調用時,盡量避免傳遞結構參數,一般用結構指針代替,如果結構是不可修改的,可用常量結構指針代替。
2.2 基于CCS的優化
CCS集成開發環境提供了很多現成的優化方法,可以直接為開發人員所用,常用的有編譯器法、使用字訪問短型數據、合理采用Const關鍵字、使用內聯函數、循環展開以及編寫線性匯編等。
2.3 基于TMS320C6416硬件特征的優化
TMS320C6416的片內存儲器容量較小,總共為1Mbit,采用了兩級緩存結構。在編制程序和存儲數據時,在內存滿足的情況下,應使用片內RAM和高速緩存,將核心代碼存儲在片內的高速緩存或RAM內;若片內內存容量不足,則把使用次數較少的數據放在片外RAM中進行存儲。
采用DMA/EDMA傳輸數據是系統高速采集數據的一個重要手段,在圖像實時采集中應用非常廣泛。TMS320C6416的EDMA有多種地址生成方式,通過設置各個控制寄存器,可以方便地實現數據重排、一對多和多對一的數據交換等操作,利用這些操作可以大大提高程序效率。
對算法的關鍵代碼部分綜合采用上面的各種優化措施,經過反復實驗、測試、優化,算法的執行效率得到了明顯的提高。優化前后的時間結果比較見表2。
從表中可以看出,優化后系統的執行效率提高了近20倍,較好地滿足了系統的實時性要求。
3 硬件實現
本系統采用TI公司的定點芯片TMS320C6416作為核心處理器。此芯片采用了VelociTI.2TM甚長指令字(VLIW)結構,最高工作頻率達到720MHz,運算能力達5760 MIPS,是目前性能最高的DSP芯片,特別適合圖像壓縮等具有較大運算量的場合。由于數據的輸入速率和輸入量都非常大,因此將高速FIFO用于圖像數據緩存非常適合。FIFO只需數據總線和控制信號就可以對其進行讀寫,開發十分方便;并且可以與TMS320C6416 DSP的同步FIFO進行無縫接口。
從CCD高分辨率相機送出的數據,經過預處理后由時鐘信號控制存儲在同步FIFO中,當FIFO出現半滿標志時立即以中斷方式通知DSP到FIFO中讀取數據,同時在FIFO的另一端繼續存儲原圖像數據,并一直以這種方式存取數據。DSP收到中斷后立即從FIFO中讀取數據,然后對圖像進行壓縮處理,處理完畢后送到雙口RAM(DPRAM)中,進行調制處理后由發射機發射出去。
接收端首先利用接收機接收信號,然后進行信號解調、小波反變換和SPIHT解碼,這可以通過PC機或地面工作站來進行,這時只需相應的解壓縮軟件即可實現。
經過實際測試,結果表明本系統在保持良好的重構圖像的情況下較好地滿足了系統的實時性要求,并且其它設計指標也均滿足設計要求。本系統已經在某航空圖像回傳系統中得到實際應用。
-
dsp
+關注
關注
554文章
8058瀏覽量
349575 -
數字信號處理
+關注
關注
15文章
562瀏覽量
45925 -
圖像壓縮系統
+關注
關注
0文章
5瀏覽量
7197
發布評論請先 登錄
相關推薦
評論