视频图像编码方法以及用于对视频数据进行编码的设备
1.本技术是分案申请,原申请的申请号是201880002952.3,原申请日是2018年11月22日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本发明实施例涉及视频编解码技术领域,尤其涉及一种视频图像编码方法、一种用于对视频数据进行编码的设备、一种存储视频数据的经编码的码流的方法、一种存储视频数据的经编码的码流的系统、一种传输视频数据的经编码的码流的方法、一种传输视频数据的经编码的码流的系统、一种计算机可读存储介质以及一种存储装置。
背景技术:
3.视频编码(视频编码和解码)广泛用于数字视频应用,例如广播数字电视、互联网和移动网络上的视频传播、视频聊天和视频会议等实时会话应用、dvd和蓝光光盘、视频内容采集和编辑系统以及可携式摄像机的安全应用。
4.随着1990年h.261标准中基于块的混合型视频编码方式的发展,新的视频编码技术和工具得到发展并为新的视频编码标准形成基础。其它视频编码标准包括mpeg-1视频、mpeg-2视频、itu-t h.262/mpeg-2、itu-t h.263、itu-t h.264/mpeg-4第10部分高级视频编码(advanced video coding,avc)、itu-t h.265/高效视频编码(high efficiency video coding,hevc)
…
以及此类标准的扩展,例如可扩展性和/或3d(three-dimensional)扩展。随着视频创建和使用变得越来越广泛,视频流量成为通信网络和数据存储的最大负担。因此大多数视频编码标准的目标之一是相较之前的标准,在不牺牲图片质量的前提下减少比特率。即使最新的高效视频编码(high efficiency video coding,hevc)可以在不牺牲图片质量的前提下比avc大约多压缩视频一倍,仍然亟需新技术相对hevc进一步压缩视频。
技术实现要素:
5.本发明实施例提供了运动
矢量预测方法以及相关装置,以期提升编码效率,满足用户需求。
6.第一方面,本发明实施例提供了一种运动矢量预测方法,从解码端或编码端的角度进行描述,该方法可用于对待处理图像块进行预测,待处理图像块为通过对视频图像进行分割而得到的,在编码端,待处理图像块为当前仿射编码块,与待处理图像块空域相邻的已解码图像块为相邻仿射编码块。在解码端,待处理图像块为当前仿射解码块,与待处理图像块空域相邻的已解码图像块为相邻仿射解码块。为了便于描述,可将待处理图像块统称为当前块,将与待处理图像块空域相邻的参考块统称为相邻块。
所述方法包括:解析码流获得候选运动矢量列表的索引值;构造所述候选运动矢量列表;其中,所述候选运动矢量列表包括当前块的k个控制点的候选运动矢量;所述k个控制点的候选运动矢量是根据所述当前块的相邻块采用的2乘n个
参数的仿射变换
模型而得到的,所述2乘n个参数的仿射变换模型
基于所述相邻块的n个控制点的运动矢量而得到,其中,n为大于等于2且小于等于4的整数,k为大于等于2且小于等于4的整数,并且,n不等于k;根据所述索引值,从所述候选运动矢量列表中确定所述k个控制点的目标候选运动矢量;根据所述k个控制点的目标候选运动矢量,得到所述当前块中各个子块位置的预测运动矢量。其中,各个子块位置对应的预测运动矢量可分别用于所述多个子块的运动补偿。
7.可以看到,本发明实施例中,解码端在对当前块的预测过程中,能够在当前块构造候选列表阶段(如构造基于仿射变换模型的amvp模式或merge模式的候选运动矢量列表的阶段),利用相邻块的仿射变换模型来构建针对当前块自身的仿射变换模型,且两者的仿射变换模型可以不同。由于当前块自身的仿射变换模型更加符合当前块实际运动情况/实际需求,所以实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
8.基于第一方面,在可能的实施方式中,可按照预设顺序确定当前块的一个或多个预设空域位置的相邻块的可用性,然后,依次获得在所述预设顺序中可用的相邻块。其中,所述预可用的相邻块可包括:位于所述待处理图像块正上方、正左方、右上方、左下方或左上方的相邻图像块。比如,按照正左方相邻图像块、正上方相邻图像块、右上方相邻图像块、左下方相邻图像块、左上方相邻图像块的顺序依次检查所述相邻块的可用性。
9.基于第一方面,在可能的实施方式中,n=2且k=3,即若仿射解码块(在编码端为仿射编码块)采用4参数仿射变换模型,而当前块采用6参数仿射变换模型,那么所述当前块的3个控制点的候选运动矢量是根据所述当前块的相邻块采用的4参数的仿射变换模型而得到的。
10.举例来说,所述当前块的3个控制点的候选运动矢量包括所述当前块内左上角像素点位置(或称左上顶点,下文同)(x0,y0)的运动矢量(vx0,vy0)、所述当前块内右上角像素点位置(或称右上顶点,下文同)(x1,y1)的运动矢量(vx1,vy1)和所述当前块内左下角像素点位置(或称左下顶点,下文同)(x2,y2)的运动矢量(vx2,vy2);
11.所述当前块的3个控制点的候选运动矢量是根据所述当前块的相邻块采用的4参数的仿射变换模型而得到,包括先根据如下公式计算出所述当前块的左上顶点(x0,y0)的运动矢量(vx0,vy0)、当前块右上顶点(x1,y1)的运动矢量(vx1,vy1)、当前块左下顶点(x2,y2)的运动矢量(vx2,vy2):
[0012][0013][0014]
[0015]
其中,vx0为所述当前块内左上角像素点位置对应的运动矢量的水平分量,vy0为所述当前块内左上角像素点位置对应的运动矢量的竖直分量;vx1为所述当前块内右上角像素点位置对应的运动矢量的水平分量,vy1为所述当前块内右上角像素点位置对应的运动矢量的竖直分量;vx2为所述当前块内左上角像素点位置对应的运动矢量的水平分量,vy2为所述当前块内左上角像素点位置对应的运动矢量的竖直分量;vx4为所述相邻块内左上角像素点位置对应的运动矢量的水平分量,vy4为所述相邻块内左上角像素点位置对应的运动矢量的竖直分量;vx5为所述相邻块内右上角像素点位置对应的运动矢量的水平分量,vy5为所述相邻块内右上角像素点位置对应的运动矢量的竖直分量;x0为所述当前块内左上角像素点位置横坐标,y0为所述当前块内左上角像素点位置纵坐标;x1为所述当前块内右上角像素点位置横坐标,y1为所述当前块内右上角像素点位置纵坐标;x2为所述当前块内左下角像素点位置横坐标,y2为所述当前块内左下角像素点位置纵坐标。x4为所述相邻块内左上角像素点位置横坐标,y4为所述当前块内左上角像素点位置纵坐标;x5为所述相邻块内右上角像素点位置横坐标。
[0016]
基于第一方面,在可能的实施方式中,n=3且k=2,即若仿射解码块(在编码端为仿射编码块)采用6参数仿射变换模型,而当前块采用4参数仿射变换模型,那么所述当前块的2个控制点的候选运动矢量是根据所述当前块的相邻块采用的6参数的仿射变换模型而得到的。
[0017]
举例来说,所述当前块的2个控制点的候选运动矢量包括所述当前块内左上角像素点位置(或称左上顶点,下文同)(x0,y0)的运动矢量(vx0,vy0)、所述当前块内右上角像素点位置(或称右上顶点,下文同)(x1,y1)的运动矢量(vx1,vy1);所述当前块的2个控制点的候选运动矢量是根据所述当前块的相邻块采用的6参数的仿射变换模型而得到,包括根据如下公式计算出所述当前块的2个控制点的候选运动矢量:
[0018][0019][0020]
其中,vx0为所述当前块内左上角像素点位置对应的运动矢量的水平分量,vy0为所述当前块内左上角像素点位置对应的运动矢量的竖直分量;vx1为所述当前块内右上角像素点位置对应的运动矢量的水平分量,vy1为所述当前块内右上角像素点位置对应的运动矢量的竖直分量;vx4为所述相邻块内左上角像素点位置对应的运动矢量的水平分量,vy4为所述相邻块内左上角像素点位置对应的运动矢量的竖直分量;vx5为所述相邻块内右上角像素点位置对应的运动矢量的水平分量,vy5为所述相邻块内右上角像素点位置对应的运动矢量的竖直分量;vx6为所述相邻块内左下角像素点位置对应的运动矢量的水平分量,vy6为所述相邻块内左下角像素点位置对应的运动矢量的竖直分量;x0为所述当前块内左上角像素点位置横坐标,y0为所述当前块内左上角像素点位置纵坐标;x1为所述当前块内右上角像素点位置横坐标,y1为所述当前块内右上角像素点位置纵坐标;x4为所述相邻块内左上角像素点位置横坐标,y4为所述当前块内左上角像素点位置纵坐标;x5为所述相邻块内右上角
像素点位置横坐标,y6为所述相邻块内左下角像素点位置纵坐标。
[0021]
可以看到,实施本发明的实施例,能够实现在当前块的解析阶段(如构造候选运动矢量列表的阶段),利用相邻块的仿射变换模型来构建针对当前块自身的仿射变换模型,且两者的仿射变换模型可以不同。由于当前块自身的仿射变换模型更加符合当前块实际运动情况/实际需求,所以实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
[0022]
基于第一方面,在当前块的重建阶段的一种实施例中,当前块中各个子块的预测运动矢量的获取过程包括如下过程:根据所述k个控制点的目标候选运动矢量,得到所述当前块的2乘k个参数的仿射变换模型;根据所述2乘k个参数的仿射变换模型,得到所述当前块中各个子块的预测运动矢量。
[0023]
举例来说,若当前仿射解码块采用的仿射运动模型为6参数仿射运动模型,则根据所述当前块的3个(即k=3)控制点的目标候选运动矢量,组成所述当前块的6参数仿射变换模型,将子块中像素点坐标(x
(i,j)
,y
(i,j)
)代入所述6参数仿射运动模型公式,获得每个子块中该像素点坐标对应的运动矢量,并作为该子块内所有像素点的运动矢量(vx
(i,j)
,vy
(i,j)
):
[0024][0025]
又举例来说,若当前仿射解码块采用的仿射运动模型为4参数仿射运动模型,则根据所述当前块的2个(即k=2)控制点的目标候选运动矢量,组成所述当前块的4参数仿射变换模型,将将子块中像素点坐标(x
(i,j)
,y
(i,j)
)代入4参数仿射运动模型公式,获得每个子块中该像素点坐标对应的运动矢量,并作为该子块内所有像素点的运动矢量(vx
(i,j)
,vy
(i,j)
):
[0026][0027]
基于第一方面,在当前块的重建阶段的又一种实施例中,当前块中各个子块的预测运动矢量的获取过程包括如下过程:根据所述当前块的k个控制点的目标候选运动矢量,获得所述当前块的6参数的仿射变换模型;根据所述当前块的6参数的仿射变换模型,得到所述当前块中各个子块的预测运动矢量。
[0028]
也就是说,在这种方案中,无论当前块在解析阶段(构建列表阶段)采用什么样的仿射变换模型,在当前块的重建阶段,统一采用6参数仿射变换模型来获得当前块中的每个子块的运动矢量信息,从而实现对每个子块的重建。例如,如果解析阶段采用的是4参数仿射变换模型或8参数双线性模型,则将进一步构建当前块的6参数仿射变换模型。如果解析阶段采用的是6参数仿射变换模型,重建阶段继续沿用所述当前块的6参数仿射变换模型。
[0029]
举例来说,若当前块在解析阶段采用4参数仿射变换模型,而相邻块可能采用4参数仿射变换模型,也可能采用其他参数仿射模型。那么,在获得当前块的2个控制点的运动矢量后,例如,获得当前块的左上控制点(x4,y4)的运动矢量值(vx4,vy4)和右上控制点
(x5,y5)的运动矢量值(vx5,vy5)。那么,在当前块的重建阶段,需根据当前块的2个控制点的运动矢量,构建6参数仿射变换模型。
[0030]
比如,可根据当前块的左上控制点(x0,y0)的运动矢量(vx0,vy0)和右上控制点(x1,y1)的运动矢量(vx1,vy1),采用如下公式获得第3个控制点的运动矢量值,所述第3个控制点的运动矢量值例如为当前块左下顶点(x2,y2)的运动矢量(vx2,vy2):
[0031][0032]
然后,利用当前块的左上控制点(x0,y0)的运动矢量(vx0,vy0、右上控制点(x1,y1)的运动矢量(vx1,vy1)和左下顶点(x2,y2)的运动矢量(vx2,vy2),获得当前块重建阶段的6参数仿射模型,该6参数仿射模型公式如下式所示:
[0033][0034]
那么,将当前块中的各个子块(或各个运动补偿单元)的预设位置像素点(如中心点)相对于当前块左上顶点(或其他参考点)的坐标(x
(i,j)
,y
(i,j)
)代入到上式6参数仿射模型公式,即可获得每个子块(或每个运动补偿单元)预设位置像素点的运动信息,进而后续实现对每个子块的重建。
[0035]
实施本发明的实施例,能够实现在当前块的重建阶段,统一采用6参数仿射变换模型来对当前块进行预测。由于描述当前块的仿射运动的运动模型的参数越多,精度越高,计算复杂度就会越高。而本方案在重建阶段所构建的6参数仿射变换模型可描述图像块的平移、缩放、旋转等等仿射变换,并且在模型复杂度以及建模能力之间取得良好平衡。所以,实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求
[0036]
基于第一方面,在可能的实施方式中,在基于仿射变换模型的amvp模式中,所述根据所述k个控制点的目标候选运动矢量,得到所述2乘k个参数的仿射变换模型,包括:根据所述k个控制点的目标候选运动矢量,以及所述k个控制点的运动矢量差值,得到所述k个控制点的运动矢量;其中,所述k个控制点的运动矢量差值是通过解析所述码流得到的;根据所述k个控制点的运动矢量,获得所述当前块的2乘k个参数的仿射变换模型。
[0037]
基于第一方面,在可能的实施方式中,编码端和解码端采用基于仿射变换模型的amvp模式进行帧间预测,所构造的列表为仿射变换模型的amvp模式的候选运动矢量列表。
[0038]
本发明一些具体实施例中,可利用本文描述的第一种基于运动模型的运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到amvp模式对应的候选运动矢量列表。
[0039]
本发明又一些具体实施例中,也可分别利用第一种基于运动模型的运动矢量预测方法和构造的控制点运动矢量预测方法,当前块的控制点的候选运动矢量来分别加入到amvp模式对应的候选运动矢量列表。
[0040]
基于第一方面,在可能的实施方式中,编码端和解码端采用基于仿射变换模型的merge模式进行帧间预测,所构造的列表为仿射变换模型的merge模式的候选运动矢量列表。
[0041]
本发明一些具体实施例中,也可利用本文描述的第一种基于运动模型的运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到merge模式对应的候选运动矢量列表。
[0042]
本发明又一些具体实施例中,也可分别利用第一种基于运动模型的运动矢量预测方法和构造的控制点运动矢量预测方法,当前块的控制点的候选运动矢量来分别加入到merge模式对应的候选运动矢量列表。
[0043]
基于第一方面,在可能的实施方式中,当相邻位置块有多个,即与当前块相邻的仿射解码块有多个时,在一种可能实施例中,对于编码端和解码端,都可以先利用与当前块模型参数个数相同的仿射解码块得到当前块的控制点的候选运动矢量,加入到amvp模式对应的候选运动矢量列表。然后,再利用与当前块模型参数个数不同的仿射解码块得到当前块的控制点的候选运动矢量,加入到amvp模式对应的候选运动矢量列表。这样,通过与当前块模型参数个数相同的仿射解码块所得到当前块的控制点的候选运动矢量将会处于列表中的前面位置,这样设计的好处是有利于减少码流中传输的比特数。
[0044]
基于第一方面,在可能的实施方式中,在解码端利用推导当前块的控制点的候选运动矢量的过程中,可能需要获取仿射解码块的仿射变换模型的标志信息(flag),该flag预先存储在解码端本地,该flag用于指示该仿射解码块的进行自身子块的预测时实际采用的仿射变换模型。
[0045]
举例来说,一应用场景中,当解码端通过识别仿射解码块的flag,确定仿射解码块实际采用的仿射变换模型与当前块采用的仿射变换模型的模型参数个数不同(或者相同)时,才触发解码端利用仿射解码块实际采用的仿射变换模型推导当前块的控制点的候选运动矢量。
[0046]
基于第一方面,在可能的实施方式中,在解码端利用推导当前块的控制点的候选运动矢量的过程中,也可以不需要仿射解码块的仿射变换模型的flag。
[0047]
举例来说,一应用场景中,解码端确定当前块采用的仿射变换模型后,解码端获取仿射解码块特定数量(该特定数量与当前块的控制点的数量相同,或者不同)的控制点,利用仿射解码块特定数量的控制点组成仿射变换模型,再利用该仿射变换模型推导当前块的控制点的候选运动矢量。
[0048]
第二方面,本发明实施例提供了又一种运动矢量预测方法,所述方法包括:解析码流获得候选运动矢量列表的索引值;构造所述候选运动矢量列表;其中,所述候选运动矢量列表
[0049]
包括当前块的k个控制点的候选运动矢量;所述当前块的k个控制点的候选运动矢量是根据
[0050]
所述当前块的相邻块采用的2n参数的仿射变换模型而得到的,所述2n参数的仿射变换模型
[0051]
基于所述相邻块的n个控制点的运动矢量而得到,其中,n为大于等于2且小于等于4的整
[0052]
数,k为大于等于2且小于等于4的整数;所述相邻块为与所述当前块空间邻近的已解码图像块,所述当前块包括多个子块;根据所述索引值,从所述候选运动矢量列表中确定所述当前块的k个控制点的目标候选运动矢量;根据所述当前块的k个控制点的目标候选运
动矢量,获得所述当前块的6参数的仿射变换模型;根据所述当前块的6参数的仿射变换模型,得到所述当前块中各个子块的预测运动矢量。
[0053]
可以看到。实施本发明的实施例,能够实现在当前块的重建阶段,统一采用6参数仿射变换模型来对当前块进行预测。由于描述当前块的仿射运动的运动模型的参数越多,精度越高,计算复杂度就会越高。而本方案在重建阶段所构建的6参数仿射变换模型可描述图像块的平移、缩放、旋转等等仿射变换,并且在模型复杂度以及建模能力之间取得良好平衡。所以,实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
[0054]
基于第二方面,在可能的实施方式中,n=2且k=2,相应的,
[0055]
所述当前块的2个控制点的候选运动矢量是根据所述当前块的相邻块采用的4参数的仿射变换模型而得到的。
[0056]
基于第二方面,在可能的实施方式中,n=3且k=2,相应的,所述当前块的2个控制点的候选运动矢量是根据所述当前块的相邻块采用的6参数的仿射变换模型而得到的。
[0057]
基于第二方面,在可能的实施方式中,所述根据所述当前块的k个控制点的目标候选运动矢量,获得所述当前块的6参数的仿射变换模型,包括:
[0058]
根据所述当前块的2个控制点的目标候选运动矢量,获得所述当前块的4参数的仿射变换模型;
[0059]
根据所述当前块的4参数的仿射变换模型,得到所述当前块的第3个控制点的运动矢量;
[0060]
根据所述当前块的2个控制点的目标候选运动矢量和所述第3个控制点的运动矢量,获得所述当前块的6参数的仿射变换模型。
[0061]
基于第二方面,在可能的实施方式中,所述根据所述当前块的2个控制点的目标候选运动矢量,获得所述当前块的4参数的仿射变换模型,包括:
[0062]
根据所述当前块的2个控制点的目标候选运动矢量,以及所述当前块的2个控制点的运动矢量差值,得到当前块的2个控制点的运动矢量;其中,所述当前块的2个控制点的运动矢量差值是通过解析所述码流得到的;
[0063]
根据所述当前块的2个控制点的运动矢量,获得所述当前块的4参数的仿射变换模型;
[0064]
相应的,所述根据所述当前块的2个控制点的目标候选运动矢量和所述第3个控制点的运动矢量,获得所述当前块的6参数的仿射变换模型,具体包括:
[0065]
根据所述当前块的2个控制点的运动矢量和所述第3个控制点的运动矢量,获得所述当前块的6参数的仿射变换模型。
[0066]
基于第二方面,在可能的实施方式中,n=2且k=3,相应的,所述当前块的3个控制点的候选运动矢量是根据所述当前块的相邻块采用的2参数的仿射变换模型而得到的。
[0067]
第三方面,本发明实施例提供了一种解码设备,所述设备包括:存储单元,用于存储码流形式的视频数据;熵解码单元,用于解析所述码流获得候选运动矢量列表的索引值;预测处理单元,用于构造所述候选运动矢量列表;其中,所述候选运动矢量列表包括当前块的k个控制点的候选运动矢量;所述当前块的k个控制点的候选运动矢量是根据所述当前块的相邻块采用的2乘n个参数的仿射变换模型而得到的,所述2乘n个参数的仿射变换模型基于所述相邻块的n个控制点的运动矢量而得到,其中,n为大于等于2且小于等于4的整数,k
为大于等于2且小于等于4的整数,并且,n不等于k;所述相邻块为与所述当前块空间邻近的已解码图像块,所述当前块包括多个子块;根据所述索引值,从所述候选运动矢量列表中确定所述当前块的k个控制点的目标候选运动矢量;根据所述当前块的k个控制点的目标候选运动矢量,得到所述当前块中各个子块的预测运动矢量。
[0068]
具体实施例中,所述设备的各个模块可用于实现第一方面所描述的方法。
[0069]
第四方面,本发明实施例提供了一种解码设备,所述设备包括:存储单元,用于存储码流形式的视频数据;熵解码单元,用于解析所述码流获得候选运动矢量列表的索引值;预测处理单元,用于解析码流获得候选运动矢量列表的索引值;构造所述候选运动矢量列表;其中,所述候选运动矢量列表包括当前块的k个控制点的候选运动矢量;所述当前块的k个控制点的候选运动矢量是根据所述当前块的相邻块采用的2n参数的仿射变换模型而得到的,所述2n参数的仿射变换模型基于所述相邻块的n个控制点的运动矢量而得到,其中,n为大于等于2且小于等于4的整数,k为大于等于2且小于等于4的整数;所述相邻块为与所述当前块空间邻近的已解码图像块,所述当前块包括多个子块;根据所述索引值,从所述候选运动矢量列表中确定所述当前块的k个控制点的目标候选运动矢量;根据所述当前块的k个控制点的目标候选运动矢量,获得所述当前块的6参数的仿射变换模型;根据所述当前块的6参数的仿射变换模型,得到所述当前块中各个子块的预测运动矢量。
[0070]
具体实施例中,所述设备的各个模块可用于实现第二方面所描述的方法。
[0071]
第五方面,本发明实施例提供了一种用于解码视频的设备,该设备包括:
[0072]
存储器,用于存储码流形式的视频数据;
[0073]
解码器,用于构造所述候选运动矢量列表;其中,所述候选运动矢量列表包括当前块的k个控制点的候选运动矢量;所述当前块的k个控制点的候选运动矢量是根据所述当前块的相邻块采用的2乘n个参数的仿射变换模型而得到的,所述2乘n个参数的仿射变换模型基于所述相邻块的n个控制点的运动矢量而得到,其中,n为大于等于2且小于等于4的整数,k为大于等于2且小于等于4的整数,并且,n不等于k;所述相邻块为与所述当前块空间邻近的已解码图像块,所述当前块包括多个子块;根据所述索引值,从所述候选运动矢量列表中确定所述当前块的k个控制点的目标候选运动矢量;根据所述当前块的k个控制点的目标候选运动矢量,得到所述当前块中各个子块的预测运动矢量。
[0074]
基于第五方面,在一些实施方式中,n等于2且k等于3,相应的,所述当前块的3个控制点的候选运动矢量是根据所述当前块的相邻块采用的4参数的仿射变换模型而得到的。
[0075]
基于第五方面,在一些实施方式中,所述当前块的3个控制点的候选运动矢量包括所述当前块内左上角像素点位置的运动矢量、所述当前块内右上角像素点位置的运动矢量和所述当前块内左下角像素点位置的运动矢量;
[0076]
所述解码器用于根据如下公式计算出所述当前块的3个控制点的候选运动矢量:
[0077]
[0078][0079][0080]
其中,vx0为所述当前块内左上角像素点位置对应的运动矢量的水平分量,vy0为所述当前块内左上角像素点位置对应的运动矢量的竖直分量;vx1为所述当前块内右上角像素点位置对应的运动矢量的水平分量,vy1为所述当前块内右上角像素点位置对应的运动矢量的竖直分量;vx2为所述当前块内左上角像素点位置对应的运动矢量的水平分量,vy2为所述当前块内左上角像素点位置对应的运动矢量的竖直分量;vx4为所述相邻块内左上角像素点位置对应的运动矢量的水平分量,vy4为所述相邻块内左上角像素点位置对应的运动矢量的竖直分量;vx5为所述相邻块内右上角像素点位置对应的运动矢量的水平分量,vy5为所述相邻块内右上角像素点位置对应的运动矢量的竖直分量;x0为所述当前块内左上角像素点位置横坐标,y0为所述当前块内左上角像素点位置纵坐标;x1为所述当前块内右上角像素点位置横坐标,y1为所述当前块内右上角像素点位置纵坐标;x2为所述当前块内左下角像素点位置横坐标,y2为所述当前块内左下角像素点位置纵坐标;x4为所述相邻块内左上角像素点位置横坐标,y4为所述当前块内左上角像素点位置纵坐标;x5为所述相邻块内右上角像素点位置横坐标。
[0081]
基于第五方面,在一些实施方式中,n等于3且k等于2,相应的,所述当前块的2个控制点的候选运动矢量是根据所述当前块的相邻块采用的6参数的仿射变换模型而得到的。
[0082]
基于第五方面,在一些实施方式中,所述当前块的2个控制点的候选运动矢量包括所述当前块内左上角像素点位置的运动矢量和所述当前块内右上角像素点位置的运动矢量;
[0083]
所述解码器用于根据如下公式计算出所述当前块的2个控制点的候选运动矢量:
[0084][0085][0086]
其中,vx0为所述当前块内左上角像素点位置对应的运动矢量的水平分量,vy0为所述当前块内左上角像素点位置对应的运动矢量的竖直分量;vx1为所述当前块内右上角像素点位置对应的运动矢量的水平分量,vy1为所述当前块内右上角像素点位置对应的运动矢量的竖直分量;vx4为所述相邻块内左上角像素点位置对应的运动矢量的水平分量,vy4为所述相邻块内左上角像素点位置对应的运动矢量的竖直分量;vx5为所述相邻块内右上角
像素点位置对应的运动矢量的水平分量,vy5为所述相邻块内右上角像素点位置对应的运动矢量的竖直分量;vx6为所述相邻块内左下角像素点位置对应的运动矢量的水平分量,vy6为所述相邻块内左下角像素点位置对应的运动矢量的竖直分量;x0为所述当前块内左上角像素点位置横坐标,y0为所述当前块内左上角像素点位置纵坐标;x1为所述当前块内右上角像素点位置横坐标,y1为所述当前块内右上角像素点位置纵坐标;x4为所述相邻块内左上角像素点位置横坐标,y4为所述当前块内左上角像素点位置纵坐标;x5为所述相邻块内右上角像素点位置横坐标,y6为所述相邻块内左下角像素点位置纵坐标。
[0087]
基于第五方面,在一些实施方式中,所述解码器具体用于:
[0088]
根据所述当前块的k个控制点的目标候选运动矢量,得到所述当前块的2乘k个参数的仿射变换模型;
[0089]
根据所述当前块的2乘k个参数的仿射变换模型,得到所述当前块中各个子块的预测运动矢量。
[0090]
基于第五方面,在一些实施方式中,所述解码器具体用于:
[0091]
根据所述当前块的k个控制点的目标候选运动矢量,以及所述当前块的k个控制点的运动矢量差值,得到当前块的k个控制点的运动矢量;其中,所述当前块的k个控制点的运动矢量差值是通过解析所述码流得到的;
[0092]
根据所述当前块的k个控制点的运动矢量,获得所述当前块的2乘k个参数的仿射变换模型。
[0093]
基于第五方面,在一些实施方式中,所述根据所述索引值,从所述候选运动矢量列表中确定所述当前块的k个控制点的目标候选运动矢量之后,所述预解码器还用于:
[0094]
根据所述当前块的k个控制点的目标候选运动矢量,获得所述当前块的6参数的仿射变换模型;
[0095]
根据所述当前块的6参数的仿射变换模型,得到所述当前块中各个子块的预测运动矢量。
[0096]
其中,所述解码器的具体功能实现可参考第一方面的相关描述。
[0097]
第六方面,本发明实施例提供了又一种用于解码视频的设备,该设备包括:
[0098]
存储器,用于存储码流形式的视频数据;
[0099]
解码器,用于解析码流获得候选运动矢量列表的索引值;构造所述候选运动矢量列表;其中,所述候选运动矢量列表包括当前块的k个控制点的候选运动矢量;所述当前块的k个控制点的候选运动矢量是根据所述当前块的相邻块采用的2n参数的仿射变换模型而得到的,所述2n参数的仿射变换模型基于所述相邻块的n个控制点的运动矢量而得到,其中,n为大于等于2且小于等于4的整数,k为大于等于2且小于等于4的整数;所述相邻块为与所述当前块空间邻近的已解码图像块,所述当前块包括多个子块;根据所述索引值,从所述候选运动矢量列表中确定所述当前块的k个控制点的目标候选运动矢量;根据所述当前块的k个控制点的目标候选运动矢量,获得所述当前块的6参数的仿射变换模型;根据所述当前块的6参数的仿射变换模型,得到所述当前块中各个子块的预测运动矢量。
[0100]
其中,所述解码器的具体功能实现可参考第二方面的相关描述。
[0101]
第七方面,本发明实施例提供了计算机可读存储介质,其上储存有指令,所述指令执行时,使得一个或多个处理器编码视频数据。所述指令使得所述一个或多个处理器执行
根据第一方面任何可能实施例的方法。
[0102]
第八方面,本发明实施例提供了计算机可读存储介质,其上储存有指令,所述指令执行时,使得一个或多个处理器编码视频数据。所述指令使得所述一个或多个处理器执行根据第二方面任何可能实施例的方法。
[0103]
第九方面,本发明实施例提供了包括程序代码的计算机程序,所述程序代码在计算机上运行时执行根据第一方面任何可能实施例的方法。
[0104]
第十方面,本发明实施例提供了包括程序代码的计算机程序,所述程序代码在计算机上运行时执行根据第二方面任何可能实施例的方法。
[0105]
可以看到,本发明一实施例中,在对当前块的编解码过程中,能够实现在当前块的解析阶段(如构造amvp模式或merge模式的候选运动矢量列表的阶段),利用相邻块的仿射变换模型来构建针对当前块自身的仿射变换模型,且两者的仿射变换模型可以不同。由于当前块自身的仿射变换模型更加符合当前块实际运动情况/实际需求,所以实施本方案能够提高对当前块进行编码的编码效率及准确性,满足用户需求。
[0106]
还可以看到,在对当前块的编解码过程中,解码端在图像块的重建阶段可统一采用6参数仿射变换模型来对图像块进行预测,从而使得本发明实施例对当前块的重建过程在模型复杂度以及建模能力之间取得良好平衡。所以,实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
附图说明
[0107]
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
[0108]
图1是用于实现本发明实施例的视频译码系统实例结构的框图;
[0109]
图2a是用于实现本发明实施例的视频编码器实例结构的框图;
[0110]
图2b是用于实现本发明实施例的视频解码器实例结构的框图;
[0111]
图3是用于实现本发明实施例的视频译码设备实例的框图;
[0112]
图4是用于实现本发明实施例的编码装置或解码装置实例的框图;
[0113]
图5是一种对当前块的实例操作的场景示意图;
[0114]
图6是又一种对当前块的实例操作的场景示意图;
[0115]
图7是又一种对当前块的实例操作的场景示意图;
[0116]
图8是又一种对当前块的实例操作的场景示意图;
[0117]
图9是本发明实施例提供的一种运动矢量预测方法流程图;
[0118]
图10是又一种对当前块的实例操作的场景示意图;
[0119]
图11a是本发明实施例提供的一种当前块以及当前块的运动补偿单元的示意图;
[0120]
图11b是本发明实施例提供的又一种当前块以及当前块的运动补偿单元的示意图;
[0121]
图12是本发明实施例提供的又一种运动矢量预测方法流程图;
[0122]
图13是本发明实施例提供的又一种运动矢量预测方法流程图。
具体实施方式
[0123]
下面先对本发明实施例可能涉及的一些概念进行简单介绍。本发明实施例所涉及的技术方案不仅可能应用于现有的视频编码标准中(如h.264、hevc等标准),还可能应用于未来的视频编码标准中(如h.266标准)。
[0124]
视频编码通常是指处理形成视频或视频序列的图片序列。在视频编码领域,术语“图片(picture)”、“帧(frame)”或“图像(image)”可以用作同义词。本文中使用的视频编码表示视频编码或视频解码。视频编码在源侧执行,通常包括处理(例如,通过压缩)原始视频图片以减少表示该视频图片所需的数据量,从而更高效地存储和/或传输。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重构视频图片。实施例涉及的视频图片“编码”应理解为涉及视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码(编码和解码)。
[0125]
视频序列包括一系列图像(picture),图像被进一步划分为切片(slice),切片再被划分为块(block)。视频编码以块为单位进行编码处理,在一些新的视频编码标准中,块的概念被进一步扩展。比如,在h.264标准中有宏块(macroblock,mb),宏块可进一步划分成多个可用于预测编码的预测块(partition)。在高性能视频编码(high efficiency video coding,hevc)标准中,采用编码单元(coding unit,cu),预测单元(prediction unit,pu)和变换单元(transform unit,tu)等基本概念,从功能上划分了多种块单元,并采用全新的基于树结构进行描述。比如cu可以按照四叉树进行划分为更小的cu,而更小的cu还可以继续划分,从而形成一种四叉树结构,cu是对编码图像进行划分和编码的基本单元。对于pu和tu也有类似的树结构,pu可以对应预测块,是预测编码的基本单元。对cu按照划分模式进一步划分成多个pu。tu可以对应变换块,是对预测残差进行变换的基本单元。然而,无论cu,pu还是tu,本质上都属于块(或称图像块)的概念。
[0126]
例如在hevc中,通过使用表示为编码树的四叉树结构将ctu拆分为多个cu。在cu层级处作出是否使用图片间(时间)或图片内(空间)预测对图片区域进行编码的决策。每个cu可以根据pu拆分类型进一步拆分为一个、两个或四个pu。一个pu内应用相同的预测过程,并在pu基础上将相关信息传输到解码器。在通过基于pu拆分类型应用预测过程获取残差块之后,可以根据类似于用于cu的编码树的其它四叉树结构将cu分割成变换单元(transform unit,tu)。在视频压缩技术最新的发展中,使用四叉树和二叉树(quad-tree and binary tree,qtbt)分割帧来分割编码块。在qtbt块结构中,cu可以为正方形或矩形形状。
[0127]
本文中,为了便于描述和理解,可将当前编码图像中待编码的图像块称为当前块,例如在编码中,指当前正在编码的块;在解码中,指当前正在解码的块。将参考图像中用于对当前块进行预测的已解码的图像块称为参考块,即参考块是为当前块提供参考信号的块,其中,参考信号表示图像块内的像素值。可将参考图像中为当前块提供预测信号的块为预测块,其中,预测信号表示预测块内的像素值或者采样值或者采样信号。例如,在遍历多个参考块以后,到了最佳参考块,此最佳参考块将为当前块提供预测,此块可称为预测块。
[0128]
下面描述发明实施例中所涉及的视频译码系统。参见图1,图1为本发明实施例中所描述的一种实例的视频译码系统的框图。如本文所使用,术语“视频译码器”一般是指视频编码器和视频解码器两者。在本发明实施例中,术语“视频译码”或“译码”可一般地指代
视频编码或视频解码。视频译码系统的视频编码器100和视频解码器200用于根据本发明实施例提出的多种新的帧间预测模式中的任一种所描述的各种方法实例来预测当前经译码图像块或其子块的运动信息,例如运动矢量,使得预测出的运动矢量最大程度上接近使用运动估算方法得到的运动矢量,从而编码时无需传送运动矢量差值,从而进一步的改善编解码性能。
[0129]
如图1中所示,视频译码系统包含源装置10和目的地装置20。源装置10产生经编码视频数据。因此,源装置10可被称为视频编码装置。目的地装置20可对由源装置10所产生的经编码的视频数据进行解码。因此,目的地装置20可被称为视频解码装置。源装置10、目的地装置20或两个的各种实施方案可包含一或多个处理器以及耦合到所述一或多个处理器的存储器。所述存储器可包含但不限于ram、rom、eeprom、快闪存储器或可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体,如本文所描述。
[0130]
源装置10和目的地装置20可以包括各种装置,包含桌上型计算机、移动计算装置、笔记型(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者。
[0131]
目的地装置20可经由链路30从源装置10接收经编码视频数据。链路30可包括能够将经编码视频数据从源装置10移动到目的地装置20的一或多个媒体或装置。在一个实例中,链路30可包括使得源装置10能够实时将经编码视频数据直接发射到目的地装置20的一或多个通信媒体。在此实例中,源装置10可根据通信标准(例如无线通信协议)来调制经编码视频数据,且可将经调制的视频数据发射到目的地装置20。所述一或多个通信媒体可包含无线和/或有线通信媒体,例如射频(rf)频谱或一或多个物理传输线。所述一或多个通信媒体可形成基于分组的网络的一部分,基于分组的网络例如为局域网、广域网或全球网络(例如,因特网)。所述一或多个通信媒体可包含路由器、交换器、或促进从源装置10到目的地装置20的通信的其它设备。
[0132]
在另一实例中,可将经编码数据从输出接口140输出到存储装置40。类似地,可通过输入接口240从存储装置40存取经编码数据。存储装置40可包含多种分布式或本地存取的数据存储媒体中的任一者,例如硬盘驱动器、蓝光光盘、dvd、cd-rom、快闪存储器、易失性或非易失性存储器,或用于存储经编码视频数据的任何其它合适的数字存储媒体。
[0133]
在另一实例中,存储装置40可对应于文件服务器或可保持由源装置10产生的经编码视频的另一中间存储装置。目的地装置20可经由流式传输或下载从存储装置40存取所存储的视频数据。文件服务器可为任何类型的能够存储经编码的视频数据并且将经编码的视频数据发射到目的地装置20的服务器。实例文件服务器包含网络服务器(例如,用于网站)、ftp服务器、网络附接式存储(nas)装置或本地磁盘驱动器。目的地装置20可通过任何标准数据连接(包含因特网连接)来存取经编码视频数据。这可包含无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等),或适合于存取存储在文件服务器上的经编码视频数据的两者的组合。经编码视频数据从存储装置40的传输可为流式传输、下载传输或两者的组合。
[0134]
本发明实施例的运动矢量预测技术可应用于视频编解码以支持多种多媒体应用,例如空中电视广播、有线电视发射、卫星电视发射、串流视频发射(例如,经由因特网)、用于存储于数据存储媒体上的视频数据的编码、存储在数据存储媒体上的视频数据的解码,或
其它应用。在一些实例中,视频译码系统可用于支持单向或双向视频传输以支持例如视频流式传输、视频回放、视频广播和/或视频电话等应用。
[0135]
图1中所说明的视频译码系统仅为实例,并且本发明实施例的技术可适用于未必包含编码装置与解码装置之间的任何数据通信的视频译码设置(例如,视频编码或视频解码)。在其它实例中,数据从本地存储器检索、在网络上流式传输等等。视频编码装置可对数据进行编码并且将数据存储到存储器,和/或视频解码装置可从存储器检索数据并且对数据进行解码。在许多实例中,由并不彼此通信而是仅编码数据到存储器和/或从存储器检索数据且解码数据的装置执行编码和解码。
[0136]
在图1的实例中,源装置10包含视频源120、视频编码器100和输出接口140。在一些实例中,输出接口140可包含调节器/解调器(调制解调器)和/或发射器。视频源120可包括视频捕获装置(例如,摄像机)、含有先前捕获的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频馈入接口,和/或用于产生视频数据的计算机图形系统,或视频数据的此些来源的组合。
[0137]
视频编码器100可对来自视频源120的视频数据进行编码。在一些实例中,源装置10经由输出接口140将经编码视频数据直接发射到目的地装置20。在其它实例中,经编码视频数据还可存储到存储装置40上,供目的地装置20以后存取来用于解码和/或播放。
[0138]
在图1的实例中,目的地装置20包含输入接口240、视频解码器200和显示装置220。在一些实例中,输入接口240包含接收器和/或调制解调器。输入接口240可经由链路30和/或从存储装置40接收经编码视频数据。显示装置220可与目的地装置20集成或可在目的地装置20外部。一般来说,显示装置220显示经解码视频数据。显示装置220可包括多种显示装置,例如,液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或其它类型的显示装置。
[0139]
尽管图1中未图示,但在一些方面,视频编码器100和视频解码器200可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器单元或其它硬件和软件,以处置共同数据流或单独数据流中的音频和视频两者的编码。在一些实例中,如果适用的话,那么mux-demux单元可符合itu h.223多路复用器协议,或例如用户数据报协议(udp)等其它协议。
[0140]
视频编码器100和视频解码器200各自可实施为例如以下各项的多种电路中的任一者:一或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、硬件或其任何组合。如果部分地以软件来实施本发明实施例,那么装置可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用一或多个处理器在硬件中执行所述指令从而实施本发明实施例技术。前述内容(包含硬件、软件、硬件与软件的组合等)中的任一者可被视为一或多个处理器。视频编码器100和视频解码器200中的每一者可包含在一或多个编码器或解码器中,所述编码器或解码器中的任一者可集成为相应装置中的组合编码器/解码器(编码解码器)的一部分。
[0141]
本发明实施例可大体上将视频编码器100称为将某些信息“发信号通知”或“发射”到例如视频解码器200的另一装置。术语“发信号通知”或“发射”可大体上指代用以对经压缩视频数据进行解码的语法元素和/或其它数据的传送。此传送可实时或几乎实时地发生。替代地,此通信可经过一段时间后发生,例如可在编码时在经编码位流中将语法元素存储
到计算机可读存储媒体时发生,解码装置接着可在所述语法元素存储到此媒体之后的任何时间检索所述语法元素。
[0142]
视频编码器100和视频解码器200可根据例如高效视频编码(hevc)等视频压缩标准或其扩展来操作,并且可符合hevc测试模型(hm)。或者,视频编码器100和视频解码器200也可根据其它业界标准来操作,所述标准例如是itu-t h.264、h.265标准,或此类标准的扩展。然而,本发明实施例的技术不限于任何特定编解码标准。
[0143]
在一个实例中,视频编码器100用于:将与当前待编码的图像块相关的语法元素编码入数字视频输出位流(简称为位流或码流),这里将用于当前图像块帧间预测的语法元素简称为帧间预测数据,帧间预测数据例如包括帧间预测模式的指示信息,本发明实施例中的帧间预测模式包括基于仿射变换模型的amvp模式和基于仿射变换模型的merge模式中的至少一个。在帧间预测数据包括基于仿射变换模型的amvp模式的指示信息的情况下,所述帧间预测数据还可包括该amvp模式对应的候选运动矢量列表的索引值(或称索引号),以及当前块的控制点的运动矢量差值(mvd);在帧间预测数据包括基于仿射变换模型的merge模式的指示信息的情况下,所述帧间预测数据还可包括该merge模式对应的候选运动矢量列表的索引值(或称索引号)。另外,在可选的实施例中,上述例子中的帧间预测数据还可包括当前块的仿射变换模型(模型参数个数)的指示信息。
[0144]
应当理解的是,如果由基于本发明实施例提出的新的帧间预测模式预测出的运动信息产生的预测块与当前待编码图像块(即原始块)之间的差值(即残差)为0,则视频编码器100中只需要将与当前待编码的图像块相关的语法元素编入位流(亦称为码流);反之,除了语法元素外,还需要将相应的残差编入位流。
[0145]
具体实施例中,视频编码器100可以用于执行后文所描述的图13实施例,以实现本发明所描述的运动矢量预测方法在编码端的应用。
[0146]
在一个实例中,视频解码器200用于:从位流中解码出与当前待解码的图像块相关的语法元素(s401),这里将用于当前图像块帧间预测的语法元素简称为帧间预测数据,帧间预测数据例如包括帧间预测模式的指示信息,本发明实施例中的帧间预测模式包括基于仿射变换模型的amvp模式和基于仿射变换模型的merge模式中的至少一个。在帧间预测数据包括基于仿射变换模型的amvp模式的指示信息的情况下,所述帧间预测数据还可包括该amvp模式对应的候选运动矢量列表的索引值(或称索引号),以及当前块的控制点的运动矢量差值(mvd);在帧间预测数据包括基于仿射变换模型的merge模式的指示信息的情况下,所述帧间预测数据还可包括该merge模式对应的候选运动矢量列表的索引值(或称索引号)。另外,在可选的实施例中,上述例子中的帧间预测数据还可包括当前块的仿射变换模型(模型参数个数)的指示信息。
[0147]
具体实施例中,视频解码器200可以用于执行后文所描述的图9或图12实施例,以实现本发明所描述的运动矢量预测方法在解码端的应用。
[0148]
图2a为本发明实施例中所描述的一种实例的视频编码器100的框图。视频编码器100用于将视频输出到后处理实体41。后处理实体41表示可处理来自视频编码器100的经编码视频数据的视频实体的实例,例如媒体感知网络元件(mane)或拼接/编辑装置。在一些情况下,后处理实体41可为网络实体的实例。在一些视频编码系统中,后处理实体41和视频编码器100可为单独装置的若干部分,而在其它情况下,相对于后处理实体41所描述的功能性
可由包括视频编码器100的相同装置执行。在某一实例中,后处理实体41是图1的存储装置40的实例。
[0149]
在图2a的实例中,视频编码器100包括预测处理单元108、滤波器单元106、经解码图像缓冲器(dpb)107、求和器112、变换器101、量化器102和熵编码器103。预测处理单元108包括帧间预测器110和帧内预测器109。为了图像块重构,视频编码器100还包含反量化器104、反变换器105和求和器111。滤波器单元106既定表示一或多个环路滤波器,例如去块滤波器、自适应环路滤波器(alf)和样本自适应偏移(sao)滤波器。尽管在图2a中将滤波器单元106示出为环路内滤波器,但在其它实现方式下,可将滤波器单元106实施为环路后滤波器。在一种示例下,视频编码器100还可以包括视频数据存储器、分割单元(图中未示意)。
[0150]
视频数据存储器可存储待由视频编码器100的组件编码的视频数据。可从视频源120获得存储在视频数据存储器中的视频数据。dpb 107可为参考图像存储器,其存储用于由视频编码器100在帧内、帧间译码模式中对视频数据进行编码的参考视频数据。视频数据存储器和dpb 107可由多种存储器装置中的任一者形成,例如包含同步dram(sdram)的动态随机存取存储器(dram)、磁阻式ram(mram)、电阻式ram(rram),或其它类型的存储器装置。视频数据存储器和dpb 107可由同一存储器装置或单独存储器装置提供。在各种实例中,视频数据存储器可与视频编码器100的其它组件一起在芯片上,或相对于那些组件在芯片外。
[0151]
如图2a中所示,视频编码器100接收视频数据,并将所述视频数据存储在视频数据存储器中。分割单元将所述视频数据分割成若干图像块,而且这些图像块可以被进一步分割为更小的块,例如基于四叉树结构或者二叉树结构的图像块分割。此分割还可包含分割成条带(slice)、片(tile)或其它较大单元。视频编码器100通常说明编码待编码的视频条带内的图像块的组件。所述条带可分成多个图像块(并且可能分成被称作片的图像块集合)。
[0152]
预测处理单元108内的帧内预测器109可相对于与待编码当前块在相同帧或条带中的一或多个相邻块执行当前图像块的帧内预测性编码,以去除空间冗余。预测处理单元108内的帧间预测器110可相对于一或多个参考图像中的一或多个预测块执行当前图像块的帧间预测性编码以去除时间冗余。
[0153]
具体的,帧间预测器110可用于确定用于编码当前图像块的帧间预测模式。举例来说,帧间预测器110可使用速率-失真分析来计算候选帧间预测模式集合中的各种帧间预测模式的速率-失真值,并从中选择具有最佳速率-失真特性的帧间预测模式。速率失真分析通常确定经编码块与经编码以产生所述经编码块的原始的未经编码块之间的失真(或误差)的量,以及用于产生经编码块的位速率(也就是说,位数目)。例如,帧间预测器110可确定候选帧间预测模式集合中编码所述当前图像块的码率失真代价最小的帧间预测模式为用于对当前图像块进行帧间预测的帧间预测模式。下文将详细介绍帧间预测性编码过程,尤其是在本发明实施例各种用于非方向性或方向性的运动场的帧间预测模式下,预测当前图像块中一个或多个子块(具体可以是每个子块或所有子块)的运动信息的过程。
[0154]
帧间预测器110用于基于确定的帧间预测模式,预测当前图像块中一个或多个子块的运动信息(例如运动矢量),并利用当前图像块中一个或多个子块的运动信息(例如运动矢量)获取或产生当前图像块的预测块。帧间预测器110可在参考图像列表中的一者中定位所述运动向量指向的预测块。帧间预测器110还可产生与图像块和视频条带相关联的语
法元素以供视频解码器200在对视频条带的图像块解码时使用。又或者,一种示例下,帧间预测器110利用每个子块的运动信息执行运动补偿过程,以生成每个子块的预测块,从而得到当前图像块的预测块;应当理解的是,这里的帧间预测器110执行运动估计和运动补偿过程。
[0155]
具体的,在为当前图像块选择帧间预测模式之后,帧间预测器110可将指示当前图像块的所选帧间预测模式的信息提供到熵编码器103,以便于熵编码器103编码指示所选帧间预测模式的信息。在本发明实施例中,视频编码器100可在所发射的位流中包含与当前图像块相关的帧间预测数据,帧间预测数据例如包括帧间预测模式的指示信息,本发明实施例中的帧间预测模式包括基于仿射变换模型的amvp模式和基于仿射变换模型的merge模式中的至少一个。在帧间预测数据包括基于仿射变换模型的amvp模式的指示信息的情况下,所述帧间预测数据还可包括该amvp模式对应的候选运动矢量列表的索引值(或称索引号),以及当前块的控制点的运动矢量差值(mvd);在帧间预测数据包括基于仿射变换模型的merge模式的指示信息的情况下,所述帧间预测数据还可包括该merge模式对应的候选运动矢量列表的索引值(或称索引号)。另外,在可选的实施例中,上述例子中的帧间预测数据还可包括当前块的仿射变换模型(模型参数个数)的指示信息。
[0156]
具体实施例中,帧间预测器110可以用于执行后文所描述的图13实施例的相关步骤,以实现本发明所描述的运动矢量预测方法在编码端的应用。
[0157]
帧内预测器109可对当前图像块执行帧内预测。明确地说,帧内预测器109可确定用来编码当前块的帧内预测模式。举例来说,帧内预测器109可使用速率-失真分析来计算各种待测试的帧内预测模式的速率-失真值,并从待测试模式当中选择具有最佳速率-失真特性的帧内预测模式。在任何情况下,在为图像块选择帧内预测模式之后,帧内预测器109可将指示当前图像块的所选帧内预测模式的信息提供到熵编码器103,以便熵编码器103编码指示所选帧内预测模式的信息。
[0158]
在预测处理单元108经由帧间预测、帧内预测产生当前图像块的预测块之后,视频编码器100通过从待编码的当前图像块减去所述预测块来形成残差图像块。求和器112表示执行此减法运算的一或多个组件。所述残差块中的残差视频数据可包含在一或多个tu中,并应用于变换器101。变换器101使用例如离散余弦变换(dct)或概念上类似的变换等变换将残差视频数据变换成残差变换系数。变换器101可将残差视频数据从像素值域转换到变换域,例如频域。
[0159]
变换器101可将所得变换系数发送到量化器102。量化器102量化所述变换系数以进一步减小位速率。在一些实例中,量化器102可接着执行对包含经量化的变换系数的矩阵的扫描。或者,熵编码器103可执行扫描。
[0160]
在量化之后,熵编码器103对经量化变换系数进行熵编码。举例来说,熵编码器103可执行上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)、基于语法的上下文自适应二进制算术编码(sbac)、概率区间分割熵(pipe)编码或另一熵编码方法或技术。在由熵编码器103熵编码之后,可将经编码位流发射到视频解码器200,或经存档以供稍后发射或由视频解码器200检索。熵编码器103还可对待编码的当前图像块的语法元素进行熵编码。
[0161]
反量化器104和反变化器105分别应用逆量化和逆变换以在像素域中重构所述残
差块,例如以供稍后用作参考图像的参考块。求和器111将经重构的残差块添加到由帧间预测器110或帧内预测器109产生的预测块,以产生经重构图像块。滤波器单元106可以适用于经重构图像块以减小失真,诸如方块效应(block artifacts)。然后,该经重构图像块作为参考块存储在经解码图像缓冲器107中,可由帧间预测器110用作参考块以对后续视频帧或图像中的块进行帧间预测。
[0162]
应当理解的是,视频编码器100的其它的结构变化可用于编码视频流。例如,对于某些图像块或者图像帧,视频编码器100可以直接地量化残差信号而不需要经变换器101处理,相应地也不需要经反变换器105处理;或者,对于某些图像块或者图像帧,视频编码器100没有产生残差数据,相应地不需要经变换器101、量化器102、反量化器104和反变换器105处理;或者,视频编码器100可以将经重构图像块作为参考块直接地进行存储而不需要经滤波器单元106处理;或者,视频编码器100中量化器102和反量化器104可以合并在一起。
[0163]
具体的,在本发明实施例中,视频编码器100用于实现后文实施例中描述的运动矢量预测方法。
[0164]
图2b为本发明实施例中所描述的一种实例的视频解码器200的框图。在图2b的实例中,视频解码器200包括熵解码器203、预测处理单元208、反量化器204、反变换器205、求和器211、滤波器单元206以及经解码图像缓冲器207。预测处理单元208可以包括帧间预测器210和帧内预测器209。在一些实例中,视频解码器200可执行大体上与相对于来自图2a的视频编码器100描述的编码过程互逆的解码过程。
[0165]
在解码过程中,视频解码器200从视频编码器100接收表示经编码视频条带的图像块和相关联的语法元素的经编码视频位流。视频解码器200可从网络实体42接收视频数据,可选的,还可以将所述视频数据存储在视频数据存储器(图中未示意)中。视频数据存储器可存储待由视频解码器200的组件解码的视频数据,例如经编码视频位流。存储在视频数据存储器中的视频数据,例如可从存储装置40、从相机等本地视频源、经由视频数据的有线或无线网络通信或者通过存取物理数据存储媒体而获得。视频数据存储器可作为用于存储来自经编码视频位流的经编码视频数据的经解码图像缓冲器(cpb)。因此,尽管在图2b中没有示意出视频数据存储器,但视频数据存储器和dpb 207可以是同一个的存储器,也可以是单独设置的存储器。视频数据存储器和dpb 207可由多种存储器装置中的任一者形成,例如:包含同步dram(sdram)的动态随机存取存储器(dram)、磁阻式ram(mram)、电阻式ram(rram),或其它类型的存储器装置。在各种实例中,视频数据存储器可与视频解码器200的其它组件一起集成在芯片上,或相对于那些组件设置在芯片外。
[0166]
网络实体42可例如为服务器、mane、视频编辑器/剪接器,或用于实施上文所描述的技术中的一或多者的其它此装置。网络实体42可包括或可不包括视频编码器,例如视频编码器100。在网络实体42将经编码视频位流发送到视频解码器200之前,网络实体42可实施本发明实施例中描述的技术中的部分。在一些视频解码系统中,网络实体42和视频解码器200可为单独装置的部分,而在其它情况下,相对于网络实体42描述的功能性可由包括视频解码器200的相同装置执行。在一些情况下,网络实体42可为图1的存储装置40的实例。
[0167]
视频解码器200的熵解码器203对位流进行熵解码以产生经量化的系数和一些语法元素。熵解码器203将语法元素转发到预测处理单元208。视频解码器200可接收在视频条带层级和/或图像块层级处的语法元素。
[0168]
当视频条带被解码为经帧内解码(i)条带时,预测处理单元208的帧内预测器209可基于发信号通知的帧内预测模式和来自当前帧或图像的先前经解码块的数据而产生当前视频条带的图像块的预测块。当视频条带被解码为经帧间解码(即,b或p)条带时,预测处理单元208的帧间预测器210可基于从熵解码器203接收到的语法元素,确定用于对当前视频条带的当前图像块进行解码的帧间预测模式,基于确定的帧间预测模式,对所述当前图像块进行解码(例如执行帧间预测)。具体的,帧间预测器210可确定是否对当前视频条带的当前图像块采用新的帧间预测模式进行预测,如果语法元素指示采用新的帧间预测模式来对当前图像块进行预测,基于新的帧间预测模式(例如通过语法元素指定的一种新的帧间预测模式或默认的一种新的帧间预测模式)预测当前视频条带的当前图像块或当前图像块的子块的运动信息,从而通过运动补偿过程使用预测出的当前图像块或当前图像块的子块的运动信息来获取或生成当前图像块或当前图像块的子块的预测块。这里的运动信息可以包括参考图像信息和运动矢量,其中参考图像信息可以包括但不限于单向/双向预测信息,参考图像列表号和参考图像列表对应的参考图像索引。对于帧间预测,可从参考图像列表中的一者内的参考图像中的一者产生预测块。视频解码器200可基于存储在dpb 207中的参考图像来建构参考图像列表,即列表0和列表1。当前图像的参考帧索引可包含于参考帧列表0和列表1中的一或多者中。应当理解的是,这里的帧间预测器210执行运动补偿过程。下文将详细的阐述在各种新的帧间预测模式下,利用参考块的运动信息来预测当前图像块或当前图像块的子块的运动信息的帧间预测过程。
[0169]
在一个实例中,帧间预测器210可利用从位流中解码出与当前待解码的图像块相关的语法元素(s401)对当前待解码的图像块进行预测,这里将用于当前图像块帧间预测的语法元素简称为帧间预测数据,帧间预测数据例如包括帧间预测模式的指示信息,本发明实施例中的帧间预测模式包括基于仿射变换模型的amvp模式和基于仿射变换模型的merge模式中的至少一个。在帧间预测数据包括基于仿射变换模型的amvp模式的指示信息的情况下,所述帧间预测数据还可包括该amvp模式对应的候选运动矢量列表的索引值(或称索引号),以及当前块的控制点的运动矢量差值(mvd);在帧间预测数据包括基于仿射变换模型的merge模式的指示信息的情况下,所述帧间预测数据还可包括该merge模式对应的候选运动矢量列表的索引值(或称索引号)。另外,在可选的实施例中,上述例子中的帧间预测数据还可包括当前块的仿射变换模型(模型参数个数)的指示信息。
[0170]
具体实施例中,帧间预测器210可以用于执行后文所描述的图9或图12实施例的相关步骤,以实现本发明所描述的运动矢量预测方法在解码端的应用。
[0171]
反量化器204将在位流中提供且由熵解码器203解码的经量化变换系数逆量化,即去量化。逆量化过程可包括:使用由视频编码器100针对视频条带中的每个图像块计算的量化参数来确定应施加的量化程度以及同样地确定应施加的逆量化程度。反变换器205将逆变换应用于变换系数,例如逆dct、逆整数变换或概念上类似的逆变换过程,以便产生像素域中的残差块。
[0172]
在帧间预测器210产生用于当前图像块或当前图像块的子块的预测块之后,视频解码器200通过将来自反变换器205的残差块与由帧间预测器210产生的对应预测块求和以得到重建的块,即经解码图像块。求和器211表示执行此求和操作的组件。在需要时,还可使用环路滤波器(在解码环路中或在解码环路之后)来使像素转变平滑或者以其它方式改进
视频质量。滤波器单元206可以表示一或多个环路滤波器,例如去块滤波器、自适应环路滤波器(alf)以及样本自适应偏移(sao)滤波器。尽管在图2b中将滤波器单元206示出为环路内滤波器,但在其它实现方式中,可将滤波器单元206实施为环路后滤波器。在一种示例下,滤波器单元206适用于重建块以减小块失真,并且该结果作为经解码视频流输出。并且,还可以将给定帧或图像中的经解码图像块存储在经解码图像缓冲器207中,经解码图像缓冲器207存储用于后续运动补偿的参考图像。经解码图像缓冲器207可为存储器的一部分,其还可以存储经解码视频,以供稍后在显示装置(例如图1的显示装置220)上呈现,或可与此类存储器分开。
[0173]
应当理解的是,视频解码器200的其它结构变化可用于解码经编码视频位流。例如,视频解码器200可以不经滤波器单元206处理而生成输出视频流;或者,对于某些图像块或者图像帧,视频解码器200的熵解码器203没有解码出经量化的系数,相应地不需要经反量化器204和反变换器205处理。
[0174]
具体的,在本发明实施例中,视频解码器200用于实现后文实施例中描述的运动矢量预测方法。
[0175]
参见图3,图3是本发明实施例提供的视频译码设备400(例如视频编码设备400或视频解码设备400)的结构示意图。视频译码设备400适于实施本文所描述的各个实施例。在一个实施例中,视频译码设备400可以是视频解码器(例如图1的视频解码器200)或视频编码器(例如图1的视频编码器100)。在另一个实施例中,视频译码设备400可以是上述图1的视频解码器200或图1的视频编码器100中的一个或多个组件。
[0176]
视频译码设备400包括:用于接收数据的入口端口410和接收单元(rx)420,用于处理数据的处理器、逻辑单元或中央处理器(cpu)430,用于传输数据的发射器单元(tx)440和出口端口450,以及,用于存储数据的存储器460。视频译码设备400还可以包括与入口端口410、接收器单元420、发射器单元440和出口端口450耦合的光电转换组件和电光(eo)组件,用于光信号或电信号的出口或入口。
[0177]
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器430与入口端口410、接收器单元420、发射器单元440、出口端口450和存储器460通信。处理器430包括译码模块470(例如编码模块470或解码模块470)。编码/解码模块470实现本文中所公开的实施例,以实现本发明实施例所提供的度块预测方法。例如,编码/解码模块470实现、处理或提供各种编码操作。因此,通过编码/解码模块470为视频译码设备400的功能提供了实质性的改进,并影响了视频译码设备400到不同状态的转换。或者,以存储在存储器460中并由处理器430执行的指令来实现编码/解码模块470。
[0178]
存储器460包括一个或多个磁盘、磁带机和固态硬盘,可以用作溢出数据存储设备,用于在选择性地执行这些程序时存储程序,并存储在程序执行过程中读取的指令和数据。存储器460可以是易失性和/或非易失性的,可以是只读存储器(rom)、随机存取存储器(ram)、随机存取存储器(ternary content-addressable memory,tcam)和/或静态随机存取存储器(sram)。
[0179]
应当理解的是,本技术的视频编码器100和视频解码器200中,针对某个环节的处理结果可以经过进一步处理后,输出到下一个环节,例如,在插值滤波、运动矢量推导或环
路滤波等环节之后,对相应环节的处理结果进一步进行clip或移位shift等操作。
[0180]
例如,按照相邻仿射编码块的运动矢量推导得到的当前图像块的控制点的运动矢量,可以经过进一步处理,本技术对此不做限定。例如,对运动矢量的取值范围进行约束,使其在一定的位宽内。假设允许的运动矢量的位宽为bitdepth,则运动矢量的范围为-2^(bitdepth-1)~2^(bitdepth-1)-1,其中“^”符号表示幂次方。如bitdepth为16,则取值范围为-32768~32767。如bitdepth为18,则取值范围为-131072~131071。可以通过以下两种方式进行约束:
[0181]
方式1,将运动矢量溢出的高位去除:
[0182]
ux=(vx+2
bitdepth
)%2
bitdepth
[0183]
vx=(ux》=2
bitdepth-1
)?(ux-2
bitdepth
):ux
[0184]
uy=(vy+2
bitdepth
)%2
bitdepth
[0185]
vy=(uy》=2
bitdepth-1
)?(uy-2
bitdepth
):uy
[0186]
例如vx的值为-32769,通过以上公式得到的为32767。因为在计算机中,数值是以二进制的补码形式存储的,-32769的二进制补码为1,0111,1111,1111,1111(17位),计算机对于溢出的处理为丢弃高位,则vx的值为0111,1111,1111,1111,则为32767,与通过公式处理得到的结果一致。
[0187]
方法2,将运动矢量进行clipping,如以下公式所示:
[0188]
vx=clip3(-2
bitdepth-1
,2
bitdepth-1-1,vx)
[0189]
vy=clip3(-2
bitdepth-1
,2
bitdepth-1-1,vy)
[0190]
其中clip3的定义为,表示将z的值钳位到区间[x,y]之间:
[0191][0192]
图4为本发明实施例的编码设备或解码设备(简称为译码设备1200)的一种实现方式的示意性框图。其中,译码设备1200可以包括处理器1210、存储器1230和总线系统1250。其中,处理器和存储器通过总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令。编码设备的存储器存储程序代码,且处理器可以调用存储器中存储的程序代码执行本发明实施例描述的各种视频编码或解码方法,尤其是在各种新的帧间预测模式下的视频编码或解码方法,以及在各种新的帧间预测模式下预测运动信息的方法。为避免重复,这里不再详细描述。
[0193]
在本发明实施例中,该处理器1210可以是中央处理单元(central processing unit,简称为“cpu”),该处理器1210还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0194]
该存储器1230可以包括只读存储器(rom)设备或者随机存取存储器(ram)设备。任何其他适宜类型的存储设备也可以用作存储器1230。存储器1230可以包括由处理器1210使用总线1250访问的代码和数据1231。存储器1230可以进一步包括操作系统1233和应用程序1235,该应用程序1235包括允许处理器1210执行本发明实施例描述的视频编码或解码方法(尤其是本发明实施例描述的运动矢量预测方法)的至少一个程序。例如,应用程序1235可
以包括应用1至n,其进一步包括执行在本发明实施例描述的视频编码或解码方法的视频编码或解码应用(简称视频译码应用)。
[0195]
该总线系统1250除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统1250。
[0196]
可选的,译码设备1200还可以包括一个或多个输出设备,诸如显示器1270。在一个示例中,显示器1270可以是触感显示器,其将显示器与可操作地感测触摸输入的触感单元合并。显示器1270可以经由总线1250连接到处理器1210。
[0197]
为了更好理解本发明实施例的技术方案,下面进一步描述本发明实施例涉及的帧间预测模式、非平动运动模型、继承的控制点运动矢量预测方法以及构造的控制点运动矢量预测方法。
[0198]
1)帧间预测模式。在hevc中,使用两种帧间预测模式,分别为先进的运动矢量预测(advanced motion vector prediction,amvp)模式和融合(merge)模式。
[0199]
对于amvp模式,先遍历当前块空域或者时域相邻的已编码块(记为相邻块),根据各个相邻块的运动信息构建候选运动矢量列表(也可以称为运动信息候选列表),然后通过率失真代价从候选运动矢量列表中确定最优的运动矢量,将率失真代价最小的候选运动信息作为当前块的运动矢量预测值(motion vector predictor,mvp)。其中,相邻块的位置及其遍历顺序都是预先定义好的。率失真代价由公式(1)计算获得,其中,j表示率失真代价rd cost,sad为使用候选运动矢量预测值进行运动估计后得到的预测像素值与原始像素值之间的绝对误差和(sum of absolute differences,sad),r表示码率,λ表示拉格朗日乘子。编码端将选择的运动矢量预测值在候选运动矢量列表中的索引值和参考帧索引值传递到解码端。进一步地,在mvp为中心的邻域内进行运动搜索获得当前块实际的运动矢量,编码端将mvp与实际运动矢量之间的差值(motion vector difference)传递到解码端。
[0200]
j=sad+λr
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0201]
对于merge模式,先通过当前块空域或者时域相邻的已编码块的运动信息,构建候选运动矢量列表,然后通过计算率失真代价从候选运动矢量列表中确定最优的运动信息作为当前块的运动信息,再将最优的运动信息在候选运动矢量列表中位置的索引值(记为mergeindex,下同)传递到解码端。当前块空域和时域候选运动信息如图5所示,空域候选运动信息来自于空间相邻的5个块(a0,a1,b0,b1和b2),若相邻块不可得(相邻块不存在或者相邻块未编码或者相邻块采用的预测模式不为帧间预测模式),则该相邻块的运动信息不加入候选运动矢量列表。当前块的时域候选运动信息根据参考帧和当前帧的图序计数(picture order count,poc)对参考帧中对应位置块的mv进行缩放后获得。首先判断参考帧中t位置的块是否可得,若不可得则选择c位置的块。
[0202]
与amvp模式类似,merge模式的相邻块的位置及其遍历顺序也是预先定义好的,且相邻块的位置及其遍历顺序在不同模式下可能不同。
[0203]
可以看到,在amvp模式和merge模式中,都需要维护一个候选运动矢量列表。每次向候选列表中加入新的运动信息之前都会先检查列表中是否已经存在相同的运动信息,如果存在则不会将该运动信息加入列表中。我们将这个检查过程称为候选运动矢量列表的修剪。列表修剪是为了防止列表中出现相同的运动信息,避免冗余的率失真代价计算。
[0204]
在hevc的帧间预测中,编码块内的所有像素都采用了相同的运动信息(即编码块
中所有像素点的运动一致),然后根据运动信息进行运动补偿,得到编码块的像素的预测值。然而在编码块内,并不是所有的像素都有相同的运动特性,采用相同的运动信息可能会导致运动补偿预测的不准确,进而增加了残差信息。
[0205]
也就是说,现有的视频编码标准使用基于平动运动模型的块匹配运动估计,但是由于在现实世界中,运动多种多样,存在很多非平动运动的物体,如旋转的物体,在不同方向旋转的过山车,投放的烟花和电影中的一些特技动作,特别是在ugc场景中的运动物体,对它们的编码,如果采用当前编码标准中的基于平动运动模型的块运动补偿技术,编码效率会受到很大的影响,因此,产生了非平动运动模型,比如仿射变换模型,以便进一步提高编码效率。
[0206]
基于此,根据运动模型的不同,amvp模式可以分为基于平动模型的amvp模式以及基于非平动模型的amvp模式;merge模式可以分为基于平动模型的merge模式和基于非平动运动模型的merge模式。
[0207]
2)非平动运动模型。非平动运动模型预测指在编解码端使用相同的运动模型推导出当前块内每一个子运动补偿单元的运动信息,根据子运动补偿单元的运动信息进行运动补偿,得到预测块,从而提高预测效率。其中,本发明实施例中涉及到的子运动补偿单元可以是一个像素点或按照特定方法划分的大小为n1×
n2的像素块,其中,n1和n2均为正整数,n1可以等于n2,也可以不等于n2。
[0208]
常用的非平动运动模型有4参数仿射变换模型或者6参数仿射变换模型,在可能的应用场景中,还有8参数双线性模型。下面将分别进行说明。
[0209]
对于4参数仿射变换模型,4参数仿射变换模型如下公式(2)所示:
[0210][0211]
4参数仿射变换模型可以通过两个像素点的运动矢量及其相对于当前块左上顶点像素的坐标来表示,将用于表示运动模型参数的像素点称为控制点。若采用左上顶点(0,0)和右上顶点(w,0)像素点作为控制点,则先确定当前块左上顶点和右上顶点控制点的运动矢量(vx0,vy0)和(vx1,vy1),然后根据如下公式(3)得到当前块中每一个子运动补偿单元的运动信息,其中(x,y)为子运动补偿单元相对于当前块左上顶点像素的坐标,w为当前块的宽。
[0212][0213]
对于6参数仿射变换模型,6参数仿射变换模型如下公式(4)所示:
[0214][0215]
6参数仿射变换模型可以通过三个像素点的运动矢量及其相对于当前块左上顶点像素的坐标来表示。若采用左上顶点(0,0)、右上顶点(w,0)和左下顶点(0,h)像素点作为控制点,则先确定当前块左上顶点、右上顶点和左下顶点控制点的运动矢量分别为(vx0,vy0)和(vx1,vy1)和(vx2,vy2),然后根据如下公式(5)得到当前块中每一个子运动补偿单元的运动信息,其中(x,y)为子运动补偿单元相对于当前块的左上顶点像素的坐标,w和h分别为当前块的宽和高。
[0216][0217]
对于8参数双线性模型,8参数双线性模型如下公式(6)所示:
[0218][0219]
8参数双线性模型可以通过四个像素点的运动矢量及其相对于当前编码块左上顶点像素的坐标来表示。若采用左上顶点(0,0)、右上顶点(w,0)、左下顶点(0,h)和右下定点(w,h)像素点作为控制点,则先确定当前编码块左上顶点、右上顶点、左下顶点和右下顶点控制点的运动矢量(vx0,vy0)、(vx1,vy1)、(vx2,vy2)和(vx3,vy3),然后根据如下公式(7)推导得到当前编码块中每一个子运动补偿单元的运动信息,其中(x,y)为子运动补偿单元相对于当前编码块左上顶点像素的坐标,w和h分别为当前编码块的宽和高。
[0220][0221]
采用仿射变换模型进行预测的编码块又可称为仿射编码块,通过上文可以看出,仿射变换模型与仿射编码块的控制点的运动信息直接相关。
[0222]
通常的,可以使用基于仿射变换模型的amvp模式或者基于仿射变换模型的merge模式,获得仿射编码块的控制点的运动信息。对于基于仿射变换模型的amvp模式或者基于仿射变换模型的merge模式,当前编码块的控制点的运动信息可以通过继承的控制点运动矢量预测方法或者构造的控制点运动矢量预测方法得到。下面进一步描述这两种方法。
[0223]
3)继承的控制点运动矢量预测方法。继承的控制点运动矢量预测方法是指利用当前块的相邻已编码的仿射编码块的仿射变换模型,确定当前块的候选的控制点运动矢量。其中,仿射编码块的仿射变换模型的参数个数(如4参数、6参数、8参数等等)与当前块的仿射变换模型的参数个数相一致。
[0224]
以图6所示的当前块为例,按照设定的顺序,比如a1
→
b1
→
b0
→
a0
→
b2的顺序遍历当前块周围的相邻位置块,到该当前块的相邻位置块所在的仿射编码块,获得该仿射编码块的控制点运动信息,进而通过仿射编码块的控制点运动信息构造的仿射变换模型,推导出当前块的控制点的运动矢量(用于merge模式)或者当前块的控制点的运动矢量预测值(用于amvp模式)。其中,a1
→
b1
→
b0
→
a0
→
b2仅作为一种示例,其它组合的顺序也适用于本发明实施例。另外,相邻位置块不仅限于a1、b1、b0、a0、b2。其中,相邻位置块可以为一个像素点,或者,按照特定方法划分的预设大小的像素块,比如可以为一个4x4的像素块,也可以为一个4x2的像素块,也可以为其他大小的像素块,不作限定。其中,仿射编码块为在编码阶段采用仿射变换模型进行预测的与当前块相邻的已编码块(也可简称为相邻仿射编码块)。
[0225]
下面以如图6所示出的a1为例描述当前块的候选的控制点运动矢量的确定过程,其他情况以此类推:
[0226]
若a1所在的仿射编码块为4参数仿射编码块(即该仿射编码块采用4参数仿射变换模型进行预测),则获得该仿射编码块左上顶点(x4,y4)的运动矢量(vx4,vy4)、右上顶点(x5,y5)的运动矢量(vx5,vy5)。
[0227]
然后,利用如下公式(8)计算获得当前块左上顶点(x0,y0)的运动矢量(vx0,vy0):
[0228][0229]
利用如下公式(9)计算获得当前块右上顶点(x1,y1)的运动矢量(vx1,vy1):
[0230][0231]
通过如上基于a1所在的仿射编码块获得的当前块的左上顶点(x0,y0)的运动矢量(vx0,vy0)、右上顶点(x1,y1)的运动矢量(vx1,vy1)的组合为当前块的候选的控制点运动矢量。
[0232]
若a1所在的编码块为6参数仿射编码块(即该仿射编码块采用6参数仿射变换模型进行预测),则获得该仿射编码块左上顶点(x4,y4)的运动矢量(vx4,vy4)、右上顶点(x5,y5)的运动矢量(vx5,vy5)、左下顶点(x6,y6)的运动矢量(vx6,vy6)。
[0233]
然后,利用如下公式(10)计算获得当前块左上顶点(x0,y0)的运动矢量(vx0,vy0):
[0234][0235]
利用如下公式(11)计算获得当前块右上顶点(x1,y1)的运动矢量(vx1,vy1):
[0236][0237]
利用如下公式(12)计算获得当前块左下顶点(x2,y2)的运动矢量(vx2,vy2):
[0238][0239]
通过如上基于a1所在的仿射编码块获得的当前块的左上顶点(x0,y0)的运动矢量(vx0,vy0)、右上顶点(x1,y1)的运动矢量(vx1,vy1)、当前块左下顶点(x2,y2)的运动矢量(vx2,vy2)的组合为当前块的候选的控制点运动矢量。
[0240]
需要说明的是,其他运动模型、候选位置、查遍历顺序也可以适用于本发明实施例,本发明实施例对此不做赘述。
[0241]
需要说明的是,采用其他控制点来表示相邻和当前编码块的运动模型的方法也可以适用于本发明实施例,此处不做赘述。
[0242]
4)构造的控制点运动矢量预测方法。构造的控制点运动矢量预测方法是指将当前块的控制点周边邻近的已编码块的运动矢量进行组合,作为当前仿射编码块的控制点的运动矢量,而不需要考虑周边邻近的已编码块是否为仿射编码块。基于不同的预测模式(基于仿射变换模型的amvp模式和基于仿射变换模型的merge模式),构造的控制点运动矢量预测
方法又有所差异,下面分别进行描述。
[0243]
首先描述基于仿射变换模型的amvp模式的构造的控制点运动矢量预测方法。
[0244]
以图7所示为例对该构造的控制点运动矢量预测方法进行描述,以利用当前编码块周边邻近的已编码块的运动信息确定当前块左上顶点和右上顶点的运动矢量。
[0245]
若当前块为4参数仿射编码块(即当前块采用4参数仿射变换模型进行预测),则可利用左上顶点相邻已编码块a2,b2或b3块的运动矢量,作为当前块左上顶点的运动矢量的候选运动矢量;利用右上顶点相邻已编码块b1或b0块的运动矢量,作为当前块右上顶点的运动矢量的候选运动矢量。将上述左上顶点和右上顶点的候选运动矢量进行组合,构成多个二元组,二元组包括的两个已编码块的运动矢量可以作为当前块的候选的控制点运动矢量,所述多个二元组可参见如下(13a)所示:
[0246]
{v
a2
,v
b1
},{v
a2
,v
b0
},{v
b2
,v
b1
},{v
b2
,v
b0
},{v
b3
,v
b1
},{v
b3
,v
b0
}
ꢀꢀ
(13a)
[0247]
其中,v
a2
表示a2的运动矢量,v
b1
表示b1的运动矢量,v
b0
表示b0的运动矢量,v
b2
表示b2的运动矢量,v
b3
表示b3的运动矢量。
[0248]
若当前块为6参数仿射编码块(即当前块采用6参数仿射变换模型进行预测),则可利用左上顶点相邻已编码块a2,b2或b3块的运动矢量,作为当前块左上顶点的运动矢量的候选运动矢量;利用右上顶点相邻已编码块b1或b0块的运动矢量,作为当前块右上顶点的运动矢量的候选运动矢量,利用坐下顶点相邻已编码块a0或a1的运动矢量作为当前块左下顶点的运动矢量的候选运动矢量。将上述左上顶点、右上顶点以及左下顶点的候选运动矢量进行组合,构成多个三元组,三元组包括的三个已编码块的运动矢量可以作为当前块的候选的控制点运动矢量,所述多个三元组可参见如下公式(13b)、(13c)所示:
[0249]
{v
a2
,v
b1
,v
a0
},{v
a2
,v
b0
,v
a0
},{v
b2
,v
b1
,v
a0
},{v
b2
,v
b0
,v
a0
},{v
b3
,v
b1
,v
a0
},{v
b3
,v
b0
,v
a0
}
ꢀꢀ
(13b)
[0250]
{v
a2
,v
b1
,v
a1
},{v
a2
,v
b0
,v
a1
},{v
b2
,v
b1
,v
a1
},{v
b2
,v
b0
,v
a1
},{v
b3
,v
b1
,v
a1
},{v
b3
,v
b0
,v
a1
}
ꢀꢀ
(13c)
[0251]
其中,v
a2
表示a2的运动矢量,v
b1
表示b1的运动矢量,v
b0
表示b0的运动矢量,v
b2
表示b2的运动矢量,v
b3
表示b3的运动矢量,v
a0
表示a0的运动矢量,v
a1
表示a1的运动矢量。
[0252]
需要说明的是,图7仅作为一种示例。其他控制点运动矢量的组合的方法也可适用于本发明实施例,此处不做赘述。
[0253]
需要说明的是,采用其他控制点来表示相邻和当前编码块的运动模型的方法也可以适用于本发明实施例,此处不做赘述。
[0254]
下面描述本发明实施例中基于仿射变换模型的merge模式的构造的控制点运动矢量预测方法。
[0255]
以图8所示为例对该构造的控制点运动矢量预测方法进行描述,以利用当前编码块周边邻近的已编码块的运动信息确定当前块左上顶点和右上顶点的运动矢量。需要说明的是,图8仅作为一种示例。
[0256]
如图8所示,cpk(k=1,2,3,4)表示第k个控制点。a0,a1,a2,b0,b1,b2和b3为当前块的空域相邻位置,用于预测cp1、cp2或cp3;t为当前块的时域相邻位置,用于预测cp4。假设,cp1,cp2,cp3和cp4的坐标分别为(0,0),(w,0),(h,0)和(w,h),其中w和h为当前块的宽度和高度。那么对于当前块的每个控制点,其运动信息按照以下顺序获得:
[0257]
1、对于cp1,检查顺序为b2->a2->b3,如果b2可得,则采用b2的运动信息。否则,检测a2,b3。若三个位置的运动信息均不可得,则无法获得cp1的运动信息。
[0258]
2、对于cp2,检查顺序为b0->b1;如果b0可得,则cp2采用b0的运动信息。否则,检测b1。若两个位置的运动信息均不可得,则无法获得cp2的运动信息。
[0259]
3、对于cp3,检测顺序为a0->a1;
[0260]
4、对于cp4,采用t的运动信息。
[0261]
此处x可得表示包括x(x为a0,a1,a2,b0,b1,b2,b3或t)位置的块已经编码并且采用帧间预测模式;否则,x位置不可得。需要说明的是,其他获得控制点的运动信息的方法也可适用于本发明实施例,此处不做赘述。
[0262]
然后,将当前块的控制点的运动信息进行组合,得到构造的控制点运动信息。
[0263]
若当前块采用的是4参数仿射变换模型,则将当前块的两个控制点的运动信息进行组合构成二元组,用来构建4参数仿射变换模型。两个控制点的组合方式可以为{cp1,cp4},{cp2,cp3},{cp1,cp2},{cp2,cp4},{cp1,cp3},{cp3,cp4}。例如,采用cp1和cp2控制点组成的二元组构建的4参数仿射变换模型,可以记作affine(cp1,cp2)。
[0264]
若当前块采用的是6参数仿射变换模型,则将当前块的三个控制点的运动信息进行组合构成三元组,用来构建6参数仿射变换模型。三个控制点的组合方式可以为{cp1,cp2,cp4},{cp1,cp2,cp3},{cp2,cp3,cp4},{cp1,cp3,cp4}。例如,采用cp1、cp2和cp3控制点构成的三元组构建的6参数仿射变换模型,可以记作affine(cp1,cp2,cp3)。
[0265]
若当前块采用的是8参数双线性模型,则将当前块的四个控制点的运动信息进行组合构成的四元组,用来构建8参数双线性模型。采用cp1、cp2、cp3和cp4控制点构成的四元组构建的8参数双线性模型,记做bilinear(cp1,cp2,cp3,cp4)。
[0266]
本文中,为了描述方便,将由两个控制点(或者两个已编码块)的运动信息组合简称为二元组,将三个控制点(或者两个已编码块)的运动信息组合简称为三元组,将四个控制点(或者四个已编码块)的运动信息组合简称为四元组。
[0267]
按照预置的顺序遍历这些模型,若组合模型对应的某个控制点的运动信息不可得,则认为该模型不可得;否则,确定该模型的参考帧索引,并将控制点的运动矢量进行缩放,若缩放后的所有控制点的运动信息一致,则该模型不合法。若确定控制该模型的控制点的运动信息均可得,并且模型合法,则将该构建该模型的控制点的运动信息加入运动信息候选列表中。
[0268]
控制点的运动矢量缩放的方法如下公式(14)所示:
[0269][0270]
其中,curpoc表示当前帧的poc号,despoc表示当前块的参考帧的poc号,srcpoc表示控制点的参考帧的poc号,mvs表示缩放得到的运动矢量,mv表示控制点的运动矢量。
[0271]
需要说明的是,亦可将不同控制点的组合转换为同一位置的控制点。
[0272]
例如将{cp1,cp4},{cp2,cp3},{cp2,cp4},{cp1,cp3},{cp3,cp4}组合得到的4参数仿射变换模型转换为通过{cp1,cp2}或{cp1,cp2,cp3}来表示。转换方法为将控制点的运动矢量及其坐标信息,代入上述公式(2),得到模型参数,再将{cp1,cp2}的坐标信息代入上述公式(3),得到其运动矢量。
[0273]
更直接地,可以按照以下公式(15)-(23)来进行转换,其中,w表示当前块的宽度,h表示当前块的高度,公式(15)-(23)中,(vx0,vy0)表示cp1的运动矢量,(vx1,vy1)表示cp2的运动矢量,(vx2,vy2)表示cp3的运动矢量,(vx3,vy3)表示cp4的运动矢量。
[0274]
{cp1,cp2}转换为{cp1,cp2,cp3}可以通过如下公式(15)实现,即{cp1,cp2,cp3}中cp3的运动矢量可以通过公式(15)来确定:
[0275][0276]
{cp1,cp3}转换{cp1,cp2}或{cp1,cp2,cp3}可以通过如下公式(16)实现:
[0277][0278]
{cp2,cp3}转换为{cp1,cp2}或{cp1,cp2,cp3}可以通过如下公式(17)实现:
[0279][0280]
{cp1,cp4}转换为{cp1,cp2}或{cp1,cp2,cp3}可以通过如下公式(18)或者(19)实现:
[0281][0282][0283]
{cp2,cp4}转换为{cp1,cp2}可以通过如下公式(20)实现,{cp2,cp4}转换为{cp1,cp2,cp3}可以通过公式(20)和(21)实现:
[0284][0285][0286]
{cp3,cp4}转换为{cp1,cp2}可以通过如下公式(20)实现,{cp3,cp4}转换为{cp1,cp2,cp3}可以通过如下公式(22)和(23)实现:
[0287][0288][0289]
例如将{cp1,cp2,cp4},{cp2,cp3,cp4},{cp1,cp3,cp4}组合的6参数仿射变换模型转换为控制点{cp1,cp2,cp3}来表示。转换方法为将控制点的运动矢量及其坐标信息,代入上述公式(4),得到模型参数,再将{cp1,cp2,cp3}的坐标信息代入公式上述(5),得到其
运动矢量。
[0290]
更直接地,可以按照以下公式(24)-(26)进行转换,其中,w表示当前块的宽度,h表示当前块的高度,公式(24)-(26)中,(vx0,vy0)表示cp1的运动矢量,(vx1,vy1)表示cp2的运动矢量,(vx2,vy2)表示cp3的运动矢量,(vx3,vy3)表示cp4的运动矢量。
[0291]
{cp1,cp2,cp4}转换为{cp1,cp2,cp3}可以通过公式(22)实现:
[0292][0293]
{cp2,cp3,cp4}转换为{cp1,cp2,cp3}可以通过公式(23)实现:
[0294][0295]
{cp1,cp3,cp4}转换为{cp1,cp2,cp3}可以通过公式(24)实现:
[0296][0297]
具体实施例中,将当前所构造的控制点运动信息加入候选运动矢量列表后,若此时候选列表的长度小于最大列表长度(如maxaffinenummrgcand),则按照预置的顺序遍历这些组合,得到合法的组合作为控制点的候选运动信息,如果此时候选运动矢量列表为空,则将该控制点的候选运动信息加入候选运动矢量列表;否则依次遍历候选运动矢量列表中的运动信息,检查候选运动矢量列表中是否存在与该控制点的候选运动信息相同的运动信息。如果候选运动矢量列表中不存在与该控制点的候选运动信息相同的运动信息,则将该控制点的候选运动信息加入候选运动矢量列表。
[0298]
示例性的,一种预置的顺序如下:affine(cp1,cp2,cp3)
→
affine(cp1,cp2,cp4)
→
affine(cp1,cp3,cp4)
→
affine(cp2,cp3,cp4)
→
affine(cp1,cp2)
→
affine(cp1,cp3)
→
affine(cp2,cp3)
→
affine(cp1,cp4)
→
affine(cp2,cp4)
→
affine(cp3,cp4),总共10种组合。
[0299]
若组合对应的控制点运动信息不可得,则认为该组合不可得。若组合可得,确定该组合的参考帧索引(两个控制点时,选择参考帧索引最小的作为该组合的参考帧索引;大于两个控制点时,先选择出现次数最多的参考帧索引,若有多个参考帧索引的出现次数一样多,则选择参考帧索引最小的作为该组合的参考帧索引),并将控制点的运动矢量进行缩放。若缩放后的所有控制点的运动信息一致,则该组合不合法。
[0300]
可选地,本发明实施例还可以针对候选运动矢量列表进行填充,比如,经过上述遍历过程后,此时候选运动矢量列表的长度小于最大列表长度(如maxaffinenummrgcand),则可以对候选运动矢量列表进行填充,直到列表的长度等于最大列表长度。
[0301]
可以通过补充零运动矢量的方法进行填充,或者通过将现有列表中已存在的候选的运动信息进行组合、加权平均的方法进行填充。需要说明的是,其他获得候选运动矢量列表填充的方法也可适用于本发明实施例,在此不做赘述。
[0302]
现有方案中,对于继承的控制点运动矢量预测方法,同一图像序列采用的非平动运动模型是固定的,图像中的不同块采用的仿射变换模型的参数个数相同,亦即仿射编码块采用的仿射变换模型的参数个数和当前块采用的仿射变换模型的参数个数相一致,所以,仿射编码块的控制点数量及该控制点在仿射编码块的位置,与当前块的控制点数量及
该控制点在当前块的位置分别一致。
[0303]
例如,如果仿射编码块采用4参数仿射变换模型,那么当前块也采用4参数仿射变换模型,解码端根据当前块的4参数仿射变换模型获得当前块中的每个子块的运动矢量信息,从而实现对每个子块的重建。
[0304]
又例如,如果仿射编码块采用8参数双线性模型,那么当前块也采用8参数双线性模型,解码端根据当前块的8参数双线性模型获得当前块中的每个子块的运动矢量信息,从而实现对每个子块的重建。
[0305]
实践表明,图像中的不同块的仿射运动可能各有差异(即当前块的仿射运动可能不同于仿射编码块的仿射运动),所以,现有基于与仿射编码块同阶的仿射变换模型对当前块进行解析(如建立候选运动矢量列表)和重建,会导致对当前块进行预测的编码效率及准确性并不高,某些场景下仍难满足用户需求。
[0306]
为了克服现有方案的缺陷,提高编解码过程中预测的编码效率和准确性,本发明实施例对上文所述继承的控制点运动矢量预测方法进行改进,包括两种改进方案:第一种改进方案和第二种改进方案。其中,第一种改进方案又可称为第一种基于运动模型的运动矢量预测方法,第二种改进方案又可称为第二种基于运动模型的运动矢量预测方法。下面分别进行描述:
[0307]
5)第一种基于运动模型的运动矢量预测方法。第一种基于运动模型的运动矢量预测方法是指,对图像序列中的图像的不同块,不限定不同块采用的仿射变换模型,也就是不同块可以采用不同的仿射变换模型。在对当前块的编解码过程中,先确定当前块所采用的仿射变换模型。当前块所采用的仿射变换模型可以是预定义的,也可以是根据当前块的仿射变换模型的实际运动情况或实际需要而从多种仿射变换模型中选择出来的。如果当前块的相邻块(在编码端又称为仿射编码块,在解码端又称为仿射解码块)采用的2乘n个参数仿射变换模型,而当前块采用的2乘k个参数仿射变换模型,并且,n≠k。那么,根据所述相邻块采用的2乘n个参数的仿射变换模型,通过插值计算获得当前块的k个控制点的运动矢量(候选运动矢量)。
[0308]
下面以如图10所示出的a1为例描述当前块的控制点的候选运动矢量的确定过程,该确定过程主要从解码端的角度进行描述,此时a1所在的相邻块为仿射解码块。可以理解的,对于编码端的实施情况可以以此类推,即若在编码端当前块的相邻块为仿射编码块,该实施情况本文将不再赘述。
[0309]
举例来说,若a1所在的仿射解码块采用6参数仿射变换模型,而当前块采用4参数仿射变换模型,则获得该仿射解码块左上顶点(x4,y4)的运动矢量(vx4,vy4)、右上顶点(x5,y5)的运动矢量(vx5,vy5)、左下顶点(x6,y6)的运动矢量(vx6,vy6)。利用仿射解码块上述3个控制点的运动矢量组成的6参数仿射变换模型,按照如下6参数仿射变换模型公式(27)、(28)分别插值计算,从而获得当前块左上顶点(x0,y0)的运动矢量(vx0,vy0)、当前块右上顶点(x1,y1)的运动矢量(vx1,vy1):
[0310]
[0311][0312]
又举例来说,若a1所在的仿射解码块采用4参数仿射变换模型,而当前块采用6参数仿射变换模型,则获得该仿射解码块左上顶点(x4,y4)的运动矢量(vx4,vy4)、右上顶点(x5,y5)的运动矢量(vx5,vy5)。则获取仿射解码块2个控制点的运动矢量:左上控制点(x4,y4)的运动矢量值(vx4,vy4)和右上控制点(x5,y5)的运动矢量值(vx5,vy5)。利用仿射解码块2个控制点组成的4参数仿射变换模型,按照如下4参数仿射变换模型公式(29)、(30)、(31)分别插值计算,从而获得当前块左上顶点(x0,y0)的运动矢量(vx0,vy0)、当前块右上顶点(x1,y1)的运动矢量(vx1,vy1)和当前块左下顶点(x2,y2)的运动矢量(vx2,vy2):
[0313][0314][0315][0316]
需要说明的是,上述例子仅仅用于解释本发明技术方案而非限定。另外,关于当前块与相邻块采用其他仿射变换模型的情况(如当前块采用4参数仿射变换模型,相邻块采用8参数双线性模型;又如当前块采用6参数仿射变换模型,相邻块采用8参数双线性模型,等等)也可参考上述例子的实施方式来实现,这里不再一一详述。
[0317]
还需要说明的是,由于本方案中,并不限定当前块与相邻块的模型参数个数是否相同,所以,在一些实施场景中,当前块也有可能采用与相邻块相同的模型参数个数。
[0318]
举例来说,若a1所在的仿射解码块采用4参数仿射变换模型,而当前块也采用4参数仿射变换模型,则获得该仿射解码块左上顶点(x4,y4)的运动矢量(vx4,vy4)、右上顶点(x5,y5)的运动矢量(vx5,vy5)。利用仿射解码块上述2个控制点的运动矢量组成的4参数仿射变换模型,按照如下4参数仿射变换模型公式(32)、(33)分别插值计算,从而获得当前块左上顶点(x0,y0)的运动矢量(vx0,vy0)、当前块右上顶点(x1,y1)的运动矢量(vx1,vy1):
[0319][0320][0321]
又举例来说,若a1所在的仿射解码块采用6参数仿射变换模型,而当前块采用6参数仿射变换模型,则获得该仿射解码块左上顶点(x4,y4)的运动矢量(vx4,vy4)、右上顶点(x5,y5)的运动矢量(vx5,vy5)、左下顶点(x6,y6)的运动矢量(vx6,vy6)。利用仿射解码块
上述3个控制点的运动矢量组成的6参数仿射变换模型,按照如下6参数仿射变换模型公式(34)、(35)、(36)分别插值计算,从而获得当前块左上顶点(x0,y0)的运动矢量(vx0,vy0)、当前块右上顶点(x1,y1)的运动矢量(vx1,vy1)、当前块左下顶点(x2,y2)的运动矢量(vx2,vy2):
[0322][0323][0324][0325]
需要说明的是,上述例子仅仅用于解释本发明技术方案而非限定。另外,关于当前块与相邻块采用其他仿射变换模型的情况(如当前块采用8参数仿射变换模型,相邻块也采用8参数双线性模型,等等)也可参考上述例子的实施方式来实现,这里不再一一详述。
[0326]
实施本发明的第一种基于运动模型的运动矢量预测方法,能够实现在当前块的解析阶段(如构造候选运动矢量列表的阶段),利用相邻块的仿射变换模型来构建针对当前块自身的仿射变换模型,且两者的仿射变换模型可以不同。由于当前块自身的仿射变换模型更加符合当前块实际运动情况/实际需求,所以实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
[0327]
6)第二种基于运动模型的运动矢量预测方法。第二种基于运动模型的运动矢量预测方法是指,对图像序列中的图像的不同块,不限定不同块采用的仿射变换模型,不同块可以采用相同或者不同的仿射变换模型。也即是说,如果当前块的相邻块(在编码端又称为仿射编码块,在解码端又称为仿射解码块)采用的2乘n个参数仿射变换模型,而当前块采用的2乘k个参数仿射变换模型,那么,n可能等于k,n也可能不等于k。在解析阶段(如构造候选运动矢量列表的阶段),可根据上文“3)”中描述的继承的控制点运动矢量预测方法,或者上文“5)”中描述的第一种基于运动模型的运动矢量预测方法,获得当前块的控制点(如2个控制点、或3个控制点,或4个控制点,等等)。然后,在当前块的重建阶段,根据当前块的控制点,统一采用6参数仿射变换模型来获得当前块中的每个子块的运动矢量信息,从而实现对每个子块的重建。
[0328]
下面同样以如图6所示出的a1为例描述当前块的控制点的候选运动矢量的确定过程(以解码端的角度进行描述),其他情况以此类推。
[0329]
举例来说,若当前块在解析阶段采用4参数仿射变换模型,而相邻块可能采用4参数仿射变换模型,也可能采用其他参数仿射模型。那么,可根据上文“3)”中描述的继承的控制点运动矢量预测方法,或者上文“5)”中描述的第一种基于运动模型的运动矢量预测方法,获得当前块的2个控制点的运动矢量,例如,当前块的左上控制点(x4,y4)的运动矢量值(vx4,vy4)和右上控制点(x5,y5)的运动矢量值(vx5,vy5)。那么,在当前块的重建阶段,需根据当前块的2个控制点的运动矢量,构建6参数仿射变换模型。
[0330]
比如,可根据当前块的左上控制点(x0,y0)的运动矢量(vx0,vy0)和右上控制点(x1,y1)的运动矢量(vx1,vy1),采用如下公式(40)获得第3个控制点的运动矢量值,所述第3个控制点的运动矢量值例如为当前块左下顶点(x2,y2)的运动矢量(vx2,vy2):
[0331][0332]
其中,w表示所述当前块的宽度,h表示所述当前块的高度。
[0333]
然后,利用当前块的左上控制点(x0,y0)的运动矢量(vx0,vy0、右上控制点(x1,y1)的运动矢量(vx1,vy1)和左下顶点(x2,y2)的运动矢量(vx2,vy2),获得当前块重建阶段的6参数仿射模型,该6参数仿射模型公式如下式(37)所示:
[0334][0335]
那么,将当前块中的各个子块(或各个运动补偿单元)的中心点相对于当前块左上顶点(或其他参考点)的坐标(x
(i,j)
,y
(i,j)
)代入到上述公式(37),即可获得每个子块(或每个运动补偿单元)中心点的运动信息,进而后续实现对每个子块的重建。
[0336]
需要说明的是,上述例子仅仅用于解释本发明技术方案而非限定。另外,关于当前块在解析阶段采用其他仿射变换模型的情况(如6参数仿射变换模型、8参数双线性模型,等等)也可参考上述例子的实施方式来实现,这里不再一一详述。
[0337]
实施本发明的第二种基于运动模型的运动矢量预测方法,能够实现在当前块的重建阶段,统一采用6参数仿射变换模型来对当前块进行预测。由于描述当前块的仿射运动的运动模型的参数越多,精度越高,计算复杂度就会越高。而本方案在重建阶段所构建的6参数仿射变换模型可描述图像块的平移、缩放、旋转等等仿射变换,并且在模型复杂度以及建模能力之间取得良好平衡。所以,实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
[0338]
可以理解的是,在本发明的一些实施例中,上述第一种改进方案和第二种改进方案也可以综合在一起实现。
[0339]
例如,当前块在解析阶段采用4参数仿射变换模型,而相邻块采用6参数仿射变换模型时,可根据上文“5)”中描述的第一种基于运动模型的运动矢量预测方法,获得当前块的2个控制点的运动矢量,再根据上文“6)”中描述的第二种基于运动模型的运动矢量预测方法,在重建阶段将2个控制点的运动矢量统一到6参数仿射变换模型,进而后续实现对当前块的每个子块的重建。
[0340]
又例如,当前块在解析阶段采用6参数仿射变换模型,而相邻块采用4参数仿射变换模型时,可根据上文“5)”中描述的第一种基于运动模型的运动矢量预测方法,获得当前块的3个控制点的运动矢量,再根据上文“6)”中描述的第二种基于运动模型的运动矢量预测方法中的公式(32),在重建阶段根据3个控制点的运动矢量组合成6参数仿射变换模型,进而后续实现对当前块的每个子块的重建。
[0341]
当然,关于第一种改进方案和第二种改进方案综合实现方案还可以是其他的实施例,这里不一一详述。
[0342]
基于上文的描述,下面进一步描述本发明实施例中,基于仿射变换模型的amvp模
式(affine amvp mode)和基于仿射变换模型的merge模式(affine merge mode)。
[0343]
首先描述基于仿射变换模型的amvp模式。
[0344]
对于基于仿射变换模型的amvp模式,一实施例中,也可利用第一种基于运动模型的运动矢量预测方法和/或构造的控制点运动矢量预测方法,构建基于所述amvp模式的候选运动矢量列表(或称控制点运动矢量预测值候选列表)。又一实施例中,可利用继承的控制点运动矢量预测方法和/或构造的控制点运动矢量预测方法,构建基于所述amvp模式的候选运动矢量列表(或称控制点运动矢量预测值候选列表)。列表中的控制点运动矢量预测值可包括2个(如当前块为4参数仿射变换模型的情况)候选的控制点运动矢量,或者包括3个(如当前块为6参数仿射变换模型的情况)候选的控制点运动矢量,或者包括4个(如当前块为8参数双线性模型的情况)候选的控制点运动矢量。
[0345]
可能的应用场景中,还可将控制点运动矢量预测值候选列表根据特定的规则进行剪枝和排序,并可将其截断或填充至特定的个数。
[0346]
然后,在编码端,编码器(如前述视频编码器100)利用控制点运动矢量预测值候选列表中的每个控制点运动矢量预测值,通过上述公式(3)或(5)或(7)获得当前编码块中每个子运动补偿单元的运动矢量,进而得到每个子运动补偿单元的运动矢量所指向的参考帧中对应位置的像素值,作为其预测值,进行采用仿射变换模型的运动补偿。计算当前编码块中每个像素点的原始值和预测值之间差值的平均值,选择最小平均值对应的控制点运动矢量预测值为最优的控制点运动矢量预测值,并作为当前编码块2个或3个或4个控制点的运动矢量预测值。此外在编码端,还以控制点运动矢量预测值作为搜索起始点在一定搜索范围内进行运动搜索获得控制点运动矢量(control point motion vectors,cpmv),并计算控制点运动矢量与控制点运动矢量预测值之间的差值(control point motion vectors differences,cpmvd)。然后,编码器将表示该控制点运动矢量预测值在控制点运动矢量预测值候选列表中位置的索引值以及cpmvd编码入码流传递到解码端。
[0347]
在解码端,解码器(如前述视频解码器200)解析获得码流中的索引值以及控制点运动矢量差值(cpmvd),根据索引值从控制点运动矢量预测值候选列表中确定控制点运动矢量预测值(control point motion vectors predictor,cpmvp),将cpmvp与cpmvd相加,得到控制点运动矢量。
[0348]
接下来描述基于仿射变换模型的merge模式。
[0349]
对于基于仿射变换模型的merge模式,一实施例中,可利用继承的控制点运动矢量预测方法和/或构造的控制点运动矢量预测方法,构建merge模式的候选运动矢量列表(或称控制点运动矢量融合候选列表)。又一实施例中,也可利用第一种基于运动模型的运动矢量预测方法和/或构造的控制点运动矢量预测方法,构建merge模式的候选运动矢量列表(或称控制点运动矢量融合候选列表)。
[0350]
可能的应用场景中,可将控制点运动矢量融合候选列表根据特定的规则进行剪枝和排序,并可将其截断或填充至特定的个数。
[0351]
然后,在编码端,编码器(如前述视频编码器100)利用融合候选列表中的每个控制点运动矢量,通过公式(3)或(5)或(7)获得当前编码块中每个子运动补偿单元(像素点或特定方法划分的大小为m
×
n的像素块)的运动矢量,进而得到每个子运动补偿单元的运动矢量所指向的参考帧中位置的像素值,作为其预测值,进行仿射运动补偿。计算当前编码块中
每个像素点的原始值和预测值之间差值的平均值,选择差值的平均值最小对应的控制点运动矢量作为当前编码块2个或3个或4个控制点的运动矢量。将表示该控制点运动矢量在候选列表中位置的索引值编码入码流发送给解码端。
[0352]
在解码端,解码器(如前述视频解码器200)解析索引值,根据索引值从控制点运动矢量融合候选列表中确定控制点运动矢量(control point motion vectors,cpmv)。
[0353]
另外,需要说明的是,本发明实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
[0354]
参见图9,基于第一种基于运动模型的运动矢量预测方法的设计方案,本发明实施例提供了一种运动矢量预测方法,该方法可由视频解码器200执行,具体的,可以由视频解码器200的帧间预测器210来执行。视频解码器200可根据具有多个视频帧的视频数据流,执行包括如下步骤的部分或全部来预测当前视频帧的当前解码块(简称当前块)中各子块的运动信息以及进行运动补偿。如图9所示,该方法包括但不限于以下步骤:
[0355]
步骤601、解析码流,确定当前解码块的帧间预测模式。
[0356]
具体的,解码端的视频解码器200可解析从编码端传输过来的码流中的语法元素,获得用于指示帧间预测模式的指示信息,从而根据所述指示信息确定当前块的帧间预测模式。
[0357]
若确定当前块的帧间预测模式为基于仿射变换模型的amvp模式,则后续执行步骤602a-步骤606a。
[0358]
若确定当前块的帧间预测模式为基于仿射变换模型的merge模式,则后续执行步骤602b-步骤605b。
[0359]
步骤602a、构造仿射变换模型的amvp模式的候选运动矢量列表。
[0360]
本发明一些具体实施例中,可利用第一种基于运动模型的运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到amvp模式对应的候选运动矢量列表。
[0361]
本发明又一些具体实施例中,也可分别利用第一种基于运动模型的运动矢量预测方法和构造的控制点运动矢量预测方法,当前块的控制点的候选运动矢量来分别加入到amvp模式对应的候选运动矢量列表。
[0362]
如果当前块采用4参数仿射变换模型,那么amvp模式的候选运动矢量列表可为二元组列表,二元组列表中包括一个或者多个用于构造4参数仿射变换模型的二元组。
[0363]
如果当前块采用6参数仿射变换模型,那么amvp模式的候选运动矢量列表可为三元组列表,三元组列表中包括一个或者多个用于构造6参数仿射变换模型的三元组。
[0364]
如果当前块采用8参数双线性模型,那么amvp模式的候选运动矢量列表可为四元组列表,四元组列表中包括一个或者多个用于构造8参数双线性模型的四元组。
[0365]
在可能的应用场景中,可将候选运动矢量二元组/三元组/四元组列表根据特定的规则进行剪枝和排序,并可将其截断或填充至特定的个数。
[0366]
对于第一种基于运动模型的运动矢量预测方法,例如以图10为例,可按照图10中a1
→
b1
→
b0
→
a0
→
b2的顺序遍历当前块周围的相邻位置块,到相邻位置块所在的仿射解码块(如图10中a1所在的仿射解码块),利用仿射解码块的控制点构造该仿射解码块的仿射变换模型,进而利用仿射解码块的仿射变换模型推导得到当前块的控制点的候选运动矢量(如候选运动矢量二元组/三元组/四元组),加入到amvp模式对应的候选运动矢量列表。需要说明的是,其他查顺序也可以适用于本发明实施例,在此不做赘述。
[0367]
需要说明的是,当相邻位置块有多个,即与当前块相邻的仿射解码块有多个时,在一种可能实施例中,对于编码端和解码端,都可以先利用与当前块模型参数个数相同的仿射解码块得到当前块的控制点的候选运动矢量,加入到amvp模式对应的候选运动矢量列表。然后,再利用与当前块模型参数个数不同的仿射解码块得到当前块的控制点的候选运动矢量,加入到amvp模式对应的候选运动矢量列表。这样,通过与当前块模型参数个数相同的仿射解码块所得到当前块的控制点的候选运动矢量将会处于列表中的前面位置,这样设计的好处是有利于减少码流中传输的比特数。
[0368]
例如以图10为例,假设当前解码块参数模型是4参数仿射变换模型,遍历当前块周围的相邻位置块后,确定b1所在的仿射解码块采用的是4参数仿射变换模型,而a1所在的仿射解码块采用的是6参数仿射变换模型。那么,可先利用b1所在的仿射解码块推导当前块的2个控制点的运动矢量并加入到列表,再利用a1所在的仿射解码块推导当前块的2个控制点的运动矢量并加入到列表。
[0369]
又假设当前解码块参数模型是6参数仿射变换模型,遍历当前块周围的相邻位置块后,确定a1所在的仿射解码块采用的是6参数仿射变换模型,而b1所在的仿射解码块采用的是4参数仿射变换模型。那么,可先利用a1所在的仿射解码块推导当前块的3个控制点的运动矢量并加入到列表,再利用b1所在的仿射解码块推导当前块的3个控制点的运动矢量并加入到列表。
[0370]
需要说明的是,本发明技术方案不局限于上述例子,采用其他相邻位置块、运动模型、查顺序也可以适用于本发明,这里不再一一详述。
[0371]
本步骤602a中,不限定不同块采用的仿射变换模型,也就是当前块采用的仿射变换模型的参数个数可以与仿射解码块不同,也可以与仿射解码块相同。一种实施例中,当前块采用的仿射变换模型可以是通过解析码流确定的,即这种情况下码流中包括当前块的仿射变换模型的指示信息;一种实施例中,当前块所采用的仿射变换模型可以是预先配置的;一种实施例中,当前块采用的仿射变换模型可以是根据当前块的实际运动情况或实际需要而从多种仿射变换模型中选择出来的。
[0372]
关于利用构造的控制点运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容已在前文“4)”中做了详细描述,为了说明书的简洁,这里也不再赘述。
[0373]
关于利用第一种基于运动模型的运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容已在前文“5)”中做了详细描述,为了说明书的简洁,这里也不再赘述。
[0374]
需要说明的是,在利用第一种基于运动模型的运动矢量预测方法的一些实施例中,在解码端利用推导当前块的控制点的候选运动矢量的过程中,可能需要获取仿射解码块的仿射变换模型的标志信息(flag),该flag预先存储在解码端本地,该flag用于指示该仿射解码块的进行自身子块的预测时实际采用的仿射变换模型。
[0375]
举例来说,一应用场景中,当解码端通过识别仿射解码块的flag,确定仿射解码块实际采用的仿射变换模型与当前块采用的仿射变换模型的模型参数个数不同(或者相同)时,才触发解码端利用仿射解码块实际采用的仿射变换模型推导当前块的控制点的候选运动矢量。
[0376]
比如,当前块采用4参数仿射变换模型时,如果解码端识别仿射解码块的flag,确定仿射解码块实际采用的仿射变换模型与当前块采用的仿射变换模型的模型参数个数不同时,例如该仿射解码块采用6参数仿射变换模型,那么,解码端获取该仿射解码块3个控制点的运动矢量:左上顶点(x4,y4)的运动矢量(vx4,vy4)、右上顶点(x5,y5)的运动矢量(vx5,vy5)、左下顶点(x6,y6)的运动矢量(vx6,vy6)。利用仿射解码块3个控制点组成的4参数仿射变换模型,按照6参数仿射变换模型公式(27)、(28)分别推导得到当前块左上顶点、右上顶点控制点的候选运动矢量。
[0377]
又比如,当前块采用4参数仿射变换模型时,如果解码端识别仿射解码块的flag,确定仿射解码块实际采用的仿射变换模型与当前块采用的仿射变换模型的模型参数个数相同时,例如该仿射解码块也采用4参数仿射变换模型,那么,解码端获取该仿射解码块2个控制点的运动矢量:左上控制点(x4,y4)的运动矢量值(vx4,vy4)和右上控制点(x5,y5)的运动矢量值(vx5,vy5)。利用仿射解码块2个控制点组成的4参数仿射变换模型,按照4参数仿射变换模型公式(32)、(33)分别推导得到当前块左上顶点、右上顶点控制点的候选运动矢量。
[0378]
需要说明的是,在利用第一种基于运动模型的运动矢量预测方法的又一些实施例中,在解码端利用推导当前块的控制点的候选运动矢量的过程中,也可以不需要仿射解码块的仿射变换模型的flag。
[0379]
举例来说,一应用场景中,解码端确定当前块采用的仿射变换模型后,解码端获取仿射解码块特定数量(该特定数量与当前块的控制点的数量相同,或者不同)的控制点,利用仿射解码块特定数量的控制点组成仿射变换模型,再利用该仿射变换模型推导当前块的控制点的候选运动矢量。
[0380]
例如,当前块采用4参数仿射变换模型时,解码端不用判断仿射解码块实际采用的仿射变换模型(仿射解码块实际采用的仿射变换模型可能是4参数或6参数或8参数的仿射变换模型),而直接获取该仿射解码块2个控制点的运动矢量:左上控制点(x4,y4)的运动矢量值(vx4,vy4)和右上控制点(x5,y5)的运动矢量值(vx5,vy5)。利用仿射解码块2个控制点组成的4参数仿射模型,按照4参数仿射模型公式(32)、(33)分别推导得到当前块左上顶点、右上顶点控制点的运动矢量。
[0381]
需要说明的是,本发明技术方案不局限于上述例子,采用其他控制点、运动模型、候选位置、查顺序也可以适用于本发明,这里不再一一详述。
[0382]
步骤603a、根据索引值,确定控制点的最优的运动矢量预测值。
[0383]
具体的,通过解析码流获得候选运动矢量列表的索引值,根据该索引值从上述步骤602a构建的候选运动矢量列表中确定最优的控制点运动矢量预测值。
[0384]
例如,若当前块采用的仿射运动模型是4参数仿射运动模型,则解析获得索引值,根据索引值从候选运动矢量二元组列表中确定2个控制点的最优运动矢量预测值。
[0385]
又例如,若当前块采用的仿射运动模型是6参数仿射运动模型,则解析获得索引
值,根据索引值从候选运动矢量三元组列表中确定3个控制点的最优运动矢量预测值。
[0386]
又例如,若当前块采用的仿射运动模型是8参数双线性模型,则解析获得索引值,根据索引值从候选运动矢量四元组列表中确定4个控制点的最优运动矢量预测值。
[0387]
步骤604a、根据运动矢量差值,确定控制点的实际运动矢量。
[0388]
具体的,通过解析码流获得控制点的运动矢量差值,然后根据控制点的运动矢量差值以及上述步骤603a所确定的最优的控制点运动矢量预测值,得到控制点的运动矢量。
[0389]
例如,当前块采用的仿射运动模型是4参数仿射运动模型,从码流中解码得到当前块的2个控制点的运动矢量差值,示例性的,可从码流中解码得到左上位置控制点和右上位置控制点的运动矢量差值。然后分别使用各控制点的运动矢量差值和运动矢量预测值相加,获得控制点的实际运动矢量值,即得到当前块左上位置控制点和右上位置控制点的运动矢量值。
[0390]
又例如,当前块仿射运动模型是6参数仿射运动模型,从码流中解码得到当前块的3个控制点的运动矢量差,示例性的,从码流中解码得到左上控制点、右上控制点和左下控制点的运动矢量差值。然后,分别使用各控制点的运动矢量差值和运动矢量预测值相加,获得控制点的实际运动矢量值,即得到当前块左上控制点、右上控制点和左下控制点的运动矢量值。
[0391]
需要说明的是,本发明实施例还可以是其他仿射运动模型和其他控制点位置,在此不做赘述。
[0392]
步骤605a、根据当前块采用的仿射变换模型获得当前块的每个子块的运动矢量值。
[0393]
对于当前块pxq的每一个子块mxn(一个子块也可以等效为一个运动补偿单元,子块pxq的长或宽至少一个小于当前块的长或宽),可采用运动补偿单元中预设位置像素点的运动信息来表示该运动补偿单元内所有像素点的运动信息。假设运动补偿单元的尺寸为mxn,则预设位置像素点可以为运动补偿单元中心点(m/2,n/2)、左上像素点(0,0),右上像素点(m-1,0),或其他位置的像素点。
[0394]
下面以运动补偿单元中心点为例说明,参见图11a和图11b。
[0395]
图11a示例性示出了一种当前块以及当前块的运动补偿单元,图示中每个小方框表示一个运动补偿单元,图示中每个运动补偿单元规格为4x4,图示中每个运动补偿单元中的灰点即表示该运动补偿单元的中心点。图11a中v0表示当前块的左上控制点的运动矢量,v1表示当前块的右上控制点的运动矢量,v2表示当前块的左下控制点的运动矢量。
[0396]
图11b示例性示出了又一种当前块以及当前块的运动补偿单元,图示中每个小方框表示一个运动补偿单元,图示中每个运动补偿单元规格为8x8,图示中每个运动补偿单元中的灰点即表示该运动补偿单元的中心点。图11b中v0表示当前块的左上控制点的运动矢量,v1表示当前块的右上控制点的运动矢量,v2表示当前块的左下控制点的运动矢量。
[0397]
运动补偿单元中心点相对于当前块左上顶点像素的坐标可使用如下公式(38)计算得到:
[0398]
[0399]
其中i为水平方向第i个运动补偿单元(从左到右),j为竖直方向第j个运动补偿单元(从上到下),(x
(i,j)
,y
(i,j)
)表示第(i,j)个运动补偿单元中心点相对于当前仿射解码块左上控制点像素的坐标。
[0400]
若当前仿射解码块采用的仿射运动模型为6参数仿射运动模型,将(x
(i,j)
,y
(i,j)
)代入前述6参数仿射运动模型公式(37),获得每个运动补偿单元中心点的运动矢量,作为该运动补偿单元内所有像素点的运动矢量(vx
(i,j)
,vy
(i,j)
):
[0401][0402]
若当前仿射解码块采用的仿射运动模型为4仿射运动模型,将(x
(i,j)
,y
(i,j)
)代入4参数仿射运动模型公式(39),获得每个运动补偿单元中心点的运动矢量,作为该运动补偿单元内所有像素点的运动矢量(vx
(i,j)
,vy
(i,j)
):
[0403][0404]
步骤606a、针对每个子块根据确定的子块的运动矢量值进行运动补偿得到该子块的像素预测值。
[0405]
步骤602b、构造仿射变换模型的merge模式的候选运动矢量列表。
[0406]
本发明一些具体实施例中,也可利用第一种基于运动模型的运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到merge模式对应的候选运动矢量列表。
[0407]
本发明又一些具体实施例中,也可分别利用第一种基于运动模型的运动矢量预测方法和构造的控制点运动矢量预测方法,当前块的控制点的候选运动矢量来分别加入到merge模式对应的候选运动矢量列表。
[0408]
同理,对于merge模式对应的候选运动矢量列表,如果当前块采用4参数仿射变换模型,那么候选运动矢量列表可为二元组列表,二元组列表中包括一个或者多个用于构造4参数仿射变换模型的二元组。
[0409]
如果当前块采用6参数仿射变换模型,那么候选运动矢量列表可为三元组列表,三元组列表中包括一个或者多个用于构造6参数仿射变换模型的三元组。
[0410]
如果当前块采用8参数双线性模型,那么候选运动矢量列表可为四元组列表,四元组列表中包括一个或者多个用于构造8参数双线性模型的四元组。
[0411]
在可能的应用场景中,可将候选运动矢量二元组/三元组/四元组列表根据特定的规则进行剪枝和排序,并可将其截断或填充至特定的个数。
[0412]
同理,对于第一种基于运动模型的运动矢量预测方法,例如以图10为例,可按照图10中a1
→
b1
→
b0
→
a0
→
b2的顺序遍历当前块周围的相邻位置块,到相邻位置块所在的仿射解码块,利用仿射解码块的控制点构造该仿射解码块的仿射变换模型,进而利用仿射解码块的仿射变换模型推导得到当前块的控制点的候选运动矢量(如候选运动矢量二元组/三元组/四元组),加入到merge模式对应的候选运动矢量列表。需要说明的是,其他查顺序也可以适用于本发明实施例,在此不做赘述。
[0413]
具体的,在上述遍历过程中,如果候选运动矢量列表为空,则将该控制点的候选运动信息加入候选列表;否则,继续依次遍历候选运动矢量列表中的运动信息,检查候选运动
矢量列表中是否存在与该控制点的候选运动信息相同的运动信息。如果候选运动矢量列表中不存在与该控制点的候选运动信息相同的运动信息,则将该控制点的候选运动信息加入候选运动矢量列表。
[0414]
其中,判断两个候选运动信息是否相同需要依次判断它们的前后向参考帧、以及各个前后向运动矢量的水平和竖直分量是否相同。只有当以上所有元素都不相同时才认为这两个运动信息是不同的。
[0415]
如果候选运动矢量列表中的运动信息个数达到最大列表长度,则候选列表构建完毕,否则遍历下一个相邻位置块。
[0416]
关于利用构造的控制点运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容已在前文“4)”中做了详细描述,为了说明书的简洁,这里也不再赘述。
[0417]
关于利用第一种基于运动模型的运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容已在前文“5)”中做了详细描述,为了说明书的简洁,这里也不再赘述。
[0418]
需要说明的是,在利用第一种基于运动模型的运动矢量预测方法的一些实施例中,对于仿射变换模型的merge模式,图像中不同的块也可不区分4参数、6参数、8参数等仿射变换模型,即不同的块可采用同样参数个数的仿射变换模型。
[0419]
举例来说,图像中不同的块皆采用6参数仿射变换模型。以图10中a1为例,获取a1所在的仿射解码块3个控制点的运动矢量:左上控制点(x4,y4)的运动矢量值(vx4,vy4)和右上控制点(x5,y5)的运动矢量值(vx5,vy5)和左下顶点(x6,y6)的运动矢量(vx6,vy6)。然后,利用相邻仿射解码块3个控制点组成的6参数仿射模型,按照公式(34)、(35)、(36)分别推导得到当前块左上顶点、右上顶点、左下顶点控制点的运动矢量。
[0420]
需要说明的是,本发明技术方案不局限于上述例子,采用其他控制点、运动模型、候选位置、查顺序也可以适用于本发明,这里不再一一详述。
[0421]
步骤603b、根据索引值,确定控制点的运动矢量值。
[0422]
具体的,通过解析码流获得候选运动矢量列表的索引值,根据该索引值从上述步骤602b构建的候选运动矢量列表中确定控制点的实际运动矢量。
[0423]
例如,若当前块采用的仿射运动模型是4参数仿射运动模型,则解析获得索引值,根据索引值从候选运动矢量二元组列表中确定2个控制点的运动矢量值。
[0424]
又例如,若当前块采用的仿射运动模型是6参数仿射运动模型,则解析获得索引值,根据索引值从候选运动矢量三元组列表中确定3个控制点的运动矢量值。
[0425]
又例如,若当前块采用的仿射运动模型是8参数双线性模型,则解析获得索引值,根据索引值从候选运动矢量四元组列表中确定4个控制点的运动矢量值。
[0426]
步骤604b、根据当前块采用的仿射变换模型获得每个子块的运动矢量值。本步骤的详细实施可参考上述步骤605a的描述,为了说明书的简洁,这里不再赘述。
[0427]
步骤605b、每个子块根据相应的运动矢量值进行运动补偿得到该子块的像素预测值。
[0428]
可以看到,本发明实施例中,解码端在对当前块的预测过程中采用了第一种基于运动模型的运动矢量预测方法,能够实现在当前块的解析阶段(如构造amvp模式或merge模式的候选运动矢量列表的阶段),利用相邻块的仿射变换模型来构建针对当前块自身的仿射变换模型,且两者的仿射变换模型可以不同,也可以相同。由于当前块自身的仿射变换模
型更加符合当前块实际运动情况/实际需求,所以实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
[0429]
参见图12,基于第二种基于运动模型的运动矢量预测方法的设计方案,本发明实施例提供了又一种运动矢量预测方法,该方法可由视频解码器200执行,具体的,可以由视频解码器200的帧间预测器210来执行。视频解码器200可根据具有多个视频帧的视频数据流,执行包括如下步骤的部分或全部来预测当前视频帧的当前解码块(简称当前块)中各子块的运动信息以及进行运动补偿。如图12所示,该方法包括但不限于以下步骤:
[0430]
步骤701、解析码流,确定当前解码块的帧间预测模式。
[0431]
具体的,解码端的视频解码器200可解析从编码端传输过来的码流中的语法元素,获得用于指示帧间预测模式的指示信息,从而根据所述指示信息确定当前块的帧间预测模式。
[0432]
若确定当前块的帧间预测模式为基于仿射变换模型的amvp模式,则后续执行步骤702a-步骤706a。
[0433]
若确定当前块的帧间预测模式为基于仿射变换模型的merge模式,则后续执行步骤702b-步骤705b。
[0434]
步骤702a、构造仿射变换模型的amvp模式的候选运动矢量列表。
[0435]
本发明实施例中,对图像序列中的图像的不同块采用的仿射变换模型的不限定,即不同块可以采用相同或者不同的仿射变换模型。
[0436]
在一具体实施例中,可利用继承的控制点运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到amvp模式对应的候选运动矢量列表。
[0437]
在一具体实施例中,可利用第一种基于运动模型的运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到amvp模式对应的候选运动矢量列表。
[0438]
在一具体实施例中,构造的控制点运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到amvp模式对应的候选运动矢量列表。
[0439]
在又一些具体实施例中,也可分别利用继承的控制点运动矢量预测方法、第二种基于运动模型的运动矢量预测方法或构造的控制点运动矢量预测方法中的任意两种,得到当前块的控制点的候选运动矢量来分别加入到amvp模式对应的候选运动矢量列表。
[0440]
在又一些具体实施例中,也可分别利用继承的控制点运动矢量预测方法、第二种基于运动模型的运动矢量预测方法和构造的控制点运动矢量预测方法,得到当前块的控制点的候选运动矢量来分别加入到amvp模式对应的候选运动矢量列表。
[0441]
关于利用继承的控制点运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容可参考前文“3)”中做了详细描述,为了说明书的简洁,这里也不再赘述。
[0442]
关于利用构造的控制点运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容可参考前文“4)”中做了详细描述,为了说明书的简洁,这里也不再赘述。
[0443]
关于利用第一种基于运动模型的运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容可参考前文“5)”中做了详细描述,且还可参考前述图9实施例步骤602a中的相关描述,为了说明书的简洁,这里也不再赘述。
[0444]
举例来说,如果当前块采用4参数仿射变换模型,那么amvp模式的候选运动矢量列表可为二元组列表,二元组列表中包括一个或者多个用于构造4参数仿射变换模型的二元
组。
[0445]
如果当前块采用6参数仿射变换模型,那么amvp模式的候选运动矢量列表可为三元组列表,三元组列表中包括一个或者多个用于构造6参数仿射变换模型的三元组。
[0446]
如果当前块采用8参数双线性模型,那么amvp模式的候选运动矢量列表可为四元组列表,四元组列表中包括一个或者多个用于构造8参数双线性模型的四元组。
[0447]
在可能的应用场景中,还可将候选运动矢量二元组/三元组/四元组列表根据特定的规则进行剪枝和排序,并可将其截断或填充至特定的个数。
[0448]
步骤703a、根据索引值,确定控制点的最优的运动矢量预测值。具体内容可参考前述图9实施例步骤603a中的相关描述,这里也不再赘述。
[0449]
步骤704a、根据运动矢量差值,确定当前块的3个控制点的运动矢量值。
[0450]
具体的,通过解析码流获得控制点的运动矢量差值,然后根据控制点的运动矢量差值以及上述步骤703a所确定的最优的控制点运动矢量预测值,获得控制点的运动矢量。然后,基于所获得的控制点的运动矢量,确定出当前块的3个控制点的运动矢量值。
[0451]
举例来说,解码端在步骤702a所构造的候选运动矢量列表为二元组列表,那么,在步骤703a解析索引值,根据索引值从候选运动矢量列表中确定2个控制点(即二元组)的运动矢量预测值(mvp)。在步骤704a从码流中解码得到当前块2个控制点的运动矢量差值(mvd),分别根据2个控制点的mvp和mvd获得所述2个控制点的运动矢量值(mv),所述2个控制点的运动矢量值例如为:当前块左上控制点(x0,y0)的运动矢量值(vx0,vy0),和,当前块右上控制点(x1,y1)的运动矢量值(vx1,vy1)。然后,根据当前块2个控制点的运动矢量值,组成4参数仿射变换模型,采用该4参数仿射变换模型公式(40)通过获得第3个控制点的运动矢量值,所述第3个控制点的运动矢量值例如为当前块左下顶点(x2,y2)的运动矢量(vx2,vy2)。这样,就确定出当前块的左上顶点、右上顶点、左下顶点这3个控制点的运动矢量值。
[0452]
又举例来说,解码端在步骤702a所构造的候选运动矢量列表为三元组列表,那么,在步骤703a解析索引值,根据索引值从候选运动矢量列表中确定3个控制点(即三元组)的运动矢量预测值(mvp)。在步骤704a从码流中解码得到当前块3个控制点的运动矢量差值(mvd),分别根据3个控制点的mvp和mvd获得所述3个控制点的运动矢量值(mv),所述3个控制点的运动矢量值例如为:当前块左上控制点(x0,y0)的运动矢量值(vx0,vy0)、当前块右上控制点(x1,y1)的运动矢量值(vx1,vy1),以及当前块左下顶点(x2,y2)的运动矢量(vx2,vy2)。这样,就确定出当前块的左上顶点、右上顶点、左下顶点这3个控制点的运动矢量值。
[0453]
又举例来说,解码端在步骤702a所构造的候选运动矢量列表为四元组列表,那么,在步骤703a解析索引值,根据索引值从候选运动矢量列表中确定4个控制点(即四元组)的运动矢量预测值(mvp)。在步骤704a从码流中解码得到当前块4个控制点的运动矢量差值(mvd),分别根据4个控制点的mvp和mvd获得所述4个控制点的运动矢量值(mv),所述4个控制点的运动矢量值例如为:当前块左上控制点(x0,y0)的运动矢量值(vx0,vy0)、当前块右上控制点(x1,y1)的运动矢量值(vx1,vy1)、当前块左下顶点(x2,y2)的运动矢量(vx2,vy2),以及当前块右下顶点(x3,vy3)的运动矢量(vx3,vy3)。然后解码端可只采用当前块的左上顶点、右上顶点、左下顶点这3个控制点的运动矢量值。
[0454]
需要说明的是,本发明技术方案不局限于上述例子,采用其他控制点、运动模型也
可以适用于本发明,这里不再一一详述。
[0455]
步骤705a、根据当前块3个控制点,采用6参数仿射变换模型获得每个子块的运动矢量值。
[0456]
具体的,由于通过步骤704a已经确定了当前块的3个控制点的运动矢量值,那么就可以根据当前块3个控制点的运动矢量值,组成6参数仿射变换模型,采用该6参数仿射变换模型获得每个子块的运动矢量值。
[0457]
举例来说,所述3个控制点的运动矢量值例如为:当前块左上控制点(x0,y0)的运动矢量值(vx0,vy0)、当前块右上控制点(x1,y1)的运动矢量值(vx1,vy1),以及当前块左下顶点(x2,y2)的运动矢量(vx2,vy2)。那么,利用当前块的左上控制点(x0,y0)的运动矢量(vx0,vy0、右上控制点(x1,y1)的运动矢量(vx1,vy1)和左下顶点(x2,y2)的运动矢量(vx2,vy2),获得当前块重建阶段的6参数仿射模型,该6参数仿射模型公式如前述公式(37)所示。
[0458]
那么,将当前块中的各个子块(或各个运动补偿单元)的预设位置像素点相对于当前块左上顶点(或其他参考点)的坐标(x
(i,j)
,y
(i,j)
)代入到上述公式(37),即可获得每个子块的运动矢量值。其中,预设位置像素点可以是各个子块(或各个运动补偿单元)的中心点,各个子块(或各个运动补偿单元)的中心点相对于当前块左上顶点像素的坐标(x
(i,j)
,y
(i,j)
)可使用公式(38)计算得到。具体内容还可参考图11a实施例和图11b实施例的相关描述,这里不再赘述。
[0459]
步骤706a、每个子块根据相应的运动矢量值进行运动补偿得到该子块的像素预测值。
[0460]
步骤702b、构造仿射变换的merge模式的候选运动矢量列表。
[0461]
同理,本发明实施例中,对图像序列中的图像的不同块采用的仿射变换模型的不限定,即不同块可以采用相同或者不同的仿射变换模型。
[0462]
在一具体实施例中,可利用继承的控制点运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到merge模式对应的候选运动矢量列表。
[0463]
在一具体实施例中,可利用第一种基于运动模型的运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到merge模式对应的候选运动矢量列表。
[0464]
在一具体实施例中,构造的控制点运动矢量预测方法,得到当前块的控制点的候选运动矢量来加入到merge模式对应的候选运动矢量列表。
[0465]
在又一些具体实施例中,也可分别利用继承的控制点运动矢量预测方法、第二种基于运动模型的运动矢量预测方法或构造的控制点运动矢量预测方法中的任意两种,得到当前块的控制点的候选运动矢量来分别加入到merge模式对应的候选运动矢量列表。
[0466]
在又一些具体实施例中,也可分别利用继承的控制点运动矢量预测方法、第二种基于运动模型的运动矢量预测方法和构造的控制点运动矢量预测方法,得到当前块的控制点的候选运动矢量来分别加入到merge模式对应的候选运动矢量列表。
[0467]
关于利用继承的控制点运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容可参考前文“3)”中做了详细描述,为了说明书的简洁,这里也不再赘述。
[0468]
关于利用构造的控制点运动矢量预测方法获得当前块的控制点的候选运动矢量的一些内容可参考前文“4)”中做了详细描述,为了说明书的简洁,这里也不再赘述。
[0469]
关于利用第一种基于运动模型的运动矢量预测方法获得当前块的控制点的候选
运动矢量的一些内容可参考前文“5)”中做了详细描述,且还可参考前述图9实施例步骤60ba中的相关描述,为了说明书的简洁,这里也不再赘述。
[0470]
需要说明的是,在又一些实施例中,对于仿射变换模型的merge模式,解码端所建立的候选运动矢量列表可能是候选运动矢量二元组/三元组/四元组列表。此外,还可将候选运动矢量二元组/三元组/四元组列表根据特定的规则进行剪枝和排序,并可将其截断或填充至特定的个数。
[0471]
需要说明的是,在又一些实施例中,对于仿射变换模型的merge模式,图像中不同的块也可不区分4参数、6参数、8参数等仿射变换模型,即不同的块可采用同样参数个数的仿射变换模型。
[0472]
步骤703b、根据索引值,获得控制点的运动矢量值。具体的,通过解析码流获得候选运动矢量列表的索引值,根据该索引值从上述步骤702b构建的候选运动矢量列表中确定控制点的实际运动矢量。本步骤具体实施方式还可参考图9实施例步骤603b的相关描述,这里不再赘述。
[0473]
步骤704b、根据所获得的控制点的运动矢量,确定当前块的3个控制点的运动矢量值。
[0474]
举例来说,解码端在步骤703b获得2个控制点(即二元组)的运动矢量值,所述2个控制点的运动矢量值例如为:当前块左上控制点(x0,y0)的运动矢量值(vx0,vy0),和,当前块右上控制点(x1,y1)的运动矢量值(vx1,vy1)。然后,根据当前块2个控制点的运动矢量值,组成4参数仿射变换模型,采用该4参数仿射变换模型公式(31)通过获得第3个控制点的运动矢量值,所述第3个控制点的运动矢量值例如为当前块左下顶点(x2,y2)的运动矢量(vx2,vy2)。这样,就确定出当前块的左上顶点、右上顶点、左下顶点这3个控制点的运动矢量值。
[0475]
又举例来说,解码端在步骤703b获得3个控制点(即三元组)的运动矢量值,所述3个控制点的运动矢量值例如为:当前块左上控制点(x0,y0)的运动矢量值(vx0,vy0)、当前块右上控制点(x1,y1)的运动矢量值(vx1,vy1),以及当前块左下顶点(x2,y2)的运动矢量(vx2,vy2)。这样,就确定出当前块的左上顶点、右上顶点、左下顶点这3个控制点的运动矢量值。
[0476]
又举例来说,解码端在步骤703b获得4个控制点(即四元组)的运动矢量值,所述4个控制点的运动矢量值例如为:当前块左上控制点(x0,y0)的运动矢量值(vx0,vy0)、当前块右上控制点(x1,y1)的运动矢量值(vx1,vy1)、当前块左下顶点(x2,y2)的运动矢量(vx2,vy2),以及当前块右下顶点(x3,vy3)的运动矢量(vx3,vy3)。然后解码端可只采用当前块的左上顶点、右上顶点、左下顶点这3个控制点的运动矢量值。
[0477]
需要说明的是,本发明技术方案不局限于上述例子,采用其他控制点、运动模型也可以适用于本发明,这里不再一一详述。
[0478]
步骤705b、根据当前块3个控制点,采用6参数仿射变换模型获得每个子块的运动矢量值。本步骤具体实施方式可参考前述步骤705a的相关描述,这里不再赘述。
[0479]
步骤706b、每个子块根据相应的运动矢量值进行运动补偿得到该子块的像素预测值。
[0480]
可以看到,本发明实施例中,解码端在对当前块的预测过程中采用了第二种基于
运动模型的运动矢量预测方法,能够实现在解析阶段当前块采用的仿射变换模型的参数个数可以和相邻块不同或相同,在当前块的重建阶段(包括对子块的运动矢量进行预测的阶段),统一采用6参数仿射变换模型来对当前块进行预测。由于本方案在重建阶段所构建的6参数仿射变换模型可描述图像块的平移、缩放、旋转等等仿射变换,并且在模型复杂度以及建模能力之间取得良好平衡。所以,实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
[0481]
参见图13,图13示出了本发明实施例又一种运动矢量预测方法的流程图,该方法可由视频编码器100执行,具体的,可以由视频编码器100的帧间预测器110来执行。视频编码器100可根据具有多个视频帧的视频数据流,执行包括如下步骤的部分或全部来对当前视频帧的当前编码块(简称当前块)进行编码。如图13所示,该方法包括但不限于以下步骤:
[0482]
801、确定当前编码块的帧间预测模式。
[0483]
在一具体实现中,对于编码端的帧间预测中,也可预设多种帧间预测模式,所述多种帧内预测模式中例如包括上文所描述的基于仿射运动模型的amvp模式以及基于仿射运动模型的merge模式,编码端遍历所述多种帧间预测模式,从而确定对当前块的预测最优的帧间预测模式。
[0484]
在又一具体实现中,对于编码端的帧间预测中,也可只预设一种帧间预测模式,即在这种情况下编码端直接确定当前采用的是默认的帧间预测模式,该默认的帧间预测模式为基于仿射运动模型的amvp模式或者基于仿射运动模型的merge模式。
[0485]
本发明实施例中,如果确定当前块的帧间预测模式为基于仿射运动模型的amvp模式,则后续执行步骤802a-步骤804a。
[0486]
本发明实施例中,如果确定当前块的帧间预测模式为基于仿射运动模型的amvp模式,则后续执行步骤802b-步骤804b。
[0487]
802a、构造仿射变换的amvp模式的候选运动矢量列表。
[0488]
一些实施例中,编码端采用了第一种基于运动模型的运动矢量预测方法的设计方案,那么,本步骤的具体实施可参考前述图9实施例步骤602a的描述,这里不再赘述。
[0489]
又一些实施例中,编码端采用了第二种基于运动模型的运动矢量预测方法的设计方案,那么,本步骤的具体实施可参考前述图12实施例步骤702a的描述,这里不再赘述。
[0490]
803a、根据率失真代价,确定控制点的最优的运动矢量预测值。
[0491]
在一些实例中,编码端可利用候选运动矢量列表中的控制点运动矢量预测值(如候选运动矢量二元组/三元组/四元组),通过公式(3)或(5)或(7)获得当前块中每个子运动补偿单元的运动矢量,进而得到每个子运动补偿单元的运动矢量所指向的参考帧中对应位置的像素值,作为其预测值,进行采用仿射运动模型的运动补偿。计算当前编码块中每个像素点的原始值和预测值之间差值的平均值,选择最小平均值对应的控制点运动矢量预测值为最优的控制点运动矢量预测值,并作为当前块2个或3个或4个控制点的运动矢量预测值。
[0492]
804a、将索引值、控制点的运动矢量差值以及帧间预测模式的指示信息编入码流。
[0493]
在一些实例中,编码端可使用最优的控制点运动矢量预测值作为搜索起始点在一定搜索范围内进行运动搜索获得控制点运动矢量(control point motion vectors,cpmv),并计算控制点运动矢量与控制点运动矢量预测值之间的差值(control point motion vectors differences,cpmvd),然后,编码端将表示该控制点运动矢量预测值在候
选运动矢量列表中位置的索引值以及cpmvd编码入码流,还可将帧间预测模式的指示信息编入码流,以便于后续传递到解码端。
[0494]
在又一可能实例中,编码端可将表示当前块采用的仿射变换模型(参数个数)的指示信息编入码流,后续传递到解码端,以便于解码端根据该指示信息确定当前块所采用的仿射变换模型。
[0495]
802b、构造仿射变换的merge模式的候选运动矢量列表。
[0496]
一些实施例中,编码端采用了第一种基于运动模型的运动矢量预测方法的设计方案,那么,本步骤的具体实施可参考前述图9实施例步骤602b的描述,这里不再赘述。
[0497]
又一些实施例中,编码端采用了第二种基于运动模型的运动矢量预测方法的设计方案,那么,本步骤的具体实施可参考前述图12实施例步骤702b的描述,这里不再赘述。
[0498]
803b、确定控制点的最优的运动矢量预测值。
[0499]
在一实例中,编码端可利用候选运动矢量列表中的控制点运动矢量(如候选运动矢量二元组/三元组/四元组),通过公式(3)或(5)或(7)获得当前编码块中每个子运动补偿单元的运动矢量,进而得到每个子运动补偿单元的运动矢量所指向的参考帧中位置的像素值,作为其预测值,进行仿射运动补偿。计算当前编码块中每个像素点的原始值和预测值之间差值的平均值,选择差值的平均值最小对应的控制点运动矢量为最优的控制点运动矢量,该最优的控制点运动矢量即作为当前编码块2个或3个或4个控制点的运动矢量。
[0500]
804b、将索引值以及帧间预测模式的指示信息编入码流。
[0501]
在一实例中,编码端可将表示该控制点运动矢量在候选列表中位置的索引值编码入码流,帧间预测模式的指示信息编入码流,以便于后续传递到解码端。
[0502]
在又一可能实例中,编码端可将表示当前块采用的仿射变换模型(参数个数)的指示信息编入码流,后续传递到解码端,以便于解码端根据该指示信息确定当前块所采用的仿射变换模型。
[0503]
需要说明的是,上述实施例仅仅描述了编码端实现编码和码流发送的过程,根据前文的描述,本领域技术人员理解编码端还可以在其他环节实施本发明实施例所描述的其他方法。例如在编码端在对当前块的预测中,对当前块的重构过程的具体实现可参考前文在解码端描述的相关方法(如图9或图12实施例),在这里不再赘述。
[0504]
可以看到,本发明一实施例中,编码端在对当前块的编码过程中,参考了第一种基于运动模型的运动矢量预测方法的设计方案进行实施,能够实现在当前块的解析阶段(如构造amvp模式或merge模式的候选运动矢量列表的阶段),利用相邻块的仿射变换模型来构建针对当前块自身的仿射变换模型,且两者的仿射变换模型可以不同,也可以相同。由于当前块自身的仿射变换模型更加符合当前块实际运动情况/实际需求,所以实施本方案能够提高对当前块进行编码的编码效率及准确性,满足用户需求。
[0505]
还可以看到,本发明一实施例中,编码端在对当前块的编码过程中,参考了第二种基于运动模型的运动矢量预测方法的设计方案进行实施,有利于使解码端在图像块的重建阶段统一采用6参数仿射变换模型来对图像块进行预测。所以,实施本方案能够提高对当前块进行预测的编码效率及准确性,满足用户需求。
[0506]
本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各
种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明实施例中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
[0507]
作为实例而非限制,此类计算机可读存储媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(dsl)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、dsl或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
[0508]
可通过例如一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
[0509]
本发明实施例的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(ic)或一组ic(例如,芯片组)。本发明实施例中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。
[0510]
以上所述,仅为本发明实施例示例性的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应该以权利要求的保护范围为准。
技术特征:
1.一种视频图像编码方法,其特征在于,所述方法包括:若当前块的相邻块的仿射变换模型采用2乘n参数的仿射变换模型,所述当前块的仿射变换模型采用2乘k参数的仿射变换模型,则根据所述相邻块采用的2乘n参数的仿射变换模型,获得当前块的k个控制点的候选运动矢量预测值;所述2乘n参数的仿射变换模型是基于所述相邻块的n个控制点的运动矢量而得到的,其中,n为2,k为3;所述相邻块为与所述当前块空间邻近的已编码图像块,所述当前块包括多个子块;构造控制点运动矢量预测值候选列表;其中,所述控制点运动矢量预测值候选列表包括所述当前块的k个控制点的候选运动矢量预测值;从所述控制点运动矢量预测值候选列表中确定所述k个控制点的目标候选运动矢量预测值;将与当前块相关的语法元素编码入码流中,以生成所述码流,其中所述语法元素包括指示所述k个控制点的目标候选运动矢量预测值在所述控制点运动矢量预测值候选列表中位置的索引值。2.根据权利要求1所述的方法,其特征在于,所述当前块的3个控制点的候选运动矢量预测值是根据所述当前块的相邻块采用的4参数的仿射变换模型而得到的;其中所述相邻块的n个控制点包括所述相邻块的左上控制点和右上控制点,所述当前块的k个控制点包括所述当前块的左上控制点、左下控制点和右上控制点。3.根据权利要求1或2所述的方法,其特征在于,所述当前块的3个控制点的候选运动矢量预测值包括所述当前块的左上控制点的运动矢量预测值、所述当前块的右上控制点的运动矢量预测值和所述当前块的左下控制点的运动矢量预测值。4.根据权利要求3所述的方法,其特征在于,所述当前块的3个控制点的候选运动矢量预测值是根据所述当前块的相邻块采用的4参数的仿射变换模型而得到,包括根据如下公式计算出所述当前块的3个控制点的候选运动矢量预测值:动矢量预测值:动矢量预测值:其中,vx0为所述当前块的左上控制点对应的运动矢量预测值的水平分量,vy0为所述当前块的左上控制点对应的运动矢量预测值的竖直分量;vx
10
为所述当前块的右上控制点对应的运动矢量预测值的水平分量,vy1为所述当前块的右上控制点对应的运动矢量预测值
的竖直分量;vx2为所述当前块的左下控制点对应的运动矢量预测值的水平分量,vy2为所述当前块的左下控制点对应的运动矢量预测值的竖直分量;vx4为所述相邻块的左上控制点对应的运动矢量的水平分量,vy4为所述相邻块的左上控制点对应的运动矢量的竖直分量;vx5为所述相邻块的右上控制点对应的运动矢量的水平分量,vy5为所述相邻块的右上控制点对应的运动矢量的竖直分量;x0为所述当前块的左上控制点横坐标,y0为所述当前块的左上控制点纵坐标;x1为所述当前块的右上控制点横坐标,y1为所述当前块的右上控制点纵坐标;x2为所述当前块的左下控制点横坐标,y2为所述当前块的左下控制点纵坐标;x4为所述相邻块的左上控制点横坐标,y4为所述当前块的左上控制点纵坐标;x5为所述相邻块的右上控制点横坐标。5.根据权利要求3所述的方法,其特征在于,所述方法用于高级运动矢量预测amvp模式,或者所述控制点运动矢量预测值候选列表是所述amvp模式对应的控制点运动矢量预测值候选列表,或者,所述目标候选运动矢量预测值的索引值是所述amvp模式对应的控制点运动矢量预测值候选列表的索引值。6.一种用于对视频数据进行编码的设备,其特征在于,所述设备包括:一个或多个处理器;计算机可读存储介质,耦合到所述处理器并存储由所述处理器执行的程序指令,其中所述程序指令在由所述处理器执行时,使得所述设备执行根据权利要求1至5任一项所述的方法。7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序指令,其中所述程序指令由设备或一个或多个处理器执行时,使得所述设备执行根据权利要求1至5任一项所述的方法。8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有由一个或多个处理器执行的如权利要求1至5中的任一项所述方法得到的视频码流。9.一种存储视频数据的经编码的码流的方法,其特征在于,所述方法包括:接收根据权利要求1至5任一项所述的方法生成的所述码流;以及,将所述码流存储到存储介质中。10.一种存储视频数据的经编码的码流的系统,其特征在于,包括:接收器,用于接收根据权利要求1至5任一项所述的方法生成的所述码流;以及,存储介质,用于存储所述码流。11.一种传输视频数据的经编码的码流的方法,其特征在于,所述方法包括:从存储介质中获取码流,所述码流是根据权利要求1至5任一项所述的方法生成的码流且存储在所述存储介质中;以及,发送所述码流。12.一种传输视频数据的经编码的码流的系统,其特征在于,所述系统包括:处理器,用于从存储介质中获取码流,所述码流是根据权利要求1至5任一项所述的方法生成的码流且存储在所述存储介质中;以及,发送器,用于发送所述码流。13.一种存储装置,所述存储装置存储有根据权利要求1至5任一项所述的方法生成的码流。
技术总结
本申请提供了视频图像编码方法,包括:若当前块的相邻块的仿射变换模型采用2乘N参数的仿射变换模型,当前块的仿射变换模型采用2乘K参数的仿射变换模型,则根据相邻块采用的2乘N参数的仿射变换模型,获得当前块的K个控制点的候选运动矢量预测值;2乘N参数的仿射变换模型是基于相邻块的N个控制点的运动矢量而得到的;相邻块为与当前块空间邻近的已编码图像块;构造控制点运动矢量预测值候选列表;从控制点运动矢量预测值候选列表中确定K个控制点的目标候选运动矢量预测值;将与当前块相关的语法元素编码入码流中,以生成码流,其中语法元素包括指示K个控制点的目标候选运动矢量预测值在控制点运动矢量预测值候选列表中位置的索引值。的索引值。的索引值。
技术研发人员:
陈焕浜 杨海涛 陈建乐 傅佳莉
受保护的技术使用者:
华为技术有限公司
技术研发日:
2018.11.22
技术公布日:
2023/3/3