新聞中心

h.264編碼技術(shù)

作者: 時(shí)間:2012-08-24 來源:網(wǎng)絡(luò) 收藏

H.264是由ITU-T(ITU Telecommunication Standardization Sector,國際電信聯(lián)盟遠(yuǎn)程通信標(biāo)準(zhǔn)化組)視頻專家組(VCEG)和ISO/IEC動(dòng)態(tài)圖像專家組(MPEG)聯(lián)合組成的聯(lián)合視頻組 (JVT,Joint Video Team)提出的高度壓縮數(shù)字視頻編解碼器標(biāo)準(zhǔn)。H.264是ITU-T以H.26x系列為名稱命名的標(biāo)準(zhǔn)之一,同時(shí)AVC是ISO/IEC MPEG一方的稱呼。這一標(biāo)準(zhǔn)正式成為國際標(biāo)準(zhǔn)是2003年3月在泰國Pattaya舉行的JVT第7次會(huì)議上通過的。由于該標(biāo)準(zhǔn)是由兩個(gè)不同的組織共同 制定的,因此有兩個(gè)不同的名稱:在ITU-T中,它的名字叫H.264;而在ISO/IEC中,它被稱為MPEG-4的第10部分,即高級(jí)視頻 (AVC)。

本文引用地址:http://m.butianyuan.cn/article/165001.htm

H.264的特點(diǎn)
H.264在框架上還是沿用以往的MC-DCT結(jié)構(gòu),即運(yùn)動(dòng)補(bǔ)償加變換編碼的混合(hybrid)結(jié)構(gòu),因此它保留了一些先前標(biāo)準(zhǔn)的特點(diǎn),如不受限制 的運(yùn)動(dòng)矢量(unrestricted motion vectors),對(duì)運(yùn)動(dòng)矢量的中值預(yù)測(median prediction)等。然而,以下介紹的使得H.264比之前的視頻編碼標(biāo)準(zhǔn)在性能上有了很大的提高。應(yīng)當(dāng)指出的是,這個(gè)提高不是單靠某一項(xiàng) 實(shí)現(xiàn)的,而是由各種不同帶來的小的性能改進(jìn)而共同產(chǎn)生的。

1. 幀內(nèi)預(yù)測
對(duì)I幀的編碼是通過利用空間相關(guān)性而非時(shí)間相關(guān)性實(shí)現(xiàn)的。以前的標(biāo)準(zhǔn)只利用了一個(gè)宏塊(macroblock)內(nèi)部的相關(guān)性,而忽視了宏塊之間的相關(guān)性, 所以一般編碼后的數(shù)據(jù)量較大。為了能進(jìn)一步利用空間相關(guān)性,H.264引入了幀內(nèi)預(yù)測以提高壓縮效率。簡單地說,幀內(nèi)預(yù)測編碼就是用周圍鄰近的像素值來預(yù) 測當(dāng)前的像素值,然后對(duì)預(yù)測誤差進(jìn)行編碼。這種預(yù)測是基于塊的,對(duì)于亮度分量(1uma),塊的大小可以在16×16和4×4之間選擇,16×16塊有4 種預(yù)測模式,4×4塊有9種預(yù)測模式;對(duì)于色度分量(chroma),預(yù)測是對(duì)整個(gè)8×8塊進(jìn)行的,有4種預(yù)測模式。除了DC預(yù)測外,其他每種預(yù)測模式對(duì) 應(yīng)不同方向上的預(yù)測。

