历史运动矢量列表的使用方法、编解码器及存储装置与流程

文档序号:19150402发布日期:2019-11-16 00:01阅读:164来源:国知局
本申请涉及编解码
技术领域
:,特别是涉及历史运动矢量列表的使用方法、编解码器及存储装置。
背景技术
::因为视频图像数据量比较大,通常需要对视频像素数据进行压缩,从而降低视频的数据量。压缩后的数据称之为视频码流,视频码流通过有线或者无线网络传输至用户端,再进行解码观看,能够实现降低传输过程中的网络带宽和减少存储空间的目的。整个视频编码流程包括预测、变换、量化、编码等过程,其中预测分为帧内预测和帧间预测两部分。帧内预测用的是一个图像帧内的空域相关性对图像进行压缩,帧间预测用的是图像帧间的时域相关性来对图像进行压缩。目前对视频图像数据进行预测的过程,通常包括获取当前编码块的运动矢量(motionvector,mv)信息的过程,为了便于描述,下文中将mv信息简称为mv。通常是先构建待编码块的运动矢量信息候选列表,再基于运动矢量信息候选列表实现待编码块的预测。其中,构建运动矢量信息候选列表时,有时会用到历史运动矢量(基于历史的运动矢量预测,historymotionvectorprediction,hmvp),但是目前对hmvp的使用还存在一定的局限性,也在一定程度上影响了预测的准确度。技术实现要素:本申请主要解决的技术问题是提供一种历史运动矢量列表的使用方法、编解码器及存储装置,能够提高预测的准确度。为解决上述技术问题,本申请采用的一个技术方案是:提供一种历史运动矢量列表的使用方法,该方法包括获取当前块的历史运动矢量列表;按照第一顺序从历史运动矢量列表中选择第一数量的历史运动矢量;对第一数量的历史运动矢量进行第一操作之后按照第二顺序填充进当前块的运动矢量候选列表,第一操作包括缩放和/或修剪。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种历史运动矢量列表的使用方法,该方法包括复制帧内块拷贝模式下的历史运动矢量列表得到临时历史运动矢量列表;降低临时历史运动矢量列表中的共享历史运动矢量的顺序优先级得到当前块的历史运动矢量列表;其中,当前块的预测模式为帧内块拷贝共享模式,共享历史运动矢量为采用帧内块拷贝共享模式编码的已编码块的运动矢量;从当前块的历史运动矢量列表中选择第一数量的历史运动矢量;将第一数量的历史运动矢量中的至少部分按照预设顺序填充进当前块的运动矢量候选列表。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种历史运动矢量列表的使用方法,该方法包括获取仿射历史运动矢量列表,仿射历史运动矢量列表中的历史运动矢量所对应的已编码块是用仿射模式编码的;从仿射历史运动矢量列表中选择第一数量的历史运动矢量;将第一数量的历史运动矢量中的至少部分按照预设顺序填充进当前块的运动矢量候选列表。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种预测方法,该方法包括至少利用历史运动矢量构建运动矢量候选列表,利用上述的任一种方法使用历史运动矢量;利用运动矢量候选列表确定当前编码块的运动矢量。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种编码方法,该方法包括获取当前编码块的运动矢量,其中,当前编码块的运动矢量是利用上述的任一种预测方法获取的;基于当前编码块的运动矢量对当前编码块进行编码。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种历史运动矢量列表的使用装置,该装置包括获取模块、选择模块和填充模块,其中获取模块用于获取当前块的历史运动矢量列表;选择模块用于按照第一顺序从历史运动矢量列表中选择第一数量的历史运动矢量;填充模块用于对第一数量的历史运动矢量进行第一操作之后按照第二顺序填充进当前块的运动矢量候选列表,第一操作包括缩放和/或修剪。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种历史运动矢量列表的使用装置,该装置包括复制模块、调整模块、选择模块和填充模块,其中,复制模块用于复制帧内块拷贝模式下的历史运动矢量列表得到临时历史运动矢量列表;调整模块用于降低临时历史运动矢量列表中的共享历史运动矢量的顺序优先级得到当前块的历史运动矢量列表;其中,当前块的预测模式为帧内块拷贝共享模式,共享历史运动矢量为采用帧内块拷贝共享模式编码的已编码块的运动矢量;选择模块用于从当前块的历史运动矢量列表中选择第一数量的历史运动矢量;填充模块用于将第一数量的历史运动矢量中的至少部分按照预设顺序填充进当前块的运动矢量候选列表。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种历史运动矢量列表的使用装置,该装置包括获取模块、选择模块和填充模块,其中,获取模块用于获取仿射历史运动矢量列表,仿射历史运动矢量列表中的历史运动矢量所对应的已编码块是用仿射模式编码的;选择模块用于从仿射历史运动矢量列表中选择第一数量的历史运动矢量;填充模块用于将第一数量的历史运动矢量中的至少部分按照预设顺序填充进当前块的运动矢量候选列表。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种预测装置,该装置包括构建模块和确定模块,其中,构建模块用于至少利用历史运动矢量构建运动矢量候选列表,利用上述的任一种方法使用历史运动矢量;确定模块用于利用运动矢量候选列表确定当前编码块的运动矢量。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种编码装置,该装置包括获取模块和编码模块,其中,获取模块用于获取当前编码块的运动矢量,其中,当前编码块的运动矢量是利用上述的任一种预测方法获取的;编码模块用于基于当前编码块的运动矢量对当前编码块进行编码。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种编解码器,该编解码器包括处理器和存储器,处理器耦接存储器,存储器用于存储程序,处理器用于执行程序以实现上述的任一种历史运动矢量的使用方法,预测方法和编码方法。为解决上述技术问题,本申请采用的另一个技术方案是:提供一种具有存储功能的装置,装置存储有程序,程序被执行时能够实现上述的任一种历史运动矢量的使用方法,预测方法和编码方法。本申请的有益效果是:区别于现有技术的情况,本申请通过对历史运动矢量进行缩放和/或修剪后再填入当前块的运动矢量候选列表,能够提高预测的准确度。附图说明图1是本申请实施方式中历史运动矢量列表使用方法的流程示意图;图2是本申请实施方式中hmvp列表更新方式的示意图;图3是本申请实施方式中hmvp列表更新方式的示意图;图4是本申请实施方式中当前编码块与空域相邻块的位置关系示意图;图5是本申请实施方式中当前编码块的示意图;图6是本申请实施方式中当前编码块与时域同位块的位置关系示意图;图7是本申请实施方式中仿射模式的示意图;图8是本申请实施方式中历史运动矢量列表使用方法的流程示意图;图9是本申请实施方式中仿射模式中控制点的位置关系示意图;图10是本申请实施方式中仿射amvp模式下当前编码块与空域相邻块的位置关系示意图;图11是本申请实施方式中共享模式下共享区域的划分示意图;图12是本申请实施方式中共享模式下共享区域的划分示意图;图13是本申请实施方式中历史运动矢量列表的使用方法的流程示意图;图14为本申请实施方式中hmvp对应已编码块与当前块的位置关系示意图;图15为本申请实施方式中hmvp的缩放示意图;图16是本申请实施方式中预测方法的流程示意图;图17是本申请实施方式中编码方法的流程示意图;图18是本申请实施方式中历史运动矢量列表的使用装置的结构示意图;图19是本申请实施方式中历史运动矢量列表的使用装置的结构示意图;图20是本申请实施方式中历史运动矢量列表的使用装置的结构示意图;图21是本申请实施方式中预测装置的结构示意图;图22是本申请实施方式中编码装置的结构示意图;图23是本申请实施方式中编解码器的结构示意图;图24是本申请实施方式中具有存储功能的装置的结构示意图。具体实施方式为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。请参阅图1,图1是本申请实施方式中历史运动矢量列表使用方法的流程示意图。在该实施方式中,历史运动矢量列表的使用方法包括如下步骤:s110:获取当前块的历史运动矢量列表。其中,当前块为当前待编码块,hmvp列表(即历史运动矢量列表)中存放的是已编码块的mv,可存储在一个lookuptable中,存放顺序为编码顺序从前到后。当有一个新的图像块编码完成后,会将该块的mv加入到hmvp列表中,对hmvp列表进行更新。更新hmvp列表时,需要将该块的mv与hmvp列表中已存放的hmvp进行比较,查找是否存在一样的hmvp。若存在一样的hmvp,则把hmvp列表中冗余(相同)的hmvp剔除,再在末尾加入新的hmvp,如图2所示,图2是本申请实施方式中hmvp列表更新方式的示意图。若不存在相同的hmvp,则剔除hmvp列表中第一个hmvp,并在末尾加入新hmvp,如图3所示,图3是本申请实施方式中hmvp列表更新方式的示意图。其中,图2-3中所示hmvp列表的长度可以为5,也可以是其他数值,在此不做限定,在其他实施方式中,也可以选择其他方式更新hmvp列表,在此不做限定。s120:按照第一顺序从历史运动矢量列表中选择第一数量的历史运动矢量。其中,第一数量的个数会根据预测模式对应设置。s130:对第一数量的历史运动矢量进行第一操作之后按照第二顺序填充进当前块的运动矢量候选列表,第一操作包括缩放和/或修剪。为了便于描述,下文中将当前块的运动矢量候选列表简称为候选列表。该实施方式中,通过对历史运动矢量进行缩放和/或修剪后再填入当前块的运动矢量候选列表,能够提高预测的准确度。在一实施方式中,第一顺序包括正序或倒序,即可以按正序从前向后在hmvp列表中选取前n个hmvp;也可以按倒序从后向前在hmvp列表中选取后n个hmvp。n为第一数量,n的大小可根据预测模式对应设置。其中,选择hmvp时,不要求所选hmvp所对应的已编码块的参考帧必须和当前块的参考帧是同一帧,即也可以选取已编码块的参考帧和当前块的参考帧不是同一帧的已编码块的mv,或者说可以从hmvp列表中选择任意的n个hmvp填充入mv候选列表中。通过该实施方式的实施,能够充分利用hmvp列表中已编码块的信息。在一实施方式中,第一数量的历史运动矢量中的至少一个为异步运动矢量,其中,异步运动矢量对应的已编码块的参考帧与当前块的参考帧不是同一帧。在将异步运动矢量填充进候选列表之前,需要对异步运动矢量进行缩放,缩放后的异步运动矢量为异步运动矢量与缩放系数的乘积。在一实施方式中,所述缩放系数为第一距离(ta)与第二距离(tb)的比值,第一距离(ta)为当前帧和当前块的参考帧之间的距离,第二距离(tb)为当前帧和异步运动矢量对应的已编码块的参考帧之间的距离。即scalehmvps=(ta/tb)*hmvps,其中,scalehmvps为缩放后的异步运动矢量,hmvps为异步运动矢量。在其他实施方式中,缩放系数还可以是其他值,如可以是固定值、当前块/已编码块的其他参数值等。该实施方式中,通过对已编码块的参考帧和当前块的参考帧不是同一帧的hmvp进行缩放,能够提高预测的准确度。在其他实施方式中,第一数量的历史运动矢量中也可以不包含异步运动矢量,或者说是,当第一数量的历史运动矢量中包含异步运动矢量时,需要对异步运动矢量进行缩放,而不包含异步运动矢量时,可以不进行缩放,直接填充进当前块的运动矢量候选列表。在一实施方式中,第二顺序与第一顺序一致;或第二顺序中的异步运动矢量排在非异步运动矢量之后。即可以直接按hmvp的选择顺序将选取的hmvp填充进候选列表。或者是先填充hmvp对应的已编码块的参考帧与当前块的参考帧相同的hmvp,再填充hmvp对应的已编码块的参考帧与当前块的参考帧不同的hmvp。在一实施方式中,在将hmvp填充进候选列表之前还可以对hmvp进行修剪。修剪包括将历史运动矢量与候选列表中的指定运动矢量进行比较,若历史运动矢量与指定运动矢量相同,则不将历史运动矢量加入候选列表。在其他实施方式,也可以不对hmvp进行修剪直接将其填充进候选列表。其中,指定运动矢量为候选列表中的第二数量的空域运动矢量,空域运动矢量是对应空域相邻块的运动矢量,或者是对应空域相邻块的衍变运动矢量,空域相邻块的衍变运动矢量是将空域相邻块的运动矢量经过一定的变换得到的运动矢量,如仿射模式下,运动矢量候选列表中的空域运动矢量就是将空域相邻块的运动矢量经过仿射模型变换得到的衍变运动矢量。即可以在候选列表中的所有空域运动矢量中任选m个空域运动矢量与hmvp进行比较,只有与所选空域运动矢量不相同的hmvp才会填充进候选列表。m为第二数量,m的大小可根据预测模式对应设置。在一实施方式中,指定运动矢量包括利用历史运动矢量对应的已编码块与当前块之间的位置关系确定的相关空域运动矢量。在一实施方式中,若历史运动矢量对应的已编码块的右下角像素位于当前块的右上侧,则相关空域运动矢量包括当前块的右上角像素上侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量;若历史运动矢量对应的已编码块的右下角像素位于当前块的左下侧,则相关空域运动矢量包括当前块的左下角像素左侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量;若历史运动矢量对应的已编码块的右下角像素位于当前块的左侧、左上侧或上侧,则相关空域运动矢量包括当前块的右上角像素上侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量和当前块的左下角像素左侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量。在一实施方式中,若历史运动矢量对应的已编码块的右下角像素位于当前块的右上侧,则相关空域运动矢量包括当前块的上侧的至少一个已编码块的运动矢量/衍变运动矢量;若历史运动矢量对应的已编码块的右下角像素位于当前块的左下侧,则相关空域运动矢量包括当前块的左侧的至少一个已编码块的运动矢量/衍变运动矢量;若历史运动矢量对应的已编码块的右下角像素位于当前块的左侧、左上侧或上侧,则相关空域运动矢量包括当前块的上侧的至少一个已编码块的运动矢量/衍变运动矢量和当前块的左侧的至少一个已编码块的运动矢量/衍变运动矢量,并且若候选列表包括当前块的左上相邻已编码块的运动矢量/衍变运动矢量,相关空域运动矢量包括当前块的左上相邻已编码块的运动矢量/衍变运动矢量,当前块的左上相邻已编码块为当前块的左上角像素左上侧的相邻像素所在的已编码块。请结合参阅图4-5,图4是本申请实施方式中当前编码块与空域相邻块的位置关系示意图,图5是本申请实施方式中当前编码块的示意图。该实施方式中,当前编码块的左侧和上方共有5个空域相邻块a0、a1、b0、b1和b2,相关空域运动矢量可以是空域相邻块a0、a1、b0、b1和b2的运动矢量/衍变运动矢量中的一个或多个。以当前块的左上角的点为原点建立坐标系,设当前块左上角坐标为(0,0),x轴正方向为向右,y轴正方向为向下。在其他实施方式中,也可以选择其他更多的空域相邻块,在此不做限定。在一实施方式中,填充hmvp之前获取hmvp对应的已编码块的右下角坐标,若右下角坐标的横坐标大于a(0<a<width,width为当前块的宽),纵坐标小于0(即历史运动矢量对应的已编码块的右下角像素位于当前块的右上侧),则只将此hmvp与空域相邻块b1的运动矢量/衍变运动矢量进行比较(即相关空域运动矢量包括当前块的右上角像素上侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量);若右下角坐标的横坐标小于0,纵坐标大于b(0<b<height,height为当前块的高)(即历史运动矢量对应的已编码块的右下角像素位于当前块的左下侧),则只将此hmvp与空域相邻块a1的运动矢量/衍变运动矢量进行比较(即相关空域运动矢量包括当前块的左下角像素左侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量);若右下角坐标的横坐标小于等于a,纵坐标小于等于b(即历史运动矢量对应的已编码块的右下角像素位于当前块的左侧、左上侧或上侧),则将此hmvp与空域相邻块a1以及b1的运动矢量/衍变运动矢量进行比较(即相关空域运动矢量包括当前块的右上角像素上侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量和当前块的左下角像素左侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量)。若当前块运动矢量候选列表中不存在空域相邻块a1或b1的运动矢量/衍变运动矢量,则不需要比较。在一实施方式中,填充hmvp之前获取hmvp对应的已编码块的右下角坐标,获取hmvp对应的已编码块的右下角坐标,若右下角坐标的横坐标大于a(0<a<width,width为当前块的宽),纵坐标小于0(即历史运动矢量对应的已编码块的右下角像素位于当前块的右上侧),则将此hmvp与上方空域相邻块(如b0、b1)中一个或几个的运动矢量/衍变运动矢量进行比较(即相关空域运动矢量包括当前块的上侧的至少一个已编码块的运动矢量/衍变运动矢量);若右下角坐标的横坐标小于0,纵坐标大于b(0<b<height,height为当前块的高)(即历史运动矢量对应的已编码块的右下角像素位于当前块的左下侧),则将此hmvp与左侧空域相邻块(如a0、a1)中一个或几个的运动矢量/衍变运动矢量进行比较(即相关空域运动矢量包括当前块的左侧的至少一个已编码块的运动矢量/衍变运动矢量);若右下角坐标的横坐标小于等于a,纵坐标小于等于b(即历史运动矢量对应的已编码块的右下角像素位于当前块的左侧、左上侧或上侧),则将此hmvp与左侧空域相邻块中至少一个的运动矢量/衍变运动矢量,和上方空域相邻块中至少一个的运动矢量/衍变运动矢量进行比较(即相关空域运动矢量包括当前块的上侧的至少一个已编码块的运动矢量/衍变运动矢量和当前块的左侧的至少一个已编码块的运动矢量/衍变运动矢量);若候选列表中存在空域相邻块b2的运动矢量/衍变运动矢量,则必须将此hmvp与空域相邻块b2的运动矢量/衍变运动矢量进行比较(即若候选列表包括当前块的左上相邻已编码块的运动矢量/衍变运动矢量,则相关空域运动矢量包括当前块的左上相邻已编码块的运动矢量/衍变运动矢量,其中当前块的左上相邻已编码块为当前块的左上角像素左上侧的相邻像素所在的已编码块);若候选列表中需要比较的模式不存在,则不需要与该模式进行比较。通过上述实施方式的实施,丰富了hmvp修剪的比较方式,修剪时需要和更多的空域运动矢量进行比较,同时利用hmvp对应已编码块与当前块的位置关系来决定需要比较的空域运动矢量,能够减少复杂度。在一实施方式中,当前块的预测模式可以为高级运动向量预测(advancedmotionvectorprediction,amvp)模式和merge模式;具体还可以分为常规模式、仿射模式和帧内块拷贝(intrablockcopy,ibc)模式等,更具体的有常规amvp模式和常规merge模式;仿射amvp模式和仿射merge模式;ibcamvp模式和ibcmerge模式;ibcamvp共享模式和ibcmerge共享模式。在使用上述预测模式时,都需要构建运动矢量候选列表,在构建运动矢量候选列表时,可能会用到hmvp,当需要使用hmvp时,可利用上述方法使用hmvp列表。在一实施方式中,当前块的预测模式为常规预测模式,常规预测模式包括常规amvp模式和常规merge模式,利用常规amvp模式和常规merge模式进行帧间预测时,都需要先构建当前块的mv候选列表。不同的是,利用常规amvp模式进行帧间预测时需要进行运动估计,具体地,需要先从mv候选列表中选出一个最佳候选mv作为当前块的mvp(mv预测值),再进行运动估计过程,运动估计过程包括到参考帧中搜索当前块的最佳匹配块,将最佳匹配块坐标和当前块坐标的差作为实际mv,最终传输的是实际mv减mvp得到的mvd(运动矢量差值)。而常规merge模式则不进行运动估计过程,可直接从候选列表中选出一个最佳候选mv作为当前块的mv。其中,构建常规amvp模式下的mv候选列表时,mv的填充顺序是:空域mv(空域相邻块的mv)、时域mv(时域同位块的mv,或经过缩放的时域同位块的mv)、hmvp、0mv。构建常规merge模式下的mv候选列表时,mv的填充顺序是:空域mv、时域mv、hmvp、平均mv、0mv。其中,常规amvp模式和常规merge模式下空域相邻块的位置和时域同位块的位置是一致的,但搜索顺序和获取方式有区别。常规amvp模式和常规merge模式下空域相邻块的位置如图4所示,包括a0、a1、b0、b1、b2等,常规amvp模式和常规merge模式下时域同位块的位置如图6所示,图6是本申请实施方式中当前编码块与时域同位块的位置关系示意图,包括c0、c1等。在其他实施方式中,也可以选择其他更多的空域相邻块、时域同位块,在此不做限定。在构建常规amvp模式和常规merge模式下的候选列表时,均是先填充空域mv和时域mv,如果候选列表还没有填满,则需填入hmvp。例如常规amvp模式下的mv候选列表长度可以为2,里面包含2个mv,常规merge模式下的mv候选列表长度可以为6,里面包含6个mv。在其他实施方式中,mv候选列表长度也可以是其他数值,在此不做限定。当使用hmvp时,需要先获取常规预测模式对应的常规hmvp列表,再在常规hmvp列表选取第一数量的hmvp,用于填充进候选列表。其中,常规amvp模式和常规merge模式共用一个常规hmvp列表,即无论已编码块是用常规amvp模式编码还是用常规merge模式编码,都会将已编码块的mv更新到常规hmvp列表中;或者说常规hmvp列表中包括用常规amvp模式编码的已编码块的mv和用常规merge模式编码的已编码块的mv。其中,选择hmvp时,不要求所选hmvp所对应的已编码块的参考帧必须和当前块的参考帧是同一帧,即可以从hmvp列表中选择任意的n个hmvp填充入mv候选列表中,直到填满候选列表为止;可以按正序选择,也可以按倒序选择。选出的hmvp在填充前还可以进行缩放和/或修剪;填充选出的hmvp时,可以按选出顺序直接填充,也可以调整顺序后再填充。具体选择方式、填充方式、缩放方式、修剪方式请参阅上述实施方式的描述,在此不再赘述。通过该实施方式的实施,相对现有的常规amvp模式和常规merge模式,能够充分利用hmvp列表中已编码块的信息,且通过对hmvp进行缩放和/或修剪,能够增加预测准确度。在一实施方式中,当前块的预测模式为仿射模式,当亮度块的宽和高都大于8时可以采用该模式。仿射模式是通过将当前块划分为多个相同尺寸(如4x4)的子块,每个子块都可以采用不同的mv,以此来模拟旋转、缩放等场景,如图7所示,图7是本申请实施方式中仿射模式的示意图。仿射模式包括仿射amvp模式和仿射merge模式,和常规模式类似,仿射amvp模式也要进行运动估计的过程;而仿射merge模式不需要做运动估计。请参阅图8,图8是本申请实施方式中历史运动矢量列表使用方法的流程示意图。在该实施方式中,历史运动矢量列表的使用方法包括如下步骤:s810:获取仿射历史运动矢量列表。其中,仿射历史运动矢量列表中的历史运动矢量所对应的已编码块是用仿射模式编码的。s820:从仿射历史运动矢量列表中选择第一数量的历史运动矢量。s830:将第一数量的历史运动矢量中的至少部分按照预设顺序填充进当前块的运动矢量候选列表。其中,仿射amvp模式下,当前块中每个子块的mv可以不同,每个子块的mv由2个(v0、v1)或3个(v0、v1、v2)控制点(controlpoint,cp)的mv加权获得,每个cp的mv称为cpmv(controlpoint’smv)。3个cp的位置如图9所示,图9是本申请实施方式中仿射模式中控制点的位置关系示意图。将仿射amvp模式的候选列表称为cpmvp候选列表。构建cpmvp候选列表时,cpmv组的填充顺序是空域相邻块的cpmv组、时域同位块的cpmv组、hmvp、0mv。仿射amvp模式下空域相邻块的位置如图10所示,图10是本申请实施方式中仿射amvp模式下当前编码块与空域相邻块的位置关系示意图,包括a-g等;仿射amvp模式下时域同位块的位置如图6所示,包括c0、c1等。在其他实施方式中,也可以选择其他更多的空域相邻块、时域同位块,在此不做限定。与仿射amvp模式不同,仿射merge模式的候选列表中填充不同类型mv的顺序如下:子块mv、空域mv(经过仿射模型变换后的空域相邻块的衍变mv)、时空域mv(结合空域和时域相邻块的mv)、hmvp、0mv。其中,仿射merge模式的空域相邻块和时域同位块的位置和常规merge模式中的一致。构建cpmvp候选列表和仿射merge模式下的候选列表时,先分别填充空域相邻块的cpmv组、时域同位块的cpmv组;子块mv、空域mv和时空域mv,如果候选列表还没有填满,则需填入hmvp。例如。仿射amvp模式的候选列表中包括2组cpmv的组合,每组cpmv组都包含3个cpmv,当只有两个控制点时,第三个cpmv置为0;仿射merge模式下的mv候选列表的长度为5,在其他实施方式中,mv候选列表长度也可以是其他数值,在此不做限定。当使用hmvp时,需要先获取仿射预测模式对应的仿射hmvp列表,再在仿射hmvp列表选取第一数量的hmvp,用于填充进候选列表。其中,仿射amvp模式和仿射merge模式共用一个仿射hmvp列表,构建仿射hmvp列表时,只有在已编码块的编码方式是仿射amvp模式或仿射merge模式时,才会将该块的mv更新到仿射hmvp列表中。仿射hmvp列表中的每个hmvp(hmvp组)都包含3个mv(cpmv),若已编码块中只有两个控制点,则该hmvp中的第三个cpmv置为0。同样地,选择hmvp时,不要求所选hmvp所对应的已编码块的参考帧必须和当前块的参考帧是同一帧,即可以从hmvp列表中选择任意的n个hmvp填充入mv候选列表中,直到填满候选列表为止;可以按正序选择,也可以按倒序选择。选出的hmvp在填充前还可以进行缩放和/或修剪;填充选出的hmvp时,可以按选出顺序直接填充,也可以调整顺序后再填充。具体选择方式、填充方式、缩放方式、修剪方式请参阅上述实施方式的描述,在此不再赘述。在其他实施方式中,也可以是其他选择方式、填充方式、缩放方式、修剪方式。通过该实施方式的实施,相对现有的仿射amvp模式和仿射merge模式,本申请所提供的方法,在使用仿射amvp模式和仿射merge模式时也加入了hmvp模式,能够充分利用已编码块的信息。在一实施方式中,当前块的预测模式为ibc模式。ibc意思是帧内块拷贝。一般ibc模式会在帧内进行运动估计和运动搜索的过程,在帧内搜索当前块的匹配块,获取匹配块的信息后对当前块的mv模式进行预测。ibc模式包括ibcamvp模式和ibcmerge模式,和常规模式类似,ibcamvp模式需要进行运动估计的过程,而ibcmerge模式不需要进行运动估计。ibc模式同样要构建mv候选列表,ibcamvp模式和ibcmerge模式构建的方式分别和常规amvp模式和常规merge模式下的构建方式基本类似。但在构建ibcamvp模式候选列表时,空域相邻块的位置只选图4中的a1、b1,并且由于是在帧内进行,所以候选列表中没有时域mv。ibcamvp模式列表中mv的填充顺序为:空域mv、hmvp、0mv。在构建ibcmerge模式mv候选列表时,空域相邻块的位置只选图4中的a1、b1,并且由于是在帧内进行,所以候选列表中没有时域mv模式。ibcmerge模式候选列表中mv的填充顺序为:空域mv、hmvp、0mv。在其他实施方式中,也可以选择其他更多的空域相邻块,在此不做限定。构建ibcamvp模式和ibcmerge模式下的候选列表时,均是先填充空域mv,如果候选列表还没有填满,则需填入hmvp。例如ibcamvp模式候选列表中最多不超过2个mv,ibcmerge模式候选列表中最多不超过6个mv,在其他实施方式中,mv候选列表长度也可以是其他数值,在此不做限定。当使用hmvp时,需要先获取ibc预测模式对应的ibchmvp列表,再在ibchmvp列表选取第一数量的hmvp,用于填充进候选列表。其中,ibcamvp模式和ibcmerge模式共用一个ibchmvp列表,构建ibchmvp列表时,只有在已编码块的编码方式是ibcamvp模式或ibcmerge模式时,才会将该块的mv更新到ibchmvp列表中。同样地,选择hmvp时,不要求所选hmvp所对应的已编码块的参考帧必须和当前块的参考帧是同一帧,即可以从hmvp列表中选择任意的n个hmvp填充入mv候选列表中,直到填满候选列表为止;可以按正序选择,也可以按倒序选择。选出的hmvp在填充前还可以进行缩放和/或修剪;填充选出的hmvp时,可以按选出顺序直接填充,也可以调整顺序后再填充。具体选择方式、填充方式、缩放方式、修剪方式请参阅上述实施方式的描述,在此不再赘述。通过该实施方式的实施,相对现有的ibcamvp模式和ibcmerge模式,能够充分利用hmvp列表中已编码块的信息,且通过对hmvp进行缩放和/或修剪,能够增加准确度。在一实施方式中,当前块的预测模式为ibc共享模式。ibc共享模式就是根据块尺寸相关的阈值划定一片共享区域,区域中有若干cu(codingunit,编码单元)块,如图11所示,图11是本申请实施方式中共享模式下共享区域的划分示意图,阈值设为64个像素时,不同划分方式下的共享区域,共享区域用虚线表示,实线表示cu块。共享区域中的所有用ibc共享模式编码的cu块用的都是同一个ibc共享模式下的共享候选列表。ibc共享模式包括ibcamvp共享模式和ibcmerge共享模式。ibcamvp共享模式中,共享候选列表是先将共享区域当做一个cu块,用ibcamvp模式建立mv候选列表的方式建立的。ibcmerge共享模式的整体思路和ibcamvp共享模式类似,不同的是ibcmerge共享模式中,mv共享候选列表是将共享区域当做一个cu块,用ibcmerge模式建立候选列表的方式建立的。一般而言,每编码完一个cu块,就需要按图2和3所示的方法更新hmvp列表(如在非共享amvp模式和非共享merge模式中),但是在ibc共享模式下(包括ibcamvp共享模式和ibcmerge共享模式)比较特殊。由于共享区域中的所有用ibc共享模式编码的cu块用的都是同一个ibc共享模式下的候选列表,也就是要用到同样的hmvp列表,所以编码区域中对ibc共享模式的cu块进行编码后,不能对hmvp列表进行更新,但是编码区域中可能也包含采用非ibc共享模式编码的cu,这些cu编码完后还是需要更新hmvp列表,这就有冲突。现有方案中是把原始的ibc模式下的hmvp列表拷贝了一份,作为用于ibc共享模式下建立候选列表的临时hmvp列表,这个临时的hmvp列表在共享区域内是不更新的。但原始的hmvp列表不管是不是ibc共享模式,只要编码完一个cu,就会进行更新。如图12所示,图12是本申请实施方式中共享模式下共享区域的划分示意图。设cu1、cu2、cu3和cu4都用ibc共享模式编码,在对共享区域1进行编码时,那么先将原始的ibc下的hmvp列表拷贝一份出来,即临时hmvplist1,cu1和cu2都只用到临时hmvplist1。但cu1和cu2编码完后都会把模式更新到原始hmvp列表中。同理随后在对共享区域2进行编码时,又会重新从原始hmvp列表拷贝一份出来,即临时hmvplist2,cu3和cu4都只用到临时hmvplist2。由于共享模式下一个共享区域有不同的划分方式,区域中cu的尺寸不同,最终预测的结果也可能不同。因此在实际操作中首先会保存ibc下原始hmvp列表的初始值,然后每种划分方式都对应一个原始hmvp列表和一个临时hmvp列表,用于构建ibc模式或ibc共享模式的候选列表,最终算出当前划分方式下的代价值,接下来再用另一种划分方式,此时会重新去取之前保存的hmvp列表初始值,再进行相同的步骤,算出这种划分方式下的代价值。最终会比较所有划分方式下的代价值,并得出选用哪种划分方式,以及对应的hmvp列表。现有方案中,ibc共享模式中的临时hmvp列表时直接拷贝的原始hmvp列表,但没有考虑到采用共享模式编码的ibc块对应的hmvp和其余hmvp与当前块的相关性联系,可能不够准确。基于此,本申请提供一种ibc共享模式下临时hmvp列表的构建及使用方法。请参阅图13,图13是本申请实施方式中历史运动矢量列表的使用方法的流程示意图。该实施方式中,历史运动矢量列表的使用方法包括如下步骤:s1310:复制ibc模式下的历史运动矢量列表得到临时历史运动矢量列表。s1320:降低临时历史运动矢量列表中的共享历史运动矢量的顺序优先级得到当前块的历史运动矢量列表。其中,当前块的预测模式为ibc共享模式,共享历史运动矢量为采用ibc共享模式编码的已编码块的运动矢量。s1330:从历史运动矢量列表中选择第一数量的历史运动矢量;s1340:将第一数量的历史运动矢量中的至少部分按照预设顺序填充进当前块的运动矢量候选列表。通过该实施方式的实施,从原始hmvp列表拷贝出来后,考虑到采用共享模式编码的ibc块对应的hmvp和其余hmvp与当前块的相关性联系,需要对拷贝出的临时hmvp模式顺序进行调整,将其中是用共享模式编码的ibc块对应的hmvp顺序优先级降低,因为不同共享区域间的相关性理论上较低,不然它们应该合成一个共享区域。对临时hmvp列表的调整以及在mv候选列表中的填充方式包括以下方法:在一实施方式中,若历史运动矢量的填充顺序为倒序,则将共享历史运动矢量移动至临时历史运动矢量列表的最前。即筛选出hmvp列表中所有采用共享模式编码的ibc块对应的hmvp,保持相对顺序不变,将这些hmvp移到临时hmvp列表的最前面。将hmvp模式填充到ibc下的共享候选列表中时按倒序填充。在一实施方式中,若历史运动矢量的填充顺序为正序,则将共享历史运动矢量移动至临时历史运动矢量列表的最后。即筛选出列表中所有采用共享模式编码的ibc块对应的hmvp,保持相对顺序不变,将这些hmvp移到临时hmvp列表的最后面。将hmvp模式填充到ibc下的共享候选列表中时按正序填充。同样地,选择hmvp时,不要求所选hmvp所对应的已编码块的参考帧必须和当前块的参考帧是同一帧,即可以从hmvp列表中选择任意的n个hmvp填充入mv候选列表中,直到填满候选列表为止;可以按正序选择,也可以按倒序选择。选出的hmvp在填充前还可以进行缩放和/或修剪;具体选择方式、填充方式、缩放方式、修剪方式请参阅上述实施方式的描述,在此不再赘述。在其他实施方式中,也可以是其他选择方式、填充方式、缩放方式、修剪方式。以上实施方式,对不同模式下的hmvp列表构建和填充方式提出了多种改进方法,如对两种仿射模式的候选列表进行了改进,在构建仿射模式的候选列表中加入了hmvp;对hmvp的选择方式、填充方式都进行了改进,同时还可以对hmvp进行缩放和/修剪;另外还可以对两种共享模式的临时hmvp列表做改进。上述多种改进方式相互独立,可选择其中一种或多种进行组合使用。下面将通过几组具体实施例来对本申请所提供的历史运动矢量列表使用方法进行说明、解释,但不应用来限制本申请的范围。实施例1在该实施例中,设当前块用amvp模式编码,且按照倒序的方式从hmvp列表中选取第一数量的hmvp,并在将hmvp填充进候选列表前对异步运动矢量进行缩放,且在将hmvp填充进候选列表时将异步运动矢量排在非异步运动矢量之后。设这3个hmvp在原始hmvp列表中的顺序按正序为hmvp0、hmvp1、hmvp2,进行倒序选择后顺序为hmvp2、hmvp1、hmvp0。其中hmvp1对应的已编码块的参考帧和当前块的参考帧不是同一帧,其余两个hmvp对应的参考帧和当前块的参考帧一致,这3个hmvp对应编码块的位置如图14所示,图14为本申请实施方式中hmvp对应已编码块与当前块的位置关系示意图。对hmvp1进行缩放后得到scalehmvp1,缩放示意图如图15所示,图15为本申请实施方式中hmvp的缩放示意图。最终填充到amvp的候选列表中的顺序为hmvp2、hmvp0、scalehmvp1。实施例2在该实施例中,设当前块用merge模式编码,且按照倒序的方式从hmvp列表中选取第一数量的hmvp,并在将hmvp填充进候选列表前对异步运动矢量进行缩放,对所有hmvp进行修剪,在修剪时利用hmvp对应的已编码块与当前块之间的位置关系确定的相关空域运动矢量,且在将hmvp填充进候选列表时将异步运动矢量排在非异步运动矢量之后。设这3个hmvp在原始hmvp列表中的顺序按正序为hmvp0、hmvp1、hmvp2,进行倒序选择后顺序为hmvp2、hmvp1、hmvp0。其中hmvp1对应的已编码块的参考帧和当前块的参考帧不是同一帧,其余两个hmvp对应的参考帧和当前块的参考帧一致,这3个hmvp对应编码块的位置如图14所示,设a=width/2,b=height/2,修剪时hmvp0需要和空域相邻块a1以及b1的mv进行比较;hmvp1只和空域相邻块b1的mv进行比较;hmvp2只和空域相邻块a1的mv进行比较。设修剪后hmvp0与空域相邻块a1的mv相同,最终填充到amvp的候选列表中的顺序为hmvp2、scalehmvp1。请参阅图16,图16是本申请实施方式中预测方法的流程示意图,本实施方式中,预测方法包括以下步骤:s1610:至少利用历史运动矢量构建运动矢量候选列表。其中,利用上述的任一种方法使用历史运动矢量。s1620:利用运动矢量候选列表确定当前编码块的运动矢量。其中,预测模式可以为高级运动向量预测(advancedmotionvectorprediction,amvp)模式和merge模式;具体还可以分为常规模式、仿射模式和ibc模式等,更具体的有常规amvp模式和常规merge模式;仿射amvp模式和仿射merge模式;ibcamvp模式和ibcmerge模式;ibcamvp共享模式和ibcmerge共享模式。具体预测方法过程请参阅上述实施方式的描述,在此不再赘述。本实施方式所提供的预测方法,利用如上任一实施方式的方法建立候选列表,通过对历史运动矢量进行缩放和/或修剪后再填入当前块的运动矢量候选列表,能够提高预测的准确度。不要求所选hmvp所对应的已编码块的参考帧必须和当前块的参考帧是同一帧,充分利用hmvp列表中已编码块的信息。请参阅图17,图17是本申请实施方式中编码方法的流程示意图,该方法可由编解码器来执行。本实施方式中,编码方法包括以下步骤:s1710:获取当前编码块的运动矢量。其中,当前编码块的运动矢量是利用上述的预测方法获取的。s1720:基于当前编码块的运动矢量对当前编码块进行编码。本实施方式所提供的编码方法,通过利用如上任一实施方式的预测方法获取当前编码块的mv,从而可增加最佳mv选取的概率,有利于进一步去除空间冗余,提高帧间编码的压缩率。请参阅图18,图18是本申请实施方式中历史运动矢量列表的使用装置的结构示意图,该实施方式中历史运动矢量列表的使用装置180包括获取模块1810、选择模块1820和填充模块1830。其中获取模块1810用于获取当前块的历史运动矢量列表;选择模块1820用于按照第一顺序从历史运动矢量列表中选择第一数量的历史运动矢量;填充模块1830用于对第一数量的历史运动矢量进行第一操作之后按照第二顺序填充进当前块的运动矢量候选列表,第一操作包括缩放和/或修剪。在一实施方式中,第一数量的历史运动矢量中的至少一个为异步运动矢量,异步运动矢量对应的已编码块的参考帧与当前块的参考帧不同,填充模块1830包括缩放单元,缩放单元具体用于对异步运动矢量进行缩放,缩放后的异步运动矢量scalehmvps=(ta/tb)*hmvps,其中ta为当前帧和当前块的参考帧之间的距离,tb为当前帧和异步运动矢量对应的已编码块的参考帧之间的距离,hmvps为异步运动矢量。在一实施方式中,第二顺序与第一顺序一致;或第二顺序中的异步运动矢量排在非异步运动矢量之后。在一实施方式中,第一顺序包括正序或倒序。在一实施方式中,填充模块1830包括修剪单元,修剪单元用于将历史运动矢量与候选列表中的指定运动矢量进行比较,若历史运动矢量与指定运动矢量相同,则不将历史运动矢量加入候选列表。在一实施方式中,指定运动矢量为候选列表中的第二数量的空域运动矢量。在一实施方式中,指定运动矢量包括利用历史运动矢量对应的已编码块与当前块之间的位置关系确定的相关空域运动矢量。在一实施方式中,若历史运动矢量对应的已编码块的右下角像素位于当前块的右上侧,则相关空域运动矢量包括当前块的右上角像素上侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量;若历史运动矢量对应的已编码块的右下角像素位于当前块的左下侧,则相关空域运动矢量包括当前块的左下角像素左侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量;若历史运动矢量对应的已编码块的右下角像素位于当前块的左侧、左上侧或上侧,则相关空域运动矢量包括当前块的右上角像素上侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量和当前块的左下角像素左侧的相邻像素所在的已编码块的运动矢量/衍变运动矢量。在一实施方式中,若历史运动矢量对应的已编码块的右下角像素位于当前块的右上侧,则相关空域运动矢量包括当前块的上侧的至少一个已编码块的运动矢量/衍变运动矢量;若历史运动矢量对应的已编码块的右下角像素位于当前块的左下侧,则相关空域运动矢量包括当前块的左侧的至少一个已编码块的运动矢量/衍变运动矢量;若历史运动矢量对应的已编码块的右下角像素位于当前块的左侧、左上侧或上侧,则相关空域运动矢量包括当前块的上侧的至少一个已编码块的运动矢量/衍变运动矢量和当前块的左侧的至少一个已编码块的运动矢量/衍变运动矢量,并且若候选列表包括当前块的左上相邻已编码块的运动矢量/衍变运动矢量,相关空域运动矢量包括当前块的左上相邻已编码块的运动矢量/衍变运动矢量,当前块的左上相邻已编码块为当前块的左上角像素左上侧的相邻像素所在的已编码块。请参阅图19,图19是本申请实施方式中历史运动矢量列表的使用装置的结构示意图,该实施方式中历史运动矢量列表的使用装置190包括复制模块1910、调整模块1920、选择模块1930和填充模块1940。其中,复制模块1910用于复制ibc模式下的历史运动矢量列表得到临时历史运动矢量列表;调整模块1920用于降低临时历史运动矢量列表中的共享历史运动矢量的顺序优先级得到当前块的历史运动矢量列表;其中,当前块的预测模式为ibc共享模式,共享历史运动矢量为采用ibc共享模式编码的已编码块的运动矢量;选择模块1930用于从当前块的历史运动矢量列表中选择第一数量的历史运动矢量;填充模块1940用于将第一数量的历史运动矢量中的至少部分按照预设顺序填充进当前块的运动矢量候选列表。在一实施方式中,若历史运动矢量的填充顺序为倒序,则将共享历史运动矢量移动至临时历史运动矢量列表的最前;若历史运动矢量的填充顺序为正序,则将共享历史运动矢量移动至临时历史运动矢量列表的最后。请参阅图20,图20是本申请实施方式中历史运动矢量列表的使用装置的结构示意图,该实施方式中历史运动矢量列表的使用装置200包括获取模块2010、选择模块2020和填充模块2030。其中,获取模块2010用于获取仿射历史运动矢量列表,仿射历史运动矢量列表中的历史运动矢量所对应的已编码块是用仿射模式编码的;选择模块2020用于从仿射历史运动矢量列表中选择第一数量的历史运动矢量;填充模块2030用于将第一数量的历史运动矢量中的至少部分按照预设顺序填充进当前块的运动矢量候选列表。请参阅图21,图21是本申请实施方式中预测装置的结构示意图,该实施方式中预测装置210包括构建模块2110和确定模块2120。其中,构建模块2110用于至少利用历史运动矢量构建运动矢量候选列表,利用上述的任一种方法使用历史运动矢量;确定模块2120用于利用运动矢量候选列表确定当前编码块的运动矢量。请参阅图22,图22是本申请实施方式中编码装置的结构示意图,该实施方式中编码装置220包括获取模块2210和编码模块2220。其中,获取模块2210用于获取当前编码块的运动矢量,其中,当前编码块的运动矢量是利用上述的任一种预测方法获取的;编码模块2220用于基于当前编码块的运动矢量对当前编码块进行编码。请参阅图23,图23是本申请实施方式中编解码器的结构示意图,该实施方式中,编解码器230包括处理器2310和存储器2320,处理器2310耦接存储器2320,存储器2320用于存储程序,处理器2310用于执行程序以实现上述的任一种历史运动矢量的使用方法,预测方法和编码方法。处理器2310还可以称为cpu(centralprocessingunit,中央处理单元)。处理器2310可以是一种集成电路芯片,具有信号的处理能力。处理器2310还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。请参阅图24,图24是本申请实施方式中具有存储功能的装置的结构示意图,该实施方式中,具有存储功能的装置240存储有程序2410,程序2410被执行时能够实现上述任一实施方式的历史运动矢量的使用方法,预测方法和编码方法。其中,该程序2410可以以软件产品的形式存储在上述具有存储功能的装置240中,包括若干指令用以使得一个设备或处理器执行本申请各个实施方式方法的全部或部分步骤。具有存储功能的装置240是计算机存储器中用于存储某种不连续物理量的媒体。而前述的具有存储功能的装置240包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本申请的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1