HEVC中的編碼結構-編碼時的分層處理架構

引言

我們都知道HEVC裏有很多語法結構,爲什麼要設計那麼多的語法結構呢?答案是爲了增強操作的靈活性和數據損失的魯棒性。這些語法架構使得HEVC在壓縮效率網絡適應性都有顯著提升。

編碼時的分層處理架構

GOP

視頻序列由時間連續的圖像構成,這些圖像首先會被分成若干組,每一組圖像集合就是一個GOP(Group of Pictures)。

GOP分爲封閉式GOP和開放式GOP,封閉式的即每個GOP之間獨立編解碼,開放式的GOP則後面的GOP中的圖像可以使用前面的GOP中圖像作參考。

封閉式GOP第一幀爲IDR圖像,開放式GOP第一個GOP第一幀爲IDR圖像,後續GOP第一個幀內圖像爲non-IDR圖像。所謂IDR圖像就是一種特殊的幀內編碼圖像,其後面的圖像不能參考IDR之前的圖像。
在這裏插入圖片描述

Slice

一個GOP中有多幀圖像,每一幀圖像會被劃分爲一個或多個Slice。每個Slice之間獨立編解碼,即不需要依靠其他Slice的信息,因此每個Slice都需要進行熵編碼的初始化。

劃分爲Slice的主要目的是爲了在數據丟失後能再次保證解碼同步,且有利於並行運算。

Slice根據類型可以分爲I Slice,P Slice,B Slice。

  • I Slice裏所有CU使用幀內預測,其餘兩種Slice裏的CU可以使用幀內或幀間預測
  • P Slice裏所有幀間預測的預測塊只能有一個運動補償預測信息。P Slice只能有一個參考圖像列表。
  • B Slice裏所有幀間預測的預測塊最多可以有兩個運動補償預測信息,B Slice可以使用兩個參考圖像列表。

SS(Slice Segment)

每個Slice會被劃分爲一個或多個SS,且有一個獨立的SS和若干個依賴SS組成,且以獨立SS爲Slice的開始部分。每個SS由多個CTU組成(至少一個)。一個SS的編碼數據組成一個NAL單元傳輸。

  • 獨立SS,其相關信息可以由自己確定
  • 依賴SS,其某些相關信息需要用到獨立SS的信息推導

在這裏插入圖片描述

CTU(Coding Tree Unit)

由一個亮度CTB(Coding Tree Block)和兩個色度CTB及相應的語法元素組成,尺寸默認爲64x64,可以通過編碼器配置。一個SS會被分割成若干個相同大小的CTU進行編碼。

CU(Coding Unit)

由一個亮度CB(Coding Block)和兩個色度CB及相應的語法元素組成。CU由CTU通過四叉樹的形式劃分而來。一個CTU可以作爲一個CU,也可能進一步劃分爲多個小的CU。CU尺寸默認最小爲8x8,最大爲64x64,也是可以配置的。
大尺寸CU使得平緩區域編碼效率大大提高,小尺寸CU可以更好地處理圖像局部細節
在這裏插入圖片描述

Tile

圖像出了劃分成Slice還能劃分成Tile,Tile是一個矩形區域,包含整數個CTU,可以獨立解碼。其主要目的是爲了增強並行處理能力,同時不引入新的錯誤擴散
在這裏插入圖片描述
Slice和Tile需要至少滿足以下兩個條件之一:

  • 一個Slice中的CTU屬於同一個Tile
  • 一個Tile中的CTU屬於同一個Slice
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章