掌桥专利:专业的专利平台
掌桥专利
首页

仿射运动预测

文献发布时间:2023-06-19 11:21:00


仿射运动预测

技术领域

本申请涉及视频译码和压缩。例如,描述了用于仿射运动预测的系统和方法。

背景技术

许多设备和系统允许视频数据被处理和输出以供消费。数字视频数据包括大量数据以满足消费者和视频提供者的需求。例如,视频数据的消费者期望具有高的保真度、分辨率、帧率等等的极高质量的视频。因此,所需用于满足这些需求的大量视频数据为处理和存储视频数据的通信网络和设备带来负担。

各种视频译码技术可被用于压缩视频数据。视频译码根据一个或多个视频译码标准而被执行。例如,视频译码标准包括高效视频译码(HEVC)、高级视频译码(AVC)、移动图片专家组(MPEG)译码等等。视频译码一般使用利用视频图像或序列中存在的冗余的预测方法(例如,帧间预测、帧内预测等)。视频译码技术的重要目标是将视频数据压缩至使用较低比特率的形式,同时避免或最小化对视频质量的降级。随着持续演进的视频服务变得可用,需要具有更好的译码效率的编码技术。

发明内容

本文描述了用于仿射运动导出的技术和系统。基于仿射运动的预测允许估计复杂的运动,诸如旋转、缩放、平移或其任何组合等等。在一些示例中,本文描述的系统和技术涉及改善仿射运动预测中的成本和效率。在一些示例中,针对当前块的仿射运动向量预测子可以从相邻经译码块的仿射运动向量或普通运动向量导出。仿射运动向量预测子可以包括继承的仿射运动向量预测子和构造的仿射运动向量预测子。对于这两种类型的仿射运动向量预测子,运动信息可以从可被存储在一种或多种类型的存储器结构中的先前经译码块的经重构运动信息获得。

在一些示例中,用于存储先前经译码块的运动信息的存储器结构可以包括线缓冲器以及可能一个或多个本地缓冲器。线缓冲器可以存储位于诸如译码树单元(CTU)之类的译码单元的边界处的译码块线(line of coding blocks)的运动信息,而本地缓冲器可以被用于存储位于CTU中任何地方的译码块的运动信息。本文描述的系统和技术可以改善对仿射运动向量预测中的线缓冲器的利用以及对一个或多个本地缓冲器的利用。

例如,在一些实现中,对用于仿射运动预测中的线缓冲器的利用可以包括将少于全部的相邻块的运动向量存储在线缓冲器中,其中相邻块位于当前块所处的当前译码单元之外。在一些示例中,其中三个运动向量被用于当前块的仿射运动向量预测,第一运动向量和第二运动向量可以从与相邻块的边界相关联的线缓冲器获得,其中第一运动向量和第二运动向量可以已被存储在线缓冲器中。第三运动向量(在可用的情况下)可以从附加相邻块获得,其中第三运动向量可以已被存储在线缓冲器或本地缓冲器中,并且不会增加对线缓冲器的存储需求。针对当前块的仿射运动参数集可以使用第一运动向量、第二运动向量和第三运动向量而被确定。

在一些实现中,可以改进对一个或多个本地缓冲器的利用。在一些示例中,对是否继承相邻块的仿射运动向量预测子(MVP)以用作针对当前译码单元的当前块的运动向量的决策可以基于与相邻块相关联的一个或多个尺寸约束。在一些示例中,从当前块的相邻块获得用于当前块的所继承仿射MVP的控制点运动向量(CPMV)可以包括将相邻块的CPMV存储在本地缓冲器中的中间步骤。如上所述,存储CPMV可以增加对本地缓冲器的存储器使用。一个或多个尺寸约束可以被应用于限制其CPMV可以被存储在本地缓冲器中的相邻块,这可以减少所需用于存储CPMV的本地缓冲器存储的量。

在一些示例中,可针对其控制点运动向量(CPMV)可被用于当前块的所继承仿射运动向量预测(MVP)的相邻块定义最小尺寸阈值。其尺寸小于最小尺寸阈值的相邻块的CPMV可以被排除用于当前块的所继承仿射MVP。通过将其尺寸小于最小尺寸阈值的相邻块的CPMV排除被用于当前块的所继承仿射MVP,其尺寸小于最小尺寸阈值的相邻块的CPMV不需要被存储在本地缓冲器中。因此,在存储相邻块的CPMV之前,本文描述的示例技术可以包括相邻块的尺寸与最小尺寸阈值的比较。用于该比较的最小尺寸阈值不同于用于以仿射运动模型译码的块的最小块尺寸。

根据至少一个示例,处理视频数据的方法包括获得针对当前译码单元的当前块的视频数据。该方法包括确定当前译码单元中的当前块的相邻块的尺寸大于用于仿射运动预测的最小块尺寸。该方法进一步包括确定相邻块的尺寸是否小于用于将相邻块的仿射运动向量用作当前块的仿射运动向量的最小尺寸阈值,该最小尺寸阈值不同于最小块尺寸。该方法进一步包括基于相邻块的尺寸是否小于最小尺寸阈值来确定是否将相邻块的仿射运动向量用作针对当前块的仿射运动向量。

在另一示例中,提供用于处理视频数据的装置。该装置包括存储器以及以电路实现的处理器。该装置被配置成并且可以获得针对当前译码单元的当前块的视频数据。该装置进一步被配置成并且可以包括确定当前译码单元中的当前块的相邻块的尺寸大于用于仿射运动预测的最小块尺寸。该装置进一步被配置成并且可以包括确定相邻块的尺寸是否小于用于将相邻块的仿射运动向量用作当前块的仿射运动向量的最小尺寸阈值,该最小尺寸阈值不同于最小块尺寸。该装置进一步被配置成并且可以包括基于相邻块的尺寸是否小于最小尺寸阈值来确定是否将相邻块的仿射运动向量用作针对当前块的仿射运动向量。

在另一示例中,提供其上存储有指令的非暂态计算机可读介质,指令在被一个或多个处理器执行时,使一个或多个处理器:获得针对当前译码单元的当前块的视频数据;确定当前译码单元中的当前块的相邻块的尺寸大于用于仿射运动预测的最小块尺寸;确定相邻块的尺寸是否小于用于将相邻块的仿射运动向量用作当前块的仿射运动向量的最小尺寸阈值,该最小尺寸阈值不同于最小块尺寸;以及基于相邻块的尺寸是否小于最小尺寸阈值来确定是否将相邻块的仿射运动向量用作针对当前块的仿射运动向量。

在另一示例中,提供用于处理视频数据的装置。该装置包括:用于获得针对当前译码单元的当前块的视频数据的部件;用于确定当前译码单元中的当前块的相邻块的尺寸大于用于仿射运动预测的最小块尺寸的部件;用于确定相邻块的尺寸是否小于用于将相邻块的仿射运动向量用作当前块的仿射运动向量的最小尺寸阈值的部件,该最小尺寸阈值不同于最小块尺寸;以及用于基于相邻块的尺寸是否小于最小尺寸阈值来确定是否将相邻块的仿射运动向量用作针对当前块的仿射运动向量的部件。

上述方法、装置和计算机可读介质的某些方面进一步包括确定相邻块的尺寸小于最小尺寸阈值;以及基于具有小于最小阈值的尺寸的相邻块的仿射运动向量不被用作当前块的仿射运动向量的限制,将相邻块的仿射运动向量排除被用作当前块的仿射运动向量。

在上述方法、装置和计算机可读介质的某些方面中,最小尺寸阈值包括最小宽度和最小高度中的至少一个。

上述方法、装置和计算机可读介质的某些方面进一步包括解码器,其中视频数据从编码器提供的经编码视频比特流获得。

在上述方法、装置和计算机可读介质的某些方面中,最小尺寸阈值从编码器提供的信令通知(signaling)获得。

在上述方法、装置和计算机可读介质的某些方面中,信令通知包括最小尺寸阈值的对数表示。

上述方法、装置和计算机可读介质的某些方面进一步包括确定相邻块的尺寸大于或等于最小尺寸阈值;以及基于相邻块的尺寸大于或等于最小尺寸阈值,将相邻块的仿射运动向量用作当前块的仿射运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括从当前译码单元的一个或多个本地缓冲器获得相邻块的仿射运动向量。

在上述方法、装置和计算机可读介质的某些方面中,一个或多个本地缓冲器包括一个或多个本地缓冲器的第一集合和一个或多个本地缓冲器的第二集合,其中:一个或多个本地缓冲器的第一集合包括当前块的一个或多个相邻块的一个或多个仿射运动向量;以及一个或多个本地缓冲器的第二集合包括当前块的一个或多个相邻块的一个或多个运动向量。

在上述方法、装置和计算机可读介质的某些方面中,一个或多个本地缓冲器的第一集合包括一个或多个行缓冲器;以及一个或多个本地缓冲器的第二集合包括一个或多个列缓冲器。

在上述方法、装置和计算机可读介质的某些方面中,一个或多个本地缓冲器包括一个或多个本地缓冲器的第一集合和一个或多个本地缓冲器的第二集合,其中:一个或多个本地缓冲器的第一集合包括一个或多个仿射运动向量的第一子集和一个或多个运动向量;以及一个或多个本地缓冲器的第二集合包括一个或多个仿射运动向量的第二子集。

在上述方法、装置和计算机可读介质的某些方面中,一个或多个相邻块的一个或多个仿射运动向量包括一个或多个控制点运动向量,其中:一个或多个仿射运动向量的第一子集包括针对一个或多个相邻块的右上部分的右上方控制点运动向量以及针对一个或多个相邻块的左下部分的左下方控制点运动向量;以及一个或多个仿射运动向量的第二子集包括针对一个或多个相邻块的左上部分的左上方控制点运动向量。

在上述方法、装置和计算机可读介质的某些方面中,相邻块的仿射运动向量包括一个或多个缩放变量和一个或多个位置变量。

上述方法、装置和计算机可读介质的某些方面包括编码器。

在上述方法、装置和计算机可读介质的某些方面中,当前译码单元包括当前译码树单元(CTU)。

根据至少一个示例,处理视频数据的方法包括获得针对当前译码单元的当前块的视频数据。该方法包括确定当前块的相邻块位于当前译码单元之外。该方法进一步包括获得与相邻块的边界相关联的第一运动向量和第二运动向量。该方法进一步包括确定与附加相邻块相关联的第三运动向量是否可用。该方法进一步包括,基于来自附加相邻块的第三运动向量可用的确定,使用第一运动向量、第二运动向量和第三运动向量来确定用于当前块的仿射运动参数集。

在另一示例中,提供用于处理视频数据的装置。该装置包括存储器以及以电路实现的处理器。该装置被配置成并且可以获得针对当前译码单元的当前块的视频数据。该装置进一步被配置成并且可以确定当前块的相邻块位于当前译码单元之外。该装置进一步被配置成并且可以获得与相邻块的边界相关联的第一运动向量和第二运动向量。该装置进一步被配置成并且可以确定来自附加相邻块的第三运动向量是否可用。该装置进一步被配置成并且可以基于来自附加相邻块的第三运动向量可用的确定,使用第一运动向量、第二运动向量和第三运动向量来确定用于当前块的仿射运动参数集。

在另一示例中,提供其上存储有指令的非暂态计算机可读介质,指令在被一个或多个处理器执行时,使一个或多个处理器:获得针对当前译码单元的当前块的视频数据;确定当前块的相邻块位于当前译码单元之外;获得与相邻块的边界相关联的第一运动向量和第二运动向量;确定来自附加相邻块的第三运动向量是否可用;以及基于来自附加相邻块的第三运动向量可用的确定,使用第一运动向量、第二运动向量和第三运动向量来确定用于当前块的仿射运动参数集。

在另一示例中,提供用于处理视频数据的装置。该装置包括:用于获得针对当前译码单元的当前块的视频数据的部件;用于确定当前块的相邻块位于当前译码单元之外的部件;用于获得与相邻块的边界相关联的第一运动向量和第二运动向量的部件;用于确定来自附加相邻块的第三运动向量是否可用的部件;以及用于基于来自附加相邻块的第三运动向量可用的确定,使用第一运动向量、第二运动向量和第三运动向量来确定用于当前块的仿射运动参数集的部件。

在上述方法、装置和计算机可读介质的某些方面中,相邻块的边界是下边界并且相邻块位于与当前译码单元相关联的行的上方。

上述方法、装置和计算机可读介质的某些方面进一步包括从线缓冲器获得第一运动向量和第二运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括基于附加相邻块位于当前译码单元之外的确定,从线缓冲器获得第三运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括基于附加相邻块位于当前译码单元之内的确定,从当前译码单元的运动向量缓冲器获得第三运动。

在上述方法、装置和计算机可读介质的某些方面中,第一运动向量和第二运动向量关联于与当前块的左上方控制点运动向量相同的y坐标。

上述方法、装置和计算机可读介质的某些方面进一步包括从相邻块的左下角获得第一运动向量;从相邻块的右下角获得第二运动向量;以及从当前块的左下方相邻块或左方相邻块获得第三运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括从相邻块的左下角获得第一运动向量;从相邻块的中下方获得第二运动向量;以及从当前块的左下方相邻块或左方相邻块获得第三运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括从相邻块的中下方获得第一运动向量;从相邻块的右下角获得第二运动向量;以及从当前块的左下方相邻块或左方相邻块获得第三运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括基于来自附加相邻块的第三运动向量可用的确定,根据4参数仿射模型,使用第一运动向量和第二运动向量来确定用于当前块的仿射运动参数集。

在上述方法、装置和计算机可读介质的某些方面中,相邻块的边界是右边界并且相邻块位于当前译码单元的左方。

上述方法、装置和计算机可读介质的某些方面进一步包括从线缓冲器获得第一运动向量和第二运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括基于附加相邻块位于当前译码单元之内的确定,从当前译码单元的运动向量缓冲器获得第三运动。

在上述方法、装置和计算机可读介质的某些方面中,来自相邻块的第一运动向量和第二运动向量关联于与当前块的左上方控制点运动向量相同的x坐标。

上述方法、装置和计算机可读介质的某些方面进一步包括从相邻块的右上角获得第一运动向量;从相邻块的右下角获得第二运动向量;以及从当前块的上方相邻块或右上方相邻块获得第三运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括从相邻块的右上角获得第一运动向量;从相邻块的右边界的中部获得第二运动向量;以及从当前块的上方相邻块或右上方相邻块获得第三运动向量。

上述方法、装置和计算机可读介质的某些方面进一步包括从相邻块的右边界的中部获得第一运动向量;从相邻块的右下角获得第二运动向量;以及从当前块的左下方相邻块或左方相邻块获得第三运动向量。

上述方法、装置和计算机可读介质的某些方面包括解码器,其中视频数据从编码器提供的经编码视频比特流获得。

上述方法、装置和计算机可读介质的某些方面包括编码器。

本概述不旨在标识所要求保护的主题的关键或必要特征,也不旨在被单独用于确定所要求保护的主题的范围。通过参考本专利的整篇说明书的适当部分、任何或全部附图以及每个权利要求,本主题应该被理解。

通过参考以下说明书、权利要求以及所附附图,前述内容以及其他特征和实施例将变得更加显而易见。

附图说明

下面参考以下附图详细描述各种实现的示例:

图1是图示出根据一些示例的编码设备和解码设备的示例的框图;

图2是图示出根据一些示例的HEVC中的译码单元(CU)的示例的图;

图3是图示出根据一些示例的用于帧间预测的分割模式的示例的图;

图4A是图示出根据一些示例的用于导出针对合并帧间预测模式的空间相邻运动向量(MV)候选的方法的示例的图;

图4B是图示出根据一些示例的用于导出针对高级运动向量预测(AMVP)帧间预测模式的空间相邻MV候选的方法的示例的图;

图5是图示出根据一些示例的用于当前块的简化仿射运动模型的示例的图;

图6是图示出根据一些示例的块的子块的运动向量场的示例的图;

图7是图示出根据一些示例的仿射帧间(AF_INTER)模式中的运动向量预测的示例的图;

图8A和图8B是图示出根据一些示例的仿射合并(AF_MERGE)模式中的运动向量预测的示例的图;

图9是图示出根据一些示例的用于当前块的仿射运动模型的示例的图;

图10是图示出根据一些示例的用于当前块的仿射运动模型的另一示例的图;

图11是图示出根据一些示例的当前块和候选块的示例的图;

图12是图示出根据一些示例的当前块、当前块的控制点和候选块的示例的图;

图13是图示出根据一些示例的可被用于视频译码的线缓冲器的示例的图;

图14是图示出根据一些示例的当前译码树单元(CTU)的当前块的示例的图;

图15是图示出根据一些示例的CTU的当前块的另一示例的图;

图16是图示出根据一些示例的CTU的当前块的另一示例的图;

图17是图示出根据一些示例的CTU的当前块的另一示例的图;

图18是图示出根据一些示例的CTU的当前块的另一示例的图;

图19是图示出根据一些示例的CTU的当前块的另一示例的图;

图20是图示出根据一些示例的CTU的示例的图;

图21是图示出根据一些示例的用于确定针对CTU的当前块的一个或多个仿射运动参数集的过程的示例的流程图;

图22是图示出根据一些示例的确定是否将相邻块的仿射运动向量用作CTU的当前块的仿射运动向量的过程的示例的流程图;

图23是图示出根据一些示例的示例编码设备的框图;

图24是图示出根据一些示例的示例视频解码设备的框图。

具体实施方式

以下提供本公开的某些方面和实施例。如对本领域技术人员将显而易见的,这些方面和实施例的一些可被独立地应用,而其中一些可被组合地应用。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本申请的实施例的全面理解。然而,将显而易见的是,各种实施例可以在没有这些具体细节的情况下被实践。附图和描述不旨在是限制性的。

随后的描述仅提供示例性实施例,并且不旨在限制本公开的范围、适用性或配置。确切地说,对示例性实施例的随后描述将为本领域技术人员提供用于实现示例性实施例的使能描述。应该理解,在功能和元件布置方面可以进行各种改变,而不背离如所附权利要求阐述的本申请的精神和范围。

本文描述了涉及视频编解码器中的帧间预测的系统、装置、方法(也被称为过程)以及计算机可读介质。例如,如本文更详细地描述的,本文描述的技术涉及仿射运动预测。在一些示例中,本文描述的系统和技术涉及改善仿射运动预测中的成本和效率。根据各种视频译码标准(例如,VVC和HEVC),针对当前块的仿射运动向量预测子可以从相邻经译码块的仿射运动向量或普通运动向量导出。仿射运动向量预测子可以包括继承的仿射运动向量预测子和构造的仿射运动向量预测子。对于这两种类型的仿射运动向量预测子,运动信息可以从被存储在缓冲器中的先前经重构块的经重构运动信息获得。缓冲器可以包括诸如低等待时间线缓冲器之类的本地存储器,低等待时间线缓冲器是译码单元中提供的有限资源。本文描述了用于改进仿射运动向量预测中的线缓冲器的利用的系统和技术。

