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代表两个相邻的块