基于JPEG2000的一種新型率控制方法
摘要:JPEG2000靜止圖像壓縮標(biāo)準(zhǔn)的壓縮后率失真優(yōu)化算法雖然能保持較好的圖像質(zhì)量,但其計(jì)算量大、內(nèi)存占用多。文中提出了一種圖像質(zhì)量基本相同于率失真優(yōu)化的、基于先驗(yàn)信息掃描的、新的率控制方法。該方法可以有效地減少熵編碼時(shí)的計(jì)算復(fù)雜度并降低內(nèi)存占用率。
關(guān)鍵詞:JPEG2000;圖像壓縮;率失真優(yōu)化;掃描
0 引言
隨著多媒體和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,在傳輸圖像或視頻信息時(shí),如何有效地運(yùn)用信道帶寬已經(jīng)成為現(xiàn)今討論的主要話題之一。率控制是圖像或視頻編碼中控制比特率必須采用的方法,其最終目標(biāo)就是將目標(biāo)比特率合理的分配到圖像或視頻中去,以求得到最小的失真。
JPEG2000是一種新的靜止圖像壓縮編碼國際標(biāo)準(zhǔn)。由于其采用了與其他圖像壓縮標(biāo)準(zhǔn)不同的全新結(jié)構(gòu),因此,JPEG2000擁有壓縮比高,同時(shí)支持有損和無損壓縮,碼流可隨機(jī)存取和處理等優(yōu)點(diǎn)。JPEG2000的編碼算法包括離散小波變換(DWT)和位平面熵編碼。在JPEG2000中可通過嘗試不同的量化步長來進(jìn)行率控制:而通過位平面MQ編碼器,JPEG2000則可以精確簡單的控制比特率,以達(dá)到需要的比特率。JPEG2000的核心編碼方式是嵌入式碼塊編碼(EBCOT)。其最優(yōu)截?cái)嗍鞘箞D像失真最小化的一種率控制方法。這一過程是在小波系數(shù)經(jīng)過熵編碼(壓縮)后,所以也稱為壓縮后的率失真優(yōu)化(PCRD)。
根據(jù)所有壓縮后數(shù)據(jù)的實(shí)際率失真信息,PCRD技術(shù)就能計(jì)算出目標(biāo)碼流的圖像最小化失真。但是這還需要圖像所有的碼流數(shù)據(jù),事實(shí)
上,很多數(shù)據(jù)是不會(huì)被輸出的,這一過程還會(huì)占用很多內(nèi)存和計(jì)算量。為此,本文提出了一種新的率控制方法,可以有效減少計(jì)算量和內(nèi)存使用量,同時(shí)可以獲得相似的效果。
1 JPEG2000簡介
作為一種新的國際壓縮標(biāo)準(zhǔn),通常可以把JPEG2000看作小波變換(DWT)、標(biāo)量量化、比特系數(shù)建模、算術(shù)編碼、壓縮后率失真優(yōu)化和碼流組織等六個(gè)部分。
小波變換可將圖像分解為LL、HL、LH和HH四種子帶,并可以進(jìn)行多級(jí)分解。LL是圖像低頻信息所在,其他的三種子帶包含的是圖像高頻信息。這些小波系數(shù)經(jīng)過量化后,即可進(jìn)入EBCOT編碼過程。
1.1 熵編碼
熵編碼過程一般包括系數(shù)建模和算術(shù)編碼。它本質(zhì)上是一個(gè)位平面編碼的過程。在這個(gè)過程中,每個(gè)編碼塊都被獨(dú)立編碼,并且都經(jīng)過三個(gè)編碼通道,這三個(gè)編碼通道分別是重要性通道、幅值精煉通道和清零通道。這些編碼通道將會(huì)根據(jù)比特系數(shù)模型尋找每個(gè)比特系數(shù)的上下文,然后對(duì)這個(gè)比特系數(shù)進(jìn)行基于上下文的算術(shù)編碼(MQ)。
1.2 碼率控制
碼率控制涉及量化、熵編碼和碼流組織三個(gè)部分。量化就是量化步長根據(jù)要求的壓縮率反復(fù)調(diào)整以達(dá)到目標(biāo)碼率,這是一種交互式控制方式。另外一種采用壓縮后處理的方法是在碼流數(shù)據(jù)中對(duì)每個(gè)編碼塊設(shè)置一個(gè)截?cái)帱c(diǎn),這個(gè)截?cái)帱c(diǎn)可決定每個(gè)碼塊的編碼通道編碼的數(shù)據(jù)量。這就是JPEG2000的壓縮后率失真優(yōu)化。其具體算法如下:
首先設(shè)編碼塊Bi的碼率為、失真為,最終壓縮數(shù)據(jù)的目標(biāo)碼率為Rmax,則每個(gè)編碼塊的截?cái)帱c(diǎn)可以自由選擇,它只需要最后的碼率滿足下式即可:
如果用每個(gè)編碼塊的失真之和來表示重建圖像的失真,則重建圖像的失真為:
這樣,在截點(diǎn)ni,其率失真斜率為:
然后,利用拉格朗日乘子法,就可以求出最優(yōu)截?cái)帱c(diǎn)λ,從而實(shí)現(xiàn)最優(yōu)截?cái)嗑幋a。
2 新的率控制方法
最優(yōu)截?cái)帱c(diǎn)λ只能通過所有截?cái)帱c(diǎn)實(shí)際的率失真斜率來求得,這就需要熵編碼過程編碼所有的位平面數(shù)據(jù)和所有編碼過的碼流都存儲(chǔ)在存儲(chǔ)器中,而且,即使是那些在碼流控制后不需要傳輸?shù)拇a流,也要編碼和存儲(chǔ)。然而,通過研究發(fā)現(xiàn):如果將每個(gè)截?cái)帱c(diǎn)的率失真斜率按遞減的方式進(jìn)行整理,這個(gè)排列順序便與位平面層數(shù)有關(guān)。一般情況下,位平面高的率失真斜率大于位平面低的;其次,先編碼的通道的率失真斜率大于后編碼的通道。
基于以上兩點(diǎn),可先掃描圖像的位平面信息,在編碼那些率失真斜率大的。而后面不重要的比特就可以不進(jìn)行編碼。這個(gè)方法的過程首先是根據(jù)下式計(jì)算出每個(gè)碼塊Bi的最高位平面數(shù)Pi;
其中是碼塊Bi中的最大系數(shù)。之后,在求出最大的平面數(shù):
掃描每一個(gè)碼塊的順序圖如圖l所示。對(duì)于每一個(gè)掃描的碼塊,一般有如下三個(gè)條件:
(1)首先要判斷Pi=Pmax是否成立,如果成立,編碼這個(gè)編碼塊未編碼的位平面通道,然后Pi減1,之后檢查條件(2)。否則檢查條件(3);
(2)如果累計(jì)的碼率大于目標(biāo)碼率,則立即退出編碼。否則,檢查條件(3);
(3)如果這是最后一個(gè)編碼塊,那么Pmax減1,然后進(jìn)入下一個(gè)層的編碼。否則繼續(xù)掃描下個(gè)編碼塊。
由于上述條件(2)滿足的條件,故不會(huì)使碼率超過壓縮率的限制。而條件(1)、(3)則充分考慮了位平面和編碼通道的重要性,因而可確保得到最佳的圖像質(zhì)量。
3 實(shí)驗(yàn)結(jié)果
這里,我們用512x512的lena圖像進(jìn)行測試,表1記錄了PCRD與新方法在計(jì)算量和內(nèi)存使用量上的對(duì)比。表2所列是兩種方法在PSNR上的對(duì)比。兩種方法的解壓圖像效果如圖2所示。
4 結(jié)束語
通過對(duì)JPEG2000的分析,本文提出了一種通過估計(jì)率失真信息來控制碼率的方法。該方法由于不需要對(duì)所有的數(shù)據(jù)進(jìn)行編碼,因此,可在保持圖像質(zhì)量的同時(shí),還可以有效減少冗余計(jì)算量和內(nèi)存占用量。