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

编码器、解码器及色度帧内模式推导的对应方法

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


编码器、解码器及色度帧内模式推导的对应方法

技术领域

本申请(本发明)实施例大体上涉及图像处理领域,更具体地,涉及色度帧内预测模式推导。

背景技术

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

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

发明内容

本申请实施例提供根据独立权利要求请求保护的用于编码和解码的装置和方法。

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

本发明的第一方面提供一种解码设备实现的译码方法,所述方法包括:获取视频码流;对所述视频码流进行解码,以获得当前译码块的色度格式指示信息值;获取所述当前译码块的色度分量的初始帧内预测模式值;当所述当前译码块的所述色度格式指示信息值等于预定义的值时,根据预定义的映射关系和所述初始帧内预测模式值获得所述当前译码块的色度分量的映射的帧内预测模式值;根据所述映射的帧内预测模式值获得所述当前译码块的色度分量的预测样本值。

根据本发明实施例,对于色度子采样格式,可以更准确地推导帧内预测模式之间的映射关系。这提高了译码效率。

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

S1301:获取视频码流。

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

在一个实施例中,码流是比特序列,其形式为网络抽象层(network abstractionlayer,NAL)单元流或字节流,所述比特序列构成访问单元(access unit,AU)的序列的表示,所述访问单元的序列构成一个或多个编码视频序列(coded video sequence,CVS)。

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

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

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

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

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

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

此子句指定通过码流给出的源图像与解码图像之间的关系。

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

所述源图像和解码图像分别由一个或多个样本阵列构成:

–仅亮度(Y)(单色)。

–亮度和两个色度(YCbCr或YCgCo)。

–绿色、蓝色和红色(GBR,也称为RGB)。

–表示其它未指定的单色或三刺激彩色样本的阵列(例如,YZX,也称为XYZ)。

与这些阵列相关联的变量和术语称为亮度(或L或Y)和色度,其中,两个色度阵列称为Cb和Cr;与实际使用的颜色表示方法无关。实际使用的颜色表示方法可以通过ITU-TH.SEI|ISO/IEC 23002-7中指定的VUI参数中指定的语法来表示。

变量SubWidthC和SubHeightC在表1中指定,具体取决于色度格式采样结构,色度格式采样结构通过sps_chroma_format_idc和sps_separate_colour_plane_flag表示。

表1-从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),三个颜色平面分别作为单色采样图像处理。

S1302:获取当前译码块的色度分量的初始帧内预测模式值。

初始帧内预测模式值可以通过解析视频码流中译码的索引值获得,或者初始帧内预测模式值可以根据从视频码流中解析的语法值确定。

在一种实现方式中,当前译码块的色度分量的初始帧内预测模式值根据当前译码块的亮度分量的帧内预测模式获得。

在一个具体示例中,通过以下过程获取当前译码块的色度分量的初始帧内预测模式值。

该过程的输入为:

–亮度位置(xCb,yCb),表示当前色度译码块的左上样本相对于当前图像的左上亮度样本,

–变量cbWidth,表示亮度样本中当前译码块的宽度,

–变量cbHeight,表示亮度样本中当前译码块的高度,

–变量treeType,表示使用单树还是双树。

在该过程中,推导色度帧内预测模式IntraPredModeC[xCb][yCb]和MIP色度直接模式标志MipChromaDirectFlag[xCb][yCb]。

如果treeType等于SINGLE_TREE,sps_chroma_format_idc等于3,intra_chroma_pred_mode等于4,intra_mip_flag[xCb][yCb]等于1,则以下情况适用:

–MIP色度直接模式标志MipChromaDirectFlag[xCb][yCb]设置为等于1。

–色度帧内预测模式IntraPredModeC[xCb][yCb]设置为等于IntraPredModeY[xCb][yCb]。

否则,以下情况适用:

–MIP色度直接模式标志MipChromaDirectFlag[xCb][yCb]设置为等于0。

–对应的亮度帧内预测模式lumaIntraPredMode的推导过程如下:

–如果intra_mip_flag[xCb+cbWidth/2][yCb+cbHeight/2]等于1,则lumaIntraPredMode设置为等于INTRA_PLANAR。

–否则,如果CuPredMode[0][xCb+cbWidth/2][yCb+cbHeight/2]等于MODE_IBC或MODE_PLT,则lumaIntraPredMode设置为等于INTRA_DC。

–否则,lumaIntraPredMode设置为等于IntraPredModeY[xCb+cbWidth/2][yCb+cbHeight/2]。

–色度帧内预测模式IntraPredModeC[xCb][yCb]的推导过程如下:

–如果cu_act_enabled_flag[xCb][yCb]等于1,则色度帧内预测模式IntraPredModeC[xCb][yCb]设置为等于lumaIntraPredMode。

–否则,如果BdpcmFlag[xCb][yCb][1]等于1,则IntraPredModeC[xCb][yCb]等于BdpcmDir[xCb][yCb][1]?INTRA_ANGULAR50:INTRA_ANGULAR18。

