舒 銳,武少林,龔 偉,陳 陽(yáng),張?zhí)煨?/p>
(1.上海衛(wèi)星工程研究所,上海 200240;2.華中科技大學(xué) 人工智能與自動(dòng)化學(xué)院,湖北 武漢 430074;3.武漢工程大學(xué) 電氣信息學(xué)院,湖北 武漢 430062)
JPEG-LS(Joint Photographic Experts Group-Lossless)是圖像無(wú)損壓縮領(lǐng)域中最經(jīng)典的、基于預(yù)測(cè)的算法,于2000 年由聯(lián)合圖像專家小組JPEG 所提出,其核心是LOCO-I(Low Complexity Lossless Compression,LOCO-I)算 法。JPEG-LS 算法先利用周圍左邊、左上邊及上邊的3 個(gè)像素值做一個(gè)簡(jiǎn)單的中值邊界檢測(cè)預(yù)測(cè),然后通過(guò)上下文模型修正預(yù)測(cè)值,最后轉(zhuǎn)化為Golomb-rice 編碼輸出。JPEGLS 算法以較低的復(fù)雜度達(dá)到了當(dāng)年(2000 年)的最高壓縮比。LOCO-I 算法僅為單通道的灰度圖像設(shè)計(jì),SHAWN 等[1]于2004年將LOCO-I 推廣到了 高光譜圖像壓縮,提出了LOCO-3D 算法,壓縮比提高了約0.2。2015 年,在C-DPCM 算法的基礎(chǔ)上,WU等[2]發(fā)現(xiàn)剔除原始高光譜圖像數(shù)據(jù)中的異常像素值后,預(yù)測(cè)的準(zhǔn)確率提升了,此附帶局部光譜異常數(shù)據(jù)剔除的算法被稱為C-DPCM-RLSO(C-DPCMRemoval of Local Spectral Outliers)。人工智能的研究熱潮將神經(jīng)網(wǎng)絡(luò)技術(shù)帶到了各行各業(yè)中,LUO等[3]于2019 年提出了C-DPCM-RNN(C-DPCMRecurrent Neural Networks)方法,將C-DPCM 中的線性預(yù)測(cè)器替換為循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN),該方法在矯正的機(jī)載可見(jiàn)光/紅外成像光譜儀(Airborne Visible Infrared Imaging Spectrometer,AVIRIS)公開(kāi)高光譜測(cè)試集上取得目前本領(lǐng)域內(nèi)最高的壓縮比。目前,現(xiàn)存的很多高光譜圖像壓縮算法的通用性不強(qiáng),很多算法采取單一的上下文模型,這類固定的上下文建模算法存在明顯的弊端,容易產(chǎn)生偏好現(xiàn)象。例如,JPEG 算法在醫(yī)學(xué)圖像上的壓縮性能表現(xiàn)明顯優(yōu)于其他類型圖像,JPEG 2000 算法偏向于場(chǎng)景過(guò)度平滑的自然照片[4]。此外,有些算法需要調(diào)優(yōu)參數(shù)才能達(dá)到較好的壓縮性能。例如,C-DPCM 類算法雖然取得目前本領(lǐng)域內(nèi)最好的壓縮效果,但是算法需要提前給定圖像聚類數(shù)目[5],顯然,不同類型的圖像的最優(yōu)聚類數(shù)目是不同的,不恰當(dāng)?shù)膱D像聚類數(shù)目會(huì)降低算法的壓縮性能。
針對(duì)上述目前很多算法存在的通用性與實(shí)用性方面不足的問(wèn)題,本文從消除譜間信息冗余、譜內(nèi)空間信息冗余這兩個(gè)角度展開(kāi)研究,綜合了基于變換和基于預(yù)測(cè)的壓縮技術(shù),提出了一種基于KLT(Karhunen-Loève Transform)和自由無(wú)損圖像格式(Free Lossless Image Format,F(xiàn)LIF)算法的通用型高光譜圖像無(wú)損壓縮算法。
KLT,也稱為主成分分析(Principal Components Analysis,PCA)變換,是一種能有效提取關(guān)鍵圖像信息以及消除冗余的工具[6]。KLT 是一種線性變換,通過(guò)旋轉(zhuǎn)坐標(biāo)系讓原始圖像數(shù)據(jù)盡可能地落在新的坐標(biāo)軸上,算法原理是通過(guò)旋轉(zhuǎn)坐標(biāo)系使得原始數(shù)據(jù)的協(xié)方差矩陣對(duì)角化。KLT 后的圖像數(shù)據(jù)譜間將會(huì)不具備相關(guān)性。
本方案首先對(duì)高光譜圖像進(jìn)行可逆整數(shù)KLT,去除譜間相關(guān)性;再對(duì)可逆整數(shù)KLT 后的高光譜圖像逐通道計(jì)算圖像均勻性指標(biāo)SR;對(duì)較均勻的圖像通道采用FLIF 壓縮器編碼,對(duì)均勻性差的圖像通道切換到哈夫曼編碼器。通過(guò)對(duì)高光譜圖像做一個(gè)可逆的整數(shù)KLT 變換來(lái)去除其譜間相關(guān)性,降低了原始數(shù)據(jù)的信息熵,去除了譜間的冗余信息,然后采取FLIF 壓縮編碼來(lái)消除譜內(nèi)空間信息冗余,從而取得高壓縮比。為了優(yōu)化方案算法的壓縮速度,本方案還提出了根據(jù)圖像特點(diǎn)靈活切換壓縮系統(tǒng)的策略,針對(duì)均勻圖像(高SR 值)使用FLIF 算法壓縮編碼,針對(duì)非均勻圖像(低SR 值)切換到簡(jiǎn)單的哈夫曼編碼以加快壓縮速度。本方法的算法流程如圖1 所示。
圖1 高光譜圖像無(wú)損壓縮總體方案流程圖Fig.1 Flow chart of the overall scheme for lossless compression of hyperspectral images
FLIF 壓縮算法的工作流程圖如圖2 所示。FLIF 算法采取逐行逐個(gè)像素掃描的工作方式,像素首先經(jīng)過(guò)1 個(gè)固定的預(yù)測(cè)模板得到殘差值,殘差進(jìn)一步分解為近零符號(hào)編碼表示。后續(xù)MANIAC 決策樹(shù)將計(jì)算出上下文環(huán)境屬性值,決策樹(shù)根據(jù)屬性標(biāo)簽值自頂向下遍歷為該像素值選出最優(yōu)的上下文環(huán)境,隨后更新所有相關(guān)上下文環(huán)境,并對(duì)決策節(jié)點(diǎn)進(jìn)行調(diào)整,調(diào)整決策樹(shù)有助于提高下個(gè)輸入像素的預(yù)測(cè)準(zhǔn)確度。最后,算術(shù)編碼器根據(jù)上下文環(huán)境提供的概率分布信息完成編碼,并輸出壓縮碼流。
圖2 FLIF 算法的工作流程Fig.2 Flow chart of the FLIF algorithm
圖中,X表示待預(yù)測(cè)位置的像素,T表示X的上方像素,L表示X左邊的像素,TL表示左上角的像素,可以根據(jù)T、L、TL像素值來(lái)預(yù)測(cè)X的值。
近零符號(hào)編碼由零位(ZERO)、符號(hào)位(SIGN)、指數(shù)位(EXP(k,sign))和尾數(shù)位MANT(k)這幾個(gè)部分組成。
MANIAC(Meta-Adaptive Near-zero Integer Arithmetic Coding)即元自適應(yīng)近零整數(shù)算術(shù)編碼。
KLT 的第1 步是計(jì)算原始高光譜圖像數(shù)據(jù)的協(xié)方差矩陣COV:
式 中:cov(pi,pj)為 第i個(gè)譜段和 第j個(gè)譜段的 協(xié)方差。
KLT 的目的是去除譜間圖像的相關(guān)性,可以將去除譜間數(shù)據(jù)相關(guān)性的問(wèn)題轉(zhuǎn)化為將協(xié)方差矩陣COV中的元素cov(pi,pj)置 為0(i≠j),即為任意兩個(gè)譜段數(shù)據(jù)的協(xié)方差為0。KLT 變換的原理是把協(xié)方差矩陣COV對(duì)角化。假設(shè)存在矩陣P,使得滿足
式中:Λ為對(duì)角矩陣。
KLT 是一種線性變換,為了使變換后的新坐標(biāo)系相互垂直,必須對(duì)上面的變換矩陣P進(jìn)行正交化,正交化后的矩陣P即為KLT 矩陣。
求解正交變換矩陣P的方法分為兩步:首先將協(xié)方差矩陣COV對(duì)角化得到變換矩陣P;然后再對(duì)矩陣P正交化。矩陣對(duì)角化的詳細(xì)步驟如下所述。
通過(guò)求解下面的線性方程組
式中:λ為特征值;E為單位向量
對(duì)式(1)運(yùn)用線性代數(shù)的方法,能解出p個(gè)特征值與p個(gè)相應(yīng)的特征向量。再把特征向量按照特征值從大到小的順序重新排列,得到變換矩陣為
式中:p1為最大的特征值λ1所對(duì)應(yīng)的特征向量;以此類推,pn為最大的特征值λn所對(duì)應(yīng)的特征向量。
對(duì)式(4)得到矩陣P依次進(jìn)行正交化與單位化,使得矩陣P滿足
采用施密特正交化方法規(guī)范化向量p1,p2,…,pr。正交化的過(guò)程如下:
最后,將向量組β1β2…βr單位化,具 體方法如下:
式中:|β1|為向量β1的模。
聯(lián)立式(10)求得單位化后的向量,KLT 矩陣即為所求,記 做AT=[ε1ε2…εn],(n=1,2,…,P),那么A為
上面就是KLT 的全部步驟,使用變換矩陣A去譜間相關(guān)性的公式如下,假設(shè)輸入的高光譜圖像數(shù)據(jù)如下公式的形式,依舊記為X,記去譜間相關(guān)性后的數(shù)據(jù)記為Y,變換公式為
近零符號(hào)編碼是FLIF 算法數(shù)據(jù)存儲(chǔ)塊(包含像素值數(shù)據(jù))的一種數(shù)據(jù)表示形式[7]。任意整型數(shù)據(jù)都能用近零符號(hào)編碼表示,近零符號(hào)編碼由零位、符號(hào)位、指數(shù)位和尾數(shù)位這幾個(gè)部分組成,其中,指數(shù)位部分采取簡(jiǎn)單的一元編碼(Unary Code)。所謂一元編碼,即使用n-1 個(gè)二進(jìn)制數(shù)據(jù)1 與末位尾數(shù)0(或者使用n-1 個(gè)二進(jìn)制數(shù)據(jù)0 與末位尾數(shù)1)來(lái)表示存儲(chǔ)正整數(shù)n。在FLIF 里的近零符號(hào)編碼中,一元編碼只用于表示指數(shù)位數(shù)據(jù)部分[8]。對(duì)于任意整數(shù)數(shù)據(jù)x,所需的指數(shù)位二進(jìn)制比特?cái)?shù)目為:e=(結(jié)果如果有小數(shù),往上取整)。因此,假設(shè)采取一元編碼表示16 位的圖像數(shù)據(jù),近零符號(hào)編碼的指數(shù)位部分二進(jìn)制長(zhǎng)度有上限,即最多需要16 個(gè)bpp(bit per pixel)。
近零符號(hào)編碼表示的每個(gè)bpp 都有它自己的上下文環(huán)境,所以每個(gè)bpp 的概率相互隔離,能夠自動(dòng)適應(yīng)數(shù)據(jù)。在FLIF 里的近零符號(hào)編碼中,指數(shù)位數(shù)據(jù)部分bpp 的概率不僅取決于它們所在的位置,還取決于它們的符號(hào)。
近零符號(hào)編碼針對(duì)每個(gè)bpp 都建立獨(dú)立的上下文環(huán)境,每個(gè)bpp 的可能值只能是要么為0,要么為1。由于FLIF 的核心是算術(shù)編碼,近零符號(hào)編碼使用一個(gè)12 位的整型數(shù)據(jù)存儲(chǔ)每個(gè)bpp 的概率。12位的無(wú)符號(hào)(概率不可能為負(fù)數(shù))整型數(shù)據(jù)能表示的整數(shù)范圍是0~4 095,所以概率值為1 時(shí)表示該bpp 為1 的概率接近于零(該bpp 為1 幾乎是不可能事件),當(dāng)概率值為4 095 時(shí)表示該bpp 為1 的概率接近于1(該bpp 為1 是必然事件)。
FLIF 首先對(duì)該通道的圖像數(shù)據(jù)逐行從左向右掃描得到預(yù)測(cè)誤差值,掃描時(shí)比較存儲(chǔ)當(dāng)前通道圖像預(yù)測(cè)誤差值的最大值與最小值。在獲得該通道圖像預(yù)測(cè)誤差值的最大值與最小值之后,這時(shí)我們就能確定k的上限值為
式中:[x]為向下取整,注意這里x一定取的是絕對(duì)值最大的值。
為了說(shuō)明近零符號(hào)編碼表示指數(shù)位的方法,下面以正整數(shù)1 000 為例說(shuō)明,假設(shè)kmax=12,先計(jì)算k=[log21 000]=10,因 此 exp(k,sign)(k=0,1,…,9) 這 10 個(gè) bbp 都置為 1,同 時(shí)exp(k,sign)(k>9)也就是剩下的bpp 都置為0。其實(shí)近零符號(hào)編碼表示指數(shù)位exp(k,sign)的本質(zhì)是記錄數(shù)據(jù)有二進(jìn)制位的長(zhǎng)度,假如kmax=12,說(shuō)明該通道圖像的預(yù)測(cè)誤差值最多有12 位。根據(jù)實(shí)際的像素預(yù)測(cè)經(jīng)驗(yàn)情況,預(yù)測(cè)誤差值范圍通常為正太分布,預(yù)測(cè)誤差值的典型值一般為幾百左右,到exp(6,sign)即誤差值為128,此時(shí)概率值達(dá)到最大值2 800。相反exp(k,sign)高位的概率值一般給較小的值(認(rèn)為預(yù)測(cè)誤差特別小的發(fā)生概率?。?,到從表3 的初始概率值可以看出,exp(k,sign)從高位(k=0)到低位(k=kmax)的初始概率值基本上是先逐漸增加然后減小的趨勢(shì)。
近零符號(hào)編碼的尾數(shù)部分用MANT(k),k=1,2,3,…表示,正如上所述近零符號(hào)編碼表示的指數(shù)部分記錄數(shù)據(jù)的二進(jìn)制長(zhǎng)度,所以數(shù)據(jù)的最高位必為1,數(shù)據(jù)尾數(shù)用MANT(k) 表示,尾數(shù)MANT(k)中的k值一定比數(shù)據(jù)的二進(jìn)制長(zhǎng)度少一位,故近零符號(hào)編碼的尾數(shù)部分MANT(k)中的k值等于指數(shù)部分exp(k,sign)中的k減1 位。即:kmant=kexp-1。
MANIAC(Meta-Adaptive Near-zero Integer Arithmetic Coding)即元自適應(yīng)近零整數(shù)算術(shù)編碼[9]。所謂元自適應(yīng),是指FLIF 編碼器的上下文模型能夠自動(dòng)適應(yīng)數(shù)據(jù)的特點(diǎn)。
FLIF 算法使用CABAC(Context-Adaptive Binary Arithmetic Coding)的一種變種方法作為其核心編碼器[10]。因此,本文先簡(jiǎn)要地介紹CABAC 方法的核心原理。CABAC 算法的基礎(chǔ)也是算術(shù)編碼器,其中的概率模型是自適應(yīng)的。CABAC 算法逐bpp 壓縮圖像數(shù)據(jù),所以其中的算術(shù)編碼器針對(duì)bbp進(jìn)行建立概率模型,bpp 只有兩種可能值1 或0,CABAC 算法對(duì)bpp 的初始概率各賦值為50%,即認(rèn)為bpp1 或0 位出現(xiàn)的概率相等。CABAC 每壓縮一個(gè)bpp,其概率模型就會(huì)相應(yīng)地更新。這種概率隨著壓縮進(jìn)程動(dòng)態(tài)調(diào)整的策略有利于模型學(xué)習(xí)到數(shù)據(jù)的真實(shí)概率分布情況,從而提升算法的壓縮性能。
CABAC 算法本質(zhì)上還是只有一個(gè)上下文環(huán)境模型,如果有多個(gè)上下文環(huán)境模型信息,那么就能給每個(gè)上下文環(huán)境分配一個(gè)獨(dú)立的概率模型[11]。參考FFV1 中的靜態(tài)上下文環(huán)境設(shè)計(jì),其上下文環(huán)境的數(shù)量為屬性域的乘積,所以很難得到一個(gè)合適的上下文環(huán)境數(shù)量值。過(guò)多的上下文環(huán)境不利于壓縮,因?yàn)槟P偷淖赃m應(yīng)能力是有限的(假設(shè)極限情況,一個(gè)或幾個(gè)像素共用一個(gè)上下文環(huán)境)。同理,過(guò)少的上下文也不利于壓縮,因?yàn)樘幱诓煌h(huán)境條件下的像素,其像素值的分布規(guī)律不同卻共用同一個(gè)上下文環(huán)境也是不科學(xué)的。此外,固定數(shù)量的上下文環(huán)境數(shù)量會(huì)導(dǎo)致很多上下文環(huán)境被閑置,完全沒(méi)被利用上。
與CABAC 算法相比,F(xiàn)LIF 使用一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)作為其核心上下文環(huán)境模型。這種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)的本質(zhì)是一顆決策樹(shù),決策樹(shù)會(huì)隨著壓縮過(guò)程不斷地生長(zhǎng)。典型的MANIAC 樹(shù)示意圖如圖3 所示,MANIAC 樹(shù)內(nèi)部節(jié)點(diǎn)與葉子節(jié)點(diǎn)的放大圖如圖4 所示。MANIAC 樹(shù)的每個(gè)內(nèi)部節(jié)點(diǎn)(非葉子節(jié)點(diǎn))都有一個(gè)測(cè)試條件:判斷一個(gè)上下文屬性值(FLIF 含有多個(gè))是否大于(或小于等于)閾值。類似二叉樹(shù)的數(shù)據(jù)結(jié)構(gòu),MANIAC 樹(shù)的內(nèi)部節(jié)點(diǎn)也有左右兩個(gè)分支。在壓縮圖像數(shù)據(jù)過(guò)程中,每個(gè)葉子節(jié)點(diǎn)包含一個(gè)實(shí)際的上下文環(huán)境,同時(shí)葉子節(jié)點(diǎn)還包括很多屬性條件,每條屬性擁有兩個(gè)虛擬的上下文環(huán)境。而在解壓圖像數(shù)據(jù)的過(guò)程中,F(xiàn)LIF 只會(huì)用到實(shí)際的上下文環(huán)境。
圖3 典型的MANIAC 樹(shù)示意圖Fig.3 Schematic diagram of a typical MANIAC tree
圖4 MANIAC 樹(shù)內(nèi)部節(jié)點(diǎn)與葉子節(jié)點(diǎn)的放大圖Fig.4 Enlarged view of the internal nodes and leaf nodes of the MANIAC tree
所謂自適應(yīng)MANIAC 樹(shù),下面詳細(xì)說(shuō)明MANIAC 樹(shù)的動(dòng)態(tài)調(diào)整生長(zhǎng)過(guò)程,也即自適應(yīng)過(guò)程[12]。對(duì)于每個(gè)輸入的待壓縮像素?cái)?shù)據(jù),F(xiàn)LIF 首先計(jì)算每條屬性條件值,結(jié)合計(jì)算好的每條屬性值開(kāi)始遍歷MANIAC 樹(shù)直到抵達(dá)葉子節(jié)點(diǎn)。葉子節(jié)點(diǎn)包含一個(gè)實(shí)際的上下文環(huán)境,利用其輸出壓縮比特流,以及一個(gè)損失值(輸出bbp 的個(gè)數(shù))。FLIF 取每條屬性值的平均值作為其比較閾值,該條屬性下小于閾值的有一個(gè)虛擬的上下文環(huán)境,而大于等于閾值的也有一個(gè)虛擬的上下文環(huán)境。壓縮完一個(gè)像素值后,每條屬性下的兩個(gè)虛擬的上下文環(huán)境會(huì)分別更新各自的概率表與損失值。損失值也含義是該上下文環(huán)境壓縮了多少個(gè)像素值。
MANIAC 屬性向量組成了FLIF 算法的上下文環(huán)境,MANIAC 樹(shù)里葉子節(jié)點(diǎn)所包含的上下文環(huán)境的主要成分也是這些MANIAC 屬性組。假設(shè)當(dāng)前待壓縮的像素為X,X周圍像素值的位置關(guān)系如圖5所示。
圖5 像素X 周圍像素的位置關(guān)系Fig.5 Positional relationship of pixels around pixel X
FLIF 定義了一些屬性條件,見(jiàn)表1,這些屬性條件構(gòu)成了FLIF 算法至關(guān)重要的上下文環(huán)境。
表1 MANIAC 屬性表Tab.1 Attribute table of MANIAC
上表中Mni為像素預(yù)測(cè)使用哪個(gè)預(yù)測(cè)器,因?yàn)橄袼仡A(yù)測(cè)最終取的是(L+T-T,L,T)3 個(gè)值的中值,故Mni定義為
計(jì)算上下文環(huán)境里的損失值其實(shí)是在評(píng)估哪條屬性對(duì)壓縮任務(wù)幫助最大。如果該條屬性是無(wú)關(guān)緊要的,那么該屬性下的兩個(gè)虛擬上下文環(huán)境的損失值之和就會(huì)大于等于實(shí)際上下文環(huán)境的損失值。相反,如果該條屬性十分關(guān)鍵,那么使用兩個(gè)不同上下文環(huán)境來(lái)編碼數(shù)據(jù)將會(huì)更有利于壓縮。通過(guò)比較葉子節(jié)點(diǎn)中實(shí)際上下文環(huán)境的損失值與屬性下兩個(gè)虛擬上下文環(huán)境的損失值,當(dāng)某個(gè)屬性下兩個(gè)損失值的差值大于某個(gè)閾值的時(shí)候,此葉子節(jié)點(diǎn)就變成為一個(gè)決策節(jié)點(diǎn),此決策節(jié)點(diǎn)的測(cè)試條件就是本屬性。上述的葉子節(jié)點(diǎn)轉(zhuǎn)變決策節(jié)點(diǎn)的過(guò)程,其實(shí)也是MANIAC 樹(shù)生長(zhǎng)的過(guò)程,如圖6 所示,葉子節(jié)點(diǎn)一分為二,裂變?yōu)閮蓚€(gè)新的葉子節(jié)點(diǎn)。
圖6 MANIAC 樹(shù)生長(zhǎng)過(guò)程示意圖Fig.6 Schematic diagram of the growth process of the MANIAC tree
考慮到KLT 能分離出大部分噪聲數(shù)據(jù)的特點(diǎn),這里提出了針對(duì)FLIF 壓縮器的優(yōu)化加速方法。FILF 壓縮器屬于復(fù)雜壓縮系統(tǒng),壓縮性能強(qiáng),但是內(nèi)部算法復(fù)雜度高,耗時(shí)長(zhǎng);而哈夫曼編碼器屬于簡(jiǎn)單壓縮系統(tǒng),速度快,但是壓縮能力弱。本文提出了根據(jù)圖像均勻程度靈活地在FILF 壓縮器與哈夫曼編碼器之間切換的策略,對(duì)均勻圖像應(yīng)該選擇FILF 壓縮器以提升壓縮能力;但是對(duì)于噪聲大的非均勻圖像FILF 壓縮器與哈夫曼編碼器性能相當(dāng),此時(shí)選擇更快的哈夫曼編碼器以縮短壓縮時(shí)間。本文綜合圖像行間相關(guān)性與列間相關(guān)性作為圖像均勻性指標(biāo),圖像行間相關(guān)性與列間相關(guān)性的權(quán)重各取一半(即50%)。計(jì)算出圖像所有相鄰行之間的相關(guān)系數(shù)并取均值作為全圖的行間相關(guān)性,運(yùn)用相同的方法計(jì)算出全圖的列相關(guān)系數(shù)。定義圖像均勻度指標(biāo)SR 為(+)/2,其最小值 為0,最大值為1,根據(jù)統(tǒng)計(jì)學(xué)知識(shí),一般認(rèn)為相關(guān)系數(shù)0.8 以上表明具有強(qiáng)的相關(guān)性;相關(guān)系數(shù)0.3~0.8 之間認(rèn)為數(shù)據(jù)間具有一定的相關(guān)性;而相關(guān)系數(shù)0.3以下則認(rèn)為數(shù)據(jù)間沒(méi)有相關(guān)性。相關(guān)系數(shù)區(qū)間含義如下:
本文通過(guò)靈活地切換復(fù)雜壓縮器(FLIF)與簡(jiǎn)單壓縮器(哈夫曼編碼器)來(lái)加速壓縮過(guò)程,關(guān)于切換壓縮器的時(shí)機(jī)如何選擇的問(wèn)題,結(jié)合上述的相關(guān)系數(shù)區(qū)間含義,本文設(shè)置圖像均勻度指標(biāo)SR 的閾值為0.3。當(dāng)圖像均勻度指標(biāo)SR 大于0.3 時(shí),說(shuō)明圖像具備較強(qiáng)的空間相關(guān)性的特點(diǎn),故采取FLIF 壓縮這類圖像;當(dāng)圖像均勻度指標(biāo)SR 小于0.3 時(shí),說(shuō)明圖像受噪聲污染嚴(yán)重,故切換到哈夫曼編碼器來(lái)壓縮這類圖像以縮短壓縮時(shí)間。
哈夫曼編碼屬于變長(zhǎng)編碼技術(shù),能夠有效地消除數(shù)據(jù)的編碼冗余,是一種基于二叉樹(shù)的實(shí)現(xiàn)輸出最短二進(jìn)制碼長(zhǎng)度的方法。哈夫曼編碼需要數(shù)據(jù)分概率的先驗(yàn)信息,故要先統(tǒng)計(jì)圖像所有像素值的頻率,為了節(jié)省存儲(chǔ)空間,頻率信息使用一個(gè)無(wú)符號(hào)的16 位整型數(shù)據(jù)存儲(chǔ),16 位無(wú)符號(hào)整型數(shù)據(jù)所能表示的范圍僅為0~65 535,因?yàn)榭赡艽嬖陬l率超過(guò)65 535 的情況,頻率表最后會(huì)統(tǒng)一歸一化到0~65 535 之間。為了減少先驗(yàn)頻率分布信息的體積,本文僅對(duì)該圖像存在的值存儲(chǔ)統(tǒng)計(jì)的頻率分布信息,即僅存儲(chǔ)像素值最小值到最大值之間的頻率分布信息。有了數(shù)據(jù)頻率分布之后,先建立哈夫曼編碼樹(shù)(數(shù)據(jù)結(jié)構(gòu)是一顆二叉樹(shù)),再遍歷哈夫曼樹(shù)得出每個(gè)數(shù)據(jù)的二進(jìn)制編碼,哈夫曼樹(shù)會(huì)為高頻率的數(shù)據(jù)分配較短的編碼,進(jìn)而實(shí)現(xiàn)最優(yōu)編碼過(guò)程,接下來(lái)根據(jù)編碼表對(duì)待壓縮像素重新生成二進(jìn)制碼,消除編碼冗余。解碼方法跟上述的壓縮過(guò)程基本相同,也是先建立哈夫曼樹(shù),然后根據(jù)壓縮碼流逐位讀取遍歷哈夫曼樹(shù)直到遍歷到葉子節(jié)點(diǎn)便恢復(fù)出一個(gè)像素?cái)?shù)據(jù),接著繼續(xù)取壓縮碼流重復(fù)遍歷過(guò)程直到讀盡壓縮碼流(或者恢復(fù)出最后一個(gè)像素)便停止。
本文的實(shí)驗(yàn)數(shù)據(jù)來(lái)自高分五號(hào)衛(wèi)星高光譜數(shù)據(jù),數(shù)據(jù)分兩部分:可見(jiàn)光近紅外(VN)和短波紅外(SW)。VN 有150 個(gè)波段,SW 有180 個(gè)波段,總共330 個(gè)波段。
VN 波段范圍0.39~1.03 μm 左右,5 nm 一個(gè)間隔。SW 波段范圍1.0~2.5 μm 左右,10 nm 一個(gè)間隔。空間分辨率30 m。試驗(yàn)數(shù)據(jù)選取北京某機(jī)場(chǎng),選取6 組數(shù)據(jù),分別為VN①~VN③,SW①~SW③,如圖7 所示。
圖7 VN①(第50、60、70 波段合成)高光譜實(shí)驗(yàn)測(cè)試圖像Fig.7 Hyperspectral experimental test image for VN ①(integrated 50th,60th,and 70th waveband)
壓縮結(jié)果指標(biāo)統(tǒng)一采取每個(gè)像素所占的bpp 指標(biāo),本文對(duì)多組高光譜圖像測(cè)試用例進(jìn)行壓縮實(shí)驗(yàn),見(jiàn)表2。
表2 高光譜測(cè)試圖像的無(wú)損壓縮實(shí)驗(yàn)的bpp 結(jié)果Tab.2 The bpp results of the lossless compression experiment of hyperspectral test images
本文提出的RKLT-FLIF 方案的另一個(gè)優(yōu)點(diǎn)是能夠根據(jù)圖像的均勻程度(噪聲情況)在復(fù)雜FLIF與簡(jiǎn)單哈夫曼編碼器之間切換,從而加快壓縮速度,縮短壓縮時(shí)間。本文增加了一個(gè)對(duì)照實(shí)驗(yàn)組來(lái)分析自適應(yīng)切換壓縮器策略的效果,對(duì)照實(shí)驗(yàn)組禁用了哈夫曼編碼器。針對(duì)上述的高光譜圖像測(cè)試樣本,在相同的測(cè)試實(shí)驗(yàn)平臺(tái)上,本文做了相關(guān)實(shí)驗(yàn)統(tǒng)計(jì)出了RKLT-FLIF 方案與RKLT-FLIF(無(wú)哈夫曼編碼)方案完成壓縮所耗費(fèi)的時(shí)間,見(jiàn)表3。
表3 高光譜測(cè)試圖像的壓縮實(shí)驗(yàn)耗時(shí)結(jié)果Tab.3 Time-consuming results of the compression experiment for hyperspectral test images
通過(guò)表2 中的bpp 結(jié)果,實(shí)驗(yàn)結(jié)果表明,針對(duì)可見(jiàn)光bpp 達(dá)到4.16,短波紅外bpp 達(dá)到4.15。據(jù)文獻(xiàn)[13]顯示,本文算法相比于C-DPCM 更具通用性。C-DPCM 算法的原理是先對(duì)高光譜bpp 圖像進(jìn)行聚類,聚類算法通常是k-Means 或LBG 聚類算法,再針對(duì)不同的類別的圖像塊分別進(jìn)行預(yù)測(cè)壓縮[14]。然而,圖像聚類算法有個(gè)明顯的缺陷,難以確定合適的類別數(shù),過(guò)多或過(guò)少的類別都會(huì)降低壓縮性能,C-DPCM(order 20)括號(hào)里的order 20 表明算法的聚類數(shù)目為20[15],20 類的數(shù)量是經(jīng)過(guò)多次試參才確定的,這意味著若更換測(cè)試樣本,C-DPCM 類算法性能可能會(huì)出現(xiàn)下滑,與C-DPCM 類算法相比,本算法的優(yōu)點(diǎn)是無(wú)須根據(jù)輸入圖像特點(diǎn)手動(dòng)調(diào)整任何參數(shù),通用性更強(qiáng)。
本文提出的RKLT-FLIF 方案的另一個(gè)優(yōu)點(diǎn)是能夠根據(jù)圖像的均勻程度(噪聲情況),在復(fù)雜FLIF與簡(jiǎn)單哈夫曼編碼器之間切換,從而加快壓縮速度,縮短壓縮時(shí)間。本文增加了一個(gè)對(duì)照實(shí)驗(yàn)組來(lái)分析自適應(yīng)切換壓縮器策略的效果,對(duì)照實(shí)驗(yàn)組禁用了哈夫曼編碼器。針對(duì)上述的高光譜圖像測(cè)試樣本,在相同的測(cè)試實(shí)驗(yàn)平臺(tái)上,本文做了相關(guān)實(shí)驗(yàn)統(tǒng)計(jì)出了RKLT-FLIF 方案與RKLT-FLIF(無(wú)哈夫曼編碼)方案完成壓縮所耗費(fèi)的時(shí)間,見(jiàn)表3。從表3 可以看出:針對(duì)可見(jiàn)光波段圖像,RKLT-FLIF(無(wú)哈夫曼編碼)的耗時(shí)平均值接近于RKLT-FLIF的5 倍;針對(duì)短波紅外波段圖像,RKLT-FLIF(無(wú)哈夫曼編碼)的耗時(shí)平均值接近于RKLT-FLIF 的1.14 倍。因此,實(shí)驗(yàn)結(jié)果表明,自適應(yīng)切換壓縮器策略的加速效果可以,加快了壓縮速度,同時(shí)又沒(méi)有降低壓縮質(zhì)量。
本論文提出了基于KLT 和FLIF 算法的高光譜圖像無(wú)損壓縮方法,高光譜圖像先經(jīng)過(guò)可逆整數(shù)KLT 去除圖像的譜間冗余信息,再由譜內(nèi)壓縮器FLIF 去除圖像空間冗余信息得到壓縮碼流。FLIF算法中的MANIAC 決策樹(shù)能夠在壓縮過(guò)程中適應(yīng)輸入圖像的特征,MANIAC 決策樹(shù)的每個(gè)葉子節(jié)點(diǎn)都維護(hù)著一個(gè)實(shí)際上下文環(huán)境和兩個(gè)虛擬上下文環(huán)境,每編碼完一個(gè)像素便更新一次上下文環(huán)境,葉子節(jié)點(diǎn)隨著壓縮進(jìn)度逐漸分裂從而增加了上下文環(huán)境的數(shù)量,譜間去相關(guān)變換與多上下文環(huán)境的設(shè)計(jì)使得方案取得的實(shí)驗(yàn)結(jié)果還是不錯(cuò)的。C-DPCM 類算法需調(diào)參確定合適聚類數(shù)目,而多上下文環(huán)境設(shè)計(jì)的自適應(yīng)能力使得本算法更具通用性和實(shí)用性。本文還提出了多壓縮器靈活切換的策略,通過(guò)逐通道計(jì)算圖像均勻性指標(biāo)SR,針對(duì)高SR 圖像使用復(fù)雜的FLIF 壓縮器,對(duì)低SR 圖像切換到簡(jiǎn)單的哈夫曼編碼器,在可見(jiàn)光波段將壓縮時(shí)間平均縮短為原來(lái)的1/5。