子块融合候选的单独融合列表和视频编码的帧内和帧间预测技术协调的制作方法

文档序号:26013013发布日期:2021-07-23 21:34阅读:72来源:国知局
子块融合候选的单独融合列表和视频编码的帧内和帧间预测技术协调的制作方法

本申请(本发明)实施例大体上涉及图像处理领域,更具体地,涉及两种方法之间的协调。更具体地,本发明实施例提出了多种方法,用于联合使用和指示(signal)子块融合候选的单独融合列表以及用于帧内预测模式和帧间预测模式技术的多假设预测。



背景技术:

视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字tv、通过互联网和移动网络传输视频、实时会话应用(如视频聊天)、视频会议、dvd和蓝光光盘、视频内容采集和编辑系统,以及安全应用的摄像机。

即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源有限,当在设备中视频时,视频的大小也成为问题。视频压缩设备通常在源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行编码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。



技术实现要素:

本发明提供视频编码和解码装置和方法。

本发明的目的是协调帧内预测模式和帧间预测模式的多假设预测以及子块融合候选的单独融合列表的使用和指示。

上述和其它目的通过独立权利要求请求保护的主题实现。其它实现方式从从属权利要求、说明书和附图中是显而易见的。

根据本发明的第一方面,提供了一种将视频数据编码为码流的方法。所述方法包括使用第一技术和/或第二技术。所述第一种技术包括对子块融合候选使用单独融合列表。所述第二种技术包括用于帧内预测模式和帧间预测模式的多假设预测。所述方法包括:对于编码块,在所述码流中传输第一控制块,根据所述编码块是否使用所述第一技术,在所述码流中传输或不传输第二标志。所述第一控制标志表示是否使用所述第一技术。所述第二控制标志表示是否使用所述第二技术。

根据本发明的第二方面,提供了一种对从码流接收的视频数据进行解码的方法。所述方法包括使用第一技术和/或第二技术。所述第一种技术包括对子块融合候选使用单独融合列表。所述第二种技术包括用于帧内预测模式和帧间预测模式的多假设预测。所述方法包括:对于编码块,从所述码流接收第一控制标志,其中,所述第一控制标志表示是否使用所述第一技术;根据所述编码块是否使用所述第一技术,从所述码流接收第二控制标志。所述第二控制标志表示是否使用所述第二技术。

在本发明的具体方法中,在确定是否对子块融合候选使用单独融合列表技术时,仅有条件地生成和传输表示是否对帧内预测模式和帧间预测模式使用多假设预测的第二控制标志。此外,尽管所述第二控制标志仅有条件地被传输,解码器能够决定对帧内预测模式和帧间预测模式使用多假设预测以及对子块融合候选使用单独融合列表技术。

根据第一方面,在所述方法的一种可能实现方式中,当且仅当所述编码块不使用所述第一技术时,传输所述第二控制标记。

根据第一方面或上述实现方式,在所述方法的一种可能的实现方式中,当所述编码块使用融合模式编码时,传输所述第二控制标志。根据第一方面的上述实现方式,在所述方法的一种可能的实现方式中,当所述编码块不使用融合模式编码时,不传输所述第二控制标志。根据第一方面或第一方面的上述实现方式,在所述方法的一种可能的实现方式中,当所述编码块使用跳过模式编码时,传输所述第二控制标志。根据第一方面的上述实现方式,在一种可能的实现方式中,当所述编码块不使用跳过模式或融合模式编码时,不传输所述第二控制标志。

因此,根据本发明的具体方法,可以在融合模式、跳过模式或融合和跳过模式中进行指示。

根据第二方面,在所述方法的一种可能的实现方式中,仅当不使用所述第一技术时,接收所述第二控制标志。

因此,所述解码器可以根据接收的码流中的第二控制标志直接推断对当前编码块不使用单独融合列表技术。因此,只有当接收的码流中不包括所述第二控制标志时,才需要评估表示是否对子块候选使用单独融合列表技术的第一控制标志。

根据第二方面或第二方面的上述实现方式,在所述方法的一种可能的实现方式中,当所述编码块使用融合模式编码时,接收所述第二控制标志。根据第二方面的上述实现方式,在所述方法的一种可能的实现方式中,当所述编码块不使用融合模式编码时,不接收所述第二控制标志。根据第二方面或第二方面的上述实现方式,在所述方法的一种可能的实现方式中,当所述编码块使用跳过模式编码时,接收所述第二控制标志。根据第二方面的上述实现方式,在所述方法的一种可能的实现方式中,当所述编码块不使用跳过模式编码时,不接收所述第二控制标志。

权利要求书、说明书以及附图中定义的编码方法和解码方法可以分别由编码装置和解码装置执行。

根据第三方面,本发明涉及一种编码器,所述编码器包括处理电路,用于执行第一方面或第一方面任意一种实现方式所述的方法。

根据第四方面,本发明涉及一种解码器,所述解码器包括处理电路,用于执行第二方面或第二方面任意一种实现方式所述的方法。

根据第五方面,本发明涉及一种编码器。所述编码器包括一个或多个处理器,以及耦合到所述处理器的非瞬时性计算机可读存储介质。所述非瞬时性计算机可读存储介质存储由所述处理器执行的程序。在所述处理器执行所述程序时,使得所述解码器执行第一方面或第一方面任意一种实现方式所述的方法。

根据第六方面,本发明涉及一种解码器。所述解码器包括一个或多个处理器,以及耦合到所述处理器的非瞬时性计算机可读存储介质。所述非瞬时性计算机可读存储介质存储由所述处理器执行的程序。在所述处理器执行所述程序时,使得所述解码器执行第二方面或第二方面任意一种实现方式所述的方法。

根据第七方面,本发明涉及一种用于将视频数据编码为码流的编码器,所述编码器包括用于执行第一技术和/或第二技术的装置。所述第一种技术包括对子块融合候选使用单独融合列表。所述第二种技术包括用于帧内预测模式和帧间预测模式的多假设预测。所述编码器还包括一种装置:对于编码块,用于在所述码流中传输第一控制块;以及一种装置,根据所述编码块是否使用所述第一技术,用于在所述码流中传输或不传输第二标志。所述第一控制标志表示是否使用所述第一技术。所述第二控制标志表示是否使用所述第二技术。

根据第八方面,本发明涉及一种用于对从码流接收的视频数据进行解码的解码器。所述解码器包括用于执行第一技术和/或第二技术的装置。所述第一种技术包括对子块融合候选使用单独融合列表。所述第二种技术包括用于帧内预测模式和帧间预测模式的多假设预测。所述解码器还包括一种装置:对于编码块,用于从所述码流接收第一控制标志,其中,所述第一控制标志表示是否使用所述第一技术;以及一种装置,根据所述编码块是否使用所述第一技术,用于从所述码流接收第二控制标志。所述第二控制标志表示是否使用所述第二技术。

根据另一方面,本发明涉及一种包括程序代码的非瞬时性计算机可读介质。在计算机设备执行所述程序代码时,使得所述计算机设备执行第一方面或第二方面所述的方法。

第六方面和第七方面所述编码器和解码器的可能实现方式对应于第一方面和第二方面所述方法的可能实现方式。

一种用于编码或解码视频流的装置,其可以包括处理器和存储器。所述存储器存储指令,使得所述处理器执行所述编码或解码方法。

针对本文中公开的一种编码方法或解码方法,提供了一种计算机可读存储介质。所述存储介质存储指令,当所述指令被执行时,使得一个或多个处理器编码或解码视频数据。所述指令使得所述一个或多个处理器执行相应的编码方法或解码方法。

此外,针对本文中公开的每一种编码方法或解码方法,提供了一种计算机程序产品。所述计算机程序产品包括用于执行相应方法的程序代码。

以下附图和说明中将详细阐述了一个或多个实施例。其它特征、目标和优点在说明书、附图以及权利要求书中是显而易见的。

附图说明

下面参照所附的附图和示意图对本发明实施例进行更加详细的描述,其中:

图1a为用于实现本发明实施例的示例性视频译码系统的框图;

图1b为用于实现本发明实施例的另一示例性视频译码系统的框图;

图2为用于实现本发明实施例的示例性视频编码器的框图;

图3为用于实现本发明实施例的视频解码器的示例性结构的框图;

