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

几何分割模式的样本距离计算

文献发布时间:2023-06-19 12:19:35


几何分割模式的样本距离计算

技术领域

本申请(本发明)实施例大体上涉及图像处理领域,具体涉及用于分割的预测,更具体地涉及用于几何分割模式的样本距离计算。

背景技术

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

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

发明内容

本申请实施例提供独立权利要求中所述的用于编码和解码的装置和方法。

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

本发明的第一方面提供了一种解码设备或编码设备实现的译码方法,所述方法包括:获取当前块的角度参数值;获取所述当前块的宽度值和高度值;计算所述宽度值和所述高度值之间的比值;根据所述角度参数值和所述比值计算所述当前块中样本的样本距离值;根据所述样本距离值获取所述当前块中所述样本的预测值。

在本发明实施例中,角参数(angular parameter)和角度参数(angle parameter)是同义词。

根据本发明实施例,计算块的宽度值与高度值之间的比值。所述比值用于计算样本距离值,从而预测值计算更准确。因此,可以减少预测残差,提高译码效率。

在一种实现方式中,所述根据所述角度参数值和所述比值计算所述当前块中样本的样本距离值包括:

根据所述角度参数值和所述比值获取第一值;

根据所述第一值计算所述当前块中所述样本的样本距离值。

在一种实现方式中,所述根据所述第一值计算所述当前块中所述样本的样本距离值包括:

根据所述第一值和所述角度参数值,计算所述当前块中所述样本的样本距离值。

在一种实现方式中,所述根据所述第一值计算所述当前块中所述样本的样本距离值包括:

根据所述第一值、所述角度参数值、距离索引(例如,所述当前块的距离索引)值、所述宽度值和所述高度值,计算所述当前块中所述样本的样本距离值。

在一种实现方式中,所述样本距离值表示所述样本到分隔线的水平距离或垂直距离,或垂直距离和水平距离的组合,其中,所述分隔线用于将译码块划分为两个子块。

在一种实现方式中,所述根据所述样本距离值获取所述当前块中所述样本的预测值包括:

根据所述样本距离值计算两个加权因子;

根据第一预测值、第二预测值和所述两个加权因子获取所述当前块中所述样本的预测值。例如,“将所述两个加权因子应用于第一预测值和第二预测值”或“将第一加权因子应用于第一预测值,将第二加权因子应用于第二预测值”。

在一种实现方式中,所述比值根据以下公式获得:

whRatio=(W>=H)?W/H:H/W,

其中,wRatio为所述比值,W为所述宽度值,H为所述高度值。

在一种实现方式中,所述角度参数值为整数值,所述角度参数值的取值范围为0至31,包括0和31。

在一种实现方式中,所述比值根据以下公式获得:

whRratio=(wIdx>=hIdx)?wIdx-hIdx:hIdx–wIdx,

其中,wRatio为所述比值,W为所述宽度值,H为所述高度值,wIdx的值等于log2(W)–3,hIdx的值等于log2(H)–3。

在一种实现方式中,所述样本距离值根据以下公式计算:

sample_dist=((2*x)-W+K)*f1(alpha)+((2*y)-H+K))*f2(alpha)-distanceIdx*stepD*scaleStep,

其中,sample_dist为所述样本距离值,f1()和f2()为函数,alpha为所述角度参数值;stepD为所述第一值,scaleStep的值等于所述宽度值W或所述高度值H;x和y为所述样本相对于所述当前块左上样本的坐标;K为整数偏移值。

在一种实现方式中,所述样本距离值根据以下公式计算:

sample_dist=((2*x)-W+K)*f(dispIdxN)+((2*y)-H+K))*f(dispIdxS)-distanceIdx*stepD*scaleStep,

其中,sample_dist为所述样本距离值,f1()为函数,dispIdxN或dispIdxS为索引值;stepD为所述第一值,scaleStep的值等于所述宽度值W或所述高度值H;x和y为所述样本相对于所述当前块左上样本的坐标;K为整数偏移值。

本发明第二方面提供了一种视频编码装置或解码装置,所述装置包括:参数获取模块,用于获取当前块的角度参数值;所述参数获取模块还用于获取所述当前块的宽度值和高度值;比值计算模块,用于计算所述宽度值和所述高度值之间的比值;样本距离计算模块,用于根据所述角度参数值和所述比值计算所述当前块中样本的样本距离值;预测模块,用于根据所述样本距离值获取所述当前块中所述样本的预测值。

本发明第一方面提供的方法可以由本发明第二方面提供的装置执行。上述方法的其它特征和实现方式对应于本发明第二方面提供的装置的特征和实现方式。

在一个实施例中,公开了一种解码器(30)或编码器(20),包括用于执行上述任一种实施例和实现方式提供的方法的处理电路。

在一个实施例中,公开了一种计算机程序产品,包括用于执行上述任一种实施例和实现方式提供的方法的程序代码。

在一个实施例中,提供了一种解码器或编码器,其包括:

一个或多个处理器;

非瞬时性计算机可读存储介质,与处理器耦合并存储由处理器执行的程序,其中,当处理器执行所述程序时,使解码器或编码器执行上述任一种实施例和实现方式提供的方法。

在一个实施例中,提供了一种非瞬时性存储介质,包括由图像解码设备解码的经编码的码流,其中,通过将视频信号或图像信号的帧划分为多个块生成所述码流,所述码流包括多个语法元素,其中,所述多个语法元素包括上述任一种实施例和实现方式提供的指示符(语法)。

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

附图说明

下面结合附图对本发明实施例进行详细描述。

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

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

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

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

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

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

图6a示出了并置块的示例;

图6b示出了空域邻块的示例;

图7示出了三角预测模式的一些示例;

图8示出了子块预测模式的一些示例;

图9-图12示出了关于块分割的一些示例;

图13示出了stepD的预定义查找表的示例性实现方式;

图14示出了f()的预定义查找表的示例性实现方式;

图15示出了与stepD的预定义查找表有关的量化方面的示例;

图16示出了针对特定译码块定义了最大距离ρ

图17示出了针对特定译码块定义了另一最大距离ρ

图18为实现内容分发服务的内容提供系统的示例性结构的框图;

图19为终端设备的示例性结构的框图;

图20为本发明方法实施例的一个实施例的流程图;

图21为本发明装置实施例的一个实施例的框图。

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

具体实施方式

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

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

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

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

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

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

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

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

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

