去區塊濾波器

去區塊濾波器(英語:Deblocking Filter縮寫DBF)又稱去塊效應濾波器是一種減少在區塊邊界產生視覺上瑕疵的濾波器。這種視覺瑕疵可稱為區塊效應(Blocking Effect),這種效應主要構成原因是因為以區塊為基礎(Block-Based)的編解碼器(Codec)所造成的人造邊界(Blocking Artifacts)。以區塊為基底的編解碼器有很多種,H.264/高階視訊編碼(Advanced Video Coding, AVC)以及H.265/高效率視訊編碼(High Efficiency Video Coding, HEVC)[1]都是這類型的編解碼器,而這些編解碼器均會在解碼(Decode)過程中利用去區塊濾波器將區塊效應的影響降低以改善視訊影像的品質。

介紹

以區塊為基礎的編解碼器在預測(Prediction)或是轉換(Transform)編碼時,無論是高階視訊編碼中的宏區塊(Macroblock)或是高效率視訊編碼中的編碼樹單元(Coding Tree Unit)都會將影像分成區塊再做編碼。因此影像重建時會造成在區塊間邊緣處不連續的現象,這個現象稱為區塊效應,而這些區塊邊緣間視覺上的不連續稱為人造邊界。人造區塊主要成因可在細分成兩個,第一個是因為預測時出現不準的地方稱為殘量(Residual),殘量會利用離散餘弦變換(Discrete Cosine Transform, DCT)做量化(Quantization),由於量化與反量化會產生誤差,因此會在區塊邊界上產生視覺上的不連續。第二個原因是來自運動補償,同一個畫面內相鄰區塊可能不是從前幾個編碼影像中相鄰區塊取得來做預測,因此造成不連續的現象。同樣地,畫面內預測的方式也可能會造成影像不連續。[2] 去區塊濾波器主要有三個工作,分別是邊界強度計算(Boundary Strength Computation)、邊界分析(Boundary Analysis)及濾波器應用(Filter Implementation)。

  1. 邊界強度計算:主要是去計算邊界強度(Boundary Strength, Bs)這個參數,邊界強度呈現出相鄰區塊邊界不連續的程度,而這個參數會跟量化的方式、區塊類型、移動向量以及邊界取樣的梯度有關。
  2. 邊界分析:因為區塊邊緣不連續的現象可能真的是物件邊緣所產生,並非所謂的人造邊界,這個工作主要在判斷是否為人造邊界。
  3. 濾波器的應用:做完前面兩個工作可以決定邊界強度以及判斷是否真的為人造邊界,這個工作主要對人造邊界依造對應的邊界強度選擇該應用的濾波器。

高階視訊編碼(AVC)的去區塊濾波器

高階視訊編碼的去區塊濾波器會對每個宏區塊做濾波,其濾波順序為由左上到右下。下面詳細介紹高階視訊編碼如何做去區塊編碼,首先將一個16x16的宏區塊切割成更小的4x4區塊,如圖一所示。每個4x4的區塊會做到濾波的邊界為左邊跟上面的邊界,分別屬於垂直邊界與水平邊界。先利用水平濾波器對垂直邊界做濾波之後再利用垂直濾波器對水平邊界做濾波,圖一內的紅色數字為做濾波的順序。特別注意到如果4x4區塊的邊界為影像的邊界則不做區塊濾波。

 
圖一、高階視訊編碼中去區塊濾波器將宏區塊分割成更小的4x4區塊,粗線為要做濾波的邊界,紅色數字為濾波順序。

邊界強度

每一個4x4的亮度區塊中需要做濾波的區塊都會計算出一個邊界強度。色度區塊的邊界強度是對亮度區塊已經求得的邊界強度做取樣,如圖二所示。

 
圖二、亮度與色度邊界強度的示意圖,紅字為垂直邊界強度,藍字為水平邊界強度。

計算邊界強度(Bs)以決定兩個4x4的區塊間不連續的程度。高階視訊編碼的邊界強度值從0到4。若兩個區塊皆屬於畫面內編碼(Intra-coded)且邊界屬於宏區塊的邊界,則這兩個區塊間的邊界強度為4。若其中一個為畫面內編碼或是不在宏區塊的邊界上,則這兩個區塊間的邊界強度為3。若這個區塊的轉換係數非0,則這兩個區塊間的邊界強度為2。最後如果使用不同的參考影像或是兩個區塊間的移動向量(Motion Vectors)大於等於4,則這兩個區塊間的邊界強度為1。剩下的情況,兩個區塊間的邊界強度皆為0。總結以上敘述得到邊界強度的判斷流程如圖三所示。

 
圖三、決定邊界強度的流程圖。

邊界分析

 
圖四、水平濾波器對垂直邊界做濾波的示意圖。

邊界強度如果大於0則對這個邊界進行分析,判斷是否為人造邊界。圖四是利用水平濾波器對垂直邊界做濾波的示意圖,一行有八個點p3、p2、p1、p0、q0、q1、q2以及q3,p0及q0之間為兩區塊的邊界。判斷是否為人造邊界的條件如下所示:

  1. Bs != 0
  2. |p0 - q0| < α(IndexA
  3. |p1 - p0| < β(IndexA
  4. |q1 - q0| < β(IndexB

α與β兩個函數一般利用查表法計算值,而IndexA和IndexB計算方式如下

IndexA = Min(Max(0,QP + OffsetA), 51)
IndexB = Min(Max(0,QP + OffsetB), 51)

其中OffsetA和OffsetB為編碼器的參數,QP為量化參數(Quantization Parameter)。如果上面四個條件是都成立則p0與q0之間的邊界為人造邊界。

高效率視訊編碼(HEVC)的去區塊濾波器

高效率視訊編碼(HEVC)的去區塊濾波器是以高階視訊編碼的為基礎,但不像高階視訊編碼採用4x4的區塊大小,高效率視訊編碼採用8x8的區塊大小,這個限制減少最糟情況的運算複雜度而不降低視覺上的品質。高效率視訊編碼還改進去區塊濾波器可以讓互不相重疊的區塊平行做處理,邊界強度也從0到4變為0到2。[1][3]

參考資料

  1. ^ 1.0 1.1 G.J. Sullivan; J.-R. Ohm; W.-J. Han; T. Wiegand. Overview of the High Efficiency Video Coding (HEVC) Standard. IEEE Transactions on Circuits and Systems for Video Technology. 2012-12 [2013-06-27]. (原始内容存档于2019-08-08). 
  2. ^ Applechen. Deblocking Filter(去方块滤波). 2006-03-20 [2013-06-27]. (原始内容存档于2017-08-01). 
  3. ^ A. Norkin; G. Bjontegaard; M. Narroschke; M. Ikeda; K. Andersson; M. Zhou; G. Van der Auwera. HEVC Deblocking Filter. IEEE Transactions on Circuits and Systems for Video Technology. 2012-12 [2013-06-27]. (原始内容存档于2019-08-08).