|
3.4 圖像模型 一個運(yùn)動補(bǔ)償?shù)氖S鄨D象的自相關(guān)函數(shù)在當(dāng)空域移動增加的時候快速衰減,表明了相鄰的采樣點(diǎn)是弱相關(guān)的.有效的運(yùn)動補(bǔ)償在剩余幀中減少了本地相關(guān)性,這樣就讓圖象比原始狀態(tài)下的圖象更易于壓縮.圖像模型的作用就是把圖像或剩余圖像的相關(guān)性去除掉,并把它轉(zhuǎn)變?yōu)橐环N可以被熵編碼器有效編碼的數(shù)據(jù)形式.實際圖像模型一般有三個主要的組成部分:變換(去相關(guān)和簡化數(shù)據(jù)),量化(減小轉(zhuǎn)換數(shù)據(jù)的相關(guān)性)和重組(組合數(shù)據(jù)來把大值分組到一起)。 3.4.1 預(yù)測圖像編碼 與之相似的是,同一個圖像采樣或區(qū)域的預(yù)測可以由前面?zhèn)鬏數(shù)耐瑯訄D象或幀中組成.預(yù)測性編碼被用作是早期的壓縮算法的基礎(chǔ),也是H.264的一個很重要的組成部分.幀內(nèi)編碼(應(yīng)用在變換域中,見后).空域預(yù)測有時被描述為"差分脈沖編碼調(diào)制"(DPCM)--從通信系統(tǒng)中引入的一個差分的PCM編碼方法.
圖中假設(shè)一個像素X是被編碼的像素點(diǎn),如果在光柵順序下處理這幀的話,那么點(diǎn)A,B和C(在當(dāng)前和之前行的鄰近像素)在編碼和解碼器中都是可得的(因為他們已經(jīng)在X之前被解碼).編碼器在根據(jù)一些在之前編碼的像素的組合來得到對于X的預(yù)測,從X中減掉這個預(yù)測,然后編碼剩余幀頻(做差之后的結(jié)果).解壓器形成相同的預(yù)測,然后把解碼的剩余幀加進(jìn)去來重建像素值.如果編碼過程是有損的(比如說剩余幀被量化了)那么解碼的像素值A(chǔ),B,C也許與原始的A,B,C是不同的(因為編碼過程的損失),這樣的話上述的過程可能在編碼器和解碼器上引起累積的不匹配.這種情況下,編碼器應(yīng)該解碼剩余幀中的R(X),并重建像素. 比如說: 編碼器使用解碼的像素值A(chǔ),B,C來構(gòu)成重建,比如說,P(X)=(2A+B+C)/4.這樣的話,編碼器和解碼器使用同樣的P(X),這樣就可以避免錯位的發(fā)生. 這種方法的壓縮的效率依賴于對于P(X)預(yù)測的準(zhǔn)確性.如果預(yù)測是準(zhǔn)確的(P(X)與X的值是相近的),那么剩余幀的能量就非常小了.然而,并不是經(jīng)常都能選擇一個對復(fù)雜圖像來說那么理想的預(yù)測器的.編碼器就有必要指出對解碼端選擇預(yù)測器,這樣就有一個預(yù)測和需要的多余位來表示信號和預(yù)測器的一個折衷考慮了. 3.4.2 變換編碼 對圖像和視頻壓縮以及很多的變換都建議使用以下兩類方式:基于塊的變換和基于圖像的變換?;趬K的變換的例子比如Karhunen-Loeve變換(KLT),單值分解(SVD)和余弦變換(DCT)。每一種變換都是對于N*N的圖像塊或剩余樣本來說的,這樣圖像就被用塊的單元來處理。塊變換有很低的內(nèi)存需求而且很適于基于塊的運(yùn)動補(bǔ)償剩余幀的壓縮,但是受邊界區(qū)域的影響比較嚴(yán)重?;趫D像的變換對于整個圖像或幀來進(jìn)行操作(或一個圖像的一大段進(jìn)行操作)。最常用的圖像變換是離散小波變換(DWT或直接說小波變換)。像DWT這樣的變換對于表態(tài)圖像的壓縮來說已經(jīng)被證明是很有效的了,但是它們對內(nèi)存的消耗都比較大(因為整個圖像或段都以單個單元來進(jìn)行處理)而且不適用于基于塊的運(yùn)動補(bǔ)償方法。DCT和DWT在MPEG4視頻部分中都得到了應(yīng)用(而且一個DCT的變種在H.264中被使用)。它們將在下面幾節(jié)被討論。 3.4.2.2 X是一個采樣的矩陣,Y是一個系統(tǒng)的矩陣,A是一個N*N的變換矩陣。A的元素是: A(i,j) = C(i) * cos [(2j+1)*i*PI]/2N 一個二維DCT的輸出是一組N*N的系數(shù),它表示了圖像在DCT域中的塊數(shù)據(jù),這些系數(shù)可以被想成是一組標(biāo)準(zhǔn)基的”權(quán)“值。任何圖像塊都可以由編合所有的N*N標(biāo)準(zhǔn)基來重組,通過這些基乘以相應(yīng)的權(quán)因素值(系數(shù))。 例2 圖像塊的DCT系數(shù) 把除去一些很大的值之外的所有的系數(shù)設(shè)為0,執(zhí)行IDCT之后的結(jié)果如下圖:在IDCT之前加入更多的系數(shù)可以形成漸近的更加準(zhǔn)確的對原圖的重建。這樣,就可能從從一個子集的系數(shù)集中近似于原始的圖像。刪除系數(shù)中的小系數(shù)值(比如說通過量化)可以讓圖像數(shù)據(jù)在更少的系數(shù)表示位中表示出來,盡管這樣做會影響圖像的質(zhì)量。
這種方法可以被擴(kuò)展應(yīng)用到一個二維的信號上,比如說灰度圖中。一個2D圖的每一行都被經(jīng)過低通和高通的濾波(Lx和Hx),每個濾波器的輸出被下采樣用來制造中間圖像L和H。L是原始圖象的低通濾波,并通過在x方向進(jìn)行下采樣的結(jié)果.H是原圖像的高通濾波并在x方向的下采樣結(jié)果。接下來,這些新圖的每一列都使用低和高通的濾波器(Ly和Hy),并經(jīng)過下采樣來制造出四個子圖象(LL,LH,HL,HH)。這四個子圖象可以被組合為與原圖的采樣數(shù)相同的圖象。LL是原圖通過在水平和垂直方向經(jīng)過低通,并用因素2進(jìn)行子采樣的結(jié)果。HL是通過在垂直方向經(jīng)過高通濾波并包含了剩余垂直頻率的結(jié)果。LH是通過在水平方向高通濾波并包含了剩余的水平頻的結(jié)果,而HH是通過在水平和垂直兩個方向進(jìn)行高通濾波的結(jié)果。它們之間,四個圖像包含了所有的原始圖像的信息,但是LH,HL,HH的稀疏性使它們更加容易壓縮。 在圖像壓縮程序中,二維的小波分解被繼續(xù)應(yīng)用到LL圖中,來組成四個新的子圖。得到的新的低通圖象繼續(xù)被得到子圖象。很多高頻的采樣結(jié)果都是接近0的,它就可以通過把小值來移除來達(dá)到更優(yōu)化的傳輸。在解碼端,原圖像通過上采樣,濾波和加值被重建。 3.4.3 量化 3.4.3.1 標(biāo)量量化 一個量化的更加通用的例子就是: 這里QP是量化的步長。量化輸出級間隔單一的QP間斷值。 在圖像或視頻的CODEC中,量化操作通常由兩部分構(gòu)成:編碼端的前向量化FQ,和解碼端的反量化(IQ).(事實上量化是不可逆的,這樣用一個更準(zhǔn)確的叫法的話:標(biāo)量器和重標(biāo)量器。在兩個標(biāo)量值之間的QP步長是一個重要的參數(shù)。如果步長很長的話,那么量化值的范圍就很小,這樣的話就可以在傳輸過程中被更有效地被表示(高壓縮比地壓縮).但是重量化值是原信號值的近似。如果步長很小的話,重量化值與原始信號更加匹配,但是量化值就落到一個更大的范圍之內(nèi),就降低了壓縮的效率。
3.4.3.2 向量量化 1. 把原始圖像分區(qū)(比如M × N像素塊) 量化是被用在空間域中(比如說用向量量化過的圖像采樣組),但是它也可以被用在運(yùn)動補(bǔ)償或變換數(shù)據(jù)中.向量量化設(shè)計中的關(guān)鍵問題包含編碼表的設(shè)計和在編碼表中有效都查找最優(yōu)化的向量的問題。 3.4.4 重排列和零編碼 3.4.4.1 DCT 掃描 gzag掃描掃描方式對于一個域塊可能并不是理想的,因為系數(shù)是歪斜分布的,那么一個修改后的掃描順序可會是有效的,比如說左邊的系數(shù)在右邊系數(shù)掃描之前被掃描。
例如: DCT系數(shù)高頻部分常被量化為0,這樣一個重排的塊通常以一串0結(jié)尾。一個特殊情況是需要指出一個塊中的最后一個非0系數(shù)。在所謂的二維運(yùn)行級編碼被使用。每一個運(yùn)行級對被用上面的方式進(jìn)行編碼,而一個單獨(dú)的編碼符號"last",用來指出最后一個0值的位置。如果三維的運(yùn)行級編碼被使用的話,每個符號編碼要編三個量化值:運(yùn)行度,級數(shù)以及最后非0值。如上例就可以寫為: 最后一個碼中的1表示這是這個塊中最后一個非0值。 3.4.4.2 小波 零樹編碼 【作者: BUUVT】【訪問統(tǒng)計: 412】【2005年04月27日 星期三 21:04】 |
|
|