李佳穎,朱文泉,孟繁蘊
(1.北京師范大學(xué)地理科學(xué)學(xué)部中藥資源保護(hù)與利用北京市重點實驗室,北京 100875;2.北京師范大學(xué)地理科學(xué)學(xué)部天然藥物教育部工程研究中心,北京 100875;3.北京師范大學(xué)地理科學(xué)學(xué)部遙感科學(xué)與工程研究院,北京 100875)
遙感技術(shù)在近20年得到了前所未有的發(fā)展,已成為對地觀測的重要手段[1]。為滿足各種分析和應(yīng)用需要,遙感圖像光譜分辨率不斷提高,高光譜遙感應(yīng)運而生[2]。高光譜數(shù)據(jù)兼具空間和光譜信息,可繪制地物光譜特征曲線,為定量遙感提供更豐富的光譜信息,為地物識別提供更高的識別能力及判別精度。海量的高光譜信息給數(shù)據(jù)存儲和傳輸帶來了挑戰(zhàn),因此研究高光譜圖像壓縮很有必要。考慮到高光譜圖像獲取難度大,具有完整保存的必要性[3],無損壓縮成為研究的重中之重[4]。
高光譜圖像無損壓縮技術(shù)可分為3類:基于預(yù)測的方法、基于變換的方法和基于矢量量化的方法[5]。基于預(yù)測的方法是最經(jīng)典的圖像壓縮算法之一,2012年5月,國際空間數(shù)據(jù)系統(tǒng)咨詢委員會CCSDS(Consultative Committee for Space Data Systems)針對多/高光譜圖像提出了自適應(yīng)的三維預(yù)測無損壓縮標(biāo)準(zhǔn)CCSDS 123.0-B-1算法[6]。該算法是基于預(yù)測器的無損壓縮,壓縮系統(tǒng)由預(yù)測器和編碼器組成(如圖1所示)。預(yù)測器核心為FL(Fast Lossless)算法[7 - 9],可減小數(shù)據(jù)冗余,得到預(yù)測殘差;編碼器對預(yù)測殘差進(jìn)行熵編碼后輸出。CCSDS 123.0-B-1標(biāo)準(zhǔn)提出的算法計算簡單,復(fù)雜度低,對絕大多數(shù)多光譜及高光譜圖像都能達(dá)到較好的預(yù)測效果[10],是目前星載多/高光譜圖像無損壓縮的國際通用標(biāo)準(zhǔn)。但是,該算法對所有像素采用同樣的預(yù)測模式,未針對像素位置進(jìn)行區(qū)分;采用前向線性預(yù)測,未充分利用圖像譜間相關(guān)性,壓縮率仍有待提高。為此,何淑賢[11]提出了基于邊緣檢測的預(yù)測方法,首先對圖像進(jìn)行邊緣檢測,然后根據(jù)不同方向的邊緣,對待預(yù)測像素周圍像素點賦予不同權(quán)重,提高了預(yù)測準(zhǔn)確性。王麗萍[12]分析了CCSDS 123.0-B-1標(biāo)準(zhǔn)中的參考波段數(shù)、權(quán)重分辨率、計數(shù)器初始化因子、計數(shù)器縮放區(qū)間等11個參數(shù)對壓縮性能的影響,提出了一組優(yōu)化參數(shù),壓縮性能明顯提高。張雷等[13]提出了優(yōu)化組合預(yù)測編碼OCPC(Optimized Combination Processing Coding)算法,預(yù)測器根據(jù)像素點位置自適應(yīng)選擇預(yù)測模式,編碼器采用Golomb-Rice編碼,得到了較好的壓縮效果。
由前述分析可知,在CCSDS 123.0-B-1算法中,如果映射預(yù)測殘差越小,則其壓縮后的碼長就會越短,其壓縮性能就會越好。基于此,本文提出一種降低映射預(yù)測殘差的RMPR(Reduction of Mapped Prediction Residual)算法,通過提高預(yù)測值準(zhǔn)確度和優(yōu)化殘差映射器來減小映射預(yù)測殘差,從而提高壓縮性能。

