小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MPEG4 & H.264學(xué)習(xí)筆記之三 ------ 圖像模型(圖像處理過程) --H.264的博客

 china_lxd 2005-11-18


3.4 圖像模型
一個自然的視頻圖像包括一格采樣值.自然圖像在它們原始的狀態(tài)下通常很難于壓縮,這是因為相鄰圖像采樣值之間的很強(qiáng)的聯(lián)系造成的.我們可以從一幅圖像的自相關(guān)函數(shù)圖中得到不同圖像之間的相似程度.在中點(diǎn)處的最頂點(diǎn)表示圖像未經(jīng)移動時的圖像.當(dāng)空域移動拷貝被從原始圖像的任一個方向移除的時候,這個函數(shù)值就會急驟下降,就這說明了一個圖像采樣值的鄰域內(nèi)是高度相關(guān)的.

一個運(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ù)測圖像編碼
運(yùn)動補(bǔ)償是預(yù)測編碼的一個實例,在這種補(bǔ)償下,編碼器基于上一幀創(chuàng)造了對于當(dāng)前幀的一個區(qū)域的預(yù)測并從當(dāng)前域中減去這個預(yù)測來形成一個剩余幀。如果預(yù)測是成功的,那和在剩余幀中的能量是比原始幀中的能量少得多的,而且剩余幀可以用更少的位來表示。

與之相似的是,同一個圖像采樣或區(qū)域的預(yù)測可以由前面?zhèn)鬏數(shù)耐瑯訄D象或幀中組成.預(yù)測性編碼被用作是早期的壓縮算法的基礎(chǔ),也是H.264的一個很重要的組成部分.幀內(nèi)編碼(應(yīng)用在變換域中,見后).空域預(yù)測有時被描述為"差分脈沖編碼調(diào)制"(DPCM)--從通信系統(tǒng)中引入的一個差分的PCM編碼方法.


 B C
A X

圖中假設(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),并重建像素.

比如說:
編碼器預(yù)測: P(X) = (2A + B + C) / 4
剩余幀  R(X) = X - P(X) 被編碼并傳輸
解碼器解碼R(X)并組成同樣的預(yù)測: P(X) = (2A + B + C) / 4
重建像素 X = R(X) + P(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 變換編碼
3.4.2.1 總述
圖像中或視頻CODEC中的變換階段是把圖像或運(yùn)動補(bǔ)償剩余值轉(zhuǎn)到另一個域中(變換域中)。變換的選擇依賴于以下幾個分類
1. 在轉(zhuǎn)換域中的數(shù)據(jù)是去相關(guān)性的(轉(zhuǎn)換域中的數(shù)據(jù)的大多數(shù)能量都會聚集到很小的值中)
2. 轉(zhuǎn)換應(yīng)該是可逆的.
3. 轉(zhuǎn)換的計算過程應(yīng)該是易于處理的,

對圖像和視頻壓縮以及很多的變換都建議使用以下兩類方式:基于塊的變換和基于圖像的變換?;趬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中進(jìn)行運(yùn)算(X是一個N*N的采樣塊,通常是指在預(yù)測之后的圖像采樣或剩余幀值)來構(gòu)造Y,一個N*M的系數(shù)塊。DCT的操作(及它的反變換IDCT),可以用變換矩陣A來描述。一個N*N采樣塊的DCT變換由如下式子得到:Y=AXA(T),反DCT變換:Y=AXA(T),A(T)表示A的對稱矩陣

X是一個采樣的矩陣,Y是一個系統(tǒng)的矩陣,A是一個N*N的變換矩陣。A的元素是:

A(i,j) = C(i) * cos [(2j+1)*i*PI]/2N
C(i)=   N^(-1/2) i=0
 (2/N)^(-1/2) i>0

一個二維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ù)
一個選定的4*4的塊,以及DCT系數(shù)。這種用DCT域表示塊的方法的優(yōu)點(diǎn)不是很明顯的,因為并沒有減少存儲的空間,原來我們存16個像素值,我們現(xiàn)在成了需要存16個DCT系數(shù)。DCT的實用性當(dāng)塊被從系數(shù)的一個子集中構(gòu)建出來的時候表現(xiàn)了出來:

把除去一些很大的值之外的所有的系數(shù)設(shè)為0,執(zhí)行IDCT之后的結(jié)果如下圖:在IDCT之前加入更多的系數(shù)可以形成漸近的更加準(zhǔn)確的對原圖的重建。這樣,就可能從從一個子集的系數(shù)集中近似于原始的圖像。刪除系數(shù)中的小系數(shù)值(比如說通過量化)可以讓圖像數(shù)據(jù)在更少的系數(shù)表示位中表示出來,盡管這樣做會影響圖像的質(zhì)量。


