用于仿射模式的基于历史的运动矢量预测

文档序号:653519 发布日期:2021-04-23 浏览:15次 >En<

阅读说明:本技术 用于仿射模式的基于历史的运动矢量预测 (History-based motion vector prediction for affine mode ) 是由 C-H.孔 W-J.钱 M.卡尔切维茨 于 2019-09-20 设计创作,主要内容包括:一种对视频数据进行译码的方法,包括:使用仿射运动补偿预测来对视频数据的第一块进行译码,使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表,使用基于历史的运动矢量预测表来确定用于视频数据的第二块的运动矢量,并使用所确定的运动矢量对视频数据的第二块进行译码。(A method of coding video data, comprising: the method includes coding a first block of video data using affine motion compensated prediction, updating a history-based motion vector prediction table using one or more motion vectors from one or more blocks spatially adjacent to the first block, determining a motion vector for a second block of video data using the history-based motion vector prediction table, and coding the second block of video data using the determined motion vector.)

用于仿射模式的基于历史的运动矢量预测

相关申请的交叉引用

本申请要求于2019年9月19日提交的美国专利申请No.16/576,330的优先权,该申请要求于2018年9月21日提交的美国临时申请No.62/734,658的优先权,其全部内容通过引用合并于此。

技术领域

本公开涉及视频编码和视频解码。

背景技术

数字视频功能能够集成到各种设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、膝上型或台式计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实施视频译码技术,比如那些在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分、高级视频译码(AVC)、ITU-T H.265/高效视频译码(HEVC)所定义的标准以及此类标准的扩展中所描述的技术。通过实施此类视频译码技术,视频设备可以更高效地发送、接收、编码、解码和/或存储数字视频信息。

视频译码技术包括空域(图片内)预测和/或时域(图片间)预测来减少或消除视频序列中固有的冗余。对于基于块的视频译码,可以将视频条带(例如,视频图片或视频图片的一部分)分割为视频块,其也可以称为编码树单元(CTU)、编码单元(CU)和/或编码节点。对于图片的帧内译码的(I)条带中的视频块,可以使用相对于同一图片中邻近块中的参考样点的空域预测进行编码。对于图片的帧间译码的(P或B)条带中的视频块,可以使用相对于同一图片中邻近块中的参考样点的空域预测或者相对于其他参考图片中的参考样点的时域预测。图片可以称为帧,并且参考图片可以称为参考帧。

发明内容

一般地,本公开描述了用于在视频译码中的帧间预测、运动矢量预测和重建的技术。更具体地,本公开描述了用于根据基于历史的运动矢量预测(HMVP)表的帧间预测运动矢量候选列表构建的技术。

在本公开的示例中,视频编码器和视频解码器被配置为在使用帧间预测对视频数据的块进行编码和/或解码之后,利用常规的平移运动矢量来更新HMVP表。在此上下文中,常规的平移运动矢量是一种运动矢量,该运动矢量使用正被译码的块和预测块之间的x、y位移来指向不同图片中的预测块。视频编码器和视频解码器可以在HMVP表中存储预定义数量的运动矢量。随着新的运动矢量被添加到HMVP表中,较旧的运动矢量可以被移除(例如,以先入先出的方式)。在一些情况下,视频编码器和视频解码器可被配置为使用存储在HMVP表中的运动矢量来构建运动矢量预测器列表并使用该运动矢量预测器列表来确定用于帧间预测块的运动矢量。

除了使用常规的平移运动矢量执行帧间预测之外,一些视频译码器还可被配置为使用更复杂的运动模型(例如仿射运动模型)对视频块进行译码。仿射运动模型可以基于由两个或更多个控制点运动矢量定义的运动场。因为用于仿射模式译码的块的运动信息不直接类似于常规帧间预测,所以用于仿射译码的块的运动信息没有被添加到HMVP表。这样,在视频数据的图片在该图片的区域中包括许多仿射译码块的情况下,由于来自更接近当前译码块的块的运动信息通常比来自距当前译码块更远的块的运动矢量更准确,因此存储在HMVP表中的运动信息可能变得越来越不准确。

为了解决在使用帧间预测和仿射模式运动补偿两者的视频译码技术中与HMVP表准确性相关的问题,本公开描述了用于在使用仿射译码模式对视频数据的块进行译码时更新HMVP表的技术。在一个示例中,视频编码器和视频解码器可使用来自在空域上与帧间译码的块相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表。以此方式,即使当使用仿射模式对块进行译码时,HMVP表也被更新。

在一个示例中,一种方法包括:使用仿射运动补偿预测来对视频数据的第一块进行译码,使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表,使用基于历史的运动矢量预测表来确定用于视频数据的第二块的运动矢量,并使用确定的运动矢量对视频数据的第二块进行译码。

在另一示例中,一种装置包括:存储器,被配置为存储视频数据的第一块和视频数据的第二块,以及一个或多个处理器,被实现在电路中并与存储器通信,该一个或多个处理器被配置使用仿射运动补偿预测来对视频数据的第一块进行译码,使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表,使用基于历史的运动矢量预测表来确定用于视频数据的第二块的运动矢量,并使用确定的运动矢量对视频数据的第二块进行译码。

在另一示例中,一种装置包括:用于使用仿射运动补偿预测来对视频数据的第一块进行译码的部件,用于使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表的部件,用于使用基于历史的运动矢量预测表来确定用于视频数据的第二块的运动矢量的部件,以及用于使用确定的运动矢量对视频数据的第二块进行译码的部件。

在另一示例中,本公开描述了一种存储指令的非暂时性计算机可读存储介质,该指令在被执行时使一个或多个处理器使用仿射运动补偿预测来对视频数据的第一块进行译码,使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表,使用基于历史的运动矢量预测表来确定用于视频数据的第二块的运动矢量,并使用确定的运动矢量对视频数据的第二块进行译码。

一个或多个示例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,其他特征、目的和优点将是显而易见的。

附图说明

图1是图示了可执行本公开的技术的示例视频编码和解码系统的框图。

图2A和图2B是图示了示例四叉树二叉树(QTBT)结构以及对应的译码树单元(CTU)的概念图。

图3是图示了可执行本公开的技术的示例视频编码器的框图。

图4是图示了可执行本公开的技术的示例视频解码器的框图。

图5A是示出了用于合并模式的空域相邻候选的概念图。

图5B是示出了用于高级运动矢量预测(AMVP)模式的空域相邻候选的概念图。

图6A是示出了时域运动矢量预测器候选的概念图。

图6B是示出了运动矢量缩放的概念图。

图7是示出了使用基于历史的运动矢量预测器(HMVP)的解码流程图的流程图。

图8A是示出了用于HMVP的先入先出(FIFO)缓冲器的表更新过程的概念图。

图8B是示出了用于HMVP的约束FIFO缓冲器的表更新过程的概念图。

图9是图示了用于简化仿射运动模型的控制点的概念图。

图10是图示了用于子块的仿射运动矢量场的概念图。

图11是图示了用于仿射模式的示例运动矢量预测器的概念图。

图12是图示了仿射合并模式的候选的概念图。

图13是图示了仿射HMVP模式的空域相邻块的概念图。

图14是图示了仿射HMVP模式的非邻近空域相邻块的概念图。

图15是图示了示例编码方法的流程图。

图16是图示了示例解码方法的流程图。

图17是图示了另一示例编码方法的流程图。

图18是图示了另一示例解码方法的流程图。

具体实施方式

