
引言帧间预测是压缩的核心引擎帧间预测利用视频的时间冗余性用已编码帧的像素预测当前帧仅编码残差和运动信息。它是视频编码中压缩效率的核心环节尤其对于运动场景、摄像机运动、物体形变帧间预测的质量直接决定整体码率。H.266/VVC在HEVC的AMVPMerge运动预测框架基础上引入了AFFINE仿射运动补偿、AMVR自适应运动矢量精度、GBi广义双向预测、CIIP帧内帧间融合、SMVD对称MVD等新工具使帧间预测环节较HEVC提升约8-12% BD-rate增益。但帧间预测的计算复杂度也显著增加AFFINE需要逐像素仿射变换AMVR需要多精度搜索GBi需要多权重组合优化CIIP需要帧内帧间融合计算。如何在压缩效率与编码速度之间取得平衡是工程落地的核心挑战。本文从算法原理到工程实践系统梳理VVC帧间预测与运动补偿的关键技术并给出可复用的优化策略与配置模板。AFFINE仿射运动补偿核心思想HEVC仅支持平移运动模型即一个CU内所有像素使用相同的运动矢量。但实际视频中物体经常发生旋转、缩放、剪切等仿射变换平移模型无法准确描述这类运动。VVC引入AFFINE仿射运动补偿允许CU内不同位置使用不同的运动矢量通过仿射变换模型描述复杂的运动模式。AFFINE的核心优势描述复杂运动可以表示旋转、缩放、剪切等仿射变换逐像素运动矢量CU内每个像素的运动矢量由控制点运动矢量插值得到压缩增益显著对摄像机运动、物体旋转场景增益可达5-10%仿射模型VVC支持两种仿射模型4参数仿射模型使用2个控制点左上角和右上角的运动矢量通过线性插值计算CU内任意位置的运动矢量MV(x, y) MV0 (MV1 - MV0) × (x / W)其中MV0和MV1是两个控制点的运动矢量W是CU宽度(x, y)是像素位置。6参数仿射模型使用3个控制点左上角、右上角、左下角的运动矢量通过双线性插值计算CU内任意位置的运动矢量MV(x, y) MV0 (MV1 - MV0) × (x / W) (MV2 - MV0) × (y / H)其中MV0、MV1、MV2是三个控制点的运动矢量W和H是CU宽度和高度。仿射Merge模式AFFINE支持Merge模式从邻近CU继承仿射参数避免显式编码控制点运动矢量。VVC定义了多种仿射Merge候选空间邻近从左侧、上方、右上、左下、左上邻近CU继承时间邻近从共位CU继承构造候选从多个邻近CU的控制点组合构造零仿射候选所有控制点运动矢量为零候选数量VVC最多支持6个仿射Merge候选使用索引编码选择最优候选。仿射AMVP模式AFFINE也支持AMVP高级运动矢量预测模式显式编码控制点运动矢量差值MVD。仿射AMVP的工作流程构建候选列表从邻近CU构建控制点MVP候选列表选择最优MVP对每个控制点选择最优MVP编码MVD编码控制点MVP与实际运动矢量的差值工程优化VVenC使用快速仿射模式决策先评估平移模式代价若代价较低则跳过仿射搜索将仿射编码开销降低约40%。压缩增益与复杂度压缩增益AFFINE可使整体码率降低约2-4%对摄像机运动和物体旋转场景增益可达5-10%复杂度增加AFFINE需要逐像素运动矢量计算和插值使帧间编码计算量增加约30-50%工程实践VVenC默认启用AFFINEx266也支持AFFINE但需要手动启用。对低复杂度场景可以关闭AFFINE以节省计算。AMVR自适应运动矢量精度核心思想HEVC中运动矢量精度固定为1/4像素即运动矢量可以表示1/4像素精度的位移。但不同场景对运动矢量精度的需求不同平滑运动需要高精度1/4像素或更高快速运动低精度整数像素或1/2像素已足够静态区域零运动矢量即可VVC引入AMVRAdaptive Motion Vector Resolution自适应运动矢量精度允许CU级别选择运动矢量精度整数像素精度运动矢量只能表示整数像素位移1/4像素精度运动矢量可以表示1/4像素位移HEVC标准1/16像素精度运动矢量可以表示1/16像素位移VVC新增精度选择策略AMVR根据CU的运动特征动态选择精度评估多精度代价对不同精度进行率失真评估选择最优精度选择率失真代价最低的精度编码精度标识在码流中编码精度标识精度编码AMVR使用上下文自适应编码精度标识高频精度如1/4像素使用短码字低频精度如1/16像素使用长码字。插值滤波器不同精度需要不同的插值滤波器整数像素无需插值直接使用参考像素1/4像素使用8抽头DCT-IF滤波器与HEVC相同1/16像素使用8抽头DCT-IF滤波器VVC优化系数工程优化VVenC使用查表法加速插值计算将1/16像素插值开销降低约30%。压缩增益与复杂度压缩增益AMVR可使整体码率降低约0.5-1.0%对高分辨率视频增益更大复杂度增加AMVR需要多精度搜索使运动估计计算量增加约20-30%工程实践VVenC默认启用AMVR对低复杂度场景可以限制精度范围为整数和1/4像素跳过1/16像素搜索。GBi广义双向预测核心思想HEVC的双向预测B帧使用固定权重0.5对L0和L1预测值进行平均pred 0.5 × pred_L0 0.5 × pred_L1但实际视频中L0和L1参考帧与当前帧的时间距离可能不同或者内容相似度不同固定权重并非最优。VVC引入GBiGeneralized Bi-directional Prediction广义双向预测允许CU级别选择L0和L1的加权权重pred w × pred_L0 (1-w) × pred_L1其中w是L0权重可以从预定义权重集合中选择。权重集合VVC预定义了5种权重组合权重索引L0权重 (w)L1权重 (1-w)05/83/813/85/821/21/2 (默认)33/41/441/43/4权重编码GBi权重索引使用上下文自适应编码默认权重1/2使用最短码字。GBi Merge模式GBi支持Merge模式从邻近CU继承权重避免显式编码权重索引。GBi Merge的工作流程构建候选列表从邻近CU继承L0/L1运动矢量和权重选择最优候选对候选进行率失真评估编码候选索引编码最优候选的索引工程优化VVenC对GBi权重搜索使用快速剪枝策略先评估默认权重1/2若代价较低则跳过其他权重搜索将GBi搜索开销降低约50%。压缩增益与复杂度压缩增益GBi可使整体码率降低约0.5-1.0%对B帧场景增益更大复杂度增加GBi需要多权重搜索使B帧编码计算量增加约15-25%工程实践VVenC默认启用GBi对低延迟场景仅P帧可以关闭GBi。CIIP帧内帧间融合预测核心思想某些场景下单纯的帧内预测或帧间预测都无法获得最优效果。例如物体边界区域既有运动信息又有空间纹理帧内预测可以捕获纹理帧间预测可以捕获运动两者融合可能更优。VVC引入CIIPCombined Inter and Intra Prediction帧内帧间融合预测将帧内预测和帧间预测结果加权融合pred w × pred_inter (1-w) × pred_intra其中w是帧间预测权重根据CU位置和模式动态确定。融合策略CIIP的融合策略包括帧间预测使用Merge或AMVP模式获取帧间预测值帧内预测使用Planar模式获取帧内预测值CIIP仅支持Planar帧内模式权重确定根据CU在图像中的位置确定权重靠近边界帧内权重较高远离边界帧间权重较高权重表VVC预定义了权重表根据CU位置查表获取权重避免实时计算。CIIP Merge模式CIIP作为Merge模式的一种特殊候选称为CIIP Merge。CIIP Merge的工作流程构建候选列表从邻近CU继承帧间运动信息帧内Planar预测对当前CU进行Planar帧内预测融合预测根据权重表融合帧内和帧间预测率失真评估评估CIIP Merge的率失真代价工程优化VVenC对CIIP Merge使用快速跳过策略若帧间Merge代价已足够低则跳过CIIP搜索将CIIP搜索开销降低约60%。压缩增益与复杂度压缩增益CIIP可使整体码率降低约0.3-0.5%对物体边界和纹理区域增益较大复杂度增加CIIP需要帧内帧间融合计算使帧间编码计算量增加约10-15%工程实践VVenC默认启用CIIP对低复杂度场景可以关闭CIIP。SMVD对称MVD核心思想B帧双向预测中L0和L1的运动矢量通常存在对称关系。HEVC需要分别编码L0和L1的MVD存在冗余。VVC引入SMVDSymmetric MVD对称MVD利用L0和L1运动矢量的对称性仅编码一个MVD另一个MVD通过对称关系推导MVD_L1 -MVD_L0 MV_L1 MVP_L1 - MVD_L0其中MVP_L1是L1的MVPMVD_L0是编码的L0 MVD。SMVD Merge模式SMVD作为Merge模式的一种特殊候选称为SMVD Merge。SMVD Merge的工作流程构建候选列表从邻近CU继承L0运动信息对称推导L1根据L0 MVD对称推导L1 MVD双向预测使用推导的L0/L1运动矢量进行双向预测率失真评估评估SMVD Merge的率失真代价工程优化SMVD Merge无需编码L1 MVD节省码率约0.2-0.3%。VVenC默认启用SMVD。压缩增益与复杂度压缩增益SMVD可使整体码率降低约0.2-0.3%复杂度增加SMVD计算开销极小几乎不增加编码复杂度工程实践SMVD是VVC中性价比最高的帧间工具之一建议始终启用。实战配置模板高质量编码场景# VVenC参数 --preset slower --affine 1 # 启用AFFINE --amvr 1 # 启用AMVR全精度 --gbi 1 # 启用GBi --ciip 1 # 启用CIIP --smvd 1 # 启用SMVD --max-affine-merge 6 # 最大仿射Merge候选数 --amvr-precision 3 # 启用1/16像素精度实时编码场景--preset fast --affine 1 # 启用AFFINE --amvr 1 # 启用AMVR --gbi 0 # 关闭GBi节省计算 --ciip 0 # 关闭CIIP --smvd 1 # 启用SMVD --max-affine-merge 4 # 减少仿射Merge候选数 --amvr-precision 2 # 仅启用整数和1/4像素精度低延迟场景仅P帧--preset faster --affine 1 # 启用AFFINE --amvr 1 # 启用AMVR --gbi 0 # 关闭GBiB帧专用 --ciip 0 # 关闭CIIP --smvd 0 # 关闭SMVDB帧专用 --max-affine-merge 4 # 减少仿射Merge候选数 --amvr-precision 2 # 仅启用整数和1/4像素精度低复杂度场景--preset faster --affine 0 # 关闭AFFINE --amvr 1 # 启用AMVR --gbi 0 # 关闭GBi --ciip 0 # 关闭CIIP --smvd 1 # 启用SMVD --max-affine-merge 0 # 禁用仿射Merge --amvr-precision 1 # 仅启用整数精度运动估计与Merge框架AMVP高级运动矢量预测VVC的AMVP框架与HEVC类似但增加了更多候选来源空间邻近左侧、上方、右上、左下、左上时间邻近共位CU历史候选从历史CU继承HMVP成对候选从两个空间候选组合构造零候选运动矢量为零候选数量VVC最多支持6个AMVP候选使用索引编码选择最优候选。Merge模式VVC的Merge模式包括多种候选类型常规Merge从邻近CU继承运动信息仿射Merge继承仿射运动信息CIIP Merge帧内帧间融合SMVD Merge对称MVD历史Merge从历史CU继承HMVP零Merge运动矢量为零候选数量VVC最多支持6个Merge候选使用索引编码选择最优候选。HMVP历史运动矢量预测VVC引入HMVPHistory-based Motion Vector Prediction历史运动矢量预测维护一个历史运动矢量表从最近编码的CU中继承运动信息。HMVP的优势捕获时间相关性历史CU的运动信息可能与当前CU相关增加候选多样性补充空间和时间的不足工程实践VVenC默认启用HMVP历史表大小为5。结语帧间预测是压缩效率的核心引擎VVC的帧间预测与运动补偿已经从HEVC的平移模型固定权重体系演进为AFFINEAMVRGBiCIIPSMVD的多元工具体系每一个工具都在试图捕获更精细的时间冗余。但工具越多计算复杂度越高工程取舍就越重要。建议建立帧间工具增益画像针对不同场景自然视频/屏幕内容/动画、不同分辨率、不同帧类型I/P/B配置差异化的帧间工具组合。让编码器理解运动而非盲目启用所有工具。帧间预测是压缩的核心引擎也是整个编码流水线的动力源。愿每一位视频编码工程师都能在AFFINE与AMVR之间找到压缩效率与编码速度的最佳平衡点。