具有自适应方向信息集合的最终运动矢量表达

文档序号:690451 发布日期:2021-04-30 浏览:13次 >En<

阅读说明:本技术 具有自适应方向信息集合的最终运动矢量表达 (Final motion vector representation with adaptive direction information set ) 是由 C-H.孔 C-C.陈 W-J.钱 M.卡尔切维茨 于 2019-09-27 设计创作,主要内容包括:一种利用最终运动矢量表达(UMVE)对视频数据进行编解码的设备和方法。该设备从在空间上与视频数据的当前块相邻的空间相邻块集合中的一个或多个空间相邻块确定候选列表。该设备可以基于在比特流中获得的数据来确定基本候选索引、方向索引和距离索引,并且可以使用这些索引来确定基本候选、方向和距离。该设备还可以使用方向和距离来计算运动矢量差(MVD)。该设备可以使用MVD和基本候选的运动矢量来确定预测块,并且基于该预测块对当前块进行解码。(An apparatus and method for encoding and decoding video data using a final motion vector representation (UMVE). The apparatus determines a candidate list from one or more spatial neighboring blocks of a set of spatial neighboring blocks that are spatially neighboring a current block of video data. The apparatus may determine a base candidate index, a direction index, and a distance index based on data obtained in the bitstream, and may determine a base candidate, a direction, and a distance using the indices. The device may also use the direction and distance to calculate a Motion Vector Difference (MVD). The device may determine a prediction block using the MVD and the motion vector of the base candidate, and decode the current block based on the prediction block.)

具有自适应方向信息集合的最终运动矢量表达

相关申请的交叉引用

本申请要求2019年9月26日提交的美国专利申请No.16/584,875的优先权,该申请要求2018年9月28日提交的美国临时专利申请No.62/738,468的利益,其全部内容通过引用合并于此。

技术领域

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

背景技术

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

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

发明内容

通常,本公开描述了与用于对视频进行编解码的帧间预测和运动矢量重构有关的技术。例如,本公开描述了与具有自适应方向信息集合的最终运动矢量表达(UMVE)有关的技术。本公开的技术可以被应用于现有的视频编解码器,诸如HEVC(高效视频编码),或者可以被应用于未来的视频编码标准中的编解码工具。

在一个示例中,本公开描述了一种对视频数据进行解码的方法,该方法包括:从在空间上与视频数据的当前块相邻的空间相邻块的集合中的一个或多个空间相邻块确定视频数据的当前块的候选列表;基于从包括视频数据的编码表示的比特流中获得的数据来确定基本候选索引、方向索引和距离索引;基于基本候选索引来确定基本候选;基于方向索引来确定方向;基于距离索引来确定距离;基于方向和距离来确定运动矢量差(MVD);使用MVD和基本候选的运动矢量确定预测块;基于预测块对当前块进行解码。

在另一示例中,本公开描述了一种用于对视频数据进行解码的设备,该设备包括:存储器,被配置为存储视频数据的当前块;以及一个或多个处理器,其耦合到存储器,该一个或多个处理器被配置为:从在空间上与视频数据的当前块相邻的空间相邻块的集合确定视频数据的当前块的候选列表;基于从包括视频数据的编码表示的比特流中获得的数据来确定基本候选索引、方向索引和距离索引;基于基本候选索引来确定基本候选;基于方向索引来确定方向;基于距离索引来确定距离;基于方向和距离来确定运动矢量差(MVD);使用MVD和基本候选的运动矢量确定预测块;基于预测块对当前块进行解码。

在另一示例中,本公开描述了一种用于对视频数据进行编码的设备,该设备包括:存储器,被配置为存储视频数据的当前块;以及一个或多个处理器,其耦合到存储器,该一个或多个处理器被配置为:从在空间上与视频数据的当前块相邻的空间相邻块的集合中的空间相邻块确定视频数据的当前块的候选列表;确定视频数据的当前块的基本候选;基于一个或多个基本候选的运动矢量来确定方向分辨率;基于一个或多个基本候选的运动矢量来确定距离分辨率;基于一个或多个基本候选、方向分辨率和距离分辨率来确定基本候选索引、方向索引和距离索引;将基本候选索引、方向索引和距离索引编码成比特流;基于与方向索引和距离索引相关联的方向和距离来确定运动矢量差(MVD);使用MVD和一个或多个基本候选的运动矢量确定预测块;并且基于预测块对当前块进行编码。在又一示例中,本公开描述了一种用于对视频数据进行解码的设备,该设备包括:用于确定在空间上与视频数据的当前块相邻的空间相邻块的集合中的一个或多个空间相邻块的候选列表的部件(means);用于基于从包括视频数据的编码表示的比特流中获得的数据来确定基本候选、方向索引和距离索引的部件;用于基于基本候选索引来确定基本候选的部件;用于基于方向索引来确定方向的部件;用于基于距离索引来确定距离的部件;用于基于方向和距离来确定运动矢量差(MVD)的部件;用于使用MVD和基本候选的运动矢量确定预测块的部件;用于基于预测块对当前块进行解码的部件。一个或多个示例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,其他特征、目的和优点将是显而易见的。

附图说明

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

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

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

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

图5是示出了视频编码器的示例操作的流程图。

图6是示出了视频解码器的示例操作的流程图。

图7A至图7B是示出了用于合并和高级运动矢量预测(AMVP)模式的空间相邻运动矢量候选的概念图。

图8A至图8B是示出了时间运动矢量预测(TMVP)候选和运动矢量缩放的概念图。

图9是示出了最终运动矢量表达(UMVE)搜索过程的概念图。

图10是示出了UMVE搜索点的概念图。

图11是示出了方向表选择的概念图。

图12是示出了根据本公开的技术的对视频数据进行编码的示例方法的流程图。

图13是示出了根据本公开的技术的对视频数据进行解码的示例方法的流程图。

图14是示出了根据本公开的技术的当前块的空间相邻块的概念图。

图15是示出了根据本公开的技术的非毗邻(non-adjacent)的相邻块的概念图。

具体实施方式

