本文对去方块滤波 (DBF, Deblocking Filter) 进行了介绍。目前H.264H.265有许多DBF的硬件论文,但是VP9/AV1相关的硬件成果较少。本文首先对DBF的算法进行简述,然后介绍一篇AV1DBF模块的硬件实现论文。
DBF是重要的环路滤波工具。近三代H.26x标准,环路滤波工具逐渐增加。H.264只有DBF,而H.265增加了样点自适应补偿 (SAO),H.266又增加了自适应环路滤波 (ALF)等工具。而AV1在环路滤波这方面,也有非常丰富的工具,包括去方块滤波、约束方向增强滤波器 (CDEF)、超分辨率重建 (US)、环路恢复滤波器 (LR)。
不同系列的标准各有特色,但是始终都有DBF,这可能意味着方块效应是重建帧中最为普遍并且最为明显的次生效应,对后续的预测准确率,包括主观视觉质量有比较大的影响。方块效应主要来源于帧间预测的运动补偿环节,以及量化误差。相比于早起标准的简单后处理滤波,DBF能够保留图像中的真实边界。并且能够根据不同情况,可以采用不同强度的滤波。此外,从标准发展上来看,H.265的去方块滤波算法基于H.264进行了改进,AV1基于VP9进行了改进。
H.264和H.265标准中,DBF的流程可以统一归纳为4个步骤。
1) 边界检测:H.264标准规定对图像内所有的4x4块边界进行滤波。而H.265仅对落在8x8网格上的PU/TU边界滤波。
2) 计算边界强度 (BS, Boundary Strength):根据边界两侧块的类型、mv(运动矢量)、是否含有非零系数等,确定待滤波边界的BS。
3) 滤波决策:进一步根据边界两侧像素的变化程度,进行滤波决策。
4) 滤波操作:根据BS及滤波决策结果,采用对应强度的滤波器进行滤波操作。
由于H.264标准中的滤波粒度比较小,而滤波器最多会参考边界两侧各4个像素,并改变边界两侧各3个像素,因此一个4x4小块的四条边界都存在数据依赖。而H.265标准对此进行了简化,表现在滤波粒度增大了,这首先意味着相同分辨率的图像中,待处理边界数量减少了;其次意味着一帧内所有的垂直边界可以并行处理,相互之间没有数据依赖,而所有的水平边界也是同理。
而在进行滤波决策时,H.264对每行像素独立进行判断,而H.265中为了减少计算复杂度,以4行像素为一组,并用第1行和第4行像素进行判断。另外,H.265不仅从滤波决策的公式上进行了简化,对滤波决策过程也进行了简化,需要的滤波器种类更少。
VP9的DBF也需要进行边界检测。对于尺寸分布在4x4~32x32的变换块 (TB, transform block),均需要处理其左侧和上方边界。
而DBF相关的参数也比较多。通过帧级参数loop_filter_level和loop_filter_sharpness可以首先得到lvl和sharpness这两个参数。
通过lvl和sharpness这两个参数,可以继续导出3个阈值参数:limit、blimit、thresh。这3个阈值分别用于衡量块内部像素、块边界像素、以及块边界方差的大小,从而去进行滤波决策。
滤波决策的结果,用几个mask参数来表示,各mask参数的含义如PPT所示。
对于不同的块大小、平坦度,需要选用不同的滤波器。一方面,块越大,过滤其边界就会采用越多抽头的滤波器。另一方面,根据前面计算出的表示平坦度的mask参数,对于平坦范围越大的块,也会采用越长的滤波器。
与H.26x系列标准相比,VP9的DBF算法具有较高的复杂度。一是,7抽头和15抽头的滤波器对软件或者硬件实现都有更高的带宽需求。二是数据依赖的问题。以本页PPT中的图为例,左右分别为Super block(SB)1和2。对于SB1中右下角的4x4变换块,首先会滤它的垂直边界V1,然后滤水平边界H1,采用的均为4抽头滤波器。而SB2的左下角可能是一个16x16大小的TB。当处理其垂直边界V2时,会采用15抽头的滤波器,此时会再次修改4x4块中的像素。即,因为长抽头的存在,以及这种重叠过滤的规定,SB2对SB1存在数据依赖。
而AV1就在VP9的基础上进行了一些改进,主要是为了减少复杂度以及数据依赖。例如,设置抽头的最大数量,使得像素不会被重复滤波。
接下来对目前唯一一篇AV1 DBF的硬件工作进行简介。右侧图是顶层架构,主要由4个DBFCore组成,一个Core的输入为一行14个像素。MB子模块计算mask参数,FB子模块进行滤波操作。其中,MB输出的f_len_adj就会限制最长的抽头数量。而对于无需滤波的情况,可以通过skip信号,减少FB子模块不必要的电路翻转,节省功耗。
最终,该架构能够实现如图所示的实验结果。
关 注 我 们 
  实验室网站:http://viplab.fudan.edu.cn/
  OpenASIC官方网站:www.openasic.org
  知乎专栏:http://zhuanlan.zhihu.com/viplab
  微信公众号:OpenASIC
继续阅读
阅读原文