HM 代码解读:
 
以最大CU64x64为例,4x4块为最小单元,一共有25616x16)个边界,根据一定的算法逻辑计算出每个边界的边界强度,然后以步进为28x8网格)遍历所有PU,在每个PU中再去根据边界强度执行相应的滤波处理。

 

理论基础:

在基于块的视频编码框架中,由于整个视频帧被划分为不同大小的块进行预测、变换和量化,重建图像的块边界处可能会出现不连续性,这就是块效应。

块效应可以通过去块滤波来消除。

HEVC滤波时考虑的最小块是8x8,对于每个8x8的网格边界,首先判断其是否属于TUPU的边界,如果否,则无需滤波。如果是,则根据下面的判据决定“边界强度”:

?     强度2:有至少一个块是帧内块。

?     强度1:符合以下三种情形之一:

1.      至少一个块含有非零的残差系数,并且该边界是一个变换边界(也就是TU的边界)。

2.      两个块的运动矢量的绝对差值大于1个整像素。

3.      两个块的参考帧不同或者运动矢量(MV)数目不同。

?  强度0:不符合上述条件的情况

对于亮度(Luma)分量,强度为0的边界不会被滤波;对于色度(Chroma)分量,强度小于2的边界不会被滤波。

对于强度为12的亮度边界,以及强度为2的色度边界,再看一个与QP有关的条件是否满足:如果满足则滤波,不满足则不滤。

对于进行滤波的亮度边界,分为普通滤波和强滤波。

普通滤波又分为两种情况:

1.       只有距边界最近的一个像素被修改

2.       距边界最近的两个像素被修改。

强滤波则对距边界最近的三个像素进行修改。

对于进行滤波的色度边界,只采用上述普通滤波的第一种情况。

 

究竟采取哪一种情况,都是根据与QP有关的条件来决定的。

11-02 12:05