Figure 1 Compression system圖1 壓縮系統(tǒng)
本文的高光譜測試數(shù)據(jù)為CCSDS測試圖像,來源于CCSDS官網(wǎng)(https://public.ccsds.org/default.aspx)。表1所示為10幅測試圖像的具體信息,圖2所示為測試圖像的部分區(qū)域。

Table 1 Image information
2.2.1 CCSDS 123.0-B-1算法簡介
CCSDS 123.0-B-1算法的壓縮流程如圖3所示,下面重點介紹該算法的預(yù)測器和編碼器。
(1)預(yù)測器。

Figure 2 Test images圖2 測試圖像
預(yù)測器通過當(dāng)前像元周圍像元和相鄰譜帶像元產(chǎn)生像元預(yù)測值,在此過程中去除了譜間相關(guān)和空間相關(guān),從而減小冗余;像元預(yù)測值和真實像元值之間產(chǎn)生殘差,由于殘差有正負(fù)之分,通過映射器區(qū)分正負(fù),且將正殘差和負(fù)殘差均映射為較小正整數(shù)輸入編碼器。
首先計算局部和σz,y,x,其中,x,y,z分別表示高光譜圖像的列數(shù)、行數(shù)、波段數(shù),用戶可選擇計算同列局部和或周邊局部和,兩者的預(yù)測點不同:同列局部和用同列像元Sz,y-1,x作預(yù)測點進(jìn)行計算(如圖4a所示);周邊局部和用周圍4個像元Sz,y-1,x-1、Sz,y-1,x、Sz,y-1,x+1、Sz,y,x-1作預(yù)測點進(jìn)行計算(如圖4b所示)。

Figure 3 Compression flow chart of CCSDS 123.0-B-1 algorithm圖3 CCSDS 123.0-B-1算法的壓縮流程
針對局部差向量Uz(t)的計算,預(yù)測器中采用了2種模式:簡化模式和完整模式。2種模式都采用向前線性單向預(yù)測。簡化模式中,局部差向量取決于當(dāng)前所預(yù)測譜帶的先前譜帶;完整模式中,局部差向量取決于當(dāng)前預(yù)測譜帶和先前譜帶,當(dāng)前預(yù)測譜帶的局部差由當(dāng)前像元周圍3個像元決定(如圖5所示)。每1個局部差向量對應(yīng)1個權(quán)重向量Wz(t),權(quán)值的更新自適應(yīng)于每一像元,當(dāng)前像元的權(quán)值依賴于上一像元。

Figure 4 Selection of samples for calculating local sums圖4 計算局部和的預(yù)測點選取

Figure 5 Selection of current band samples for calculating local differences圖5 計算局部差的當(dāng)前譜帶像元選取

殘差映射器是閾值選擇映射[14],表達(dá)式如式(1)所示,其中θz(t)是閾值。當(dāng)|Δx(t)|>θz(t)時,閾值選擇映射可以減小映射預(yù)測殘差δz(t),有利于圖像壓縮[15]。
(1)
(2)編碼器。
編碼器對映射預(yù)測殘差δz(t)進(jìn)行了熵編碼[16],目的是消除殘差統(tǒng)計的冗余[17]。CCSDS 123.0-B-1算法采用Golomb-Rice編碼[18,19],其基本思想是將映射預(yù)測殘差除以已知整數(shù),該整數(shù)是2的次冪,分別存儲商和余數(shù)。編碼器還設(shè)置了累加器和計數(shù)器以確定每個映射預(yù)測殘差的編碼長度,兩者在編碼中自適應(yīng)迭代。這種編碼方式適用于小數(shù)字出現(xiàn)概率高于大數(shù)字出現(xiàn)概率的情況,因為它使用較短碼長編碼小數(shù)字,用較長碼長編碼大數(shù)字。
2.2.2 改進(jìn)的RMPR算法
由于映射預(yù)測殘差δz(t)越小,壓縮后碼長越短,壓縮性能越好,基于此,本文提出RMPR算法,通過提高預(yù)測值準(zhǔn)確度和優(yōu)化殘差映射器來減小映射預(yù)測殘差,從而提高壓縮性能。其中,預(yù)測值準(zhǔn)確度的提高主要通過預(yù)測點改進(jìn)和預(yù)測方向改進(jìn)2種途徑。
(1)預(yù)測點改進(jìn)。

If (x==1,2,3‖y==1,2,3‖x==Nx-1,Nx-2,Nx-3)
return getColumnSum(z,y,x)
else
return getNeighborSum(z,y,x)
(2)預(yù)測方向改進(jìn)。
考慮到高光譜圖像較強的譜間相關(guān)性,RMPR算法采用雙向線性預(yù)測提高預(yù)測準(zhǔn)確度,即將待預(yù)測波段B個前向波段和B個后向波段作為參考波段。過少的參考波段數(shù)會帶來較大誤差,甚至導(dǎo)致預(yù)測發(fā)散;過多的參考波段數(shù)會導(dǎo)致計算量增加,收斂條件更嚴(yán)格[21],綜合考慮,B值推薦為3。
(3)殘差映射器改進(jìn)。
預(yù)測殘差有正負(fù)之分,為了便于后續(xù)編碼,一般將負(fù)值變?yōu)檎担瑫r要將正負(fù)數(shù)映射為奇偶數(shù),在解碼時通過奇偶區(qū)分正負(fù)。CCSDS 123.0-B-1算法采用閾值選擇映射,其中θz(t)是閾值,當(dāng)預(yù)測較為準(zhǔn)確,預(yù)測殘差的數(shù)值|Δz(t)|較小,即|Δz(t)|≤θz(t)時,正殘差被映射為正奇數(shù):2|Δz(t)|-1,負(fù)殘差被映射為正偶數(shù):2|Δz(t)|;當(dāng)預(yù)測不準(zhǔn)導(dǎo)致預(yù)測殘差的數(shù)值|Δz(t)|過大,即 |Δz(t)|>θz(t)時,預(yù)測殘差被映射為|Δz(t)|與閾值θz(t)的和,由于閾值θz(t)小于|Δz(t)|。因此,|Δz(t)|與閾值θz(t)的和小于2倍的|Δz(t)|。相比于直接映射為2倍的|Δz(t)|,采用這種映射方式得到的映射預(yù)測殘差δz(t)有所減小。 此種情況下映射預(yù)測殘差δz(t)減小的具體數(shù)值取決于θz(t),即要想使δz(t)有所降低,可減小與之相加的閾值θz(t)。RMPR算法采用式(2)作為殘差映射器,m取值為0.1,可進(jìn)一步減小映射預(yù)測殘差δz(t)。
(2)
(4)RMPR算法流程。
綜上,RMPR算法的處理流程如下所示:
①輸入待壓縮圖像并初始化權(quán)重向量。



