新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 新一代視頻編碼標(biāo)準(zhǔn)H.264/AVC的關(guān)鍵技術(shù)研究

新一代視頻編碼標(biāo)準(zhǔn)H.264/AVC的關(guān)鍵技術(shù)研究

作者: 時間:2009-09-29 來源:網(wǎng)絡(luò) 收藏
0 引 言
2001年12月,ITU-T和ISO/IEC成立了JVT(Joint Video Team,視頻聯(lián)合工作組),以H.26L作為平臺,致力于制定下一代。2003年5月,正式推出H.,該的正式名稱為H./MPEG-4 part 10 。H.標(biāo)準(zhǔn)的主要目標(biāo)是力求設(shè)計簡單有效的編碼技術(shù),并具有高效的壓縮性能和易于網(wǎng)絡(luò)傳輸?shù)哪芰Γ詽M足日益增長的“對話型”(移動視頻電話、會議)、“非對話型”(視頻存儲、廣播以及流媒體等)以及數(shù)碼影院、視頻監(jiān)控等視頻應(yīng)用的場合。

1 H.264/AVC的基本編碼結(jié)構(gòu)
與早期的標(biāo)準(zhǔn)相同,H.264/AVC標(biāo)準(zhǔn)沒有明確定義一對完整的編解碼器,而是定義了編碼碼流的語法和對碼流進(jìn)行解碼的方法。H.264/AVC采用了與以往標(biāo)準(zhǔn)類似的運動估計/補(bǔ)償+分塊DCT變換的混合編碼框架。
H.264/AVC采用“返回基本”的思想去開發(fā)高性能的標(biāo)準(zhǔn),即采用現(xiàn)有的基本算法和結(jié)構(gòu),通過精心優(yōu)化計算流程和方法來取得更好的視頻編碼性能。與現(xiàn)有的H.261,H.263標(biāo)準(zhǔn)相比,H.264保持了編碼器的系統(tǒng)結(jié)構(gòu)不變,主要包括四個步驟:
(1)把一幀圖像劃分為小塊(Macro.Block及Block),每個小塊包含很多像素點,把對整幅圖像的編碼分成對許多小塊的處理。
(2)通過對圖像塊的變換、量化和熵編碼(或變長編碼),消除圖像中的空間冗余。
(3)由于相鄰的各幀圖像存在很大的相似性(即時間冗余),所以只需要將相鄰幀圖像間的變化進(jìn)行編碼傳送即可,這是通過運動搜索和運動補(bǔ)償實現(xiàn)的。對每一個編碼塊,通過搜索上一編碼幀(或之前的幾幀)的相應(yīng)位置來找到一個運動向量,這一向量將和幀間差值一起傳送,用于這一圖像塊的編解碼。
(4)殘余編碼:對于原始塊和相應(yīng)的預(yù)測塊之間的差值進(jìn)行變換、量化和熵編碼,以去除當(dāng)前幀剩下的空間冗余。
但是與以前的編碼算法H.263相比,H.264加入了一些新的特性,以提高編碼效率。這些特征如下:
(1)對于進(jìn)行幀內(nèi)編碼的圖像,不是直接對原始圖像進(jìn)行變換、量化和編碼,而是首先采用多種不同的預(yù)測方法對圖像進(jìn)行預(yù)測,然后對差值進(jìn)行上述處理,以取得更佳的編碼效率。
(2)在運動搜索和運動補(bǔ)償方面,H.264采用了從4x 4到16×16共13種搜索塊進(jìn)行運動搜索,以提高匹配程度,采用1/4像素精度進(jìn)行搜索,以提高搜索精度。另外,根據(jù)對編碼延時的不同要求,H.264還可以對以前多個已編碼幀進(jìn)行運動搜索,以達(dá)到最佳效果。
(3)在變換編碼方面,H.264采用了4×4的整數(shù)變換(ICT)代替DCT變換,整數(shù)變換的效果接近DCT,但運算量要少,而且在反變換過程中不會因計算精度的問題而引入誤差。
(4)在熵編碼過程中,H.264使用單一的變長編碼(UVLC)和基于內(nèi)容的上下文變長編碼(CAVLC)進(jìn)行編碼。