视频译码(coding)设备实现视频压缩技术,以高效地编码(encode)和解码(decode)视频数据。视频压缩技术可以包括应用不同的预测模式,包括空间预测(例如,帧内预测(intra-frameprediction或intra-prediction))、时间预测(例如,帧间预测(inter-frameprediction或inter-prediction))、层间预测(跨视频数据的不同层)和/或用于减少或移除视频序列中的固有冗余的其他预测技术。视频编码器可以将原始视频序列的每个图片分割成被称为视频块或译码单元的矩形区域(下文更详细地描述)。可以使用特定预测模式来对这些视频块进行编码。

可以用一种或多种方式来将视频块划分成一组或多组较小块。块可以包括译码树块、预测块、变换块和/或其他合适的块。除非以其他方式指定,对“块”的一般引用可以指代此类视频块(例如,译码树块、译码块、预测块、变换块或其他适当块或子块,如由普通技术人员将理解的那样。)此外,这些块的每一个在本文中还可以被互换地称为“单元”(例如,译码树单元(CTU)、译码单元、预测单元(PU)、变换单元(TU)等)。在一些情况下,单元可以指示被编码在比特流中的译码逻辑单元,而块可以指示过程所针对的视频帧缓冲器的部分。

对于帧间预测模式,视频编码器可以在位于另一时间位置的帧(或图片)(被称为参考帧或参考图片)中搜索与正被编码的块类似的块。视频编码器可以将搜索限制于距要被编码的块的特定空间位移。可使用包括水平位移分量和垂直位移分量的二维(2D)运动向量来定位最佳匹配。对于帧内预测模式,视频编码器可以使用基于来自相同图片内的先前经编码相邻块的数据的空间预测技术来形成预测的块。

视频编码器可以确定预测误差。例如,预测可以被确定为正被编码的块与预测的块中的像素值之间的差。预测误差还可以被称为残差。视频编码器还可以将变换(例如,离散余弦变换(DCT)或其他合适变换)应用于预测误差以生成变换系数。在变换之后,视频编码器可以量化变换系数。经量化变换系数和运动向量可以使用语法元素来进行表示,并且与控制信息一起,形成视频序列的经译码表示。在一些实例中,视频编码器可以对语法元素进行熵译码,由此进一步减少所需用于其表示的比特数。

视频解码器可以使用上面讨论的语法元素和控制信息来构造用于解码当前帧的预测数据(例如,预测性块)。例如,视频解码器可以将预测的块与经压缩预测误差相加。视频解码器可以通过使用经量化系数对变换基函数加权来确定经压缩预测误差。经重构帧与原始帧之间的差被称为重构误差。

本文描述的技术可以被应用于其中在逐块的基础上重构视频的各种基于块的视频译码技术中的一个或多个。例如,本文描述的技术可以被应用于现有视频编解码器(例如,高效视频译码(HEVC)、高级视频译码(AVC)或其他合适的现有视频编解码器)中的任一个,和/或可以作为用于任何正开发的视频译码标准和/或未来视频译码标准(诸如例如,多功能视频译码(VVC)、联合探索模型(JEM)、VP9、AV1和/或开发中或将被开发的其他视频译码标准)的高效译码工具。

图1是图示出包括编码设备104和解码设备112的系统100的示例的框图。编码设备104可以是源设备的部分,解码设备112可以是接收设备(也被称为客户端设备)的部分。源设备和/或接收设备可以包括电子设备,诸如包括一个或多个服务器设备的服务器系统(例如,视频流式传输服务器系统或其他合适的服务器系统)中的服务器设备、头戴式显示器(HMD)、抬头显示器(HUD)、智能眼镜(例如,虚拟现实(VR)眼镜、增强现实(AR)眼镜或其他智能眼镜)、移动或固定电话手持设备(例如,智能电话、蜂窝电话等)、台式计算机、膝上型或笔记本计算机、平板计算机、机顶盒、电视、相机、显示设备、数字媒体播放器、视频游戏控制器、互联网协议(IP)相机,或任何其他合适的电子设备。

系统100的组件可以包括电子电路或其他电子硬件和/或可以使用电子电路或其他电子硬件来实现,电子电路或其他电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)和/或其他合适的电子电路),和/或可以包括计算机软件、固件或其任何组合和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。

虽然系统100被示出为包括某些组件,普通技术人员之一将理解系统100可以包括与图1所示的那些相比更多或更少的组件。例如,在一些实例中,系统100可以包括除存储108和存储118之外的一个或多个存储器设备(例如,一个或多个随机存取存储器(RAM)组件、只读存储器(ROM)组件、高速缓存存储器组件、缓冲器组件、数据库组件和/或其他存储器设备),与一个或多个存储器设备通信和/或电连接的一个或多个处理设备(例如,一个或多个CPU、GPU和/或其他处理设备),用于执行无线通信的一个或多个无线接口(例如,包括用于每个无线接口的一个或多个收发器和基带处理器),用于执行一个或多个硬连线连接上的通信的有线接口(例如,诸如通用串行总线(USB)输入之类的串行接口、闪电连接器和/或其他有线接口),和/或图1中未示出的其他组件。

本文描述的译码技术适用于各种多媒体应用中的视频译码,包括流式传输视频传输(例如,在互联网上)、电视广播或传输、对用于存储在数据存储介质上的数字视频的编码、对存储在数据存储介质上的数字视频的解码,或其他应用。在一些示例中,系统100可以支持单向或双向视频传输,以支持诸如视频会议、视频流式传输、视频回放、视频广播、游戏和/或视频电话之类的应用。

编码设备104(或编码器)可以被用于使用视频译码标准或协议来对视频数据进行编码,以生成经编码视频比特流。视频译码标准的示例包括ITU-T H.261、ISO/IEC MPEG-1Visual、ITU-T H.262或ISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、ITU-T H.264(也被称为ISO/IEC MPEG-4 AVC),包括其可缩放视频译码(SVC)和多视图视频译码(MVC)扩展,以及高效视频译码(HEVC)或ITU-T H.265。存在处理多层视频译码的对HEVC的各种扩展,包括范围和屏幕内容译码扩展、3D视频译码(3D-HEVC)以及多视图扩展(MV-HEVC)和可缩放扩展(SHVC)。HEVC和其扩展已被ITU-T视频译码专家组(VCEG)和ISO/IEC运动图片专家组(MPEG)的视频译码联合协作团队(JCT-VC)以及3D视频译码扩展开发联合协作团队(JCT-3V)开发。

MPEG和ITU-T VCEG还形成联合探索视频团队(JVET)以探索和开发用于命名为多功能视频译码(VVC)的下一代视频译码标准的新视频译码工具。参考软件被称为VVC测试模型(VTM)。VVC的目标是提供对现有HEVC标准的压缩性能的显著改进,帮助部署高质量视频服务和新兴应用(例如,诸如360°全向沉浸式多媒体、高动态范围(HDR)视频等等)。VP9和AV1是可被使用的其他视频译码标准。

可以使用诸如VTM、VVC、HEVC、AVC和/或其扩展之类的视频译码器来执行本文描述的许多实施例。然而,本文描述的技术和系统还可以适用于其他译码标准,诸如MPEG、JPEG(或用于静止图像的其他译码标准)、VP9、AV1、这些译码标准的扩展,或者已可用或尚未可用或开发的其他合适的译码标准。相应地,虽然可以关于特定视频译码标准来描述本文描述的技术和系统,但本领域普通技术人员之一将理解该描述不应被解释为仅适用于该特定标准。

参考图1,视频源102可以将视频数据提供至编码设备104。视频源102可以是源设备的部分,或者是除源设备之外的设备的部分。视频源102可以包括视频捕捉设备(例如,视频相机、相机电话、视频电话等)、包含所存储视频的视频存档、提供视频数据的视频服务器或内容提供者、从视频服务器或内容提供者接收视频的视频馈送接口、用于生成计算机图形视频数据的计算机图形系统、此类源的组合或者任何其他合适的视频源。

来自视频源102的视频数据可以包括一个或多个输入图片。图片还可以被称为“帧”。在一些情况下,图片或帧是作为视频的一部分的静止图像。在一些示例中,来自视频源102的数据可以是不是视频的一部分的静止图像。在HEVC、VVC和其他视频译码规范中,视频序列可以包括一系列的图片。图片可以包括三个样本数组,被标示为S

编码设备104的编码器引擎106(或编码器)对视频数据进行编码,以生成经编码视频比特流。在一些示例中,经编码视频比特流(或者“视频比特流”或比特流”)是一个或多个经译码视频序列的系列。经译码视频序列(CVS)包括从具有在基层(base layer)中的且具有某些属性的随机接入点图片的接入单元(AU)开始直到具有在基层中的且具有某些属性的随机接入点图片的下一AU为止且不包括该下一AU的AU系列。例如,使CVS开始的随机接入点图片的某些属性可以包括RASL标志(例如,NoRaslOutputFlag(无Rasl输出标志))等于1。否则,随机接入点图片(具有等于0的RASL标志)不使CVS开始。接入单元(AU)包括一个或多个经译码图片以及与共享相同输出时间的经译码图片相对应的控制信息。图片的经译码条带(slice)在比特流层级中被封装至被称为网络抽象层(NAL)单元的数据单元中。例如,HEVC视频比特流可以包括包含NAL单元的一个或多个CVS。NAL单元中的每一个具有NAL单元头部。在一个示例中,对于H.264/AVC(除了多层扩展)头部是一字节而对于HEVC头部是两字节。NAL单元头部中的语法元素采用指定比特并且由此对诸如传输流、实时传输(RTP)协议、文件格式之类的所有种类的系统和传输层来说是可见的。

HEVC标准中存在两个类别的NAL单元,包括视频译码层(VCL)NAL单元和非VCLNAL单元。VCLNAL单元包括形成经译码视频比特流的经译码图片数据。例如,形成经译码视频比特流的比特序列存在于VCLNAL单元中。VCLNAL单元可以包括经译码图片数据的一个条带或条带片段(在下文描述),而非VCL NAL单元包括与一个或多个经译码图片有关的控制信息。在一些情况下,NAL单元可以被称为分组。HEVC AU包括包含经译码图片数据的VCLNAL以及与经译码图片数据相对应的非VCLNAL单元(如果有的话)。除其他信息之外,非VCLNAL单元可以包含具有与经编码视频比特流有关的高级信息的参数集。例如,参数集可以包括视频参数集(VPS)、序列参数集(SPS)和图片参数集(PPS)。在一些情况下,比特流的每个条带或其他部分可以涉及单个活跃的PPS、SPS和/或VPS,以允许解码设备112访问可被用于对比特流的条带或其他部分进行解码的信息。

NAL单元可以包含形成诸如视频中图片的经译码表示之类的视频数据的经译码表示的比特序列(例如,经编码视频比特流、比特流的CVS等)。编码器引擎106通过将每个图片分割成多个条带来生成图片的经译码表示。条带独立于其他条带,使得条带中的信息在不依赖于来自相同图片内的其他条带的数据的情况下被译码。条带包括一个或多个条带片段,一个或多个条带片段包括独立条带片段,以及(如果存在的话),依赖于先前条带片段的一个或多个依赖条带片段。

在HEVC中,条带随后被分割成亮度样本和色度样本的译码树块(CTB)。亮度样本的CTB和色度样本的一个或多个CTB,连同用于样本的语法一起,被称为译码树单元(CTU)。CTU还可以被称为“树块”或“最大译码单元”(LCU)。CTU是用于HEVC编码的基本处理单元。CTU可以被划分成各种尺寸的多个译码单元(CU)。CU包含被称为译码块(CB)的亮度和色度样本数组。

亮度和色度CB可以被进一步划分成预测块(PB)。PB是使用相同运动参数来进行帧间预测或块内复制预测(当可用或能够使用时)的亮度分量或色度分量的样本块。亮度PB和一个或多个色度PB与相关联的语法一起形成预测单元(PU)。对于帧间预测,运动参数集(例如,一个或多个运动向量、参考索引等)在用于每个PU的比特流中被信令通知并且被用于亮度PB和一个或多个色度PB的帧间预测。运动参数还可以被称为运动信息。CB还可以被分割成一个或多个变换块(TB)。TB表示在其上应用相同的二维变换以对预测残差信号进行译码的色彩分量的样本的方块。变换单元(TU)表示亮度和色度样本的TB,以及相对应的语法元素。

CU的尺寸对应于译码模式的尺寸,并且在形状上可以是方形。例如,CU的尺寸可以是8×8样本、16×16样本、32×32样本、64×64样本,或者最大为对应CTU的尺寸的任何其他适当的尺寸。短语“N×N”在本文中被用于指代视频块就垂直和水平维度而言的像素维度(例如,8像素×8像素)。块中的像素可以按行和列来布置。在一些实施例中,块在水平方向上可以不具有与垂直方向上相同的像素数量。与CU相关联的语法数据可以描述例如CU到一个或多个PU的分割。分割模式可以在CU是被帧内预测模式编码还是被帧间预测模式编码之间而不同。PU可以被分割成非方形的形状。与CU相关联的语法数据还可以描述例如根据CTU的CU到一个或多个TU的分割。TU在形状上可以是方形或非方形的形状。

根据HEVC标准,可以使用变换单元(TU)来执行变换。对于不同CU,TU可以不同。可以基于给定CU内的PU的尺寸来确定TU的尺寸。TU可以与PU具有相同尺寸或者比PU小。在一些示例中,可以使用被称为残差四叉树(RQT)的四叉树结构来将对应于CU的残差样本细分成更小的单元。RQT的叶节点可以对应于TU。与TU相关联的像素差值可以被变换以产生变换系数。变换系数随后可以被编码器引擎106量化。

一旦视频数据的图片被分割成CU,编码器引擎106便使用预测模式来预测每个PU。预测单元或预测块随后被从原始视频数据中减去以得到残差(在下文描述)。对于每个CU,可以使用语法数据在比特流内信令通知预测模式。预测模式可以包括帧内预测(或图片内预测)或帧间预测(或图片间预测)。帧内预测利用图片内的空间相邻样本之间相关性。例如,使用帧内预测,使用例如用于寻找针对PU的平均值的DC预测、用于将平面表面适配到PU的平面预测、用于从相邻数据推算的方向预测或者任何其他合适类型的预测,从相同图片中的相邻图像数据预测每个PU。帧间预测使用图片之间的时间相关性,以便导出用于图像样本的块的运动补偿预测。例如,使用帧间预测,根据一个或多个参考图片(在输出次序中的当前图片之前或之后)中的图像数据使用运动补偿预测来预测每个PU。是使用图片间预测还是图片内预测来对图片区域进行译码的决策可以例如在CU层级作出。

编码器引擎106和解码器引擎116(在下文更详细地描述)可以被配置成根据VVC操作。根据VVC,视频译码器(诸如编码器引擎106和/或解码器引擎116)将图片分割成多个译码树单元(CTU)(其中亮度样本的CTB和色度样本的一个或多个CTB连同用于样本的语法一起被称为CTU)。视频译码器可以根据诸如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构之类的树结构来分割CTU。QTBT结构移除了多种分割类型的概念,诸如对HEVC的CU、PU和TU之间的区分。QTBT结构包括两个层级,其包括根据四叉树分割来分割的第一层级,以及根据二叉树分割来分割的第二层级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于译码单元(CU)。

在MTT分割结构中,可以使用四叉树分割、二叉树分割以及一种或多种类型的三叉树分割来分割块。三叉树分割是其中将块分割成三个子块的分割。在一些示例中,三叉树分割将块划分成三个子块而非穿过中心来划分原始块。MTT中的分割类型(例如,四叉树、二叉树和三叉树)可以是对称的或非对称的。

在一些示例中,视频译码器可以使用单个QTBT或MTT结构来表示亮度和色度分量中的每一个,而在其他示例中,视频译码器可以使用两个或更多个QTBT或MTT结构,诸如一个QTBT或MTT结构用于亮度分量,而另一QTBT或MTT结构用于两个色度分量(或者两个QTBT和/或MTT结构用于相应的色度分量)。

视频译码器可以被配置成使用按照HEVC的四叉树分割、QTBT分割、MTT分割或其他分割结构。出于说明性目的,本文的描述可以涉及QTBT分割。然而,应理解,本公开的技术还可以被应用于被配置成使用四叉树分割或其它类型的分割的视频译码器。

在一些示例中,图片的一个或多个条带被指派条带类型。条带类型包括帧内译码条带(I条带)、帧间译码P条带以及帧间译码B条带。I条带(帧内译码的帧,可独立解码)是仅被帧内预测译码的图片的条带,并且因此是可独立解码的,因为I条带仅需要帧内的数据来预测条带的任何预测单元或预测块。P条带(单向预测的帧)是可以利用帧内预测以及利用单向帧间预测来译码的图片的条带。P条带内的每个预测单元或预测块是用帧内预测或者帧间预测来进行译码的。当帧间预测应用时,预测单元或预测块仅由一个参考图片来预测,并且因此参考样本仅来自一个帧的一个参考区域。B条带(双向预测的帧)是可以利用帧内预测以及利用帧间预测(例如,双向预测或单向预测)来译码的图片的条带。B条带的预测单元或预测块可以从两个参考图片来双向地预测,其中每个图片贡献一个参考区域,并且两个参考区域的样本集被加权(例如,利用相等权重或利用不同权重)以产生双向预测块的预测信号。如上文解释的那样,一个图片的条带被独立地译码。在一些情况下,图片可以作为仅一个条带而被译码。

如上所述,图片内预测利用图片内的空间相邻样本之间相关性。存在多个帧内预测模式(也被称为“帧内模式”)。在一些示例中,亮度块的帧内预测包括35个模式,包括平面模式、DC模式以及33个角模式(例如,对角线帧内预测模式和邻近于对角线帧内预测模式的角模式)。帧内预测的35个模式如下表1所示被索引。在其他示例中,更多的帧内模式可以被定义,包括可能尚未由33个角模式表示的预测角。在其他示例中,与角模式相关联的预测角可以与HEVC中所使用的那些不同。

表1-帧内预测模式和相关联命名的规范