⑤e用式(2)計算映射預(yù)測殘差δz(t),輸入編碼器后進(jìn)行Golomb-Rice編碼。
⑥循環(huán)至下一像元繼續(xù)進(jìn)行②~⑤步,直至最后一個像元編碼完成,補0后輸出碼流。
(5)算法測試環(huán)境及統(tǒng)計檢驗。
本文用Java語言實現(xiàn)CCSDS 123.0-B-1、對CCSDS 123.0-B-1僅改進(jìn)預(yù)測點、對CCSDS 123.0-B-1僅改進(jìn)預(yù)測方向、對CCSDS 123.0-B-1僅改進(jìn)殘差映射器及RMPR算法,在Eclipse平臺上對高光譜圖像進(jìn)行測試。測試版本為Oxygen.2 Release (4.7.2),設(shè)置虛擬機參數(shù)為-Xms2048m-Xmx16384m,測試環(huán)境為Windows 8.1 64位操作系統(tǒng)、4 GB內(nèi)存、Intel Core i5-4210M CPU。壓縮性能用比特每像素BPP(Bits Per Pixel)統(tǒng)計,壓縮時間單位為毫秒,各算法之間差異的顯著性用配對樣本T檢驗進(jìn)行比較,P值小于0.05表示差異顯著。
2.2.3 其它用于比較的經(jīng)典壓縮算法
為了將本文RMPR算法與經(jīng)典的高光譜圖像無損壓縮算法進(jìn)行壓縮性能方面的比較,本文還參考并比較了以下經(jīng)典和新型的壓縮算法。其中,RMPR、CCSDS 123.0-B-1、基于查找表的LUT(Look-Up Tables)算法[22]、聯(lián)合圖像專家小組發(fā)布的JPEG-LS(Joint Photographic Experts Group-Lossless or near Lossless)標(biāo)準(zhǔn)[23]和基于上下文的自適應(yīng)無損壓縮M-CALIC(Context-based Adaptive Lossless Image Coding)[24]均為基于預(yù)測的壓縮算法;可逆的卡胡南-洛維變換RKLT(Reversible Karhunen-Loève Transform)[25]、主成分分析PCA(Principal Component Analysis)[26]、5/3離散小波變換DWT(Discrete Wavelet Transform)[27]為基于變換的壓縮算法。本文采用Spectral Transform軟件[28]實現(xiàn)RKLT,去除測試圖像譜間冗余,再用Kakadu軟件[29]實現(xiàn)JPEG2000圖像壓縮,得到RKLT+JPEG2000算法的壓縮結(jié)果,其余算法結(jié)果來源于文獻(xiàn)[8,30,31]。

