基于ADSP-BF533处理器的去方块滤波器的实现及优化
发布时间:2008/5/29 0:00:00 访问次数:259
在已有的基于块的视频编解码系统中,当码率较低时都存在方块效应,新的视频编码标准h.264中亦是如此。产生这种方块效应的主要原因有两个:一是由于对变换后的残差系数进行的基于块的整数变换后,以大的量化步长对变换系数进行量化会使得解码后的重建图像的方块边缘出现不连续;二是在运动补偿中插值运算引起的误差使得编解码器反变换后的重建图像会出现方块效应。如果不进行处理,方块效应还会随着重构帧积累下去,从而严重地影响图像的质量和压缩效率。为了解决这一问题,h.264中的去方块滤波技术采用较为复杂的自适应滤波器来有效地去除这种方块效应。因此,如何在实时视频解码中优化去方块滤波算法,降低计算复杂度,提高重建图像质量,就成了h.264解码的一个关键问题。
1 h.264的去方块滤波
1.1 滤波原理
大的量化步长会造成相对较大的量化误差,这就可能将原来相邻块“接壤”处像素间灰度的连续化变成了“台阶”变化,主观上就有”伪边缘”的方块效应。去方块效应的方法就是在保持图像总能量不变的条件下,把这些台阶状的阶跃灰度变化重新复原成台阶很小或者近似连续的灰度变化,同时还必须尽量减少对真实图像边缘的损伤。
1.2 自适应滤波过程
在h.264中,去方块滤波器是按照16×16像素的宏块为单位顺序进行的,在宏块中按照每个4×4子块之间的边缘以先垂直后水平的顺序进行,从而对整个重建图像中的所有边缘(图像边缘除外)进行滤波。具体的边缘示意图如图1所示。对于16×16像素的亮度宏块,共有4条垂直边缘,4条水平边缘,每条边缘又分为16条像素边缘。而对应8×8像素的色度宏块有垂直边缘和水平边缘各2条,每条边缘分为8条像素边缘。像素边缘是进行滤波的基本单元。
1.2.1 滤波器在两个层次上的自适应性
h.264中的去方块滤波所以有较好的滤波效果,是由于它在以下两个层次上的自适应性。
1) 滤波器在4×4子块级别的自适应性
滤波是基于各个子块中的像素边缘进行的,通过对每一条像素边缘定义一个参数bs(边缘强度)来自适应地调节滤波的强弱和涉及的像素点。色度块的像素边缘强度与相应的亮度像素边缘强度相同。假设p和q为两个相邻的4×4子块,其中的像素边缘强度通过图2的步骤获得。bs的值越大,则对相应的边缘两侧进行的滤波越强,这是根据产生方块效应的原因来设定的,如采用帧内预测模式的子块的方块现象较明显,则对该子块中的对应边缘设定较大的像素边缘强度值来进行强滤波。
2) 滤波器在像素点级别上的白适应性
正确区分由于量化误差、运动补偿产生的虚假边缘和图像中的真实边界才能得到好的滤波效果。通常,真实边界两侧的像素梯度差值要比虚假边界两侧的像素梯度差值大,因此,滤波器通过对边缘两侧像素点的灰度值的梯度差值设定门限α、对同一侧的相邻像素点的灰度值的梯度差值设定门限β来进行真伪边界的判定。α和β的值主要与量化步长有关,当量化步长大时,量化误差也大,方块效应就明显,易产生虚假边界,因此门限值随之变大,放宽滤波条件。反之,量化步长小时门限值也变小,体现了自适应性。采样点的设置见图3。若条件都满足,则进开始滤波。
除了这两种自适应性,还可以通过设置位于片级的系数loopfilteralphac0offset、loopfilterbetaoffset来调整滤波的强度。例如当传输码率较低时,方块效应较明显,接收端想要主观质量相对较好的图像,则编码端可通过设置位于片头信息中的滤波偏移量loopfil-teralphac0offset,loopfilterbetaoffset为正值,以此增大α和β来加强滤波,通过去除方块效应来提高图像主观质量。或者对于高分辨率的图像,可以通过传送负值偏移来减弱滤波,尽量保持图像的细节。
1.2.2 依据各像素边缘bs值对相邻的像素滤波
若当前像素边缘符合滤波条件,则根据其相应的bs值选取对应的滤波器进行滤波并且进行适当的剪切操作,以防止图像的模糊。
当bs值是1,2,3时,采用一个4抽头的线性滤波器,对输入的p1、p0、q0、q1进行滤波调整得到新的q0、p0,如果内部有虚假边界,则进一步调整q1、p1的值。
当bs值是4时,则对应的是采用帧内编码模式的宏块边缘
在已有的基于块的视频编解码系统中,当码率较低时都存在方块效应,新的视频编码标准h.264中亦是如此。产生这种方块效应的主要原因有两个:一是由于对变换后的残差系数进行的基于块的整数变换后,以大的量化步长对变换系数进行量化会使得解码后的重建图像的方块边缘出现不连续;二是在运动补偿中插值运算引起的误差使得编解码器反变换后的重建图像会出现方块效应。如果不进行处理,方块效应还会随着重构帧积累下去,从而严重地影响图像的质量和压缩效率。为了解决这一问题,h.264中的去方块滤波技术采用较为复杂的自适应滤波器来有效地去除这种方块效应。因此,如何在实时视频解码中优化去方块滤波算法,降低计算复杂度,提高重建图像质量,就成了h.264解码的一个关键问题。
1 h.264的去方块滤波
1.1 滤波原理
大的量化步长会造成相对较大的量化误差,这就可能将原来相邻块“接壤”处像素间灰度的连续化变成了“台阶”变化,主观上就有”伪边缘”的方块效应。去方块效应的方法就是在保持图像总能量不变的条件下,把这些台阶状的阶跃灰度变化重新复原成台阶很小或者近似连续的灰度变化,同时还必须尽量减少对真实图像边缘的损伤。
1.2 自适应滤波过程
在h.264中,去方块滤波器是按照16×16像素的宏块为单位顺序进行的,在宏块中按照每个4×4子块之间的边缘以先垂直后水平的顺序进行,从而对整个重建图像中的所有边缘(图像边缘除外)进行滤波。具体的边缘示意图如图1所示。对于16×16像素的亮度宏块,共有4条垂直边缘,4条水平边缘,每条边缘又分为16条像素边缘。而对应8×8像素的色度宏块有垂直边缘和水平边缘各2条,每条边缘分为8条像素边缘。像素边缘是进行滤波的基本单元。
1.2.1 滤波器在两个层次上的自适应性
h.264中的去方块滤波所以有较好的滤波效果,是由于它在以下两个层次上的自适应性。
1) 滤波器在4×4子块级别的自适应性
滤波是基于各个子块中的像素边缘进行的,通过对每一条像素边缘定义一个参数bs(边缘强度)来自适应地调节滤波的强弱和涉及的像素点。色度块的像素边缘强度与相应的亮度像素边缘强度相同。假设p和q为两个相邻的4×4子块,其中的像素边缘强度通过图2的步骤获得。bs的值越大,则对相应的边缘两侧进行的滤波越强,这是根据产生方块效应的原因来设定的,如采用帧内预测模式的子块的方块现象较明显,则对该子块中的对应边缘设定较大的像素边缘强度值来进行强滤波。
2) 滤波器在像素点级别上的白适应性
正确区分由于量化误差、运动补偿产生的虚假边缘和图像中的真实边界才能得到好的滤波效果。通常,真实边界两侧的像素梯度差值要比虚假边界两侧的像素梯度差值大,因此,滤波器通过对边缘两侧像素点的灰度值的梯度差值设定门限α、对同一侧的相邻像素点的灰度值的梯度差值设定门限β来进行真伪边界的判定。α和β的值主要与量化步长有关,当量化步长大时,量化误差也大,方块效应就明显,易产生虚假边界,因此门限值随之变大,放宽滤波条件。反之,量化步长小时门限值也变小,体现了自适应性。采样点的设置见图3。若条件都满足,则进开始滤波。
除了这两种自适应性,还可以通过设置位于片级的系数loopfilteralphac0offset、loopfilterbetaoffset来调整滤波的强度。例如当传输码率较低时,方块效应较明显,接收端想要主观质量相对较好的图像,则编码端可通过设置位于片头信息中的滤波偏移量loopfil-teralphac0offset,loopfilterbetaoffset为正值,以此增大α和β来加强滤波,通过去除方块效应来提高图像主观质量。或者对于高分辨率的图像,可以通过传送负值偏移来减弱滤波,尽量保持图像的细节。
1.2.2 依据各像素边缘bs值对相邻的像素滤波
若当前像素边缘符合滤波条件,则根据其相应的bs值选取对应的滤波器进行滤波并且进行适当的剪切操作,以防止图像的模糊。
当bs值是1,2,3时,采用一个4抽头的线性滤波器,对输入的p1、p0、q0、q1进行滤波调整得到新的q0、p0,如果内部有虚假边界,则进一步调整q1、p1的值。
当bs值是4时,则对应的是采用帧内编码模式的宏块边缘
上一篇:视频滤波器设计