視頻編碼標準H.264的核心技術(shù)分析
標簽:熵編碼 H.264
H.264/AVC建議是目前最新的視頻壓縮標準。本文首先簡要介紹圖像通信中,視頻編碼標準H.261和H.263建議的基本原理和主要特點。
然后詳細分析研究了H.264建議中的關(guān)鍵技術(shù),包括幀內(nèi)幀間預(yù)測編碼、去塊效應(yīng)濾波、可變塊大小、多幀和亞像素運動估計、整數(shù)DCT變換以及新的熵編碼等新技術(shù)。
前言
圖像通信是近年來取得長足發(fā)展的現(xiàn)代通信技術(shù),圖像壓縮的進步則是通信發(fā)展中的重要組成部分。國際標準建議H.261的問世,是對圖像編碼近40年研究成果的總結(jié),解決了可視技術(shù)在通信中的應(yīng)用這一長期困擾人們的問題,覆蓋了整個窄帶ISDN上視聽業(yè)務(wù)的圖像編碼,極大地推動了會議電視、電視電話等圖像通訊方式的國際化和產(chǎn)業(yè)化。隨后,ITU在H.261建議的基礎(chǔ)上著手極低碼率圖像壓縮的標準,制定了H.263建議,以及最新的H.264/AVC。本文首先對H.261和H.263建議的基本原理進行闡述,然后對新標準H.264/AVC中的新技術(shù)進行說明,最后再對H.26x系列標準進行總結(jié)。
1 H.261建議的基本原理
每一個圖像壓縮標準的制定,都針對它最適合的應(yīng)用目標。H.261是最早定義的視頻編碼標準。它首次使用了運動補償預(yù)測編碼與DCT變換相結(jié)合的方法,其視頻編碼信號的傳輸速率從64kbps到1.92Mbps,故為p×64K視頻編碼器(p取值在1~31之間)。H.261主要應(yīng)用于ISDN網(wǎng)上的視頻會議系統(tǒng),定位在電路交換網(wǎng)絡(luò)系統(tǒng)。H.261編碼器的原理如圖1所示。
該建議主要采用CIF圖像分辨率格式和QCIF分辨率格式, 以解決不同制式通信間的兼容問題。對于每一個幀間編碼的宏塊,H.261采用運動補償?shù)膸g預(yù)測算法,消除電視圖像時間域上的相關(guān)性;對預(yù)測誤差進行DCT變換以消除圖像空間域上的相關(guān)性;然后自適應(yīng)量化DCT系數(shù),以充分利用人的視覺特性;接著進行熵編碼,以實現(xiàn)統(tǒng)計匹配編碼;最后采用輸出緩沖存儲器,以平滑數(shù)碼流,達到輸出數(shù)碼率保持恒定的目的。
該建議的圖像幀編碼模式包括I,P,B三類。I幀,采用幀內(nèi)編碼方式;P幀,采用幀間編碼方式,由I幀或前面的P幀進行運動補償,再對誤差估計進行編碼;B幀為雙向內(nèi)插幀不編碼傳輸,而由I幀和P幀或者P幀與PP幀插值重建。H.261不支持雙向運動預(yù)測以及GOP,每一個幀間編碼幀是以它的前一個已編碼幀為參考幀。
H.261標準的編碼數(shù)據(jù)結(jié)構(gòu)從高層到底層定義了四個層次,即幀層、片層、宏塊層和塊層。H.261的運動估值補償是以宏塊為單位進行的。對某宏塊是選擇幀間還是幀內(nèi)編碼方式,首先需要判斷。若它與匹配宏塊相關(guān)性強,則可采用幀間編碼方式,反之,則采用幀內(nèi)編碼方式。
2 H.263建議的基本原理
H.263標準是在H.261標準的基礎(chǔ)上建議的。它在低碼率條件下,能夠在不增加太多復(fù)雜度的情況下,獲得更高的圖像質(zhì)量。原則上它只需要一半的帶寬就可取得與H.261同樣的視頻質(zhì)量。目前,H.263標準已經(jīng)被各種可視電話終端協(xié)議廣泛采用。
H.263標準基本模式編碼器的結(jié)構(gòu)框圖與H.261標準相似。同樣,采用運動補償預(yù)測減少圖像的時間域冗余度;對運動補償預(yù)測的殘差場進行離散余弦變換(DCT)編碼;利用變長編碼(VCL)對量化的DCT系數(shù)、運動矢量以及附加信息進行熵編碼。
H.263在H.261建議的基礎(chǔ)上作了一定的改進。圖像尺寸采用QCIF格式,引入了sub-CIF格式,也允許使用CIF格式。采用8×8的DCT變換,宏塊統(tǒng)一使用同樣的量化步長進行量化,可以是一個宏塊使用一個運動矢量,也可以是宏塊的每個子塊各使用一個運動矢量,因而,具有塊運動補償能力,改善了幀間預(yù)測。運動矢量的x向和y向都支持半像素精度,運動估計的搜索窗大小被限制為[-16, +15.5],運動矢量進行差分預(yù)測編碼傳輸。編碼方式采用二維預(yù)測與VLC相結(jié)合的編碼;類似MPEG-1標準,將所有的圖像分為P幀和BP幀。
H.263建議為保證在極低碼率條件下獲得較好的圖像質(zhì)量,在H.261混合編碼的基礎(chǔ)上,還采用了無限制的運動矢量模式、語法基算術(shù)編碼模式、高級預(yù)測模式以及PB-幀模式等編碼技術(shù)。在無限制的運動矢量模式中取消了作為基準的像素必須在編碼圖像區(qū)域內(nèi)的限制。在高級預(yù)測模式中使用了重迭塊運動補償,而且還允許運動矢量穿過運動邊界。在PB-幀模式中,B幀通過前一譯碼P幀和當前的一個譯碼P幀進行雙向預(yù)測重建,這樣就提高了幀速率但并未明顯增加比特數(shù)。以上三種方式主要是為了改善幀間預(yù)測?;谡Z法算術(shù)編碼方式的采用是為了進一步降低傳輸?shù)谋忍芈?。在這種方式中,所有的變長碼的編譯碼運算都用算術(shù)編譯的運算來代替。提供這些高級編碼模式,使得應(yīng)用者可以在壓縮性能和復(fù)雜度之間進行均衡和取舍。
3 H.264標準的核心技術(shù)及其特點
H.264/AVC是ITU-T和ISO/IEC聯(lián)合制定的最新編碼標準,它最先由ITU-T的VCEG于1997年提出,目標是提出一種更高性能(相對于當時的H.263)的視頻編碼標準。
與先前的一些編碼標準相比,H.264標準繼承了H.263和MPEG1/2/4視頻標準協(xié)議的優(yōu)點,但在結(jié)構(gòu)上并沒有變化,只是在各個主要的功能模塊內(nèi)部使用了一些先進的技術(shù),提高了編碼效率。其主要表現(xiàn)在:編碼不再是基于8×8的塊進行,而是在4×4大小的快上,進行殘差的變換編碼。所采用的變換編碼方式也不再是DCT變換,而是一種整數(shù)變換編碼。采用了編碼效率更高的上下文自適應(yīng)二進制算術(shù)編碼(CABAC),同時與之相應(yīng)的量化過程也有區(qū)別。H.264標準具有算法簡單易于實現(xiàn)、運算精度高且不溢出、運算速度快、占用內(nèi)存小、消弱塊效應(yīng)等優(yōu)點,是一種更為實用有效的圖像編碼標準。
下面介紹H.264/AVC標準在先前標準之上的新技術(shù)。H.264 標準仍采用圖像預(yù)測和變換編碼相結(jié)合的編碼結(jié)構(gòu),其編碼器的基本結(jié)構(gòu)如圖2所示:
編碼器的工作過程可根據(jù)數(shù)據(jù)流分為前向通道和重建通道。輸入幀F(xiàn)n的編碼,是對原始圖像16×16像素的宏塊進行編碼。宏塊編碼分為幀內(nèi)編碼和幀間編碼。在任何情況下,預(yù)測宏塊P都由重建幀獲得。在幀內(nèi)編碼模式中,P由當前幀中的已編碼宏塊經(jīng)解碼、重構(gòu)預(yù)測獲得,如上圖中的uF’n。在幀間編碼模式下,P由一個或多個參考幀經(jīng)運動補償預(yù)測獲得,如F’n-1。以預(yù)測宏塊P與當前宏塊Fn的差值作為殘差宏塊Dn,經(jīng)變換、量化后得到一串變換參數(shù)X。參數(shù)X需要進行兩方面的處理,一是重排序和熵變換處理,整個過程沒有反饋分量,故稱為前向通道;二是反量化和逆變換處理,產(chǎn)生宏塊D’n,然后與宏塊P相加得到重構(gòu)宏塊uF’n,再經(jīng)過一系列處理得到重建的參考幀F(xiàn)’n,用于下一幀的運動估計,因此稱為重建通道。
3.1 幀內(nèi)預(yù)測編碼模式
在視頻編碼中,通常的方法是把整幅圖像分為若干宏塊,然后對每一個宏塊進行編碼。在編碼時采用Intra或Inter兩種模式。在Intra模式中通常直接對宏塊進行DCT變換,對變換系數(shù)進行熵編碼。這樣做在一定程度上消除了幀內(nèi)的空間冗余度,但是由于DCT只是利用了宏塊內(nèi)部像素之間的相關(guān)性,而沒有考慮相鄰宏塊間的相關(guān)性。H.264引入了Intra預(yù)測的方法,利用相鄰宏塊的相關(guān)性對待編碼的宏塊進行預(yù)測,對預(yù)測殘差進行變換編碼,以消除空間冗余。值得注意的是,以前的標準是在變換域中進行預(yù)測,而H.264是直接在空間域中進行預(yù)測。
3.2 幀間預(yù)測編碼模式
H.264在運動估計中采了許多新技術(shù),主要包括可變塊大小、多幀運動估計、亞像素精度的運動估計以及去塊效應(yīng)濾波等。
⑴ 去塊效應(yīng)濾波
它的作用就是用來消除解碼圖像中的塊效應(yīng)。塊效應(yīng)產(chǎn)生的原因是各個宏塊分別進行量化,這樣在相鄰宏塊的交界處,因量化步長不同而導(dǎo)致原本很接近的像素值重構(gòu)后產(chǎn)生了較大的差異,形成明顯的塊邊界。去塊效應(yīng)濾波是在4×4的塊邊界上濾波,使塊邊界趨于平滑。
⑵ 可變塊大小塊大小對運動估計的效果是有影響的。將宏塊分割成不同尺寸的運動補償子塊稱作樹狀結(jié)構(gòu)運動補償。宏塊的分割和子宏塊的分割各包括四種類型,如圖3所示。較小的塊可以使運動估計更精確,產(chǎn)生較小的運動殘差,降低碼率。在H.264建議的不同大小的塊選擇中,可以看出,一個宏塊最多可以攜帶16個不同的運動矢量。配合多幀運動估計,同一宏塊中的不同塊還可以使用不同的參考幀來進行預(yù)測。
圖3 運動補償?shù)暮陦K分割
頂端:宏塊的分割
底端:宏塊的子分割
⑶ 多幀運動估計
與以前視頻壓縮標準中使用的單幀運動估計技術(shù)相比,H.264使用的多幀運動估計具有更高的效率,更強的差錯穩(wěn)健性。所謂多幀運動估計是指使用一個或多個參考幀來估計運動矢量,可以防止因某個幀出現(xiàn)錯誤而影響到后面的幀。但是,這種估計需要更大的內(nèi)存,更高的運算復(fù)雜度。
⑷亞像素精度的運動估計
在H.264中,運動估計的精度由H.263中的半像素提高到像素,并且把像素作為可選項。與半像素精度的運動估計一樣, 像素精度的運動估計使用內(nèi)插得到半像素和像素位置的點。
在H.264的幀間預(yù)測編碼中,仍可以繼續(xù)采用三步搜索算法找出與當前宏塊最匹配的塊。在塊匹配中,塊的位移與塊的中心或塊中任何一點的位移是等價的。因此,塊的位移可以理解為中心點的位移。在三步算法中,搜索范圍為 7,即在上一幀以當前子塊為原點,將當前子塊在其上下左右距離為7的范圍內(nèi)按一定規(guī)則移動,每移動到一個位置,取出同樣大小的子塊與當前子塊進行匹配計算。具體分為以下三步:
①以當前子塊為中心,以4為步幅,將圖4中標出的9個位置為中心的子塊與當前子塊進行匹配,求出最佳匹配的子塊中心位置。
②以①中求出的最佳子塊為中心,例如,x=4,y=0,以2為步幅,將圖中的9個位置為中心的子塊與當前子塊進行匹配,求出最佳匹配的子塊中心位置。
③以②中求出的最佳子塊為中心,例如,x=4,y=0,以1為步幅,將圖中的9個位置為中心的子塊與當前子塊進行匹配,求出最佳匹配的子塊中心位置,它與當前子塊中心的位置偏移量即為估計的位移量。
3.3 整數(shù)DCT變換
H.264標準中使用4×4的整數(shù)DCT變換作為殘差宏塊的基本變換,這種變換的對象是經(jīng)過運動補償預(yù)測或者幀內(nèi)預(yù)測后的包含殘差數(shù)據(jù)的4×4塊。這類變換是基于DCT變換,但又不同于DCT。
由于DCT變換是實數(shù),量化時需對系數(shù)進行四舍五入,從而影響了運算的精度。同時,傳統(tǒng)的DCT存在不匹配問題,產(chǎn)生參考幀的偏移,直接影響到重建圖像的質(zhì)量。
H.264建議的整數(shù)DCT變換的所有操作都使用整數(shù)算法,變換的核心部分主要是加法和移位。在整個變換和量化的過程中,只執(zhí)行16bit的整數(shù)算法和一次乘法操作。只要在H.264建議基礎(chǔ)上正確使用相應(yīng)的反變化,編碼器和解碼器就不會出現(xiàn)不匹配現(xiàn)象。它的正反變換矩陣分別為
其中的系數(shù)基本上都是整數(shù),1/2可以用移位代替。在變換中由于乘法均可由移位運算代替,因此,復(fù)雜度降低的同時,也解決了精度問題。
H.264中的宏塊大小為16×16,對其中每個4×4大小的塊進行上述4×4的DCT變換后,得到16個4×4的變換矩陣。為了進一步提高壓縮效率,該建議還允許把每個4×4的變換矩陣中的直流分量DC,單獨取出組成一新的4×4矩陣,對此矩陣進行Hardamard變換。宏塊的數(shù)據(jù)傳送順序如圖5所示。
3.4 熵編碼
H.264建議同時采用了兩種熵編碼模式:基于上下文的二進制算術(shù)編碼CABAC,以及可變長編碼VLC。VLC編碼又包括基于上下文的自適應(yīng)可變長編碼CAVLC。
CABAC方式利用了算術(shù)編碼的方法,一個符號可以用少于1bit來表示。根據(jù)無誤碼的假設(shè)條件下的試驗所得的數(shù)據(jù)可知,在所有碼率下,CABAC的表現(xiàn)都強于CAVLC。但是CAVLC的抗誤碼性要強于CABAC,且運算的復(fù)雜度也遠遠低于CABAC。因此,H.264規(guī)定在Baseline Profile 中采用CAVLC,而在Main Profile 中采用CABAC進行熵編碼。
4 小結(jié)
與以往的視頻編碼標準相比,H.264建議在其系統(tǒng)結(jié)構(gòu)、運動估計和運動補償、宏塊的變換和量化以及熵編碼等各方面都有明顯的提高,具有更高的編碼效率和更強的網(wǎng)絡(luò)適應(yīng)性。在相同的圖象質(zhì)量下,H.264/AVC的算法比以前的標準如H.263或MPEG-4節(jié)約了50%左右的碼率。H.264的不同Profile既可以應(yīng)用于實時通信,也可應(yīng)用于對時延要求不高的其他應(yīng)用中。此外,該建議增加了NAL層,負責將編碼器的輸出碼流適配到各種類型的網(wǎng)絡(luò)中,從而對網(wǎng)絡(luò)傳輸具有更好的支持功能。同時,它具有較強的抗誤碼特性,可適應(yīng)丟包率高、干擾嚴重的無線信道中的視頻傳輸。因此,H.264支持不同網(wǎng)絡(luò)資源下的分級編碼傳輸,從而獲得平穩(wěn)的圖像質(zhì)量,能適應(yīng)于不同網(wǎng)絡(luò)中的視頻傳輸,網(wǎng)絡(luò)親和性好。
在今天的Internet,對多媒體服務(wù)的需求呈現(xiàn)快速增長的趨勢。由于受無線網(wǎng)絡(luò)有限的帶寬資源和傳輸能力的限制,目前市場上最終用戶大部分是按照流量付費的方式來使用無線網(wǎng)絡(luò)數(shù)據(jù)服務(wù)的,提高壓縮效率是無線視頻和多媒體應(yīng)用的主要目標。 所以H.264/ AVC編碼標準成為在多媒體信息服務(wù)(MMS)、包交換流服務(wù)(PSS)和會話應(yīng)用方面最有競爭力的候選標準。同時,H.264/AVC沒有任何對所有權(quán)的限制,是一個公共的開放的標準。因此,增強了各個生產(chǎn)商在制造工藝中對低成本的競爭,使得產(chǎn)品價格迅速下降,讓這項技術(shù)可以為更多的人服務(wù)。