視頻編碼標(biāo)準(zhǔn)H.264的核心技術(shù)分析
H.264/AVC建議是目前最新的視頻壓縮標(biāo)準(zhǔn)。本文首先簡(jiǎn)要介紹圖像通信中,視頻編碼標(biāo)準(zhǔn)H.261和H.263建議的基本原理和主要特點(diǎn)。
然后詳細(xì)分析研究了H.264建議中的關(guān)鍵技術(shù),包括幀內(nèi)幀間預(yù)測(cè)編碼、去塊效應(yīng)濾波、可變塊大小、多幀和亞像素運(yùn)動(dòng)估計(jì)、整數(shù)DCT變換以及新的熵編碼等新技術(shù)。
前言
圖像通信是近年來(lái)取得長(zhǎng)足發(fā)展的現(xiàn)代通信技術(shù),圖像壓縮的進(jìn)步則是通信發(fā)展中的重要組成部分。國(guó)際標(biāo)準(zhǔn)建議H.261的問(wèn)世,是對(duì)圖像編碼近40年研究成果的總結(jié),解決了可視技術(shù)在通信中的應(yīng)用這一長(zhǎng)期困擾人們的問(wèn)題,覆蓋了整個(gè)窄帶ISDN上視聽業(yè)務(wù)的圖像編碼,極大地推動(dòng)了會(huì)議電視、電視電話等圖像通訊方式的國(guó)際化和產(chǎn)業(yè)化。隨后,ITU在H.261建議的基礎(chǔ)上著手極低碼率圖像壓縮的標(biāo)準(zhǔn),制定了H.263建議,以及最新的H.264/AVC。本文首先對(duì)H.261和H.263建議的基本原理進(jìn)行闡述,然后對(duì)新標(biāo)準(zhǔn)H.264/AVC中的新技術(shù)進(jìn)行說(shuō)明,最后再對(duì)H.26x系列標(biāo)準(zhǔn)進(jìn)行總結(jié)。
1 H.261建議的基本原理
每一個(gè)圖像壓縮標(biāo)準(zhǔn)的制定,都針對(duì)它最適合的應(yīng)用目標(biāo)。H.261是最早定義的視頻編碼標(biāo)準(zhǔn)。它首次使用了運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)編碼與DCT變換相結(jié)合的方法,其視頻編碼信號(hào)的傳輸速率從64kbps到1.92Mbps,故為p×64K視頻編碼器(p取值在1~31之間)。H.261主要應(yīng)用于ISDN網(wǎng)上的視頻會(huì)議系統(tǒng),定位在電路交換網(wǎng)絡(luò)系統(tǒng)。H.261編碼器的原理如圖1所示。
該建議主要采用CIF圖像分辨率格式和QCIF分辨率格式, 以解決不同制式通信間的兼容問(wèn)題。對(duì)于每一個(gè)幀間編碼的宏塊,H.261采用運(yùn)動(dòng)補(bǔ)償?shù)膸g預(yù)測(cè)算法,消除電視圖像時(shí)間域上的相關(guān)性;對(duì)預(yù)測(cè)誤差進(jìn)行DCT變換以消除圖像空間域上的相關(guān)性;然后自適應(yīng)量化DCT系數(shù),以充分利用人的視覺(jué)特性;接著進(jìn)行熵編碼,以實(shí)現(xiàn)統(tǒng)計(jì)匹配編碼;最后采用輸出緩沖存儲(chǔ)器,以平滑數(shù)碼流,達(dá)到輸出數(shù)碼率保持恒定的目的。
該建議的圖像幀編碼模式包括I,P,B三類。I幀,采用幀內(nèi)編碼方式;P幀,采用幀間編碼方式,由I幀或前面的P幀進(jìn)行運(yùn)動(dòng)補(bǔ)償,再對(duì)誤差估計(jì)進(jìn)行編碼;B幀為雙向內(nèi)插幀不編碼傳輸,而由I幀和P幀或者P幀與PP幀插值重建。H.261不支持雙向運(yùn)動(dòng)預(yù)測(cè)以及GOP,每一個(gè)幀間編碼幀是以它的前一個(gè)已編碼幀為參考幀。
H.261標(biāo)準(zhǔn)的編碼數(shù)據(jù)結(jié)構(gòu)從高層到底層定義了四個(gè)層次,即幀層、片層、宏塊層和塊層。H.261的運(yùn)動(dòng)估值補(bǔ)償是以宏塊為單位進(jìn)行的。對(duì)某宏塊是選擇幀間還是幀內(nèi)編碼方式,首先需要判斷。若它與匹配宏塊相關(guān)性強(qiáng),則可采用幀間編碼方式,反之,則采用幀內(nèi)編碼方式。
2 H.263建議的基本原理
H.263標(biāo)準(zhǔn)是在H.261標(biāo)準(zhǔn)的基礎(chǔ)上建議的。它在低碼率條件下,能夠在不增加太多復(fù)雜度的情況下,獲得更高的圖像質(zhì)量。原則上它只需要一半的帶寬就可取得與H.261同樣的視頻質(zhì)量。目前,H.263標(biāo)準(zhǔn)已經(jīng)被各種可視電話終端協(xié)議廣泛采用。
H.263標(biāo)準(zhǔn)基本模式編碼器的結(jié)構(gòu)框圖與H.261標(biāo)準(zhǔn)相似。同樣,采用運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)減少圖像的時(shí)間域冗余度;對(duì)運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)的殘差場(chǎng)進(jìn)行離散余弦變換(DCT)編碼;利用變長(zhǎng)編碼(VCL)對(duì)量化的DCT系數(shù)、運(yùn)動(dòng)矢量以及附加信息進(jìn)行熵編碼。
H.263在H.261建議的基礎(chǔ)上作了一定的改進(jìn)。圖像尺寸采用QCIF格式,引入了sub-CIF格式,也允許使用CIF格式。采用8×8的DCT變換,宏塊統(tǒng)一使用同樣的量化步長(zhǎng)進(jìn)行量化,可以是一個(gè)宏塊使用一個(gè)運(yùn)動(dòng)矢量,也可以是宏塊的每個(gè)子塊各使用一個(gè)運(yùn)動(dòng)矢量,因而,具有塊運(yùn)動(dòng)補(bǔ)償能力,改善了幀間預(yù)測(cè)。運(yùn)動(dòng)矢量的x向和y向都支持半像素精度,運(yùn)動(dòng)估計(jì)的搜索窗大小被限制為[-16, +15.5],運(yùn)動(dòng)矢量進(jìn)行差分預(yù)測(cè)編碼傳輸。編碼方式采用二維預(yù)測(cè)與VLC相結(jié)合的編碼;類似MPEG-1標(biāo)準(zhǔn),將所有的圖像分為P幀和BP幀。
H.263建議為保證在極低碼率條件下獲得較好的圖像質(zhì)量,在H.261混合編碼的基礎(chǔ)上,還采用了無(wú)限制的運(yùn)動(dòng)矢量模式、語(yǔ)法基算術(shù)編碼模式、高級(jí)預(yù)測(cè)模式以及PB-幀模式等編碼技術(shù)。在無(wú)限制的運(yùn)動(dòng)矢量模式中取消了作為基準(zhǔn)的像素必須在編碼圖像區(qū)域內(nèi)的限制。在高級(jí)預(yù)測(cè)模式中使用了重迭塊運(yùn)動(dòng)補(bǔ)償,而且還允許運(yùn)動(dòng)矢量穿過(guò)運(yùn)動(dòng)邊界。在PB-幀模式中,B幀通過(guò)前一譯碼P幀和當(dāng)前的一個(gè)譯碼P幀進(jìn)行雙向預(yù)測(cè)重建,這樣就提高了幀速率但并未明顯增加比特?cái)?shù)。以上三種方式主要是為了改善幀間預(yù)測(cè)。基于語(yǔ)法算術(shù)編碼方式的采用是為了進(jìn)一步降低傳輸?shù)谋忍芈?。在這種方式中,所有的變長(zhǎng)碼的編譯碼運(yùn)算都用算術(shù)編譯的運(yùn)算來(lái)代替。提供這些高級(jí)編碼模式,使得應(yīng)用者可以在壓縮性能和復(fù)雜度之間進(jìn)行均衡和取舍。
3 H.264標(biāo)準(zhǔn)的核心技術(shù)及其特點(diǎn)
H.264/AVC是ITU-T和ISO/IEC聯(lián)合制定的最新編碼標(biāo)準(zhǔn),它最先由ITU-T的VCEG于1997年提出,目標(biāo)是提出一種更高性能(相對(duì)于當(dāng)時(shí)的H.263)的視頻編碼標(biāo)準(zhǔn)。
與先前的一些編碼標(biāo)準(zhǔn)相比,H.264標(biāo)準(zhǔn)繼承了H.263和MPEG1/2/4視頻標(biāo)準(zhǔn)協(xié)議的優(yōu)點(diǎn),但在結(jié)構(gòu)上并沒(méi)有變化,只是在各個(gè)主要的功能模塊內(nèi)部使用了一些先進(jìn)的技術(shù),提高了編碼效率。其主要表現(xiàn)在:編碼不再是基于8×8的塊進(jìn)行,而是在4×4大小的快上,進(jìn)行殘差的變換編碼。所采用的變換編碼方式也不再是DCT變換,而是一種整數(shù)變換編碼。采用了編碼效率更高的上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC),同時(shí)與之相應(yīng)的量化過(guò)程也有區(qū)別。H.264標(biāo)準(zhǔn)具有算法簡(jiǎn)單易于實(shí)現(xiàn)、運(yùn)算精度高且不溢出、運(yùn)算速度快、占用內(nèi)存小、消弱塊效應(yīng)等優(yōu)點(diǎn),是一種更為實(shí)用有效的圖像編碼標(biāo)準(zhǔn)。
下面介紹H.264/AVC標(biāo)準(zhǔn)在先前標(biāo)準(zhǔn)之上的新技術(shù)。H.264 標(biāo)準(zhǔn)仍采用圖像預(yù)測(cè)和變換編碼相結(jié)合的編碼結(jié)構(gòu),其編碼器的基本結(jié)構(gòu)如圖2所示:
編碼器的工作過(guò)程可根據(jù)數(shù)據(jù)流分為前向通道和重建通道。輸入幀F(xiàn)n的編碼,是對(duì)原始圖像16×16像素的宏塊進(jìn)行編碼。宏塊編碼分為幀內(nèi)編碼和幀間編碼。在任何情況下,預(yù)測(cè)宏塊P都由重建幀獲得。在幀內(nèi)編碼模式中,P由當(dāng)前幀中的已編碼宏塊經(jīng)解碼、重構(gòu)預(yù)測(cè)獲得,如上圖中的uF’n。在幀間編碼模式下,P由一個(gè)或多個(gè)參考幀經(jīng)運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)獲得,如F’n-1。以預(yù)測(cè)宏塊P與當(dāng)前宏塊Fn的差值作為殘差宏塊Dn,經(jīng)變換、量化后得到一串變換參數(shù)X。參數(shù)X需要進(jìn)行兩方面的處理,一是重排序和熵變換處理,整個(gè)過(guò)程沒(méi)有反饋分量,故稱為前向通道;二是反量化和逆變換處理,產(chǎn)生宏塊D’n,然后與宏塊P相加得到重構(gòu)宏塊uF’n,再經(jīng)過(guò)一系列處理得到重建的參考幀F(xiàn)’n,用于下一幀的運(yùn)動(dòng)估計(jì),因此稱為重建通道。
評(píng)論