运动矢量的预测方法、视频编码方法及相关设备、装置与流程

文档序号:20489926发布日期:2020-04-21 21:58阅读:102来源:国知局
运动矢量的预测方法、视频编码方法及相关设备、装置与流程
本申请涉及视频编解码领域,特别是涉及一种运动矢量的预测方法、视频编码方法及相关设备、装置。
背景技术
:由于视频图像数据量比较大,通常需要对视频像素数据(如rgb、yuv等)进行编码压缩以降低视频的数据量,压缩后的数据称之为视频码流,视频码流通过有线或者无线网络传输至用户端,再进行解码观看。视频编码主要包括采集、预测、变换量化和熵编码几大部分。其中,预测部分分为帧内预测、帧间预测和帧内块拷贝预测三大部分。而不同预测模式之间各有差异,从而给预测的软硬件实现带来了困难。例如,作为其中一种主要的预测模式,amvp(advancedmotionvectorprediction,高级运动矢量预测)模式在技术发展过程中,又发展出了多个分支,例如,常规amvp模式、仿射amvp模式、基于帧内块拷贝的amvp模式、哈希amvp模式等等,而在从上述amvp模式所包含的多种模式中进行选择、使用的过程中,特别是在所选择的模式不止一种时,由于各种模式之间的差异性,需要为每种模式构建单独的处理回路,故不利于软硬件的实现,提高了实现难度。有鉴于此,如何降低运动矢量预测的软硬件实现难度成为亟待解决的问题。技术实现要素:本申请提供一种运动矢量的预测方法、视频编码方法及相关设备、装置,能够降低运动矢量预测的软硬件实现难度。为了解决上述技术问题,本申请第一方面提供了一种运动矢量的预测方法,包括:获取当前编码块在预设预测模式下的候选列表,其中,候选列表包括多个候选运动矢量;对候选列表中的多个候选运动矢量进行运动搜索,得到预设预测模式下当前编码块的初始最佳运动矢量;采用第一预设数量种像素精度分别对初始最佳运动矢量进行运动补偿,确定得到当前编码块的最终最佳运动矢量;其中,预设预测模式包括多种预测模式中的任一种,且在任一种预测模式下所采用的像素精度相同。为了解决上述问题,本申请第二方面提供了一种视频编码方法,包括:构建当前编码块在预设预测模式下的候选列表,其中,候选列表中包含多个候选运动矢量;基于候选列表,获得当前编码块的最终最佳运动矢量,其中,最终最佳运动矢量是利用上述第一方面中的预测方法获得的;选取多个候选运动矢量中的一个作为预测运动矢量,并基于预测运动矢量和最终最佳运动矢量对当前编码块进行编码。为了解决上述问题,本申请第三方面提供了一种运动矢量的预测设备,包括相互耦接的存储器和处理器,存储器用于存储程序指令,处理器用于执行程序指令以实现上述第一方面中的预测方法。为了解决上述问题,本申请第四方面提供了一种视频编码设备,包括相互耦接的存储器和处理器,存储器用于存储程序指令,处理器用于执行程序指令以实现上述第二方面中的视频编码方法。为了解决上述问题,本申请第五方面提供了一种存储装置,存储有程序指令,程序指令能够被处理器执行以实现上述第一方面中的预测方法,或者实现上述第二方面中的视频编码方法。上述方案,获取当前编码块在预设预测模式下的候选列表,且候选列表包括多个候选运动矢量,从而对候选列表中的多个候选运动矢量进行运动搜索,得到预设预测模式下当前编码块的初始最佳运动矢量,并采用第一预设数量种像素精度分别对初始最佳运动矢量进行运动补偿,确定得到当前编码块的最终最佳运动矢量,且预设预测模式包括多种预测模式中的任一种,且在任一种预测模式下所采用的像素精度相同,进而能够统一多种预测模式所采用的像素精度,能够统一多种预测模式所采用的处理回路,从而能够降低运动矢量预测的软硬件实现难度,有利于提高预测的准确性。附图说明图1是本申请运动矢量的预测方法实施例中当前编码块与空域块之间的位置关系示意图;图2是本申请运动矢量的预测方法实施例中当前编码块与时域块之间的位置关系示意图;图3是本申请运动矢量的预测方法实施例中时域运动矢量缩放示意图;图4是本申请运动矢量的预测方法实施例中控制点的位置示意图;图5是本申请运动矢量的预测方法一实施例的流程示意图;图6是图5中步骤s53一实施例的流程示意图;图7是本申请视频编码方法一实施例的流程示意图;图8是本申请视频编码方法另一实施例的流程示意图;图9是本申请运动矢量的预测装置一实施例的框架示意图;图10是本申请视频编码装置一实施例的框架示意图;图11是本申请运动矢量的预测设备一实施例的框架示意图;图12是本申请视频编码设备一实施例的框架示意图;图13是本申请存储装置一实施例的框架示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本申请实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。需注意的是,对于下述方法实施例,若有实质上相同的结果,本申请的方法并不以图示的流程顺序为限。为便于理解,先对下文所提及的多种预设预测模式进行说明。一、常规amvp模式在常规amvp模式下,构建包含候选运动矢量(motionvector,mv)的候选列表的方式具体如下:常规amvp模式中,候选列表长度为2,即候选列表中所包含的候选运动矢量的个数为2个。请参阅图1,图1是本申请运动矢量的预测方法实施例中当前编码块与空域块之间的位置关系示意图,从当前编码块的左侧和上方相邻块各获取一个运动矢量(mv)加入到候选列表中。左侧相邻块检查顺序为a0->a1,上方相邻块检查顺序为b0->b1->b2。在相邻块与当前编码块的参考帧为同一帧时,将相邻块的运动矢量(mv)加入候选列表。当左侧(或上方)检查到第一个可用的候选运动矢量时,将该候选运动矢量加入候选列表,并跳过左侧(或上方)其他相邻块的检查。当前编码块的尺寸大于4*4、8*4、4*8时,获取时域运动矢量加入候选列表。时域最多只能够提供一个运动矢量。请参阅图2,图2是本申请运动矢量的预测方法实施例中当前编码块与时域块之间的位置关系示意图,如图2所示,由图2中c0位置在同位帧(col_pic)中的同位块(col_cu)的运动矢量经伸缩得到,若c0位置同位块不可用,则用c1位置同位块替换。对获取到的时域运动矢量的缩放可参阅图3,图3是本申请运动矢量的预测方法实施例中时域运动矢量缩放示意图,如图3所示,cur_pu表示当前编码块,col_pu为其同位块,td和tb分别表示当前图像cur_pic、同位图像col_pic与二者参考图像cur_ref、col_ref间的距离,可通过下式得到在最终的时域运动矢量:curmv=(td/tb)*colmv其中,colmv为同位块的运动矢量,curmv表示最终获得的时域运动矢量。如果候选列表还没填满,还需填入hmvp(history-basedmotionvectorprediction,历史已编码块mv),这里的已编码块是指当前编码树单元(ctu)中已编码的帧间块,且要求当前编码块和已编码块的参考帧相同。按照后进先出的顺序将hmvp列表中最近4个运动矢量填充到候选列表中,直到填满候选列表为止。如果候选列表还没有填满,将候选列表中剩下的mv都用零mv填充。二、仿射amvp模式仿射amvp模式下,当前编码块中每个子块的mv可以不同,每个子块的mv由个(v0、v1)或3个(v0、v1、v2)控制点(controlpoint,cp)的mv加权获得,每个cp的mv称为cpmv(controlpoint’smv)。3个cp的位置可参阅图4,图4是本申请运动矢量的预测方法实施例中控制点的位置示意图。从左侧和上方相邻块各选一组cpmv加入到候选列表中,左侧按顺序检查相邻块g和f,上方按顺序检查相邻块e、d和a。当检查到某相邻块存在且采用仿射模式且当前编码块和该相邻块的参考帧相同时,选择该相邻块的cpmv组合经过仿射公式后加入到cpmv候选列表中,且该侧的其余相邻块不再检查。按v0、v1和v2的次序分别检查每个cp的相邻块,v0的检查顺序为a->b->c,v1的检查顺序为d->e,v2的检查顺序为f->g。当检查到相邻块存在且采用帧间预测时,选择该快的mv作为该cp的cpmv。若候选cpmv的组合个数不足2组,按v2、v1、v0的顺序,将第一个可获取的cpmv当作所有cp的cpmv,作为cpmv组合加入到候选列表中。从时域参考点获取cpmv,由图2中c0位置同位块的mv经伸缩得到,伸缩方法与常规amvp中时域mv的伸缩方法相同,在此不再赘述。若c0位置同位块不可用,则用c1位置同位块替换。获取的时域mv将当作所有cp点的cpmv,作为cpmv组合加入到候选列表中。用零mv填充所有cpmv作为组合加入到cpmv候选列表中。三、基于帧内块拷贝(intrablockcopy,ibc)的amvp模式基于帧内块拷贝的amvp模式(本实施例及下述实施例中,若无特别说明,简写为ibc_amvp)的候选列表中包含2个候选运动矢量。当前编码块的相邻块的位置关系如图1所示,将相邻块存在且该块是ibc块(即模式是ibc_amvp模式或ibc_merge模式)的mv按照a1->b1的先后顺序依次填充到候选列表中,直到填充满为止。当候选列表还未填充满时,将已编码块hmvp列表中的mv依次和空域a1和b1的mv进行比较,将不同的mv填充到候选列表中,直到候选列表填满为止。如果候选列表还没有填满,将候选列表中剩下的mv都用零mv填充。四、基于哈希(hash)的amvp模式哈希帧间模式根据当前块的哈希值去参考帧中寻找哈希值相同的匹配块,并得到相应的mv。哈希amvp模式的mv候选列表的构建方法和常规amvp模式相同,但哈希amvp模式只需构建1/4像素、整像素和4倍整像素精度的mv候选列表。哈希amvp模式的运动搜索基于每个编码块的哈希值。对于4x4的编码块,将编码块分成4个2x2的块,并分别计算每个2x2块的crc(cyclicredundancycheck,循环冗余校验)值。再把这4个哈希值合并成一个总的哈希值作为当前4*4块的哈希值;对于其他nxn(n>4)的编码块,将编码块分成m个4x4的块,并分别计算每个4x4块的crc(cyclicredundancycheck,循环冗余校验)值。再把这m个哈希值合并成一个总的哈希值作为当前nxn块的哈希值。计算参考帧中所有与当前块尺寸相同的块的哈希值,从前向/后向的参考帧的中找哈希值与当前块相同的匹配块。假设找到多个匹配块,获取每个匹配块的mv,比较运动矢量差mvd(motionvectordifference)(mv-amvp)在整像素精度、4倍精度和1/4精度所需要的比特数和亮度失真satd组成的rdcost代价,rdcost代价最小的mv即为最佳mv。请参阅图5,图5是本申请运动矢量的预测方法一实施例的流程示意图。具体而言,可以包括如下步骤:步骤s51:获取当前编码块在预设预测模式下的候选列表,其中,候选列表包括多个候选运动矢量。本实施例中,预设预测模式包括多种预测模式中的任一种。在一个实施场景中,多种预测模式可以包括:常规amvp模式、仿射amvp模式、基于帧内块拷贝的amvp模式(即ibc_amvp模式)、哈希amvp模式。候选列表可以是预先构建的,关于在上述预设预测模式下构建候选列表的具体方式可以参考前述实施例中的相关步骤,在此不再赘述。步骤s52:对候选列表中的多个候选运动矢量进行运动搜索,得到预设预测模式下当前编码块的初始最佳运动矢量。在一个实施场景中,为了简化不同像素精度的候选运动矢量进行运动搜索的过程,可以获取当前编码块在预设预测模式下的与整像素精度对应的候选列表,并通过整像素精度对候选列表中的多个候选运动矢量进行运动搜素,获取初始最佳运动矢量。在一个具体的实施场景中,以预设预测模式包括常规amvp模式为例,可以对候选列表中的多个候选运动矢量进行运动搜索可以采用tz搜索方法进行实施。具体地,可以对候选列表中的候选运动矢量进行运动补偿,并计算其基于sad(sumofabsolutedifference,绝对差值和)的rdcost(ratedistortioncost,率失真代价),选出rdcost最小的候选运动矢量作为tz搜索的起始运动矢量。以起始运动矢量进行tz搜索,每次搜索获取与当前块尺寸相同的匹配块,采用匹配块的像素与当前编码块的原始像素值做差,获得基于sad的rdcost,选择rdcost最小的mv作为初始最佳运动矢量。在另一个具体的实施场景中,以预设预测模式包括仿射amvp模式为例,可以采用光流更新cpmv。具体地,可以根据每个4*4子块中心点与cp点的位置关系,采用cpmv仿射的方式来获取每个子块的mv,每个子块获取mv后,通过运动补偿差值滤波器获取每个子块的预测值,将所有子块的预测值组合得出整个匹配块的像素值。采用匹配块的像素值与当前编码块的原始像素值做差,获得基于satd(sumofabsolutetransformeddifference,即对残差进行哈德曼变换后的系数绝对和)的rdcost,选择rdcost最小的cpmv组合作为cpmvp(controlpoint’smotionvectorprediction,控制点的运动矢量预测值),采用cpmvp基于光流来迭代更新cpmv,每次迭代过程中都基于光流和梯度信息更新仿射模型参数和cpmv,并计算每次迭代的cpmv的基于satd的rdcost,从多次迭代中选择rdcost最小的cpmv组合作为初始最佳运动矢量。在有一个具体地实施场景中,以预设预测模式包括ibc_amvp模式为例,除了可以采用运动搜索的方法获取初始最佳运动矢量,还可以采用哈希匹配的方法来获取初始最佳运动矢量。具体地,可以根据像素值对每一个4*4的块构建一个哈希值,哈希值相同的块表示这两个块4*4内的像素完全相同。如果,哈希匹配未能找到ibc_amvp的初始最佳运动矢量,则可以采用运动搜索的方式获取初始最佳运动矢量,具体可以参考前述相关步骤,在此不再赘述。此外,若预设预测模式包括哈希amvp模式,可以采用哈希匹配的方法进行运动搜索,具体可以参阅前述实施例中的相关步骤,在此不再赘述。步骤s53:采用第一预设数量种像素精度分别对初始最佳运动矢量进行运动补偿,确定得到当前编码块的最终最佳运动矢量。本实施例中,任一种预测模式下所采用的像素精度相同。例如,第一预设数量为3时,在任一种预设预测模式下所采用像素精度可以包括:1/4像素精度、1/16像素精度、整像素精度;或者,例如,第一预设数量为4时,在任一种预设预测模式下所采用的像素精度可以包括:1/4像素精度、1/16像素精度、整像素精度和4倍像素精度。在一个实施场景中,为了扩大预测范围,从而提高预测准确性,第一预设数量为整数,且不少于3,例如:3、4、5、6等等。具体地,上述像素精度可以包括但不限于:1/16像素精度、1/8像素精度、1/4像素精度、1/2像素精度、整像素精度、2倍像素精度、4倍像素精度、8倍像素精度、16倍像素精度。在一个实施场景中,为了节省后续编码数据量,可以采用像素精度标识符(integermotionvector,imv)来表示不同的像素精度,具体地,可以采用旁路编码或者上下文编码对不同的像素精度进行编码,得到对应的像素精度标识符。在一个具体的实施场景中,请参阅表1,表1是采用旁路编码的像素精度标识符和与其对应的像素精度之间的关系表。表1采用旁路编码的像素精度标识符和与其对应的像素精度之间的关系表像素精度标识符(imv)编码比特流对应的像素精度001/161101/821101/4311101/24111101(即整像素精度)5111114在一个实施场景中,为了进一步降低运动矢量预测的软硬件实现难度,在任一种预设预测模式下,同一种像素精度对应于同一个用于表示像素精度的像素精度标识符。例如,在上述常规amvp模式、仿射amvp模式、ibc_amvp模式、哈希amvp模式下,当imv为0时,均对应于1/16像素精度;当imv为1时,都对应于1/8像素精度;当imv为2时,都对应于1/4像素精度,其他imv可以以此类推,本实施例在此不再一一举例。在一个具体的实施场景中,以预设预测模式包括常规amvp模式,且第一预设数量种像素精度包括1/4像素精度、整像素精度、4倍像素精度和1/2像素精度为例,可以以运动搜索得到的初始最佳运动矢量为起始运动矢量,分别利用第一预设数量种像素精度对起始运动矢量进行偏移,例如,起始运动矢量以1/2像素精度进行偏移时,偏移向量可以包括以下至少一个:(0,0),(-1/2,0),(0,-1/2),(1/2,0),(0,1/2),(-1/2,-1/2),(1/2,-1/2),(-1/2,1/2),(1/2,1/2),其他像素精度可以以此类推,在此不再一一举例,从而在多个偏移后的运动矢量中选取rdcost最小的运动矢量作为最终最佳运动矢量,进而不同像素精度之间的运动补偿不存在依赖性,也有利于提高预测的准确性。在另一个具体的实施场景中,以预设预测模式包括仿射amvp模式,且第一预设数量种像素精度包括1/4像素精度、整像素精度、4倍像素精度和1/2像素精度为例,在经过运动搜索得到初始最佳运动矢量(即初始最佳cpmv)之后,可以将cpmv遍历以下偏移向量:(-offset,-offset),(-offset,offset),(offset,offset),(offset,-offset),(-offset,0),(0,-offset),(0,offset),(offset,0),其中,offset表示像素精度,从而选择rdcost最小的运动矢量作为最终最佳运动矢量。在又一个具体的实施场景中,还可以在常规amvp模式、仿射amvp模式和ibc_amvp模式、哈希amvp模式中至少两种模式下,分别获取当前编码块的候选列表,从基于上述步骤s12和步骤s13获取在这至少两种模式下的最终最佳运动矢量及其对应的率失真代价(rdcost),从而选择rdcost最小的最终最佳运动矢量作为当前编码块的最终最佳运动矢量。上述方案,获取当前编码块在预设预测模式下的候选列表,且候选列表包括多个候选运动矢量,从而对候选列表中的多个候选运动矢量进行运动搜索,得到预设预测模式下当前编码块的初始最佳运动矢量,并采用第一预设数量种像素精度分别对初始最佳运动矢量进行运动补偿,确定得到当前编码块的最终最佳运动矢量,且预设预测模式包括多种预测模式中的任一种,且在任一种预测模式下所采用的像素精度相同,进而能够统一多种预测模式所采用的像素精度,能够统一多种预测模式所采用的处理回路,从而能够降低运动矢量预测的软硬件实现难度,有利于提高预测的准确性。请参阅图6,图6是图5中步骤s53一实施例的流程示意图。具体地,在运动补偿过程中,不仅可以以运动搜索得到的初始最佳运动矢量为起始运动矢量,还可以以其他运动矢量作为起始运动矢量,从而扩大预测范围,有利于提高预测的准确性。具体地,可以包括如下步骤:步骤s531:分别采用第一预设数量种像素精度对初始最佳运动矢量进行细化处理,获得多个偏离于初始最佳运动矢量的第一偏移运动矢量。本实施例中,细化处理包括采用至少一个偏移向量进行偏移,偏移向量的水平分量和垂直分量包括像素精度、0中的任一者,且水平分量和垂直分量至少一者不为0,偏移向量的偏移方向包括以下任一者:右方、左方、下方、上方、右下方、左下方、右上方、左上方,本实施例中,水平分量和垂直分量均是指绝对值。以第一预设数量种像素精度中包含整像素精度,且初始最佳运动矢量(1,1)为例,对初始最佳运动矢量(1,1)以整像素精度进行细化时,可以分别采用以下偏移向量中的至少一个:偏移方向为右方的偏移向量(1,0),偏移方向为左方的偏移向量(-1,0),偏移方向为下方的偏移向量(0,-1),偏移方向为上方的偏移向量(0,1),偏移方向为右下方的偏移向量(1,-1),偏移方向为左下方的偏移向量(-1,-1),偏移方向为右上方的偏移向量(1,1),偏移方向为左上方的偏移向量(-1,1),则分别用上述偏移向量对初始最佳运动矢量(1,1)进行偏移之后,能够得到第一偏移运动矢量:(2,1),(0,1),(1,0),(1,2),(2,0),(0,0),(2,2,),(0,2),其他像素精度可以以此类推,在此不再一一举例。步骤s532:分别将第一预设数量种像素精度中每一种像素精度作为第一目标像素精度。例如,当第一预设数量种像素精度包括1/4像素精度、整像素精度、4倍像素精度和1/2像素精度时,可以分别将1/4像素精度、整像素精度、4倍像素精度和1/2像素精度作为第一目标像素精度。当第一预设数量种像素精度包含其他像素精度时,可以以此类推,在此不再一一举例。步骤s533:从初始最佳运动矢量,以及像素精度低于第一目标像素精度的第一偏移运动矢量中任选一个,作为与第一目标像素精度对应的起始运动矢量。仍以第一预设数量种像素精度包括1/4像素精度、整像素精度、4倍像素精度和1/2像素精度为例,当第一目标像素精度为整像素精度时,可以从初始最佳运动矢量,以及低于整像素精度的4倍像素精度对应的第一偏移运动矢量中任选一个,作为与整像素精度对应的起始运动矢量。其他情况可以以此类推,在此不再一一举例。步骤s534:分别利用第一目标像素精度对与其对应的起始运动矢量进行细化处理,获得多个偏离于起始运动矢量的第二偏移运动矢量。仍以第一目标像素精度为整像素精度为例,可以利用整像素精度对起始运动矢量进行细化处理,具体可以参阅本实施例前述相关步骤,在此不再赘述。经过细化处理,能够得到多个偏离于起始运动矢量的第二偏移运动矢量。当分别将第一预设数量种像素精度中的其他像素精度作为第一目标像素精度,可以对应获得与其他像素精度对应的多个第二偏移运动矢量。步骤s535:从多个第二偏移运动矢量中选取率失真代价符合预设筛选条件的运动矢量,作为当前编码块的最终最佳运动矢量。本实施例中,预设筛选条件包括率失真代价最小,即从多个第二偏移运动矢量中,选取率失真代价最小的运动矢量,作为当前编码块的最终最佳运动矢量。区别于前述实施例,分别采用第一预设数量种像素精度对初始最佳运动矢量进行细化处理,获得多个偏离于初始最佳运动矢量的第一偏移运动矢量,并分别将第一预设数量种像素精度中每一种像素精度作为第一目标像素精度,从而从初始最佳运动矢量,以及像素精度低于第一目标像素精度的第一偏移运动矢量中任选一个,作为与第一目标像素精度对应的起始运动矢量,并分别利用第一目标像素精度对与其对应的起始运动矢量进行细化处理,获得多个偏离于起始运动矢量的第二偏移运动矢量,进而从多个第二偏移运动矢量中选取率失真代价符合预设筛选条件的运动矢量,作为当前编码块的最终最佳运动矢量,能够扩大运动补偿过程中可能要遍历检查的运动矢量,从而能够提高预测的准确性。请参阅图7,图7是本申请视频编码方法一实施例的流程示意图。具体而言,可以包括如下步骤:步骤s71:构建当前编码块在预设预测模式下的候选列表。本实施例中,候选列表中包含多个候选运动矢量。具体可以参考前述实施例中的相关步骤。步骤s72:基于候选列表,获得当前编码块的最终最佳运动矢量。本实施例中,最终最佳运动矢量是利用任一运动矢量的预测方法实施例中的步骤获得的。具体可以参考前述实施例中的相关步骤。步骤s73:选取多个候选运动矢量中的一个作为预测运动矢量,并基于预测运动矢量和最终最佳运动矢量对当前编码块进行编码。选取候选列表中其中一个候选运动矢量作为预测运动矢量,并基于预测运动矢量和最终最佳运动矢量对当前编码块进行编码。例如,可以基于预测运动矢量和最终最佳运动矢量,获得运动矢量差(motionvectordifference,mvd),并基于预测运动矢量在候选列表中的索引值,对最终最佳运动矢量进行句法元素表达,从而基于句法元素表达对当前编码块进行编码。在一个具体的实施场景中,上述候选列表以及预测得到的最终最佳运动矢量都可以是与亮度分量对应的,在此基础上,为了实现对当前编码块进行编码,还可以基于与亮度分量对应的最终最佳运动矢量,得到与色度分量对应的最终最佳运动矢量,并从与色度分量对应的候选列表中所包含的多个候选运动矢量中选取一个作为与色度分量对应的预测运动矢量,并基于与亮度分量对应的预测运动矢量和最终最佳运动矢量,以及与色度分量对应的预测运动矢量和最终最佳运动矢量,对当前编码块进行编码。具体地,可以基于所采用的视频颜色空间中色度分量与亮度分度的精度比,获得与色度分量对应的候选列表和最终最佳运动矢量。例如,对于yuv420而言,对应的色度分量的精度为亮度分量的精度的一半,即当亮度分量的像素精度为1/16像素时,对应的色度分量的像素精度为1/32;或者,当亮度分量的像素精度为1/8像素时,对应的色度分量的像素精度为1/16,以此类推,在此不再一一举例。在此基础上,上述表1中各像素精度标识符(imv)所代表的像素精度均为亮度分量对应的像素精度,对应的色度分量的像素精度为亮度分量的像素精度的一半。例如,imv=0时,亮度分量对应的像素精度为1/16,色度分量对应的像素精度为1/32;或者,imv=1时,亮度分量对应的像素精度为1/8,色度分量对应的像素精度为1/16;或者,imv=2时,亮度分量对应的像素精度为1/4,色度分量对应的像素精度为1/8;或者,imv=3时,亮度分量对应的像素精度为1/2,色度分量对应的像素精度为1/4;或者,imv=4时,亮度分量对应的像素精度为1,色度分量对应的像素精度为1/2;或者,imv=5时,亮度分量对应的像素精度为4,色度分量对应的像素精度为2,其他情况可以此类类推,在此不再一一举例。上述方案,构建当前编码块在预设预测模式下的候选列表,且候选列表中包含多个候选运动矢量,从而基于候选列表,获得当前编码块的最终最佳运动矢量,且最终最佳运动矢量是利用上述任一运动矢量的预测方法实施例中的步骤得到的,并选取多个候选运动矢量中的一个作为预测运动矢量,并基于预测运动矢量和最终最佳运动矢量对当前编码块进行编码,能够降低运动矢量预测的软硬件实现难度,从而有利于优化视频编码质量。请参阅图8,图8是本申请视频编码方法另一实施例的流程示意图。具体地,可以包括如下步骤:步骤s81:在预设预测模式下,分别构建当前编码块与第二预设数量种像素精度对应的候选列表。在一个实施场景中,为了便于后续基于候选列表,获得当前编码块的最终最佳运动矢量,第二预设数量种像素精度至少包括整像素精度。与整像素精度对应的候选列表的构建过程具体可以参考前述实施例中的相关步骤,在此不再赘述。在一个具体的实施场景中,第二预设数量可以与前述实施例中的第一预设数量相同,例如,均为3,或者,均为4,在此不做限定。第二预设数量种像素精度中除整像素精度之外的其他像素精度对应的候选列表可以基于整像素精度对应的候选列表进行构建,具体地,可以先构建当前编码块与整像素精度对应的第一候选列表,其中,第一候选列表中包含多个第一候选运动矢量,分别将第二预设数量种像素精度中除整像素精度之外的其他像素精度作为第二目标像素精度,分别将第一候选列表中的多个候选运动矢量的像素精度转换为第二目标像素精度,得到与第二目标像素精度对应的第二候选列表,从而将第一候选列表和第二候选列表的组合,作为与第二预设数量种像素精度对应的候选列表。以整像素精度对应的运动矢量(1,1)为例,将其转换为1/2像素精度后为(2,2),将其转换为1/4像素精度后为(4,4),当第二目标像素精度为其他像素精度时,可以以此类推,在此不再一一举例。步骤s82:基于候选列表,获得当前编码块的最终最佳运动矢量。本实施例中,最终最佳运动矢量是利用上述任一运动矢量的预测方法实施例中的步骤得到的。具体地,当前编码块的最终最佳运动矢量是基于整像素精度对应的候选列表得到的。具体请参考前述实施例中的相关步骤。步骤s83:分别将第二预设数量种像素精度对应的候选列表中的候选运动矢量作为目标运动矢量。分别将第二预设数量种像素精度对应的候选列表中的每一个候选运动矢量作为目标运动矢量。步骤s84:获取目标运动矢量与最终最佳运动矢量之间的运动矢量差。获取目标运动矢量与最终最佳运动矢量之间的运动矢量差(mvd)。例如,目标运动矢量为(1,2),最终最佳运动矢量为(2,2)时,运动矢量差为(1,0);或者,目标运动矢量为(1,1),最终最佳运动矢量为(1.5,1.5),运动矢量差为(0.5,0.5),其他情况可以以此类推,在此不再一一举例。在一个实施场景中,为了让整像素精度之外的分像素精度对应的运动矢量仍能以整数表示,从而降低编码难度,并提高数据压缩率,可以把最终最佳运动矢量饱和处理为16倍像素精度,并把n倍像素精度的目标运动矢量饱和处理为16*n倍像素精度,然后将16倍像素精度的最终最佳运动矢量减去16*n倍像素精度的目标运动矢量,得到mvd,再将mvd饱和处理为16*n倍像素精度。然而,当n不为1时,mvd在饱和处理过程中,可能会造成误差。在一个具体的实施场景中,为了避免误差的产生,可以将最终最佳运动矢量饱和处理为16*n倍像素精度,并将目标运动矢量饱和处理为16*n倍像素精度,计算经饱和处理的最终最佳运动矢量和经饱和处理的目标运动矢量之间的矢量差,作为运动矢量差。例如,整像素精度的目标运动矢量(1.25,1.75),经过16*n倍像素精度的饱和处理后为(16,32),最终最佳运动矢量(1.5,1.5)饱和处理为16*n倍像素精度后为(24,24),则对应的运动矢量差为(8,8);或者,例如,1/4像素精度的目标运动矢量(1.25,1.75)饱和处理为16*n倍像素精度后为(20,28),最终最佳运动矢量(1.5,1.5)饱和处理为16*n倍像素精度后为(24,24),则对应的运动矢量差为(4,4)。其他情况可以以此类推,在此不再一一举例。步骤s85:统计与目标运动矢量对应的运动矢量差的第一编码比特开销,以及与目标运动矢量对应的像素精度的第二编码比特开销。运动矢量差的第一编码比特开销为运动矢量差经编码后的比特位数,像素精度的第二编码比特开销为像素精度经编码后的比特位数。以运动矢量差为(8,8)为例,采用二进制编码后为(1000,1000),故运动矢量差(8,8)的第一编码比特开销为8;或者,以运动矢量差为(4,4)为例,采用二进制编码后为(100,100),故运动矢量差的第一编码比特开销为6,当运动矢量差为其他值时,可以以此类推,在此不再一一举例。以像素精度为1/16为例,当采用旁路编码对像素精度进行编码时,请结合参阅上述实施例中的表1,其编码比特流为0,故像素精度1/16的第二编码比特开销为1;或者,以像素精度为1/2为例,当采用旁路编码对像素精度进行编码时,请结合参阅上述实施例中的表1,其编码比特流为1110,故像素精度1/16的第二编码比特开销为4,当像素精度为其他值时,可以以此类推,在此不再一一举例。步骤s86:将与目标运动矢量对应的第一编码比特开销和第二编码比特开销之和,作为与目标运动矢量对应的编码比特开销。计算与目标运动矢量对应的第一编码比特开销和第二编码比特开销之和,作为与目标运动矢量对应的编码比特开销。例如,目标运动矢量对应的第一编码比特开销为6,第二编码比特开销为5,则目标运动矢量对应的编码比特开销为11。步骤s87:将最小的编码比特开销对应的目标运动矢量作为预测运动矢量,并基于预测运动矢量和最佳运动矢量对当前编码块进行编码。分别将第二预设数量种像素精度对应的候选列表中的每一个候选运动矢量作为目标运动矢量,可以求得多个目标运动矢量对应的编码比特开销,从中选取最小的编码比特开销对应的目标运动矢量作为预测运动矢量,并基于预测运动矢量和最佳运动矢量对当前编码块进行编码。具体地,可以利用与预测运动矢量对应的运动矢量差和像素精度,以及预测运动矢量在候选列表中的索引值,对最终最佳运动矢量进行句法元素表达,并基于句法元素表达对当前编码块进行编码。区别于前述实施例,在预设预测模式下,分别构建当前编码块与第二预设数量种像素精度对应的候选列表,从而基于候选列表,获得当前编码块的最终最佳运动矢量,并分别将第二预设数量种像素精度对应的候选列表中的候选运动矢量作为目标运动矢量,从而获取目标运动矢量与最终最佳运动矢量之间的运动矢量差,并统计与目标运动矢量对应的运动矢量差的第一编码比特开销,以及与目标运动矢量对应的像素精度的第二编码比特开销,将与目标运动矢量对应的第一编码比特开销和第二编码比特开销之和,作为与目标运动矢量对应的编码比特开销,从而将最小的编码比特开销对应的目标运动矢量作为预测运动矢量,进而能够降低当前编码块经编码后的数据量,能够提升压缩率,有利于减轻传输负荷,减少视频编码后所占的存储空间。请参阅图9,图9是本申请运动矢量的预测装置90一实施例的框架示意图。运动矢量的预测装置90包括列表获取模块91、运动搜索模块92、运动补偿模块93,列表获取模块91用于获取当前编码块在预设预测模式下的候选列表,其中,候选列表包括多个候选运动矢量;运动搜索模块92用于对候选列表中的多个候选运动矢量进行运动搜索,得到预设预测模式下当前编码块的初始最佳运动矢量;运动补偿模块93用于采用第一预设数量种像素精度分别对初始最佳运动矢量进行运动补偿,确定得到当前编码块的最终最佳运动矢量;其中,预设预测模式包括多种预测模式中的任一种,且在任一种预测模式下所采用的像素精度相同。在一个实施场景中,第一预设数量为整数,且不小于3。在一个实施场景中,像素精度包括:1/16像素精度、1/8像素精度、1/4像素精度、1/2像素精度、整像素精度、2倍像素精度、4倍像素精度、8倍像素精度、16倍像素精度。在一个实施场景中,在任一种预设预测模式下,同一种像素精度对应于同一个用于表示像素精度的像素精度标识符。在一个实施场景中,多种预测模式包括:常规amvp模式、仿射amvp模式、基于帧内块拷贝的amvp模式、哈希amvp模式。上述方案,获取当前编码块在预设预测模式下的候选列表,且候选列表包括多个候选运动矢量,从而对候选列表中的多个候选运动矢量进行运动搜索,得到预设预测模式下当前编码块的初始最佳运动矢量,并采用第一预设数量种像素精度分别对初始最佳运动矢量进行运动补偿,确定得到当前编码块的最终最佳运动矢量,且预设预测模式包括多种预测模式中的任一种,且在任一种预测模式下所采用的像素精度相同,进而能够统一多种预测模式所采用的像素精度,能够统一多种预测模式所采用的处理回路,从而能够降低运动矢量预测的软硬件实现难度,从而有利于提高预测的准确性。在一些实施例中,运动补偿模块93包括第一细化处理子模块,用于分别采用第一预设数量种像素精度对初始最佳运动矢量进行细化处理,获得多个偏离于初始最佳运动矢量的第一偏移运动矢量,运动补偿模块93还包括第一目标像素精度选取子模块,用于分别将第一预设数量种像素精度中每一种像素精度作为第一目标像素精度,运动补偿模块93还包括起始运动矢量确定子模块,用于从初始最佳运动矢量,以及像素精度低于第一目标像素精度的第一偏移运动矢量中任选一个,作为与第一目标像素精度对应的起始运动矢量,运动补偿模块93还包括第二细化处理子模块,用于分别利用第一目标像素精度对与其对应的起始运动矢量进行细化处理,获得多个偏离于起始运动矢量的第二偏移运动矢量,运动补偿模块93还包括最终最佳运动矢量确定子模块,用于从多个第二偏移运动矢量中选取率失真代价符合预设筛选条件的运动矢量,作为当前编码块的最终最佳运动矢量。区别于前述实施例,分别采用第一预设数量种像素精度对初始最佳运动矢量进行细化处理,获得多个偏离于初始最佳运动矢量的第一偏移运动矢量,并分别将第一预设数量种像素精度中每一种像素精度作为第一目标像素精度,从而从初始最佳运动矢量,以及像素精度低于第一目标像素精度的第一偏移运动矢量中任选一个,作为与第一目标像素精度对应的起始运动矢量,并分别利用第一目标像素精度对与其对应的起始运动矢量进行细化处理,获得多个偏离于起始运动矢量的第二偏移运动矢量,进而从多个第二偏移运动矢量中选取率失真代价符合预设筛选条件的运动矢量,作为当前编码块的最终最佳运动矢量,能够扩大运动补偿过程中可能要遍历检查的运动矢量,从而能够提高预测的准确性。请参阅图10,图10是本申请视频编码装置100一实施例的框架示意图。视频编码装置100包括候选列表构建模块101、最终最佳运动矢量获得模块102和预测运动矢量选取模块103、编码模块104,候选列表构建模块101用于构建当前编码块在预设预测模式下的候选列表,其中,候选列表中包含多个候选运动矢量;最终最佳运动矢量获得模块102用于基于候选列表,获得当前编码块的最终最佳运动矢量,其中,最终最佳运动矢量是利用上述任一运动矢量的预测装置实施例中的运动矢量的预测装置获得的;预测运动矢量选取模块103用于选取多个候选运动矢量中的一个作为预测运动矢量,编码模块104用于基于预测运动矢量和最终最佳运动矢量对当前编码块进行编码。上述方案,构建当前编码块在预设预测模式下的候选列表,且候选列表中包含多个候选运动矢量,从而基于候选列表,获得当前编码块的最终最佳运动矢量,且最终最佳运动矢量是利用上述任一运动矢量的预测装置实施例中的运动矢量的预测装置得到的,并选取多个候选运动矢量中的一个作为预测运动矢量,并基于预测运动矢量和最终最佳运动矢量对当前编码块进行编码,能够降低运动矢量预测的软硬件实现难度,从而有利于提高预测的准确性,有利于优化视频编码质量。在一些实施例中,候选列表构建模块101具体用于在预设预测模式下,分别构建当前编码块与第二预设数量种像素精度对应的候选列表,预测运动矢量选取模块103包括目标运动矢量选取子模块,用于分别将第二预设数量种像素精度对应的候选列表中的候选运动矢量作为目标运动矢量,预测运动矢量选取模块103还包括运动矢量差获取子模块,用于获取目标运动矢量与最终最佳运动矢量之间的运动矢量差,预测运动矢量选取模块103还包括编码比特开销统计子模块,用于统计与目标运动矢量对应的运动矢量差的第一编码比特开销,以及与目标运动矢量对应的像素精度的第二编码比特开销,预测运动矢量选取模块103还包括编码比特开销计算子模块,用于将与目标运动矢量对应的第一编码比特开销和第二编码比特开销之和,作为与目标运动矢量对应的编码比特开销,预测运动矢量选取模块103还包括预测运动矢量确定子模块,用于将最小的编码比特开销对应的目标运动矢量作为预测运动矢量。在一个实施场景中,运动矢量差的第一编码比特开销为运动矢量差经编码后的比特位数,像素精度的第二编码比特开销为像素精度经编码后的比特位数。区别于前述实施例,在预设预测模式下,分别构建当前编码块与第二预设数量种像素精度对应的候选列表,从而基于候选列表,获得当前编码块的最终最佳运动矢量,并分别将第二预设数量种像素精度对应的候选列表中的候选运动矢量作为目标运动矢量,从而获取目标运动矢量与最终最佳运动矢量之间的运动矢量差,并统计与目标运动矢量对应的运动矢量差的第一编码比特开销,以及与目标运动矢量对应的像素精度的第二编码比特开销,将与目标运动矢量对应的第一编码比特开销和第二编码比特开销之和,作为与目标运动矢量对应的编码比特开销,从而将最小的编码比特开销对应的目标运动矢量作为预测运动矢量,进而能够降低当前编码块经编码后的数据量,能够提升压缩率,有利于减轻传输负荷,减少视频编码后所占的存储空间。在一些实施例中,运动矢量差获取子模块包括饱和处理单元,用于将最终最佳运动矢量饱和处理为16*n倍像素精度,并将目标运动矢量饱和处理为16*n倍像素精度,其中,n为目标运动矢量对应的像素精度,运动矢量差获取子模块还包括运动矢量差计算单元,用于计算经饱和处理的最终最佳运动矢量和经饱和处理的目标运动矢量之间的矢量差,作为运动矢量差。区别于前述实施例,将最终最佳运动矢量饱和处理为16*n倍像素精度,并将目标运动矢量饱和处理为16*n倍像素精度,且n为目标运动矢量对应的像素精度,从而计算经饱和处理的最终最佳运动矢量和经饱和处理的目标运动矢量之间的矢量差,作为运动矢量差,能够使得分像素精度的运动矢量仍能以整数表示,且能够消除n不为1时,饱和处理过程中可能产生的误差,进而能够方便、准确地进行编码。在一些实施例中,编码模块104包括句法元素表达子模块,用于利用与预测运动矢量对应的运动矢量差和像素精度,以及预测运动矢量在候选列表中索引值,对最终最佳运动矢量进行句法元素表达,编码模块104还包括编码子模块,用于基于句法元素表达对当前编码块进行编码。在一些实施例中,第二预设数量种像素精度至少包括整像素精度,候选列表构建模块101包括第一候选列表构建子模块,用于构建当前编码块与整像素精度对应的第一候选列表,其中,第一候选列表中包含多个第一候选运动矢量,候选列表构建模块101还包括第二目标像素精度选取子模块,用于分别将第二预设数量种像素精度中除整像素精度之外的其他像素精度作为第二目标像素精度,候选列表构建模块101还包括第二候选列表构建子模块,用于分别将第一候选列表中的多个第一候选运动矢量的像素精度转换为第二目标像素精度,得到与第二目标像素精度对应的第二候选列表,候选列表构建模块101还包括候选列表组合子模块,用于将第一候选列表和第二候选列表的组合,作为与第二预设数量种像素精度对应的候选列表。请参阅图11,图11是本申请运动矢量的预测设备110一实施例的框架示意图。运动矢量的预测设备110包括相互耦接的存储器111和处理器112,存储器111用于存储程序指令,处理器112用于执行程序指令以实现上述任一运动矢量的预测方法实施例中的步骤。具体而言,处理器112用于控制其自身以及存储器111以实现上述任一运动矢量的预测方法实施例中的步骤。处理器112还可以称为cpu(centralprocessingunit,中央处理单元)。处理器112可能是一种集成电路芯片,具有信号的处理能力。处理器112还可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器112可以由多个集成电路芯片共同实现。上述方案,获取当前编码块在预设预测模式下的候选列表,且候选列表包括多个候选运动矢量,从而对候选列表中的多个候选运动矢量进行运动搜索,得到预设预测模式下当前编码块的初始最佳运动矢量,并采用第一预设数量种像素精度分别对初始最佳运动矢量进行运动补偿,确定得到当前编码块的最终最佳运动矢量,且预设预测模式包括多种预测模式中的任一种,且在任一种预测模式下所采用的像素精度相同,进而能够统一多种预测模式所采用的像素精度,能够统一多种预测模式所采用的处理回路,从而能够降低运动矢量预测的软硬件实现难度,有利于提高预测的准确性。请参阅图12,图12是本申请视频编码设备120一实施例的框架示意图。视频编码设备120包括相互耦接的存储器121和处理器122,存储器121用于存储程序指令,处理器122用于执行程序指令以实现上述任一视频编码方法实施例中的步骤。具体而言,处理器122用于控制其自身以及存储器121以实现上述任一视频编码方法实施例中的步骤。处理器122还可以称为cpu(centralprocessingunit,中央处理单元)。处理器122可能是一种集成电路芯片,具有信号的处理能力。处理器122还可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器122可以由多个集成电路芯片共同实现。上述方案,构建当前编码块在预设预测模式下的候选列表,且候选列表中包含多个候选运动矢量,从而基于候选列表,获得当前编码块的最终最佳运动矢量,且最终最佳运动矢量是利用上述任一运动矢量的预测方法实施例中的步骤得到的,并选取多个候选运动矢量中的一个作为预测运动矢量,并基于预测运动矢量和最终最佳运动矢量对当前编码块进行编码,能够降低运动矢量预测的软硬件实现难度,从而有利于提高预测的准确性,有利于优化视频编码质量。请参阅图13,图13是本申请存储装置130一实施例的框架示意图。存储装置130存储有程序指令131,程序指令131能够被处理器执行以实现上述任一运动矢量的预测方法实施例中的步骤,或实现上述任一视频编码方法实施例中的步骤。上述方案,能够降低运动矢量预测的软硬件实现难度,从而有利于提高预测的准确性,有利于优化视频编码质量。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
,均同理包括在本申请的专利保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1