AVS3帧间预测
Posted Dillon2015
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AVS3帧间预测相关的知识,希望对你有一定的参考价值。
帧间预测是去除时域冗余的重要工具,随着AVS标准发展,越来越多的帧间预测工具被加入标准,主要可以分为三类:预测编码类型、运动信息编码工具、CU级和子块级运动补偿。
预测编码类型
预测编码类型是指帧间预测的不同预测方式,在AVS1中根据时域预测关系有两种帧类型:P帧和B帧,P帧只能进行前向预测,参考帧的播放顺序必须在当前帧之前,B帧进行双向预测,两个参考帧的播放顺序分别在当前帧之前和之后。在AVS2中引入了F帧,F帧可以看作多参考的P帧,它可以有两个前向参考。AVS3中提出了广义B帧,对于双向预测块的两个参考块可以是前向和后向的任意组合。
在AVS1中inter块有4种预测模式:inter mode、skip mode、direct mode和symmetric mode。direct mode和symmetric mode仅用于双向预测。direct mode和H.264类似,其前向和后向MV都是根据后向参考帧中同位块及时域距离决定。symmetric mode在码流中只需要传输前向MV,后向MV可以根据对称规则由前向MV生成。AVS2对帧间预测进一步引入了多假设模式,multi-directional skip/direct mode,temporal multi-hypothesis prediction mode ,spatial directional multi-hypothesis prediction mode。
运动信息编码
在帧间预测中除了残差,运动信息也占了很多码率。运动信息包括MV和参考帧索引,运动信息编码主要解决的就是MV预测的问题,通过MV预测获得MVP,在码流中就只需要传输MVD(=MV-MVP)。
-
中值MV预测(Median MV prediction):中值MV预测使用相邻三个块(上方、左侧、右上方)的MV均值作为当前块的预测MV。
-
MVAP(Motion Vector Angle Prediction):MVAP用于direct和skip模式,它基于8x8子块。MVAP有5个候选角度,从相邻块获得预测角度后就可以为每个子块生成MV。
-
HMVP(History-based MVP):HMVP使用历史编码信息来提高运动信息预测的效率,HMVP维护一个FIFO队列,当一个块编码完后就更新队列,当队列中已经存在相同的候选项时则将该候选项移除然后在队尾添加。队列的最大长度为8。HMVP用于skip和direct模式作为其他候选项的补充。
-
PMVR(Progressive Motion Vector Resolution):在AVS1中MV精度固定为1/4像素精度,AVS2为了减少MV编码码率提出了PMVR。在PMVR中,MV的精度根据MV和MVP的距离逐步调整,精度范围通过一个阈值限制。据观察,当MV离MVP越近时它是最优的可能性越大,因此对于距离MVP近的MV给予更高的精度,远离MVP的MV给予更低的精度。
-
AMVR(Adaptive MV Resolution):AVS3支持CU级的AMVR,对于CU在传输MV时其精度可以从1/4,1/2,1,2,4像素精度中选择。对于仿射模式,支持三种MV精度,1/16,1/4和整像素精度。
图1 AVS帧间预测工具的发展
运动补偿技术的发展
运动补偿是使用已编码视频的重建值作为当前块的预测,解码后将残差与预测值相加即得到解码像素。AVS3引入了多种工具以增强运动补偿效果,
-
AWP(Angular Weighted Prediction):AWP类似于VVC里的几何划分和三角划分,用于解决两个物体边界区域是斜的情况。AWP预定义了8种角度,权重集也是预定义的,给定角度和权重集每个像素就可以生成对应的权重。
-
OBMC(Overlapped Block Motion Compensation):利用当前块MV和相邻块(上方、左侧、右上方)MV可以获得多个预测结果,将当前块边界像素的预测值和相邻预测值进行加权平均得到OBMC预测值。OBMC仅用于单向预测,且对于较小的CU(少于64个像素)和使用AWP的CU禁用OBMC。
-
Inter prediction filter:为了减轻预测像素和相邻像素的不连续性,AVS3对预测值进行滤波处理。对于使用direct模式的CU,滤波通过加权平均实现。滤波器的输入包括预测像素和相邻像素,权重因子根据各像素间的位置关系决定。
-
Affine Motion Compensation(AMC):在AVS1和AVS2中,对于物体的运动仅考虑了平移运动,而真实场景中往往存在更复杂的运动模式例如旋转、缩放等。为了适应不同运动模式AVS3提出了AMC,它将CU划分为不同的子块,通过仿射模型为每个子块生成MV。仿射模型包括4参数(2个控制点CPMV)模型和6参数模型(3个控制点CPMV)。AMC分为两类:affine direct mode和affine inter mode。affine direct mode只用于宽和高都不小于16的CU。affine direct mode至多有5个候选仿射模型,merge候选列表中候选项包括三类:inherited affine candidates,constructed affine candidates和zero mv。列表构建方式和VVC的仿射运动类似。affine inter mode只有4参数模型,两个控制点分别由左上角和右上角相邻块生成。
-
DMVR(Decoder-side Motion Vector Refinement):AVS3中的DMVR和VVC类似,它解码端生成最终mv。DMVR会在direct、skip的初始mv附近搜索修正的mv,搜索范围在初始mv附近2个整像素内,先进行整像素搜索然后进行分像素搜索。
-
BIO(Bi-directional Optical Flow):BIO也是解码端预测工具,它和VVC的BDOF类似,基于光流微分方程对于每个4x4的子块,通过使L0和L1的预测值的差值最小来计算运动修正量,然后用计算出来的运动修正值来调整4x4子块的双向预测值。为了硬件实现方便,BIO仅应用小于64x64的CU,所有BIO相关的计算都可以通过不超过32位的整数运算实现。
-
UMVE(Ultimate Motion Vector Expression):UMVE用于skip和direct模式,它首先根据时域和空域相邻块生成base mv(至多两个base mv),然后UMVE会生成mv的偏移offset,base mv+ offset得到最终mv。mv的根据偏移调整只能在水平或垂直方向进行。
-
EMVR(Enhanced Motion Vector Resolution):EMVR将HMVP和AMVR绑定,如图2所示。当HMVP中候选项被选中后对应的AMVR index就可以确定。若运动信息只有mv0则其对应精度也要用于L1,若运动信息中只有mv1其对应精度也要应用于L0中。
图2 AMVR index和HMVP的关系
-
SMVD(Symmetry MVD):SMVD用于双向预测中,当CU使用SMVD时则mv1 = -mv0,且L0和L1的参考帧索引都为0不需要在码流中传输。且当前帧到前后参考帧的距离相等。
以上是关于AVS3帧间预测的主要内容,如果未能解决你的问题,请参考以下文章