引言:时间冗余是视频压缩的最大红利
视频与图片最大的不同在于"连续性"——相邻帧之间往往只有少量物体发生位移,大部分背景保持不变。这种帧与帧之间的相似性称为"时间冗余",是视频编码中压缩潜力最大的部分。
帧间预测(Inter Prediction)通过运动估计和运动补偿来消除时间冗余:编码器在参考帧中寻找与当前块最匹配的区域,记录其位移(运动矢量,MV),只编码残差和运动信息。H.264已具备成熟的运动补偿机制,而H.265在此基础上引入了Merge模式和AMVP(Advanced Motion Vector Prediction)两大核心技术,进一步降低了运动信息的编码开销。
H.264运动矢量预测回顾
H.264采用中值预测(Median Prediction)来编码运动矢量:
- 取当前块左侧、上方、右上方三个相邻块的运动矢量,取其中值作为预测值。
- 编码器只需编码实际MV与预测值之间的差值(MVD,Motion Vector Difference)。
这一机制在多数场景下有效,但存在局限:预测候选单一、无法充分利用更多空间和时间相关性。
AMVP:高级运动矢量预测
H.265引入了AMVP(Advanced Motion Vector Prediction,高级运动矢量预测)机制,核心思想是构建一个更丰富的候选运动矢量列表,从中选择最优预测值:
候选列表构建
AMVP从以下来源收集候选运动矢量:
- 空间候选:当前块左侧和上方的相邻块(最多5个位置)。
- 时间候选:参考帧中对应位置的同位块(Collocated Block)。
- 去重排序:去除重复候选,按优先级排序,最终保留最多2个候选。
编码方式
编码器从候选列表中选择最优的一个,只需编码其索引(1比特)和残差MVD。相比H.264的中值预测,AMVP能更灵活地利用空间和时间相关性,选择更精确的预测值,从而降低MVD的编码比特数。
Merge模式:零残差的极致压缩
Merge模式是H.265最具创新性的帧间预测技术之一。其核心思想是:如果当前块的运动信息(MV和参考帧索引)与某个相邻块完全相同,则无需编码任何运动矢量残差,直接"合并"(Merge)该相邻块的运动信息即可。
Merge候选列表
Merge模式构建一个最多包含5个候选的列表,来源包括:
- 空间候选:左侧、上方、左上方、右上方、左下方共5个相邻位置。
- 时间候选:参考帧中的同位块。
- 双向候选:由空间和时间候选组合生成的双向预测候选。
编码流程
- 编码器遍历Merge候选列表,评估每个候选的率失真代价。
- 选择最优候选后,只需编码一个Merge索引(约1~3比特),无需编码MVD和参考帧索引。
- 解码端根据相同的规则重建候选列表,直接复用对应候选的运动信息。
当画面中存在大面积匀速运动或静止背景时,Merge模式能以极低的比特开销完成编码,压缩效率提升显著。
Skip模式:Merge的极端情况
Skip模式可以看作Merge模式的特例:当前块不仅复用相邻块的运动信息,而且残差也为零。此时编码器只需编码一个Skip标志,无需任何额外信息。
在背景静止或全局运动(如摄像机平移)的场景中,Skip模式的应用比例非常高,是H.265低码率表现优异的重要原因之一。
AMVP与Merge的协同
AMVP和Merge并非互斥,而是互补关系:
- Merge模式:适用于当前块与相邻块运动信息完全一致的场景,编码开销极低。
- AMVP模式:适用于当前块运动信息与相邻块有差异但相关性较强的场景,通过预测残差实现高效编码。
- 直接编码:当相邻块相关性很弱时,编码器可退回到直接编码运动矢量。
编码器通过率失真优化(RDO)在三种模式间自动选择最优方案。
实际收益与性能对比
- 码率节省:相比H.264,AMVP和Merge机制在帧间预测模块可节省约10%~15%的运动信息编码比特。
- 主观画质:更精确的运动补偿减少了运动区域的模糊和伪影。
- 编码复杂度:候选列表构建和RDO搜索增加了编码器负担,但解码端开销增加有限。
结语
Merge模式和AMVP是H.265帧间预测模块的两大支柱。通过更智能的运动矢量预测和零残差的合并编码,H.265将时间冗余的利用推向了新的高度,为整体压缩效率的提升做出了重要贡献。
在下一篇文章中,我们将深入变换与量化模块,解析H.265如何更高效地处理残差数据,包括可变尺寸DCT/DST变换和量化矩阵优化。