本文引用地址:http://2s4d.com/article/188583.htm

2 編碼結(jié)構(gòu)的分層處理
H.264的編碼結(jié)構(gòu)在概念上分為兩層。視頻編碼層(Video Coding Layer,VCL)負(fù)責(zé)高效率的視頻壓縮能力;網(wǎng)絡(luò)適配層(Network Adaption Layer,NAL)負(fù)責(zé)網(wǎng)絡(luò)的適配,即對不同網(wǎng)絡(luò)要有不同的適應(yīng)能力,例如以恰當(dāng)方式對數(shù)據(jù)進(jìn)行打包和傳送。H.264編碼器分層結(jié)構(gòu)如圖1所示。在VCL和NAL之間定義了一個基于分組方式的接口,打包和相應(yīng)的信令屬于NAL的一部分。這樣,高效率編碼和網(wǎng)絡(luò)適應(yīng)性的任務(wù)則分別由VCL,和NAL來完成。
VCL包括基于塊的運動補(bǔ)償混合編碼和一些新特性。NAL負(fù)責(zé)針對下層網(wǎng)絡(luò)的特性對數(shù)據(jù)進(jìn)行封裝,包括成幀,發(fā)信號給邏輯信道,利用同步信息等。NAL從VCL獲得數(shù)據(jù),包括頭信息、段結(jié)構(gòu)信息和實際凈荷信息(如果采用數(shù)據(jù)分割技術(shù),凈荷數(shù)據(jù)可能由幾部分組成)。NAL的任務(wù)就是要正確地將它們映射到傳輸協(xié)議上。NAL下面是各種具體的協(xié)議,如H.323,H.324等。NAL層的引入大大提高了H.264適應(yīng)復(fù)雜信道的能力。

