HEVC(十一):自适应量化VAQ 在视频编码标准中量化Quantization是引入失真以换取压缩效率的核心环节。传统的量化机制如恒定 QP 编码通常对整帧或宏块采用均匀的量化步长这忽略了人类视觉系统HVS, Human Visual System对不同纹理、边缘和运动区域的敏感度差异。为了在有限的码率下实现最优的主观视觉质量自适应量化AQ, Adaptive Quantization应运而生。其中基于方差的自适应量化VAQ, Variance-based Adaptive Quantization是应用最广泛、效果最显著的技术之一。一图总结为什么需要自适应量化AQ自适应量化的核心理论支撑是人类视觉系统HVS的掩蔽效应Masking Effects。HVS 对视频图像中不同区域的失真敏感度存在极大差异平滑区域Smooth Regions如天空、墙面或人脸皮肤。这些区域纹理简单HVS 对其中的噪声、方块效应或模糊极其敏感。如果量化过粗极易察觉到伪影。因此平滑区域需要降低 QP变细量化。复杂纹理区域Texture/Complex Regions如草地、树枝或织物。这些区域本身包含大量高频信息由于纹理掩蔽效应Texture MaskingHVS 很难察觉到其中温和的量化噪声。因此这些区域可以提高 QP变粗量化从而省下码率。强边缘区域Edges虽然边缘属于高频信息但 HVS 对物体的轮廓和边缘异常敏感容易产生蚊子噪声或锯齿。因此边缘区域不能盲目加大 QP甚至需要适当保护。HEVC 引入了以编码树单元CTU和量化组QG, Quantization Group为单位的Delta QP 机制允许编码器在图像内部动态调整Q P QPQPQ P l o c a l Q P b a s e Δ Q P QP_{local} QP_{base} \Delta QPQPlocal​QPbase​ΔQPVAQ 的核心任务就是通过计算计算出合理的Δ Q P \Delta QPΔQP。VAQ 的数学模型与计算原理VAQ 的“V”代表方差Variance。方差是衡量图像局部区域活动度Activity最直观的统计学指标。局部方差的计算通常编码器如 x265会将图像划分为固定大小的计算块如8 × 8 8 \times 88×8或16 × 16 16 \times 1616×16像素块。对于一个大小为N × N N \times NN×N的像素块B BB其像素均值μ \muμ和方差σ 2 \sigma^2σ2计算如下μ 1 N 2 ∑ i 1 N ∑ j 1 N P ( i , j ) \mu \frac{1}{N^2} \sum_{i1}^{N} \sum_{j1}^{N} P(i,j)μN21​i1∑N​j1∑N​P(i,j)σ 2 1 N 2 ∑ i 1 N ∑ j 1 N ( P ( i , j ) − μ ) 2 1 N 2 ∑ i 1 N ∑ j 1 N P ( i , j ) 2 − μ 2 \sigma^2 \frac{1}{N^2} \sum_{i1}^{N} \sum_{j1}^{N} (P(i,j) - \mu)^2 \frac{1}{N^2} \sum_{i1}^{N} \sum_{j1}^{N} P(i,j)^2 - \mu^2σ2N21​i1∑N​j1∑N​(P(i,j)−μ)2N21​i1∑N​j1∑N​P(i,j)2−μ2方差σ 2 \sigma^2σ2反映了该块的能量波动情况方差越小说明区域越平滑方差越大说明纹理越复杂。能量归一化与自适应调整如果直接用绝对方差来调整 QP会导致不同亮度和不同全局复杂度的视频帧之间失去平衡。因此经典的 VAQ 算法如借鉴自 x264/x265 的实现通常会引入全帧平均方差Average Variance来作为基准。设当前帧所有块的平均方差为σ a v g 2 \sigma^2_{avg}σavg2​。那么当前块的相对活跃度Relative Activity可表示为A c t r e l σ l o c a l 2 ϵ σ a v g 2 ϵ Act_{rel} \frac{\sigma^2_{local} \epsilon}{\sigma^2_{avg} \epsilon}Actrel​σavg2​ϵσlocal2​ϵ​其中ϵ \epsilonϵ是一个极小的正数如 1用于防止分母为 0。Δ Q P \Delta QPΔQP的映射函数得到相对活跃度后需要将其映射为Q P QPQP的偏移量Δ Q P \Delta QPΔQP。常用的映射公式为非线性对数或幂函数关系Δ Q P α ⋅ ln ⁡ ( A c t r e l ) 或 Δ Q P α ⋅ log ⁡ 2 ( A c t r e l ) \Delta QP \alpha \cdot \ln(Act_{rel}) \quad \text{或} \quad \Delta QP \alpha \cdot \log_2(Act_{rel})ΔQPα⋅ln(Actrel​)或ΔQPα⋅log2​(Actrel​)在实际工程如 x265中为了规避高昂的对数运算常采用开根号或近似幂函数的形式Δ Q P aq_strength × ( ( σ l o c a l 2 ϵ σ a v g 2 ϵ ) k − 1.0 ) \Delta QP \text{aq\_strength} \times \left( \left( \frac{\sigma^2_{local} \epsilon}{\sigma^2_{avg} \epsilon} \right)^{k} - 1.0 \right)ΔQPaq_strength×((σavg2​ϵσlocal2​ϵ​)k−1.0)当k 0.5 k0.5k0.5时相当于对方差比值开根号。aq_strengthAQ强度是一个可调参数用于控制 QP 波动幅度的剧烈程度。若σ l o c a l 2 σ a v g 2 \sigma^2_{local} \sigma^2_{avg}σlocal2​σavg2​A c t r e l 1.0 Act_{rel} 1.0Actrel​1.0Δ Q P \Delta QPΔQP为负数该块 QP 降低画质得到分配倾斜。若σ l o c a l 2 σ a v g 2 \sigma^2_{local} \sigma^2_{avg}σlocal2​σavg2​A c t r e l 1.0 Act_{rel} 1.0Actrel​1.0Δ Q P \Delta QPΔQP为正数该块 QP 升高释放码率。HEVC 中的 VAQ 工程实现框架在 HEVC 标准中由于支持从16 × 16 16 \times 1616×16到64 × 64 64 \times 6464×64的灵活 CTU 划分VAQ 的实现通常在预分析Pre-analysis / Lookahead阶段完成其核心工作流如下降采样与多尺度方差分析为了降低计算复杂度Lookahead 阶段通常在低分辨率如全分辨率的 1/2 或 1/4即半像素/四分之一像素层上计算8 × 8 8 \times 88×8块的方差。计算并存储Δ Q P \Delta QPΔQP矩阵在编码正式开始前针对每一个量化组QG通常设为16 × 16 16 \times 1616×16或8 × 8 8 \times 88×8根据预分析算出的方差计算出对应的Δ Q P l o c a l \Delta QP_{local}ΔQPlocal​并保存成一个二维矩阵。语法元素写入HEVC 规范约束在正式的 HEVC 熵编码中Δ Q P \Delta QPΔQP并不是任意写入的。必须满足以下标准规范条件在图像参数集PPS中开启cu_qp_delta_enabled_flag。设定diff_cu_qp_delta_depth以限制允许改变 QP 的最小 CU 深度即量化组 QG 的大小。在码流中Δ Q P \Delta QPΔQP会被转换为信令pcu_qp_delta进行变长编码。由于它是基于前一个有效 QP 的差值预测因此剧烈的 QP 跳变会略微增加标头Header码率编码器需要在“画质收益”与“信令开销”之间取得平衡。VAQ 的演进与高级变体Auto-VAQ / VAQ2 / VAQ3单纯依赖方差的经典 VAQ 存在一定的局限性。随着开源编码器如 x265的发展演进出了多种高级变体算法版本核心原理优缺点分析经典 VAQ (AQ Mode 1)仅依赖局部方差与全帧平均方差的对比。简单高效。但在整帧都极其平滑如静态纯色背景或整帧都极其复杂时由于全局均值拉平会导致局部调整失灵。Auto-VAQ (AQ Mode 2)引入历史帧/场景全局均值偏置。不再单纯依赖单帧σ a v g 2 \sigma^2_{avg}σavg2​而是根据当前场景的整体复杂度动态调整基准。跨帧画质更加平稳有效缓解了场景切换前后的闪烁Flicker效应。边缘偏置 VAQ (AQ Mode 3)针对暗部区域Dark Regions与强边缘进行了特殊偏置。HVS 对暗光下的噪点非常敏感Mode 3 在方差基础上对低亮度块进行了 QP 补偿即调低 QP。极大改善了暗部场景的“鬼影”和“块效应”是目前主流影视级VAQ 调优工程实践建议在实际的 HEVC 编码器如 x265 或硬件 HEVC 编码芯片调优中合理配置 VAQ 参数对主观质量至关重要码率分配策略Rate ControlVAQ 属于主观视觉优化Visual Optimizations它通常会拉低 PSNR 或 SSIM 等客观指标但能显著提升 VMAF 和人类肉眼主观评分MOS。如果业务考核指标卡死在 PSNR 上需谨慎开启强 VAQ。AQ 强度的选择* 对于高码率/影视级级压缩建议开启aq-mode3并将aq-strength设在1.0 ~ 1.2之间保护暗部和细节。对于低码率/实时流媒体如铁路监控、安防监控因为带宽极度受限aq-strength可适当降低如0.7 ~ 0.9防止过大的Δ Q P \Delta QPΔQP跳变导致码率在复杂区域暴增引发网络抖动。总结HEVC 自适应量化之 VAQ 技术成功地将复杂的“人类视觉系统掩蔽效应”抽象为了工程上易于实现的“局部图像方差统计模型”。它在预分析阶段对图像的微观纹理进行定量评估并在 HEVC 允许的语法框架内通过灵活调整Δ Q P \Delta QPΔQP实现了码率的高效重分配——将码率抽离于视觉不敏感的复杂纹理区倾注于易觉察伪影的平滑与暗部区域。