–否则(cu_act_enabled_flag[xCb][yCb]等于0且BdpcmFlag[xCb][yCb][1]等于0),色度帧内预测模式IntraPredModeC[xCb][yCb]使用表20中指定的cclm_mode_flag、cclm_mode_idx、intra_chroma_pred_mode和lumaIntraPredMode推导。

表20-取决于cclm_mode_flag、cclm_mode_idx、intra_chroma_pred_mode和lumaIntraPredMode的IntraPredModeC[xCb][yCb]的规范

S1303:对视频码流进行解码,以获得当前译码块的色度格式指示信息值。

在一个实施例中,色度格式指示信息是表1中所示的语法sps_chroma_format_idc。sps_chroma_format_idc表示相对于亮度采样的色度采样。

在一个示例中,语法syntax sps_chroma_format_idc从序列参数集解码,例如

可以理解的是,步骤S1302和步骤S1303没有先后顺序,可以先执行步骤S1302,再执行步骤S1303,也可以先执行步骤S1303,再执行步骤S1302,也可以并行执行。

S1304:当所述当前译码块的所述色度格式指示信息值等于预定义的值时,根据预定义的映射关系和所述初始帧内预测模式值获得所述当前译码块的色度分量的映射的帧内预测模式值。

在一个实施例中,所述预定义值为2或1。所述预定义值为2表示所述色度格式为4:2:2,所述预定义值为1表示所述色度格式为4:2:0。

在一个示例中,当sps_chroma_format_idc等于2时,使用色度帧内预测模式X推导色度帧内预测模式Y,然后,将色度帧内预测模式X设置为等于色度帧内预测模式Y。

模式X和模式Y的映射关系可以根据表2、表3、表4、表5、表6、表8、表10、表12、表14、表15或表18来表示。

在一个示例中,当sps_chroma_format_idc等于2时,如表21中指定的,使用表20中的色度帧内预测模式X推导色度帧内预测模式Y,然后,将色度帧内预测模式X设置为等于色度帧内预测模式Y。

表21-sps_chroma_format_idc等于2时色度帧内预测模式X到模式Y的4:2:2映射过程规范

S1305:根据映射的帧内预测模式值获得当前译码块的色度分量的预测样本值。

映射的帧内预测模式值用作帧内预测模式值,以获得预测样本值。该过程的细节可以参考ITU H.264,或者ITU H.265或其它文档。

如图14所示,本发明的第二方面提供一种解码设备1400,该解码设备包括:

接收模块1401,用于获取视频码流;

参数处理模块1402,用于对视频码流进行解码,以获得当前译码块的色度分量的初始帧内预测模式值;

参数处理模块1402,还用于对视频码流进行解码,以获得当前译码块的色度格式指示信息值;

映射模块1403,用于当当前译码块的色度格式指示信息值等于预定义的值时,根据预定义的映射关系和初始帧内预测模式值获得当前译码块的色度分量的映射的帧内预测模式值;

预测模块1404,用于根据映射的帧内预测模式值获得当前译码块的色度分量的预测样本值。

本发明第一方面提供的方法可以由本发明第二方面提供的装置执行。上述方法的进一步特征和实现方式与根据本发明的第二方面的装置的特征和实现方式相对应。

在一个实施例中,本发明的第三方面提供一种编码设备实现的译码方法,包括:获取当前译码块的初始帧内预测模式值;确定所述当前译码块的亮度分量的宽度与所述当前译码块的色度分量的宽度的比值是否等于阈值;当所述当前译码块的亮度分量的宽度与所述当前译码块的色度分量的宽度的比值等于所述阈值时,根据预定义的映射关系和所述初始帧内预测模式值获得所述当前译码块的色度分量的映射的帧内预测模式值;根据所述映射的帧内预测模式值对所述当前译码块进行译码。

在一种实现方式中,该方法还包括:

将所述当前译码块的色度格式指示信息值编码到码流中,其中,所述色度格式指示信息值表示所述当前译码块的亮度分量的宽度与所述当前译码块的色度分量的宽度的比值。

在一种实现方式中,下表用于示出预定义的映射关系,

其中,模式X表示所述初始帧内预测模式值,模式Y表示所述映射的帧内预测模式值。

在一种实现方式中,下表用于示出预定义的映射关系,

其中,模式X表示所述初始帧内预测模式值,模式Y表示所述映射的帧内预测模式值。

根据本发明第三方面的方法(编码侧)的进一步实施例可以对应于根据本发明第二方面的方法(解码侧)执行。

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

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

在一个实施例中,解码器或编码器包括:

一个或多个处理器;

非瞬时性计算机可读存储介质,与处理器耦合并存储由处理器执行的程序,其中,当程序由处理器执行时,使解码器或编码器执行根据上述实施例中任一个的方法,并且公开了实现方式。

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

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

附图说明

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

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

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

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

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

图4为编码装置或解码装置的一个示例的框图。

图5为编码装置或解码装置的另一个示例的框图。

图6为色度子采样格式4:4:4的一个示例。

图7为色度子采样格式4:2:0的一个示例。

图8为色度子采样格式4:2:2的一个示例。

图9为预测模式的示例的框图。

图10为原始模式对应的模式和使用4:2:2色度子采样格式在水平方向进行色度子采样的情况的示例。