图4为示例性编码装置或解码装置的框图;

图5为另一示例性编码装置或解码装置的框图;

图6为本发明实施例提供的示例性编码方法的流程图;

图7为本发明实施例提供的示例性解码方法的流程图。

下文中,除非明确地另外指定,否则相同的附图标记指代相同或至少功能等同的特征。

具体实施方式

以下描述中,参考构成本发明的一部分的附图,这些附图通过说明的方式示出本发明实施例的特定方面或可以使用本发明实施例的特定方面。应理解,本发明的实施例可以用于其它方面,并且包括在附图中未描绘的结构上或逻辑上的变化。因此,以下详细描述不作为限制意义,并且本发明的范围由所附权利要求限定。

例如,应理解,参考所描述的方法公开的内容对于用于执行该方法的对应的设备或系统也可以成立,反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括如功能单元等一个或多个单元,以执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元中的每一个单元都执行多个步骤中的一个或多个步骤),即使附图中未显式描述或说明此一个或多个单元。另一方面,例如,如果基于如功能单元等一个或多个单元来描述具体装置,则对应的方法可以包括一个步骤,以执行一个或多个单元的功能(例如,一个步骤执行一个或多个单元的功能,或多个步骤中的每一个步骤执行多个单元中的一个或多个单元的功能),即使附图中未显式描述或说明此一个或多个步骤。此外,应理解,除非特别指出,否则本文描述的各种示例性实施例和/或方面的特征可以彼此组合。

视频译码通常是指处理形成视频或视频序列的图像序列。在视频译码领域,术语“帧(frame)”与“图像(picture/image)”可以用作同义词。视频译码(或通常称为译码)包括视频编码和视频解码两部分。视频编码在源端执行,通常包括处理(例如,压缩)原始视频图像,以减少表示该视频图像所需的数据量(以便更高效地进行存储和/或传输)。视频解码在目的端执行,并且通常包括相对于编码器的逆处理以重建视频图像。实施例涉及的视频图像(或通常称为图像)的“译码”应理解为视频图像或各自视频序列的“编码”或“解码”。编码部分和解码部分也合称为编解码器(编码和解码,codec)。

在无损视频译码的情况下,可以对原始视频图像进行重建,即重建的视频图像与原始视频图像具有相同的质量(假设存储或传输期间没有传输损耗或其它数据损失)。在有损视频译码的情况下,通过量化等进行进一步压缩,来减少表示视频图像所需的数据量。此时解码器侧无法完全重建视频图像,即重建的视频图像的质量低于或劣于原始视频图像的质量。

若干个视频译码标准属于“有损混合视频编解码器”组(即,将样本域中的空间和时间预测与2d变换译码相结合,以在变换域中进行量化)。视频序列中的每个图像通常分割成不重叠块的集合,通常进行块级别的译码。也就是说,在编码器侧,通常在块(视频块)级处对视频进行处理(即编码),例如,通过空间(帧内)预测和/或时间(帧间)预测来生成预测块;从当前块(当前处理的块/待处理块)中减去预测块,得到残差块;在变换域中变换残差块并量化残差块,以减少待发送(压缩)的数据量,而在解码器侧,对经编码或压缩的块进行相对于编码器的逆处理,以重建当前块进行表示。此外,编码器和解码器的处理步骤相同,使得编码器和解码器生成相同的预测(例如,帧内预测和帧间预测)和/或重建,用于进行处理,即对后续块进行译码。

在以下视频译码系统10的实施例中,视频编码器20和视频解码器30根据图1至图3进行描述。

图1a为示例性译码系统10的示意性框图,例如可以使用本申请技术的视频译码系统10(或简称为译码系统10)。视频译码系统10中的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)代表可用于根据本申请中描述的各种示例执行各技术的设备的示例。

如图1a所示,译码系统10包括源设备12,源设备12用于将经编码的图像数据21,例如,提供给目的地设备14;目的地设备对所述经编码的图像数据13进行解码。

源设备12包括编码器20,另外即可选地,包括图像源16、预处理器(或预处理单元)18(如图像预处理器18)、通信接口或通信单元22。

图像源16可以包括或可以为任何类型的图像捕获设备、和/或任何类型的图像生成设备或任何类型的其它设备,其中,图像捕获设备例如为用于捕获现实世界图像的相机,图像生成设备例如为用于生成计算机动画图像的计算机图形处理器,其它设备用于获取和/或提供现实世界的图像、计算机生成图像(例如,屏幕内容、虚拟现实(virtualreality,vr)图像)和/或其任意组合(例如,增强现实(augmentedreality,ar)图像)。图像源可以为存储上述图像中的任意图像的任何类型的存储器(memory/storage)。

为了与预处理单元18和由预处理单元18执行的处理进行区分,图像或图像数据17也可以称为原始图像或原始图像数据17。

预处理器18用于接收(原始)图像数据17,并对图像数据17进行预处理,以获得预处理图像19或预处理图像数据19。例如,预处理器18执行的预处理可包括修剪(trimming)、颜色格式转换(例如从rgb转换为ycbcr)、调色或去噪。可以理解的是,预处理单元18可以为可选部件。

视频编码器20用于接收经预处理的图像数据19并提供经编码的图像数据21(下文将根据图2等进行详细描述)。

源设备12中的通信接口22可用于:接收经编码的图像数据21并通过通信信道13向目的地设备14等另一设备或任何其它设备发送经编码的图像数据21(或其它任意处理后的版本),以供存储或直接重建。

目的地设备14包括解码器30(例如视频解码器30),另外即可选地,可包括通信接口或通信单元28、后处理器32(或后处理单元32)以及显示设备34。

目的地设备14中的通信接口28用于直接从源设备12或从存储设备等任意其它源设备接收经编码的图像数据21(或其它任意处理后的版本),例如,存储设备为存储经编码的图像数据的存储设备,并将经编码的图像数据21提供给解码器30。

通信接口22和通信接口28可用于通过源设备12与目的地设备14之间的直接通信链路,例如直接有线或无线连接等,或者通过任何类型的网络,例如有线网络、无线网络或其任意组合、任何类型的私网和公网或其任意类型的组合,发送或接收经编码的图像数据21或经编码的数据13。

例如,通信接口22可用于将经编码的图像数据21封装为报文等合适的格式,和/或使用任意类型的传输编码或处理来处理所述经编码的图像数据,以便在通信链路或通信网络上进行传输。

通信接口28与通信接口22对应,例如,可用于接收传输数据,并使用任意类型的对应传输解码或处理和/或解封装过程对传输数据进行处理,以获得经编码的图像数据21。

通信接口22和通信接口28均可配置为如图1a中从源设备12指向目的地设备14的对应通信信道13的箭头所指示的单向通信接口,或配置为双向通信接口,并且可用于发送和接收消息等,以建立连接,确认并交换与通信链路和/或例如编码后的图像数据传输等数据传输相关的任何其它信息,等等。

解码器30用于接收经编码的图像数据21并提供经解码的图像数据31或经解码的图像31(下文将根据图3或图5进行详细描述)。

目的地设备14中的后处理器32用于对经解码的图像数据31(也称为经重建的图像数据),例如,经解码的图像31进行后处理,以获得经后处理的图像数据33,例如,经后处理的图像33。后处理单元32执行的后处理可以包括例如颜色格式转换(例如从ycbcr转换为rgb)、调色、修剪或重采样,或者用于产生供显示设备34等显示的经解码的图像数据31等任何其它处理。

目的地设备14的显示设备34用于接收经后处理的图像数据33,以向用户或观看者等显示图像。显示设备34可以为或可以包括任意类型的用于呈现经重建的图像的显示器,例如,集成或外部显示屏或显示器。例如,显示器可以包括液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclightemittingdiode,oled)显示器、等离子显示器、投影仪、微型led显示器、硅基液晶显示器(liquidcrystalonsilicon,lcos)、数字光处理器(digitallightprocessor,dlp)或任意类型的其它显示器。

尽管图1a示出了将源设备12和目的地设备14作为独立的设备,但设备实施例也可以同时包括源设备12和目的地设备14或同时包括源设备12和目的地设备14的功能,即同时包括源设备12或对应功能和目的地设备14或对应功能。在此类实施例中,源设备12或对应的功能与14或对应的功能可以通过相同的硬件和/或软件、通过单独的硬件和/或软件或其任何组合来实现。