通常,本公开描述了与用于对视频进行编解码的帧间预测和运动矢量重构有关的技术。例如,本公开描述了与具有自适应方向信息集合的最终运动矢量表达(UMVE)有关的技术。本公开的技术可以被应用于现有的视频编解码器,诸如HEVC(高效视频编解码),或者可以被应用于未来的视频编码标准中的编解码工具。具体地,视频编解码设备确定候选列表。视频编解码设备确定方向分辨率并确定距离分辨率。视频编解码设备确定基本候选索引、方向索引和距离索引。这些索引可以在比特流中从编码器被发送到解码器。视频编解码设备基于索引中的信息来确定方向和距离。视频编解码设备确定MVD。视频编解码设备确定预测块并且基于该预测块对当前块进行编解码。

UMVE的现有设计都利用固定的方向信息集合用于运动矢量表达。这些固定方向信息集合会导致对被编解码为对运动矢量的频繁调整的大量信息必须进行编解码,从而使UMVE编解码性能下降。

视频编码器可以动态地调整用于运动矢量表达(包括方向分辨率和距离分辨率)的方向信息集合而不是对运动矢量的频繁调整进行编解码。视频编解码器可从空间相邻块得出方向分辨率和距离分辨率,并使用此信息来调整方向信息集。这将减少从编码器发送到解码器的边(side)信息,诸如对运动矢量的频繁和大的调整。

这样,本公开的技术可以使视频编解码设备能够利用UMVE并确定候选列表,确定基本候选、方向和距离索引,确定基本候选、方向和距离,确定MVD,确定预测块并基于预测块进行解码。

图1是示出了可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常针对对视频数据进行编解码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未编码的视频、编码的视频、解码的(例如,重构的)视频和视频元数据,诸如信令数据。

如图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可以与外部显示设备接口,而不包括集成显示设备。

如图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输出到存储设备112。类似地,目的地设备116可以经由输入接口122访问来自存储设备112的编码的数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光光盘、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)显示器或另一种类型的显示设备。

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

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

视频编码器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进行操作。根据JEM,视频编解码器(诸如视频编码器200)将图片划分为多个编码树单元(CTU)。视频编码器200可根据树结构(诸如四叉树-二叉树(QTBT)结构)划分CTU。JEM的QTBT结构消除了多个划分类型的概念,诸如HEVC的CU、PU和TU之间的分隔。JEM的QTBT结构包括两个级别:根据四叉树划分而划分的第一级别,以及根据二叉树划分而划分的第二级别。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编码单元(CU)。

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

视频编码器200和视频解码器300可以被配置为使用按照HEVC的四叉树划分、根据JEM的QTBT划分、或其他划分结构。为了说明的目的,关于QTBT划分给出了对本公开的技术的描述。然而,应理解,本公开的技术还可以应用于被配置为使用四叉树划分或其它类型的划分的视频编解码器。

本发明可互换地使用“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还提供了仿射运动补偿模式,可以将其视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或多个运动矢量,诸如放大或缩小、旋转、透视运动或其他不规则运动类型。

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

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

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

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

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

视频编码器200还可以例如在图片头(header)、块头、条带头、或其他语法数据(诸如序列参数集合(SPS)、图片参数集合(PPS)或视频参数集合(VPS))中向视频解码器300生成语法数据,诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据。视频解码器300可以类似地对这种语法数据进行解码以确定如何对对应的视频数据进行解码。

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

通常,视频解码器300执行由视频编码器200执行的互逆(reciprocal)处理以对比特流的编码的视频数据进行解码。例如,视频解码器300可以以与视频编码器200的CABAC编码过程基本相似(尽管与之互逆)的方式来使用CABAC对比特流的语法元素的值进行解码。语法元素可以定义将图片划分为CTU的划分信息、以及根据对应划分结构(诸如QTBT结构)对每个CTU的划分,以定义CTU的CU。语法元素还可以定义视频数据的块(例如,CU)的预测和残差信息。

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

根据本公开的技术,视频编码器200和视频解码器300可以被配置为使用最终运动矢量表达(UMVE)。

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

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

通常,图2B的CTU 132可以与定义与第一级别和第二级别处的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的框图。提供图3是为了解释的目的,并且不应被认为是对本公开中广泛例示和描述的技术的限制。为了说明的目的,本公开在诸如HEVC视频编码标准和开发中的H.266视频编码标准的视频编码标准的上下文中描述了视频编码器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),包括同步DRAM(SDRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM)、或其他类型的存储器设备。视频数据存储器230和DPB 218可以由同一存储器设备或单独的存储器设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件一起在芯片上,如图所示,或者相对于那些组件在芯片外。