Figure 6 Partial test images before and after compression圖6 壓縮前后的部分測試圖像
在壓縮時間均無顯著差異的情況下,改進(jìn)預(yù)測點算法的壓縮性能顯著優(yōu)于CCSDS 123.0-B-1算法的(如表2所示),BPP降低了0.007 0(如表3所示,其中*表示各改進(jìn)算法相較于CCSDS 123.0-B-1算法在壓縮性能或壓縮時間上有顯著差異),這是因為圖像邊緣映射預(yù)測殘差降低明顯;改進(jìn)預(yù)測方向的壓縮算法的性能也顯著優(yōu)于CCSDS 123.0-B-1算法的(如表2所示),BPP降低0.044 0(如表3所示),因為改進(jìn)預(yù)測方向后大部分像素映射預(yù)測殘差都有所下降;改進(jìn)殘差映射器的算法的壓縮性能無顯著提高(如表2所示),Yellowstone Calibrated Sc00和Mt.St.Helens Uncalibrated 2幅測試圖像壓縮效果甚至無變化(如表3所示),原因是預(yù)測器帶來了較好的預(yù)測效果,預(yù)測差值絕對值較小,無法落入|Δz(t)|>θz(t)的區(qū)間;RMPR算法顯著優(yōu)于原始算法(如表2所示),BPP降低0.065 3(如表3所示),主要是預(yù)測精度有所提高、像素映射預(yù)測殘差降低、壓縮碼長縮短。

Table 2 P values of paired-samples T test
為進(jìn)一步驗證RMPR算法的壓縮性能,對RMPR算法壓縮后的圖像進(jìn)行解壓縮。壓縮前后的圖像在視覺效果上沒有差別(如圖6所示),進(jìn)一步在Matlab軟件中對比原圖像及解壓縮后圖像可知,兩者像素值完全一致,RMPR算法可實現(xiàn)高光譜圖像的無損壓縮。

Table 3 Compression test results for different algorithms
10幅測試圖像壓縮結(jié)果表明,優(yōu)化前CCSDS 123.0-B-1算法可實現(xiàn)4.449 5BPP的壓縮效果,RMPR算法可實現(xiàn)4.3842BPP的壓縮效果,壓縮比提升幅度為0.5%~3.8%,壓縮性能顯著優(yōu)于 CCSDS 123.0-B-1算法的,且算法的改進(jìn)并未顯著降低壓縮效率。當(dāng)前針對CCSDS 123.0-B-1的改進(jìn)算法有優(yōu)化參數(shù)的MHDC(the Multispectral & Typerspectral Data Compression)[12]、OCPC[13]、基于V型掃描的CCSDS[32]和基于邊緣檢測的預(yù)測算法[11]等。優(yōu)化參數(shù)下的MHDC算法在壓縮效率不變的情況下,壓縮比提高了0.7%~3.6%[12];OCPC算法壓縮比提升幅度為2.4%~5.2%,壓縮效率未討論[13];基于V型掃描的CCSDS算法在壓縮復(fù)雜度下降的基礎(chǔ)上,壓縮比提升了1.1%~4.2%[32];基于邊緣檢測的預(yù)測算法壓縮比提高了1.5%~11.2%,壓縮時間無顯著變化[11]。
將本文算法與經(jīng)典的高光譜圖像無損壓縮算法進(jìn)行壓縮性能方面的比較,結(jié)果如表4所示,其中,“—”表示相關(guān)文獻(xiàn)未針對該數(shù)據(jù)進(jìn)行實驗。對于AVIRIS高光譜數(shù)據(jù),RMPR算法、PCA算法能夠達(dá)到相對較優(yōu)的壓縮性能,兩者均具有良好的去相關(guān)性能;DWT 5/3算法針對HYPERION數(shù)據(jù)表現(xiàn)出較好的壓縮性能;從平均BPP來看,RKLT+JPEG2000算法的壓縮性能最優(yōu),其次是RMPR算法和PCA算法。RKLT+JPEG2000算法綜合表現(xiàn)良好,但并未針對單個圖像實現(xiàn)最優(yōu)壓縮;在基于變換的壓縮算法中,PCA算法能夠?qū)崿F(xiàn)良好的光譜去相關(guān),但是協(xié)方差矩陣的計算、特征向量的提取大大增加了運算復(fù)雜度。綜上,與經(jīng)典高光譜壓縮算法相比,RMPR算法并不遜色。
RMPR算法涉及2個參數(shù)的選取:預(yù)測波段數(shù)B和殘差映射器參數(shù)m。
預(yù)測波段數(shù)B決定了參與預(yù)測的波段信息,進(jìn)而影響壓縮性能。將B數(shù)值分別定為1,3,5,…,13,15對10幅測試圖像進(jìn)行壓縮。隨著預(yù)測波段數(shù)B的不斷增加,Cuprite Uncalibrated、Lake Monona Uncalibrated、Mt.St.Helens Uncalibrated 3幅圖像的壓縮性能越來越好,BPP減小,且B取值為1~9時,BPP下降速率較大(如圖7所示);Hawaii Uncalibrated Sc01、Yellowstone Uncalibrated Sc00、Yellowstone Calibrated Sc03、Yellowstone Uncalibrated Sc03 5幅圖像壓縮后BPP呈現(xiàn)先下降再上升的趨勢,壓縮性能由高到低,由于圖像復(fù)雜度不同,BPP上升的臨界點不同,但B取值為1~5時BPP均呈現(xiàn)下降趨勢(如圖7所示);Maine Uncalibrated Sc10、Yellowstone Calibrated Sc00 2幅圖像的壓縮性能越來越差,BPP不斷增加(如圖7所示)。從實驗結(jié)果來看,B越大,能利用的譜間相關(guān)信息越多,越利于壓縮性能的提高,但是B的數(shù)值過大會導(dǎo)致待預(yù)測波段與參考波段相隔較遠(yuǎn),兩者相關(guān)性下降,壓縮性能降低,且算法復(fù)雜度增加(如圖8所示)。綜合考慮壓縮性能和壓縮時間,預(yù)測波段數(shù)B取1~5為宜。