图11为实现内容分发服务的内容供应系统3100的示例性结构的框图。

图12为终端设备的一个示例的结构的框图。

图13为本发明的方法实施例的流程图。

图14为本发明的装置实施例的框图。

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

具体实施方式

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

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

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

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

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

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

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

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

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

图像源16可以包括或可以是:任何类型的图像捕获设备,例如用于捕获真实世界图像的摄像机;和/或任何类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器;或用于获取和/或提供真实世界图像、计算机动画图像(例如屏幕内容、虚拟现实(virtual reality,VR)图像),和/或其任何组合(例如增强现实(augmented reality,AR)图像)的任何类型的设备。图像源可以为存储上述图像中任何图像的任何类型的存储器或存储装置。

为了与预处理单元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)、颜色校正、修剪或重新采样或任何其它处理,以例如准备解码图像数据31,用于通过显示设备34等进行显示。

目的地设备14的显示设备34用于接收后处理图像数据33,以例如向用户或观看者显示图像。显示设备34可以是或包括用于呈现重建图像的任何类型的显示器,例如集成的或外部的显示器或监控器。例如,显示器可以包括液晶显示器(liquid crystal display,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微LED显示器,硅上液晶(liquid crystal on silicon,LCOS)、数字光处理器(digital light processor,DLP)或任何类型的其它显示器。

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

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

编码器20(例如视频编码器20)或解码器30(例如视频解码器30)或两者都可通过如图1B所示的处理电路如一个或多个微处理器、数字信号处理器(digital signalprocessor,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所示。

源设备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表示的两个色度分量。亮度分量Y表示亮度或灰度强度(例如在灰度级图像中),而两个色度分量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的情况下,亮度阵列)、三个样本阵列(例如,在彩色图像17的情况下,一个亮度阵列和两个色度阵列)或任何其它数量和/或类型的阵列,这取决于应用的颜色格式。块203在水平和垂直方向(或轴线)上的样本的数量定义了块203的大小。相应地,某图像块可以为M×N(M列×N行)个样本阵列,或M×N个变换系数阵列等。

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

在图2所示的视频编码器20的实施例中,视频编码器20还可以用于采用条带(slice)(也称为视频条带)对图像进行分割和/或编码,其中,图像可以采用一个或多个条带(通常是不重叠的条带)进行分割或编码,每个条带可以包括一个或多个块(如CTU)。

在图2所示的视频编码器20的实施例中,视频编码器20还可以用于使用分块(tile)组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或编码,其中,可以使用一个或多个分块组(通常是不重叠的)对图像进行编码或可以将图像分割为一个或多个分块组,并且每个分块组可以包括一个或多个块(例如CTU)或一个或多个分块,其中,每个分块可以是矩形并且可以包括一个或多个块(例如CTU),例如全部或部分块。

残差计算

残差计算单元204可以用于根据图像块203和预测块265(后面会详细描述预测块265)计算残差块205(也称为残差205),例如,逐样本(逐像素)从图像块203的样本值中减去预测块265的样本值,以获得样本域中的残差块205。

变换

变换处理单元206可以用于对残差块205的样本值进行变换,例如离散余弦变换(discrete cosine transform,DCT)或离散正弦变换(discrete sine transform,DST),以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。

变换处理单元206可以用于应用DCT/DST的整数近似,例如针对H.265/HEVC指定的变换。与正交DCT变换相比,此类整数近似通常通过某个因子进行缩放。使用其它缩放因子作为变换过程的一部分,以维持经过前向变换和反向变换处理的残差块的范数。通常根据某些限制来选择缩放因子,例如缩放因子为移位运算的2的幂次方、变换系数的位深、准确度和实现成本之间的权衡等。例如,通过逆变换处理单元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),实施例中可以使用量化参数来确定量化步长大小。通常,可以通过包括除法的方程的定点近似、根据量化参数计算量化步长大小。可以将其它缩放因子引入量化和解量化,用于恢复残差块的范数,因为量化步长大小和量化参数的方程的定点近似中使用缩放,所以可以修改该范数。在一种示例性实现方式中,可以合并逆变换和解量化中的缩放。或者,可以使用自定义量化表,并且例如在码流中将该自定义量化表从编码器发送到解码器。量化为有损操作,损耗随量化步长大小的增加而增加。

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

反量化

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

逆变换

逆变换处理单元212用于执行变换处理单元206所执行的变换的逆变换,例如,逆离散余弦变换(discrete cosine transform,DCT)或逆离散正弦变换(discrete sinetransform,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支持或可用的模式中选择)。分割和预测模式提供最佳匹配,即最小残差(最小残差更有利于压缩,以便传输或存储),或提供最小指示(signaling)开销(最小的指示开销更有利于压缩,以便传输或存储),或者同时考虑以上两者或在以上两者中取得平衡。模式选择单元260可用于根据率失真优化(rate distortion optimization,RDO)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时间。

换句话说,分割单元262可以用于例如,通过迭代地使用四叉树分割(quad-tree-partitioning,QT)、二叉树分割(binary partitioning,BT)或三叉树分割(triple-tree-partitioning,TT)或其任何组合,将块203分割为较小的块部分或子块(它们再次形成块),以及用于例如对块部分或子块中的每一个执行预测,其中,模式选择包括分割的块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)、译码块(coding block,CB)、变换块(transform block,TB)或预测块(prediction block,PB)。