在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器(除非如此具体地描述),或者视频编码器200外部的存储器(除非如此具体地描述)。相反,对视频数据存储器230的引用应该被理解为存储视频编码器200所接收的用于编码的视频数据(例如,要编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供来自视频编码器200的各个单元的输出的临时存储。

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

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

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

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

在一些示例中,运动估计单元222可以包含UMVE单元228。尽管在运动估计单元222中示出了UMVE单元228,但是在一些示例中,它可以在运动补偿单元224中。在其他示例中,UMVE 228单元可以在运动估计单元222和运动补偿单元224之间分割或复制。运动估计单元222可以确定在空间上与视频数据的当前块相邻的空间相邻块集合中的一个或多个空间相邻块的当前块的候选列表。运动估计单元222可以在候选列表中确定基本候选。基本候选可以表示为MVbase。运动估计单元222或UMVE单元228可以例如基于一个或多个基本候选的运动矢量来确定方向分辨率。另外,运动估计单元222或UMVE单元228可以例如基于一个或多个基本候选的运动矢量来确定距离分辨率。

UMVE单元228可以确定运动矢量差(MVD)集合。UMVE单元228可以将每个MVD确定为具有确定的方向分辨率的方向和具有确定的距离分辨率的距离的组合。对于每个MVD,UMVE单元228可以确定与MVD相关联的速率失真(RD)成本。与MVD相关联的RD成本可以是与使用通过将MVD添加到基本候选(MVbase)而得到的运动矢量对当前块进行编码相关联的RD成本。UMVE单元228可以针对每个MVD重复该过程。

UMVE单元228可以选择具有最小RD成本的MVD,并且将所选择的MVD添加到基本候选(MVbase)以确定最终运动矢量。最终运动矢量可以表示为MVfinal。然后,MCU 224可以使用最终运动矢量来确定预测块。视频编码器200可以基于预测块来对当前块进行编码。例如,为了基于预测块对当前块进行编码,视频编码器200(例如,视频编码器200的残差生成单元204)可以确定指示预测块中的样点与当前块中的样点之间的差的残差数据。然后,视频编码器200可以如本公开中的其他地方所描述地对残余数据进行处理。例如,变换处理单元206、量化单元208和熵编码单元220可以对残差数据进行处理。

视频编码器200可以在包括视频数据的编码表示的比特流中信令通知指示基本候选、所选择的MVD的方向索引和所选择的MVD的距离索引的数据。基本候选索引可以指示在候选列表中定义的基本候选。方向索引可以指示可以紧密对应于所确定的方向分辨率的方向表中定义的方向。距离索引可以指示可以紧密对应于所确定的距离分辨率的距离表中定义的距离。

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

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

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

运动估计单元222可以形成一个或多个运动矢量(MV),这些运动矢量定义参考图片中的参考块相对于当前图片中的当前块的位置。可以在UMVE单元228中使用一个或多个运动矢量来通过组合方向和距离来确定运动矢量差(MVD)。

运动估计单元222然后可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。运动补偿单元224然后可以使用运动矢量来生成预测块。

例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。作为另一示例,如果运动矢量具有分数样点精度,则运动补偿单元224可以根据一个或多个插值滤波器来对预测块进行插值。此外,对于双向帧间预测,运动补偿单元224可以检索用于由相应运动矢量识别的两个参考块的数据,并例如通过逐样点平均或加权平均来组合所检索的数据。

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

模式选择单元202将由运动补偿单元224确定的预测块提供给残差生成单元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或N×N的PU尺寸,以及用于帧间预测的2N×2N、2N×N、N×2N、N×N或类似的对称PU尺寸。视频编码器20和视频解码器30还可以支持用于帧间预测的2N×nU,2N×nD,nL×2N和nR×2N的PU尺寸的非对称划分。

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

对于其他视频编解码技术,诸如帧内块复制模式编解码、仿射模式编解码和线性模型(LM)模式编解码,作为少数示例,模式选择单元202经由与编解码技术相关联的各个单元来生成针对正被编码的当前块的预测块。在一些示例中,诸如调色板模式编解码,模式选择单元202可以不使用UMVE 228生成预测块,而是生成语法元素,该语法元素指示基于所选择的调色板来重构块的方式。在这种模式中,模式选择单元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,并且参考图片可以是相同的。作为另一示例,对于亮度编解码块和色度编解码块,帧内预测过程可以是相同的。

视频编码器200表示被配置为对视频数据进行编码的设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实施并被配置为执行本公开的改进的UMVE技术的一个或多个处理单元。

图4是示出了可以执行本公开的技术的示例视频解码器300的框图。提供图4是为了解释的目的,并且不限制本公开中广泛例示和描述的技术。为了说明的目的,本公开描述了根据JEM和HEVC的技术描述的视频解码器300。然而,本公开的技术可以由被配置为实施其他视频编解码标准的视频编解码设备来执行。

在图4的示例中,视频解码器300包括编码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(DPB)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。运动补偿单元可以包括UMVE单元322。如下文所述,UMVE单元322可以确定MVD。预测处理单元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执行的操作。这些单元可以实施为固定功能电路、可编程电路或其组合。这些单元可以被实施为一个或多个电路或逻辑元件,作为硬件电路的一部分,或者作为处理器、ASIC或FPGA的一部分。类似于图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可以生成预测块。在这种情况下,预测信息语法元素可以指示从中检索参考块的DPB314中的参考图片,以及识别相对于当前图片中的当前块的位置的参考图片中的参考块的位置的运动矢量。预测处理单元可以包括运动补偿单元316。运动补偿单元316可以包括UMVE单元322。运动补偿单元316通常可以以与关于运动补偿单元224(图3)所描述的方式基本上相似的方式来执行帧间预测过程。

运动补偿单元316可以包含UMVE单元332。在一些示例中,运动补偿单元316可以确定在空间上与视频数据的当前块相邻的一个或多个空间相邻块的候选列表。视频解码器300可以在表示视频数据的比特流(例如,图4的编码的视频比特流)中接收表示基本候选索引、方向索引和距离索引的数据。基本候选索引可以指示在候选列表中定义的基本候选,方向索引可以指示在方向表中定义的方向,距离索引可以指示在距离表中定义的距离。运动补偿单元316或UMVE单元332可以基于基本候选索引来确定(多个)基本候选。运动补偿单元316或UMVE 332可以基于方向索引来确定方向。运动补偿单元316或UMVE单元332还可以基于距离索引来确定距离。UMVE单元332可以基于方向和距离来确定MVD。运动补偿单元316可以使用MVD和基本候选的运动矢量来确定预测块。视频解码器300(例如,熵解码单元302、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码缓冲器单元314)然后可以基于预测块对当前块进行解码。例如,为了基于预测块对当前块进行解码,视频解码器300(例如,重构单元310)可以将预测块的样点(例如,来自预测处理单元304)添加到对应的残差样点(例如,来自逆变换处理单元308)以获得当前块的重构样点。尽管在运动补偿单元316中示出了UMVE单元332,但是在一些示例中,UMVE单元332可以位于视频解码器300中的其他地方,或者可以在运动补偿单元316和视频解码器300的其他部分之间分开。

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

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

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

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

以此方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括被配置为存储视频数据的存储器以及在电路中实施并被配置为执行本公开的UMVE技术的一个或多个处理单元。

视频编码器200和视频解码器300可以根据本公开的技术使用UMVE对视频数据进行编码和解码。描述编码和解码过程可能是有帮助的。图5是示出了用于对当前块进行编码的示例方法的流程图。当前块可以包括当前CU。尽管关于视频编码器200(图1和图2)进行了描述,但是应当理解,其他设备可以被配置为执行与图5的方法类似的方法。

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

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

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

ITU-T VCEG(Q6/16)和ISO/IEC MPEG(JTC 1/SC 29/WG 11)现在正在研究针对压缩能力将显著超过当前HEVC标准(包括其针对屏幕内容编解码和高动态范围编解码的当前扩展和近期扩展)的未来视频编解码技术标准化的潜在需求。这些组共同致力于在被称为联合视频探索小组(JVET)的联合协作中的这一探索活动,以评估在这一领域的专家所提出的压缩技术设计。JVET于2015年10月19日至21日首次会面。J.Chen、E.Alshina、G.J.Sullivan、J.-R.Ohm、J.Boyce(JVET-G1001,2017年7月)的“Algorithm Descriptionof Joint Exploration Test Model 7”是联合探索测试模型7(JEM-7)的算法描述。JVET当前正在基于JEM开发通用视频编码(VVC)标准。Bross等人的“Versatile Video Coding(Draft 2)”,ITU-T SG 16WP 3和ISO/IEC JTC1/SC 29/WG 11的联合视频专家团队(JVET),2018年7月10日至18日于卢布尔雅那(Ljubljana,SI)第11次会议,文档JVET-K1001(在下文中为“JVET-K1001”),是VVC标准的草案。

在HEVC中,条带中最大的编解码单元称为编解码树块(CTB)或编解码树单元(CTU)。CTB包含四叉树,其节点是编解码单元。在HEVC主配置文件(profile)中,CTB的尺寸可以在16×16到64×64的范围内(尽管在技术上可以支持8×8的CTB尺寸)。CU的尺寸可以与CTB相同,尽管CU可以小到8×8。此外,每个CU以一种模式进行编解码(即,帧间编解码或帧内编解码)。当CU被帧间编解码时,CU可以被进一步划分为2或4个PU,或者当不应用进一步划分时仅变为一个PU。当一个CU中存在两个PU时,两个PU可以是一半尺寸的矩形或是CU的尺寸的1/4或3/4的两个矩形尺寸。当CU被帧间编解码时,针对每个PU存在一个运动信息集合。另外,每个PU用唯一帧间预测模式进行编解码以得出运动信息集合。

在HEVC中,对于PU,有两种帧间预测模式,分别名为合并模式(跳过被视为合并模式的特殊情况)和高级运动矢量预测(AMVP)模式。在AMVP或合并模式下,将为多个运动矢量预测值(predictor)维护运动矢量(MV)候选列表。当前PU的运动矢量以及合并模式下的参考索引是通过从MV候选列表中选取一个候选而生成的。MV候选列表最多包含5个用于合并模式的候选,并且只有两个候选用于AMVP模式。合并候选可以包含运动信息集合,例如,与两个参考图片列表(列表0和列表1)相对应的运动矢量和参考索引。如果通过合并索引识别合并候选,则参考图片将用于当前块以及相关联的运动矢量的预测。但是,在AMVP模式下,对于来自列表0或列表1的每个潜在预测方向,由于AMVP候选仅包含运动矢量,因此需要将参考索引以及MV预测值(MVP)索引显式信令通知给MV候选列表。在AMVP模式下,可以进一步细化预测的运动矢量。从上面可以看出,合并候选对应于完整的运动信息集合,而AMVP候选仅包含用于特定预测方向的一个运动矢量和参考索引。两种模式的候选都类似地从相同的空间和时间相邻块中得出。

对于特定PU(PU0),从图7A和图7B中所示的相邻块中推导出空间MV候选,尽管用于从块中生成候选的方法对于合并和AMVP模式而有所不同。

在合并模式下,按图7A所示的顺序最多可以推导出四个空间MV候选。具体而言,顺序如下:左侧(0)、上方(1)、右上方(2)、左下方(3)和左上方(4)。

在AMVP模式下,空间相邻块被分为两组。第一组是由块0和1组成的左侧组。第二组是由块2、3和4组成的上方组,如图7B所示。对于每个组,参考与由信令通知的参考索引所指示的相同的参考图片的空间相邻块中的潜在候选具有要被选择的最高优先级以形成该组的最终候选。可能所有空间相邻块都不包含指向同一参考图片的运动矢量。因此,如果找不到这样的候选,则第一可用候选将被缩放以形成最终候选,从而可以补偿时间距离差。

图8A和图8B是示出了时间运动矢量预测(TMVP)候选的概念图。图8A示出了TMVP候选的示例。如果TMVP候选已启用且可用,则在空间运动矢量候选之后将其添加到MV候选列表中。对于合并和AMVP模式,TMVP候选的运动矢量推导过程相同,但是在合并模式下,TMVP候选的目标参考索引始终设置为0。

用于TMVP候选推导的初级(primary)块位置是在并置(collocated)PU外部的右下块,如图8A示出为块“T”,以补偿对用于生成空间相邻候选的上方和左侧的块的偏差。但是,如果该块位于当前CTB行的外部,或者运动信息不可用,则将该块替换为PU的中心块。

从以条带级别指示的并置图片的并置PU得出TMVP候选的运动矢量。并置PU的运动矢量被称为并置MV。

图8B示出了MV缩放的示例。为了推导出TMVP候选运动矢量,需要对并置MV进行缩放以补偿时间距离差,如图8B所示。

以下值得一提的是合并模式和AMVP模式的其他几个方面。例如,视频编码器200和视频解码器300可以执行运动矢量缩放。假设在呈现时间中运动矢量的值与图片的距离成比例。运动矢量将两个图片相关联:参考图片和包含运动矢量的图片(即包含图片)。当运动矢量被用于预测另一运动矢量时,基于图片顺序计数(POC)值来计算包含图片和参考图片的距离。

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

在另一示例中,视频编码器200和视频解码器300可以执行人工运动矢量候选生成。如果运动矢量候选列表不完整,则可以生成人工运动矢量候选,并将其插入列表的末尾,直到列表将具有所有候选为止。

在合并模式中,有两种类型的人工MV候选:仅针对B条带推导出的组合候选和仅在第一种类型没有提供足够的人工候选的情况下才使用的零候选。零候选是指定幅度为0的运动矢量的候选。对于已经在候选列表中并且具有必要的运动信息的每对候选,通过参考列表0中的图片的第一候选的运动矢量和参考列表1中的图片的第二候选的运动矢量的组合来推导出双向组合运动矢量候选。

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

如HEVC中所指定的,当在条带头中use_integer_mv_flag等于0时,视频编码器200可以信令通知以四分之一亮度样点(像素)为单位的(PU的运动矢量与预测运动矢量之间的)运动矢量差(MVD)。可替代地,如在JEM中所指定的,视频编码器200可以信令通知以四分之一亮度样点、整数亮度样点或四亮度样点为单位的MVD。可以在CU级别控制MVD分辨率,并且针对具有至少一个非零MVD分量的每个CU有条件地信令通知MVD分辨率标志。

对于具有至少一个非零MVD分量的CU,视频编码器200可以信令通知第一标记以指示在CU中是否使用四分之一亮度样点MV精度。第一标志等于1指示未使用四分之一亮度样点MV精度,而另一标志被设置为指示是使用整数亮度样点MV精度还是使用四亮度样点MV精度。

当CU的第一MVD分辨率标志为零或未对CU进行编解码(意味着CU中的所有MVD均为零)时,视频编码器200和视频解码器300将四分之一亮度样点MV分辨率用于CU。当视频编码器200和视频解码器300将整数亮度样点MV精度或四亮度样点MV精度用于CU时,视频编码器200和视频解码器300将AMVP候选列表中的MVP舍入到对应的精度。

视频编码器200和视频解码器300可以使用CU级别速率失真(RD)检查来确定哪个MVD分辨率将用于CU。也就是说,对于每个MVD分辨率,CU级别RD检查被执行3次。为了加速视频编码器200,可以在JEM中应用在以下段落中标记为(1)和(2)的编码方案。

(1)在具有常规四分之一亮度样点MVD分辨率的CU的RD检查期间,视频编码器200存储当前CU的运动信息(整数亮度样点精度)。在对具有整数亮度样点和4亮度样点MVD分辨率的相同CU进行RD检查期间,将存储的运动信息(四舍五入后)用作进一步小范围运动矢量细化的起点,以便耗时的运动估计过程不重复三次。

(2)视频编码器200和视频解码器300可以有条件地调用具有4亮度样点MVD分辨率的CU的RD检查。对于CU,当整数亮度样点MVD分辨率RD成本远大于四分之一亮度样点MVD分辨率的RD成本时,可以跳过针对CU的4亮度样点MVD分辨率的RD检查。

最终运动矢量表达(UMVE)描述于S.Jeong等人(JVET-K0115,2018年7月)的“CE4Ultimate motion vector expression in JVET-J0024(Test 4.2.9)”(下文中为“JVET-J0024”),和S.Jeong等人(JVET-L0054,2018年10月)的“CE4 Ultimate motion vectorexpression(Test 4.5.4)”(下文中为“JVET-L0054”)。UMVE可以与提出的运动矢量表达方法一起用于跳过模式或合并模式。视频编码器200和视频解码器300可以重新使用合并候选。在合并候选中,可以选择候选,并通过提出的运动矢量表达方法进一步扩展候选。UMVE使用简化的信令提供运动矢量表达。表达方法包括起点、运动幅度和运动方向。

UMVE使用合并候选列表作为HEVC中描述的合并候选列表。然而,针对UMVE的扩展仅考虑默认合并类型(例如,MRG_TYPE_DEFAULT_N)的候选。

图9是示出了UMVE搜索过程的概念图,并且图10是示出了UMVE搜索点的概念图。例如,视频编码器200可以在一个或多个参考图片中搜索类似于当前块的块。在图9中,在L0参考图片和L1参考图片之间描绘了当前帧中的当前块。预测方向信息指示L0、L1、L0和L1预测之中的预测方向。在B条带中,视频编码器200和视频解码器300可以通过使用如图9和图10所示的镜像技术从具有单向预测的合并候选中生成双向预测候选。例如,在L0中向右一个像素(图10中的黑圆圈)的方向的预测将被镜像到在L1中向左一个像素(也是图10中的黑圆圈)。在另一示例中,L0中向上两个像素(图10中的空圆圈)的方向的预测将被镜像到L1中向下两个像素(也是图10中的空圆圈)。

在B条带中,视频编码器200和视频解码器300可以对块进行帧内预测、单向帧间预测或双向帧间预测。例如,如果使用L1对合并候选进行单向预测,则通过搜索与列表1的参考图片镜像的列表0中的参考图片来决定L0的参考索引。如果没有对应的图片,则使用最接近当前图片的参考图片。L0的MV是通过缩放L1的MV推导出的。缩放因子由POC距离计算。

视频编码器200可以信令通知块的UMVE预测方向索引。预测方向索引可以具有一比特或两比特。如果UMVE候选的预测方向与原始合并候选中的一个相同,则预测方向索引的第一(且唯一)比特的值为0。然而,如果UMVE候选的预测方向不与原始合并候选中的某个相同,则预测方向索引的第一比特的值为1。在发送UMVE预测方向索引的第一比特之后,视频编码器200可以信令通知UMVE预测方向索引的第二比特。UMVE预测方向索引的第二比特指示UMVE候选的预测方向。可以基于UMVE预测方向的预定义优先级顺序来信令通知UMVE候选的预测方向。

UMVE预测方向的优先级顺序是L0/L1预测、L0预测和L1预测。例如,如果合并候选的预测方向是L1,则视频编码器200信令通知“0”作为UMVE预测方向索引以指示UMVE候选的预测方向是L1。在此示例中,视频编码器200可以信令通知“10”作为UMVE预测方向索引以指示UMVE候选的预测方向是L0和L1。此外,在此示例中,视频编码器200可以信令通知“11”作为UMVE预测方向索引以指示UMVE候选的预测方向为L0。因此,如果UMVE候选的预测方向与合并候选的预测方向匹配,则UMVE预测方向索引仅具有1比特。如果L0和L1预测列表相同,则视频编码器200不信令通知UMVE预测方向信息。

表1中的基本候选索引定义了用于选择MVP的候选的起点。基本候选索引指示列表中的候选之中的最佳候选。视频编码器200可以信令通知基本候选索引以向视频解码器300指示哪个基本候选是最佳候选。例如,如果最佳候选是第一MVP,则视频编码器200可以信令通知0。如果基本候选的数目等于1,则不信令通知基本候选索引(即,基本候选IDX)。

表1.基本候选IDX

表2中的距离索引是运动幅度信息。距离索引指示距起点(基本候选)的预定义距离。视频编码器200可以信令通知距离索引以指示MV的距离。例如,如果MV的距离是4像素,则视频编码器200可以信令通知4。

表2.距离IDX

表3中的方向索引表示MVD相对于起点的方向。方向索引可以表示四个方向,即,向上、向下、向左和向右。视频编码器200可以信令通知方向索引以向视频解码器300指示MV的方向。例如,如果方向为向上,则视频编码器可以信令通知10。

表3.方向IDX

方向IDX 00 01 10 11
X轴 + - N/A N/A
y轴 N/A N/A +

在视频编解码中使用标志以向视频解码器300信令通知视频编码器200已经使用特定模式对视频数据的块进行编码。例如,如果视频编码器200正在对块使用跳过模式,则其可以信令通知指示使用跳过模式对该块进行编码的跳过标志。如果视频编码器200正在对块使用合并模式,则视频编码器200可以信令通知指示使用合并模式对该块进行编码的合并标志。如果视频编码器200正在对块使用UMVE,则视频编码器200可以信令通知指示使用UMVE对该块进行编码的UMVE标志。如果视频编码器200正在对块使用仿射模式,则视频编码器200可以信令通知指示使用仿射模式对该块进行编码的仿射标志。

视频编码器200可以在发送跳过标志和合并标志之后立即信令通知UMVE标志。如果跳过标志和合并标志为真,则视频解码器300解析UMVE标志。如果UMVE标志等于1,则表示正在使用UMVE并且UMVE语法被解析。如果UMVE标志不等于1,则视频解码器300解析AFFINE标志。AFFINE标志等于1表示AFFINE模式。如果AFFINE标志不等于1,则针对VTM的跳过/合并模式解析跳过/合并索引。

由于UMVE候选,不需要额外的行缓冲区,因为跳过/合并候选直接被用作基本候选。使用输入的UMVE索引,在运动补偿之前就决定对MV的任何调整。因此,可以不需要长的行缓冲器。

T.Hashimoto等人的(JVET-L0355,2018年10月)“Non-CE4:Enhanced ultimatemotion vector expression,”(在下文中为“JVET-L0355”)中描述的UMVE的增强版本,提供了两个更改以扩展原始UMVE(在JVET-L0054中进行了描述),如下所示:1)将方向数从4增加到8,如下表4所示;2)使用多个距离列表,如下表5和表6所示。

