本节摘要:去块滤波的分歧点在"修多宽、修多狠、谁说了算":H.264 在 4×4 网格上按边界强度分档,HEVC 收紧到 8×8 网格加参数集控制,AV1 用 8×8 网格但把滤波强度做成逐块增量信令(0–63 级),粒度与灵活性都上了一个台阶。本节对照三套去块机制,并解释为什么"该不该修"比"怎么修"更费信令。
变换与量化按块进行,相邻块的量化误差不一致,边界两侧就会出现台阶状的亮度跳变——块效应。但不是所有边界都该修:画面里真实的竖直边缘(窗框、文字)长得和块效应一模一样,修了它文字就糊。所以去块滤波的核心难题不是滤波器本身(无非是沿边界的低通平滑),而是判决:这条边界是失真还是内容?
三家的判决机制对照:
| 机制 | H.264 | HEVC | AV1 |
|---|---|---|---|
| 作用网格 | 4×4 亮度网格 | 8×8 网格(变换块与预测块边界) | 8×8 网格(去块在 CDEF 与 LR 之前) |
| 边界强度 | bs 0–4 按预测/变换状态分档 | 按边界两侧模式与系数判定 bS | 大块边界按需判定,粒度随块层级 |
| 滤波强度 | 与 QP 挂钩的查表 | 切片级参数 + 逐边界阈值(β、tC) | 基础级别 + 逐块 delta(0–63),可关 |
| 色度处理 | 强边界才滤 | 独立阈值 | 按平面独立开关与级别 |
值得注意的趋势是"网格变粗、参数变细"。HEVC 把作用网格从 4×4 收到 8×8,因为 4×4 的判决太容易误伤内容,收益撑不起开销;AV1 沿用 8×8 网格,却把"修多狠"的裁决权下放到逐块增量——同一帧里,平坦天空区域可以用高强度抹平边界,文字区域直接置零完全不碰。空间自适应性是 AV1 去块相对两代前标准的实质差异。
判决规则是标准写死的,"修多狠"的参数要进码流。三家的信令组织差异很能说明设计取向:
# AV1 去块参数(Frame Header 内) loop_filter_level: 基础强度(0–63,亮度与色度可各一套) loop_filter_deltas: 按"参考帧身份 / 帧内帧间"的修正量 delta_lf_present: 逐超块增量开关 delta_lf_abs: 沿 128×128 网格的强度增量(可分平面)
H.264 的滤波参数几乎全部由 QP 派生查表,编码器自由度小、信令省、效果也平;HEVC 引入切片级参数加阈值表,自由度居中;AV1 的"基础值加增量"两级结构,让粗调几乎免费(帧头一次声明)、细调按需付费(真需要的区域才写增量)。这与第 5 章量化的"基础 qindex 加逐超块 delta"是同一个信令哲学——两级参数化在 AV1 里是系统性的,不是单点技巧。
去块滤波处在闭环最前端,修完的帧直接进参考池。这意味着滤波质量的收益是复利:当前帧的边界抹平了,下一帧以它为参考做运动补偿,补偿误差更小,残差更少,码率更低。HEVC 的 SAO、AV1 的 CDEF/LR 都叠加在这道修复之上——闭环内每一道的改进都会被后续所有帧继承。
对照一个工程细节:直播与云游戏场景常做"部分闭环"优化,砍掉重滤波以降低延迟与功耗。此时 AV1 的做法是保留去块、关闭 CDEF/LR(标准允许逐帧开关),因为去块的收益成本比最高;这也反向印证了三道滤波的边际收益排序——去块管最贵的那类失真(会被传播的边界台阶),后两道是精修。
⚠️ 播放端排错提示:画面出现"网格状涂抹"通常是去块强度被异常拉高(码流 delta 错误或播放器参数错乱),而"细碎蚊噪"则是强度被关死。两边都要查,别急着怪片源。
去块强度不是孤立旋钮,它与量化参数天然联动:量化越粗、块效应越重、需要的滤波强度越高。AV1 在码流语法上就体现了这种联动——滤波级别的信令结构允许按量化水平推导基础值,再按内容微调。编码器内部则更直接:率失真优化会在"更细量化加更轻滤波"与"更粗量化加更重滤波"之间做全局权衡,两条路线的码率与观感可能殊途同归。
这层联动解释了排错时的一个规律:看到块效应先查量化配置,看到涂抹感先查滤波配置,两边的参数要成对检查而不是单边猛调。也是同一原因,编码器升级后"同一 CRF 的观感变化"可能来自滤波策略的调整——回归测试要覆盖主观观感,不能只看码率。
问:为什么不在解码后让播放器自由锐化或涂抹,而要标准规定滤波?
答:因为闭环。播放器滤镜只影响显示,无法把修复结果回灌给后续帧的预测;闭环内滤波改善参考质量,是复利。此外标准化的滤波保证所有设备观感一致——播放器自由发挥的年代,"同一部片不同播放器不同画质"的混乱就是前车之鉴。
问:去块会抹掉真实纹理吗?
答:判决机制的目标就是防这个,但阈值边缘的内容(细密规律纹理如纱窗)仍可能被轻微平滑。编码器可以在这些区域主动降低滤波级别(delta 机制的存在意义),代价与收益由率失真裁决——工具给了说"不"的权利,用不用看编码器。
补一组参数直觉帮读码流:deblocking 的判决阈值随量化参数(QP)自适应——QP 越高(压缩越狠),块边界两侧差异的容忍阈值越宽,滤波越容易触发;调试花屏问题时先查极端 QP 区域的边界强度(BS)分布,低码率下 BS 几乎全开导致的"糊脸"与高码率下 BS 误判导致的"网格纹"是两种相反的病,前者要查量化策略,后者要查边界判决的像素比较逻辑。另外 AV1 把 deblocking 拆到垂直与水平两个独立pass,且允许在 8×8 亮度边界(比 HEVC 更细的 4×8/8×4 粒度)上判决,对照测试时注意关闭 CDEF/LR 只看 DBK 时的主观差异——三档滤波的叠加效应远大于各自单独贡献之和,逐级开回才能归因。
把三家去块滤波的设计取向排成一张对照账:H.264 的 deblocking 边界粒度 4×4、滤波强度分档粗、判决简单,硬件成本最低但强压缩下的块痕残留明显;HEVC 把粒度提到 8×8、强度分四档、增加色度边处理,块痕明显收敛但判决逻辑复杂度翻倍;AV1 沿用 8×8 级判决、增加 4×8/8×4 非方形边、滤波强度查表更细,并允许按分段(segmentation)关闭特定区域——同一素材关掉 AV1 的 DBK 与关掉 HEVC 的 DBK 对比,AV1 关闭后的块痕回归速度更快(说明它的 DBK 承担了更多职责,与前级预测工具的协同更深)。给调试者的坐标:判断一个码流的块痕来源,先看 QP/量化档位分布(源头),再看 DBK 参数信令(配置),最后才怀疑解码器实现(生态)——顺序反了会浪费数个排查回合。