H265


H265

一、名詞

CTU: 編碼樹單元
CU: 編碼單元
PU: 以CU為根,對CU進行划分,一個預測單元PU包含一個亮度預測塊PB和兩個色度預測塊PB.
TU: 以CU為根,變換單元TU是在CU的基礎上划分的,跟PU沒有關系,采用四叉樹划分方式,具體划分有率失真代價決定,下圖給出了某個CU划分成TU的結構。

二、基礎結構

HEVC Encoder整體框架:

 

HEVC Encoder

HEVC Encoder

 

CU是用作幀間和幀內編碼的基礎模塊,它的特點是方塊,它的大小從8×8到最小64×64,LCU是64x64,可以使用遞歸分割的四分樹的方法來得到,大的CU適用於圖像中比較平滑部分,而小的部分則適用於邊緣和紋理較豐富的區域。CU采用四叉樹的分割方式,具體的分割過程通過兩個變量來標記:分割深度(Depth)和分割標記符(Split_flag)。

在設置CTU大小為64X64的情況下,一個亮度CB最大為64X64即一個CTB直接作為一個CB,最小為8X8,則色度CB最大為32X32,最小為4X4。每個CU包含着與之相關聯的預測單元(PU)和我變換單元(TU).

 

CU

CU

 

Z掃描順序:

 

Z掃描

Z掃描

 

PU是預測的最基本的單元,是從CU中分割出來的,HEVC中對於skip模式、幀內模式和幀間模式。
幀內預測有2種划分模式,只有在CU尺寸為8x8時,才能用PART_NxN。
幀間有8種划分模式,PU可以使方形也可以使矩形,但是其分割不是遞歸的,與CU的分割還是有區別的。尺寸最大為64×64到最小4×4。

 

PU分割模式

PU分割模式

 

TU也是采用四叉樹划分,以CU為根,TU可以大於PU,但是卻不可以大於CU的大小。
在幀內編碼過程中,TU 的尺寸嚴格小於 PU 的尺寸;
在幀間編碼過程中,TU 的尺寸不一定小於PU 的尺寸,但一定小於其對應 CU 的尺寸。

 

CB, TB

CB, TB

 

Slice可以包含一個獨立的Slice Segment(SS)和多個非獨立的SS,一個Slice中的SS可以互相依賴,但不能依賴其它Slice。圖中,虛線是SS分隔線,實線是Slice分隔線。

 

Slice

Slice

 

Tile是一個矩形塊,Slice是一個條帶。
Tile、Slice需要滿足以下兩個條件之一:

  1. 任一Slice中的所有CTU屬於同一個Tile:

 

條件一

條件一

 

  1. 任一Tile中的所有CTU屬於同一個Slice:

 

條件二

條件二

 

三、幀內預測

幀內預測模式共35個(h264有9個),包括Planar,DC,33個方向模式:

模式編號 模式名稱
0 Planar模式
1 DC模式
2~34 33種角度預測模式

 

幀內預測模式

幀內預測模式

 

除了Intra_Angular預測外,HEVC還和H.264/MPEG-4 AVC一樣,支持Intra_Planar, Intra_DC預測模式;
. Intra_DC 使用參考像素的均值進行預測;
. Intra_Planar 使用四個角的參考像素得到的兩個線性預測的均值;

划分模式:幀內只能使用PART_2Nx2N、PART_NxN兩種。

四、幀間預測

Skipped模式:無MV差異和殘差信息的幀間預測模式

針對運動向量預測,H.265有兩個參考表:L0和L1。每一個都擁有16個參照項,但是唯一圖片的最大數量是8。H.265運動估計要比H.264更加復雜。它使用列表索引,有兩個主要的預測模式:合並和高級運動向量(Merge and Advanced MV.)。

1. 運動估計准則

最小均方誤差(Mean Square Error,MSE)
最小平均絕對誤差(Mean Absolute Difference,MAD)
最大匹配像素數(Matching-Pixel Count,MPC)
絕對誤差和(Sum Of Absolute Difference,SAD)
最小變換域絕對誤差和(Sum Of Absolute Transformed Difference,SATD)

一般用SAD或者SATD。SAD不含乘除法,且便於硬件實現,因而使用最廣泛。實際中,在SAD基礎上還進行了別的運算來保證失真率。