表4.运动方向

方向IDX 000 001 010 011 100 101 110 111
X轴 +1 -1 0 0 +1/2 -1/2 -1/2 +1/2
y轴 0 0 +1 -1 +1/2 -1/2 +1/2 -1/2

表4中的方向索引表示8个方向。可以看出,对角线方向的x轴和y轴的值分别是水平方向和垂直方向的值的一半。

考虑到距离的量(运动差)将与区域和序列特征不同,JVET-L0355描述了两个距离列表。列表的选择标志可以由视频编码器200进行上下文编解码以以最佳方式应用。例如,如果MV的距离小于1像素,则视频编码器200可以信令通知用于第一距离列表的选择标志。在另一示例中,如果MV的距离是2像素或更大,则视频编码器200可以信令通知用于第二距离列表的选择标志。

表5.第一距离列表

表6.第二距离列表

J.Li、R.-L.Liao、C.S.Lim的(JVET-L0408,2018年10月)“Ce4-related:Improvement on ultimate motion vector expression”(在下文中为“JVET-L0408”)提供了三个更改以扩展JVET-L0054的原始UMVE,如下:1)如表7和8所示,将方向数从4增加到8;2)提供2个自适应距离表,如表9和表10所示;3)为大距离值提供全像素搜索点。

表7:JVET-L0054的UMVE方向表

