引言:环路滤波是压缩画质的"最后一道防线"
视频编码中的量化环节会引入不可逆的信息损失,导致重建画面出现块效应、振铃效应、边缘模糊等伪影。环路滤波(In-Loop Filter)的作用就是在编码环路中对重建画面进行滤波修复,既提升主观画质,又为后续帧的预测提供更干净的参考帧,从而间接提升压缩效率。
H.266/VVC在HEVC的DBF+SAO基础上,大幅增强了ALF(自适应环路滤波)的能力,并优化了各滤波器之间的协同机制,使环路滤波环节较HEVC提升约2-4% BD-rate增益。
但ALF的计算复杂度远高于SAO,滤波器系数的信令开销也不容忽视。如何在滤波增益与编码开销之间取得平衡,是工程落地的核心挑战。
本文从算法原理到工程实践,系统梳理VVC环路滤波的关键技术,并给出可复用的优化策略与配置模板。
DBF:去块效应滤波
核心思想
块效应(Blocking Artifact)是视频编码中最典型的伪影——由于CU/TU以块为单位独立编码,块边界处的像素值可能出现不连续跳变,形成肉眼可见的"网格"。
DBF(Deblocking Filter)的作用就是平滑块边界处的像素跳变,同时保留真实的边缘信息(如物体轮廓)。
边界强度判定
DBF的核心是边界强度(Boundary Strength, BS)判定,BS值决定了滤波的强度:
| BS值 | 触发条件 | 滤波强度 |
|---|---|---|
| 0 | 块内无边界 | 不滤波 |
| 1 | 帧间预测,无残差 | 弱滤波 |
| 2 | 帧间预测,有残差 | 中等滤波 |
| 3 | 帧内预测 | 强滤波 |
| 4 | 边界位于CU边界且至少一侧为帧内 | 最强滤波 |
判定流程:
- 遍历所有TU/CU边界
- 根据两侧CU的预测模式、残差情况、运动矢量差异计算BS
- 根据BS值选择滤波器和滤波强度
滤波策略
VVC的DBF在HEVC基础上做了以下优化:
- 最大滤波宽度:从HEVC的8像素扩展到10像素(亮度分量)
- 色度滤波增强:色度分量的滤波宽度也相应增加
- 并行化改进:支持更多边界并行处理
滤波公式(简化版):
Δ = clip3(-tC, tC, ((p1 - q1) + 4 * (p0 - q0) + (p1 - q1) + 8) >> 4)
p0' = p0 + Δ
q0' = q0 - Δ
其中 p0/q0 为边界两侧像素,tC 为阈值参数,由QP和BS共同决定。
压缩增益与复杂度
- 压缩增益:DBF可使整体码率降低约1-2%
- 复杂度:DBF计算量相对较小,占编码总耗时约3-5%
工程实践:DBF是必选工具,VVenC默认启用,一般不关闭。
SAO:样点自适应补偿
核心思想
DBF只能平滑块边界,但量化还会引入其他类型的失真,如边缘偏移(边缘处像素值整体偏高或偏低)和带状偏移(某些灰度区间的像素值系统性偏差)。
SAO(Sample Adaptive Offset)的作用就是对重建像素进行自适应补偿,校正系统性偏差。
补偿模式
SAO支持两类补偿模式:
1. 边缘偏移(Edge Offset, EO)
根据当前像素与相邻像素的大小关系,将像素分为4类边缘类型:
- 类型1:当前像素为局部峰值(两个邻居都更小)→ 负补偿
- 类型2:当前像素为局部谷值(两个邻居都更大)→ 正补偿
- 类型3:当前像素为下降沿(一个邻居更大,一个更小)→ 负补偿
- 类型4:当前像素为上升沿(一个邻居更小,一个更大)→ 正补偿
2. 带状偏移(Band Offset, BO)
将像素值范围(0-255)均匀分为32个带(band),每个带使用相同的补偿值。编码器选择增益最大的几个带进行补偿。
区域划分
SAO以CTU(编码树单元)为单位进行区域划分,每个CTU独立选择SAO模式(EO/BO/不启用)和补偿参数。
参数信令:SAO参数(模式索引、补偿值)通过APS(自适应参数集)传输,支持跨CTU复用,减少信令开销。
压缩增益与复杂度
- 压缩增益:SAO可使整体码率降低约1-2%
- 复杂度:SAO需要统计像素分布并计算最优补偿值,占编码总耗时约5-8%
工程实践:VVenC默认启用SAO,对低复杂度场景可以关闭。
ALF:自适应环路滤波
核心思想
DBF和SAO都是固定规则的滤波器,而ALF(Adaptive Loop Filter)是数据驱动的自适应滤波器——根据重建画面的局部特征,自动选择最优的滤波器系数。
ALF的核心优势:
- 自适应性强:针对不同纹理区域使用不同滤波器
- 滤波精度高:可以校正多种类型的失真
- 压缩增益大:是VVC环路滤波中增益最大的工具
滤波器设计
VVC的ALF使用7×7菱形滤波器(共25个抽头),滤波器系数通过最小化重建画面与原始画面的均方误差(MSE)自适应计算:
min Σ (original[i] - filtered[i])²
滤波器分类:ALF将CTU分为多个类别,每个类别使用不同的滤波器:
- 亮度分量:最多25个滤波器,根据方向性(方向指数)和活动性(活动指数)分类
- 色度分量:最多4个滤波器,根据活动性分类
分类流程:
- 计算每个CTU的梯度方向(水平/垂直/对角)
- 计算每个CTU的活动性(梯度幅值)
- 根据方向+活动性映射到滤波器类别
- 为每个类别计算最优滤波器系数
参数信令
ALF滤波器系数通过APS(自适应参数集)传输,支持以下优化:
- 跨片条复用:多个片条共享同一组ALF参数
- 跨帧复用:后续帧可以复用前帧的ALF参数
- 子集选择:编码器可以从预计算的滤波器库中选择子集传输
工程优化:VVenC使用快速ALF决策,对活动性较低的CTU跳过ALF,将ALF计算开销降低约40%。
压缩增益与复杂度
- 压缩增益:ALF可使整体码率降低约2-3%,是VVC环路滤波中增益最大的工具
- 复杂度:ALF需要计算滤波器系数并逐像素滤波,占编码总耗时约15-20%
工程实践:VVenC默认启用ALF,对实时编码场景可以考虑关闭或减少滤波器数量。
多滤波协同机制
滤波顺序
VVC环路滤波的执行顺序为:
重建像素 → DBF → SAO → ALF → 输出
设计原理:
- DBF先行:先消除最明显的块效应,为后续滤波提供干净输入
- SAO居中:校正系统性偏差,输出更均匀的像素分布
- ALF殿后:在前两级滤波基础上进行精细自适应滤波
协同优化
VVC在多滤波协同方面做了以下优化:
- 参数联合优化:DBF的阈值参数会影响SAO和ALF的输入,编码器在RDO过程中联合考虑
- SAO-ALF交互:SAO补偿后的像素分布会影响ALF的滤波器计算,VVenC在计算ALF系数时使用SAO后的像素
- 滤波器禁用标志:编码器可以在CU级别禁用ALF,避免对已充分滤波的区域重复处理
压缩增益分配
| 滤波器 | BD-rate增益 | 编码耗时占比 |
|---|---|---|
| DBF | 1-2% | 3-5% |
| SAO | 1-2% | 5-8% |
| ALF | 2-3% | 15-20% |
| 合计 | 3-5% | 23-33% |
实战配置模板
高质量编码场景
# VVenC参数
--preset slower
--deblock 1 # 启用DBF
--sao 1 # 启用SAO
--alf 1 # 启用ALF
--max-alf-filters 25 # 最大ALF滤波器数量
--alf-fast 0 # 关闭ALF快速模式
实时编码场景
--preset fast
--deblock 1 # 启用DBF(必选)
--sao 1 # 启用SAO
--alf 0 # 关闭ALF(节省计算)
屏幕内容编码场景
--preset slower
--deblock 1 # 启用DBF
--sao 1 # 启用SAO
--alf 1 # 启用ALF
--screen-content 1 # 启用屏幕内容优化
--max-alf-filters 16 # 减少ALF滤波器数量(屏幕内容增益有限)
低复杂度场景
--preset faster
--deblock 1 # 启用DBF(必选)
--sao 0 # 关闭SAO
--alf 0 # 关闭ALF
环路滤波的工程优化
快速ALF决策
VVenC使用多级快速ALF决策策略:
- 活动性预筛选:对活动性低于阈值的CTU跳过ALF
- 滤波器数量限制:根据编码速度预设限制最大滤波器数量
- 系数复用:相邻CTU复用相同滤波器系数,减少计算
加速效果:该策略可将ALF计算开销降低约40-50%,压缩损失小于0.3%。
SIMD加速
VVenC和x266都使用SIMD指令加速滤波计算:
- SSE4.1/AVX2:加速DBF边界判定与滤波
- AVX2/AVX-512:加速ALF的7×7卷积计算
- NEON:ARM平台加速
加速效果:SIMD加速可使ALF计算速度提升4-6倍。
并行化策略
环路滤波可以并行化处理:
- DBF并行:不同CTU行/列的边界可以并行处理
- SAO并行:不同CTU的SAO计算完全独立
- ALF并行:不同CTU的ALF滤波完全独立
工程实践:VVenC使用线程池并行化SAO和ALF,多核CPU下滤波速度提升约3-4倍。
结语:环路滤波是压缩画质的最后一道防线
VVC的环路滤波已经从HEVC的DBF+SAO体系,演进为DBF+SAO+ALF的三件套协同体系,ALF的引入使环路滤波从"固定规则"走向"数据驱动"。但ALF的计算复杂度也显著增加,工程取舍变得尤为重要。
建议建立"环路滤波增益画像",针对不同场景(自然视频/屏幕内容/动画)、不同分辨率、不同编码速度预设,配置差异化的滤波策略。让编码器理解画面特征,而非盲目启用所有滤波器。
环路滤波是压缩画质的最后一道防线,也是提升主观画质最直接的手段。愿每一位视频编码工程师,都能在DBF、SAO与ALF之间找到滤波增益与编码速度的最佳平衡点。
426




被折叠的 条评论
为什么被折叠?