2. 搜索算法

  • dia 菱形
  • hex (default) 六邊形
  • umh 可變半徑六邊形搜索(非對稱十字六邊形網絡搜索)
  • star 星型
  • full 全搜索

全搜索: 所有可能的位置都計算兩個塊的匹配誤差,相當於原塊在搜索窗口內一個像素一個像素點的移動匹配
菱形搜索: 在x265中實際是十字搜索,僅對菱形對角線十字上的塊進行搜索
HM的則是全搜索和TZSearch以及對TZSearch的優化的搜索。

3. MV預測

HEVC在預測方面提出了兩種新的技術–Merge && AMVP (Advanced Motion Vector Prediction)都使用了空域和時域MV預測的思想,通過建立候選MV列表,選取性能最優的一個作為當前PU的預測MV,二者的區別:

  • Merge可以看成一種編碼模式,在該模式下,當前PU的MV直接由空域或時域上臨近的PU預測得到,不存在MVD;而AMVP可以看成一種MV預測技術,編碼器只需要對實際MV與預測MV的差值進行編碼,因此是存在MVD的
  • 二者候選MV列表長度不同,構建候選MV列表的方式也有所區別

Merge
當前塊的運動信息可以通過相鄰塊的PUs運動信息推導出來,只需要傳輸合並索引,合並標記,不需要傳輸運動信息。

空間合並候選:從5個不同位置候選中選擇4個合並候選

 

空間合並候選

空間合並候選

 

圖中便是5個PU,但是標准規定最多四個,則列表按照A1–>B1–>B0–>A0–>(B2)的順序建立,B2為替補,即當其他有一個或者多個不存在時,需要使用B2的運動信息。

時間合並候選:從2個候選中選擇1個合並候選
從C3、H中選擇一個:

 

時間合並候選

時間合並候選

 

AMVP
構造一個時空PUs的運動矢量候選列表,當前PU遍歷候選列表,通過SAD選擇最優預測運動矢量。

空間運動矢量候選:從5個位置中左側、上側分別選1個共2個候選

而AMVP的選擇順序,左側為A0–>A1–>scaled A0–>scaledA1,其中scaled A0表示將A0的MV進行比例伸縮。
上方為B0–>B1–B2–>(scaled B0–>scaled B1–>scaled B2)。

然而,x265並不在乎標准,我們要的就是速度,所以在x265的代碼中,只能看到它使用AMVP且對應的變量是

圖中的代號 x265中代碼變量中包含
B2 ABOVE_LEFT
B1 ABOVE
B0 ABOVE_RIGHT
A1 LEFT
A0 BELLOW_LEFT

且對左側和上側分別if-else,選出兩個。

時間運動矢量候選:從2個不同位置候選中選擇1個候選

C0(右下) represents the bottom right neighbor and C1(中心) represents the center block.

 

時間運動矢量候選

時間運動矢量候選

 

Skip vs Merge:

 

Skip vs Merge

Skip vs Merge

 

分數像素內插:
用於產生非整數采樣位置像素值的預測樣本。

五、量化變換

六、其它

熵編碼
目前HEVC規定只使用CABAC算術編碼。

去塊效應濾波器
消除反量化和反變換后由於預測誤差產生的塊效應,即塊邊緣處的像素值跳變。

 

塊適應產生

塊適應產生

 

自適應樣點補償
通過對重建圖像進行分類,對每一類圖像像素值進行加減1,從而達到減少失真,提高壓縮率,減少碼流的作用。

目前自適應樣點補償分為帶狀補償,邊緣補償:

  1. 帶狀補償,按像素值強度划分為不同的等級,一共32個等級,按像素值排序,位於中間的16個等級進行補償,將補償信息寫進碼流,其余16個等級不進行補償,減少碼流。
  2. 邊緣補償,選擇不同的模板,確定當前像素類型,如局部最大,局部最小,或者圖像邊緣。

Wavefront Parallel Processing (WPP)
WPP的並行技術是以一行LCU塊為單位進行的,但是不完全截斷LCU行之間的關系,如下圖,Thread1的第二個塊的CABAC狀態保存下來,用於Thread2的起始CABAC狀態,依次類推進行並行編碼或解碼,因此行與行之間存在很大的依賴關系。通常該方法的壓縮性高於tiles。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM