今天看看264的滤波。
和265、266比起来,264只有一个DBF,看看有没有有意思的地方。
264的滤波位置与265和266相同。
具体的处理方式和265有区别:265是以8x8的块为基础,264是以宏块中的4x4块为基础。
Filtering is applied to vertical or horizontal edges of 4x4 blocks in a macroblock excluding edges on slice boundaries, in the following order:
1. Filter 4 vertical boundaries of the luma component in order a,b,c,d in Figure 6.45
2. Filter 4 horizontal boundaries of the luma component in order e,f,g,h Figure 6.45
3. Filter 2 vertical boundaries of each chroma component (i,j)
4. Filter 2 horizontal boundaries of each chroma component (k,l)
以竖直方向的边界为例,简单说明滤波:
p和q分别是边界两边的像素值
滤波里面有两个概念:边界强度Bs和滤波强度
边界强度是指:看当前这个块边界有没有明显到需要进行滤波
边界强度的计算方式如下
1. 如果p或者q使用intra模式编码并且当前边界是宏块的边界,那么Bs=4
2. 如果p或者q使用intra模式编码并且当前边界不是宏块边界,那么Bs=3
3. 如果p和q都没有使用intra模式编码;如果p或者q包含编码系数,那么Bs=2
4. 如果p和q没有使用intra模式编码;p和q都不包含编码系数;
p和q的参考帧不同或者参考帧数量不同或者MV不同,那么Bs=1
5. 如果p和q没有使用intra模式编码;p和q都不包含编码系数;
p和q参考帧相同并且MV相同,那么Bs=0,不进行滤波
滤波强度是指:如果确定要进行滤波,那么要进行多狠的滤波
滤波操作最多影响边界上的三个像素点,滤波强度取决于QP、相邻块的编码模式和边界周围图像梯度。
(p2,p1,p0,q0,q1,q2)会在下面两种情况下滤波:
(1) Bs > 0
(2) |p0-q0|,|p1-p0| and |q1-q0| 分别小于α和β,α和β是定义在标准中的,随QP的增大而增大。这是在视频图像内容有明显纹理的情况下尽可能不去滤波,防止模糊。
实际滤波的过程中会影响边界周围几个像素点取决于下面(都是规矩,没什么好理解的,直接截图了):
总体来说,和265、266的没什么区别,甚至会更简单。