5.5 重叠块运动补偿(OBMC)
作者:chai51
出处:https://www.cnblogs.com/chai51
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
引言
重叠块运动补偿(OBMC,Overlapped Block Motion Compensation)是AV1帧间预测中的一种重要技术,它使用相邻块的运动向量生成额外的预测,与主预测进行混合,减少块边界伪影。OBMC能够显著提高预测质量,特别是在块边界处。
源码说明: 本文档基于作者自己编写的AV1解码器Python实现,所有代码示例和实现细节均来自实际可运行的源码。源码仓库:GitHub - av1_learning
重叠块运动补偿概述
位置: src/reconstruction/prediction.py - _overlapped_motion_compensation()
规范文档: 7.11.3.8 Overlapped motion compensation process
功能说明
使用相邻块的运动向量生成额外的预测,与主预测进行混合,减少块边界伪影。
过程
-
获取邻居MV
neighbors = [ get_above_mv(), # 上方 get_left_mv(), # 左侧 get_above_right_mv(), # 右上 get_below_left_mv() # 左下 ] -
使用邻居MV生成预测
for neighbor_mv in neighbors: neighbor_pred = block_inter_prediction(neighbor_mv, ...) pred = blend_with_obmc_mask(pred, neighbor_pred, ...) -
应用OBMC mask
# OBMC mask根据块大小和方向确定 mask = get_obmc_mask(MiSize, direction) pred[i][j] = Round2(pred[i][j] * mask[i][j] + neighbor_pred[i][j] * (64 - mask[i][j]), 6)
总结
重叠块运动补偿使用相邻块的运动向量生成额外的预测,与主预测进行混合,减少块边界伪影。OBMC能够显著提高预测质量,特别是在块边界处,是AV1帧间预测的重要技术。
参考资源:
- AV1规范文档
- 源码实现: GitHub - av1_learning
- 预测实现:
src/reconstruction/prediction.py
- 预测实现:
上一篇: 复合预测混合

浙公网安备 33010602011771号