5.3.1 运动向量缩放

作者:chai51
出处:https://www.cnblogs.com/chai51
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

引言

运动向量缩放是帧间预测生成过程的重要步骤,它将运动向量从参考帧坐标系转换到当前帧坐标系,考虑参考帧和当前帧的缩放关系。这对于处理不同分辨率的参考帧至关重要。

源码说明: 本文档基于作者自己编写的AV1解码器Python实现,所有代码示例和实现细节均来自实际可运行的源码。源码仓库:GitHub - av1_learning


运动向量缩放概述

位置: src/reconstruction/prediction.py - _motion_vector_scaling()

规范文档: 7.11.3.3 Motion vector scaling process

功能说明

将运动向量从参考帧坐标系转换到当前帧坐标系,考虑参考帧和当前帧的缩放关系。

输出

  • startX, startY: 起始位置(子像素精度)
  • stepX, stepY: 步长(用于缩放)

计算过程

# 1. 获取参考帧和当前帧的缩放参数
refScale = get_ref_scale(refFrame)
curScale = get_cur_scale()

# 2. 计算缩放比例
scaleX = (refScale[0] << REF_SCALE_SHIFT) // curScale[0]
scaleY = (refScale[1] << REF_SCALE_SHIFT) // curScale[1]

# 3. 计算起始位置和步长
startX = (Mv[0] * scaleX) >> REF_SCALE_SHIFT
startY = (Mv[1] * scaleY) >> REF_SCALE_SHIFT
stepX = scaleX
stepY = scaleY

总结

运动向量缩放将运动向量从参考帧坐标系转换到当前帧坐标系,考虑参考帧和当前帧的缩放关系。这对于处理不同分辨率的参考帧至关重要,是帧间预测生成过程的重要步骤。


参考资源:

上一篇: 复合类型解码
下一篇: 块间预测

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