H.264先進的視頻編譯碼標準

H.264先進視訊編譯碼標準

郭其昌/工研院電通所

1. 前言

200112月,ITU-T VCEGISO MPEG共同組成聯合視訊小組(Joint Video TermJVT)來研訂新的視頻壓縮格式,此新格式在ITU-T組織中稱爲H.264,在ISO組織中則納入MPEG-4 Part-10 (ISO/IEC 14496-10)並命名爲Advanced VideoCoding (AVC),通常合併稱爲H.264/AVC [1],其國際標準的第一版於2003年公佈,而增修的第二版也於20053月定案。相關研究顯示H.264/AVCMPEG-2MPEG-4相較之下,無論是壓縮率或視訊質量皆有大幅的提升[2],而且H.264/AVC也首次將視訊編碼層(Video Coding LayerVCL)與網絡提取層(Network Abstraction LayerNAL)的概念涵蓋進來,以往視訊標準着重的是壓縮效能部分,而H.264/AVC包含一個內建的NAL網絡協議適應層,藉由NAL來提供網絡的狀態,可以讓VCL有更好的編譯碼彈性與糾錯能力,使得H.264/AVC非常適用於多媒體串流(multimedia streaming)及行動電視(mobile TV)的相關應用。在第一版的標準規範中,H.264/AVC根據使用的編碼工具種類來提供三種編碼規模(Profile),如表1所示分別爲Baseline ProfileMain ProfileExtension Profile,而相對應的影片尺寸與比特率等級由Level 1Level 5.1,涵蓋小畫面與高分辨率畫面的應用範圍。Baseline Profile主要是着眼於低比特率的應用(例如:影像通訊),而且其運算複雜度低,所以也適合應用於個人隨身的多媒體撥放機;Main Profile因爲有支持交錯式影片(interlaced content)的編碼,所以適合應用於HDTV數字電視廣播,而且非常容易整合在傳統的MPEG-2 Transport/Program Stream上來傳送H.264/AVC比特流;對於IP-TV或是MOD(Multimedia On Demand)等應用,使用包含高抗錯性編碼工具(error resilient tools)Extension Profile即可以滿足這些需求。然而,微軟公司在2003年將其視頻壓縮技術向美國的電影電視工程師協會(Society of Motion Picture and Television EngineersSMPTE)提出公開標準化的申請,並以VC-1(Video Codec 1)爲此新標準的命名[3],由於VC-1在高分辨率影片上的表現出色,導致H.264/AVCDVD ForumBlu-ray Disc Association的高分辨率DVD影片測試中敗陣下來,其主要原因是H.264/AVC使用較小尺寸的轉換公式與無法調整的量化矩陣,造成不能完整保留影像的高頻細節信息,因此H.264/AVC2004年展開標準增修的討論,來納入稱之爲Fidelity Range Extensions (FRExt) [4]的新編碼工具,並以先前MainProfile爲基礎來擴充增加4個新的等級(Table 1),期望能夠在高分辨率影片的應用上扳回劣勢,目前增修的H.264/AVC第二版標準已於20053月發表。本文後段將探討網絡提取層的相關特性,接着來說明視訊編碼層的原理,最後並討論H.264/AVC的應用現況。

2. 網絡提取層 (Network Abstraction LayerNAL)