图片间预测使用图片之间的时间相关性,以便导出用于图像样本块的运动补偿预测。使用平移运动模型,先前经解码图片(参考图片)中的块的位置由运动向量(Δx,Δy)来指示,其中Δx指定参考块相对于当前块的位置的水平位移,而Δy指定参考块相对于当前块的位置的垂直位移。在一些情况下,运动向量(Δx,Δy)可以处于整数样本精度(也被称为整数精度),在这种情况下,运动向量指向参考帧的整数像素网格(或整数像素采样网格)。在一些情况下,运动向量(Δx,Δy)可以具有分数样本精度(也被称为分数像素精度或非整数精度)以更精确地捕捉底层对象的移动,而不受限于参考帧的整数像素网格。运动向量的精度可以由运动向量的量化级别来表达。例如,量化级别可以是整数精度(例如,1像素)或分数像素精度(例如,1/4像素、1/2像素或其他子像素值)。插值被应用于参考图片以在对应运动向量具有分数样本精度时导出预测信号。例如,在整数位置可用的样本可以被滤波(例如,使用一个或多个插值滤波器)以估计分数位置处的值。先前经解码参考图片由针对参考图片列表的参考索引(refIdx)指示。运动向量和参考索引可以被称为运动参数。两种图片间预测可以被执行,包括单向预测和双向预测。

