日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

HEVC中的去方块滤波——Deblocking Filter

發布時間:2023/12/29 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HEVC中的去方块滤波——Deblocking Filter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Deblocking Filter的作用

Deblocking與SAO都是HEVC中的環路濾波器,重建圖像會首先經過Deblocking,再進行SAO。Deblocking主要用來去除編碼的塊效應,SAO消除圖像的振鈴效應。

塊效應(block artifact)

我們知道現在的主流編碼器都是使用基于塊的混合編碼框架,以編碼塊為單位進行預測、變換、量化。

這就導致不同的編碼塊會使用不同的編碼參數,進而不同編碼重建塊之間的存在一定的差異,尤其在編碼塊邊界處較為明顯。

編碼塊邊界處不連續的現象就是塊效應。

這種現象在QP較大時比較明顯,因此QP越大Deblocking的強度也越大。塊效應如下圖所示:

濾波邊界判決

濾波位置

在HEVC中,濾波只對橫坐標或縱坐標位于8像素的整數倍處的邊界進行,所謂邊界即是CU、PU或TU的交界處。

濾波順序

在一幅圖像中,首先對豎直的邊界進行濾波,之后在對水平的邊界進行。如下圖:

圖中每個網格大小都是8x8,首先會從左至右進行實線邊界的濾波(如果是邊界的話),接下來會從上至下進行虛線邊界的濾波(如果是邊界)。

在HEVC中,豎直的邊界之間濾波互不影響,因此可以同時進行。對于水平邊界同理。

邊界強度(Boundary strength, Bs)

一個邊界是否需要濾波需要看它的邊界強度。主要是通過相鄰的塊的編碼信息來判斷,如預測模式或運動矢量。Bs的取值由下表得到:

可以看到:

  • 當兩個相鄰塊有一個以上的幀內預測塊時,Bs=2
  • 當兩個相鄰塊有一個以上的非零變換系數塊時,Bs=1
  • 當兩個相鄰塊的運動矢量差值絕對值大于一個色度分量像素時,Bs =1
  • 當兩個相鄰塊參考不同圖像時,Bs =1
  • 其余情況Bs=0

即我們認為相鄰塊的預測模式、運動矢量、變換系數差異越大時,它們的邊界就越明顯。

對于亮度度分量,只有當Bs>0才會應用Deblocking,而對于色度分量,只有Bs>1才會應用Deblocking

此外,對于亮度分量而言,邊界兩邊的像素如何進行Deblocking需要進一步判斷,而對于色度分量,兩邊則相同,不用進一步判斷。

Bs獲取的流程如下圖,其中P,Q代表兩個相鄰的塊

Deblocking以4x4像素塊為基本單位進行,如下圖,對于豎直邊界而言,每次進行Deblocking的像素為其兩側的兩個4x4像素塊。

計算出當前邊界的Bs后,如果Bs滿足條件,還需要進一步判斷邊界兩側的像素是否滿足下式:

其中beta跟量化參數有關,可以查表得到,不用關注。其余的p和q對應上圖中的像素值。這個式子就在說雖然兩個塊的差異較為明顯,中間有一條邊界,但是兩個塊內部應該是比較平坦的,內部差異較小,這樣才是我們想要濾波的情況。

濾波強度

HEVC中有兩種濾波模式:強濾波、一般濾波。確定當前邊界要濾波后還要判斷是要進行強濾波還是一般濾波。

濾波強度不要和邊界強度搞混了。邊界強度Bs是告訴你這里有沒有邊界,濾波強度則是來判斷邊界是不是很明顯,需不需要狠狠地濾一波。

是否進行強濾波由下面3個式子判斷:

其中Tc也是查表得到的。i=0,3 也就是說要判斷4x4塊中的第1行和第4行是否滿足這三個式子,都滿足就進行強濾波。

整體的流程圖如下:

接下來介紹一般濾波和強濾波怎么做

一般濾波

對于一般濾波,有可能改變一個像素值,也有可能改變兩個像素值,需要通過下式來判斷:

7.5式用來判斷P中改變幾個像素值,7.6式用來判斷Q中改變幾個像素值。如果滿足式子則改變兩個,否則改變一個。

這兩個式子的含義就是說塊越平坦也就意味著P和Q的邊界越明顯,即需要改變的像素也就越多。

兩個式子分別對邊界的兩邊進行判斷,有可能一邊需要改變一個像素,而另一邊需要改變兩個像素。

對于邊界兩邊兩個4x4的塊而言,每一行都需要進行上述操作。

除了7.5 與7.6的條件外,還需要滿足一個條件才能進行濾波:

其中tct_ctc?是查表得到的,這個式子是為了避免斜坡型的紋理被濾波。整體濾波的判斷流程如下:

濾波后的像素值由下式得到:



也就是在原始像素的基礎上加上偏移值,具體偏移值怎么算的還有一系列式子,這里就不說了。

通過濾波,消除塊效應,如下示意圖:

強濾波

強濾波通常作用于平坦區域,這些區域的塊效應往往更加明顯。強濾波每四個像素改變三個像素的值。如下:

Q塊也是同理,將式中的p換成q即可。

色度分量的Deblocking

前面說到過,色度分量只有Bs=2時才進行Deblocking。

色度分量的濾波比較簡單,只改變每四個像素中的一個,即p0和q0,的值。也不用分強濾波還是一般濾波,邊界兩側也都是改變一個像素。

像素值的濾波方式跟式7.7和7.8一樣,只不過其中的delta由下式獲得:

自適應濾波

前面式子中有兩個參數是查表得到的即β\betaβtct_ctc?。其實我們可以自己定義他們的值,進而實現對濾波的自適應控制。像HM中就有輸入參數可以控制。在PPS中也會有相應的語法元素:tc_offset_div2 和 beta_offset_div2。實際的 tct_ctc?值就等于 tct_ctc? + tc_offset_div2 * 2, β\betaβ同理。

總結

以上是生活随笔為你收集整理的HEVC中的去方块滤波——Deblocking Filter的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。