4.1 仿射运动补偿


4.1 仿射运动补偿

本节摘要:H.261以来,帧间预测的运动模型一直是"整块平移"——一个运动矢量搬完整个块。真实视频里的推轨、变焦、旋转、俯仰全是非平移运动,平移模型只能靠切小块硬拟合。VVC引入仿射运动补偿:用两三个控制点的MV描述块内线性变化的运动场,缩放旋转一次表达。本节拆解四参数与六参数模型、子块级组织与光流修正的配合。

本章三节中的第一节:先把"运动怎么描述"的模型问题解决,4.2节再看"运动的描述怎么便宜地传",4.3节把一部分计算搬到解码端。

平移模型的天花板

设想一个缓慢推近的镜头:画面里所有物体都在"变大",物体中心的位移小、边缘的位移大。平移模型下,编码器只有两个选择:给整块一个平均MV(残差巨大),或者把画面切成很多小块各给一个MV(信令巨大)。两者都是拿比特硬砸。

运动补偿的通式可以写成:每个像素的位移是该像素位置的函数。平移模型里这个函数是常数(所有像素同位移);仿射模型里这个函数是位置的线性函数——一步就从"常数函数"升级到"线性函数",能表达的运动会瞬间扩容:

运动 平移模型 仿射模型
水平/垂直平移 直接表达 直接表达
均匀缩放(推轨、变焦) 切块近似 一次表达
旋转(手持晃动、转盘) 切块近似 一次表达
剪切变形(透视的近似) 无法 一次表达
非均匀复杂形变 无法 仍需切块或靠残差

四参数与六参数:控制点的算术

仿射模型的参数从"控制点"来。VVC定义两种:

四参数仿射(2个控制点):取块左上与右上两个角点,各传一个MV。两个点、四个标量(每个MV有横竖两个分量),恰好约束"平移加缩放加旋转加剪切"的线性组合。块内任意子块的MV由两个控制点线性插值得到。

六参数仿射(3个控制点):再加左下角点,三个点六个标量,把垂直方向的独立缩放/剪切也放开,适合镜头同时俯仰与变焦的复合运动。

四参数仿射的运动场推导(示意): 控制点A(左上)MV = (mvax, mvay) 控制点B(右上)MV = (mvbx, mvby) 块内位置 x,y 处的位移: mv_x = mvax + (mvbx - mvax) * x / W # 水平线性变化 mv_y = mvay + (mvay' ... 类似) # 垂直由参数联立 直觉:知道两个角点怎么动,整个块的运动 就像一块橡皮被匀速拉伸,内部各点位移线性可得。 信令成本:只传 2~3 个控制点MV, 而不是每个 4x4 子块一个MV —— 这就是收益来源。

子块级组织:MV场的离散化

解码端按4×4子块粒度求各子块中心位置的MV,然后整子块做插值搬运(用第1章提过的高精度亚像素插值)。注意这里的设计取舍:连续的仿射场被离散成4×4粒度,既控制了解码端插值计算量,又保住了运动的表达力——离散粒度选在"计算量翻倍"与"精度损失"的平衡点上。

图解:仿射运动场

图解:仿射运动场

PROF:光流修正,仿射的搭档

仿射场离散成4×4粒度会留下残差——子块内部的运动仍在连续变化,但整子块用同一个MV搬运。**PROF(基于光流的帧间预测修正,Prediction Refinement with Optical Flow)**在解码端补这一刀:利用预测信号的梯度,对子块内每个4×4小区域的预测值按局部光流做一阶修正,等效于把补偿粒度做到4×4以下,而不真的做全像素级插值。

PROF是VVC"解码端精细化"哲学的代表(4.3节的DMVR、BDOF同属一个家族):编码端传的信息没变,解码端多用点算力换预测精度。这对编码昂贵、解码便宜的产业分工(一次编码万次解码)是顺水推舟。

⚠️ 硬件视角提醒:PROF要求解码端额外计算梯度与乘加,且在流水线里位于插值之后,对行缓冲(回顾2.2节VPDU)有压力。所以标准把PROF设计为解码端可选实现——编码端信令不变,弱解码器跳过修正仍能合规解码(以质量为代价)。这种"软着陆"设计在VVC里反复出现,是标准兼容工程的范本。

实测中的命中率图景

仿射不是全天候主力。各类内容的典型使用分布(来自公开测试的定性描述):

  • 体育与动作电影(镜头运动频繁):仿射块占比可观,收益最大;
  • 对话类固定机位:平移模型足够,仿射偶发启用;
  • 屏幕内容:整块复制场景多由第7章IBC接管,仿射参与度低;
  • 动画与CG:镜头运动"数学上太规整",仿射命中率高得惊人——推轨变焦正是仿射的主场。

案例复盘:一场推轨镜头的仿射收益

用一段具体素材把本节工具走一遍。素材:无人机沿山谷直线前推的航拍(连续缩放型运动),1080p、随机访问档。

背景:平移模型下,编码器把画面中景层切成大量中小块、各配各的MV,中景与近景的位移差仍留下大片残差——山谷的深度层次就是天然的"位移梯度场"。操作:编码器对中景大块启用四参数仿射,近景边缘细长块(QTMT产物)配MV精修;PROF在解码端把子块粒度再磨细。结果(示例口径):该片段的仿射启用块集中在画面中部大块,帧间残差能量显著下降,整段码率比纯平移基线低一截,且运动越连贯的段落收益越大。解读:仿射的收益公式是"运动场的线性变化幅度 × 被大块覆盖的面积"——推轨、变焦这类全局规律运动吃满两项;手持晃动的随机运动两项都低,仿射就退位给平移加小块。变式:若镜头带俯仰(六自由度云台),六参数仿射的启用率上升;若素材是正交视角的游戏画面(无透视),四参数已近完美。

两问两答

问:仿射能关吗?关了会怎样?
编码器实现里通常可关(工具开关)。关闭后这类内容退回平移+细块拟合——码率上涨、编码时间反而可能下降(划分搜索变简单)。低算力编码端(嵌入式直播)常做此取舍,属于典型的"用码率换算力"。

问:仿射的MV预测子怎么建?
与4.2节同构:相邻已编码仿射块的控制点可作预测子,继承 Merge 体系的候选机制——控制点MV也有"抄邻居"的通道,信令哲学完全一致。

本节要点回顾

  • 模型从常数升级到线性:仿射用2~3个控制点MV表达缩放、旋转、剪切,推轨变焦一次到位;
  • 四参数管均匀形变,六参数放开垂直独立缩放:控制点MV是全部信令;
  • 子块粒度4×4:连续场离散化,计算量与精度的平衡点;
  • PROF光流修正是标配搭档:解码端用梯度信息等效细化补偿粒度,且为弱实现留了跳过通道;
  • 收益是内容函数:运动镜头吃满红利,固定机位下平移仍是主力。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U