根据描述,图1a所示的源设备12和/或目的地设备14中的不同单元或功能的存在和(准确)划分可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。

所述编码器20(例如视频编码器20)或所述解码器30(例如视频解码器30),或所述编码器20和所述解码器30两者都可通过如图1b所示的处理电路实现,如一个或多个微处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(application-specificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)、离散逻辑、硬件、视频编码专用处理器或其任意组合。编码器20可以通过处理电路46实现,以包括参照图2所示的编码器20和/或本文描述的任何其它编码器系统或子系统所描述的各种模块。解码器30可以通过处理电路46实现,以包括参照图3所示的解码器30和/或本文描述的任何其它解码器系统或子系统所描述的各种模块。处理电路可以用于执行下文描述的各种操作。如图5所示,如果部分技术在软件中实施,则设备可以将该软件的指令存储在合适的非瞬时性计算机可读存储介质中,通过一个或多个处理器在硬件中执行所述指令,从而执行本发明的技术。视频编码器20和视频解码器30中的任一个可作为组合编解码器(encoder/decoder,codec)的一部分集成在单个设备中,如图1b所示。

源设备12和目的地设备14可以包括多种设备中的任一种,包括任意类型的手持设备或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、相机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(如内容业务服务器或内容分发服务器)、广播接收设备、广播发射设备等,且可以使用或不使用任意类型的操作系统。在一些情况下,源设备12和14可以用于无线通信。因此,源设备12和14可以是无线通信设备。

在某些情况下,图1a所示的视频译码系统10仅仅是示例,本申请的技术可适用于在编码设备与解码设备之间不一定包括任何数据通信的视频译码设置(例如,视频编码或视频解码)。在其它示例中,数据可以从本地存储器检索、通过网络流式传输等。视频编码设备可以对数据进行编码并将数据存储到存储器,和/或视频解码设备可以从存储器检索和解码数据。在一些示例中,编码和解码由不彼此通信但简单地将数据编码到存储器和/或从存储器检索和解码数据的设备执行。

为便于描述,例如,参考由itu-t视频编码专家组(videocodingexpertsgroup,vceg)和iso/iec运动图像专家组(motionpictureexpertsgroup,mpeg)的视频编码联合协作团队(jointcollaborationteamonvideocoding,jct-vc)开发的高效视频编码(high-efficiencyvideocoding,hevc)、通用视频编码(versatilevideocoding,vvc)参考软件、下一代视频编码标准来描述本发明实施例。本领域普通技术人员应理解本发明的实施例不限于hevc或vvc。

编码器和编码方法

图2为用于实现本申请技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入单元201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decodedpicturebuffer,dpb)230、模式选择单元260、熵编码单元270和输出单元272(或输出接口272)。所述模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(图中未示出)。图2所示的视频编码器20也可以称为混合型视频编码器或基于混合型视频编解码器的视频编码器。

