目录
- JVET-A1001
-
- 帧间编码
- 1、基于子PU的运动矢量预测(Sub-PU based motion vector prediction)
- 2、自适应运动矢量精度(Adaptive motion vector resolution)
- 3、重叠块运动补偿(Overlapped block motion compensation)
- 4、局部光照补偿(Local illumination compensation)
- 5、仿射运动补偿预测(Affine motion compensation prediction)
- 6、模式匹配运动矢量推导(Pattern matched motion vector derivation)
- 7、双向光流(Bi-directional optical flow )
JVET-A1001
最近在找工作,时间每天都挤得好紧啊!!!继续学习吧!!
帧间编码
帧间编码的改进主要有:基于子PU的运动矢量预测(ATMVP和STMVP)、自适应运动矢量精度、重叠块运动补偿、局部光照补偿、仿射运动补偿预测、模式匹配运动矢量推导、双向光流,下面逐个进行介绍。
1、基于子PU的运动矢量预测(Sub-PU based motion vector prediction)
该方法研究了两种子PU级运动矢量预测方法,其先将一个大PU分割为子PU,并对大PU的所有子PU进行运动信息的提取,子PU级运动矢量预测方法有先进的时间运动矢量预测(ATMVP)和时空运动矢量预测(STMVP)。先进的时间运动矢量预测(ATMVP)方法允许每个PU从多个比当前的PU更小的预测块中获取多组运动信息。在时空运动矢量预测(STMVP)方法中,每个子PU的运动矢量利用时间运动矢量和空间邻域运动矢量递归的推导出来。
1.1、先进的时间运动矢量预测(ATMVP)
在先进的时间运动矢量预测(ATMVP)方法中,其改进了时间运动矢量预测(TMVP),通过允许每个PU从比当前PU小的多个预测块中获取多组运动信息(包括运动矢量和参考指标),ATMVP具体如下图所示:
ATMVP分两步来预测同一PU内子PU的运动矢量。第一步是利用所谓的“时间向量”为当前PU在找到参考图像中找到相应的块,参考图像称为运动源图像。第二步是将当前的PU分割为子PU,每个子PU的运动矢量和参考指标则从其对应的块中得到,如图8所示,右下角的子PU(蓝色)的运动矢量从参考图像中右下角的子PU(褐色)获取。
在第一步中,“时间向量”其实是通过当前PU的邻域空间PU获得。首先,其会按顺序检查每个邻域空间(与Merge模式相同),并将第一个可用的邻域PU的运动向量及其关联的参考索引设置为该“时间向量”和运动源图像的索引。
1.2、时空运动矢量预测(STMVP)
该方法按照光栅扫描顺序递归地推导出子PU的运动矢量。让我们考虑一个8x8 PU,它包含四个4x4子PUA、B、C和D。当前帧中相邻的NxN块被标记为a、b、c和d,如下图所示:
子PU A的运动推导首先确定其两个邻域空间。上面第一个邻居是NxN块子PU(块c)。如果这个块c不可用或者是帧内编码,则检查上面的其他NxN块子PU(从c向右扫描)。第二个邻居是一个块的左边子PU(块b)。如果块b不可用或是帧内编码,检查左边其他子PU(从b向下扫描)。从相邻块中获取的运动信息被缩放到给定列表的第一个参考帧。接下来,按照HEVC中规定的TMVP推导过程,推导出子块A的时间运动矢量预测(TMVP)。最后,在检索并缩放运动信息后,对每个参考列表中所有可用的运动向量(最多3个,可能有上面子PU运动矢量、左边子PU运动矢量和时间运动矢量)分别求平均值,将平均运动矢量赋值为当前子PU的运动矢量。需要注意的是,我认为D的运动推导时,是将A作为其第一个邻居是NxN块子PU,而不是c,这就是文档中递归的意义。
1.3、子PU信息的传输
子PU模式作为额外的Merge模式候选列表启用,并且不需要额外的语法元素来表示模式。在每个PU的Merge模式候选列表中添加两个额外的模式,以表示ATMVP模式和STMVP模式。如果序列参数集指示启用了ATMVP和STMVP,则最多使用7个合并候选项。同时,为了改进Merge模式编码,在JEM中,Merge模式的所有bins都使用上下文进行编码。
2、自适应运动矢量精度(Adaptive motion vector resolution)
在高级运动矢量精度(Advanced Motion Vector Resolution,AMVR)模式下,运动矢量差(MVD) (PU的运动矢量与预测运动矢量之间)可以用四分之一像素精度或整数像素精度进行编码。MVD精度控制在编码单元(CU)级别,对于至少有一个非零MVD的CU,有条件地为每个CU发送一个整数MVD精度标志flag。
在此有一些需要注意的点:
1、当整数MVD精度标志为false,默认的四分之一像素精度MV用于该CU的所有PU。
2、当一个CU的整数MV精度标志为true时,该CU中所有使用AMVP模式编码的PU都使用整数MV精度,而使用Merge模式编码的PU仍然使用四分之一像素精度MV。
3、当一个PU使用整数MV精度时,AMVP候选列表填充为整数MV,四分之一像素精度MVs被四舍五入到整数MVs。
3、重叠块运动补偿(Overlapped block motion compensation)
重叠块运动补偿(OBMC)已用于早期的视频标准,如H.263。在JEM中,除了CU的右边界和下边界外,对所有的运动补偿块边界都执行OBMC。此外,它适用于亮度和色度分量。在HEVC中,MC块对应于预测块PU。当用子PU模式编码PU时,PU的每个子块都是MC块。为了以统一的方式处理CU/PU边界,在所有MC块边界的子块级别执行OBMC,其中子块大小设置为4x4,如下图所示:
当OBMC应用于当前子块时,除了当前运动矢量外,还利用相邻的四个邻域子块的运动矢量,如果其可用且与当前运动矢量不一致的情况下,可用于推导出当前子块的预测块,通过对基于多个运动矢量得到的多个预测块进行加权,得到当前子块的最终预测信号。
P N P_N PN表示通过邻域子块的运动矢量得到的预测块(N可表示above, below, left and right 子块,我理解为在 P N 1 P_N1 PN1位置的预测块N表示上方,同理在 P N 2 P_N2 PN2位置的预测块N表示左方), P c P_c Pc表示通过当前子块的运动矢量得到的预测块。当 P N P_N PN与 P c P_c P