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

功能说明

使用相邻块的运动向量生成额外的预测,与主预测进行混合,减少块边界伪影。

过程

  1. 获取邻居MV

    neighbors = [
        get_above_mv(),    # 上方
        get_left_mv(),     # 左侧
        get_above_right_mv(),  # 右上
        get_below_left_mv()     # 左下
    ]
    
  2. 使用邻居MV生成预测

    for neighbor_mv in neighbors:
        neighbor_pred = block_inter_prediction(neighbor_mv, ...)
        pred = blend_with_obmc_mask(pred, neighbor_pred, ...)
    
  3. 应用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帧间预测的重要技术。


参考资源:

上一篇: 复合预测混合

posted @ 2026-01-10 07:55  chai51  阅读(0)  评论(0)    收藏  举报