航空圖像壓縮系統(tǒng)的DSP設(shè)計(jì)及實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
目前進(jìn)行圖像壓縮的方法很多,主要集中在小波變換、分形壓縮、神經(jīng)網(wǎng)絡(luò)編碼等幾個(gè)領(lǐng)域。其中小波變換編碼憑借其優(yōu)良的時(shí)頻特性和多分辨率特性成為最熱門的研究方向之一,并在圖像壓縮領(lǐng)域占據(jù)了主導(dǎo)地位。但傳統(tǒng)的小波變換計(jì)算復(fù)雜,且都是在頻域進(jìn)行。1994年,W.Sweldens提出了一種新的小波構(gòu)造方案——提升小波。它可以進(jìn)行原位運(yùn)算,硬件實(shí)現(xiàn)時(shí)較為容易,且可以節(jié)省內(nèi)存空間,這一點(diǎn)對于提高系統(tǒng)性能、降低系統(tǒng)成本非常重要;和傳統(tǒng)的小波變換相比,它可以把計(jì)算復(fù)雜度減小一半,運(yùn)算速度非??欤淮送?,提升方案適合用SIMD(單指令多數(shù)據(jù)流)來實(shí)現(xiàn),這和DSP的多總線讀寫結(jié)構(gòu)是一致的[1]。鑒于提升方案的諸多優(yōu)點(diǎn),本系統(tǒng)在具體實(shí)現(xiàn)時(shí)其小波變換部分采用提升算法來實(shí)現(xiàn)。
Shaprio于1992年提出了零樹編碼方案,它采用全新的零樹結(jié)構(gòu)來表征小波系數(shù),使小波變換應(yīng)用于圖像壓縮的優(yōu)越性得到了充分的體現(xiàn)[2]。由于零樹法高效的性能,人們在其基礎(chǔ)上又提出了各種改進(jìn)方法。1996年,Said和Pearlman提出了基于等級樹集合分割的算法——SPIHT算法[3]。該算法也是基于零樹思想,但采用集合劃分來進(jìn)行編碼,在系數(shù)組織方面更有效,壓縮效率也更高。SPIHT算法已經(jīng)成為公認(rèn)的編碼效率最高的算法之一,即使不采用算術(shù)編碼進(jìn)行熵編碼,編碼效率仍然很高,優(yōu)于前面的零樹編碼。因此,本系統(tǒng)在具體實(shí)現(xiàn)時(shí)采用SPIHT算法對小波系數(shù)進(jìn)行編碼。
1 軟件實(shí)現(xiàn)
1.1提升小波的實(shí)現(xiàn)
由于圖像的非平穩(wěn)統(tǒng)計(jì)特性,任何一組小波基都不可能同時(shí)最優(yōu)地刻畫所有的圖像特征,因此存在小波基的選取問題。從熵、峰-峰比PPR、廣義編碼增益、抗誤差性能分析等幾個(gè)方面綜合比較,本系統(tǒng)采用Antini9/7作為提升方案的小波基[4]。該小波提升方案的實(shí)現(xiàn)過程如下:
Antini9/7的分析濾波器為:

