【四】 VVC理论知识之帧间预测(2)

H.266/VVC 的帧间预测技术

到目前为止,H.266/VVC沿用了HEVC中的运动估计,运动矢量预测和运动补偿技术。但在运动矢量预测的技术中,H.266/VVC 进行了一些修改,主要包括 Merge运动矢量候选列表长度,构造过程,检查邻块的范围等。同时新增了一些新的预测技术,例如仿射变换技术,自适应运动矢量精度技术等。仿射变换技术打破了H.265/HEVC中对CU 的运动信息的限制,由原来一个 CU只能有一个运动信息变为了一个CU可以拥有多个运动信息,这样在相同质量的情况下,大大减少了编码所需比特数;自适应运动矢量技术适应了目前图像分辨率跨度范围较大这一特征,让编码器灵活地进行选择使用哪一种分辨率的运动矢量,这样在图像分辨率不同的情况下,可以将编码使用的比特数进行优化,提升编码效率。以下将作具体介绍:

(1)Merge 模式

H.266/VVC 中 Merge模式发生了一些变化,主要体现在候选列表构造的长度,构造的过程,邻块检查的范围等。在候选列表的长度上,由于新增加了几种检查邻块的方式,故列表长度由原来的5增加到现在的 6;在列表的构造过程中,首先还是优先检查当前编码块的各个邻块,接着检查时域候选的有效性,该过程与 H.265/HEVC保持一致。

如果列表没有被填满,则新增一种填充候选的方法–基于历史的运动矢量预测,即 HMVP技术。该方法维护并随时更新一个HMVP 列表,当解码完或者编码完一个块后,将该块的运动信息作为一个新的HMVP候选添加到HMVP 列表的末尾,添加的规则为队列的添加规则,即先进先出(First Input First Output,FIFO)。在构造好HMVP列表后,将HMVP 候选从列表中由后往前的顺序添加到 Merge候选列表中。HMVP技术不仅可以应用于Merge候选列表的构造,同样也适用于 AMVP候选列表的构造。

添加完HMVP候选后,将列表中前4个候选MV,两两进行平均值的过程,再将求均值后有效的MV添加进Merge 候选列表中,具体的顺序为(MV0,MV1)→(MV0,MV2)→(MV1,MV2)→(MV0,MV3)→(MV1,MV3)→(MV2,MV3)。如果依然没有填满候选列表,则使用 0 运动矢量填满。

当候选列表构造好后,编码器就要对候选列表中的每一个候选进行率失真代价的计算,以得到一个性能最优的候选 MV。在 H.266/VVC中,除了计算代表普通Merge模式的候选MV的率失真代价,还添加了新的技术,例如MMVD 技术,帧内帧间多假设预测模式。这些技术分别计算出一个最优MV代表当前模式,然后对这些模式再进行率失真代价的计算,最终决定出一个最优的Merge模式和最优的MV候选。

(2)仿射变换技术

在H.265/HEVC中,运动补偿预测的过程仅仅只适用于平移运动模型,然而在自然界中,存在各种各样的运动,例如放大、缩小,旋转,各种视角下的运动和各种不规则运动。当这些运动应用平移运动模型的运动补偿过程时,就会造成预测值不够准确,最终导致编码块的残差较大,增加了编码比特数。在H.266/VVC中,使用了基于子块的仿射变换技术(Affine Mode)来解决这一问题。如下图所示,当前编码块的仿射运动场由两个控制点的运动矢量(四参数模型)或者三个控制点的运动矢量(六参数模型)来表示。

在这里插入图片描述

对于上图中四参数模型,在编码块中的(x, y) 采样点处的运动矢量使用如下公式推导:

在这里插入图片描述

对于上图中六参数模型,在编码块中的(x, y) 采样点处的运动矢量使用如下公式推导:

在这里插入图片描述

以上公式中, ( m v x , m v y ) \left( mv_x,mv_y \right) (mvx,mvy)表示 ( x , y ) \left( x,y \right) (x,y)处的运动矢量, ( m v 0 x , m v 0 y ) \left( mv_{0x},mv_{0y} \right) (mv0x,mv0y)表示上图中左上角点处的运动矢量, ( m v 1 x , m v 1 y ) \left( mv_{1x},mv_{1y} \right) (mv1x,mv1y)表示上图中右上角点处的运动矢量, ( m v 2 x , m v 2 y ) \left( mv_{2x},mv_{2y} \right) (mv2x,mv2y)表示上图中左下角点处的运动矢量。W 和 H 分别为当前CU的宽高。

这样就能够得到当前编码块的每个采样点处的运动矢量,但实际应用中,为了简化计算,通常使用基于块的运动矢量,如下图所示。对于亮度块,以 4*4 像素的子块为单位进行运动矢量的获取,然后对当前 CU 以子块为单位进行运动补偿得到预测值,计算率失真代价值与当前最优编码模式进行比较。

在这里插入图片描述

(3)自适应运动矢量精度

在 H.266/VVC 中,MVD 可以使用三种精度分辨率进行编码,分别为 1/4 亮度像素精度,整数亮度像素精度,4 倍整数亮度像素精度。而在 H.265/HEVC 中,仅仅使用 1/4 亮度像素精度和整数亮度像素精度。现在,编码器可以在三种精度中进行自由选择,并决定处一个性能最优的精度进行最终编码,使用一个标识符进行标记。这样可以在不同的图像中,自由地选择性能最佳的精度方式。


更多关于视频编码的知识和资源,更精致的文章排版,欢迎关注博主微信公众号,一起交流、学习、进步!!!
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值