2. 幀間預(yù)測
與以往的標(biāo)準(zhǔn)一樣,H.264使用運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償來消除時(shí)間冗余,但是它具有以下五個(gè)不同的特點(diǎn):
(1)預(yù)測時(shí)所用塊的大小可變
由于基于塊的運(yùn)動(dòng)模型假設(shè)塊內(nèi)的所有像素都做了相同的平移,在運(yùn)動(dòng)比較劇烈或者運(yùn)動(dòng)物體的邊緣處這一假設(shè)會(huì)與實(shí)際出入較大,從而導(dǎo)致較大的預(yù)測誤差,這時(shí) 減小塊的大小可以使假設(shè)在小的塊中依然成立。另外小的塊所造成的塊效應(yīng)相對(duì)也小,所以一般來說小的塊可以提高預(yù)測的效果。為此,H.264一共采用了7種 方式對(duì)一個(gè)宏塊進(jìn)行分割,每種方式下塊的大小和形狀都不相同,這就使編碼器可以根據(jù)圖像的內(nèi)容選擇最好的預(yù)測模式。與僅使用16×16塊進(jìn)行預(yù)測相比,使 用不同大小和形狀的塊可以使碼率節(jié)省15%以上。
(2)更精細(xì)的預(yù)測精度
在H.264中,Luma分量的運(yùn)動(dòng)矢量(MV)使用1/4像素精度。Chroma分量的MV由luma MV導(dǎo)出,由于chroma分辨率是luma的一半(對(duì)4:2:0),所以其MV精度將為1/8,這也就是說1個(gè)單位的chroma MV所代表的位移僅為chroma分量取樣點(diǎn)間距離的1/8。如此精細(xì)的預(yù)測精度較之整數(shù)精度可以使碼率節(jié)省超過20%。
(3)多參考幀
H.264支持多參考幀預(yù)測(multiple reference frames),即可以有多于一個(gè)(最多5個(gè))的在當(dāng)前幀之前解碼的幀可以作為參考幀產(chǎn)生對(duì)當(dāng)前幀的預(yù)測(motion-compensated prediction)。這適用于視頻序列中含有周期性運(yùn)動(dòng)的情況。采用這一技術(shù),可以改善運(yùn)動(dòng)估計(jì)(ME)的性能,提高H.264解碼器的錯(cuò)誤恢復(fù)能 力,但同時(shí)也增加了緩存的容量以及編解碼器的復(fù)雜性。不過,H.264的提出是基于半導(dǎo)體技術(shù)的飛速發(fā)展,因此這兩個(gè)負(fù)擔(dān)在不久的將來會(huì)變得微不足道。較 之只使用一個(gè)參考幀,使用5個(gè)參考幀可以節(jié)省碼率5~10%。
(4)抗塊效應(yīng)濾波器
抗塊效應(yīng)濾波器(Deblocking Filter),它的作用是消除經(jīng)反量化和反變換后重建圖像中由于預(yù)測誤差產(chǎn)生的塊效應(yīng),即塊邊緣處的像素值跳變,從而一來改善圖像的主觀質(zhì)量,二來減少 預(yù)測誤差。H.264中的Deblocking Filter還能夠根據(jù)圖像內(nèi)容做出判斷,只對(duì)由于塊效應(yīng)產(chǎn)生的像素值跳變進(jìn)行平滑,而對(duì)圖像中物體邊緣處的像素值不連續(xù)給予保留,以免造成邊緣模糊。與 以往的Deblocking Filter不同的是,經(jīng)過濾波后的圖像將根據(jù)需要放在緩存中用于幀間預(yù)測,而不是僅僅在輸出重建圖像時(shí)用來改善主觀質(zhì)量,也就是說該濾波器位于解碼環(huán)中 而非解碼環(huán)的輸出外,因而它又稱作Loop Filter。需要注意的是,對(duì)于幀內(nèi)預(yù)測,使用的是未經(jīng)過濾波的重建圖像。

3.整數(shù)變換
H.264對(duì)幀內(nèi)或幀間預(yù)測的殘差(residual)進(jìn)行DCT變換編碼。為了克服浮點(diǎn)運(yùn)算帶來的硬件設(shè)計(jì)復(fù)雜,更重要的是舍入誤差造成的編碼器和解碼 器之間不匹配(mismatch)的問題,新標(biāo)準(zhǔn)對(duì)DCT的定義做了修改,使得變換僅用整數(shù)加減法和移位操作即可實(shí)現(xiàn),這樣在不考慮量化影響的情況下,解 碼端的輸出可以準(zhǔn)確地恢復(fù)編碼端的輸入。當(dāng)然這樣做的代價(jià)是壓縮性能的略微下降。此外,該變換是針對(duì)4×4塊進(jìn)行的,這也有助于減少塊效應(yīng)。為了進(jìn)一步利 用圖像的空間相關(guān)性,在對(duì)chroma的預(yù)測殘差和16×16幀內(nèi)預(yù)測的預(yù)測殘差進(jìn)行上述整數(shù)DCT變換之后,標(biāo)準(zhǔn)還將每個(gè)4×4變換系數(shù)塊中的DC系數(shù) 組成2×2或4×4大小的塊,進(jìn)一步做哈達(dá)瑪(Hadamard)變換。