方向IDX 00 01 10 11
X轴 + - N/A N/A
y轴 N/A N/A + -

表8:附加方向信息表

方向IDX 00 01 10 11
X轴 + - + -
y轴 + - - +

表8中的支持对角线方向的附加方向被添加到表7中JVET-L0054方向表的原始UMVE中。视频编码器200可以基于基本运动矢量候选的角度来选择两个方向表(即,表7或表8)中的一个。如果基本运动矢量候选的角度在[22.5°,67.5°]、[112.5°,157.5°]、[202.5°,247.5°]或[292.5°,337.5°]内,则视频编码器200选择表8中的对角线方向表。否则,视频编码器200选择表7中的水平/垂直方向表。方向表选择的图示如图11所示。图11描绘了基于角度分为多个区段(section)的圆。这些片段(segment)中的每一个对应于来自方向表7和附加方向信息表8的可能方向之一。例如,如果基本运动矢量候选在22.5度和67.5度内,则视频编码器200可以选择附加方向信息表8,向视频解码器300信令通知附加方向信息表8,并且信令通知方向索引为00。如果基本运动矢量候选在67.5度和112.5度之间,则视频编码器200可以选择方向表7,向视频解码器信令通知方向表7,并且信令通知方向索引为00。

JVET-L0054中的UMVE的实施方式具有用于生成UMVE搜索点的一个固定的距离表(表9)。JVET-L0408中UMVE的增强实施方式基于图像分辨率使用表10中所示的附加自适应距离表,如下所述。可以基于给定距离的使用频率来调整自适应距离表。