H.264/AVC標準的特色是將網絡提取層的概念涵蓋進來,亦即以NAL封包爲單位的方式來做爲VCL編譯碼的運算單位,這樣傳輸層拿到NAL封包之後不需要再進行切割,只需附加該傳輸協議的文件頭信息(adding header only)就可以交由底層傳送出去,如圖1所示,可以將NAL當成是一個專作封裝(packaging)的模塊,用來將VCL壓縮過的bitstream封裝成適當大小的封包單位(NAL-unit),並在NAL-unit Header中的NAL-unit Type字段記載此封包的型式,每種型式分別對應到VCL中不同的編解碼工具。NAL另外一個重要的功能爲當網絡發生壅塞而導致封包錯誤或接收次序錯亂(out-of-order)的狀況時,傳輸層協議會在Reference Flag作設定的動作,接收端的VCL在收到這種NAL封包時,就知道要進行所謂的糾錯運算(error concealment),在解壓縮的同時也會嘗試將錯誤修正回來。如圖2所示,一個完整的H.264/AVC bitstream是由多個NAL-units所組成的,所以此bitstream也稱之爲NAL unit stream,一個NAL unit stream內可以包含多個壓縮視訊序列(coded video sequence),一個單獨的壓縮視訊序列代表一部視訊影片,而壓縮視訊序列又是由多個access units所組成,當接收端收到一個access unit後,可以完整地譯碼成單張的畫面,而每個壓縮視訊序列的第一個access unit必須爲Instantaneous Decoding Refresh (IDR) access unitIDRaccess unit的內容全是採用intra-prediction編碼,所以自己本身即可完全譯碼,不用參考其他access unit的數據。access unit亦是由多個NAL-units所組成,標準中總共規範12種的NAL-unit型式,這些可以進一步分類成VCL NAL-unitnon-VCL NAL-unit,所謂的VCL NAL-unit純粹是壓縮影像的內容,而所謂的non-VCL NAL-unit則有兩種:Parameter SetsSupplemental Enhancement Information (SEI)SEI可以存放影片簡介、版權宣告、用戶自行定義的數據…等;Parameter Sets主要是描述整個壓縮視訊序列的參數,例如:長寬比例、影像顯現的時間點(timestamp)、相關譯碼所需的參數…等,這些信息非常重要,萬一在傳送的過程中發生錯誤,會導致整段影片無法譯碼,以往像MPEG-2/-4都把這些信息放在一般的packet header,所以很容易隨着packet loss而消失,現在H.264/AVC將這些信息獨立出來成爲特殊的parameter set,可以採用所謂的out-of-band的方式來傳送,以便將out-of-band channel用最高層級的信道編碼(channel coding)保護機制,來保證傳輸的正確性。


3. 視訊編碼層 (Video Coding LayerVCL)

視頻壓縮的原理是利用影像在時間與空間上存有相似性,這些相似的數據經過壓縮算法處理之後,可以將人眼無法感知的部分抽離出來,這些稱爲視覺冗餘(visual redundancy)的部分在去除之後,就可以達到視頻壓縮的目的。如圖1所示,H.264/AVC的視訊編碼機制是以圖塊(block-based)爲基礎單元,也就是說先將整張影像分割成許多矩形的小區域,稱之爲巨圖塊(macroblockMB),再將這些巨圖塊進行編碼,先使用畫面內預測(intra-prediction)與畫面間預測(inter-prediction)技術,以去除影像之間的相似性來得到所謂的差餘影像(residual),再將差餘影像施以空間轉換(transform)與量化(quantize)來去除視覺冗餘,最後視訊編碼層會輸出編碼過的比特流(bitstream),之後再包裝成網絡提取層的單元封包(NAL-unit),經由網絡傳送到遠程或儲存在儲存媒體中。H.264/AVC允許視訊影片以frame或是以filed的方式來進行編碼,兩者可以共存,而frame可以是progress或是interlace形式,對同一段影片來說也可使用兩者來混合編碼,這個特性與MPEG-2相同。而在影像色彩格式的支持上,H.264/AVC第一版的標準只支持YCrCb 4:2:0取樣的方式,而在增修的第二版標準中增加4:2:24:4:4取樣格式,通常這些格式會被數字電影或HDTV影片所採用。

3.1 H.264/AVC影像格式階層架構
H.264/AVC的階層架構由小到大依序是sub-blockblockmacroblocksliceslicegroupframe/field-picturesequence。對一個採用4:2:0取樣的MB而言,它是由16x16點的Luma與相對應的28x8Chroma來組成,而在H.264/AVC的規範中,MB可再分割成多個16x88x168x88x44x84x4格式的sub-blocks。所謂的slice是許多MB的集合,而一張影像是由許多slice所組成(3)sliceH.264/AVC格式中的最小可譯碼單位(self-decodable unit),也就是說一個slice單靠本身的壓縮數據就能譯碼,而不必依靠其他slice,這樣的好處是當傳送到遠程時,每接收完一筆slice的壓縮數據就能馬上譯碼,不用等待整張的數據接收完後才能開始,而且萬一傳送的過程中發生數據遺失或錯誤,也只是影響該筆slice,不會對其他slice有所影響,但跟MPEG-2slice不同處在於它允許slice的範圍可以超過一行MB,也就是說H.264/AVC允許整張影像只由單一個slice組成。H.264/AVCslice架構還有一項特性稱爲Flexible Macroblock Ordering (FMO),也就是說組成sliceMB可以不必侷限於循序掃描(rasterscan)的排列方式,例如:圖3最右側的排法就非常適用於多個前景(foreground) slice groups與一個獨自的背景(background) slice group,好處是對不同的slice group可以用不同質量的壓縮參數,例如:對於前景物件通常是人眼較感興趣的區域,可以用較小的壓縮率來維持較好的質量。

