H.266/VVC技术描述_3-帧间预测_1-Affine模式:仿射运动补偿预测

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/heweiqiran/article/details/102703593

1、仿射运动补偿预测

  HEVC中,运动补偿预测MCP仅采用平移运动模型。而在现实世界中,有很多种运动,比如放大/缩小、旋转、透视等不规则运动。在VTM中,采用了基于块的仿射变换运动补偿预测方法。如图所示,通过两个控制点(4参数)或三个控制点运动向量CPMV(6参数)来描述块的仿射运动场MF。
在这里插入图片描述
  实际上Affine模式使用2组或者3组运动矢量来描述一个块的运动信息,块内每个点的运动矢量可以通过以下公式计算:
4参数:
在这里插入图片描述
6参数:
在这里插入图片描述
  为了简化计算VTM中将编码块划分为4x4子块(色度块也是4x4),分块计算每个子块的运动矢量,如下图所示。

在这里插入图片描述
  跟平移运动帧间预测相同,affine模式也有两种模式:merge模式和AMVP模式。

2、Affine merge模式

  merge模式用于宽高均大于8的块,产生长度为5的候选列表,编码时仅传输CPMV在列表中的索引。merge候选列表的构造顺序为:
  1、继承自CU相邻位置的CPMVs。
  2、利用旁边CU的平移MV构造CPMVs。
  3、0 MVs

2.1、 继承

  首先,如果CU左侧和上册都有affine模式,最多可以得到两个CPMV加入候选列表。左侧搜索顺序是下图中A0->A1,上侧搜索顺序是B0->B1->B2,只有第一个满足条件的块会加入到候选列表。

在这里插入图片描述

2.2、构造

  用CPMVk表示第k个控制点,搜索CU周边的MV,搜索MV顺序为:
  CPMV1:B2->B3->A2
  CPMV2:B1->B0
  CPMV3:A1->A0
  CPMV4:T,使用TMVP(如果可用)
在这里插入图片描述
  6参数CPMV按以下顺序构造:
  {CPMV1, CPMV2, CPMV3}, {CPMV1, CPMV2, CPMV4}, {CPMV1, CPMV3, CPMV4},{CPMV2, CPMV3, CPMV4}
  4参数CPMV按以下顺序构造:
  { CPMV1, CPMV2}, { CPMV1, CPMV3}

2.3、0 MVs

  当使用继承和构造两种方法后,候选列表仍然未满,使用0来填充生于位置。

3、Affine AMVP模式

  Affine AMVP可以在长宽都大于16的块使用。这种模式下,预测值 CPMVPs在候选列表中的索引,以及它和运动搜索到的实际运动信息 CPMVs的差值会被传输。候选列表长度为2,建立顺序为:
  1、继承自CU相邻位置的CPMVs。
  2、利用旁边CU的平移MV构造CPMVs。
  3、直接使用旁边CU的平移MV。
  4、0 MVs。
  继承的顺序与merge模式相同,区别是只考虑参考帧相同的CU。
  构造的顺序同样与merge模式相同,同样只考虑参考帧相同的CU,注意此时只添加一个CPMVP到候选列表。
  如果候选列表长度仍然小于2,使用相邻的平移MV填充mv0、mv1和mv2。
  如果候选列表仍然未满,使用0填充。

4、Affine运动信息存储

  在VTM中,CPMV被单独存储,只用来产生merge和AMVP中的继承CPMVPs。子块的MV用CPMV计算,用来进行运动补偿、平移MV候选列表构造和解码。
  从上方CTU获取affine运动信息更加困难,因此如果CU的affine运动信息继承自上方的CTU行,改用上方CU左下子块和右下子块的MV来代替CPMV来进行预测,如下图所示。
在这里插入图片描述

5、光流预测增强

猜你喜欢

转载自blog.csdn.net/heweiqiran/article/details/102703593