表9.CE4.5.4UMVE距离表

表10.JVET-L0408中提出的附加UMVE距离表

如果图片分辨率不大于2K(即,1920×1080),则视频编码器200可以选择表9作为基本距离表。否则,视频编码器200可以选择表10作为基本距离表。

视频编码器200和视频解码器300可以根据从高到低排名的先前编解码的图片中的每个距离索引的使用来重新排序距离索引。例如,假设表9被用作基本距离表并且2像素在先前的编解码的图片中被使用最多,则2像素距离可以被分配给索引0而不是索引3。

为了降低复杂度,可以修改增强的UMVE候选值,使得如果UMVE距离大于阈值,则UMVE模式的CU具有全像素运动矢量而不是子像素运动矢量。在当前实施方式中,将16像素距离用作阈值。

在JVET-L0054、JVET-L0355和JVET-L0408中描述的先前UMVE均采用用于运动矢量(MV)表达的固定集合。JVET-L0355和JVET-L0408的增强的UMVE扩展了方向信息集合。JVET-L0355和JVET-L0408的增强的UMVE在编解码期间还可以自适应地从2个固定集合表中选择1个集合表。然而,具有固定的方向信息集合导致对大量的边信息(诸如对运动矢量的频繁和大的调整)要被编码和解码。大量的编解码的边信息可能会降低视频编码器200和视频解码器300的UMVE编解码性能。本公开描述了用于解决减少被编解码的边信息的量从而减少UMVE编解码性能的降低的技术。

视频编码器200和视频解码器300可以应用以下任何技术,包括其任何组合。