图像源16可以包括或可以为任何类型的图像捕获设备、和/或任何类型的图像生成设备或任何类型的其它设备,其中,图像捕获设备为用于捕获现实世界图像的摄像机等,图像生成设备为用于生成计算机动画图像的计算机图形处理器等,或用于获取和/或提供现实世界的图像、计算机生成图像(例如,屏幕内容、虚拟现实(virtual reality,VR)图像)和/或其任意组合(例如,增强现实(augmented reality,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可以为或可以包括任意类型的用于呈现经重建的图像的显示器,例如,集成或外部显示屏或显示器。例如,显示器可以包括液晶显示器(liquid crystaldisplay,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微型LED显示器、硅基液晶显示器(liquid crystal on silicon,LCoS)、数字光处理器(digital light processor,DLP)或任意类型的其它显示器。

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

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

所述编码器20(例如视频编码器20)或所述解码器30(例如视频解码器30),或所述编码器20和所述解码器30两者都可通过如图1B所示的处理电路实现,如一个或多个微处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gatearray,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视频编码专家组(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。

编码器和编码方法

图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也可以称为混合型视频编码器或基于混合型视频编解码器的视频编码器。

残差计算单元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的“内置解码器”。

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

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

(数字)图像是或可以看作具有强度值的二维样本阵列或矩阵。阵列中的样本也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像的水平和垂直方向(或轴线)上的样本的数量定义图像的尺寸和/或分辨率。为了表示颜色,通常采用三个颜色分量,即该图像可以表示为或者可以包括三个样本阵列。在RBG格式或色彩空域中,图像包括对应的红、绿、蓝样本阵列。然而,在视频译码中,每个像素通常以亮度和色度格式或颜色空域表示,例如,YCbCr格式,其包括Y表示的亮度分量(有时也用L表示)和Cb和Cr表示的两个色度分量。亮度(luminance,简写为luma)分量Y表示亮度或灰度级强度(例如在灰度等级图像中两者相同),而两个色度(chrominance,简写为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标准)或称为编码树块(coding tree block,CTB)或编码树单元(codingtree unit,CTU)(H.265/HEVC和VVC标准)。图像分割单元可以用于对视频序列中的所有图像和定义块尺寸的对应的网格使用相同的块尺寸,或者改变图像或子集或图像组之间的块尺寸,并将每个图像的块。

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

尽管图像块203的尺寸小于图像17,但是与图像17一样,块203也是或也可以被认为是具有强度值(样本值)的样本的二维阵列或矩阵。换句话说,图像块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的样本值执行离散余弦变换(discretecosine transform,DCT)或离散正弦变换(discrete sine transform,DST)等变换,以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。

变换处理单元206可以用于应用DCT/DST的整数近似,例如针对H.265/HEVC指定的变换。与正交DCT变换相比,该整数近似法通常通过某一因子按比例缩放(scale)。为了维持经过正变换和逆变换处理的残差块的范数,使用其它缩放因子作为变换过程的一部分。缩放因子通常是基于某些约束条件来选择的,例如缩放因子是用于移位运算的2的幂、变换系数的位深度、精度与实现成本之间的平衡等。例如,在编码器20侧通过逆变换处理单元212等为逆变换(在视频解码器30侧通过逆变换处理单元312等为对应的逆变换)指定具体的缩放因子,并且相应地,可以在编码器20侧通过变换处理单元206等为前向变换指定对应的缩放因子。

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

量化

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

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

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

反量化

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

逆变换

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

重建

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

滤波

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

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

解码图像缓冲区

解码图像缓冲区(decoded picture buffer,DPB)230可以是存储参考图像或通常存储参考图像数据的存储器,以在视频编码器20对视频数据进行编码时使用。DPB 230可以由各种存储器设备中的任一种构成,例如动态随机存取存储器(dynamic random accessmemory,DRAM)(包括同步DRAM(synchronous DRAM,SDRAM))、磁阻RAM(magneto resistiveRAM,MRAM)、电阻RAM(resistive RAM,RRAM)或其它类型的存储器设备。解码图像缓冲区(decoded picture buffer,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可以用于根据率失真优化(rate distortionoptimization,RDO)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中,术语“最佳”、“最小”、“最优”等不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时域。

分割单元262可以用于将块203分割成更小的块部分或子块(子块再次形成块),例如,通过迭代地使用四叉树分割(quad-tree partitioning,QT)、二叉树分割(binary-treepartitioning,BT)或三叉树分割(triple-tree partitioning,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,块可以为或可以对应于译码树单元(coding tree unit,CTU)、译码单元(coding unit,CU)、预测单元(prediction unit,PU)和变换单元(transform unit,TU),和/或对应于对应的块,例如,译码树块(coding tree block,CTB)、译码块(codingblock,CB)、变换块(transform block,TB)或预测块(prediction block,PB)。

例如,译码树单元(coding tree unit,CTU)可以为或可以包括具有3个样本阵列的图像中的亮度样本的一个CTB、该图像中的色度样本的两个对应CTB、或黑白图像中的或使用3个独立颜色平面和语法结构进行译码的图像中的样本的一个CTB。这些语法结构用于对样本进行译码。对应地,译码树块(coding tree block,CTB)可以是N×N的样本块,其中,N可以设为某个值以将分量分割为CTB,这是一种分割。译码单元(coding unit,CU)可以为或可以包括具有3个样本阵列的图像中的亮度样本的一个译码块、该图像中的色度样本的两个对应译码块,或者黑白图像中的或使用3个单独颜色平面和语法结构进行译码的图像中的样本的一个译码块。这些语法结构用于对样本进行译码。对应地,译码块(codingblock,CB)可以是M×N的样本块,其中,M和N可以设为某些值以将CTB分割为译码块,这是一种分割。

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

在实施例中,例如根据当前开发的最新视频编码标准(称为通用视频编码(Versatile Video Coding,VVC)),使用四叉树结合二叉树(quad-tree and binary-tree,QTBT)分割来分割译码块。在QTBT块结构中,CU可以是正方形或矩形。例如,首先通过四叉树结构分割译码树单元(coding tree unit,CTU)。进一步通过二叉树或三叉树结构对四叉树叶节点进行分割。分割树叶节点称为译码单元(coding unit,CU),该分割用于预测和变换处理,而不进行任何进一步分割。这表示在QTBT译码块结构中,CU、PU和TU的块尺寸相同。同时,还提出将三叉树分割等多重分割与QTBT块结构结合使用。

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

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

帧内预测

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

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

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

帧间预测

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

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

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

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

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

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

熵编码

熵译码单元270用于将熵编码算法或方案(例如可变长度译码(variable lengthcoding,VLC)方案、上下文自适应VLC(context adaptive VLC scheme,CAVLC)方案、算术编码方案、二值化,上下文自适应二进制算术译码(context adaptive binary arithmeticcoding,CABAC)、基于语法的上下文自适应二进制算术译码(syntax-based context-adaptive binary arithmetic coding,SBAC)、概率区间分割熵(probability intervalpartitioning entropy,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,解码图像缓冲区(decoded picturebuffer,DBP)330、帧间预测单元344和帧内预测单元354。帧间预测单元344可以是或包括运动补偿单元。在一些示例中,视频解码器30可执行大体上与图2所示视频编码器100所执行的编码过程相反的解码过程。2.

如关于编码器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的相应单元和功能。

熵解码

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

反量化

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

逆变换

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

重建

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

滤波

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

解码图像缓冲区

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

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

预测

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

当将视频条带译码为经帧内译码(intra coded)(I)条带时,模式应用单元360中的帧内预测单元354用于根据指示的帧内预测模式和来自当前图像的之前经解码块的数据为当前视频条带的图像块生成预测块365。当视频图像译码为经帧间译码(inter coded)的(B或P)条带时,模式应用单元360中的帧间预测单元344(例如运动补偿单元)用于根据运动矢量和从熵解码单元304接收到的其它语法元素为当前视频条带的视频块生成预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以根据DPB 330中存储的参考图像通过默认构建技术构建参考帧列表,列表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。以下描述提供了两种限制运动矢量的方法。

方法一:通过以下运算移除溢出MSB(most significant bit,最高有效位)。

ux=(mvx+2

mvx=(ux>=2

uy=(mvy+2

mvy=(uy>=2

例如,如果mvx的值为–32769,则应用公式(1)和(2)后,所得到的值为32767。在计算机系统中,十进制数以二的补码的形式存储。–32769的二的补码为1,0111,1111,1111,1111(17位),然后丢弃MSB,因此所得到的二的补码为0111,1111,1111,1111(十进制数为32767),与公式(1)和(2)的输出相同。

ux=(mvpx+mvdx+2

mvx=(ux>=2

uy=(mvpy+mvdy+2

mvy=(uy>=2

如公式(5)至(8)所示,在求mvp与mvd之和期间,可以应用这些运算。

方法二:通过对值进行限幅移除溢出MSB。

vx=Clip3(–2

vy=Clip3(–2

其中函数Clip3的定义如下:

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

视频译码设备400包括:入端口410(或输入端口410)和接收单元(receiver unit,Rx)420,用于接收数据;处理器、逻辑单元或中央处理单元(central processing unit,CPU)430,用于处理数据;发送单元(transmitter unit,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-only memory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternarycontent-addressable memory,TCAM)和/或静态随机存取存储器(static random-accessmemory,SRAM)。

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

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

装置500中的存储器504在一种实现方式中可以是只读存储器(read onlymemory,ROM)设备或随机存取存储器(random access memory,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可以通过多种配置实现。

在根据ITU-T H.265进行融合候选列表构建的示例中,根据以下候选项构建融合候选列表:

1.根据五个空域邻块推导的最多四个空域候选项;

2.根据两个时域并置(co-located)块推导的一个时域候选项;

3.附加候选项,包括组合的双向预测候选项;

4.零运动矢量候选项。

空域候选项

首先将空域邻块的运动信息添加到融合候选列表中(在一个示例中,在第一运动矢量添加到融合候选列表之前,融合候选列表可以是空列表)作为运动信息候选项。在这里,被认为要插入融合列表中的邻块如图6b所示。对于帧间预测块融合,通过按顺序检查A1、B1、B0、A0和B2,按照该顺序将最多四个候选项插入融合列表中。

运动信息可以包含所有运动数据,所述运动数据包括是否使用一个或两个参考图像列表的信息,以及每个参考图像列表的参考索引和运动矢量。

在一个示例中,在检查邻块是否可用以及是否包含运动信息之后,在将邻块的所有运动数据作为运动信息候选项之前,还执行一些其它冗余检查。为了两个不同目的,这些冗余检查可分为两个类别:

类别1:避免列表中具有包含冗余运动数据的候选项;

类别2:防止融合可以通过其它方式表示而产生冗余语法的两个分割块。

时域候选项

图6a示出了从其中检索时域运动信息候选项的块的坐标。并置块是与当前块的–x、–y坐标相同但位于不同图像(参考图像之一)上的块。如果列表未满,则将时域运动信息候选项添加到融合列表中(在一个示例中,当融合列表中的候选项数量小于阈值时,融合列表未满,例如,阈值可以为4、5、6,等等)。

生成的候选项

在插入空域和时域运动信息候选项之后,如果融合列表仍未满,则添加生成的候选项以填充列表。列表尺寸在序列参数集中指示,并在整个编码视频序列中是固定的。

ITU-T H.265和VVC中的融合构建过程输出运动信息候选列表。VVC的融合列表构建过程在文档JVET-L1001_v2通用视频译码(草案3)的“8.3.2.2融合模式的亮度运动矢量的推导过程(8.3.2.2Derivation process for luma motion vectors for merge mode)”部分中描述,该文档可以通过http://phenix.it-sudparis.eu/jvet/公开获取。术语“运动信息”是指执行运动补偿预测过程所必需的运动数据。运动信息通常指以下信息:

·块是否使用单向预测或双向预测。

·预测中使用的参考图像的ID(如果块使用双向预测,则为2个ID)。

·运动矢量(如果块是双向预测的,则为2个运动矢量)。

·其它信息。

在VVC和H.265中,融合列表构建输出的候选列表包括N个候选运动信息。数量N通常包括在码流中,可以是正整数,如5、6等。包含在构建的融合列表中的候选项可以包括单向预测信息或双向预测信息。即,从融合列表中选择的候选项可以表示双向预测操作。

双向预测

“双向预测”是一种特殊的帧间预测模式,其中使用2个运动矢量预测块。运动矢量可以指向相同或不同的参考图像,其中参考图像可以通过参考图像列表ID和参考图像索引表示。例如,第一运动矢量可以指向参考图像列表L0中的第一图像,第二运动矢量可以指向参考图像列表L1中的第一图像。可以维护两个参考图像列表(例如,L0和L1),并且从列表L0中选择由第一运动矢量指向的图像,从列表L1中选择由第二运动矢量指向的图像。

例如,如果运动信息表示双向预测,则运动信息包括两部分:

·L0部分:运动矢量和指向参考图像列表L0中的条目的参考图像索引。

·L1部分:运动矢量和指向参考图像列表L1中的条目的参考图像索引。

图像顺序编号(picture order count,POC):与每个图像关联的变量唯一地标识编码视频序列(coded video sequence,CVS)中的所有图像中关联的图像,并且当关联的图像要从解码图像缓冲区输出时,表示相对于同一CVS中要从解码图像缓冲区输出的其它图像的输出顺序位置,该关联图像的输出顺序位置。

参考图像列表L0和L1可以各自包括一个或多个参考图像,每个参考图像都用POC标识。与每个参考索引和POC值的关联可以在码流中指示。作为示例,L0和L1参考图像列表可以包括以下参考图像:

在以上示例中,参考图像列表L1中的第一个条目(由参考索引0表示)是POC值为13的参考图像。参考图像列表L1中的第二个条目(由参考索引1表示)是POC值为14的参考图像。

三角预测模式

三角预测模式的概念是引入一种新的三角分割用于运动补偿预测。在图7所示的示例中,沿对角线或反对角线方向将两个三角预测单元用于CU。用于CU的每个三角预测单元使用单向预测运动矢量和参考帧索引进行帧间预测,所述单向预测运动矢量和参考帧索引通过单向预测候选列表推导。在通过运动补偿或帧内预测等方式预测与每个三角预测单元相关联的样本之后,对对角线边缘执行自适应加权过程。然后,将变换和量化过程应用到整个CU。需要说明的是,这种模式仅适用于跳过模式和融合模式。

在三角预测模式中,块被划分为两个三角形部分(如图7所示),每个部分可以使用一个运动矢量进行预测。用于预测一个三角形部分(用PU1表示)的运动矢量可以不同于用于预测另一个三角形部分(用PU2表示)的运动矢量。在一个示例中,需要说明的是,每个部分可以仅使用单个运动矢量进行预测(单向预测),以便降低执行三角预测模式的复杂性。换句话说,PU1和PU2可以不使用包括两个运动矢量的双向预测进行预测。

子块预测模式

三角预测模式是子块预测的一种特殊情况,一个块被划分为两个块。在以上示例中,示出了两种块划分方向(45度和135度分割)。需要说明的是,也可以采用其它分割角度和分割比例(图8中的示例)。

在一些示例中,块被划分为2个子块,每个部分都使用单向预测进行预测。子块预测代表通用版本的三角预测。

在一个示例中,通过使用子块分割模式,使用以下步骤获取块的预测样本:

·步骤1:根据几何模型将译码块划分为2个子块。该模型可以通过图9至图12所示的分隔线(例如直线)划分所述块。

可以理解,步骤1的结果可能只是概念。例如,步骤1之后没有表述概念“子块1”或“子块2”;而是生成或获取表示分隔线的参数。根据表示分隔线的参数,样本属于不同的子块。

在该步骤中,根据几何模型,译码块中的样本被认为位于两个子块中。子块A或子块B包括当前译码块中的一部分(但不是全部)样本。子块A或子块B可以根据每个样本的sample_dist的符号表示。sample_dist可以根据其它段落中的示例和实施例获取。

·步骤2:获取第一子块的第一预测模式和第二子块的第二预测模式。在一个示例中,第一预测模式与第二预测模式不同。在一个示例中,预测模式(第一预测模式或第二预测模式)可以是帧间预测模式,帧间预测模式的信息可以包括参考图像索引和运动矢量。在另一示例中,预测模式可以是帧内预测模式,帧内预测模式的信息可以包括帧内预测模式索引。

·步骤3:分别使用第一预测模式和第二预测模式获取第一预测值和第二预测值。

·步骤4:根据步骤1中公开的划分,通过将第一预测值和第二预测值组合,获得预测样本的组合值。将来自第一预测和第二预测的样本组合以获得块的预测样本的组合值的过程可以包括滤波操作、掩膜操作或样本复制。

在一个示例中,在步骤1中,译码块通过各种方式划分为2个子块。图9示出了关于译码块分割的示例,分隔线1250将所述块划分为2个子块。指示两个参数来描述线1250,一个参数是角度alpha 1210,另一个参数是距离dist 1230。

在一些实施例中,图9所指示的角度在x轴与分隔线之间测量,而距离由垂直于分隔线并穿过当前块中心的矢量的长度测量。

在另一示例中,图10示出了表示分隔线的另一种方式,其中角度和距离的示例与图9所示的示例不同。

在一些示例中,在步骤4中,步骤1中公开的划分用于所述第一预测值和所述第二预测值的组合,以获取最终预测值。

在一个示例中,在步骤4中使用混合操作,以消除任何伪影(沿分隔线的边缘或锯齿状外观)。混合操作可以描述为沿着分隔线进行的滤波操作。

在一个示例中,在编码端,根据基于率失真的成本函数确定分隔线(定义该线的参数,例如角度和距离)。确定的线参数被编码到码流中。在解码端,根据码流解码(获得)线参数。在解码端,线参数用于所述第一预测值和所述第二预测值的组合,以获得最终预测值。步骤1不要求有两个子译码块概念,解码器可以使用译码块和线参数来表示两个子译码块概念。

在一个示例中,在包括亮度分量和两个色度分量的3个视频通道的情况下,针对每个通道生成第一预测值和第二预测值。

由于将译码块划分为2个子块的可能性有很多,因此划分(或分割)的指示(译码)需要很多位。由于角度和距离值可以有许多不同的值,需要在码流中指示的边信息过多,因此将量化方案应用于角度和距离边信息,以提高译码效率。

本发明实施例是关于分割参数的指示,例如,量化角度参数alphaIdx和量化距离参数distanceIdx。

在一个示例中,在量化方案中,角度值和距离值可以通过线性均匀量化器根据以下公式进行量化:

alphaIdx=Round(alpha/Δalpha),

distanceIdx=Round(dist/Δdist),

其中,变量Δalpha表示分隔线的角度参数的量化步长尺寸,变量Δdist表示分隔线的距离参数的量化步长尺寸。因此,可以使用从码流获取的alphaIdx和distanceIdx的值重建角度alpha和距离dist如下:

alpha=alphaIdx*Δalpha,

dist=distanceIdx*Δdist.

在一个示例中,如果角度量化步长尺寸等于Δalpha=11.25°,则alphaIdx的值可以在0到31之间(包括0和31),以覆盖欧几里得平面中允许的角度。在另一个示例中,角度量化步长尺寸等于Δalpha=22.5°,则alphaIdx的值可以在0到15之间(包括0和31)。

在一些实施例中,公开了一种方法,在线性和均匀量化器用于量化角度的情况下,根据角度量化所述距离信息,即,Δalpha的值对于特定译码(解码或编码)块是恒定的。

所公开的量化方案的目的是针对特定译码块均匀分布允许的分隔线,所述特定译码块可以具有不同的尺寸和宽高比。量化角度和距离参数的均匀分布空域提高了非矩形分量的译码效率,分隔线参数的表示更紧凑。

在一些实施例中,公开了一种通过直线分割矩形译码块的方法。直线有一对参数,即量化角度和量化距离值。量化距离值按照量化过程根据译码块的角度值和宽高比推导。

在一个示例中,距离可以以这样的方式量化:满足distanceIdx的给定值范围,例如,在0到3之间(包括0和31)。在另一个示例中,特定块的距离可以以这样的方式量化:针对给定参数对(即angleIdx和distanceIdx)的分隔线均匀分布,分隔线应一直位于特定译码块的区域内。

在第一步中,可以根据角度推导最大距离ρ

在一个示例中,根据角度alphaR和译码块的尺寸,最大距离ρ

其中,alphaR为上述表示为alpha的角度,以辐射单位表示,w为块的宽度,h为块的高度,以亮度样本为单位。在该示例中,角度相关距离量化步长尺寸Δdist(alpha)的值可以推导如下:

Δdist(alphaR,w,h)=ρ

其中,N–1为distanceIdx的最大值。图16中示出了Δangle=22.5°和N=4的值。

在另一个示例中,角度相关距离量化步长尺寸的值可以推导如下:

Δdist(alphaR,w,h)=(ρ

其中,ρ

在另一个示例中,根据译码块的角度和尺寸,最大距离ρ

其中,alphaR为以辐射单位表示的角度,w为块的宽度,h为块的高度,以亮度样本为单位。图17中示出了Δangle=22.5°和N=4的值。

在一个示例中,为了避免在编码或解码过程中重复计算Δdist,基于角度参数值、宽度参数值和高度参数值的Δdist的值可以存储在预先计算的查找表中。

在一个实施例中,为了使用整数运算,可以根据以下公式缩放和取整Δdist的值:

stepD=Round(Δdist*2

其中,stepD为线性缩放的距离步长尺寸,prec为用于调整缩放过程精度的变量。在一个示例中,prec的值设置为prec=7。

在一个示例中,还基于表示为whRatio的宽高比存储stepD的预先计算值,宽高比的值基于译码块的宽度和高度。此外,基于(归一化的)角度值angleN存储stepD的预先计算值,角度值angleN是与欧几里得平面的第一象限中的角度相关的索引值(例如,0≤angleN*Δalpha≤90°)。图13示出了使用上述简化后的查找表的一个示例。

在一个实施例中,按照以下步骤获取译码块样本的预测值:

步骤1:对于当前块(解码块或译码块)中的样本,计算样本距离(sample_dist)。

在一些示例中,样本距离可以表示所述样本到分隔线的水平距离或垂直距离,或垂直距离和水平距离的组合。所述分隔线用于将译码块划分为两个子块。所述样本由相对于译码块左上样本的坐标(x,y)表示。图11和图12示出了样本坐标sample(x,y)和sample_dist。子块不一定是矩形的,可以是三角形或梯形的。

在一个示例中,第一参数表示量化角度值(angleIdx),第二参数表示量化距离值(distanceIdx)。这两个参数描述了线方程式。在一个示例中,距离1230可以根据distanceIdx(第二参数)获得,角度alpha 1210可以根据angleIdx(第一参数)获得。距离1230可以是分隔线到译码块中心的距离,角度可以是分隔线与穿过译码块中心点的水平(或,等效地,垂直)线之间的角度。

在一个具体的示例中,根据几何分割融合模式(由merge_gpm_partition_idx表示)的分割形状获得angleIdx的值和distanceIdx的值。例如,这些值之间的关系如表1所示。可以理解的是,在该实现方式中,这种关系可以根据表1或根据函数来实现。

表1:基于merge_gpm_partition_idx的angleIdx和distanceIdx的规范

在一个示例中,在步骤1中,译码块通过各种方式划分为2个子块。图9示出了关于译码块分割的示例,分隔线1250将所述块划分为2个子块。为了描述所述线1250,在码流中指示一个角度参数alpha 1210。

在一些实施例中,图9所示的角度在x轴与分隔线之间测量,而距离由垂直于分隔线并穿过当前块中心的矢量的长度测量。

在另一示例中,图10示出了表示分隔线的另一种方式,其中角度和距离的示例与图9所示的示例不同。

步骤2:计算的sample_dist用于计算加权因子,所述加权因子用于对应于所述样本的第一预测值和第二预测值的组合。在一个示例中,加权因子表示为sampleWeight1和sampleWeight2,表示与第一预测值对应的权重和与第二预测值对应的权重。

在一个示例中,加权因子根据以下函数计算:

weightIdxL=partFlip?32+sample_dist:32-sample_dist;

wValue=Clip3(0,8,(weightIdxL+4)>>3)

在该示例中,wValue为sampleWeight1,8–wValue为sampleWeight2。变量partFlip根据angleIdx的值确定。在一个示例中,partFlip=(angleIdx>=13&&angleIdx<=27)?0:1,或partFlip=(angleIdx>=13&&angleIdx<=27)?1:0。

步骤3:根据坐标(x,y)处的第一预测值、坐标(x,y)处的第二预测值、sampleWeight1和sampleWeight2计算在样本坐标(x,y)处的预测样本的组合值。

在一个示例中,预测样本值推导如下:

pbSamples[x][y]=Clip3(0,(1<>shift1).

其中,bitDepth表示样本位深度,变量shift1根据bitDepth获取,在一个示例中,shift1=Max(5,17–BitDepth);变量offset1根据shift1获取,在一个示例中,offset1=1<<(shift1–1),predSamplesLA和predSamplesLB是两个(nCbW)×(nCbH)阵列。

在一个实施例中,根据一个示例,上述实施例中的步骤1可以包括以下步骤:

步骤1.1:获取当前块的角度参数(alphaN或angleIdx)的索引值、当前块的宽度值(W)、当前块的高度值(H)。W和H是当前块以样本数为单位的宽度和高度。例如,宽度和高度均等于8的译码块是包括64个样本的正方形块。在另一示例中,W和H是当前块以亮度样本数为单位的宽度和高度。角度参数的索引值可以根据上文描述获得,参考表1。

步骤1.2:根据W的值和H的值获取比值whRatio的值,whRatio的值表示当前译码块的宽度与高度之间的比值。

在一个示例中,whRatio=H/W;或whRatio=W/H。

在另一个示例中,两个变量nCbW和nCbH表示当前译码块的宽度和高度,变量cIdx表示颜色分量索引。

变量nW、nH和wRatio推导如下:

nW=(cIdx==0)?nCbW:nCbW*SubWidthC

nH=(cIdx==0)?nCbH:nCbH*SubHeightC

whRatio=nH/nW

在一个示例中,表2列出变量SubWidthC和SubHeightC,取决于色度格式采样结构,所述色度格式采样结构通过chroma_format_idc(chroma_format_idc表示相对于亮度采样的色度采样)和separate_colour_plane_flag(separate_colour_plane_flag等于1表示4:4:4色度格式的三个颜色分量单独译码;separate_colour_plane_flag等于0表示颜色分量不单独译码。当separate_colour_plane_flag不存在时,推断等于0。当separate_colour_plane_flag等于1时,经译码的图像由三个单独的分量组成,每个分量由一个颜色平面的经译码的样本(Y、Cb或Cr)组成并使用单色译码语法。在这种情况下,每个颜色平面与特定的colour_plane_id value值相关联)表示。chroma_format_idc、SubWidthC和SubHeightC的其它值将来由ITU-T|ISO/IEC指定。

表2:根据chroma_format_idc和separate_colour_plane_flag推导的SubWidthC和SubHeightC值

在单色采样中,只有一个样本阵列,通常认为是亮度阵列。

在4:2:0采样中,两个色度阵列的高度和宽度都为亮度阵列的高度和宽度的一半。

在4:2:2采样中,两个色度阵列的高度都与亮度阵列相同,宽度都为亮度阵列的一半。

在4:4:4采样中,根据separate_colour_plane_flag的值,存在以下情况:

-如果separate_colour_plane_flag等于0,则两个色度阵列的高度和宽度都与亮度阵列相同。

-否则(即separate_colour_plane_flag等于1),三个颜色平面分别作为单色采样图像处理。

步骤1.3:根据查找表、alpha的值和whRatio的值获取stepD的值,在一个示例中,如图13所示,alpha(alphaN或angleIdx)的值和whRatio的值用作查找表的索引值。stepD的值也可以根据函数获取,其中,alpha(alphaN或angleIdx)的值和whRatio的值是函数的输入,stepD的值是函数的输出。在一个示例中,函数的结果与查找表相似或相同。在一个示例中,stepD的值表示样本距离计算过程的量化步长尺寸。

在另一示例中,该函数可以表示为stepD=(angleIdx%16==8||(angleIdx%16!=0&&whRatio>0))?0:1。

步骤1.4:根据stepD的值计算sample_dist的值。

在一个示例中,为了计算样本距离(sample_dist),首先,变量offsetX和offsetY推导如下:

如果stepD等于0,则以下情况适用:

offsetX=(–nW)>>1,

offsetY=((–nH)>>1)+

(angleIdx<16?(distanceIdx*nH)>>3:–((distanceIdx*nH)>>3));

否则(stepD等于1),则以下情况适用:

offsetX=((–nW)>>1)+

(angleIdx<16?(distanceIdx*nW)>>3:–((distanceIdx*nW)>>3));

offsetY=(–nH)>>1;

-变量xL和yL推导如下:

xL=(cIdx==0)?x:x*SubWidthC

yL=(cIdx==0)?y:y*SubHeightC

sample_dist=(((xL+offsetX)<<1)+1)*disLut[displacementX]+(((yL+offsetY)<<1)+1))*disLut[displacementY]。

变量displacementX和displacementY推导如下:

hwRatio=cbHeight/cbWidth;

displacementX=angleIdx;

displacementY=(angleIdx+8)%32。

表3中表示的阵列disLut如下所示:

表3:几何分割距离阵列disLut的规范

在另一实施例中,在一个示例中,上述实施例中的步骤1可以包括以下步骤:

步骤1.1:获取当前块的角度参数(alphaN或angleIdx)的值、距离索引(distanceIdx)的值、当前块的宽度值(W)、当前块的高度值(H)。W和H是当前块以样本数为单位的宽度和高度。例如,宽度和高度均等于8的译码块是包括64个样本的正方形块。在另一示例中,W和H是当前块以亮度样本数为单位的宽度和高度。角度参数的索引值可以根据上文描述获得,参考表1。

步骤1.2:根据W的值和H的值获取比值whRatio的值,whRatio的值表示当前译码块的宽度与高度之间的比值。

在一个示例中,whRatio=H/W;或whRatio=W/H。

在另一个示例中,两个变量nCbW和nCbH表示当前译码块的宽度和高度,变量cIdx表示颜色分量索引。

变量nW、nH和wRatio推导如下:

nW=(cIdx==0)?nCbW:nCbW*SubWidthC

nH=(cIdx==0)?nCbH:nCbH*SubHeightC

whRatio=nH/nW

步骤1.3:根据查找表、alpha的值和whRatio的值获取stepD的值,在一个示例中,如图13所示,alphaN的值和whRatio的值用作查找表的索引值。在一个示例中,stepD的值表示样本距离计算过程的量化步长尺寸。可以理解,stepD的值也可以根据函数获得,其中,alpha(alphaN或angleIdx)的值和whRatio的值是函数的输入,stepD的值是函数的输出。在一个示例中,函数的结果与查找表相似或相同。在一个示例中,stepD的值表示样本距离计算过程的量化步长尺寸。

在另一示例中,该函数可以表示为stepD=(angleIdx%16==8||(angleIdx%16!=0&&whRatio>0))?0:1。

步骤1.4:根据stepD的值、distanceIdx的值、角度(alphaN或angleIdx)的值、W的值和H的值计算sample_dist的值。

在一个示例中,为了计算样本距离(sample_dist),首先,变量offsetX和offsetY推导如下:

如果stepD等于0,则以下情况适用:

offsetX=(–nW)>>1,

offsetY=((–nH)>>1)+

(angleIdx<16?(distanceIdx*nH)>>3:–((distanceIdx*nH)>>3));

否则(stepD等于1),则以下情况适用:

offsetX=((–nW)>>1)+

(angleIdx<16?(distanceIdx*nW)>>3:–((distanceIdx*nW)>>3));

offsetY=(–nH)>>1;

-变量xL和yL推导如下:

xL=(cIdx==0)?x:x*SubWidthC

yL=(cIdx==0)?y:y*SubHeightC

sample_dist=(((xL+offsetX)<<1)+1)*disLut[displacementX]+(((yL+offsetY)<<1)+1))*disLut[displacementY].

变量displacementX和displacementY推导如下:

hwRatio=cbHeight/cbWidth;

displacementX=angleIdx;

displacementY=(angleIdx+8)%32。

阵列disLut在上表3中表示。

在一个示例中,通过公式获得whRatio的值:

whRatio=(wIdx>=hIdx)?wIdx–hIdx:hIdx–wIdx

其中,wIdx的值等于log2(W)–3,hIdx的值等于log2(H)–3。

在另一个示例中,whRatio的值计算为whRatio=(W>=H)?W/H:H/W。

在本发明实施例中,可以从码流(在解码器中)获得角度alpha的值。在一个示例中,角度值的范围是0和31之间的量化值范围(包括0和31),表示为angleIdx。在一个示例中,量化角度值仅取32个不同的值(因此,0到31之间的值足以表示选择的角度值)。在另一个示例中,角度值的范围可以在0到15之间,即,可以选择16个不同的量化角度值。需要注意的是,角度值通常可以为大于0的整数值。

在一个示例中,alphaN的值为从码流中获得的索引值,或者alpha的值根据从码流中获得的指示符的值计算。例如,可以根据以下公式计算alphaN的值:

alphaN=angleIdx if angleIdx>=0&&angleIdx<=Lim,或者

alphaN=2*Lim-angleIdx if angleIdx>Lim&&angleIdx<=2*Lim,或者

alphaN=angleIdx–2*Lim if angleIdx>2*Lim&&angleIdx<=3*Lim,或者

alphaN=4*Lim-angleIdx否则。

而angleIdx为从码流中获得的指示符的值。angleIdx的值可以为整数值,范围在0到31之间(包括0和31)。

在另一个示例中,alphaN的值可以根据以下公式之一计算:

alphaN=angleIdx,或者

alphaN=2*Lim–angleIdx,或者

alphaN=angleIdx–2*Lim,或者

alpha N=4*Lim–angleIdx。

在上述公式中,Lim为与量化角度值的数量相关的预定义常量值。例如,如果有32个不同的量化角度值,则Lim可以等于8(4*Lim等于32)。在另一个示例中,Lim可以为4,对应共计16个不同的量化角度值。

在一个实施例中,根据以下公式获得sample_dist的值:

sample_dist=((2*x)–W+K)*f1(alpha)+((2*y)–H+K))*f2(alpha)–distanceIdx*stepD*scaleStep

·其中,f1()和f2()是函数,alpha是函数的输入。在一个示例中,f1()和f2()实现为查找表,alpha的值为查找表中的索引值。

·scaleStep的值等于译码(解码或编码)块的宽度值或高度值。

·x和y为所述样本相对于译码块左上样本的坐标。

·K为整数偏移值。在一个示例中,K的值为1。

在一个实施例中,函数f1()和f2()实现为查找表。在一个示例中,函数f1()和f2()表示sample_dist的值相对于修改x值和y值的增量变化。在一些示例中,f1(index)表示sample_dist的值随着x值的一个单位增加而变化(单位可能增加1),而f2(index)表示sample_dist的值随着y值的一个单位增加而变化。可以从码流中的指示符的值获得索引值。

在另一个实施例中,根据以下公式获得sample_dist的值:

sample_dist=((2*x)–W+K)*f(dispIdxN)+((2*y)–H+K))*f(dispIdxS)–distanceIdx*stepD*scaleStep

·其中,f()是一个函数,在一个示例中,函数f()实现为查找表。

·dispIdxN或dispIdxS是从码流中获得的索引值,或者根据从码流中获得的指示符的值计算。

·scaleStep的值等于译码(解码或编码)块的宽度值或高度值。

·x和y为所述样本相对于译码块左上样本的坐标。

·K为整数偏移值。在一个示例中,K的值为1。

在一个实施例中,函数f()实现为查找表。函数f()表示sample_dist的值相对于修改x值和y值的增量变化。在一个示例中,f(index1)表示sample_dist的值随着x值的一个单位增加而变化,而f(index2)表示sample_dist的值随着y值的一个单位增加而变化。index1和index2的值为根据码流中指示符的值获得的表中的索引(大于或等于0的整数值)。

在一个示例中,函数f()的实现如图14所示。在本示例中,idx的值为输入参数(可以为index1或index2),函数的输出为f(idx)。在一个示例中,f()实现为使用整数运算的余弦函数,其中,idx(输入索引值)表示量化角度值。

在一个实施例中,stepD的值表示用于样本距离计算的量化距离值。

在一个实施例中,如图13所示,stepD的值是根据whRatio的值和角度(alpha)的值获得的。在一个示例中,stepD的值可以通过以下方式获得:

stepD=lookupTable[alphaN][whRatio],其中,alphaN的值为从码流中获得的索引值,或alphaN的值根据从码流中获得的指示符的值计算。例如,alpha可以根据以下公式计算:

alphaN=angleIdx if angleIdx>=0&&angleIdx<=8,或

alphaN=16–angleIdx if angleIdx>8&&angleIdx<=16,或

alphaN=angleIdx–16 if angleIdx>16&&angleIdx<=24,或

alphaN=32–angleIdx否则。

其中,angleIdx为根据码流获得的索引值。

在另一个示例中:

alphaN=angleIdx if angleIdx>=0&&angleIdx<=Lim,或

alphaN=2*Lim–angleIdx if angleIdx>Lim&&angleIdx<=2*Lim,或

alphaN=angleIdx–2*Lim if angleIdx>2*Lim&&angleIdx<=3*Lim,或

alphaN=4*Lim-angleIdx否则。

或者,在另一个示例中:

alphaN=angleIdx,或

alphaN=2*Lim–angleIdx,或

alphaN=angleIdx–2*Lim,或

alphaN=4*Lim–angleIdx。

在上述公式中,Lim为与量化角度值的数量相关的预定义常量值。例如,如果有32个不同的量化角度值,则Lim可以等于8(4*Lim等于32)。在另一个示例中,Lim可以为4,对应共计16个不同的量化角度值。

在一个示例中,根据distanceIdx*stepD*scaleStep获得sample_dist的值,其中,distanceIdx为根据码流获得的索引值,scaleStep的值是根据块的宽度值或高度值获得的。乘法的结果表示分隔线到译码块中心点的距离(其坐标x=W/2,y=H/2)。

在一个示例中,所述查找表为预定义表。预定义表具有以下优点:

·获取样本到分隔线的距离通常是复杂的,需要求解三角方程,这在实施针对大规模生产的消费者产品的视频编码标准时无法实现。

在一些实施例中,样本距离是根据查找表(可以是预定义的)获取的,所述查找表包括whRatio和alpha的预先计算的中间结果,whRatio和alpha已经根据整数运算获得(因此,在一个示例中,所有stepD的值都是整数)。通过查找表获得的中间结果是仔细选择的,因为存在以下情况:

·查找表包括复杂运算(三角计算)的中间计算结果,因此实现复杂度降低。

·表的尺寸保持较小(这需要内存)。

在另一个示例中,根据distanceIdx*(stepD+T)*scaleStep获得sample_dist的值,其中,T为具有整数值的偏移值。在一个示例中,T的值为32。

如图20所示,公开了一种由解码设备或编码设备实现的译码方法,所述方法包括:

S2001:获取当前块的角度参数值。

在一个示例中,所述角度参数值可以通过解析视频码流中编码的索引值获得,或者可以根据从所述视频码流中解析出来的语法值确定。

所述码流可以根据无线网络或者有线网络获取。所述码流可以使用同轴电缆、光纤电缆、双绞线、数字用户线(digital subscriber line,DSL),或例如红外、无线电、微波、WIFI、蓝牙、LTE或5G等无线技术从网站、服务器或其它远程源传输。

在一个实施例中,码流是网络抽象层(network abstraction layer,NAL)单元流或字节流等形式的位序列,形成接入单元(access unit,AU)序列的表示,所述接入单元序列形成一个或多个编码视频序列(coded video sequence,CVS)。

在一些实施例中,对于解码过程,解码端读取码流并从码流中推导经解码的图像;对于编码过程,编码端生成码流。

通常,码流包括由语法结构构成的语法元素。语法元素:码流中表示的数据元素。

语法结构:零个或多个语法元素以指定顺序一起出现在码流中。

在一个特定示例中,码流格式表示网络抽象层(network abstraction layer,NAL)单元流与字节流之间的关系,网络抽象层单元流与字节流都称为码流。

例如,码流可以具有两种格式:NAL单元流格式和字节流格式。NAL单元流格式在概念上是更“基本的”类型。NAL单元流格式包括称为NAL单元的语法结构序列。这个序列是按解码顺序排序的。对NAL单元流中的NAL单元的解码顺序(和内容)有一些限制。

通过按解码顺序对NAL单元进行排序,并在每个NAL单元前添加起始码前缀和零个或多个零值字节以形成字节流,可以由NAL单元流格式构建字节流格式。通过在该字节流中搜索唯一的起始码前缀模式的位置,可以从字节流格式中提取NAL单元流格式。

该句表示通过码流给出的源图像与解码图像之间的关系的实施例。

由码流表示的视频源是按解码顺序排列的图像序列。

在一个示例中,根据码流获取当前块的指示符的值。指示符的值用于获取角度参数值。

在一个实施例中,指示符的值用于表示几何分割融合模式的分割形状。例如,指示符可以是merge_gpm_partition_idx[x0][y0],其中merge_gpm_partition_idx[x0][y0]表示几何分割融合模式的分割形状。阵列索引x0,y0表示所考虑译码块的左上亮度样本相对于图像的左上亮度样本的位置(x0,y0)。

通常,merge_gpm_partition_idx[x0][y0]的值是从码流解码的。在一个示例中,merge_gpm_partition_idx[][]的取值范围为0到63(包括0和31)。在一个示例中,merge_gpm_partition_idx[][]的解码过程是“旁路”。

当merge_gpm_partition_idx[x0][y0]不存在时,推断它等于0。

根据所述指示符的值和预定义查找表,获取所述当前块的角度参数值。

在一个实施例中,如下表所表示,根据merge_gpm_partition_idx[xCb][yCb](指示符)的值设置几何分割模式的分割角度变量angleIdx(角度参数)和距离变量distanceIdx。在该实现方式中,这种关系可以根据表1或根据函数来实现。

表1:基于merge_gpm_partition_idx的angleIdx和distanceIdx的规范

S2002:获取所述当前块的宽度值和高度值。

在一个示例中,W和H是当前块以样本数为单位的宽度和高度。W和H从码流中解析。例如,宽度和高度均等于8的译码块是包括64个样本的正方形块。在另一示例中,W和H是当前块以亮度样本数为单位的宽度和高度。

S2003:计算所述宽度值和所述高度值之间的比值。

在一个实施例中,whRatio的值表示当前译码块的宽度与高度之间的比值。

在一个示例中,whRatio=H/W;或whRatio=W/H。

在另一示例中,两个变量nCbW和nCbH表示当前译码块的宽度和高度,变量cIdx表示颜色分量索引。

变量nW、nH和whRatio推导如下:

nW=(cIdx==0)?nCbW:nCbW*SubWidthC

nH=(cIdx==0)?nCbH:nCbH*SubHeightC

whRatio=nH/nW

在一个示例中,表2列出变量SubWidthC和SubHeightC,取决于通过sps_chroma_format_idc和sps_separate_colour_plane_flag表示的色度格式采样结构。

表2:根据sps_chroma_format_idc和sps_separate_colour_plane_flag推导的SubWidthC和SubHeightC值

在单色采样中,只有一个样本阵列,通常认为是亮度阵列。

在4:2:0采样中,两个色度阵列中的每个色度阵列的高度和宽度为亮度阵列的高度和宽度的一半。

在4:2:2采样中,两个色度阵列中的每个色度阵列的高度和宽度与亮度阵列的高度和宽度相同。

在4:4:4采样中,根据sps_separate_colour_plane_flag的值,以下情况适用:

-如果sps_separate_colour_plane_flag等于0,则两个色度阵列中的每一个的高度和宽度均与亮度阵列相同;

-否则(sps_separate_colour_plane_flag等于1),三个颜色平面分别作为单色采样图像处理。

S2004:根据所述角度参数值和所述比值计算所述当前块中样本的样本距离值。

在一个实施例中,步骤S2004包括:

步骤1:根据查找表、alpha的值和whRatio的值获取shiftHor的值。

在一个示例中,alpha(alphaN或angleIdx)的值和whRatio的值用作查找表的索引值。也可以根据函数获取shiftHor的值,其中alpha(alphaN或angleIdx)的值和whRatio的值是函数的输入,shiftHor的值是函数的输出。在一个示例中,函数的结果与查找表相似或相同。在一个示例中,shiftHor的值表示样本距离计算过程的量化步长尺寸。

在另一个示例中,所述函数可以表示为:shiftHor=(angleIdx%16==8||(angleIdx%16!=0&&whRatio>0))?0:1。

步骤2:根据shiftHor的值计算sample_dist的值。

在一个示例中,为了计算样本距离(sample_dist),首先,推导变量offsetX和offsetY如下:

如果shiftHor等于0,则:

offsetX=(–nW)>>1,

offsetY=((–nH)>>1)+

(angleIdx<16?(distanceIdx*nH)>>3:–((distanceIdx*nH)>>3));

否则(shiftHor等于1):

offsetX=((–nW)>>1)+

(angleIdx<16?(distanceIdx*nW)>>3:–((distanceIdx*nW)>>3));

offsetY=(–nH)>>1;

-变量xL和yL推导如下:

xL=(cIdx==0)?x:x*SubWidthC

yL=(cIdx==0)?y:y*SubHeightC

sample_dist=(((xL+offsetX)<<1)+1)*disLut[displacementX]+(((yL+offsetY)<<1)+1))*disLut[displacementY]。

变量displacementX和displacementY推导如下:

hwRatio=cbHeight/cbWidth;

displacementX=angleIdx;

displacementY=(angleIdx+8)%32.

表3列出阵列disLut。

在一些实施例中,根据几何模型,译码块中的样本被认为位于两个子块中。子块A或子块B可以包括当前译码块中的一部分(但不是全部)样本。子块A或子块B可以根据每个样本的sample_dist的符号表示。sample_dist可以根据其它段落中的示例和实施例获得。

S2005:根据所述样本距离值获取所述当前块中所述样本的预测值。

在一种实现方式中,所述根据所述样本的所述样本距离的所述值,获取所述样本的预测值包括:

根据所述样本距离值计算两个加权因子;

根据第一预测值、第二预测值和所述两个加权因子,获取所述样本的所述预测值。

在一种实现方式中,所述样本距离的所述值表示所述样本到分隔线的水平距离或垂直距离,或所述垂直距离和水平距离的组合,其中,所述分隔线用于将译码块划分为两个子块。

在一个示例中,计算的sample_dist用于计算加权因子,所述加权因子用于对应于所述样本的第一预测值和第二预测值的组合。在一个示例中,加权因子表示为sampleWeight1和sampleWeight2,表示与第一预测值对应的权重和与第二预测值对应的权重。

在一个示例中,加权因子根据以下函数计算,

weightIdxL=partFlip?32+sample_dist:32–sample_dist;

wValue=Clip3(0,8,(weightIdxL+4)>>3)。

在该示例中,wValue为sampleWeight1,8–wValue为sampleWeight2。变量partFlip根据angleIdx的值确定。在一个示例中,partFlip=(angleIdx>=13&&angleIdx<=27)?0:1,or partFlip=(angleIdx>=13&&angleIdx<=27)?1:0。

在一个示例中,根据坐标(x,y)处的第一预测值、坐标(x,y)处的第二预测值、sampleWeight1和sampleWeight2计算在样本坐标(x,y)处的预测样本的组合值。

在一个示例中,预测样本值推导如下:

pbSamples[x][y]=Clip3(0,(1<>shift1).

其中,bitDepth表示样本位深度,变量shift1根据bitDepth获取,在一个示例中,shift1=Max(5,17–BitDepth);变量offset1根据shift1获取,在一个示例中,offset1=1<<(shift1–1),predSamplesLA和predSamplesLB是两个(nCbW)×(nCbH)阵列。

如图21所示,公开了一种装置2100。该装置2100包括:参数获取模块2101,用于获取当前块的角度参数值;所述参数获取模块2101还用于获取所述当前块的宽度值和高度值;比值计算模块2102,用于计算所述宽度值和所述高度值之间的比值;样本距离计算模块2103,用于根据所述角度参数值和所述比值计算所述当前块中样本的样本距离值;预测模块2104,用于根据所述样本距离值获取所述当前块中所述样本的预测值。

本发明实施例提供的方法可以由所述装置2100执行。上述方法的其它特征和实现方式对应于所述装置2100的特征和实现方式。

示例1:一种由解码设备或编码设备实现的译码方法,所述方法包括:

获取当前块的角度参数值;

获取所述当前块的宽度值和高度值;

计算所述宽度值和所述高度值之间的比值;

根据所述角度参数值和所述比值获取第一值;

根据所述第一值计算所述当前块中样本的样本距离值;

根据所述样本距离值获取所述当前块中所述样本的预测值。

示例2:根据示例1所述的方法,所述第一值是根据预定义查找表获得的,所述角度参数值和所述比值用作所述预定义查找表的索引值。

示例3:根据示例2所述的方法,所述预定义查找表包括9个不同的角度值(0至8)。

示例4:根据示例2所述的方法,所述预定义查找表包括5个不同的角度值(0至4)。

示例5:根据示例2至4中任一项所述的方法,所述预定义查找表包括4个不同的比值(0至3)。

示例6:根据示例2至4中任一项所述的方法,所述预定义查找表包括5个不同的比值(0至4)。

示例7:根据示例2至4中任一项所述的方法,所述预定义查找表包括3个不同的比值(0至2)。

示例8:根据示例2至7中任一项所述的方法,所述预定义查找表包括对应于角度值和比值的每个组合的第一值。

示例9:根据示例1至8中任一项所述的方法,所述根据所述第一值计算所述当前块中样本的样本距离值包括:

根据所述第一值和所述角度参数值,计算所述当前块中样本的样本距离值。

示例10:根据示例1至9中任一项所述的方法,所述比值根据以下公式获得:

whRratio=(wIdx>=hIdx)?wIdx–hIdx:hIdx–wIdx,

其中,wRatio为所述比值,W为所述宽度值,H为所述高度值,wIdx的值等于log2(W)–3,hIdx的值等于log2(H)–3。

示例11:根据示例1至9中任一项所述的方法,所述比值根据以下公式获得:

whRatio=(W>=H)?W/H:H/W,

其中,wRatio为所述比值,W为所述宽度值,H为所述高度值。

示例12:根据示例1至11中任一项所述的方法,所述样本距离值根据以下公式计算:

sample_dist=((2*x)–W+K)*f1(alpha)+((2*y)–H+K))*f2(alpha)–distanceIdx*stepD*scaleStep,

其中,sample_dist为所述样本距离值,f1()和f2()为函数,alpha为所述角度参数值(在一个示例中,f1()和f2()实现为查找表,alpha的值为查找表的索引值);scaleStep的值等于所述宽度值或所述高度值;x和y为所述样本相对于所述当前块左上样本的坐标;K为整数偏移值。

示例13:根据示例1至11中任一项所述的方法,所述样本距离值根据以下公式计算:

sample_dist=((2*x)–W+K)*f(dispIdxN)+((2*y)–H+K))*f(dispIdxS)–distanceIdx*stepD*scaleStep,

其中,sample_dist为所述样本距离值,f()为函数(在一个示例中,函数f()实现为查找表),dispIdxN或dispIdxS为索引值(在一个示例中,dispIdxN或dispIdxS从码流中获得或根据码流中的指示符的值计算);scaleStep的值等于所述宽度值或所述高度值;x和y为所述样本相对于所述当前块左上样本的坐标;K为整数偏移值(在一个示例中,K的值为1)。

示例14:一种解码器(30)或编码器,包括处理电路,用于执行根据示例1至13中任一项所述的方法。

示例15:一种计算机程序产品,包括程序代码,所述程序代码用于执行根据示例1至13中任一项所述的方法。

示例16:一种解码器或编码器,包括:

一个或多个处理器;

非瞬时性计算机可读存储介质,与处理器耦合并存储由处理器执行的程序,其中,当处理器执行程序时,使解码器执行根据示例1至13中任一项所述的方法。

下文对上述实施例中所示的编码方法和解码方法的应用以及使用这些方法的系统进行说明。

图18为用于实现内容分发业务的内容提供系统3100的框图。该内容提供系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。捕获设备3102与终端设备3106通过通信链路3104进行通信。该通信链路可以包括上述通信信道13。通信链路3104包括但不限于WIFI、以太网、电缆、无线(3G/4G/5G)、USB或者其任何组合等。

捕获设备3102生成数据,并且可以通过如上述实施例所示的编码方法对数据进行编码。或者,捕获设备3102可以将数据分发给流服务器(图中未示出),服务器对数据进行编码并将编码数据发送给终端设备3106。捕获设备3102包括但不限于摄像机、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、PDA、车载设备,或它们的任何组合等。例如,捕获设备3102可以包括如以上所描述的源设备12。当所述数据包括视频时,所述捕获设备3102中的视频编码器20实际上可以执行视频编码处理。当所述数据包括音频(即声音)时,所述捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。对于一些实际场景,捕获设备3102通过将编码视频和音频数据复用在一起来进行分发。对于其它实用场景,例如在视频会议系统中,不复用编码音频数据和编码视频数据。捕获设备3102将编码音频数据和编码视频数据分别分发给终端设备3106。

在内容提供系统3100中,终端设备310接收并再现编码数据。终端设备3106可以是具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、机顶盒(set top box,STB)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,PDA)3122、车载设备3124或其任何组合,或者能够解码上述编码数据的设备。例如,终端设备3106可以包括如以上所描述的目的地设备14。当编码数据包括视频时,终端设备中包括的视频解码器30优先进行视频解码。当编码数据包括音频时,终端设备中包括的音频解码器优先进行音频解码处理。

对于带有显示器的终端设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、个人数字助理(personal digital assistant,PDA)3122或车载设备3124,终端设备可以将解码数据馈送到该终端设备的显示器。对于没有显示器的终端设备(例如STB 3116、视频会议系统3118或视频监控系统3120),连接外部显示器3126以接收并显示解码数据。

该系统中的每个设备在进行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。

图19为终端设备3106的示例性结构图。在终端设备3106从捕获设备3102接收流之后,协议处理单元(protocol proceeding unit)3202分析流的传输协议。协议包括但不限于实时流协议(real time streaming protocol,RTSP)、超文本传输协议(hyper texttransfer protocol,HTTP)、HTTP直播协议(HTTP live streaming protocol,HLS)、MPEG-DASH、实时传输协议(real-time transport protocol,RTP)、实时消息协议(real timemessaging protocol,RTMP)或其任何组合等。

协议处理单元3202对流进行处理后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分为编码音频数据和编码视频数据。如以上所描述,对于一些实际场景,例如在视频会议系统中,不复用编码音频数据和编码视频数据。在这种情况下,将编码数据发送到视频解码器3206和音频解码器3208,无需经过解复用单元3204。

通过解复用处理,生成视频基本流(elementary stream,ES)、音频ES和可选的字幕。视频解码器3206包括如上述实施例中所说明的视频解码器30,通过如上述实施例中所示的解码方法对视频ES进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208,解码音频ES以生成音频帧,并将该数据馈送到同步单元3212。或者,所述视频帧在发送至同步单元3212之前可以存储在缓冲区中(图19中未示出)。类似地,所述音频帧在发送至同步单元3212之前可以存储在缓冲区中(图19中未示出)。

同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用与经译码的音频和可视数据的呈现相关的时间戳和与数据码流的分发相关的时间戳,将信息译码到语法中。

如果流中包括字幕,则字幕解码器3210解码字幕,并使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。

本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。

数学运算符

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

算术运算符

赋值运算符定义如下:

+ 加法

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

* 乘法,包括矩阵乘法。

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

x%y 取模运算,x除以y得到的余数,仅针对x>=0且y>0的整数x和y定义。

逻辑运算符

逻辑运算符定义如下:

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

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

! 布尔逻辑“非”

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

关系运算符

关系运算符定义如下:

> 大于

>= 大于或等于

< 小于

<= 小于或等于

== 等于

!= 不等于

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

按位运算符

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

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

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

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

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

x<

赋值运算符

赋值运算符定义如下:

= 赋值运算符

++ 增,即,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..z x取从y到z的整数值(包括y和z),其中,x、y和z是整数,并且z大于y。

数学函数

数学函数定义如下:

Asin(x) 三角反正弦函数,对参数x进行运算,x在–1.0至1.0的范围内(包括0和31),输出值在–π÷2至π÷2的范围内(包括0和31),单位为弧度。

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

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

Clip1

Clip1

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

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

Ln(x)返回自然对数中x的值(以e为底的对数,其中,e为自然对数中的底数常数2.718281828……)。

Log2(x)以2为底x的对数。

Log10(x)以10为底x的对数。

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

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

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

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

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

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

-条件0a

-条件0b

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

-条件1a

-条件1b

-……

-否则,语句n

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

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

如果条件0,则语句0

如果条件1,则语句1。

尽管本发明实施例主要根据视频译码进行了描述,但需要说明的是,译码系统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。

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

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

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

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

相关技术
  • 几何分割模式的样本距离计算
  • 用于几何分割模式的色度样本权重推导
技术分类

06120113250071