Table 4 Comparison of compression performance between RMPR algorithm and classical algorithms

Figure 7 Compression performance vs. the number of bands for prediction B圖7 壓縮性能隨預(yù)測波段數(shù)B的變化圖
在|Δz(t)|>θz(t)的情況下,殘差映射器參數(shù)m決定了映射預(yù)測殘差的數(shù)值,進(jìn)而影響壓縮性能。將m數(shù)值分別定為0.1,0.2,…,0.9,1對10幅測試圖像進(jìn)行壓縮。隨著殘差映射參數(shù)m的不斷減小,大部分測試圖像的BPP呈下降趨勢,且在m為0.1時下降速率達(dá)到最大,此時壓縮性能最優(yōu)(如圖9所示)。因此,本文將殘差映射器參數(shù)m取值為0.1。

Figure 8 Compression time vs. the number of bands for prediction B圖8 壓縮時間隨預(yù)測波段數(shù)B的變化圖

Figure 9 Image of compression performance with residual mapper parameter m圖9 壓縮性能隨殘差映射器參數(shù)m的變化圖
RMPR算法在不影響圖像解壓縮且不影響壓縮效率的前提下,達(dá)到了較好的預(yù)測效果,壓縮性能顯著優(yōu)于原算法,且算法簡單,易于硬件實現(xiàn),適用于星載多/高光譜的數(shù)據(jù)壓縮應(yīng)用。
但是本算法仍有需要進(jìn)一步完善的地方:一是未對地物進(jìn)行分類,僅利用當(dāng)前像元鄰近像元作為預(yù)測點,改進(jìn)方法是對圖像進(jìn)行預(yù)處理,用同類像元進(jìn)行預(yù)測,以提高預(yù)測精度;二是無論雙向線性預(yù)測還是單向預(yù)測,都是用相鄰波譜段作為參考波段,但是有些待預(yù)測波段的最佳參考波段可能不與之相鄰或相隔較遠(yuǎn)[33],會使預(yù)測產(chǎn)生偏差,解決方法是為每個波段尋找最佳參考波段[34]。
本文對CCSDS 123.0-B-1算法的預(yù)測器進(jìn)行了優(yōu)化,提出了RMPR算法。RMPR算法從預(yù)測點、預(yù)測方向、殘差映射器3個方面進(jìn)行了優(yōu)化,通過減小映射預(yù)測殘差來縮短壓縮碼長,提高壓縮性能。實驗結(jié)果表明,在壓縮時間無顯著差異的情況下,RMPR算法壓縮性能顯著優(yōu)于CCSDS 123.0-B-1算法的,可應(yīng)用于資源有限的星上無損壓縮,下一步可從地物分類和尋找最佳參考波段兩方面進(jìn)一步完善該算法。