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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

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

Deblocking Filter的作用

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

塊效應(yīng)(block artifact)

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

這就導(dǎo)致不同的編碼塊會(huì)使用不同的編碼參數(shù),進(jìn)而不同編碼重建塊之間的存在一定的差異,尤其在編碼塊邊界處較為明顯。

編碼塊邊界處不連續(xù)的現(xiàn)象就是塊效應(yīng)。

這種現(xiàn)象在QP較大時(shí)比較明顯,因此QP越大Deblocking的強(qiáng)度也越大。塊效應(yīng)如下圖所示:

濾波邊界判決

濾波位置

在HEVC中,濾波只對(duì)橫坐標(biāo)或縱坐標(biāo)位于8像素的整數(shù)倍處的邊界進(jìn)行,所謂邊界即是CU、PU或TU的交界處。

濾波順序

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

圖中每個(gè)網(wǎng)格大小都是8x8,首先會(huì)從左至右進(jìn)行實(shí)線邊界的濾波(如果是邊界的話),接下來會(huì)從上至下進(jìn)行虛線邊界的濾波(如果是邊界)。

在HEVC中,豎直的邊界之間濾波互不影響,因此可以同時(shí)進(jìn)行。對(duì)于水平邊界同理。

邊界強(qiáng)度(Boundary strength, Bs)

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

可以看到:

  • 當(dāng)兩個(gè)相鄰塊有一個(gè)以上的幀內(nèi)預(yù)測塊時(shí),Bs=2
  • 當(dāng)兩個(gè)相鄰塊有一個(gè)以上的非零變換系數(shù)塊時(shí),Bs=1
  • 當(dāng)兩個(gè)相鄰塊的運(yùn)動(dòng)矢量差值絕對(duì)值大于一個(gè)色度分量像素時(shí),Bs =1
  • 當(dāng)兩個(gè)相鄰塊參考不同圖像時(shí),Bs =1
  • 其余情況Bs=0

即我們認(rèn)為相鄰塊的預(yù)測模式、運(yùn)動(dòng)矢量、變換系數(shù)差異越大時(shí),它們的邊界就越明顯。

對(duì)于亮度度分量,只有當(dāng)Bs>0才會(huì)應(yīng)用Deblocking,而對(duì)于色度分量,只有Bs>1才會(huì)應(yīng)用Deblocking

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

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

Deblocking以4x4像素塊為基本單位進(jìn)行,如下圖,對(duì)于豎直邊界而言,每次進(jìn)行Deblocking的像素為其兩側(cè)的兩個(gè)4x4像素塊。

計(jì)算出當(dāng)前邊界的Bs后,如果Bs滿足條件,還需要進(jìn)一步判斷邊界兩側(cè)的像素是否滿足下式:

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

濾波強(qiáng)度

HEVC中有兩種濾波模式:強(qiáng)濾波、一般濾波。確定當(dāng)前邊界要濾波后還要判斷是要進(jìn)行強(qiáng)濾波還是一般濾波。

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

是否進(jìn)行強(qiáng)濾波由下面3個(gè)式子判斷:

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

整體的流程圖如下:

接下來介紹一般濾波和強(qiáng)濾波怎么做

一般濾波

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

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

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

兩個(gè)式子分別對(duì)邊界的兩邊進(jìn)行判斷,有可能一邊需要改變一個(gè)像素,而另一邊需要改變兩個(gè)像素。

對(duì)于邊界兩邊兩個(gè)4x4的塊而言,每一行都需要進(jìn)行上述操作。

除了7.5 與7.6的條件外,還需要滿足一個(gè)條件才能進(jìn)行濾波:

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

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



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

通過濾波,消除塊效應(yīng),如下示意圖:

強(qiáng)濾波

強(qiáng)濾波通常作用于平坦區(qū)域,這些區(qū)域的塊效應(yīng)往往更加明顯。強(qiáng)濾波每四個(gè)像素改變?nèi)齻€(gè)像素的值。如下:

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

色度分量的Deblocking

前面說到過,色度分量只有Bs=2時(shí)才進(jìn)行Deblocking。

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

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

自適應(yīng)濾波

前面式子中有兩個(gè)參數(shù)是查表得到的即β\betaβtct_ctc?。其實(shí)我們可以自己定義他們的值,進(jìn)而實(shí)現(xiàn)對(duì)濾波的自適應(yīng)控制。像HM中就有輸入?yún)?shù)可以控制。在PPS中也會(huì)有相應(yīng)的語法元素:tc_offset_div2 和 beta_offset_div2。實(shí)際的 tct_ctc?值就等于 tct_ctc? + tc_offset_div2 * 2, β\betaβ同理。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。