陳曉妹,王向文
(上海電力大學電子與信息工程學院,上海 200090)
隨著計算機技術的迅猛發展,大量數據產生并被傳輸交換。為了便于傳輸,需要對數據進行一定程度的壓縮[1]。壓縮分為有損和無損兩種,無損可以完全恢復出信息,但是壓縮效率不高,而有損可以很大程度的壓縮數據,同時能夠一定程度上保證數據的真實性。對于圖像而言,需要將原始位圖壓縮成JPEG格式。
JPEG算法廣泛應用在數碼相機和互聯網中,網絡中80%的圖片都采用了JPEG壓縮。JPEG壓縮算法的關鍵在量化,量化是壓縮中唯一的信息損失來源,通過降低整數精度以減少存儲需要的位數,從而達到壓縮數據的目的。而JPEG編碼的其它過程,如DCT,熵編碼則是無損的。JPEG算法提供了兩張標準的量化系數矩陣,分別用于處理亮度數據Y和色差數據Cr以及Cb。用固定的量化表對具有不同細節內容的圖像進行固定量化步長的量化,致使圖像細節的丟失,而這些細節可能恰是原始圖像的關鍵信息,是其最重要的部分。
如何在同等壓縮比的情況下保留更多的圖像細節是圖像壓縮的重要問題。根據原圖像的頻域分布,自適應地改變量化級數,是在一定的壓縮比下保留更多圖像細節的可行思路。文獻[5]在JPEG壓縮的基礎上,利用高頻分量在8*8的子塊出現的位置和63個交流系數的平均值,提出了基于JPEG的自適應量化算法,但并未進一步優化。文獻[6]利用0.98縮放近似原圖像的方法解決原始量化步長多值問題,提出了一種雙重壓縮估計原始量化步長的方法,該方法根據兩次量化步長間的大小提出了直接利用直方圖計算的新方法,但多次量化一定程度上會對結果的精確程度造成影響,同時使得計算的復雜度增加。JPEG算法用于數字圖像,壓縮比和質量取決于64個整數的矩陣的量化表,由于不同內容圖像,各頻率信息不一,沒有唯一的最佳量化表。文獻[8]考慮利用群體智能的啟發式方法解決量化表的選擇,提出了將螢火蟲算法應用于不同圖像相似性度量的量化表選擇問題的框架。文獻[10]提出一種基于改進量化表的JPEG圖像壓縮算法(JPEG-HVS),通過對人眼亮度對比度敏感函數(CSF)運用生成新的量化表,來替代JPEG標準通用的亮度量化表。文獻[12]提出了一種在JPEG壓縮中自適應選擇DCT量化參數的新算法。量化參數是根據對比度超過閾值視覺敏感度的精細細節的合成,其中采用塊分類來量化參數,可能引起塊效應。
本文在信息論反注水理論的基礎上,充分考慮各8*8子塊中關鍵信息占的比例,提出了基于反注水模型的JPEG自適應量化算法。主要思想是給每個頻率分配相同的失真d,根據信源包含同一個頻率位置上DCT系數的方差與失真d的關系,重新估計量化步長,并進行優化,使得量化步長更接近最優,再將所有8*8子塊的相應DCT系數重新量化,達到了優化量化的效果。
本文結構如下:第一部分敘述了JPEG算法;第二部分簡述了反注水模型;第三部分是反注水自適應算法的提出和實現步驟;第四部分是實驗結果,根據優化的參數表達式,本文提出了一種反注水自適應量化參數選擇算法,該算法能夠根據圖像內容不同更新量化參數。最后,實驗表明新算法能夠有效的提升圖像編碼質量。
根據數據分布特征,把需要量化的一個信源拆分成多組具有不同分布特征的子信源,并分別對每組進行優化量化設計則可以達到比對單一信源進行優化量化性能更優的效果。在研究圖像的DCT系數量化編碼應用中利用多信源的優化量化參數選擇量化方案可以較大程度提高編碼壓縮效率。對于率失真函數這一線性約束問題的最佳分配方案是讓各個隨機變量具有相等的失真d*,如(1)式所示
Di=d*
(1)
另外,要求各個隨機變量的失真和不超過給定的最大目標失真Dc。因此,當允許的總目標失真增大時,各隨機變量失真也隨之增大。由于方差是量化失真的最大值,即一個量化策略所對應的量化失真一定不大于方差值,在這種情況下,有以下表示方法
(2)
根據隨機變量的目標失真d*與最大失真和Dc之間的關系,目標失真可以通過(3)求解
(3)
這種優化方法,在信息論中也被稱為反注水法,如圖1所示。通過“反注水”法,復雜的率失真優化問題轉換為了簡單的失真最優化問題。圖像各個頻率編碼失真重新分配,且最后的失真總和不超過最大目標失真和值,就可以得到最優的量化參數和率失真性能。