图12是示出了根据本公开的用于对视频数据进行编码的技术的流程图。在图12的示例中,视频编码器200的运动估计单元222可以从空间相邻块中推导出包括距离分辨率和方向分辨率的方向信息。视频编码器200的运动估计单元222可以从空间相邻块和基本候选确定当前块的候选列表(382)。然后,视频编码器200的运动估计单元222或UMVE单元228可以基于在空间上与视频数据的当前块相邻的空间相邻块集合中的一个或多个空间相邻块的运动矢量来确定方向分辨率(384)。例如,视频编码器200的运动估计单元222或UMVE单元228可以检查具有运动矢量的一个或多个空间相邻块,并基于该(多个)空间相邻块的运动矢量来设置当前块的方向分辨率。视频编码器200的运动估计单元222或UMVE单元228还可以基于一个或多个空间相邻块的运动矢量来确定距离分辨率(386)。例如,视频编码器200的运动估计单元或UMVE单元228可以检查具有与之相关联的运动矢量的一个或多个空间相邻块,并基于该(多个)空间相邻块的运动矢量将距离分辨率设置为当前块的距离分辨率。视频编码器200的UMVE单元228(例如,运动估计单元222)还可以确定基本候选索引、方向索引和距离索引(388)。例如,UMVE单元228可以在基本候选列表中查找基本候选,并选择与所选择的基本候选相关联的索引。UMVE单元228还可以在方向表中查找方向分辨率,并确定哪个方向索引与该方向分辨率最接近。类似地,UMVE单元228可以在距离表中查找距离分辨率,并确定哪个距离索引与距离表中的距离分辨率最接近。视频编码器200可以将方向索引和距离索引编码成要由视频解码器300进行解码的比特流(390)。方向索引和距离索引可以在视频编码器200(例如,视频数据存储器230)和视频解码器300(例如,CPB存储器320)中的存储器中分别存储在方向表和距离表中。方向表和距离表可以在进行编解码之前固定,并且在进行编解码期间基于来自空间相邻块的方向信息由视频编码器200(例如,运动估计单元222)进行修改,并且基于来自空间相邻块的方向信息由视频解码器300(例如,运动补偿单元316)进行修改。例如,视频编码器200的UMVE单元228可以确定方向表中的当前方向分辨率和/或距离表中的当前距离分辨率不是最优的。例如,距离表可以仅包含比空间相邻块的运动矢量的许多距离更短的距离分辨率。在此示例中,UMVE单元228可以用新的距离分辨率或多个新的距离分辨率来更新距离表,并且在比特流中信令通知距离表如何已被更新,使得视频解码器300的UMVE单元332可以类似地更新其距离表。如果(多个)方向分辨率不是最优的,则UMVE单元228可以类似地更新方向表中包含的(多个)方向分辨率,并且在比特流中信令通知方向表如何已被更新,使得视频解码器300的UMVE单元332可以更新其方向表。

视频编码器200可以基于与方向和距离索引相关联的方向和距离来确定MVD(392)。例如,视频编码器200的UMVE单元228可以在方向和距离表中查找方向和距离索引,并且通过组合由该方向和距离索引所指示的方向和距离来计算MVD。然后,视频编码器200可以使用MVD和(多个)基本候选的运动矢量来确定预测块(394)。例如,视频编码器200(例如,模式选择单元202)可以通过将MVD添加到(多个)基本候选的运动矢量来选择预测块。然后,视频编码器200可以基于预测块对当前块进行编码(396)。

图13是示出了根据本公开的用于对视频数据进行解码的技术的流程图。在图13的示例中,视频解码器300的UMVE单元332可以从空间相邻块中推导出方向信息。特别地,在图13的示例中,视频解码器300的运动补偿单元316可以从例如空间相邻块确定当前块的候选列表(402)。视频解码器300的运动补偿单元316或UMVE单元332可以确定基本候选索引、方向索引和距离索引(404)。基本候选索引、方向索引和距离索引可以由视频编码器200在比特流中进行编码并且由视频解码器300进行解码。基本候选索引、方向索引和距离索引可以在视频编码器200(例如,视频数据存储器230)和视频解码器300(例如,CPB存储器320)中的存储器中分别存储在基本候选列表、方向表和距离表中。如上所述,方向表和距离表可以在进行编解码之前固定,并且可以在进行编解码期间基于来自空间相邻块的方向信息由视频编码器200进行修改,并且可以基于来自空间相邻块的方向信息由视频解码器300进行修改。

视频解码器300的运动补偿单元316或UMVE单元332可以通过在基本候选列表中查找基本候选索引来基于基本候选索引确定(多个)基本候选(406)。视频解码器300的UMVE单元332可以通过在方向索引表中查找方向索引来基于方向索引确定方向(408)。视频解码器300的UMVE单元332可以通过在距离索引表中查找距离索引来基于距离索引确定距离(410)。

视频解码器300的UMVE单元332可以基于方向和距离来确定MVD(412)。例如,视频解码器300的UMVE单元332可以在方向和距离表中查找方向和距离索引,并且通过组合由该方向和距离索引所指示的方向和距离来计算MVD。视频解码器300的运动补偿单元316可以使用MVD和基本候选的运动矢量来确定预测块(414)。例如,视频解码器300(例如,预测处理单元304)可以通过将MVD添加到基本候选的运动矢量来选择预测块。视频解码器300(例如,熵解码单元302、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码缓冲器单元314)然后可以基于预测块对当前块进行解码(416)。

图14是示出了当前块的空间相邻块的概念图。当前块在空间上与块A0、A1、L、B2、T、B1、B0、RT、RB和LB相邻。当前块还具有并置时间块CT。在一些示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以从空间相邻块的MV确定方向分辨率和/或距离分辨率。例如,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以从图14所示的空间相邻块集合中的紧靠当前块的左下角中的样点的左下方的相邻块(A0)、空间相邻块集合中的紧靠当前块的左下角中的样点的左侧的相邻块(A1)、空间相邻块集合中的紧靠当前块的右上角中的样点的右上方的相邻块(B0)、空间相邻块集合中的紧靠当前块的右上角中的样点的上方的相邻块(B1)、以及空间相邻块集合中的紧靠当前块的左上角中的样点的左上方的相邻块(B2)的MV确定方向分辨率和/或距离分辨率,如果可用(例如,空间相邻块已经被进行编码或解码)的话。例如,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过对可用空间相邻块A0、A1、B0、B1和B2的方向分辨率和/或距离分辨率进行平均来确定方向分辨率和/或距离分辨率。在另一示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过从空间相邻块A0、A1、B0、B1和B2中获取第一可用方向分辨率和/或距离分辨率来确定方向分辨率和/或距离分辨率。在一些示例中,如果可用,则视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以从图14中的空间相邻块集合中的中左(L)方相邻块和空间相邻块集合中的中上(T)方相邻块的MV确定方向分辨率和/或距离分辨率。例如,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过对可用空间相邻块L和T的方向分辨率和/或距离分辨率进行平均来确定方向分辨率和/或距离分辨率。在另一示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过从空间相邻块L和T获取第一可用方向分辨率和/或距离分辨率来确定方向分辨率和/或距离分辨率。

