一种确定运动矢量预测值的方法以及相关设备与流程

文档序号:16632763发布日期:2019-01-16 06:43阅读:254来源:国知局
一种确定运动矢量预测值的方法以及相关设备与流程

本发明涉及图像编解码技术领域,尤其涉及一种确定运动矢量预测值的方法以及相关设备。



背景技术:

预测编码是视频压缩中基本的编码工具,常见的预测编码为帧间预测和帧内预测。帧间预测是指利用视频时间域相关性,使用之前临近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的,其基本原理为:基于视频序列通常具有很强的时域相关性,为当前图像(currentframe)的每个当前编码块在之前已编码图像中寻找一个最佳匹配的参考块,将参考块中的像素点的像素值作为当前编码块中像素点的像素值的预测值,并获取各个当前编码块的运动信息,其中,参考块到当前编码块的位移称为运动矢量(motionvector,mv),该已编码图像又称为参考图像(referenceframe),该运动信息包含参考图像的指示信息和运动矢量mv。因此,编码侧不需要向解码侧发送每幅图像的全部信息,只需将当前图像的中的运动信息传递到解码侧,解码侧根据该运动信息可解码得到当前图像。

在视频传输技术的实现上,编码侧和解码侧之间传输的压缩码流的相当一部分比例用于传输运动信息。尤其对于高清视频的传输,在低码率情况下,用于表示运动信息所耗费比特的占比往往超过总码流的50%。因此,对运动信息进行高效编码是提升编码传输效率的重要手段。在视频的当前图像中,临近位置的编码块可能属于同一物体或同一运动场景,这些编码块的运动(变化)具有相似性,因此,编解码标准中,为了减少运动信息所消耗的比特,可使用当前编码块的临近块的运动信息来预测当前编码块的运动信息。编码侧将运动信息中的mv进行差分编码,分为mv预测值和运动矢量差值(motionvectordifference,mvd)两部分,其中,mv预测值不直接编码,可由时域和空域临近运动矢量导出;mvd编码并在码流中传输。解码侧提取码流中的mvd,以及推导出mv预测值,将mv预测值加上mvd得到最终mv。如果推导出的mv预测值越接近最终mv,那么需要传递的mvd越小,即可降低运动信息所耗费比特。因此,mv预测值的导出技术对于高效视频编码至关重要,目前涉及mv预测值导出技术的视频编解码标准包括高效视频编码(highefficiencyvideocoding,hevc),高级视频编码(advancedvideocoding,avc),动态图像专家组(movingpictureexpertsgroup,mpeg)等。

然而,随着不断演进的视频服务的出现,以及用户对视频传输需要的增加,如何进一步减少编码和解码的时间,降低码率,提高视频传输效率,仍然是当前编解码技术的一个挑战。



技术实现要素:

本发明实施例提供一种确定运动矢量预测值的方法以及相关设备,能够进一步减少编码和解码的时间,降低码率,提高视频传输效率。

第一方面,本发明实施例提供了一种确定运动矢量预测值的方法,该方法包括:获取待处理块的运动矢量精度;获取所述待处理块的至少一个第一预测运动矢量;根据所述运动矢量精度,以及根据所述至少一个第一预测运动矢量确定目标预测运动矢量,所述目标预测运动矢量具有所述运动矢量精度。

其中,运动矢量精度(又可称为mv精度)可为进行运动估计和运动补偿所需要的精度,也就是说,所述mv精度指示码流中mvd的精度,也指示了生成的运动矢量预测值(mv预测值,或称mvp)的精度,同样指示了最终合成的mv的精度。

在一种获取待处理块的运动矢量精度的可能的实施例中,所述方法应用于解码侧,解码侧通过码流中的精度指示信息来获取mv精度,其中,该精度指示信息指示所述mv精度。具体的实现中,在编码侧配置有精度选择策略,在精度选择策略覆盖1/8像素精度、1/4像素精度、半像素精度、四像素精度等等全部精度,编码侧生成mvd的过程中,根据精度选择策略确定mvd的精度,对整个编码单元(codingunit,cu)在码流中传送一个精度指示信息,该精度指示信息用于指示mvd的精度(即mv精度);解码侧获取码流中的精度指示信息,通过精度指示信息获取mv精度。根据需要使用的mv精度即mvd的精度,对解码侧运动矢量导出技术生成运动矢量预测值的过程中的各个步骤分别进行调整。

在又一种获取待处理块的运动矢量精度的可能的实施例中,编码侧/解码侧根据需要从多个预设mv精度中获取所述mv精度。编码侧根据精度选择策略对所需要传递的视频数据进行判断,从所述多个精度中确定一个精度作为进行编码的精度,在编码后获得mvd,在码流中传递mvd,但不传送精度指示信息。解码侧同样配置有精度选择策略,解码侧可基于提前获取并解码的图像(已解码图像)进行判断,从所述多个精度中确定一个精度作为本次解码的精度。由于编码侧和解码侧使用一致的精度选择策略,故解码侧可确定的精度与编码侧所确定的精度一致。

其中,第一预测运动矢量又称为起始点运动矢量,在可能的实现方式中,获取所述待处理块的至少一个第一预测运动矢量,具体为:建立起始点运动矢量列表,该起始点运动矢量列表包括一个或多个起始点运动矢量。

本发明实施例有益效果包括,在生成目标预测运动矢量的过程会按照所需的mv精度进行调整,保证了进行调整所获得的搜索位置是符合mv精度的准确位置,避免出现对多余的精度进行了运动搜索,可以减小编码和解码运算量,减少传输码率和编码时间。

结合第一方面,在第一种可能的实施方式中,所述根据所述运动矢量精度,以及根据所述至少一个第一预测运动矢量确定目标预测运动矢量,所述目标预测运动矢量具有所述运动矢量精度,包括:根据所述第二预测运动矢量,确定至少一个第三预测运动矢量;根据所述运动矢量精度,从所述至少一个第三预测运动矢量中确定所述目标预测运动矢量。

结合第一方面,在第一种可能的实施方式中,确定目标预测运动矢量的过程可以是:根据所述运动矢量精度,从所述至少一个第一预测运动矢量中确定第二预测运动矢量,所述第二预测运动矢量具有所述运动矢量精度;根据所述第二预测运动矢量,确定至少一个第三预测运动矢量;根据所述运动矢量精度,从所述至少一个第三预测运动矢量中确定所述最优预测运动矢量。

结合第一方面的第一种可能的实施方式,在第一种可能的实施例中,所述根据所述第二预测运动矢量,确定至少一个第三预测运动矢量,包括:对所述至少一个第一预测运动矢量进行数值处理,所述数值处理用于使所述至少一个第一预测运动矢量具有所述运动矢量精度,处理后的所述至少一个第一预测运动矢量具有所述运动矢量精度;以每一个所述处理后的至少一个第一预测运动矢量为所述当前块的模板的运动矢量,在所述当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块,所述模板为与所述当前块具有预设位置关系的预设尺寸的图像块;计算每一个所述模板和所述模板对应的匹配图像块的像素差异,所述像素差异用于表征作为所述模板的运动矢量的所述第一预测运动矢量的代价值;将所述代价值最小的第一预测运动矢量作为所述第二预测运动矢量。

结合第一方面的第一种可能的实施方式,在第二种可能的实施例中,所述根据所述第二预测运动矢量,确定至少一个第三预测运动矢量,包括:以每一个所述至少一个第一预测运动矢量为所述当前块的模板的运动矢量,在所述当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块,所述模板为与所述当前块具有预设位置关系的预设尺寸的图像块;计算每一个所述模板和所述模板对应的匹配图像块的像素差异,所述像素差异用于表征作为所述模板的运动矢量的所述第一预测运动矢量的代价值;对所述代价值最小的第一预测运动矢量进行数值处理,所述数值处理用于使所述代价值最小的第一预测运动矢量具有所述运动矢量精度;将所述处理后的代价值最小的第一预测运动矢量作为所述第二预测运动矢量。