图1是图示可执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常针对对视频数据进行译码(例如,编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未译码的视频、编码的视频、解码的(例如,重建的)视频和视频元数据,诸如信令数据。如将在下面更详细地描述的,本公开描述了当使用仿射运动补偿对视频数据块进行译码(例如,编码和/或解码)时,用于更新基于历史的运动矢量预测(HMVP)表(例如,HMVP候选列表)的技术。

如图1所示,在此示例中,系统100包括源设备102,源设备102提供将由目标设备116解码和显示的编码的视频数据。特别地,源设备102经由计算机可读介质110将视频数据提供给目标设备116。源设备102和目标设备116可以包括各种设备中的任何一种,包括台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、诸如智能电话的电话手持机、电视、相机、显示设备、数字媒体播放器、视频游戏机、视频流设备等。在一些情况下,源设备102和目标设备116可以被配备用于无线通信,因此可以被称为无线通信设备。

在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目标设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目标设备116的视频解码器300可以被配置为应用用于仿射模式的基于历史的运动矢量预测的技术,如将在下面更详细地描述。源设备102表示视频编码设备的示例,而目标设备116表示视频解码设备的示例。在其他示例中,源设备102和目标设备116可以包括其他组件或布置。例如,源设备102可以从诸如外部相机的外部视频源接收视频数据。同样,目标设备116可以与外部显示设备接口,而不包括集成显示设备。

如图1所示的系统100仅仅是一个示例。通常,任何数字视频编码和/或解码设备都可以针对仿射模式的基于历史的运动矢量预测执行本公开的技术。源设备102和目标设备116仅仅是这种译码设备的示例,其中源设备102生成译码视频数据以发送到目标设备116。本公开将“译码”设备称为执行数据的译码(例如,编码和/或解码)的设备。即,术语“译码”通常可以指编码或解码。同样,术语“译码”通常可以指编码或解码。因此,视频编码器200和视频解码器300分别表示译码设备(特别是视频编码器和视频解码器)的示例。在一些示例中,设备102、116可以以基本上对称的方式操作,使得设备102、116中的每个包括视频编码和解码组件。因此,系统100可以支持视频设备102、116之间的单向或双向视频传输,例如用于视频流式传输、视频回放、视频广播或视频电话。

通常,视频源104表示视频数据的源(即,原始的、未译码的视频数据),并将视频数据的一系列顺序的图片(也称为“帧”)提供给视频编码器200,视频编码器200对针对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,诸如摄像机、包含先前捕获的原始视频的视频存档和/或视频馈送接口以从视频内容提供商接收视频。作为另一备选,视频源104可以生成基于计算机图形的数据作为源视频,或者是实时视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收到的顺序(有时称为“显示顺序”)重新排列为用于译码的译码顺序。视频编码器200可以生成包括编码的视频数据的比特流。然后,源设备102可以经由输出接口108将编码的视频数据输出到计算机可读介质110上,以通过例如目标设备116的输入接口122进行接收和/或检索。

源设备102的存储器106和目标设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始的、解码的视频数据。附加地或可替代地,存储器106、120可以存储分别可由诸如视频编码器200和视频解码器300执行的软件指令。尽管在该示例中视频编码器200和视频解码器300分开示出,但是应当理解,视频编码器200和视频解码器300还可以包括内部存储器用于功能上相似或等效的目的。此外,存储器106、120可以存储编码的视频数据,例如,从视频编码器200输出并输入到视频解码器300的编码的视频数据。在一些示例中,存储器106、120的部分可被分配为一个或多个视频缓冲器,诸如,以存储原始的、解码的和/或编码的视频数据。

计算机可读介质110可以表示能够将编码的视频数据从源设备102运输到目标设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示一种通信介质,该通信介质使源设备102能够例如经由射频网络或基于计算机的网络将编码的视频数据直接实时地传输到目标设备116。根据诸如无线通信协议的通信标准,输出接口108可以调制包括编码的视频数据的传输信号,输入接口122可以对接收到的传输信号进行调制。通信介质可以包括任何无线或有线的通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络(诸如局域网、广域网或诸如互联网的全球网络)的一部分。通信介质可以包括路由器、交换机、基站或有助于从源设备102到目标设备116的通信的任何其他设备。

在一些示例中,源设备102可以将编码的数据从输出接口108输出到存储设备116。类似地,目标设备116可以经由输入接口122访问来自存储设备116的编码的数据。存储设备116可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器或用于存储编码的视频数据的任何其他合适的数字存储介质。

在一些示例中,源设备102可以将编码的视频数据输出到文件服务器114或可以存储由源设备102生成的编码的视频的另一中间存储设备。目标设备116可以经由流式传输或下载来访问来自文件服务器114的存储的视频数据。文件服务器114可以是能够存储编码的视频数据并将该编码的视频数据发送到目标设备116的任何类型的服务器设备。文件服务器114可以表示网络服务器(诸如,用于网站)、文件传输协议(FTP)服务器、内容传递网络设备或网络附加存储(NAS)设备。目标设备116可以通过包括互联网连接的任何标准数据连接来访问来自文件服务器114的编码的视频数据。这可能包括适合访问存储在文件服务器114上的编码的视频数据的无线通道(例如Wi-Fi连接)、有线连接(例如DSL、电缆调制解调器等)或二者的组合。文件服务器114和输入接口122可以被配置为根据流式传输协议、下载传输协议或其组合来操作。

输出接口108和输入接口122可以表示无线发送器/接收器、调制解调器、有线网络组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据诸如4G、4G-LTE(长期演进)、高级LTE、5G等的蜂窝通信标准来传输诸如编码的视频数据的数据。在输出接口108包括无线发送器的一些示例中,输出接口108和输入接口122可以配置为根据诸如IEEE 802.11规范、IEEE 802.15规范(例如ZigBeeTM)、BluetoothTM标准等的其他无线标准来传送诸如编码的视频数据的数据。在一些示例中,源设备102和/或目标设备116可以包括各自的片上系统(SoC)设备。例如,源设备102可以包括SoC设备以执行归因于视频编码器200和/或输出接口108的功能,目标设备116可以包括SoC设备以执行归因于视频解码器300和/或输入接口122的功能。

本公开的技术可以应用于支持各种多媒体应用中的任何一种的视频译码,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输(诸如HTTP上的动态自适应流式传输(DASH)),将数字视频编码到数据存储介质上,对存储在数据存储介质上的数字视频进行解码,或其他应用。

目标设备116的输入接口122从计算机可读介质110(例如,存储设备112、文件服务器114等)接收编码的视频比特流。编码的视频比特流计算机可读介质110可以包括由视频编码器200定义的,也由视频解码器300使用的信令信息,诸如具有描述视频块或其他译码单元的特性和/或过程的值的语法元素(例如,条带、图片、图片组、序列等)。显示设备118向用户显示解码的视频数据的解码的图片。显示设备118可以表示各种显示设备中的任何一种,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一种类型的显示设备。

如将在下面更详细解释的,本公开描述了用于根据基于历史的运动矢量预测(HMVP)表的帧间预测运动矢量候选列表构建的技术。在本发明的一些示例中,视频编码器200和视频解码器300可被配置为在使用帧间预测对视频数据的块进行编码和/或解码之后,使用常规的平移运动矢量来更新HMVP表。在此上下文中,常规的平移运动矢量是一种运动矢量,该运动矢量使用正被译码的块和预测块之间的x、y位移指向不同图片中的预测块。视频编码器200和视频解码器300可以在HMVP表中存储预定义数量的运动矢量。随着新的运动矢量被添加到HMVP表中,较旧的运动矢量可以被移除(例如,以先进先出的方式)。在一些情况下,视频编码器200和视频解码器300可以被配置为使用存储在HMVP表中的运动矢量来构建运动矢量预测器列表,并使用运动矢量预测器列表来确定帧间预测块的运动矢量。

除了使用常规的平移运动矢量执行帧间预测之外,视频编码器200和视频解码器300还可被配置为使用更复杂的运动模型(例如仿射运动模型)对视频块进行译码。仿射运动模型可以基于由两个或更多个控制点运动矢量定义的运动场。因为用于仿射模式译码的块的运动信息不直接类似于常规帧间预测,所以用于仿射译码的块的运动信息没有被添加到HMVP表。这样,在视频数据的图片在图片的区域中包括许多仿射译码块的情况下,由于来自更接近当前译码块的块的运动信息通常比来自距当前译码块更远的块的运动矢量更准确,因此存储在HMVP表中的运动信息可能变得越来越不准确。

为了解决在使用帧间预测和仿射模式运动补偿两者的视频译码技术中与HMVP表准确性相关的问题,本公开描述了用于在使用仿射译码模式对视频数据的块进行译码时更新HMVP表的技术。在一个示例中,视频编码器200和视频解码器300可使用来自在空域上与帧间译码的块相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表。以这种方式,即使当使用仿射模式对块进行译码时,HMVP表也被更新。

例如,视频编码器200可以被配置为使用仿射运动补偿预测来对视频数据的第一块进行编码,使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表,使用基于历史的运动矢量预测表来确定用于视频数据的第二块的运动矢量,并使用编码的运动矢量对视频数据的第二块进行编码。

同样,视频解码器300可以被配置为使用仿射运动补偿预测来对视频数据的第一块进行解码,使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表,使用基于历史的运动矢量预测表来确定用于视频数据的第二块的运动矢量,并使用解码的运动矢量对视频数据的第二块进行解码。

尽管未在图1中示出,但在某些示例中,视频编码器200和视频解码器300可以分别与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元或其他硬件和/或软件,以处理公共数据流中包括音频和视频两者的多路复用流。如果适用,则MUX-DEMUX单元可以符合ITU H.223多路复用器协议或其他协议,诸如用户数据报协议(UDP)。

视频编码器200和视频解码器300可各自实现为各种合适的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当技术部分地以软件实施时,设备可将用于软件的指令存储在合适的非暂时性计算机可读介质中,并使用一个或多个处理器以硬件方式执行指令以执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任一个可以被集成为相应设备中的组合的编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。

视频编码标准包括ITU-T H.261、ISO/IEC MPEG-1视觉、ITU-T H.262或ISO/IECMPEG-2视觉,ITU-T H.263、ISO/IEC MPEG-4视觉和ITU-T H.264(也称为ISO/IEC MPEG-4AVC),包括其可缩放视频编码(SVC)和多视图视频编码(MVC)扩展。

此外,高效视频编码(HEVC)或ITU-T H.265(G.J.Sullivan、J.-R.Ohm、W.-J.Han、T.Wiegand的"Overview of the High Efficiency Video Coding(HEVC)Standard,"IEEETransactions on Circuits and Systems for Video Technology,vol.22,no.12.pp.1649-1668,December 2012(“高效视频编码(HEVC)标准概述”,IEEE视频技术电路和系统学报,第22卷,第12期,第1649-1668页,2012年12月)),包括其范围扩展、多视图扩展(MV-HEVC)和可缩放扩展(SHVC),已由视频编码联合协作组(JCT-VC)以及ITU-T视频编码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)的3D视频编码扩展开发联合协作组(JCT-3V)开发。

