文章目录
VTM中环路滤波的顺序: LMCS,deblocking filter,SAO 和ALF。其中deblocking filter和SAO 与HEVC中的相同。
Adaptive Loop Filter (ALF)
ALF代码详细过程见博文:https://blog.youkuaiyun.com/baidu_28446365/article/details/89927944
关于自适应滤波的原理,建议参考论文《Adaptive Loop Filtering for Video Coding》
ALF,自适应环路滤波,对于每个4x4的小块,根据direction and activity of local gradients从25个滤波器中选择一种对其进行滤波。
简单来说,ALF将每个4x4的小块分为25种(根据方向性和梯度值),同一种类的小块使用同一种滤波器进行滤波,那么编码器总共只需要传输25组滤波器的滤波系数。
因此提高ALF效率的关键主要在于以下几点:如何准确的进行块分类,如何选择滤波的形状,如何传输滤波器系数可节省比特数。
1.滤波形状(Filter shape)
使用如下所示两种钻石形状的滤波器,5x5大小的适用于色度分量,7x7适用于亮度分量。
2.块分类(Block classification)
对不同的小块使用不同的滤波器,因此需将这些小块进行分类,以区分出小块要使用的滤波器是哪一种。
对于亮度分量,每个4x4小块被分为25个种类,类别Idx计算规则如下:
C = 5 D + A C=5D+A C=5D+A
其中D和A分别表示当前块的Direction和Activity;计算之前需要先用1-D拉普拉斯算子计算当前块的水平、垂直和两个对角方向的gradient如下:
i和j为4x4小块左上角像素点的坐标,R(i,j)表示坐标(i,j)处的重建像素。
为了降低块分类的复杂度,VTM采用了基于下采样的1-D拉普拉斯计算,下采样如图所示
水平垂直方向上D的最大最小值如下
对角线方向上D的最大最小值如下