结合第一方面的第一种可能的实施方式,在第三种可能的实施例中,所述根据所述运动矢量精度,从所述至少一个第三预测运动矢量中确定所述目标预测运动矢量,包括:以每一个所述至少一个第三预测运动矢量为所述当前块的模板的运动矢量,在所述当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块,所述模板为与所述当前块具有预设位置关系的预设尺寸的图像块,所述第三预测运动矢量由对所述第二预测运动矢量进行预设的修正确定;计算每一个所述模板和所述模板对应的匹配图像块的像素差异,所述像素差异用于表征作为所述模板的运动矢量的所述第三预测运动矢量的代价值;对所述代价值最小的第三预测运动矢量进行数值处理,所述数值处理用于使所述代价值最小的第三预测运动矢量具有所述运动矢量精度;将所述处理后的代价值最小的第三预测运动矢量作为所述目标预测运动矢量。

其中,目标预测运动矢量为在编解码过程中生成实际的mv时所可能会用到的预测运动矢量(预测运动矢量或者可称运动矢量预测值)。例如,在一具体实现中,目标预测运动矢量又可简称最优运动矢量,当该最优运动矢量为基于dmvd技术生成时,该最优运动矢量可作为dmvd运动矢量预测值。

其中,第二预测运动矢量为所述至少一个第一预测运动矢量中通过某种算法所确定的代价值最小的预测运动矢量。例如,在一具体实现中,所述至少一个第一预测运动矢量为起始点运动矢量列表,那么第二预测运动矢量就是该列表中匹配失真最小的起始点预测运动矢量,又可以称为最优起始点运动矢量。

其中,可以从第二预测运动矢量所指示的起始点开始,在某种搜索算法指定的搜索范围内进行搜索,通过搜索可找到至少一个第三预测运动矢量。例如,在一可能的实现方式中,以第二预测运动矢量所指示的起始点为中心点进行搜索,那么,所确定到的至少一个第三预测运动矢量包括第二预测运动矢量以及第二预测运动矢量周围的多个搜索样式点对应的预测运动矢量。分别计算所述至少一个第三预测运动矢量的匹配失真,若其中的中心点对应的匹配失真最小,则结束搜索,中心点的运动矢量即为目标预测运动矢量。

结合第一方面的第一种可能的实施方式的第三种可能的实施例,在具体的实施例中,所述第三预测运动矢量包括第三预测运动矢量水平分量和第三预测运动矢量竖直分量,所述第二预测运动矢量包括第二预测运动矢量水平分量和第二预测运动矢量竖直分量;所述第三预测运动矢量由对所述第二预测运动矢量进行预设的修正确定,包括:所述第三预测运动矢量水平分量为所述第二预测运动矢量水平分量和第一预设偏移值之和;所述第三预测运动矢量竖直分量为所述第二预测运动矢量竖直分量和第二预设偏移值之和。

结合第一方面的第一种可能的实施方式的第三种可能的实施例,在具体的实施例中,所述第一预设偏移值为所述运动矢量精度的数值的整数倍,且所述第二预设偏移值具有所述运动矢量精度的数值的整数倍。

在具体的实施例中,在所述以每一个所述至少一个第三预测运动矢量为所述当前块的模板的运动矢量,在所述当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块之前,还包括:确定具有所述运动矢量精度的所述至少一个第三预测运动矢量;

对应的,所述以每一个所述至少一个第三预测运动矢量为所述当前块的模板的运动矢量,在所述当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块,包括:以每一个具有所述运动矢量精度的第三预测运动矢量为所述当前块的模板的运动矢量,在所述当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块。

在具体实施例中,在所述根据所述至少一个第一预测运动矢量确定目标预测运动矢量之后,还包括:将所述目标预测运动矢量加入到所述当前块的第一候选运动矢量预测值列表,所述第一候选预测运动矢量列表中的候选预测运动矢量具有所述运动矢量精度,所述候选预测运动矢量包括和所述当前块的相邻图像块的运动矢量和所述当前块在时域上对应位置块的运动矢量。其中,所述候选预测运动矢量在所述第一候选预测矢量列表中按照预设顺序排列,所述将所述目标预测运动矢量加入到所述当前块的第一候选运动矢量预测值列表的过程,包括:在所述目标预测运动矢量和所述第一候选预测运动矢量列表中排在所述顺序第一位的候选预测运动矢量不同的情况下,从所述第一候选预测运动矢量列表中排除排在所述顺序第二位的候选预测运动矢量,且将所述目标预测运动矢量和所述顺序第一位的候选预测运动矢量依次置于所述第一候选预测运动矢量列表的前两位。

在本发明实施例中,所述数值处理包括:舍入(rounding)处理。所述舍入处理可以是但不限于是四舍五入的处理方式,所述舍入处理还可以是其他处理方式。

在可能的实施例中,所述数值处理包括:用于使所述至少一个第一预测运动矢量具有所述运动矢量精度,或,用于使所述代价值最小的第一预测运动矢量具有所述运动矢量精度,或,用于使所述代价值最小的第三预测运动矢量具有所述运动矢量精度

第二方面,本发明实施例提供了一种用于确定运动矢量预测值的设备,该设备包括:设备可以是应用于编码侧,也可以是应用于解码侧。该设备包括处理器、存储器,所述处理器和存储器相连接(如通过总线相互连接),在可能的实施方式中,该设备还可包括收发器,收发器连接处理器和存储器,用于接收/发送数据。存储器用于存储程序代码和视频数据。处理器可用于读取所存储器中存储的程序代码,执行第一方面所描述的方法。

第三方面,本发明实施例提供了一种又一种用于确定运动矢量预测值的设备,该设备包括第一获取模块、第二获取模块和确定模块。其中:第一获取模块用于获取待处理块的运动矢量精度;第二获取模块用于获取所述待处理块的至少一个第一预测运动矢量;确定模块用于根据所述运动矢量精度,以及根据所述至少一个第一预测运动矢量确定目标预测运动矢量,所述目标预测运动矢量具有所述运动矢量精度。可以理解的,该设备用于实现第一方面所描述的方法。

第四方面,本发明实施例提供了一种视频编解码系统,该视频编解码系统包括源装置及目的地装置。源装置与目的地装置可进行通信连接。源装置产生经编码视频数据。因此,源装置可被称作视频编码装置或视频编码设备。目的地装置可解码由源装置产生的经编码视频数据。因此,目的地装置可被称作视频解码装置或视频解码设备。源装置及目的地装置可为视频编解码装置或视频编解码设备的实例。第一方面所描述的方法会应用在该视频编解码装置或视频编解码设备,也就是说,所述视频编解码系统可用于实现第一方面所描述的方法。

第五方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。

第六方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。

实施本发明实施例,在生成目标预测运动矢量的过程会按照所需的mv精度进行调整,保证了进行调整所获得的搜索位置是符合mv精度的准确位置,避免出现对多余的精度进行了运动搜索。并且,在生成候选运动矢量预测值列表的过程会按照所需的mv精度进行调整,将目标预测运动矢量插入候选运动矢量预测值列表时,由于两者都符合mv精度,所以可以避免出现白白损失原候选运动矢量预测值列表中的运动矢量预测值的状况。通过实施本发明实施例,可以减小编码和解码运算量,减少传输码率和编码时间,提升编码质量,提高编码效率,进而提升用户体验。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。(待定稿时补充)

图1是本发明实施例提供的一种视频编解码系统的示意性框图;

图2是本发明实施例提供的一种视频编解码装置的示意性框图;

图3是本发明实施例提供的一种用于视频编码的装置的结构示意图;

图4是本发明实施例提供的一种确定运动矢量预测值的方法的流程示意图;

图5是本发明实施例提供的又一种确定运动矢量预测值的方法的流程示意图;