例如,译码树单元(coding tree unit,CTU)可以是或包括:亮度样本的CTB、具有三个样本阵列的图像的色度样本的两个对应的CTB、单色图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的CTB。对应地,译码树块(codingtree block,CTB)可以是N×N的样本块,其中,N可以设为某个值以将分量分割为CTB,这是一种分割。译码单元(coding unit,CU)可以是或包括:亮度样本的译码块、具有三个样本阵列的图像的色度样本的两个对应的译码块、单色图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的译码块。对应地,译码块(coding block,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 binarytree,QTBT)分割对译码块进行分割。在QTBT块结构中,CU可以具有正方形或矩形形状。例如,首先通过四叉树结构分割译码树单元(coding tree unit,CTU)。进一步通过二叉树或三叉树结构对四叉树叶节点进行分割。分割树叶节点称为译码单元(coding unit,CU),该段用于预测和变换处理,无需进一步分割。即,CU、PU和TU在QTBT译码块结构中具有相同的块大小。同时,三叉树分割等多重分割可以与QTBT块结构结合使用。

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

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

帧内预测

该组帧内预测模式可以包括35种不同的帧内预测模式,例如DC(或均值)模式和平面模式等非定向模式,或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的运动矢量时,运动补偿单元可以定位运动矢量在一个参考图像列表中指向的预测块。

运动补偿单元还可以生成与块和视频条带相关的语法元素,该语法元素由视频解码器30用来对视频条带的图像块进行解码。除了或作为条带和相应语法元素的替代,可以生成或使用分块组和/或分块以及相应语法元素。

熵编码

例如,熵译码单元270用于将熵编码算法或方案(例如,可变长度译码(variablelength coding,VLC)方案、上下文自适应VLC方案(context adaptive VLC,CALVC)、算术译码方案、二值化算法、上下文自适应二进制算术译码(context adaptive binaryarithmetic coding,CABAC)、基于语法的上下文自适应二进制算术译码(syntax-basedcontext-adaptive binary arithmetic coding,SBAC)、概率区间分割熵(probabilityinterval partitioning 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,DPB)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以是或包括运动补偿单元。在一些示例中,视频解码器30可以执行与图2中关于视频编码器100描述的编码通道大体上互逆的解码通道。

如关于编码器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,以获得样本域中的重建块315,例如,通过将重建残差块313的样本值添加到预测块365的样本值。

滤波

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

解码图像缓冲区

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

解码器30用于例如通过输出端312输出解码图像311,以呈现给用户或由用户观看。

预测

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

当视频条带译码为帧内译码(I)条带时,模式应用单元360的帧内预测单元354用于:根据所指示的帧内预测模式和来自当前图像的之前解码的块的数据来为当前视频条带的图像块生成预测块365。当视频图像译码为帧间译码(即,B或P)条带时,模式应用单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收到的运动矢量和其它语法元素生成当前视频条带的视频块的预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以根据DPB 330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用I、P或B分块组和/或分块对视频进行译码。

模式应用单元360用于通过解析运动矢量或相关信息和其它语法元素确定当前视频条带的视频块的预测信息,并使用预测信息来生成正在解码的当前视频块的预测块。例如,模式应用单元360使用接收到的一些语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,B条带,P条带或GPB条带)、条带的参考图像列表中的一个或多个的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用I、P或B分块组和/或分块对视频进行译码。

在图3所示的视频解码器30的实施例中,视频解码器30可以用于采用条带(slice)(也称为视频条带)对图像进行分割和/或解码,其中,图像可以采用一个或多个条带(通常是不重叠的条带)进行分割或解码,每个条带可以包括一个或多个块(如CTU)。

在图3所示的视频解码器30的实施例中,视频解码器30可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码,其中,可以使用一个或多个分块组(通常是不重叠的)对图像进行解码或可以将图像分割为一个或多个分块组,并且每个分块组可以包括一个或多个块(例如CTU)或一个或多个分块,其中,每个分块可以是矩形并且可以包括一个或多个块(例如CTU),例如全部或部分块。

视频解码器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。例如,对推导的运动矢量(例如一个8×8块中的四个4×4子块的MV)的值进行限制,使得四个4×4子块MV的整数部分之间的最大差值不超过N个像素,例如不超过1个像素。这里提供了两种根据bitDepth限制运动矢量的方法。

方法一:通过流操作移除溢出MSB(most significant bit,最高有效位)。