ITU-T VCEG(Q6/16)和ISO/IEC MPEG(JTC 1/SC 29/WG 11)现在正在开发未来视频编码技术,其压缩能力将大大超过当前HEVC标准(包括其针对屏幕内容编码和高动态范围编码的当前扩展和近期扩展)。这些组在被称为联合视频探索小组(JVET)的联合协作中共同致力于这一探索活动,以评估在这一领域的专家所提出的压缩技术设计。JVET于2015年10月19日至21日首次会面。在以下文档中描述了联合探索测试模型7(JEM-7)的算法描述:J.Chen、E.Alshina、G.J.Sullivan、J.-R.Ohm、J.Boyce的"Algorithm Description ofJoint Exploration Test Model 7",JVET-G1001,July 2017(“联合探索测试模型7的算法描述”,JVET-G1001,2017年7月)。

用于新的视频编码标准(称为H.266/多功能视频编码(VVC)标准)的一个草案可以在Benjamin Bross的文档JVET-J1001“Versatile Video Coding (Draft 1)”(JVET-J1001“多功能视频编码(草案1)”)中获得,其算法描述可以在Jianle Chen和Elena Alshina的文档JVET-J1002“Algorithm description for Versatile Video Coding and Test Model1(VTM 1)”(JVET-J1002“多功能视频编码和测试模型1(VTM 1)的算法描述”)中获得。

视频编码器200和视频解码器300可以根据视频编码标准(例如ITU-T H.265,也称为高效视频编码(HEVC))或其扩展(例如多视图和/或可缩放视频编码扩展)进行操作。在其他示例中,视频编码器200和视频解码器300可以根据诸如联合探索测试模型(JEM)和/或VVC的其他专有或工业标准来操作。然而,本公开的技术不限于任何特定的编码标准。

通常,视频编码器200和视频解码器300可以执行图片的基于块的译码。术语“块”通常是指包括要处理(例如,编码、解码或在编码和/或解码过程中以其他方式使用)的数据的结构。例如,块可以包括亮度数据和/或色度数据的样点的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y、Cb、Cr)格式表示的视频数据进行译码。也就是说,视频编码器200和视频解码器300不是对图片的样点的红色、绿色和蓝色(RGB)数据进行译码,而是可以对亮度分量和色度分量进行译码,其中色度分量可以包括红色色调色度分量和蓝色色调色度分量两者。在一些示例中,视频编码器200在编码之前将接收到的RGB格式的数据转换成YUV表示,并且视频解码器300将YUV表示转换成RGB格式。在其他示例中,预处理单元和后处理单元(未示出)可以执行这些转换。

本公开通常可涉及对图片进行译码(例如,编码和解码)以包括对图片的数据进行编码或解码的过程。类似地,本公开可涉及对图片的块进行译码以包括对块的数据进行编码或解码的过程,例如,预测和/或残差译码。编码的视频比特流通常包括用于语法元素的一系列值,这些语法元素表示译码决策(例如,译码模式)以及图片到块的分割。因此,对于对图片或块进行译码的引用通常应理解为对用于形成图片或块的语法元素的进行译码。

HEVC定义了各种的块,包括译码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频译码器(诸如视频编码器200)根据四叉树结构将译码树单元(CTU)分割为CU。也就是说,视频译码器将CTU和CU分割为四个相等的非重叠正方形,并且四叉树的每一个节点具有零个或四个子节点。没有子节点的节点可以称为“叶节点”,并且这种叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频译码器可以进一步分割PU和TU。例如,在HEVC中,残差四叉树(RQT)表示对TU的分割。在HEVC中,PU表示帧间预测数据,而TU表示残差数据。被帧内预测的CU包括帧内预测信息,诸如帧内模式指示。

作为另一示例,视频编码器200和视频解码器300可以被配置为根据JEM和/或VVC的示例进行操作。根据JEM/VVC的示例,视频译码器(诸如视频编码器200和视频解码器300)将图片分割为多个译码树单元(CTU)。视频编码器200和视频解码器300可以根据诸如四叉树-二叉树(QTBT)结构的树结构来对CTU进行分割。JEM/VVC的示例的QTBT结构消除了多个分割类型的概念,诸如HEVC的CU、PU和TU之间的分隔。JEM/VVC的示例的QTBT结构可以包括两个级别:根据四叉树分割而分割得到的第一级,以及根据二叉树分割而分割得到的第二级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于译码单元(CU)。

在多类型树(MTT)分区结构中,可以使用四叉树(QT)分割、二叉树(BT)分割以及一种或多种类型的三叉树(triple tree,TT)(也称为三元树(ternary tree,TT))分割来对块进行分割。三叉树或三元树分割是将一个块拆分三个子块的分割。在一些示例中,三叉树或三元树分割将一个块划分为三个子块,而无需通过中心划分初始块。MTT中的分割(partitioning)类型(例如QT、BT和TT)可以是对称或不对称的。

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

视频编码器200和视频解码器300可以配置为使用每HEVC四叉树分割、QTBT分割、MTT分割或其他分割结构。出于说明的目的,针对QTBT分割给出了本公开的技术的描述。然而,应该理解的是,本公开的技术还可以应用于被配置使用四叉树分割或其它类型的分割的视频译码器。

可以以各种方式在图片中对块(例如CTU或CU)进行分组。作为一个示例,砖块(brick)可以指图片中的特定图块(tile)内的CTU行的矩形区。图块可以是图片中在特定图块列和特定图块行内的CTU的矩形区。图块列指的是CTU的矩形区,其高度等于图片的高度并且宽度由(例如在图片参数集中的)语法元素指定。图块行是指CTU的矩形区,其具有由(例如在图片参数集中的)语法元素指定的高度并且其宽度等于图片的宽度。

在一些示例中,可以将图块分割成多个砖块,每一个砖块可以包括图块内一个或多个CTU行。没有被分割为多个砖块的图块也可以被称为砖块。但是,作为图块的真子集的砖块不可以被称为图块。

图片中的砖块也可以成条带排列。条带可以是图片的砖块的整数倍,这些砖块可以排他地包含在单个网络抽象层(NAL)单元中。在一些示例中,条带包括多个完整图块或仅仅一个图块的完整砖块的连续序列。

本公开可以互换地使用“N×N”和“N乘N”来指块(诸如CU或其他视频块)在垂直和水平维度方面的样点维度,例如16×16样点或16乘以16样点。一般地,16×16CU在垂直方向上将有16个样点(y=16),在水平方向上将有16个样点(x=16)。同样地,N×N CU通常在垂直方向上具有N个样点,在水平方向上具有N个样点,其中N表示非负整数值。CU中的样点可以按行和列排列。此外,CU在水平方向上不必具有与垂直方向上相同数量的样点。例如,CU可以包含N×M个样点,其中M不一定等于N。

视频编码器200对表示预测和/或残差信息以及其他信息的CU的视频数据进行编码。预测信息指示将如何预测CU以便形成对CU的预测块。残差信息通常表示编码前CU的样点与预测块之间的逐样点差异。

为了预测CU,视频编码器200通常可以通过帧间预测或帧内预测来形成对CU的预测块。帧间预测通常是指从先前译码的图片的数据中预测CU,而帧内预测通常是指从相同图片的先前译码的数据中预测CU。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索,以识别例如就CU和参考块之间的差异而言与CU紧密地匹配的参考块。视频编码器200可以使用绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)或其他此类差值计算来计算差值度量,以确定参考块是否与当前CU紧密地匹配。在一些示例中,视频编码器200可以使用单向预测或双向预测来对当前CU进行预测。

JEM和VVC的一些示例还提供了仿射运动补偿模式,其可以视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或更多个运动矢量,诸如放大或缩小、旋转、透视运动或其他不规则运动类型。

为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。JEM和VVC的一些示例提供了六十七种帧内预测模式,包括各种方向的模式以及平面模式和DC模式。一般地,视频编码器200选择描述到当前块(例如CU的块)的相邻样点的帧内预测模式,以从相邻样点预测当前块的样点。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对CTU和CU进行译码,则此类样点通常可以在与当前块相同的图片中在当前块的上方、上到左侧(上左侧)或左侧。

视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示使用各种可用帧间预测模式中的哪一种以及对应模式的运动信息的数据进行编码。对于单向或双向帧间预测,例如视频编码器200可以使用高级运动矢量预测(AMVP)或合并模式来对运动矢量进行编码。视频编码器200可以使用类似模式来对用于仿射运动补偿模式的运动矢量进行编码。

在对块的诸如帧内预测或帧间预测的预测之后,视频编码器200可以计算块的残差数据。残差数据(诸如残差块)表示块与该块的使用相应预测模式形成的预测块之间的逐样点差异。视频编码器200可以将一个或多个变换应用于残差块,以在变换域而非样点域中产生变换数据。例如,视频编码器200可以将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在第一变换之后应用二次变换,诸如模式依赖的不可分二次变换(MDNSST)、信号依赖的变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换之后产生变换系数。

如上所述,在用来产生变换系数的任何变换之后,视频编码器200可以执行变换系数的量化。量化通常是指对变换系数进行量化以可能地减少用于表示系数的数据量,从而提供进一步的压缩的过程。通过执行量化过程,视频编码器200可以减小与系数中的一些或所有相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值四舍五入为m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以对待量化的值执行按比特(bitwise)右移。