首先對圖像進(jìn)行行變換,然后進(jìn)行列變換,最后對圖像系數(shù)按圖1所示的規(guī)則進(jìn)行重新排列。
1.2 邊界處理問題
在圖像壓縮的工程應(yīng)用時(shí),邊界處理問題是關(guān)鍵技術(shù)之一。如果處理不好,信號將不能完全重構(gòu),會直接影響重構(gòu)圖像的質(zhì)量。對此,提升方案原文中介紹的做法是采用插值細(xì)分算法,在邊界點(diǎn)重新計(jì)算濾波器的系數(shù)值,這樣就無需對信號進(jìn)行邊界處理[5]。但通過對插值細(xì)分算法實(shí)現(xiàn)過程的深入研究發(fā)現(xiàn),這樣會帶來浮點(diǎn)計(jì)算等額外的計(jì)算量,并且破壞了提升方案原本多讀單寫的結(jié)構(gòu)特點(diǎn),使邊界處理問題變得非常復(fù)雜。此外,對于二維圖像處理而言,無需考慮不規(guī)則面的情況,在邊界點(diǎn)的處理上可以采用相對簡單的邊界延拓法。經(jīng)過比較發(fā)現(xiàn),采用邊界延拓法處理問題更為簡單,不僅計(jì)算量大大減少,而且保留了多讀單寫的結(jié)構(gòu),效果也不錯(cuò)。因此,本系統(tǒng)在具體實(shí)現(xiàn)時(shí)用邊界延拓法代替提升方案原文中的插值細(xì)分算法,實(shí)際使用的是全對稱延拓方式。
1.3 SPIHT算法的具體實(shí)現(xiàn)
對SPIHT算法進(jìn)行編程實(shí)現(xiàn)時(shí),為了提高執(zhí)行效率,對具體實(shí)現(xiàn)過程做了部分改進(jìn)。
假設(shè)LIS為非顯著點(diǎn)集鏈表,每個(gè)鏈表的元素為坐標(biāo)值(i,j)和類型標(biāo)志;LIP為非顯著點(diǎn)鏈表,每個(gè)鏈表的元素為坐標(biāo)值(i,j);LSP為顯著點(diǎn)鏈表,每個(gè)鏈表的元素為坐標(biāo)值(i,j)。
用C語言對該算法進(jìn)行實(shí)現(xiàn)時(shí),LIP和LSP結(jié)構(gòu)存儲了像素點(diǎn)在圖像中的坐標(biāo)位置,根據(jù)它可從圖像中檢索出相應(yīng)的像素值。對于C6xDSP,這樣做需要用多條取數(shù)指令輾轉(zhuǎn)訪問內(nèi)存才能獲得像素值。但經(jīng)過分析知道,在編碼程序中,僅當(dāng)對LIS鏈表中元素進(jìn)行零樹判斷和子節(jié)點(diǎn)處理時(shí)才需要根據(jù)坐標(biāo)進(jìn)行像素點(diǎn)訪問,像素點(diǎn)被放入LIP或者LSP后,只需對像素值進(jìn)行訪問、修改,沒有必要再通過坐標(biāo)進(jìn)行像素值的訪問,可直接在LIP和LSP結(jié)構(gòu)中存儲像素值,從而提高編碼速度。
在解碼時(shí),因?yàn)樵贚IP和LSP的掃描過程中需根據(jù)輸入位流的0、1值對像素值進(jìn)行更新,所以必須存儲像素點(diǎn)的坐標(biāo),由于圖像可以改為用一維線性數(shù)組存儲,故只需在LIP和LSP中存儲像素點(diǎn)在圖像中的偏移。
1.4 試驗(yàn)結(jié)果
采用標(biāo)準(zhǔn)圖像Zelda對本系統(tǒng)算法和Shaprio的零樹法(EZW)進(jìn)行測試比較。小波變換分解級數(shù)采用六級,試驗(yàn)結(jié)果見表1。
從表1可以看出,本系統(tǒng)算法重構(gòu)圖像的信噪比比零樹法平均高0.3dB,其性能的優(yōu)越性是顯而易見的。
2 軟件優(yōu)化
本系統(tǒng)算法采用C語言編程實(shí)現(xiàn)后,首先在ATEME公司的NVDK6416開發(fā)板上進(jìn)行算法調(diào)試和代碼優(yōu)化,主要采用如下優(yōu)化手段。
2.1基于C語言環(huán)境的優(yōu)化
為了提高程序的執(zhí)行效率,在編程實(shí)現(xiàn)算法時(shí),應(yīng)采用一些具體的優(yōu)化手段。在SPIHT編解碼中門限值的初始化和逐步降階中,對于2次冪整數(shù)的乘除運(yùn)算可采用比特的移位操作來代替;盡量少使用局部變量,多使用全局變量和static變量;對于多次重復(fù)訪問的變量,如for循環(huán)中的變量,可設(shè)置為register變量;函數(shù)調(diào)用時(shí),盡量避免傳遞結(jié)構(gòu)參數(shù),一般用結(jié)構(gòu)指針代替,如果結(jié)構(gòu)是不可修改的,可用常量結(jié)構(gòu)指針代替。
2.2 基于CCS的優(yōu)化
CCS集成開發(fā)環(huán)境提供了很多現(xiàn)成的優(yōu)化方法,可以直接為開發(fā)人員所用,常用的有編譯器法、使用字訪問短型數(shù)據(jù)、合理采用Const關(guān)鍵字、使用內(nèi)聯(lián)函數(shù)、循環(huán)展開以及編寫線性匯編等。
2.3 基于TMS320C6416硬件特征的優(yōu)化
TMS320C6416的片內(nèi)存儲器容量較小,總共為1Mbit,采用了兩級緩存結(jié)構(gòu)。在編制程序和存儲數(shù)據(jù)時(shí),在內(nèi)存滿足的情況下,應(yīng)使用片內(nèi)RAM和高速緩存,將核心代碼存儲在片內(nèi)的高速緩存或RAM內(nèi);若片內(nèi)內(nèi)存容量不足,則把使用次數(shù)較少的數(shù)據(jù)放在片外RAM中進(jìn)行存儲。
采用DMA/EDMA傳輸數(shù)據(jù)是系統(tǒng)高速采集數(shù)據(jù)的一個(gè)重要手段,在圖像實(shí)時(shí)采集中應(yīng)用非常廣泛。TMS320C6416的EDMA有多種地址生成方式,通過設(shè)置各個(gè)控制寄存器,可以方便地實(shí)現(xiàn)數(shù)據(jù)重排、一對多和多對一的數(shù)據(jù)交換等操作,利用這些操作可以大大提高程序效率。
對算法的關(guān)鍵代碼部分綜合采用上面的各種優(yōu)化措施,經(jīng)過反復(fù)實(shí)驗(yàn)、測試、優(yōu)化,算法的執(zhí)行效率得到了明顯的提高。優(yōu)化前后的時(shí)間結(jié)果比較見表2。
從表中可以看出,優(yōu)化后系統(tǒng)的執(zhí)行效率提高了近20倍,較好地滿足了系統(tǒng)的實(shí)時(shí)性要求。
3 硬件實(shí)現(xiàn)
本系統(tǒng)采用TI公司的定點(diǎn)芯片TMS320C6416作為核心處理器。此芯片采用了VelociTI.2TM甚長指令字(VLIW)結(jié)構(gòu),最高工作頻率達(dá)到720MHz,運(yùn)算能力達(dá)5760 MIPS,是目前性能最高的DSP芯片,特別適合圖像壓縮等具有較大運(yùn)算量的場合。由于數(shù)據(jù)的輸入速率和輸入量都非常大,因此將高速FIFO用于圖像數(shù)據(jù)緩存非常適合。FIFO只需數(shù)據(jù)總線和控制信號就可以對其進(jìn)行讀寫,開發(fā)十分方便;并且可以與TMS320C6416 DSP的同步FIFO進(jìn)行無縫接口。
圖2所示是系統(tǒng)壓縮板卡的設(shè)計(jì)原理框圖。
從CCD高分辨率相機(jī)送出的數(shù)據(jù),經(jīng)過預(yù)處理后由時(shí)鐘信號控制存儲在同步FIFO中,當(dāng)FIFO出現(xiàn)半滿標(biāo)志時(shí)立即以中斷方式通知DSP到FIFO中讀取數(shù)據(jù),同時(shí)在FIFO的另一端繼續(xù)存儲原圖像數(shù)據(jù),并一直以這種方式存取數(shù)據(jù)。DSP收到中斷后立即從FIFO中讀取數(shù)據(jù),然后對圖像進(jìn)行壓縮處理,處理完畢后送到雙口RAM(DPRAM)中,進(jìn)行調(diào)制處理后由發(fā)射機(jī)發(fā)射出去。
接收端首先利用接收機(jī)接收信號,然后進(jìn)行信號解調(diào)、小波反變換和SPIHT解碼,這可以通過PC機(jī)或地面工作站來進(jìn)行,這時(shí)只需相應(yīng)的解壓縮軟件即可實(shí)現(xiàn)。
經(jīng)過實(shí)際測試,結(jié)果表明本系統(tǒng)在保持良好的重構(gòu)圖像的情況下較好地滿足了系統(tǒng)的實(shí)時(shí)性要求,并且其它設(shè)計(jì)指標(biāo)也均滿足設(shè)計(jì)要求。本系統(tǒng)已經(jīng)在某航空圖像回傳系統(tǒng)中得到實(shí)際應(yīng)用。
參考文獻(xiàn)
1 劉 泉, 周祖德.基于小波變換的JPEG2000圖像壓縮研究[J].華中科技大學(xué)學(xué)報(bào),2002;30(2):75~77
2 J. M. Shaprio. Embedded Image Coding Using Zerotree of Wavelet Cefficients[A]. IEEE Trans on Signal Proc, 1993;41(12):3445~3462
3 A. Said, W. Pearlman. A New, Fast, and Efficient Image Codec Based on Set Partitioning in Hierachical Trees[A]. IEEE Trans On Circuits and Systems for Video Technology, 1993; 6(9): 243~250
4 楊小明.小波變換及其在航空偵察圖像回傳系統(tǒng)中的應(yīng)用研究:[碩士學(xué)位論文].煙臺:海軍航空工程學(xué)院,1999
5 W.Swedens. The lifting Scheme: A Construction of Second Generation Wavelets. Tech. Rep, 1995;6(2): 511~546