ux=(mvx+2

mvx=(ux>=2

uy=(mvy+2

mvy=(uy>=2

其中,mvx为图像块或子块的运动矢量的水平分量,mvy为图像块或子块的运动矢量的垂直分量,ux和uy表示中间值;

例如,如果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之和期间,可以应用这些运算。

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

vx=Clip3(–2

vy=Clip3(–2

其中,vx为图像块或子块的运动矢量的水平分量,vy为图像块或子块的运动矢量的垂直分量;x、y和z分别对应MV限幅过程的三个输入值,函数Clip3的定义如下:

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

视频译码设备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)组件,用作光信号或电信号的出口或入口。

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

存储器460可以包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择此类程序用于执行时存储程序,以及存储在程序执行期间读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternary content-addressable memory,TCAM)和/或静态随机存取存储器(staticrandom-access memory,SRAM)。

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

装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。尽管所公开的实现方式可以通过单个处理器(例如处理器502)实施,但是可以通过一个以上的处理器来提高速度和效率。

装置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。

色度分量子采样

在视频译码中,输入视频通常有1个亮度分量(Y),2个色度分量(Cb/Cr)。在实践中,通常对色度分量进行子采样以减少视频的存储和转换带宽。

有几种色度子采样格式。在一些示例中,也存在一种不需要对视频进行色度子采样的色度子采样格式,例如色度子采样格式4:4:4。在色度子采样格式4:4:4中,三个分量Y、U、V在一帧中均匀分布,如图6中的示例所示。在一个示例中,假设视频中的亮度分量的大小为1,则视频的总大小为3。

实际上,一种色度子采样格式4:2:0被广泛使用,其中,色度分量在水平和垂直方向上被子采样一半,对应于亮度分量,如图7中的示例所示,Cb或Cr的大小是亮度分量的大小的四分之一。因此,在4:2:0格式中,视频的总大小为1(Y)+0.25(Cb)+0.25(Cr)=亮度分量的大小的1.5倍。与4:4:4色度子采样格式相比,4:2:0格式节省了存储或转换视频流所需大小的一半。

在另一个示例中,公开了色度子采样格式4:2:2,如图8中的示例所示,对色度分量进行水平子采样。在这种情况下,Cb或Cr的大小为亮度分量的一半。因此,该格式视频的总大小为1(Y)+0.5(Cb)+0.5(Cr)=亮度分量大小的2倍。与4:4:4色度子采样格式相比,4:2:2格式节省了存储或转换所需大小的三分之一。

在这些示例中,亮度分量的大小在视频中假设为1。

在ITU-T JVET O2001中示出的一个示例中,(链接为http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/15_Gothenburg/wg11/JVET-O2001-v14.zip),与这些阵列相关联的变量和术语称为亮度(或L或Y)和色度,其中,两个色度阵列称为Cb和Cr。

变量SubWidthC和SubHeightC在下表1中指定,具体取决于色度格式采样结构,色度格式采样结构通过chroma_format_idc和separate_colour_plane_flag表示。chroma_format_idc、SubWidthC和SubHeightC的其它值将来可能由ITU-T|ISO/IEC指定。

表1-从chroma_format_idc和separate_colour_plane_flag推导的SubWidthC和SubHeightC值

chroma_format_idc表示相对于亮度采样的色度采样(如表1和相关段落所示)。chroma_format_idc的值在0至3的范围内(包括端值)。

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

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

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

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

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

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

在视频序列中表示亮度阵列和色度阵列中的每个样本所需的比特数在8到16的范围内(包括端值),亮度阵列中使用的比特数可以与色度阵列中使用的比特数不同。

当chroma_format_idc的值等于1时,亮度和色度样本在图像中的标称垂直和水平相对位置如图7所示。可以在视频可用性信息中表示可选的色度样本相对位置。

当chroma_format_idc的值等于2时,色度样本与对应的亮度样本共址,图像中的标称位置如图8所示。

当chroma_format_idc的值等于3时,所有图像的所有阵列样本都共址,图像中的标称位置如图6所示。

角度帧内预测模式及其对应的方向解释

在图9所示的示例中,用带箭头(从2到66)的实线示出角度帧内预测模式。其中,模式18、模式50分别对应水平预测方向和垂直预测方向。相对于水平方向,模式2和模式34分别对应45°和–45°。相对于垂直方向,模式66和模式34分别对应45°和–45°。

在一些示例中,这些模式(例如,输入2、18、34、50、66)的角度由距离值隐式定义,如表2所示,模式作为输入,距离作为输出。

表2:具有输入帧内预测模式的映射的距离值

模式X的对应的度数的推导过程可以为

度数=arctan(output(x)/32)

在一个示例中,输入模式2将输出值32,并且模式2的对应的度数为45°。类似地,模式18、34、50、66将输出0、–32、0、32的值,对应的度数分别为0、–45°、0、45°。需要说明的是,模式18(水平预测)和50(垂直预测)都对应于度数0,模式34对应于相对于两个0度模式的重叠的–45°。

如图10所示,对于模式0至34,期望角度的邻边平行于水平方向,而期望角度的对边平行于垂直方向。与模式8对应的期望角度已在图10的左侧示出。对于模式34至66,期望角度的邻边平行于垂直方向,而期望角度的对边平行于水平方向。

在一些示例中,一些模式(例如模式3、4、6……26)没有32的倍数的输出。这些模式的对应的度数不均匀地分布在模式2、18、34、50、66之间的45度中。如图9所示,当模式的对应的角度更接近水平(模式18)和垂直(模式50)度数时,模式定义得更加密集。

在一些示例中,一些帧内预测模式(例如8、28、40和60……)将输出16的倍数的值(但不是32),该值对应的角的对边是邻边的一半(这些角的tan函数为0.5或–0.5)。

在一些示例中,有从–1到–14和从67到80的广角模式。这些模式不直接译码,而是在块宽高比不为1:1时映射。

映射规则定义为以下过程,其中,输入nW为块宽,nH为块高,predModeIntra为输入角度模式,该过程如下:

将变量whRatio设置为等于Abs(Log2(nW/nH))。

对于非方块(nW不等于nH),帧内预测模式predModeIntra的修改过程如下:

–如果以下条件都为真(这些条件用于确定是否应用广角映射过程),则predModeIntra设置为等于(predModeIntra+65)。

–nW大于nH,

–predModeIntra大于或等于2,

–predModeIntra小于(whRatio>1)?(8+2*whRatio):8。

–否则,如果以下条件(这些条件用于确定是否应用广角映射过程)都为真,则predModeIntra设置为(predModeIntra–67)。

–nH大于nW,

–predModeIntra小于或等于66,

–predModeIntra大于(whRatio>1)?(60–2*whRatio):60。

以宽高比为1:2的块(块宽为高度的一半)为例,当满足以下条件时,predModeIntra模式61到66将被映射到–6至–1:

–nH大于nW,

–predModeIntra小于或等于66,

–predModeIntra大于(whRatio>1)?(60–2*whRatio):60,其中,whRatio=Abs(Log2(nW/nH))=1。

色度分量水平或垂直子采样时的色度帧内预测模式推导

在一些示例中,对于4:2:2色度子采样格式,可以定义映射表以推导最终的色度帧内角度模式,其中,根据由于子采样而改变的比值调整原始色度角度预测模式。

在如图10所示的一个示例中,不进行色度子采样的块(左侧)具有相同的宽度和高度。模式2、8、18、34、50、66标记有它们的预测方向。当色度分量应用4:2:2色度子采样格式时(即色度分量仅水平子采样,色度样本每两列与亮度样本对齐,如图8所示),色度分量的宽度是亮度分量宽度的一半。

在这种情况下,由于色度子采样,色度块的宽高比为1:2。因此,根据水平子采样色度分量调整(映射)原始模式。在这种情况下,模式2映射为61,以调整水平方向的一半缩减。由于子采样块的宽高比为1:2,并且如果映射模式61满足广角映射过程的条件,则映射模式61将根据广角映射过程进一步映射到模式–6。

模式–6对应根据表2的输出值64。因此,色度子采样后最终角度的对应度数为

度数=arctan(64/32)

这个角度的正切值是模式2的正切值的两倍,这反映了模式2的邻边由于色度子采样而被减半。

模式8映射到模式2,这是因为半宽位置对应模式8(如图10左侧所示),并且模式8由于水平方向宽度,对应45°角。类似地,模式34和模式60分别映射到40和60。在这些示例中,度数为零的水平和垂直预测模式不映射到其它模式,或者水平/垂直模式仍然映射到相同的模式。

为了映射色度分量进行子采样(例如色度子采样格式4:2:2)时的帧内预测模式,映射表定义如下:

表3:不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的映射表

在本发明的一个实施例中,建议将模式2到7的映射替换为60到65,如表4所示。

表4:不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的映射表,输入模式范围为0至7

在上面的示例中,模式2将映射到61。在该实施例中,如图10所示,模式2将映射到模式60。

在本发明的一个实施例中,建议将模式2至7的映射替换为表5中定义的61至66,其与表3中的模式2至7相同。

表5:不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的映射表,输入模式范围为0至7

在本发明的一个实施例中,建议将模式8至18映射为以下模式,如表6所示。

表6:不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的映射表,输入模式范围为8至18

在本发明的一个实施例中,以下表7用于示出如何推导映射模式。

表7:使用不进行色度子采样的输入模式的映射表对色度4:2:2子采样格式的模式推导

左侧示出了2至18的输入模式,每种模式对应一个正切值和一个角度。在不进行子采样的情况下,这些模式的角度可以定义为

度数=arctan(output(x)/32)

对于模式2至34,缩放因子32可以认为是图10所示的宽度。对于这些模式,期望角度的邻边平行于水平方向,而期望角度的对边平行于垂直方向。与模式8对应的期望角度在图10的左半图中示出。相反,对于模式34至66(由于模式34对应的角度是相对于水平方向和垂直方向的重叠的角度(–45度)),期望角度的邻边与垂直方向平行而期望角度的对边平行于水平方向。

由于色度子采样,对于模式2至34,当邻边(与宽度平行)减少一半时,子采样的正切值增加一倍;对于模式34至66,因为对边减少一半,所以子采样的正切值减少一半。

在一个示例中,表7的右侧列出了每种模式的双倍的正切值。但是,角度与正切值不成线性正比。因此,这些双倍的正切值需要转换回角度值。使用色度子采样右侧的转换角度值,表7左侧具有最接近的角度的模式是输出模式。

总之,为了找到对应的映射模式,首先用输入模式X使用如下步骤生成参考表:

·根据表2,获得输出值。

·或者或另外,将该模式的正切值计算为output(X)/32。

·或者或另外,使用推导的正切值计算角度:例如arctan(output(x)/32)。

·或者或另外,使用上述三个步骤使用输入模式X的范围生成参考表,X属于2..18,如表7的左侧所示,包括正切值列、角度值列和输入模式列。

为了推导具有输入模式X的映射模式,执行以下步骤:

·或者或另外,将X模式的正切值加倍为2*output(X)/32。

·或者或另外,使用双倍正切值计算色度子采样格式4:2:2中的角度:例如arctan(2*output(x)/32)。

·或者或另外,根据在色度子采样格式4:2:2中计算的角度值,在参考表中找到最接近的角度(例如表7中不进行色度子采样的角度列表)。

·或者或另外,根据参考表中的最接近的角度,选取对应的输出模式。

为了简单起见,上述过程称为推导输出模式的过程。

在一个示例中,输入模式10在生成参考表之后按如下方式推导其输出模式:

·将10模式的正切值加倍为2*12/32=0.75

·使用双倍的正切值计算色度子采样格式4:2:2的角度:例如arctan(0.75)=36.8699°

·根据计算的角度值36.8699°,在参考表中找到最接近的角度35.70669°

·根据参考表中的最接近的角度35.70669°,选取对对应的输出模式5。

因此,将输入模式10映射到模式5。

在本发明的一个实施例中,建议将模式19至28映射为以下模式,如表8所示。

表8:不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的映射表,输入模式范围为19至28

在本发明的一个实施例中,以下表9用于示出如何推导映射模式。

表9:使用不进行色度子采样的输入模式的映射表对色度4:2:2子采样格式的模式推导

如在前一实施例中定义的,表9可以类似地使用推导输出模式的过程推导。在该示例中,当生成参考表(表9的左侧)时,使用19至34的输入模式。

在本发明的一个实施例中,建议将模式29至34映射为以下模式,如表10所示。

表10:不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的映射表,输入模式范围为29至34

在本发明的一个实施例中,以下表11用于示出如何推导映射模式。

表11:使用不进行色度子采样的输入模式的映射表对色度4:2:2子采样格式的模式推导

在一个示例中,除了以下方面之外,表11可以使用推导如在前一实施例中定义的输出模式的过程推导:

·生成参考表时,使用29至40的输入模式。

·对于模式29至34,需要多一步来推导输出模式。2*tangent((x)/32)的值对应的角度小于–45°(或角度的绝对值大于45°)。这些角度(小于–45°)不能直接使用,因为可以推导的最小角度为–45°。在这种情况下,使用它们的补角,并且映射的角度与当前块的上边界(而不是当前块的左边界)相反。因此,将映射的角度的邻边和对边进行交换,因此利用其补角1/2*tangent(output(x)/32)的正切值来推导正确的角度,用于查找参考表中的最接近的角度。

在本发明的一个实施例中,建议将模式35至50映射为以下模式,如表12所示。

表12:不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的映射表,输入模式范围为35至50

在本发明的一个实施例中,以下表13用于示出如何推导映射模式。

表13:使用不进行色度子采样的输入模式的映射表对色度4:2:2子采样格式的模式推导

表13可以使用推导该输出模式的过程推导,但更改以下方面:

·生成参考表时,使用35至50的输入模式。

·模式35至50对应于其对边为当前块的上方边界的角度。在色度子采样之后,对应的正切值被减半(而不是在表7中加倍),因为用4:2:2色度子采样格式将对边减半。

在一个示例中,如表2所示,模式36也可以通过考虑以下映射表映射到42。

从模式36的角度来看,对应角度的对边与水平方向平行,对应角度的邻边与垂直方向平行。由于色度子采样,水平方向上减少了一半,即对应的角度的对边减少了一半。这相当于其输出值减少了一半,意味着其输出值现在为–26/2=–13。因为–13有两个等效的最接近的输出值–12和–14,所以它可以映射到模式41或42。

出于同样的原因,模式39、41、43、47、49可以分别映射到43或44、44或45、45或46、48或49、49或50。表14总结了可能的映射模式及其推导过程。

表14:从不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的可选映射表,输入模式范围为35至50

在本发明的一个实施例中,建议将模式51至66映射为以下模式,如表15所示。

表15:不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的映射表,输入模式范围为51至66

在本发明的一个实施例中,以下表16用于示出如何推导映射模式。

表16:使用不进行色度子采样的输入模式的映射表对色度4:2:2子采样格式的模式推导

与表13类似,表16可以使用推导该输出模式的过程推导,但更改以下方面:

·生成参考表时,使用50至66的输入模式。

·模式51至66对应于其对边为当前块的上方边界的角度。在色度子采样之后,对应的正切值被减半(而不是在表7中加倍),因为用4:2:2色度子采样格式将对边减半。

与表14类似,模式51至66中的部分模式可以有替代的映射模式,如表17所示。

表17:从不进行色度子采样的帧内模式(模式X)到色度子采样格式为4:2:2的模式(模式Y)的可选映射表,输入模式范围为50至66。

在上述实施例中,许多实施例被示出为色度子采样模式4:2:2的映射模式,即,在水平方向上色度分量减少一半的子采样。需要说明的是,可以针对色度子采样格式提出类似的方法,其中,对色度分量进行垂直子采样。

在一些示例中,对于块方面不会改变的色度子采样格式,不需要执行帧内预测模式映射。例如,对于4:2:0色度子采样格式,由于色度分量在水平方向和垂直方向都进行子采样,因此块方面不会改变,因此不需要进行模式映射。

在一些示例中,上述实施例可以组合,只要一个输入模式X具有一个输出模式Y即可。例如,下表18是所提出的实施例的组合之一。

表18:所提出的实施例的组合的示例

在一些示例中,上述实施例(例如表2至表18)所公开的模式的一种或任何组合可以组合为模式映射关系。

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

获取视频码流;

对视频码流进行解码,以获得当前译码块的色度分量的初始帧内预测模式值;

确定当前译码块的亮度分量的宽度与当前译码块的色度分量的宽度的比值是否等于阈值(或者确定当前译码块的亮度分量的高度与当前译码块的色度分量的高度的比值是否等于阈值);

当确定比值等于阈值时,根据预定义的映射关系和初始帧内预测模式值获得当前译码块的色度分量的映射的帧内预测模式值;

根据映射的帧内预测模式值获得当前译码块的色度分量的预测样本值。

示例2:根据示例1的方法,其中,阈值为2或0.5。

示例3:根据示例1或2的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例4:根据示例1至3中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例5:根据示例1至4中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例6:根据示例1至5中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例7:根据示例1至6中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例8:根据示例1至6中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例9:根据示例1至6中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例10:根据示例1至6、8和9中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例11:根据示例1至6、8和9中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例12:根据示例1至6和8至11中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例13:根据示例1至6和8至11中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例14:根据示例1至6和8至13中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例15:根据示例1至6和8至13中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例16:根据示例1至6和8至15中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例17:根据示例1至6和8至15中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例18:根据示例1至6和8至17中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例19:根据示例1至6和8至17中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例20:根据示例1至19中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例21:根据示例1至19中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例22:根据示例1至19中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例23:根据示例1至19和21至22中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例24:根据示例1至19和21至22中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例25:根据示例1至19和21至24中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例26:根据示例1至19和21至24中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例27:根据示例1至19和21至26中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例28:根据示例1至19和21至26中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例29:根据示例1至19和21至28中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例30:根据示例1至19和21至28中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例31:根据示例1至19和21至30中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例32:根据示例1至19和21至30中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例33:一种由解码设备实现的译码方法,包括:

获取视频码流;

对视频码流进行解码,以获得当前译码块的色度分量的初始帧内预测模式值;

对视频码流进行解码,以获得当前译码块的色度格式指示信息值;

当当前译码块的色度格式指示信息值等于预定义的值时,根据预定义的映射关系和初始帧内预测模式值获得当前译码块的色度分量的映射的帧内预测模式值;

根据映射的帧内预测模式值获得当前译码块的色度分量的预测样本值。

示例34:根据示例33的方法,其中,预定义值为2或1。

示例35:根据示例31或32的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例36:根据示例33至35中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例37:根据示例33至36中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例38:根据示例33至37中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例39:根据示例33至38中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例40:根据示例33至38中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例41:根据示例33至38中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例42:根据示例33至38、40和41中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例43:根据示例33至38、40和41中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例44:根据示例33至38和40至43中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例45:根据示例33至38和40至43中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例46:根据示例33至38和40至45中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例47:根据示例33至38和40至45中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例48:根据示例33至38和40至47中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例49:根据示例33至38和40至47中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例50:根据示例33至38和40至49中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例51:根据示例33至38和40至49中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例52:根据示例33至51中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例53:根据示例33至51中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例54:根据示例33至51中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例55:根据示例33至51和53至54中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例56:根据示例33至51和53至54中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例57:根据示例33至51和53至56中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例58:根据示例33至51和53至56中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例59:根据示例33至51和53至58中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例60:根据示例33至51和53至58中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例61:根据示例33至51和53至60中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例62:根据示例33至51和53至60中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例63:根据示例33至51和53至62中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

示例64:根据示例33至51和53至62中任一项的方法,其中,下表用于示出预定义的映射关系,

其中,模式X表示初始帧内预测模式值,模式Y表示映射的帧内预测模式值。

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

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

示例67:一种解码器,包括:

一个或多个处理器;

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

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

图11为用于实现内容分发服务的内容供应系统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以接收并显示解码数据。

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

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

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

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

同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用关于译码音频和视频数据的表示的时间戳和关于数据流本身的传递的时间戳在语法中对信息进行译码。

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

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

数学运算符

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

算术运算符

以下算术运算符定义如下:

+ 加法

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

* 乘法,包括矩阵乘法。

x

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

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

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

逻辑运算符

以下逻辑运算符定义如下:

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

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

! 布尔逻辑“非”

x?y:z 如果x为真或不等于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的范围内(包括端值),输出值在–π÷2至π÷2的范围内(包括端值),单位为弧度。

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

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

相关技术
  • 编码器、解码器及色度帧内模式推导的对应方法
  • 编码器、解码器及对应的使用帧内模式译码进行帧内预测的方法
技术分类

06120113293441