便攜式移動(dòng)電視接收系統淺析
⑥為提高抗數據丟失的能力,允許編碼器發(fā)送圖像區的冗余表示,當圖像區的主表示丟失時(shí)仍可以正確解碼。
⑦可以根據每個(gè)像條語(yǔ)法元素的范疇,將像條語(yǔ)法劃分為3部分,分開(kāi)傳送。
下面就的幾個(gè)重要特性進(jìn)行詳細介紹:
1、幀內預測
對I幀的編碼是利用空間相關(guān)性而非時(shí)間相關(guān)性而實(shí)現的。以前的標準只利用了一個(gè)宏塊內部的相關(guān)性,而忽視了宏塊之間的相關(guān)性,所以編碼后的數據量較大。為了進(jìn)一步利用空間相關(guān)性,引入了幀內預測以提高壓縮效率。簡(jiǎn)單地說(shuō),幀內預測編碼就是用周?chē)徑南笏刂祦?lái)預測當前的象素值,然后對預測誤差進(jìn)行編碼。這種預測是基于塊的,對于亮度分量,塊的大小可以在16×16和4×4之間選擇,16×16塊有4種預測模式16×16 、 16×8 、 8×16 和 8×8,4×4塊有9種
預測模式;對于色度分量,預測是對整個(gè)8×8塊進(jìn)行的,有4種預測模式。除了DC預測外,其他每種預測模式對應不同方向上的預測。
1)預測時(shí)所用塊的大小可變
假設基于塊的運動(dòng)模型塊內所有象素都做了相同的平移,在運動(dòng)比較劇烈時(shí)或者在運動(dòng)物體的邊緣處,這一假設會(huì )與實(shí)際出入較大,導致較大的預測誤差,這時(shí)減小塊的大小可以使假設在小的塊中依然成立。同時(shí),小的塊所造成的塊效應相對也小,從而提高預測的效果。
一 共采用了7種方式對一個(gè)宏塊進(jìn)行分割,每種方式下塊的大小和形狀都不相同,這就使編碼器可以根據圖像的內容選擇最好的預測模式以提高預測效果。與僅使用16×16塊進(jìn)行預測相比,使用不同大小和形狀的塊可以使碼率降低15%以上。
(2)更精細的預測精度
在中,亮度分量的運動(dòng)矢量使用1/4象素精度。色度分量的運動(dòng)矢量由亮度運動(dòng)矢量導出,由于色度分量的分辨率是亮度分量的一半(對4∶2∶0),所以其運動(dòng)矢量精度將為1/8。既一個(gè)單位的色度分量的運動(dòng)矢量所代表的位移僅為色度分量取樣點(diǎn)間距離的1/8。如此精細的預測精度,比整數精度可使碼率降低20%以上。
(3)多參考幀
支持多參考幀預測,即可以有多于一個(gè)(最多5個(gè))在當前幀之前的解碼幀作為參考幀,產(chǎn)生對當前幀的預測。這適用于視頻序列中含有周期性運動(dòng)的情況。這種技術(shù),可以改善運動(dòng)估計的性能,提高解碼器的錯誤恢復能力;但它也增加了緩存的容量,加大了編解碼器的復雜性。與只使用一個(gè)參考幀相比,使用5個(gè)參考幀可以使碼率降低5~10%。
(4)去塊效應濾波器
它的作用是消除經(jīng)反量化和反變換后重建圖像中由于預測誤差產(chǎn)生的塊效應,即消除塊邊緣處的象素值跳變,從而改善圖像的主觀(guān)質(zhì)量,并減小預測誤差。中的去塊效應濾波器還可以根據圖像內容做出判斷,只對由于塊效應產(chǎn)生的象素值跳變進(jìn)行平滑,而對圖像中物體邊緣處的象素值不連續給予保留,以免造成邊緣模糊。與以往的去塊效應濾波器同的是,經(jīng)過(guò)濾波后的圖像將根據需要放在緩存中用于幀間預測,而不是僅僅在輸出重建圖像時(shí)用來(lái)改善主觀(guān)質(zhì)量。對于幀內預測,使用的是未經(jīng)過(guò)濾波的重建圖像。
3、整數變換
對幀內或幀間預測的殘差進(jìn)行DCT編碼。為了避免舍入誤差造成的編碼器和解碼器之間不匹配的問(wèn)題,對DCT的定義做了修改,使得變換僅用整數加減法和移位操作即可實(shí)現,這樣在不考慮量化影響的情況下,解碼端的輸出可以準確地恢復編碼端的輸入。當然,這樣做的代價(jià)是壓縮性能略微下降。此外,該變換是針對4×4塊進(jìn)行的,這也有助于減小塊效應。
為了進(jìn)一步利用圖像的空間相關(guān)性,在對色度分量的預測殘差和16×16幀內預測的預測殘差進(jìn)行上述整數DCT之后,標準還將每個(gè)4×4變換系數塊中的DC系數組成2×2或4×4大小的塊,進(jìn)一步做哈達瑪(Hadamard)變換。
4、熵編碼
對于Slice層以上的數據,采用Exp-Golomb碼,這是一種沒(méi)有自適應能力的VLC。而對于Slice層(含)以下的數據,如果是殘差,有兩種熵編碼方式:基于上下文的自適應變長(cháng)碼(CAVLC)和基于上下文的自適應二進(jìn)制算術(shù)編碼(CABAC);如果不是殘差,采用Exp-Golomb碼或CABAC編碼,視編碼器的設置而定。
(1)CAVLC
VLC的基本思想就是對出現頻率高的符號使用較短的碼字,而對出現頻率低的符號采用較長(cháng)的碼字。這樣可以使得平均碼長(cháng)最小。
在CAVLC中,采用若干VLC碼表,不同的碼表對應不同的概率模型。編碼器能夠根據上下文,如周?chē)鷫K的非零系數或系數的絕對值大小,在這些碼表中自動(dòng)地選擇,盡可能地與當前數據的概率模型匹配,從而實(shí)現上下文自適應的功能。
(2)CABAC
算術(shù)編碼是一種高效的熵編碼方案,其每個(gè)符號所對應的碼長(cháng)被認為是分數。由于對每一個(gè)符號的編碼都與以前編碼的結果有關(guān), 所以它考慮的是信源符號序列整體的概率特性,而不是單個(gè)符號的概率特性,從而能夠更大程度地逼近信源的極限熵,降低碼率。
中的CABAC實(shí)現了繞開(kāi)算術(shù)編碼中無(wú)限精度小數的表示問(wèn)題和對信源符號概率進(jìn)行估計的問(wèn)題。在CABAC中,每編碼一個(gè)二進(jìn)制符號,編碼器就會(huì )自動(dòng)調整對信源概率模型(用一個(gè)“狀態(tài)”來(lái)表示)的估計,隨后的二進(jìn)制符號就在這個(gè)新的概率模型基礎上進(jìn)行編碼。這樣的編碼器不需要信源統計特性的先驗知識,而是在編碼過(guò)程中自適應地估計。這使得CABAC有更大的靈活性,可以獲得更好的編碼性能—碼率降低大約10%。
5、SP Slice
SP Slice的主要目的是用于不同碼流的切換,也可用于碼流的隨機訪(fǎng)問(wèn)、快進(jìn)/快退和錯誤恢復。這里指的不同碼流,是指在不同比特率限制下對同一信源進(jìn)行編碼所產(chǎn)生的碼流。設切換前傳輸碼流中最后一幀為Al,切換后的目標碼流第一幀為B2(假設是P幀),由于B2的參考幀不存在,直接切換顯然會(huì )導致嚴重失真,而且這種失真會(huì )向后傳遞。簡(jiǎn)單的解決方法就是傳輸幀內編碼的B2,但是一般I幀的數據量很大,這種方法會(huì )造成傳輸碼率陡然增大。根據前面的假設,由于是對同一信源進(jìn)行編碼,盡管比特率不同,但切換前后的兩幀必然有相當大的相關(guān)性,所以編碼器可以將Al作為B2的參考幀,對B2進(jìn)行幀間預測,預測誤差就是SP Slice,然后通過(guò)傳遞SP Slice完成碼流的切換。與常規P幀不同的是,生成SP Slice所進(jìn)行的預測是在A(yíng)l和B2的變換域中進(jìn)行的。SP Slice要求切換后B2的圖像和直接傳送目標碼流時(shí)一樣。當然,如果切換的目標是毫不相關(guān)的另一碼流,SP Slice就不適用了。
評論