帧间预测Inter-frame Prediction)是视频编解码器利用相邻时间帧相似性的机制:当前块不直接保存完整像素,而是引用已经解码的参考帧中相似区域,再保存位移和残差。

它是 H.264(AVC)H.265(HEVC) 等现代视频编码标准获得高压缩率的核心原因之一。

核心问题

视频中相邻帧往往变化很小。一个人从画面左侧移动到右侧时,物体纹理本身没有完全变,只是位置变了。如果每帧都完整保存,会重复存储大量信息。帧间预测把“这块像素像参考帧的哪一块”写入码流,再只保存预测不准的部分。

核心对象

对象作用
current block当前要编码或解码的图像块
reference frame已解码、可被引用的过去或未来帧
motion vector从当前块位置指向参考帧相似区域的位移
prediction block按 motion vector 从参考帧取出的预测块
residual block当前块和预测块之间的差值
reference list编码标准维护的一组可引用帧

核心机制

最小模型可以写成:

prediction(x, y) = reference_frame(x + dx, y + dy)
residual(x, y) = current_frame(x, y) - prediction(x, y)
  • (x, y) 是当前块内某个像素位置。
  • (dx, dy) 是 motion vector,表示到参考帧中相似位置的位移。
  • reference_frame(...) 是参考帧中被取样的位置;实际标准可能允许半像素、四分之一像素插值,不一定正好落在整数像素上。
  • prediction(...) 是预测像素。
  • residual(...) 是预测误差,后续会被变换、量化和熵编码。

编码端通常要搜索参考帧,找出码率和误差综合最优的 motion vector。解码端不搜索,它只读取码流里已经保存的 motion vector 和残差,再按规则重建画面。

工程用途

  • 大幅降低码率,尤其是摄像机固定、背景稳定或运动连续的视频。
  • 通过 P 帧、B 帧和参考帧列表平衡压缩率、延迟和随机访问能力。
  • 让监控、直播、视频会议和流媒体在有限带宽下可用。

边界与常见坑

  • 帧间预测不是光流估计:它服务于压缩,motion vector 不一定等于真实物体运动。
  • 解码端不做运动搜索:运动搜索是编码端高成本步骤;解码端执行的是码流指定的运动补偿。
  • 参考链会传播错误:参考帧损坏、丢包或解码失败时,后续依赖它的帧也可能花屏。
  • B 帧会增加延迟:引用未来帧可以提高压缩率,但会增加重排序和缓冲。
  • 随机访问依赖关键帧:从任意 P/B 帧开始通常无法独立解码,需要前面的参考帧。

相关术语