图6是本发明实施例提供的一种生成dmvd运动矢量预测值的的流程示意图;

图7是本发明实施例提供的又一种生成dmvd运动矢量预测值的的流程示意图;

图8是本发明实施例提供的又一种生成dmvd运动矢量预测值的的流程示意图;

图9是本发明实施例提供的一种用于确定运动矢量预测值的设备的结构示意图;

图10是本发明实施例提供的又一种用于确定运动矢量预测值的设备的结构示意图。

具体实施方式

下面结合本发明实施例中的附图对本发明实施例进行描述。

首先介绍本发明实施例所应用的系统框架,首先参见图1,图1是本发明实施例提供的一种视频编解码系统10的示意性框图。如图1所示,视频编解码系统10包含源装置12及目的地装置14。源装置12产生经编码视频数据。因此,源装置12可被称作视频编码装置或视频编码设备。目的地装置14可解码由源装置12产生的经编码视频数据。因此,目的地装置14可被称作视频解码装置或视频解码设备。源装置12及目的地装置14可为视频编解码装置或视频编解码设备的实例。源装置12及目的地装置14可包括广泛范围的装置,包含台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、智能电话等手持机、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机,或其类似者。

目的地装置14可经由信道16接收来自源装置12的编码后的视频数据。信道16可包括能够将经编码视频数据从源装置12移动到目的地装置14的一个或多个媒体及/或装置。在一个实例中,信道16可包括使源装置12能够实时地将编码后的视频数据直接发射到目的地装置14的一个或多个通信媒体。在此实例中,源装置12可根据通信标准(例如,无线通信协议)来调制编码后的视频数据,且可将调制后的视频数据发射到目的地装置14。所述一个或多个通信媒体可包含无线及/或有线通信媒体,例如射频(rf)频谱或一根或多根物理传输线。所述一个或多个通信媒体可形成基于包的网络(例如,局域网、广域网或全球网络(例如,因特网))的部分。所述一个或多个通信媒体可包含路由器、交换器、基站,或促进从源装置12到目的地装置14的通信的其它设备。

在另一实例中,信道16可包含存储由源装置12产生的编码后的视频数据的存储媒体。在此实例中,目的地装置14可经由磁盘存取或卡存取来存取存储媒体。存储媒体可包含多种本地存取式数据存储媒体,例如蓝光光盘、dvd、cd-rom、快闪存储器,或用于存储经编码视频数据的其它合适数字存储媒体。

在另一实例中,信道16可包含文件服务器或存储由源装置12产生的编码后的视频数据的另一中间存储装置。在此实例中,目的地装置14可经由流式传输或下载来存取存储于文件服务器或其它中间存储装置处的编码后的视频数据。文件服务器可以是能够存储编码后的视频数据且将所述编码后的视频数据发射到目的地装置14的服务器类型。实例文件服务器包含web服务器(例如,用于网站)、文件传送协议(ftp)服务器、网络附加存储(nas)装置,及本地磁盘驱动器。

目的地装置14可经由标准数据连接(例如,因特网连接)来存取编码后的视频数据。数据连接的实例类型包含适合于存取存储于文件服务器上的编码后的视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、缆线调制解调器等),或两者的组合。编码后的视频数据从文件服务器的发射可为流式传输、下载传输或两者的组合。

本发明的技术不限于无线应用场景,示例性的,可将所述技术应用于支持以下应用等多种多媒体应用的视频编解码:空中电视广播、有线电视发射、卫星电视发射、流式传输视频发射(例如,经由因特网)、存储于数据存储媒体上的视频数据的编码、存储于数据存储媒体上的视频数据的解码,或其它应用。在一些实例中,视频编解码系统10可经配置以支持单向或双向视频发射,以支持例如视频流式传输、视频播放、视频广播及/或视频电话等应用。

在图1的实例中,源装置12包含视频源18、视频编码器20及输出接口22。在一些实例中,输出接口22可包含调制器/解调器(调制解调器)及/或发射器。视频源18可包含视频俘获装置(例如,视频相机)、含有先前俘获的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频输入接口,及/或用于产生视频数据的计算机图形系统,或上述视频数据源的组合。

视频编码器20可编码来自视频源18的视频数据。在一些实例中,源装置12经由输出接口22将编码后的视频数据直接发射到目的地装置14。编码后的视频数据还可存储于存储媒体或文件服务器上以供目的地装置14稍后存取以用于解码及/或播放。

在图1的实例中,目的地装置14包含输入接口28、视频解码器30及显示装置32。在一些实例中,输入接口28包含接收器及/或调制解调器。输入接口28可经由信道16接收编码后的视频数据。显示装置32可与目的地装置14整合或可在目的地装置14外部。一般来说,显示装置32显示解码后的视频数据。显示装置32可包括多种显示装置,例如液晶显示器(lcd)、等离子体显示器、有机发光二极管(oled)显示器或其它类型的显示装置。

视频编码器20及视频解码器30可根据视频压缩标准(例如,高效率视频编解码h.265标准)而操作,且可遵照hevc测试模型(hm)。h.265标准的文本描述itu-th.265(v3)(04/2015)于2015年4月29号发布,可从http://handle.itu.int/11.1002/1000/12455下载,所述文件的全部内容以引用的方式并入本文中。

参见图2,图2是本发明实施例提供的一种视频编解码装置或电子设备50的示意性框图,该装置或者电子设备50可以并入根据本发明的实施例的编码解码器。图3是根据本发明实施例的一种用于视频编码的装置的结构示意图。下面将说明图2和图3中的单元。

电子设备50可以例如是无线通信系统的移动终端或者用户设备。应理解,可以在可能需要对视频图像进行编码和解码,或者编码,或者解码的任何电子设备或者装置内实施本发明的实施例。

装置50可以包括用于并入和保护设备的壳30。装置50还可以包括形式为液晶显示器的显示器32。在本发明的其它实施例中,显示器可以是适合于显示图像或者视频的任何适当的显示器技术。装置50还可以包括小键盘34。在本发明的其它实施例中,可以运用任何适当的数据或者用户接口机制。例如,可以实施用户接口为虚拟键盘或者数据录入系统作为触敏显示器的一部分。装置可以包括麦克风36或者任何适当的音频输入,该音频输入可以是数字或者模拟信号输入。装置50还可以包括如下音频输出设备,该音频输出设备在本发明的实施例中可以是以下各项中的任何一项:耳机38、扬声器或者模拟音频或者数字音频输出连接。装置50也可以包括电池40,在本发明的其它实施例中,设备可以由任何适当的移动能量设备,比如太阳能电池、燃料电池或者时钟机构生成器供电。装置还可以包括用于与其它设备的近程视线通信的红外线端口42。在其它实施例中,装置50还可以包括任何适当的近程通信解决方案,比如蓝牙无线连接或者usb/火线有线连接。

装置50可以包括用于控制装置50的控制器56或者处理器。控制器56可以连接到存储器58,该存储器在本发明的实施例中可以存储形式为图像的数据和音频的数据,和/或也可以存储用于在控制器56上实施的指令。控制器56还可以连接到适合于实现音频和/或视频数据的编码和解码或者由控制器56实现的辅助编码和解码的编码解码器电路54。

装置50还可以包括用于提供用户信息并且适合于提供用于在网络认证和授权用户的认证信息的读卡器48和智能卡46,例如uicc和uicc读取器。

装置50还可以包括无线电接口电路52,该无线电接口电路连接到控制器并且适合于生成例如用于与蜂窝通信网络、无线通信系统或者无线局域网通信的无线通信信号。装置50还可以包括天线44,该天线连接到无线电接口电路52用于向其它(多个)装置发送在无线电接口电路52生成的射频信号并且用于从其它(多个)装置接收射频信号。