3.2 Slice的編碼模式
H.264/AVCslice依照編碼的類型可以分成下列種類:(1)I-slice: slice的全部MB都採用intra-prediction的方式來編碼;(2) P-slice: slice中的MB使用intra-predictioninter-prediction的方式來編碼,但每一個inter-prediction block最多隻能使用一個移動向量;(3) B-slice:P-slice類似,但每一個inter-prediction block可以使用二個移動向量。比較特別的是B-slice的‘B’是指Bi-predictive,與MPEG-2/-4 B-frameBi-directional概念有很大的不同,MPEG-2/-4 B-frame被限定只能由前一張和後一張的I(P)-frame來做inter- prediction,但是H.264/AVC B-slice除了可由前一張和後一張影像的I(PB)-slice外,也能從前二張不同影像的I(PB)-slice來做inter- prediction,而H.264/AVC另外增加兩種特殊slice類型:(1) SP-slice:即所謂的Switching P slice,爲P-slice的一種特殊類型,用來串接兩個不同bitratebitstream(2) SI-slice: 即所謂的Switching I slice,爲I-slice的一種特殊類型,除了用來串接兩個不同contentbitstream外,也可用來執行隨機存取(random access)來達到網絡VCR的功能。這兩種特殊的slice主要是考慮當進行Video-On-Demand streaming的應用時,對同一個視訊內容的影片來說,server會預先存放不同bitrate的壓縮影片,而當帶寬改變時,server就會送出適合當時帶寬比特率的影片,傳統的做法是需要等到適當的時間點來傳送新的I-slice (容量較P-slice大上許多),但因爲帶寬變小導致需要較多的時間來傳送I-slice,如此會讓client端的影像有所延遲,爲了讓相同content但不同bitratebitstream可以較平順地串接,使用SP-slice會很容易來達成(4),不僅可以直接送出新的bitstream,也因爲傳送的P-slice的容量較小,所以不會有時間延遲的情形出現。當client端的使用者要切換到新的接收頻道(channel)時,因爲與目前傳送的bitstream不但內容不同連比特率也不同,傳統的做法需讓client重新緩衝(buffering)一段新頻道的內容(5),此時是爲了要接收新頻道bitstreamI-slice,然後再開始傳送新頻道bitstream後續的P-slice,如此client也會發生延遲接收的現象,而且當client要進行所謂的快轉、倒轉、隨機存取(random access)的動作時,傳統的做法無法達到實時的反應,H.264/AVC利用SI-slice就可以輕易地達到目的。





3.3畫面內預測技術(Intra-frame Prediction)
以往的壓縮標準在進行intra-prediction時,多半隻是將轉換系數做差值編碼,而H.264/AVC在空間領域(spatial domain)來進行像點之間的預測,而不是用轉換過的係數,它提供兩種intra-prediction的型式:intra_4x4intra_16x16,所謂的intra_4x4是以Luma 4x4 sub-block爲單位,找出它的參考對象(predictor)後,再將其與參考對象相減後所產生的差餘影像(residual)送入轉換算法,而尋找參考對象的模式共有9種預測的方向(6),以mode 0 (vertical)爲例,{a,e,i,m}{b,f,j,n}{c,g,k,o}{d,h,l,p}的參考對象分別爲ABCDLuma intra_16x16Chroma的模式跟Luma intra_4x4類似,詳細的運算公式可以參考[1]

3.4畫面間預測技術(Inter-frame Prediction)
至於橫跨每張畫面之間的預測技術,H.264/AVC提供了更豐富的編碼模式,計有下述幾種區塊分割(partition)的方法:16x1616x88x168x88x44x84x4,多樣的分割方式可以讓移動向量的預測更準確,如圖7所示,畫面中有些移動的區域並不是正方形,使用長方形或較小的4x4分割來做預測的區域,可以大幅降低差餘影像的數值來增加了壓縮比,但也因此P-slice中的MB最多可有16個移動向量(motion vector),而B-slice中的MB最多可擁有32個移動向量,雖然這些會增加移動向量檔頭(header)的容量,但整體來說對壓縮比仍有正面的益處。再者,以往的壓縮標準所使用的動態估測(motion estimation),只有使用前一張圖像來作爲預測的對象,H.264/AVC提供了多重參考圖像(multiple reference frames)的概念,使得移動向量不再只限於前後相鄰的影像,而是可以跨過多張影像,如圖8所示,在時間點t的圖塊,可以使用t-1t-2圖像中的圖塊來作爲預測的對象,當影片有周期重複性的內容時,例如:背景影像週期性的出現或被遮蓋、對象有來回跳動的行爲、形狀忽大忽小,或是攝影機在拍攝時,因爲有多處的取景點,並且攝影畫面在取景點之間來回移動,這種情形在球類比賽轉播時常出現,這些狀況都能得到較好的動態預測結果,因而提高了壓縮的效能。



