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

【五】 H.266/VVC的帧间预测技术_第1张图片

帧间预测技术的基本思想是,根据组成视频的连续图像之间的时域相关性,通过将已经编码的图像作为当前编码图像的参考图像,使用运动矢量表示当前编码块在参考图像中运动的相对位置,并记录参考图像的索引,达到除去连续图像的时域相关性,并且提高编码效率的目的。h.266/VVC的帧间预测编码技术沿用了H.265/HEVC中的运动估计和运动矢量预测技术,同时在HEVC的基础之上添加了一些更高效的编码技术。

一、回顾HEVC中帧间预测的几个关键技术

1.运动估计技术

对当前块在参考图像中寻找对应的匹配块,这一过程称之为运动估计技术。运动估计技术可以找到当前块的 M V MV MV,并在后续编码流程传输到解码端,在解码端,通过 M V MV MV在参考图像中找到对应的参考块,处理后便可以得到当前快的重建块,这样使用 M V MV MV代替了需要传输的当前块的像素值,大大减少了需要传输的信息量。在运动估计中常用SAD参量作为准则来评估两个块之间的相似度。

在运动估计的过程中,还有一个不可忽视的过程,即运动估计的搜索算法。在一些应用领域,通常要求实时性,这就对搜多算法提出了一定的要求,性能完善且高效的搜索算法越来越受到众多学者的青睐。这些算法中常见的有全搜索算法、二维对数搜索算法、三步搜索算法、TZSearch算法等。在自然界中,物体的运动具有一定的连续性,所以相邻的两幅图像之间的物体运动可能并不是以整数像素为单位进行的,而有可能是1/2像素、1/4像素等等分像素为单位进行的。此时若依然使用整数像素为单位进行运动估计,则会出现当前块匹配不准确的问题,导致最终的预测值和实际值之间的残差过大,影响编码性能。所以在H.265/HEVC中,运动估计的过程意味着首先要对图像进行插值运算,将图像的宽度扩展为原来的2倍或者4倍,这样在运动估计时,使用的就是分像素为单位,使用的插值算法为两点临近像素内插方法,而在H.266/VVC中,为了提高运动矢量的精度,通常使用的是1/16像素精度,以便更精确的表示运动过程。

【五】 H.266/VVC的帧间预测技术_第2张图片

2.MV预测技术

在自然图像中,往往一个运动的物体可能会覆盖多个编码块,这些编码块可能具有相类似的运动信息,导致编码图像空间相邻的块具有较强的空间相关性。如果对于当前的编码块使用相邻已经编码块的 M V MV MV进行预测,将得到的 M V MV MV与实际的MV的差值进行编码,这样就会大幅度减少需要编码一个 M V MV MV所需要的比特数,从而大大减少编码码率。同时由于运动物体在空间和时间上可能都具有连续性,所以 M V MV MV预测技术也分为时间预测和空间预测两种。于是集时域和空域 M V MV MV预测两种思想于一体的Merge技术和AMVP技术被广泛接受并且被收纳在H.265/HEVC标准中。这两种技术的核心思想都是通过建立一个 M V MV MV候选列表,选取表中性能最优的一个MV作为当前编码块的预测 M V MV MV

Merge技术

对于Merge技术,一个包含5个 M V MV MV的候选列表是由当前算法自动构造生成的,这5个候选 M V MV MV通常包含空域和时域两种类型
【五】 H.266/VVC的帧间预测技术_第3张图片

MV候选列表的空域构建使用上图方式构建,具体过程是,列表按照B->C->D->E(->F)的顺序建立,其中F为替补块,当前四个中至少有一个无效时,检查F是否有效并添加至候选列表中
【五】 H.266/VVC的帧间预测技术_第4张图片

M V MV MV候选列表的时域构建使用上图方式,时域最多提供一个候选 M V MV MV,利用当前编码块在相邻已编码图像中的同位置块的运动信息,通过下列公式缩放得到:
c u r M V = T d T b    ∗ c o l M V curMV=\frac{Td}{Tb}\,\,* colMV curMV=TbTdcolMV
公式中的 c u r M V curMV curMV表示当前编码块的 M V MV MV c o l M V colMV colMV为同位块的 M V MV MV, T d Td Td为当前图像和当前参考图像的距离, T b Tb Tb为同位图像和同位图像参考图像之间的距离

注意点: M V MV MV候选列表长度为5,当所有有效的 M V MV MV不足5个是,通过补0进行填满

Merge技术的核心思想是从头到尾一个一个遍历候选列表中所有的 M V MV MV,然后通过计算比较和选择具有最小率失真代价的 M V MV MV作为最优 M V MV MV。在解码端,以相同的方式构建该 M V MV MV候选列表,通过编码端输出的最优 M V MV MV在列表中的索引,即可得到相同的 M V MV MV

AMVP技术

该技术的基本思想是为当前编码的块进行运动估计之前提供一个预测 M V MV MV作为运动估计的起始点。顾名思义,编码器的主要任务是用来编码,在 A M V P AMVP AMVP技术当中选择的编码方式为差分编码,对象便是从自己建立的 M V MV MV候选列表中选一个性能最优的 M V MV MV与实际的 M V MV MV。在解码端,通过相同的方式建立 M V MV MV候选列表并通过索引将最优的 M V MV MV选择出来,通过编码端差分编码得到的运动矢量差,便可以得到最终的 M V MV MV A M V P AMVP AMVP技术建立候选列表的过程和 M e r g e Merge Merge模式略有不同, A M V P AMVP AMVP技术在当前编码块的左侧和上侧各产生一个候选 M V MV MV,左侧的检查顺序为E->B->scaledE->scaledB,上方的检查顺序为D->C->F(->scaledD->scaledC->scaledF)。scaled表示对对应 M V MV MV进行缩放。若空域候选没有填满候选列表,检查时域候选,时域候选的检查方法与Merge技术相同,若最终还没有填满,使用零 M V MV MV进行填补。