3.4.2.3 小波
流行的"小波變換"要(基于一系列系數(shù)與離散小波函數(shù)相等的濾波器來進(jìn)行圖像壓縮的一種廣泛使用的方法).一個應(yīng)用于有N個采樣結(jié)果的離散信號的離散小波變換的基本運(yùn)行過程如下.一對濾波器被用來把信號分解為一個低頻部分(L)和一個高頻部分(H).每個波段由因子2被子采樣化,這樣這兩個頻率波都含有N/2個采樣點(diǎn)。如果正確選擇了濾波器的話,這個操作過程是可逆的。

這種方法可以被擴(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 量化
量化器把一個在值域X的信號量化減為到值域Y中。使用更小的位來表示量化后的信號是可行的,因為轉(zhuǎn)換后的值域比原來更小了。一個標(biāo)量的量化器把輸入的信號映射到一個量化的輸出值域中,而一個向量的量化器把一組輸入采樣值映射到一組量化值中。

3.4.3.1 標(biāo)量量化
標(biāo)量量化的一個簡單的例子就是把小數(shù)近似到最近的整數(shù)上,比如,從R到Z的映射。這個過程是有損的(不可逆的)因為它是無法從被近似后的結(jié)果來恢復(fù)出原來的小數(shù)的。

一個量化的更加通用的例子就是:
FQ = round (X/QP)
Y=FQ * QP

這里QP是量化的步長。量化輸出級間隔單一的QP間斷值。

在圖像或視頻的CODEC中,量化操作通常由兩部分構(gòu)成:編碼端的前向量化FQ,和解碼端的反量化(IQ).(事實上量化是不可逆的,這樣用一個更準(zhǔn)確的叫法的話:標(biāo)量器和重標(biāo)量器。在兩個標(biāo)量值之間的QP步長是一個重要的參數(shù)。如果步長很長的話,那么量化值的范圍就很小,這樣的話就可以在傳輸過程中被更有效地被表示(高壓縮比地壓縮).但是重量化值是原信號值的近似。如果步長很小的話,重量化值與原始信號更加匹配,但是量化值就落到一個更大的范圍之內(nèi),就降低了壓縮的效率。


量化可以被用來在像DCT或小波變換之后,除去了小系數(shù)之后降低圖像數(shù)據(jù)的精確度。一個圖像或視頻的前向量化器設(shè)計為映射小系數(shù)值到0而保留一部分大系數(shù)值。前向量化器的輸出通常是一個稀疏的量化系數(shù)的數(shù)組,大都為0。

3.4.3.2 向量量化
一個向量量化器把一系列的輸入數(shù)據(jù)(比如一塊圖像采樣)映射到一個單值(codeword),而在解碼端,每個單值(codeword)都映射到一個對于原始輸入數(shù)據(jù)的近似。這組向量保存在編碼和解碼端,被用來當(dāng)作一個編碼表。在圖像壓縮中一個典型的向量量化程序如下:

1. 把原始圖像分區(qū)(比如M × N像素塊)
2. 從編碼表中選擇一個與當(dāng)前區(qū)域最相近的向量
3. 把選定的向量的序號傳給解碼器
4. 在解碼端,用選定的向量來重建一個原始圖像的拷貝。

量化是被用在空間域中(比如說用向量量化過的圖像采樣組),但是它也可以被用在運(yùn)動補(bǔ)償或變換數(shù)據(jù)中.向量量化設(shè)計中的關(guān)鍵問題包含編碼表的設(shè)計和在編碼表中有效都查找最優(yōu)化的向量的問題。

3.4.4 重排列和零編碼
量化過的變換系數(shù)需要被仔細(xì)編碼來進(jìn)行存儲和傳輸。在基于變換的圖像或視頻編碼器上,量化器的輸出是一個稀疏的數(shù)組,它包含了一些非0的系數(shù)和很多的0值系數(shù)。重排(把非0系數(shù)進(jìn)行重組)和有效地表示0系數(shù)要在熵編碼前進(jìn)行操作。這些過程在DCT和小波變換中被提到了。

3.4.4.1 DCT
系數(shù)分布
一塊圖像或剩余采樣的大的DCT系數(shù)通常都是在DC(0,0)系數(shù)“低頻”部分。DCT系數(shù)的非0系數(shù)都聚在上頂部系數(shù),而分布在水平和垂直方向是大約對稱的。對于剩余區(qū)域來說,聚集在DC位置的系數(shù)是歪斜的,比如說,更多的非0系數(shù)在左手邊出現(xiàn)。這是因為區(qū)域圖片在垂直方向有很強(qiáng)的高頻成分(因為在垂直方向的子采樣),這樣因為垂直頻率的原因得到了更大的DCT系數(shù)。

掃描
在量化之后,塊的DCT系數(shù)被重排以把非0系數(shù)進(jìn)行組合,以使對于剩余0值的表示方法更加有效。優(yōu)化的重組方法(掃描方法)依賴于非0DCT系數(shù)的分布情況。對于經(jīng)典的一幀來說,合適的掃描方式應(yīng)該是gzag法,它是從左上角的DC系數(shù)開始的.從DC系數(shù)開始,每一個量化的系數(shù)被拷貝到一維數(shù)組里面。非0系數(shù)在重排數(shù)列的最前端被重組,而在之后是很長序列的0值。

gzag掃描掃描方式對于一個域塊可能并不是理想的,因為系數(shù)是歪斜分布的,那么一個修改后的掃描順序可會是有效的,比如說左邊的系數(shù)在右邊系數(shù)掃描之前被掃描。


運(yùn)行級編碼
重排過程的輸出是一個通常在開始端包含一個或多個簇的非0系數(shù),后面的是一串0值系數(shù)。這些0值被編碼而實現(xiàn)更優(yōu)化的表示方法,比如說,通過表示一串0里面的數(shù)量來縮減表示位數(shù)等等。

例如:
輸入數(shù)組:16,0,0,-3,5,6,0,0,0,0,-7, . . .
輸出值:  (0,16),(2,-3),(0,5),(0,6),(4,-7). . .

DCT系數(shù)高頻部分常被量化為0,這樣一個重排的塊通常以一串0結(jié)尾。一個特殊情況是需要指出一個塊中的最后一個非0系數(shù)。在所謂的二維運(yùn)行級編碼被使用。每一個運(yùn)行級對被用上面的方式進(jìn)行編碼,而一個單獨(dú)的編碼符號"last",用來指出最后一個0值的位置。如果三維的運(yùn)行級編碼被使用的話,每個符號編碼要編三個量化值:運(yùn)行度,級數(shù)以及最后非0值。如上例就可以寫為:
(0, 16, 0), (2,-3, 0), (0, 5, 0), (0, 6, 0), (4,-7, 1)

最后一個碼中的1表示這是這個塊中最后一個非0值。

3.4.4.2 小波
系數(shù)分布
很多在高子波中的系數(shù)(右下方的系數(shù)值)都是接近于0值的,可以被量化到0而不損失圖像的質(zhì)量。非0系數(shù)對應(yīng)于圖像的結(jié)構(gòu),比如說,在violin圖中,弓就有很清晰的垂直結(jié)構(gòu)。當(dāng)?shù)皖l中的系數(shù)是非0時,有很大的可能性在高頻相應(yīng)的系數(shù)也是0。這們設(shè)想一個非0的量化系數(shù)樹,以在低頻中根部開始。在第一層的一個單個LL的系數(shù)在其他的第一層有相應(yīng)的系數(shù)值。第一層系數(shù)位置映射到四個相應(yīng)的子段的同一位置的系數(shù)位置.

零樹編碼
在熵編碼之前越好地編碼非0小波系數(shù)就越好.達(dá)到這一點(diǎn)的一個有效的方法就是從最低層開始編碼每個非0系數(shù)樹.最低層的系數(shù)需要被編碼,接著是它在高層的子系數(shù),如此反復(fù).編碼過程在樹達(dá)到0值系數(shù)的時候一直運(yùn)行.之后的的全0值的層的子層值都為0.在解碼端,重建過程從樹根開始,非0系數(shù)被解碼并重建,當(dāng)遇到零樹的時候,所有的剩余的子結(jié)點(diǎn)都被設(shè)為0.這嵌入零樹(EZW)的小波系數(shù)編碼方法.編碼過程包含一種其他的可能性,0值系數(shù)可能跟著(a)一個零樹(就像原來那樣),或(b)一個非零的子系數(shù)陣.(b)不常發(fā)生,但是如果考慮到這些不常發(fā)生的情況的時候,重建圖像的質(zhì)量會被輕微地提高.

【作者: BUUVT】【訪問統(tǒng)計: 412】【2005年04月27日 星期三 21:04】

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多