宋蓓蓓,何帆,馬穗娜,孫文方
(1.長安大學(xué)信息工程學(xué)院,710064,西安;2.西安電子科技大學(xué)空間科學(xué)與技術(shù)學(xué)院,710126,西安)
通信帶寬是在多媒體信息傳輸中影響獲得高質(zhì)量數(shù)字圖像的重要因素。在傳輸帶寬受限的情況下,圖像的碼率控制壓縮可以實現(xiàn)最佳的帶寬利用[1]。因此,如何實現(xiàn)精確的碼率控制是圖像壓縮領(lǐng)域研究的熱點。
目前針對碼率控制圖像壓縮算法的研究主要分為3類。第一類是基于變換編碼壓縮的碼率控制圖像壓縮算法,其中最經(jīng)典的是JPEG2000標(biāo)準(zhǔn)采用的壓縮后率失真優(yōu)化(post compression rate-distortion optimization,PCRD-opt)算法[2]。PCRD-opt算法可實現(xiàn)在最小失真下的最優(yōu)碼率分配策略,但由于需要編碼所有編碼通道,因此該算法的復(fù)雜度較高且運行效率較低。為了解決這一問題,Yeugn等提出了基于預(yù)掃描的最優(yōu)截斷算法[3],雖然有效減少了編碼通道數(shù)量,但在高倍壓縮時仍然存在較大的編碼冗余。王超等提出了最小斜率截斷的壓縮后率控制算法[4],其利用率失真斜率的兩個特性來獲得最佳的截斷點,雖然減少了存儲空間,但圖像的峰值信噪比略有降低。Li等提出了根據(jù)各子帶對圖像重建的重要性原理和最優(yōu)率失真理論分配所有小波子帶碼率的算法[5],有效降低了編碼冗余。第二類是基于預(yù)測編碼壓縮的碼率控制圖像壓縮算法,該類算法主要是將量化步長作為變量建立碼率控制的數(shù)學(xué)模型。Valsesia等通過對非重疊編碼塊建立預(yù)測碼率與失真的數(shù)學(xué)模型實現(xiàn)了有效的碼率控制[6]。在此基礎(chǔ)上,Conoscenti等實現(xiàn)了在保證碼率控制精度的同時也降低算法復(fù)雜度的算法[7]。Valsesia等通過動態(tài)估計殘差信息更新量化步長實現(xiàn)了更精確的碼率控制和更高的算法吞吐量[8]。然而,這種動態(tài)調(diào)整可能導(dǎo)致量化步長的突變,從而在解壓圖像上引入較大的誤差。Joan等提出了一種重復(fù)編碼的碼率控制圖像壓縮算法[9],該算法首先設(shè)置某一量化步長對圖像進行編碼,在未達到目標(biāo)碼率時,重新調(diào)整量化步長并重復(fù)該過程。盡管以上算法都獲得了有效的碼率控制,但在低碼率時碼率控制精度仍存在0.4%的誤差。第三類是基于深度學(xué)習(xí)壓縮的碼率控制圖像壓縮算法,該類算法主要解決深度學(xué)習(xí)壓縮模型只能輸出單一碼率的問題[10-11],不適用于傳統(tǒng)壓縮算法的碼率控制。
JPEG2000標(biāo)準(zhǔn)由于質(zhì)量和分辨率的可伸縮性、ROI編碼以及高效率壓縮等特性受到了廣泛應(yīng)用,但其核心算法的高復(fù)雜度嚴(yán)重影響了其在低延遲應(yīng)用上的實現(xiàn)。雖然目前的碼率控制算法對JPEG2000的碼率控制進行了優(yōu)化,但沒有從根本上解決碼率控制復(fù)雜度高的難題。HTJ2K是建立在JPEG2000標(biāo)準(zhǔn)基礎(chǔ)上的一種實現(xiàn)高吞吐率的圖像壓縮標(biāo)準(zhǔn),其改變了JPEG2000的塊編碼算法,從根本上降低了JPEG2000的編碼復(fù)雜度[12],但在很大程度上損失了JPEG2000核心算法EBCOT[13]所具有的精細的漸進傳輸特性,其非完全的嵌入編碼方式導(dǎo)致難以實現(xiàn)精確的碼率控制。作為可選項,雖然HTJ2K提供了碼率控制框架,但沒有給出具體的實現(xiàn)方法。為了解決這一問題,本文根據(jù)HTJ2K算法本身的特點,提出了一種結(jié)合碼率預(yù)測和壓縮后率失真優(yōu)化的高精度自適應(yīng)碼率控制的圖像壓縮(HTJ2K-RPRD)算法,實現(xiàn)了低復(fù)雜度的精確碼率控制圖像壓縮。
HTJ2K是JPEG委員會標(biāo)準(zhǔn)制定組于2019年公布的新的圖像壓縮標(biāo)準(zhǔn)[14],該標(biāo)準(zhǔn)采用了最優(yōu)截斷的快速塊編碼算法(fast block coding with optimized truncation,FBCOT)[15],解決了JPEG2000復(fù)雜度高的難題。HTJ2K圖像壓縮框架主要包含多分量變換、離散二維小波變換、量化、塊編碼和碼流包生成5個部分,如圖1所示。其中,多分量變換用于去除彩色圖像分量間的相關(guān)性,離散二維小波變換用于去除圖像空間內(nèi)的相關(guān)性[16],量化用以調(diào)節(jié)小波變換數(shù)據(jù)的有效位深,若為無損壓縮則無需進行量化處理。隨后的塊編碼器則是HTJ2K的關(guān)鍵環(huán)節(jié),塊編碼器采用3種編碼通道進行編碼:清理(cleanup,CUP)通道、顯著性傳播(significance propagation,SP)通道和幅值細化(magnitude refinement,MR)通道[17]。當(dāng)進行定碼率壓縮時,則需要進行碼率控制處理。編碼的最后部分是對每個編碼塊的輸出碼流打包為一個完整的壓縮碼流包。
圖1 HTJ2K編解碼系統(tǒng)框架Fig.1 Framework of HTJ2K codec system
HTJ2K與JPEG2000系統(tǒng)架構(gòu)相似,最主要的區(qū)別在于塊編碼器部分。HTJ2K與JPEG2000的塊編碼通道產(chǎn)生方式對比如圖2所示。在JPEG2000中,除編碼塊的最高位平面只生成一個清理通道外,其他的每一個位平面都要生成3個編碼通道[18]。假設(shè)最高位平面為pmax(0為最低位平面),則每個編碼塊最多可以生成3pmax+1個編碼通道,這樣便對小波系數(shù)進行了精細的分?jǐn)?shù)位平面劃分。而在HTJ2K中,對于給定的位平面p,每個編碼塊僅生成一個清理通道,進而生成一個顯著性傳播通道和一個幅值細化通道,因此每個編碼塊僅生成3個編碼通道[19]。特別地,當(dāng)給定的位平面p=0時,則只需要一個清理通道即可完成對該編碼塊的編碼。HTJ2K極大地降低了算法復(fù)雜度,非常有利于并行實現(xiàn),是實現(xiàn)高吞吐率的關(guān)鍵,但是HTJ2K對編碼通道的粗分方式只能生成極少的質(zhì)量層,給精確的定碼率圖像壓縮帶來困難。
pmax—最高位平面;p—設(shè)定的位平面;CUP—清理通道;SP—顯著性傳播通道;MR—幅值細化通道。圖2 HTJ2K與JPEG2000的塊編碼通道產(chǎn)生方式對比 Fig.2 A comparison of block coding passes generation methods between HTJ2K and JPEG2000
碼率控制問題實質(zhì)是一種有約束條件的率失真優(yōu)化問題[20]。JPEG2000采用壓縮后率失真優(yōu)化算法實現(xiàn)最優(yōu)碼率控制,首先通過計算每個編碼通道的重建損失和輸出碼流長度來獲得下凸的率失真函數(shù)曲線,然后通過計算率失真曲線的斜率尋找定碼率輸出要求的最優(yōu)碼流截斷點。JPEG2000的每個編碼通道的終止點就是一個候選截斷點,因此每個編碼塊都能形成精細的率失真曲線,這非常有利于獲得最優(yōu)截斷點,而HTJ2K能產(chǎn)生的待截斷點數(shù)量非常有限,難以構(gòu)成精細的率失真曲線。文獻[21]對JPEG2000率失真優(yōu)化的各編碼塊的編碼通道截斷點進行了分析,通過觀察大量的圖像實驗后發(fā)現(xiàn),每幅圖像中每個編碼塊的碼流是在鄰近的編碼通道結(jié)束點被截斷。在標(biāo)準(zhǔn)測試圖像lena和barb上分別進行4倍、8倍和16倍的JPEG2000壓縮,可得到每個編碼塊的截斷位平面曲線,如圖3所示。對于既定的壓縮倍數(shù),即使每個編碼塊數(shù)據(jù)互相差異較大,但是截斷位平面的差異并不大,一般僅相差1個位平面,即使在高倍壓縮時也僅相差2~3個位平面。這表明在既定的壓縮倍數(shù)下,編碼塊間會存在一個基礎(chǔ)的截斷位平面,如lena圖像4倍、8倍和16倍壓縮的基礎(chǔ)截斷位平面分別為2、3和4。
(a)lena圖像
基于以上小波編碼的特點,提出了一種結(jié)合碼率預(yù)測和壓縮后率失真優(yōu)化的高精度自適應(yīng)碼率控制的圖像壓縮(HTJ2K-RPRD)算法。該算法的主要思想是:首先根據(jù)圖像小波變換域編碼塊數(shù)據(jù)統(tǒng)計模型預(yù)測編碼的基礎(chǔ)截斷位平面;然后從基礎(chǔ)截斷位平面編碼產(chǎn)生多個編碼通道,采用PCRD-opt算法獲得每個編碼塊的編碼通道截斷點以實現(xiàn)精確的碼率控制。
(1)
(2)
式中:σi為第i個碼塊的標(biāo)準(zhǔn)差;e為自然常數(shù)。
根據(jù)最優(yōu)率失真理論,當(dāng)使得式(3)最小時,可獲得最優(yōu)的編碼參數(shù)
(3)
(4)
設(shè)基礎(chǔ)的截斷位平面為p,當(dāng)量化步長Δ為2的整數(shù)次冪時,根據(jù)Δ=2p則高頻子帶數(shù)據(jù)在截斷位平面p的平均輸出碼率RH(p)如下
(5)
由于小波低頻子帶數(shù)據(jù)分布與圖像內(nèi)容緊密相關(guān),往往不滿足高斯分布,因此不能用上節(jié)方法進行碼率估計。由圖2可見,清理通道是HTJ2K中最主要的編碼部分,承擔(dān)了大部分碼流輸出。而清理通道的碼流由MagSgn比特流、MEL比特流和VLC比特流組成,各個部分比特流由其對應(yīng)的編碼器產(chǎn)生[25]。清理通道碼流結(jié)構(gòu)如圖4所示。清理通道以2×2結(jié)構(gòu)的數(shù)據(jù)為一個最小編碼單元,稱為四元組。清理通道的四元組處理樣本如圖5所示。因此,本文以四元組為基本單元,根據(jù)3個碼字段的編碼規(guī)則進行低頻子帶小波數(shù)據(jù)碼率預(yù)測。
圖4 清理通道碼流結(jié)構(gòu)Fig.4 Stream structure of Cleanup passes
Q0—第0個四元組;Q1—第1個四元組;Qwq-1—第wq-1個四元組;wq—碼塊中每行四元組的個數(shù)。圖5 清理通道的四元組處理樣本Fig.5 Quad processing samples of cleanup passes
在MagSgn編碼器中,對于第i個四元組Qi,其中每個樣本數(shù)據(jù)在不同位平面p嵌入MagSgn碼流的比特數(shù)為mi,n(p),n=0,1,2,3。mi,n(p)滿足如下關(guān)系式
(6)
在預(yù)測時用max{Ei,0(p),Ei,1(p),Ei,2(p),Ei,3(p)}近似估計mi,n(p),則四元組Qi嵌入MagSgn碼流的比特數(shù)預(yù)測值為4max{Ei,0(p),Ei,1(p),Ei,2(p),Ei,3(p)}bit。
VLC編碼器采用查找表的方法進行編碼,即對每個四元組通過查找表產(chǎn)生一個不超過7 bit的碼字段直接嵌入VLC碼流。預(yù)測每個四元組嵌入VLC碼流的比特數(shù)為7 bit。
MEL編碼器主要對零上下文四元組的重要性編碼。相對于MagSgn和VLC編碼器,MEL編碼器產(chǎn)生極少的碼流。由于在對MagSgn和VLC碼流的預(yù)測中均按照上限進行了超量的碼流估計,因此在這里可忽略對每個四元組嵌入MEL碼流的長度。
綜上,假若二維小波低頻子帶有N個四元組,則在不同位平面p嵌入清理通道碼流的碼率表示如下
Ej,3(p)]+7}/4N
(7)
由以上兩節(jié)可知,當(dāng)圖像二維小波變換的低頻子帶數(shù)據(jù)數(shù)量占比為aL,高頻子帶數(shù)據(jù)數(shù)量占比為aH,有aL+aH=1,則編碼到位平面p截止時輸出碼率R(p)可估計如下
R(p)=aHRH(p)+aLRL(p)
(8)
式中:RH和RL分別為二維小波系數(shù)在高、低頻子帶數(shù)據(jù)的平均輸出碼率。
假設(shè)目標(biāo)碼率為RT,則預(yù)測的基礎(chǔ)截斷位平面如下
ppre=min{p∈{0,1,…,pmax}|RT≥R(p)}
(9)
式中:pmax為圖像小波變換數(shù)據(jù)的最高位平面;R(p)為截斷位平面為p時CUP通道編碼的預(yù)測碼率。
式(9)獲得的基礎(chǔ)截斷位平面表示為清理編碼后的碼率不超過目標(biāo)碼率的最高位平面,而在實際編碼中,每個編碼塊的截斷位平面略有偏差。為了獲得更精確的碼率控制結(jié)果,分別將位平面ppre及ppre-1作為截斷位平面對每個編碼塊進行兩次編碼。這樣,每個編碼塊將共產(chǎn)生6個編碼通道,于是有較多的截斷點可以保證PCRD-opt算法的執(zhí)行。碼率控制的主要步驟描述如下。
(1)按照截斷位平面從下向上的順序逐個位平面進行碼率預(yù)測。首先令p=0,根據(jù)編碼塊所屬的小波子帶采用相應(yīng)的預(yù)測方法進行編碼塊的碼率輸出估計,然后采用式(8)計算整個圖像壓縮的輸出碼率估計值。
(2)判斷碼率估計值是否超出目標(biāo)碼率。當(dāng)估計值超過目標(biāo)碼率時,令p=p+1跳轉(zhuǎn)到步驟(1);否則停止碼率估計,記預(yù)測的基礎(chǔ)截斷位平面ppre=p。
(3)將ppre及ppre-1分別作為截斷位平面對每個編碼塊進行HTJ2K編碼。
(4)對每個編碼塊進行統(tǒng)一的PCRD-opt率失真優(yōu)化、碼流截斷及碼流組織。
為了驗證本文高精度自適應(yīng)碼率控制的圖像壓縮(HTJ2K-RPRD)算法的碼率控制性能、壓縮性能以及計算復(fù)雜度,首先,采用本文HTJ2K-RPRD算法對4幅測試圖像在壓縮比分別為4∶1、8∶1和16∶1時進行碼率控制性能測試實驗;然后,采用4種算法對4幅測試圖像在壓縮比分別為4∶1、8∶1和16∶1時進行壓縮性能測試實驗,采用的4種算法分別為JPEG2000、CCSDS-IDC[27]、本文算法,以及HTJ2K -PCRD。其中,HTJ2K-PCRD是對每個位平面均進行3個通道編碼,然后采用PCRD-opt進行碼率控制的算法;最后,采用本文算法對4幅測試圖像在壓縮比為8∶1時進行壓縮耗時實驗。
實驗所用到的4幅測試圖像均為單通道灰度圖像,由自然場景標(biāo)準(zhǔn)測試圖像以及空間系統(tǒng)數(shù)據(jù)咨詢委員會(CCSDS)提供的遙感測試圖像組成。4幅測試圖像如圖6所示。其中,lena圖像為自然場景標(biāo)準(zhǔn)測試圖,像素深度為8 bit;mars、ice、和solar為CCSDS提供的遙感測試圖像,像素深度分別為8 bit、10 bit和12 bit。
(a)lena圖(512×512像素,8 bit)
3.2.1 碼率控制
采用本文算法對4幅測試圖像在壓縮比分別為4∶1、8∶1和16∶1進行碼率控制性能測試的結(jié)果如表1所示。計算了按照上式(9)對基礎(chǔ)截斷位平面ppre的估計值,當(dāng)截斷位平面為ppre時CUP通道編碼的預(yù)測碼率及實際碼率,以及碼率控制后的最終實際壓縮碼率。結(jié)果顯示,當(dāng)截斷位平面為ppre時,對比CUP通道編碼的預(yù)測碼率及實際碼率,平均預(yù)測誤差僅13.18%。對比目標(biāo)壓縮碼率與碼率控制后的最終實際壓縮碼率,平均碼率控制精度達到99.997%,本文算法獲得精確的碼率控制結(jié)果。
3.2.2 壓縮圖像質(zhì)量
采用峰值信噪比(peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似度(structural similarity,SSIM)作為圖像壓縮質(zhì)量客觀評價指標(biāo)。
采用4種算法對4幅測試圖像在壓縮比分別為4∶1、8∶1和16∶1進行壓縮性能測試實驗的圖像質(zhì)量客觀評價結(jié)果分別如表2、表3和表4所示。所有算法均采用9/7提升小波進行3級小波分解,編碼塊大小為64×64。
結(jié)果顯示,壓縮比為4∶1時,JPEG2000、CCSDS-IDC、HTJ2K-PCRD和HTJ2K-RPRD獲得壓縮圖像相對原始圖像的PSNR值的均值分別為52.229 7、50.444 0、51.371 6和51.359 8 dB,SSIM的均值分別為0.992 5、0.991 2、0.991 0和0.991 0。HTJ2K-RPRD算法相對JPEG2000的PSNR值下降0.8 dB左右,而相對CCSDS-IDC提高0.9 dB左右,與HTJ2K-PCRD的PSNR值相差不到0.1 dB,4種算法獲得的SSIM值相當(dāng)。壓縮比為8∶1時,這4種算法獲得PSNR值的均值分別為44.765 9、43.578 4、44.194 6和44.198 8 dB,SSIM的均值分別為0.973 4、0.970 7、0.970 8和0.971 0。HTJ2K-RPRD算法相對JPEG2000的PSNR值下降0.5 dB左右,而相對CCSDS-IDC提高了0.6 dB左右,與HTJ2K-PCRD的PSNR值相差不到0.1 dB,4種算法獲得的SSIM值相當(dāng)。壓縮比為16∶1時,這4種算法獲得PSNR值的均值分別為40.124 2、39.233 9、39.492 7和39.495 6 dB,SSIM的均值分別為0.943 1、0.936 4、0.936 4和0.936 4。HTJ2K-RPRD算法相對JPEG2000的PSNR值下降0.6 dB左右,而相對CCSDS-IDC提高0.3 dB左右,與HTJ2K-PCRD的PSNR值相差不到0.1 dB,4種算法獲得的SSIM值相當(dāng)。
表2 壓縮比為4∶1時采用4種算法的壓縮圖像質(zhì)量比較
表3 壓縮比為8∶1時采用4種算法的壓縮圖像質(zhì)量比較
表4 壓縮比為16∶1時采用4種算法的壓縮圖像質(zhì)量比較
綜上所述,HTJ2K和CCSDS-IDC均是以犧牲部分壓縮圖像質(zhì)量為代價以提高編解碼吞吐率,整體上JPEG2000壓縮圖像質(zhì)量最佳,其次是HTJ2K,HTJ2K的壓縮性能優(yōu)于CCSD-IDC算法。
3.2.3 壓縮耗時
采用C語言編寫的HTJ2K-RPRD壓縮算法(未考慮并行加速處理)對4幅測試圖像在壓縮比為8∶1進行100次壓縮。4幅測試圖像壓縮過程中截斷位平面預(yù)測部分的耗時平均值和壓縮總耗時的結(jié)果如表5所示。結(jié)果顯示,編碼總耗時與圖像像素總量呈近似線性關(guān)系,圖像越大耗時越長。預(yù)測部分耗時占整個壓縮時間不大于3%,因此HTJ2K-RPRD算法對圖像壓縮算法復(fù)雜度影響極小。圖像壓縮算法的吞吐量可定義為單位時間內(nèi)所處理的圖像數(shù)據(jù)量,預(yù)測部分耗時增加了不大于3%的壓縮耗時,因此整個圖像壓縮算法的吞吐量降低不足3%,HTJ2K-RPRD算法對圖像壓縮算法吞吐量影響極小。
表5 壓縮比為8∶1時采用HTJ2K-RPRD算法的壓縮耗時
采用本文算法和HTJ2K-PCRD分別對4幅測試圖像在壓縮比為8∶1進行100次壓縮。采用兩種算法對4幅測試圖像壓縮總耗時平均值的比較結(jié)果如圖7所示。顯然HTJ2K-PCRD算法耗時更長,平均耗時是本文算法的3倍。HTJ2K-PCRD算法耗時長的主要原因是在于對每個位平面都作為候選截斷位平面進行一次編碼,雖然可獲得更精細的率失真曲線,但是嚴(yán)重降低了編碼效率。
圖7 采用兩種算法的總耗時比較Fig.7 A comparison of total running time between two algorithms
提出了一種高精度的自適應(yīng)碼率控制圖像壓縮(HTJ2K-RPRD)算法。針對不同圖像的不同目標(biāo)壓縮碼率,采用基于高斯統(tǒng)計模型和清理通道編碼規(guī)則兩種預(yù)測方法分別對小波高、低頻子帶數(shù)據(jù)進行碼率預(yù)測,從而獲得基礎(chǔ)截斷位平面。基于基礎(chǔ)截斷位平面和低一位平面的編碼產(chǎn)生多個編碼通道,并采用PCRD-opt算法實現(xiàn)精確的碼率控制。對不同位深、不同像素大小的圖像上進行多種壓縮比測試,結(jié)果表明提出的算法的碼率控制精度可達99.997%,實現(xiàn)了精確碼率控制的圖像壓縮。