4.熵編碼
如果是Slice層預(yù)測殘差,H.264有兩種熵編碼的方式:基于上下文的自適應(yīng)變長碼(Context-based Adaptive Variable Length Coding,CAVLC)和基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼(Context-based Adaptive Binary Arithmetic Coding,CABAC);如果不是預(yù)測殘差,H.264采用Exp-Golomb碼或CABAC編碼,視編碼器的設(shè)置而定。
(1)CAVLC
VLC的基本思想就是對(duì)出現(xiàn)頻率大的符號(hào)使用較短的碼字,而出現(xiàn)頻率小的符號(hào)采用較長的碼字。這樣可以使得平均碼長最小。在CAVLC中,H.264采用 若干VLC碼表,不同的碼表對(duì)應(yīng)不同的概率模型。編碼器能夠根據(jù)上下文,如周圍塊的非零系數(shù)或系數(shù)的絕對(duì)值大小,在這些碼表中自動(dòng)地選擇,最大可能地與當(dāng) 前數(shù)據(jù)的概率模型匹配,從而實(shí)現(xiàn)了上下文自適應(yīng)的功能。
(2)CABAC
算術(shù)編碼是一種高效的熵編碼方案,其每個(gè)符號(hào)所對(duì)應(yīng)的碼長被認(rèn)為是分?jǐn)?shù)。由于對(duì)每一個(gè)符號(hào)的編碼都與以前編碼的結(jié)果有關(guān),所以它考慮的是信源符號(hào)序列整體 的概率特性,而不是單個(gè)符號(hào)的概率特性,因而它能夠更大程度地逼近信源的極限熵 ,降低碼率。為了繞開算術(shù)編碼中無限精度小數(shù)的表示問題以及對(duì)信源符號(hào)概率進(jìn)行估計(jì),現(xiàn)代的算術(shù)編碼多以有限狀態(tài)機(jī)的方式實(shí)現(xiàn),H.264的CABAC便 是一個(gè)例子,其他的例子還有JPEG2000。在CABAC中,每編碼一個(gè)二進(jìn)制符號(hào),編碼器就會(huì)自動(dòng)調(diào)整對(duì)信源概率模型(用一個(gè)“狀態(tài)”來表示)的估 計(jì),隨后的二進(jìn)制符號(hào)就在這個(gè)更新了的概率模型基礎(chǔ)上進(jìn)行編碼。這樣的編碼器不需要信源統(tǒng)計(jì)特性的先驗(yàn)知識(shí),而是在編碼過程中自適應(yīng)地估計(jì)。顯然,與 CAVLC編碼中預(yù)先設(shè)定好若干概率模型的方法比較起來,CABAC有更大的靈活性,可以獲得更好的編碼性能——大約10%碼率的降低。以上介紹的特點(diǎn)都 是用來提高H.264的編碼性能的,此外H.264還具有很好的錯(cuò)誤恢復(fù)能力(error resilience)和網(wǎng)絡(luò)適應(yīng)性(network adaptability),下面介紹其中的一些特點(diǎn)。

5. SP Slice
SP Slice的主要目的是用于不同碼流的切換(switch),此外也可用于碼流的隨機(jī)訪問、快進(jìn)快退和錯(cuò)誤恢復(fù)。這里所說的不同碼流是指在不同比特率限制 下對(duì)同一信源進(jìn)行編碼所產(chǎn)生的碼流。設(shè)切換前傳輸碼流中的最后一幀為Al,切換后的目標(biāo)碼流第一幀為B2(假設(shè)是P幀),由于B2的參考幀不存在,所以直 接切換顯然會(huì)導(dǎo)致很大的失真,而且這種失真會(huì)向后傳遞。一種簡單的解決方法就是傳輸幀內(nèi)編碼的B2,但是一般I幀的數(shù)據(jù)量很大,這種方法會(huì)造成傳輸碼率的 陡然增加。根據(jù)前面的假設(shè),由于是對(duì)同一信源進(jìn)行編碼,盡管比特率不同,但切換前后的兩幀必然有很多相關(guān)性,所以編碼器可以將Al作為B2的參考幀,對(duì) B2進(jìn)行幀間預(yù)測,預(yù)測誤差就是SP Slice,然后通過傳遞SP Slice完成碼流的切換。與常規(guī)P幀不同的是,生成SP Slice所進(jìn)行的預(yù)測是在Al和B2的變換域中進(jìn)行的。SP Slice要求切換后B2的圖像應(yīng)和直接傳送目標(biāo)碼流時(shí)一樣。顯然,如果切換的目標(biāo)是毫不相關(guān)的另一碼流,SP Slice就不適用了。

