王 林,楊 紅,卿粼波,滕奇志,何小海,陳洪剛
(四川大學(xué) 電子信息學(xué)院,四川 成都 610065)
隨著高光譜成像技術(shù)的發(fā)展,高光譜圖像具有越來越高的光譜分辨率和空間分辨率,給數(shù)據(jù)的存儲(chǔ)和傳輸帶來了嚴(yán)峻的挑戰(zhàn)[1]。由于高光譜圖像需要由遙感平臺(tái)傳輸?shù)降孛妫媾R著內(nèi)存資源、計(jì)算能力有限等問題,因此設(shè)計(jì)一種簡(jiǎn)單高效的壓縮方案是高光譜領(lǐng)域需要解決的重要問題??紤]到無損壓縮只能提供有限的壓縮比,有損壓縮更加適合硬件資源、下行帶寬有限的遙感平臺(tái),因此本文對(duì)高光譜圖像的有損壓縮進(jìn)行深入研究和分析。
傳統(tǒng)的高光譜圖像有損壓縮方法,可分為2類:① 采用獨(dú)立編碼獨(dú)立解碼的方式,如靜態(tài)圖像壓縮編碼標(biāo)準(zhǔn)JPEG2000[2],這種方式只能去除高光譜圖像的空間冗余,無法去除光譜冗余,因此不能獲得有效的壓縮性能;② 采用聯(lián)合編碼聯(lián)合解碼的方式,如文獻(xiàn)[3]將JPEG2000與一維光譜去相關(guān)方法DWT(Discrete Wavelet Transform)、DCT(Discrete Cosine Transform)和 KLT( Karhunen-Loeve Transform)相結(jié)合。雖然這種傳統(tǒng)類型的算法可以有效地利用消除相鄰波段圖像之間的冗余,然而編碼復(fù)雜度高,需要大量的存儲(chǔ)空間,并且無錯(cuò)誤恢復(fù)能力。分布式信源編碼(Distributed Source Coding,DSC),采用獨(dú)立編碼聯(lián)合解碼的方式。這種思想的無損壓縮理論基礎(chǔ)是Slepian-Wolf[4]理論,有損壓縮理論基礎(chǔ)是Wyner-Ziv[5]理論。DSC的主要應(yīng)用領(lǐng)域有無線傳感器網(wǎng)絡(luò)[6]和圖像[7]、視頻編碼[8-9]等。近年來DSC在高光譜圖像壓縮中得到了廣泛的應(yīng)用,因?yàn)樗鼘?fù)雜度從編碼器轉(zhuǎn)移到解碼器[10],并且在 DSC中利用了信道編碼技術(shù),抗誤碼能力強(qiáng),從而滿足星載壓縮的要求[11]。文獻(xiàn)[12-13]提出基于DCT的高光譜圖像分布式編碼方案,利用SPHIT(Set Partitioning in Hierarchical Trees)算法重組每個(gè)編碼塊的DCT系數(shù),進(jìn)而提取位平面,但基于塊的操作會(huì)導(dǎo)致方塊效應(yīng)。文獻(xiàn)[14]提出一種基于三維小波變換的高光譜圖像分布式編碼方案,通過不同的傳輸通道對(duì)變換后的高頻部分和低頻部分實(shí)現(xiàn)獨(dú)立的SPIHT編碼,該方案雖能有效提升編碼效率,但三維小波變換增加了計(jì)算復(fù)雜度和內(nèi)存需求。同時(shí),文獻(xiàn)[15]提出了基于像素域的高光譜圖像分布式編碼方案,采用基于塊單元的線性預(yù)測(cè)方法去除譜間相關(guān)性,但基于塊的預(yù)測(cè)方案不僅會(huì)產(chǎn)生大量附加信息和方塊效應(yīng),并且使用當(dāng)前塊在前面2個(gè)波段中的同位塊構(gòu)造邊信息會(huì)造成誤碼在光譜方向的擴(kuò)散。針對(duì)上述問題,本文利用二維DWT的高低頻分離以及多尺度分析的特點(diǎn),將高光譜圖像的空間能量集中起來,借助高光譜具有譜間相關(guān)性的特點(diǎn)設(shè)計(jì)了分層預(yù)測(cè)結(jié)構(gòu),可獲得邊信息(Side Information,SI)質(zhì)量的提升。
本文對(duì)1997年機(jī)載可見光紅外成像光譜儀(Airborne Visible/Infrared Imaging Spectrometer,AVIRIS)獲取的高光譜圖像進(jìn)行了仿真實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)的高光譜圖像有損壓縮算法以及文獻(xiàn)[15]提出的分布式有損壓縮邊信息生成算法相比,該算法具有較好的率失真性能。
本文提出了一種基于分層預(yù)測(cè)的高光譜圖像有損壓縮方案,算法整體框架如圖 1所示。圖1中用灰色顯示的模塊是本方案的核心模塊,其中分層預(yù)測(cè)和邊信息生成模塊在后續(xù)進(jìn)行詳細(xì)介紹。
圖1 算法整體框架Fig.1 Overall framework of the algorithm
本方案的工作流程可分為三步:
(1) GOP設(shè)置預(yù)處理。設(shè)高光譜圖像總的波段數(shù)為M,首先將高光譜圖像連續(xù)輸入的N波段圖像作為一個(gè)圖像組(Group of Pictures,GOP),則GOP大小為N。圖像分組示意圖如圖 2所示,每個(gè)GOP中的前N-1個(gè)波段設(shè)為WZ波段,最后一個(gè)波段設(shè)為K波段(其中第一個(gè)波段的圖像即波段0作為K波段,但不屬于任何GOP)。當(dāng)M≠n×N+1(n為正整數(shù))時(shí),這些圖像能構(gòu)成的GOP數(shù)量為floor((M-1)/N),而余下的(M-1-floor((M-1)/N)×N)個(gè)圖像不足以構(gòu)成一個(gè)GOP,這時(shí)WZ波段將處于2種區(qū)域即GOP區(qū)域和non_GOP區(qū)域。GOP區(qū)域中的WZ波段采用分層預(yù)測(cè)結(jié)構(gòu)生成邊信息;non_GOP區(qū)域的WZ波段將進(jìn)行特殊處理,只采用前向相鄰的一個(gè)已解碼波段來生成邊信息,邊信息生成方式將在1.3節(jié)進(jìn)行詳細(xì)描述。
圖2 圖像分組示意圖Fig.2 Image grouping diagram
(2) 編碼。K波段采用JPEG2000進(jìn)行編碼。WZ波段的編碼首先減去該波段的均值,進(jìn)行二維小波變換。圖像小波變換后的低頻子帶可以看作原始圖像的低分辨率版本,在圖像壓縮中具有重要意義。在對(duì)原始圖像進(jìn)行小波變換之前減去該圖像的均值,得到的低頻系數(shù)呈現(xiàn)零均值分布和擁有單一尖峰,符合拉普拉斯分布。而比特平面編碼是一種對(duì)分布在零處有尖銳峰值的圖像漸進(jìn)壓縮的有效方法,因此可以減小重建光譜波段的偏差,提高重建圖像的質(zhì)量。然后對(duì)得到的小波系數(shù)分別進(jìn)行量化和比特面分解,最后對(duì)每個(gè)比特面按從高到低的順序進(jìn)行LDPC[16]信道編碼,得到的校驗(yàn)信息被儲(chǔ)存到緩沖器中。
(3) 解碼。K波段采用JPEG2000進(jìn)行解碼,得到K波段的重建值。WZ波段的解碼首先利用分層預(yù)測(cè)結(jié)構(gòu),由2個(gè)已解碼的波段對(duì)當(dāng)前波段進(jìn)行加權(quán)預(yù)測(cè),生成聯(lián)合解碼的SI。其次,SI和編碼端傳輸過來的校驗(yàn)信息一起進(jìn)行LDPC信道解碼,如果解碼不成功,則通過反饋信道向編碼端請(qǐng)求更多的校驗(yàn)信息,直到解碼成功或者達(dá)到最大解碼次數(shù)。然后,將解碼的比特面合并后得到的重構(gòu)信息進(jìn)行反量化與反變換,再加上該波段的均值,得到當(dāng)前WZ波段的重建值。最后,將K波段重建值與WZ波段重建值組合起來,得到解碼后的高光譜圖像。
分層B幀預(yù)測(cè)結(jié)構(gòu)德國HHI實(shí)驗(yàn)室提出,在視頻編碼中由于分層B幀結(jié)構(gòu)的引入使得編碼效率大大提高[17]。本文借鑒分層B幀的思想提出了一種分層預(yù)測(cè)結(jié)構(gòu),參考當(dāng)前WZ波段相鄰的2個(gè)已解碼波段的重建值生成高質(zhì)量的邊信息,框架結(jié)構(gòu)如圖3所示。
圖3 圖像分組示意Fig.3 Layered WZ bands prediction structure
圖3中,箭頭代表波段圖像在光譜方向上的預(yù)測(cè)關(guān)系,GOP長度為8。高光譜圖像按照當(dāng)前波段與其參考波段的間隔長短分成不同的預(yù)測(cè)層(Prediction Layer,PL),其中第1~8波段屬于一個(gè)GOP,第0波段不屬于任何GOP??梢?第0波段和第8波段為K波段,其預(yù)測(cè)層最低,設(shè)為PL=0。WZ波段分為了3層,第4波段位于PL=1層,第2波段和第6波段位于PL=2層,第1、3、5、7波段位于PL=3層。在分層的預(yù)測(cè)結(jié)構(gòu)中圖像解碼順序和顯示順序是獨(dú)立的,處于高預(yù)測(cè)層的WZ波段可以使用低于其預(yù)測(cè)層的已解碼波段作為參考。本文使用分層預(yù)測(cè)結(jié)構(gòu)來確定一個(gè)GOP中圖像的編解碼順序。
根據(jù)以上分析,分層預(yù)測(cè)結(jié)構(gòu)確定了圖像的編解碼順序以及參考波段的選取,當(dāng)前波段通過多元線性回歸模型[18]獲得預(yù)測(cè)系數(shù)α,由已解碼的波段來生成SI。1.1節(jié)描述了GOP設(shè)置預(yù)處理,當(dāng)M≠n×N+1(n為正整數(shù)) 時(shí),當(dāng)前WZ波段將會(huì)處于2種區(qū)域GOP區(qū)和non_GOP區(qū)域。下面描述2種區(qū)域WZ波段的邊信息生成方式。
當(dāng)前WZ波段屬于GOP區(qū)域,則當(dāng)前WZ波段的參考波段數(shù)量P=2,α=[α1,α2]T,且與它的前后向參考波段距離都為l(l=1,2,3,4),當(dāng)前波段的邊信息可表示為:
(1)
當(dāng)前WZ波段屬于non_GOP區(qū)域,則當(dāng)前WZ波段的參考波段數(shù)量為p=1,α=α1,且與它的前向參考波段距離都為l(l=1),當(dāng)前波段的邊信息可表示為:
(2)
為驗(yàn)證所提算法的有效性,本文對(duì)1997年AVIRIS傳感器獲取的幾個(gè)高光譜圖像場(chǎng)景進(jìn)行測(cè)試。AVIRIS傳感器由美國NASA(National Aeronautics and Space Administration)下屬的噴氣動(dòng)力實(shí)驗(yàn)室設(shè)計(jì),在0.4~2.5 nm波長范圍內(nèi),所獲取的高光譜圖像共有 224 個(gè)波段,光譜分辨率為10 nm,空間分辨率為 20 m×20 m,每個(gè)像素存為16 bit。測(cè)試的高光譜場(chǎng)景共有3個(gè),包括Cuprite、Low Altitude和Lunar Lake,這些高光譜圖像已在許多高光譜圖像壓縮的論文中得到了應(yīng)用。圖 4顯示了3幅高光譜場(chǎng)景的第50波段圖像,圖像分辨率為512 pixel×614 pixel。實(shí)驗(yàn)時(shí)從每個(gè)場(chǎng)景中提取了100個(gè)波段,每個(gè)波段裁剪為512 pixel×512 pixel。GOP的大小設(shè)置為8,空間方向上進(jìn)行3級(jí)二維小波變換,K波段的固定碼率為6 bpp(Bit per Pixel),利用信噪比(Signal-to-noise Ratio,SNR)作為圖像質(zhì)量的評(píng)價(jià)指標(biāo)。
(a) Cuprite
(b) Low Altitude
(c) Lunar Lake圖4 不同高光譜圖像場(chǎng)景的第50波段Fig.4 The 50th band of different hyperspectral image scenes
2.2.1 邊信息質(zhì)量對(duì)比
為了驗(yàn)證本方案的分層預(yù)測(cè)結(jié)構(gòu)能生成高質(zhì)量的邊信息,本文與文獻(xiàn)[15]中邊信息的率失真曲線進(jìn)行了對(duì)比,如圖5所示,其橫坐標(biāo)為編碼每個(gè)像素所需的碼率,單位為bpp,縱坐標(biāo)為圖像的質(zhì)量評(píng)價(jià)指標(biāo)SNR,單位為dB,在相同碼率下,SNR越高,說明圖像的質(zhì)量越好。從圖5中可以明顯地看出,在低碼率情況下,本文的邊信息率失真曲線明顯高于文獻(xiàn)[15]。原因是,文獻(xiàn)[15]由于之前的重構(gòu)塊被用來構(gòu)造當(dāng)前塊的邊信息,重構(gòu)塊引入的失真可能會(huì)嚴(yán)重影響邊信息的質(zhì)量,從而導(dǎo)致算法性能下降,并且該邊信息生成算法按波段順序工作,因此在低比特率下會(huì)造成光譜方向上的誤差擴(kuò)散。而本文所提出的算法,將高光譜圖像分為若干個(gè)GOP,GOP中K波段和WZ波段采用了不同的編解碼方式,K波段的重建完全不依賴于之前的已解碼圖像,因此能將誤差限制在一個(gè)GOP中,而不會(huì)在整個(gè)光譜方向上持續(xù)擴(kuò)散。因此,在低碼率情況下,即壓縮比較大時(shí),本文能獲得更高的邊信息質(zhì)量,從而獲得更高的重建圖像質(zhì)量。
(a) Cuprite
(b) Low Altitude
(c) Lunar Lake圖5 邊信息質(zhì)量對(duì)比Fig.5 Side information quality comparison
2.2.2 整體RD性能對(duì)比
為進(jìn)一步驗(yàn)證所提算法具有良好的率失真性能,如圖6所示,給出了分別采用JPEG2000[19]、DWT+JPEG2000[3]、文獻(xiàn)[15]提出的邊信息生成算法以及本文算法,AVIRIS重建圖像的信噪比SNR隨碼率變化的率失真性能曲線。
(a) Cuprite
(b) Low Altitude
(c) Lunar Lake圖6 AVIRIS圖像率失真性能對(duì)比Fig.6 AVIRIS image rate distortion performance comparison
從圖6可以看出,本文所提出的算法率失真性能最好,與未考慮去除光譜冗余的JPEG2000相比,Cuprite、Low Altitude和Lunar Lake的SNR平均提升了14.37,18.91,13.73 dB;與考慮了去除光譜冗余的傳統(tǒng)編碼算法DWT +JPEG2000相比,SNR平均提升了3.29,6.02,3.0 dB;與文獻(xiàn)[15]提出的邊信息生成算法相比,SNR平均提升了0.49,1.67,0.90 dB。這是因?yàn)镴PEG2000對(duì)于靜止圖像具有良好的率失真性能,但對(duì)于高光譜圖像由于沒有考慮相鄰波段圖像的相關(guān)性,無法消除光譜冗余,因此無法實(shí)現(xiàn)較高的編碼效率。在高光譜圖像壓縮中,為了提高率失真性能,去除光譜相關(guān)性是非常重要的。DWT+JPEG2000去除了光譜相關(guān)性,率失真性能優(yōu)于JPEG2000,但DWT+JPEG2000需要逐像元進(jìn)行譜間去相關(guān),內(nèi)存需求大,因?yàn)樗胁ǘ涡枰瑫r(shí)進(jìn)行變換。文獻(xiàn)[15]提出的邊信息生成算法在低碼率下,由于光譜方向上的誤差擴(kuò)散,與本文所提算法有著明顯差距。因此,本文相對(duì)于JPEG2000、DWT+JPEG2000以及文獻(xiàn)[15]提出的邊信息生成算法,均具有更好的率失真性能。
圖7 信源編碼復(fù)雜度比較Fig.7 Source coding complexity comparison
2.2.3 時(shí)間復(fù)雜度對(duì)比
使用編碼時(shí)間來評(píng)估每個(gè)算法的復(fù)雜度,由于JPEG2000以及DWT+JPEG2000不包含信道編碼,因此文中將編碼復(fù)雜度分為兩部分來比較,首先比較的是信源編碼的時(shí)間,各個(gè)算法信源編碼復(fù)雜度的比較結(jié)果如圖7所示;其次比較了文獻(xiàn)[15]和本文所提算法的信道編碼時(shí)間,比較結(jié)果如圖8所示。
圖8 信道編碼復(fù)雜度比較Fig.8 Channel coding complexity comparison
如圖7所示,縱坐標(biāo)表示每波段圖像的平均信源編碼時(shí)間,單位為s,信源編碼時(shí)間按從多到少排序?yàn)镈WT+JPEG2000>PROPOSED>JPEG2000>文獻(xiàn)[15]。DWT+JPEG2000信源編碼在JPEG2000的基礎(chǔ)上要進(jìn)行光譜方向的一維小波變換,因此時(shí)間復(fù)雜度最高。文獻(xiàn)[15]在像素域進(jìn)行編碼,不需要進(jìn)行圖像變換,因此編碼時(shí)間最少,但本文算法整體率失真性能略高于文獻(xiàn)[15],并在低碼率情況下優(yōu)勢(shì)明顯。本文所提算法在率失真性能方面相較于JPEG2000以及DWT+JPEG2000有著較大優(yōu)勢(shì),同時(shí)信源編碼復(fù)雜度與JPEG2000相當(dāng),并低于DWT+JPEG2000。
如圖8所示,縱坐標(biāo)表示每波段圖像的平均信道編碼時(shí)間,單位為s,對(duì)比了文獻(xiàn)[15]和本文的信道編碼時(shí)間,本文算法所需要的信道編碼時(shí)間低于文獻(xiàn)[15]所需的信道編碼時(shí)間。這是因?yàn)楸疚乃惴▽D像變換到小波域,能量集中到了低頻子帶,低頻子帶數(shù)值較大,高頻子帶數(shù)值較小,因此按照每個(gè)子帶對(duì)每個(gè)比特面進(jìn)行編碼時(shí)增大了連續(xù)0、1出現(xiàn)的概率,提高了信道編碼的效率,由于文獻(xiàn)[15]在像素域上進(jìn)行編碼,沒有將圖像能量集中起來,因此在對(duì)每個(gè)比特面進(jìn)行編碼時(shí)需要耗費(fèi)較多的時(shí)間。
針對(duì)高光譜圖像星載壓縮存在內(nèi)存資源、計(jì)算能力有限等問題,本文提出了一種基于分布式信源編碼的高光譜圖像有損壓縮算法,將高光譜圖像分為若干個(gè)GOP,避免了誤差在光譜方向上的擴(kuò)散,利用高光譜圖像的譜間相關(guān)性,引入分層預(yù)測(cè)結(jié)構(gòu)生成高質(zhì)量的WZ波段邊信息,節(jié)約了解碼所需的碼率。由于本文是將量化后的小波系數(shù)進(jìn)行比特面分解得到二進(jìn)制數(shù)據(jù)流,高位比特面的重要性要高于低位比特面,因此下一步的研究方向是將碼率分配方法引入到本文所提框架中,為不同比特面分配不同的碼率,當(dāng)比特面較高時(shí),分配較多比特以保證高位比特能夠正確解碼,可以進(jìn)一步提升編碼性能。