对于使用双向预测的帧间预测,两个运动参数集(Δx

对于使用单向预测的帧间预测,一个运动参数集(Δx

PU可以包括与预测过程有关的数据(例如,运动参数或其他合适的数据)。例如,当使用帧内预测对PU进行编码时,PU可以包括描述用于PU的帧内预测模式的数据。作为另一示例,当使用帧间预测对PU进行编码时,PU可以包括定义用于PU的运动向量的数据。定义用于PU的运动向量的数据可以描述例如运动向量的水平分量(Δx)、运动向量的垂直分量(Δy)、运动向量的分辨率(例如,整数精度、四分之一像素精度或八分之一像素精度)、运动向量所指向的参考图片、参考索引、用于运动向量的参考图片列表(例如,列表0、列表1或列表C),或其任何组合。

在使用帧内和/或帧间预测执行预测之后,编码设备104可以执行变换和量化。例如,在预测之后,编码器引擎106可以计算对应于PU的残差值。残差值可以包括正被译码的像素的当前块(PU)与用于预测当前块的预测块(例如,当前块的预测版本)之间的像素差值。例如,在生成预测块之后(例如,使用帧间预测或帧内预测),编码器引擎106可以通过从当前块中减去由预测单元产生的预测块来生成残差块。残差块包括将当前块的像素值与预测块的像素值之间的差进行量化的像素差值集合。在一些示例中,残差块可以用二维块格式(例如,像素值的二维矩阵或数组)来表示。在此类示例中,残差块是像素值的二维表示。

使用块变换对在执行预测之后可以保留的任何残差数据进行变换,这可以基于离散余弦变换、离散正弦变换、整数变换、小波变换、其他合适的变换函数或其任何组合。在一些情况下,一个或多个块变换(例如,尺寸为32×32、16×16、8×8、4×4或其他合适尺寸)可以被应用于每个CU中的残差数据。在一些实施例中,TU可以被用于由编码器引擎106实现的变换和量化过程。具有一个或多个PU的给定CU还可以包括一个或多个TU。如下文进一步详细描述的,可以使用块变换来将残差值变换成变换系数,并且随后可以使用TU对其进行量化和扫描以产生用于熵译码的串行化变换系数。

在一些实施例中,在使用CU的PU进行帧内预测或帧间预测译码之后,编码器引擎106可以计算用于CU的TU的残差数据。PU可以包括空间域(或像素域)中的像素数据。TU可以包括应用块变换之后的变换域中的系数。如先前所述,残差数据可以与未编码图片的像素与对应于PU的预测值之间的像素差值相对应。编码器引擎106可以形成包括用于CU的残差数据的TU,并且随后可以对TU进行变换以产生用于CU的变换系数。

编码器引擎106可以执行对变换系数的量化。量化通过对变换系数进行量化来提供进一步的压缩以减少用于表示系数的数据量。例如,量化可以减少与系数中的某些或全部相关联的比特深度。在一个示例中,具有n比特值的系数在量化期间可以被向下舍入(round)成m比特值,其中n大于m。

一旦量化被执行,经译码视频比特流便包括经量化变换系数、预测信息(例如,预测模式、运动向量、块向量等)、分割信息,以及任何其他合适数据,诸如其他语法数据。经译码视频比特流的不同元素随后可以被编码器引擎106熵编码。在一些示例中,编码器引擎106可以利用预定义扫描次序来扫描经量化变换系数以产生可以被熵编码的串行化向量。在一些示例中,编码器引擎106可以执行自适应扫描。在扫描经量化变换系数以形成向量(例如,一维向量)之后,编码器引擎106可以对该向量进行熵编码。例如,编码器引擎106可以使用上下文自适应可变长度译码、上下文自适应二进制算术译码、基于语法的上下文自适应二进制算术译码、概率区间分割熵译码或者另一合适的熵编码技术。

编码设备104的输出110可以通过通信链路120将组成经编码视频比特流数据的NAL单元发送至接收设备的解码设备112。解码设备112的输入114可以接收NAL单元。通信链路120可以包括由无线网络、有线网络或者有线和无线网络的组合提供的信道。无线网络可以包括任何无线接口或无线接口的组合,并且可以包括任何合适的无线网络(例如,互联网或其他广域网、基于分组的网络、WiFi

在一些示例中,编码设备104可以将经编码视频比特流数据存储在存储108中。输出110可以从编码器引擎106或者从存储108检索经编码视频比特流数据。存储108可以包括各种分布式的或本地访问的数据存储介质中的任一种。例如,存储108可以包括硬驱动器、存储盘、闪存、易失性或非易失性存储器、或者用于存储经编码视频数据的任何其它合适的数字存储介质。存储108还可以包括用于存储用于帧间预测的参考图片的经解码图片缓冲器(DPB)。在另一示例中,存储108可以对应于文件服务器或者可以存储由源设备生成的经编码视频的另一中间存储设备。在这种情况下,包括解码设备112的接收设备可以经由流式传输或下载从存储设备访问所存储的视频数据。文件服务器可以是能够存储经编码视频数据并将此经编码视频数据传输至接收设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、FTP服务器、网络附连存储(NAS)设备或者本地盘驱动器。接收设备可以通过包括互联网连接的任何标准数据连接来访问经编码视频数据。这可以包括适合用于访问存储在文件服务器上的经编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。对来自存储108的经编码视频数据的传输可以是流式传输、下载传输或其组合。

解码设备112的输入114接收经编码视频比特流数据并且可以将该视频比特流数据提供给解码器引擎116,或提供给存储118以供解码器引擎116稍后使用。例如,存储118可以包括用于存储用于帧间预测的参考图片的DPB。包括解码设备112的接收设备可以经由存储108接收要被解码的经编码视频数据。经编码视频数据可以根据诸如无线通信协议之类的通信标准而被调制,并且被传输至接收设备。用于传输经编码视频数据的通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成诸如以下各项的基于分组的网络的部分:局域网、广域网、或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站或者对促进从源设备到接收设备的通信可能有用的任何其它装备。

解码器引擎116可以通过熵解码(例如,使用熵解码器)以及提取组成经编码视频数据的一个或多个经译码视频序列的元素来对经编码视频比特流数据进行解码。解码器引擎116随后可以对经编码视频比特流数据进行重缩放(rescale)以及执行逆变换。残差数据随后被传递到解码器引擎116的预测阶段。解码器引擎116随后预测像素块(例如,PU)。在一些示例中,预测被加至逆变换的输出(残差数据)。

解码设备112可以将经解码视频输出至视频目的地设备122,视频目的地设备122可以包括显示器或用于将经解码视频数据显示给内容的消费者的其他输出设备。在一些方面,视频目的地设备122可以是包括解码设备112的接收设备的部分。在一些方面,视频目的地设备122可以是除接收设备之外的单独设备的部分。

在一些实施例中,视频编码设备104和/或视频解码设备112可以相应地与音频编码设备和音频解码设备集成在一起。视频编码设备104和/或视频解码设备112还可以包括实现上述译码技术所必要的其他硬件或软件,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。视频编码设备104和视频解码设备112可以被集成为相应设备中的组合编码器/解码器(编解码器)的部分。

图1所示的示例系统是本文可以使用的一个说明性示例。用于使用本文描述的技术来处理视频数据的技术可以由任何数字视频编码和/或解码设备执行。虽然一般而言,本公开的技术由视频编码设备或视频解码设备执行,但该技术还可以由典型地被称为“编解码器”的组合视频编码器-解码器执行。而且,本公开的技术还可以由视频预处理器执行。源设备和接收设备仅仅是此类译码设备的示例,其中源设备生成用于传输至接收设备的经译码视频数据。在一些示例中,源设备和接收设备可以以基本对称的方式操作,使得设备中的每一个包括视频编码及解码组件。因此,示例系统可以支持视频设备之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。

对HEVC标准的扩展包括被称为MV-HEVC的多视图视频译码扩展,以及被称为SHVC的可缩放视频译码扩展。MV-HEVC和SHVC扩展共享分层译码的概念,其中不同层被包括在经编码视频比特流中。经译码视频序列中的每个层由唯一层标识符(ID)来寻址。层ID可以存在于NAL单元的头部以标识与NAL单元相关联的层。在MV-HEVC中,不同层通常表示视频比特流中的相同场景的不同视图。在SHVC中,提供以不同空间分辨率(或者图片分辨率)或者以不同重构保真度表示视频比特流的不同可缩放层。可缩放层可以包括基层(其层ID=0)和一个或多个增强层(其层ID=1,2,...n)。基层可以符合HEVC的第一版本的配置文件,并且表示比特流中的最低可用层。与基层相比较,增强层具有增加的空间分辨率、时间分辨率或帧速率,和/或重构保真度(或质量)。增强层是分层组织的,并且可以(或者可以不)依赖于较低层。在一些示例中,可以使用单一标准编解码器来对不同层进行译码(例如,使用HEVC、SHVC或其他译码标准对所有层进行编码)。在一些示例中,使用多标准编解码器来对不同层进行译码。例如,可以使用AVC来对基层进行译码,而可以使用对HEVC标准的SHVC和/或MV-HEVC扩展来对一个或多个增强层进行译码。

如上所述,对于每个块,运动信息(本文中也被称为运动参数)集可以是可用的。运动信息集可以包含用于前向和后向预测方向的运动信息。此处,前向和后向预测方向是双向预测模式的两个预测方向,并且术语“前向”和“后向”不一定具有几何意义。确切地说,前向和后向可以对应于当前图片、条带或块的参考图片列表0(RefPicList0)和参考图片列表1(RefPicList1)。在一些示例中,当仅有一个参考图片列表对图片、条带或块可用时,仅RefPicList0可用并且条带的每个块的运动信息总是前向的。在一些示例中,RefPicList0包括在时间上位于当前图片之前的参考图片,而RefPicList1包括在时间上位于当前图片之后的参考图片。在一些情况下,运动向量连同相关联的参考索引一起可被用于解码过程。具有相关联的参考索引的此类运动向量被标示为运动信息的单向预测集。

对于每个预测方向,运动信息可以包含参考索引和运动向量。在一些情况下,为了简便,运动向量可以具有相关联的信息,以此可以假定运动向量具有相关联的参考索引。参考索引可以被用于标识当前参考图片列表(RefPicList0或RefPicList1)中的参考图片。运动向量可以具有提供从当前图片中的坐标位置到参考索引所标识的参考图片中的坐标的偏移的水平和垂直分量。例如,参考索引可以指示应该被用于当前图片中的块的特定参考图片,并且运动向量可以指示在参考图片中,最佳匹配块(最佳匹配当前块的块)位于参考图片中的何处。

图片次序计数(POC)可被用于视频译码标准以标识图片的显示次序。虽然存在一个经译码视频序列内的两个图片可以具有相同POC值的情况,但在一个经译码视频序列内并不经常出现两个图片具有相同POC值。当多个经译码视频序列存在于比特流中时,具有相同POC值的图片就解码次序而言可能彼此接近。图片的POC值可以被用于如HEVC中的参考图片列表构造、参考图片集的导出,和/或运动向量缩放等等。

在H.264/AVC中,每个帧间宏块(MB)可以被分割成四种不同方式,包括:一个16×16宏块分区;两个16×8宏块分区;两个8×16宏块分区;以及四个8×8宏块分区,等等。一个宏块中的不同宏块分区可以具有用于每个预测方向的不同参考索引值(例如,用于RefPicList0和RefPicList1的不同参考索引值)。

在一些情况下,当宏块不被分割成四个8×8宏块分区时,宏块在每个预测方向上对于每个宏块分区可以仅具有一个运动向量。在一些情况下,当宏块被分割成四个8×8宏块分区时,每个8×8宏块分区可以进一步被分割成子块,这些子块中的每一个在每个预测方向上可以具有不同的运动向量。8×8宏块分区可以按不同方式被划分成子块,包括:一个8×8子块;两个8×4子块;两个4×8子块;以及四个4×4子块,等等。每个子块在每个预测方向上可以具有不同运动向量。因此,运动向量可以存在于等于或者高于子块的层级中。

在HEVC中,条带中的最大译码单元被称为译码树块(CTB)。CTB包含四叉树,该四叉树的节点是译码单元。在HEVC主配置文件中,CTB的尺寸范围可以从16×16像素到64×64像素。在一些情况下,8×8像素的CTB尺寸可以被支持。

图2是图示出CTB 200的图,其可以用四叉树方式被递归地划分成译码单元(CU)。CU可以与CTB 200尺寸相同,以及小至8×8像素。在一些情况下,以帧内预测模式或帧间预测模式来对每个CU进行译码。当使用帧间预测模式对CU进行帧间译码时,CU可以被进一步分割为两个或四个预测单元(PU),或者当不应用进一步分割时,可以被当作一个PU。当一个CU中存在两个PU时,这两个PU可以是各占一半尺寸的矩形,或者是尺寸为CU的1/4或3/4的两个矩形。

图3是图示出使用包括PU0、PU1、PU2和PU3的最多四个PU的用于以帧间预测模式译码的CU的八个分割模式的图。如所示,分割模式包括PART_2Nx2N、PART_2NxN、PART_Nx2N、PART_NxN、PART_2NxnU、PART_2NxnD、PART_nLx2N和PART_nRx2N。CU可以根据不同分割模式而被分割成PU。相应地,可以使用分割模式中的一个或多个来预测CU。

当CU被帧间译码时,针对每个PU可以存在一个运动信息集。此外,每个PU可以用一个帧间预测模式来译码以导出运动信息集。在一些情况下,当CU使用帧内预测模式而被帧内译码时,PU形状可以是2N×2N和N×N。在每个PU内,单个帧内预测模式被译码(而色度预测模式在CU层级被信令通知)。在一些情况下,在当前CU尺寸等于SPS中定义的最小CU尺寸时,N×N的帧内PU形状是被允许的。

对于HEVC中的运动预测,可以存在用于CU或PU的两种帧间预测模式,包括合并模式以及高级运动向量预测(AMVP)模式。跳过模式被视为合并模式的特殊情况。在AMVP或合并模式中,可以保持用于多个运动向量(MV)预测子的运动向量(MV)候选列表。当前PU的(一个或多个)运动向量以及在合并模式中的参考索引可以通过从MV候选列表获得一个候选来生成。

在一些示例中,MV候选列表对于合并模式可以包含最多五个MV候选而对于AMVP模式可以包含两个候选。在其他示例中,对于合并模式和/或AMVP模式,不同数量的候选可以被包括在MV候选列表中。合并候选可以包含运动信息集(例如,与一个或两个参考图片列表(列表0和列表1)相对应的运动向量)以及参考索引。如果合并候选被合并索引标识,则参考图片可以被用于对当前块的预测。参考图片还可以被用于确定相关联的运动向量。AVMP候选仅包含运动向量,因此,在AVMP模式中,对于来自列表0或列表1的每个潜在预测方向,参考索引可能需要连同MVP索引一起,被明确地信令通知到MV候选列表。在AMVP模式中,可以进一步细化所预测的运动向量。

如上可见,合并候选对应于运动信息的全集,而AMVP候选仅包含用于特定预测方向的一个运动向量和参考索引。用于合并和AMVP模式两者的候选可以从相同的空间和/或时间相邻块类似地导出。

图4A和图4B是图示出空间相邻MV候选的示例导出的图。用于特定PU(PU0402)的空间MV候选可以从相邻块导出,包括相对于位于PU0402右方的相邻PU1 404来导出。

图4A中的图图示出用于合并模式的空间MV候选的导出。在合并模式中,可以按例如以下次序导出至多五个空间MV候选(而在一些情况下至多四个):左方候选410(块0)、上方候选412(块1)、右上方候选414(块2)、左下方候选416(块3)以及左上方候选418(块4)。空间MV候选相对于PU0 402的位置在图4A中被图示出。具体而言,左方候选410位于PU0 402的左下角的邻近处且在其左方;上方候选412位于PU0 402的右上角的邻近处且在其上方;右上方候选414位于相邻PU1 404的左上角的邻近处且在其上方;左下方候选416位于左方候选410的下方;以及左上方候选418位于PU0 402的左上角的上方且在其左方。

图4B中的图图示出用于AMVP模式的空间相邻MV候选的导出。在AVMP模式中,相邻块被划分成例如两个组。第一组(可被称为左方组)可以包括位于PU0 402的下方和左方的第一块420(块0),以及位于PU0 402的左下角的左方和邻近处的第二块422(块1)。第二组(可被称为上方组)可以包括位于相邻PU1 404的左上角的上方和邻近处的第三块424(块2),位于PU0 402的右上角的上方和邻近处的第四块426(块3),以及位于PU0 402的左上角的上方和左方的第五块428(块4)。对于每个组,涉及与信令通知的参考索引所指示的参考图片相同的参考图片的相邻块中的潜在候选MV在各块之间可以具有要被选取以形成该组的最终候选的最高优先级。在一些情况下,所有相邻块都不包含指向相同参考图片的运动向量是可能的。因此,如果不能找到此类候选,则可缩放第一可用候选以形成最终候选,从而可以补偿时间距离差。

在一些情况下,AMVP模式可以包括其他方面,诸如运动向量缩放、人工运动向量候选生成以及用于候选插入的修剪过程。

已经提出了四叉树二叉树(QTBT),以用于HEVC之后的未来视频译码标准。仿真表明所提出的QTBT结构可以比HEVC中使用的四叉树结构更加高效。在所提出的QTBT结构中,首先使用四叉树结构来分割CTB,其中对一个节点的四叉树划分可以被迭代直到节点达到最小允许四叉树叶节点尺寸(MinQTSize)。如果四叉树叶节点尺寸不大于最大允许二叉树根节点尺寸(MaxBTSize),则其可以通过二叉树来被进一步分割。对一个节点的二叉树划分可以被迭代,直到节点达到最小允许二叉树叶节点尺寸(MinBTSize)或最大允许二叉树深度(MaxBTDepth)。二叉树叶节点即CU,其可以被用于预测(例如,帧内预测或帧间预测)和变换,而无需任何进一步分割。在一些情况下,在二叉树划分中存在两种划分类型——对称水平划分和对称垂直划分。

在QTBT分割结构的一个说明性示例中,CTU尺寸可以被设置为128×128(亮度样本和两个对应的64×64色度样本),MinQTSize可以被设置为16×16,MaxBTSize可以被设置为64×64,MinBTSize(针对宽度和高度两者)可以被设置为4,以及MaxBTDepth可以被设置为4。四叉树分割首先被应用于CTU以生成四叉树叶节点。在一些示例中,四叉树叶节点可以具有从16×16(在这种情况下为MinQTSize)到128×128(在这种情况下为CTU尺寸)的尺寸。如果叶四叉树节点为128×128,则其将不被二叉树进一步划分,因为尺寸超过MaxBTSize(在这种情况下为64×64)。否则,叶四叉树节点将进一步被二叉树分割。在此示例中,四叉树叶节点也是用于二叉树的根节点,并且具有为0的二叉树深度。当二叉树深度达到MaxBTDepth(在此示例中为4)时,意味着不再进行进一步划分。当二叉树节点具有等于MinBTSize(在本示例中为4)的宽度时,意味着不再进行进一步的水平划分。类似地,当二叉树节点具有等于MinBTSize(在本示例中为4)的高度时,意味着不再进行进一步的垂直划分。二叉树的叶节点即CU,并且可以通过预测和变换被进一步处理,而无需任何进一步的分割。

在HEVC和早先的视频译码标准中,仅平移运动模型被应用于运动补偿预测(MCP)。例如,可以针对图片的每个块(例如,每个CU或每个PU)确定平移运动向量。然而,在真实世界中,存在除平移运动之外的更多种类的运动,包括缩放(例如,缩小和/或放大)、旋转、透视运动以及其他不规则运动。在由ITU-T VCEG和MPEG制定的联合探索模型(JEM)中,简化的仿射变换运动补偿预测可以被应用以改进译码效率。

图5是图示出由两个控制点510和512的两个运动向量

在方程(1)中,v

上文的方程(1)图示出4参数运动模型,其中四个仿射参数a、b、c和d被定义为:

图6是图示出被划分为子块的当前块602的基于块的仿射变换预测的图。图6中示出的示例包括4×4分区,总共十六个子块。可以使用任何合适的分区和对应数量的子块。随后可以使用方程(1)针对每个子块导出运动向量。例如,为了导出每个4×4子块的运动向量,根据方程(1)来计算每个子块的中心样本的运动向量(如图6所示)。所得运动向量可以被例如舍入到1/16分数精度或者其他合适精度(例如,1/4、1/8等)。随后可以使用子块的所导出运动向量来应用运动补偿以生成每个子块的预测。例如,解码设备可以接收描述控制点610的运动向量

图7图示出仿射帧间(AF_INTER)模式中的运动向量预测的示例的图。在JEM中,存在两种仿射运动模式:仿射帧间(AF_INTER)模式和仿射合并(AF_MERGE)模式。在一些示例中,当CU具有大于8像素的宽度和高度时,AF_INTER模式可以被应用。仿射标志可以被置于(被信令通知于)与块相关的比特流中(例如,在CU层级),以指示AF_INTER模式是否被应用于该块。如图7的示例中所图示的,在AF_INTER模式中,可以使用相邻块来构造运动向量对的候选列表。例如,对于位于当前块702的左上角的子块710,可以从在子块710的上方和左方的相邻块A720、在子块710上方的相邻块B 722,以及在子块710左方是相邻块C 724选择运动向量v

如上所述以及如图7所示,在AF_INTER中,可以从块A 720、B 722或C 724的运动向量选择运动向量v

在一些情况下,如果候选列表的数量小于二,可以通过复制AMVP候选中的每一个来用运动向量对填充候选列表。当候选列表大于二时,在一些示例中,可以首先根据相邻运动向量的一致性(例如,一致性可以基于运动向量对候选中的两个运动向量之间的相似度)来对候选列表中的候选进行排序。在此类示例中,前两个候选被保留,而其余候选可以被丢弃。

在一些示例中,速率失真(RD)成本检查可以被用于确定选择哪个运动向量对候选来作为当前CU(例如,当前块702)的控制点运动向量预测(CPMVP)。在一些情况下,指示候选列表中的CPMVP的位置的索引可以在比特流中被信令通知(或以其他方式被指示)。一旦当前仿射CU的CPMVP被确定(基于运动向量对候选),则仿射运动估计可以被应用,并且控制点运动向量(CPMV)可以被确定。在一些情况下,CPMV和CPMVP的差可以在比特流中被信令通知。CPMV和CPMVP两者包括两个平移运动向量集,在这种情况下仿射运动信息的信令通知成本高于平移运动的信令通知成本。

图8A和图8B图示出AF_MERGE模式中的运动向量预测的示例。当使用AF_MERGE模式对当前块802(例如,CU)进行译码时,可以从有效相邻重构块获得运动向量。例如,来自以仿射模式译码的有效相邻重构块的第一块可以被选择为候选块。如图8所示,可以从相邻块A820、B 822、C 824、D 826和E 828的集合之中选择相邻块。可以按特定选择次序来考虑这些相邻块,以将其选择为候选块。选择次序的一个示例是左方近邻(块A 820),其后是上方近邻(块B 822),随后是右上方近邻(块C 824),随后是左下方近邻(块D 826),以及随后是左上方近邻(块E 828)。

如上所述,被选择的相邻块可以是已经用仿射模式译码的(例如,选择次序中的)第一块。例如,块A 820可以已被用仿射模式译码。如图8B所图示的,块A 820可以被包括在相邻CU 804中。对于相邻CU 804,用于相邻CU 804的左上角的运动向量(v

一旦当前块1002的控制点运动向量(CPMV)v

在许多情况下,仿射运动估计的过程包括通过最小化原始块与仿射运动预测块之间的失真来在编码器侧确定用于块的仿射运动。因为仿射运动比平移运动具有更多的参数,所以仿射运动估计可以比平移运动估计更加复杂。在一些情况下,基于泰勒(Taylor)展开的快速仿射运动估计方法可以被执行以确定仿射运动参数(例如,4参数模型中的仿射运动参数a、b、c、d)。

快速仿射运动估计可以包括基于梯度的仿射运动搜索。例如,在时间t(其中t0是参考图片的时间)处的给定像素值I

其中,

方程(2)可以被改写为如下的方程(3):

I

用于像素值I

V

V

其中,x和y指示像素或子块的位置。将方程(4)和(5)代入方程(3),并且随后使用方程(3)最小化原始信号与预测之间的失真,仿射参数a、b、c、d的解可以被确定:

一旦定义用于控制点的仿射运动向量的仿射运动参数被确定,则可以使用仿射运动参数来确定每像素或每子块运动向量(例如,使用方程(4)和(5),其也在方程(1)中被表示)。可以针对当前块(例如,CU)的每个像素执行方程(3)。例如,如果当前块是16像素×16像素,则方程(6)中的最小二乘解可以被用于通过最小化256个像素上的总体值来导出用于当前块的仿射运动参数(a、b、c、d)。

可以在用于视频数据的仿射运动模型中使用任何数量的参数。例如,可以用与上文针对4参数仿射运动模型描述的方法相同的方法来解出6参数仿射运动或其他仿射运动。例如,6参数仿射运动模型可以被描述为:

在方程(7)中,(v

图9是图示出由三个控制点910、912和914处的三个运动向量描述的当前块902的仿射运动场的图。运动向量

方程(8)表示6参数仿射运动模型,其中w和h是当前块902的宽度和高度。

当相对于上文的方程(1)描述4参数运动模型时,使用当前块的宽度和高度的简化4参数仿射模型可以通过以下方程来描述:

可以通过块的四个角中的两个处的两个运动向量

如前所述,运动向量

图10是图示出用于当前块1002的仿射运动模型的控制点向量的选择的图。针对当前块1002图示出四个控制点1010、1012、1014和1016。运动向量

在一个示例中,对于4参数仿射运动模型(根据方程(1)或方程(10)),可以从四个运动向量

在一些示例中,可以使用替代仿射运动模型表示。例如,基于增量MV的仿射运动模型可以通过坐标(x

在一些示例中,基于CPMV的仿射运动模型表示可以被转换成利用增量MV的替代仿射运动模型。例如,增量MV仿射运动模型表示中的

在一些示例中,可以使用仿射运动预测子来执行仿射运动向量预测。在一些示例中,用于当前块的仿射运动预测子可以从相邻经译码块的仿射运动向量或普通运动向量导出。如上所述,仿射运动预测子可以包括所继承仿射运动向量预测子(例如,使用仿射合并(AF_MERGE)模式继承的)和所构造仿射运动向量预测子(例如,使用仿射帧间(AF_INTER)模式构造的)。

所继承仿射运动向量预测子(MVP)使用相邻经译码块的一个或多个仿射运动向量来导出当前块的所预测CPMV。所继承仿射MVP基于当前块与相邻经译码块共享相同的仿射运动模型的假设。相邻经译码块被称为相邻块或候选块。可以从不同的空间或时间相邻位置选择相邻块。

图11是图示出当前块1102的从相邻块1104(块A)继承的仿射MVP的图。相邻块1104的仿射运动向量如下根据控制点1120、1122和1124处的相应运动向量

在方程(11)至(13)中,(x0’,y0’)、(x1’,y1’)和(x2’,y2’)是当前块1102的控制点的坐标。如果表示为增量MV,

类似地,如果相邻经译码块(例如,相邻块1104)的仿射运动模型是4参数仿射运动模型,则方程(10)可以被用于导出用于当前块1102的控制点处的仿射运动向量。在一些示例中,使用方程(10)来获得4参数仿射运动模型可以包括避免上文的方程(13)。

图12是图示出针对在用于当前块1202的所继承仿射MVP模型中使用的相邻候选块的可能位置的图。例如,可以从相邻块1230(块A0)、1226(块B0)、1228(块B1)、1232(块A1)和/或1220(块B2)中的一个导出在当前块的控制点1210、1212和1214处的仿射运动向量

在一些示例中,根据上文讨论的各种技术,诸如缓冲器之类的存储器结构可以被用于对块的仿射运动预测。例如,由于运动信息预测子是从先前经重构块(也被称为先前经译码块)的经重构运动信息导出的,来自先前经译码块的运动参数可以被存储在缓冲器中。在仿射运动预测的情况下,来自相邻块的运动信息可以被存储在诸如线缓冲器或本地缓冲器之类的缓冲器中。如将在以下部分进一步详细描述的,线缓冲器可以被用于存储位于诸如译码树单元(CTU)之类的译码单元的边界处的先前经译码块线的运动信息。存储在线缓冲器中的信息可以根据一些示例中的不同帧间预测技术而被用于另一CTU的一个或多个块的仿射运动预测。相比之下,本地缓冲器对于CTU来说是本地的,并且可以被用于存储位于CTU中任何地方的先前经译码块的运动信息。存储在本地缓冲器中的信息可以根据一些示例中的不同帧间预测技术而被用于相同CTU的一个或多个块的仿射运动预测。

在示例解码器设计(例如,用于解码设备112)中,一般被称为工作缓冲器的缓冲器可被提供用于存储经重构数据。例如,经重构数据可以包括像素值、译码信息(例如,跳过模式、预测模式、合并模式和/或其他译码信息)以及经重构运动信息(例如,参考图片索引、运动向量和/或其他信息)。可以针对工作缓冲器中的预定义工作块尺寸来存储经重构数据。在一些示例中,工作块尺寸可以包括译码单元或译码树单元(CTU)或最大译码单元(LCU)。工作缓冲器可以使用具有极低的访问等待时间的本地存储器。例如,本地存储器可以包括高速缓存、片上存储器和/或其他低访问等待时间存储器。

在一些示例中,工作块尺寸可以被假定为等于CTU尺寸。对于CTU内的每个块,如果预测译码信息是从相同CTU内的相邻块导出的,则取出存储在工作缓冲器中的数据可能足以用于预测。然而,当预测译码信息是从当前块所属于的当前CTU之外的相邻块导出的,则可能需要从当前CTU的工作缓冲器之外的缓冲器(或其他存储器)取出预测信息。从当前块CTU之外的存储器取出数据可能导致长等待时间和延迟。在一些实现中,为了解决此问题,线缓冲器可以被用于在相邻候选块可能位于当前CTU之外的情况下避免或减少长的访问等待时间。

在一些实现中,线缓冲器可以被设计成提供低访问等待时间。线缓冲器可以被用于存储当前工作块(例如,当前CTU)之外的块的预测译码信息。例如,线缓冲器可以被用于存储当前CTU之外的一个或多个相邻块的运动参数,其中运动参数可以被用于当前CTU的当前块的仿射运动预测。在一些示例中,存储在线缓冲器中的信息可以包括用于针对CTU中的块的空间预测的信息。

在一些示例中,可以用光栅扫描次序(例如,在高分辨率视频或其他视频的情况下)来对CTU进行编码和/或解码。在一些示例中,经重构样本和其他译码信息可以被写入诸如线缓冲器之类的非本地存储器。在对CTU进行解码之时,线缓冲器的存储容量可以被释放,以用于对后续CTU的编码和/或解码。例如,可以使用诸如双倍数据率(DDR)静态随机存取存储器(SRAM),或可以提供线缓冲器的低等待时间期望的其他存储器之类的技术来实现线缓冲器。

在以光栅扫描次序对CTU的行进行编码和/解码的示例中,来自另一行的信息可能需要被重新加载到本地缓冲器中。例如,在开始编码和/或解码CTU的当前行时,来自CTU的先前行的底部行的经重构样本和其他译码信息需要被重新加载到本地缓冲器中,使得一旦计算单元需要它们来用于当前行的编码和/或解码,来自先前行的所需数据可以是可用的。

图13是图示出线缓冲器的示例实现的图。在示例HEVC实现中,可以使用诸如CTU1302之类的一个或多个CTU来对当前图片1300进行编码和/或解码。CTU 1302可以被称为当前CTU。当前CTU 1302的一个或多个相邻CTU 1320和1340也被示出。线缓冲器1304的概念性图示在图13中被提供,其中线缓冲器1304可以包括可以存储当前图片1300的一个或多个CTU的一个或多个译码块的运动信息的存储器结构。在一些示例中,存储在线缓冲器1304中的运动信息中的一些可以被用于CTU 1302的块的空间运动向量(MV)预测。

在说明性示例中,线缓冲器1304可以存储各自尺寸为4×4的一个或多个译码块的运动信息。若干4×4块的集合在图13中被标识出,包括可以属于未被具体图示出的一个或多个CTU的译码块集1306,以及属于CTU 1320的译码块集1322和属于CTU 1340的译码块集1342。在一些示例中,存在与当前图片1300相关联的若干行的CTU,其中每行有N个CTU。在此类示例中,用于一行中的N个CTU的每一个的译码块线可以被存储在线缓冲器1304中,其中线缓冲器1304的尺寸大到足以容纳来自N个CTU的每一个的译码块线。在一些示例中,译码块1306和1322可以对应于其所属的相关联CTU的底部边界处的译码块。在一些示例中,诸如CTU的右边界之类的另一边界的译码块也可以被存储在线缓冲器1304中。例如,CTU 1340的右边界中的译码块1342也可以被存储在线缓冲器1304中,可以扩大线缓冲器1304的尺寸以便也容纳此类译码块1342。线缓冲器1304的长度“1”在图13中被指示,其可以对应于一行中的全部CTU的每一个的底部边界中的译码块的数量加上诸如CTU 1342之类的CTU的右边界中的译码块的数量。在一些实现中,可以基于长度1以及译码块的尺寸来分配线缓冲器1304的存储空间。如上所述,由于此存储空间可能有限,所以期望改进对线缓冲器1304的存储空间的利用。

在一些示例中,CTU 1320可以属于先前行,而CTU 1302属于当前行。如前所述,CTU1320(也被称为相对于当前CTU 1302的上方CTU)的底部边界的一个或多个译码块1322可以被存储在线缓冲器1304中。一个或多个译码块1322可以被用于CTU 1302的一个或多个仿射运动向量的帧间预测。在一些示例中,CTU 1340(也被称为相对于当前CTU 1302的左方CTU)的右边界的一个或多个译码块1342也可以被存储在线缓冲器1304中。一个或多个译码块1342也可以被用于CTU 1302的一个或多个仿射运动向量的帧间预测。

在所继承仿射运动向量预测子的情况下,一个或多个附加缓冲器(或者替代地,超过线缓冲器1304的附加存储)可以被用于存储可被用于CTU 1302的译码块的仿射运动预测的控制点MV(CPMV)。与其中仅一个MV被用于所继承运动向量预测的普通平移运动模型相比较,所继承仿射运动模型可以利用三个CPMV(或者在一些情况下的两个或四个CPMV)来进行仿射运动预测,如上所述。对于6参数仿射运动模型中的示例,诸如相邻块的三个控制点的CPMV之类的运动信息可以被存储,以在对当前块的所继承仿射运动向量预测中被使用。如果相邻块位于当前块所属的当前CTU之外,则CPMV可以被存储在线缓冲器中。存储三个CPMV(或者一些情况下的更多或更少的CPMV)可以由上文讨论的线缓冲器1304的尺寸显著增加线缓冲器的尺寸。此外,如从方程(11)到(12)所见,对于当前块的所继承仿射MVP,相邻块的位置、宽度和高度也是所需要的。因此,对于仿射运动预测子,位于当前CTU之外的相邻块的位置、宽度和高度也需要被存储在线缓冲器中,这会进一步增加所需用于所继承仿射运动向量预测的线缓冲器的尺寸。

在一些示例中,用于所继承仿射运动向量预测的运动信息可以包括运动向量以及指示哪个参考图片被用于预测的参考图片索引。在双向预测被允许的情况下,对于每个预测方向,运动向量和参考图片索引都是所需要的。此外,帧间预测方向被用于指示预测方向(例如,其是前向预测、后向预测还是双向预测)。如本文所使用的,术语“运动向量”(MV)可互换地被用于表示单个MV或者所需用于帧间预测译码块的全部运动信息。

在高级运动向量预测(AMVP)模式的情况下,MV由运动向量预测子(MVP)和运动向量差(MVD)表示。MVP索引也被用于指示所选择的MVP。MVP可以从相邻经译码块导出,并且被称为AMVP候选。在6参数仿射经译码块的情况下,MVP和MVD两者包括3个MV。在4参数仿射经译码块的情况下,MVP和MVD两者包括2个MV。

在合并模式中,运动信息仅由MVP的索引表示。合并模式中的MVP被称为合并候选。索引被称为合并索引并且被用于指示所选择的合并候选。

如上所述,本文描述了用于仿射运动预测的技术。在一些示例中,本文描述了与具有对线缓冲器的改进利用的所继承仿射MVP有关的系统、装置、方法和计算机可读介质。例如,可以对来自6参数仿射经译码相邻块的所继承仿射MVP进行某些限制和/或修改,使得可以不利用附加线缓冲器或者利用较少的附加线缓冲器。

以下术语被用于描述所继承仿射MVP的说明性示例。在一些示例中,CTU的术语“坐标”可以指CTU内的不同点(例如,对应于诸如Y、Cb、Cr之类的色彩分量的样本,或者像素)。例如,CTU内的点可以包括左上方点、中心点,或者CTU的其他点。如本文所描述的,坐标(neiCtuX,neiCtuY)指的是相邻候选块位于其中的CTU的坐标。坐标(curCtuX,curCtuY)指的是针对所继承仿射MVP的当前块位于其中的当前CTU的坐标。位置(x0’,y0’)指的是当前块的左上方控制点运动向量(CPMV)的位置,(x1’,y1’)指的是当前块的右上方CPMV的位置,而(x2’,y2’)指的是当前块的左下方CPMV的位置。在当前块的示例中,x0’等于x2’,而y0’等于y1’。

在一些实现中,所继承仿射运动向量预测子(MVP)可以从相邻CTU获得,其可以是上方CTU或其他相邻CTU(例如,左方相邻CTU、左上方相邻CTU或者其他相邻CTU)。在一些示例中,相邻候选块可以位于当前CTU的行的上方的行中(例如,neiCtuY>curCtuY&&neiCtuX>=curCtuX)。如上所述,获得并存储来自相邻候选块的三个(或更多)CPMV来用于当前块的所继承仿射MVP可以增加线缓冲器的尺寸。以下技术可以被实现以阻止线缓冲器的尺寸上的这种增加。

图14是图示出在仿射运动预测中改进后的线缓冲器利用的示例方面的图。在图14中,当前CTU 1400被示为包括当前块1402。可以使用仿射运动向量或控制点1410、1412和1414处的CPMV来执行当前块1402的仿射运动预测。在图14中所示的示例中,当前块1402的相邻块1420位于当前CTU 1400的外部,在当前CTU 1400上方的上方相邻CTU中。例如,相邻块1420可以是上方相邻CTU的底部边界中的块线中的一个块,类似于图13中的上方CTU1320中所示的块1322。在一些示例中,当前块1402的相邻块也可以位于CTU 1400之外,诸如当前CTU 1400左方的左方相邻CTU中的相邻块,或者相对于当前CTU 1400的另一相邻CTU中的相邻块。例如,当前块1402的相邻块可以是左方相邻CTU的右边界上的块线中的一个块,类似于图13中的左方CTU中所示的块1342。使用上文描述的仿射运动向量预测子继承技术,相邻块1420的控制点1422、1424和1426处的运动向量

在使用本文描述的技术的一些示例中,用于当前块1402的仿射运动预测可以通过从相邻块1420继承少于全部三个运动向量

更详细地,在一些示例中,相邻块1420的底部边界处的两个MV,第一运动向量

在一些示例中,可以从附加相邻块获得第三运动向量

在一些示例中,附加相邻块也可以位于当前CTU 1400之外。例如,左方相邻块1432和左下方相邻块1434在图14中被示为位于当前CTU 1400之外。在此类情况下,来自附加相邻块的

在一些示例中,附加相邻块可以位于当前CTU 1400之内。例如,附加相邻块可以包括位于当前块的左方或左下方并且位于当前CTU内的相邻经译码块(未具体示出)。在此类情况下,来自附加相邻块的

在一些示例中,如图14所图示的,从相邻块1420继承的两个MV以及从相邻块1432或1434获得的附加MV可以被用于确定当前块1402的仿射运动参数或CPMV。例如,第一运动向量、第二运动向量和第三运动向量

在一些示例中,来自相邻块1420的两个

在一些示例中,来自相邻块1420的两个

在一些示例中,来自相邻块1420的两个

虽然上述讨论涉及从附加相邻块(例如,块1432或块1434)获得第三运动向量

图15是图示出在仿射运动预测中改进后的线缓冲器利用的另一示例方面的图。图15在很多方面与图14类似,以下解释将会重点突出图15的与众不同的特征。在图15中,当前CTU 1500被示为包括当前块1502。可以使用仿射运动向量或控制点1510、1512和1514处的CPMV来执行当前块1502的仿射运动预测。当前块1502的相邻块1520可以位于当前CTU 1500之外,例如,在当前CTU 1500的上方的相邻CTU中。

在一些示例中,相邻块1520的底部边界处的两个MV,第一运动向量

图16是图示出在仿射运动预测中改进后的线缓冲器利用的另一示例方面的图。图16在很多方面与图14和图15类似,并且以下解释将会重点突出图16的与众不同的特征。在图16中,当前CTU 1600被示为包括当前块1602。可以使用仿射运动向量或控制点1610、1612和1614处的CPMV来执行当前块1602的仿射运动预测。当前块1602的相邻块1620可以位于当前CTU 1600之外,例如,在当前CTU 1600的上方的相邻CTU中。

在一些示例中,相邻块1620的底部边界处的两个MV,第一运动向量

在一些实现中,可以从可以是左方CTU的相邻CTU获得所继承仿射MVP。在一些示例中,相邻候选块可以位于当前CTU的列的左方(例如,neiCtuX<curCtuX&&neiCtuY==curCtuY)。如前所述,获得并存储来自相邻候选块的三个CPMV来用于当前块的所继承仿射MVP可以增加线缓冲器的尺寸。除了上述技术,以下技术在此类情况下也可以阻止线缓冲器的尺寸的这种增加。

图17是图示出在仿射运动预测中改进后的线缓冲器利用的示例方面的图。在图17中,当前CTU 1700被示为包括当前块1702。可以使用仿射运动向量或控制点1710、1712和1714处的CPMV来执行当前块1702的仿射运动预测。当前块1702的相邻块1720可以位于当前CTU 1700之外,例如,在当前CTU 1700的左方的相邻CTU中。例如,相邻块1720可以类似于左方CTU 1340的右边界上的块线中的一个块1342,其中块1342可以被存储在线缓冲器1304中,如图13所示。相邻块1720的控制点1722、1724和1726处的运动向量

在一些示例中,相邻块1720的右边界处的两个

在一些示例中,可以提供附加缓冲器,其可以是用于存储左方CTU的右边界中的译码块的运动信息的另一本地缓冲器。例如,附加缓冲器可以被提供作为线缓冲器的附加,用于存储图13的左方CTU 1340中的译码块1342中的一个或多个。附加缓冲器可以在对每个CTU进行译码之后被更新。附加缓冲器的尺寸可以被定做成对应于CTU的尺寸,例如,具有足以容纳CTU的右边界上的译码块的尺寸。在一些示例中,MV的预定义最大数量可以被存储在附加缓冲器中,并且被用于获得

在一些示例中,来自相邻块1720的运动向量

在一些示例中,如上从相邻块1720获得的三个MV(

在一些示例中,可以从被称为附加相邻块的另一相邻经译码块获得运动向量

在一些情况下,来自相邻块1720的两个

在一些示例中,来自相邻块1720的两个

在一些示例中,来自相邻块1720的两个CPMV

虽然上述讨论涉及从附加相邻块获得运动向量

图18是图示出在仿射运动预测中改进后的线缓冲器利用的另一示例方面的图。图18在很多方面与图17类似,以下解释将会重点突出图18的与众不同的特征。在图18中,当前CTU 1800被示为包括当前块1802。可以使用仿射运动向量或控制点1810、1812和1814处的CPMV来执行当前块1802的仿射运动预测。当前块1802的相邻块1820可以位于当前CTU 1800之外,例如,在当前CTU 1800的左方的相邻CTU中。

在一些示例中,相邻块1820的右边界处的两个

图19是图示出在仿射运动预测中改进后的线缓冲器利用的另一示例方面的图。图19在很多方面与图17和图18类似,并且以下解释将会重点突出图19的与众不同的特征。在图19中,当前CTU 1900被示为包括当前块1902。可以使用仿射运动向量或控制点1910、1912和1914处的CPMV来执行当前块1902的仿射运动预测。当前块1902的相邻块1920可以位于当前CTU 1900之外,例如,在当前CTU 1900的左方的相邻CTU中。

在一些示例中,相邻块1920的右边界处的两个

在一些实现中,所继承仿射MVP可以来自左上方CTU。在第一说明性示例中,如果相邻候选块位于当前CTU行的左方(即,neiCtuX<curCtuX&&neiCtuY<curCtuY),则所继承仿射MVP被视为不可用。

在另一说明性示例中,如果相邻候选块位于当前CTU行的左方(即,neiCtuX<curCtuX&&neiCtuY<curCtuY),可以通过使用如上文参考图14、图15和图16描述的类似技术从上方CTU导出所继承仿射MVP来导出所继承仿射MVP。然而,背离这些技术的是,相邻候选块的

在另一说明性示例中,如果相邻候选块位于当前CTU行的左方(即,neiCtuX<curCtuX&&neiCtuY<curCtuY),可以通过使用如上文参考图16、图17和图18描述的类似技术从左方CTU导出所继承仿射MVP来导出所继承仿射MVP。然而,背离这些技术的是,相邻候选块的

在上述技术中的任何一个或多个的某些实现中,所继承仿射MVP可以来自左方、左上方或上方的CTU,并且上述方法的不同组合可以被应用。例如,上文参考图16、图17和图18描述的用于左方CTU导出的技术可以与上文参考图14、图15和图16描述的用于上方CTU导出的方法一起被使用。在另一示例中,用于左上方CTU导出的任何方法可以与用于上方CTU导出的方法以及用于左方CTU导出的方法一起被使用。

在一些实现中,如果分母是二的幂,则上文描述的除法可以用右移运算来代替。如果分母不是2的幂,则除法可以由缩放和右移来代替。例如,y除以x可以被近似为(y*LUT[x])>>LUT_PRECISION,其中LUT[x]=(1<<LUT_PRECISION)/x,并且LUT_PRECISION是用于近似的预定义精度。

在一些情况下,可以在计算CPMV的最后阶段执行右移运算。例如:

可以由以下来代替:

在一些情况下,可以应用舍入过程,并且除法运算可以由以下来代替:

其中,round(x)=x>=0?(x+(1<<(LUT_PRECISION-1))>>LUT_PRECISION:-((-x+(1<<(LUT_PRECISION-1))>>LUT_PRECISION)。

在一些实现中,可以基于一个或多个尺寸约束来确定用于译码单元(例如,CTU)的块的所继承仿射运动向量预测子(MVP)。例如,从当前块的相邻块(例如,在相同CTU中)获得用于当前块的所继承仿射MVP的控制点运动向量(CPMV)可以包括将相邻块的CPMV存储在本地缓冲器中的中间步骤。CPMV在使用6参数仿射运动模型时可以包括用于每个预测方向的三个MV而在使用4参数仿射运动模型时可以包括用于每个预测方向的两个MV。将CPMV存储在本地缓冲器中可以增加对本地缓冲器的存储器使用。本文描述的用于以一个或多个尺寸约束来确定所继承仿射MVP的技术可以减少所需用于存储CPMV的本地缓冲器存储的量。

在一些示例中,可以针对其CPMV被用于当前块的所继承仿射MVP的相邻块来定义最小尺寸阈值。其尺寸小于最小尺寸阈值的相邻块的CPMV可以被排除用于当前块的所继承仿射MVP。通过将其尺寸小于最小尺寸阈值的相邻块的CPMV排除被用于当前块的所继承仿射MVP,其尺寸小于最小尺寸阈值的相邻快的CPMV不需要被存储在本地缓冲器中。因此,在存储相邻块的CPMV之前,本文描述的示例技术可以包括相邻块的尺寸与最小尺寸阈值的比较。用于该比较的最小尺寸阈值不同于所需用于使用仿射运动模型来译码的块的最小块尺寸。例如,可以定义最小块尺寸,其要求任何块都大于(或者在一些情况下等于)最小块尺寸,以便使用仿射运动模型来对块进行译码。本文描述的最小尺寸阈值(如下所述,被标示为minSize)被定义用于相邻块,并且被用于确定相邻块的CPMV是否可以被用于当前块的继承仿射MVP。

图20是图示出CTU 2000的块的图。在CTU中,各种尺寸的块被示出,以范围从0到15的数字标识。数字指示译码次序。块0到10是已译码或先前经译码的块,而块11到15是要被译码的块。因此,块0到10可以充当用于块11到15的相邻块。例如,块0到10的CPMV可以被用于对应块11到15的所继承仿射MVP。在一些示例中,其尺寸大于或等于最小尺寸阈值的块0到10的CPMV可以被存储在本地缓冲器2002中,以将其用于块11到15的所继承仿射MVP。在一些示例中,其尺寸小于最小尺寸阈值的CPMV可以被排除或阻止被存储在本地缓冲器2002中。

以下术语用于描述减少诸如用于存储块0到10的CPMV的本地缓冲器2002之类的本地缓冲器的存储器使用的示例方面。如本文所使用的,(neiW,neiH)指定当前块(例如,块11到15中的一个)的相邻块(例如,相同CTU 2000中的块0到10中的一个)的宽度(neiW)和高度(neiH)。minSize是如上所述的最小尺寸阈值,其可以被用作用于在导出用于当前块的仿射运动信息时排除使用来自某些相邻块的仿射运动信息的限制。minSize可以是大于针对使用仿射运动模型来译码的块的最小尺寸的预定义值。如果对于相邻块neiW<minSize或者neiH<minSize,则来自相邻块的CPMV可以被排除用于导出所继承仿射MVP。

在一些情况下,用于同宽度(neiW)比较的最小尺寸阈值(minSize)与用于同高度(neiH)比较的最小尺寸阈值(minSize)尺寸相同。当块尺寸具有形式N×N(例如,4×4、8×8、16×16、32×32、64×64等,其中块的宽度和高度相同)时,公共minSize可被用于宽度和高度比较两者。在一些情况下,用于同宽度(neiW)比较的最小尺寸阈值(minSize)与用于同高度(neiH)比较的最小尺寸阈值(minSize)可以不同。在一些示例中,最小尺寸阈值(例如,minSize)可以被设置为值8、16、32、64或任何其他合适的值。在一些示例中,最小尺寸阈值(例如,minSize)可以是由编码器和解码器达成共识(例如,在编码器和解码器之间的协商期间)的固定值。在一些示例中,最小尺寸阈值(例如,minSize)可以是在高级语法中(例如,在序列参数集、视频参数集、条带头部、补充增强信息(SEI)消息、其任何合适的组合中,或者在另一语法中)被信令通知的变量。在一些情况下,当信令通知最小尺寸阈值(例如,minSize)时,信令通知log2(minSize)而不是minSize,以减少所需用于信令通知的比特数。在一些情况下,最小尺寸阈值(例如,minSize)可以被信令通知为log2(minSize)-3,其中在一些实例中,用于minSize的最小可能值为8。

在一个说明性示例中,CPMV被存储在第一缓冲器中,而普通MV被存储在第二缓冲器中。在一些情况下,由于最小译码块尺寸典型地为4×4,因此以4×4块为基础来存储普通MV。然而,使用上述基于最小尺寸阈值的技术,由于宽度和高度小于minSize的块不被用于所继承仿射MVP导出,因此CPMV可以被存储在尺寸为minSize×minSize的块中。在一些情况下,CPMV可以被存储在行缓冲器和列缓冲器中,而不是将CTU 2000的全部译码块的CPMV存储在单个本地缓冲器2002中。在此类情况下,用于行缓冲器和/或列缓冲器的存储可以基于minSize(例如,宽度或高度小于minSize的相邻块不被用于所继承仿射MVP导出)。

在一些示例中,如上所述,minSize针对宽度和高度可以具有不同值,被标示为最小宽度阈值(minSizeW)和最小高度阈值(minSizeH)。在此类情况下,基于minSizeW和minSizeH的较小值来存储CPMV。例如,如果对于块neiW<minSizeW或者neiH<minSizeH,则排除存储该块的CPMV。

在一些示例中,相邻块的CPMV可以与普通MV被存储在相同的缓冲器中。在此类示例中,一个或多个行缓冲器和一个或多个列缓冲器可以被用于存储CTU 2000的块的MV。在一些示例中,本地缓冲器2000可以包括一个或多个行缓冲器和一个或多个列缓冲器。在图20中,本地缓冲器2002的水平部分可以包括诸如行缓冲器2002R之类的行缓冲器,而本地缓冲器2002的垂直部分可以包括诸如列缓冲器2002C之类的列缓冲器。

在一些情况下,块的CPMV的第一部分可以被存储在行缓冲器和列缓冲器的第一集合中,而块的CPMV的第二部分可以被存储在行缓冲器和列缓冲器的第二集合中。例如,块0被标识为具有控制点2010处的左上方CPMV v

如上所述,在一些实现中,一个或多个行缓冲器和一个或多个列缓冲器可以被用于存储CTU 2000的块的MV。在一些情况下,在从相邻块(例如,经译码块0到10)导出MV或所继承仿射MVP时,相邻块是作为当前块(对应要被译码的块11到15中的一个或多个)的直接近邻的块。如果相邻块是当前块的直接近邻,则可能不需要存储经译码块的全部MV。例如,以其译码次序来标识块0到10。在一些示例中,仅块0到10的MV可以被存储在本地缓冲器2002(其可以具有4×4的尺寸)中。在块被译码之后,一个或多个行缓冲器和一个或多个列缓冲器中的对应位置中的MV可以用经译码块的MV来更新。

在一些实现中,可以基于一个或多个译码模式约束来确定所继承仿射运动向量预测子(MVP)。例如,以仿射合并模式译码的块的仿射运动参数可以通过来自相邻经译码块的运动信息来导出。在一些情况下,块的仿射运动参数可能不是准确的。在一个说明性示例中,可以使用译码模式约束,其中如果相邻块由仿射合并模式译码,则不可能从相邻块导出用于当前块的所继承仿射MVP。

在一些情况下,可以使用译码模式约束,其中如果相邻块由仿射合并模式译码,则从该块导出的所继承仿射MVP以相比于其他运动向量更低的优先级被插入至候选列表中。在一个说明性示例中,所继承仿射MVP可以在其他所继承仿射MVP之后被插入。在另一说明性示例中,所继承仿射MVP可以在其他所继承仿射MVP和所构造仿射MVP之后被插入。

在一些实现中,组合的所继承仿射MVP可以被使用。例如,不同所继承仿射MVP的CPMV可以被组合以生成新的仿射MVP。在一些情况下,可以从(例如,如参考图12所讨论的)块A0、A1、B0、B1、B2、B3或A2导出所继承仿射MVP。在以下描述中,块指示符(例如,A0、A1、B0等)将可互换地被用于标示来自该块的所继承仿射MVP或者该块。

参考图12,在一个说明性示例中,

在一些示例中,如果

在一些示例中,如果仅4参数仿射运动模型是可用的或被启用,则组合的所继承仿射MVP可以包括2个CPMV。在一个示例中,两个CPMV是

在一些示例中,可以通过首先检查未被仿射模式译码的第一可用直接相邻块来导出

在一些示例中,组合的所继承仿射MVP可以在所继承仿射MVP被导出之后被插入至候选列表中。在此类示例中,所继承仿射MVP的CPMV在导出组合的所继承仿射MVP时已可用。

在一些示例中,对于仿射运动继承,上述方法的组合和扩展是可能的。例如,如上所述,当从当前CTU中的相邻经译码块导出所继承仿射MVP时,上文描述的所继承仿射运动向量预测子(MVP)方法被应用,其中相邻经译码块的CPMV被用于导出当前块的所预测CPMV。如另一示例,如上所述,当从当前CTU的上方CTU中的相邻经译码块导出所继承仿射MVP时,存储在MV缓冲器中的MV被用于该导出,并且上文描述的用于从上方CTU继承仿射MVP的方法可以被应用。在此类示例中,在对当前CTU进行译码时,仿射译码块的CPMV可以仅被存储在本地缓冲器中。线缓冲器可以仅存储用于如在高效视频译码中的运动补偿的子块MV,其中所存储的MV在对之后的CTU译码时被用于MV预测。因此,线缓冲器不需要存储仿射运动继承所需要的附加CPMV。上文描述的用于所继承仿射MVP的尺寸约束以及尺寸约束过程可以被应用,使得CPMV的数量被减少,并且因此本地缓冲器尺寸可以被减小。

在上述方法的组合和/或扩展的以下描述中,neiPU指定相邻经译码块,(xNb,yNb)指定neiPU的左上方像素的坐标,而(nNbW,nNbH)指定neiPU的宽度和高度。进一步地,当前块被标示为curPU,(xCb,yCb)指定当前块的左上方像素的坐标,而(nCbW,nCbH)指定当前块的宽度和高度。MvLX[x][y]指定位置(x,y)处的子块的MV,其中MvLX[x][y][0]是MV的x分量而MvLX[x][y][1]是MV的y分量。cpMvLX[x][y]指定位置(x,y)处的控制点运动向量(CPMV),其中cpMvLX[x][y][0]是MV的x分量而cpMvLX[x][y][1]是CPMV的y分量。(CtuW,CtuH)指定CTU的宽度和高度。MotionModelIdc[x][y](运动模型Idc[xNb][yNb])指定位置(x,y)处的块的运动模型,其中MotionModelIdc[x][y]等于0指示平移运动模型(即,未使用仿射运动),MotionModelIdc[x][y]等于1指示4参数仿射运动模型,而MotionModelIdc[x][y]等于2指示6参数仿射运动模型。变量numCpMv指定所需用于当前块的CPMV的数量。如果当前块使用6参数仿射运动模型,则numCpMv等于3,否则如果当前块使用4参数仿射运动模型,则numCpMv等于2。

在以下示例中,neiPU被仿射译码。如果上文描述的尺寸约束被应用,则neiPU满足尺寸约束。

在一些示例中,可以从当前CTU继承仿射MVP。在此类示例中,如果neiPU位于当前块中(即,xNb/CtuW等于xCb/CtuW,并且yNb/CtuH等于yCb/CtuH),则所继承仿射MVP如下文中描述的那样被导出:

变量mvScaleHor和mvScaleHor如下被导出:

mvScaleHor=cpMvLX[xNb][yNb][0]

mvScaleVer=cpMvLX[xNb][yNb][1]

变量dHorX和dVerX如下被导出:

dHorX=(cpMvLX[xNb+nNbW-1][yNb][0]-cpMvLX[xNb][yNb][0])/nNbW

dVerX=(cpMvLX[xNb+nNbW-1][yNb][1]-cpMvLX[xNb][yNb][1])/nNbW

变量dHorY和dVery如下被导出:

如果MotionModelIdc[xNb][yNb]等于2,则以下适用:

dHorY=(cpMvLX[xNb][yNb+nNbH-1][0]-cpMvLX[xNb][yNb][0])/nNbH

dVerY=(cpMvLX[xNb][yNb+nNbH-1][1]-cpMvLX[xNb][yNb][1])/nNbH

否则MotionModelIdc[xNb][yNb]等于1,则以下适用:

dHorY=-dVerX

dVery=dHorX

所继承仿射运动MVP的CPMV inheritMvLX[cpIdx](继承MvLX[cpIdx]),其中cpIdx=0..numCpMv-1,如下被导出:

前两个控制点运动向量inheritMvLX[0]和inheritMvLX[1]如下被导出:

inheritMvLX[0][0]=mvScaleHor+dHorX*(xCb-xNb)+dHorY*(yCb-yNb)

inheritMvLX[0][1]=mvScaleVer+dVerX*(xCb-xNb)+dVerY*(yCb-yNb)

inheritMvLX[1][0]=mvScaleHor+dHorX*(xCb+nCbW-xNb)+dHorY*(yCb-yNb)

inheritMvLX[1][1]=mvScaleVer+dVerX*(xCb+nCbW-xNb)+dVerY*(yCb-yNb)

如果numCpMv等于3,则第三控制点向量inheritMvLX[2]如下被导出:

inheritMvLX[2][0]=mvScaleHor+dHorX*(xCb-xNb)+dHorY*(yCb+nCbH-yNb)

inheritMvLX[2][1]=mvScaleVer+dVerX*(xCb-xNb)+dVerY*(yCb+nCbH-yNb)

在一些实现中,缩放可以被应用以避免除法运算。在此类实现中,如果neiPU位于当前CTU中,所继承仿射MVP如下文中描述的那样被导出,其中N是预定义精度(例如,并且可以具有值7或其他整数):

变量log2NbW和log2NbH如下被导出:

log2NbW=Log2(nNbW)

log2NbH=Log2(nNbH)

变量mvScaleHor和mvScaleHor如下被导出:

mvScaleHor=cpMvLX[xNb][yNb][0]<<N

mvScaleVer=cpMvLX[xNb][yNb][1]<<N

变量dHorX和dVerX如下被导出:

dHorX=((cpMvLX[xNb+nNbW-1][yNb][0]-cpMvLX[xNb][yNb][0]))<<(N-log2NbW)

dVerX=((cpMvLX[xNb+nNbW-1][yNb][1]-cpMvLX[xNb][yNb][1]))<<(N-log2NbW)

变量dHorY和dVerY如下被导出:

如果MotionMode1Idc[xNb][yNb]等于2,则以下适用:

dHorY=((cpMvLX[xNb][yNb+nNbH-1][0]-cpMvLX[xNb][yNb][0]))<<(N-log2NbH)

dVerY=((cpMvLX[xNb][yNb+nNbH-1][1]-cpMvLX[xNb][yNb][1]))<<(N-log2NbH)

否则MotionModelIdc[xNb][yNb]等于1,则以下适用:

dHorY=-dVerX

dVerY=dHorX

所继承仿射运动MVP的CPMV inheritMvLX[cpIdx],其中cpIdx=0..numCpMv-1,如下被导出:

前两个控制点运动向量inheritMvLX[0]和inheritMvLX[1]如下被导出:

inheritMvLX[0][0]=mvScaleHor+dHorX*(xCb-xNb)+dHorY*(yCb-yNb)

inheritMvLX[0][1]=mvScaleVer+dVerX*(xCb-xNb)+dVerY*(yCb-yNb)

inheritMvLX[1][0]=mvScaleHor+dHorX*(xCb+nCbW-xNb)+dHorY*(yCb-yNb)

inheritMvLX[1][1]=mvScaleVer+dVerX*(xCb+nCbW-xNb)+dVerY*(yCb-yNb)

如果numCpMv等于3,则第三控制点向量inheritMvLX[2]如下被导出:

inheritMvLX[2][0]=mvScaleHor+dHorX*(xCb-xNb)+dHorY*(yCb+nCbH-yNb)

inheritMvLX[2][1]=mvScaleVer+dVerX*(xCb-xNb)+dVerY*(yCb+nCbH-yNb)

以下描述的舍入过程可以被应用于其中cpIdx=0..numCpMv-1的inheritMvLX[cpIdx],其中rightShift(右移)被设置为等于N,而leftShift(左移)被设置为等于0。

现在将描述舍入过程。对于mvX的舍入,以下适用:

offset=1<<(rightShift-1)

mvX[0]=(mvX[0]>=0?(mvX[0]+offset)>>rightShift:

-((-mvX[0]+offset)>>rightShift))<<leftShift

mvX[1]=(mvX[1]>=0?(mvX[1]+offset)>>rightShift:

-((-mvX[1]+offset)>>rightShift))<<leftShift

在一些示例中,可以从上方CTU继承仿射MVP。在此类示例中,如果neiPU位于上方CTU中(即,yNb/CtuH小于yCb/CtuH),则所继承仿射MVP如下文中描述的那样被导出(注意使用术语MvLX而不是cpMvLX,并且应用缩放过程;如果不应用缩放,则以下方法可以被相应地修改):

方法1-在此方法中,如果neiPU的仿射运动模型是6参数仿射运动模型,则这可以被看作仿射运动模型是4参数的。

变量yNbB和xNbR如下被导出:

yNbB=yNb+nNbH-1

xNbR=xNb+nNbW-1

变量mvScaleHor和mvScaleHor如下被导出:

mvScaleHor=MvLX[xNb][yNbB][0]<<N

mvScaleVer=MvLX[xNb][yNbB][1]<<N

变量dHorX和dVerX如下被导出:

dHorX=((MvLX[xNbR][yNbB][0]-MvLX[xNb][yNbB][0]))<<(N-log2NbW)

dVerX=((MVLX[xNbR][yNbB][1]-MvLX[xNb][yNbB][1]))<<(N-log2NbW)

变量dHorY和dVerY如下被导出:

dHorY=-dVerX

dVerY=dHorX

所继承仿射运动MVP的CPMV inheritMvLX[cpIdx],其中cpIdx=0..numCpMv-1,如下被导出:

前两个控制点运动向量inheritMvLX[0]和inheritMvLX[1]如下被导出:

inheritMvLX[0][0]=mvScaleHor+dHorX*(xCb-xNb)

inheritMvLX[0][1]=mvScaleVer+dVerX*(xCb-xNb)

inheritMvLX[1][0]=mvScaleHor+dHorX*(xCb+nCbW-xNb)

inheritMvLX[1][1]=mvScaleVer+dVerX*(xCb+nCbW-xNb)

如果numCpMv等于3,则第三控制点向量inheritMvLX[2]如下被导出:

inheritMvLX[2][0]=mvScaleHor+dHorX*(xCb-xNb)+dHorY*nCbH

inheritMvLX[2][1]=mvScaleVer+dVerX*(xCb-xNb)+dVerY*nCbH

上文描述的舍入过程可以被应用于其中cpIdx=0..numCpMv-1的inheritMvLX[cpIdx],其中rightShift被设置为等于N,而leftShift被设置为等于0。

方法2-在此方法中,导出取决于neiPU的帧间预测方向是否是双向预测。如果neiPU的仿射运动模型是6参数仿射运动模型并且帧间预测方向是双向预测,则这被看作仿射运动模型是4参数模型,并且neiPU的左上方CPMV被用于导出。如果neiPU的仿射运动模型是6参数模型,并且帧间预测方向不是双向预测,则neiPU的左上方CPMV被用于导出。由于在此情况下帧间预测方向不是双向预测,仅一个方向的子块MV需要被存储在线缓冲器中,用于另一方向的缓冲器可以被用于存储左上方CPMV。

变量interDir[x][y]等于1指定位置(x,y)处的帧间预测方向是“前向预测”(即,使用参考列表0),interDir[x][y]等于2指定位置(x,y)处的帧间预测方向是“后向预测”(即,使用参考列表1),而interDir[x][y]等于3指定位置(x,v)处的帧间预测方向是双向预测(即,参考列表0和1两者都被使用)。

变量yNbB和xNbR如下被导出:

yNbB=yNb+nNbH-1

xNbR=xNb+nNbW-1

变量mvScaleHor和mvScaleHor如下被导出:

mvScaleHor=MvLX[xNb][yNbB][0]<<N

mvScaleVer=MvLX[xNb][yNbB][1]<<N

变量dHorX和dVerX如下被导出:

dHorX=((MvLX[xNbR][yNbB][0]-MvLX[xNb][yNbB][0]))<<(N-log2NbW)

dVerX=((MvLX[xNbR][yNbB][1]-MvLX[xNb][yNbB][1]))<<(N-log2NbW)

变量dHorY和dVery如下被导出:

如果MotionModelIdc[xNb][yNb]等于2并且interDir[xNb][yNb]等于3,则以下适用:

dHorY=((cpMvLX[xNb][yNb+nNbH-1][0]-cpMvLX[xNb][yNb][0]))<<(N-log2NbH)

dVerY=((cpMvLX[xNb][yNb+nNbH-1][1]-cpMvLX[xNb][yNb][1]))<<(N-log2NbH)

否则MotionModelIdc[xNb][yNb]等于1,则以下适用:

dHorY=-dVerX

dVerY=dHorX

所继承仿射运动MVP的CPMV inheritMvLX[cpIdx],其中cpIdx=0..numCpMv-1,如下被导出:

前两个控制点运动向量inheritMvLX[0]和inheritMvLX[1]如下被导出:

inheritMvLX[0][0]=mvScaleHor+dHorX*(xCb-xNb)

inheritMvLX[0][1]=mvScaleVer+dVerX*(xCb-xNb)

inheritMvLX[1][0]=mvScaleHor+dHorX*(xCb+nCbW-xNb)

inheritMvLX[1][1]=mvScaleVer+dVerX*(xCb+nCbW-xNb)

如果numCpMv等于3,则第三控制点向量inheritMvLX[2]如下被导出:

inheritMvLX[2][0]=mvScaleHor+dHorX*(xCb-xNb)+dHorY*nCbH

inheritMvLX[2][1]=mvScaleVer+dVerX*(xCb-xNb)+dVerY*nCbH

上文描述的舍入过程可以被应用于其中cpIdx=0..numCpMv-1的inheritMvLX[cpIdx],其中rightShift被设置为等于N,而leftShift被设置为等于0。

方法3-在上文的方法1和2中,两个MV MvLX[xNbR][yNbB]与MvLX[xNb][yNbB]之间的距离实际上不等于nNbW,而是nNbW-(SubBlkSize/2)(因为MV表示子块的中心处的运动),其中SubBlkSize是用于仿射运动补偿的子块的尺寸。除以nNbW并且由此移位(N-log2NbW)是近似值。

在方法3中,neiPU的中下方位置处的MV被用于导出,使得两个MV之间的距离可以恰好是2的幂。并且可以假定导出取决于neiPU的帧间预测方向是否是双向预测。如果导出不取决于帧间预测方向,则以下过程可以相应地被修改。

变量yNbB、yNbM和xNbR如下被导出:

yNbB=yNb+nNbH-1

yNbM=yNbB-(nNbH>>1)

xNbR=xNb+(nNbW>>1)

变量mvScaleHor和mvScaleHor如下被导出:

mvScaleHor=MvLX[xNb][yNbB][0]<<N

mvScaleVer=MvLX[xNb][yNbB][1]<<N

变量dHorX和dVerX如下被导出:

dHorX=((MvLX[xNbR][yNbB][0]-MvLX[xNb][yNbB][0]))<<(N-log2NbW+1)

dVerX=((MvLX[xNbR][yNbB][1]-MvLX[xNb][yNbB][1]))<<(N-log2NbW+1)

变量dHorY和dVerY如下被导出:

如果MotionModelIdc[xNb][yNb]等于2并且interDir[xNb][yNb]等于3,则以下适用:

dHorY=((cpMvLX[xNb][yNbM][0]-cpMvLX[xNb][yNbB][0]))<<(N-log2NbH+1)

dVerY=((cpMvLX[xNb][yNbM][1]-cpMvLX[xNb][yNbB][1]))<<(N-log2NbH+1)

否则MotionModelIdc[xNb][yNb]等于1,则以下适用:

dHorY=-dVerX

dVerY=dHorX

所继承仿射运动MVP的CPMV inheritMvLX[cpIdx],其中cpIdx=0..numCpMv-1,如下被导出:

前两个控制点运动向量inheritMvLX[0]和inheritMvLX[1]如下被导出:

inheritMvLX[0][0]=mvScaleHor+dHorX*(xCb-xNb)

inheritMvLX[0][1]=mvScaleVer+dVerX*(xCb-xNb)

inheritMvLX[1][0]=mvScaleHor+dHorX*(xCb+nCbW-xNb)

inheritMvLX[1][1]=mvScaleVer+dVerX*(xCb+nCbW-xNb)

如果numCpMv等于3,则第三控制点向量inheritMvLX[2]如下被导出:

inheritMvLX[2][0]=mvScaleHor+dHorX*(xCb-xNb)+dHorY*nCbH

inheritMvLX[2][1]=mvScaleVer+dVerX*(xCb-xNb)+dVerY*nCbH

上文描述的舍入过程可以被应用于其中cpIdx=0..numCpMv-1的inheritMvLX[cpIdx],其中rightShift被设置为等于N,而leftShift被设置为等于0。

以上过程使用neiPU的中下方位置处的MV以及neiPU的左下方位置处的MV。如果neiPU的右下方位置处的MV被使用,而不是左下方,则过程可以被相应地修改。

在一些示例中,上文描述的用于从上方CTU继承仿射MVP的方法可以被应用于上述方法1、方法2和方法3。在此类示例中,其中cpIdx=0..numCpMv-1的所继承仿射运动MVP的CPMV inheritMvLX[cpIdx]的导出可以被如下修改(并且在某些情况下其他过程保持不变):

变量yNbB、yNbM和xNbR如下被导出:

前两个控制点运动向量inheritMvLX[0]和inheritMvLX[1]如下被导出:

inheritMvLX[0][0]=mvScaleHor+dHorX*(xCb-xNb)

inheritMvLX[0][1]=mvScaleVer+dVerX*(xCb-xNb)

inheritMvLX[1][0]=mvScaleHor+dHorX*(xCb+nCbW-xNb)

inheritMvLX[1][1]=mvScaleVer+dVerX*(xCb+nCbW-xNb)

上文描述的舍入过程可以被应用于其中cpIdx=0,1的inheritMvLX[cpIdx],其中rightShift被设置为等于N,而leftShift被设置为等于0。

如果numCpMv等于3,则第三控制点向量inheritMvLX[2]按如下有序步骤被导出:

1.样本位置(xNbA1,yNbA1)和(xNbA

2.可用性标志availableFlagLX被设置为等于0。

3.以下适用于其中BL被A

如果availableFlagLX等于0,则(xNbBL,yNbBL)处的块是可用的,并且MvLX[xNbBL][yNbBL]是可用的,且具有与当前相同的参考图片,以下适用:

inheritMvLX[2][0]=MvLX[xNbBL][yNbBL][0]

inheritMvLX[2][1]=MvLX[xNbBL][yNbBL][1]

availableFlagLX=1

4.如果availableFlagLX等于0,则以下适用:

inheritMvLX[2][0]=mvScaleHor+dHorX*(xCb-xNb)+dHorY*nCbH

inheritMvLX[2][1]=mvScaleVer+dVerX*(xCb-xNb)+dVery*nCbH

上述舍入过程可以被应用于inheritMvLX[2]。

在一些示例中,可以针对仿射运动补偿定义自适应子块尺寸。例如,为了减小复杂度,基于子块的运动补偿被执行以用于仿射运动补偿。当前块可以被划分成非重叠子块。对于每个子块,运动向量(MV)由所确定的仿射运动模型导出,并且随后使用所导出的MV执行基于块的运动补偿(块匹配)。

在一些情况下,子块的尺寸是固定的。然而,如果两个邻近子块的MV之间的差大,则小的子块尺寸(例如,4×4)会显著地增加存储器带宽。另一方面,大的子块尺寸会降低运动补偿预测的准确度。为解决此难题,本文描述了可以被应用的提供自适应子块尺寸的方法。

在一个说明性示例中,如果帧间预测方向不是双向预测,则子块尺寸是4×4,否则子块尺寸取决于CPMV之间的差。cpMvLx[cpIdx],其中cpIdx=0..2表示仿射译码的块的CPMV。变量iDMvHorX、iDMvHorY、iDMvVerX和iDMvVerY如下被导出:

iDMvHorX=cpMvLx[1][0]-cpMvLx[0][0]

iDMvHorY=cpMvLx[1][1]-cpMvLx[0][1]

如果仿射运动模型是6参数的,则以下适用:

iDMvVerX=cpMvLx[2][0]-cpMvLx[0][0]

iDMvVerY=cpMvLx[1][1]-cpMvLx[0][1]

否则:

iDMvVerX=-iDMvHorY

iDMvVerY=iDMvHorX

变量iMaxDMvHor和iMaxDMvVer如下被导出:

iMaxDMvHor=iDMvHorX>=iDMvHorY?iDMvHorX:iDMvHorY

iMaxDMvVer=iDMvVerX>=iDMvVerY?iDMvVerX:iDMvVerY

在一个说明性示例中,如果iMaxDMvHor大于或等于iMaxDMvVer,则子块尺寸为8×4,否则为4×8。

在另一说明性示例中,如果iMaxDMvHor大于iMaxDMvVer,则子块尺寸为8×4,否则为4×8。

在另一说明性示例中,如果满足指定的约束,则子块尺寸为4×4,否则子块尺寸取决于如上述示例中的CPMV之间的差。例如,在一些实施例中,所指定的约束可以是对诸如附录A中所描述的块的约束。

图21是图示出用于使用本文中所描述的技术来处理视频数据的过程2100的示例的流程图。在块2102处,过程2100包括获得针对当前译码单元的当前块的视频数据。例如,视频数据可以至少包括当前图片和参考图片。当前图片包括当前正被编码(或者在编码器的逆环路(inverse loop)中被解码)的图片。在一些示例中,当前块可以包括图14的当前块1402(或图15至图19的当前块1502-1902中的任一个),且当前译码单元可以包括图14的译码树单元(CTU)1400(或图15至图19的CTU 1500-1900中的任一个)。

在框2104处,过程2100包括确定当前块的相邻块位于当前译码单元之外。例如,在图14至图16中确定当前块的相邻块位于当前译码单元之外包括确定各个相邻块1420-1620位于CTU 1400-1600的上方。在图17至图19中,确定当前块的相邻块位于当前译码单元之外包括确定各个相邻块1720-1920位于CTU 1700-1900的左方。

在框2106处,过程2100包括获得与相邻块的边界相关联的第一运动向量和第二运动向量。在一些示例中,第一运动矢量和第二运动矢量是从用于存储边界中的译码块的运动向量的线缓冲器获得的。例如,在图14至图16中,从相邻块的边界获得第一运动向量和第二运动向量包括从相邻块的底部边界获得第一运动向量和第二运动向量,并且相邻块位于当前译码单元的行的上方。在图17至图19中,从相邻块的边界获得第一运动向量和第二运动向量包括从相邻块的右边界获得第一运动向量和第二运动向量,并且相邻块位于当前译码单元的左方。

更详细地,参见图14,从相邻块的底部边界获得第一运动向量和第二运动向量以用作当前块的仿射运动参数包括从位于相邻块1420的底部边界的左下方控制点1422和右下方控制点1424获得两个

类似地,参见图17,从相邻块的右边界获得第一运动向量和第二运动向量以用作当前块的仿射运动参数包括从位于相邻块1720的右边界的右上方控制点1722和右下方控制点1724获得两个

在框2108处,过程2100包括确定来自附加相邻块的第三运动向量是否可用。例如,在图14至图16中,确定来自附加相邻块的第三运动向量是否可用包括确定第三运动向量是否可以从位于当前块的左下方控制点的左方的左方相邻块或位于当前块的左下方控制点的下方和左方的左下方相邻块获得。在图17至图19中,确定来自附加相邻块的第三运动向量是否可用包括确定第三运动向量是否可以从位于当前块的右上方控制点的顶部的顶部相邻块或位于当前块的右上方控制点的上方和右方的右上方相邻块获得。

更详细地,在图14中,第三运动向量可以包括位于当前块1402的控制点1414左方的左方相邻块1432的运动向量1442或者位于当前块1402的控制点1414的下方和左方的左下方相邻块1434的运动向量1444。在图15中,第三运动向量可以包括位于当前块1502的控制点1514左方的左方相邻块1532的运动向量1542或者位于当前块1502的控制点1514的下方和左方的左下方相邻块1534的运动向量1544。在图16中,第三运动向量可以包括位于当前块1602的控制点1614左方的左方相邻块1632的运动向量1642或者位于当前块1602的控制点1614的下方和左方的左下方相邻块1634的运动向量1644。

类似地,在图17中,从附加相邻块获得的第三运动向量可以包括位于当前块1702的控制点1712的顶部的上方相邻块1732的运动向量1742或者位于当前块1702的控制点1712的上方和右方的右上方相邻块1734的运动向量1744。在图18中,从附加相邻块获得的第三运动向量可以包括位于当前块1802的控制点1812的顶部的上方相邻块1832的运动向量1842或者位于当前块1802的控制点1812的上方和右方的右上方相邻块1834的运动向量1844。在图19中,从附加相邻块获得的第三运动向量可以包括位于当前块1902的控制点1912的顶部的上方相邻块1932的运动向量1942或者位于当前块1902的控制点1912的上方和右方的右上方相邻块1834的运动向量1944。

在框2110处,过程2100包括,基于来自附加相邻块的第三运动向量可用的确定,使用第一运动向量、第二运动向量和第三运动向量来确定用于当前块的仿射运动参数集。在一些示例中,参考图14至图19,附加相邻块可以相应地位于当前CTU 1400-1900之外。在一些示例中,附加相邻块可以相应地位于当前CTU 1400-1900之内。

例如,在图14至图16的情况下,从左方相邻块和左下方相邻块选择的附加相邻块可以位于当前CTU之外。在此类情况下,来自附加相邻块的第三运动向量

在图17至图19的情况下,从上方相邻块和右上方相邻块选择的附加相邻块可以位于当前CTU之外。在此类情况下,来自附加相邻块的

在一些示例中,如上所述从相邻块和附加相邻块获得的三个MV可以被用于确定当前块的仿射运动参数或CPMV。例如,第一运动向量、第二运动向量和第三运动向量

图22是图示出用于使用本文中所描述的技术来处理视频数据的过程2200的示例的流程图。在块2202处,过程2200包括获得针对当前译码单元的当前块的视频数据。例如,视频数据可以至少包括当前图片和参考图片。当前图片包括当前正被编码(或者在编码器的逆环路中被解码)的图片。在一些示例中,当前块可以包括要被译码的块11到15中的一个,且当前译码单元可以包括图12的译码树单元(CTU)2000。

在框2204处,过程2000包括确定当前译码单元中的当前块的相邻块的尺寸大于用于仿射运动预测的最小块尺寸。例如,用于仿射运动预测的最小块尺寸可以是如参考图20所描述的4×4块。相应地,确定当前译码单元中的当前块的相邻块的尺寸大于用于仿射运动预测的最小块尺寸可以包括确定从经译码块0到10中选择的相邻块的尺寸是否大于4×4块尺寸。

在框2206处,过程2200包括确定相邻块的尺寸是否小于用于将相邻块的仿射运动向量用作当前块的仿射运动向量的最小尺寸阈值,该最小尺寸阈值不同于最小块尺寸。例如,最小尺寸阈值可以包括用于宽度和高度的公共minSize,其中确定相邻块的尺寸是否小于最小尺寸阈值可以包括确定相邻块(例如,相同CTU 2000中的块0至10的一个)的宽度(neiW)或相邻块的高度(neiH)是否小于公共minSize。在一些示例中,最小尺寸阈值可以包括用于宽度和高度的不同值,被标示为最小宽度阈值(minSizeW)和最小高度阈值(minSizeH)。在这种情况下,确定相邻块的尺寸是否小于最小尺寸阈值可以包括确定相邻块的宽度(neiW)是否小于minSizeW或者相邻块的高度(neiH)是否小于minSizeH。不管最小尺寸阈值包括公共minSize还是不同的minSizeW和minSizeH,最小尺寸阈值都与上面讨论的最小块尺寸(例如,4×4)不同。

在框2208处,过程2200包括基于相邻块的尺寸是否小于最小尺寸阈值来确定是否将相邻块的仿射运动向量用作针对当前块的仿射运动向量。例如,如果相邻块的尺寸被确定为小于最小尺寸阈值,则基于尺寸小于最小阈值的相邻块的仿射运动向量不被用作当前块的仿射运动向量的限制,相邻块的仿射运动向量被排除用作当前块的仿射运动向量。例如,在公共minSize的情况下,如果针对相邻块的neiW<minSize或neiH<minSize,则相邻块的CPMV被排除用于导出当前块的所继承仿射MVP。在包括用于宽度和高度的不同值的最小尺寸阈值的情况下,如果针对相邻块的neiW<minSizeW或neiH<minSizeH,则相邻块的CPMV被排除用于导出当前块的所继承仿射MVP。

在一些示例中,过程2100和2200可由诸如编码设备104、解码设备112或任何其他计算设备之类的计算设备或装置执行。在一些情况下,计算设备或装置可以包括一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机和/或被配置成执行过程2100和2200的步骤的(一个或多个)其他组件。计算设备的组件(例如,一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机和/或其他组件)可以用电路实现。例如,组件可以包括电子电路或其他电子硬件和/或可以使用电子电路或其他电子硬件来实现,电子电路或其他电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)和/或其他合适的电子电路),和/或可以包括计算机软件、固件或其任何组合和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。该计算设备可以进一步包括显示器(作为输出设备的示例)、被配置成传达和/或接收数据的网络接口、被配置成传达视频数据的一个或多个接收器、发送器和/或收发器(作为输入设备和/或输出设备的示例)。在一些示例中,网络接口、收发器和/或发送器可以被配置成传达基于网际协议(IP)的数据或其它网络数据。

在一些示例中,计算设备或装置可以包括被配置成捕捉包括视频帧的视频数据(例如,视频序列)的相机。例如,计算设备可以包括相机设备,相机设备可以包括或可以不包括视频编解码器。作为另一示例,计算设备可以包括具有相机的移动设备(例如,诸如数码相机、IP相机之类的相机设备,包括相机的移动电话或平板,或具有相机的其它类型的设备)。在一些示例中,捕捉视频数据的相机或其他捕捉设备与计算设备分开,在这种情况下,计算设备接收所捕捉的视频数据。

过程2100和2200被图示为逻辑流程图,其操作表示可以用硬件、计算机指令或其组合来实现的操作序列。在计算机指令的上下文中,这些操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,这些计算机可执行指令在由一个或多个处理器执行时执行所述操作。一般而言,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述这些操作的次序不旨在被解释为限制,并且可以用任何次序和/或并行地组合任何数量的所描述操作以实现这些过程。

另外,过程2100和2200可以在配置有可执行指令的一个或多个计算机系统的控制下被执行,并且可以被实现为在一个或多个处理器上、通过硬件或其组合共同执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式被存储在计算机可读或机器可读存储介质上。该计算机可读或机器可读存储介质可以是非暂态的。

本文讨论的译码技术可以在示例视频编码和解码系统(例如,系统100)中被实现。在一些示例中,系统包括提供将由目的地设备在稍后时间解码的经编码视频数据的源设备。具体地,源设备经由计算机可读介质向目的地设备提供视频数据。源设备和目的地设备可以包括广泛的设备中的任何一种,包括台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、诸如所谓“智能”电话之类的电话手持设备、所谓的“智能”平板、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备等。在一些情况下,源设备和目的地设备可以被装备用于无线通信。

目的地设备可以经由所述计算机可读介质接收待解码的经编码视频数据。计算机可读介质可以包括能够将经编码视频数据从源设备移动至目的地设备的任何类型的介质或设备。在一个示例中,计算机可读介质可以包括用于使源设备能够将经编码视频数据直接传输到目的地设备的通信介质。经编码视频数据可以根据诸如无线通信协议之类的通信标准来调制,并且被传输至目的地设备。通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成诸如以下各项的基于分组的网络的部分:局域网、广域网、或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站或者对促进从源设备到目的地设备的通信可能有用的任何其它装备。

在一些示例中,经编码数据可以从输出接口被输出到存储设备。类似地,可以通过输入接口从存储设备访问经编码数据。存储设备可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬驱动器、蓝光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或者用于存储经编码视频数据的任何其它合适的数字存储介质。在另一示例中,存储设备可以对应于文件服务器或者可以存储由源设备生成的经编码视频的另一中间存储设备。目的地设备可经由流式传输或下载来从存储设备访问所存储视频数据。文件服务器可以是能够存储经编码视频数据并将此经编码视频数据传输至目的地设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、FTP服务器、网络附连存储(NAS)设备或者本地盘驱动器。目的地设备可以通过包括互联网连接的任何标准数据连接来访问经编码视频数据。这可以包括适合用于访问存储在文件服务器上的经编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。对来自存储设备的经编码视频数据的传输可以是流式传输、下载传输或其组合。

本公开的技术不必限于无线应用或设置。该技术可以被应用于支持诸如以下各项的各种多媒体应用中的任一个的视频译码:空中电视广播、电缆电视传输、卫星电视传输、诸如基于HTTP的动态自适应流式传输(DASH)之类的互联网流式传输视频传输、被编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频的解码、或其它应用。在一些示例中,系统可以被配置成支持单向或双向视频传输,以支持诸如视频流式传输、视频回放、视频广播和/或视频电话之类的应用。

在一个示例中,源设备包括视频源、视频编码器和输出接口。目的地设备可以包括输入接口、视频解码器和显示设备。源设备的视频编码器可以被配置成应用本文所公开的技术。在其他示例中,源设备和目的地设备可以包括其他组件或布置。例如,源设备可以从诸如外部相机之类的外部视频源接收视频数据。同样,目的地设备可以与外部显示设备接口连接(interface),而不是包括集成的显示设备。

上述示例系统仅仅是一个示例。用于并行处理视频数据的技术可以由任何数字视频编码和/或解码设备执行。虽然一般而言,本公开的技术由视频编码设备执行,但该技术还可以由典型地被称为“编解码器”的视频编码器/解码器执行。而且,本公开的技术还可以由视频预处理器执行。源设备和目的地设备仅仅是此类译码设备的示例,其中源设备生成经译码视频数据以用于传输至目的地设备。在一些示例中,源设备和目的地设备可以以基本对称的方式操作,使得设备中的每一个包括视频编码和解码组件。因此,示例系统可以支持视频设备之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。

视频源可以包括诸如视频相机之类的视频捕捉设备、包含先前捕捉的视频的视频存档、和/或用于从视频内容提供者接收视频的视频馈送接口。作为进一步的替代,视频源可以生成基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成视频的组合。在一些情况下,如果视频源是视频相机,则源设备和目的地设备可以形成所谓的相机电话或视频电话。然而,如上文所提及的,本公开中所描述的技术一般而言可以适用于视频译码,并且可以被应用于无线和/或有线应用。在每一情况下,捕捉的、预捕捉的或计算机生成的视频可以由视频编码器来编码。经编码视频信息随后可以通过输出接口被输出到计算机可读介质上。

如上所述,计算机可读介质可以包括暂态介质,诸如无线广播或有线网络传输,或存储介质(即,非暂态存储介质),诸如硬盘、闪存驱动器、紧凑盘、数字视频盘、蓝光盘,或其它计算机可读介质。在一些示例中,网络服务器(未示出)可以从源设备接收经编码视频数据,并且例如经由网络传输将经编码视频数据提供给目的地设备。类似地,诸如光盘冲压设施之类的介质生产设施的计算设备可以从源设备接收经编码视频数据并且生产包含经编码视频数据的盘。因此,在各种示例中,计算机可读介质可以被理解为包括各种形式的一个或多个计算机可读介质。

目的地设备的输入接口从计算机可读介质接收信息。计算机可读介质的信息可以包括由视频编码器定义的语法信息,该语法信息也由视频解码器使用,该语法信息包括描述块和例如图片组(GOP)的其它经译码单元的特性和/或处理的语法元素。显示设备向用户显示经解码视频数据,并且可以包括各种显示设备中的任何一种,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示设备。本申请的各种实施例已被描述。

编码设备104和解码设备112的特定细节在图23和图24中被相应地示出。图23是图示出可以实现本公开中所描述的技术中的一个或多个的示例编码设备104的框图。编码设备104可以例如生成本文中所描述的语法结构(例如,VPS、SPS、PPS或其它语法元素的语法结构)。编码设备104可以执行对视频条带内的视频块的帧内预测和帧间预测译码。如前所述,帧内译码至少部分地依赖于空间预测以减少或移除给定视频帧或图片内的空间冗余。帧间译码至少部分地依赖于时间预测以减少或移除视频序列的邻近或周围帧内的时间冗余。帧内模式(I模式)可以指若干基于空间的压缩模式中的任一个。诸如单向预测(P模式)或双向预测(B模式)之类的帧间模式可以指若干基于时间的压缩模式中的任一个。

编码设备104包括分割单元35、预测处理单元41、滤波器单元63、图片存储器64、求和器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41包括运动估计单元42、运动补偿单元44和帧内预测处理单元46。对于视频块重构,编码设备104还包括逆量化单元58、逆变换处理单元60和求和器62。滤波器单元63旨在表示一个或多个环路滤波器,诸如去块滤波器(deblocking filter)、自适应环路滤波器(ALF)和样本自适应偏移(SAO)滤波器。虽然滤波器单元63在图23中被示出为环路中滤波器(in loop filter),但是在其他配置中,滤波器单元63可以被实现为环路后滤波器(post loop filter)。后处理设备57可以对由编码设备104生成的经编码视频数据执行附加处理。在一些实例中,本公开的技术可以由编码设备104实现。然而,在其它实例中,本公开的技术中的一个或多个可以由后处理设备57实现。

如图23中所示,编码设备104接收视频数据,且分割单元35将数据分割成视频块。分割还可以包括根据LCU和CU的四叉树结构分割成条带、条带片段、瓦片或其它较大单元,以及视频块分割。编码设备104大体上图示出对待编码的视频条带内的视频块进行编码的组件。条带可以被划分成多个视频块(并且可能被划分成被称作瓦片的视频块集合)。预测处理单元41可以基于误差结果(例如,译码率和失真水平等)来选择用于当前视频块的多个可能译码模式中的一个,诸如多个帧内预测译码模式中的一个或多个帧间预测译码模式中的一个。预测处理单元41可以将所得帧内或帧间译码块提供给加法器50以生成残差块数据,并提供给加法器62以重构经编码块以用作参考图片。

预测处理单元41内的帧内预测处理单元46可以相对于与待译码的当前块相同的帧或条带中的一个或多个相邻块来对当前视频块执行帧内预测译码以提供空间压缩。预测处理单元41内的运动估计单元42和运动补偿单元44相对于一个或多个参考图像中的一个或多个预测性块执行当前视频块的帧间预测译码以提供时间压缩。

运动估计单元42可以被配置成根据用于视频序列的预定方式来确定用于视频条带的帧间预测模式。预定方式可以将序列中的视频条带指定为P条带、B条带或GPB条带。运动估计单元42和运动补偿单元44可以被高度集成,但出于概念目的而被分开地图示出。由运动估计单元42执行的运动估计是生成运动向量的过程,运动向量估计针对视频块的运动。运动向量例如可以指示当前视频帧或图片内的视频块的预测单元(PU)相对于参考图片内的预测性块的位移。

预测性块是经发现在像素差方面与待译码的视频块的PU紧密匹配的块,像素差可由绝对差之和(SAD)、平方差之和(SSD)或其它差度量而被确定。在一些示例中,编码设备104可以计算用于图片存储器64中存储的参考图片的子整数(sub-integer)像素位置的值。例如,编码设备104可以插值(interpolate)参考图片的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42可以相对于全像素位置和部分像素位置执行运动搜索,并输出具有分数像素精度的运动向量。

运动估计单元42通过将经帧间译码条带中的视频块的PU的位置与参考图片的预测性块的位置进行比较来计算用于该PU的运动向量。参考图片可以从第一参考图片列表(列表0)或第二参考图片列表(列表1)选择,参考图片列表中的每一个标识存储在图片存储器64中的一个或多个参考图片。运动估计单元42将所计算的运动向量发送到熵编码单元56和运动补偿单元44。

由运动补偿单元44执行的运动补偿可以涉及基于由可能执行到子像素精度的插值的运动估计确定的运动向量来取出或生成预测性块。在接收到用于当前视频块的PU的运动向量之时,运动补偿单元44可以将预测性块定位于参考图片列表中的运动向量所指处。编码设备104通过从正被译码的当前视频块的像素值中减去预测性块的像素值来形成残差视频块,从而形成像素差值。像素差值形成用于块的残差数据,并且可以包括亮度及色度差分量两者。求和器50表示执行该减法操作的一个或多个组件。运动补偿单元44还可以生成与视频块和视频条带相关联的语法元素,以供解码设备112在对视频条带的视频块的解码中使用。

帧内预测处理单元46可对当前块进行帧内预测,作为由运动估计单元42和运动补偿单元44执行的帧间预测的替代,如上所述。具体地,帧内预测处理单元46可以确定用于对当前块进行编码的帧内预测模式。在一些示例中,帧内预测处理单元46可以例如在单独的编码编次期间使用各种帧内预测模式对当前块进行编码,且帧内预测单元处理46可以从经测试模式选择要使用的适当帧内预测模式。例如,帧内预测处理单元46可以针对各种经测试帧内预测模式使用速率失真分析来计算速率失真值,并且可以在经测试模式中选择具有最佳速率失真特性的帧内预测模式。速率失真分析一般确定经编码块与被编码以产生经编码块的原始未经编码块之间的失真(或误差)量,以及用于产生经编码块的比特率(即,比特数)。帧内预测处理单元46可以从针对各个经编码块的失真和速率来计算比率,以确定哪一个帧内预测模式展示出用于块的最佳速率-失真值。

在任何情况下,在针对块选择帧内预测模式之后,帧内预测处理单元46可以将指示针对该块选择的帧内预测模式的信息提供给熵编码单元56。熵编码单元56可以对指示所选择帧内预测模式的信息进行编码。编码设备104可以在所传输比特流配置数据中包括用于各种块的编码上下文的定义,以及用于上下文中的每一个的对最可能帧内预测模式的指示、帧内预测模式索引表和经修改帧内预测模式索引表。比特流配置数据可以包括多个帧内预测模式索引表和多个经修改帧内预测模式索引表(也被称为码字映射表)。

在预测处理单元41经由帧间预测或帧内预测生成用于当前视频块的预测性块之后,编码设备104通过从当前视频块中减去预测性块来形成残差视频块。残差块中的残差视频数据可被包括在一个或多个TU中并且被应用于变换处理单元52。变换处理单元52使用诸如离散余弦变换(DCT)或概念上类似的变换之类的变换将残差视频数据变换为残差变换系数。变换处理单元52可以将残差视频数据从像素域转换到变换域,诸如频域。

变换处理单元52可以将所得变换系数发送到量化单元54。量化单元54量化变换系数以进一步降低比特率。量化过程可以减少与系数中的某些或全部相关联的比特深度。可以通过调整量化参数来修改量化程度。在一些示例中,量化单元54随后可以执行对包括经量化变换系数的矩阵的扫描。替代地,熵编码单元56可以执行扫描。

在量化之后,熵编码单元56对经量化变换系数进行熵编码。例如,熵编码单元56可以执行上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或者另一熵编码技术。在由熵编码单元56进行熵编码之后,经编码比特流可以被传输到解码设备112,或被存档以供稍后传输或由解码设备112检索。熵编码单元56还可以对用于正被译码的当前视频条带的运动向量和其它语法元素进行熵编码。

逆量化单元58和逆变换处理单元60相应地应用逆量化和逆变换,以重构像素域中的残差块,以供稍后用作参考图片的参考块。运动补偿单元44可以通过将残差块加至参考图片列表内的参考图片中的一个的预测性块来计算参考块。运动补偿单元44还可以将一个或一个以上插值滤波器应用于经重构残差块以计算用于运动估计的子整数像素值。求和器62将经重构残差块加至由运动补偿单元44产生的经运动补偿预测块,以产生用于存储在图片存储器64中的参考块。参考块可以被运动估计单元42和运动补偿单元44用作参考块以对后续视频帧或图片中的块进行帧间预测。

编码设备104可以执行本文中所描述的技术中的任一个。已经相对于编码设备104大体上描述了本公开的某些技术,但如上所述,本公开的技术中的一些也可以由后处理设备57实现。

图23的编码设备104表示被配置成执行本文中所描述的基于模板匹配的仿射运动导出的视频解码器的示例。编码设备104可以例如确定仿射运动参数,使用仿射运动参数来确定用于一个或多个图片的一个或多个块的仿射运动,以及生成具有指示基于模板匹配的仿射运动导出模式将被用于一个或多个块的语法项(例如,语法元素、语法结构、变量、标志等)的经编码视频比特流。编码设备104可以执行本文中所描述的技术中的任一个,包括上文相对于图21和图22所描述的过程。

图24是图示出示例解码设备112的框图。解码设备112包括熵解码单元80、预测处理单元81、逆量化单元86、逆变换处理单元88、求和器90、滤波器单元91和图片存储器92。预测处理单元81包括运动补偿单元82和帧内预测处理单元84。在一些示例中,解码设备112可以执行与相对于来自图23的编码设备104描述的编码编次大体上互逆的解码编次。

在解码过程期间,解码设备112接收由编码设备104发送的表示经编码视频条带的视频块以及相关联语法元素的经编码视频比特流。在一些实施例中,解码设备112可以从编码设备104接收经编码视频比特流。在一些实施例中,解码设备112可以从网络实体79接收经编码视频比特流,网络实体79诸如是服务器、媒体感知网络元件(MANET)、视频编辑器/接合器,或者被配置成实现上述技术中的一个或多个的其他此类设备。网络实体79可以包括或可以不包括编码设备104。本公开中所描述的技术中的一些可以在网络实体79将经编码视频比特流传输到解码设备112之前由网络实体79实现。在一些视频解码系统中,网络实体79和解码设备112可以是分开的设备的部分,而在其它实例中,关于网络实体79描述的功能性可以由包括解码设备112的相同设备执行。

解码设备112的熵解码单元80对比特流进行熵解码以生成经量化系数、运动向量和其他语法元素。熵解码单元80将运动向量和其它语法元素转发到预测处理单元81。解码设备112可以接收视频条带层级和/或视频块层级的语法元素。熵解码单元80可以处理和解析诸如VPS、SPS和PPS之类的一个或多个参数集中的固定长度语法元素和可变长度语法元素两者。

当视频条带被译码为帧内译码(I)条带时,预测处理单元81的帧内预测处理单元84可以基于信令通知的帧内预测模式和来自当前帧或图片的先前经解码块的数据来生成用于当前视频条带的视频块的预测数据。当视频帧被译码为帧间译码(即,B、P或GPB)条带时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动向量和其它语法元素来产生用于当前视频条带的视频块的预测性块。可以从参考图片列表内的参考图片中的一个产生预测性块。解码设备112可以基于存储在图片存储器92中的参考图片,使用默认构造技术来构造参考帧列表,列表0和列表1。

运动补偿单元82通过解析运动向量和其它语法元素来确定用于当前视频条带的视频块的预测信息,并且使用预测信息来产生用于正被解码的当前视频块的预测性块。例如,运动补偿单元82可以使用参数集中的一个或多个语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,B条带、P条带或GPB条带)、针对用于条带的一个或多个参考图片列表的构造信息、用于条带的每个经帧间编码视频块的运动向量、用于条带的每个经帧间编码视频块的帧间预测状态、以及用于解码当前视频条带中的视频块的其它信息。

运动补偿单元82还可以基于插值滤波器来执行插值。运动补偿单元82可以使用如由编码设备104在视频块的编码期间使用的插值滤波器来计算用于参考块的子整数像素的插值。在此情况下,运动补偿单元82可以从所接收的语法元素确定由编码设备104使用的插值滤波器,并且可以使用该插值滤波器来产生预测性块。

逆量化单元86对在比特流中提供并由熵解码单元80解码的经量化变换系数进行逆量化或去量化(de-quantize)。逆量化过程可以包括使用由编码设备104针对视频条带中的每个视频块计算的量化参数来确定量化程度且同样地确定应被应用的逆量化程度。逆变换处理单元88将逆变换(例如,逆DCT或其它合适的逆变换)、逆整数变换或概念上类似的反变换过程应用于变换系数以便产生像素域中的残差块。

在运动补偿单元82基于运动向量和其它语法元素生成用于当前视频块的预测性块之后,解码设备112通过对来自逆变换处理单元88的残差块与由运动补偿单元82生成的对应预测性块求和来形成经解码视频块。求和器90表示执行该求和操作的一个或多个组件。如果需要,环路滤波器(在译码环路中或在译码环路之后)还可以被用于平滑像素转变(smoothpixeltransition),或以其它方式改进视频质量。滤波器单元91旨在表示一个或多个环路滤波器,诸如去块滤波器、自适应环路滤波器(ALF)和样本自适应偏移(SAO)滤波器。虽然滤波器单元91在图24中被示出为环路中滤波器,但是在其他配置中,滤波器单元91可以被实现为环路后滤波器。给定帧或图片中的经解码视频块随后被存储在图片存储器92中,图片存储器92存储用于后续运动补偿的参考图片。图片存储器92还存储经解码视频,用于以后在诸如图1所示的视频目的地设备122之类的显示设备上呈现。

图24的解码设备112表示被配置成执行本文中所描述的基于模板匹配的仿射运动导出的视频解码器的示例。解码装置112可以例如确定仿射运动参数并且使用仿射运动参数来确定用于一个或多个图片的一个或多个块的仿射运动。解码设备112可以执行本文中所描述的技术中的任一个,包括上文相对于图21和图22所描述的过程。

在前面的描述中,参考其具体实施例描述了本申请的方面,但是本领域技术人员将认识到本申请的主题不限于此。因此,虽然本文已经详细描述了本申请的说明性实施例,但是应当理解,本发明概念可以用其他方式而被不同地实施和采用,并且所附权利要求旨在被解释为包括除由现有技术限制之外的此类变体。上述主题的各种特征和方面可以被单独或联合使用。此外,实施例可以在超过本文描述的环境和应用的任何数量的环境和应用中被利用,而不背离本说明书的更广泛的精神和范围。相应地,说明书和附图应被认为是说明性而非限制性的。出于说明的目的,方法被以特定的次序描述。应理解,在替代实施例中,方法可以用与所描述的次序不同的次序而被执行。

普通技术人员中的一个将理解,本文中使用的小于(“<”)和大于(“>”)的符号或术语可以相应地用小于或等于(“≤”)和大于或等于(“≥”)的符号代替,而不背离本说明书的范围。

在将组件描述为“被配置成”执行某些操作的情况下,此类配置可以例如通过设计电子电路或其它硬件以执行这些操作、通过可编程电子电路(例如,微处理器或其它合适电子电路)进行编程以执行这些操作或其任何组合来实现。

表述集合中的“至少一个”或集合中的“一个或多个”的权利要求语言或其他语言指示集合的一个成员或集合的多个成员满足该权利要求。例如,表述“A和B中的至少一个”的权利要求语言意指A、B或者A和B。在另一示例中,表述“A和B中的一个或多个”的权利要求语言意指A、B或者A和B。在另一示例中,表述“A、B和C中的一个或多个”的权利要求语言意指A、B、C、A和B、A和C、B和C,或者A、B和C的全部。

结合本文所公开的实施例描述的各种说明性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为清楚地说明硬件与软件的此可互换性,上文已大体上就其功能性而言描述了各种说明性组件、块、模块、电路和步骤。此类功能性被实现为硬件还是软件取决于特定应用以及施加于整个系统的设计约束。本领域技术人员可以针对每个特定应用以不同方式实现所描述的功能性,但不应将此类实现决策解释为致使背离本申请的范围。

本文所描述的技术可以以电子硬件、计算机软件、固件或其任意组合来实现。此类技术可以以诸如以下各项的各种设备中的任一种来实现:通用计算机、无线通信设备手持设备或者具有包括无线通信设备手持设备和其它设备中的应用的多种用途的集成电路设备。被描述为模块或组件的任何特征可以一起以集成逻辑设备实现,或者单独以离散但可互操作的逻辑设备实现。如果以软件实现,则技术可以至少部分由包括程序代码的计算机可读数据存储介质实现,该程序代码包括在被执行时,执行上文描述的方法中的一个或多个的指令。计算机可读数据存储介质可以形成计算机程序产品的部分,该计算机程序产品可以包括封装材料。计算机可读介质可以包括存储器或数据存储介质,诸如:诸如同步动态随机存取存储器(SDRAM)之类的随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存存储器、磁性或光学数据存储介质等。技术附加地或替代地可以至少部分地由以指令或数据结构的形式承载或传达程序代码的计算机可读通信介质来实现,并且该程序代码可以由计算机访问、读取和/或执行,诸如传播的信号或波。

程序代码可以由处理器执行,处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它等效的集成或离散逻辑电路。此类处理器可以被配置成执行本公开中所描述的技术中的任一个。通用处理器可以是微处理器,但在替代情况下,该处理器可以是任何普通的处理器、控制器、微控制器或状态机。处理器还可被实现为计算设备的组合,例如以下项的组合:DSP和微处理器、多个微处理器、与DSP核结合的一个或多个微处理器、或任何其他此类配置。相应地,如本文中所使用的术语“处理器”可以指前述结构中的任一个、前述结构的任何组合或者适于实现本文中所描述的技术的任何其它结构。另外,在一些方面,本文中所描述的功能性可以在被配置用于编码和解码的专用软件模块或硬件模块内被提供,或被并入组合视频编码器-解码器(编解码器)中。

相关技术
  • 在图像编码系统中使用仿射合并候选列表的基于仿射运动预测的图像解码方法和装置
  • 在图像编码系统中使用构造的仿射MVP候选基于仿射运动预测的图像解码方法和装置
技术分类

06120112893424