在又一些示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以从空间相邻块集合中的第一相邻块和空间相邻块集合中的第二相邻块之间的相邻块的MV确定方向分辨率和/或距离分辨率,如果可用的话,其中在图14中,第一相邻块(B1)紧靠在当前块的右上角中的样点的左侧,并且第二相邻块(B2)紧靠当前块的右上角中的样点的左上方。例如,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过对B1和B2之间的可用空间相邻块的方向分辨率和/或距离分辨率进行平均来确定方向分辨率和/或距离分辨率。在另一示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过从B1和B2之间的空间相邻块中获取第一可用方向分辨率和/或距离分辨率来确定方向分辨率和/或距离分辨率。

在另一示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以从空间相邻块集合中的第一相邻块和空间相邻块集合中的第二相邻块之间的相邻块的MV确定方向分辨率和/或距离分辨率,如果可用的话,其中在图14中,第一相邻块(A1)紧靠在当前块的左下角中的样点的左侧,并且第二相邻块(B2)紧靠当前块的右上角中的样点的左上方。例如,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过对A1和B2之间的可用空间相邻块的方向分辨率和/或距离分辨率进行平均来确定方向分辨率和/或距离分辨率。在另一示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过从A1和B2之间的空间相邻块中获取第一可用方向分辨率和/或距离分辨率来确定方向分辨率和/或距离分辨率。

图15是示出了非毗邻空间相邻块的概念图。图15描绘了当前块、毗邻的空间相邻块1-5和非毗邻的空间相邻块6-49。在一些示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以从与当前块不毗邻的一个或多个空间相邻块(诸如块6-49中的任何块(如果可用的话))的MV确定方向分辨率和/或距离分辨率。例如,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过对例如可用非毗邻空间相邻块6-10的方向分辨率和/或距离分辨率进行平均来确定方向分辨率和/或距离分辨率。在另一示例中,视频编码器200的UMVE单元228和视频解码器300的UMVE单元332可以通过从例如非毗邻空间相邻块6-10中获取第一可用方向分辨率和/或距离分辨率来确定方向分辨率和/或距离分辨率。

确定的方向信息可以包括灵活的距离分辨率数和灵活的方向分辨率编数。即,确定的方向信息可以用于动态地调整方向表和/或距离表,使得给定的方向索引和/或给定的距离索引在表被调整之后将指向距离和/或方向表中的不同距离和/或方向。

可用相邻块可以包含其运动矢量分辨率信息。例如,相邻块可能已经由视频编码器200进行编码或已经由视频解码器300进行解码,并且与该相邻块相关联的运动矢量可能是已知的并且可用的。可以基于已知的可用相邻运动矢量分辨率来确定距离分辨率。对于以合并模式进行编解码的块,其最佳预测块将可能位于原始合并MV所指向的位置附近。因此,较小的UMVE距离可以帮助定位最佳预测块。因此,视频编码器200和视频解码器300可以将确定的UMVE距离限制为小于相邻运动矢量分辨率的距离。例如,如果相邻运动矢量分辨率是1像素,则确定的UMVE距离可以包括1/2像素、1/4像素或小于1像素的其他值。如果相邻运动矢量分辨率是4像素,则确定的UMVE分辨率将包括2像素、1像素或小于4像素的其他值。因此,距离可以小于距离分辨率。

可替代地,视频编码器200和视频解码器300可以将确定的UMVE距离限制为等于或略大于可用相邻运动矢量分辨率的距离,例如,不大于相邻运动矢量分辨率的大小的两倍。例如,如果相邻运动矢量分辨率是1像素,则确定的UMVE距离可以包括1像素和2像素,或者大于或等于1像素的其他值。如果相邻运动矢量分辨率是4像素,则确定的UMVE分辨率可以包括4像素、8像素或大于或等于4像素的其他值。

确定的距离分辨率数可以小于在JVET-K0115、JVET-L0054、JVET-L0355和JVET-L0408中公开的距离分辨率数,因此可以用更少的比特进行编解码。根据本公开的技术,表11中示出了确定的UMVE方向分辨率。

表11.可能的确定的UMVE方向分辨率

方向IDX 000 001 010 011 100 101 110 111
X轴 +1 -1 0 0 +1 -1 -1 +1
y轴 0 0 +1 -1 +1 -1 +1 -1

可用相邻块可以包含其运动矢量方向信息。换句话说,可用相邻块可能已经由视频编码器200进行编码或由视频解码器300进行解码,并且与该可用相邻块相关联的运动矢量可能是已知的。视频编码器200的UMVE单元228可以基于可用相邻运动矢量方向信息来确定UMVE的方向分辨率。如果相邻运动方向在图11中的[67.5°,112.5°]内,则确定的方向分辨率可以是010,如表11所示。如果相邻运动方向在[67.5°,112.5°]和[22.5°,67.5°]内,则确定的方向分辨率将分别是010和100,如表11所示。

可替代地,视频编码器200的UMVE单元228可以确定UMVE方向分辨率以包括在相邻运动矢量方向附近的方向。例如,如果相邻运动方向在图11中的[67.5°,112.5°]内,则确定的方向分辨率可以是010、100和110,如表11所示。

确定的方向分辨率数可以小于JVET-K0115、JVET-L0054、JVET-L0355和JVET-L0408中的方向分辨率数,并且可以用更少的比特进行编解码。

JVET-K0115、JVET-L0054、JVET-L0355和JVET-L0408中的原始UMVE提供了固定数量的方向和距离分辨率。根据本公开的技术,确定的方向信息可以包括灵活的距离分辨率数和灵活的方向分辨率数。即,确定的方向信息可以用于动态地调整方向表和距离表中的条目。可以基于相邻块的运动矢量分辨率来决定确定的UMVE距离数。可以基于相邻块的运动矢量方向来决定确定的UMVE方向数。

本公开的技术可以减少信令通知边信息(诸如大且频繁的MVD)的量并且可以提供更好的编解码性能。

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

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

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

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

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

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

48页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:图像数据编码和解码

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类