JVT標(biāo)準(zhǔn)中的NAL定義了視頻編解碼器本身和外部的接口。它的基本單元是NALUs(Nerwork Ab-straction Layer Units)。這對實現(xiàn)許多現(xiàn)行網(wǎng)絡(luò)包的傳輸方式提供了很好的支持。
一個NALU由一個一字節(jié)的頭和包含特定類型句法元素的可變長度比特串組成。一個NALU可以包含slice的編碼信息、隨機(jī)訪問點、參數(shù)集信息或補(bǔ)充增強(qiáng)信息等。NALU頭結(jié)構(gòu)如下:
NALU類型(T)是一個5比特的子段,指出該NALU單元是32種不同類型中的哪一種。類型1~12已被H.264定義,類型24~31可由H.264以外的其他標(biāo)準(zhǔn)使用。RTP載荷規(guī)范將采用其中的某些值來表示包聚合和包分割。其他值被保留待將來使用。
nal_reference_idc(R)用來標(biāo)記該NALU在重建過程中的重要程度。0表示該NALU不會被用作參考幀,因此允許解碼器或網(wǎng)關(guān)將之丟棄而不會引起錯誤傳播。該值越高,表示該NALU中數(shù)據(jù)越重要。這就允許網(wǎng)絡(luò)節(jié)點根據(jù)該值有力保護(hù)重要數(shù)據(jù)。
forbidden_zero_bit(F)在編碼過程中置為0,當(dāng)網(wǎng)絡(luò)節(jié)點鑒別出NALU中的比特錯誤時,可以將該位置1。由于網(wǎng)絡(luò)環(huán)境不同,解碼器可能對包含比特錯誤的NALU采取不同的操作,有的則干脆丟棄。for-bidden zero bit為這種操作提供了便利。
一些使用包傳輸?shù)木W(wǎng)絡(luò)能夠直接使用NALUs,把他們直接作為H.223 AL3 SDUs或RTP包的載荷即可。然而,在一些面向碼流的系統(tǒng)面前,如ITU-T的視頻會議建議H.320和數(shù)字電視中的MPEG-2傳輸流等,需要比特或字節(jié)流的格式。因此,JVT標(biāo)準(zhǔn)定義了一種從NALUs到碼流格式的變換,即把NALUs用起始碼字封裝起來,非常符合傳統(tǒng)的視頻編碼標(biāo)準(zhǔn),起始碼的字長可以是16 b或24 b,這依賴于該NALU載荷的重要性。起始碼字僅會出現(xiàn)在十字節(jié)對準(zhǔn)的位置上,因此解碼器可以掃描起始碼字,用一種簡單的u1向字節(jié)的內(nèi)存復(fù)制操作把NALUs提取出來。
為了防止字節(jié)流格式中的起始碼字發(fā)生競爭現(xiàn)象,許多視頻編碼標(biāo)準(zhǔn)都非常謹(jǐn)慎地采用熵編碼方式。由于JVT標(biāo)準(zhǔn)包含兩種不同的熵編碼模式,所以這種起始碼字很少發(fā)生競爭現(xiàn)象。JVT依靠一種字節(jié)填充機(jī)制,即通過在NALU中可能產(chǎn)生起始碼字競爭的位置上插入非零字節(jié)來避免出現(xiàn)競爭現(xiàn)象。為方便網(wǎng)關(guān)設(shè)計,在一些看起來不必要的環(huán)境,尤其是包傳輸網(wǎng)絡(luò)中仍然執(zhí)行字節(jié)填充。由于VCL-NAL接口僅僅是概念上的,所以為防止起始碼字競爭,操作習(xí)慣上將其作為VCL熵編碼的一部分執(zhí)行。
H.264視頻流在誤碼、丟包多發(fā)的IP網(wǎng)絡(luò)上傳輸,增強(qiáng)了H.264視頻流的魯棒性。為了減少傳輸差錯,H.264視頻流中的時間同步可以通過采用幀內(nèi)圖像刷新來完成。空間同步由條結(jié)構(gòu)編碼(Slice Struc-tured Coding)來支持,同時為了便于誤碼以后的再同步,在一幀的視頻數(shù)據(jù)中還提供了一定的重同步點。另外,幀內(nèi)宏塊刷新和多參考幀模式可以使編碼器在決定宏塊模式時不僅考慮編碼效率,還考慮傳輸信道的特性。H.264中還定義了數(shù)據(jù)分割模式:圖像首先進(jìn)行分段,段內(nèi)宏塊數(shù)據(jù)劃分為宏塊頭信息、運動矢量和DCT系數(shù)三部分,且三部分之間由標(biāo)識符分隔。這樣,解碼器可較方便地檢測出受損數(shù)據(jù)的類型,減少誤碼對圖像質(zhì)量造成的損傷。這種數(shù)據(jù)分割的模式也利于信道編碼時進(jìn)行不等保護(hù),即對重要的數(shù)據(jù)進(jìn)行等級較高的保護(hù)。快速碼率控制可通過在宏塊層改變量化精度予以實現(xiàn)。

3 H.264的性能分析
通過實驗來測試H.264的編碼性能,并通過與H.263的比較,觀察H.264的編碼效率。
3.1 H.264與H.263編碼性能比較
本試驗對Grenadier Guards序列進(jìn)行測試,分別對H.264和H.263編碼的保真度、PSNR、宏塊編碼比特數(shù)進(jìn)行比較,結(jié)果如下:
(1)保真度測試
通過殘差比較可以很清楚地看出,H.264重構(gòu)幀和參考幀的殘差比較平滑,基本沒有斑點;而H.263的殘差比較明顯,尤其是在人物附近,由于運動量大,H.263使用半像素運動矢量估計,而H.264提高到1/4像素,在1/4像素的基礎(chǔ)上再內(nèi)插,得到1/8像素精度的運動矢量,大大提高了圖像編碼的質(zhì)量,如圖2所示。

(2)PSNR測試(如圖2)
相對于H.263視頻編碼標(biāo)準(zhǔn),H.264在其增強(qiáng)預(yù)測編碼內(nèi)容的方法上做了改進(jìn),如場、幀編碼的自適應(yīng)選擇;變尺寸方塊的運動補(bǔ)償;高精度的運動補(bǔ)償;多參考幀運動補(bǔ)償;加權(quán)預(yù)測;整數(shù)變換;自適應(yīng)熵編碼;環(huán)路去塊濾波等,這些大大提高了H.264的PSNR。由圖2可以看出,無論是亮度信號,還是色差信號,H.264的PSNR都比H.263的高。


上一頁 1 2 下一頁

評論


相關(guān)推薦

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

關(guān)閉