自适应去块滤波器
在重建的图像上使用环路去块滤波器(in-loop deblocking filter)1可以减少块状伪像(blocky artifacts)2。因此,去块后的图像可以作为质量更好的参考帧用于帧内和帧间预测,并且在相同码率下具备更好的视觉质量。
去块滤波器3的强度可变并且可以做到在三个级别上自适应:
- 切片级别:基于视频序列的个体特性的切片级别(slice)
- 块边缘级别:基于帧内模式与帧间模式决策、运动差异、以及两个相邻宏块残差的块边缘级别(block-edge)
- 像素级别:基于分析来区分真实边缘和由块状伪像创建的边缘的像素级别(pixel)。
去块滤波器应保持真边(ture edges)不被过滤,而使量化边平滑。
一般来说,对于中等质量而言,去块会带来6%~9%的码率节省4,也就是说在相同的码率下,图像的主观质量会得到明显的改善。去块滤波器会在每帧图像上增加大量操作,因此会大大降低编码过程。此外,因为去块滤波计算不局限于独立的数据单元(例如切片),因此去块过程很难并行化。去块滤波是视觉质量和性能之间权衡的另一个例子。
1. 在H264标准的8.7小节中规定了去块滤波的内容,这部分被称为环路滤波器(loop filter)。环路滤波器是被放置在编解码的图像重建环路当中。在启用了环路滤波的编解码环境中,无论是编码器还是解码器,都是在图像被重建后才进行滤波。在编码器中,滤波后的图像会作为后续编码运动补偿的参考图像;在解码器中,滤波后的图像会被输出显示并且作为后续图像解码重建的参考图像。 ↩
2. H.264在编码过程中对像素残差进行了DCT变换,变换后得到的DCT系数是与每个像素都相关的,这些系数代表了被变换数据的基础色调与细节。h.264在DCT变换后对DCT系数进行了量化,量化能有效去除相邻像素间的空间冗余,也就是说会抹去元素数据的部分细节。比较理想的情况是量化抹去人眼无法识别的细节部分,但是在低码率的情况下就会导致原始数据的细节丢失过多。而且,DCT变换时基于块的,即将8x8或者4x4的像素残差进行变换后得到8x8或者4x4DCT系数,此时如果进行了低码率的量化,就会使得相邻两个块的相关性变差,从而出现块效应。h.264的运动补偿加剧了由变换量化导致的块效应。由于运动补偿块的匹配不可能绝对准确,各个块的残差大小程度存在差异,尤其是当相邻两个块所用参考帧不同、运动矢量或参考块的差距过大时,块边界上产生的数据不连续就更加明显。块效应主要有两种形式:一种是由于DCT高频系数被量化为0,使得强边缘在跨边界处出现锯齿状,称为梯形噪声;另一种经常出现在平坦区域,由于量化导致本来平缓变换的亮度块DC系数发生跳跃,造成变换块的基础色调改变,这种称为格形噪声。 ↩
3. 为了减轻和消除视频图像中的块效应,通常会使用滤波器对块边界处的像素进行滤波以平滑像素值的突变,这种滤波被称为去块滤波器(Deblocking Filter)。 ↩
4. Ostermann et al., “Video Coding.” ↩