複製鏈接
請複製以下鏈接發送給好友

取樣自適應偏移

鎖定
取樣自適應偏移(英語:Sample Adaptive Offset,縮寫SAO)為H.265/高效率視訊編碼內嵌式濾波器的一種,其餘兩種內嵌式循環濾波器分別是:去區塊效應濾波器(Deblocking Filter)、調適性循環濾波器(Adaptive Loop Filter)。
中文名
取樣自適應偏移
外文名
SampleAdaptiveOffset

取樣自適應偏移介紹

高效率視訊編碼使用4x4至32x32大小的轉換單元,而H.264/高階視訊編碼使用的轉換單元不超過8x8,越大的轉換單元會產生更多的假影(Artifacts)包含量化所造成的振鈴現象;此外,高效率視訊編碼8階分數亮度取樣差值和4階分數彩度取樣差值,而H.264/高階視訊編碼分別使用6階分數亮度取樣差值和2階的分數彩度取樣差值,越高階的取樣差值會造成越嚴重的振鈴現象(Ringing Artifacts),因此高效率視訊編碼需要引入新的內嵌式循環濾波器,除了開發去區塊效應濾波器,更進一步引入全新概念的取樣自適應偏移濾波器。取樣自適應偏移藉由類重建的樣本為數個類來降低取樣的失真,過程中會取得每一類的偏移量,然後再將偏移量分別加到每一類裏的樣本,而每一類的偏移量會在編碼器裏適當地計算出且明確地將資訊給解碼器,以有效降低取樣失真,為了節省邊資訊(Side Information),樣本類會在編碼器和解碼器中實現;為了在只有一編碼樹單元的情況下達到低延遲,基於編碼樹單元的句法被設計成可以指定取樣自適應偏移的係數,此基於編碼樹單元最佳化算法可以導出每一編碼樹單元的取樣自適應偏移係數,並且將取樣自適應偏移係數交錯放入邊資料(Slide Data)。

取樣自適應偏移取樣處理過程

取樣自適應偏移會根據樣本的類和適用的區域而使用不同的偏移量,兩種取樣自適應偏移型態可以滿足高效率視訊編碼對於低運算量的要求,分別是:邊緣偏移、帶偏移,邊緣偏移的樣本類是基於比較當前樣本以及鄰近樣本,而帶偏移的樣本類是基於樣本值。為達到低編碼延遲以及減少緩衝區的使用量,類區域的大小會固定成一個編碼樹區塊的大小,若要再降低邊資訊的資料量,可以合併多個編碼樹單元共用取樣自適應偏移參數。
邊緣偏移(Edge Offset)
為了保持運算複雜度和編碼效率的平衡,邊緣偏移使用4種樣本類的一維方向圖形,分別為:水平、垂直、135度對角、45度對角,"c"代表當前的樣本,"a"和"b"則代表鄰近的樣本,每一種模式分別對應4種圖形。在編碼時,每一編碼樹區塊只能選擇一種邊緣偏移類,且基於優化失真率的考量,最佳的邊緣偏移類會以位元流(Bitstream)當作邊資訊傳送,又因為這些邊緣偏移圖形都是一維,所以類的結果不會確切地和臨界樣本相關。
對於一個給定的邊緣偏移類
(Class),在編碼樹區塊內的每個樣本會被分為5種形態(Category)中的其一,當前樣本"a"會根據選擇的一維方向模式和兩相鄰樣本"b"、"c"比較,比較的規則如下表:
型態
條件

1
c < a && c < b

2
(c < a && c == b)
(c == a && c < b)
3
(c > a && c == b)
(c == a && c > b)
4
c > a && c > b

0
不符合以上的條件

型態1及4分別關聯相對低值和相對峯值,型態2及3分別關聯凹面及凸面,若當前樣本無法歸於上面4種型態,則為型態0且將不適用取樣自適應偏移。這4種型態的意義以及其正負值,在邊緣偏移型態1和2中使用正偏移使得相對低值及凹面更平滑,若是使用負偏移則會使的圖形更尖鋭;而在邊緣偏移型態3和4中使用負偏移使得相對峯值及凸面更平滑,使用正偏移則更尖鋭。
説明了著名的吉布斯現象(Gibbs Phenomenon),可以用來模擬一些影像壓縮的假象,特別是振鈴現象(Ringing Artifacts),雖然水平軸和垂直軸沒有特別標記,但分別定義沿着一維路徑的樣本位置和樣本值,虛線代表原始的樣本,有色的實心圓代表相對低值、相對峯值、凸面、和凹面,其餘樣本則為空心圓。若在相對峯值、凸面使用負偏移,而在相對低值、凹面使用正偏移,可以有效減少失真。
帶偏移(Band Offset)
帶偏移為增加一偏移量至同一帶上的所有樣本,樣本的值域被等分為32帶,一個8位元樣本的值域為0到255,其寬度為8,取樣值從8k至8k+7屬於帶k,而k的範圍是0至31,而解碼器會得知在同一帶中原始樣本和重建樣本的平均差。解碼器只有4個連續帶和起始帶位置的偏移資訊 [1]  ,為了減少線性緩衝區的需求,這些由解碼器可取得的偏移量數目由16減少至4,而此數目正好相等於解碼器可得到的邊緣偏移量數目;而另一個會選擇只有4個帶的理由是這些區域經由圖片從四元樹分割成編碼樹區塊而減少時,可以有效限制在一個區域中的取樣範圍。

取樣自適應偏移編碼算法

一張圖片會被切割成多層的四元樹區域,為了決定取樣自適應偏移的係數,下列為處理的過程:
  • 1. 根據圖片大小,決定最大四元樹階層L。
  • 2. 分割圖片至最小四元樹階層L的區域。
  • 3. 從每一最小區域收集所有取樣自適應偏移的類型統計資料。
  • 4. 使k = L。
  • 5. 導出每一區域階層為k的取樣自適應偏移型態參數。
  • 6. 選出位元率-失真(Rate-Distortion)最小的取樣自適應偏移型態。
  • 7. 結合每一階層為k-1的父區域和階層為k的子區域的統計資料。
  • 8. 對於每一階層為k-1的父區域,根據失真率而決定是否合併階層為k的子區域。
  • 9. 使k = k – 1,若k大於0則跳至步驟5繼續,否則結束。
參考資料