在本发明的一些实施例中,装置50包括能够记录或者检测单帧的相机,编码解码器54或者控制器接收到这些单帧并对它们进行处理。在本发明的一些实施例中,装置可以在传输和/或存储之前从另一设备接收待处理的视频图像数据。在本发明的一些实施例中,装置50可以通过无线或者有线连接接收图像用于编码/解码。

本发明实施例所描述的方法主要应用于视频编码器20和视频解码器30相应的编解码过程中的帧间预测。在帧间预测中,本发明基于解码侧运动矢量导出技术(decodersidemotionvectorderivation,dmvd),可应用于高级运动矢量预测(advancedmotionvectorprediction,amvp)候选mv预测值获取。在视频编码器20中,在提取amvp候选mv预测值列表后,根据其进行搜索找到最优mv和最优mv预测值,然后求得mvd,并根据mv从参考帧(又称参考图像)中得到预测块。在视频解码器30中,从码流中解析出mvd后,提取amvp候选mv预测值列表并确认mv预测值,根据mvd和mv预测值求得mv并从参考帧中找到预测块。在采用了解码侧运动矢量导出(decodersidemotionvectorderivation,dmvd)技术后,amvp候选mv预测值列表除了空域和时域mv预测值,还增加了dmvd技术生成的运动矢量预测值。

在现有技术的编解码中,帧间预测的实质是为当前图像的当前块(编码块)在参考图像中寻找一块最相似块(匹配块)。但是参考图像通常都比较大,直接去搜索参考图像的话效率就很低,应该使用某种技术在参考图像中确定一个搜索起始点,然后再该搜索起始点的特定范围内进行搜索,那么就能高效率地搜索到到匹配块。

高效视频编码标准(highefficiencyvideocoding,hevc)的amvp技术就是这样的技术,在开始搜索之前,amvp先为当前块预测出一个mv,这个预测的mv被称为运动矢量预测值(motionvectorprediction,mvp),mvp可以从空域或者时域上的相邻块直接得到,因为相邻块有多个,因此mvp也会有多个,由这些mvp组成的列表称为amvp候选mv预测值列表。编码侧在建立该amvp候选mv预测值列表后,从amvp候选mv预测值列表中选择出一个最优的mvp,根据最优的mvp(mvp实质上也是一个mv)来确定在参考图像中搜索的起始点,然后在搜索起始点的附近特定范围内按照特定方式进行搜索,最后得到一个最优的mv,这个最优的mv就是实际的mv,实际的mv确定了参考图像中参考块的位置,通过实际的mv与最优的mvp的差值求得运动矢量差值(motionvectordifference,mvd),编码侧只需在码流中向解码侧发送该mvd,达到了视频数据压缩的目的。解码侧一方面从码流中解析出mvd,另一方面自己建立amvp候选mv预测值列表,通过相同的方式得到最优的mvp,根据mvd和最优的mvp得到实际的mv,并从参考图像中找到参考块,进而通过运动补偿得到当前块。

现有技术还有一种运动矢量导出的方法,称为解码侧运动矢量导出(decodersidemotionvectorderivation,dmvd),dmvd利用两种匹配的方法(双向匹配和模板匹配)在解码侧获取当前块的运动矢量,可以减少了需要传递的mvd消耗比特数,提高了帧间编码性能。

联合研究测试模型(jointexplorationtestmodel,jem)可以将amvp技术和dmvd技术整合在一起。对于jem,dmvd可以应用在合并预测(merge)模式和帧间预测(inter)模式中。其中,dmvd应用在帧间预测模式时,用匹配搜索的方法生成dmvd运动矢量预测值,并将dmvd运动矢量预测值加入到amvp候选mv预测值列表中。

另外,由于自然界物体运动具有连续性,因此采集(例如录像)的视频数据中,相邻两幅图像之间的运动不一定以整像素的精度为基本单位,而有可能以半像素、1/4像素甚至是1/8像素的精度为单位。此时若仅仅使用整像素的精度进行运动估计(motionestimation,me),就会造成匹配结果不准确,导致运动补偿(motioncompensation,mc)的残差幅度较大,影响编码效率。为了解决上述问题,可将运动估计的精度提升到亚像素级别,这可以通过对参考图像的像素点进行插值来实现。现有技术的实践中,1/4像素精度相比于1/2像素精度时的编码效率有明显地提高,但是1/8像素精度相比于1/4像素精度时的编码效率除了高码率情况以外并没有明显地提升,且1/8像素精度运动估计更为复杂。因此现有编解码标准h.264以及hevc都使用了1/4像素的精度进行运动估计。

同样,为了提高编码效率,进行更高效的帧间预测,jem也引入了进行精度调整的自适应运动矢量精度(adaptivemotionvectorresolution,amvr)技术。在amvr技术中,mvd能够以1/4、整数或四像素的精度为单位进行传递,在码流中传送一个mvd的精度标识来指示编码块(cu)中所有pu对应的mvd的精度。如果解码侧发现当前编码块(cu)指示的精度是1/4或整数或四像素的精度,那么就表明码流中传送的mvd也是1/4或整数或四像素的精度,那么就需要将运动预测的结果基于所该精度进行调整。

jem基于dmvd的帧间预测模型和amvr技术建立jem的amvp候选mv预测值列表的技术过程简述如下:

步骤1、建立hevc标准的amvp候选mv预测值列表。

步骤2、生成dmvd运动矢量预测值。

步骤3、将dmvd运动矢量预测值插入到amvp候选mv预测值列表。

步骤4、按照amvr技术所指示的精度将amvp候选mv预测值列表进行四舍五入,调整至对应的精度。

本申请的发明人在研究实践中发现,上述jem中的amvp候选mv预测值列表生成过程依然存在很多技术缺陷,这些技术缺陷包括:

1、上述技术过程需要对多余的精度进行了运动搜索,导致运算复杂度增加。举例来说,假如amvr技术所指示的精度为四像素精度,即要求步骤4amvp候选mv预测值列表中的mv预测值为四像素精度,但是现有技术中,步骤2采用dmvd方法生成dmvd运动矢量预测值的过程中,依然是采用1/4精度进行搜索得到dmvd运动矢量预测值,然后直到步骤4再被调整到四像素精度。

2、上述技术过程在步骤4中对dmvd运动矢量预测值进行四舍五入,这种较为粗糙的折算容易对编码效率造成负面影响。举例来说,假如amvr技术所指示的精度为四像素精度,而现有技术生成的dmvd运动矢量预测值为1/4精度,那么在调整为四像素精度的过程中,dmvd运动矢量预测值对应的参考块在其周围的4个四像素精度位置均有获得最小的匹配失真的可能,所以,按照四舍五入进行调整所获得的位置其实并不是准确的位置。

3、上述技术过程会导致jem的amvp候选mv预测值列表中有效mv预测值的数量的减少。在步骤3具体过程中,amvp候选mv预测值列表具有两位mv预测值,如果dmvd运动矢量预测值如果与amvp候选mv预测值列表第一位不同,会插入到amvp候选mv预测值列表第一位,原amvp候选mv预测值列表中第二位会被丢掉;如果相同,则不插入,此时amvp候选mv预测值列表将不做改动。举例来说,假如步骤2生成的原dmvd运动矢量预测值与原amvp候选mv预测值列表第一位不相同,所以插入amvp候选mv预测值列表后,amvp候选mv预测值列表中第二位会被丢掉,然而,如果在步骤4进行四舍五入之后,得到新的dmvd运动矢量预测值正好与原amvp候选mv预测值列表第一位相同,那么,就相当于白白损失原amvp候选mv预测值列表第二位。

可以看出,上述技术缺陷的存在将会影响编码效率,导致传输码率和编码时间的增加。

为了克服现有技术的上述技术缺陷,提升编码效率,减少传输码率和编码时间,本发明实施例提供的一种确定运动矢量预测值的方法,请参见图4。该方法包括但不限于如下步骤:

步骤401:获取待处理块的运动矢量精度。

在本发明实施例中,运动矢量精度(又可称为mv精度)可为进行运动估计和运动补偿所需要的精度,也就是说,所述mv精度指示码流中mvd的精度,也指示了生成的运动矢量预测值(mv预测值,或称mvp)的精度,同样指示了最终合成的mv的精度。

在可能的实施例中,所述方法应用于解码侧,解码侧通过码流中的精度指示信息来获取mv精度,其中,该精度指示信息指示所述mv精度。具体的,所述精度指示信息可以在pu或cu或lcu或ctu或slice或frame中传递,在对待处理块(当前块)所在的pu或cu或lcu或ctu或slice或frame进行解析后,获得所述精度指示信息。具体的实现中,在编码侧配置有精度选择策略,在精度选择策略覆盖1/8像素精度、1/4像素精度、半像素精度、四像素精度等等全部精度,编码侧生成mvd的过程中,根据精度选择策略确定mvd的精度,对整个编码单元(codingunit,cu)在码流中传送一个精度指示信息,该精度指示信息用于指示mvd的精度(即mv精度);解码侧获取码流中的精度指示信息,通过精度指示信息获取mv精度。根据需要使用的mv精度即mvd的精度,对解码侧运动矢量导出技术生成运动矢量预测值的过程中的各个步骤分别进行调整。例如,采用自适应运动矢量精度技术amvr实现精度的可变。

在可能的实施例中,编码侧/解码侧根据需要从多个预设mv精度中获取所述mv精度。具体实现中,在编码侧配置有精度选择策略,在精度选择策略预设1/8像素精度、1/4像素精度、半像素精度、四像素精度等等多个精度,编码侧根据精度选择策略对所需要传递的视频数据进行判断,从所述多个精度中确定一个精度作为进行编码的精度,在编码后获得mvd,在码流中传递mvd,但不传送精度指示信息。解码侧同样配置有精度选择策略,在精度选择策略预设1/8像素精度、1/4像素精度、半像素精度、四像素精度等等多个精度。解码侧可基于提前获取并解码的图像(已解码图像)进行判断,从所述多个精度中确定一个精度作为本次解码的精度。由于编码侧和解码侧使用一致的精度选择策略,故解码侧可确定的精度与编码侧所确定的精度一致。

其中,可以理解的,对于分数像素精度(比如1/8像素精度等),由于分数像素精度位置的像素本身不存在,可以通过对参考图像进行插值(比如线性插值)来实现。

步骤402:获取所述待处理块的至少一个第一预测运动矢量。

其中,所述当前块(又可称为当前图像块,待处理块,待处理图像块)为当前图像中需要进行编解码的块,所述第一预测运动矢量为用于指示所述当前块在参考图像(已编码图像)中进行搜索时的起始点,这个第一预测运动矢量可以从空域或者时域上的相邻块获得,由于相邻块的数量可能有多个,所以第一预测运动矢量的数量也可能有多个。比如,在一个具体的实现中,第一预测运动矢量又称为起始点运动矢量,获取所述待处理块的至少一个第一预测运动矢量,具体为:建立起始点运动矢量列表,该起始点运动矢量列表包括一个或多个起始点运动矢量。

步骤403:根据所述运动矢量精度,以及根据所述至少一个第一预测运动矢量确定目标预测运动矢量,所述目标预测运动矢量具有所述运动矢量精度。

目标预测运动矢量为在编解码过程中生成实际的mv时所可能会用到的预测运动矢量(或者称运动矢量预测值,mvp)。例如,在一具体实现中,目标预测运动矢量又可简称最优运动矢量,当该最优运动矢量为基于dmvd技术生成时,该最优运动矢量可作为dmvd运动矢量预测值。

在可能的实施例中,确定目标预测运动矢量的过程可以是:根据所述运动矢量精度,从所述至少一个第一预测运动矢量中确定第二预测运动矢量,所述第二预测运动矢量具有所述运动矢量精度;根据所述第二预测运动矢量,确定至少一个第三预测运动矢量;根据所述运动矢量精度,从所述至少一个第三预测运动矢量中确定所述最优预测运动矢量。

在可能的实施例中,确定目标预测运动矢量的过程可以是:根据运动矢量精度,从所述至少一个第一预测运动矢量中确定第二预测运动矢量,所述第二预测运动矢量具有所述运动矢量精度;根据运动矢量精度,从所述第二预测运动矢量确定的至少一个第三预测运动矢量中确定所述目标预测运动矢量。

在本发明可能的实施例中,确定目标预测运动矢量的过程还可以是:以每一个所述至少一个第三预测运动矢量为所述当前块的模板的运动矢量,在当前块的参考帧(又可称为参考图像)中通过运动补偿确定模板对应的匹配图像块,所述模板为与所述当前块具有预设位置关系的预设尺寸的图像块,所述第三预测运动矢量由对所述第二预测运动矢量进行预设的修正确定;计算每一个模板和模板对应的匹配图像块的像素差异,所述像素差异用于表征作为所述模板的运动矢量的所述第三预测运动矢量的代价值;对代价值最小的第三预测运动矢量进行数值处理;将所述处理后的代价值最小的第三预测运动矢量作为所述目标预测运动矢量。

其中,第二预测运动矢量为所述至少一个第一预测运动矢量中通过某种算法所确定的代价值最小的预测运动矢量。例如,在一具体实现中,所述至少一个第一预测运动矢量为起始点运动矢量列表,那么第二预测运动矢量就是该列表中匹配失真最小的起始点预测运动矢量,又可以称为最优起始点运动矢量。

其中,可以从第二预测运动矢量所指示的起始点开始,在某种搜索算法指定的搜索范围内进行搜索,通过搜索可找到至少一个第三预测运动矢量。例如,在一可能的实现方式中,以第二预测运动矢量所指示的起始点为中心点进行搜索,那么,所确定到的至少一个第三预测运动矢量包括第二预测运动矢量以及第二预测运动矢量周围的多个搜索样式点对应的预测运动矢量。分别计算所述至少一个第三预测运动矢量的匹配失真,若其中的中心点对应的匹配失真最小,则结束搜索,中心点的运动矢量即为目标预测运动矢量。

在本发明一具体实施例中,确定第二预测运动矢量的过程可以是:对所述至少一个第一预测运动矢量进行数值处理,所述数值处理用于使所述至少一个第一预测运动矢量具有所述运动矢量精度,处理后的所述至少一个第一预测运动矢量具有所述运动矢量精度;以每一个所述处理后的至少一个第一预测运动矢量为所述当前块的模板的运动矢量,在当前块的参考帧中通过运动补偿确定该模板对应的匹配图像块,所述模板为与所述当前块具有预设位置关系的预设尺寸的图像块;计算每一个所述模板和所述模板对应的匹配图像块的像素差异,所述像素差异用于表征作为所述模板的运动矢量的第一预测运动矢量的代价值;将代价值最小的第一预测运动矢量作为第二预测运动矢量。

在本发明又一具体实施例中,确定第二预测运动矢量的过程还可以是:以每一个所述至少一个第一预测运动矢量为所述当前块的模板的运动矢量,在当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块,所述模板为与所述当前块具有预设位置关系的预设尺寸的图像块;计算每一个模板和模板对应的匹配图像块的像素差异,所述像素差异用于表征作为所述模板的运动矢量的所述第一预测运动矢量的代价值;对代价值最小的第一预测运动矢量进行数值处理;将所述处理后的代价值最小的第一预测运动矢量作为所述第二预测运动矢量。

应理解,本发明实施例中的像素差异,可以用像素间的差值来表示,也可以用像素间的差值的后续处理结果来表示,可以直接作为第一预测运动矢量的代价值,也可以通过计算处理作为第一预测运动矢量的代价值,不作限定。

其中,上述数值处理包括舍入处理(rounding),舍入处理例如可以是四舍五入的处理。在可能的实施例中,所述数值处理包括:用于使所述至少一个第一预测运动矢量具有所述运动矢量精度,或,用于使所述代价值最小的第一预测运动矢量具有所述运动矢量精度,或,用于使所述代价值最小的第三预测运动矢量具有所述运动矢量精度。

具体的,所述第二预测运动矢量包括第二预测运动矢量水平分量和第二预测运动矢量竖直分量;第三预测运动矢量包括第三预测运动矢量水平分量和第三预测运动矢量竖直分量。

具体的,第三预测运动矢量由对第二预测运动矢量进行预设的修正确定,第三预测运动矢量水平分量为第二预测运动矢量水平分量和第一预设偏移值之和;第三预测运动矢量竖直分量为第二预测运动矢量竖直分量和第二预设偏移值之和。在具体实现中,第一预设偏移值为所述运动矢量精度的数值的整数倍,且所述第二预设偏移值为所述运动矢量精度的数值的整数倍。

在可能的实施例中,以每一个所述至少一个第三预测运动矢量为当前块的模板的运动矢量,在所述当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块之前,可以先确定具有所述运动矢量精度的所述至少一个第三预测运动矢量;相对应的,以每一个具有所述运动矢量精度的第三预测运动矢量为当前块的模板的运动矢量,在当前块的参考帧中通过运动补偿确定所述模板对应的匹配图像块。

在可能的实施例中,在所述以及根据所述至少一个第一预测运动矢量确定目标预测运动矢量之后,还可以将目标预测运动矢量加入到当前块的第一候选运动矢量预测值列表,第一候选预测运动矢量列表中的候选预测运动矢量具有所述运动矢量精度,候选预测运动矢量包括和所述当前块的相邻图像块的运动矢量和所述当前块在时域上对应位置块的运动矢量。其中,所述候选预测运动矢量在第一候选预测矢量列表中按照预设顺序排列。具体实现过程中,在目标预测运动矢量和第一候选预测运动矢量列表中排在所述顺序第一位的候选预测运动矢量不同的情况下,从第一候选预测运动矢量列表中排除排在所述顺序第二位的候选预测运动矢量,且将目标预测运动矢量和所述顺序第一位的候选预测运动矢量依次置于第一候选预测运动矢量列表的前两位。

实施本发明实施例,在生成目标预测运动矢量的过程会按照所需的mv精度进行调整,保证了进行调整所获得的搜索位置是符合mv精度的准确位置,避免出现对多余的精度进行了运动搜索。并且,在生成候选运动矢量预测值列表的过程会按照所需的mv精度进行调整,将目标预测运动矢量插入候选运动矢量预测值列表时,由于两者都符合mv精度,所以可以避免出现白白损失原候选运动矢量预测值列表中的运动矢量预测值的状况。通过实施本发明实施例,可以减小编码和解码运算量,减少传输码率和编码时间,提升编码质量,提高编码效率,进而提升用户体验。

参见图5,本发明实施例提供了又一种确定运动矢量预测值的方法,该方法包括但不限于如下步骤:

步骤501:获取mv精度。可参考图4实施例步骤401的描述。

步骤502:根据mv精度建立amvp候选运动矢量预测值列表。

可以利用空域、时域上运动向量的相关性,编码器和解码器为当前图像块(cu/pu)建立候选预测mv列表。这样,解码器可仅通过码流中的mvd与运动矢量预测值(预测mv)在该列表中的序号即可计算当前图像块(cu/pu)的mv。

具体建立过程可包括:

1、建立空域候选mv列表。具体实施例中,在当前预测单元(predictionunit,pu)的左侧和上方分别产生一个候选mv预测值,作为空域候选mv列表。

2、建立时域候选mv列表。具体实施例中,利用当前pu在临近已编码图像中对应位置的pu的运动信息作为时域候选mv列表。

3、合并空域候选mv列表和时域候选mv列表。在合并过程中仅保留前2个候选mv预测值,不足2个补上mv(0,0),形成候选mv预测值列表。

4、在可能的实施例中,在形成候选mv预测值列表后,将候选mv预测值列表进行数值处理(例如进行舍入处理),使得列表中的候选mv预测值符合mv精度,从而形成最终的amvp候选运动矢量预测值列表。

需要说明的是,本文中所描述的符合mv精度的意思为其精度和mv精度相一致、或者说具有该mv精度。

步骤503:根据mv精度生成dmvd运动矢量预测值。

在生成dmvd运动矢量预测值的过程中,利用amvr精度(即所获取的mv精度)作为所需要依据的精度,根据mv精度对dmvd技术生成运动矢量预测值的过程中的各个步骤分进行调整。具体的生成过程将在后述图6-图8实施例中进行详细描述。

步骤504:将dmvd运动矢量预测值插入到amvp候选运动矢量预测值列表。

本实施例得到的dmvd运动矢量预测值具有mv精度。在amvp候选mv预测值列表建立过程的最后一步之后,验证是否需要将dmvd运动矢量预测值插入到该amvp候选mv预测值列表中。

在一可能的实施例中,如果dmvd运动矢量预测值如果与amvp候选mv预测值列表第一位不同,会插入到amvp候选mv预测值列表第一位,原amvp候选mv预测值列表中第二位会被丢掉;如果相同,则不插入,此时amvp候选mv预测值列表将不做改动。

在另一可能的实施例中,如果dmvd运动矢量预测值如果与amvp候选mv预测值列表第二位不同,会插入到amvp候选mv预测值列表第二位,原amvp候选mv预测值列表中第一位会被丢掉;如果相同,则不插入,此时amvp候选mv预测值列表将不做改动。

需要说明的是,本发明实施例中主要以本方法在jem的应用形式进行举例说明,并不代表本发明实施例所提方法仅适用于jem。实际应用中,参考本发明实施例所提方法进行的其他改进均应属于本发明的保护范围。

实施本发明实施例,在生成dmvd运动矢量预测值的过程会按照所需的mv精度进行调整,保证了进行调整所获得的搜索位置是符合mv精度的准确位置,避免出现对多余的精度进行了运动搜索。并且,在生成amvp候选mv预测值列表的过程会按照所需的mv精度进行调整,将dmvd运动矢量预测值插入amvp候选mv预测值列表时,由于两者都符合mv精度,所以可以避免出现白白损失原amvp候选mv预测值列表中的mv预测值的状况。通过实施本发明实施例,可以减小编码和解码运算量,减少传输码率和编码时间,提升编码质量,提高编码效率,进而提升用户体验。

下面详细介绍本发明实施例提供的几种生成dmvd运动矢量预测值的方法。

本发明实施例所提供的生成dmvd运动矢量预测值的方法中,解码侧提前获取生成mv的过程所需要的精度,根据需要的精度对dmvd技术生成运动矢量预测值的过程中的各个步骤分进行调整。

首先参见图6,图6是本发明实施例提供的一种生成dmvd运动矢量预测值的方法,该方法包括但不限于如下步骤:

步骤601:获取当前块的mv精度。

在本发明实施例中,mv精度可为进行运动估计所需要的精度,也就是说,所述mv精度指示码流中mvd的精度,也指示了生成的运动矢量预测值(mv预测值,或称mvp)的精度,同样指示了最终合成的mv的精度。

在一具体的实现中,在编码侧配置有精度选择策略,在精度选择策略覆盖1/8像素精度、1/4像素精度、半像素精度、四像素精度等等全部精度,编码侧生成mvd的过程中,根据精度选择策略确定mvd的精度,对整个cu在码流中传送一个精度指示信息(第一信息),该精度指示信息用于指示mvd的精度(即mv精度);解码侧获取码流中的精度指示信息,通过精度指示信息获取mv精度。根据需要使用的mv精度即mvd的精度,对解码侧运动矢量导出技术生成运动矢量预测值的过程中的各个步骤分别进行调整。例如,采用自适应运动矢量精度技术amvr实现精度的可变。

在另一具体的实现中,在编码侧配置有精度选择策略,在精度选择策略预设1/8像素精度、1/4像素精度、半像素精度、四像素精度等等多个精度,编码侧根据精度选择策略对所需要传递的视频数据进行判断,从所述多个精度中确定一个精度作为进行编码的精度,在编码后获得mvd,在码流中传递mvd,但不传送精度指示信息。解码侧同样配置有精度选择策略,在精度选择策略预设1/8像素精度、1/4像素精度、半像素精度、四像素精度等等多个精度。解码侧可基于提前获取并解码的图像(已解码图像)进行判断,从所述多个精度中确定一个精度作为本次解码的精度。由于编码侧和解码侧使用一致的精度选择策略,故解码侧可确定的精度与编码侧所确定的精度一致。

步骤602:建立用于运动矢量搜索的起始点运动矢量列表。

具体的,起始点运动矢量列表可由hevc的amvp、merge模式候选mv、空域临近块mv、和dmvd技术的双向匹配方式得到的运动信息构成。起始点运动矢量列表中包括多个起始点运动矢量,每一个起始点运动矢量都指示一个用于在参考图像中进行搜索的起始点。

步骤603:根据所述mv精度对起始点运动矢量列表进行舍入处理。

具体的实现中,可以在计算过程中将指定的mv精度转换为精度移位操作值(offset),例如在mv精度的最高精度为1/4像素精度的情况下,整数精度对应的offset为2,四像素精度对应的offset为4。如果运动矢量(起始点运动矢量)为某个精度,那么运动矢量中各个分量的值都不包含比当前精度更高的部分的数值,例如当mv精度的最高精度为1/4像素精度时,整数精度的mv中各个分量的值mvi应该均满足:mvi=((mvi>>2)<<2)。而四像素精度的mv中各个分量的值mvi应该均满足:mvi=((mvi>>4)<<4)。其中,移位运算符>>表示右移,移位运算符<<表示左移。

本发明实施例中,起始点运动矢量的舍入可采用四舍五入的方式,对于起始点运动矢量的每个方向的分量mvi单独进行。具体的,先对该分量mvi的值加上amvr模式指定的mv精度值一半大小的数值,再将分量的值右移去掉低于amvr模式指定的mv精度值的部分,最后右移回原数量级得到mvi_new,mvi_new具体为:

mvi_new=(((mvi+(1<<(offset-1))))>>offset)<<offset)

需要说明的是,本实施例中的舍入操作也可以在将运动矢量放入起始点列表前进行,即将运动矢量进行舍入处理后再放入到起始点列表。

还需要说明的是,本实施例中舍入方式并不限定是四舍五入的方式,还可以是其他的舍入方式。在根据mv精度对起始点运动矢量列表进行舍入处理之后,起始点运动矢量列表中的各个起始点运动矢量都符合该mv精度。

步骤604:通过匹配失真算法计算各个起始点运动矢量的匹配失真,获得最优起始点运动矢量。

本发明实施例并不限定所使用的匹配失真算法,例如,匹配失真算法可以是模板匹配、双边匹配等等。在通过匹配失真算法遍历起始点运动矢量列表后,将匹配代价最小的起始点运动矢量作为最优起始点运动矢量。可以理解的,该最优起始点运动矢量符合mv精度。

步骤605:根据所述mv精度,从最优起始点运动矢量所指示的最优起始点开始进行搜索,获得符合所述mv精度的最优运动矢量,将最优运动矢量作为dmvd运动矢量预测值。

本发明实施例并不限定进行搜索所利用到的搜索算法,搜索算法可以是全搜索算法,也可以是快速搜索算法。

具体的,可根据目标mv精度,使用模板匹配的方法,从最优起始点开始,在算法指定的搜索范围(搜索窗口)搜索得到最优运动矢量,作为dmvd运动矢量预测值。其中,所得到的最优运动矢量为搜索范围内所有合法的运动矢量中模板匹配失真最小的运动矢量,最优运动矢量的精度符合mv精度。模板匹配的原理是:对于给定mv和参考图像,可以得到当前编码块在参考图像中的参考块和位置。由当前图像中的左边和上边的临近块构成当前编码块的模板,由参考帧中的参考块的左边和上边的临近块构成参考块的模板,通过计算两个模板之间的失真值就可得到当前所给定的运动矢量的模板匹配失真。

具体实现中,可按照搜索算法,选择性的遍历搜索范围内的部分的运动矢量,计算各运动矢量的匹配失真,将匹配失真最小的运动矢量作为最优运动矢量。

本发明实施例中,搜索算法在搜索范围中计算匹配失真的运动矢量均符合mv精度,在搜索过程中,仅在mv精度允许的搜索位置上进行搜索,这些搜索位置的坐标分量值为mv精度的整数倍。

具体实现中,举例来说,在搜索过程中,会在搜索路径上遇到不同的搜索位置,可以验证当前搜索位置对应的运动矢量的精度是否为mv精度,若是,则在当前搜索位置搜索相应的运动矢量;若否,则跳过该不符合mv精度的搜索位置。比如,mv精度为整像素精度时,如果当前位置为整像素精度,则在当前搜索位置进行搜索,如果当前位置为1/4像素精度,则跳过当前搜索位置,然后进行下一个搜索位置的验证。

又举例来说,也可以在搜索过程中,将搜索算法指定的搜索位置之间的最小间隔距离/偏移调整至mv精度,比如,mv精度为整像素精度时,搜索位置之间的间隔距离最小为整像素;mv精度为1/4像素精度时,搜索位置之间的间隔距离最小为1/4像素;mv精度为为四像素精度时,搜索位置之间的间隔距离最小为四像素等等。

具体实现中,假如搜索算法为快速搜索算法,那么搜索过程通常是先在参考图像中找到最优起始点,以最优起始点为中心点,分别计算中心点的运动矢量的匹配失真以及中心点周围所有搜索样式点的运动矢量的匹配失真,若中心点对应的匹配失真最小,则结束搜索,中心点的运动矢量即为最优运动矢量;若中心点对应的匹配失真不是最小,则将这些点中匹配失真最小的搜索样式点作为新的中心点,重复上述搜索过程,直到得到最优运动矢量。本发明实施例中,搜索样式点通常为一组围绕中心点的偏移坐标组,偏移坐标组中的偏移坐标值为mv精度的整数倍。

利用上述方式搜索出的运动矢量即为mv精度下的最优运动矢量,将其作为dmvd技术生成的dmvd运动矢量预测值,在后续的步骤中,就可将该dmvd运动矢量预测值插入到amvp候选运动矢量预测值列表,进而完成相应的编解码过程。

