本节摘要:去块管不了"块内"的高频损伤:振铃、蚊噪、纹理被削平。HEVC 的解法是 SAO——把像素按带状或边缘状分类,统一加一个偏移;AV1 的解法是 CDEF——沿八个方向做受限的方向性滤波,强度分六十三级。一个按"类别"修,一个按"方向"修,本节对照两套思路的机制、收益与硬件代价。
SAO(Sample Adaptive Offset)把失真像素分成两类来修。带偏移(band offset):把像素值域切成三十二个条带,落在同一个条带的像素统一加一个修正值——修的是量化造成的系统性灰度偏移;边缘偏移(edge offset):按像素与邻域的梯度方向归入四类边缘形态,统一加减偏移——修的是边缘两侧的过冲与欠冲。分类结果由编码器搜索决定,参数(类索引与偏移值)写进码流。
SAO 的优点是机制极简:就是查表加常数偏移,硬件实现几乎免费;缺点也来自这个极简——它只会"整体加减",不会按空间细节调整,对纹理密集区域的振铃只能做平均意义上的改善。HEVC 时代实测 SAO 的 BD-rate 收益大致在低个位数百分比,属于"便宜且有感"的工具。
CDEF(Constrained Directional Enhancement Filter,其原型来自 Daala 的方向滤波器)换了一条路:先在八个方向上搜索"这块内容的主方向",再沿该方向做两级滤波——主抽头沿方向平滑、副抽头在法向做受约束的锐化或去噪,抽头强度按非线性函数截断(差异过大就不动它,保护真实边缘)。每个 8×8 块携带方向索引与强度索引(主强度 0–63、副强度若干档),配合阻尼参数防振铃。
| 对照项 | HEVC SAO | AV1 CDEF |
|---|---|---|
| 作用对象 | 分类后的像素全体 | 8×8 块内按方向滤波 |
| 修正方式 | 常数偏移 | 方向性两级抽头 + 非线性截断 |
| 参数量 | 偏移量 + 类别 | 方向(8 选 1)+ 强度(63 级)+ 阻尼 |
| 保护机制 | 分类天然局部 | 差异截断保护边缘 |
| 硬件代价 | 极低 | 中等(方向搜索 + 非线性运算) |
| 典型收益 | 低个位数百分比 | 略高于 SAO,纹理场景更明显 |
非线性截断是 CDEF 的灵魂:滤波器只在"相邻像素差小于阈值"时全力工作,差异大(真边缘)就自动收力。这解决了 SAO 的老问题——修振铃而不误伤边缘。对照 VVC:它干脆放弃 SAO 的偏移思路改用 ALF(自适应环路滤波,整帧训练的维纳类卷积核),把"按类别修"升级成"按内容学滤波器"。三代的演进是滤波能力逐代增强、参数维度逐代变多、硬件代价逐代上抬。
把两套工具放进内容光谱:平坦渐变内容(天空、墙面),SAO 的带偏移收益好而 CDEF 无方向可寻,收益一般;强纹理内容(草地、发丝、噪点画面),CDEF 的方向平滑显著占优,且强度可随块调整;文字与 UI(锐利二值边缘),两者都要谨慎,CDEF 靠截断保护、SAO 靠编码器干脆不启用。AV1 把 CDEF 放在去块之后、LR 之前,三道各司其职——CDEF 处理"有方向的纹理损伤",剩下的整体模糊留给 LR。
# CDEF 决策要点(编码器视角,伪代码) for each 8x8 block: direction = argmin over 8 directions of residual energy for strength in candidates: cost = rd(direction, strength, damped_taps) write: cdef_idx (direction+strength+联查表) # 解码端: 按 idx 查表取抽头系数,非线性截断后卷积
💡 观察实验:找一段胶片翻拍的老电影(颗粒重、纹理密),分别用关闭 CDEF 与默认参数压两版,看暗部纹理区——开 CDEF 的一版在同等码率下明显"干净而不塑料"。这就是方向性滤波相对偏移法的实战差距。
⚠️ 硬件适配提醒:CDEF 的非线性截断与方向搜索是 AV1 硬解比 HEVC 硬解复杂度高的主要来源之一(另一处是熵编码)。评估低端设备适配时,这两处要预留流片验证时间。
问:为什么 AV1 要同时保留偏移类思路与方向性滤波?
答:因为失真的谱系不同。SAO 擅长的系统性灰度偏移(量化导致的整体偏暗偏亮)是方向滤波不敏感的;CDEF 擅长的方向性振铃是偏移法修不动的。AV1 的取舍是用 CDEF 替代 SAO 的位置,把"整体偏移"的部分交给量化的 DC 通道与后面的 LR 去消化——每代标准都在给滤波工具重新分工。
问:CDEF 的方向搜索会不会在无方向内容上乱猜?
答:会猜,但无害——强度参数为普通值时,无方向内容的残差被截断机制抑制,滤波近似失效;编码器也可以直接给它关掉。方向搜索的成本是算力(编码端八方向试算),不是画质风险。
问:硬件上 CDEF 能关吗?
答:码流级可以逐帧关闭,播放器也可以跳过——但结果会偏离标准重建帧,影响后续预测的前提。真正的硬件取舍在实现精度:部分低端硬解会简化截断运算,与参考实现产生细微差异,这在合规容差内,但极限画质对比时会显形。
再补一条调优经验:CDEF 的方向搜索(8 方向加强度两档)对屏幕内容(规则边缘)收益极小甚至为负——边缘本来锐利,方向滤波反而引入方向性拖影;SVT-AV1 对 screen-content 类素材有专门的 CDEF 降级路径。实拍内容的收益区间集中在中低码率(块效应刚可察觉到明显之间),高码率下 CDEF 的关闭常常是无损的选择。归因实验的最小配置:固定 QP 逐档开/关 CDEF,看 SSIM 与 VMAF 的交叉变化——VMAF 对 CDEF 的增益比 SSIM 敏感得多(它训练自主观分),两个指标给出相反结论时信 VMAF 的方向但记下分歧幅度,这正是"算法指标与主观体验错位"的典型案例素材。