H.264/MPEG-4 Part 10 White Paper 譯(三) Inter Prediction
P片幀間預測
1. 引言
聯合視頻工作群組(JVT)正在定案一個新的自然視頻映像編碼(壓縮)標準。新標準[1]被稱為H.264或稱作MPEG-4 Part 10、“進階視頻編碼(AVS)”。這篇文檔描述了H.264中以P-片來進行幀間預測性編碼的方法。
幀間預測從一個或多個之前已經編碼的視訊框架中產生一個預測模型。這個模型由對參考幀中的採樣進行漂移產生(運動補償預測)。AVC CODEC 使用基於塊的運動補償,與從H.261以來的主要編碼通訊協定中採用的規則相同。然而,它與早期標準有著重要的區別:(1) 支援多種塊大小(最小4X4)的預測;(2) 細粒度的次像素運動向量(量度分量可精確到1/4像素)。
2 樹結構的運動補償
AVC對亮度採樣支援16X16到4X4之間多種塊大小的運動補償。每個宏塊(16X16採樣)的亮度分量能以Figure 2-1中所示的4種方式分割:16X16,16X8,8X16或8X8.每個細分地區是一個宏塊分區。如果選擇8X8分割模式,宏塊內的四個8X8宏塊分區都能夠以4種方式再次分割,Figure 2-2所示:8X8,8X4,4X8或4X4(稱作宏塊子分區)。這些分區和子分區使得每個宏塊內都可以有很多種組合方式。這種將宏塊分割成不同大小運動補償子塊的方法稱作樹結構運動補償。
每個分區或子分區都有一個獨立的運動向量。每個運動向量必須編碼並傳輸;另外,分區(分割方式)的選擇也必須被編碼到壓流的位元流中。選擇大的分區(如16X16,16X8,8X16)意味著只需很少的位元來標記運動向量的選擇和分區的類型;然而,運動補償殘差可能包含了大量的幀中高細節部分資訊。選擇一個小的分區大小(8X4,4X4等等)可以在運動補償後得到一個較小的殘差,但它需要更多的位元來標記運動向量和分區的類型。因此分區大小的選擇對壓縮效果有著很大的影響。通常情況下,一個大的分區適用於幀內分布均勻的地區而一個小的分區將有利於細節地區的描述。
宏塊(Cr和Cb)中每個色度分量的解析度為亮度分量的一半。每個色度塊和亮度塊的分割方式相同,只是分區大小是水平和垂直方向的解析度的一半(如一個8X16亮度分區對應一個4X8的色度分區;一個8X4亮度分區對應一個4X2的色度分區)。每個運動向量(每個分區一個)的水平和垂直分量運用到色度塊上時減半。
例:Figure 2-3顯示了一個殘留幀(未經過運動補償)。AVC參考編碼器為幀的每個部分選擇了“最好的”分區大小。這種分區大小盡量減小編碼殘差和運動向量。為每個地區選取項目的宏塊分區顯示在殘留幀上(圖示)。在幀間變化很小的地區(殘留幀上顯示為灰色)採用16X16分區方式;在運動的細節描述部分(殘留幀上顯示為黑色或白色)採用較小的分區效果更好。
3. 次像素運動向量
幀間編碼宏塊的每個分區根據參考圖片中的一個相同大小的地區預測。兩個地區間的位移(運動向量)的解析度(亮度分量)為1/4像素。次像素位置的亮度和色度採樣在參考圖片中不存在,所以它們必須通過對附近的映像採樣進行插補來建立。Figure 3-1給出了一個例子。當前幀(a)中的一個4X4的子分區根據參考映像的一個鄰近地區來預測。如果運動向量的水平和垂直分量為整數(b),則參考塊中的相關採樣實際已經存在(灰點)。如果一個或兩個向量分量都為分數值(c),預測採樣(灰點)根據參考幀中相鄰採樣(白點)間的插補產生。
次像素運動補償的效果明顯優於整數像素補償,但是卻增加了複雜性。1/4像素精度效果優於半像素精度。
在亮度分量中,半像素位置的次像素採樣首先產生,它使用一個6頭有限脈衝響應濾波器(6-tap Finite Impulse Response filter)從鄰近的整數像素採樣中插值。這意味著每個半像素採樣是6個鄰近整數採樣的加權和。一旦所有的半像素採樣可用,每個1/4像素採樣通過對相鄰的半像素和整數像素使用雙線性插值得到。如果視頻源採樣比是4:2:0,色度分量需使用1/8像素採樣(與亮度的1/4像素採樣對應)。這些採樣通過對整數像素的色度採樣進行插值(線性插值)得到。
4. 運動向量預測
為每個分區編碼一個運動向量需要大量的位元,特別是在選擇小的分區的時候。通常情況下鄰近分區的運動向量都高度相關,所以每個運動向量可以通過相鄰並且之前已經編碼的分區的向量預測。預測向量MVp基於之前已計算出的運動向量產生。當前向量和預測向量間的差異MVD被編碼並傳輸。預測向量MVp的產生方法取決於運動補償塊的大小和相鄰向量是否可用。“基本”預測值是當前分區或子分區相鄰上部和對角線方向右下和相鄰左側的宏塊分區或子分區的運動向量的中間值。如果(a)選擇16X8或8X16的分區並且(或者)(b)有些鄰近分區不可用作預測值,則預測值會作出改變。如果當前宏塊被跳過(未傳輸),則會產生一個預測向量,即使宏塊以16X16分區模式編碼。
在解碼器中,預測向量MVp以相同的方式形成並加到解碼後的向量差異MVD中。若有跳過宏塊,則這裡沒有解碼向量(MVD),這時會根據MVp的規模產生一個運動補償宏塊。
5. 參考資料
1 ITU-T Rec. H.264 / ISO/IEC 11496-10, “Advanced Video Coding”, Final Committee Draft, Document JVTG050,March 2003
轉載:http://hi.baidu.com/huybin%5Fwang/blog/item/889be082840e9a96f603a6c7.html