残差计算单元204、变换处理单元206、量化单元208和模式选择单元260组成编码器20的前向信号路径;反量化单元210、逆变换处理单元212、重建单元214、缓冲区216、环路滤波器220、解码图像缓冲区(decodedpicturebuffer,dpb)230、帧间预测单元244和帧内预测单元254组成视频编码器20的后向信号路径。其中,视频编码器20的后向信号路径对应于解码器(参见图3所示的解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。

图像和图像分割(图像和块)

编码器20可用于通过输入单元201等接收图像17(或图像数据17),例如,形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据还可以是预处理图像19(或预处理图像数据19)。为简单起见,以下描述中称为图像17。图像17还可以称为当前图像或待译码图像(尤其在视频译码中,为区分当前图像和其它图像,其它图像例如为同一视频序列中,即同时包括当前图像的视频序列中,的先前经编码的图像和/或先前经解码的图像)。

(数字)图像是或者可以看作具有强度值的二维样本阵列或矩阵。阵列中的样本也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像在水平方向和垂直方向(或轴线)上的样本的数量决定了该图像的大小和/或分辨率。通常使用三个颜色分量来表示颜色,即,可以通过三个样本阵列来表示图像或图像可以包括三个样本阵列。在rbg格式或色彩空间中,图像包括对应的红、绿、蓝样本阵列。然而,在视频译码中,每个像素通常以亮度和色度格式或颜色空间表示,例如,ycbcr格式,其包括y表示的亮度分量(有时也用l表示)和cb和cr表示的两个色度分量。亮度(或简称luma)分量y表示亮度或灰度级强度(例如,在灰度级图像中),而两个色度(或简称chroma)分量cb和cr表示色度或颜色信息分量。对应地,ycbcr格式的图像包括亮度样本值的亮度样本阵列(y)和色度值的两个色度样本阵列(cb和cr)。rgb格式的图像可以转换或变换为ycbcr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是单色的,则该图像可以只包括亮度样本阵列。相应地,图像可以为例如单色格式的亮度样本阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度样本阵列和两个对应的色度样本阵列。

在视频编码器20的实施例中,视频编码器20可以包括图像分割单元(图2中未示出),用于将所述图像17分割成多个(通常不重叠)图像块203。这些块也可以称为根块或宏块(h.264/avc标准)或称为编码树块(codingtreeblock,ctb)或编码树单元(codingtreeunit,ctu)(h.265/hevc和vvc标准)。图像分割单元可以用于对视频序列中的所有图像和定义块大小的对应的网格使用相同的块大小,或者改变图像或子集或图像组之间的块大小,并将每个图像的块。

在其它实施例中,视频编码器可用于直接接收所述图像17的图像块203,例如,组成所述图像17的一个、若干个或所有图像块。图像块203也可以称为当前图像块或待译码图像块。

与图像17一样,图像块203同样是或可以认为是具有强度值(样本值)的样本组成的二维阵列或矩阵,但是图像块203的尺寸要比图像17的尺寸小。也就是说,图像块203可以包括一个样本阵列(例如,图像17是黑白图像时,图像块203包括一个亮度阵列;图像17是彩色图像时,图像块203包括一个亮度阵列或一个色度阵列),或者包括三个样本阵列(例如,图像17是彩色图像时,图像块203包括一个亮度阵列和两个色度阵列),或者包括由所使用的颜色格式决定的任何其它数量和/或类型的阵列。块203在水平和垂直方向(或轴线)上的多个样本定义块203的大小。因此,块可以为m×n(m列×n行)个样本阵列,或m×n个变换系数阵列等。

在图2所示的视频编码器20的实施例中,视频编码器20可用于对图像17进行逐块编码,例如,对每个图像块203进行编码和预测。

残差计算

残差计算单元204可以用于根据图像块203和预测块265(下文将详细描述预测块265)通过如下方式计算残差块205(也称为残差205),例如,逐个样本(逐个像素)从图像块203的样本值中减去预测块265的样本值,得到样本域中的残差块205。

变换

变换处理单元206可以用于对残差块205的样本值执行离散余弦变换(discretecosinetransform,dct)或离散正弦变换(discretesinetransform,dst)等变换,以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。

变换处理单元206可以用于应用dct/dst的整数近似,例如针对h.265/hevc指定的变换。与正交dct变换相比,此类整数近似通常通过某个因子进行缩放。使用缩放因子作为变换过程的一部分,以维持经过前向变换和反向变换处理的残差块的范数。缩放因子通常是基于某些约束条件来选择的,例如缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实施成本之间的折衷等。例如,在编码器20侧通过逆变换处理单元212等为逆变换(在视频解码器30侧通过逆变换处理单元312等为对应的逆变换)指定具体的缩放因子,并且相应地,可以在编码器20侧通过变换处理单元206等为前向变换指定对应的缩放因子。

在视频编码器20的实施例中,视频编码器20(对应地,变换处理单元206)可用于,例如,直接输出或经熵编码单元270进行编码或压缩后输出一种或多种变换类型的变换参数,使得视频解码器30可以接收并使用变换参数进行解码。

量化

量化单元208用于通过执行标量量化或矢量量化等对变换系数207进行量化,以获得量化系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。

量化过程可以减小与部分或全部变换系数207相关的位深度。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m,可以通过调整量化参数(quantizationparameter,qp)修改量化程度。例如,对于标量量化,可以执行不同的缩放来实现更精细或更粗略的量化。量化步长大小越小,量化越精细;量化步长大小越大,量化越粗略。合适的量化步长大小可以通过量化参数(quantizationparameter,qp)来指示。例如,量化参数可以是适用于的一组合适的量化步长大小的索引。例如,小的量化参数可以对应精细的量化(小量化步长大小),而大的量化参数可以对应粗略的量化(大量化步长大小),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的相应解量化或逆解量化操作可以包括乘以量化步长。在一些实施例中,根据如hevc等一些标准,可以使用量化参数来确定量化步长。通常,可以通过包括除法的方程的定点近似、量化参数计算量化步长大小。可以将缩放因子引入量化和解量化,用于恢复残差块的范数,因为量化步长大小和量化参数的方程的定点近似中使用缩放,所以可以修改该范数。在一种示例性实现方式中,可以合并逆变换和解量化中的缩放。或者,可以使用自定义的量化表并由编码器通过码流等方式向解码器指示。量化为有损操作,损耗随量化步长大小的增加而增加。

在视频编码器20的实施例中,视频编码器20(对应地,量化单元208)可用于,例如,直接输出或经熵编码单元270进行编码后输出量化参数(quantizationparameter,qp),使得视频解码器30可以接收并使用量化参数进行解码。

反量化

反量化单元210用于对量化系数执行与量化单元208所执行的量化相反的反量化,以获得解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案相反的反量化方案。解量化系数211也可以称为解量化残差系数211,其对应于变换系数207,但是由于量化造成损耗,解量化系数211通常与变换系数不完全相等。

逆变换

逆变换处理单元212用于执行与变换处理单元206所执行的变换相反的逆变换,例如,逆离散余弦变换(discretecosinetransform,dct)或逆离散正弦变换(discretesinetransform,dst),以获得样本域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可以称为变换块213。

重建

重建单元214(例如,加法器或求和器214)用于将变换块213(即重建残差块213)与预测块265相加,例如,将重建残差块213的样本值和预测块265的样本值逐个样本进行相加,得到样本域中的重建块215。

滤波

环路滤波器单元220(或简称为“环路滤波器”220)用于对重建块215进行滤波,得到滤波块221,或通常用于对重建样本进行滤波,得到滤波样本值。例如,环路滤波单元用于平滑像素的突变或者提高视频质量。环路滤波器单元220可以包括一个或多个环路滤波器,如去块效应滤波器、样本自适应偏移(sample-adaptiveoffset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptiveloopfilter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任意组合。尽管环路滤波器单元220在图2中示为环路内滤波器,但在其它配置中,环路滤波器单元220可以实现为环路后滤波器。滤波块221也可以称为滤波重建块221。

在实施例中,所述视频编码器20(对应地,环路滤波器单元220)可以用于输出环路滤波器参数(例如样本自适应偏移信息),例如直接输出或由熵编码单元270进行编码后输出,使得(例如)解码器30可以接收并使用相同的环路滤波器参数或相应的环路滤波器进行解码。

解码图像缓冲区

解码图像缓冲区(decodedpicturebuffer,dpb)230可以是存储参考图像或通常存储参考图像数据的存储器,以在视频编码器20对视频数据进行编码时使用。dpb230可以由各种存储器设备中的任一种构成,例如动态随机存取存储器(dynamicrandomaccessmemory,dram)(包括同步dram(synchronousdram,sdram))、磁阻ram(magnetoresistiveram,mram)、电阻ram(resistiveram,rram)或其它类型的存储器设备。解码图像缓冲区(decodedpicturebuffer,dpb)230可用于存储一个或多个滤波块221。解码图像缓冲区230还可以用于存储同一当前图像的或如先前重建图像等的不同图像的其它先前滤波块如先前重建和滤波的块221,且可提供完整的先前重建图像即经解码的图像(以及对应的参考块和样本)和/或部分重建的当前图像(以及对应的参考块和样本),例如,以进行帧间预测。解码图像缓冲区230还可以用于存储一个或多个未经滤波的重建块215,或通常存储未经滤波的重建样本,例如,未经环路滤波单元220滤波的重建块215,或未进行任何其它处理的重建块或重建样本。

模式选择(分割和预测)

模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲区230或其它缓冲区(例如行缓冲区,图中未显示)接收或获取原始块203(当前图像17的当前块203)和重建图像数据等原始图像数据(例如同一个(当前)图像和/或一个或多个先前经解码图像的经过滤波和/或未经滤波的重建样本或重建块。重建图像数据用作参考图像数据进行帧间预测或帧内预测等预测,以获得预测块265或预测值265。

模式选择单元260可以用于为当前块预测模式(包括不分割模式)和预测模式(例如帧内预测模式或帧间预测模式)确定或选择分割模式,并生成对应的预测块265,所述预测块用于残差块205的计算以及重建块215的重建。

在模式选择单元260的实施例中,模式选择单元260可以用于选择分割和预测模式(例如,从模式选择单元260支持或可用的模式中选择)。分割和预测模式提供最佳匹配,即最小残差(最小残差意味着更好的压缩性能,以便进行发送或存储),或提供最小指示开销(最小指示开销意味着更好的压缩性能,以便进行发送或存储),或者同时考虑以上两者或在以上两者中取得平衡。模式选择单元260可以用于根据率失真优化(ratedistortionoptimization,rdo)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中,术语“最佳”、“最小”、“最优”等不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时间。

分割单元262可以用于将块203分割成更小的块部分或子块(子块再次形成块),例如,通过迭代地使用四叉树分割(quad-treepartitioning,qt)、二叉树分割(binary-treepartitioning,bt)或三叉树分割(triple-treepartitioning,tt)或其任何组合,并用于例如对每个块部分或子块进行预测。其中,模式选择包括选择经分割的块203的树结构以及选择应用于每个块部分或子块的预测模式。

下文将详细地描述由视频编码器20执行的分割(例如,由分割单元260执行)处理和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。

分割模块

分割单元262可以将当前块203分割(或划分)成较小的分割部分,例如正方形或矩形大小的较小块。这些较小的块(也可以称为子块)可以进一步更小的。这也称为树分割或层次树分割,其中,可以递归地分割例如根树层次0(层次级别0,深度0)的根块,例如分割为两个或两个以上下一较低树层次的块,例如树层次1(层次级别1,深度1)的节点。可以再次将这些块分割为两个或两个以上下一较低层次,例如树层次2(层次级别2、深度2)的块等,直到例如因为满足结束标准(例如达到最大树深度或最小块大小),分割结束。未进一步分割的块也称为树的叶块或叶节点。分成两个的树称为二叉树(binary-tree,bt),分成三个的树称为三叉树(ternary-tree,tt),分成四个的树称为四叉树(quad-tree,qt))。

如上所述,本文中使用的术语“块”可以是图像的一部分,特别是正方形或矩形部分。例如,参照hevc和vvc,块可以为或可以对应于编码树单元(codingtreeunit,ctu)、编码单元(codingunit,cu)、预测单元(predictionunit,pu)和变换单元(transformunit,tu),和/或对应于对应的块,例如,编码树块(codingtreeblock,ctb)、编码块(codingblock,cb)、变换块(transformblock,tb)或预测块(predictionblock,pb)。

例如,编码树单元(codingtreeunit,ctu)可以为或可以包括具有3个样本阵列的图像中的亮度样本的一个ctb、该图像中的色度样本的两个对应ctb、或黑白图像中的或使用3个独立颜色平面和语法结构进行译码的图像中的样本的一个ctb。这些语法结构用于对样本进行译码。相应地,编码树块(codingtreeblock,ctb)可以为n×n个样本块,其中,n可以设为某个值,使得一个分量被划分为ctb,这就是分割。编码单元(codingunit,cu)可以为或可以包括具有3个样本阵列的图像中的亮度样本的一个编码块、该图像中的色度样本的两个对应编码块,或者黑白图像中的或使用3个单独颜色平面和语法结构进行译码的图像中的样本的一个编码块。这些语法结构用于对样本进行译码。相应地,编码块(codingblock,cb)可以为m×n个样本块,其中,m、n可以设为某个值,使得一个ctb被划分为编码块,这就是分割。

在一些实施例中,例如根据hevc,可以通过表示为编码树的四叉树结构将编码树单元(codingtreeunit,ctu)划分为多个cu。在cu级作出是否使用帧间(时间)预测或帧内(空间)预测对图像区域进行译码的决定。每个cu还可以pu类型1个、2个或4个pu。在一个pu内,进行相同的预测过程,并且以pu为单位将相关信息发送到解码器。在根据pu划分类型执行预测过程得到残差块之后,可以根据类似于用于cu的编码树类似的另一种四叉树结构将cu分割成变换单元(transformunit,tu)。

在实施例中,例如根据当前开发的最新视频编码标准(称为通用视频编码(versatilevideocoding,vvc)),使用四叉树结合二叉树(quad-treeandbinary-tree,qtbt)分割来分割编码块。在qtbt块结构中,cu可以是正方形或矩形。例如,编码树单元(codingtreeunit,ctu)首先通过四叉树结构进行分割。进一步通过二叉树或三叉树结构对四叉树叶节点进行分割。分割树叶节点称为编码单元(codingunit,cu),这样的分段用于预测和变换处理,无需任何进一步的分割。这表示在qtbt编码块结构中,cu、pu和tu的块大小相同。与此同时,还提出将三叉树分割等多重分割与qtbt块结构一起使用。

在一个示例中,视频编码器20中的模式选择单元260可用于执行上文描述的分割技术的任意组合。

如上所述,视频编码器20用于从一组(例如,预定的)预测模式中确定或选择最佳或最优预测模式。该预测模式集合可以包括例如帧内预测模式和/或帧间预测模式等。

帧内预测

帧内预测模式集合可以包括35种不同的帧内预测模式,例如像dc(直流)(或均值)模式和平面(planar)模式的非方向性模式或如hevc中定义的方向性模式,或者可以包括67种不同的帧内预测模式,例如像dc(或均值)模式和平面模式的非方向性模式或如vvc中定义的方向性模式。

帧内预测单元254用于帧内预测模式集合中的帧内预测模式使用同一当前图像的相邻块的重建样本来生成帧内预测块265。

帧内预测单元254(或通常为模式选择单元260)还用于输出帧内预测参数(或通常为表示块的所选帧内预测模式的信息)以语法元素266的形式发送到熵编码单元270,以包含到经编码的图像数据21中,从而视频解码器30可执行操作,例如接收并使用用于解码的预测参数。

帧间预测

(可能的)帧间预测模式集合取决于可用参考图像(即上述存储在dpb230等中的至少部分经解码图像)和其它帧间预测参数,例如取决于是否使用整个参考图像或只使用参考图像的一部分(例如当前块的区域周围的搜索窗口区域)来搜索最佳匹配参考块,和/或例如取决于是否进行像素插值(例如二分之一/半像素插值和/或四分之一像素插值)。

除了上述预测模式之外,还可以使用跳过模式和/或直接模式。

帧间预测单元244可以包括运动估计(motionestimation,me)单元和运动补偿(motioncompensation,mc)单元(两者均未在图2中示出)。运动估计单元可用于接收或获取图像块203(当前图像17的当前图像块203)和经解码的图像231,或至少一个或多个先前重建的块,例如,一个或多个其它/不同的先前解码的图像231的重建块,来进行运动估计。例如,一个视频序列可以包括当前图像和先前解码的图像231,或者,也就是说,当前图像和先前解码的图像231可以为组成视频序列的图像序列的一部分或形成该图像序列。

例如,编码器20可以用于从多个其它图像中的同一个或不同图像的多个参考块中选择一个参考块,并将参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数提供给运动估计单元。这个偏移也称为运动矢量(motionvector,mv)。

运动补偿单元用于获取如接收帧间预测参数,并根据或使用帧间预测参数进行帧间预测,得到帧间预测块265。运动补偿单元所执行的运动补偿可以包括通过运动估计确定的运动/块矢量提取或生成预测块(执行插值以提高精度)。进行插值滤波时,可以根据已知像素样本生成其它像素样本,从而可能增加可用于对图像块进行译码的候选预测块的数量。接收到当前图像块的pu对应的运动矢量后,运动补偿单元可以在其中一个参考图像列表中定位所述运动矢量所指向的预测块。

运动补偿单元246还可生成与块和视频条带(slice)相关的语法元素该语法元素由视频解码器30用来解码视频条带的图像块。

熵译码

熵编码单元270用于将熵编码算法或方案(例如可变长度编码(variablelengthcoding,vlc)方案、上下文自适应vlc(contextadaptivevlcscheme,cavlc)方案、算术编码方案、二值化,上下文自适应二进制算术编码(contextadaptivebinaryarithmeticcoding,cabac)、基于语法的上下文自适应二进制算术编码(syntax-basedcontext-adaptivebinaryarithmeticcoding,sbac)、概率区间分割熵(probabilityintervalpartitioningentropy,pipe)编码或其它熵编码方法或技术)等应用于或不应用于(无压缩)量化系数209、帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素,得到可以通过输出端272以经编码码流21等形式输出的经编码的图像数据21,使得视频解码器30等可以接收并使用这些参数进行解码。可以将编码码流21发送到视频解码器30,或者将其存储在存储器汇总,以便随后由视频解码器30发送或检索。

视频编码器20的其它结构变化可以用于编码视频流。例如,对于某些块或帧,非变换的编码器20可以在没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以将量化单元208和反量化单元210组合成单个单元。

解码器及解码方法

图3示出了用于实现本申请技术的示例性视频解码器30。视频解码器30用于接收例如由编码器20编码的经编码的图像数据21(例如,经编码的码流21),得到经解码的图像331。编码图像数据或码流包括用于对编码图像数据进行解码的信息,例如,表示编码视频条带的图像块的数据以及相关的语法元素。

在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320,解码图像缓冲区(decodedpicturebuffer,dbp)330、帧间预测单元344和帧内预测单元354。帧间预测单元344可以是或包括运动补偿单元。在一些示例中,视频解码器30可执行大体上与图2所示视频编码器100所执行的编码过程相反的解码过程。

如编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲区(decodedpicturebuffer,dpb)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。因此,反量化单元310可以与反量化单元110具有相同的功能,逆变换处理单元312可以与逆变换处理单元212具有相同的功能,重建单元314可以与重建单元214具有相同的功能,环路滤波器320可以与环路滤波器220具有相同的功能,解码图像缓冲区330可以与解码图像缓冲区230具有相同的功能。因此,对视频编码器20的相应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。

熵解码

熵解码单元304用于解析码流21(或一般为经编码的图像数据21)并对经编码的图像数据21执行熵解码等,得到量化系数309和/或经解码的译码参数(图3中未示出)等,例如帧间预测参数(例如参考图像索引和运动矢量)、帧内预测参数(例如帧内预测模式或索引)、变换参数、量化参数、环路滤波器参数和/或其它语法元素中的任一个或全部。熵解码单元304可以用于进行对应于编码器20的熵编码单元270所描述的编码方案的解码算法或方案。熵解码单元304还可以用于向模式选择单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,并向解码器30的其它单元提供其它参数。视频解码器30可以接收视频条带级和/或视频块级的语法元素。

反量化

反量化单元310可用于从经编码的图像数据21(例如,通过熵解码单元304等解析和/或解码)接收量化参数(quantizationparameter,qp)(或通常为与反量化相关的信息)和量化系数,并基于所述量化参数对经解码的量化系数309进行反量化,以获得解量化系数311,所述解量化系数311也可以称为变换系数311。反量化过程可以包括:使用视频编码器20确定的视频条带中的每个视频块的量化参数,以确定应应用的量化程度以及反量化程度。

逆变换

逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,以获得样本域中的重建残差块213。重建残差块313也可以称为变换块313。所述变换可以为逆变换,例如逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从经编码的图像数据21(例如通过熵解码单元304解析和/或解码)接收变换参数或相应信息,以确定将对解量化系数311执行的变换。

重建

重建单元314(例如加法器或求和器314)可以用于通过如下方式将重建残差块313添加到预测块365,例如,将重建残差块313的样本值和预测块365的样本值相加,以得到样本域中的重建块315。

滤波

环路滤波器单元320(在译码环路中或在译码环路之后)用于对重建块315进行滤波,得到滤波块321,从而平滑像素的突变或以其它方式提高视频质量等。环路滤波器单元320可以包括一个或多个环路滤波器,如去块效应滤波器、样本自适应偏移(sample-adaptiveoffset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptiveloopfilter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任意组合。尽管环路滤波器单元320在图3中示为环路内滤波器,但在其它配置中,环路滤波器单元320可以实现为环路后滤波器。

解码图像缓冲区

之后,将一个图像的解码视频块321存储在解码图像缓冲区330中。解码图像331作为参考图像存储在解码图像缓冲区330中,用于后续对其它图像进行运动补偿和/或后续相应输出以进行显示。

解码器30用于通过输出单元312等输出经解码的图像311,以向用户呈现或供用户查看。

预测

帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同;帧内预测单元354的功能可以与帧间预测单元254相同,并根据从经编码的图像数据21接收到的分割和/或预测参数或相应信息(例如通过熵解码单元304等解析和/或解码)决策划分或分割模式并执行预测。模式选择单元360可以用于根据重建图像、块或相应的样本(经过滤波或未经滤波)按块执行预测(帧内预测或帧间预测),以得到预测块365。

当将视频条带译码为经帧内译码(intracoded)(i)条带时,模式应用单元360中的帧内预测单元354用于根据指示的帧内预测模式和来自当前图像的先前经解码块的数据为当前视频条带的图像块生成预测块365。当视频图像译码为经帧间译码(intercoded)的(b或p)条带时,模式应用单元360中的帧间预测单元344(例如运动补偿单元)用于根据运动矢量和从熵解码单元304接收到的其它语法元素为当前视频条带的视频块生成预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以dpb330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。

模式选择单元360用于通过解析运动矢量和其它语法元素,确定当前视频条带的视频块的预测信息,并使用预测信息产生用于正被解码的当前视频块的预测块。例如,模式应用单元360使用接收到的部分语法元素确定译码视频条带的视频块的预测模式(例如帧内预测或帧间预测)、帧间预测条带类型(例如b条带、p条带或gpb条带)、条带的一个或多个参考图像列表的构建信息、条带的每一帧间编码视频块的运动矢量、条带的每一帧间译码视频块的帧间预测状态以及其它信息,以解码当前视频条带的视频块。

可以使用其它形式的视频解码器30对经编码的图像数据21进行解码。例如,解码器30能够在没有环路滤波器单元320的情况下产生输出视频流。例如,基于非变换的解码器30能够在没有逆变换处理单元312的情况下直接反量化某些块或帧的残差信号。在另一种实现方式中,视频解码器30可以具有组合成单个单元的反量化单元310和逆变换处理单元312。

应理解,在编码器20和解码器30中,可以针对当前环节的处理结果进行进一步处理,然后输出到下一环节。例如,在插值滤波、运动矢量推导或环路滤波之后,可以针对插值滤波、运动矢量推导或环路滤波的处理结果进一步进行如修正(clip)或移位(shift)等操作。

需要说明的是,可以对当前块的推导运动矢量(包括但不限于仿射模式的控制点运动矢量,仿射模式、平面模式、atmvp模式的子块运动矢量,时间运动矢量等)进行进一步运算。例如,根据运动矢量的表示位将该运动矢量的值限制在预定义范围内。如果运动矢量的表示位为bitdepth,则该范围为–2^(bitdepth–1)至2^(bitdepth–1)–1,其中“^”符号表示幂次方。例如,如果bitdepth设置为16,则该范围为–32768至32767;如果bitdepth设置为18,则该范围为–131072至131071。以下描述提供了两种限制运动矢量的方法。

方法1:通过流操作来去除溢出的最高有效位(mostsignificantbit,msb)。

ux=(mvx+2bitdepth)%2bitdepth(1)

mvx=(ux>=2bitdepth-1)?(ux-2bitdepth):ux(2)

uy=(mvy+2bitdepth)%2bitdepth(3)

mvy=(uy>=2bitdepth-1)?(uy-2bitdepth):uy(4)

例如,如果mvx的值为–32769,则使用公式(1)和(2)之后得到的值为32767。在计算机系统中,以二进制补码的形式存储十进数。–32769的二进制补码为1,0111,1111,1111,1111(17位)。这时丢弃msb,那么得到的二进制补码为0111,1111,1111,1111(十进数为32767),这与使用公式(1)和(2)之后得到的输出结果相同。

ux=(mvpx+mvdx+2bitdepth)%2bitdepth(5)

mvx=(ux>=2bitdepth-1)?(ux-2bitdepth):ux(6)

uy=(mvpy+mvdy+2bitdepth)%2bitdepth(7)

mvy=(uy>=2bitdepth-1)?(uy-2bitdepth):uy(8)

可以在mvp(motionvectorpredictor,运动矢量预测值)与mvd(motionvectordifference,运动矢量差值)的求和期间应用这些运算,如公式(5)至(8)所示。

方法2:通过对值进行修正来去除溢出的msb。

vx=clip3(-2bitdepth-1,2bitdepth-1-1,vx)

vy=clip3(-2bitdepth-1,2bitdepth-1-1,vy)

其中函数clip3的定义如下:

图4为本发明实施例提供的视频译码设备400的示意图。视频译码设备400适用于实现本文描述的公开实施例。在一个实施例中,视频译码设备400可以是解码器,例如图1a中的视频解码器30,也可以是编码器,例如图1a中的视频编码器20。

视频译码设备400包括:入端口410(或输入端口410)和接收单元(receiverunit,rx)420,用于接收数据;处理器、逻辑单元或中央处理单元(centralprocessingunit,cpu)430,用于处理数据;发送单元(transmitterunit,tx)440和出端口450(或输出端口450),用于发送数据;存储器460,用于存储数据。视频译码设备400还可以包括与入端口410、接收单元420、发送单元440和出端口450耦合的光电(optical-to-electrical,oe)组件和电光(electrical-to-optical,eo)组件,用作光信号或电信号的出口或入口。

处理器430通过硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic以及dsp。处理器430与入端口410、接收单元420、发送器单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述描述的公开实施例。例如,译码模块470执行、处理、准备或提供各种译码操作。因此,将译码模块470包含在内,这为视频译码设备400的功能提供了实质性的改进,并且影响了视频译码设备400到不同状态的转换。或者,以存储在存储器460中并由处理器430执行的指令来实现译码模块470。

器460可以包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据设备,以在选择此类程序用于执行时程序,以及在程序执行期间读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、三态内容寻址存储器(ternarycontent-addressablememory,tcam)和/或静态随机存取存储器(staticrandom-accessmemory,sram)。

图5为示例性实施例提供的装置500的简化框图,其中,装置500可用作图1中的源设备12和目的地设备14中的任一者或两者。

装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。虽然可以使用如图所示的处理器502等单个处理器来实现所公开的实现方式,但使用多于1个处理器实现时可以提高速度和效率。

装置500中的存储器504在一种实现方式中可以是只读存储器(readonlymemory,rom)设备或随机存取存储器(randomaccessmemory,ram)设备。可以使用任何其它合适类型的设备作为器504。存储器504可以包括处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括使处理器502执行本文描述的方法的至少一个程序。例如,应用程序510可以包括应用1至n,还可以包括执行本文所述方法的视频译码应用。

装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是触摸敏感显示器,触摸敏感显示器将显示器与可操作以感测触摸输入的触摸敏感元件相结合。显示器518可以通过总线512耦合到处理器502。

尽管在这里描述为单个总线,但装置500的总线512可以由多个总线组成。此外,辅助器514可以直接耦合到装置500的其它组件,或者可以通过网络访问,并且可以包括单个集成单元(例如卡)或多个单元(例如多个卡)。因此,装置500可以具有各种各样的配置。

最近,在视频编码的发展中,出现了更复杂的预测技术和方案。

其中一种技术是多假设预测。起初,引入“多假设预测”这一术语是将一个预测信号的运动补偿扩展到若干个运动补偿后的预测信号的线性叠加。最近,这种方法被推广到将现有的预测模式与额外的融合索引预测相结合。具体包括用于帧内预测模式和帧间预测模式的多假设预测(或者也就是说,组合帧内预测模式和帧间预测模式,例如,参考2018年10月3日至12日在中国澳门第12次联合视频专家组(jointvideoexpertsteam,jvet)会议的jvet-l0100-v3文档《ce10.1.1:用于改进amvp模式、跳过模式、融合模式和帧内预测模式的多假设预测》(ce10.1.1:multi-hypothesispredictionforimprovingamvpmode,skipormergemode,andintramode)。该方法通过将帧内预测和融合索引预测相结合,使用多假设预测来改进帧内预测模式。即,使用帧内预测块和帧间预测块的线性组合。

另一种技术是在块级别上针对子块融合候选引入和使用单独融合列表,即与普通融合模式的融合候选列表分开(例如,参考2018年10月3日至12日在中国澳门第12次jvet会议的jvet-l0369-v2文档《ce4:子块融合候选的单独列表(测试4.2.8)》(separatelistforsub-blockmergecandidates(test4.2.8))。该技术尤其适用于上述atmvp模式和仿射模式。

用于帧内预测模式和帧间预测模式的多假设预测由mh_intra_flag控制,mh_intra_flag表示当前块是否启用用于帧内预测模式和帧间预测模式的多假设预测。在现有技术中,mh_intra_flag根据以下语法表基于merge_affine_flag有条件地发送:

因此,在merge_affine_flag为0的条件下,mh_intra_flag被有条件地指示。即,禁用带有mh_intra_flag的仿射融合(即用于帧内预测模式和帧间预测模式的多假设预测)的联合使用。但是,允许使用带有mh_intra_flag的atmvp。

在最近对子块融合候选使用单独融合列表之后,仿射融合候选与atmvp融合候选耦合在一起,这些子块候选的使用由新引入的参数merge_subblock_flag控制。不再使用单独的merge_affine_flag。因此,该语法不再需要判断不使用融合仿射模式而使用atmvp的情况。在本发明的框架中开发了一种新方法,在子块融合候选的单独融合列表存在的情况下指示结合帧内预测模式和帧间预测模式的多假设预测。

假设编解码器中存在子块融合候选的单独融合列表,本发明提供了多种使用和指示用于帧内预测模式和帧间预测模式的多假设预测的方法。本发明包括多种可能的协调方式。本发明还公开了在跳过模式下使用用于帧内预测模式和帧间预测模式的多假设预测。

根据本发明的一个方面,提供了一种将视频数据编码为码流的方法以及一种对从码流接收到的视频数据进行解码的方法。

所述视频编码方法包括使用第一技术和/或第二技术。所述第一种技术包括对子块融合候选使用单独融合列表。所述第二种技术包括用于帧内预测模式和帧间预测模式的多假设预测。所述方法包括在所述码流中传输第一控制标志,其中,所述第一控制标志表示是否使用所述第一技术,以及在所述码流中传输第二控制标志,其中,所述第二控制标志表示是否使用所述第二技术。

所述视频解码方法包括使用第一技术和/或第二技术。所述第一种技术包括对子块融合候选使用单独融合列表。所述第二种技术包括用于帧内预测模式和帧间预测模式的多假设预测。所述方法包括从所述码流接收第一控制标志,其中,所述第一控制标志表示是否使用所述第一技术,以及从所述码流接收第二控制标志,其中,所述第二控制标志表示是否使用所述第二技术。

根据实施例,分别控制用于帧内预测模式和帧间预测模式的多假设预测技术的使用和子块融合候选的单独融合列表技术的使用。也就是说,在这些实施例中,第一控制标志(merge_subblock_flag)和第二控制标志(mh_intra_flag)分别指示。

在一个实施例中,用于帧内预测模式和帧间预测模式的多假设预测由mh_intra_flag控制,mh_intra_flag的指示不依赖于merge_subblock_flag。在这种情况下,用于帧内预测模式和帧间预测模式的多假设预测可以应用于两种子块模式(仿射和atmvp)以及普通融合模式。以下语法表提供了本实施例中指示mh_intra_flag的可能方式。

在以上表格中,用于帧内预测模式和帧间预测模式的多假设预测限制在融合模式下的编码块中使用。

在以上表格中,用于帧内预测模式和帧间预测模式的多假设预测可以应用于融合模式下的编码块和跳过模式下的编码块。

在本发明的一个实施例中,用于帧内预测模式和帧间预测模式的多假设预测由mh_intra_flag控制,mh_intra_flag基于merge_subblock_flag指示。在这种情况下,只有当两个子块模式(仿射和atmvp)都禁用时,才使用用于帧内预测模式和帧间预测模式的多假设预测。也就是说,用于帧内预测模式和帧间预测模式的多假设预测可以应用于普通融合模式,但是用于帧内预测模式和帧间预测模式的多假设预测与子块融合候选的单独融合列表的组合是被禁用的。以下语法表提供了本实施例中指示mh_intra_flag的可能方式。

在以上表格中,用于帧内预测模式和帧间预测模式的多假设预测限制在融合模式下的编码块中使用。

在以上表格中,用于帧内预测模式和帧间预测模式的多假设预测可以应用于融合模式下的编码块和跳过模式下的编码块。

在上述实施例的框架中,只有当子块候选的单独融合列表被禁用时,即,如果merge_subblock_flag(第一标志)为0,编码器才指示mh_intra_flag(第二标志,也称为ciip_flag)。另一方面,默认情况下,接收包括mh_intra_flag的码流的解码器确定子块候选的单独融合列表被禁用。

下文结合图6和图7的流程图描述上述实施例中的处理。

图6为本发明实施例提供的的编码器侧处理的流程图。

步骤s101:开始处理,确定单独融合列表是否用于子块候选。如果情况不是这样(s101:否),则进行步骤s103。步骤s103:确定是否使用用于帧内预测模式和帧间预测模式的多假设预测。不管确定的结果如何,接着进行步骤s105。步骤s105:生成mh_intra_flag,作为码流中待指示的参数。更具体地,如果使用用于帧预测模式和帧间预测模式的多假设预测(s103:是),mh_intra_flag的值设置为1。如果不使内用用于帧内预测模式和帧间预测标志的多假设预测(s103:否),mh_intra_flag的值设置为0(图中未显示)。

然后,进行步骤s107。如果在步骤s101中确定对子块候选使用单独融合列表(s101:是),直接从步骤s101跳到步骤s107。

步骤s107:生成merge_subblock_flag,作为码流中待指示的参数。更具体地,在使用单独融合列表的情况下,即当流程从s101(是)继续时,merge_subblock_flag的值设置为1。当流程从s101(否)以及s103和s105继续时,即当不使用单独融合列表时,merge_subblock_flag的值设置为0(图中未示出)。

因此,仅在不使用子块候选的单独融合列表的情况下,有条件地使用用于帧内预测模式和帧间预测模式的多假设预测。因此,始终生成merge_subblock_flag,但是只有当不使用帧内预测模式和帧间预测模式的单独融合列表时,才会生成mh_intra_flag。然后,步骤s109:生成包括merge_subblock_flag和有条件地(如果merge_subbock_flag为0)也包括mh_intra_flag的码流,处理结束。

图7为本发明实施例提供的解码器侧处理的流程图。

步骤s201:开始处理,解析接收到的码流。步骤s203:检查码流中是否存在mh_intra_flag。如果是(s203:是),则进行步骤s207。步骤s207:根据解析的mh_intra_flag的值,评估mh_intra_flag,以确定在解码中是否使用用于帧内预测模式和帧间预测模式的多假设预测。如果mh_intra_flag的值为1,在步骤(s207:是,则进行s211)中使用用于帧内预测模式和帧间预测模式的多假设预测进行解码,处理结束。否则,即当mh_intra_flag的值为0时(s207:否),不使用多假设预测(也不使用子块候选的单独融合列表)。

另一方面,如果在步骤s203中确定不存在mh_intra_flag(s203:否),则进行步骤s204。步骤s204:评估从码流中接收的subblock_merge_flag,以在下面的步骤(s205)中确定子块候选是否使用单独融合列表。

步骤s205:如果subblock_merge_flag的值为1,则确定使用单独融合列表(s205:是),进行步骤s209:使用单独融合列表执行解码。否则,即当subblock_merge_flag的值为0时(s205:否),确定不使用单独融合列表(且不使用用于帧内预测模式和帧间预测模式的多假设预测)进行解码,处理流程结束。

因此,根据本实施例,从所述解析的码流中是否存在mh_intra_flag(s203:是)直接推断没有使用子块候选的单独融合列表。

也就是说,只有在码流中没有包括mh_intra_flag的情况下,才会分析码流中始终包括并接收的merge_subblock_flag。因此,在任何情况下,只需要在解码器侧计算单个标志。

总而言之,本发明根据子块融合候选的单独融合列表技术的使用来控制用于帧内预测模式和帧间预测模式的多假设预测技术的使用。更具体地,根据图7的实施例,如果当且仅当子块融合候选的单独融合列表技术被禁用时,可以使用用于帧内预测模式和帧间预测模式的多假设预测技术。

上述实施例支持协调用于帧内预测模式和帧间预测模式的多假设预测与子块融合候选的单独融合列表。本实施例还支持在块跳过模式下使用用于帧内预测模式和帧间预测模式的多假设预测,从而在基本设计方面实现编码增益。在本实施例中,根据子块融合候选使用单独融合列表有条件地指示mh_intra_flag,在这种情况下不需要发送mh_intra_flag,从而减少指示开销。

数学运算符

本申请中使用的数学运算符与c编程语言中使用的数学运算符类似。但是,这里准确定义了整除运算和算术移位运算的结果,并且还定义了运算,如幂运算和实值除法运算。编号和计数规范通常从零开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。

算术运算符

赋值运算符定义如下:

+加法

-减法(用作双参数运算符)或者非运算(用作一元前缀运算符)。

*乘法,包括矩阵乘法。

xy幂次方,表示x的y次幂。在其它上下文中,该表示形式也可以用作上标,而不应解释为是幂次方。

/向0方向对结果进行截断的整数除法。例如,7/4和–7/–4被截断成1,–7/4和7/–4被截断成–1。

÷用来表示数学等式中的除法运算,但没有进行截断或者四舍五入操作。

用来表示数学等式中的除法运算,但没有进行截断或者四舍五入操作。

用于计算f(i)的和,i取x到y之间的所有整数,包括x和y。

x%y取模运算,x除y的余数,这里x和y都必须是整数,并且x≥0,y>0。

逻辑运算符

逻辑运算符定义如下:

x&&yx和y的布尔逻辑“与”

x||yx和y的布尔逻辑“或”

!布尔逻辑“非”

x?y:z如果x为true或者不等于0,那么返回y的值,否则,返回z的值。

关系运算符

关系运算符定义如下:

>大于

>=大于或等于

<小于

<=小于或等于

==等于

!=不等于

当关系运算符用于一个已赋值为“na”(不适用)的语法元素或变量时,则将值“na”视为该语法元素或变量的唯一值。值“na”不等于任何其它值。

按位运算符

以下按位运算符的定义如下:

&按位“与”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。

|按位“或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。

^按位“异或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。

x>>y将x的二的补码整数表示算法右移y个二进制数字。该函数仅针对y的非负整数值定义。右移操作的结果是移进最高有效位(mostsignificantbit,msb)的位数等于移位操作之前的x的msb的值。

x<<y将x的二的补码整数表示算法左移y个二进制数字。该函数仅针对y的非负整数值定义。左移操作的结果是移进最低有效位(leastsignificantbit,lsb)的位数等于移位操作之前的x的lsb的值。

赋值运算符

赋值运算符定义如下:

=赋值运算符

++增,即,x++等于x=x+1;当在阵列索引中使用时,等于增运算之前变量的值。

––减,即,x––等于x=x–1;当在数组索引中使用时,等于减运算之前变量的值。

+=增加指定的量,例如:x+=3相当于x=x+3,x+=(–3)相当于x=x+(–3)。

–=减少指定的量,例如:x–=3相当于x=x–3,x–=(–3)相当于x=x–(–3)。

范围表示法

以下表示法用于指定值的范围:

x=y..zx取y到z的范围内的整数值(包含首尾数字),这里x,y和z都是整数,且z大于y。

数学函数

数学函数定义如下:

asin(x)三角反正弦函数,对参数x进行运算,x在-1.0至1.0的范围内(包含首尾数字),输出值在-π÷2至π÷2的范围内(包含首尾数字),单位为弧度。

atan(x)三角反正切函数,对参数x运算,输出值的范围为–π÷2到π÷2(包括端值),单位为弧度。

ceil(x)表示大于或等于x的最小整数值。

clip1y(x)=clip3(0,(1<<bitdepthy)-1,x)

clip1c(x)=clip3(0,(1<<bitdepthc)-1,x)

cos(x)三角余弦函数,对参数x进行运算,单位为弧度。

floor(x)表示小于或等于x的最大整数值。

ln(x)x的自然对数(以e为底的对数,其中e是自然对数底数常数2.718281828……)。

log2(x)返回x的以2为底的对数。

log10(x)返回x的以10为底的对数。

round(x)=sign(x)*floor(abs(x)+0.5)

sin(x)三角正弦函数,对参数x进行运算,单位为弧度。

swap(x,y)=(y,x)

tan(x)三角正切函数,对参数x进行运算,单位为弧度。

运算优先级顺序

当没有使用括号来显式的表示优先顺序时,则遵循如下规则:

-高优先级的运算在低优先级的运算之前进行。

-相同优先级的运算从左到右依次进行。

下表从最高到最低的顺序说明运算的优先级,在表中的位置越高,优先级也越高。

如果在c编程语言中也使用这些运算符,则本文中使用的优先级顺序与c编程语言中使用的优先级顺序相同。

表运算优先级从最高(表格顶部)到最低(表格底部)进行排序

逻辑运算的文字描述

文本中,逻辑运算中的语句以数学形式描述如下:

可以通过如下方式进行描述:

……如下/……以下为准:

-如果条件0,则语句0

-否则,如果条件1,则语句1

-...

-否则(剩余条件的提示性说明),则语句n

每个“如果……否则,如果……否则,……“如果……”后面紧跟着“……如下”或“……以下为准”用来介绍文本中的语句。".最后一个条件“如果……”,否则,如果……否则,……总有一个“否则,……”。中间有“如果……否则,如果……否则……”,“……如下”或“……以下为准”后用“否则”结尾来识别语句。

文本中,逻辑运算中的语句以数学形式描述如下:

可以通过如下方式进行描述:

……如下/……以下为准:

-如果以下所有条件都为真(true),则语句0:

-条件0a

-条件0b

-否则,如果以下一个或多个条件为真,则语句1:

-条件1a

-条件1b

-...

-否则,语句n

文本中,逻辑运算中的语句以数学形式描述如下:

if(condition0)

statement0

if(condition1)

statement1

可以通过如下方式进行描述:

如果条件0,则语句0

如果条件1,则语句1

编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任意组合来实现。如果通过软件实现,则这些功能可以作为一个或多个指令或代码存储在计算机可读介质中或通过通信介质发送,且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于有形介质(例如数据存储介质),或者包括任何根据通信协议等有利于将计算机程序从一个地方传递到另一个地方的通信介质。在这种方式中,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读介质或(2)通信介质,例如信号或载波。数据存储介质可以是通过一个或多个计算机或一个或多个处理器访问的任何可用介质,以检索用于实施本发明所描述的技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。

作为示例而非限制,这类计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存或可用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digitalsubscriberline,dsl)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读介质和数据介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形介质。本文所使用的磁盘和光盘包含压缩光盘(compactdisc,cd)、激光光盘、光学光盘、数字多功能光盘(digitalversatiledisc,dvd)、软盘和蓝光光盘,其中,磁盘通常以磁性方式再现数据,而光盘则通过激光以光学方式再现数据。上述的组合也应包括在计算机可读介质的范围内。

指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digitalsignalprocessor,dsp)、通用微处理器、专用集成电路(application-specificintegratedcircuit,asic)、现场可编程逻辑阵列(fieldprogrammablelogicarray,fpga)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的各种功能可以提供在用于编码和解码的专用硬件和/或软件模块内,或者并入在组合的编解码器中。另外,这些技术可以在一个或多个电路或逻辑元件中完全实现。

本发明技术可以在多种设备或装置中实现,这些设备或装置包括无线手机、集成电路(integratedcircuit,ic)或一组ic(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同的硬件单元实现。相反,如上所述,各种单元可以结合合适的软件和/或固件组合在编解码器硬件单元中,或者通过包括如上所述的一个或多个处理器的互操作硬件单元的集合来提供。

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