量化之后,视频编码器200可以对变换系数进行扫描,从而从包括量化的变换系数的二维矩阵中生成一维矢量。可以将扫描设计为将较高能量(因此频率较低)的系数放在矢量的前面,并将较低能量(因此频率较高)的变换系数放在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描顺序来对量化的变换系数进行扫描以产生序列化的矢量,然后对矢量的量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在对量化的变换系数进行扫描以形成一维矢量之后,例如根据上下文自适应的二进制算术译码(CABAC),视频编码器200可以对一维矢量进行熵编码。视频编码器200还可以对语法元素的值进行熵编码,语法元素描述与编码视频数据相关联的元数据,以由视频解码器300在对视频数据进行解码中使用。

为了执行CABAC,视频编码器200可以将上下文模型内的上下文分配给待发送的符号。上下文可以涉及例如符号的相邻值是否是零值。概率确定可以基于分配给符号的上下文。

视频编码器200可以进一步地,诸如在图片标头、块标头、条带标头中,生成至视频解码器300的语法数据,诸如基于块的语法数据、基于图片的语法数据以及基于序列的语法数据,或其他语法数据,诸如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。视频解码器300可以类似地对此类语法数据进行解码来确定如何对对应视频数据进行解码。

以此方式,视频编码器200可以生成包括编码视频数据的比特流,例如描述将图片分割成块(例如CU)的语法元素以及块的预测和/或残差信息。最终,视频解码器300可以接收比特流并且对编码视频数据进行解码。

一般地,视频解码器300执行的是与视频编码器200执行的相反过程,以对比特流的编码视频数据进行解码。例如,视频解码器300可以以与视频编码器200的CABAC编码过程基本相似(尽管与之相反)的方式,使用CABAC对比特流的语法元素的值进行解码。语法元素可以定义分割信息,该分割信息用于将图片分割为CTU,以及根据诸如QTBT结构和/或MTT结构的对应分割结构对每一个CTU进行分割来定义CTU的CU。语法元素可以进一步定义视频数据的块(例如CU)的预测和残差信息。

残差信息可以由例如量化的变换系数表示。视频解码器300可以对块的量化的变换系数进行逆量化和逆变换,以对块的残差块进行再现。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关的预测信息(例如用于帧间预测的运动信息)来形成用于块的预测块。然后,视频解码器300可以(在逐样点的基础上)组合预测块和残差块以对初始块进行再现。视频解码器300可以执行附加处理(诸如执行去方块过程)来减少沿块边界的视觉伪影。

本公开通常可以指“信令通知(signaling)”某些信息,诸如语法元素。术语“信令通知”通常可以指对于语法元素和/或用于对编码视频数据进行解码的其他数据的值的通信。也就是说,视频编码器200可以在比特流中信令通知的语法元素的值。一般地,信令通知是指在比特流中生成值。如上所述,源设备102可以基本上实时地将比特流运送到目标设备116,或非实时地将比特流运送到目标设备116,诸如在将语法元素存储到存储设备112以供稍后由目标设备116检索时可能发生。

图2A和图2B是示出示例四叉树二叉树(QTBT)结构130和对应译码树单元(CTU)132的概念图。实线表示四叉树拆分,并且虚线指示二叉树拆分。在二叉树的每一个拆分(即非叶)节点中,发信号通知一个标志以指示使用哪种拆分类型(即水平或垂直),其中在本示例中0指示水平拆分,而1指示垂直拆分。对于四叉树拆分,由于四叉树节点将块水平和垂直地拆分为尺寸相等的4个子块,因此无需指示拆分类型。相应地,视频编码器200和视频解码器300可以分别地对用于QTBT结构130的区域树级别(即实线)的语法元素(例如拆分信息)和用于QTBT结构130的预测树级别(即虚线)的语法元素(例如拆分信息)进行编码和解码。视频编码器200和视频解码器300可以分别地对针对由QTBT结构130的终端叶节点表示的CU的视频数据(诸如预测和变换数据)进行编码和解码。

一般地,图2B的CTU132可以与参数相关联,这些参数定义与第一和第二级别的QTBT结构130的节点相对应的块的尺寸。这些参数可以包括CTU尺寸(表示样点中CTU 132的尺寸)、最小四叉树尺寸(MinQTSize,表示最小允许四叉树叶节点尺寸)、最大二叉树尺寸(MaxBTSize,表示最大允许二叉树根节点尺寸)、最大二叉树深度(MaxBTDepth,表示最大允许二叉树深度)和最小二叉树尺寸(MinBTSize,表示最小允许二叉树叶节点尺寸)。

与CTU相对应的QTBT结构的根节点可以在QTBT结构的第一级别具有四个子节点,每一个子节点可以根据四叉树分割来分割。即第一级别的节点是叶节点(没有子节点)或具有四个子节点。QTBT结构130的示例表示这样的节点,其包括父节点和具有实线分支的子节点。如果第一级别的节点不大于最大允许二叉树根节点尺寸(MaxBTSize),则可以通过各自的二叉树进一步对节点进行分割。可以对一个节点的二叉树拆分进行迭代,直到拆分生成的节点达到最小允许二叉树叶节点尺寸(MinBTSize)或最大允许二叉树深度(MaxBTDepth)。QTBT结构130的示例将这样的节点表示为具有虚线分支。二叉树叶节点称为译码单元(CU),其用于预测(例如图片内或图片间预测)和变换,而无需任何进一步分割。如上所述,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的高度的二叉树节点意味着对于该二叉树节点不允许进一步的垂直拆分。如上所述,二叉树的叶节点被称为CU,并且根据预测和变换对其进行进一步处理而无需进一步分割。

图3是示出了示例视频编码器200的框图,该示例视频编码器200可在使用仿射运动补偿对块进行译码时执行本公开的用于更新HMVP表的技术。提供图3是为了解释的目的,并且不应被认为是对本公开中广泛例示和描述的技术的限制。为了说明的目的,本公开在诸如开发中的HEVC视频译码标准和H.266/VVC视频译码标准的视频译码标准的上下文中描述了视频编码器200。然而,本公开的技术不限于这些视频译码标准,并且通常可应用于视频编码和解码。

在图3的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重建单元214、滤波器单元216、解码图片缓冲器(DPB)218和熵编码单元220。

视频数据存储器230可以存储将由视频编码器200的组件进行编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。DPB 218可以充当参考图片存储器,参考图片存储器存储参考视频数据,以供视频编码器200预测后续视频数据时使用。视频数据存储器230和DPB 218可以由多种存储器设备中的任何一种形成,诸如包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、阻变RAM(RRAM)的动态随机存取存储器(DRAM)或其他类型的存储器设备。视频数据存储器230和DPB 218可以由相同的存储器设备或单独的存储器设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件一起位于芯片上,如图所示,或者相对于那些组件位于芯片外。