3.5 轉換、量化與熵編碼算法 (Transform, Quantization, and EntropyCoding)
H.264/AVC的轉換算法採用所謂的4x48x8整數轉換,跟MPEG-2/-48x8 DCT(Discrete Cosine Transform)有很大的不同,因爲是整數運算的緣故,不像小數運算的DCT有係數還原後無法匹配的問題,而且以4x4的區塊大小來進行轉換也可減低區塊效應的程度。在量化技術方面,H.264/AVC只使用加法與乘法而沒有除法運算,有利於集成電路的實現。跟以往MPEG-2/-4的熵編碼技術(entropy coding)不同的是,H.264/AVC針對量化過的轉換系數與非轉換系數數據(文件頭數據、移動向量…等),分別使用二個不同的編碼法則。非轉換系數數據使用單一個的編碼表,好處是可以節省編碼表所佔用的內存空間;針對量化過的轉換系數數據來說,不像MPEG-2/-4對每種影像都使用固定的編碼表,H.264/AVC使用所謂的內容適應性編碼技術(context-adaptive),也就是會根據編碼的內容來統計某些代碼(code-word)的出現機率,而產生一個最適合於目前影像的編碼表,好處是能夠提高壓縮比,但要使用額外的帶寬來傳送這些編碼表。H.264/AVC內容適應性編碼技術有兩種:Context Adaptive Variable Length Coding (CAVLC)以及ContextAdaptive Arithmetic Binary Coding (CABAC)CAVLC的基本原理跟MPEG-2/-4VLC相同,而CABAC的複雜度比CAVLC高,但卻可以提供較高的壓縮比,尤其是用在壓縮交錯式的數字電視影片。

3.6 內嵌式去區塊效應濾波器(In-Loop De-blocking Filter)
先前有提到H.264/AVC也是一種block-based的壓縮方法,所以會有區塊效應(blocking-effect)的現象,雖然它採用4x4轉換可以稍減區塊效應的程度,但是在影像較平滑的區域,仍需依靠去區塊效應濾波器來做影像質量的修補。通常去區塊效應濾波器分成兩種:post filterin-loop filter,所謂post filter就是在譯碼的流程之後再進行的,而不在解壓縮標準的規範中,好處是廠商可以依應用的複雜度,有彈性地決定濾波器的實現方式,而所謂的in-loop filter就是直接規範在編譯碼的流程中,雖然會增加複雜度,但由於經過濾波器處理後的影像質量較好,若以此作爲畫面間預測的參考圖像,其預測精確度會大幅的提升,因而增加了壓縮比。

4. 結論 
由於H.264/AVC在視訊編碼算法上的改進,其壓縮比及視訊質量與MPEG-2/-4相較下有大幅度的提升,而其NAL概念有助於在有限帶寬的傳輸通道上來傳送高質量的視訊內容,此外,對於高畫質數字電視或高畫質DVD,以H.264/AVC的編碼技術都可以很輕易地滿足應用需求,但就市場面來看,VC-1標準憑藉着微軟PC平臺的優勢與低價授權的策略,今後將成爲H.264/AVC最強大的挑戰者。

# 計劃相關信息
本文爲工研院電通所執行經濟部補助科專計劃「多媒體數字視頻技術發展」成果之一。

# 參考文獻
[1] Draft ITU-T recommendation and final draft internationalstandard of joint video specification (ITU-T Rec. H.264/ISO/IEC 14 496-10 AVC, inJoint Video Team (JVT) of ISO/IEC MPEG and ITU-T VCEG, JVTG050, 2003. 
[2] Special Issue on the H.264/AVC Video Coding Standard, IEEETrans. Circuits Syst. Video Tech., vol. 13, July 2003.
[3] Proposed SMPTE Standard for Television: VC-9 Compressed VideoBitstream Format and Decoding Process, 2004-03-31.
[4] G.J. Sullivan, P. Topiwala, and A.Luthra, The H.264/AVC Advanced Video Coding Standard: Overview andIntroduction to the Fidelity Range Extensions, SPIE Conference on Applications ofDigital Image Processing, Aug. 2004.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章