方块效应产生原因
- 原因 1:最重要的一个原因是基于块的帧内和帧间预测残差的 DCT 变换。变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数带有误差,会造成在图像块边界上的视觉不连续。
- 原因 2:其次原因自于运动补偿预测。运动补偿块可能是从不是同一帧的不同位置上的内插样点数据复制而来。因为运动补偿块的匹配不可能是绝对准确的,所以就会在复制块的边界上产生数据不连续。 当然,参考帧中存在的边界不连续也被复制到需要补偿的图像块内。
去块效果对比
- 去块滤波与不去块滤波的画面主观差异:a 是没有采用去块滤波的效果,b 是采用去块滤波的效果。
H264编码标准环路滤波原理
边界分析
- 4x4 方块的误差分析:
- 当对残差用方块变换进行编码时,方块边界比内部的编码误差大。对这个现象的合理解释是内部点的重建是对周围点进行加权平均得到。而边界点所用到的加权平均点较少,所以重建效果较差。 这个误差分布不均匀的后果是需要方块边界滤波以提高图像客观质量。
- 自适应边界级滤波器:
- 边界强度 Bs 决定去方块滤波器选择滤波参数,控制去块效应的程度,对所有 4x4 的亮度边界,边界强度的参数值在0~4 之间,具体的取值与边界的性质有关,如下表,从上往下进行判断,符合什么条件就将 bs 赋值相应的值;
- Bs 决定对边界的滤波强度,当为 4 时用特定最强的滤波模式,当为 0 时不需要进行滤波,1~3 时用普通滤波模式,Bs 值影响滤波器对样点的最大修正程度。Bs 值的下降趋势说明最强的方块效应主要来自于帧内预测模式及对预测残差编码,而在较小程度上与图像的运动补偿有关。
- 色度块边界滤波的 Bs 值不另外单独计算,而是从相应亮度块边界的 Bs 值复制而来。
- 边界强度 Bs 决定去方块滤波器选择滤波参数,控制去块效应的程度,对所有 4x4 的亮度边界,边界强度的参数值在0~4 之间,具体的取值与边界的性质有关,如下表,从上往下进行判断,符合什么条件就将 bs 赋值相应的值;
- 自适应样点级滤波器:
- 在去方块滤波中,非常重要的是要区分图像中的真实边界和由 DCT 变换系数量化而造成的假边界。为了保持图像的逼真度,应该尽量滤除假边界以不致被看出的同时保持图像真实边界不被滤波。
- 为了区分真边界和假边界,需要分析每个要被滤波的边界两边的采样值;如下图,定义两个 4x4 块中一条直线上样点为p3、p2、p1、p0、q1、q2、q3;实际的图像边界在 p0 和 q0 之间;
- 为了区分真假边界,定义一对与量化相关的参数,用来检测图像内容,如下公式,只有都满足时,直线上的样点才进行滤波:
- 两个参数根据边界两边的平均量化参数查表得到,公式如下,其中 QP取值 0~51,OffsetA和 OffsetB 是在编码器中选择的偏移值。
- 两个参数的满足如下经验和查表:
- 自适应片级滤波器:在片级上,编码器可以通过选择偏移(OffsetA和 OffsetB )来调整滤波器中的一对与量化相关的参数,偏移值在片头语法中传输,应用于上面的查表。
滤波过程
- 滤波是基于宏块进行的,先对垂直边界进行水平滤波,然后对水平边界进行垂直滤波;两个方向滤波后再进行后面的宏块滤波,按照 raster 扫描方式顺序滤波。
- 如下,滤波顺序为:16x16 亮度 a-b-c-d-e-f-g-h;8x8 色度 i-j-k-l。
- 边界强度 Bs 为 1~3 的滤波运算:
- 限幅:
- 边界强度 Bs 为 4 的滤波:
- 帧内编码时,同一图像区域编码倾向采用 16x16 的亮度预测模式,会在宏块边界引起小幅度的方块效应,由于马赫带效应(Mach band effect),很小的强度差在视觉上也会引起陡峭的阶梯感觉,为了消除这么效应,需要在图像内容平滑的两个宏块边界采用较强的滤波器;
- 对亮度滤波,根据图像内容选择较强的 4 拍或 5 拍滤波器,还是较弱的 3 拍滤波器;4 拍 或 5 拍滤波器对边界两边的边界点及两个内部点进行修正,而 3 拍滤波器仅改变边界点。只有下面的跨边界差异的约束条件成立才使用较强的滤波器: