运动矢量的获取方法、装置、计算机设备及存储介质与流程

文档序号:20081326发布日期:2020-03-10 10:42阅读:246来源:国知局
运动矢量的获取方法、装置、计算机设备及存储介质与流程

本申请涉及视频压缩技术领域,特别涉及一种运动矢量的获取方法、装置、计算机设备及存储介质。



背景技术:

在日常生活中,与视频的相关应用越来越普遍,而随着计算机技术的日趋成熟,视频处理技术也有很大发展。其中,视频编解码技术的发展较为突出,当对一帧图像中的编码单元进行编码时,可以利用编码单元和预测单元之间的相关性,尽可能的去除冗余,解码时,对去除冗余后的信息进行解码,以获得该编码单元对应的图像信息。

其中,解码的过程可以是如下过程:解码端获取该编码单元的运动信息后,基于该运动信息建立候选预测运动矢量列表;根据获取的运动信息从该候选预测运动矢量列表中筛出一个最优预测运动矢量;以该最优预测运动矢量所指示的参考单元为起点,搜索与该编码单元最为相似的预测单元;将候选预测运动矢量列表中的最优预测运动矢量更新为该预测单元的运动矢量,也即是,该更新后的预测运动矢量为该编码单元的预测运动矢量;根据更新后的预测运动矢量以及预测单元,获取该编码单元对应的图像信息。

在实现本申请的过程中,发明人发现相关技术至少存在以下问题:解码端在解码过程中,可以同时对多个编码单元进行解码,但是当其他编码单元需要使用当前编码单元的预测运动矢量时,必须排队等待当前编码单元的最优预测运动矢量更新后,才能进行解码,极易出现延迟问题。



技术实现要素:

本申请实施例提供了一种运动矢量的获取方法、装置、计算机设备及存储介质,能够解决解码时出现延迟问题。该技术方案如下:

第一方面,提供了一种运动矢量的获取方法,该方法包括:

确定待处理图像块的一个参考块,该参考块和该待处理图像块位于同一帧图像中;

当该参考块位于预设范围以内时,基于该参考块的初态运动矢量获得该待处理图像块的运动矢量,其中,该预设范围根据该待处理图像块的位置确定;

当该参考块位于该预设范围以外时,基于该参考块的终态运动矢量获得该待处理图像块的运动矢量,其中,该终态运动矢量基于该初态运动矢量获得。

在一种可能实现方式中,该参考块位于预设范围以内,包括:该参考块所在的编码树块ctb和该待处理图像块所在的编码树块位于同一行;

对应的,该参考块位于该预设范围以外,包括:该参考块所在的编码树块和该待处理图像块所在的编码树块位于不同行。

基于上述可能实现方式,可以提供不同的预设范围,从而可以根据不同的预设范围来来确定待处理图像块的运动矢量,进而使得待处理图像块的运动矢量可以多个选择。

在一种可能实现方式中,该参考块所在的编码树块和该待处理图像块所在的编码树块位于不同行,并且,该参考块所在的编码树块位于与该待处理图像块所在的编码树块不同行的邻近空间。

基于上述可能实现方式,可以提供另一种预设范围,进而可以为运动矢量的选取提供多种预设条件。

在一种可能实现方式中,该参考块位于预设范围以内,包括:该参考块和该待处理图像块位于同一编码树块;

对应的,该参考块位于该预设范围以外,包括:该参考块和该待处理图像块位于不同的编码树块。

基于上述可能实现方式,可以为具体的预设范围提供多种可能。

在一种可能实现方式中,该参考块位于预设范围以内,包括:该参考块所在的编码树块和该待处理图像块所在的编码树块相同或左右相邻;

对应的,该参考块位于该预设范围以外,包括:该参考块所在的编码树块和该待处理图像块所在的编码树块不相同且不为左右相邻关系。

基于上述可能实现方式,可以为具体的预设范围提供多种可能。

在一种可能实现方式中,该确定待处理图像块的一个参考块,包括:

按照预设的次序,依次确定预设的一个或多个候选参考块作为该参考块,该候选参考块包括与该待处理图像块具有预设空域位置关系的图像块。

基于上述可能实现方式,可以确定该待处理图像块的一个参考块,进而可以根据该参考块确定该待处理图像块的初态运动矢量。

在一种可能实现方式中,该确定待处理图像块的一个参考块,包括:

解析码流以获得一个或多个第一标识信息;

根据该一个或多个第一标识信息,从该待处理图像块的多个候选参考块中确定该参考块,该候选参考块包括与该待处理图像块具有预设空域位置关系的图像块。

基于上述可能实现方式,可以根据码流中的标识信息来确定确定待处理图像块的参考块,进而可以根据该参考块确定该待处理图像块的初态运动矢量。

在一种可能实现方式中,该终态运动矢量基于该初态运动矢量获得,包括:

将该初态运动矢量和多个预设的偏移矢量分别相加,以获得多个候选终态运动矢量;

确定该多个候选终态运动矢量中对应失真代价最小的候选终态运动矢量为该终态运动矢量。

基于上述可能实现方式,将对应失真代价最小的候选终态运动矢量作为终态运动矢量,该终态运动矢量较为精确。

在一种可能实现方式中,该方法用于双向帧间预测,该终态运动矢量包括第一终态运动矢量和第二终态运动矢量,该初态运动矢量包括第一初态运动矢量和第二初态运动矢量,其中,该第一终态运动矢量和该第一初态运动矢量基于该待处理图像块的第一参考帧列表指示运动补偿块,该第二终态运动矢量和该第二初态运动矢量基于该待处理图像块的第二参考帧列表指示运动补偿块,该终态运动矢量基于该初态运动矢量获得,包括:

将该第一初态运动矢量和多个预设的偏移矢量分别相加,以获得多个候选第一终态运动矢量;

确定该多个候选第一终态运动矢量中对应失真代价最小的候选第一终态运动矢量为该第一终态运动矢量,该第一终态运动矢量对应该多个预设的偏移矢量中的第一偏移矢量;

获得第二偏移矢量,该第二偏移矢量和该第一偏移矢量大小相等且方向相反;

将该第二初态运动矢量和该第二偏移矢量相加,以获得该第二终态运动矢量。

基于上述可能实现方式,实现了双向预测模式下,基于初态运动矢量获得态运动矢量的目的。

在一种可能实现方式中,该方法用于双向帧间预测,该终态运动矢量包括第一终态运动矢量和第二终态运动矢量,该初态运动矢量包括第一初态运动矢量和第二初态运动矢量,其中,该第一终态运动矢量和该第一初态运动矢量基于该待处理图像块的第一参考帧列表指示运动补偿块,该第二终态运动矢量和该第二初态运动矢量基于该待处理图像块的第二参考帧列表指示运动补偿块,该终态运动矢量基于该初态运动矢量获得,包括:

将该第一初态运动矢量和多个预设的第一偏移矢量分别相加,以获得多个候选第一终态运动矢量;

确定该多个候选第一终态运动矢量中对应失真代价最小的候选第一终态运动矢量为该第一终态运动矢量;

将该第二初态运动矢量和多个预设的第二偏移矢量分别相加,以获得多个候选第二终态运动矢量;

确定该多个候选第二终态运动矢量中对应失真代价最小的候选第二终态运动矢量为该第二终态运动矢量。

基于上述可能实现方式,提供了另一种双向预测模式下,基于初态运动矢量获得终态运动矢量的可能,从而可以为双向预测模式下获得终态运动矢量提供多种方式。

第二方面,提供一种运动矢量残差的确定方法,包括:

解析码流,获得第二标识信息,该第二标识信息用于确定待处理图像块的初态运动矢量;

将该初态运动矢量和多个预设的偏移矢量分别相加,以获得多个候选终态运动矢量;

确定该多个候选终态运动矢量中对应失真代价最小的候选终态运动矢量为该终态运动矢量;

将该终态运动矢量与该初态运动矢量的差作为该待处理图像块的运动矢量残差,或者,将该终态运动矢量作为该待处理图像块的运动矢量残差。

在一种可能实现方式中,该方法用于双向帧间预测,该终态运动矢量包括第一终态运动矢量和第二终态运动矢量,该初态运动矢量包括第一初态运动矢量和第二初态运动矢量,其中,该第一终态运动矢量和该第一初态运动矢量基于该待处理图像块的第一参考帧列表指示运动补偿块,该第二终态运动矢量和该第二初态运动矢量基于该待处理图像块的第二参考帧列表指示运动补偿块,将该终态运动矢量与该初态运动矢量的差作为该待处理图像块的运动矢量残差,包括:

将该第一终态运动矢量与该第一初态运动矢量的差作为该待处理图像块的第一运动矢量残差。

基于上述可能实现方式,实现了双向帧间预测模式下,确定待处理图像块的运动矢量残的目的。

在一种可能实现方式中,将该终态运动矢量与该初态运动矢量的差作为该待处理图像块的运动矢量残差,还包括:

将该第二终态运动矢量与该第二初态运动矢量的差作为该待处理图像块的第二运动矢量残差。

在一种可能实现方式中,将该终态运动矢量作为该待处理图像块的运动矢量残差,包括:

将该第一终态运动矢量作为该待处理图像块的第一运动矢量残差。

在一种可能实现方式中,将该终态运动矢量作为该待处理图像块的运动矢量残差,还包括:

将该第二终态运动矢量作为该待处理图像块的第二运动矢量残差。

基于上述多种可能实现方式,提供了多种确定待处理图像块的运动矢量残差的方法,进而可以使得编码器和解码器可以基于该运动矢量残差,来提高编码效率和解码效率。

第三方面,提供一种运动矢量数据的存储方法,包括:

解析码流,获得第二标识信息和第三标识信息,该第二标识信息用于确定待处理图像块的初态预测运动矢量;

基于该初态预测运动矢量和多个预设的偏移矢量获得终态预测运动矢量;

当该第三标识信息指示该码流中携带该待处理图像块的运动矢量残差时,解析该码流,以获得该运动矢量残差值,将该运动矢量残差值存储于目标存储空间;

当该第三标识信息指示该码流中未携带该待处理图像块的运动矢量残差时,将该终态预测运动矢量与该初态预测运动矢量的差值存储于该目标存储空间,或者,将该终态预测运动矢量存储于该目标存储空间。

在一种可能实现方式中,该第三标识信息指示该码流中携带该待处理图像块的运动矢量残差,包括:

该第三标识信息指示该待处理图像块的预测模式为amvp模式。

基于上述可能实现方式,可以实现多种预测模式下的待处理图像块的运动矢量数据的存储。

在一种可能实现方式中,该第三标识信息指示该码流中未携带该待处理图像块的运动矢量残差,包括:

该第三标识信息指示该待处理图像块的预测模式为merge模式或skip模式。

基于上述可能实现方式,利用不同的标识信息来区别不同的预测模式,进而可以实现多种预测模式下的待处理图像块的运动矢量数据的存储。

在一种可能实现方式中,基于该初态预测运动矢量和多个预设的偏移矢量获得终态预测运动矢量,包括:

将该初态运动矢量和该多个预设的偏移矢量分别相加,以获得多个候选终态运动矢量;

确定该多个候选终态运动矢量中对应最小的候选终态运动矢量为该终态运动矢量。

基于上述可能实现方式,利用失真代价来的获取终态预测运动矢量的精确度较高,进而所存储的运动矢量的数据也比较精确。

第四方面,提供了一种运动矢量的获取装置,用于执行上述运动矢量的获取方法。具体的,该运动矢量的获取装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的运动矢量的获取方法的功能模块,其中,该上述方面为运动矢量的获取方法所对应的方面。

第五方面,提供了一种运动矢量残差的确定装置,用于执行上述运动矢量残差的确定方法。具体的,该运动矢量残差的确定装置包括用于执行上述第二方面或上述第二方面的任一种可选方式提供的运动矢量残差的确定方法的功能模块,其中,该上述方面为运动矢量残差的确定方法所对应的方面。

第六方面,提供了一种运动矢量数据的存储装置,用于执行上述运动矢量数据的存储定方法。具体的,该运动矢量数据的存储装置包括用于执行上述第三方面或上述第三方面的任一种可选方式提供的运动矢量数据的存储方法的功能模块,其中,该上述方面为运动矢量数据的存储方法所对应的方面。

第七方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述运动矢量的获取方法所执行的操作。

第八方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述运动矢量数据的存储方法所执行的操作。

第九方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述运动矢量残差的确定方法所执行的操作。

第十方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述运动矢量的获取方法所执行的操作。

第十一方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述运动矢量残差的确定方法所执行的操作。

第十二方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述运动矢量数据的存储方法所执行的操作。

本申请实施例提供的技术方案带来的有益效果是:

通过参考块与待处理图像块的位置关系来确定待处理图像块的运动矢量,当参考块与待处理图像块为位于预设范围内时,解码器将该参考块的初态运动矢量作为该待处理图像块的运动矢量,当参考块与待处理图像块为不位于预设范围内时,解码器将参考块的终态运动矢量作为该待处理图像块的运动矢量,那么,在解码过程中,该待处理图像块需要该参考块的终态运动矢量进行解码时,解码器可以将该参考块的初态运动矢量作为待处理图像块的运动矢量,以便该待处理图像块的使用,从而可以避免该待处理图像块等待该参考块获得终态运动矢量后,才能获得该待处理图像块的运动矢量,所以提高了解码器的解码效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为示例性的可通过配置以用于本申请实施例的一种视频编码及解码的系统框图;

图2为示例性的可通过配置以用于本申请实施例的一种视频编码器的系统框图;

图3为示例性的可通过配置以用于本申请实施例的一种视频解码器的系统框图;

图4为示例性的可通过配置以用于本申请实施例的一种帧间预测模块的示意性框图;

图5为示例性的一种编码单元及与其关联的相邻位置图像块的示意图;

图6为示例性的一种构建候选预测运动矢量列表的实施流程图;

图7为示例性的一种将经过组合的候选运动矢量添加到合并模式候选预测运动矢量列表的实施示意图;

图8为示例性的一种将经过缩放的候选运动矢量添加到合并模式候选预测运动矢量列表的实施示意图;

图9为示例性的一种将零运动矢量添加到合并模式候选预测运动矢量列表的实施示意图;

图10为示例性的一种合并预测模式的实施流程图;

图11为示例性的一种高级运动矢量预测模式的实施流程图;

图12为示例性的可通过配置以用于本申请实施例的一种由视频解码器执行的运动补偿的实施流程图;

图13为本申请实施例的一种视频编码中进行运动矢量更新方法的示意性流程图;

图14为本申请实施例的一种视频解码中进行运动矢量更新方法的示意性流程图;

图15为本申请实施例的一种运动矢量更新的示意性流程图;

图16为本申请实施例的一种运动矢量更新的示意性流程图;

图17为本申请实施例的一种运动矢量更新的示意性流程图;

图18为本申请实施例的一种运动矢量更新的示意性流程图;

图19为本申请实施例的一种运动矢量获取方法的示意性流程图;

图20为本申请实施例的一种运动矢量获取方法的示意性流程图;

图21为本申请实施例的一种限定范围选择运动矢量的示意图;

图22为本申请实施例的一种当前预测块获取方法的示意图;

图23为本申请实施例的一种视频解码中运动矢量获取装置的示意性框图;

图24为本申请实施例的一种视频编解码设备示意性框图;

图25为本申请实施例的一种运动矢量的获取装置结构图;

图26为本申请实施例的一种运动矢量残差的确定装置结构图;

图27为本申请实施例的一种运动矢量数据的存储结构图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

图1为本申请实施例中视频编码及解码系统10的一种示意性框图。如图1中所展示,系统10包含源装置12,源装置12产生将在稍后时间由目的地装置14解码的经编码视频数据。源装置12及目的地装置14可包括广泛范围的装置中的任一者,包含桌上型计算机、笔记型计算机、平板计算机以及机顶盒,例如,所谓的“智能”电话的电话手机、所谓的“智能”触控板、电视、摄影机、显示装置、数字媒体播放器、视频游戏控制台、视频流式传输装置或类似者。在一些应用中,源装置12及目的地装置14可经装备以用于无线通信。

目的地装置14可经由链路16接收待解码的经编码视频数据。链路16可包括能够将经编码视频数据从源装置12移动到目的地装置14的任何类型的媒体或装置。在一个可行的实施方式中,链路16可包括使源装置12能够实时将经编码视频数据直接传输到目的地装置14的通信媒体。可根据通信标准(例如,无线通信协议)调制经编码视频数据且将其传输到目的地装置14。通信媒体可包括任何无线或有线通信媒体,例如,射频频谱或至少一个物理传输线。通信媒体可形成基于包的网络(例如,局域网、广域网或因特网的全球网络)的部分。通信媒体可包含路由器、交换器、基站或可有用于促进从源装置12到目的地装置14的通信的任何其它装备。

替代地,可将经编码数据从输出接口22输出到存储装置。类似地,可由输入接口从存储装置存取经编码数据。存储装置可包含多种分散式或本地存取的数据存储媒体中的任一者,例如,硬盘驱动器、蓝光光盘、数字通用光盘(digitalvideodisc,dvd)、只读光盘(compactdiscread-onlymemory,cd-rom)、快闪存储器、易失性或非易失性存储器或用于存储经编码视频数据的任何其它合适的数字存储媒体。在另一可行的实施方式中,存储装置可对应于文件服务器或可保持由源装置12产生的经编码视频的另一中间存储装置。目的地装置14可经由流式传输或下载从存储装置存取所存储视频数据。文件服务器可为能够存储经编码视频数据且将此经编码视频数据传输到目的地装置14的任何类型的服务器。可行的实施方式文件服务器包含网站服务器、文件传送协议服务器、网络附接存储装置或本地磁盘机。目的地装置14可经由包含因特网连接的任何标准数据连接存取经编码视频数据。此数据连接可包含适合于存取存储于文件服务器上的经编码视频数据的无线信道(例如,无线连接(wireless-fidelity,wi-fi)连接)、有线连接(例如,缆线调制解调器等)或两者的组合。经编码视频数据从存储装置的传输可为流式传输、下载传输或两者的组合。

本申请的技术不必限于无线应用或设定。技术可应用于视频解码以支持多种多媒体应用中的任一者,例如,空中电视广播、有线电视传输、卫星电视传输、流式传输视频传输(例如,经由因特网)、编码数字视频以用于存储于数据存储媒体上、解码存储于数据存储媒体上的数字视频或其它应用。在一些可行的实施方式中,系统10可经配置以支持单向或双向视频传输以支持例如视频流式传输、视频播放、视频广播和/或视频电话的应用。

在图1的可行的实施方式中,源装置12包含视频源18、视频编码器20及输出接口22。在一些应用中,输出接口22可包含调制器/解调制器(调制解调器)和/或传输器。在源装置12中,视频源18可包含例如以下各者的源:视频捕获装置(例如,摄像机)、含有先前捕获的视频的视频存档、用以从视频内容提供者接收视频的视频馈入接口,和/或用于产生计算机图形数据作为源视频的计算机图形系统,或这些源的组合。作为一种可行的实施方式,如果视频源18为摄像机,那么源装置12及目的装置14可形成所谓的摄影机电话或视频电话。本申请中所描述的技术可示例性地适用于视频解码,且可适用于无线和/或有线应用。

可由视频编码器20来编码所捕获、预捕获或计算机产生的视频。经编码视频数据可经由源装置12的输出接口22直接传输到目的地装置14。经编码视频数据也可(或替代地)存储到存储装置24上以供稍后由目的地装置14或其它装置存取以用于解码和/或播放。

目的地装置14包含输入接口28、视频解码器30及显示装置32。在一些应用中,输入接口28可包含接收器和/或调制解调器。目的地装置14的输入接口28经由链路16接收经编码视频数据。经由链路16传达或提供于存储装置24上的经编码视频数据可包含由视频编码器20产生以供视频解码器30的视频解码器使用以解码视频数据的多种语法元素。这些语法元素可与在通信媒体上传输、存储于存储媒体上或存储于文件服务器上的经编码视频数据包含在一起。

显示装置32可与目的地装置14集成或在目的地装置14外部。在一些可行的实施方式中,目的地装置14可包含集成显示装置且也经配置以与外部显示装置接口连接。在其它可行的实施方式中,目的地装置14可为显示装置。一般来说,显示装置32向用户显示经解码视频数据,且可包括多种显示装置中的任一者,例如,液晶显示器、等离子显示器、有机发光二极管显示器或另一类型的显示装置。

视频编码器20及视频解码器30可根据例如目前在开发中的下一代视频编

解码压缩标准(h.266)操作且可遵照h.266测试模型。替代地,视频编码器20及视频解码器30可根据例如itu-th.265标准,也称为高效率视频解码标准,或者,itu-th.264标准的其它专属或工业标准或这些标准的扩展而操作,itu-th.264标准替代地被称为动态图像专家组(movingpictureexpertsgroup,mpeg-4)第10部分,也称高级视频编码(advancedvideocoding,avc)。然而,本申请的技术不限于任何特定解码标准。视频压缩标准的其它可行的实施方式包含mpeg-2和itu-th.263。

尽管未在图1中展示,但在一些方面中,视频编码器20及视频解码器30可各自与音频编码器及解码器集成,且可包含适当多路复用器-多路分用器(multiplexer-demultiplexer,mux-demux)单元或其它硬件及软件以处置共同数据流或单独数据流中的音频及视频两者的编码。如果适用,那么在一些可行的实施方式中,mux-demux单元可遵照ituh.223多路复用器协议或例如用户数据报协议(userdatagramprotocol,udp)的其它协议。

视频编码器20及视频解码器30各自可实施为多种合适编码器电路中的任一者,例如,一个或多个微处理器、数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、离散逻辑、软件、硬件、固件或其任何组合。在技术部分地以软件实施时,装置可将软件的指令存储于合适的非暂时性计算机可读媒体中且使用一个或多个处理器以硬件执行指令,以执行本申请的技术。视频编码器20及视频解码器30中的每一者可包含于一个或多个编码器或解码器中,其中的任一者可在相应装置中集成为组合式编码器/解码器(coderdecoder,codec)的部分。

本申请示例性地可涉及视频编码器20将特定信息“用信号发送”到例如视频解码器30的另一装置。然而,应理解,视频编码器20可通过将特定语法元素与视频数据的各种经编码部分相关联来用信号发送信息。也即是,视频编码器20可通过将特定语法元素存储到视频数据的各种经编码部分的头信息来“用信号发送”数据。在一些应用中,这些语法元素可在通过视频解码器30接收及解码之前经编码及存储(例如,存储到存储系统或文件服务器)。因此,术语“用信号发送”示例性地可指语法或用于解码经压缩视频数据的其它数据的传达,而不管此传达是实时或近实时地发生或在时间跨度内发生,例如,可在编码时将语法元素存储到媒体时发生,语法元素接着可在存储到此媒体之后的任何时间通过解码装置检索。

联合视频工作组(jointvideoteam,jvt)开发了h.265高效视频编码(highefficiencyvideocoding,hevc)标准。hevc标准化基于称作hevc测试模型的视频解码装置的演进模型。h.265的最新标准文档可从http://www.itu.int/rec/t-rec-h.265获得,最新版本的标准文档为h.265(12/16),该标准文档以全文引用的方式并入本文中。hm假设视频解码装置相对于itu-th.264/avc的现有算法具有若干额外能力。例如,h.264提供9种帧内预测编码模式,而hm可提供多达35种帧内预测编码模式。

jvet致力于开发h.266标准。h.266标准化的过程基于称作h.266测试模型的视频解码装置的演进模型。h.266的算法描述可从http://phenix.int-evry.fr/jvet中获得,其中,最新的算法描述包含于jvet-g1001-v1中,该算法描述文档以全文引用的方式并入本文中。同时,可从https://jvet.hhi.fraunhofer.de/svn/svn_hmjemsoftware/中获得jem测试模型的参考软件,同样以全文引用的方式并入本文中。

一般来说,hm的工作模型描述可将视频帧或图像划分成包含亮度及色度样本两者的树块或最大编码单元(largestcodingunit,lcu)的序列,lcu也被称为编码数单元(codingtreeunit,ctu)。树块具有与h.264标准的宏块类似的目的。条带包含按解码次序的数个连续树块。可将视频帧或图像分割成一个或多个条带。可根据四叉树将每一树块分裂成编码单元。例如,可将作为四叉树的根节点的树块分裂成四个子节点,且每一子节点可又为母节点且被分裂成另外四个子节点。作为四叉树的叶节点的最终不可分裂的子节点包括解码节点,例如,经解码视频块。与经解码码流相关联的语法数据可定义树块可分裂的最大次数,且也可定义解码节点的最小大小。

需要说明的是,一个ctu包括同一位置处的一个亮度编码树块(codingtreeblock,ctb)和两个色度ctb,以及一些相应的语法元素,ctb可以直接作为一个编码块(codingblock,cb),也可以进一步以四叉树的形式划分为多个小的编码块cb,一个亮度cb、两个色度cb以及一些相应的语法元素,可以组成一个编码单元(codingunit,cu)。

cu包含解码节点及预测单元(predictionunit,pu)以及与解码节点相关联的变换单元(transformunit,tu)。cu的大小对应于解码节点的大小且形状必须为正方形。cu的大小的范围可为8×8像素直到最大64×64像素或更大的树块的大小。每一cu可含有一个或多个pu及一个或多个tu。例如,与cu相关联的语法数据可描述将cu分割成一个或多个pu的情形。分割模式在cu是被跳过或经直接模式编码、帧内预测模式编码或帧间预测模式编码的情形之间可为不同的。pu可经分割成形状为非正方形。例如,与cu相关联的语法数据也可描述根据四叉树将cu分割成一个或多个tu的情形。tu的形状可为正方形或非正方形。

hevc标准允许根据tu进行变换,tu对于不同cu来说可为不同的。tu通常基于针对经分割lcu定义的给定cu内的pu的大小而设定大小,但情况可能并非总是如此。tu的大小通常与pu相同或小于pu。在一些可行的实施方式中,可使用称作“残余四叉树”(residualqualtree,rqt)的四叉树结构将对应于cu的残余样本再分成较小单元。rqt的叶节点可被称作tu。可变换与tu相关联的像素差值以产生变换系数,变换系数可被量化。

一般来说,pu包含与预测过程有关的数据。例如,在pu经帧内模式编码时,pu可包含描述pu的帧内预测模式的数据。作为另一可行的实施方式,在pu经帧间模式编码时,pu可包含界定pu的运动矢量的数据。例如,界定pu的运动矢量的数据可描述运动矢量的水平分量、运动矢量的垂直分量、运动矢量的分辨率(例如,四分之一像素精确度或八分之一像素精确度)、运动矢量所指向的参考图像,和/或运动矢量的参考图像列表(例如,列表0、列表1或列表c)。

一般来说,tu使用变换及量化过程。具有一个或多个pu的给定cu也可包含一个或多个tu。在预测之后,视频编码器20可计算对应于pu的残余值。残余值包括像素差值,像素差值可变换成变换系数、经量化且使用tu扫描以产生串行化变换系数以用于熵解码。本申请通常使用术语“视频块”来指cu的解码节点。在一些特定应用中,本申请也可使用术语“视频块”来指包含解码节点以及pu及tu的树块,例如,lcu或cu。

视频序列通常包含一系列视频帧或图像。图像群组(groupofpicture,gop)示例性地包括一系列、一个或多个视频图像。gop可在gop的头信息中、图像中的一者或多者的头信息中或在别处包含语法数据,语法数据描述包含于gop中的图像的数目。图像的每一条带可包含描述相应图像的编码模式的条带语法数据。视频编码器20通常对个别视频条带内的视频块进行操作以便编码视频数据。视频块可对应于cu内的解码节点。视频块可具有固定或变化的大小,且可根据指定解码标准而在大小上不同。

作为一种可行的实施方式,hm支持各种pu大小的预测。假定特定cu的大小为2n×2n,hm支持2n×2n或n×n的pu大小的帧内预测,以及2n×2n、2n×n、n×2n或n×n的对称pu大小的帧间预测,hm也支持2n×nu、2n×nd、nl×2n及nr×2n的pu大小的帧间预测的不对称分割。在不对称分割中,cu的一方向未分割,而另一方向分割成25%及75%。对应于25%区段的cu的部分由“n”后跟着“上(up)”、“下(down)”、“左(left)”或“右(right)”的指示来指示。因此,例如,“2n×nu”指水平分割的2n×2ncu,其中2n×0.5npu在上部且2n×1.5npu在底部。

在本申请中,“n×n”与“n乘n”可互换使用以指依照垂直维度及水平维度的视频块的像素尺寸,例如,16×16像素或16乘16像素。一般来说,16×16块将在垂直方向上具有16个像素(y=16),且在水平方向上具有16个像素(x=16)。同样地,n×n块一股在垂直方向上具有n个像素,且在水平方向上具有n个像素,其中,n表示非负整数值。可将块中的像素排列成行及列。此外,块未必需要在水平方向上与在垂直方向上具有相同数目个像素。例如,块可包括n×m个像素,其中m未必等于n。

在使用cu的pu的帧内预测性或帧间预测性解码之后,视频编码器20可计算cu的tu的残余数据。pu可包括空间域(也称作像素域)中的像素数据,且tu可包括在将变换(例如,离散余弦变换(discretecosinetransform,dct)、整数变换、小波变换或概念上类似的变换)应用于残余视频数据之后变换域中的系数。残余数据可对应于未经编码图像的像素与对应于pu的预测值之间的像素差。视频编码器20可形成包含cu的残余数据的tu,且接着变换tu以产生cu的变换系数。

在任何变换以产生变换系数之后,视频编码器20可执行变换系数的量化。量化示例性地指对系数进行量化以可能减少用以表示系数的数据的量从而提供进一步压缩的过程。量化过程可减少与系数中的一些或全部相关联的位深度。例如,可在量化期间将n位值降值舍位到m位值,其中n大于m。

jem模型对视频图像的编码结构进行了进一步的改进,具体的,被称为“四叉树结合二叉树”(quadtreecombinedwithbinarytree,qtbt)的块编码结构被引入进来。qtbt结构摒弃了hevc中的cu,pu,tu等概念,支持更灵活的cu划分形状,一个cu可以正方形,也可以是长方形。一个ctu首先进行四叉树划分,该四叉树的叶节点进一步进行二叉树划分。同时,在二叉树划分中存在两种划分模式,对称水平分割和对称竖直分割。二叉树的叶节点被称为cu,jem的cu在预测和变换的过程中都不可以被进一步划分,也就是说jem的cu,pu,tu具有相同的块大小。在现阶段的jem中,ctu的最大尺寸为256×256亮度像素。

在一些可行的实施方式中,视频编码器20可利用预定义扫描次序来扫描经量化变换系数以产生可经熵编码的串行化向量。在其它可行的实施方式中,视频编码器20可执行自适应性扫描。在扫描经量化变换系数以形成一维向量之后,视频编码器20可根据上下文自适应性可变长度解码(context-adaptivevariable-lengthcoding,cavlc)、上下文自适应性二进制算术解码(context-basedadaptivebinaryarithmeticcoding,cabac)、概率区间分割熵(probabilityintervalpartitioningentrop,pipe)解码或其他熵解码方法来熵解码一维向量。视频编码器20也可熵编码与经编码视频数据相关联的语法元素以供视频解码器30用于解码视频数据。

为了执行cabac,视频编码器20可将上下文模型内的上下文指派给待传输的符号。上下文可与符号的相邻值是否为非零有关。为了执行cavlc,视频编码器20可选择待传输的符号的可变长度码。可变长度解码(variable-lengthcoding,vlc)中的码字可经构建以使得相对较短码对应于可能性较大的符号,而较长码对应于可能性较小的符号。以这个方式,vlc的使用可相对于针对待传输的每一符号使用相等长度码字达成节省码率的目的。基于指派给符号的上下文可以确定cabac中的概率。

在本申请实施例中,视频编码器可执行帧间预测以减少图像之间的时间冗余。如前文所描述,根据不同视频压缩编解码标准的规定,cu可具有一个或多个预测单元pu。换句话说,多个pu可属于cu,或者pu和cu的尺寸相同。在本文中当cu和pu尺寸相同时,cu的分割模式为不分割,或者即为分割为一个pu,且统一使用pu进行表述。当视频编码器执行帧间预测时,视频编码器可用信号通知视频解码器用于pu的运动信息。示例性的,pu的运动信息可以包括:参考图像索引、运动矢量和预测方向标识。运动矢量可指示pu的图像块(也称视频块、像素块、像素集合等)与pu的参考块之间的位移。pu的参考块可为类似于pu的图像块的参考图像的一部分。参考块可定位于由参考图像索引和预测方向标识指示的参考图像中。

为了减少表示pu的运动信息所需要的编码比特的数目,视频编码器可根据合并(merge)预测模式或高级运动矢量预测(advancedmotionvectorprediction,amvp)模式过程产生用于pu中的每一者的候选预测运动矢量(motionvector,mv)列表。用于pu的候选预测运动矢量列表中的每一候选预测运动矢量可指示运动信息。由候选预测运动矢量列表中的一些候选预测运动矢量指示的运动信息可基于其它pu的运动信息。如果候选预测运动矢量指示指定空间候选预测运动矢量位置或时间候选预测运动矢量位置中的一者的运动信息,则本申请可将所述候选预测运动矢量称作“原始”候选预测运动矢量。举例来说,对于合并模式,在本文中也称为合并预测模式,可存在五个原始空间候选预测运动矢量位置和一个原始时间候选预测运动矢量位置。在一些实例中,视频编码器可通过组合来自不同原始候选预测运动矢量的部分运动矢量、修改原始候选预测运动矢量或仅插入零运动矢量作为候选预测运动矢量来产生额外候选预测运动矢量。这些额外候选预测运动矢量不被视为原始候选预测运动矢量且在本申请中可称作人工产生的候选预测运动矢量。

本申请的技术一般涉及用于在视频编码器处产生候选预测运动矢量列表的技术和用于在视频解码器处产生相同候选预测运动矢量列表的技术。视频编码器和视频解码器可通过实施用于构建候选预测运动矢量列表的相同技术来产生相同候选预测运动矢量列表。举例来说,视频编码器和视频解码器两者可构建具有相同数目的候选预测运动矢量(例如,五个候选预测运动矢量)的列表。视频编码器和解码器可首先考虑空间候选预测运动矢量(例如,同一图像中的相邻块),接着考虑时间候选预测运动矢量(例如,不同图像中的候选预测运动矢量),且最后可考虑人工产生的候选预测运动矢量直到将所要数目的候选预测运动矢量添加到列表为止。根据本申请的技术,可在候选预测运动矢量列表构建期间针对某些类型的候选预测运动矢量利用修剪操作以便从候选预测运动矢量列表移除重复,而对于其它类型的候选预测运动矢量,可能不使用修剪以便减小解码器复杂性。举例来说,对于空间候选预测运动矢量集合和对于时间候选预测运动矢量,可执行修剪操作以从候选预测运动矢量的列表排除具有重复运动信息的候选预测运动矢量。然而,当将人工产生的候选预测运动矢量添加到候选预测运动矢量的列表时,可在不对人工产生的候选预测运动矢量执行修剪操作的情况下添加人工产生的候选预测运动矢量。

在产生用于cu的pu的候选预测运动矢量列表之后,视频编码器可从候选预测运动矢量列表中选择候选预测运动矢量且在码流中输出候选预测运动矢量索引。选定候选预测运动矢量可为具有产生最紧密地匹配正被解码的目标pu的预测单元的运动矢量的候选预测运动矢量。候选预测运动矢量索引可指示在候选预测运动矢量列表中选定候选预测运动矢量的位置。视频编码器还可基于由pu的运动信息指示的参考块产生用于pu的预测性图像块。可基于由选定候选预测运动矢量指示的运动信息确定pu的运动信息。举例来说,在合并模式中,pu的运动信息可与由选定候选预测运动矢量指示的运动信息相同。在高级运动矢量预测模式中,pu的运动信息可基于pu的运动矢量差和由选定候选预测运动矢量指示的运动信息确定。视频编码器可基于cu的pu的预测性图像块和用于cu的原始图像块产生用于cu的一或多个残余图像块。视频编码器可接着编码一或多个残余图像块且在码流中输出一或多个残余图像块。

码流可包括识别pu的候选预测运动矢量列表中的选定候选预测运动矢量的数据。视频解码器可基于由pu的候选预测运动矢量列表中的选定候选预测运动矢量指示的运动信息确定pu的运动信息。视频解码器可基于pu的运动信息识别用于pu的一或多个参考块。在识别pu的一或多个参考块之后,视频解码器可基于pu的一或多个参考块产生用于pu的预测性图像块。视频解码器可基于用于cu的pu的预测性图像块和用于cu的一或多个残余图像块来重构用于cu的图像块。

为了易于解释,本申请可将位置或图像块描述为与cu或pu具有各种空间关系。此描述可解释为是指位置或图像块和与cu或pu相关联的图像块具有各种空间关系。此外,本申请可将视频解码器当前在解码的pu称作待处理pu,也称为当前待处理图像块。本申请可将视频解码器当前在解码的cu称作待处理cu。本申请可将视频解码器当前在解码的图像称作当前图像。应理解,本申请同时适用于pu和cu具有相同尺寸,或者pu即为cu的情况,统一使用pu来表示。

如前文简短地描述,视频编码器20可使用帧间预测以产生用于cu的pu的预测性图像块和运动信息。在许多例子中,给定pu的运动信息可能与一或多个附近pu(即,其图像块在空间上或时间上在给定pu的图像块附近的pu)的运动信息相同或类似。因为附近pu经常具有类似运动信息,所以视频编码器20可参考附近pu的运动信息来编码给定pu的运动信息。参考附近pu的运动信息来编码给定pu的运动信息可减少码流中指示给定pu的运动信息所需要的编码比特的数目。

视频编码器20可以各种方式参考附近pu的运动信息来编码给定pu的运动信息。举例来说,视频编码器20可指示给定pu的运动信息与附近pu的运动信息相同。本申请可使用合并模式来指代指示给定pu的运动信息与附近pu的运动信息相同或可从附近pu的运动信息导出。在另一可行的实施方式中,视频编码器20可计算用于给定pu的运动矢量差(motionvectordifference,mvd),mvd为给定pu的初态运动矢量与给定pu的终态运动矢量之间的差。视频编码器20可将mvd而非给定pu的运动矢量包括于给定pu的运动信息中。在码流中表示mvd比表示给定pu的运动矢量所需要的编码比特少。本申请可使用高级运动矢量预测模式指代通过使用mvd和识别候选者运动矢量的索引值来用信号通知解码端给定pu的运动信息。

为了使用合并模式或amvp模式来用信号通知解码端给定pu的运动信息,视频编码器20可产生用于给定pu的候选预测运动矢量列表。候选预测运动矢量列表可包括一或多个候选预测运动矢量。用于给定pu的候选预测运动矢量列表中的候选预测运动矢量中的每一者可指定运动信息。由每一候选预测运动矢量指示的运动信息可包括运动矢量、参考图像索引和预测方向标识。候选预测运动矢量列表中的候选预测运动矢量可包括“原始”候选预测运动矢量,其中每一者指示不同于给定pu的pu内的指定候选预测运动矢量位置中的一者的运动信息。

在产生用于pu的候选预测运动矢量列表之后,视频编码器20可从用于pu的候选预测运动矢量列表选择候选预测运动矢量中的一者。举例来说,视频编码器可比较每一候选预测运动矢量与正被解码的pu且可选择具有所要码率-失真代价的候选预测运动矢量。视频编码器20可输出用于pu的候选预测运动矢量索引。候选预测运动矢量索引可识别选定候选预测运动矢量在候选预测运动矢量列表中的位置。

此外,视频编码器20可基于由pu的运动信息指示的参考块产生用于pu的预测性图像块。可基于由用于pu的候选预测运动矢量列表中的选定候选预测运动矢量指示的运动信息确定pu的运动信息。举例来说,在合并模式中,pu的运动信息可与由选定候选预测运动矢量指示的运动信息相同。在amvp模式中,可基于用于pu的运动矢量差和由选定候选预测运动矢量指示的运动信息确定pu的运动信息。视频编码器20可如前文所描述处理用于pu的预测性图像块。

当视频解码器30接收到码流时,视频解码器30可产生用于cu的pu中的每一者的候选预测运动矢量列表。由视频解码器30针对pu产生的候选预测运动矢量列表可与由视频编码器20针对pu产生的候选预测运动矢量列表相同。从码流中解析得到的语法元素可指示在pu的候选预测运动矢量列表中选定候选预测运动矢量的位置。在产生用于pu的候选预测运动矢量列表之后,视频解码器30可基于由pu的运动信息指示的一或多个参考块产生用于pu的预测性图像块。视频解码器30可基于由用于pu的候选预测运动矢量列表中的选定候选预测运动矢量指示的运动信息确定pu的运动信息。视频解码器30可基于用于pu的预测性图像块和用于cu的残余图像块重构用于cu的图像块。

应理解,在一种可行的实施方式中,在解码端,候选预测运动矢量列表的构建与从码流中解析选定候选预测运动矢量在候选预测运动矢量列表中的位置是相互独立,可以任意先后或者并行进行的。

在另一种可行的实施方式中,在解码端,首先从码流中解析选定候选预测运动矢量在候选预测运动矢量列表中的位置,根据解析出来的位置构建候选预测运动矢量列表,在该实施方式中,不需要构建全部的候选预测运动矢量列表,只需要构建到该解析出来的位置处的候选预测运动矢量列表,即能够确定该位置出的候选预测运动矢量即可。举例来说,当解析码流得出选定的候选预测运动矢量为候选预测运动矢量列表中索引为3的候选预测运动矢量时,仅需要构建从索引为0到索引为3的候选预测运动矢量列表,即可确定索引为3的候选预测运动矢量,可以达到减小复杂度,提高解码效率的技术效果。

图2为本申请实施例中视频编码器20的一种示意性框图。视频编码器20可执行视频条带内的视频块的帧内解码和帧间解码。帧内解码依赖于空间预测来减少或去除给定视频帧或图像内的视频的空间冗余。帧间解码依赖于时间预测来减少或去除视频序列的邻近帧或图像内的视频的时间冗余。帧内模式(i模式)可指若干基于空间的压缩模式中的任一者。例如单向预测(p模式)或双向预测(b模式)等帧间模式可指若干基于时间的压缩模式中的任一者。

在图2的可行的实施方式中,视频编码器20包含分割单元35、预测单元41、参考图片存储器64、求和器50、变换单元52、量化单元54、熵编码单元56。

该参考图片存储器64还可以用于提供目标存储空间,用于存储mvd,也即是,存储待处理pu的终态运动矢量与初态运动矢量之差,在一些实施例中,该参考图片存储器64还可以存储待处理pu的终态运动矢量,在本申请实施例中,该参考图片存储器64存储的mvd,可以被用于其他pu的编码过程中,例如,在合并(merge)模式下的解码过程中,因为更新前的初态运动矢量和更新后的终态运动矢量是分时、分开存储的,那么,当待处理pu需要获取其他pu的预测运动矢量时,在一定条件下可以直接将其他pu更新前的初态运动矢量作为其他pu的运动矢量,而不必等待其他pu的运动矢量更新完成后,才能获取其他块的运动矢量。

需要说明的是,该目标存储空间可以是该参考图片存储器64以外的存储器提供,例如,新增的存储器,本申请实施例不做具体限定。

需要注意的是,在相关技术中,当该视频编码器20工作在合并模式下时,该参考图片存储器64中的内容为空,或者为零矢量,也即是,当该视频编码器20工作在合并模式下时,目标存储空间在编码时没有被用到,并且待处理pu在编码过程中,获取的是其他pu的预测运动矢量为其他pu更新后的终态运动矢量,所以待处理pu必须排队等待其他pu的预测运动矢量更新完成后,才能获取得到,也就会在编码时出现编码延迟的情况。但是当该视频编码器20工作在非合并模式下时,可能会用到该参考图片存储器64,例如,在amvp模式下,该目标存储空间用于存储运动矢量残差值,视频编码器20将该运动矢量残差值进行编码,以便视频解码器30对当前pu解码后,可以获得待处理pu的运动矢量残差值,并基于该待处理pu的运动矢量残差值以及待处理pu的初态运动矢量,获取待处理pu的终态运动矢量。

预测单元41包含运动估计单元42、运动补偿单元44和帧内预测单元46。对于视频块重构建,视频编码器20也包含反量化单元58、反变换单元60和求和器62。也可包含解块滤波器(图2中未展示)以对块边界进行滤波从而从经重构建视频中去除块效应伪影。在需要时,解块滤波器将通常对求和器62的输出进行滤波。除了解块滤波器之外,也可使用额外环路滤波器(环路内或环路后)。

如图2中所展示,视频编码器20接收视频数据,且分割单元35将数据分割成视频块。此分割也可包含分割成条带、图像块或其它较大单元,以及根据lcu及cu的四叉树结构进行视频块分割。视频编码器20示例性地说明编码在待编码的视频条带内的视频块的组件。一般来说,条带可划分成多个视频块(且可能划分成称作图像块的视频块的集合)。

预测单元41可基于编码质量与代价计算结果(例如,码率-失真代价(ratedistortioncost,rdcost),也称率失真代价)选择当前视频块的多个可能解码模式中的一者,例如多个帧内解码模式中的一者或多个帧间解码模式中的一者。预测单元41可将所得经帧内解码或经帧间解码块提供到求和器50以产生残余块数据且将所得经帧内解码或经帧间解码块提供到求和器62以重构建经编码块从而用作参考图像。

预测单元41内的运动估计单元42及运动补偿单元44,执行相对于一个或多个参考图像中的一个或多个预测块的当前视频块的帧间预测性解码,以提供时间压缩。运动估计单元42可经配置以根据视频序列的预定模式确定视频条带的帧间预测模式。预定模式可将序列中的视频条带指定为p条带、b条带或gpb条带。运动估计单元42及运动补偿单元44可高度集成,但为概念目的而分别说明。通过运动估计单元42所执行的运动估计为产生估计视频块的运动矢量的过程。例如,运动矢量可指示当前视频帧或图像内的视频块的pu相对于参考图像内的预测块的位移。

预测块为依据像素差而被发现为紧密匹配待解码的视频块的pu的块,像素差可通过绝对差和(sumofabsolutedifference,sad)、平方差和(sumofsquareddifference,ssd)或其它差度量确定。在一些可行的实施方式中,视频编码器20可计算存储于参考图片存储器64中的参考图像的子整数(sub-integer)像素位置的值。例如,视频编码器20可内插参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42可执行相对于全像素位置及分数像素位置的运动搜索且输出具有分数像素精确度的运动矢量。

运动估计单元42通过比较pu的位置与参考图像的预测块的位置而计算经帧间解码条带中的视频块的pu的运动矢量。可从第一参考图像列表(列表0)或第二参考图像列表(列表1)选择参考图像,列表中的每一者识别存储于参考图片存储器64中的一个或多个参考图像。运动估计单元42将经计算运动矢量发送到熵编码单元56及运动补偿单元44。

由运动补偿单元44执行的运动补偿可涉及基于由运动估计所确定的运动矢量提取或产生预测块,可能执行到子像素精确度的内插。在接收当前视频块的pu的运动矢量后,运动补偿单元44即可在参考图像列表中的一者中定位运动矢量所指向的预测块。视频编码器20通过从正经解码的当前视频块的像素值减去预测块的像素值来形成残余视频块,从而形成像素差值。像素差值形成块的残余数据,且可包含亮度及色度差分量两者。求和器50表示执行此减法运算的一个或多个组件。运动补偿单元44也可产生与视频块及视频条带相关联的语法元素以供视频解码器30用于解码视频条带的视频块。

如果pu位于b条带中,则含有pu的图像可与称作“列表0”和“列表1”的两个参考图像列表相关联。在一些可行的实施方式中,含有b条带的图像可与为列表0和列表1的组合的列表组合相关联。

此外,如果pu位于b条带中,则运动估计单元42可针对pu执行单向预测或双向预测,其中,在一些可行的实施方式中,双向预测为分别基于列表0和列表1的参考图像列表的图像进行的预测,在另一些可行的实施方式中,双向预测为分别基于当前帧在显示顺序上的已重建的未来帧和已重建的过去帧进行的预测。当运动估计单元42针对pu执行单向预测时,运动估计单元42可在列表0或列表1的参考图像中搜索用于pu的参考块。运动估计单元42可接着产生指示列表0或列表1中的含有参考块的参考图像的参考索引和指示pu与参考块之间的空间位移的运动矢量。运动估计单元42可输出参考索引、预测方向标识和运动矢量作为pu的运动信息。预测方向标识可指示参考索引指示列表0或列表1中的参考图像。运动补偿单元44可基于由pu的运动信息指示的参考块产生pu的预测性图像块。

当运动估计单元42针对pu执行双向预测时,运动估计单元42可在列表0中的参考图像中搜索用于pu的参考块且还可在列表1中的参考图像中搜索用于pu的另一参考块。运动估计单元42可接着产生指示列表0和列表1中的含有参考块的参考图像的参考索引和指示参考块与pu之间的空间位移的运动矢量。运动估计单元42可输出pu的参考索引和运动矢量作为pu的运动信息。运动补偿单元44可基于由pu的运动信息指示的参考块产生pu的预测性图像块。

在一些可行的实施方式中,运动估计单元42不向熵编码模块56输出用于pu的运动信息的完整集合。而是,运动估计单元42可参考另一pu的运动信息来用信号通知pu的运动信息。举例来说,运动估计单元42可确定pu的运动信息充分类似于相邻pu的运动信息。在此实施方式中,运动估计单元42可在与pu相关联的语法结构中指示一个指示值,所述指示值向视频解码器30指示pu具有与相邻pu相同的运动信息或具有可从相邻pu导出的运动信息。在另一实施方式中,运动估计单元42可在与pu相关联的语法结构中识别与相邻pu相关联的候选预测运动矢量和运动矢量差(motionvectordifference,mvd)。mvd指示pu的运动矢量和与相邻pu相关联的所指示候选预测运动矢量之间的差。视频解码器30可使用所指示候选预测运动矢量和mvd来确定pu的运动矢量。

如前文所描述,预测模块41可产生用于cu的每一pu的候选预测运动矢量列表。候选预测运动矢量列表中的一或多者可包括一或多个原始候选预测运动矢量和从原始候选预测运动矢量导出的一或多个额外候选预测运动矢量。

需要注意的是,在本申请实施例中,该预测模块41在合并模式下在建立候选预测运动矢量列表时,可以将待处理pu的参考pu的运动矢量存储在候选预测运动矢量列表,该参考pu的运动矢量可以是参考pu更新前的初态运动矢量,也可以是参考pu更新后的终态运动矢量,参考pu更新后的终态运动矢量可以基于目标存储空间中存储的运动矢量获得,当目标存储空间存储的是mvd时,该参考pu的终态运动矢量可以通过参考pu的初态运动矢量和目标存储空间存储的mvd相加获得,当目标存储空间存储的是该参考pu的终态运动矢量时,该参考pu的终态运动矢量可以直接从该目标存储空间中获得。将参考pu的运动矢量存储在候选预测运动矢量列表中可以是如下存储方式:当参考pu和当前pu处于同一ctb范围或者ctb行范围时,将该参考单元更新前的初态运动矢量存储在该候选预测列表中,当参考pu和当前pu处于同一ctb范围或者ctb行范围时,将该参考单元更新后的终态运动矢量存储在该候选预测列表中。

预测单元41内的帧内预测单元46可执行相对于在与待解码的当前块相同的图像或条带中的一个或多个相邻块的当前视频块的帧内预测性解码以提供空间压缩。因此,作为通过运动估计单元42及运动补偿单元44执行的帧间预测(如前文所描述)的替代,帧内预测单元46可帧内预测当前块。明确地说,帧内预测单元46可确定用以编码当前块的帧内预测模式。在一些可行的实施方式中,帧内预测单元46可(例如)在单独编码遍历期间使用各种帧内预测模式来编码当前块,且帧内预测单元46(或在一些可行的实施方式中,模式选择单元40)可从经测试模式选择使用的适当帧内预测模式。

在预测单元41经由帧间预测或帧内预测产生当前视频块的预测块之后,视频编码器20通过从当前视频块减去预测块而形成残余视频块。残余块中的残余视频数据可包含于一个或多个tu中且应用于变换单元52。变换单元52使用例如离散余弦变换(discretecosinetransform,dct)或概念上类似的变换的变换(例如,离散正弦变换(discretesinetransform,dst))将残余视频数据变换成残余变换系数。变换单元52可将残余视频数据从像素域转换到变换域(例如,频域)。

变换单元52可将所得变换系数发送到量化单元54。量化单元54对变换系数进行量化以进一步减小码率。量化过程可减少与系数中的一些或全部相关联的比特深度。可通过调整量化参数来修改量化的程度。在一些可行的实施方式中,量化单元54可接着执行包含经量化变换系数的矩阵的扫描。替代地,熵编码单元56可执行扫描。

在量化之后,熵编码单元56可熵编码经量化变换系数。例如,熵编码单元56可执行上下文自适应性可变长度解码(cavlc)、上下文自适应性二进制算术解码(cabac)、概率区间分割熵(pipe)解码或另一熵编码方法或技术。熵编码单元56也可熵编码正经解码的当前视频条带的运动矢量及其它语法元素。在通过熵编码单元56进行熵编码之后,可将经编码码流传输到视频解码器30或存档以供稍后传输或由视频解码器30检索。

熵编码单元56可编码根据本申请的技术指示选定帧内预测模式的信息。视频编码器20可在可包含多个帧内预测模式索引表和多个经修改帧内预测模式索引表(也称作码字映射表)的所传输码流配置数据中包含各种块的编码上下文的定义及用于上下文中的每一者的高概率预测模式(mostprobablemode,mpm)、帧内预测模式索引表和经修改帧内预测模式索引表的指示。

反量化单元58及反变换单元60分别应用反量化及反变换,以在像素域中重构建残余块以供稍后用作参考图像的参考块。运动补偿单元44可通过将残余块与参考图像列表中的一者内的参考图像中的一者的预测块相加来计算参考块。运动补偿单元44也可将一个或多个内插滤波器应用于经重构建残余块以计算子整数像素值以用于运动估计。求和器62将经重构建残余块与通过运动补偿单元44所产生的经运动补偿的预测块相加以产生参考块以供存储于参考图片存储器64中。参考块可由运动估计单元42及运动补偿单元44用作参考块以帧间预测后续视频帧或图像中的块。

图3为本申请实施例中视频解码器30的一种示意性框图。在图3的可行的实施方式中,视频解码器30包含熵解码单元80、预测单元81、反量化单元86、反变换单元88、求和器90、参考图片存储器92。

该参考图片存储器92可以用于提供目标存储空间,该目标存储空间用于存储mvd,也即是,用于存储终态运动矢量与初态运动之差,在一些实施例中,该目标存储空间用于存储终态运动矢量,在本申请实施例中,该目标存储空间存储的更新后的终态运动矢量或者mvd,可以被用于其他pu的解码过程中,例如,在merge模式下的解码过程中,因为更新前的初态运动矢量和更新后的终态运动矢量是分时、分开存储的,那么,当待处理pu需要获取其他pu的预测运动矢量时,在一定条件下可以直接将其他pu更新前的初态运动矢量作为其他pu的运动矢量,而不必等待其他pu的运动矢量更新完成后,才能获取其他块的运动矢量。

需要说明的是,该目标存储空间可以是该参考图片存储器92以外的存储器提供,例如,新增的存储器,本申请实施例不做具体限定。

需要说明的是,在相关技术中,当该视频解码器30工作在合并模式下时,该目标存储空间中的内容为空,或者为零矢量,也即是,当该视频编码器20工作在merge模式下时,目标存储空间在解码时没有被用到,并且待处理pu在解码过程中,获取的是其他pu的预测运动矢量为其他pu更新后的终态运动矢量,所以待处理pu必须排队等待其他pu的运动矢量更新完成后,才能获取得到,也就会在解码时出现解码延迟的情况。但是当该视频解码器30工作在非合并模式下时,可能会用到该目标存储空间,例如,在amvp模式下,视频解码器30可以通过解码获取待处理pu的mvd,以便该视频解码器30可以基于该待处理pu的终态运动矢量以及该mvd,获取待处理pu的终态运动矢量。

预测单元81包含运动补偿单元82和帧内预测单元84。在一些可行的实施方式中,视频解码器30可执行与关于来自图4的视频编码器20描述的编码流程的示例性地互逆的解码流程。

在解码过程期间,视频解码器30从视频编码器20接收表示经编码视频条带的视频块及相关联的语法元素的经编码视频码流。视频解码器30的熵解码单元80熵解码码流以产生经量化系数、运动矢量及其它语法元素。熵解码单元80将运动矢量及其它语法元素转递到预测单元81。视频解码器30可在视频条带层级和/或视频块层级处接收语法元素。

在视频条带经解码为经帧内解码(i)条带时,预测单元81的帧内预测单元84可基于用信号发送的帧内预测模式及来自当前帧或图像的先前经解码块的数据而产生当前视频条带的视频块的预测数据。

在视频图像经解码为经帧间解码(例如,b、p或gpb)条带时,预测单元81的运动补偿单元82基于从熵解码单元80所接收的运动矢量及其它语法元素而产生当前视频图像的视频块的预测块。预测块可从参考图像列表中的一者内的参考图像中的一者产生。视频解码器30可基于存储于参考图片存储器92中的参考图像使用默认构建技术来构建参考图像列表(列表0及列表1)。

运动补偿单元82通过解析运动矢量及其它语法元素来确定当前视频条带的视频块的预测信息,且使用预测信息来产生正经解码的当前视频块的预测块。例如,运动补偿单元82使用所接收的语法元素中的一些来确定用以解码视频条带的视频块的预测模式(例如,帧内预测或帧间预测)、帧间预测条带类型(例如,b条带、p条带或gpb条带)、条带的参考图像列表中的一者或多者的构建信息、条带的每一经帧间编码视频块的运动矢量、条带的每一经帧间解码视频块的帧间预测状态、以及用以解码当前视频条带中的视频块的其它信息。

运动补偿单元82也可基于内插滤波器执行内插。运动补偿单元82可使用如由视频编码器20在视频块的编码期间所使用的内插滤波器来计算参考块的子整数像素的内插值。在此应用中,运动补偿单元82可从所接收的语法元素确定由视频编码器20使用的内插滤波器且使用内插滤波器来产生预测块。

如果pu是使用帧间预测而编码,则运动补偿单元82可产生用于pu的候选预测运动矢量列表。码流中可包括识别选定候选预测运动矢量在pu的候选预测运动矢量列表中的位置的数据。在产生用于pu的候选预测运动矢量列表之后,运动补偿单元82可基于由pu的运动信息指示的一或多个参考块产生用于pu的预测性图像块。pu的参考块可在与所述pu不同的时间图像中。运动补偿单元82可基于由pu的候选预测运动矢量列表中的选定的运动信息确定pu的运动信息。

需要注意的是,在本申请实施例中,该运动补偿单元82在合并模式下在建立候选预测运动矢量列表时,可以将待处理pu的参考pu的预测运动矢量存储在候选预测运动矢量列表,该参考pu的预测运动矢量可以是参考pu更新前的初态运动矢量,也可以是参考pu更新后的预测运动矢量,参考pu更新后的终态运动矢量可以基于参考pu的目标存储空间中存储的运动矢量获得,例如,当目标存储空间存储的是mvd时,该参考pu的终态运动矢量可以通过参考pu的初态运动矢量和目标存储空间存储的mvd相加获得,当目标存储空间存储的是该参考pu的终态运动矢量时,该参考pu的终态运动矢量可以直接从该目标存储空间中获得。将参考pu的预测运动矢量存储在候选预测运动矢量列表中可以是如下存储方式:当参考pu和当前pu处于同一ctb范围或者ctb行范围时,将该参考单元更新前的初态运动矢量存储在该候选预测列表中,当参考pu和当前pu处于同一ctb范围或者ctb行范围时,将该参考单元更新后的终态运动矢量存储在该候选预测列表中。

反量化单元86对码流中所提供且通过熵解码单元80所解码的经量化变换系数进行反量化(例如,解量化)。反量化过程可包含使用通过视频编码器20针对视频条带中的每一视频块所计算的量化参数确定量化的程度,且同样地确定应应用的反量化的程度。反变换单元88将反变换(例如,反dct、反整数变换或概念上类似的反变换过程)应用于变换系数以便在像素域中产生残余块。

在运动补偿单元82基于运动矢量及其它语法元素产生当前视频块的预测块之后,视频解码器30通过将来自反变换单元88的残余块与通过运动补偿单元82产生的对应预测块求和来形成经解码视频块。求和器90表示执行此求和运算的一个或多个组件。在需要时,也可应用解块滤波器来对经解码块进行滤波以便去除块效应伪影。其它环路滤波器(在解码环路中或在解码环路之后)也可用以使像素转变平滑,或以其它方式改进视频质量。给定帧或图像中的经解码视频块接着存储于参考图片存储器92中,参考图片存储器92存储供后续运动补偿所使用的参考图像。参考图片存储器92也存储供稍后呈现于例如图1的显示装置32的显示装置上的经解码视频。

如前文所注明,本申请的技术示例性地涉及帧间解码。应理解,本申请的技术可通过本申请中所描述的视频解码器中的任一者进行,视频解码器包含(例如)如关于图1到3所展示及描述的视频编码器20及视频解码器30。即,在一种可行的实施方式中,关于图2所描述的预测单元41可在视频数据的块的编码期间在执行帧间预测时执行下文中所描述的特定技术。在另一可行的实施方式中,关于图3所描述的预测单元81可在视频数据的块的解码期间在执行帧间预测时执行下文中所描述的特定技术。因此,对一般性“视频编码器”或“视频解码器”的引用可包含视频编码器20、视频解码器30或另一视频编码或编码单元。

图4为本申请实施例中帧间预测模块的一种示意性框图。帧间预测模块121,示例性的,可以包括运动估计单元42和运动补偿单元44。在不同的视频压缩编解码标准中,pu和cu的关系各有不同。帧间预测模块121可根据多个分割模式将当前cu分割为pu。举例来说,帧间预测模块121可根据2n×2n、2n×n、n×2n和n×n分割模式将当前cu分割为pu。在其他实施例中,当前cu即为当前pu,不作限定。

帧间预测模块121可对pu中的每一者执行整数运动估计(integermotionestimation,ime)且接着执行分数运动估计(fractionmotionestimation,fme)。当帧间预测模块121对pu执行ime时,帧间预测模块121可在一个或多个参考图像中搜索用于pu的参考块。在找到用于pu的参考块之后,帧间预测模块121可产生以整数精度指示pu与用于pu的参考块之间的空间位移的运动矢量。当帧间预测模块121对pu执行fme时,帧间预测模块121可改进通过对pu执行ime而产生的运动矢量。通过对pu执行fme而产生的运动矢量可具有子整数精度(例如,1/2像素精度、1/4像素精度等)。在产生用于pu的运动矢量之后,帧间预测模块121可使用用于pu的运动矢量以产生用于pu的预测性图像块。

在帧间预测模块121使用amvp模式用信号通知解码端pu的运动信息的一些可行的实施方式中,帧间预测模块121可产生用于pu的候选预测运动矢量列表。候选预测运动矢量列表可包括一个或多个原始候选预测运动矢量和从原始候选预测运动矢量导出的一个或多个额外候选预测运动矢量。在产生用于pu的候选预测运动矢量列表之后,帧间预测模块121可从候选预测运动矢量列表选择候选预测运动矢量且产生用于pu的运动矢量差(mvd)。用于pu的mvd可指示由选定候选预测运动矢量指示的运动矢量与使用ime和fme针对pu产生的运动矢量之间的差。在这些可行的实施方式中,帧间预测模块121可输出识别选定候选预测运动矢量在候选预测运动矢量列表中的位置的候选预测运动矢量索引。帧间预测模块121还可输出pu的mvd。下文详细描述图11中,本申请实施例中高级运动矢量预测(amvp)模式的一种可行的实施方式。

除了通过对pu执行ime和fme来产生用于pu的运动信息外,帧间预测模块121还可对pu中的每一者执行merge操作。当帧间预测模块121对pu执行合并操作时,帧间预测模块121可产生用于pu的候选预测运动矢量列表。用于pu的候选预测运动矢量列表可包括一个或多个原始候选预测运动矢量和从原始候选预测运动矢量导出的一个或多个额外候选预测运动矢量。候选预测运动矢量列表中的原始候选预测运动矢量可包括一个或多个空间候选预测运动矢量和时间候选预测运动矢量。空间候选预测运动矢量可指示当前图像中的其它pu的运动信息。时间候选预测运动矢量可基于不同于当前图像的对应的pu的运动信息。时间候选预测运动矢量还可称作时间运动矢量预测(timemotionvectorprediction,tmvp)。

在产生候选预测运动矢量列表之后,帧间预测模块121可从候选预测运动矢量列表选择候选预测运动矢量中的一个。帧间预测模块121可接着基于由pu的运动信息指示的参考块产生用于pu的预测性图像块。在合并模式中,pu的运动信息可与由选定候选预测运动矢量指示的运动信息相同。下文描述的图10说明merge示例性的流程图。

在基于ime和fme产生用于pu的预测性图像块和基于合并操作产生用于pu的预测性图像块之后,帧间预测模块121可选择通过fme操作产生的预测性图像块或者通过合并操作产生的预测性图像块。在一些可行的实施方式中,帧间预测模块121可基于通过fme操作产生的预测性图像块和通过合并操作产生的预测性图像块的码率-失真代价分析来选择用于pu的预测性图像块。

在帧间预测模块121已选择通过根据分割模式中的每一者分割当前cu而产生的pu的预测性图像块之后(在一些实施方式中,编码树单元ctu划分为cu后,不会再进一步划分为更小的pu,此时pu等同于cu),帧间预测模块121可选择用于当前cu的分割模式。在一些实施方式中,帧间预测模块121可基于通过根据分割模式中的每一者分割当前cu而产生的pu的选定预测性图像块的码率-失真代价分析来选择用于当前cu的分割模式。帧间预测模块121可将与属于选定分割模式的pu相关联的预测性图像块输出到残差产生模块102。帧间预测模块121可将指示属于选定分割模式的pu的运动信息的语法元素输出到熵编码模块116。

在图4的示意图中,帧间预测模块121包括ime模块180a到180n(统称为“ime模块180”)、fme模块182a到182n(统称为“fme模块182”)、合并模块184a到184n(统称为“合并模块184”)、pu模式决策模块186a到186n(统称为“pu模式决策模块186”)和cu模式决策模块188(也可以包括执行从ctu到cu的模式决策过程)。

ime模块180、fme模块182和合并模块184可对当前cu的pu执行ime操作、fme操作和合并操作。图4的示意图中将帧间预测模块121说明为包括用于cu的每一分割模式的每一pu的单独ime模块180、fme模块182和合并模块184。在其它可行的实施方式中,帧间预测模块121不包括用于cu的每一分割模式的每一pu的单独ime模块180、fme模块182和合并模块184。

如图4的示意图中所说明,ime模块180a、fme模块182a和合并模块184a可对通过根据2n×2n分割模式分割cu而产生的pu执行ime操作、fme操作和合并操作。pu模式决策模块186a可选择由ime模块180a、fme模块182a和合并模块184a产生的预测性图像块中的一者。

ime模块180b、fme模块182b和合并模块184b可对通过根据n×2n分割模式分割cu而产生的左pu执行ime操作、fme操作和合并操作。pu模式决策模块186b可选择由ime模块180b、fme模块182b和合并模块184b产生的预测性图像块中的一者。

ime模块180c、fme模块182c和合并模块184c可对通过根据n×2n分割模式分割cu而产生的右pu执行ime操作、fme操作和合并操作。pu模式决策模块186c可选择由ime模块180c、fme模块182c和合并模块184c产生的预测性图像块中的一者。

ime模块180n、fme模块182n和合并模块184可对通过根据n×n分割模式分割cu而产生的右下pu执行ime操作、fme操作和合并操作。pu模式决策模块186n可选择由ime模块180n、fme模块182n和合并模块184n产生的预测性图像块中的一者。

pu模式决策模块186可基于多个可能预测性图像块的码率-失真代价分析选择预测性图像块,且选择针对给定解码情形提供最佳码率-失真代价的预测性图像块。示例性的,对于带宽受限的应用,pu模式决策模块186可偏向选择增加压缩比的预测性图像块,而对于其它应用,pu模式决策模块186可偏向选择增加经重建视频质量的预测性图像块。在pu模式决策模块186选择用于当前cu的pu的预测性图像块之后,cu模式决策模块188选择用于当前cu的分割模式且输出属于选定分割模式的pu的预测性图像块和运动信息。

图5为本申请实施例中编码单元及与其关联的相邻位置图像块的一种示例性示意图,说明cu250和与cu250相关联的示意性的候选预测运动矢量位置252a到252e的示意图。本申请可将候选预测运动矢量位置252a到252e统称为候选预测运动矢量位置252。候选预测运动矢量位置252表示与cu250在同一图像中的空间候选预测运动矢量。候选预测运动矢量位置252a定位于cu250左方。候选预测运动矢量位置252b定位于cu250上方。候选预测运动矢量位置252c定位于cu250右上方。候选预测运动矢量位置252d定位于cu250左下方。候选预测运动矢量位置252e定位于cu250左上方。图8为用以提供帧间预测模块121和运动补偿模块162可产生候选预测运动矢量列表的方式的示意性实施方式。下文将参考帧间预测模块121解释实施方式,但应理解运动补偿模块162可实施相同技术,且因此产生相同候选预测运动矢量列表,在本申请实施例中,候选预测运动矢量位置所在的图像块被称为参考块,而且参考块包括空域参考块,比如上述252a到252e所在的图像块,也包括时域参考块,比如,对应(co-located)块所在的图像块,或者co-located块的空间相邻图像块。

图6为本申请实施例中构建候选预测运动矢量列表的一种示例性流程图。将参考包括五个候选预测运动矢量的列表描述图6的技术,但本文中所描述的技术还可与具有其它大小的列表一起使用。五个候选预测运动矢量可各自具有索引(例如,0到4)。将参考一般视频解码器描述图6的技术。一般视频解码器示例性的可以为视频编码器(例如视频编码器20)或视频解码器(例如,视频解码器30)。

为了根据图6的实施方式重建候选预测运动矢量列表,视频解码器首先考虑四个空间候选者(602),每个空间候选者对应一个预测运动矢量,四个空间候选预测运动矢量可以包括候选预测运动矢量位置252a、252b、252c和252d。四个空间候选预测运动矢量对应于与当前cu(例如,cu250)在同一图像中的四个pu的运动信息,也即是,该四个空间候选预测运动矢量分别为该四个pu的预测运动矢量,在本申请实施例中,该视频解码器在获取该四个空间候选预测运动矢量时,首先需要对该四个pu进行判断,例如,该视频解码器对该四个pu中的一个pu进行判断的过程,可以是如下过程:当该一个pu与该当前cu处于一个ctb或者ctb行范围内是,将该一个pu的更新前的初态运动矢量作为该一个pu对应的空间候选预测运动矢量;当该一个pu与该当前cu不处于一个ctb或者ctb行范围内时,将该一个pu的更新后的终态运动矢量作为该一个pu对应的空间候选预测运动矢量,其中,该一个pu的更新后的终态运动矢量可以从该一个pu的目标存储空间中存储的获取,此时,该目标存储空间存储有更新后的终态运动矢量,在一些实施例中,目标存储空间存储mvd,那么该一个pu的更新后的终态运动矢量还可以基于该一个pu更新前的初态运动矢量以及该目标存储空间存储的mvd获得。

视频解码器可以特定次序考虑列表中的四个空间候选预测运动矢量。举例来说,候选预测运动矢量位置252a可被第一个考虑。如果候选预测运动矢量位置252a可用,则候选预测运动矢量位置252a可指派到索引0。如果候选预测运动矢量位置252a不可用,则视频解码器可不将候选预测运动矢量位置252a包括于候选预测运动矢量列表中。候选预测运动矢量位置可出于各种理由而不可用。举例来说,如果候选预测运动矢量位置不在当前图像内,则候选预测运动矢量位置可能不可用。在另一可行的实施方式中,如果候选预测运动矢量位置经帧内预测,则候选预测运动矢量位置可能不可用。在另一可行的实施方式中,如果候选预测运动矢量位置在与当前cu不同的条带中,则候选预测运动矢量位置可能不可用。

在考虑候选预测运动矢量位置252a之后,视频解码器可接下来考虑候选预测运动矢量位置252b。如果候选预测运动矢量位置252b可用且不同于候选预测运动矢量位置252a,则视频解码器可将候选预测运动矢量位置252b添加到候选预测运动矢量列表。在此特定上下文中,术语“相同”和“不同”指代与候选预测运动矢量位置相关联的运动信息。因此,如果两个候选预测运动矢量位置具有相同运动信息则被视为相同,且如果其具有不同运动信息则被视为不同。如果候选预测运动矢量位置252a不可用,则视频解码器可将候选预测运动矢量位置252b指派到索引0。如果候选预测运动矢量位置252a可用,则视频解码器可将候选预测运动矢量位置252指派到索引1。如果候选预测运动矢量位置252b不可用或与候选预测运动矢量位置252a相同,则视频解码器跳过候选预测运动矢量位置252b且不将其包括于候选预测运动矢量列表中。

候选预测运动矢量位置252c由视频解码器类似地考虑以供包括于列表中。如果候选预测运动矢量位置252c可用且不与候选预测运动矢量位置252b和252a相同,则视频解码器将候选预测运动矢量位置252c指派到下一可用索引。如果候选预测运动矢量位置252c不可用或并非不同于候选预测运动矢量位置252a和252b中的至少一者,则视频解码器不将候选预测运动矢量位置252c包括于候选预测运动矢量列表中。接下来,视频解码器考虑候选预测运动矢量位置252d。如果候选预测运动矢量位置252d可用且不与候选预测运动矢量位置252a、252b和252c相同,则视频解码器将候选预测运动矢量位置252d指派到下一可用索引。如果候选预测运动矢量位置252d不可用或并非不同于候选预测运动矢量位置252a、252b和252c中的至少一者,则视频解码器不将候选预测运动矢量位置252d包括于候选预测运动矢量列表中。以上实施方式大体上描述示例性地考虑候选预测运动矢量252a到252d以供包括于候选预测运动矢量列表中,但在一些实施方式中,可首先将所有候选预测运动矢量252a到252d添加到候选预测运动矢量列表,稍后从候选预测运动矢量列表移除重复。

在视频解码器考虑前四个空间候选预测运动矢量之后,候选预测运动矢量列表可能包括四个空间候选预测运动矢量或者该列表可能包括少于四个空间候选预测运动矢量。如果列表包括四个空间候选预测运动矢量(604,是),包括四个空间候选者,则视频解码器考虑时间候选者(606),每个时间候选者对应一个候选预测运动矢量。时间候选预测运动矢量可对应于不同于当前图像的图像的co-locatedpu的运动信息。如果时间候选预测运动矢量可用且不同于前四个空间候选预测运动矢量,则视频解码器将时间候选预测运动矢量指派到索引4。如果时间候选预测运动矢量不可用或与前四个空间候选预测运动矢量中的一者相同,则视频解码器不将所述时间候选预测运动矢量包括于候选预测运动矢量列表中。因此,在视频解码器考虑时间候选预测运动矢量(606)之后,候选预测运动矢量列表可能包括五个候选预测运动矢量(框602处考虑的前四个空间候选预测运动矢量和框604处考虑的时间候选预测运动矢量)或可能包括四个候选预测运动矢量(框602处考虑的前四个空间候选预测运动矢量)。如果候选预测运动矢量列表包括五个候选预测运动矢量(608,是),也即是,包括5个候选者,则视频解码器完成构建列表。

如果候选预测运动矢量列表包括4个候选预测运动矢量(608,否),则视频解码器可考虑第五空间候选预测运动矢量(610)。第五空间候选预测运动矢量可(例如)对应于候选预测运动矢量位置252e。如果位置252e处的候选预测运动矢量可用且不同于位置252a、252b、252c和252d处的候选预测运动矢量,则视频解码器可将第五空间候选预测运动矢量添加到候选预测运动矢量列表,第五空间候选预测运动矢量经指派到索引4。如果位置252e处的候选预测运动矢量不可用或并非不同于候选预测运动矢量位置252a、252b、252c和252d处的候选预测运动矢量,则视频解码器可不将位置252处的候选预测运动矢量包括于候选预测运动矢量列表中。因此在考虑第五空间候选预测运动矢量(610)之后,列表可能包括五个候选预测运动矢量(框602处考虑的前四个空间候选预测运动矢量和框610处考虑的第五空间候选预测运动矢量)或可能包括四个候选预测运动矢量(框602处考虑的前四个空间候选预测运动矢量)。

如果候选预测运动矢量列表包括五个候选者(612,是),也即是,包括5个候选预测运动矢量,则视频解码器完成产生候选预测运动矢量列表。如果候选预测运动矢量列表包括四个候选预测运动矢量(612,否),则视频解码器添加人工产生的候选预测运动矢量(614)直到列表包括五个候选者(616,是)为止,也即是,包括5个候选预测运动矢量为止。

如果在视频解码器考虑前四个空间候选预测运动矢量之后,列表包括少于四个空间候选预测运动矢量(604,否),则视频解码器可考虑第五空间候选者(618),也即是,考虑第五空间候选预测运动矢量。第五空间候选预测运动矢量可(例如)对应于候选预测运动矢量位置252e。如果位置252e处的候选预测运动矢量可用且不同于已包括于候选预测运动矢量列表中的候选预测运动矢量,则视频解码器可将第五空间候选预测运动矢量添加到候选预测运动矢量列表,第五空间候选预测运动矢量经指派到下一可用索引。如果位置252e处的候选预测运动矢量不可用或并非不同于已包括于候选预测运动矢量列表中的候选预测运动矢量中的一者,则视频解码器可不将位置252e处的候选预测运动矢量包括于候选预测运动矢量列表中。视频解码器可接着考虑时间候选者(620),也即是考虑时间预测运动矢量。如果时间候选预测运动矢量可用且不同于已包括于候选预测运动矢量列表中的候选预测运动矢量,则视频解码器可将所述时间候选预测运动矢量添加到候选预测运动矢量列表,所述时间候选预测运动矢量经指派到下一可用索引。如果时间候选预测运动矢量不可用或并非不同于已包括于候选预测运动矢量列表中的候选预测运动矢量中的一者,则视频解码器可不将所述时间候选预测运动矢量包括于候选预测运动矢量列表中。

如果在考虑第五空间候选预测运动矢量(框618)和时间候选预测运动矢量(框620)之后,候选预测运动矢量列表包括五个候选预测运动矢量(622,是),则视频解码器完成产生候选预测运动矢量列表。如果候选预测运动矢量列表包括少于五个候选预测运动矢量(622,否),则视频解码器添加人工产生的候选预测运动矢量(614)直到列表包括五个候选预测运动矢量(616,是)为止。

根据本申请的技术,可在空间候选预测运动矢量和时间候选预测运动矢量之后人工产生额外合并候选预测运动矢量以使合并候选预测运动矢量列表的大小固定为合并候选预测运动矢量的指定数目(例如前文图6的可行的实施方式中的五个)。额外合并候选预测运动矢量可包括示例性的经组合双向预测性合并候选预测运动矢量(候选预测运动矢量1)、经缩放双向预测性合并候选预测运动矢量(候选预测运动矢量2),和零向量merge候选预测运动矢量(候选预测运动矢量3)。针对该额外合并候选预测运动矢量的上面三种情况,做具体描述,参见图7至9。

图7为本申请实施例中将经过组合的候选运动矢量添加到合并模式候选预测运动矢量列表的一种示例性示意图。经组合双向预测性合并候选预测运动矢量可通过组合原始合并候选预测运动矢量而产生。具体来说,原始候选预测运动矢量中的两个候选预测运动矢量(其具有mvl0和refidxl0或mvl1和refidxl1)可用以产生双向预测性合并候选预测运动矢量。在图7中,两个候选预测运动矢量包括于原始合并候选预测运动矢量列表中。一候选预测运动矢量的预测类型为列表0单向预测,且另一候选预测运动矢量的预测类型为列表1单向预测。在此可行的实施方式中,mvl0_a和ref0是从列表0拾取,且mvl1_b和ref0是从列表1拾取,且接着可产生双向预测性合并候选预测运动矢量(其具有列表0中的mvl0_a和ref0以及列表1中的mvl1_b和ref0)并检查其是否不同于已包括于候选预测运动矢量列表中的候选预测运动矢量。如果其不同,则视频解码器可将双向预测性合并候选预测运动矢量包括于候选预测运动矢量列表中。

图8为本申请实施例中将经过缩放的候选运动矢量添加到合并模式候选预测运动矢量列表的一种示例性示意图。经缩放双向预测性合并候选预测运动矢量可通过缩放原始合并候选预测运动矢量而产生。具体来说,来自原始候选预测运动矢量的一候选预测运动矢量(其可具有mvlx和refidxlx)可用以产生双向预测性合并候选预测运动矢量。在图8的可行的实施方式中,两个候选预测运动矢量包括于原始合并候选预测运动矢量列表中。一候选预测运动矢量的预测类型为列表0单向预测,且另一候选预测运动矢量的预测类型为列表1单向预测。在此可行的实施方式中,mvl0_a和ref0可从列表0拾取,且ref0可复制到列表1中的参考索引ref0′。接着,可通过缩放具有ref0和ref0′的mvl0_a而计算mvl0′_a。缩放可取决于poc(pictureordercount,poc)距离。接着,可产生双向预测性合并候选预测运动矢量(其具有列表0中的mvl0_a和ref0以及列表1中的mvl0′_a和ref0′)并检查其是否为重复的。如果其并非重复的,则可将其添加到合并候选预测运动矢量列表。

图9为本申请实施例中将零运动矢量添加到合并模式候选预测运动矢量列表的一种示例性示意图。零向量合并候选预测运动矢量可通过组合零向量与可经参考的参考索引而产生。如果零向量候选预测运动矢量并非重复的,则可将其添加到合并候选预测运动矢量列表。对于每一产生的合并候选预测运动矢量,运动信息可与列表中的前一候选预测运动矢量的运动信息比较。

在一种可行的实施方式中,如果新产生的候选预测运动矢量不同于已包括于候选预测运动矢量列表中的候选预测运动矢量,则将所产生的候选预测运动矢量添加到合并候选预测运动矢量列表。确定候选预测运动矢量是否不同于已包括于候选预测运动矢量列表中的候选预测运动矢量的过程有时称作修剪(pruning)。通过修剪,每一新产生的候选预测运动矢量可与列表中的现有候选预测运动矢量比较。在一些可行的实施方式中,修剪操作可包括比较一个或多个新候选预测运动矢量与已在候选预测运动矢量列表中的候选预测运动矢量和不添加为已在候选预测运动矢量列表中的候选预测运动矢量的重复的新候选预测运动矢量。在另一些可行的实施方式中,修剪操作可包括将一个或多个新候选预测运动矢量添加到候选预测运动矢量列表且稍后从所述列表移除重复候选预测运动矢量。

在本申请的一种可行的实施方式中,在帧间预测中,对待处理图像块的运动信息的预测方法,包括:获取待处理图像块所在图像中的至少一个已确定运动矢量图像块的运动信息,所述至少一个已确定运动矢量图像块包括与所述待处理图像块不邻接的已确定运动矢量图像块;获取第一标识信息,所述第一标识信息用于从所述至少一个已确定运动矢量图像块的运动信息中确定目标运动信息;根据所述目标运动信息,预测所述待处理图像块的运动信息。

图10为本申请实施例中合并模式的一种示例性流程图。视频编码器(例如视频编码器20)可执行合并操作200。在其它可行的实施方式中,视频编码器可执行不同于合并操作200的合并操作。举例来说,在其它可行的实施方式中,视频编码器可执行合并操作,其中视频编码器执行比合并操作200多、少的步骤或与合并操作200不同的步骤。在其它可行的实施方式中,视频编码器可以不同次序或并行地执行合并操作200的步骤。编码器还可对以跳跃(skip)模式编码的pu执行合并操作200。

在视频编码器开始合并操作200之后,视频编码器可产生用于当前pu的候选预测运动矢量列表(202)。视频编码器可以各种方式产生用于当前pu的候选预测运动矢量列表。举例来说,视频编码器可根据下文关于图7到图9描述的实例技术中的一者产生用于当前pu的候选预测运动矢量列表。

如前文所述,用于当前pu的候选预测运动矢量列表可包括时间候选预测运动矢量。时间候选预测运动矢量可指示时域co-located的pu的运动信息。co-located的pu可在空间上与当前pu处于图像帧中的同一个位置,但在参考图像而非当前图像中。本申请可将包括时域对应的pu的参考图像称作相关参考图像。本申请可将相关参考图像的参考图像索引称作相关参考图像索引。如前文所描述,当前图像可与一个或多个参考图像列表(例如,列表0、列表1等)相关联。参考图像索引可通过指示在参考图像某一个参考图像列表中的位置来指示参考图像。在一些可行的实施方式中,当前图像可与组合参考图像列表相关联。

在一些视频编码器中,相关参考图像索引为涵盖与当前pu相关联的参考索引源位置的pu的参考图像索引。在这些视频编码器中,与当前pu相关联的参考索引源位置邻接于当前pu左方或邻接于当前pu上方。在本申请中,如果与pu相关联的图像块包括特定位置,则pu可“涵盖”所述特定位置。在这些视频编码器中,如果参考索引源位置不可用,则视频编码器可使用零的参考图像索引。

然而,可存在以下例子:与当前pu相关联的参考索引源位置在当前cu内。在这些例子中,如果pu在当前cu上方或左方,则涵盖与当前pu相关联的参考索引源位置的pu可被视为可用。然而,视频编码器可需要存取当前cu的另一pu的运动信息以便确定含有co-locatedpu的参考图像。因此,这些视频编码器可使用属于当前cu的pu的运动信息(即,参考图像索引)以产生用于当前pu的时间候选预测运动矢量。换句话说,这些视频编码器可使用属于当前cu的pu的运动信息产生时间候选预测运动矢量。因此,视频编码器可能不能并行地产生用于当前pu和涵盖与当前pu相关联的参考索引源位置的pu的候选预测运动矢量列表。

根据本申请的技术,视频编码器可在不参考任何其它pu的参考图像索引的情况下显式地设定相关参考图像索引。此可使得视频编码器能够并行地产生用于当前pu和当前cu的其它pu的候选预测运动矢量列表。因为视频编码器显式地设定相关参考图像索引,所以相关参考图像索引不基于当前cu的任何其它pu的运动信息。在视频编码器显式地设定相关参考图像索引的一些可行的实施方式中,视频编码器可始终将相关参考图像索引设定为固定的预定义预设参考图像索引(例如,0)。以此方式,视频编码器可基于由预设参考图像索引指示的参考帧中的co-locatedpu的运动信息产生时间候选预测运动矢量,且可将时间候选预测运动矢量包括于当前cu的候选预测运动矢量列表中,其中,该候选预测运动矢量列表也即是参考帧列表。

在视频编码器显式地设定相关参考图像索引的可行的实施方式中,视频编码器可显式地在语法结构(例如,图像标头、条带标头、aps或另一语法结构)中用信号通知相关参考图像索引。在此可行的实施方式中,视频编码器可用信号通知解码端用于每一lcu(即ctu)、cu、pu、tu或其它类型的子块的相关参考图像索引。举例来说,视频编码器可用信号通知:用于cu的每一pu的相关参考图像索引等于“1”。

在一些可行的实施方式中,相关参考图像索引可经隐式地而非显式地设定。在这些可行的实施方式中,视频编码器可使用由涵盖当前cu外部的位置的pu的参考图像索引指示的参考图像中的pu的运动信息产生用于当前cu的pu的候选预测运动矢量列表中的每一时间候选预测运动矢量,即使这些位置并不严格地邻近当前pu。

在产生用于当前pu的候选预测运动矢量列表之后,视频编码器可产生与候选预测运动矢量列表中的候选预测运动矢量相关联的预测性图像块(204)。视频编码器可通过基于所指示候选预测运动矢量的运动信息确定当前pu的运动信息和接着基于由当前pu的运动信息指示的一个或多个参考块产生预测性图像块来产生与候选预测运动矢量相关联的预测性图像块。视频编码器可接着从候选预测运动矢量列表选择候选预测运动矢量中的一者(206)。视频编码器可以各种方式选择候选预测运动矢量。举例来说,视频编码器可基于对与候选预测运动矢量相关联的预测性图像块的每一者的码率-失真代价分析来选择候选预测运动矢量中的一者。

在选择候选预测运动矢量之后,视频编码器可输出候选预测运动矢量索引(208)。其中,候选预测运动矢量索引也即是参考帧列表索引,候选预测运动矢量索引可指示在候选预测运动矢量列表中选定候选预测运动矢量的位置。在一些可行的实施方式中,候选预测运动矢量索引可表示为“merge_idx”。

图11为本申请实施例中高级运动矢量预测模式的一种示例性流程图。视频编码器(例如视频编码器20)可执行amvp操作210。

在视频编码器开始amvp操作210之后,视频编码器可产生用于当前pu的一个或多个运动矢量(211)。视频编码器可执行整数运动估计和分数运动估计以产生用于当前pu的运动矢量。如前文所描述,当前图像可与两个参考图像列表(列表0和列表1)相关联。如果当前pu经单向预测,则视频编码器可产生用于当前pu的列表0运动矢量或列表1运动矢量。列表0运动矢量可指示当前pu的图像块与列表0中的参考图像中的参考块之间的空间位移。列表1运动矢量可指示当前pu的图像块与列表1中的参考图像中的参考块之间的空间位移。如果当前pu经双向预测,则视频编码器可产生用于当前pu的列表0运动矢量和列表1运动矢量。

在产生用于当前pu的一个或多个运动矢量之后,视频编码器可产生用于当前pu的预测性图像块(212)。视频编码器可基于由用于当前pu的一个或多个运动矢量指示的一个或多个参考块产生用于当前pu的预测性图像块。

另外,视频编码器可产生用于当前pu的候选预测运动矢量列表(213)。视频解码器可以各种方式产生用于当前pu的候选预测运动矢量列表。举例来说,视频编码器可根据下文关于图6到图9描述的可行的实施方式中的一个或多个产生用于当前pu的候选预测运动矢量列表。在一些可行的实施方式中,当视频编码器在amvp操作210中产生候选预测运动矢量列表时,候选预测运动矢量列表可限于两个候选预测运动矢量。相比而言,当视频编码器在合并操作中产生候选预测运动矢量列表时,候选预测运动矢量列表可包括更多候选预测运动矢量(例如,五个候选预测运动矢量)。

在产生用于当前pu的候选预测运动矢量列表之后,视频编码器可产生用于候选预测运动矢量列表中的每一候选预测运动矢量的一个或多个运动矢量差(mvd)(214)。视频编码器可通过确定由候选预测运动矢量指示的运动矢量与当前pu的对应运动矢量之间的差来产生用于候选预测运动矢量的运动矢量差。

如果当前pu经单向预测,则视频编码器可产生用于每一候选预测运动矢量的单一mvd。如果当前pu经双向预测,则视频编码器可产生用于每一候选预测运动矢量的两个mvd。第一mvd可指示候选预测运动矢量的运动矢量与当前pu的列表0运动矢量之间的差。第二mvd可指示候选预测运动矢量的运动矢量与当前pu的列表1运动矢量之间的差。

视频编码器可从候选预测运动矢量列表选择候选预测运动矢量中的一个或多个(215)。视频编码器可以各种方式选择一个或多个候选预测运动矢量。举例来说,视频编码器可选择具有最小误差地匹配待编码的运动矢量的相关联运动矢量的候选预测运动矢量,此可减少表示用于候选预测运动矢量的运动矢量差所需的位数目。

在选择一个或多个候选预测运动矢量之后,视频编码器可输出用于当前pu的一个或多个参考图像索引、一个或多个候选预测运动矢量索引,和用于一个或多个选定候选预测运动矢量的一个或多个运动矢量差(216)。

在当前图像与两个参考图像列表(列表0和列表1)相关联且当前pu经单向预测的例子中,视频编码器可输出用于列表0的参考图像索引(“ref_idx_10”)或用于列表1的参考图像索引(“ref_idx_11”)。视频编码器还可输出指示用于当前pu的列表0运动矢量的选定候选预测运动矢量在候选预测运动矢量列表中的位置的候选预测运动矢量索引(“mvp_10_flag”)。或者,视频编码器可输出指示用于当前pu的列表1运动矢量的选定候选预测运动矢量在候选预测运动矢量列表中的位置的候选预测运动矢量索引(“mvp_11_flag”)。视频编码器还可输出用于当前pu的列表0运动矢量或列表1运动矢量的mvd。

在当前图像与两个参考图像列表(列表0和列表1)相关联且当前pu经双向预测的例子中,视频编码器可输出用于列表0的参考图像索引(“ref_idx_10”)和用于列表1的参考图像索引(“ref_idx_11”)。视频编码器还可输出指示用于当前pu的列表0运动矢量的选定候选预测运动矢量在候选预测运动矢量列表中的位置的候选预测运动矢量索引(“mvp_10_flag”)。另外,视频编码器可输出指示用于当前pu的列表1运动矢量的选定候选预测运动矢量在候选预测运动矢量列表中的位置的候选预测运动矢量索引(“mvp_11_flag”)。视频编码器还可输出用于当前pu的列表0运动矢量的mvd和用于当前pu的列表1运动矢量的mvd。

图12为本申请实施例中由视频解码器(例如视频解码器30)执行的运动补偿的一种示例性流程图。

当视频解码器执行运动补偿操作220时,视频解码器可接收用于当前pu的选定候选预测运动矢量的指示(222)。举例来说,视频解码器可接收指示选定候选预测运动矢量在当前pu的候选预测运动矢量列表内的位置的候选预测运动矢量索引。

如果当前pu的运动信息是使用amvp模式进行编码且当前pu经双向预测,则视频解码器可接收第一候选预测运动矢量索引和第二候选预测运动矢量索引。第一候选预测运动矢量索引指示用于当前pu的列表0运动矢量的选定候选预测运动矢量在候选预测运动矢量列表中的位置。第二候选预测运动矢量索引指示用于当前pu的列表1运动矢量的选定候选预测运动矢量在候选预测运动矢量列表中的位置。在一些可行的实施方式中,单一语法元素可用以识别两个候选预测运动矢量索引。

另外,视频解码器可产生用于当前pu的候选预测运动矢量列表(224)。视频解码器可以各种方式产生用于当前pu的此候选预测运动矢量列表。举例来说,视频解码器可使用下文参看图5到图9描述的技术来产生用于当前pu的候选预测运动矢量列表。当视频解码器产生用于候选预测运动矢量列表的时间候选预测运动矢量时,视频解码器可显式地或隐式地设定识别包括co-locatedpu的参考图像的参考图像索引,如前文关于图10所描述。

在产生用于当前pu的候选预测运动矢量列表之后,视频解码器可基于由用于当前pu的候选预测运动矢量列表中的一个或多个选定候选预测运动矢量指示的运动信息确定当前pu的运动信息(225)。举例来说,如果当前pu的运动信息是使用合并模式而编码,则当前pu的运动信息可与由选定候选预测运动矢量指示的运动信息相同。如果当前pu的运动信息是使用amvp模式而编码,则视频解码器可使用由所述或所述选定候选预测运动矢量指示的一个或多个运动矢量和码流中指示的一个或多个mvd来重建当前pu的一个或多个运动矢量。当前pu的参考图像索引和预测方向标识可与所述一个或多个选定候选预测运动矢量的参考图像索引和预测方向标识相同。在确定当前pu的运动信息之后,视频解码器可基于由当前pu的运动信息指示的一个或多个参考块产生用于当前pu的预测性图像块(226)。

图13为本申请实施例中视频编码中进行运动矢量更新的一种示例性流程图,待处理图像块即为待编码块。

1301、基于待处理图像块的预测运动矢量获得待处理图像块的初态运动矢量。

在一种可行的实施方式中,比如merge模式,将所述待处理图像块的预测运动矢量作为所述待处理图像块块的初态运动矢量;

其中,待处理图像块的预测运动矢量的获得可以根据本申请实施例中图6-图9所示的方法或者现有h.265标准或jem参考模式中任意一种预测运动矢量的获得方法获得,不做限定。运动矢量差值的获取可以通过以待处理图像块为参考,在根据待处理图像块的预测运动矢量确定的搜索范围内进行运动估计,运动估计后得到的待处理图像块的运动矢量与预测运动矢量的差值,作为运动矢量差值。

在双向预测中,该步骤具体包括:基于待处理图像块的前向预测运动矢量获得待处理图像块的第一初态运动矢量,基于待处理图像块的后向预测运动矢量获得待处理图像块的第二初态运动矢量。

1302、基于所述初态运动矢量和一个或多个预设的运动矢量偏移量获得所述待处理图像块的预测块,具体的:

13021、在所述待处理图像块的由所述待处理图像块的参考帧索引来指示的参考帧中获取所述待处理图像块的初态运动矢量指示的图像块,以作为所述待处理图像块的临时预测块。

该初态运动矢量包括第一初态运动矢量和第二初态运动矢量,该第一初态运动矢量基于该待处理图像块的第一参考帧类别指示第一运动补偿块,该第一运动补偿块为待处理图像块进行运动补偿的参考块,该第二初态运动矢量基于该待处理图像块的第二参考帧列表指示第二运动补偿块,该第二运动补偿块为待处理图像块进行运动补偿的参考块。

13022、将所述待处理图像块的初态运动矢量和一个或多个预设的运动矢量偏移量相加,以获得一个或多个终态运动矢量,其中,每个所述终态运动矢量指示一个搜索位置。

该预设的运动矢量偏移量可以是预设的偏移矢量值,还可以是预设的偏移矢量精度,还可以是预设的偏移矢量范围,本发明实施例对预设的运动矢量偏移量的具体数值以及预设的运动矢量偏移量的的数目不做限定。

该终态运动矢量包括第一终态运动矢量和第二终态运动矢量,该第一终态运动矢量基于该待处理图像块的第一参考帧列表指示第一运动补偿块,该第一运动补偿块为待处理图像块进行运动补偿的预测块,该第二终态运动矢量基于该待处理图像块的第二参考帧列表指示第二运动补偿块,该第二运动补偿块为待处理图像块进行运动补偿的预测块。

13023、在所述一个或多个终态运动矢量指示的搜索位置,获得一个或多个候选预测块,其中每个所述搜索位置对应一个所述候选预测块。

13024、从所述一个或多个候选预测块中选择与所述临时预测块的像素差异最小的候选预测块作为所述待处理图像块的预测块。

该像素差异最小也可以理解为失真代价最小,那么,该预测块的终态运动矢量也即是多个候选终态运动矢量中对应失真代价最小的候选终态运动矢量。应理解,失真代价可以有多种计算方式,比如可以计算所述候选预测块和所述临时预测块的像素矩阵的绝对差和,也可以计算像素矩阵的均值移除绝对差的总和,或者其他计算像素矩阵较准的值等,本发明实施例对失真代价最小的具体内容不做限定。

在双向预测中,该步骤具体包括:在所述待处理图像块的由所述待处理图像块的第一参考帧索引来指示的第一参考帧列表中,获取所述待处理图像块的第一初态运动矢量指示的第一图像块,该第一图像块为前向参考块,相应的,该第一初态运动矢量可以是指前向初态运动矢量,在所述待处理图像块的由所述待处理图像块的第二参考帧列表索引来指示的第二参考帧列表中,获取所述待处理图像块的第二初态运动矢量指示第二图像块,该第二图像块为后向参考块,相应的,该第二初态运动矢量可以是指后向初态运动矢量,然后对所述第一图像块和所述第二图像块进行加权处理,获得为所述待处理图像块的临时预测块;将所述待处理图像块的第一初态运动矢量和一个或多个预设的运动矢量偏移量相加,以获得一个或多个第一终态运动矢量,其中,该将所述待处理图像块的第二初态运动矢量和一个或多个预设的运动矢量偏移量相加,以获得一个或多个第二终态运动矢量;在所述一个或多个第一终态运动矢量指示的搜索位置,获得一个或多个第一候选预测块,在所述一个或多个第二终态运动矢量指示的搜索位置,获得一个或多个第一候选预测块;从所述一个或多个第一候选预测块中选择与所述临时预测块的像素差异最小的候选预测块作为所述待处理图像块的第一预测块,从所述一个或多个后向候选预测块中选择与所述临时预测块的像素差异最小的候选预测块作为所述待处理图像块的第二预测块,对所述第一预测块和所述第一预测块进行加权处理,获得所述待处理图像块的预测块。

图14为本申请实施例中视频解码中进行运动矢量更新的一种示例性流程图,待处理图像块即为待解码块。

1401、基于索引指示的待处理图像块的预测运动矢量获得待处理图像块的初态运动矢量。

在一种可行的实施方式中,比如merge模式,将所述待处理图像块的预测运动矢量作为所述待处理图像块块的初态运动矢量;

其中,待处理图像块的预测运动矢量的获得可以根据本申请实施例中图6-图9所示的方法或者现有h.265标准或jem参考模式中任意一种预测运动矢量的获得方法获得,不做限定。运动矢量差值的获取可以通过解析码流获得。

在双向预测中,该步骤具体包括:基于待处理图像块的前向预测运动矢量获得待处理图像块的第一初态运动矢量,基于待处理图像块的后向预测运动矢量获得待处理图像块的第二初态运动矢量。

1402、基于所述初态运动矢量和一个或多个预设的运动矢量偏移量获得所述待处理图像块的预测块,具体的:

14021、在所述待处理图像块的由所述待处理图像块的参考帧索引来指示的参考帧中获取所述待处理图像块的初态运动矢量指示的图像块,以作为所述待处理图像块的参考块。

14022、将所述待处理图像块的初态运动矢量和一个或多个预设的运动矢量偏移量相加,以获得一个或多个终态运动矢量,其中,每个所述终态运动矢量指示一个搜索位置。

14023、在所述一个或多个终态运动矢量指示的搜索位置,获得一个或多个候选预测块,其中每个所述搜索位置对应一个所述候选预测块。

14024、从所述一个或多个候选预测块中选择与所述临时预测块的像素差异最小的候选预测块作为所述待处理图像块的预测块。

在双向预测中,该步骤具体包括:在所述待处理图像块的由所述待处理图像块的第一参考帧索引来指示的第一参考帧中获取所述待处理图像块的第一初态运动矢量指示的第一图像块,在所述待处理图像块的由所述待处理图像块的第二参考帧索引来指示的第二参考帧中获取所述待处理图像块的第二初态运动矢量指示的第二图像块,对所述第一图像块和所述第二图像块进行加权处理,获得为所述待处理图像块的临时预测块;将所述待处理图像块的第一初态运动矢量和一个或多个预设的运动矢量偏移量相加,以获得一个或多个第一终态运动矢量,将所述待处理图像块的第二初态运动矢量和一个或多个预设的运动矢量偏移量相加,以获得一个或多个第二终态运动矢量;在所述一个或多个第一终态运动矢量指示的搜索位置,获得一个或多个前向候选预测块,在所述一个或多个第二终态运动矢量指示的搜索位置,获得一个或多个后向候选预测块;从所述一个或多个前向候选预测块中选择与所述临时预测块的像素差异最小的候选预测块作为所述待处理图像块的前向预测块,从所述一个或多个后向候选预测块中选择与所述临时预测块的像素差异最小的候选预测块作为所述待处理图像块的后向预测块,对所述前向预测块和所述后向预测块进行加权处理,获得所述待处理图像块的预测块。

下面通过几个具体的实施例来详细说明运动矢量更新的实施方式。应理解,如图13中的编码方法和图14中的解码方法,运动矢量的更新在编解码端具有一致性,因此下面的实施例仅从编码端或解码端进行描述,应理解当从编码端进行描述时,解码端的实现保持和编码端一致性,当从解码端进行描述时,编码端的实现保持和解码端一致性。

如图15所示,当前解码块为第一解码块,获取当前解码块的预测运动信息,假设当前解码块的前后向运动矢量预测值分别为(-10,4)和(5,6),当前解码块所在的图像顺序号(pictureordercount,poc)poc为4,poc用于表示图像的显示顺序,图像的显示参考图像的索引值指示的参考图像的poc分别为2和6,则当前解码块对应的poc为4,前向预测参考图像块对应的poc为2,后向预测参考图像块对应的poc为6。

针对当前解码块分别进行前后向预测得到当前解码块的初始前向解码预测块(forwardpredictionblock,fpb)和初始后向解码预测块(backwardpredictionblock,bpb),假设分别为fpb1和bpb1,对fpb1和bpb1进行加权求和得到当前解码块的第一解码预测块(decodingpredictionblock,dpb),假设为dpb1。

以(-10,4)和(5,6)作为前后向运动矢量预测值的参考输入,分别对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1/2像素精度。以第一解码预测块dpb1为参考,针对每次运动搜索所得到对应的新前后向解码预测块与第一解码预测块dpb1进行差异比较,求得与dpb1差异最小的新解码预测块所对应的前后向运动矢量预测值作为目标运动矢量预测值,假设分别是(-11,4)和(6,6)。

更新目标运动矢量预测值为(-11,4)和(6,6),同时根据目标运动矢量预测值对第一解码块进行前后向预测,将得到的新前向解码预测块与新后向解码预测块进行加权求和,得到目标解码预测块,假设为dpb2,更新当前解码块的解码预测块为dpb2。

需要说明的是,对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索时,第一精度可以是设定的任意精度,例如可以是整像素精度或1/2像素精度或1/4像素精度或1/8像素精度。

如图16所示,当前解码块为第一解码块,获取当前解码块的预测运动信息,假设当前解码块的前向运动矢量预测值分别为(-21,18),当前解码块所在的图像的poc为4,参考图像的索引值指示的参考图像的poc为2,则当前解码块对应的poc为4,前向预测参考图像块对应的poc为2。

针对当前解码块进行前向预测得到当前解码块的初始前向解码预测块,假设为fpb1,此时,将fpb1作为当前解码块的第一解码预测块,记为dpb1。

以(-21,18)作为前向运动矢量预测值参考输入,对前向预测参考图像块进行第一精度的运动搜索,此时第一精度为5像素范围的1像素精度。以第一解码预测块dpb1为参考,针对每次运动搜索所得到对应的新前向解码预测块与第一解码预测块dpb1进行差异比较,求得与dpb1差异最小的新解码预测块所对应的前向运动矢量预测值作为目标运动矢量预测值,假设分别是(-19,19)。

更新目标运动矢量预测值为(-19,19),同时根据目标运动矢量预测值对第一解码块进行前向预测,将得到的新前向解码预测块作为目标解码预测块,假设为dpb2,更新当前解码块的解码预测块为dpb2。

需要说明的是,对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索时,第一精度可以是设定的任意精度,例如可以是整像素精度或1/2像素精度或1/4像素精度或1/8像素精度。

如图17所示,当前编码块为第一编码块,获取当前编码块的预测运动信息,假设当前编码块的前后向运动矢量预测值分别为(-6,12)和(8,4),当前解码块所在的图像的poc为8,参考图像的索引值指示的参考图像的poc分别为4和12,则当前编码块对应的poc为8,前向预测参考图像块对应的poc为4,后向预测参考图像块对应的poc为12。

针对当前编码块分别进行前后向预测得到当前编码块的初始前向编码预测块和初始后向编码预测块,假设分别为fpb1和bpb1,对fpb1和bpb1进行加权求和得到当前编码块的第一编码预测块,假设为dpb1。

以(-6,12)和(8,4)作为前后向运动矢量预测值参考输入,分别对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索。以第一编码预测块dpb1为参考,针对每次运动搜索所得到对应的新前后向编码预测块与第一编码预测块dpb1进行差异比较,求得与dpb1差异最小的新编码预测块所对应的前后向运动矢量预测值作为目标运动矢量预测值,假设分别是(-11,4)和(6,6)。

更新目标运动矢量预测值为(-11,4)和(6,6),同时根据目标运动矢量预测值对第一编码块进行前后向预测,将得到的新前向编码预测块与新后向编码预测块进行加权求和,得到目标编码预测块,假设为dpb2,更新当前编码块的编码预测块为dpb2。

继续,以(-11,4)和(6,6)作为前后向运动矢量预测值参考输入,分别对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索。以当前编码块的编码预测块dpb2为参考,针对每次运动搜索所得到对应的新前后向编码预测块与第一编码预测块dpb2进行差异比较,求得与dpb2差异最小的新编码预测块所对应的前后向运动矢量预测值作为新的目标运动矢量预测值,假设分别是(-7,11)和(6,5)。

继续更新目标运动矢量预测值为(-7,11)和(6,5),同时根据最新的目标运动矢量预测值对第一编码块进行前后向预测,将得到的新前向编码预测块与新后向编码预测块进行加权求和,得到目标编码预测块,假设为dpb3,更新当前编码块的编码预测块为dpb3。

进而,可以继续按照上述方法更新目标运动矢量预测值,以此类推循环次数不限。

需要说明的是,对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索时,第一精度可以是设定的任意精度,例如可以是整像素精度或1/2像素精度或1/4像素精度或1/8像素精度。

应理解,在一些可行的实施例中,当满足某一条件时,循环结束。例如,当dpbn和dpbn-1的差异值小于某一阈值时,结束循环,其中n为大于2的正整数。

如图18所示,当前解码块为第一解码块,获取当前解码块的预测运动信息,假设当前解码块的前后向运动矢量值分别为(-10,4)和(5,6),前后向运动矢量差值分别为(-2,1)和(1,1),当前解码块所在的图像的poc为4,参考图像的索引值指示的参考图像的poc分别为2和6,则当前解码块对应的poc为4,前向预测参考图像块对应的poc为2,后向预测参考图像块对应的poc为6。

针对当前解码块分别进行前后向预测得到当前解码块的初始前向解码预测块(fpb)和初始后向解码预测块(bpb),假设分别为fpb1和bpb1,对fpb1和bpb1进行加权求和得到当前解码块的第一解码预测块(dpb),假设为dpb1。

以前后向运动矢量预测值与前后向运动矢量差值的和:(-10,4)+(-2,1)=(-12,5)和(5,6)+(1,1)=(6,7)作为前后向运动矢量,分别对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1/4像素精度。以第一解码预测块dpb1为参考,针对每次运动搜索所得到对应的新前后向解码预测块与第一解码预测块dpb1进行差异比较,求得与dpb1差异最小的新解码预测块所对应的前后向运动矢量作为目标运动矢量预测值,假设分别是(-11,4)和(6,6)。

更新目标运动矢量为(-11,4)和(6,6),同时根据目标运动矢量对第一解码块进行前后向预测,将得到的新前向解码预测块与新后向解码预测块进行加权求和,得到目标解码预测块,假设为dpb2,更新当前解码块的解码预测块为dpb2。

为了进一步体现本申请的核心技术内容,对于编码端在合并模式下的运动矢量存储的过程,在此以一个具体的实施例进行如下描述:图19为本申请实施例中的编码端运动矢量获取方法的一种示意性流程图,包括:

1901、当编码端获取到第一待处理图像块后,确定该第一待处理图像块的预设的一个或多个候选参考块。

该第一待处理图像块为该编码端的分割单元对获取的视频数据分割后,得到的待处理图像块,也即是待编码的图像块,参见图3。需要说明的是,该第一待处理图像块可以是当前pu,可以是当前cu,对此不发明实施例不做具体限定。

该候选参考块包括与所述第一待处理图像块具有预设空域位置关系的图像块,该预设空域位置关系可以是图5所示的位置关系,因为图5所示的候选参考块临近该第一待处理图像块,也即是,该候选参考块与该第一待处理图像块的像素信息较为相似,所以可以将候选参考块的运动矢量,作为该第一待处理图像块的预测运动矢量,用于对该第一待处理图像块进行预测,在一些实施例中,该候选参考块还包括与所述第一待处理图像块具有预设空域相关性的其他实际图像块或者虚拟构成的图像块,本申请实施例对于候选参考块与该第一待处理图像块的位置关系以候选参考块的数量不做具体限定。

1902、该编码端确定该一个或多个候选参考块的运动矢量。

本申请实施例中的候选参考块进行了运动矢量更新的过程,当候选参考块的更新过程完成时,该候选参考块具有初态运动矢量和终态运动矢量,也即是,该候选参考块对应存储有初态运动矢量和终态运动矢量,在一些实施例中,该候选参考块对应存储有初态运动矢量和运动矢量残差值,该候选参考块终态运动矢量可以通过该候选参考块的初态运动矢量和运动矢量残差值相加来获得。

但是,当候选参考块的更新过程未完成时,该候选参考块仅具有初态运动矢量,也即是,该候选参考块仅对应存储了该候选参考块的初态运动矢量。

因为该候选参考块中具有初态运动矢量以及终态运动矢量,该编码端可以将该候选参考块的初态运动矢量或者终态运动矢量作为该候选参考块的运动矢量,以便将候选该参考块的运动矢量作为该第一待处理图像块的空间候选预测运动矢量。

需要说明的是,该参考块的运动矢量更新的过程,可以参考与图13相关的本申请实施例。应理解,图19相关实施例中的参考块即为图13相关实施例中的待处理图像块。

本步骤1902可以根据该候选参考块的预设范围来确定该候选参考块的运动矢量,例如,当该候选参考块位于预设范围以内时,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,当该候选参考块位于预设范围以外时,将该候选参考块的终态运动矢量作为该候选参考块的运动矢量,进而可以确定该一个或多个候选参考块的运动矢量。

具体的,该预测范围可以是ctb的行范围,例如,当该候选参考块所在的ctb和该第一待处理图像块所在的ctb位于同一行,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,对应的,当该候选参考块所在的ctb和该第一待处理图像块所在的ctb不位于同一行,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,参见图21,可以理解的是,当该候选参考块所在的编码树块和该第一待处理图像块所在的编码树块位于不同行,并且,该候选参考块所在的编码树块位于与该第一待处理图像块所在的编码树块不同行的邻近空间时,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,其中,该不同行的邻近空间可以是不同行的上方空间或者左上空间等,本发明实施不对该不同行的邻近空间的具体范围做具体限定。

在相关技术中,对于编码器来说,可以同时对多个待处理图像块进行编码,但是,当多个待处理图像块位于同一ctb行内,可能会互相成为彼此的候选参考块,一旦互相成为彼此的候选参考块时,可以等待其他块更新完成后,才能将其他块更新后的终态运动矢量作为当前待处理图像块的空间候选预测运动矢量,所以编码具有延迟,又因为互相成为彼此的候选参考块,所以必须排队等待其他块更新完成,所以又加剧了编码延迟。

为此,可以直接将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,进而将该候选参考块的运动矢量作为该第一待处理图像块的空间候选预测运动矢量,见步骤1903。

当该候选参考块与该第一待处理图像块所在的ctb位于同一行时,该候选参考块的更新过程可能还没有完成,所以可以直接将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,而不必等待该候选参考块更新完成,从而降低了编码延迟;当该候选参考块与该第一待处理图像块所在的ctb不位于同一行时,说明该候选参考块有足够的时间可以完成更新过程,所以该候选参考块具有终态运动矢量,可以将该候选参考块的终态运动矢量作为该候选参考块的运动矢量,又因为终态运动矢量为初态运动矢量经过精细化处理过的运动矢量,那么,利用该终态运动矢量作为该候选参考块的运动矢量,可以保证编码质量。

