合并模式的编码器、解码器及对应方法与流程

未命名 08-15 阅读:150 评论:0


1.本技术(发明)实施例总体上涉及图像处理领域,更具体地涉及合并模式。


背景技术:

2.视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字tv、通过互联网和移动网络传输视频、实时会话应用(如视频聊天)、视频会议、dvd和蓝光光盘、视频内容采集和编辑系统,以及安全应用的摄像机。
3.即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备中存储视频时,视频的尺寸也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行译码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。


技术实现要素:

4.本技术实施例提供根据独立权利要求的用于编码和解码的装置和方法。
5.上述和其它目的通过独立权利要求请求保护的主题实现。其它实现方式从从属权利要求、说明书和附图中是显而易见的。
6.本发明的第一方面公开了一种根据合并候选列表对块进行处理的方法,该方法包括:
7.根据当前块的相邻块的运动信息构建第一列表;获取当前块的预测信息;当当前块的预测信息指示当前块应用了子块预测时,根据第一列表获取当前块的单向预测候选;使用当前块的单向预测候选对当前块进行帧间预测。
8.在该方法中,常规合并候选列表重复用于子块分割(如三角形或非矩形等)合并预测,而无需额外的运动矢量修剪(pruning)。
9.在一种可能的实现方式中,当前块包括两个子块,每个子块对应一个单向预测候选。
10.在一种可能的实现方式中,一个单向预测候选是根据第一列表的一个双向预测候选生成的。
11.在一种可能的实现方式中,两个单向预测候选是根据第一列表的一个双向预测候选生成的。
12.在一种可能的实现方式中,一个单向预测候选为双向预测候选的第一部分。
13.在一种可能的实现方式中,一个单向预测候选为双向预测候选的第二部分。
14.在一种可能的实现方式中,子块预测为三角预测。
15.在一种可能的实现方式中,根据第一列表中的一个双向预测候选生成两个单向预测候选包括:
16.确定两个单向预测候选的相似度。
17.在一种可能的实现方式中,单向预测候选是基于所述第一列表中的所述候选的顺序,根据所述第一列表的双向预测候选生成的。
18.本发明的第二方面提供一种编码器,该编码器包括处理电路,用于执行方法实施例。
19.本发明的第三方面提供一种解码器,该解码器包括处理电路,用于执行方法实施例。
20.本发明第四方面提供一种计算机程序产品,该计算机程序产品包括程序代码,用于执行方法实施例。
21.本发明的第五方面提供一种解码器,该解码器包括:
22.一个或多个处理器;
23.非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到处理器并存储由处理器执行的程序,其中该程序在由处理器执行时使解码器执行方法实施例。
24.本发明的第六方面提供一种编码器,该编码器包括:
25.一个或多个处理器;
26.非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到处理器并存储由处理器执行的程序,其中该程序在由处理器执行时使编码器执行方法实施例。
27.根据本发明的实施例,为了最大化不同合并模式共享的共同操作,构建常规合并列表,并将其运动矢量用于子块预测。例如,对于常规合并候选列表中的每个合并候选,其l0或l1运动矢量中的一个且只有一个运动矢量用于一个子块预测。此外,l0与l1运动矢量的选择顺序基于其合并索引奇偶数值。常规合并列表可以直接使用,不需要显式生成子块预测的单向预测合并候选列表。
28.例如,一旦构建了常规合并列表,对于常规合并候选列表中的每个合并候选,其l0或l1运动矢量中的一个且只有一个运动矢量用于一个子块预测。此外,l0与l1运动矢量的选择顺序基于其合并索引奇偶数值。例如,如表1所示,对于具有偶数值索引的候选,首先选择其l0运动矢量用于子块预测。如果l0运动矢量不可用,则l1运动矢量将用于替代l0运动矢量。对于具有奇数值索引的候选,首先选择l1运动矢量用于三角预测。如果l1运动矢量不可用,则使用l0运动矢量。在表1中,对应于每个合并索引,首先选择标记为“x”的运动矢量进行子块预测。
29.表1三角预测模式的单向预测mv选择
[0030][0031]
根据本发明的实施例,常规合并列表可以直接使用,不需要显式生成子块预测的单向预测合并候选列表。在解码端,一旦接收到子块合并索引,可以很容易地根据所指示的合并索引值定位单向预测mv候选。
[0032]
附图及以下说明中将详细描述一个或多个实施例。其它特征、目标和优点在说明书、附图以及权利要求中显而易见。
附图说明
[0033]
下面结合附图对本发明实施例进行详细描述。
[0034]
图1a为用于实现本发明实施例的视频译码系统的示例的框图。
[0035]
图1b为用于实现本发明实施例的视频译码系统的另一示例的框图。
[0036]
图2为用于实现本发明实施例的视频编码器的示例的框图。
[0037]
图3为用于实现本发明实施例的视频解码器的示例结构的框图。
[0038]
图4为编码装置或解码装置的一个示例的框图。
[0039]
图5为编码装置或解码装置的另一个示例的框图。
[0040]
图6为根据第一运动候选列表构建第二运动候选列表的一个示例的流程图。
[0041]
图7a示出了并置块的示例。
[0042]
图7b示出了空间相邻块的示例。
[0043]
图8示出了根据第一运动候选列表构建第二运动候选列表的另一个示例的流程图。
[0044]
图9示出了三角预测模式的示例。
[0045]
图10示出了根据第一运动候选列表构建第二运动候选列表的另一个示例的流程图。
[0046]
图11示出了子块预测模式的一些示例。
[0047]
图12示出了在位于位置的候选中选择合并候选的一个示例。
[0048]
图13示出了关于合并候选的一个示例。
[0049]
图14示出了关于获得缩放运动矢量的一个示例。
[0050]
图15示出了关于时域候选的示例。
[0051]
图16为实现内容分发服务的内容供应系统3100的示例性结构的框图。
[0052]
图17为终端设备的示例的结构的框图。
[0053]
下文中,如果未明确地另外指定,否则相同的附图标记指代相同或至少功能等同
的特征。
具体实施方式
[0054]
在以下描述中,参考构成本发明的一部分的附图,这些附图通过说明的方式示出本发明的实施例的特定方面或可以使用本发明的实施例的具体方面。应理解,本发明的实施例可以用于其它方面,并且包括在附图中未描绘的结构上或逻辑上的变化。因此,以下详细描述不作为限制意义,并且本发明的范围由所附权利要求限定。
[0055]
例如,应理解,参考所描述的方法公开的内容对于用于执行该方法的对应的设备或系统也可以成立,反之亦然。例如,如果描述了一个或多个特定的方法步骤,则对应的设备可以包括一个或多个单元,例如用于执行所描述的一个或多个方法步骤的功能单元(例如,执行一个或多个步骤的一个单元;或者多个单元,每个单元执行多个步骤中的一个或多个),即使一个或多个单元在附图中未明确描述或示出时也是如此。此外,例如,如果根据一个或多个单元(例如功能单元)来描述特定装置,则对应的方法可以包括用于执行一个或多个单元的功能的一个步骤(例如执行一个或多个单元的功能的一个步骤,或多个步骤,每个步骤执行多个单元中的一个或多个单元的功能),即使一个或多个步骤在附图中未明确描述或示出时也是如此。此外,应理解,除非特别指出,否则本文描述的各种示例性实施例和/或方面的特征可以彼此组合。
[0056]
视频译码通常是指对构成视频或视频序列的图像序列进行处理。在视频译码领域中,术语“帧(frame)”可以代替术语“图像(picture或image)”。视频译码(或通常称为译码)包括视频编码和视频解码两部分。视频编码在源端执行,并且通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(以获得更高效的存储和/或传输)。视频解码在目的端执行,并且通常包括相对于编码器的逆处理以重建视频图像。实施例涉及的视频图像(或通常称为图像)的“译码”应理解为视频图像或各自视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码器(编码和解码,codec)。
[0057]
在无损视频译码的情况下,可以对原始视频图像进行重建,即,重建的视频图像与原始视频图像具有相同的质量(假设在存储或传输期间没有传输损失或其它数据损失)。在有损视频译码的情况下,通过量化等方式进行进一步压缩,以减少表示视频图像所需的数据量,在解码器侧无法完全重建视频图像,即,重建的视频图像的质量比原始视频图像的质量低或差。
[0058]
若干视频译码标准属于“有损混合视频编解码”组(即,将像素点域中的空间和时域预测与2d变换译码相结合,以在变换域中进行量化)。视频序列的每个图像通常分割成一组不重叠的块,并且通常在块级别上进行译码。换句话说,在编码器侧,通常在块(视频块)级别上对视频进行处理(即,编码),例如,通过使用空间(帧内图像)预测和/或时域(帧间图像)预测来生成预测块,从当前块(当前处理/待处理块)中减去预测块以获得残差块,变换残差块并在变换域中量化残差块以减少待发送(压缩)的数据量,而在解码器侧,相对于编码器的逆处理用于经编码的或经压缩的块,以重建当前块用于表示。此外,编码器按照解码器处理循环来处理,使得两者生成相同的预测(例如,帧内和帧间预测)和/或重建,用于进行处理,即,对后续块进行译码。
[0059]
在以下视频译码系统10的实施例中,视频编码器20和视频解码器30根据图1至图3
进行描述。
[0060]
图1a为示例性译码系统10的示意性框图,例如可以使用本技术的技术的视频译码系统10(或简称为译码系统10)。视频译码系统10的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)表示可以用于根据本技术中描述的各种示例执行技术的设备的示例。
[0061]
如图1a所示,译码系统10包括源设备12,源设备12用于向目的设备14等提供经编码的图像数据21,以对经编码的数据13进行解码。
[0062]
源设备12包括编码器20,并且可以另外(即可选地)包括图像源16、预处理器(预处理单元)18(例如图像预处理器18)和通信接口或通信单元22。
[0063]
图像源16可以包括或可以是:任何类型的图像捕获设备,例如用于捕获真实世界图像的照相机;和/或任何类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器;或用于获取和/或提供真实世界图像、计算机动画图像(例如屏幕内容、虚拟现实(virtual reality,vr)图像),和/或其任何组合(例如增强现实(augmented reality,ar)图像)的任何类型的设备。图像源可以为存储上述图像中的任何图像的任何类型的存储器(memory/storage)。
[0064]
为了与预处理单元18和由预处理单元18执行的处理进行区分,图像或图像数据17也可以称为原始图像或原始图像数据17。
[0065]
预处理器18用于接收(原始)图像数据17,并对图像数据17进行预处理,以获得预处理图像19或预处理图像数据19。预处理器18执行的预处理可以包括修剪(trimming)、颜色格式转换(例如从rgb到ycbcr)、颜色校正或去噪等。可以理解的是,预处理单元18可以是可选的组件。
[0066]
视频编码器20用于接收预处理的图像数据19并提供经编码的图像数据21(例如,下文根据图2进一步详细描述)。
[0067]
源设备12中的通信接口22可以用于:接收经编码的图像数据21并通过通信信道13向目的设备14等另一设备或任何其它设备发送经编码的图像数据21(或任何其它处理后的版本),以用于存储或直接重建。
[0068]
目的设备14包括解码器30(例如视频解码器30),并且可以另外(即可选地)包括通信接口或通信单元28、后处理单元32(或后处理单元32)和显示设备34。
[0069]
目的设备14的通信接口28用于例如直接从源设备12,或从任何其它源(例如存储设备,例如经编码的图像数据存储设备)接收经编码的图像数据21或(或任何其它处理后的版本),并将经编码的图像数据21提供给解码器30。
[0070]
通信接口22和通信接口28可以用于通过源设备12与目的设备14之间的直接通信链路(例如直接有线或无线连接),或者通过任何类型的网络(例如有线网络、无线网络、有线网络和无线网络的任何组合、任何类型的私网和公网、任何类型的私网和公网的组合),发送或接收经编码的图像数据21或经编码的数据13。
[0071]
例如,通信接口22可以用于将经编码的图像数据21封装为报文等合适的格式,和/或使用任何类型的传输编码或处理来处理经编码的图像数据,以便在通信链路或通信网络上进行传输。
[0072]
通信接口28与通信接口22对应,例如,可以用于接收所发送数据,并使用任何类型
的对应传输解码或处理和/或解封装过程对传输数据进行处理,以获得经编码的图像数据21。
[0073]
通信接口22和通信接口28均可配置为如图1a中从源设备12指向目的设备14的通信信道13的箭头所指示的单向通信接口,或配置为双向通信接口,并且可用于发送和接收消息,建立连接,确认并交换与通信链路和/或数据传输(例如编码图像数据传输)相关的任何其它信息等。
[0074]
解码器30用于接收经编码的图像数据21并提供经解码的图像数据31或经解码的图像31(例如,下文根据图3或图5进一步详细描述)。
[0075]
目的设备14的后处理器32用于对经解码的图像数据31(也称为重建图像数据),例如经解码的图像31,进行后处理,以获得经后处理的图像数据33,例如经后处理的图像33。由后处理单元32执行的后处理可以包括颜色格式转换(例如从ycbcr到rgb)、颜色校正、修剪或重新采样或任何其它处理,以例如准备经解码的图像数据31,用于通过显示设备34等进行显示。
[0076]
目的设备14的显示设备34用于接收经后处理的图像数据33,以例如向用户或观看者显示图像。显示设备34可以是或包括用于呈现重建图像的任何类型的显示器,例如集成的或外部的显示器或监控器。例如,显示器可以包括液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light emitting diode,oled)显示器、等离子显示器、投影仪、微led显示器,硅上液晶(liquid crystal on silicon,lcos)、数字光处理器(digital light processor,dlp)或任何类型的其它显示器。
[0077]
尽管图1a将源设备12和目的设备14描绘为的设备,但是设备的实施例也可以包括这两种设备或这两种设备的功能,即包括源设备12或对应的功能与目的设备14或对应的功能。在此类实施例中,源设备12或对应的功能与目的设备14或对应的功能可以通过相同的硬件和/或软件、通过单独的硬件和/或软件或其任何组合来实现。
[0078]
根据以上描述,对于本领域技术人员来说显而易见的是,图1a中所示的源设备12和/或目的设备14的不同单元或功能的存在和(精确)功能划分可以根据实际设备和应用而变化。
[0079]
编码器20(例如视频编码器20)或解码器30(例如视频解码器30)或两者都可通过如图1b所示的处理电路如一个或多个微处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、离散逻辑、硬件、视频译码专用处理器或其任何组合来实现。编码器20可以通过处理电路46实现,以实现结合图2的编码器20和/或本文描述的任何其它编码器系统或子系统所讨论的各种模块。解码器30可以通过处理电路46实现,以实现结合图3的解码器30所讨论的各种模块和/或本文所描述的任何其它解码器系统或子系统。处理电路可以用于执行本文所描述的各种操作。如图5所示,如果这些技术部分地在软件中实现,则设备可以将软件指令存储在合适的非瞬时性计算机可读存储介质中,并且可以通过一个或多个处理器在硬件中执行这些指令,以执行本发明的技术。视频编码器20和视频解码器30中的任何一个可以作为组合编解码器(encoder/decoder,codec)的一部分集成在单个设备中,如图1b所示。
[0080]
源设备12和目的设备14可以包括多种设备中的任一种,包括任何类型的手持设备
或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、照相机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(如内容业务服务器或内容分发服务器)、广播接收器设备、广播发送器设备等,并且可以使用或不使用任何类型的操作系统。在一些情况下,源设备12和目的设备14可以用于无线通信。因此,源设备12和目的设备14可以是无线通信设备。
[0081]
在一些情况下,图1a所示的视频译码系统10仅是示例,本技术的技术可以应用于视频译码设置(例如,视频编码或视频解码),不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据可以从本地存储器检索、通过网络流式传输等。视频编码设备可以对数据进行编码并将数据存储到存储器,和/或视频解码设备可以从存储器检索和解码数据。在一些示例中,编码和解码由不彼此通信但简单地将数据编码到存储器和/或从存储器检索和解码数据的设备执行。
[0082]
为便于描述,例如,参考由itu-t视频译码专家组(video coding experts group,vceg)和iso/iec运动图像专家组(motion picture experts group,mpeg)的视频译码联合工作组(joint collaboration team on video coding,jct-vc)开发的高效视频译码(high-efficiency video coding,hevc)、通用视频译码(versatile video coding,vvc)参考软件、下一代视频译码标准描述本发明实施例。本领域普通技术人员应理解本发明的实施例不限于hevc或vvc。
[0083]
编码器和编码方法
[0084]
图2为用于实现本技术的技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、模式选择单元260、熵编码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(图中未示出)。根据混合视频编解码器,图2所示的视频编码器20也可以称为混合视频编码器或视频编码器。
[0085]
残差计算单元204、变换处理单元206、量化单元208和模式选择单元260组成编码器20的前向信号路径;反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、帧间预测单元244和帧内预测单元254组成视频编码器20的反向信号路径,其中,视频编码器20的反向信号路径对应于解码器(参见图3的解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
[0086]
图像和图像分割(图像和块)
[0087]
编码器20可以用于通过输入端201等接收图像17(或图像数据17),例如,形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据还可以是经预处理的图像19(或经预处理的图像数据19)。为简单起见,以下描述中称为图像17。图像块17还可以称为当前图像或待译码图像(特别是在视频译码中,将当前图像与其它图像区分开来,其它图像例如是同一视频序列(即,也包括当前图像的视频序列)中之前编码和/或解码的图像)。
[0088]
(数字)图像是或可以看作具有强度值的二维像素点阵列或矩阵。阵列中的像素点
也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像的水平和垂直方向(或轴线)上的像素点的数量定义图像的尺寸和/或分辨率。通常使用三个颜色分量来表示颜色,即,可以通过三个像素点阵列来表示图像或图像可以包括三个像素点阵列。在rbg格式或色彩空间中,图像包括对应的红、绿、蓝像素点阵列。但是,在视频译码中,每个像素通常以亮度和色度格式或颜色空间表示,例如ycbcr,其包括y表示的亮度分量(有时也用l代替)以及cb和cr表示的两个色度分量。亮度分量y表示亮度或灰度强度(例如在灰度级图像中),而两个色度分量cb和cr表示色度或颜色信息分量。对应地,ycbcr格式的图像包括亮度像素点值的亮度像素点阵列(y)和色度值的两个色度像素点阵列(cb和cr)。rgb格式的图像可以转换或变换为ycbcr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是单色的,则该图像可以只包括亮度像素点阵列。相应地,图像可以为例如单色格式的亮度像素点阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度像素点阵列和两个对应的色度像素点阵列。
[0089]
在视频编码器20的实施例中,视频编码器20可以包括图像分割单元(图2中未示出),用于将图像17分割成多个(通常是不重叠的)图像块203。这些块也可以称为根块或宏块(h.264/avc标准)或称为译码树块(coding tree block,ctb)或译码树单元(coding tree unit,ctu)(h.265/hevc和vvc标准)。图像分割单元可以用于对视频序列中的所有图像和定义块尺寸的对应的栅格使用相同的块尺寸,或者改变图像或子集或图像组之间的块尺寸,并将每个图像图像分割成对应的块。
[0090]
在其它实施例中,视频编码器可以用于直接接收图像17的块203,例如,组成图像17的一个、若干个或所有块。图像块203也可以称为当前图像块或待译码图像块。
[0091]
尽管图像块203的尺寸小于图像17,但是与图像17一样,块203也是或也可以被认为是具有强度值(像素点值)的像素点的二维阵列或矩阵。换句话说,块203例如可以包括一个像素点阵列(例如,在黑白图像17的情况下,亮度阵列)、三个像素点阵列(例如,在彩色图像17的情况下,一个亮度阵列和两个色度阵列)或任何其它数量和/或类型的阵列,这取决于应用的颜色格式。块203在水平和垂直方向(或轴线)上的像素点的数量定义了块203的尺寸。相应地,某图像块可以为m
×
n(m列
×
n行)个像素点阵列,或m
×
n个变换系数阵列等。
[0092]
在图2所示的视频编码器20的实施例中,视频编码器20可以用于对图像17逐块地进行编码,例如对每个块203执行编码和预测。
[0093]
残差计算
[0094]
残差计算单元204可以用于根据图像块203和预测块265(后面会详细描述预测块265)计算残差块205(也称为残差205),例如,逐像素点(逐像素)从图像块203的像素点值中减去预测块265的像素点值来,以获得像素点域中的残差块205。
[0095]
变换
[0096]
变换处理单元206可以用于对残差块205的像素点值进行变换,例如离散余弦变换(discrete cosine transform,dct)或离散正弦变换(discrete sine transform,dst),以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。
[0097]
变换处理单元206可以用于应用dct/dst的整数近似,例如针对h.265/hevc指定的变换。与正交dct变换相比,此类整数近似通常通过某个因子进行缩放。为了保持通过正变换和逆变换处理的残差块的范数,将其它缩放因子作为变换过程的一部分进行应用。通常
根据某些限制来选择缩放因子,例如缩放因子为移位运算的2的幂、变换系数的位深度、精度和实施成本之间的权衡等。例如,通过逆变换处理单元指定用于逆变换的特定缩放因子,(以及在视频编码器30侧通过逆变换处理单元312等为相应的逆变换指定缩放因子),在编码器20侧可以相应地通过变换处理单元206等指定用于正向变换的对应的缩放因子。
[0098]
在视频编码器20的实施例中,例如,视频编码器20(对应地,变换处理单元206)可以用于直接输出或通过熵编码单元270进行编码或压缩后输出一种或多种变换类型的变换参数,使得视频解码器30可以接收并使用变换参数进行解码。
[0099]
量化
[0100]
量化单元208可以用于对变换系数207进行量化(例如进行标量量化或矢量量化),以获得量化系数209。量化系数209也可以称为经量化的变换系数209或经量化的残差系数209。
[0101]
量化过程可以减小与部分或全部变换系数207相关的位深。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m,可以通过调整量化参数(quantization parameter,qp)修改量化程度。例如,对于标量量化,可以进行不同的缩放来实现更精细或更粗略的量化。量化步长尺寸越小,量化越精细;量化步长尺寸越大,量化越粗略。合适的量化步长尺寸可以通过量化参数(quantization parameter,qp)来指示。例如,量化参数可以是适用于预定义的一组合适的量化步长尺寸的索引。例如,小的量化参数可以对应精细的量化(小量化步长尺寸),而大的量化参数可以对应粗略的量化(大量化步长尺寸),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的相应解量化或反解量化操作可以包括乘以量化步长。根据一些标准(例如hevc),实施例中可以使用量化参数来确定量化步长尺寸。通常,可以通过包含除法的方程的定点近似、根据量化参数计算量化步长尺寸。可以将其它缩放因子引入量化和解量化,用于恢复残差块的范数,因为量化步长尺寸和量化参数的方程的定点近似中使用缩放,所以可以修改该范数。在一种示例性实现方式中,可以合并逆变换和解量化中的缩放。或者,可以使用自定义量化表,并且例如在码流中将该自定义量化表从编码器发送到解码器。量化为有损操作,损耗随量化步长尺寸的增加而增加。
[0102]
在视频编码器20的实施例中,视频编码器20(对应地,量化单元208)可以用于,例如,直接输出或经熵编码单元270进行编码后输出量化参数(quantization parameter,qp),使得视频解码器30可以接收并使用量化参数进行解码。
[0103]
反量化
[0104]
反量化单元210用于对量化系数执行量化单元208所执行的量化的反量化,以获得解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可以称为解量化残差系数211,其对应于变换系数207,但是由于量化造成损耗,所以解量化系数211通常与变换系数不完全相同。
[0105]
逆变换
[0106]
逆变换处理单元212用于执行变换处理单元206所执行的变换的逆变换,例如,逆离散余弦变换(discrete cosine transform,dct)或逆离散正弦变换(discrete sine transform,dst),以获得像素点域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可以称为变换块213。
[0107]
重建
[0108]
重建单元214(例如,加法器或求和器214)用于将变换块213(即重建残差块213)与预测块265相加,例如,将重建残差块213的像素点值和预测块265的像素点值逐像素点进行相加,以获得像素点域中的重建块215。
[0109]
滤波
[0110]
环路滤波器单元220(或简称为“环路滤波器”220)用于对重建块215进行滤波,以得到滤波块221,或通常用于对重建像素点进行滤波,以得到滤波像素点。例如,环路滤波单元用于平滑像素的突变或提高视频质量。环路滤波器单元220可以包括一个或多个环路滤波器,例如去块滤波器、采样自适应偏移(sample-adaptive offset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任何组合。尽管在图2中环路滤波器单元220示出为环内滤波器,但在其它配置中,环路滤波器单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。
[0111]
例如,视频编码器20(相应地,环路滤波器单元220)的实施例可以用于直接输出或通过熵编码单元270编码后输出环路滤波器参数(例如采样自适应偏移信息),使得解码器30可以接收并应用相同或不同的环路滤波参数进行解码。
[0112]
解码图像缓冲器
[0113]
解码图像缓冲器(decoded picture buffer,dpb)230可以是存储参考图像或通常存储参考图像数据的存储器,以在视频编码器20对视频数据进行编码时使用。dpb 230可以由各种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random access memory,dram)(包括同步dram(synchronous dram,sdram))、磁阻ram(magneto resistive ram,mram)、电阻ram(resistive ram,rram)或其它类型的存储器设备。解码图像缓冲器(decoded picture buffer,dpb)230可用于存储一个或多个滤波块221。解码图像缓冲器230还可以用于存储相同的当前图像或不同图像(例如之前重建的图像)的其它之前滤波的块(例如之前重建的和滤波的块221),并且可以提供完整的之前重建的(即解码的)图像(以及对应的参考块和像素点)和/或部分重建的当前图像(以及对应的参考块和像素点),以例如用于帧间预测。解码图像缓冲器230还可以用于存储一个或多个未经滤波的重建块215,或通常存储未经滤波的重建像素点,例如,未经环路滤波单元220滤波的重建块215,或未进行任何其它处理的重建块或重建像素点。
[0114]
模式选择(分割和预测)
[0115]
模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲器230或其它缓冲器(例如,列缓冲器,图中未显示)接收或获得原始图像数据如原始块203(当前图像17的当前块203),以及重建图像数据如同一(当前)图像和/或一个或多个之前解码的图像的经滤波和/或未经滤波的重建像素点或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以获得预测块265或预测值265。
[0116]
模式选择单元260可以用于为当前块预测模式(包括不分割模式)和预测模式(例如帧内或帧间预测模式)确定或选择分割模式,并生成对应的预测块265,该预测块用于残差块205的计算以及重建块215的重建。
[0117]
在模式选择单元260的实施例中,模式选择单元260可以用于选择分割和预测模式(例如,从模式选择单元260支持或可用的模式中选择)。所述分割和预测模式提供最佳匹配,即最小残差(最小残差更有利于压缩,以便传输或存储),或提供最小指示开销(最小的指示开销更有利于压缩,以便传输或存储),或者同时考虑以上两者或在以上两者中取得平衡。模式选择单元260可用于根据率失真优化(rate distortion optimization,rdo)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时间。
[0118]
换句话说,分割单元262可以用于例如,通过迭代地使用四叉树分割(quad-tree-partitioning,qt)、二叉树分割(binary partitioning,bt)或三叉树分割(triple-tree-partitioning,tt)或其任何组合,将块203分割成较小的块部分或子块(它们再次形成块),以及用于例如对块部分或子块中的每一个执行预测,其中模式选择包括选择分割的块203的树结构以及应用于每个块部分或子块的预测模式。
[0119]
下文详细描述由视频编码器20执行的分割(例如,由分割单元260执行)处理和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。
[0120]
分割
[0121]
分割单元262可以将当前块203分割(或划分)成较小的部分,例如较小的正方形或矩形块。这些较小的块(也可以称为子块)可以进一步分割成更小的部分。这也称为树分割或分层树分割,其中,在根树层级0(层级0、深度0)等的根块可以递归地分割成两个或多个下一较低树层级的块,例如树层级1(层级1、深度1)的节点,这些块又可以分割成两个或多个下一较低层级的块,例如树层级2(层级2、深度2)等,直到由于满足结束标准(例如达到最大树深度或最小块尺寸)而结束分割。未进一步分割的块也称为树的叶块或叶节点。分成两个部分的树称为二叉树(binary-tree,bt),分成三个部分的树称为三叉树(ternary-tree,tt),分成四个部分的树称为四叉树(quad-tree,qt))。
[0122]
如上所述,本文中使用的术语“块”可以是图像的一部分,特别是正方形或矩形部分。例如,结合hevc和vvc,块可以是或对应于译码树单元(coding tree unit,ctu)、译码单元(coding unit,cu)、预测单元(prediction unit,pu)和变换单元(transform unit,tu)和/或对应于相应的块,例如,译码树块(coding tree block,ctb)、译码块(coding block,cb)、变换块(transform block,tb)或预测块(prediction block,pb)。
[0123]
例如,译码树单元(coding tree unit,ctu)可以是或包括:亮度像素点的ctb、具有三个像素点阵列的图像的色度像素点的两个对应的ctb、单色图像或使用三个单独的颜色平面和用于对像素点进行译码的语法结构译码的图像的像素点的ctb。相应地,译码树块(coding tree block,ctb)可以是n
×
n的像素点块,其中n可以设为某个值以将分量分割成ctb,这是一种分割。译码单元(coding unit,cu)可以是或包括:亮度像素点的译码块、具有三个像素点阵列的图像的色度像素点的两个对应的译码块、单色图像或使用三个单独的颜色平面和用于对像素点进行译码的语法结构译码的图像的像素点的译码块。相应地,译码块(coding block,cb)可以是m
×
n的像素点块,其中m和n可以设为某些值以将ctb分割成译码块,这是一种分割。
[0124]
在实施例中,例如,根据hevc,可以通过表示为译码树的四叉树结构将译码树单元
(coding tree unit,ctu)分割成cu。在cu级别上决定是通过帧间(时域)预测还是通过帧内(空间)预测对图像区域进行译码。每个cu还可以根据pu分割类型分割成1个、2个或4个pu。在一个pu内,进行相同的预测过程,并且以pu为单位将相关信息发送到解码器。在通过进行预测过程而获得残差块后,根据pu分割类型,可以根据与用于cu的译码树类似的其它四叉树结构将cu分割成变换单元(transform units,tu)。
[0125]
在实施例中,例如,根据当前正在开发的最新视频译码标准(称为通用视频译码(versatile video coding,vvc),使用四叉树和二叉树(quad-tree and binary tree,qtbt)分割对译码块进行分割。在qtbt块结构中,cu可以具有正方形或矩形形状。例如,首先通过四叉树结构分割译码树单元(coding tree unit,ctu)。进一步通过二叉树或三叉树结构对四叉树叶节点进行分割。分割树叶节点称为译码单元(coding unit,cu),该分段用于预测和变换处理,无需进一步分割。即,cu、pu和tu在qtbt译码块结构中具有相同的块尺寸。同时,还提出将三叉树分割等多重分割与qtbt块结构结合使用。
[0126]
在一个示例中,视频编码器20的模式选择单元260可以用于执行本文分割技术的任何组合。
[0127]
如上所述,视频编码器20用于从一组(预定的)预测模式中确定或选择最佳或最优预测模式。该组预测模式可以包括例如帧内预测模式和/或帧间预测模式。
[0128]
帧内预测
[0129]
该组帧内预测模式可以包括35种不同的帧内预测模式,例如dc(或均值)模式和平面模式等非定向模式,或hevc中定义的定向模式等,或者可以包括67种不同的帧内预测模式,例如dc(或均值)模式和平面模式等非定向模式,或vvc中定义的定向模式等。
[0130]
帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式使用同一当前图像的相邻块的重建像素点来生成帧内预测块265。
[0131]
帧内预测单元254(或通常为模式选择单元260)还用于以语法元素266的形式向熵编码单元270输出帧内预测参数(或通常为指示块的选定帧内预测模式的信息),以将该帧内预测参数包含到经编码的图像数据21中,从而视频解码器30可以,例如,接收并使用该预测参数进行解码。
[0132]
帧间预测
[0133]
该组(或可能的)帧间预测模式取决于可用的参考图像(即,例如存储在dbp 230中的之前至少部分解码的图像)和其它帧间预测参数,例如是整个参考图像还是仅参考图像的一部分(例如,当前块的区域周围的搜索窗口区域)用于搜索最佳匹配的参考块,和/或例如是否应用像素插值,例如半像素和/或四分之一像素插值,或不应用像素插值。
[0134]
除了上述预测模式之外,还可以应用跳过模式和/或直接模式。
[0135]
帧间预测单元244可以包括运动估计(motion estimation,me)单元和运动补偿(motion compensation,mc)单元(两者均未在图2中示出)。运动估计单元可以用于接收或获取图像块203(当前图像17的当前图像块203)和解码图像231,或者至少一个或多个之前重建的块(例如一个或多个其它/不同的之前解码的图像231的重建块),以用于运动估计。例如,视频序列可以包括当前图像和之前解码的图像231,或者,换句话说,当前图像和之前解码的图像231可以是构成视频序列的图像序列的一部分或可以构成该序列。
[0136]
例如,编码器20可以用于从多个其它图像的相同或不同图像的多个参考块中选择
参考块并提供参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移量(空间偏移),作为运动估计单元的帧间预测参数。这个偏移量也称为运动矢量(motion vector,mv)。
[0137]
运动补偿单元用于获取(例如,接收)帧间预测参数,并根据或通过帧间预测参数进行帧间预测,以获得帧间预测块265。运动补偿单元所执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量提取或生成预测块(可能执行插值以提高子像素精度)。插值滤波可以通过已知像素点生成其它像素点,从而潜在地增加可以用于译码图像块的候选预测块的数量。在接收到当前图像块的pu的运动矢量时,运动补偿单元可以定位运动矢量在一个参考图像列表中指向的预测块。
[0138]
运动补偿单元还可以生成与块和视频条带相关的语法元素,该语法元素由视频解码器30用来解码视频条带的图像块。
[0139]
熵译码
[0140]
例如,熵编码单元270用于将熵编码算法或方案(例如,可变长度译码(variable length coding,vlc)方案、上下文自适应vlc方案(context adaptive vlc,calvc)、算术译码方案、二值化算法、上下文自适应二进制算术译码(context adaptive binary arithmetic coding,cabac)、基于语法的上下文自适应二进制算术译码(syntax-based context-adaptive binary arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)译码或其它熵编码方法或技术)或旁路(无压缩)方案应用于量化系数209、帧间预测参数、帧内预测参数、环路滤波参数和/或其它语法元素,以获得可以通过输出单元272以编码码流21等形式输出的经编码的图像数据21,使得视频解码器30可以接收并使用这些参数进行解码。可以将编码码流21发送到视频解码器30,或者将其存储在存储器汇总,以便随后由视频解码器30发送或检索。
[0141]
视频编码器20的其它结构变化可以用于编码视频流。例如,对于某些块或帧,基于非变换的编码器20可以在没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以将量化单元208和反量化单元210组合成单个单元。
[0142]
解码器及解码方法
[0143]
图3为用于实现本技术的技术的视频解码器30的示例。视频解码器30用于接收例如由编码器20编码的编码图像数据21(例如,编码码流21),以获得解码图像331。编码图像数据或码流包括用于对编码图像数据进行解码的信息,例如,表示编码视频条带的图像块的数据以及相关的语法元素。
[0144]
在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320,解码图像缓冲器(decoded picture buffer,dbp)330、帧间预测单元344和帧内预测单元354。帧间预测单元344可以是或包括运动补偿单元。在一些示例中,视频解码器30可以执行与图2中关于视频编码器100描述的编码通道大体上互逆的解码通道。
[0145]
如编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。因此,反量化单元310可以与反量化单元110具有相同的功能,逆变换处理单元312可以与逆变换处理单元212具有相同的功能,重建单元
314可以与重建单元214具有相同的功能,环路滤波器320可以与环路滤波器220具有相同的功能,解码图像缓冲器330可以与解码图像缓冲器230具有相同的功能。因此,对视频编码器20的相应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。
[0146]
熵解码
[0147]
熵解码单元304用于解析码流21(或通常称为经编码的图像数据21),并对经编码的图像数据21进行熵解码,以获得量化系数309和/或经解码的译码参数(图3中未示出)等,例如帧间预测参数(如参考图像索引和运动矢量)、帧内预测参数(如帧内预测模式或索引)、变换参数、量化参数、环路滤波参数和/或其它语法元素等中的任一者或全部。熵解码单元304可以用于进行对应于编码器20的熵编码单元270所描述的编码方案的解码算法或方案。熵解码单元304还可以用于向模式选择单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,并向解码器30的其它单元提供其它参数。视频解码器30可以在视频条带级和/或视频块级接收语法元素。
[0148]
反量化
[0149]
反量化单元310可以用于从经编码的图像数据21(例如,通过熵解码单元304等解析和/或解码)接收量化参数(quantization parameter,qp)(或通常为与反量化相关的信息)和量化系数,并基于量化参数对经解码的量化系数309进行反量化,以获得解量化系数311,解量化系数311也可以称为变换系数311。反量化过程可以包括:使用视频编码器20确定的视频条带中的每个视频块的量化参数,以确定应应用的量化程度以及反量化程度。
[0150]
逆变换
[0151]
逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,以获得像素点域中的重建残差块213。重建残差块213也可以称为变换块213。变换可以是逆变换,例如,逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从经编码的图像数据21接收变换参数或相应的信息(例如,通过解析和/或解码,例如,通过熵解码单元304),以确定要应用于解量化系数311的变换。
[0152]
重建
[0153]
重建单元314(例如,加法器或求和器314)可以用于将重建残差块313添加到预测块365,以获得像素点域中的重建块315,例如,通过将重建残差块313的像素点值添加到预测块365的像素点值。
[0154]
滤波
[0155]
环路滤波单元320(在译码环路中或译码环路之后)用于对重建块315进行滤波,以获得滤波块321,以平滑像素的突变或提高视频质量。环路滤波器单元320可以包括一个或多个环路滤波器,例如去块滤波器、采样自适应偏移(sample-adaptive offset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任和组合。尽管在图3中环路滤波器单元320示出为环内滤波器,但在其它配置中,环路滤波器单元320可以实现为后环路滤波器。
[0156]
解码图像缓冲器
[0157]
之后,将一个图像的解码视频块321存储在解码图像缓冲器330中。解码图像331作为参考图像存储在所述解码图像缓冲器330中,用于后续对其它图像进行运动补偿和/或后
续相应输出以进行显示。
[0158]
解码器30用于例如通过输出端312输出解码图像311,以呈现给用户或由用户观看。
[0159]
预测
[0160]
帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同;帧内预测单元354的功能可以与帧间预测单元254相同,并根据从经编码的图像数据21接收到的分割和/或预测参数或相应信息(例如,通过熵解码单元304等解析和/或解码)决定分割(split/partitioning)模式并执行预测。模式选择单元360可以用于根据重建图像、重建块或相应的像素点(已滤波的或未滤波的)按块进行预测(帧内预测或帧间预测),以获得预测块365。
[0161]
当视频条带译码为帧内译码(i)条带时,模式选择单元360的帧内预测单元354用于:根据所指示的帧内预测模式和来自当前图像的之前解码的块的数据来为当前视频条带的图像块生成预测块365。当视频图像译码为帧间译码(即,b或p)条带时,模式选择单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收的运动矢量和其它语法元素生成当前视频条带的视频块的预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以根据dpb 330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。
[0162]
模式选择单元360用于通过解析运动矢量和其它语法元素确定当前视频条带的视频块的预测信息,并使用预测信息来生成正在解码的当前视频块的预测块。例如,模式选择单元360使用接收到的一些语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,b条带,p条带或gpb条带)、条带的参考图像列表中的一个或多个的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。
[0163]
视频解码器30的其它变型可以用于解码经编码的图像数据21。例如,解码器30可以在没有环路滤波单元320的情况下生成输出视频流。例如,对于某些块或帧,基于非变换的解码器30可以在没有逆变换处理单元312的情况下直接量化残差信号。在另一种实现方式中,视频解码器30可以将反量化单元310和逆变换处理单元312组合成单个单元。
[0164]
应理解,在编码器20和解码器30中,可以针对当前环节的处理结果进行进一步处理,然后输出到下一环节。例如,在插值滤波、运动矢量推导或环路滤波等之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进一步进行修正(clip)或移位(shift)等操作。
[0165]
需要说明的是,可以对当前块的推导运动矢量(包括但不限于仿射模式下的控制点运动矢量、仿射、平面、atmvp模式下的子块运动矢量、时域运动矢量等)进行进一步操作。例如,根据运动矢量的表示位将该运动矢量的值限制在预定义范围。如果运动矢量的表示位为bitdepth,则运动矢量的取值范围为-2^(bitdepth-1)~2^(bitdepth-1)-1,其中“^”符号表示幂次方。例如,如果bitdepth设置为16,则该取值范围为-32768~32767;如果bitdepth设置为18,则该取值范围为-131072~131071。这里提供了两种限制运动矢量的方法。
[0166]
方法一:通过流操作移除溢出msb(most significant bit,最高有效位)。
[0167]
ux= ( mvx+2
bitdepth ) % 2
bitdepth (1)
[0168]
mvx = ( ux 》= 2
bitdepth-1 ) ? (ux
ꢀ‑ꢀ2bitdepth ) : ux (2)
[0169]
uy= ( mvy+2
bitdepth ) % 2
bitdepth (3)
[0170]
mvy = ( uy 》= 2
bitdepth-1 ) ? (uy
ꢀ‑ꢀ2bitdepth ) : uy (4)
[0171]
例如,如果mvx的值为

32769,则应用公式(1)和(2)后,所得到的值为32767。在计算机系统中,十进制数以2补码的形式存储。

32769的2的补码为1,0111,1111,1111,1111(17位),然后丢弃msb,因此所得到的2的补码为0111,1111,1111,1111(十进制数为32767),与公式(1)和(2)的输出相同。
[0172]
ux= ( mvpx + mvdx +2
bitdepth ) % 2
bitdepth (5)
[0173]
mvx = ( ux 》= 2
bitdepth-1 ) ? (ux
ꢀ‑ꢀ2bitdepth ) : ux (6)
[0174]
uy= ( mvpy + mvdy +2
bitdepth ) % 2
bitdepth (7)
[0175]
mvy = ( uy 》= 2
bitdepth-1 ) ? (uy
ꢀ‑ꢀ2bitdepth ) : uy (8)
[0176]
如公式(5)至(8)所示,在求mvp与mvd之和期间,可以应用这些运算。
[0177]
方法二:通过修正(clipping)移除溢出msb。
[0178]
vx=clip3(-2
bitdepth-1
,2
bitdepth-1
ꢀ‑
1,vx)
[0179]
vy=clip3(-2
bitdepth-1
,2
bitdepth-1
ꢀ‑
1,vy)
[0180]
其中函数clip3的定义如下:
[0181][0182]
图4为本发明的一个实施例提供的视频译码设备400的示意图。如本文所述,视频译码设备400适合于实现所公开的实施例。在一个实施例中,视频译码设备400可以是解码器(例如,图1a中的视频解码器30)或编码器(例如,图1a中的视频编码器20)。
[0183]
视频译码设备400包括:用于接收数据的入端口410(或输入端口410)和接收单元(rx)420;用于处理数据的处理器、逻辑单元或中央处理器(central processing unit,cpu)430;用于发送数据的发送器单元(tx)440和出端口450(或输出端口450);以及用于存储数据的存储器460。视频译码设备400还可以包括耦合到入端口410、接收器单元420、发送器单元440和出端口450的光电(optical-to-electrical,oe)组件和电光(electrical-to-optical,eo)组件,以用于光或电信号的出或入。
[0184]
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器430与入端口410、接收单元420、发送器单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述公开的实施例。例如,译码模块470实现、处理、准备或提供各种译码操作。因此,包括译码模块470大大提高了视频译码设备400的功能,并影响视频译码设备400到不同状态的转换。或者,译码模块470实现为存储在存储器460中并由处理器430执行的指令。
[0185]
存储器460可以包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择此类程序用于执行时存储程序,以及存储在程序执行期间读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(aread-only memory,rom)、随机存取存储器(random access memory,ram)、三元内容寻址存储器
(ternary content-addressable memory,tcam)和/或静态随机存取存储器(static random-access memory,sram)。
[0186]
图5为一个示例性实施例通过的装置500的简化框图,该装置500可以用作图1中的源设备12和目的设备14中的一者或两者。
[0187]
装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。尽管所公开的实现方式可以通过单个处理器(例如处理器502)实施,但是可以通过一个以上的处理器来提高速度和效率。
[0188]
装置500中的存储器504在一种实现方式中可以是只读存储器(read only memory,rom)设备或随机存取存储器(random access memory,ram)设备。可以使用任何其它合适类型的存储设备作为存储器504。存储器504可以包括由处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括使处理器502执行本文描述的方法的至少一个程序。例如,应用程序510可以包括应用程序1至n,其还包括执行本文所描述的方法的视频译码应用程序。
[0189]
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是触摸敏感显示器,触摸敏感显示器将显示器与可操作以感测触摸输入的触摸敏感元件相结合。显示器518可以通过总线512耦合到处理器502。
[0190]
尽管在这里描述为单个总线,但装置500的总线512可以由多个总线组成。此外,辅助存储器514可以直接耦合到装置500的其它组件,或者可以通过网络访问,并且可以包括单个集成单元(例如存储卡)或多个单元(例如多个存储卡)。因此,可以以多种配置实现装置500。
[0191]
合并候选列表
[0192]
itu-t h.265标准中引入了合并运动候选列表的构建过程。在另一实施例中,合并运动候选列表用于通用视频译码(versatile video coding,vvc)的扩展合并预测。
[0193]
块合并操作是运动数据译码的一种特殊模式(也称为“合并模式”)。块合并操作允许当前块使用相邻块的相同运动信息。运动信息包括运动数据,而运动数据包括指示使用一个或两个参考图像列表的信息、以及每个参考图像列表的参考索引和运动矢量。块合并操作在两个相邻块对应于图像帧的同一不可变形对象的情况下特别适用。在这种情况下,可以通过相同的运动矢量和相同的参考图像对该两个块进行预测,因此,对于该两个块来说,整个运动信息都是相同的。
[0194]
在一种实现方式中,检查相邻块是否可用并包含运动信息之后,在将该相邻块的所有运动数据作为运动信息候选之前,执行一些其它的冗余检查。
[0195]
在一种实现方式中,合并候选列表由以下五种候选按顺序组成:
[0196]
(1)来自空间相邻cu的空间mvp,
[0197]
(2)来自并置cu的时域mvp,
[0198]
(3)基于fifo表的历史mvp,
[0199]
(4)成对平均mvp,
[0200]
(5)零mv。
[0201]
合并列表的尺寸在条带头中进行指示,例如,合并列表的最大允许尺寸为6。对于
在合并模式下编码的每个cu,最佳合并候选的索引被编码。
[0202]
下文描述各类合并候选的生成过程。
[0203]
空间候选推导
[0204]
在一种实现方式中,从位于图12所示位置的候选中选择最多四个合并候选。推导顺序为b1、a1、b0、a0和b2。仅当位置a0、b0、b1和a1中任一位置的cu不可用时(例如,由于cu属于其它条带或分块)或者cu是帧内译码时,才考虑使用位置b2。在添加了位置b1处的候选之后,对剩余候选进行冗余检查,确保具有相同运动信息的候选已从列表中排除,从而提高译码效率。为了降低计算复杂度,在上述冗余检查中,并不考虑所有可能的候选对。相反,只考虑与图13中的箭头相连接的候选对,而且仅当用于冗余检查的对应候选不具有相同的运动信息时,才将该候选添加到列表中。
[0205]
在实现时,空间相邻者的顺序、位置以及数量等考虑因素者是可变的,因此,上述示例不能被视为是一种限制。
[0206]
时域候选推导
[0207]
在一种实现方式中,只将一个候选添加到列表。特别地,在推导该时域合并候选时,缩放运动矢量是根据属于并置参考图像的并置cu推导的。用于推导并置cu的参考图像列表将在条带头中显式指示。获得如图14中的虚线所示的时域合并候选的缩放运动矢量,其中,缩放运动矢量是根据poc距离tb和td对并置cu的运动矢量进行缩放得到的,其中,tb定义为当前图像的参考图像与当前图像之间的poc差值,td定义为并置图像的参考图像与并置图像之间的poc差值。所述时域合并候选的参考图像索引被设置为等于0。
[0208]
时域候选的位置从候选c0与c1之间选择,如图15所示。如果位置c0处的cu不可用、已进行帧内译码、或位于ctu的当前行之外,则使用位置c1。否则,使用位置c0推导时域合并候选。
[0209]
基于历史的合并候选推导
[0210]
基于历史的mvp(history-based mvp,hmvp)合并候选被添加到合并列表中,排在空间mvp和tmvp后面。在一种实现方式中,将之前经译码的块的运动信息存储在表中,用作当前cu的mvp。在编码/解码过程期间维护包含多个hmvp候选的表。当遇到新的ctu行时,重置(清空)该表。每当存在非子块帧间译码cu时,相关的运动信息作为新的hmvp候选添加到表的最后一个条目中。
[0211]
例如,将hmvp表尺寸s设置为5,表示最多可以向表中添加5个基于历史的mvp(history-based mvp,hmvp)候选。当向表中插入新的运动候选时,使用受限的先进先出(first-in-first-out,fifo)规则,其中首先应用冗余检查以发现表中是否存在相同的hmvp。如果发现表中存在相同的hmvp,则从表中移除相同的hmvp,然后将所有hmvp候选前移。
[0212]
hmvp候选可以用于合并候选列表的构建过程。按顺序检查表中最新的几个hmvp候选,并将这几个hmvp候选插入到候选列表中,排在tmvp候选后面。冗余检查应用于hmvp候选的空间或时域合并候选。
[0213]
为了减少冗余检查操作次数,引入了不同的简化方式。通常,一旦可用合并候选总数量达到最大允许合并候选减1,则终止从hmvp构建合并候选列表的过程。
[0214]
成对平均合并候选推导
[0215]
通过对现有合并候选列表中的预定义的候选对求平均值,来生成成对平均候选,例如,预定义对定义为(0,1),该数字表示合并候选列表的合并索引。分别计算每个参考列表的平均运动矢量。在一个列表中,如果两个运动矢量都可用,则即使这两个运动矢量指向不同的参考图像,也对这两个运动矢量求平均值;如果只有一个运动矢量可用,则直接使用该运动矢量;如果没有运动矢量可用,则此列表无效。
[0216]
以itu-t h.265标准中的合并候选列表构建为例,根据以下候选构建合并候选列表:
[0217]
1.从五个空间相邻块推导的最多四个空间候选,
[0218]
2.从两个时域、并置块推导的一个时域候选,
[0219]
3.其它候选,包括组合双向预测候选,
[0220]
4.零运动矢量候选。
[0221]
空间候选
[0222]
首先将空间相邻块的运动信息作为运动信息候选添加到合并候选列表(在一个示例中,在将第一运动矢量添加到合并候选列表之前,合并候选列表可以为空)。这里,图7b中示出了相邻块,该相邻块视为插入到合并列表中。对于帧间预测块合并,通过依次检查a1、b1、b0、a0和b2,在合并列表中插入最多四个候选。
[0223]
运动信息可以包括运动数据,运动数据包括指示使用一个或两个参考图像列表的信息、以及每个参考图像列表的参考索引和运动矢量。
[0224]
例如,检查相邻块是否可用以及相邻快是否包含运动信息之后,在将该相邻块的所有运动数据作为运动信息候选之前执行一些其它的冗余检查。这些冗余检查可分为两类:
[0225]
类别1:避免候选在列表中出现冗余运动数据。
[0226]
类别2:防止两个部分合并,这些部分可以通过其它方式表达,从而产生冗余语法。
[0227]
时域候选
[0228]
图7a示出了块的坐标,时域运动信息候选是从这些块中检索的。并置块是指具有与当前块相同的-x坐标、-y坐标,但位于不同图像(参考图像中的一个图像)上的块。如果列表未满(例如,当合并列表中的候选的数量小于阈值时,合并列表未满,例如,阈值可以为4、5、6等)时,则将该时域运动信息候选添加到合并列表中。
[0229]
生成的候选
[0230]
在插入空间运动信息候选和时域运动信息候选后,如果合并列表仍然未满,则添加生成的候选以填充该列表。在一个示例中,合并列表的尺寸在序列参数集合中进行指示,并且在整个译码视频序列中是固定的。
[0231]
双向预测
[0232]
帧间预测模式称为“双向预测”,使用2个运动矢量对块进行预测。运动矢量可以指向相同的参考图像,也可以指向不同的参考图像,其中参考图像可以通过参考图像列表id和参考图像索引进行指示。在一个示例中,第一运动矢量可以指向参考图像列表l0中的第一图像,而第二运动矢量可以指向参考图像列表l1中的第一图像。可以维护两个参考图像列表(例如,l0和l1),从列表l0中选择第一运动矢量所指向的图像,从列表l1中选择第二运动矢量所指向的图像。
[0233]
例如,如果运动信息指示双向预测,则运动信息包括两部分:
[0234]

l0部分:运动矢量和指向参考图像列表l0中的条目的参考图像索引。
[0235]

l1部分:运动矢量和指向参考图像列表l1中的条目的参考图像索引。
[0236]
图像顺序编号(picture order count,poc):与每个图像相关的变量,在cvs(coded video sequence,译码视频序列)中唯一地标识所有图像中相关的图像。当从解码图像缓冲器输出相关的图像时,poc用于指示相关的图像在输出顺序中的位置,相对于从解码图像缓冲器输出的同一cvs中其它图像的输出顺序位置。
[0237]
参考图像列表l0或l1可以包括一个或多个参考图像,每个参考图像都用poc标识。与每个参考索引和poc值的关联可以在码流中指示。例如,参考图像列表l0和l1可以包括以下参考图像:
[0238][0239]
在上述示例中,参考图像列表l1中的第一条目(由参考索引0表示)是poc值为13的参考图像。参考图像列表l1中的第二条目(由参考索引1表示)是poc值为14的参考图像。
[0240]
三角预测模式
[0241]
三角预测模式的概念是运动补偿预测的三角形部分。如图9所示,按照对角线或逆对角线方向将cu分割成两个三角预测单元。cu中的每个三角预测单元使用单向(uni-prediction)预测运动矢量和参考帧索引进行帧间预测,单向预测运动矢量和参考帧索引是从单向预测候选列表推导的。在对三角预测单元进行预测后,对角线边缘进行自适应加权处理。然后,将变换和量化过程应用到整个cu。需要说明的是,此模式仅适用于跳过模式和合并模式。
[0242]
在三角预测模式中,将块分割成两个三角形部分(如图9所示),每个部分都可以使用一个运动矢量进行预测。用于预测一个三角形部分(用pu1表示)的运动矢量可以不同于用于预测另一个三角形部分(用pu2表示)的运动矢量。需要说明的是,每个部分可以只使用单个运动矢量(单向预测)进行预测,降低执行三角预测模式的复杂度。换句话说,无法通过双向(bi-prediction)预测对pu1和pu2进行预测。
[0243]
子块预测模式
[0244]
三角预测模式是子块预测的一种特殊情况,子块预测将一个块分割成两个块。在上述示例中,示出了两个块分割方向(45度分割和135度分割)。但是,需要说明的是,其它分割角度和分割比例也是可以的(例如,图11中的示例)。
[0245]
在一些示例中,将块分割成2个子块部分,并对每个部分应用单向预测。与三角预测模式相比,区别在于如何将块分割成2个部分,因此它代表了三角预测的广义版本。例如,根据分割角度,子块可以是矩形或非矩形。在一些示例中,当前块由两个预测单元组成,这两个预测单元是通过虚拟分割线分割得到的。在这种情况下,当前块是通过几何预测模式预测的。
[0246]
itu-t h.265和vvc中的合并构建过程输出运动信息候选列表。在《jvet-l1001_v2通用视频译码(草案3)》文档中的“8.3.2.2合并模式亮度运动矢量推导过程”章节中描述了vvc的合并列表构建过程,可在http://phenix.it-sudparis.eu/jvet/上公开查阅。术语“运动信息”是指执行运动补偿预测过程所必需的运动数据。运动信息通常指以下信息:
[0247]

对块应用单向预测还是双向预测;
[0248]

预测中使用的参考图像的id(如果对块应用双向预测,则为2个id);
[0249]

运动矢量(如果对块应用双向预测,则为2个运动矢量);
[0250]

其它信息。
[0251]
在vvc规范草案的一个版本中,在《jvet-l1001_v7通用视频译码(草案3)》文档的“8.3.2.2合并模式亮度运动矢量推导过程”章节中描述了合并列表构建过程。
[0252]
需要说明的是,本技术中呈现的各方面不限于上述三个示例。上述示例中描述的合并列表构建过程的共同之处在于,当没有对译码块应用三角预测模式时,使用构建的合并列表来获得译码块的预测。本发明方法用于使用合并列表(第一列表)中的候选生成第二运动信息候选列表,而合并列表中的候选是根据可以是vvc或itu-t h.265的任何版本中描述的方法的某些方法生成的。
[0253]
在vvc和h.265中,合并列表构建过程的输出包括n个候选运动信息。通常将数字n包括在码流中,并且可以是正整数,例如5、6等。包括在构建的合并列表中的候选可以包括单向预测信息或双向预测信息。即,从合并列表中选择的候选可以指示双向预测操作。
[0254]
如果对译码块应用三角预测模式,则必须对译码块中的每个三角形部分应用单向预测模式,而不是应用双向预测模式(考虑到硬件实现)。即,不能使用常规合并列表中指示双向预测的候选,这会导致性能下降。
[0255]
这个问题可以重新表述如下:
[0256]

如果对块应用三角预测模式,则将指示包括在码流中,用于指示用于对每个三角形部分进行预测的运动信息。例如,该指示可以采取两个合并索引的形式,其中第一合并索引指定合并列表中用于对第一部分进行预测的条目,第二合并索引指定合并列表中用于对第二部分进行预测的条目。
[0257]

禁止对单个部分应用双向预测,即,被指示用于每个部分的运动信息必须指示单向预测。
[0258]

在合并列表中,可以具有单向预测和双向预测运动信息候选。由于禁止选择双向预测候选,因此会导致性能下降。由于只能使用单向预测候选,因此有效减小了候选列表的尺寸。
[0259]
在vvc中,如果一个块具有特定尺寸(宽为4个像素点,高为4个像素点),则禁止应用双向预测对块进行预测。8
×
4/4
×
8尺寸的块是使用块分割可以实现的最小可能的帧间预测块。考虑到硬件复杂度,不对最小块进行双向预测,因为硬件实现需要考虑最小可能的块作为其最坏情况下的复杂度度量。因此,禁止对最小块进行双向预测可以降低硬件实现的最坏情况复杂度。
[0260]
在vvc的情况下,如果块的尺寸为8
×
4/4
×
8,并且如果以合并模式对块进行译码,则存在与问题1的情况类似的问题。
[0261]
在本发明的一个实施例中(实施例1),根据以下步骤构建合并列表。
[0262]
步骤1:构建运动候选列表(第一列表),其包括单向预测或双向预测的运动信息候选。
[0263]
第一列表可以根据itu-t h.265和vvc中的方法构建,参见上述h.265和vvc中关于合并列表构建过程的示例和公开内容。
[0264]
步骤2:使用第一列表中的候选构建第二列表,如下所示:
[0265]
从第一列表中的第一候选开始。
[0266]
步骤2.1:如果该候选为单向预测候选,则将该候选(运动信息候选)添加到第二列表中。
[0267]
或者,
[0268]
步骤2.2:如果该候选为双向预测候选,则生成两个单向预测候选,并根据如下顺序将两个单向预测候选添加到第二列表中:
[0269]

第一运动信息候选包括与l0参考图像列表对应的运动矢量和参考图像索引(在将候选插入第二列表之前,将该候选设置为单向预测候选)。
[0270]

第二运动信息候选包括与l1参考图像列表对应的运动矢量和参考图像索引(在将候选插入第二列表之前,将该候选设置为单向预测候选)。
[0271]
步骤2.3:继续对第一列表中的下一个候选执行步骤2.1或步骤2.2,直到第二列表中收集到指定数量的候选,或者直到处理完第一列表中的所有候选。
[0272]
第一合并列表和第二合并列表可以用于当前块的帧间预测过程中。
[0273]
例如,如果对当前块应用三角预测,则从第二列表中选择两个候选进行三角预测,一个候选用于第一三角形部分的预测过程,另一个候选用于第二三角形部分的预测过程。
[0274]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则在第二列表中选择一个候选对当前块进行帧间预测。在本示例中,由于当前块的尺寸较小,不对当前块进行双向预测。
[0275]
在另一个示例中,如果对当前块应用合并模式,并且不对当前块应用三角预测模式,则选择第一列表中的一个候选,以对当前块进行预测,该示例与itu-t h.265或vvc中公开的相关过程相同。
[0276]
例如,第一运动候选列表为合并列表。
[0277]
需要说明的是,由于三角(或子块)预测的候选列表是从合并模式候选列表推导的,在一种可行的实现方式中,候选列表可能不是独立的列表。第二候选列表中的候选可以用指向合并模式候选列表中的候选的指示符来表示。
[0278]
实施例1公开了一种构建运动信息候选列表(第二列表)的方法,第二列表包括单向预测候选。
[0279]
如果未对块应用三角预测,则第一列表用于对块进行预测。例如,第一列表用于对指示应用合并模式但未指示应用三角预测模式的译码块。
[0280]
根据第一列表构建第二列表。如果对块应用三角预测,则从第二列表中选择运动信息(或运动矢量)候选。第二列表包括单向预测候选,这些候选可以应用于块的第一三角形部分和第二三角形部分。例如,如果对块应用三角合并模式,则将2个合并索引译码在码流中。合并索引标识第二列表中用于块的第一或第二三角形部分的候选。
[0281]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则将一个合并索引译码在码流中,以标识第二列表中用于对块进行预测的候选。如果当前块的块尺寸大于阈值(例如,阈值可以为16),或者当前块的块尺寸不是预定义的或参数集合中指示的最小尺寸,则将合并索引译码在码流中,以标识第一列表中用于对块进行预测的候选。
[0282]
图6描绘了实施例1的一种可能的实现方式的流程图。该流程图示出了根据第一运动候选列表构建第二运动候选列表。根据602,如果对块应用三角预测,则第二运动候选列表用于对块进行预测;如果未对块应用三角预测,则第一运动候选列表用于对块进行预测。在另一个示例中,在602中,条件可以包括块尺寸检查。根据块尺寸检查的结果,可以使用第一运动候选列表或第二运动候选列表来对块进行预测。
[0283]
在另一个示例中,如果确定不对块应用三角预测,则可以检查其它条件以确定块是否使用第一运动候选列表。在一个示例中,如果确定不对块应用三角预测,则进一步确定块是否应用合并模式。如果应用合并模式,则使用第一运动候选列表对块进行预测;如果未应用合并模式,则可以应用对当前块进行预测的其它方法(例如帧内预测)。
[0284]
根据实施例1,根据第一运动候选列表构建第二运动候选列表。第二列表可以仅包括单向预测候选,优点是不包括不可用候选(例如,双向预测候选)。因此,指示使用哪个候选的指示符可以用更少的位数来表示,从而提高了压缩效率。
[0285]
在本发明的一个实施例中(实施例2),根据以下步骤构建合并列表。
[0286]
步骤1:构建运动候选列表(第一列表),其包括单向预测或双向预测的运动信息候选。
[0287]
第一列表可以根据itu-t h.265和vvc中的方法构建,参见上述hevc和vvc中关于合并列表构建过程的示例和公开内容。
[0288]
步骤2:使用第一列表中的候选构建第二列表,如下所示:
[0289]
从第一列表中的第一候选开始。
[0290]
步骤2.1:如果该候选为单向预测候选,则将该候选(运动信息候选)添加到第二列表中。
[0291]
或者,
[0292]
步骤2.2:如果该候选为双向预测候选,则生成两个单向预测候选,并根据如下顺序将两个单向预测候选添加到第二列表中:
[0293]

第一候选包括与l0参考图像列表对应的运动矢量和参考图像索引。运动矢量表示为mv_l0,参考图像的poc值(根据列表l0中的参考图像索引计算)表示为poc_l0;
[0294]

第二候选包括与l1参考图像列表对应的运动矢量和参考图像索引。运动矢量表示为mv_l1,参考图像的poc值(根据列表l1中的参考图像索引计算)表示为poc_l1。如果poc_l0等于poc_l1,并且mv_l0与mv_l1相似,则第二候选不包括在第二列表中。如果poc_l0不等于poc_l1,或者如果mv_l0与mv_l1不相似,则第二候选包括在第二列表中。
[0295]
步骤2.3:继续对第一列表中的下一个候选执行步骤2.1或步骤2.2,直到第二列表中收集到指定数量的候选,或者直到处理完第一列表中的所有候选。
[0296]
第一合并列表和第二合并列表可以用于当前块的帧间预测过程中。
[0297]
例如,如果对当前块应用三角预测(或子块预测),则从第二列表中选择两个候选
进行三角预测(或子块预测),一个候选用于第一三角形部分的预测过程,另一个候选用于第二三角形部分的预测过程。
[0298]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则在第二列表中选择一个运动信息候选对当前块进行帧间预测。在本示例中,由于当前块的尺寸较小,不对当前块进行双向预测。
[0299]
在另一个示例中,如果对当前块应用合并模式,并且不对当前块应用三角预测模式,则选择第一列表中的一个候选,以对当前块进行预测,该示例与itu-t h.265或vvc中公开的相关过程相同。
[0300]
例如,如果poc_l0等于poc_l1,并且mv_l0与mv_l1相同,则在步骤2.2中,不将第二候选添加到第二列表中。
[0301]
在另一个示例中,如果l0部分的参考图像索引与l1部分的参考图像索引相同,并且mv_l0与mv_l1相同(或相似)时,则在步骤2.2中,不将第二候选添加到第二列表中。
[0302]
例如,可以根据以下不等式确定两个运动矢量的相似度:
[0303]-k《(mv1.x

mv2.x)《k和-k《(mv1.y

mv2.y)《k
[0304]
mv1.x表示第一运动矢量的x分量(mv2.x的平均值与mv1.x相似),mv1.y(mv2.y的平均值与mv1.y相似)表示y分量,k为正数。在该示例中,如果两个不等式都成立,则认为运动矢量mv1与运动矢量mv2相似。
[0305]
在另一个示例中,可以根据以下等式确定相似度:
[0306]
(mv1.x》》n)

(mv2.x》》n)==k和(mv1.x》》n)

(mv2.x》》n)==k.
[0307]
其中,x》》y表示将x的二的补码整数表示算术右移y个二进制数字。该函数仅针对y的非负整数值定义。右移的结果是移到最高有效位(most significant bit,msb)的位的值等于移位操作前的x的msb。“==”是有理运算,当运算符的两侧相等时才正确。在该示例中,如果两个等式都成立,则认为运动矢量mv1与运动矢量mv2相似。
[0308]
例如,第一运动候选列表为合并列表。
[0309]
需要说明的是,由于三角(或子块)预测的候选列表是从合并模式候选列表推导的,在一种可行的实现方式中,候选列表可能不是独立的列表。第二候选列表中的候选可以用指向合并模式候选列表中的候选的指示符来表示。
[0310]
图8示出了实施例2的一种可能的实现方式的流程图。与实施例1的区别在于步骤811。在步骤811中,将双向预测候选的l1部分与l0部分进行比较(将l0部分的运动矢量与l1部分的运动矢量进行比较,将l0部分的参考图像的poc与l1部分的参考图像的poc比较)。根据相似度度量,如果l0部分与l1部分相似,则不将根据l1部分生成的单向预测候选插入第二运动候选列表中。
[0311]
在步骤2.2中,只有当第二候选(为根据第一运动候选列表的双向预测候选的l1部分生成的单向预测候选)与第一候选(为根据第一运动候选列表的双向预测候选的l0部分生成的单向预测候选)充分不相同时,才将第二候选添加到第二运动候选列表。
[0312]
由于l1部分与l0部分相似(或相同)时不将l1部分插入第二列表中,因此提高了压缩效率。
[0313]
在图8中,通过807、811和808示出了步骤2.2。首先根据807,将双向预测运动候选
的l1部分插入到第二列表中。然后根据811将第二列表中的最后一个条目(通过索引值last_entry表示)与第二列表中的上一个条目(通过索引值last_entry-1表示)进行比较。如果最后一个条目的poc值与前一个条目的poc值相同,并且最后一个条目的运动矢量与前一个条目的运动矢量相同,则根据808从第二列表中移除最后一个条目。需要说明的是,807、811和808的组合对应于本发明实施例的步骤2.2。
[0314]
在本发明的一个实施例中(实施例3),根据以下步骤构建合并列表。
[0315]
步骤1:构建运动候选列表(第一列表),其包括单向预测或双向预测的运动信息候选。
[0316]
第一列表可以根据itu-t h.265和vvc中的方法构建,参见上述hevc和vvc中关于合并列表构建过程的示例和公开内容。
[0317]
步骤2:第一列表更新如下:
[0318]
对于第一列表中的所有条目:
[0319]

检查候选是否为双向预测候选。如果候选为双向预测候选,则属于l0部分的运动矢量表示为mv_l0,参考索引表示为ref_idx_l0,参考图像的poc值(根据列表l0中的参考图像索引计算)表示为poc_l0。属于l1部分的运动矢量表示为mv_l1,参考索引表示为ref_idx_l1,参考图像的poc值表示(根据列表l1中的参考图像索引计算)表示为poc_l1。
[0320]

如果poc_l0等于poc_l1并且mv_l0与mv_l1相似(或者在本实施例的另一个示例中为相同),则将候选更新为单向预测候选,运动矢量设置为mv_l0,参考图像列表设置为l0,参考索引设置为ref_idx_l0。
[0321]
步骤3:使用第一列表中的候选构建第二列表,如下所示:
[0322]
步骤3.1:从更新后的第一列表的第一候选开始。
[0323]
步骤3.2:如果该候选为单向预测候选,则将该候选(运动信息候选)添加到第二列表中。
[0324]
或者,
[0325]
步骤3.3:如果该候选为双向预测候选,则生成两个单向预测候选,并根据如下顺序将两个单向预测候选添加到第二列表中:
[0326]

第一候选包括与l0参考图像列表对应的运动矢量和参考图像索引。
[0327]

第二候选包括与l1参考图像列表对应的运动矢量和参考图像索引。
[0328]
步骤3.4:继续对第一列表中的下一个候选执行步骤3.2或步骤3.3,直到第二列表中收集到指定量的候选,或者直到处理完第一列表中的所有候选。
[0329]
例如,如果对当前块应用三角预测,则从第二列表中选择两个候选进行三角预测,一个候选用于第一三角形部分的预测过程,另一个候选用于第二三角形部分的预测过程。
[0330]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则在第二列表中选择一个运动信息候选对当前块进行帧间预测。在本示例中,由于当前块的尺寸较小,不对当前块进行双向预测。
[0331]
在另一个示例中,如果对当前块应用合并模式,并且不对当前块应用三角预测模式(或当前块的块尺寸大于阈值(例如,该阈值可以为16)或者当前块的块尺寸不是预定义的或在参数集合中指示的最小尺寸),则选择第一列表中的候选来对当前块进行预测。
[0332]
在本发明的一个实施例中(实施例4),根据以下步骤构建合并列表。
[0333]
步骤1:构建运动候选列表(第一列表),其包括单向预测或双向预测的运动信息候选。
[0334]
第一列表可以根据itu-t h.265和vvc中的方法构建,参见上述hevc和vvc中关于合并列表构建过程的示例和公开内容。
[0335]
步骤2:使用第一列表中的候选构建第二列表,如下所示:
[0336]
步骤2.1:从第一列表的第一运动信息候选开始。
[0337]
步骤2.2:如果该候选为单向预测候选,则将该候选(运动信息候选)添加到第二列表中。
[0338]
步骤2.3:继续对第一列表中的下一个候选执行步骤2.2,直到第二列表中收集到指定量的候选,或者直到处理完第一列表中的所有候选。
[0339]
步骤2.4:从第一列表中的第一候选开始。
[0340]
步骤2.5:如果候选为双向预测候选,则生成两个单向预测候选并根据如下顺序添加到第二列表中:
[0341]

第一候选运动信息包括与l0参考图像列表对应的运动矢量和参考图像索引。将第一候选添加到第二列表中。
[0342]

第二运动信息候选包括与l1参考图像列表对应的运动矢量和参考图像索引。如果第二列表未满,则将第二候选添加到第二列表中。
[0343]
步骤2.6:继续对第一列表中的下一个候选执行步骤2.5,直到第二列表中收集到指定量的候选,或者直到处理完第一列表中的所有候选。
[0344]
第一合并列表和第二合并列表可以用于当前块的帧间预测过程中。
[0345]
需要说明的是,由于三角(或子块)预测的候选列表是从合并模式候选列表推导的,在一种可行的实现方式中,候选列表可能不是独立的列表。第二候选列表中的候选可以用指向合并模式候选列表中的候选的指示符来表示。
[0346]
例如,如果对当前块应用三角预测,则从第二列表中选择两个候选进行三角预测,一个候选用于第一三角形部分的预测过程,另一个候选用于第二三角形部分的预测过程。
[0347]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则在第二列表中选择一个候选对当前块进行帧间预测。在本示例中,由于当前块的尺寸较小,不对当前块进行双向预测。
[0348]
在另一个示例中,如果对当前块应用合并模式,并且不对当前块应用三角预测模式,则选择第一列表中的一个候选,以对当前块进行预测,该示例与itu-t h.265或vvc中公开的相关过程相同。
[0349]
在本发明的一个实施例中(实施例5),第二列表(运动候选列表)的尺寸小于或等于第一列表的尺寸。
[0350]
例如,将第二列表的尺寸设置为等于m,如果确定m小于或等于n,则n为第一列表的尺寸(运动候选的数量)。否则(如果确定m大于n),将第二列表的尺寸设置为等于n。
[0351]
在另一个示例中,n可以从译码在码流中的指示符推导,并且m可为预定义的数量。m和n可以是正整数数,例如m可以等于5,n可以等于6。
[0352]
本实施例的示例如下:值m(描述第二列表的最大尺寸)可以为5,这是预定的。n的值(第一列表的尺寸)可以在序列参数集(sequence parameter set,sps)中进行指示。如果指示n的值为6,则将第二列表的尺寸设置为5,因为第一列表的尺寸大于第二列表的尺寸。在另一种场景中,如果在sps中,指示n为3,则将第二列表的尺寸也设置为3。
[0353]
在另一个示例中,可以从译码在码流中的指示符推导n,可以从同样译码在码流中的指示符推导m。在本示例中,用于推导m值的指示符不能指示大于n的m值。
[0354]
在另一个示例中,在itu-t h.265中,合并列表(第一列表)的尺寸为n,可以根据译码在码流中的语法元素对n进行修改。n的值可以是正整数(例如,正整数的值在2至5之间),正整数的值在sps中进行指示。合并列表的尺寸对于整个视频序列是固定的。
[0355]
根据实施例5,第二列表的尺寸小于或等于第一列表的尺寸。在一些示例中,为了减小误差,第二列表的尺寸也是固定的。根据上述实施例1至4,根据第一列表构建第二列表。第二列表的尺寸小于或等于第一列表的尺寸。如果第一列表中的所有候选均为单向预测候选,则可插入第二列表中的运动候选的最大数量等于第一列表中的候选的数量。因此,如果将第二列表的尺寸设置为等于或小于第一列表,则保证第二列表始终是填满的。
[0356]
根据另一实施例(实施例6),根据当前块的尺寸确定第二列表的尺寸。如果当前块的尺寸小于阈值,则将第二列表的尺寸设置为等于k,如果当前块的尺寸大于或等于阈值,则将第二列表的尺寸设置为等于l。可以根据块的宽度和高度(例如,宽度乘以高度)来确定块的尺寸。k和l是正整数,其中,k《l。
[0357]
例如,如果块的宽度与高度的乘积大于或等于128,则可以将第二列表的尺寸设置为等于5。如果块的宽度乘以高度小于128,则可以将第二列表的尺寸设置为等于3。
[0358]
在另一个示例中,如果块的宽度小于或等于8,或块的高度小于或等于8,则将第二列表的尺寸设置为等于3。如果块的宽度和高度都大于8,则将第二列表的尺寸设置为等于5。
[0359]
在本发明的一个实施例中(实施例7),根据以下步骤构建合并列表。
[0360]
步骤1:构建运动候选列表(第一列表),其包括单向预测或双向预测的运动信息候选。
[0361]
第一列表可以根据itu-t h.265和vvc中的方法构建,参见上述h.265和vvc中关于合并列表构建过程的示例和公开内容。
[0362]
步骤2:使用第一列表中的候选构建第二列表,如下所示:
[0363]
步骤2.1:从第一列表中的第一候选开始。
[0364]
步骤2.2:如果该运动信息候选为单向预测候选,则将该候选(运动信息候选)添加到第二列表中。
[0365]
或者,
[0366]
步骤2.3:如果运动信息候选为双向预测候选,则根据双向预测候选生成一个单向预测候选,并将其添加到第二列表中,如下:
[0367]

所生成的单向预测运动信息候选包括与l0参考图像列表对应的运动矢量和参考图像索引(在将候选插入第二列表之前,将该候选设置为单向预测候选)。
[0368]
步骤2.4:继续对第一列表中的下一个候选执行步骤2.2或步骤2.3,直到第二列表中收集到指定量的候选,或者直到处理完第一列表中的所有候选。
[0369]
第一合并列表和第二合并列表可以用于当前块的帧间预测过程中。
[0370]
例如,如果对当前块应用三角预测,则从第二列表中选择两个候选进行三角预测,一个候选用于第一三角形部分的预测过程,另一个候选用于第二三角形部分的预测过程。
[0371]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则在第二列表中选择一个候选对当前块进行帧间预测。在本示例中,由于当前块的尺寸较小,不对当前块进行双向预测。
[0372]
在另一个示例中,如果对当前块应用合并模式,并且不对当前块应用三角预测模式,则选择第一列表中的一个候选,以对当前块进行预测,该示例与itu-t h.265或vvc中公开的相关过程相同。
[0373]
例如,第一运动候选列表为合并列表。
[0374]
需要说明的是,由于三角(或子块)预测的候选列表是从合并模式候选列表推导的,在一种可行的实现方式中,候选列表可能不是独立的列表。第二候选列表中的候选可以用指向合并模式候选列表中的候选的指示符来表示。
[0375]
实施例7公开了一种构建运动信息候选列表(第二列表)的方法,第二列表包括单向预测候选。
[0376]
如果未对块应用三角预测,则第一列表用于对块进行预测。例如,第一列表用于对指示应用合并模式但未指示应用三角预测模式的译码块。
[0377]
根据第一列表构建第二列表。如果对块应用三角预测,则从第二列表中选择运动信息(或运动矢量)候选。第二列表包括单向预测候选,这些候选可以应用于块的第一三角形部分和第二三角形部分。例如,如果对块应用三角合并模式,则将2个合并索引译码在码流中。合并索引标识第二列表中用于块的第一或第二三角形部分的候选。
[0378]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则将一个合并索引译码在码流中,以标识第二列表中用于对块进行预测的候选。如果当前块的块尺寸大于阈值(例如,阈值可以为16),或者当前块的块尺寸不是预定义的或参数集合中指示的最小尺寸,则将合并索引译码在码流中,以标识第一列表中用于对块进行预测的候选。
[0379]
根据实施例7,如果第一列表中的运动候选为双向预测候选,则在双向预测候选转换为单向预测候选后,将该候选添加到第二列表中。双向预测运动候选包括2个运动矢量和2个参考图像索引,其中一对对应参考图像列表l0,另一对对应参考图像列表l1。转换后的单向预测候选包括与参考图像列表l0对应的参考图像索引和运动矢量。在实施例7中,如果确定对块应用三角预测,则与参考图像列表l1对应的运动数据不用于生成第二单向预测候选。
[0380]
图10示出了实施例7的流程图。
[0381]
在本发明的一个实施例中(实施例8),根据以下步骤构建合并列表。
[0382]
步骤1:构建运动候选列表(第一列表),其包括单向预测或双向预测的运动信息候选。
[0383]
第一列表可以根据itu-t h.265和vvc中的方法构建,参见上述h.265和vvc中关于合并列表构建过程的示例和公开内容。
[0384]
步骤2:使用第一列表中的候选构建第二列表和第三列表,如下所示:
[0385]
步骤2.1:从第一列表中的第一候选开始。
[0386]
步骤2.2:如果该候选为单向预测候选,则将该候选(运动信息候选)添加到第二列表和第三列表中。
[0387]
或者,
[0388]
步骤2.3:如果候选为双向预测候选,则生成两个单向预测候选,根据如下顺序将一个单向预测候选添加到第二列表中,将一个单向预测候选添加到第三列表中:
[0389]

第一运动信息候选包括与l0参考图像列表对应的运动矢量和参考图像索引(在将候选插入第二列表之前,将该候选设置为单向预测候选)。
[0390]

第二运动信息候选包括运动矢量和与l1参考图像列表对应的参考图像索引(在将候选插入第三列表之前,将该候选设置为单向预测候选)。
[0391]
步骤2.4:继续对第一列表中的下一个候选执行步骤2.2或步骤2.3,直到第二列表和第三列表中收集到指定量的候选,或者直到处理完第一列表中的所有候选。
[0392]
第一合并列表、第二合并列表和第三合并列表可以用于当前块的帧间预测过程中。
[0393]
例如,如果对当前块应用三角预测,则选择第二列表中的一个候选和第三列表中的一个候选来进行三角预测,一个候选用于第一三角形部分的预测过程,另一个候选用于第二三角形部分的预测过程。
[0394]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则在第二列表中选择一个候选对当前块进行帧间预测。在本示例中,由于当前块的尺寸较小,不对当前块进行双向预测。
[0395]
在另一个示例中,如果对当前块应用合并模式,并且不对当前块应用三角预测模式,则选择第一列表中的一个候选,以对当前块进行预测,该示例与itu-t h.265或vvc中公开的相关过程相同。
[0396]
例如,第一运动候选列表为合并列表。
[0397]
需要说明的是,由于三角(或子块)预测的候选列表是从合并模式候选列表推导的,在一种可行的实现方式中,候选列表可能不是独立的列表。第二候选列表中的候选可以用指向合并模式候选列表中的候选的指示符来表示。
[0398]
实施例8公开了一种构建两个运动信息候选列表(第二列表和第三列表)的方法,第二列表和第三列表包括单向预测候选。
[0399]
如果未对块应用三角预测,则第一列表用于对块进行预测。例如,第一列表用于对指示应用合并模式但未指示应用三角预测模式的译码块。
[0400]
根据第一列表构建第二列表和第三列表。如果对块应用三角预测,则从第二列表中和第三列表中选择运动信息(或运动矢量)候选。第二列表和第三列表包括单向预测候选,这些候选可以应用于块的第一三角形部分和第二三角形部分。例如,如果对块应用三角合并模式,则将2个合并索引译码在码流中。第一合并索引标识第二列表中用于块的第一三角形部分的候选,以及第三列表中用于块的第二三角形部分的候选。
[0401]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或
者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则将一个合并索引译码在码流中,以标识第二列表中用于对块进行预测的候选。如果当前块的块尺寸大于阈值(例如,阈值可以为16),或者当前块的块尺寸不是预定义的或参数集合中指示的最小尺寸,则将合并索引译码在码流中,以标识第一列表中用于对块进行预测的候选。
[0402]
在另一个示例中,如果确定不对块应用三角预测,则可以检查其它条件以确定块是否使用第一运动候选列表。在一个示例中,如果确定不对块应用三角预测,则进一步确定块是否应用合并模式。如果应用合并模式,则使用第一运动候选列表对块进行预测,如果未应用合并模式,则可以应用对当前块进行预测的其它方法(例如帧内预测)。
[0403]
根据实施例8,根据第一运动候选列表构建第二运动候选列表和第三运动候选列表。第二列表和第三列表可以仅包括单向预测候选,因此具有不包括不可用候选(例如,双向预测候选)的优点。因此,指示使用哪个候选的指示符可以用更少的位数来表示,从而提高了压缩效率。
[0404]
在本发明的一个实施例中(实施例9),根据以下步骤构建合并列表。
[0405]
步骤1:构建运动候选列表(第一列表),其包括单向预测或双向预测的运动信息候选。
[0406]
第一列表可以根据itu-t h.265和vvc中的方法构建,参见上述h.265和vvc中关于合并列表构建过程的示例和公开内容。
[0407]
步骤1.1:初始化具有正整数值n的计数器(计数器的值设置为n)。
[0408]
步骤2:使用第一列表中的候选构建第二列表,如下所示:
[0409]
步骤2.1:从第一列表中的第一候选开始。
[0410]
步骤2.2:如果该候选为单向预测候选,则将该候选(运动信息候选)添加到第二列表中。
[0411]
或者,
[0412]
步骤2.3:如果该候选为双向预测候选,则根据所述一个双向预测候选生成两个单向预测候选,并根据如下顺序将两个单向预测候选添加到第二列表中:
[0413]

第一候选包括与l0参考图像列表对应的运动矢量和参考图像索引。运动矢量表示为mv_l0,参考图像的poc值(根据列表l0中的参考图像索引计算)表示为poc_l0。
[0414]

第二候选包括运动矢量和与l1参考图像列表对应的参考图像索引。运动矢量表示为mv_l1,参考图像的poc值(根据列表l1中的参考图像索引计算)表示为poc_l1。
[0415]

如果满足以下所有条件,则将第二候选插入第二列表中;
[0416]

计数器的值大于0,
[0417]

如果poc_l0不等于poc_l1或者mv_l0与mv_l1不相似。
[0418]

如果计数器的值等于零,则将第二候选插入到第二列表中。
[0419]

如果计数器的值大于0,则计数器的值减1。
[0420]
步骤2.4:继续对第一列表中的下一个候选执行步骤2.2或步骤2.3,直到第二列表中收集到指定量(数量)的候选,或者直到处理完第一列表中的所有候选。
[0421]
指定的候选数量可以是预定义的值,也可以是码流中指示的值。在一种特定实现方式中,指定的数量为5。在这种情况下,将候选添加到第二列表中,直到第二列表中填充了5个候选。
[0422]
在一种可能的实现方式中,n的取值可以为预定义的数量,等于1。
[0423]
根据实施例9,将运动矢量比较操作的次数(由以上章节的检查条件“如果poc_l0不等于poc_l1,或mv_l0与mv_l1不相似”给出)限制为n的最大值。由于硬件实现具有特定的定时限制,因此减少和限制运动矢量比较操作的次数有助于提高硬件实现的处理吞吐量。
[0424]
根据实施例9,第一列表中的前n个双向预测候选需要运动矢量比较操作。在n等于1的情况下,在将两个生成的单向预测候选插入第二列表中之前,第一列表中的第一双向预测候选需要进行运动矢量比较操作。在根据2.3的步骤对第一列表中的第一双向预测候选进行处理后,剩余的双向预测候选不需要进行运动矢量比较操作。
[0425]
或者,可以根据如下步骤构建第二合并列表:
[0426]
步骤1:构建运动候选列表(第一列表),其包括单向预测或双向预测的运动信息候选。
[0427]
第一列表可以根据itu-t h.265和vvc中的方法构建,参见上述h.265和vvc中关于合并列表构建过程的示例和公开内容。
[0428]
步骤1.1:初始化具有正整数值n的计数器(计数器的值设置为n)。
[0429]
步骤2:使用第一列表中的候选构建第二列表,如下所示:
[0430]
步骤2.1:从第一列表中的第一候选开始。
[0431]
步骤2.2:如果该候选为单向预测候选,则将该候选(运动信息候选)添加到第二列表中。
[0432]
或者,
[0433]
步骤2.3:如果该候选为双向预测候选,则根据所述一个双向预测候选生成两个单向预测候选,并根据如下顺序将两个单向预测候选添加到第二列表中:
[0434]

第一候选包括与l0参考图像列表对应的运动矢量和参考图像索引。运动矢量表示为mv_l0,参考图像的poc值(根据列表l0中的参考图像索引计算)表示为poc_l0。
[0435]

第二候选包括运动矢量和与l1参考图像列表对应的参考图像索引。运动矢量表示为mv_l1,参考图像的poc值(根据列表l1中的参考图像索引计算)表示为poc_l1。
[0436]

如果满足以下所有条件,则将第二候选插入第二列表中;
[0437]

计数器的值大于0,
[0438]

如果poc_l0不等于poc_l1或者mv_l0与mv_l1不相似。
[0439]

如果计数器的值等于零,则将第二候选插入到第二列表中。
[0440]
步骤2.4:如果计数器的值大于0,则计数器的值减1。
[0441]
步骤2.5:继续对第一列表中的下一个候选执行步骤2.2或步骤2.3,直到第二列表中收集到指定量的候选,或者直到处理完第一列表中的所有候选。
[0442]
指定的候选的数量可以是预定义的值或码流中指示的值。在一种特定实现方式中,指定的数量为5。在这种情况下,将候选添加到第二列表中,直到第二列表中填充了5个候选。
[0443]
在一种特定的实现方式中,n的取值可以为预定义的数量,等于1。
[0444]
根据实施例9的替换方案,将运动矢量比较操作的次数(以上章节中描述为检查条件“如果poc_l0不等于poc_l1,或mv_l0与mv_l1不相似”)限制为n的最大值。由于硬件实现具有特定的定时限制,因此减少和限制运动矢量比较操作的次数有助于提高硬件实现的处
理吞吐量。
[0445]
根据实施例9的替代方案,对于第一列表中的前n个候选,需要运动矢量比较操作。在n等于1的情况下,如果第一列表中的第一双候选是双向预测候选,则需要进行运动矢量比较操作。在根据2.3的步骤对第一列表中的第一候选进行处理后,剩余的双向预测候选不需要进行运动矢量比较操作。
[0446]
在第一示例中,在对第一列表中的第一双向预测候选进行处理(通过生成两个单向预测候选并插入到第二列表中)之后,计数器减1。在第二示例中,在对第一列表中的第一候选进行处理之后,无论所述候选是单向预测候选还是双向预测候选,计数器都减1。
[0447]
第一合并列表和第二合并列表可以用于当前块的帧间预测过程中。需要说明的是,由于三角(或子块)预测的候选列表是从合并模式候选列表推导的,在一种可行的实现方式中,候选列表可能不是独立的列表。第二候选列表中的候选可以用指向合并模式候选列表中的候选的指示符来表示。
[0448]
例如,如果对当前块应用三角预测,则从第二列表中选择两个候选进行三角预测,一个候选用于第一三角形部分的预测过程,另一个候选用于第二三角形部分的预测过程。
[0449]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则在第二列表中选择一个运动信息候选对当前块进行帧间预测。在本示例中,由于当前块的尺寸较小,不对当前块进行双向预测。
[0450]
在另一个示例中,如果对当前块应用合并模式,并且不对当前块应用三角预测模式,则选择第一列表中的一个候选,以对当前块进行预测,该示例与itu-t h.265或vvc中公开的相关过程相同。
[0451]
例如,如果poc_l0等于poc_l1,并且mv_l0与mv_l1相同,则在步骤2.3中,不将第二候选添加到第二列表中。
[0452]
在另一个示例中,如果l0部分的参考图像索引与l1部分的参考图像索引相同,并且mv_l0与mv_l1相同(或相似)时,则在步骤2.3中,不将第二候选添加到第二列表中。
[0453]
例如,可以根据以下不等式确定两个运动矢量的相似度:
[0454]-k《(mv1.x

mv2.x)《k和-k《(mv1.y

mv2.y)《k
[0455]
mv1.x表示第一运动矢量的x分量(mv2.x的平均值与mv1.x相似),mv1.y(mv2.y的平均值与mv1.y相似)表示y分量,k为正数。在该示例中,如果两个不等式都成立,则认为运动矢量mv1与运动矢量mv2相似。
[0456]
在另一个示例中,可以根据以下等式确定相似度:
[0457]
(mv1.x》》n)

(mv2.x》》n)==k和(mv1.x》》n)

(mv2.x》》n)==k.
[0458]
其中,x》》y表示将x的二的补码整数表示算术右移y个二进制数字。该函数仅针对y的非负整数值定义。由于右移而移到最高有效位(most significant bit,msb)的位的值等于移位操作前的x的msb。“==”是有理运算,当运算符的两侧相等时才正确。在该示例中,如果两个等式都成立,则认为运动矢量mv1与运动矢量mv2相似。
[0459]
例如,第一运动候选列表为合并列表。
[0460]
在步骤2.3中,只有当第二候选(为根据第一运动候选列表的双向预测候选的l1部分生成的单向预测候选)与第一候选(为根据第一运动候选列表的双向预测候选的l0部分
生成的单向预测候选)充分不相同时,才将第二候选添加到第二运动候选列表。
[0461]
由于l1部分与l0部分相似(或相同)时不将l1部分插入第二列表中,因此提高了压缩效率。
[0462]
实施例9公开了一种构建运动信息候选列表(第二列表)的方法,第二列表包括单向预测候选。
[0463]
如果未对块应用三角预测,则第一列表用于对块进行预测。例如,第一列表用于对指示应用合并模式但未指示应用三角预测模式的译码块。
[0464]
根据第一列表构建第二列表。如果对块应用三角预测,则从第二列表中选择运动信息(或运动矢量)候选。第二列表包括单向预测候选,这些候选可以应用于块的第一三角形部分和第二三角形部分。例如,如果对块应用三角合并模式,则将2个合并索引译码在码流中。合并索引标识第二列表中用于块的第一或第二三角形部分的候选。
[0465]
在另一个示例中,如果当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则将一个合并索引译码在码流中,以标识第二列表中用于对块进行预测的候选。如果当前块的块尺寸大于阈值(例如,阈值可以为16),或者当前块的块尺寸不是预定义的或参数集合中指示的最小尺寸,则将合并索引译码在码流中,以标识第一列表中用于对块进行预测的候选。
[0466]
在另一个示例中,如果确定不对块应用三角预测,则可以检查其它条件以确定块是否使用第一运动候选列表。在一个示例中,如果确定不对块应用三角预测,则进一步确定块是否应用合并模式。如果应用合并模式,则使用第一运动候选列表对块进行预测,如果未应用合并模式,则可以应用对当前块进行预测的其它方法(例如帧内预测)。
[0467]
根据实施例9,根据第一运动候选列表构建第二运动候选列表。第二列表可以仅包括单向预测候选,因此具有不包括不可用候选(例如,双向预测候选)的优点。因此,指示使用哪个候选的指示符可以用更少的位数来表示,从而提高了压缩效率。
[0468]
需要说明的是,在实施例1-9中,使用术语“第一列表”和“第二列表”来解释这些方面,其中,如果使用三角或子块预测模式对译码块进行译码,则第二列表中的运动信息候选用于对译码块进行预测。本发明还可以视为对构建第一列表的规则的修改。由于第一列表不仅可以包含单向预测候选,而且还可以包含双向预测候选,因此不能用于译码块的预测,该译码块是使用三角预测进行预测(这要求所有可选择的候选必须是单向预测候选)。因此,本发明可以视为对例如在itu-t h.265标准或vvc草案标准中描述的列表构建规则的修改。事实上,所公开的方面可以应用于包括单向预测候选和双向预测候选的任何运动信息列表,并且本发明的目的是以使得得到的运动信息候选列表仅包括单向预测候选的方式修改列表构建规则。因此,可以应用修改的列表构建规则来获得运动信息候选,该运动信息候选可以用于对译码块进行预测,该译码块是使用三角(或子块)预测进行预测的。换句话说,实施例1-9描述了获得仅包括单向预测候选的运动信息候选列表所必需的规则修改,给定用于构建包括单向预测候选和双向预测候选的合并列表的一组规则。
[0469]
示例1。一种根据合并候选列表对块进行处理的方法,该方法包括:
[0470]
根据当前块的相邻块的运动信息构建第一列表;
[0471]
根据第一列表构建第二列表;
[0472]
获取当前块的预测信息或块尺寸信息;
[0473]
根据当前块的预测信息或块尺寸信息,使用第一列表或第二列表对当前块进行帧间预测。
[0474]
示例2。根据示例1的方法,第二列表的所有候选是单向预测候选。
[0475]
示例3。根据示例1或2的方法,根据第一列表构建第二列表包括:
[0476]
根据第一列表中的一个双向预测候选生成两个单向预测候选;
[0477]
根据两个单向预测候选构建第二列表。
[0478]
示例4。根据示例1或2的方法,根据第一列表构建第二列表包括:
[0479]
根据第一列表中的一个双向预测候选生成一个单向预测候选;
[0480]
根据一个单向预测候选构建第二列表。
[0481]
示例5。根据示例1或2的方法,根据第一列表构建第二列表包括:
[0482]
根据第一列表中的一个双向预测候选生成两个单向预测候选;
[0483]
根据第一列表中的至少一个单向预测候选和两个单向预测候选构建第二列表。
[0484]
示例6。根据示例1或2的方法,根据第一列表构建第二列表包括:
[0485]
根据第一列表中的一个双向预测候选生成两个单向预测候选;
[0486]
确定两个单向预测候选的相似度;
[0487]
根据两个单向预测候选和相似度判断的结果构建第二列表。
[0488]
示例7。根据示例1至6中任一项的方法,根据第一列表构建第二列表包括:
[0489]
根据将第一列表的双向预测候选分割成两个单向预测候选,将第一列表的至少一个单向预测候选插入第二列表中。
[0490]
示例8。根据示例1至6中任一项的方法,根据第一列表构建第二列表包括:
[0491]
根据至少一个单向预测候选在第一列表中的顺序,以及根据将第一列表中双向预测候选分割成两个单向预测候选,将第一列表中的至少一个单向预测候选插入第二列表中。
[0492]
示例9。根据示例1至8中任一项的方法还包括:
[0493]
确定第一列表的双向预测候选的两个分量的相似度,
[0494]
根据确定相似度的结果更新第一列表;
[0495]
相应地,根据第一列表构建第二列表包括:
[0496]
根据更新后的第一列表构建第二列表。
[0497]
示例10。根据示例1至9中任一项的方法,第二列表的尺寸小于或等于第一列表的尺寸。
[0498]
示例11。根据示例1至9中任一项的方法,根据当前块的块尺寸确定第二列表的尺寸。
[0499]
示例12。根据示例1至9中任一项的方法,根据当前块的宽度或高度确定第二列表的尺寸。
[0500]
示例13。根据示例1至12中任一项的方法,根据当前块的预测信息或块尺寸信息,使用第一列表或第二列表进行帧间预测包括:
[0501]
当对当前块应用三角预测(或子块预测)时,第二列表用于对当前块进行预测;
[0502]

[0503]
当未对当前块应用三角预测(或子块预测)时,第一列表用于对当前块进行预测。
[0504]
示例14。根据示例1至13中任一项的方法,根据当前块的预测信息或块尺寸信息,使用第一列表或第二列表进行帧间预测包括:
[0505]
当当前块的块尺寸小于或等于阈值(例如,阈值可以为16),或者当前块的块尺寸是预定义的或在参数集合中指示的最小尺寸,则第二列表用于对当前块进行预测;
[0506]

[0507]
当当前块的块尺寸大于阈值(例如,该阈值可以为16)或者当前块的块尺寸不是预定义的或在参数集合中指示的最小尺寸时,第一列表用于对当前块进行预测。
[0508]
示例15。一种编码器(20),包括用于执行根据示例1至14中任一项的方法的处理电路。
[0509]
示例16。一种解码器(30),包括用于执行根据示例1至14中任一项的方法的处理电路。
[0510]
示例17。一种计算机程序产品,包括程序代码,用于执行根据权利要求1至14中任一项的方法。
[0511]
示例18。一种解码器,包括:
[0512]
一个或多个处理器;
[0513]
非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到处理器并存储由处理器执行的程序,其中程序在由处理器执行时使解码器执行根据示例1至14中任一项的方法。
[0514]
示例19。一种编码器,包括:
[0515]
一个或多个处理器;
[0516]
非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到处理器并存储由处理器执行的程序,其中程序在由处理器执行时使编码器执行根据示例1至14中任一项的方法。
[0517]
尽管本发明的实施例已经主要根据视频译码进行描述,但需要说明的是,译码系统10、编码器20和解码器30(以及相应地系统10)的实施例以及本文描述的其它实施例也可以用于静止图像处理或译码,即独立于视频译码中的任何前面或连续的图像的处理或译码。通常,在图像处理译码限于单个图像17的情况下,可能只有帧间预测单元244(编码器)和344(解码器)不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)可以同样用于静止图像处理,例如残差计算204/304,变换206,量化208,反量化210/310,(逆)变换212/312,分割262/362,帧内预测254/354和/或环路滤波220、320,熵译码270和熵解码304。
[0518]
下文对上述实施例中所示的编码方法和解码方法的应用以及使用这些方法的系统进行说明。
[0519]
图16为用于实现内容分发服务的内容供应系统3100的框图。该内容供应系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。捕获设备3102与终端设备3106通过通信链路3104进行通信。该通信链路可以包括上述通信信道13。通信链路3104包括但不限于wifi、以太网、电缆、无线(3g/4g/5g)、usb或者其任何组合等。
[0520]
捕获设备3102生成数据,并且可以通过如上述实施例所示的编码方法对数据进行编码。或者,捕获设备3102可以将数据分发给流服务器(图中未示出),服务器对数据进行编
码并将经编码的数据发送给终端设备3106。捕获设备3102包括但不限于摄像头、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、pda、车载设备,或它们的任何组合等。例如,捕获设备3102可以包括如上所述的源设备12。当数据包括视频时,捕获设备3102中包括的视频编码器20实际上可以执行视频编码处理。当数据包括音频(即,语音)时,捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。对于一些实际场景,捕获设备3102通过将经编码的视频和音频数据复用在一起来进行分发。对于其它实用场景,例如在视频会议系统中,不复用经编码的音频数据和经编码的视频数据。捕获设备3102将编码音频数据和编码视频数据分别分发给终端设备3106。
[0521]
在内容提供系统3100中,终端设备310接收并再现编码数据。终端设备3106可以是具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,nvr)/数字录像机(digital video recorder,dvr)3112、tv 3114、机顶盒(set top box,stb)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,pda)3122、车载设备3124或其任何组合,或者能够解码上述编码数据的设备。例如,终端设备3106可以包括如上所述的目的设备14。当经编码的数据包括视频时,终端设备中包括的视频解码器30优先进行视频解码。当经编码的数据包括音频时,终端设备中包括的音频解码器优先进行音频解码处理。
[0522]
对于带有显示器的终端设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,nvr)/数字录像机(digital video recorder,dvr)3112、tv 3114、个人数字助理(personal digital assistant,pda)3122或车载设备3124,终端设备可以将经解码的数据馈送到该终端设备的显示器。对于没有显示器的终端设备(例如stb 3116、视频会议系统3118或视频监控系统3120),连接外部显示器3126以接收并显示解码数据。
[0523]
该系统中的每个设备在进行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。
[0524]
图17为终端设备3106的一个示例的结构的图。在终端设备3106从捕获设备3102接收流之后,协议处理单元(protocol proceeding unit)3202分析流的传输协议。协议包括但不限于实时流协议(real time streaming protocol,rtsp)、超文本传输协议(hyper text transfer protocol,http)、http直播协议(http live streaming protocol,hls)、mpeg-dash、实时传输协议(real-time transport protocol,rtp)、实时消息协议(real time messaging protocol,rtmp)或其任何组合等。
[0525]
协议处理单元3202对流进行处理后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分离为经编码的音频数据和经编码的视频数据。如上所述,对于一些实际场景,例如在视频会议系统中,不复用经编码的音频数据和经编码的视频数据。在这种情况下,将经编码的数据发送到视频解码器3206和音频解码器3208,无需经过解复用单元3204。
[0526]
通过解复用处理,生成视频基本流(elementary stream,es)、音频es和可选的字幕。视频解码器3206包括如上述实施例中所说明的视频解码器30,通过如上述实施例中所示的解码方法对视频es进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208,解码音频es以生成音频帧,并将该数据馈送到同步单元3212。或者,在将视频帧
馈送到同步单元3212之前,可以将该视频帧存储在缓冲器(图17中未示出)中。类似地,在将音频帧馈送到同步单元3212之前,可以将该音频帧存储在缓冲器(图17中未示出)中。
[0527]
同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用关于经译码的音频和视频数据的表示的时间戳和关于数据流本身的传递的时间戳在语法中对信息进行译码。
[0528]
如果流中包括字幕,则字幕解码器3210解码字幕,并使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
[0529]
本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。
[0530]
编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则功能可以存储在计算机可读介质上或作为一个或多个指令或代码通过通信介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,对应数据存储介质等有形介质,或包括便于例如根据通信协议将计算机程序从一个地方传输到另一个地方的任何介质的通信介质。在这种方式中,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质或(2)通信介质,例如信号或载波。数据存储介质可以是任何可用介质,可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明所描述的技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
[0531]
作为示例而非限制,此类计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存,或可以用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digital subscriber line,dsl)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compact disc,cd)、激光光盘、光盘、数字通用光盘(digital versatile disc,dvd)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
[0532]
指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digital signal processor,dsp)、通用微处理器、专用集成电路(application-specific integrated circuit,asic)、现场可编程逻辑阵列(field programmable logic array,fpga)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能可以在用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解码器中。另外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
[0533]
本发明的技术可以在多种设备或装置中实现,包括无线手持电话、集成电路(integrated circuit,ic)或一组ic(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同
的硬件单元实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。

技术特征:
1.一种根据合并候选列表对块进行处理的编码方法,其特征在于,所述方法包括:根据当前块的相邻块的运动信息构建第一列表;获取所述当前块的预测信息;当所述当前块的所述预测信息指示所述当前块应用三角预测模式时,根据所述第一列表获取所述当前块的单向预测候选;使用所述当前块的所述单向预测候选对所述当前块进行帧间预测;当对所述当前块应用合并模式,并且不对所述当前块应用所述三角预测模式或当前块的块尺寸大于阈值,则选择所述第一列表中的候选来对所述当前块进行帧间预测。2.根据权利要求1所述的方法,其特征在于,所述当前块包括两个子块,每个子块对应一个单向预测候选。3.根据权利要求1或2所述的方法,其特征在于,一个单向预测候选是根据所述第一列表中的一个双向预测候选生成。4.根据权利要求1或2所述的方法,其特征在于,所述第一列表为合并候选列表,所述运动信息包括运动数据,所述运动数据包括指示使用一个或两个参考图像列表的信息、以及每个参考图像列表的参考索引和运动矢量,所述相邻块为空间相邻块。5.根据权利要求3所述的方法,其特征在于,一个单向预测候选为所述双向预测候选的第一部分。6.根据权利要求3所述的方法,其特征在于,一个单向预测候选为所述双向预测候选的第二部分。7.根据权利要求1至6中任一项所述的方法,其特征在于,所述预测信息用于指示所述当前块是否应用三角预测模式。8.根据权利要求1至7中任一项所述的方法,其特征在于,所述构建第一列表包括:检查所述相邻块是否可用并包含运动信息之后,将所述相邻块的所有运动数据作为运动信息候选之前,执行冗余检查,所述冗余检查为左相邻块、右上相邻块、上相邻块、左上相邻块间,以及左相邻块,左下相邻块,以及左上相邻块间。9.一种根据合并候选列表对块进行处理的解码方法,其特征在于,所述方法包括:根据当前块的相邻块的运动信息构建第一列表;获取所述当前块的预测信息;当所述当前块的所述预测信息指示所述当前块应用三角预测模式时,根据所述第一列表获取所述当前块的单向预测候选;使用所述当前块的所述单向预测候选对所述当前块进行帧间预测;当对所述当前块应用合并模式,并且不对所述当前块应用所述三角预测模式或当前块的块尺寸大于阈值,则选择所述第一列表中的候选来对所述当前块进行帧间预测。10.一种编码器(20),其特征在于,包括处理电路,用于执行根据权利要求1至8中任一项所述的方法。11.一种解码器(30),其特征在于,包括处理电路,用于执行根据权利要求9所述的方法。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有由一个或多个处理器执行的如权利要求1至8中的任一项所述方法得到的视频码流。
13.一种解码器,其特征在于,包括:一个或多个处理器;非瞬时性计算机可读存储介质,所述非瞬时性计算机可读存储介质耦合到所述处理器并存储由所述处理器执行的程序,当所述处理器执行所述程序时,使所述解码器执行根据权利要求9所述的方法。

技术总结
本发明提供根据合并候选列表对块进行处理的方法和设备,该方法包括:根据当前块的相邻块的运动信息构建第一列表;获取当前块的预测信息;当当前块的预测信息指示当前块应用了子块预测时,根据第一列表获取当前块的单向预测候选;使用当前块的单向预测候选对当前块进行帧间预测。根据本发明的实施例,常规合并列表可以直接使用,不需要显式生成子块预测的单向预测合并候选列表。向预测合并候选列表。向预测合并候选列表。


技术研发人员:蒂莫菲
受保护的技术使用者:华为技术有限公司
技术研发日:2019.11.20
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