需要说明的是,在本申请发明人所进行的一种比对实验中,编码和解码运算量和编码质量的改变采用对于多个码率点分别编码解码两次,第一次实验为不做技术改动(anchor),使用jem基于dmvd的帧间预测模型和amvr技术建立jem的amvp候选mv预测值列表的方法进行编解码;第二次实验按照本发明实施例进行技术改动(test)。编码或解码的anchor和test运行在同样的平台上,同时关闭并行,以保证可以有效对比时间。实验过程分别统计码率、psnr、编码时间和解码时间,编码运算量改变通过计算(test编码时间/anchor编码时间)得到,解码运算量改变通过计算(test解码时间/anchor解码时间)得到,编码质量改变通过计算anchor和test的码率、峰值信噪比(peaksignaltonoiseratio,psnr)的(bd率(bd-rate)得到。实验结果表明,第二次实验相较于第一次实验,在联合视频探测小组(jointvideoexplorationteam,jvet)规定的视频序列和码率点上,亮度分量的bd-rate为-0.02%(即同等质量下节省了0.02%的码率),第二次实验的编码时间为第一次实验的96%(即节省了4%的运算量),第二次实验的解码时间为第一次实验的98%(即节省了2%的运算量)。

实施本发明实施例,在生成dmvd运动矢量预测值过程中,根据mv精度调整起始点运动矢量列表,使得得到的最优起始点也符合了mv精度,从而调整了搜索的起始点的精度,此外还在搜索过程中根据mv精度设定搜索位置。实践表明,通过实施本发明实施例,可以减小编码和解码运算量,减少传输码率和编码时间,提升编码质量,提高编码效率,进而提升用户体验。

参见图7,图7是本发明实施例提供的又一种生成dmvd运动矢量预测值的方法,该方法和图6实施例所示方法的区别点主要在于:在求得最优起始点之后,再调整最优起始点以符合mv的精度。该方法包括但不限于如下步骤:

步骤701:获取mv精度。可参考图6实施例的步骤601的描述。

步骤702:建立用于运动矢量搜索的起始点运动矢量列表。可参考图6实施例的步骤602的描述。

步骤703:通过匹配失真算法计算各个起始点运动矢量的匹配失真,获得最优起始点运动矢量。

本发明实施例并不限定所使用的匹配失真算法,例如,匹配失真算法可以是模板匹配、双边匹配等等。在通过匹配失真算法遍历起始点运动矢量列表后,将匹配代价最小的起始点运动矢量作为最优起始点运动矢量。由于起始点运动矢量列表可能没根据mv精度进行调整,所以,可以理解的,此时所得到的最优起始点运动矢量不一定符合mv精度。

步骤704:根据所述mv精度对最优起始点运动矢量进行舍入处理。

由于最优起始点运动矢量不一定符合mv精度,所以可以根据mv精度对最优起始点运动矢量进行数值处理(如舍入处理),以使得最优起始点运动矢量符合该mv精度。

本发明实施例中,最优起始点运动矢量的舍入处理可采用四舍五入的方式,对于最优起始点运动矢量的每个方向的分量mvi单独进行。具体的,先对该分量mvi的值加上amvr模式指定的mv精度值一半大小的数值,再将分量的值右移去掉低于amvr模式指定的mv精度值的部分,最后右移回原数量级得到mvi_new,mvi_new具体为:

mvi_new=(((mvi+(1<<(offset-1))))>>offset)<<offset),其中,移位运算符>>表示右移,移位运算符<<表示左移。

需要说明的是,本实施例中舍入方式并不限定是四舍五入的方式,还可以是其他的舍入方式。

步骤705:根据所述mv精度,从最优起始点运动矢量所指示的最优起始点开始进行搜索,获得符合所述mv精度的最优运动矢量,将最优运动矢量作为dmvd运动矢量预测值。

需要说明的是,在本申请发明人所进行的一种比对实验中,第一次实验为不做技术改动,第二次实验按照本发明实施例进行技术改动,实验结果表明,第二次实验相较于第一次实验,在jvet规定的视频序列和码率点上,亮度分量的bd-rate为-0.01%(即同等质量下节省了0.01%的码率),第二次实验的编码时间为第一次实验的93%(即节省了7%的运算量),第二次实验的解码时间为第一次实验的89%(即节省了11%的运算量)。

实施本发明实施例,在生成dmvd运动矢量预测值过程中,不根据mv精度调整起始点运动矢量列表,但会对所获得的最优起始点运动矢量根据mv精度进行调整,从而调整了搜索的起始点的精度,此外还在搜索过程中根据mv精度设定搜索位置。实践表明,通过实施本发明实施例,可以减小编码和解码运算量,减少传输码率和编码时间,提升编码质量,提高编码效率,进而提升用户体验。

参见图8,图8是本发明实施例提供的又一种生成dmvd运动矢量预测值的方法,该方法和图6实施例所示方法的区别点主要在于:在求得最优运动矢量之后,再调整最优运动矢量以符合mv的精度,该方法包括但不限于如下步骤:

步骤801:获取mv精度。可参考图6实施例的步骤601的描述。

步骤802:建立用于运动矢量搜索的起始点运动矢量列表。可参考图6实施例的步骤602的描述。

步骤803:通过匹配失真算法计算各个起始点运动矢量的匹配失真,获得最优起始点运动矢量。可参考图7实施例的步骤703的描述。

步骤804:从最优起始点运动矢量所指示的最优起始点开始进行搜索,获得最优运动矢量。

本发明实施例并不限定进行搜索所利用到的搜索算法,搜索算法可以是全搜索算法,也可以是快速搜索算法。类似的,可参考图6实施例步骤605的描述,所不同的是,由于起始点运动矢量列表可能没根据mv精度进行调整,最优起始点运动矢量也可能没根据mv精度进行调整,所以,可以理解的,此时所得到的最优运动矢量不一定符合mv精度。

步骤805:根据mv精度对所述最优运动矢量进行舍入处理,得到符合mv精度的最优运动矢量,作为dmvd运动矢量预测值。

由于最优运动矢量不一定符合mv精度,所以可以根据mv精度对最优运动矢量进行数值处理(如舍入处理),以使得最优运动矢量符合该mv精度。

本发明实施例中,最优运动矢量的舍入处理可采用四舍五入的方式,对于最优运动矢量的每个方向的分量mvi单独进行。具体的,先对该分量mvi的值加上amvr模式指定的mv精度值一半大小的数值,再将分量的值右移去掉低于amvr模式指定的mv精度值的部分,最后右移回原数量级得到mvi_new,mvi_new具体为:

mvi_new=(((mvi+(1<<(offset-1))))>>offset)<<offset),其中,移位运算符>>表示右移,移位运算符<<表示左移。

需要说明的是,本实施例中舍入方式并不限定是四舍五入的方式,还可以是其他的舍入方式。

实施本发明实施例,在生成dmvd运动矢量预测值过程中,不根据mv精度调整起始点运动矢量列表,不根据mv精度调整最优起始点运动矢量,但会对所获得的最优运动矢量根据mv精度进行调整。通过实施本发明实施例,也可以减小编码和解码运算量,减少传输码率和编码时间,提升编码质量和编码效率。

上述详细阐述了本发明实施例提供的一些方法,下面描述了本发明实施例提供的一些装置。

参见图9,本发明实施例提供了一种用于确定运动矢量预测值的设备900,设备900可以是应用于编码侧,也可以是应用于解码侧。设备900包括处理器901、存储器902,所述处理器901、存储器902相连接(如通过总线相互连接),在可能的实施方式中,设备900还可包括收发器903,收发器903连接处理器901和存储器902,用于接收/发送数据。

存储器902包括但不限于是随机存储记忆体(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、或便携式只读存储器(compactdiscread-onlymemory,cd-rom),该存储器902用于存储相关程序代码及视频数据。

处理器901可以是一个或多个中央处理器(centralprocessingunit,cpu),在处理器901是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。

该处理器901用于读取所存储器902中存储的程序代码,执行以下操作:

获取待处理块的运动矢量精度;

获取所述待处理块的至少一个第一预测运动矢量;

根据所述运动矢量精度,以及根据所述至少一个第一预测运动矢量确定目标预测运动矢量,所述目标预测运动矢量具有所述运动矢量精度。

需要说明的是,在具体的实施例中,处理器901可用于执行上述图4-图8实施例描述的各种方法,为了说明书的简洁,这里将不再赘述。

基于同样的发明构思,本发明实施例提供了又一种用于确定运动矢量预测值的设备1000,设备1000包括:

第一获取模块1001,用于获取待处理块的运动矢量精度;

第二获取模块1002,用于获取所述待处理块的至少一个第一预测运动矢量;

确定模块1003,用于根据所述运动矢量精度,以及根据所述至少一个第一预测运动矢量确定目标预测运动矢量,所述目标预测运动矢量具有所述运动矢量精度。

需要说明的是,通过前述图4-图8实施例的描述,本领域技术人员可以知道设备1000所包含的各个模块的实现方法,所以为了说明书的简洁,这里将不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk,ssd)等。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1