该预设范围还可以是ctb块范围,例如,当该候选参考块与该第一待处理图像块位于同一ctb内时,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,对应的,当该候选参考块与该第一待处理图像块不位于同一ctb内时,将该候选参考块的终态运动矢量作为该候选参考块的运动矢量。

当该候选参考块与该第一待处理图像块位于同一ctb内时,说明该候选参考块的更新进程可能还没有完成,直接选用该候选参考块的初态运动矢量作为该候选参考块的运动矢量,可以不必等待该候选参考块更新完成,从而降低了编码延迟;并且,当该候选参考块与该第一待处理图像块不位于同一ctb内时,说明该候选参考块具有足够的时间完成更新过程,又因为终态运动矢量为初态运动矢量经过精细化处理过的运动矢量,那么,选用与该第一待处理图像块不位于同一ctb内的候选参考块的终态运动矢量,作为该候选参考块的运动矢量,可以保证编码质量。

该预设范围还可以是同一ctb块,或左右相邻的ctb块范围,例如,当该候选参考块所在的ctb与该第一待处理图像块所在的ctb相同或左右相邻时,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,对应的,当该候选参考块所在的ctb和该第一待处理图像块所在的ctb不相同且不为左右相邻关系时,将该候选参考块的终态运动矢量作为该候选参考块的运动矢量。

当该候选参考块与该第一待处理图像块所在的ctb相同或左右相邻时,说明该候选参考块的更新进程可能还没有完成,直接选用该候选参考块的初态运动矢量作为该候选参考块的运动矢量,可以不必等待该候选参考块更新完成,从而降低了编码延迟;并且,当该候选参考块所在的ctb和该第一待处理图像块所在的ctb不相同且不为左右相邻关系时,说明该候选参考块具有足够的时间完成更新过程,又因为终态运动矢量为初态运动矢量经过精细化处理过的运动矢量,那么,选用该候选参考块的终态运动矢量作为该候选参考块的运动矢量,可以保证编码质量。

1903、该编码端根据该一个或多个候选参考块的运动矢量,建立候选预测运动矢量列表。

建立候选预测运动矢量列表的方式,参见图6至图9,在此不做具体赘述,

1904、该编码端确定待处理图像块的一个参考块,该参考块和所述第一待处理图像块位于同一帧图像中。

从该第一待处理图像块的一个或多个候选参考块中,选择一个率失真代价值最小的候选参考块,作为所述第一待处理图像块的参考块。

1905、该编码端存储该参考块的运动矢量,该参考块的运动矢量为该当前处理图像块的初态运动矢量。

该参考块的运动矢量可以从该建立的候选预测运动矢量列表的相应位置中获取得到。

上述步骤1901至步骤1905为编码端获取该第一待处理图像块的初态运动矢量的过程。

1906、该编码端根据该第一待处理图像块的初态运动矢量以及一个或多个预设的运动矢量偏移量,确定该第一待处理图像块的预测块。

该这步骤1906,可以通过图13中13021至13024来完成,在此不做赘述。

其中,一个或多个预设的运动矢量偏移量,可以按照像素的单位来设置,例如,以第一待处理图像块的初态运动矢量指示的图像块为该第一待处理图像块的临时预测块,以该临时预测块为中心,搜索距离该临时预测块一个像素单位或者1/2个像素单位内的一个或多个候选预测块,当然也可以是其他长度或者像素单位,本申请实施例对于一个或多个预设的运动矢量偏移量不做具体限定。

1907、当该编码端确定该预测块的运动矢量后,将该预测块的运动矢量作为该第一待处理图像块的终态运动矢量。

本步骤1907可以根据该预测块的预设范围来确定该候选参考块的运动矢量,例如,当该预测块位于预设范围以内时,将该预测块的初态运动矢量作为该预测块的运动矢量,当该预测块位于预设范围以外时,将预测块的终态运动矢量作为该预测块的运动矢量。

具体的,该预测范围可以是ctb的行范围,例如,当该预测块所在的ctb和该第一待处理图像块所在的ctb位于同一行,将该预测块的初态运动矢量作为该预测块的运动矢量,对应的,当该预测块所在的ctb和该第一待处理图像块所在的ctb不位于同一行,将该预测块的初态运动矢量作为该预测块的运动矢量,参见图21,可以理解的是,当该预测块所在的编码树块和该第一待处理图像块所在的编码树块位于不同行,并且,该预测块所在的编码树块位于与该第一待处理图像块所在的编码树块不同行的邻近空间时,将该预测块的初态运动矢量作为该预测块的运动矢量,其中,该不同行的邻近空间可以是不同行的上方空间或者左上空间等,本发明实施不对该不同行的邻近空间的具体范围做具体限定。

当该预测块与该第一待处理图像块所在的ctb位于同一行时,该预测块的更新过程可能还没有完成,所以可以直接将该预测块的初态运动矢量作为该预测块的运动矢量,而不必等待该预测块更新完成,从而降低了编码延迟;当该预测块与该第一待处理图像块所在的ctb不位于同一行时,说明该预测块有足够的时间可以完成更新过程,所以该预测块具有终态运动矢量,可以将该预测块的终态运动矢量作为该候选参考块的运动矢量,又因为终态运动矢量为初态运动矢量经过精细化处理过的运动矢量,那么,利用该终态运动矢量作为该预测块的运动矢量,可以保证编码质量。

在一些实施例中该预设范围还可以是ctb块范围,在另一些实施例中,该预设范围还可以是同一ctb块,预测块运动矢量的确定类似候选参考块运动矢量的确定,见步骤1902,在此不做赘述。

1908、该编码端将候选列表中的该第一待处理图像块的初态运动矢量更新为该第一待处理图像块的终态运动矢量。

1909、该编码端将该第一待处理图像块的运动矢量残差值存储至目标存储空间。

该运动矢量残差值为该第一待处理图像块的终态运动矢量与该第一待处理图像块的初态运动矢量的运动矢量差。

该目标存储空间为该编码端存储运动矢量残差值的空间,例如,该目标存储空间可以是图2中参考图片存储器64。

需要说明的是,在相关技术中的merge模式下,该目标存储空间存储的是零矢量,或者该目标存储空间不存储任何数据,而本申请实施例在merge模式下,将该待处理图像块的运动矢量残差值存储在该目标存储空间内,不仅可以充分里用该目标存储空间,还可以使得当该第一待处理图像块需要其他图像块的运动矢量时,灵活选取其他图像块的运动矢量。见步骤1902和1907,进一步提高了编码端的编码效率。

另外,在一些实施中本步骤1909,还可以将该第一待处理图像块的终态运动矢量作为该第一待处理图像块的运动矢量残差值,存储至目标存储空间,也即是,将该第一待处理图像块的终态运动矢量存储在该目标存储空间中,而不将该第一待处理图像块的运动矢量残差值存储在该目标存储空间中,此时,当其他块需要该第一待处理图像块的终态运动矢量时,可以直接从该编码端的目标存储空间中获取,而不必将该第一待处理图像块的的初态运动矢量与该第一待处理图像块的运动矢量残差值相加后,才能获得该第一待处理图像块的的终态运动矢量。

本步骤1909具体的存储方式,参见图21。

需要注意的是,步骤1908与1909没有严格的顺序要求,编码端也可以先进行步骤1909,然后进行步骤1908,本申请实施例不做具体限定。

上述步骤1906至1909为该编码端,获取该第一待处理图像块的终态运动矢量的过程。

1910、该编码端将该待处理图像块的初态运动矢量或者初态运动矢量在该候选列表中对应的一个或多个第一标识信息编入码流中。

该一标识信息可以包括索引,当然在一些实施中,该一标识信息还可以包括预测模式,其中,索引用于指示候选预测运动矢量列表中对应的运动矢量,该运动矢量为该第一待处理图像块的初态运动矢量或者终态运动矢量,预测模式包括:merge模式、amvpa模式以及skip模式,对于本申请实施而言,该预测模式为merge模式,当然,对于其他实施例来说,该预测模式可以是其他模式,对此本申请实施例不做具有限定。

通过上述实施方式,编码端对当前编码块编码时,利用参考块更新前的初态运动矢量代替终态运动矢量,作为当前编码块的预测运动矢量,则当前编码块的需用参考块的运动矢量时,不需要等到参考块的终态运动矢量更新完成之后就可以开始执行相关步骤,在保证了运动矢量更新带来的编码效率提升的同时,降低了编码延时。

需要说明,当该编码端采用的帧间预测模式为前向预测或后向预测时,该候选参考块的运动矢量、参考块的运动矢量以及预测块的运动矢量包括前向运动矢量或后向运动矢量,相应地,建立候选预测运动矢量列表时,候选预测运动矢量列表仅包括列表0或者列表1,待处理图像块的初态运动矢量包括前向初态运动矢量或后向初态运动矢量,待处理图像块的终态运动矢量包括前向终态运动矢量或后向终态运动矢量。

当该编码端采用的帧间预测模式为双向预测时,该候选参考块、参考块以及预测块的运动矢量包括第一运动矢量和第二运动矢量,该第一运动矢量为前向运动矢量,该第二运动矢量为后向运动矢量,相应地,建立候选预测运动矢量列表时,候选预测运动矢量列表包括列表0和列表1,待处理图像块的初态运动矢量包括第一初态运动矢量和第二初态运动矢量,待处理图像块的终态运动矢量包括第一终态运动矢量和第二终态运动矢量,其中该第一初态运动矢量和第一终态运动矢量为前向运动矢量,第二初态运动矢量和第二终态运动矢量为后向运动矢量。

以上内容是针对编码端来进行说明的,相应地,对于解码端在合并模式下的运动矢量存储的过程,在此以一个具体的实施例进行如下描述:图20为本申请实施例中的解码端运动矢量存储方法的一种示意性流程图,包括:

2001、当解码端接收到第二待处理图像块对应的码流后,解析该码流以获得第二标识信息和第三标识信息,该第二标识信息用于确定待处理图像块的初态预测运动矢量,该第三标识信息用于指示解码是否需要解析运动矢量残差值。

该第二标识信息可以包括索引,用于确定待处理图像块的初态运动矢量,见步骤2002和2004,在一些实施例中,该第二标识信息还可以包括预测模式类型。

该第三标识信息用于指示解码是否需要解析运动矢量残差值,对于本申请实施例来说,在合并模式下不需要解析运动矢量残差值,而对于其他的实施例可以解析运动矢量残差值,例如,在smvp模式下,解码端根据第三标识信息的指示该码流中携带该第二待处理图像块的运动矢量残差时,解析所述码流,会获得该运动矢量残差值,那么,解码端会直接将该运动矢量残差值存储在目标存储空间中。

2002、当解码端接收到第二待处理图像块对应的码流后,确定该第二待处理图像块的一个或多个候选参考块,以及该一个或多个候选参考块的运动矢量。

该一个或多个候选参考块包括与该第二待处理图像块具有预设空域位置关系的图像块,该候选参考块的确定,参见图5,在此不做赘述。

本申请实施例中的候选参考块进行了运动矢量更新的过程,当候选参考块的更新过程完成时,该候选参考块具有初态运动矢量和终态运动矢量,也即是,该候选参考块存储有初态运动矢量和终态运动矢量,在一些实施例中,该候选参考块存储有初态运动矢量和运动矢量残差值,该候选参考块终态运动矢量可以通过该候选参考块的初态运动矢量和运动矢量残差值相加来获得。

但是,当候选参考块的更新过程未完成时,该候选参考块仅具有初态运动矢量,也即是,该候选参考块仅存储了该候选参考块的初态运动矢量。

因为该候选参考块中具有初态运动矢量以及终态运动矢量,所以该端需要将该候选参考块的初态运动矢量或者终态运动矢量作为该候选参考块的运动矢量,以便将候选该参考块的运动矢量作为该第二待处理图像块的空间候选预测运动矢量。

需要说明的是,该参考块的运动矢量更新的过程,以及所述初态运动矢量的获取,可以参考与图14相关的本申请实施例。应理解,图20相关实施例中的参考块即为图14相关实施例中的待处理图像块。

本步骤1802可以根据该候选参考块的预设范围来确定该候选参考块的运动矢量,例如,当该候选参考块位于预设范围以内时,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,当该候选参考块位于预设范围以外时,将该候选参考块的终态运动矢量作为该候选参考块的运动矢量,进而可以确定该一个或多个候选参考块的运动矢量。

具体的,该预测范围可以是ctb的行范围,例如,当该候选参考块所在的ctb和该第二待处理图像块所在的ctb位于同一行,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,对应的,当该候选参考块所在的ctb和该第二待处理图像块所在的ctb不位于同一行,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,参见图21,可以理解的是,当该候选参考块所在的编码树块和该第二待处理图像块所在的编码树块位于不同行,并且,该候选参考块所在的编码树块位于与该第二待处理图像块所在的编码树块不同行的邻近空间时,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,其中,该不同行的邻近空间可以是不同行的上方空间或者左上空间等,本发明实施不对该不同行的邻近空间的具体范围做具体限定。

在相关技术中,对于解码器来说,可以同时对多个待处理图像块进行解码,但是,当多个待处理图像块位于同一ctb行内,可能会互相成为彼此的候选参考块,一旦互相成为彼此的候选参考块时,必须等待其他块更新完成后,才能将其他块更新后的终态运动矢量作为当前待处理图像块的空间候选预测运动矢量,所以解码具有延迟,又因为互相成为彼此的候选参考块,所以必须排队等待其他块更新完成,所以又加剧了解码延迟。

因此,可以直接将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,进而将该候选参考块的运动矢量作为该第二待处理图像块的空间候选预测运动矢量,见步骤1803。

当该候选参考块与该第二待处理图像块所在的ctb位于同一行时,该候选参考块的更新过程可能还没有完成,所以可以直接将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,而不必等待该候选参考块更新完成,从而降低了解码延迟;当该候选参考块与该第二待处理图像块所在的ctb不位于同一行时,说明该候选参考块有足够的时间可以完成更新过程,所以该候选参考块具有终态运动矢量,可以将该候选参考块的终态运动矢量作为该候选参考块的运动矢量,又因为终态运动矢量为初态运动矢量经过精细化处理过的运动矢量,那么,利用该终态运动矢量作为该候选参考块的运动矢量,可以保证解码质量。

该预设范围还可以是ctb块范围,例如,当该候选参考块与该第二待处理图像块位于同一ctb内时,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,对应的,当该候选参考块与该第二待处理图像块不位于同一ctb内时,将该候选参考块的终态运动矢量作为该候选参考块的运动矢量。

当该候选参考块与该第二待处理图像块位于同一ctb内时,说明该候选参考块的更新进程可能还没有完成,直接选用该候选参考块的初态运动矢量作为该候选参考块的运动矢量,可以不必等待该候选参考块更新完成,从而降低了解码延迟;并且,当该候选参考块与该第二待处理图像块不位于同一ctb内时,说明该候选参考块具有足够的时间完成更新过程,又因为终态运动矢量为初态运动矢量经过精细化处理过的运动矢量,那么,选用与该第二待处理图像块不位于同一ctb内的候选参考块的终态运动矢量,作为该候选参考块的运动矢量,可以保证解码质量。

该预设范围还可以是同一ctb块,或左右相邻的ctb块范围,例如,当该候选参考块所在的ctb与该第二待处理图像块所在的ctb相同或左右相邻时,将该候选参考块的初态运动矢量作为该候选参考块的运动矢量,对应的,当该候选参考块所在的ctb和该第二待处理图像块所在的ctb不相同且不为左右相邻关系时,将该候选参考块的终态运动矢量作为该候选参考块的运动矢量。

当该候选参考块与该第二待处理图像块所在的ctb相同或左右相邻时,说明该候选参考块的更新进程可能还没有完成,直接选用该候选参考块的初态运动矢量作为该候选参考块的运动矢量,可以不必等待该候选参考块更新完成,从而降低了解码延迟;并且,当该候选参考块所在的ctb和该第二待处理图像块所在的ctb不相同且不为左右相邻关系时,说明该候选参考块具有足够的时间完成更新过程,又因为终态运动矢量为初态运动矢量经过精细化处理过的运动矢量,那么,选用该候选参考块的终态运动矢量作为该候选参考块的运动矢量,可以保证解码质量。

2003、该解码端根据该一个或多个候选参考块的运动矢量,建立候选预测运动矢量列表。

该步骤2003与步骤1903相同,也即是,该解码端与编码端建立候选预测运动矢量列表的方式一致,且建立的候选预测运动矢量列表相同,该编码端为编码该解码端接收的码流的编码端。

2004、该解码端根据所述第二标识信息,从该候选预测运动矢量列表中确定该第二待处理图像块的参考块以及该参考块的运动矢量。

根据第二标识信息中的索引,从在候选预测运动矢量列表中筛选出该索引指示的运动矢量,该运动矢量为该第二待处理图像块的初态运动矢量,该运动矢量也是该第二待处理图像块的参考块的运动矢量。

2005、该解码端将该参考块的运动矢量存储为该第二待处理图像块的初态运动矢量。

步骤2001至2005为该解码端获取该第二待处理图像块的初态运动矢量的过程。

2006、该解码端根据该第二待处理图像块的初态运动矢量以及一个或多个预设的运动矢量偏移量,确定该第二待处理图像块的预测块。

该这步骤2006,可以通过图14中14001至1404来完成,在此不做赘述。

其中,一个或多个预设的运动矢量偏移量,见步骤1906,在此不做赘述。

需要说明的是,步骤2005和2006,没有具体的执行顺序,也可以先执行步骤2006,再执行步骤2005,对于步骤2005和2006执行的先后顺序本申请实施例不做具体限定。

2007、该解码端确定该预测块的运动矢量后,将该预测块的运动矢量作为该第二待处理图像块的终态运动矢量。

本步骤2007可以根据该预测块的预设范围来确定该候选参考块的运动矢量,例如,当该预测块位于预设范围以内时,将该预测块的初态运动矢量作为该预测块的运动矢量,当该预测块位于预设范围以外时,将预测块的终态运动矢量作为该预测块的运动矢量。

具体的,该预测范围可以是ctb的行范围,例如,当该预测块所在的ctb和该第二待处理图像块所在的ctb位于同一行,将该预测块的初态运动矢量作为该预测块的运动矢量,对应的,当该预测块所在的ctb和该第二待处理图像块所在的ctb不位于同一行,将该预测块的初态运动矢量作为该预测块的运动矢量,参见图21,可以理解的是,当该预测块所在的编码树块和该第二待处理图像块所在的编码树块位于不同行,并且,该预测块所在的编码树块位于与该第二待处理图像块所在的编码树块不同行的邻近空间时,将该预测块的初态运动矢量作为该预测块的运动矢量,其中,该不同行的邻近空间可以是不同行的上方空间或者左上空间等,本发明实施不对该不同行的邻近空间的具体范围做具体限定。