在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器(除非特别这样说明),或者视频编码器200外部的存储器(除非特别这样说明)。而是,对视频数据存储器230的引用应理解为存储视频编码器200所接收的用于编码的视频数据(例如待编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供对来自视频编码器200的各个单元的输出的临时存储。

图示了图7的各个单元来帮助理解由视频编码器200执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并预设了能够执行的操作的电路。可编程电路是指可以被编程来执行各种任务,并且在能够执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使可编程电路以由软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如以接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,一个或多个单元可以是集成电路。

视频编码器200可以包括算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的目标代码,或者视频编码器200内的另一存储器(未示出)可以存储这样的指令。

视频数据存储器230被配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230中检索视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是待编码的原始视频数据。

模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加功能单元,以根据其他预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射运动补偿单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、线性模型(LM)单元等。

模式选择单元202通常协调多个编码过程来测试编码参数的组合以及所得的针对这些组合的率失真值。编码参数可以包括CTU到CU的分割、CU的预测模式、CU的残差数据的变换类型、CU的残差数据的量化参数等等。模式选择单元202可以最终选择具有比其他测试的组合更好的率失真值的编码参数的组合。

视频编码器200可以将从视频数据存储器230中检索到的图片分割为一系列CTU,并将一个或多个CTU封装在条带内。模式选择单元202可以根据诸如上述HEVC的QTBT结构或四叉树结构的树结构来对图片的CTU进行分割。如上所述,视频编码器200可以根据树结构通过对CTU进行分割来形成一个或多个CU。这样的CU通常也可以被称为“视频块”或“块”。

一般地,模式选择单元202还控制视频编码器200的组件(例如运动估计单元222、运动补偿单元224和帧内预测单元226)来生成当前块(例如当前CU,或在HEVC中,PU和TU的重叠部分)的预测块。为了对当前块进行帧间预测,运动估计单元222可以执行运动搜索来识别在一个或多个参考图片(例如存储在DPB 218中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以例如根据绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)等来计算表示潜在参考块与当前块有多相似的值。运动估计单元222通常可以使用当前块与正考虑的参考块之间的逐样点差异来执行这些计算。运动估计单元222可以识别具有从这些计算生成的最低值的参考块,该最低值指示与当前块最紧密匹配的参考块。

运动估计单元222可以形成一个或多个运动矢量(MV),运动矢量定义相对于当前块在当前图片中的位置的、参考块在参考图片中的位置。然后,运动估计单元222可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。作为另一示例,如果运动矢量具有分数样点精度,则运动补偿单元224可以根据一个或多个插值滤波器来对预测块的值进行插值。而且,对于双向帧间预测,运动补偿单元224可以检索由相应的运动矢量识别的两个参考块的数据,并且例如通过逐样点平均或加权平均来组合检索数据。

根据本公开的技术,当使用仿射模式对块进行译码时,运动估计单元222和运动补偿单元224可以执行帧间预测和运动矢量预测技术。例如,如下面将更详细解释的,运动估计单元222和运动补偿单元224可被配置为使用仿射运动补偿预测来对视频数据的第一块进行编码,使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表,使用基于历史的运动矢量预测表来确定视频数据的第二块的运动矢量,并使用编码的运动矢量对视频数据的第二块进行编码。

作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以从与当前块相邻的样点来生成预测块。例如,对于定向模式,帧内预测单元226通常可以数学地组合相邻样点的值,并在当前块上沿定义的方向填充这些计算值以产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以计算当前块的相邻样点的平均值,并且生成预测块来包括针对预测块的每一个样点的该结果平均值。

模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始的未译码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样点差。所得到的逐样点差定义当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中样点值之间的差,以使用残差差分脉冲代码调制(RDPCM)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。

在模式选择单元202将CU分割为PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种尺寸的PU。如上面所指出的,CU的尺寸可以指CU的亮度译码块的尺寸,而PU的尺寸可以指PU的亮度预测单元的尺寸。假设特定CU的尺寸为2N×2N,则视频编码器200可以支持用于帧内预测的2N×2N或NxN的PU尺寸,以及用于帧间预测的2N×2N、2N×N、N×2N、N×N或类似尺寸的对称PU尺寸。视频编码器200和视频解码器300还可以支持对用于帧间预测的2N×nU、2N×nD、nL×2N和nR×2N的PU尺寸的非对称分割。

在模式选择单元不将CU进一步分割为PU的示例中,每个CU可以与亮度译码块和对应的色度译码块相关联。如上所述,CU的尺寸可以指CU的亮度译码块的尺寸。视频编码器200和视频解码器300可以支持2N×2N、2N×N或N×2N的CU尺寸。

对于其他视频译码技术,诸如作为一些示例的块内复制模式译码、仿射模式译码和线性模型(LM)模式译码,模式选择单元202经由与译码技术相关联的相应单元来生成正在编码的当前块的预测块。在一些示例中,诸如调色板模式译码,模式选择单元202可以不生成预测块,而是生成语法元素,该语法元素指示将基于所选调色板重建块的方式。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220来进行编码。

如上所述,残差生成单元204接收针对当前块和相应预测块的视频数据。然后,残差生成单元204为当前块生成残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样点差。因此,

变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(在本文中称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(DCT)、方向变换、Karhunen-Loeve变换(KLT)或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行例如主变换和诸如旋转变换的辅变换的多重变换。在一些示例中,变换处理单元206不将变换应用于残差块。

量化单元208可以对变换系数块中的变换系数进行量化,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来对变换系数块的系数进行量化。视频编码器200(例如经由模式选择单元202)可以通过调整与CU相关联的QP值来调整应用于与当前块相关联的变换系数块的量化程度。量化可能会导致信息丢失,并且从而,量化的变换系数可能比由变换处理单元206产生的初始变换系数具有更低的精度。

逆量化单元210和逆变换处理单元212可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块中重建残差块。重建单元214可以基于重建的残差块和由模式选择单元202生成的预测块来产生与当前块对应的重建块(尽管潜在地具有某种程度的失真)。例如,重建单元214可以将重建的残差块的样点添加到来自由模式选择单元202生成的预测块的对应样点,以产生重建块。

滤波器单元216可以对重建块执行一个或多个滤波操作。例如,滤波器单元216可以执行解块操作来减少沿着CU的边缘的块状伪影。在一些示例中,可以跳过滤波器单元216的操作。

视频编码器200在DPB 218中存储重建块。例如,在不需要滤波器单元216的操作的示例中,重建单元214可以将重建块存储到DPB 218。在需要滤波器单元216的操作的示例中,滤波器单元216可以将滤波后的重建块存储到DPB 218。运动估计单元222和运动补偿单元224可以从DPB 218中检索参考图片,该参考图片是由重建(并且可能被滤波的)块形成的,来对随后的编码图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片的DPB 218中的重建块来对当前图片中的其他块进行帧内预测。

一般地,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对语法元素(其是视频数据的另一示例)执行一个或多个熵编码操作来生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应变量长度译码(CAVLC)操作、CABAC操作、变量到变量(V2V)长度译码操作、基于语法的上下文自适应二进制算术译码(SBAC)操作、概率间隔分割熵(PIPE)译码操作、指数-哥伦布编码操作或另一类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的旁路模式下操作。

视频编码器200可输出包括比特流,该比特流包括重建条带或图片的块所需的被熵编码的语法元素。特别地,熵编码单元220可以输出该比特流。

关于块描述了上述操作。这种描述应该被理解为用于亮度编码块和/或色度编码块的操作。如上所述,在一些示例中,亮度编码块和色度编码块是CU的亮度分量和色度分量。在一些示例中,亮度译码块和色度译码块是PU的亮度分量和色度分量。

在一些示例中,不必针对色度译码块重复针对亮度译码块执行的操作。作为一个示例,不必重复识别用于亮度译码块的运动矢量(MV)和参考图片的操作来识别用于色度块的MV和参考图片。相反,可以缩放用于亮度译码块的MV以确定用于色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,帧内预测过程可以是相同的。

图4是示出了示例视频解码器300的框图,该示例视频解码器300可在使用仿射模式对视频数据的块进行解码时执行用于更新HMVP表的本公开的技术。提供图4是为了解释的目的,并且不限制本公开中广泛例示和描述的技术。为了说明的目的,本公开描述了根据H.266/VVC、JEM和HEVC的技术描述的视频解码器300。然而,本公开的技术可以由被配置为其他视频译码标准的视频译码设备来执行。

在图4的示例中,视频解码器300包括译码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重建单元310、滤波器单元312和解码图片缓冲器(DPB)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括加法单元,以根据其他预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、帧内块复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。

CPB存储器320可以存储将由视频解码器300的组件解码的视频数据,例如编码的视频比特流。可以例如从计算机可读介质110(图1)获得CPB存储器320中存储的视频数据。CPB存储器320可以包括存储来自编码的视频比特流的编码的视频数据(例如,语法元素)的CPB。而且,CPB存储器320可以存储除译码图片的语法元素之外的视频数据,例如表示来自视频解码器300的各个单元的输出的临时数据。DPB 314通常存储解码的图片,当对编码的视频比特流的后续数据或图片进行解码时,视频解码器300可以输出和/或将解码的图片用作参考视频数据。CPB存储器320和DPB 314可以由各种存储器设备中的任何一种形成,例如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻性RAM(RRAM)或其他类型的存储器设备。CPB存储器320和DPB 314可以由相同的存储器设备或分离的存储器设备提供。在各种示例中,CPB存储器320可以与视频解码器300的其他组件在芯片上,或者相对于那些组件在芯片之外。

另外或替代地,在一些示例中,视频解码器300可从存储器120(图1)检索译码的视频数据。即,存储器120可以如上面与CPB存储器320讨论的那样存储数据。同样,当视频解码器300的某些或全部功能通过软件实现以由视频解码器300的处理电路执行时,存储器120可以存储要由视频解码器300执行的指令。

图示了图4中所示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。类似于图3,固定功能电路是指提供特定功能并预设可以执行的操作的电路。可编程电路是指可以编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件的指令所定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,这些单元中的一个或多个可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。

视频解码器300可包括ALU、EFU、数字电路、模拟电路和/或由可编程电路形成的可编程核。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如,目标代码)。

熵解码单元302可从CPB接收编码的视频数据,并对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重建单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成解码的视频数据。

通常,视频解码器300在逐块的基础上重建图片。视频解码器300可单独地对每个块执行重建操作(其中当前正在重建的(即,被解码的)块可被称为“当前块”)。

熵解码单元302可对定义量化的变换系数块的量化的变换系数的语法元素以及诸如量化参数(QP)和/或(多个)变换模式指示的变换信息进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的QP来确定量化度,并且同样地,确定逆量化度以供逆量化单元306应用。逆量化单元306可以例如执行按位左移操作以对量化的变换系数进行逆量化。逆量化单元306从而可以形成包括变换系数的变换系数块。

在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换应用于系数块。

此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是被帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示从中检索参考块的、DPB 314中的参考图片,以及识别相对于当前图片中的当前块的位置的参考图片中的参考块的位置的运动矢量。运动补偿单元316通常可以以与关于运动补偿单元224(图3)所描述的方式基本上相似的方式来执行帧间预测过程。

根据本公开的技术,当使用仿射模式对块进行译码时,运动补偿单元316可以执行帧间预测和运动矢量预测技术。例如,如下面将更详细解释的,运动补偿单元316可被配置为使用仿射运动补偿预测来对视频数据的第一块进行解码,使用来自与第一块空间相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表,使用基于历史的运动矢量预测表来确定视频数据的第二块的运动矢量,并使用编码的运动矢量对视频数据的第二块进行解码。

作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与关于帧内预测单元226(图3)描述的方式基本上相似的方式来执行帧内预测过程。帧内预测单元318可以从DPB 314检索当前块的相邻样点的数据。

重建单元310可以使用预测块和残差块来重建当前块。例如,重建单元310可以将残差块的样点添加到预测块的对应样点以重建当前块。

滤波器单元312可对重建块执行一个或多个滤波器操作。例如,滤波器单元312可执行去方块操作以减少沿着重建块的边缘的块状伪影。不一定在所有示例中都执行滤波器单元312的操作。

视频解码器300可将重建的块存储在DPB 314中。如上所述,DPB 314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图片的样点以及用于后续运动补偿的先前解码的图片。此外,视频解码器300可以从DPB输出解码的图片,以便随后在诸如图1的显示设备118的显示设备上呈现。

现在将讨论HEVC中的CU结构和运动矢量预测。在HEVC中,条带中最大的译码单元称为译码树块(CTB)或译码树单元(CTU)。CTB包含四叉树,其节点是译码单元。

在HEVC主配置文件中,CTB的尺寸可以在16×16到64×64的范围内(尽管在技术上可以支持8×8的CTB尺寸)。译码单元(CU)可以与CTB的尺寸相同,并且小至8×8。每个译码单元以一种模式(例如,帧间预测、帧内预测等)进行译码。当CU被帧间译码时,在不应用进一步分割的情况下,视频编码器200和视频解码器300可以进一步将CU分割为2或4个预测单元(PU)或仅分割为一个PU。当一个CU中存在两个PU时,它们可以是一半尺寸的矩形或是CU的1/4或3/4尺寸的两个矩形。

HEVC中的运动矢量预测

在HEVC标准中,对于预测单元(PU),有两种帧间预测模式,分别称为合并(跳过被视为无残差合并的特殊情况)和高级运动矢量预测(AMVP)模式。在AMVP或合并模式下,视频编码器200和视频解码器300可以构建和保持多个运动矢量预测器的运动矢量(MV)候选列表。视频编码器200和视频解码器300可通过从MV候选列表中获取一个候选的运动信息来生成当前PU的运动矢量以及在合并模式下的参考索引。

在HEVC中,MV候选列表最多包含5个用于合并模式的候选,而只有两个候选用于AMVP模式。合并候选可以包含一组运动信息,例如,与参考图片列表(列表0和列表1)和参考索引两者相对应的运动矢量。如果合并候选由合并索引标识,则视频编码器200和视频解码器300被配置为将参考图片用于当前块的预测。另外,视频编码器200和视频解码器300被配置为确定与合并索引相关联的运动矢量。但是,在AMVP模式下,对于来自列表0或列表1的每个潜在预测方向,由于AMVP候选仅包含运动矢量,因此视频编码器200与到MV候选列表的MV预测器(MVP)索引一起来显式地信令通知参考索引。在AMVP模式下,可以进一步细化预测的运动矢量。

从上面可以看出,合并候选对应于完整的运动信息集合,而AMVP候选仅包含用于特定预测方向的一个运动矢量和参考索引。两种模式的候选都类似地从相同的空域和时域相邻块中得出。

空域相邻候选

在HEVC中,对于特定PU(PU0),视频编码器200和视频解码器300可从图5A和图5B所示的相邻块中得出空域MV候选,尽管对于合并和AMVP模式用于从块生成候选的技术不同。

图5A是示出用于合并模式的块500的空域相邻候选的概念图。图5B是示出用于AMVP模式的块502的空域相邻候选的概念图。在合并模式下,视频编码器200和视频解码器300可以按照图5A所示的顺序得出多达四个空域MV候选。顺序如下:左块(0,A1)、上块(1,B1)、右上块(2,B0)、左下块(3,A0)和左上(4,B2)块。

在AVMP模式下,视频编码器200和视频解码器300可将相邻块分成两组:如图5B所示,左组包括块0和1,上组包括块2、3和4。对于每个组,参考相同的参考图片(如由信令通知的参考索引所指示)的相邻块中的潜在候选具有最高优先级以被选择来形成该组的最终候选,。可能所有相邻块都不包含指向同一参考图片的运动矢量。因此,如果找不到这种候选,则视频编码器200和视频解码器300可以缩放第一可用候选以形成最终候选。因此,能够补偿时域距离差。

HEVC中的时域运动矢量预测

视频编码器200和视频解码器300可以被配置为在空域运动矢量候选之后将时域运动矢量预测器(TMVP)候选(如果启用并且可用)添加到MV候选列表中。对于TMVP候选,运动矢量获得的过程对于合并和AMVP模式二者是相同的。但是,合并模式中的TMVP候选的目标参考索引被设置为0。

TMVP候选获得的主要块位置是并置PU外部的右下块。该右下块在图6A中被示为块600(T)。使用此位置进行TMVP候选获得补偿用来生成空域相邻候选的上方和左侧块的偏差。然而,如果块600位于当前CTB行的外部(例如,在块602处)或运动信息不可用,则视频编码器200和视频解码器300用PU 606(PU0)的中心块604代替块600。

视频编码器200和视频解码器300可从以条带级别(例如,在条带标头中)指示的同一位置的图片的同一位置的PU得出用于TMVP候选的运动矢量。对于同一位置的PU的运动矢量称为并置的MV。

类似于H.264/AVC中的时域直接模式,为了获得TMVP候选运动矢量,视频编码器200和视频解码器300可以缩放并置的MV以补偿时域距离差,如图6B所示。

下面介绍HEVC中合并和AMVP模式的其他几个方面。

运动矢量缩放:假设运动矢量的值与呈现时间中图片的距离成比例。运动矢量将两张图片:参考图片和包含运动矢量的图片(即包含图片)相关联。当运动矢量被用于预测另一运动矢量时,视频编码器200和视频解码器300可以基于图片顺序计数(POC)值计算包含图片和参考图片的距离。

在一些示例中,对于要被预测的运动矢量,其相关联的包含图片和参考图片两者可以是不同的。因此,视频编码器200和视频解码器300可以计算新的距离(基于POC),并且视频编码器200和视频解码器300可以基于这两个POC距离来缩放运动矢量。对于空域相邻候选,用于两个运动矢量的包含图片相同,而参考图片不同。在HEVC中,针对空域和时域相邻候选,运动矢量缩放适用于TMVP和AMVP二者。

人工运动矢量候选生成:如果运动矢量候选列表不完整(例如,包括少于预定数目的候选),则视频编码器200和视频解码器300可以生成并在运动矢量候选列表的末尾插入人工运动矢量候选,直到运动矢量候选列表具有规定数目的候选。

在合并模式中,有两种类型的人工MV候选:仅针对B条带得出的组合候选和零候选(如果第一种类型没有提供足够的人工候选)。

对于已经在候选列表中并且具有必要的运动信息的每对候选,运动矢量候选可以通过参考列表0中的图片的第一候选的运动矢量和参考列表1中的图片的第二候选的运动矢量的组合来得出双向组合的运动矢量候选。

候选插入的修剪过程:来自不同块的候选可能恰好是相同的,这降低了合并/AMVP候选列表的效率。视频编码器200和视频解码器300可以应用修剪过程来解决此问题。修剪过程将一个候选与当前候选列表中的其他候选进行比较以避免插入相同的候选。为了降低复杂度,在一些示例中,视频编码器200和视频解码器300可以仅应用有限数量的修剪过程,而不是将每个潜在候选与所有其他现有候选进行比较。

基于历史的运动预测

基于历史的运动矢量预测(HMVP)(例如,如以下文档所述:L.Zhang、K.Zhang、H.Liu、Y.Wang、P.Zhao和D.Hong的“CE4相关的:基于历史的运动矢量预测”,JVET-K0104,2018年7月)涉及保留针对先前解码的运动矢量的表作为HMVP候选。在一些示例中,视频编码器200和视频解码器300可被配置为在对非仿射帧间译码块(例如,遵循常规平移运动矢量译码的块)进行解码时更新HMVP表。视频编码器200和视频解码器300可将检索到的运动矢量作为新的HMVP候选添加到存储HMVP表的缓冲器或其他存储器的最后条目。在一些示例中,视频编码器200和视频解码器300可应用先入先出(FIFO)或约束FIFO规则以在HMVP表中添加或移除候选。视频编码器200和视频解码器300可以被配置为将HMVP表中的候选用于合并候选列表或AMVP候选列表。在一个示例中,包括组合候选和零候选的人工运动矢量可以被HMVP表中的候选代替。

在一些示例中,视频编码器200和视频解码器300可被配置为在处理新条带时清空HMVP表。也就是说,在一些示例中,视频编码器200和视频解码器300可被配置为在对新条带进行译码时移除HMVP表中的所有条目。如果以合并/跳过或AMVP模式对块进行译码,则视频编码器200和视频解码器300可被配置为构建用于该块的合并候选列表或AMVP候选列表。如果列表中的可用候选数目小于预定义的最大限制,则视频编码器200和视频解码器300可被配置为使用HMVP表中的候选来填充候选列表。如果存在非仿射帧间译码块(例如,使用常规帧间预测进行译码的块),则视频编码器200和视频解码器300可被配置为将与该块相关联的运动矢量添加到HMVP表的最后条目。视频编码器200和视频解码器300可以配置为在添加新候选之后更新HMVP表。

使用HMVP时的整体解码流程如图7所示。如图7所示,视频解码器300可以加载具有HMVP候选的表(700)。然后,视频解码器300可以使用HMVP候选来对视频数据的块进行解码(702)。例如,视频解码器300可使用来自HMVP表的候选来生成合并或AMVP候选列表。视频解码器300可以从合并或AMVP候选列表中确定用于当前块的运动信息(例如,运动矢量、参考图片索引和/或参考图片列表),然后可以使用所确定的运动信息对视频数据的块进行解码。视频解码器300然后可以利用解码的运动信息来更新HMVP表(704)。例如,视频解码器300可以将用于解码的视频数据的块的运动信息添加到HMVP表。然后,视频解码器300可使用预定规则(诸如以下描述的FIFO规则或FIFO约束规则)从HMVP表中移除一个或多个候选。

假设HMVP表尺寸为L,在一些示例中,视频编码器200和视频解码器300可以在将新的候选添加到包含S个HMVP候选的表时应用图8A所示的先入先出(FIFO)规则。如图8A所示,在更新之前,HMVP表包括HMVP候选HMVP0至HMVPL-1。用白色阴影和虚线轮廓示出将要移除的HMVP候选800(HMVP0)。用灰色阴影和虚线轮廓示出将要添加的HMPV候选802(CL-1)。在更新过程中,视频编码器200和视频解码器300将新的候选802(CL-1)添加到HMVP表的最后条目(以FIFO方式布置),并移除第一条目中的候选800(HMVP0)。这样,HMVP表始终包含L个最新候选。

FIFO规则可以使HMVP表包括冗余候选(例如,具有相同运动信息的候选)。在其他示例中,如图8B所示,视频编码器200和视频解码器300可以使用约束FIFO规则以解决冗余候选的问题。约束FIFO规则包括修剪过程。在添加新的候选802(CL-1)之前,视频编码器200和视频解码器300可以移除表中的冗余候选。在图8B中,冗余候选用点划线轮廓以白色着色。在图8B的示例中,候选804(HMVP2)与后来添加的候选(例如,候选806(HMVPL-1))相同。视频编码器200和视频解码器300可将位于移除的候选804之后的候选向前移动以填充空条目。然后,视频编码器200和视频解码器300可以将新的候选802(CL-1)添加到HMVP表的最后条目。

如上所述,视频编码器200和视频解码器300可以在合并候选列表构建过程中使用HMVP候选。视频编码器200和视频解码器300可以在TMVP候选之后的HMVP表中从最后条目到第一条目地插入HMVP候选。在一个示例中,视频编码器200和视频解码器300可被配置为将修剪过程应用于HMVP候选。在一个示例中,视频编码器200和视频解码器300可继续将HMVP候选插入到合并候选列表中,直到合并候选数目达到预定的最大极限为止。

类似地,视频编码器200和视频解码器300可以在AMVP候选列表构建过程中使用HMVP候选。视频编码器200和视频解码器300可以将最后的K个HMVP候选插入到AMVP候选列表中的TMVP候选之后。在一个示例中,插入的HMVP候选必须具有与AMVP相同的参考图片。视频编码器200和视频解码器300还可对HMVP候选应用修剪过程。

JEM中的仿射模式

在HEVC中,仅将平移运动模型应用于运动补偿预测(MCP)。而在现实世界中,存在多种运动,例如,放大/缩小、旋转、透视运动和其他不规则运动。在JEM中,应用了简化的仿射变换运动补偿预测。如图9所示,当前块900(Cur)的仿射运动场由两个控制点运动矢量描述:v0和v1。运动矢量v0与左上控制点902相关联,运动矢量v1与右上控制点904相关联。

通常,块的运动矢量场(MVF)由以下等式描述:

其中(v0x,v0y)是左上角控制点的运动矢量,(v1x,v1y)是右上角控制点的运动矢量。

为了进一步简化仿射运动补偿预测,视频编码器200和视频解码器300可以被配置为应用基于子块的仿射变换预测。视频编码器200和视频解码器300可以配置为得出子块尺寸M×N,如等式2中所示,其中MvPre是运动矢量分数精度(JEM中为1/16),(v2x,v2y)是根据等式1计算的左下控制点的运动矢量。

在通过等式2得出M和N之后,如果需要,视频编码器200和视频解码器300可以向下调整M和N的值,以使M和N分别为w和h的除数,其中w是将从中划分子块的块的宽度,h是将从中划分子块的块的高度。

为了得出每个M×N子块的运动矢量,如图10所示,视频编码器200和视频解码器300可以根据等式1计算每个子块的中心样点的运动矢量,并且四舍五入到1/16分数精度。

在仿射MCP之后,视频编码器200和视频解码器300可以以与常规运动矢量相同的精度舍入并保存每个子块的高精度运动矢量。

在JEM中,有两种仿射运动模式:仿射帧间预测模式(AF_INTER模式)和仿射合并模式(AF_MERGE模式)。对于宽度和高度均大于8的CU,视频编码器200和视频解码器300可被配置为使用AF_INTER模式。视频编码器200可被配置为在比特流中信令通知CU级别中的仿射标志以指示是否使用AF_INTER模式。在AF_INTER模式中,视频编码器200和视频解码器300可以使用相邻块构建具有运动矢量对{(v0,v1)|v0={vA,vB,vc},v1={vD,vE}}的候选列表。如图11所示,视频编码器200和视频解码器300可以从当前(Cur)块1100的相邻块A、B或C的运动矢量中选择v0。视频编码器200和视频解码器300可以根据参考列表以及相邻块的参考的POC值、当前CU的参考的POC值和当前CU的POC值之间的关系来缩放来自相邻块的运动矢量。从相邻块D和E中选择v1的方法是相似的。

如果候选列表中的候选的数目小于二(2),则视频编码器200和视频解码器300可以用通过复制每个AMVP候选而创建的运动矢量对来填充列表。当候选列表大于二(2)时,视频编码器200和视频解码器300可首先对根据相邻运动矢量的一致性(成对候选中的两个运动矢量的相似性)排序的候选进行排序,并且可以仅保留前两个候选。视频编码器200可使用率失真(RD)成本检查来确定选择哪个运动矢量对候选作为当前CU的控制点运动矢量预测器(CPMVP)。视频编码器200可在比特流中信令通知指示CPMVP候选列表中的位置的索引。在确定当前仿射CU的CPMVP之后,视频编码器200可以应用仿射运动估计,并且找到控制点运动矢量(CPMV)。然后,视频编码器200可在比特流中信令通知CPMV和CPMVP的差异。

当以AF_MERGE模式对CU进行译码时,视频编码器200和视频解码器300可被配置为从相邻重建块获得以仿射模式进行译码的第一块。如图12所示,候选块相对于当前(Cur)块1200的选择顺序是从左(A)、上(B)、右上(C)、左下(D)到左上(E)。如果以仿射模式对相邻的左下块A进行译码,则如图12所示,视频编码器200和视频解码器300可以得出包含块A的CU的左上角、右上角和左下角的运动矢量v2、v3和v4。视频编码器200和视频解码器300可以根据v2、v3和v4计算当前CU 1200上的左上角的运动矢量v0。接下来,视频编码器200和视频解码器300可以计算当前CU 1200的右上的运动矢量v1

在视频编码器200和视频解码器300得出当前CU v0和v1的CPMV之后,视频编码器200和视频解码器300可以根据等式1中的简化的仿射运动模型来生成当前CU的MV场。为了识别当前CU是否以AF_MERGE模式进行译码,视频编码器200可在存在至少一个以仿射模式进行译码的相邻块时在比特流中信令通知仿射标志。

在JEM和VVC的一些示例中,当使用HMVP表对视频数据进行译码时,视频编码器被配置为在遇到仿射模式块(即,使用仿射模式进行译码的块)时更新HMVP表。如果帧包含许多仿射模式块,则HMVP过程将在处理这些仿射模式块时使HMVP候选保持不变。因此,这些不变的HVMP候选对于未来的帧间译码块具有较少的译码改进。新的视频序列通常具有高分辨率和复杂的运动类型。这些复杂的运动通常使仿射模式块的数量更大。仿射模式块数量的增加可能会降低HMVP译码性能。

为了解决上述问题,提出了以下技术。以下技术的任何组合可以任意组合一起应用。

在本公开的一个示例中,对于仿射模式译码块,视频编码器200和视频解码器300可被配置为使用相对于当前仿射模式译码块的一个或多个空域相邻块的一个或多个运动矢量来更新HMVP表。例如,如图13所示,当前块1300的5个空域相邻块(A0、A1、B0、B1和B2)的MV(如果可用)可以用于更新HMVP表中的HMVP候选。在这种情况下,如果块具有关联的运动矢量(例如,相邻块是被帧间预测的),则该块“可用”。以此方式,即使在使用仿射模式对块进行译码时,也可以替换HMVP表中较旧的候选。这样,当使用来自HMVP表的运动矢量预测候选时可以改善帧间预测精度。

视频编码器200和视频解码器300可以被配置为以相同方式将运动矢量添加到HMVP表。因此,在本公开的一个示例中,视频编码器200和视频解码器300可被配置为使用仿射运动补偿预测来对视频数据的第一块(例如,图13的块1300)进行编码/解码(例如,译码)。视频编码器200和视频解码器300还可被配置为使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表。在本公开的一个示例中,视频编码器200和视频解码器300可以被配置为利用以下中的一个或多个来更新基于历史的运动矢量预测表:第一块的左下方空域相邻块(A0)的运动矢量、第一块的左侧空域相邻块(A1)的运动矢量、第一块的右上方空域相邻块(B0)的运动矢量、第一块的上方空域相邻块(B1)的运动矢量或第一块的左上方空域相邻块(B2)的运动矢量。

在一个示例中,视频编码器200和视频解码器300可将可从图13的块A0、A1、B0、B1和B2获得的第一运动矢量添加到HMVP表。视频编码器200和视频解码器300可以被配置为按以下顺序检查与第一块空域相邻的一个或多个块:左下方空域相邻块(A0)、左侧空域相邻块(A1)、右上方空域相邻块(B0)、上方空域相邻块(B1)和左上方空域相邻块(B2)。在其他示例中,视频编码器200和视频解码器300可以被配置为将可从空域相邻块A0、A1、B0、B1和B2获得的所有运动矢量添加到HMVP表。

在更新HMVP表之后,视频编码器200和视频解码器300可以被配置为使用常规帧间预测来对视频数据的第二块进行编码/解码。视频编码器200和视频解码器300可以被配置为使用基于历史的运动矢量预测表来确定视频数据的第二块的运动矢量。例如,如上所述,视频编码器200和视频解码器300可使用运动矢量预测的合并模式或AMVP模式来确定视频数据的第二块的运动矢量。为了执行运动矢量预测,视频编码器200和视频解码器300可以构建运动矢量候选列表。在一些示例中,如上所述,视频编码器200和视频解码器300可以使用来自基于历史的运动矢量预测表的至少一个运动矢量来构建运动矢量候选列表。视频编码器200和视频解码器300然后可以使用运动矢量候选列表来确定视频数据的第二块的运动矢量,并且使用所确定的运动矢量来对视频数据的第二块进行编码/解码。

块A0、A1、B0、B1和B2的使用只是可以用于将运动矢量添加到HMVP表的仿射译码块的空域相邻块的一个示例集合。可以使用不同数量和位置的块,包括非邻近的块。

在一个示例中,对于仿射模式块,如果可用的话,可以将图13中的左中(L)方相邻块和相邻上中(T)方块的MV用于更新HVMP候选。即,视频编码器200和视频解码器300可以被配置为利用第一块的左中方空域相邻块的运动矢量和第一块的上中方空域相邻块的运动矢量中的一个或多个运动矢量来更新基于历史的运动矢量预测表。

在另一示例中,对于仿射模式块,图13中的B1和B2之间的相邻块的MV(如果可用)可以用于更新HVMP候选。即,视频编码器200和视频解码器300的一个或多个处理器可以被配置为更新基于历史的运动矢量预测表,并且还被配置为使用右上方空域相邻块和左上方空域相邻块之间的、第一块的空域相邻块的一个或多个运动矢量来更新基于历史的运动矢量预测表。

在另一示例中,对于仿射模式块,图13中的A1和B2之间的相邻块的MV(如果可用)可以用于更新HVMP候选。即,视频编码器200和视频解码器300可以被配置为使用左下方空域相邻块与左上方空域相邻块之间的、第一块的空域相邻块的一个或多个运动矢量来更新基于历史的运动矢量预测表。

图14示出了非邻近的空域相邻块(例如,不与当前块直接相邻的块)的示例。在图14中,标识为1-5的块可以是当前块的邻近块(例如,紧邻),标识为6-49的块可以是当前块的非邻近块(例如,不是直接相邻的而是接近)。在一些示例中,与图14中所示的块相关联的数字可以表示将邻近和非邻近运动矢量预测候选添加到HMVP表中的顺序。

在本公开的另一示例中,对于仿射模式块,图14中的非邻近相邻块的MV(如果可用)也可以用于更新HVMP候选。即,视频编码器200和视频解码器300可以被配置为使用第一块的一个或多个非邻近空域相邻块来更新基于历史的运动矢量预测表。

本公开的技术允许更多的HMVP表更新。将当前仿射模式块的空域相邻可用运动矢量添加到HMVP表使得表被更新。因此,该表仍然以较高的概率保留较新的运动矢量以用于将来的预测或合并操作。

本公开的技术还可减少由仿射模式块引起的译译码效率劣化。仿射模型块适用于复杂的运动矢量。新的视频序列不仅包含高分辨率,还包含复杂的运动矢量。因此,当处理这些视频序列时,将以更高的概率选择仿射模式。当在仿射模型下对块进行译码时更新HMVP表可以提高非仿射块的译码效率。

图15是示出了示例编码方法的流程图。图15的技术可以由视频编码器200(参见图3)的一个或多个结构单元执行,包括运动估计单元222和/或运动补偿单元224。

在本公开的一个示例中,视频编码器200可被配置为使用仿射运动补偿预测对视频数据的第一块进行编码(1500),并使用来自与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表(1502)。视频编码器200还可被配置为使用基于历史的运动矢量预测表来确定视频数据的第二块的运动矢量(1504),并使用所确定的运动矢量对视频数据的第二块进行编码(1506)。

在一些示例中,视频编码器200可以包括被配置为捕获包含视频数据的第一块和视频数据的第二块的图片的相机。

图16是示出了示例解码方法的流程图。图16的技术可由包括运动补偿单元316的视频解码器300(参见图4)的一个或多个结构单元来执行。

在本公开的一个示例中,视频解码器300可被配置为使用仿射运动补偿预测对视频数据的第一块进行解码(1600),并使用来自上与第一块空域相邻的一个或多个块的一个或多个运动矢量来更新基于历史的运动矢量预测表(1602)。视频解码器300还可被配置为使用基于历史的运动矢量预测表来确定视频数据的第二块的运动矢量(1604),并使用所确定的运动矢量对视频数据的第二块进行解码(1606)。

在一些示例中,视频解码器300可以包括被配置为显示包含视频数据的第一块和视频数据的第二块的图片的显示器。

图17是示出了用于对当前块进行编码的示例方法的流程图。当前块可以包括当前CU。尽管关于视频编码器200(图1和图3)进行了描述,但是应当理解,其他设备可以被配置为执行与图17的方法类似的方法。

在此示例中,视频编码器200最初预测当前块(350)。例如,视频编码器200可以形成用于当前块的预测块。然后,视频编码器200可以计算用于当前块的残差块(352)。为了计算残差块,视频编码器200可以计算原始的未经译码块与用于当前块的预测块之间的差。然后,视频编码器200可以变换和量化残差块的系数(354)。接下来,视频编码器200可以扫描残差块的经量化的变换系数(356)。在扫描期间或在扫描之后,视频编码器200可以对系数进行熵编码(358)。例如,视频编码器200可以使用CAVLC或CABAC对系数进行编码。然后,视频编码器200可以输出用于块的系数的经熵译码数据(360)。

图15是示出用于对当前视频数据块进行解码的示例方法的流程图。当前块可以包括当前CU。尽管是关于视频解码器300(图1和图4)描述的,但是应当理解,其它设备可以被配置为执行类似于图15的方法。

视频解码器300可以接收当前块的经熵译码数据,诸如经熵译码的预测信息和与当前块相对应的残差块的系数的经熵译码数据(370)。视频解码器300可以对经熵译码数据进行解码以确定用于当前块的预测信息并再现残差块的系数(372)。视频解码器300可以预测当前块(374),例如,使用用于当前块的预测信息所指示的帧内或帧间预测模式,以计算用于当前块的预测块。然后,视频解码器300可以逆扫描所再现的系数(376),以创建经量化的变换系数的块。然后,视频解码器300可以对系数进行逆量化和逆变换以产生残差块(378)。视频解码器300可以通过组合预测块和残差块来最终解码当前块(380)。

应该认识到,根据示例,本文中描述的任何技术的某些动作或事件可以以不同的序列执行,可以被一起添加、合并或省去(例如,不是所有描述的动作或事件是技术实践所必须的)。此外,在某些示例中,动作或事件可以,例如通过多线程处理、中断处理或多个处理器并发地处理而不是顺序地执行。

在一个或多个示例中,可以以硬件、软件、固件或其任意组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。

作为示例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储设备、闪存或可以用于以指令或数据结构形式存储所需程序代码并且可以由计算机访问的任何其它介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(诸如红外、无线电和微波)从网站、服务器或其它远程源发送指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或诸如红外、无线电和微波之类的无线技术。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它暂时性介质,而是针对非暂时性有形存储介质。如本申请中使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常以磁性方式重现数据,而光盘用激光光学地重现数据。上述的组合也应包括在计算机可读介质的范围内。

指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它等效集成的或分立逻辑电路。因此,如本申请中所使用的术语“处理器”可以是指任何前述结构或适合于实现本申请中描述的技术的任何其它结构。另外,在一些方面,本申请中描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或合并在组合编解码器中。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。

本公开的技术可以在包括无线手机、集成电路(IC)或一组IC(例如,芯片组)的多种设备或装置中实现。在本公开中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作硬件单元的集合来提供,包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。

已经描述了各种示例。这些和其它示例在所附权利要求的范围内。

50页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:分区内编码概念

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类