圖1 反注水模型圖
要提升圖像壓縮質量,則應該對量化參數進行優化。因此,提出了一種自適應反注水參數選擇算法。首先進行原圖像從RGB到YUV空間的轉換,并將原始圖像分成尺寸8*8 的子塊,接著對子塊進行離散余弦變換(DCT),實現由時域轉頻域。利用式4求得亮度分量在DCT變換后子塊中64個系數的平均值,利用平均值和式5求出亮度分量在頻率域方差
(4)
(5)
其中,n為子塊總數,i的取值范圍是1~64。
根據設定目標失真DT,由式(6)求得平均失真d
d=DT/64
(6)
利用反注水理論即7式重新分配失真,得到各頻率位置失真
(7)

(8)
利用反注水理論得各頻率新目標失真
(9)
由式(10)和(11)計算參數最大似然估計ηi和死區尺寸zi
(10)
(11)
(12)

(13)
(14)
利用新生成量化表進行圖像壓縮,生成符合JPEG格式的壓縮文件。除量化表有變,壓縮過程中其余步驟與JPEG標準壓縮過程相同,所以用標準的JPEG解碼程序能對用自適應量化算法壓縮的JPEG文件進行解壓縮,可知自適應量化算法與JPEG 標準是兼容的。
新算法的創新處在于量化表的自適應設計,其余部分與JPEG標準編解碼過程相同。
反注水自適應量化算法可總結如下:
1)首先對圖片數據進行量化、反量化,得到初始化的失真值。
2)利用反注水模型即式(2)重新分配失真。
3)通過求解式(12),估算出優化后的量化步長。
4)利用更新后的量化步長求圖像失真,由式(14)求得優化后的量化步長。
5)將所求得的量化步長更新至量化表中。
具體流程框圖如圖2所示。

圖2 算法流程框圖
本文所提出的自適應反注水算法,是基于JPEG的優化量化,能夠隨著圖像的變化自動更新參數,同時,該算法只需對量化表中的參數進行調整,但是量化器的結構依然保持不變,不影響編碼過程。
實驗環境:MATLAB2018
為檢驗自適應量化算法的實際效果,利用USI-SIPI圖像數據庫中的圖像進行了不同壓縮率下的壓縮實驗。通常利用圖像的逼真度和可懂度來評價圖像質量,逼真度描述壓縮圖像同標準圖像的偏離程度,常用峰值信噪比(PSNR)來度量;可懂度是指圖像向人或機器供給信息的能力。
由于圖像中的亮度分量包含了主要信息,所以實驗以亮度數據為例。實驗選用尺寸為512*512的圖lena、mandrill、boat和peppers,采用峰值信噪比(PSNR)作為量化前后的失真度量,PSNR越高,表示量化質量越好。比特率則作為衡量編碼效率的工具,比特率越小,表示編碼耗費的資源越少。對于灰度圖像,PSNR計算公式如下:
(15)
其中f(n,m)指原圖像,f′(n,m)是壓縮后的恢復圖像,其圖像尺寸均為N*M,MAX為f(n,m)中的像素最大值,MAX=255是8bit量化圖像的最大值。
率失真曲線能夠直觀的表示出PSNR與比特率之間的均衡性,反映了量化前后的壓縮效果。圖3為改進算法與固定參數量化的RD曲線圖。其中,紅色線為新算法的RD曲線,藍色線是JPEG標準壓縮的RD曲線。由圖可見,在相同碼率時,本文提出的算法有更高的PSNR,這說明相比于固定參數量化方法,新算法率失真特性更佳,對圖片質量的損失更小。

圖3 自適應量化參數算法與固定參數量化率失真曲線比較圖
量化技術在圖像編碼中起著重要作用,直接影響了圖像的壓縮效果。本文利用反注水模型,基于JPEG標準的量化算法,提出了一種自適應量化參數更新算法,該算法能根據圖像內容信息自適應更新量化參數。實驗結果表明,該方法相較與固定參數的量化方法,并未改變量化編碼器框架,且在相同條件下可提升圖像質量,并且可提升視頻質量,使PSNR平均提高0.3223dB,達到優化量化的目的。