H.266/VVC代码学习45:去块滤波器算法简介(DBF,翻译自JVET-P2002)

去块滤波即DBF,是环路滤波过程的第一个滤波器。VVC中的去块滤波过程与HEVC中的类似。但是,添加了以下修改(见文章目录)。

1 滤波强度不再只取决于QP,还依赖于重建平均亮度偏移值

在HEVC中,去块滤波器的滤波器强度由变量βtc控制,变量βtc是从平均量化参数qPL得出的。
在VVC中,通过向qPL添加偏移量LL来控制滤波强度,这个偏移量是通过重建亮度像素的值得到的。重建的亮度偏移值LL推导如下:
在这里插入图片描述
其中,上式提到的像素位置如下图所示:
在这里插入图片描述
最终,qPL(笔者认为这里的qPL已经加上了前面的LL)的取值如下所示:
在这里插入图片描述
其中QpQQpP分别表示包含上图CU的量化参数。偏移量qpOffset取决于传递函数,这些值在SPS中用信号表示。

2 去块化tC表扩展并适应10位视频

在VVC中,最大QP从51改变为63,因此应当将相应的改变反映到去块滤波使用的tC表上。
去块滤波使用的表基于块QP查找出参数tC的值。该表还应该从HEVC的8位视频改为VVC的10位视频。以下是新的tC表:
在这里插入图片描述

3 引入亮度以4x4块为单位的去方块滤波

HEVC对亮度和色度均使用8x8去块网格。在VVC中,引入了针对亮度边界的4x4网格上的去块滤波,以处理来自矩形变换块伪像。
当块的宽度为4或更小时,将要去方块的像素数量限制为亮度垂直边界的每一侧上的1个像素距离;同样的,当块的高度为4或更小时,作用到亮度水平边界的每一侧上的1个像素距离。通过这样的方式来实现4x4网格上的并行友好的亮度去方块操作。

4 亮度使用更强的滤波器

当边界的任一侧的样本属于大块时,使用双线性滤波器(强解块滤波器)进行滤波。
所谓大块,指当前块垂直边缘的相邻块宽度大于或等于32、或当前块水平边缘的相邻块高度大于或等于32时。
然后,将i = 0到Sp-1的块边界样本pi,和j = 0到Sq-1的块边界样本qj替换为线性插值,计算方法如下所示:
在这里插入图片描述
其中tcPDitcPDj,term是与位置有关的嵌位,而gjfiMiddlest_s,tPsQs是决定这更强的亮度滤波系数的,更强的亮度滤波系数如下所示:
在这里插入图片描述
仅当3个条件都为满足时,才使用上面提到的更强的亮度去块滤波器。条件1是刚才所说的“大块条件”,该条件检测P侧和Q侧的样本是否属于大块。条件2和条件3需要经过以下判断来确定:
条件2:d需要小于β
条件3:dpq 需要小于β/4 && sp3需要小于3β/64 && |p0-q0|需要销毁5tc/2

5 色度使用更强的滤波器

定义了如下3种强度的色度去块滤波器:
在这里插入图片描述
上面的色度滤波器对8x8色度网格执行去块滤波操作,用于色度块边界的两侧。这里,色度也有“大块条件”,即当色度边缘的两侧的块边界尺寸都大于或等于8时,才会选择色度滤波器。并且需要继续以下三个条件的判定。前面说过的第一个条件用于确定边界强度以及大块。第二个和第三个与HEVC亮度决定基本相同,分别是开/关决策和滤波强弱决策
首先确定边界强度以进行色度过滤,如下表所示。依次检查下表的条件。如果满足优先级高的条件,那么将跳过优先级较低的其余条件。
在这里插入图片描述
对于色度的去块滤波:bS等于2时,或在检测到大块边界且bS等于1时,才会执行色度去块。第二个和第三个条件与HEVC亮度强滤波器决策基本相同。

6 子块边界也要进行滤波

去块滤波处理应用于CU边界TU子块边界的4×4网格上以及PU子块边界的8×8网格上。
预测子块边界包括由SbTMVPAffine模式引入的CU边界,而变换子块边界包括由SBTISP模式引入的变换单元边界,以及由于大CU的隐式拆分而引起的变换。

对于SBT和ISP子块,类似于HEVC解块滤波器中TU中的逻辑,当跨边缘的任一变换子块中存在非零系数时,将去块滤波器应用于TU边界。对于SbTMVP和Affine预测子块,类似于HEVC中的PU中的逻辑,在考虑相邻预测子块的运动矢量和参考图片之间的差异的基础上,将解块滤波器应用于8x8网格。

关于每个subTU边界使用多少像素来进行DBF,如下所述:
当位于TU边界时,最多可以在变换边界的一侧用5个像素进行去方块滤波,其中使用SbTMVP或仿射来启用并行去块也是这种编码块的一部分。
当subTU边界距离TU边界4个像素距离的,在subTU边界的每一侧最多由1个样本去块;
当subTU边界距离TU边界8个像素距离的,在subTU边界的每一侧最多用2个样本去块,
其他subTU边界,在subTU边界每一侧最多用3个样本去块滤波。

7 对更小MVD也进行去块滤波决策

HEVC中,当在边界的相应侧上的块之间的至少一个运动向量分量中的差等于或大于1像素距离的阈值时,才对PU边界进行去块滤波。
在VTM中,引入了半亮度精度这一阈值,因此也能够消除帧间PU之间边界更小MVD的方块效应。

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/103007230