幀、場編碼的個人理解
一、概述
原始視訊框架(最原始的視頻資料)根據編碼的需要,以不同的方式進行掃描產生兩種視訊框架:連續或隔行視訊框架,隔行視訊框架包括頂場和底場,連續(遂行)掃描的視訊框架與隔行掃描視訊框架有著不同的特性和編碼特徵,產生了所謂的幀編碼和場編碼。一般情況下,遂行幀進行幀編碼,隔行幀可在幀編碼和場編碼間選取。
在幀編碼中,參考為幀映像,採用幀運動補償,兩個場是聯合編碼;在場編碼中,參考為場映像,兩個場是分別編碼,採用場運動補償。
二、視頻序列幀、場編碼方式
1.固定幀編碼(全幀)----視頻序列的全部幀始終採用幀編碼方式。
2.固定場編碼(全場)
視頻序列中幀被分成兩個場獨立編碼。編碼規則:
(1).I幀可編碼成兩個I場或一個I場和一個P場,即II、IP.
(2).P幀可編碼成兩個P場或一個P場和一個B場,即PP、PB.
(3).B幀可編碼成兩個B場,即BB.
3.映像級幀、場自適應編碼 (PAFF)
視頻序列能被編碼成一個幀或兩個場,自適應選擇原則是根據採用該種編碼方式的每一幀的RD值。
4.宏塊級幀、場自適應(MBAFF)
為了進一步提高編碼效率,採用了宏塊級幀場自適應.宏塊級採用了宏塊對(MBP)為基本編碼單元(2所示)
H.264採用的MBAFF方案:
在映像中運動比較大的地方採用場編碼,運動比較小的地方採用幀編碼,編碼順序例子如下:
幀間EC原理和過程
出錯的宏塊(圖中灰色表示)根據上、下、左、右四個方向相鄰宏塊的不同分割情況及預測類型進行插值。將最後的結果中進行比較,選取邊界像素差值之和最小者為最優的EC方案。其步驟為:
1、判斷相鄰宏塊左上方8*8塊的預測模式是否大於REGMODE_SPLITTED,如果大於,則表示該宏塊由4個不同類型的8*8塊組成。否則,說明該宏塊4個8*8塊預測模式相同。
2、如果相鄰宏塊由4個不同類型的8*8塊組成,則首先選取第一個最鄰近的8*8塊(圖中用Split1表示)的預測模式和運動向量作為錯誤宏塊的預測模式和運動向量。以該預測模式和運動向量對錯誤宏塊做EC,並計算邊界像素差值之和。然後選取第二個最鄰近的8*8塊(圖中用Split2表示)的預測模式和運動向量作為錯誤宏塊的預測模式和運動向量做同樣處理。
3、如果相鄰宏塊的4個8*8的塊預測模式相同,則直接選用左上方8*8塊的預測模式和運動向量作為錯誤宏塊的預測模式和運動向量做處理。
4、最後比較所有預測模式和運動向量計算出的邊界像素差值之和,最小者即為最佳。
預測模式為REGMODE_INTER_COPY:
既為幀間複製宏塊。此時運動向量為0,錯誤宏塊各像素值直接使用參考幀中同樣位置的值
預測模式為REGMODE_INTER_PRED:
既為幀間預測宏塊。
【說明】:本分析過程是針對JM86進行的。