当该预测块与该第二待处理图像块所在的ctb位于同一行时,该预测块的更新过程可能还没有完成,所以可以直接将该预测块的初态运动矢量作为该预测块的运动矢量,而不必等待该预测块更新完成,从而降低了解码延迟;当该预测块与该第二待处理图像块所在的ctb不位于同一行时,说明该预测块有足够的时间可以完成更新过程,所以该预测块具有终态运动矢量,可以将该预测块的终态运动矢量作为该候选参考块的运动矢量,又因为终态运动矢量为初态运动矢量经过精细化处理过的运动矢量,那么,利用该终态运动矢量作为该预测块的运动矢量,可以保证解码质量。

在一些实施例中该预设范围还可以是ctb块范围,在另一些实施例中,该预设范围还可以是同一ctb块,预测块运动矢量的确定类似候选参考块运动矢量的确定,见步骤1802,在此不做赘述。

上述步骤2006至2007为该解码端获取该第二待处理图像块的终态运动矢量的过程。

2008、将该第二待处理图像块的运动矢量残差值存储至目标存储空间。

该目标存储空间为该解码端存储运动矢量残差值的空间,例如,该目标存储空间可以是图3中参考图片存储器92。

需要说明的是,在相关技术中的merge模式下,该目标存储空间存储的是零矢量,或者该目标存储空间不存储任何数据,而本申请实施例在merge模式下,将该待处理图像块的运动矢量残差值存储在该目标存储空间内,不仅可以充分里用该目标存储空间,还可以使得当该第二待处理图像块需要其他图像块的运动矢量时,灵活选取其他图像块的运动矢量。见步骤2002和2007,进一步提高了解码端的解码效率。

另外,在一些实施中本步骤2008,还可以将该第二待处理图像块的终态运动矢量作为该第二待处理图像块的运动矢量残差值,存储至存储于目标存储空间,也即是,将该第二待处理图像块的终态运动矢量存储在该目标存储空间中,而不将该第二待处理图像块的运动矢量残差值存储在该目标存储空间中,此时,当其他块需要该第二待处理图像块的终态运动矢量时,可以直接从该解码端的目标存储空间中获取,而不必将该第二待处理图像块的的初态运动矢量与该第二待处理图像块的运动矢量残差值相加后,才能获得该第二待处理图像块的的终态运动矢量。

本步骤2008具体的存储方式,参见图21。

需要注意的是,步骤2007与2008没有严格的顺序要求,解码端也可以先进行步骤2007,然后进行步骤2008,本申请实施例不做具体限定。

2009、该解码端根据该第二待处理图像块的运动矢量残差值以及初始运动差值,获取该第二待处理图像块所对应的图像信息。

该图像信息包括像素信息,用于标识该第二待处理图像块的原图形。

该解码端根据该第二待处理图像块的运动矢量残差值以及初始运动差值,获取该第二待处理图像块所对应的图像信息,参见图3,在此不做具体赘述。

相应地,该解码端还可以根据该第二待处理图像块的终态运动矢量获取该第二待处理图像块所对应的图像信息。

通过上述实施方式,解码端对当前解码块解码时,利用参考块更新前的初态运动矢量代替终态运动矢量,作为当前解码块的预测运动矢量,则当前解码块需要参考块的运动矢量时,不需要等到参考块的终态运动矢量更新完成之后就可以开始执行相关步骤,在保证了运动矢量更新带来的解码效率提升的同时,降低了解码延时。

为了进一步体现存储运动矢量的方式,在此用一个具体的实施例来表明存储的步骤,具体描述如下:

在merge模式中,存在在每个预测方向上存在两个mv的情况,分别为第一mv以及第二mv信息。比如,可以分别为参考块的初态运动矢量以及参考所述块被选的终态运动矢量。merge模式引入了mvd推导过程,如前向预测过程中,在第一mv为mv0情况下,第二mv为mv0’则存在导出关系:mv0’=mv0+(-)mvd0。通过存储两个mv,比如分别存储初态运动矢量的索引值和上述mvd值,即两个mv的差值,使得方便在一定条件下使用第一mv,一定条件下使用第二mv,避免了延迟情况发生。

该一定条件,参见步骤1902或2002,在此不做赘述。

在一种可行的实施方式中,在非merge模式下,目标存储空间用于存储所述参考块的运动矢量残差值,所述参考块的运动矢量残差值为所述参考块的终态运动矢量和所述参考块的预测运动矢量的差值,其特征在于,包括:在merge模式下,所述目标存储空间用于存储所述被选中的终态运动矢量,或者,所述目标存储空间用于存储所述参考块的初态运动矢量和所述被选中的终态运动矢量的差值。

在本申请的另一个实施例中:

如图22所示,当前编解码块为第一编解码块,获取当前编解码块的预测运动信息,参考块为merge模式且运动信息的位置与当前编解码块不在同一ctbline范围中,则参考块前向运动矢量(-22,18)和后向运动矢量(2,12)分别与前向mvd(1,0)和后向mvd(-1,0)相加,得到当前编解码块的前向运动矢量预测值和后向运动矢量预测值分别为(-21,18)和(1,12),当前编解码块所在的图像的poc为4,前向参考图像的索引值指示的参考图像的poc为2,后向参考图像的索引值指示的参考图像的poc为6。则当前编解码块对应的poc为4,前向预测参考图像块对应的poc为2,后向预测参考图像块对应的poc为6。

以(-21,18)作为前向运动矢量预测值参考输入,对前向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1像素精度。以前向第一编解码预测块为参考,针对每次运动搜索所得到对应的新前向编解码预测块。以(1,12)作为后向运动矢量预测值参考输入,对后向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1像素精度。以后向第一编解码预测块为参考,针对每次运动搜索所得到对应的新后向编解码预测块。新前向编解码预测块与新后向编解码预测块进行差异比较,求得差异最小的前后向编解码预测块所对应的前向运动矢量预测值作为目标运动矢量预测值,假设分别是(-21,19)和(1,11)。

根据前后向目标运动矢量预测值分别为(-21,19)和(1,11)以及当前编解码块的前后向运动矢量预测值分别为(-21,18)和(1,12),相减操作得到当前编解码块的前后向mvd分别为(0,1)和(0,-1)。mvd计算方式1:mvd0=(-21,19)-(-21,18);mvd1=(1,11)-(1,12)。或:mvd0=(-21,19)-(-21,18);mvd1=-mvd0。

同时根据目标运动矢量预测值对第一编解码块分别进行前后向预测,将得到的前后向编解码预测块作为目标解码预测块,更新当前编解码块的编解码预测块。

需要说明的是,对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索时,第一精度可以是设定的任意精度,例如可以是整像素精度或1/2像素精度或1/4像素精度或1/8像素精度。

在本申请的另一个实施例中:

如图22所示,当前解码块为第一解码块,获取当前编解码块的预测运动信息,参考块为merge模式且运动信息的位置与当前编解码块不在同一ctb范围中,则参考块前向运动矢量(-22,18)和后向运动矢量(2,12)分别与前向mvd(1,0)和后向mvd(-1,0)相加,得到当前编解码块的前向运动矢量预测值和后向运动矢量预测值分别为(-21,18)和(1,12),当前编解码块所在的图像的poc为4,前向参考图像的索引值指示的参考图像的poc为2,后向参考图像的索引值指示的参考图像的poc为6。则当前编解码块对应的poc为4,前向预测参考图像块对应的poc为2,后向预测参考图像块对应的poc为6。

以(-21,18)作为前向运动矢量预测值参考输入,对前向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1像素精度。以前向第一编解码预测块为参考,针对每次运动搜索所得到对应的新前向编解码预测块。以(1,12)作为后向运动矢量预测值参考输入,对后向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1像素精度。以后向第一编解码预测块为参考,针对每次运动搜索所得到对应的新后向编解码预测块。新前向编解码预测块与新后向编解码预测块进行差异比较,求得差异最小的前后向编解码预测块所对应的前向运动矢量预测值作为目标运动矢量预测值,假设分别是(-21,19)和(1,11)。

根据前后向目标运动矢量预测值分别为(-21,19)和(1,11)以及当前编解码块的前后向运动矢量预测值分别为(-21,18)和(1,12),相减操作得到当前编解码块的前后向mvd分别为(0,1)和(0,-1)。mvd计算方式1:mvd0=(-21,19)-(-21,18);mvd1=(1,11)-(1,12)。或:mvd0=(-21,19)-(-21,18);mvd1=-mvd0。

同时根据目标运动矢量预测值对第一编解码块分别进行前后向预测,将得到的前后向编解码预测块作为目标解码预测块,更新当前编解码块的编解码预测块。

需要说明的是,对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索时,第一精度可以是设定的任意精度,例如可以是整像素精度或1/2像素精度或1/4像素精度或1/8像素精度。

在本申请的另一个实施例中:

如图22所示,当前编解码块为第一解码块,获取当前编解码块的预测运动信息,参考块为merge模式且运动信息的位置与当前解码块不在同一ctbline范围中,则参考块前向运动矢量(-22,18)和后向运动矢量(2,12)分别与前向mvd(1,0)和后向mvd(-1,0)相加,得到当前编解码块的前向运动矢量预测值和后向运动矢量预测值分别为(-21,18)和(1,12),当前编解码块所在的图像的poc为4,前向参考图像的索引值指示的参考图像的poc为2,后向参考图像的索引值指示的参考图像的poc为6。则当前编解码块对应的poc为4,前向预测参考图像块对应的poc为2,后向预测参考图像块对应的poc为6。

以(-21,18)作为前向运动矢量预测值参考输入,对前向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1像素精度。以前向第一编解码预测块为参考,针对每次运动搜索所得到对应的新前向编解码预测块。以(1,12)作为后向运动矢量预测值参考输入,对后向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1像素精度。以后向第一编解码预测块为参考,针对每次运动搜索所得到对应的新后向编解码预测块。新前向编解码预测块与新后向编解码预测块进行差异比较,求得差异最小的前后向编解码预测块所对应的前向运动矢量预测值作为目标运动矢量预测值,假设分别是(-21,19)和(1,11)。

继续以(-21,19)作为前向运动矢量预测值参考输入,对前向预测参考图像块进行第一精度的运动搜索,此时第一精度为半像素精度。以前向第一编解码预测块为参考,针对每次运动搜索所得到对应的新前向编解码预测块。以(1,11)作为后向运动矢量预测值参考输入,对后向预测参考图像块进行第一精度的运动搜索,此时第一精度为半像素精度。以后向第一编解码预测块为参考,针对每次运动搜索所得到对应的新后向编解码预测块。新前向编解码预测块与新后向编解码预测块进行差异比较,求得差异最小的前后向编解码预测块所对应的前向运动矢量预测值作为目标运动矢量预测值。

根据前后向目标运动矢量预测值分别为(-21,19)和(1,11)以及当前编解码块的前后向运动矢量预测值分别为(-21,18)和(1,12),相减操作得到当前编解码块的前后向mvd分别为(0,1)和(0,-1)。mvd计算方式1:mvd0=(-21,19)-(-21,18);mvd1=(1,11)-(1,12)。或:mvd0=(-21,19)-(-21,18);mvd1=-mvd0。

同时根据目标运动矢量预测值对第一编解码块分别进行前后向预测,将得到的前后向编解码预测块作为目标解码预测块,更新当前编解码块的编解码预测块。

需要说明的是,对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索时,第一精度可以是设定的任意精度,例如可以是整像素精度或1/2像素精度或1/4像素精度或1/8像素精度。

在本申请的另一个实施例中:

当前解码块为第一编解码块,获取当前编解码块的预测运动信息,参考块前向运动矢量为(-21,18)和后向运动矢量(1,12),得到当前编解码块的前向运动矢量预测值和后向运动矢量预测值分别为(-21,18)和(1,12),当前编解码块所在的图像的poc为4,前向参考图像的索引值指示的参考图像的poc为2,后向参考图像的索引值指示的参考图像的poc为6。则当前编解码块对应的poc为4,前向预测参考图像块对应的poc为2,后向预测参考图像块对应的poc为6。

以(-21,18)作为前向运动矢量预测值参考输入,对前向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1像素精度。以前向第一编解码预测块为参考,针对每次运动搜索所得到对应的新前向编解码预测块。以(1,12)作为后向运动矢量预测值参考输入,对后向预测参考图像块进行第一精度的运动搜索,此时第一精度为1像素范围的1像素精度。以后向第一编解码预测块为参考,针对每次运动搜索所得到对应的新后向编解码预测块。新前向编解码预测块与新后向编解码预测块进行差异比较,求得差异最小的前后向编解码预测块所对应的前向运动矢量预测值作为目标运动矢量预测值,假设分别是(-21,19)和(1,11)。

根据前后向目标运动矢量预测值分别为(-21,19)和(1,11)以及当前编解码块的前后向运动矢量预测值分别为(-21,18)和(1,12),相减操作得到当前编解码块的前后向mvd分别为(0,1)和(0,-1)。mvd计算方式1:mvd0=(-21,19)-(-21,18);mvd1=(1,11)-(1,12)。或:mvd0=(-21,19)-(-21,18);mvd1=-mvd0。

同时根据目标运动矢量预测值对第一编解码块分别进行前后向预测,将得到的前后向编解码预测块作为目标解码预测块,更新当前编解码块的编解码预测块。

需要说明的是,对前向预测参考图像块和后向预测参考图像块进行第一精度的运动搜索时,第一精度可以是设定的任意精度,例如可以是整像素精度或1/2像素精度或1/4像素精度或1/8像素精度。

图23为本申请实施例中的运动矢量的获取装置2300的一种示意性框图,包括:

确定模块2301,用于确定待处理图像块的参考块,所述参考块和所述待处理图像块具有预设的时域或空域相关性,所述参考块具有初始运动矢量和一个或多个预设的运动矢量偏移量,所述参考块的初始运动矢量基于所述参考块的预测运动矢量获得,所述参考块的预测块基于所述初始运动矢量和一个或多个预设的运动矢量偏移量获得;

获取模块2302,用于将所述参考块的初始运动矢量作为所述待处理图像块的预测运动矢量。

在一种可行的实施方式中,所述获取模块2302还用于:将所述参考块的预测运动矢量作为所述参考块的初始运动矢量;或者,将所述参考块的预测运动矢量和所述参考块的运动矢量差值相加,作为所述参考块的初始运动矢量。

在一种可行的实施方式中,所述获取模块2302还用于:在所述参考块的参考帧中获取所述参考块的初始运动矢量指示的图像块,以作为所述参考块的临时预测块;将所述参考块的初始运动矢量和一个或多个预设的运动矢量偏移量相加,以获得一个或多个实际运动矢量,其中,每个所述实际运动矢量指示一个搜索位置;在所述一个或多个实际运动矢量指示的搜索位置,获得一个或多个候选预测块,其中每个所述搜索位置对应一个所述候选预测块;从所述一个或多个候选预测块中选择与所述临时预测块的像素差异最小的候选预测块作为所述参考块的预测块。

在一种可行的实施方式中,所述装置2300用于双向预测,所述参考帧包括第一向参考帧和第二向参考帧,所述初始运动矢量包括第一向初始运动矢量和第二向初始运动矢量,所述获取模块2302具体用于:在所述参考块的第一向参考帧中获取所述参考块的第一向初始运动矢量指示的第一图像块;在所述参考块的第二向参考帧中获取所述参考块的第二向初始运动矢量指示的第二图像块;对所述第一图像块和所述第二图像块进行加权,以获得所述参考块的临时预测块。

在一种可行的实施方式中,所述获取模块2302具体用于:将所述待处理图像块的预测运动矢量作为所述待处理图像块的初始运动矢量。

在一种可行的实施方式中,所述获取模块2302具体用于:将所述待处理图像块的预测运动矢量和所述待处理图像块的运动矢量差值相加,以作为所述待处理图像块的初始运动矢量。

在一种可行的实施方式中,所述装置2300用于视频解码,所述待处理图像块的运动矢量差值通过解析码流中的第一标识信息获得。

在一种可行的实施方式中,所述装置2300用于视频解码,所述确定模块2301具体用于:解析码流,获得第二标识信息;根据所述第二标识信息,确定所述待处理图像块的参考块。

在一种可行的实施方式中,所述装置2300用于视频编码,所述确定模块2301具体用于:从所述待处理图像块的一个或多个候选参考块中,选择一个作为所述待处理图像块的参考块时率失真代价值最小的候选参考块,作为所述待处理图像块的参考块。

图24为本申请实施例的一种视频编解码设备示意性框图,该设备2400可以是应用于编码侧,也可以是应用于解码侧。设备2400包括处理器2401、存储器2402,所述处理器2401、存储器2402相连接(如通过总线2404相互连接),在可能的实施方式中,设备2400还可包括收发器2403,收发器2403连接处理器2401和存储器2402,用于接收/发送数据。

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

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

该处理器2401用于读取所存储器2402中存储的程序代码,执行图13-图20所对应的任意一个实施方案及其各种可行的实施方式的操作。

示例性的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行图13-图20所对应的任意一个实施方案及其各种可行的实施方式的操作。

示例性的,本申请实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行图13-图20所对应的任意一个实施方案及其各种可行的实施方式的操作。

图25为本申请实施例的一种运动矢量的获取装置,包括:确定模块2501、第一获取模块2502和第二获取模块2503;

确定模块2501,用于执行上述步骤1904;

第一获取模块2502,用于执行上述步骤1907;

第二获取模块2503,用于执行上述步骤1907;

可选地,所述参考块位于预设范围以内,包括:所述参考块所在的编码树块ctb和所述待处理图像块所在的编码树块位于同一行;

对应的,所述参考块位于所述预设范围以外,包括:所述参考块所在的编码树块和所述待处理图像块所在的编码树块位于不同行,参见步骤1907。

可选地,所述参考块位于预设范围以内,包括:所述参考块和所述待处理图像块位于同一编码树块;

对应的,所述参考块位于所述预设范围以外,包括:所述参考块和所述待处理图像块位于不同的编码树块,参见步骤1907。

可选地,所述参考块位于预设范围以内,包括:所述参考块所在的编码树块和所述待处理图像块所在的编码树块相同或左右相邻;

对应的,所述参考块位于所述预设范围以外,包括:所述参考块所在的编码树块和所述待处理图像块所在的编码树块不相同且不为左右相邻关系,参见步骤1907。

图26为本申请实施例的一种运动矢量残差的确定装置,包括:解析模块2601、求和模块2602、确定模块2603以及获取模块2604;

解析模块2601,用于执行上述步骤2001;

求和模块2602,用于执行上述步骤2002;

确定模块2603,用于执行上述步骤1422;

获取模块2604,用于执行上述步骤2008;

可选地,所述装置用于双向帧间预测,所述终态运动矢量包括第一终态运动矢量和第二终态运动矢量,所述初态运动矢量包括第一初态运动矢量和第二初态运动矢量,其中,所述第一终态运动矢量和所述第一初态运动矢量基于所述待处理图像块的第一参考帧列表指示运动补偿块,所述第二终态运动矢量和所述第二初态运动矢量基于所述待处理图像块的第二参考帧列表指示运动补偿块,所述将所述终态运动矢量与所述初态运动矢量的差作为所述待处理图像块的运动矢量残差,包括:

将所述第一终态运动矢量与所述第一初态运动矢量的差作为所述待处理图像块的第一运动矢量残差,见步骤2008。

图27为本申请实施例的一种运动矢量数据的存储装置,包括:第一解析模块2701、获取模块2702、第二解析模块2703以及存储模块2704;

第一解析模块2701,用于执行上述步骤2001;

获取模块2702,用于执行上述步骤2007;

第二解析模块2703,用于执行上述步骤2001;

存储模块2704,用于执行上述步骤2008。

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

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

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

在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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