【五】 H.266/VVC的帧间预测技术_第5张图片

3、运动补偿技术

对于通过帧间预测技术得到的运动矢量 M V MV MV,通过运动补偿的过程得到当前编码块的预测值,然后与当前块做差值,并进行熵编码传输。运动补偿的过程实际上就是通过当前块的 M V MV MV插值计算得到与当前块宽高一致的预测块,当 M V MV MV为分像素时,通过插值得到分像素位置的像素值;当 M V MV MV为整像素时,直接在参考图像中寻找对应的位置即可得到预测值。当参考图像单向时,直接进行单向时,直接进行单向的运动补偿过程;当参考图像为双向时,分别在两个方向进行运动补偿并得到各自的预测值,最终通过一定的权重进行加权得到最终的预测值。

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

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

Merge模式

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

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

​ 添加完HMVP候选后,将列表中的前4个候选MV,两两进行平均值的过程,在将平均值后有效的MV添加进行Merge候选列表中,具体的顺序为: ( M V 0 , M V 1 ) − > ( M V 0 , M V 2 ) − > ( M V 1 , M V 2 ) − > ( M V 0 , M V 3 ) − > ( M V 1 , M V 3 ) − > ( M V 2 , M V 3 ) (MV_0,MV_1)->(MV_0,MV_2)->(MV_1,MV_2)->(MV_0,MV_3)->(MV_1,MV_3)->(MV_2,MV_3) (MV0,MV1)>(MV0,MV2)>(MV1,MV2)>(MV0,MV3)>(MV1,MV3)>(MV2,MV3)

如果依然没有填满候选列表,则使用0运动矢量填满。

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

仿射变换技术

​ 在HEVC中,运动补偿预测的过程仅仅只适用于平移运动模型,然而在自然界中,存在各种各样的运动,例如放大、缩小、选装,各种视角小的运动和各种不规则运动。当这些运动应用于平移运动模型的运动补偿过程时,就会造成预测值不够准确的问题,最终导致编码块的残差较大,增加了编码比特数。在VVC中,使用了基于子块的仿射变换技术来解决这一问题。

​ 仿射运动估计模型的原理进行了具体的分析。具体步骤如下:

  • 首先将运动估计块划分为4*4的亮度子块

  • 对每个亮度子块按四参数模型和六参数模式由参考点的仿射向量计算其中心像素的运动向量,然后四舍五入到1/16精度

其中4参数仿射运动模型,中心像素为(x,y)的子块的运动向量计算方法如下:
【五】 H.266/VVC的帧间预测技术_第6张图片

​ 其中向量a,b在二维空间可以分别表示为 ( a h , a v ) \left( a^h,a^v \right) (ah,av) ( b h , b v ) \left( b^h,b^v \right) (bh,bv) ,当前两块中心像素点的预测向量为 ( M V h , M V v ) \left( MV^h,MV^v \right) (MVh,MVv) ,可以用a、b向量表示为如下:

{ M V h = b h − a h w x + b v − a v w y + a h M V v = b v − a v w x + b h − a h w y + a v , 其中 w 代表当前块的宽度 \begin{cases} MV^h=\frac{b^h-a^h}{w}x+\frac{b^v-a^v}{w}y+a^h\\ MV^v=\frac{b^v-a^v}{w}x+\frac{b^h-a^h}{w}y+a^v\\\end{cases},\text{其中}w\text{代表当前块的宽度} {MVh=wbhahx+wbvavy+ahMVv=wbvavx+wbhahy+av,其中w代表当前块的宽度

其中6参数仿射运动模型,中心像素为(x,y)的子块的运动向量计算方法如下:

【五】 H.266/VVC的帧间预测技术_第7张图片

增加了一个参考点,它的运动向量为 ( c h , c v ) \left( c^h,c^v \right) (ch,cv),当前两块中心像素点的预测向量为 ( M V h , M V v ) \left( MV^h,MV^v \right) (MVh,MVv),可以用a、b、c向量表示为如下:

{ M V h = b h − a h w x + c h − a h h y + a h M V v = b v − a v w x + c v − a v h y + a v , 其中 h 代表当前块的高度 \begin{cases} MV^h=\frac{b^h-a^h}{w}x+\frac{c^h-a^h}{h}y+a^h\\ MV^v=\frac{b^v-a^v}{w}x+\frac{c^v-a^v}{h}y+a^v\\ \end{cases},\text{其中}h\text{代表当前块的高度} {MVh=wbhahx+hchahy+ahMVv=wbvavx+hcvavy+av,其中h代表当前块的高度

  • 每个子块的运动向量计算出来之后,根据运动向量进行运动补偿、插值滤波得到每个子块的预测值

  • 对于色度分量同样是划分为4 * 4的子块,其运动向量等于与其相关的4个4 * 4的亮度子块运动向量的平均值

自适应运动矢量精度

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


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

你可能感兴趣的:(VVC/H.266)