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

仿射场离散成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里反复出现,是标准兼容工程的范本。
仿射不是全天候主力。各类内容的典型使用分布(来自公开测试的定性描述):
用一段具体素材把本节工具走一遍。素材:无人机沿山谷直线前推的航拍(连续缩放型运动),1080p、随机访问档。
背景:平移模型下,编码器把画面中景层切成大量中小块、各配各的MV,中景与近景的位移差仍留下大片残差——山谷的深度层次就是天然的"位移梯度场"。操作:编码器对中景大块启用四参数仿射,近景边缘细长块(QTMT产物)配MV精修;PROF在解码端把子块粒度再磨细。结果(示例口径):该片段的仿射启用块集中在画面中部大块,帧间残差能量显著下降,整段码率比纯平移基线低一截,且运动越连贯的段落收益越大。解读:仿射的收益公式是"运动场的线性变化幅度 × 被大块覆盖的面积"——推轨、变焦这类全局规律运动吃满两项;手持晃动的随机运动两项都低,仿射就退位给平移加小块。变式:若镜头带俯仰(六自由度云台),六参数仿射的启用率上升;若素材是正交视角的游戏画面(无透视),四参数已近完美。
问:仿射能关吗?关了会怎样?
编码器实现里通常可关(工具开关)。关闭后这类内容退回平移+细块拟合——码率上涨、编码时间反而可能下降(划分搜索变简单)。低算力编码端(嵌入式直播)常做此取舍,属于典型的"用码率换算力"。
问:仿射的MV预测子怎么建?
与4.2节同构:相邻已编码仿射块的控制点可作预测子,继承 Merge 体系的候选机制——控制点MV也有"抄邻居"的通道,信令哲学完全一致。