8-HEVC視頻編碼技術

成功運行HM10.0後,下面開始進入真正對HEVC標準採用的編碼技術的討論。參考文獻選用IEEE TCSVT 201212期的Overview of HEVC。
同H.264等前代的視頻編碼標準類似,HEVC依然採用了混合編碼框架,利用幀間預測去除時域相關,利用幀內預測去除空間相關,利用變換、熵編碼去除統計相關性。同前代技術相比,HEVC並未採用革命性的創新技術,而是針對現有技術進行小步快跑的改進,用積少成多的方法提高編碼的性能。
1、圖像的像素表示:
HEVC通常採用4:2:0採樣的YCbCr顏色空間表示視頻信號,每個分量支持8比特或10比特,通常情況採用8比特,且視頻爲逐行掃描信號。在圖像幀的大小方面,兩個色度分量的分辨率均爲亮度分量的1/4。
2、由圖像幀到樹形編碼單元的分割
一幀圖像分割成樹形編碼單元(coding tree units,CTUs),CTU包含亮度和色度分量CTB,是基本的處理單元。亮度分量CTB爲邊長爲16、32或者64的矩形塊,色度CTB的邊長爲亮度的一半,CTB的實際大小由碼流中的序列參數集合指定。更大尺寸的分塊可以更好地處理高清視頻信號。
3、由CTB分割爲CB:
亮度和色度CTB可以按照四叉樹結構進一步分解爲CB。四叉樹結構可以根據視頻信號的區域特徵將CTB分割成合適大小的CB塊。分割過程可反覆迭代,知道亮度CB的大小爲可支持的最小值8×8。在圖像的邊界處,CB爲最小支持尺寸。解碼器對可能“越界”的CTB會做專門處理。
4、PB和PU
每個CU的預測模式可能爲幀內或者幀間。若預測模式爲幀內,除了最小尺寸模式外,PB的尺寸等於CB。若是最小尺寸模式,則用標誌位表示是否將CB分割成四個PB塊。這樣最小可以支持到4×4大小的幀內預測塊(此時色度分量PB也爲4×4)。
若預測模式爲幀間預測,亮度和色度CB可能分割爲1/2/4個PB。只有CB爲最小尺寸模式時才能分割爲4個PB塊。CB分割爲四個PB時,每個PB佔據CB的1/4;CB分爲兩個PB時,可選擇6種分割模式的一種,其中包含不平均分割模式(只針對16×16及以上的亮度塊)。每個幀間預測PB包含一個或者兩個運動矢量和參考幀索引。爲控制編碼效率,4×4亮度塊不允許使用幀間預測,8×4和4×8最多隻允許單向預測編碼。
5、樹結構分解爲變換塊和變換單元
CB的殘差信號可按照殘差四叉樹分解爲變換塊(transform blocks,TBs),只能分解爲方塊,其最大和最小尺寸由編碼器指定。除了4×4之外,色度TB的邊長爲亮度TB的一半。
6、Slices和Tiles
Slice是幀中按光柵掃順序排列的CTU序列。一幀可以由多個slice組成,每個slice可以獨立解碼,因爲slice內像素的預測編碼不能跨越slice的邊界。每個slice可按照編碼類型的不同分爲I/P/B slice。該結構的主要目的是在傳輸中遭遇數據丟失後的重新同步。每個slice可攜帶的最大比特數通常受限,因此根據視頻場景的運動程度,slice所包含的的CTU數量可能有很大不同。
Tile是幀內可以獨立進行解碼的矩形區域,包含多個按矩形排列的CTU(數目不要求一定相同),定義這一結構的初衷是增強編解碼的並行處理性能。同一個slice內的多個tiles可共享相同的頭信息,一個tile也可以包含多個slice。另外還可以定義依賴性條帶的概念。
由於引入了波前並行編碼模式(wavefront parallel processing),一個slice可以按行分割成多個CTU,每一行的解碼可以在上一行的幾個CTU解碼完成後開始,採用這種方式支持CTU的並行處理。
7、幀內預測
【這是多少年的老問題,都快被研究爛了……現在真的一看見什麼“幀內”或者“運動搜索”之類的就睏意頓生……】HEVC的幀內預測要依據先前解碼完成的TB塊和TB的大小確定。對於從4×4到32×32大小的TB塊而言,定義了33種預測方向以及DC和planar兩種特殊模式。對於色度塊,可顯式指定水平、垂直、planar和DC模式,也可以採用跟亮度預測一致的模式。同H.264類似,HEVC的幀內預測在各種不同類型slice中都可支持。【視頻編碼的各個技術中,我覺得幀內算是最簡單最容易理解的,沒有之一。所以具體的細節也不多寫了,感興趣的可以去看參考文獻(“Overview of HEVC”,IEEE TCSVT 2012.12),相信熟悉H.264的童鞋馬上就能看懂】。
8、幀間預測
HEVC幀間預測的PB分塊方法比幀內預測複雜,分塊模式可以將CB分割成1整塊、水平二等分、垂直二等分等。在CB爲最小尺寸模式下,可分割爲等大小的4小塊。另外非對稱運動分割(asymmetric motion partitions)支持分割成不同大小的塊。
同H.264類似,HEVC支持亮度的亮度的1/4精度的亞像素差值。色度信號的精度由採樣格式確定,對4:2:0信號而言,爲1/8精度。
合併模式:該模式可以從當前塊的時間或空間鄰域塊導出運動矢量,將共享運動信息的區域生成一個合併區域。合併模式的候選數據集合包括空間鄰域塊,一個時間鄰域塊和生成鄰域塊。每個候選快需驗證其可用性。對空間候選塊,若當前PU的候選要參考同CU內的PU,則排除該候選塊,運動信息相同的候選塊也樣一併排除。對時間候選塊的位置,選擇參考幀中相應位置的PU區域外右下方(如果可用),否則選用居中位置。
非合併模式下的運動矢量精度:以運動矢量預測的方式進行編碼,利用運動矢量預測、預測索引和運動矢量殘差。
9、變換量化
HEVC使用的變換編碼方法同前期標準類似,仍然採用二維DCT變換,變換塊的大小爲4×4, 8×8,16×16或32×32。對於4×4大小的塊,採用二維DST變換。
量化算法同H.264類似,量化矩陣爲降低空間複雜度,只採用4×4和8×8大小。
10、熵編碼
HEVC僅採用CABAC一種熵編碼方法。同H.264相比,捨棄了CAVLC。
11、環路濾波器
HEVC中環路濾波分爲兩步,即去塊濾波(Deblocking filter, DBF)和採樣自適應濾波(SAO filter)。SAO是HEVC中新引入的技術,它不僅限於在邊界,而是自適應地處理所有滿足一定條件的像素。
除非PU或TU塊的邊緣也是幀的邊緣或在條帶及tiles邊緣被禁用(由SPS和條帶頭控制),DBF會作用於所有塊的邊界。爲了在不造成明顯畫質降低的前提下減小最差情況運算複雜度,在對亮度和色度4×4處理時,DBF僅僅處理對齊於8×8邊界的塊邊緣。DBF強度根據不同情況採用0、1、2三檔。
SAO作用於DBF之後,根據查表法,對符合一定條件的像素加一個偏移量。偏移量表由編碼器端發送。
12、特定的編碼模式
除了以上編碼技術之外,HEVC還制定了I_PCM,無損模式和變換跳過模式。
【很多內容我也還沒有理解透徹,因此經常一筆帶過。在研究編解碼器的程序時,將結合程序仔細研究用到的技術。】
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章