6.靈活的宏塊排序
靈活的宏塊排序(flexible macroblock ordering,F(xiàn)MO),是指將一幅圖像中的宏塊分成幾個(gè)組,分別獨(dú)立編碼,某一個(gè)組中的宏塊不一定是在常規(guī)的掃描順序下前后連續(xù),而可能是隨機(jī)地分 散在圖像中的各個(gè)不同位置。這樣在傳輸時(shí)如果發(fā)生錯(cuò)誤,某個(gè)組中的某些宏塊不能正確解碼時(shí),解碼器仍然可以根據(jù)圖像的空間相關(guān)性依靠其周圍正確譯碼的像素 對(duì)其進(jìn)行恢復(fù)。

H.264編碼技術(shù)
H.264的目標(biāo)應(yīng)用涵蓋了目前大部分的視頻服務(wù),如有線電視遠(yuǎn)程監(jiān)控、交互媒體、數(shù)字電視、視頻會(huì)議、視頻點(diǎn)播、流媒體服務(wù)等。H.264為解決不同應(yīng) 用中的網(wǎng)絡(luò)傳輸?shù)牟町?。定義了兩層:視頻編碼層(VCL:Video Coding Layer)負(fù)責(zé)高效的視頻內(nèi)容表示,網(wǎng)絡(luò)提取層(NAL:Network Abstraction Layer)負(fù)責(zé)以網(wǎng)絡(luò)所要求的恰當(dāng)?shù)姆绞綄?duì)數(shù)據(jù)進(jìn)行打包和傳送(如圖所示: 標(biāo)準(zhǔn)的整體框架)。   
基本層次(Baseline Profile):該層次使用了H.264的除了B-Slices,CABAC以及交織編碼模式外所有的特性。該層次主要使用于低時(shí)延的實(shí)時(shí)應(yīng)用場合。   
主要層次(Main Profile):包含Baseline profile的所有特性,并包括了B-slices,CABAC以及交織編碼模式。它主要針對(duì)對(duì)時(shí)延要求不高,當(dāng)壓縮率和質(zhì)量要求較高的場合。   
擴(kuò)展層次(Profile X):支持所有Baseline profile的特性,但不支持CABAC以及基于宏塊的自適應(yīng)幀場編碼。該層次主要針對(duì)的時(shí)各種網(wǎng)絡(luò)視頻流傳輸方面的應(yīng)用。

H.264產(chǎn)品
H.264 高清編碼器
MPEG-4 AVC/H.264 高清編碼器是一款專業(yè)的高清音視頻編碼產(chǎn)品。該產(chǎn)品支持幾乎所有模擬 及數(shù)字音視頻輸入接口,包括 CVBS、YPbPr、SD/HD-SDI、HDMI 視頻輸入接口、平衡/非平衡模 擬音頻及 AES/EBU、HDMI、SD/HD-SDI 嵌入音頻輸入接口。該設(shè)備可對(duì)標(biāo)清及高清的音視頻進(jìn)行編碼,支持 MPEG-4 AVC/H.264 編碼格式,具有極高的 編碼壓縮效率及極佳的視頻質(zhì)量,可廣泛應(yīng)用于各種數(shù)字電視播出系統(tǒng)中。

主要特性
1、支持 H.264/AVC High Profile Level 4.0 及 H.264/AVC High Profile Level 3.0 編碼,先 進(jìn)的視頻預(yù)處理算法
2、音頻編碼支持 MPEG1 Audio Layer 2
3、支持 CVBS、S-Video、YPbPr 模擬視頻輸入 • 支持 HDMI,HD/SD-SDI 數(shù)字視頻輸入
4、支持平衡及非平衡模擬音頻輸入
5、支持 AES/EBU、HDMI、HD/SD-SDI 數(shù)字音頻輸入 • 支持 PAL、NTSC 標(biāo)清視頻格式
6、支持高清 720P、1080I 視頻格式
7、支持 IP 輸出 TS,UDP 協(xié)議,單播及多播 • 支持液晶按鍵操作



關(guān)鍵詞: 技術(shù) 編碼 h.264

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