一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于进行反量化的装置和方法与流程

2022-06-08 10:32:31 来源:中国专利 TAG:

用于进行反量化的装置和方法
1.本技术是分案申请,原申请的申请号是201980060158.9,原申请日是2019年09月21日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本发明涉及图像和/或视频解码技术领域,尤其涉及用于进行反量化的装置和方法。


背景技术:

3.数字视频通信和存储应用通过多种数字设备实现,例如数字照相机、蜂窝无线电话、膝上型计算机、广播系统、视频会议系统等。这些应用中最重要和最具挑战性的任务之一是视频压缩。视频压缩复杂,而且受压缩效率和计算复杂度两个相互矛盾的参数约束。itu-t h.264/avc或itu-t h.265/hevc等视频译码标准为这些参数之间提供了很好的权衡。因此,要求几乎所有的视频压缩应用都要支持视频译码标准。
4.已证明帧间预测、帧内预测和环路滤波器等视频压缩技术是有效的,因此应用于h.264/avc和h.265/hevc等各种视频译码标准中。
5.视频压缩的基本处理单元通常称为宏块,它是图像的一部分,其大小为16个像素
×
16个像素或64个像素
×
64个像素等。在最新的视频译码标准h.265/hevc中,译码树单元(coding tree unit,ctu)用作基本处理单元。ctu也称为最大译码单元(largest coding unit,lcu)。在h.265/hevc中,ctu由一个亮度ctb和两个色度ctb组成,对应地表示亮度和色度视频信号部分,例如y、cb、cr分量。ctu是按扫描顺序从图像左上顶点到右下顶点逐个处理的。可以通过四叉树分割在更小的译码单元(coding unit,cu)上对每个ctu进行进一步分割。每个cu可以进一步分割成更小的cu或预测单元(prediction unit,pu)。pu可以根据用于pu像素的处理类型进行帧内预测或帧间预测。在帧间预测的情况下,pu表示像素区域,该像素区域是使用为pu指定的运动矢量进行运动补偿而处理的。对于帧内预测,使用相邻块的相邻像素作为参考像素点来预测当前块。pu为该pu中包含的所有变换单元(transform unit,tu)指定了从帧内预测模式集合中选择的预测模式。tu可以具有不同的大小(例如,4个像素
×
4个像素、8个像素
×
8个像素素、16个像素
×
16个像素和32个像素
×
32个像素),并且可以通过不同的方式进行处理。对tu进行变换译码,即使用离散余弦变换或离散正弦变换(在hevc/h.265标准中用于帧内译码块)对预测误差进行变换并对其进行量化。因此,重建像素包含量化噪声(例如,单元之间的块效应、振铃伪影以及锐边等会变得很明显),dbf、sao和alf等环内滤波器会抑制这些量化噪声。使用复杂的预测译码(例如运动补偿和帧内预测)和分割技术(如hevc/h.265标准中cu和pu的qt以及tu的rqt,以及bms-1.0和vtm-1.0版本以上的vvc参考软件的多树(multiple tree,mt))可以大大减少pu的冗余。qt和mt分割机制的根本区别在于,后者还允许使用基于二叉树和三叉树的分割来分割矩形块,以及使用四叉树方法来分割正方形块。随着视频的创建和使用越来越普遍,视频流量成为通信网络的最大负担,需要提高数据存储能力。因此,与前代标准相比,大多数视频译码标准的目
标之一是在保证图像质量的情况下,降低译码复杂度。


技术实现要素:

6.本技术实施例提供根据独立权利要求的用于编码和解码的装置和方法。
7.上述和其它目的通过独立权利要求请求保护的主题实现。其它实现方式从从属权利要求、说明书和附图中是显而易见的。
8.在所附独立权利要求中概述了特定实施例,在从属权利要求中概述了其它实施例。
9.本发明公开了用于边界分割的装置和方法。装置和方法使用特定的边界分割处理来降低译码复杂度。边界分割处理也称为图像(picture或image)边界处理。
10.本发明的第一方面提供了一种用于对图像的当前块进行反量化的方法。图像包括亮度分量和色度分量,通过不同的分割树将亮度分量和色度分量分割成多个块(例如,译码单元(coding unit,cu))。该方法包括:解码器从(例如所接收到的)码流中获取一个或多个现有量化参数(quantization parameter,qp)值,其中一个或多个现有qp值与色度分量中的当前块(即正在处理的块)相关;根据一个或多个现有qp值确定色度分量中的当前块的qp值;通过所述确定的qp值对色度分量中的当前块进行反量化。
11.视频图像可以分为亮度(luminance或luma)分量和色度(chrominance或chroma)分量。亮度分量表示图像的亮度(图像的“黑白”或消色部分),色度分量表示图像的颜色信息。例如,在[y、cb和cr]的颜色空间中表示图像时,y分量为亮度分量,cb和cr分量为色度分量。
[0012]
通过不同的分割树将亮度分量和色度分量分割成多个块。换句话说,亮度分量和色度分量是分别分割的。已知存在不同的分割树,例如四叉树(quad-tree,qt)、二叉树(binary tree,bt)、三叉树(ternary tree,tt)以及上述分割树的任何组合,例如:四叉树加二叉树(quad-tree plus binary tree,qtbt)或四叉树加二叉树或三叉树(quad-tree plus binary tree or ternary tree,qt-bt/tt)等。
[0013]“与色度分量中的当前块相关的一个或多个现有qp值”这一表达对应与色度分量中的当前块相关的现有qp值。例如,现有qp值包括:亮度分量中的并置块的qp值;亮度分量中的并置块的一个或多个相邻块;色度分量中的当前块的一个或多个相邻块。
[0014]
码流可以是接收到的码流,本文是指解码器接收到的用于进行处理的码流。此处的接收涉及任何种类的接收,例如来自存储器或来自网络等。
[0015]
对于图像的色度分量中的块,色度分量中的块的量化参数可以由从所接收到的码流中获得的一个或多个现有量化参数(quantization parameter,qp)值确定。这提供了一种确定色度分量中的块的量化参数的有效方法,并减轻了解码器确定色度分量中的每个块的量化参数的处理负载。
[0016]
根据本发明的第一方面的一个示例,一个或多个现有qp值包括以下中的至少一个:亮度分量中的并置块的qp值;亮度分量中的并置块的一个或多个相邻块的现有qp值;色度分量中的当前块的一个或多个相邻块的现有qp值。
[0017]
这定义了现有qp值,并为确定图像的色度分量中的块的qp值提供了有效的方法。
[0018]
根据本发明的第一方面的另一示例,该方法还包括:根据亮度分量中的并置块的
qp值确定色度分量中的当前块的qp值。
[0019]
术语“亮度分量中的并置块(collocated block)”是与色度分量中的块并置的亮度分量中的块,此处的术语“并置(collocated)”是指图像的亮度分量与色度分量之间的映射关系。
[0020]
本示例提供了一种确定色度分量中块的qp值的简单方法。由于图像的亮度分量和色度分量之间存在关系,因此将亮度分量中的并置的块的qp值作为色度分量中的块的qp值是一种简单直接的方式。
[0021]
根据亮度分量中的并置块的qp值确定色度分量中的当前块的qp值的步骤包括根据前述示例中的任一个和第一方面进行以下操作:确定与当前色度块中特定位置的像素点并置的亮度块;取得所述确定的亮度块的qp值(例如qpy_basic);根据所述取得的亮度块的qp值(例如,qpy_basic)确定色度分量中的当前块的qp值。
[0022]
即使是在用不同的分割方式对亮度块和色度块进行分割的情况下,根据特定像素点确定并置块也能够使得实现方式可靠、明确和简单。
[0023]
在一个示例中,特定位置的像素点是当前色度块的右下四分之一部分的左上角像素点。
[0024]
这种特定位置大致对应于块的中心,因此提供了对并置块的qp的适当估计。
[0025]
或者或另外,根据以下公式或者根据以下公式推导出的新公式确定色度分量中的当前块的qp值:qp

cb=qpcb qpbdoffsetc delta_qp_c,qp

cr=qpcr qpbdoffsetc delta_qp_c,其中,qpcb和qpcr是通过qpicb参数和qpicr参数获得的,qpicb参数和qpicr参数是通过应用色度qp映射函数根据所述确定的亮度块的qp值获得的。具体地,在一些具体的示例中,qpicb和qpicr是色度映射函数(表)中的索引,根据qpy_basic计算。qpy_basic对应所述确定的亮度块的qp值。
[0026]
根据一种示例性实现方式,该方法通过两个基于图像参数集(picture parameter set,pps)的控制标志分别用于亮度和色度平面;如果第一控制标志为真,则该方法用于亮度qp推导;如果第一控制标志为假,则该方法不用于亮度qp推导;和/或,如果第二控制标志为真,则该方法用于色度qp推导;如果第二控制标志为假,则该方法不用于色度qp推导。
[0027]
这有助于为码流提供高效且可扩展的语法。
[0028]
根据本发明的第一方面的一个示例,该方法还包括:根据一个或多个现有qp值和以下至少一个,确定色度分量中当前块的qp值:在所接收到的码流中指示的色度增量qp值,或在所接收到的码流中指示的色度qp偏移值。
[0029]
根据本发明的第一方面的一个示例,该方法还包括:获取当前块的分割深度值;如果分割深度值小于阈值,则根据一个或多个现有qp值和在所接收到的码流中指示的色度增量qp值,确定色度分量中的当前块的qp值。
[0030]
这样不需要将这种方法用于深度值大于阈值的块,从而降低了计算的复杂度。
[0031]
根据本发明的第一方面的一个示例,根据预定义的数字或参数集中所指示的数字确定该阈值。
[0032]
例如,该数字可以由程序员预先定义,或者可以在参数集合中指示,例如,图像参数集合(picture parameter set,pps)或序列参数集合(sequence parameter set,sps)。
[0033]
根据本发明的第一方面的一个示例,通过不同的分割树将亮度分量和色度分量分
割成多个块(例如,译码单元(coding unit,cu))。
[0034]
需要说明的是,提供了一种用于反量化的协调方法,该方法不仅适用于单分割(single partition,st)模式(即通过单个分割树分割亮度和色度分量),而且还适用于双分割(dual partition,dt))模式(即通过不同的分割树独立地分割亮度和色度分量)。
[0035]
根据本发明的一个实施例,提供了一种解码装置,该解码装置包括处理电路,用于执行第一方面和第一方面的任一示例的方法。
[0036]
第二方面,提供了一种用于图像的当前块的量化方法,该方法由编码器执行,图像包括亮度分量和色度分量,将亮度分量和/或色度分量分割成多个块,该方法包括:通过确定的qp值对色度分量中的当前块进行量化;获取一个或多个现有量化参数(quantization parameter,qp)值,并将一个或多个现有qp值包括到码流中,其中一个或多个现有qp值与色度分量中的当前块相关;根据一个或多个现有qp值和所述确定的qp值确定色度分量中的当前块的qp参数;将qp参数包括到码流中。
[0037]
根据本发明的第二方面的一个示例,一个或多个现有qp值包括以下中的至少一个:亮度分量中的并置块的qp值;亮度分量中的并置块的一个或多个相邻块的现有qp值;色度分量中的当前块的一个或多个相邻块的现有qp值。
[0038]
根据本发明的第一方面的另一个示例,确定qp参数包括根据亮度分量中的并置块的qp值确定色度分量中的当前块的qp参数。
[0039]
根据亮度分量中的并置块的qp值确定色度分量中的当前块的qp参数的步骤包括根据前述示例中的任一个和第一方面进行以下操作:取得与当前色度块中特定位置的像素点并置的亮度块的qp值;根据所述确定的亮度块的qp值确定色度分量中的当前块的qp值。作为该实现方式的一个示例,根据亮度分量中的并置块的qp值确定色度分量中的当前块的qp参数的步骤包括:确定与当前色度块中特定位置的像素点并置的亮度块;取得所述确定的亮度块的qp值(例如,qpy_basic);根据所述确定的亮度块的qp值(例如,qpy_basic)确定色度分量中的当前块的qp值。
[0040]
在一个示例中,特定位置的像素点是当前色度块的右下四分之一部分的左上角像素点。
[0041]
或者或另外,根据以下公式或者根据以下公式推导出的新公式确定色度分量中的当前块的qp值:qp

cb=qpcb qpbdoffsetc delta_qp_c,qp

cr=qpcr qpbdoffsetc delta_qp_c,其中,qpcb和qpcr是通过qpicb参数和qpicr参数获得的,qpicb参数和qpicr参数是通过应用色度qp映射函数根据所述确定的亮度块的qp值获得的。
[0042]
根据一种示例性实现方式,该方法通过两个基于图像参数集(picture parameter set,pps)的控制标志分别用于亮度和色度平面;如果第一控制标志为真,则该方法用于亮度qp推导;如果第一控制标志为假,则该方法不用于亮度qp推导;和/或,如果第二控制标志为真,则该方法用于色度qp推导;如果第二控制标志为假,则该方法不用于色度qp推导,该方法还包括将第一标志和/或第二标志包括在码流中的步骤。
[0043]
根据本发明的第一方面的一个示例,该方法还包括:根据一个或多个现有qp值和以下至少一个,确定色度分量中当前块的qp参数:在所接收到的码流中指示的色度增量qp值,或在所接收到的码流中指示的色度qp偏移值。该方法还可以包括将增量qp或qp偏移量插入码流中。
[0044]
根据本发明的第一方面的一个示例,该方法还包括:确定当前块的分割深度值(并且可能将其包括在码流中);如果分割深度值小于阈值,则根据一个或多个现有qp值和码流中包括的色度增量qp值确定色度分量中的当前块的qp参数。
[0045]
根据本发明的第一方面的一个示例,根据预定义的数字或参数集中所指示的数字确定该阈值。
[0046]
例如,该数字可以由程序员预先定义,或者可以在参数集合中指示,例如,图像参数集合(picture parameter set,pps)或序列参数集合(sequence parameter set,sps)。
[0047]
根据本发明的第一方面的一个示例,通过不同的分割树将亮度分量和色度分量分割成多个块(例如,译码单元(coding unit,cu))。
[0048]
本发明的第三方面提供了一种计算机程序产品,该计算机程序产品包括程序代码,当计算机程序在计算设备上运行时,用于执行第一方面和第一方面的任一示例的方法。该计算机程序可以存储在非瞬时性介质中。
[0049]
本发明的第四方面提供一种用于图像的当前块的边界分割的解码装置。该解码装置包括:一个或多个处理器;非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到处理器并存储由处理器执行的程序,当所述处理器执行该程序时,使解码器执行第一方面或第一方面的任一示例的方法。
[0050]
第五方面提供了一种用于图像的当前块的边界分割的编码装置,该编码装置包括:一个或多个处理器;非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到处理器并存储由处理器执行的程序,当所述处理器执行该程序时,使编码器执行第二方面或第二方面的任一示例的方法。
[0051]
第六方面提供了一种用于对图像的当前块进行反量化的装置,图像包括亮度分量和色度分量,将亮度分量和/或色度分量分割成多个块,该装置包括:码流解析器(1110),用于从码流中获取一个或多个现有量化参数(quantization parameter,qp)值,其中一个或多个现有qp值与色度分量中的当前块相关;qp确定单元(1120),用于根据一个或多个现有qp值确定色度分量中的当前块的qp值;反量化器(1130),用于通过所述确定的qp值对色度分量中的当前块进行反量化。
[0052]
第七方面提供了一种用于对图像的当前块进行量化的装置,图像包括亮度分量和色度分量,将亮度分量和/或色度分量分割成多个块,该装置包括:量化器(1210),用于通过确定的qp值对色度分量中的当前块进行量化;提取单元(1220),用于获取一个或多个现有量化参数(quantization parameter,qp)值,并将一个或多个现有qp值包括到码流中,其中一个或多个现有qp值与色度分量中的当前块相关;qp确定单元(1230),用于根据一个或多个现有qp值和所述确定的qp值确定色度分量中的当前块的qp参数;码流生成单元(1240),用于将qp参数包括在码流中。
[0053]
根据第八方面,提供一种集成电路,实现上述装置中的任一个。
[0054]
第二、第三和第四方面的实现方式对应第一方面的各自的实现方式。因此,该方法的实现方式包括解码装置的对应实现方式的特征,反之亦然。解码装置可以实现为用于对经编码的视频码流进行解码的芯片组。
[0055]
第一方面的方法的优点与第二方面和第四方面的解码装置的相应实现方式的优点相同。
附图说明
[0056]
下文参考附图更详细地描述示例性实施例。
[0057]
图1a为用于实现本发明实施例的视频译码系统的示例的框图。
[0058]
图1b为用于实现本发明实施例的视频译码系统的另一示例的框图。
[0059]
图2为用于实现本发明实施例的视频编码器的示例的框图。
[0060]
图3为用于实现本发明实施例的视频解码器的示例结构的框图。
[0061]
图4为编码装置或解码装置的一个示例的框图。
[0062]
图5为编码装置或解码装置的另一个示例的框图。
[0063]
图6a为本发明的一个实施例提供的四叉树(quad-tree,qt)分割的示意图。
[0064]
图6b为本发明的一个实施例提供的在垂直方向上的二叉树(binary tree,bt)分割的示意图。
[0065]
图6c为本发明的一个实施例提供的在水平方向上的二叉树(binary tree,bt)分割的示意图。
[0066]
图6d为本发明的一个实施例提供的在垂直方向上的三叉树(ternary tree,tt)分割的示意图。
[0067]
图6e为本发明的一个实施例提供的在水平方向上的三叉树(ternary tree,tt)分割的示意图。
[0068]
图7a为图像中4:2:0亮度和色度像素点的标称垂直位置和水平位置的示意图。
[0069]
图7b为图像中4:2:2亮度和色度像素点的标称垂直位置和水平位置的示意图。
[0070]
图7c为图像中4:4:4亮度和色度像素点的标称垂直位置和水平位置的示意图。
[0071]
图8为从色度分割到亮度分割的映射点的示意图。
[0072]
图9为用于确定色度分量中的块的qp值(或色度块qp值)过程的示例性流程图。
[0073]
图10为用于确定待插入当前块的码流中的qp参数过程的示例性流程图。
[0074]
图11为示例性反量化装置的框图,该装置可以作为解码器的一部分。
[0075]
图12为示例性量化装置的框图,该装置可以作为编码器的一部分。
[0076]
图13为实现内容分发服务的内容供应系统的示例结构的框图。
[0077]
图14为终端设备的示例的结构的框图。
[0078]
下文中,如果未明确地另外指定,否则相同的附图标记指代相同或至少功能等同的特征。
具体实施方式
[0079]
在以下描述中,参考构成本发明的一部分的附图,这些附图通过说明的方式示出本发明的实施例的特定方面或可以使用本发明的实施例的具体方面。应理解,本发明的实施例可以用于其它方面,并且包括在附图中未描绘的结构上或逻辑上的变化。因此,以下详细描述不作为限制意义,并且本发明的范围由所附权利要求限定。
[0080]
例如,应理解,参考所描述的方法公开的内容对于用于执行该方法的对应的设备或系统也可以成立,反之亦然。例如,如果描述了一个或多个特定的方法步骤,则对应的设备可以包括一个或多个单元,例如用于执行所描述的一个或多个方法步骤的功能单元(例如,执行一个或多个步骤的一个单元;或者多个单元,每个单元执行多个步骤中的一个或多
个),即使一个或多个单元在附图中未明确描述或示出时也是如此。此外,例如,如果根据一个或多个单元(例如功能单元)来描述特定装置,则对应的方法可以包括用于执行一个或多个单元的功能的一个步骤(例如执行一个或多个单元的功能的一个步骤,或多个步骤,每个步骤执行多个单元中的一个或多个单元的功能),即使一个或多个步骤在附图中未明确描述或示出时也是如此。此外,应理解,除非特别指出,否则本文描述的各种示例性实施例和/或方面的特征可以彼此组合。
[0081]
视频译码通常是指对构成视频或视频序列的图像序列进行处理。在视频译码领域中,术语“帧(frame)”可以代替术语“图像(picture或image)”。本技术(或本发明)中使用的视频译码表示视频编码或视频解码。视频编码在源端执行,并且通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(以获得更高效的存储和/或传输)。视频解码在目的端执行,并且通常包括相对于编码器的逆处理以重建视频图像。提及视频图像(或通常称为图像,如下文所解释的那样)的译码的实施例应理解为涉及视频序列的编码或解码。编码部分和解码部分的组合也称为编解码器(编码和解码,codec)。
[0082]
在无损视频译码的情况下,可以对原始视频图像进行重建,即,重建的视频图像与原始视频图像具有相同的质量(假设在存储或传输期间没有传输损失或其它数据损失)。在有损视频译码的情况下,通过量化等方式进行进一步压缩,以减少表示视频图像所需的数据量,在解码器侧无法完全重建视频图像,即,重建的视频图像的质量比原始视频图像的质量低或差。
[0083]
从h.261开始的若干视频译码标准属于“有损混合视频编解码”组(即,将像素点域中的空间和时间预测与2d变换译码相结合,以在变换域中进行量化)。视频序列的每个图像通常分割成一组不重叠的块,并且通常在块级别上进行译码。换句话说,在编码器侧,通常在块(视频块)级别上对视频进行处理(即,编码),例如,通过使用空间(帧内图像)预测和时间(帧间图像)预测来生成预测块,从当前块(当前处理/待处理块)中减去预测块以获得残差块,变换残差块并在变换域中量化残差块以减少待发送(压缩)的数据量,而在解码器侧,相对于编码器的逆处理部分地用于经编码的或经压缩的块,以重建当前块用于表示。此外,编码器按照解码器处理循环来处理,使得两者生成相同的预测(例如,帧内和帧间预测)和/或重建,用于进行处理,即,对后续块进行译码。
[0084]
如本文所使用的那样,术语“块”可以是图像或帧的一部分。为便于描述,参考由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。可以指cu、pu和tu。在hevc中,使用表示为译码树的四叉树结构将ctu分割为cu。在cu级别上决定是通过帧间(时间)预测或通过帧内(空间)预测对图像区域进行译码。每个cu还可以根据pu分割类型分割成1个、2个或4个pu。在一个pu内,进行相同的预测过程,并且以pu为单位将相关信息发送到解码器。在通过进行预测过程而获得残差块后,根据pu分割类型,可以根据与用于cu的译码树类似的其它四叉树结构将cu分割成变换单元(transform units,tu)。在视频压缩技术的最新发展中,使用四叉树和二叉树(quad-tree and binary tree,qtbt)分割帧对译码块进行分割。
在qtbt块结构中,cu可以具有正方形或矩形形状。例如,首先通过四叉树结构分割译码树单元(coding tree unit,ctu)。进一步通过二叉树结构分割四叉树叶节点。二叉树叶节点称为译码单元(coding unit,cu),该分段用于预测和变换处理,无需进一步分割。这意味着cu、pu和tu在qtbt译码块结构中具有相同的块大小。同时,还提出将三叉树分割等多重分割与qtbt块结构结合使用。
[0085]
在以下编码器20的实施例中,根据图1至图3描述解码器30和译码系统10。
[0086]
图1a为示例性译码系统10的概念性或示意性框图,例如可以使用本技术(本发明)的技术的视频译码系统10。视频译码系统10的编码器20(例如视频编码器20)和解码器30(例如视频解码器30)表示可以用于根据本技术中描述的各种示例执行技术的设备的示例。如图1a所示,译码系统10包括源设备12,源设备12用于提供经编码的数据13,例如,经编码的图像13,以例如向目的设备14提供经编码的数据13,以对经编码的数据13进行解码。
[0087]
源设备12包括编码器20,并且可以另外地(即可选地)包括图像源16、预处理单元18(例如图像预处理单元18)和通信接口或通信单元22。
[0088]
图像源16可以包括或是:例如用于捕获真实世界图像的任何类型的图像捕获设备;和/或任何类型的图像或评论(对于屏幕内容编码,屏幕上的部分文本也被认为是待编码的图像的一部分)生成设备,例如用于生成计算机动画图像的计算机图形处理器;或用于获取和/或提供真实世界图像、计算机动画图像(例如屏幕内容、虚拟现实(virtual reality,vr)图像)和/或其任何组合(例如增强现实(augmented reality,ar)图像)的任何类型的设备。
[0089]
(数字)图像是或可以看作具有强度值的二维像素点阵列或矩阵。阵列中的像素点也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像的水平和垂直方向(或轴线)上的像素点的数量定义图像的大小和/或分辨率。通常使用三个颜色分量来表示颜色,即,可以通过三个像素点阵列来表示图像或图像可以包括三个像素点阵列。在rbg格式或色彩空间中,图像包括对应的红、绿、蓝像素点阵列。但是,在视频译码中,每个像素通常以亮度/色度格式或颜色空间表示,例如ycbcr,其包括y表示的亮度分量(有时也用l代替)以及cb和cr表示的两个色度分量。亮度分量y表示亮度或灰度强度(例如在灰度级图像中),而两个色度分量cb和cr表示色度或颜色信息分量。对应地,ycbcr格式的图像包括亮度像素点值的亮度像素点阵列(y)和色度值的两个色度像素点阵列(cb和cr)。rgb格式的图像可以转换或变换为ycbcr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是单色的,则该图像可以只包括亮度像素点阵列。
[0090]
在单色采样中,只有一个采样阵列,通常认为是亮度阵列。
[0091]
在4:2:0采样时,如图7a所示,两个色度阵列中的每个色度阵列的高度和宽度均为亮度阵列的一半。
[0092]
在4:2:2采样时,如图7b所示,两个色度阵列中的每个色度阵列的高度与亮度阵列相同,宽度为亮度阵列的一半。
[0093]
在4:4:4采样时,如图7c所示,根据separate_colour_plane_flag的值,以下情况适用:
[0094]-如果separate_colour_plane_flag等于0,则两个色度阵列的高度和宽度均与亮度阵列相同;
[0095]-否则(separate_colour_plane_flag等于1),三个颜色平面分别作为单色采样图像处理。
[0096]
图像源16(例如视频源16)可以是例如用于捕获图像的照相机、存储器(例如图像存储器)(其包括或存储之前捕获的或生成的图像),和/或任何类型的接口(内部的或外部的)以获取或接收图像。例如,照相机可以是本地照相机或集成在源设备中的集成的照相机,例如,存储器可以是本地的存储器或集成在源设备中的集成的存储器。例如,接口可以是外部接口,用于接收来自外部视频源的图像,外部视频源例如:照相机等外部图像捕获设备、外部存储器、外部图像生成设备(例如,外部计算机图形处理器)、计算机或服务器。接口可以是任何类型的接口,例如,根据任何私有或标准化的接口协议的有线或无线接口或光接口。获取图像数据17的接口可以是与通信接口22相同的接口,也可以是通信接口22的一部分。
[0097]
与预处理单元18和由预处理单元18执行的处理不同,图像或图像数据17(例如视频数据16)也可以称为原始图像或原始图像数据17。
[0098]
预处理单元18用于接收(原始)图像数据17,并对图像数据17进行预处理,以获得预处理图像19或预处理图像数据19。预处理单元18执行的预处理可以包括修剪、颜色格式转换(例如从rgb到ycbcr)、颜色校正或去噪等。可以理解的是,预处理单元18可以是可选的组件。
[0099]
编码器20(例如视频编码器20)用于接收预处理图像数据19并提供经编码的图像数据21(例如,下文根据图2或图4进一步详细描述)。
[0100]
源设备12的通信接口22可以用于:接收经编码的图像数据21并且将其发送到另一设备(例如目的设备14或任何其它设备)以用于存储或直接重建;或者在存储经编码的数据13和/或将经编码的数据13发送到另一设备(例如目的设备14或任何其它设备)之前分别处理经编码的图像数据21以用于解码或存储。
[0101]
目的设备14包括解码器30(例如视频解码器30),并且可以另外(即可选地)包括通信接口或通信单元28、后处理单元32和显示设备34。
[0102]
目的设备14的通信接口28用于例如直接从源设备12,或从任何其它源(例如存储设备,例如经编码的图像数据存储设备)接收经编码的图像数据21或经编码的数据13。
[0103]
通信接口22和通信接口28可以用于通过源设备12与目的设备14之间的直接通信链路(例如直接有线或无线连接),或者通过任何类型的网络(例如有线网络、无线网络、有线网络和无线网络的任何组合、任何类型的私网和公网、任何类型的私网和公网的组合),发送或接收经编码的图像数据21或经编码的数据13。
[0104]
例如,通信接口22可以用于将经编码的图像数据21打包成合适的格式(例如包),以便通过通信链路或通信网络发送。
[0105]
例如,构成通信接口22的对应部分的通信接口28可以用于对经编码的数据13进行解包以获得经编码的图像数据21。
[0106]
通信接口22和通信接口28均可配置为如图1a中从源设备12指向目的设备14的经编码的图像数据13的箭头所指示的单向通信接口,或配置为双向通信接口,并且可用于发送和接收消息,建立连接,确认并交换与通信链路和/或数据传输(例如编码图像数据传输)相关的任何其它信息等。
[0107]
解码器30用于接收经编码的图像数据21并提供经解码的图像数据31或经解码的图像31(例如,下文根据图3或图5进一步详细描述)。
[0108]
目的设备14的后处理器32用于对经解码的图像数据31(也称为重建图像数据),例如经解码的图像31,进行后处理,以获得经后处理的图像数据33,例如经后处理的图像33。由后处理单元32执行的后处理可以包括颜色格式转换(例如从ycbcr到rgb)、颜色校正、修剪或重新采样或任何其它处理,以例如准备经解码的图像数据31,用于通过显示设备34等进行显示。
[0109]
目的设备14的显示设备34用于接收经后处理的图像数据33,以例如向用户或观看者显示图像。显示设备34可以是或包括用于呈现重建图像的任何类型的显示器,例如集成的或外部的显示器或监控器。例如,显示器可以包括液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light emitting diode,oled)显示器、等离子显示器、投影仪、微led显示器,硅上液晶(liquid crystal on silicon,lcos)、数字光处理器(digital light processor,dlp)或任何类型的其它显示器。
[0110]
尽管图1a将源设备12和目的设备14描绘为单独的设备,但是设备的实施例也可以包括这两种设备或这两种设备的功能,即包括源设备12或对应的功能与目的设备14或对应的功能。在此类实施例中,源设备12或对应的功能与目的设备14或对应的功能可以通过相同的硬件和/或软件、通过单独的硬件和/或软件或其任何组合来实现。
[0111]
根据以上描述,对于本领域技术人员来说显而易见的是,图1a中所示的源设备12和/或目的设备14的不同单元或功能的存在和(精确)功能划分可以根据实际设备和应用而变化。
[0112]
编码器20(例如,视频编码器20)和解码器30(例如,视频解码器30)可以各自实现为各种合适的电路中的任一种,例如,一个或多个微处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、离散逻辑、硬件,或其任何组合。如果这些技术部分地在软件中实现,则设备可以将软件指令存储在合适的非瞬时性计算机可读存储介质中,并且可以通过一个或多个处理器在硬件中执行这些指令,以执行本发明的技术。上述任一种(包括硬件、软件、硬件和软件的组合等)可以看作一个或多个处理器。视频编码器20和视频解码器30中的每一个可以包括在一个或多个编码器或解码器中,其中任何一个编码器或解码器可以集成为相应设备中的组合编码器/解码器(编解码器)的一部分。
[0113]
源设备12可以称为视频编码设备或视频编码装置。目的设备14可以称为视频解码设备或视频解码装置。源设备12和目的设备14可以是视频译码设备或视频译码装置的示例。
[0114]
源设备12和目的设备14可以包括多种设备中的任一种,包括任何类型的手持设备或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、照相机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(如内容业务服务器或内容分发服务器)、广播接收器设备、广播发送器设备等,并且可以使用或不使用任何类型的操作系统。
[0115]
在一些情况下,源设备12和目的设备14可以用于无线通信。因此,源设备12和目的
设备14可以是无线通信设备。
[0116]
在一些情况下,图1a所示的视频译码系统10仅是示例,本技术的技术可以应用于视频译码设置(例如,视频编码或视频解码),不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据可以从本地存储器取得、通过网络流式传输等。视频编码设备可以对数据进行编码并将数据存储到存储器,和/或视频解码设备可以从存储器取得和解码数据。在一些示例中,编码和解码由不彼此通信但简单地将数据编码到存储器和/或从存储器取得和解码数据的设备执行。
[0117]
应理解,对于结合视频编码器20所描述的上述示例中的每个示例,视频解码器30可用于执行逆过程。关于指示(signaling)语法元素,视频解码器30可以用于接收和解析此类语法元素,并相应地解码相关视频数据。在一些示例中,视频编码器20可以将一个或多个语法元素熵编码到编码视频码流中。在此类示例中,解码器30可以解析此类语法元素并相应地解码相关的视频数据。
[0118]
图1b为一个示例性实施例提供的包括图2的编码器20和/或图3的解码器30的另一示例视频译码系统40的说明性图。系统40可以实现根据本技术中描述的各种示例的技术。在所示出的实现方式中,视频译码系统40可以包括成像设备41、视频编码器100、视频解码器30(和/或处理单元46的逻辑电路47实现的视频译码器)、天线42、一个或多个处理器43、一个或多个存储器44,和/或显示设备45。
[0119]
如图所示,成像设备41、天线42、处理单元46、逻辑电路47、视频编码器20、视频解码器30、处理器43、存储器44、和/或显示设备45可以彼此通信。如所讨论的那样,尽管视频编码器20和视频解码器30两者都示出,但在各种示例中,视频译码系统40可以仅包括视频编码器20或仅包括视频解码器30。
[0120]
如图所示,在一些示例中,视频译码系统40可以包括天线42。例如,天线42可以用于发送或接收视频数据的编码码流。此外,在一些示例中,视频译码系统40可以包括显示设备45。显示设备45可以用于呈现视频数据。如图所示,在一些示例中,逻辑电路47可以通过处理单元46实现。处理单元46可以包括专用集成电路(application-specific integrated circuit,asic)逻辑、图形处理器、通用处理器等。视频译码系统40还可包括可选处理器43,可选处理器43可以类似地包括专用集成电路(application-specific integrated circuit,asic)逻辑、图形处理器、通用处理器等。在一些示例中,逻辑电路47可以通过硬件、视频译码专用硬件等实现,并且处理器43可以实现通用软件、操作系统等。另外,存储器44可以是任何类型的存储器,例如易失性存储器(例如,静态随机存取存储器(static random access memory,sram)、动态随机存取存储器(dynamic random access memory,dram)等)或非易失性存储器(例如,闪存等)等。在非限制性示例中,存储器44可以通过高速缓存存储器实现。在一些示例中,逻辑电路47可以访问存储器44(例如用于实现图像缓冲器)。在其它示例中,逻辑电路47和/或处理单元46可以包括用于实现图像缓冲器等的存储器(例如,高速缓存等)。
[0121]
在一些示例中,通过逻辑电路实现的视频编码器100可以包括图像缓冲器(例如通过处理单元46或存储器44实现)和图形处理单元(例如通过处理单元46实现)。图形处理单元可以通信地耦合到图像缓冲器。图形处理单元可以包括通过逻辑电路47实现的视频编码器100,以实现结合图2所讨论的各种模块和/或本文所描述的任何其它编码器系统或子系
统。逻辑电路可以用于执行本文所描述的各种操作。
[0122]
视频解码器30可以以与通过逻辑电路47实现的类似方式实现,以实现结合图3的解码器30所讨论的各种模块和/或本文所描述的任何其它解码器系统或子系统。在一些示例中,可以通过逻辑电路实现的视频解码器30可以包括图像缓冲器(例如通过处理单元420或存储器44实现)和图形处理单元(例如通过处理单元46实现)。图形处理单元可以通信地耦合到图像缓冲器。图形处理单元可以包括通过逻辑电路47实现的视频解码器30,以实现结合图3所讨论的各种模块和/或本文所描述的任何其它解码器系统或子系统。
[0123]
在一些示例中,视频译码系统40的天线42可以用于接收视频数据的编码码流。如所讨论的那样,编码码流可以包括与本文所讨论的视频帧编码相关的数据、指示符、索引值、模式选择数据等,例如与译码分割相关的数据(例如,变换系数或量化变换系数,可选的指示符(如所讨论的)和/或定义译码分割的数据。视频译码系统40还可以包括耦合到天线42的视频解码器30,视频解码器30用于对编码码流进行解码。显示设备45用于呈现视频帧。
[0124]
编码器和编码方法
[0125]
图2为用于实现本技术的技术的示例性视频编码器20的示意性/概念性框图。在图2的示例中,视频编码器20包括残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波单元220、解码图像缓冲器(decoded picture buffer,dpb)230、预测处理单元260和熵编码单元270。预测处理单元260可包括帧间预测单元244、帧内预测单元254和模式选择单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(图中未示出)。根据混合视频编解码器,图2所示的视频编码器20也可以称为混合视频编码器或视频编码器。
[0126]
例如,残差计算单元204、变换处理单元206、量化单元208、预测处理单元260和熵编码单元270构成编码器20的前向信号路径,而例如反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码器缓冲器(decoded picture buffer,dpb)230和预测处理单元260构成编码器的反向信号路径,其中编码器的反向信号路径对应解码器(参见图3的解码器30)的信号路径。
[0127]
例如,编码器20用于通过输入端202接收图像201或图像201的块203,图像201是例如是构成视频或视频序列的图像序列的图像。图像块203还可以称为当前图像块或待译码图像块,图像201称为当前图像或待译码图像(特别是在视频译码中,将当前图像与其它图像区分开来,其它图像例如是同一视频序列(即,也包括当前图像的视频序列)中之前编码和/或解码的图像)。
[0128]
分割
[0129]
编码器20的实施例可以包括分割单元(图2中未示出),分割单元用于将图像201分割成多个块(例如块203之类的块),通常分割成多个非重叠块。分割单元可以用于对视频序列中的所有图像和定义块大小的对应的栅格使用相同的块大小,或者改变图像或子集或图像组之间的块大小,并将每个图像分割成对应的块。
[0130]
在一个示例中,视频编码器20的预测处理单元260可以用于执行上述分割技术的任何组合。
[0131]
尽管块203的尺寸小于图像201,但是与图像201一样,块203也是或也可以被认为是具有强度值(像素点值)的像素点的二维阵列或矩阵。换句话说,图像块203例如可以包括
一个像素点阵列(例如,在黑白图像201的情况下,亮度阵列)、三个像素点阵列(例如,在彩色图像201的情况下,一个亮度阵列和两个色度阵列),或任何其它数量和/或类型的阵列,这取决于应用的颜色格式。块203在水平和垂直方向(或轴线)上的像素点的数量定义了块203的大小。
[0132]
如图2所示的编码器20用于对图像201逐块地进行编码,例如对每个块203执行编码和预测。
[0133]
分割单元可以用于将视频序列中的图像分割成译码树单元(coding tree unit,ctu)序列,分割单元可以将译码树单元(coding tree unit,ctu)分割(partition/split)成更小的部分,例如较小的正方形或矩形块。对于具有三个像素点阵列的图像,ctu由一个n
×
n的亮度像素点块和两个对应的色度像素点块组成。在开发中的通用视频译码(versatile video coding,vvc)中,ctu中的亮度块的最大允许大小指定为128
×
128,但是将来可以指定为不同于128
×
128的值,例如256
×
256。可以将图像的ctu聚类/分组为条带(slice)/分块组(tile group)、分块(tile)或砖(brick)。分块覆盖图像的矩形区域,可以将分块分割为一个或多个砖。砖由分块中的多个ctu行组成。没有分割成多个砖的分块可以称为砖。但是,砖是分块的真子集,不称为分块。vvc支持两种分块组模式,即栅格扫描条带/分块组模式和矩形条带模式。在光栅扫描分块组模式中,条带/分块组包含图像的分块光栅扫描中的分块的序列。在矩形条带模式中,条带包含图像的多个砖,这些砖共同构成图像的矩形区域。矩形条带内的砖是按照条带的砖光栅扫描顺序排列的。这些较小的块(也可以称为子块)可以进一步分割成更小的部分。这也称为树分割或分层树分割,其中,在根树层级0(层级0、深度0)等的根块可以递归地分割成两个或多个下一较低树层级的块,例如树层级1(层级1、深度1)的节点,这些块又可以分割成两个或多个下一较低层级的块,例如树层级2(层级2、深度2)等,直到由于满足结束标准(例如达到最大树深度或最小块大小)而结束分割。未进一步分割的块也称为树的叶块或叶节点。分成两个部分的树称为二叉树(binary-tree,bt),分成三个部分的树称为三叉树(ternary-tree,tt),分成四个部分的树称为四叉树(quad-tree,qt))。
[0134]
例如,译码树单元(coding tree unit,ctu)可以是或包括:亮度像素点的ctb、具有三个像素点阵列的图像的色度像素点的两个对应的ctb、单色图像或使用三个单独的颜色平面和用于对像素点进行译码的语法结构译码的图像的像素点的ctb。相应地,译码树块(coding tree block,ctb)可以是n
×
n的像素点块,其中n可以设为某个值以将分量分割成ctb,这是一种分割。译码单元(coding unit,cu)可以是或包括:亮度像素点的译码块、具有三个像素点阵列的图像的色度像素点的两个对应的译码块、单色图像或使用三个单独的颜色平面和用于对像素点进行译码的语法结构译码的图像的像素点的译码块。相应地,译码块(coding block,cb)可以是m
×
n的像素点块,其中m和n可以设为某些值以将ctb分割成译码块,这是一种分割。
[0135]
在实施例中,例如,根据hevc,可以通过表示为译码树的四叉树结构将译码树单元(coding tree unit,ctu)分割成cu。在叶cu级别上决定是通过帧间(时间)预测或通过帧内(空间)预测对图像区域进行译码。每个叶cu还可以根据pu分割类型分割成1个、2个或4个pu。在一个pu内,进行相同的预测过程,并且以pu为单位将相关信息发送到解码器。在通过进行预测过程而获得残差块后,根据pu分割类型,可以根据与用于cu的译码树类似的其它
四叉树结构将叶cu分割成变换单元(transform unit,tu)。
[0136]
例如,在实施例中,根据当前正在开发的最新视频译码标准(称为通用视频译码(versatile video coding,vvc)),使用嵌套多类型树(例如二叉树和三叉树)的组合四叉树来分割例如用于分割译码树单元的分段结构。在译码树单元内的译码树结构中,cu可以是正方形或矩形。例如,首先通过四叉树分割译码树单元(coding tree unit,ctu)。然后,可以通过多类型树结构进一步分割四叉树叶节点。多类型树结构中,有4种分割类型:垂直二元分割(split_bt_ver)、水平二元分割(split_bt_hor)、垂直三元分割(split_tt_ver)和水平三元分割(split_tt_hor)。多类型树叶节点称为译码单元(coding unit,cu),该分段用于预测和变换处理,无需进一步分割,只有cu对于最大变换长度太大时才需要进一步分割。这意味着,在大多数情况下,cu、pu和tu在具有嵌套多类型树译码块结构的四叉树中具有相同的块大小。当最大支持变换长度小于cu的颜色分量的宽度或高度时,就会发生异常。vvc在具有嵌套多类型树译码数的四叉树中制定了一种分割信息的唯一指示机制。在该指示机制中,译码树单元(coding tree unit,ctu)作为四叉树的根,并且首先通过四叉树结构分割。然后,通过多类型树结构对每个四叉树叶节点(当太大而需要分割时)进行进一步分割。在多类型树结构中,指示第一标志(mtt_split_cu_flag)以表示是否对节点进行进一步分割;当需要对节点进行进一步分割时,指示第二标志(mtt_split_cu_vertical_flag)以表示分割方向,然后指示第三标志(mtt_split_cu_binary_flag)以表示该分割是二元分割或三元分割。根据mtt_split_cu_vertical_flag和mtt_split_cu_binary_flag的值,cu的多类型树分割模式(mttsplitmode)可以由解码器根据预定义的规则或表格推导。需要说明的是,对于某种设计,例如vvc硬件解码器中的64
×
64亮度块和32
×
32色度流水线设计,当亮度译码块的宽度或高度大于64时,都禁止tt分割。当色度译码块的宽度或高度大于32时,也禁止tt分割。流水线设计将图像分割成虚拟流水线数据单元(virtual pipeline data unit,vpdu),这些虚拟流水线数据单元定义为图像中的非重叠单元。在硬件解码器中,连续的vpdu由多个流水线阶段同时处理。在大多数流水线阶段,vpdu大小与缓冲器大小大致成正比,因此保持vpdu大小较小是很重要的。在大多数硬件解码器中,vpdu大小可以设置为最大变换快(transform block,tb)大小。但是,在vvc中,三叉树(ternary tree,tt)和(binary tree,bt)分割会导致vpdu大小变大。
[0137]
另外,需要说明的是,当树节点块的一部分超出图像底边界或右边界时,强制对树节点块进行分割,直到每个经译码的cu的所有像素点都位于图像边界内。
[0138]
例如,根据块大小,帧内子分割(intra sub-partition,isp)工具可以将亮度帧内预测块垂直或水平地分割成2或4个子部分。
[0139]
残差计算
[0140]
残差计算单元204用于根据图像块203和预测块265(后面会详细描述预测块265)计算残差块205,例如,逐像素点(逐像素)从图像块203的像素点值中减去预测块265的像素点值来,以获得像素点域中的残差块205。
[0141]
变换
[0142]
变换处理单元206用于对残差块205的像素点值进行变换,例如离散余弦变换(discrete cosine transform,dct)或离散正弦变换(discrete sine transform,dst),以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中
的残差块205。
[0143]
变换处理单元206可以用于应用dct/dst的整数近似,例如针对hevc/h.265指定的变换。与正交dct变换相比,此类整数近似通常通过某个因子进行缩放。使用其它缩放因子作为变换过程的一部分,以维持经过前向变换和反向变换处理的残差块的范数。通常根据某些约束来选择缩放因子,例如缩放因子为移位运算的2的幂、变换系数的位深度、精度和实施成本之间的权衡等。例如,在解码器30侧通过逆变换处理单元312等指定用于逆变换的特定缩放因子,(以及在编码器20侧通过逆变换处理单元212等为相应的逆变换指定缩放因子),在编码器20侧可以相应地通过变换处理单元206等指定用于正向变换的对应的缩放因子。
[0144]
量化
[0145]
量化单元208用于对变换系数207进行量化(例如进行标量量化或矢量量化),以获得量化变换系数209。量化变换系数209也可以称为量化残差系数209。量化过程可以减小与部分或全部变换系数207相关的位深。例如,在量化期间,可以将n位变换系数向下取整为m位变换系数,其中n大于m。可以通过调整量化参数来修改量化程度(quantization parameter,qp)。例如,对于标量量化,可以进行不同的缩放来实现更精细或更粗略的量化。量化步长大小越小,量化越精细;量化步长大小越大,量化越粗略。合适的量化步长大小可以通过量化参数(quantization parameter,qp)来指示。例如,量化参数可以是适用于预定义的一组合适的量化步长大小的索引。例如,小的量化参数可以对应精细的量化(小量化步长大小),而大的量化参数可以对应粗略的量化(大量化步长大小),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的对应的解量化或反解量化操作可以包括乘以量化步长。根据一些标准(例如hevc),实施例中可以使用量化参数来确定量化步长大小。通常,可以通过包含除法的方程的定点近似、根据量化参数计算量化步长大小。可以将其它缩放因子引入量化和解量化,用于恢复残差块的范数,因为量化步长大小和量化参数的方程的定点近似中使用缩放,所以可以修改该范数。在一种示例性实现方式中,可以合并逆变换和解量化中的缩放。或者,可以使用自定义量化表,并在码流等中将该自定义量化表从编码器指示到解码器。量化为有损操作,损耗随量化步长大小的增加而增加。
[0146]
反量化单元210用于对量化系数执行量化单元208所执行的量化的反量化,以获得解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可以称为解量化残差系数211,尽管由于量化造成的损耗通常与变换系数不同,但对应变换系数207。
[0147]
逆变换处理单元212用于对变换处理单元206所进行的变换进行逆变换,例如逆离散余弦变换(discrete cosine transform,dct)或逆离散正弦变换(discrete sine transform,dst),以在像素点域中获得逆变换块213。逆变换块213也可以称为逆变换解量化块213或逆变换残差块213。
[0148]
重建单元214(例如,求和器214)用于将逆变换块213(即,重建残差块213)添加到预测块265,以获得像素点域中的重建块215,例如,通过将重建残差块213的像素点值添加到预测块265的像素点值。
[0149]
可选地,例如行缓冲器216的缓冲单元(或简称为缓冲器216)用于缓冲或存储重建块215和相应的像素点值,以例如用于帧内预测。在其它实施例中,编码器可以使用未滤波
的重建块和/或存储在缓冲单元216中的相应的像素点值用于任何类型的估计和/或预测,例如帧内预测。
[0150]
编码器20的实施例可以使缓存单元216不仅用于存储用于帧内预测254的重建块215,而且也用于环路滤波器单元220(图2中未示出),和/或使例如缓冲单元216和解码图像缓冲单元230构成一个缓冲器。其它实施例可以使用解码图像缓冲器230的滤波块221和/或块或像素点(块或像素点在图2中未示出)作为帧内预测254的输入或基础。
[0151]
环路滤波器单元220(或简称为环路滤波器220)用于对重建块215进行滤波,以获得滤波块221,以例如平滑像素过渡或提高视频质量。环路滤波器单元220表示一个或多个环路滤波器,例如去块滤波器、采样自适应偏移(sample-adaptive offset,sao)滤波器和其它滤波器,例如双边滤波器,自适应环路滤波器(adaptive loop filter,alf)、锐化或平滑滤波器或协作滤波器。尽管在图2中环路滤波器单元220示出为环内滤波器,但在其它配置中,环路滤波器单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。解码图像缓冲器230可以在环路滤波单元220对重建译码块进行滤波操作之后存储重建译码块。
[0152]
例如,编码器20(相应地,环路滤波器单元220)的实施例可以直接输出环路滤波器参数(例如采样自适应偏移信息),或通过熵编码单元270或任何其它熵译码单元熵编码后输出环路滤波器参数,使得例如解码器30可以接收相同的环路滤波器参数并将相同的环路滤波器参数应用于解码。
[0153]
解码图像缓冲器(decoded picture buffer,dpb)230可以是参考图像存储器,其存储参考图像数据,该参考图像数据由视频编码器20用来对视频数据进行编码。dpb 230可以由各种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random access memory,dram)(包括同步dram(synchronous dram,sdram))、磁阻ram(magneto resistive ram,mram)、电阻ram(resistive ram,rram)或其它类型的存储器设备。dpb 230和缓冲器216可以由同一存储器设备提供,也可以由不同的存储器设备提供。在一些示例中,解码图像缓冲器(decoded picture buffer,dpb)230用于存储滤波块221。解码图像缓冲器230还可以用于存储相同的当前图像或不同图像(例如之前重建的图像)的其它之前滤波的块(例如之前重建的和滤波的块221),并且可以提供完整的之前重建的(即解码的)图像(以及对应的参考块和像素点)和/或部分重建的当前图像(以及对应的参考块和像素点),以例如用于帧间预测。在一些示例中,如果重建了重建块215,但没有进行环内滤波,则解码图像缓冲器(decoded picture buffer,dpb)230用于存储重建块215。
[0154]
预测处理单元260也称为块预测处理单元260,用于:接收或获取块203(例如,当前图像201的当前块203)和重建图像数据,例如,来自缓冲器216的相同(或当前)图像的参考像素点和/或来自解码图像缓冲器230的一个或多个之前解码的图像的参考图像数据231;并且用于处理此类数据以进行预测,即,提供预测块265,预测块265可以是帧间预测块245或帧内预测块255。
[0155]
模式选择单元262可以用于选择预测模式(例如,帧内或帧间预测模式)和/或选择对应的预测块245或255作为预测块265,以用于残差块205的计算和重建块215的重建。
[0156]
模式选择单元262的实施例可以用于(例如从预测处理单元260支持的那些预测模式中)选择预测模式,该预测模式提供最佳匹配,或者换句话说,提供最小残差(最小残差更
有利于压缩,以便传输或存储),或者提供最小指示开销(最小的指示开销更有利于压缩,以便传输或存储),或者考虑或平衡两者。模式选择单元262可以用于根据率失真优化(rate distortion optimization,rdo)确定预测模式,即确定这样一种预测模式:该预测模式提供最小率失真优化,或相关的率失真至少满足预测模式选择标准。
[0157]
下文中更详细地解释由示例编码器20执行的预测处理(例如通过预测处理单元260)和模式选择(例如通过模式选择单元262)。
[0158]
如上所述,编码器20用于从一组(预定的)预测模式中确定或选择最佳或最优预测模式。该组预测模式可以包括例如帧内预测模式和/或帧间预测模式。
[0159]
该组帧内预测模式可以包括35种不同的帧内预测模式,例如dc(或均值)模式和平面模式等非定向模式,或h.265中定义的定向模式等,或者可以包括67种不同的帧内预测模式,例如dc(或均值)模式和平面模式等非定向模式,或正在开发的h.266中定义的定向模式等。
[0160]
该组(或可能的)帧间预测模式取决于可用的参考图像(即,例如存储在dbp 230中的之前至少部分解码的图像)和其它帧间预测参数,例如是整个参考图像或仅参考图像的一部分(例如,当前块的区域周围的搜索窗口区域)用于搜索最佳匹配的参考块,和/或例如是否使用像素插值,例如半像素和/或四分之一像素插值,或不使用像素插值。
[0161]
除了上述预测模式之外,还可以使用跳过模式和/或直接模式。
[0162]
预测处理单元260还可以用于例如,通过迭代地使用四叉树分割(quad-tree-partitioning,qt)、二叉树分割(binary partitioning,bt)或三叉树分割(triple-tree-partitioning,tt)或其任何组合,将块203分割成较小的块部分或子块,以及用于例如对块部分或子块中的每一个执行预测,其中模式选择包括选择分割的块203的树结构以及应用于每个块部分或子块的预测模式。
[0163]
帧间预测单元244可以包括运动估计(motion estimation,me)单元(图2中未示出)和运动补偿(motion compensation,mc)单元(图2中未示出)。运动估计单元用于接收或获取图像块203(当前图像201的当前图像块203)和解码图像231,或者至少一个或多个之前重建的块(例如一个或多个其它/不同的之前解码的图像231的重建块),以用于运动估计。例如,视频序列可以包括当前图像和之前解码的图像231,或者,换句话说,当前图像和之前解码的图像231可以是构成视频序列的图像序列的一部分或可以构成该序列。
[0164]
例如,编码器20可以用于从多个其它图像的相同或不同图像的多个参考块中选择参考块并提供参考图像(或参考图像索引
……
)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移量(空间偏移),作为运动估计单元(图2中未示出)的帧间预测参数。这个偏移量也称为运动矢量(motion vector,mv)。
[0165]
运动补偿单元用于获取(例如,接收)帧间预测参数,并根据或通过帧间预测参数进行帧间预测,以获得帧间预测块245。运动补偿单元(图2中未示出)所执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量提取或生成预测块(可能执行插值以提高子像素精度)。插值滤波可以通过已知像素点生成其它像素点,从而潜在地增加可以用于译码图像块的候选预测块的数量。在接收到当前图像块的pu的运动矢量时,运动补偿单元246可以定位运动矢量在一个参考图像列表中指向的预测块。运动补偿单元246还可生成与块和视频条带相关的语法元素该语法元素由视频解码器30用来解码视频条带的图像块。
[0166]
帧内预测单元254用于获取(例如接收)图像块203(当前图像块)和同一图像的一个或多个之前重建的块(例如重建相邻块),以用于进行帧内估计。例如,编码器20可以用于从多个(预定的)帧内预测模式中选择帧内预测模式。
[0167]
在实施例中,编码器20可以用于根据优化准则,例如根据最小残差(例如,提供与当前图像块203最相似的预测块255的帧内预测模式)或最小率失真来选择帧内预测模式。
[0168]
帧内预测单元254还用于根据帧内预测参数(例如,选择的帧内预测模式)确定帧内预测块255。在任何情况下,在为块选择帧内预测模式之后,帧内预测单元254还用于向熵编码单元270提供帧内预测参数,即指示为块选择的帧内预测模式的信息。在一个示例中,帧内预测单元254可以用于执行下文描述的帧内预测技术的任何组合。
[0169]
熵编码单元270用于单独地或联合地(或根本不)对量化残差系数209、帧间预测参数、帧内预测参数和/或环路滤波器参数应用熵编码算法或方案(例如,可变长度译码(variable length coding,vlc)方案,上下文自适应vlc(context adaptive vlc,cavlc)方案、算术译码方案、上下文自适应二进制算术译码(context adaptive binary arithmetic coding,cabac)方案、基于语法的上下文自适应二进制算术译码(syntax-based context-adaptive binary arithmetic coding,sbac)方案、概率区间分割熵(probability interval partitioning entropy,pipe)译码,或者其它熵编码方法或技术),以获得可由输出端272输出的经编码的图像数据21,例如以编码码流21的形式输出。编码码流21可以发送到视频解码器30,或者进行存档,以便随后由视频解码器30发送或取得。熵编码单元270还可以用于对正在译码的当前视频条带的其它语法元素进行熵编码。
[0170]
视频编码器20的其它结构变化可以用于编码视频流。例如,对于某些块或帧,基于非变换的编码器20可以在没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以将量化单元208和反量化单元210组合成单个单元。
[0171]
图3为用于实现本技术的技术的示例性视频解码器30。视频解码器30用于接收例如由编码器100编码的经编码的图像数据(例如,编码码流)21,以获得解码图像131。在解码过程期间,视频解码器30从视频编码器100接收视频数据,例如表示编码视频条带的图像块和相关的语法元素的编码视频码流。
[0172]
在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如,累加器314)、缓冲器316、环路滤波器320、解码图像缓冲器330和预测处理单元360。预测处理单元360可包括帧间预测单元344、帧内预测单元354和模式选择单元362。在一些示例中,视频解码器30可以执行与图2中关于视频编码器100描述的编码通道大体上互逆的解码通道。
[0173]
熵解码单元304用于对经编码的图像数据21执行熵解码以例如获得量化系数309和/或经解码的译码参数(图3中未示出),例如(经解码的)帧间预测参数、帧内预测参数、环路滤波器参数和/或其它语法元素中的任何或全部。熵解码单元304还用于将帧间预测参数、帧内预测参数和/或其它语法元素转发至预测处理单元360。视频解码器30可以在视频条带级和/或视频块级接收语法元素。
[0174]
反量化单元310可以与反量化单元110具有相同的功能,逆变换处理单元312可以与逆变换处理单元112具有相同的功能,重建单元314可以与重建单元114具有相同的功能,缓冲器316可以与缓冲器116具有相同的功能,环路滤波器320可以与环路滤波器120具有相
同的功能,解码图像缓冲器330可以与解码图像缓冲器130具有相同的功能。
[0175]
预测处理单元360可以包括帧间预测单元344和帧内预测单元354,其中帧间预测单元344在功能上类似于帧间预测单元144,帧内预测单元354在功能上类似于帧内预测单元154。预测处理单元360通常用于进行块预测和/或从编码数据21中获取预测块365,以及例如从熵解码单元304接收或获取(显式地或隐式地)预测相关参数和/或所选择的预测模式的信息。
[0176]
当视频条带译码为帧内译码(i)条带时,预测处理单元360的帧内预测单元354用于:根据所指示的帧内预测模式和来自当前帧或图像的之前解码的块的数据来为当前视频条带的图像块生成预测块365。当视频帧译码为帧间译码(即,b或p)条带时,预测处理单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收的运动矢量和其它语法元素生成当前视频条带的视频块的预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以根据dpb 330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。
[0177]
预测处理单元360用于通过解析运动矢量和其它语法元素确定当前视频条带的视频块的预测信息,并使用预测信息来生成正在解码的当前视频块的预测块。例如,预测处理单元360使用接收到的一些语法元素来确定用于对视频条带的视频块进行编码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,b条带,p条带或gpb条带)、条带的参考图像列表中的一个或多个的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。
[0178]
反量化单元310可以用于对码流中提供的并由熵解码单元304解码的量化变换系数进行反量化(即,解量化(de-quantize))。反量化过程可以包括:使用视频编码器100计算的视频条带中的每个视频块的量化参数,以确定应应用的量化程度以及反量化程度。
[0179]
逆变换处理单元312用于对变换系数应用逆变换,例如,逆dct、逆整数变换或概念上类似的逆变换过程,以便在像素域中生成残差块。
[0180]
重建单元314(例如,求和器314)用于将逆变换块313(即,重建残差块313)添加到预测块365,以获得像素点域中的重建块315,例如,通过将重建残差块313的像素点值添加到预测块365的像素点值。
[0181]
环路滤波单元320(在译码环路中或译码环路之后)用于对重建块315进行滤波,以获得滤波块321,以例如平滑像素过渡或提高视频质量。在一个示例中,环路滤波单元320可以用于执行以下描述的滤波技术的任何组合。环路滤波器单元320表示一个或多个环路滤波器,例如去块滤波器、采样自适应偏移(sample-adaptive offset,sao)滤波器和其它滤波器,例如双边滤波器,自适应环路滤波器(adaptive loop filter,alf)、锐化或平滑滤波器或协作滤波器。尽管在图3中环路滤波器单元320示出为环内滤波器,但在其它配置中,环路滤波器单元320可以实现为后环路滤波器。
[0182]
然后,给定帧或图像中的解码视频块321存储在解码图像缓冲器330中,解码图像缓冲器330存储用于后续运动补偿的参考图像。
[0183]
解码器30用于例如通过输出端312输出解码图像311,以呈现给用户或由用户观看。
[0184]
视频解码器30的其它变型可以用于解码压缩码流。例如,解码器30可以在没有环路滤波单元320的情况下生成输出视频流。例如,对于某些块或帧,基于非变换的解码器30可以在没有逆变换处理单元312的情况下直接量化残差信号。在另一种实现方式中,视频解码器30可以将反量化单元310和逆变换处理单元312组合成单个单元。
[0185]
图4为本发明的一个实施例提供的视频译码设备400的示意图。如本文所述,视频译码设备400适合于实现所公开的实施例。在一个实施例中,视频译码设备400可以是解码器(例如,图1a中的视频解码器30)或编码器(例如,图1a中的视频编码器20)。在一个实施例中,视频译码设备400可以是如上所述的图1a中的视频解码器30或图1a中的视频编码器20的一个或多个组件。
[0186]
视频译码设备400包括:用于接收数据的入端口410和接收单元(rx)420;用于处理数据的处理器、逻辑单元或中央处理器(central processing unit,cpu)430;用于发送数据的发送器单元(tx)440和出端口450;以及用于存储数据的存储器460。视频译码设备400还可以包括耦合到入端口410、接收器单元420、发送器单元440和出端口450的光电(optical-to-electrical,oe)组件和电光(electrical-to-optical,eo)组件,以用于光或电信号的出或入。
[0187]
处理器430由硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器430与入端口410、接收单元420、发送器单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述公开的实施例。例如,译码模块470实现、处理、准备或提供各种译码操作。因此,包括译码模块470大大提高了视频译码设备400的功能,并影响视频译码设备400到不同状态的转换。或者,译码模块470实现为存储在存储器460中并由处理器430执行的指令。
[0188]
存储器460包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择此类程序用于执行时存储程序,以及存储在程序执行期间读取的指令和数据。存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、三元内容寻址存储器(ternary content-addressable memory,tcam)和/或静态随机存取存储器(static random-access memory,sram)。
[0189]
图5为一个示例性实施例通过的装置500的简化框图,该装置500可以用作图1a中的源设备310和目的设备320中的一者或两者。装置500可以实现上述本技术的技术。装置500可以是包括多个计算设备的计算系统的形式,也可以是单个计算设备的形式,例如手机、平板电脑、膝上型电脑、笔记本电脑、台式电脑等。
[0190]
装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。尽管所公开的实现方式可以通过单个处理器(例如处理器502)实施,但是可以通过一个以上的处理器来提高速度和效率。
[0191]
装置500中的存储器504在一种实现方式中可以是只读存储器(read only memory,rom)设备或随机存取存储器(random access memory,ram)设备。可以使用任何其它合适类型的存储设备作为存储器504。存储器504可以包括由处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括使
处理器502执行本文描述的方法的至少一个程序。例如,应用程序510可以包括应用程序1至n,其还包括执行本文所描述的方法的视频译码应用程序。装置500还可以包括辅助存储器514形式的其它存储器,例如,辅助存储器514可以是与移动计算设备一起使用的存储卡。由于视频通信会话可能包含大量信息,因此它们可以全部或部分地存储在辅助存储器514中,并且根据需要加载到存储器504中用于进行处理。
[0192]
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是触摸敏感显示器,触摸敏感显示器将显示器与可操作以感测触摸输入的触摸敏感元件相结合。显示器518可以通过总线512耦合到处理器502。除了显示器518之外或作为显示器518的替代方案,还可以提供允许用户对装置500进行编程或以其它方式使用装置500的其它输出设备。当输出设备是或包括显示器时,显示器可以通过各种方式实现,包括通过液晶显示器(liquid crystal display,lcd)、阴极射线管(cathode-ray tube,crt)显示器、等离子显示器或发光二极管(light emitting diode,led)显示器,例如有机led(organic led,oled)显示器。
[0193]
装置500还可以包括图像感测设备520或与图像感测设备520通信,图像感测设备520例如为照相机或任何现有的或以后开发的、能够感测例如操作装置500的用户的图像等图像的其它图像感测设备520。可以将图像感测设备520定位成朝向操作装置500的用户。在一个示例中,图像感测设备520的位置和光轴可以使视野包括直接邻近显示器518的区域,从该区域可以看见显示器518。
[0194]
装置500还可以包括声音感测设备522或与声音感测设备522通信,声音感测设备522例如为麦克风或任何现有的或以后开发的、能够感测装置500附近声音的其它声音感测设备。可以将声音感测设备522定位成朝向操作装置500的用户,并且可以用于接收用户在操作装置500时发出的声音,例如语音或其它话语。
[0195]
尽管图5将装置500的处理器502和存储器504描绘成集成到单个单元中,但可以使用其它配置。处理器502的操作可以分布在多个机器(每个机器具有一个或多个处理器)上,这些机器可以直接耦合或通过局域网或其它网络耦合。存储器504可以分布在多个机器上,例如基于网络的存储器或执行装置500的操作的多个机器中的存储器。尽管在这里描述为单个总线,但装置500的总线512可以由多个总线组成。此外,辅助存储器514可以直接耦合到装置500的其它组件,或者可以通过网络访问,并且可以包括单个集成单元(例如存储卡)或多个单元(例如多个存储卡)。因此,可以以多种配置实现装置500。
[0196]
视频编码器20可以在编码前将输入视频帧分割成块。本发明中的术语“块”用于任何类型块或任何深度块,例如,术语“块”包括但不限于根块、块、子块、叶节点等。待译码的块不一定具有相同的大小。一个图像可以包含不同大小的块,视频序列的不同图像的块栅格也可以不同。图6a至6e示出了vvc中的译码树单元(coding tree unit,ctu)/译码单元(coding unit,cu)分割模式。
[0197]
图6a示出了使用四叉树(quad-tree,qt)分割的块分割结构。qt是一种用于块分割的树结构,其中大小为4m
×
4n的节点可以分割成四个大小为2m
×
2n的子节点。
[0198]
图6b示出了使用垂直方向的二叉树(binary tree,bt)分割的块分割结构。
[0199]
图6c示出了使用水平方向的二叉树(binary tree,bt)分割的块分割结构。bt是一种用于块分割的树结构,其中大小为4m
×
4n的节点可以水平分割成大小为4m
×
2n的两个子
节点,或者垂直分割成大小为2m
×
4n的两个子节点。
[0200]
图6d示出了使用垂直方向的三叉树(ternary tree,tt)分割的块分割结构。
[0201]
图6e示出了使用水平方向的三叉树(ternary tree,tt)分割的块分割结构。tt是一种用于块分割的树结构,其中大小为4m
×
4n的节点可以水平分割成大小分别为4m
×
n、4m
×
2n和4m
×
n的三个子节点;或者垂直分割成大小分别为m
×
4n、2m
×
4n和m
×
4n的三个子节点。在图6d或图6e所示的三个子节点中,最大的节点位于中心。
[0202]
四叉树加二叉树(quad-tree plus binary tree,qtbt)是一种四叉树加二叉树结构,其中先用四叉树分割来分割块,再用二叉树分割来分割每个四叉树子节点。四叉树加二叉树或三叉树(quad-tree plus binary tree or ternary tree,qt-bt/tt)是一种四叉树加二叉树或三叉树结构,首先通过四叉树分割来分割块,然后可以通过二叉树或三叉树分割来进一步分割每个四叉树子节点。
[0203]
对于与特定分割深度相关的块,编码器20确定使用哪种分割类型(包括不进一步分割),并且显式或隐式地将所述确定的分割类型(例如,分割类型可以根据预定规则推导出来)指示给解码器30。例如,编码器20可以根据检查使用不同分割类型的块的率失真成本来确定待使用的分割类型。
[0204]
本发明中的术语“块”是一个广义术语,包括但不限于根块、块、子块、叶节点等。
[0205]
除了hevc/h.265标准中使用的单树(single tree,st)译码之外,视频译码标准还引入了双树(dual tree,dt)译码。st或dt是根据条带或帧类型(如帧内或帧间、条带内或条带间)进行选择的。在单树译码模式下,亮度和色度分量共用一个分割树。在双树译码模式下,亮度和色度分量是分别进行分割的,即亮度和色度分量使用独立的分割方案。
[0206]
图像压缩级别由量化参数(quantization parameter,qp)控制,量化参数可以针对整个图像固定(例如,通过相同的量化参数值),或者可以针对图像的不同区域具有不同的量化参数值。
[0207]
确定量化参数的一种方法是译码单元(coding unit,cu)级别的量化参数(quantization parameter,qp)指示。这种方法可以灵活地改变图像不同区域的qp值,尤其是在一些cu深度(即,定义分割层的分割深度)。为了给图像的某个区域指示qp信号,使用增量qp指示(delta qp signaling)方法。在该方法中,预测qp((qp
c_pred
)与当前区域的实际qp之间的差值(即增量qp)通过码流进行指示。增量qp值及其粒度(例如,分割块的大小)由图像参数集(picture parameter set,pps)中的开-关控制标志和最大深度(例如,增量qp语法元素)定义。对于具有较大分割深度的所有cu,不指示增量qp值,但可以和顶级cu使用相同的值。在hevc标准中,亮度译码块(coding block,cb)的qp值是根据预测qp(qpy_pred)推导出来的,而预测qp又取决于帧/条带/分块中的cb位置。然后根据公式1推导qpy变量:
[0208]
qpy=((qpy_pred cuqpdeltaval 52 2*qpbdoffsety)%(52 qpbdoffsety))-qpbdoffsety
ꢀꢀꢀ
(公式1)
[0209]
其中,cuqpdeltaval是为译码单元(coding unit,cu)指示或推导的增量qp值;qpbdoffsety是取决于亮度位深的恒定偏移量(在hevc标准中,该术语对应亮度阵列的像素点的位深)。最后,亮度分量的量化参数qp
′y可以通过以下公式2计算:
[0210]
qp
′y=qpy qpbdoffsety(公式2)
[0211]
变量qpcb和qpcr分别根据等于qpicb或qpicr的索引qpi设置为等于量化表(例如
表1)中指定的值qpc,并且qpicb和qpicr通过公式3推导如下:
[0212]
qpicb=clip3(-qpbdoffsetc,57,qpy pps_cb_qp_offset slice_cb_qp_offset)
[0213]
qpicr=clip3(-qpbdoffsetc,57,qpy pps_cr_qp_offset slice_cr_qp_offset)
[0214]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式3)
[0215]
其中,qpbdoffsetc是取决于色度位深的恒定偏移量(在hevc标准中,该术语对应色度阵列的像素点的位深);pps_cb_qp_offset或pps_cr_qp_offset是由图像参数集(picture parameter set,pps)指示的cb分量或cr分量的固定偏移,slice_cb_qp_offset或slice_cr_qp_offset是cb分量或cr分量的固定偏移量,在条带头中指示。
[0216][0217]
表1-以hevc中qpc作为qpi的函数的规范为例
[0218]
qpi《303031323334353637383940414243》43qpc=qpi2930313233333434353536363737=qpi-6
[0219]
cb和cr分量的色度量化参数(qp

cb和qp

cr)根据公式5推导如下:
[0220]
qp

cb=qpcb qpbdoffsetc
[0221]
qp

cr=qpcr qpbdoffsetc
[0222]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式5)
[0223]
应注意,上述增量qp机制仅用于单树(single tree,st),并且可能不适用于双树(dual tree,dt),因为亮度和色度分量可以使用不同的分割树。
[0224]
通常,本发明实施例涉及视频译码领域。具体地,本发明实施例涉及一种增量qp指示,它是视频解码设备中的解量化装置的一部分。本发明实施例提出了应用于双树(dual tree,dt)的增量qp机制的不同方式。
[0225]
与上述仅用于单树(single tree,st)的增量qp机制类似,这种机制无论树的类型(st或dt),cb和cr分量的色度量化参数都根据qpi值、根据公式6进行推导:
[0226]
qp

cb=qpcb qpbdoffsetc
[0227]
qp

cr=qpcr qpbdoffsetc
[0228]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式6)
[0229]
其中qpcb和qpcr是根据量化表或映射表(如表1)进行推导的,并且取决于qpi值。与用于单树的增量qp指示相反,本发明实施例无论树的类型(例如,单树或双树),都根据以下公式7计算色度分量的qpi值:
[0230]
qpicb=clip3(-qpbdoffsetc,69,qpc
basic
pps_cb_qp_offset slice_cb_qp_offset)
[0231]
qpicr=clip3(-qpbdoffsetc,69,qpc
basic
pps_cr_qp_offset slice_cr_qp_offset)
[0232]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式7)
[0233]
其中qpc
basic
是基本色度块qp值,其取决于qp
c_pred
值,并且可以通过以下描述的不同方法中的一种方法计算。
[0234]
应注意,计算qpicb和qpicr的公式7中的常数69是根据量化表(如表1)选择的,并
假设允许的最大qp值为63,因此该常数计算为qpi与qpc之间的最大差值加上最大qp值。通常情况下,该常数可以是预定义的,或者根据一些值指示。
[0235]
双树(dual tree,dt)译码方法假设亮度和色度分量具有不同的分割树,并且每个分量都有自己的分割树。这会导致一个色度块(即色度分量中的块)对应一个以上的亮度块(即亮度分量中的块),或者反之亦然。图8为4:2:0色度子采样的示例,其中整个色度块对应多个分割的亮度块。图中的数字表示亮度分量(或平面)与色度分量(或平面)之间的并置点(像素)。
[0236]
图9为对图像的当前块执行反量化过程的示例性流程图。该过程可以由解码器执行。图像包括亮度分量和色度分量,亮度分量和色度分量通过不同的分割树分割成多个块。
[0237]
步骤902:从接收到的码流中获取一个或多个现有量化参数(quantization parameter,qp)值,其中一个或多个现有qp值与色度分量中的当前块相关。
[0238]
在该步骤中,现有qp值与当前块(例如待执行反量化的块)相关。例如,此类现有qp值可以包括以下中的至少一个:亮度分量中的并置块qp值、色度分量中的当前块的一个或多个相邻块的qp值、亮度分量中的并置块的一个或多个相邻块的qp值。
[0239]
亮度分量中的并置块是指与色度分量中的当前块具有映射关系的块。
[0240]
步骤904:根据一个或多个现有qp值确定色度分量中的当前块的qp值。
[0241]
有多种不同方法集确定色度分量中的块的qp值(或色度块qp值,即,qp
c_pred
)。总之,第一方法集侧重于根据现有相关qp值确定色度块qp值(例如,视为预测)。第二方法集是根据现有相关qp值确定色度块qp值(例如,视为预测)和在所接收的码流中指示的色度分量qp值(例如,视为增量)。第三方法集是根据现有相关qp值确定色度块qp值(例如,视为预测)和在所接收的码流中指示的色度qp偏移值(例如,视为调整偏移量)。
[0242]
步骤906:通过所述确定的qp值对色度分量中的当前块进行反量化。
[0243]
在本步骤中,在确定色度分量中的当前块的qp值(或色度块qp值)后,对色度分量中的块进行反量化。
[0244]
图10为对图像的当前块执行反量化过程的示例性流程图。该过程可以由编码器执行。
[0245]
步骤1010:在本步骤中,通过所述确定的qp对色度分量中的当前块进行量化。例如,qp可以通过用户设置和/或率失真优化等确定。
[0246]
步骤1020:获取一个或多个现有量化参数(quantization parameter,qp)值。该/这些现有qp值也包括在码流中。一个或多个现有qp值与色度分量中的当前块相关。
[0247]
步骤1030:根据一个或多个现有qp值和所述确定的qp值确定/表示色度分量中的当前块的qp参数。具体地,为了发送色度分量中的当前块的qp值(所述确定的qp),将参数包括在码流中,其中,该参数是通过一个或多个现有qp值确定的。可以通过从所述确定的qp中减去一个或多个现有qp值来确定,或者以其它方式,例如通过还包括其它参数的公式确定。
[0248]
步骤1040:将qp参数包括在码流中。到码流中还可以包括熵译码,例如整数译码、算术译码或任何其它可变长度译码。熵译码可以是上下文自适应的。但是,这些仅仅是示例,并且本发明可以采用任何类型的译码,包括固定长度译码。
[0249]
根据一实施例,提供了用于量化和反量化的装置,该装置可用于相应的编码器侧和解码器侧。它们具有对应于上述编解码方法的特征。
[0250]
具体地,提供了一种用于对图像的当前块进行反量化的装置,图像包括亮度分量和色度分量,将亮度分量和/或色度分量分割成多个块。该装置在图11中示出为装置1100。该装置还包括以下功能单元(电路):
[0251]
码流解析器(也称为码流解析单元(或电路))1110,用于从码流获得一个或多个现有量化参数(quantization parameter,qp)值。一个或多个现有qp值与色度分量中的当前块相关。色度分量可以是色度分量中的任何一种或多种。
[0252]
qp确定单元(或电路)1120,用于根据一个或多个现有qp值确定色度分量中的当前块的qp值。
[0253]
反量化器(也称为反量化单元(或电路))1130,用于通过所述确定的qp值对色度分量中的当前块进行反量化。
[0254]
还提供了图12中所示出的装置1200,用于量化图像的当前块。图像包括亮度分量和色度分量,将亮度分量和/或色度分量分割成多个块。该装置包括:
[0255]
量化器(也称为量化单元(或电路))1210,用于通过所述确定的qp值对色度分量中的当前块进行量化。
[0256]
提取单元(或电路)1220,用于获取一个或多个现有量化参数(quantization parameter,qp)值,并将一个或多个现有qp值包括到码流中,其中一个或多个现有qp值与色度分量中的当前块相关。
[0257]
qp确定单元(或电路)1230,用于根据一个或多个现有qp值和所述确定的qp值确定色度分量中的当前块的qp参数。
[0258]
码流生成单元(或电路,也称为码流生成器)1240,用于将qp参数包括在码流中。
[0259]
下面是用于确定色度块qp值的实施例。
[0260]
1.根据一个或多个相关的现有qp值确定色度块qp值
[0261]
在第一方法集中,提供了三组方法。
[0262]
a.第一组方法:在该方法组中,色度块qp值qp
c_pred
是根据表示为qp
c_pred_luma
的并置亮度qp值计算的。
[0263]
(1)第一方法是,根据亮度分量中并置块的qp值确定色度分量中当前块的qp值(即色度块qp值)。选择色度平面(或分量)中的一个点(表示为映射点,例如点c5),qp
c_pred_luma
确定为与亮度平面中的当前映射点(例如点l5)并置的块的qp值。例如,如果选择图8中的点c5作为映射点,则qp
c_pred_luma
等于亮度译码块(例如,点l5所在的块)中对应的l5点的亮度qp值。应理解,可以选择色度点中的任一个作为映射点,包括但不限于上述图8中的示例。
[0264]
更具体地,公式7可以通过以下方式重新定义:
[0265]
qpicb=clip3(-qpbdoffsetc,69,qpy_basic pps_cb_qp_offset slice_cb_qp_offset)
[0266]
qpicr=clip3(-qpbdoffsetc,69,qpy_basic pps_cr_qp_offset slice_cr_qp_offset)
[0267]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式7.1)
[0268]
其中,qpy_basic根据如下分割树类型确定:
[0269]-如果treetype为single_tree,则qpy_basic设置为等于qpy。
[0270]-否则,将qpy_basic设置为等于并置亮度cu的qpy值,该亮度cu包括坐标为(xcb
cbwidth/2,ycb cbheight/2)的亮度像素点。
[0271]
(xcb,ycb)表示与当前色度译码块并置的亮度译码块的左上像素点相对于当前图像的左上亮度像素点。
[0272]
此外,qpy值可以根据以下公式计算:
[0273]
qpy=((qpy_pred cuqpdeltaval 64 2*qpbdoffsety)%(64
[0274]
qpbdoffsety))

qpbdoffsety
[0275]
其中,qpy_pred、cuqpdeltaval、qpbdoffsety以用于并置的亮度cu的常规的方式计算。将常数修改为64。
[0276]
换句话说,在一种示例性实现方式中,色度分量中的当前块的qp是根据并置块的(现有)参数确定的。并置块可以是与当前块并置的亮度分量块。注意,通常,亮度块的分割(译码树)可以不同于色度块的分割(译码树)。因此,可以存在覆盖与相同色度块相同的图像区域的更多(或更少或相同数量的)亮度块。因此,在本示例中,将并置块确定为亮度块,其覆盖包括当前色度块的特定预定义像素点的区域。例如,该特定像素点可以是当前色度块右下四分之一部分的左上角像素点。该示例性像素点位置位于中心或当前块的附近(或当前块中)。但是,本发明不限于此特定像素点位置。可以采用任何其它位置,例如左上等。
[0277]
附录a给出了量化参数推导过程的详细示例。
[0278]
(2)第二方法是,根据亮度分量中并置块的一个或多个相邻块的现有qp值的加权和确定色度分量中当前块的qp值(即色度块qp值)。在该方法中,qp
c_pred_luma
是根据若干个相同权重的点的亮度qp值的并置值计算的。例如,qp
c_pred_luma
可以根据点(它们是并置的角色度点c1、c2、c3、c4)的亮度qp值通过以下公式计算:
[0279][0280]
其中,lumaqp1
……
lumaqp4是图8中l1、l2、l3、l4位置上的亮度cu的qp值。
[0281]
(3)第三方法是,qp
c_pred_luma
是根据色度译码块(cu)值与并置的亮度cu的交集,通过以下方式中的一种计算的:
[0282]
备选方案1:如果色度cu完全由一个亮度cu覆盖,则从亮度cu中提取qp
c_pred_luma

[0283]
备选方案2:如果色度cu由一个以上的亮度cu覆盖,并且如果所有这样的亮度cu具有相同的qp值,则从亮度cu中提取qp
c_pred_luma

[0284]
备选方案3:如果色度cu由一个以上的亮度cu覆盖,如果不是所有这些亮度cu都具有相同的qp值,则根据亮度cu的qp值的加权函数从亮度cu中提取qp
c_pred_luma
,其中每个亮度cu增量qp的权重由当前色度cu与亮度cu的空间对应关系确定。
[0285]
b.第二组方法:在该方法组中,色度cu qp预测是根据相邻色度cu qp值(即色度分量中块的一个或多个相邻块的qp值)计算的,并表示为qp
c_pred_chroma
。也就是说,根据色度分量中当前块的相邻块的现有qp值的加权和来确定色度分量中当前块的qp值(即色度cu qp值)。该组中的方法可以与解码端已经可用的任何相邻色度cu一起操作。在这种情况下,qp
c_pred_chroma
可以通过公式9计算:
[0286][0287]
其中,n为编号为n的相邻cu的集合,qpn为集合中第n个相邻cu对应的qp值。
[0288]
c.第三组方法:在该方法组中,根据qp
c_pred_luma
和qp
c_pred_chroma
计算色度cu qp值
(或预测),可以通过上述方法中的任一种方法计算,色度cu qp预测表示为qp
c_pred_mixed
。在该方法中,根据色度分量中当前块的相邻块的现有qp值的加权和和亮度分量中的并置块的qp值来确定色度分量中当前块的qp值(即色度cu qp值)。或者,根据色度分量中的当前块的相邻块的现有qp值的加权和和亮度分量中的并置块的相邻块的现有qp值的加权和,确定色度分量中的当前块的qp值(即色度cu qp值)。例如,qp
c_pred_mixed
可以计算为qp
c_pred_luma
和qp
c_pred_chroma
的加权和。在一个示例中,可以通过以下公式10计算:
[0289][0290]
2.确定色度块qp值的第二方法集
[0291]
在该方法集中,根据一个或多个现有qp值和所接收到的码流中指示的色度增量qp值,确定色度分量中当前块的qp值(或色度块qp值),一个或多个现有qp值与色度分量中的当前块相关。
[0292]
本节描述在双树情况下确定qpc
basic
推导(或增量)的不同方法。
[0293]
(1)第一方法:在该方法中,qpc
basic
值直接取自qp
c_pred_luma
、qp
c_pred_chroma
或qp
c_pred_mixed
值中的一个,这些值通过上述第一方法集中的相应方法计算。在该方法中,如果使用双树,则亮度cu包括用于增量亮度qp表示的语法元素,而色度cu不包括用于增量色度qp表示的任何语法元素。
[0294]
表2-第一方法的增量qp指示的示例
[0295][0296]
表3-第一方法的增量qp指示的另一个示例
[0297][0298]
表2和表3给出了该方法如何实现指示机制的两个示例。
[0299]
在该方法中,qpc
basic
等于qp
c_pred
,其反过来可以等于qp
c_pred_luma
、qp
c_pred_chroma
或qp
c_pred_mixed
值中的一个值。在这种情况下,cb和cr分量的qpi值可以通过以下公式11计算:
[0300]
qpicb=clip3(-qpbdoffsetc,69,qpc
basic
pps_cb_qp_offset slice_cb_qp_offset)
[0301]
qpicr=clip3(-qpbdoffsetc,69,qpc
basic
pps_cr_qp_offset slice_cr_qp_offset)
[0302]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式11)
[0303]
其中,qpc
basic
∈{qp
c_pred_luma
,qp
c_pred_chroma
,qp
c_pred_mixed
},以及qp
c_pred_luma
、qp
c_pred_chroma
、qp
c_pred_mixed
中的每一个是通过上述方法中的一个推导的。更具体地,将当前方法与上述qpc
basic
推导方法1相结合,公式11可以重新定义如下:
[0304]
qpicb=clip3(-qpbdoffsetc,69,qpy_basic pps_cb_qp_offset slice_cb_qp_offset)
[0305]
qpicr=clip3(-qpbdoffsetc,69,qpy_basic pps_cr_qp_offset slice_cr_qp_offset)
[0306]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式11.1)
[0307]
其中,qpy_basic根据如下分割树类型确定:
[0308]
如果treetype为single_tree,则qpy_basic设置为等于qpy。
[0309]
否则,将qpy_basic设置为等于并置亮度cu的qpy值,该亮度cu包括坐标为(xcb cbwidth/2,ycb cbheight/2)的亮度像素点。
[0310]
(xcb,ycb)指定与当前色度译码块并置的亮度译码块的左上像素点相对于当前图像的左上亮度像素点。
[0311]
qpy值可以根据以下公式计算:
[0312]
qpy=((qpy_pred cuqpdeltaval 64 2*qpbdoffsety)%(64
[0313]
qpbdoffsety))

qpbdoffsety
[0314]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式11.1a)
[0315]
其中,qpy_pred、cuqpdeltaval、qpbdoffsety以用于并置的亮度cu的常规的方式计算。
[0316]
公式11和11.1中的常数69表示最大可能qp值增加6;公式11.1a中的常数64表示最大可能qp值增加1。附录a给出了量化参数推导过程的详细示例。
[0317]
在该方法中,例如,delta_qp指示函数可以通过如下方式实现。
[0318]
表4-方法集中的第一方法的delta_qp()函数指示的示例
[0319][0320]
在表4中,语法元素cu_qp_delta_enabled_flag表示高电平标志,表示当前条带/图像/序列是否允许增量qp;标志isculumaqpdeltacoded表示是否在当前深度上发送增量qp;对于更大深度或等深度的cu块,delta_qp和最近指示的一个值相同。用于iscuqpdeltacoded标志推导的语法元素cu_qp_delta_enabled_flag和diff_cu_qp_delta_depth可以在图像参数集(picture parameter set,pps)中指示。
[0321]
表5-方法集中的第一方法的pps扩展示例
[0322]
[0323][0324]
更具体地,cu_qp_delta_enabled_flag等于1表示diff_cu_qp_delta_depth语法元素存在于pps中,并且cu_qp_delta_abs和cu_qp_delta_sign_flag可以存在于变换单元语法中。cu_qp_delta_enabled_flag等于0表示diff_cu_qp_delta_depth语法元素不存在于pps中,并且cu_qp_delta_abs和cu_qp_delta_sign_flag不存在于变换单元语法中。
[0325]
cu_qp_delta_abs表示当前译码单元的亮度量化参数与其预测值的差值cuqpdeltaval的绝对值。
[0326]
cu_qp_delta_sign_flag表示cuqpdeltaval的符号,如下:
[0327]-如果cu_qp_delta_sign_flag等于0时,对应的cuqpdeltaval为正值。
[0328]-否则(cu_qp_delta_sign_flag等于1),对应的cuqpdeltaval为负值。
[0329]
当cu_qp_delta_sign_flag不存在时,推断它等于0。
[0330]
当cu_qp_delta_abs存在时,变量iscuqpdeltacoded和cuqpdeltaval推导如下:
[0331]
iscuqpdeltacoded=1
[0332]
cuqpdeltaval=(-1)
cu_qp_delta_sign_flag
*cu_qp_delta_abs
[0333]
cuqpdeltaval的值应在-(32 qpbdoffsety/2)至 (31 qpbdoffsety/2)之间(包括-(32 qpbdoffsety/2)和 (31 qpbdoffsety/2))。
[0334]
应注意,该方法可以用于cb和cr分量的qpi参数推导,用于任何色度cu深度或仅用于小于一些预定义值的深度,位于较大深度或相等深度的cu块和最近处理的一个值相同。
[0335]
或者,第一种方法也可以指示色度分量的单独的增量qp语法。
[0336]
表6-第一方法中单独的增量qp指示的示例
[0337]
[0338][0339]
表7-第一方法中单独的增量qp指示的另一个示例
[0340]
[0341][0342]
表6和表7给出了色度分量的单独的增量qp语法指示的两个示例,仅针对双树情况下的色度cu,或者同时针对双树情况下的色度cu和单树情况下的单cu。表6和表7中的delta_qp_y()和delta_qp_c()过程通过与表4中所示的delta_qp_c()类似的过程实现。应注意,在单独指示针对双树情况下的色度cu和/或针对单cu中的色度平面的增量qp语法的情况下,表4中的pps级控制标志cu_qp_delta_enabled_flag可以针对亮度和色度分量实现一次(联合实现),也可以分别实现为两个控制标志:cu_qp_delta_enabled_flag_luma和cu_qp_delta_enabled_flag_chroma。
[0343]
假设当该方法与上述qpc
basic
推导方法1结合时的特殊情况,针对双树情况下的色度cu或同时针对双树情况下的色度cu和单树情况下的单cu(如果应用了两者),公式11可以重新定义下:
[0344]
qpicb=clip3(-qpbdoffsetc,69,qpy_basic pps_cb_qp_offset slice_cb_qp_offset
[0345]
delta_qp_c)
[0346]
qpicr=clip3(-qpbdoffsetc,69,qpy_basic pps_cr_qp_offset slice_cr_qp_offset
[0347]
delta_qp_c)
[0348]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式11.2)
[0349]
其中,qpy_basic根据如下分割树类型确定:
[0350]-如果treetype为single_tree,则qpy_basic设置为等于qpy。
[0351]-否则,将qpy_basic设置为等于并置亮度cu的qpy值,该亮度cu包括坐标为(xcb cbwidth/2,ycb cbheight/2)的亮度像素点。
[0352]
(xcb,ycb)指定与当前色度译码块并置的亮度译码块的左上像素点相对于当前图像的左上亮度像素点。
[0353]
qpy值可以根据以下公式计算:
[0354]
qpy=((qpy_pred cuqpdeltaval 64 2*qpbdoffsety)%(64
[0355]
qpbdoffsety))

qpbdoffsety
[0356]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式11.3)
[0357]
其中,qpy_pred、cuqpdeltaval、qpbdoffsety以用于并置的亮度cu的常规的方式计算。
[0358]
公式11.1中的常数69表示最大可能qp值增加6;公式11.3中的常数64表示最大可能qp值增加1。
[0359]
或者,可以将delta_qp_c值添加到qp

cb和qp

cb的最终等式中:
[0360]
qp

cb=qpcb qpbdoffsetc delta_qp_c
[0361]
qp

cr=qpcr qpbdoffsetc delta_qp_c
[0362]
在这种情况下,使用公式11.1进行计算qpicb和qpicr值,然后通过色度qp映射函数,根据qpicb和qpicr按照常规方法计算qpcb和qpcr值。常规的色度qp映射函数如表15所示。
[0363]
(2)第二方法:在该方法中,qpc
basic
值推导为qp
c_pred_luma
、qp
c_pred_chroma
或qp
c_pred_mixed
值中的一个,这些值是通过上述对应的预测方法中的任一种计算的,cuqpchromadeltaval值可以在色度cu中指示。在该方法中,在双树的情况下,亮度cu包括用于增量亮度cu表示的语法元素,而色度cu包括用于增量色度cu差异表示的语法元素。
[0364]
表6-第二方法的增量qp指示的示例
[0365][0366][0367]
在该方法中,qpc
basic
可以通过以下公式12计算:
[0368]
qpc
basic
=qp
c_pred
cuqpchromadeltaval
ꢀꢀꢀ
(公式12)
[0369]
其中,qp
c_pred
∈{qp
c_pred_luma
,qp
c_pred_chroma
,qp
c_pred_mixed
},以及qp
c_pred_luma
,qp
c_pred_chroma
,qp
c_pred_mixed
中的每一个是通过上述方法中的一个推导的;cuqpchromadeltaval是色度块的增量qp值,其可以通过以下公式13推导。
[0370]
cuqpchromadeltaval
[0371]
=cu_chroma_qp_delta_abs*(1-2*cu_chroma_qp_delta_sign_flag)
[0372]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式13)
[0373]
在这种情况下,cb和cr分量的qpi值可以通过以下公式14计算:
[0374]
qpicb=clip3(-qpbdoffsetc,69,qpc
basic
pps_cb_qp_offset slice_cb_qp_offset)
[0375]
qpicr=clip3(-qpbdoffsetc,69,qpc
basic
pps_cr_qp_offset slice_cr_qp_offset)
[0376]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式14)
[0377]
在该方法中,delta_qp_luma和delta_qp_chroma指示功能可以如下方式实现。
[0378]
表7-第2方法的delta_qp_luma指示的示例
[0379][0380]
在表7中,语法元素cu_luma_qp_delta_enabled_flag表示高电平标志,表示当前条带/图像/序列是否允许增量亮度qp;标志isculumaqpdeltacoded表示是否在当前深度上发送增量qp;对于较大深度或相等深度的亮度cu块,delta_luma_qp()元素和最近指示的一个值相同。用于islumacuqpdeltacoded标志推导的语法元素cu_luma_qp_delta_enabled_flag和diff_cu_luma_qp_delta_depth可以在pps中指示。
[0381]
表8-第2方法的delta_qp_chroma指示的示例
[0382][0383]
[0384]
在表8中,语法元素cu_chroma_qp_delta_enabled_flag表示高电平标志,表示当前条带/图像/序列是否允许增量色度cu;标志iscuchromaqpdeltacoded表示是否在当前深度上发送增量qp;对于较大或相等深度的色度cu块,delta_chroma_qp()元素和最近指示的一个值相同。用于ischromacuqpdeltacoded标志推导的语法元素cu_chroma_qp_delta_enabled_flag和diff_cu_chroma_qp_delta_depth可以在pps中指示。
[0385]
表9-第2方法的pps扩展的示例
[0386][0387]
(3)第三方法:在该方法中,qpc
basic
值推导为qp
c_pred_luma
、qp
c_pred_chroma
或qp
c_pred_mixed
值中的一个,这些值是通过上述对应的预测方法种的任一种计算的,cuqpchromadeltaval值可以在色度cu中指示,且仅在一些预定义的深度处的色度cu深度上。所有深度大于预定义深度的色度cu,qpc
basic
值和最近处理的一个值相同。在该方法中,在双树的情况下,亮度cu包括用于增量亮度qp表示的语法元素,并且色度cu包括用于增量色度qp表示的语法元素(仅针对深度小于或等于预定义深度的色度cu)。
[0388]
在该方法中,可以根据表5和表6指示增量qp值,delta_qp_chroma()函数可以通过如下方式实现:
[0389]
表10-第2方法的delta_qp_chroma指示的示例
[0390][0391][0392]
表10中的ischromacuqpdeltacoded标志仅对于深度小于或等于预定义的深度的色度cu才等于0。
[0393]
(4)第四方法:在该方法中,特殊的语法元素可以指定使用哪种类型的预测计算。
高级元素cu_qp_chroma_der_type可以在编解码参数集(例如pps)中的一个编解码参数集中指示,并指定使用任何上述预测值计算方法中的哪一种。
[0394]
表11-第4方法的pps扩展的示例
[0395][0396]
在该方法中,cu_qp_chroma_der_type可以指定预测类型中的任一组,然后可以在该组内使用上述任何预定义的预测。
[0397]
应注意,在上述第一至第三方法中的一种方法中,cu_qp_chroma_der_type表示集合p中的索引,然后根据qp
c_pred
推导cb和cr分量的qpc
basic
值。
[0398]
(5)第五方法:在该方法中,cu_qp_chroma_der_type可以指定所有组中的一个特定预测类型。例如,假设一组可能的预测
[0399]
p
[0400]
={chromaqppredictionluma1,

,chromaqppredictionchroma1,chromaqppredictionmixed
[0401]
应注意,在上述第一至第三方法中的一种方法中,cu_qp_chroma_der_type表示集合p中的索引,然后根据qp
c_pred
推导cb和cr分量的qpc
basic
值,其中qp
c_pred
=p[cu_qp__chroma_qp_der_type]。
[0402]
3.确定色度块qp值的第三方法集
[0403]
根据一个或多个现有qp值和在所接收的码流中指示的色度qp偏移值(或增量qp偏移量),确定色度分量中当前块的qp值,现有一个或多个qp值与色度分量中的当前块相关。
[0404]
本节公开了在单树(separate tree,st)情况下色度qp偏移机制的使用。
[0405]
第一方法,根据qpicb和qpicr计算cb和cr的qp值qp

cb和qp

cr,其中qpicb和qpicr通过以下公式15计算:
[0406]
qpicb=clip3(-qpbdoffsetc,69,qpc
basic
pps_cb_qp_offset
[0407]
slice_cb_qp_offset cuqpoffsetcb)
[0408]
qpicr=clip3(-qpbdoffsetc,69,qpc
basic
pps_cr_qp_offset
[0409]
slice_cr_qp_offset cuqpoffsetcr)
[0410]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式15)
[0411]
其中,qpc
basic
值直接取自qp
c_pred_luma
、qp
c_pred_chroma
或qp
c_pred_mixed
值中的一个,这些值是根据上述对应预测方法中的任一种计算的;cuqpoffsetcb/cuqpoffsetcr变量是根据cb_qp_offset_list和cu_chroma_qp_offset_idx语法元素通过以下公式16推导的:
[0412]
cuqpoffsetcb=cb_qp_offset_list[cu_chroma_qp_offset_idx]
[0413]
cuqpoffsetcr=cr_qp_offset_list[cu_chroma_qp_offset_idx]
[0414]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式16)
[0415]
语法元素cb_qp_offset_list和cr_qp_offset_list是偏移表,可以在参数集中(例如pps中)以如下方式指示。
[0416]
表12-pps中的色度qp偏移指示的示例
[0417][0418]
在表12中,chroma_qp_offset_list_enabled_flag表示是否使用色度qp列表机制;chroma_qp_offset_list_len_minus1表示cb和cr分量的偏移列表长度;cb_qp_offset_list和cr_qp_offset_list表示cb和cr分量的可能偏移。
[0419]
cu_chroma_qp_offset_idx表示cb_qp_offset_list和cr_qp_offset_list中的某个元素,可以用于cuqpoffsetcb和cuqpoffsetcr计算。表13表示cu_chroma_qp_offset_idx指示的示例。
[0420]
表13-色度qp偏移指示的示例
[0421][0422]
增量qp偏移(在单树情况下)的语法可以如下表14所示。
[0423]
表14-在单树的情况下,增量qp偏移使用示例
[0424][0425]
根据本发明的另一个实施例,量化参数推导过程的方法描述如下:附录a量化参数的推导过程
[0426]
在此过程中,推导了亮度量化参数qp
′y和色度量化参数qp

cb
和qp

cr

[0427]
该过程的输入是亮度位置(xcb,ycb),在treetype等于single_tree或dual_tree_luma的情况下,表示当前亮度译码块的左上像素点相对于当前图像的左上亮度像素点;在treetype等于dual_tree_chroma的情况下,(xcb,ycb)表示与当前色度译码块并置的亮度译码块的左上像素点相对于当前图像的左上亮度像素点。
[0428]
在此过程中,推导了变量qpy、亮度量化参数qp

y、色度量化参数qp

cb和qp

cr。
[0429]
亮度位置(xqg,yqg),表示当前量化组的左上亮度像素点相对于当前图像的左上亮度像素点。水平和垂直位置xqg和yqg分别设置为等于xcb-(xcb&((1《《log2mincuqpdeltasize)-1))和ycb-(ycb&((1《《log2mincuqpdeltasize)-1))。量化组的亮度大小log2mincuqpdeltasize决定了共享相同qpy_pred的译码树块内最小区域的亮度大小。
[0430]
预测亮度量化参数qpy_pred通过以下顺序步骤推导:
[0431]
1.变量qpy_prev推导如下:
[0432]-如果以下条件中的一个或多个为真,则将qpy_prev设置为sliceqpy:
[0433]-当前量化组为条带中的第一量化组。
[0434]-当前量化组为分块中的第一量化组。
[0435]-当前量化组为译码树块行的第一量化组,entropy_coding_sync_enabled_flag等于1。
[0436]-否则,qpy_prev按照解码顺序设置为等于前一个量化组中最后一个译码单元的
亮度量化参数qpy。
[0437]
2.调用第xxx条中指定的z-扫描顺序中的块的可用性推导过程,将位置(xcurr,ycurr)设置为等于(xcb,ycb),相邻位置(xnby,ynby)设置为等于(xqg-1,yqg)作为输入,并将输出赋值给availablea。变量qpy_a推导如下:
[0438]-如果以下条件中的一个或多个为真,则将qpy_a设置为qpy_prev:
[0439]-availablea为假。
[0440]-包含覆盖亮度位置(xqg-1,yqg)的亮度译码块的译码树块的译码树块地址ctbaddra不等于ctbaddrints,其中ctbaddra推导如下:
[0441]
xtmp=(xqg-1)》》log2mintrafosize
[0442]
ytmp=yqg》》log2mintrafosize
[0443]
mintbaddra=mintbaddrzs[xtmp][ytmp]
[0444]
ctbaddra=mintbaddra》》(2*(ctblog2sizey-log2mintrafosize))
[0445]-否则,将qpy_a设置为等于包含覆盖(xqg-1,yqg)的亮度译码块的译码单元的亮度量化参数qpy。
[0446]
3.调用第xxx条中指定的z-扫描顺序中的块的可用性推导过程,将位置(xcurr,ycurr)设置为等于(xcb,ycb),相邻位置(xnby,ynby)设置为等于(xqg,yqg-1)作为输入,并将输出赋值给availableb。变量qpy_b推导如下:
[0447]-如果以下条件中的一个或多个为真,则将qpy_b设置为等于qpy_prev:
[0448]-availableb为假。
[0449]-包含覆盖亮度位置(xqg,yqg-1)的亮度译码块的译码树块的译码树块地址ctbaddrb不等于ctbaddrints,其中ctbaddrb推导如下:
[0450]
xtmp=xqg》》log2mintrafosize
[0451]
ytmp=(yqg-1)》》log2mintrafosize
[0452]
mintbaddrb=mintbaddrzs[xtmp][ytmp]
[0453]
ctbaddrb=mintbaddrb》》(2*(ctblog2sizey-log2mintrafosize))
[0454]-否则,将qpy_b设置为等于包含覆盖(xqg,yqg-1)的亮度译码块的译码单元的亮度量化参数qpy。
[0455]
4.预测亮度量化参数qpy_pred推导如下:
[0456]
qpy_pred=(qpy_a qpy_b 1)》》1
[0457]
变量qpy推导如下:
[0458]
qpy=((qpy_pred cuqpdeltaval 64 2*qpbdoffsety)%(64 qpbdoffsety))-qpbdoffsety
[0459]
亮度量化参数qp
′y推导如下:
[0460]
qp
′y=qpy qpbdoffsety
[0461]
根据qpi分别等于qpicb和qpicr的索引,将变量qpcb和qpcr设置为等于表15中指定的qpc的值,qpicb和qpicr推导如下:
[0462]
qpicb=clip3(-qpbdoffsetc,69,qpy_basic pps_cb_qp_offset slice_cb_qp_offset)
[0463]
qpicr=clip3(-qpbdoffsetc,69,qpy_basic pps_cr_qp_offset slice_cr_qp_
offset)
[0464]
其中,qpy_basic根据如下分割树类型确定:
[0465]-如果treetype为single_tree,则qpy_basic设置为等于qpy。
[0466]-否则,将qpy_basic设置为等于并置亮度cu的qpy值,该亮度cu包括坐标为(xcb cbwidth/2,ycb cbheight/2)的亮度像素点。
[0467]
cb和cr分量的色度量化参数qp

cb
和qp

cr
推导如下:
[0468]
qp

cb
=qpcb qpbdoffsetc
[0469]
qp

cr
=qpcr qpbdoffsetc
[0470]
表15-qpc作为qpi的函数的规范(色度qp映射函数)
[0471]
qpi《303031323334353637383940414243》43qpc=qpi2930313233333434353536363737=qpi-6
[0472]
根据本发明的第一方面的一个示例,该方法还包括:根据亮度分量中的并置块的一个或多个相邻块的现有qp值的加权和确定色度分量中的当前块的qp值。
[0473]
例如,亮度分量中的并置块有四个相邻块,因此色度分量中的当前块的qp值是亮度分量中的并置块的四个相邻块的qp值的平均和。
[0474]
这里需要提及的是,在一些情况下,并置块的相邻块可以不存在。在这种情况下,建议使用其它现有qp值来确定色度分量中的块的qp值。
[0475]
根据本发明的第一方面的一个示例,该方法还包括:根据色度分量中的当前块的相邻块的现有qp值的加权和确定色度分量中的当前块的qp值。
[0476]
根据本发明的第一方面的一个示例,该方法还包括:根据色度分量中的当前块的相邻块的现有qp值的加权和和亮度分量中的并置块的qp值,确定色度分量中的当前块的qp值。
[0477]
根据本发明的第一方面的一个示例,该方法还包括:根据色度分量中的当前块的相邻块的现有qp值的加权和和亮度分量中的并置块的相邻块的现有qp值的加权和,确定色度分量中的当前块的qp值。
[0478]
下文对上述实施例中所示的编码方法和解码方法的应用以及使用这些方法的系统进行说明。
[0479]
图13为用于实现内容分发服务的内容供应系统3100的框图。该内容供应系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。捕获设备3102与终端设备3106通过通信链路3104进行通信。该通信链路可以包括上述通信信道13。通信链路3104包括但不限于wifi、以太网、电缆、无线(3g/4g/5g)、usb或者其任何组合等。
[0480]
捕获设备3102生成数据,并且可以通过如上述实施例所示的编码方法对数据进行编码。或者,捕获设备3102可以将数据分发给流服务器(图中未示出),服务器对数据进行编码并将经编码的数据发送给终端设备3106。捕获设备3102包括但不限于照相机、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、pda、车载设备,或它们的任何组合等。例如,捕获设备3102可以包括如上所述的源设备12。当数据包括视频时,捕获设备3102中包括的视频编码器20实际上可以执行视频编码处理。当数据包括音频(即,语音)时,捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。对于一些实际场景,捕获设备3102通过将经编码的视频和音频数据复用在一起来进行分发。对于其它实用场景,例如在
视频会议系统中,不复用经编码的音频数据和经编码的视频数据。捕获设备3102将编码音频数据和编码视频数据分别分发给终端设备3106。
[0481]
在内容提供系统3100中,终端设备310接收并再现编码数据。终端设备3106可以是具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,nvr)/数字录像机(digital video recorder,dvr)3112、tv 3114、机顶盒(set top box,stb)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,pda)3122、车载设备3124或其任何组合,或者能够解码上述编码数据的设备。例如,终端设备3106可以包括如上所述的目的设备14。当经编码的数据包括视频时,终端设备中包括的视频解码器30优先进行视频解码。当经编码的数据包括音频时,终端设备中包括的音频解码器优先进行音频解码处理。
[0482]
对于带有显示器的终端设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,nvr)/数字录像机(digital video recorder,dvr)3112、tv 3114、个人数字助理(personal digital assistant,pda)3122或车载设备3124,终端设备可以将经解码的数据馈送到该终端设备的显示器。对于没有显示器的终端设备(例如stb 3116、视频会议系统3118或视频监控系统3120),连接外部显示器3126以接收并显示解码数据。
[0483]
该系统中的每个设备在进行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。
[0484]
图14为终端设备3106的一个示例的结构的图。在终端设备3106从捕获设备3102接收流之后,协议处理单元(protocol proceeding unit)3202分析流的传输协议。协议包括但不限于实时流协议(real time streaming protocol,rtsp)、超文本传输协议(hyper text transfer protocol,http)、http直播协议(http live streaming protocol,hls)、mpeg-dash、实时传输协议(real-time transport protocol,rtp)、实时消息协议(real time messaging protocol,rtmp)或其任何组合等。
[0485]
协议处理单元3202对流进行处理后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分为经编码的音频数据和经编码的视频数据。如上所述,对于一些实际场景,例如在视频会议系统中,不复用经编码的音频数据和经编码的视频数据。在这种情况下,将经编码的数据发送到视频解码器3206和音频解码器3208,无需经过解复用单元3204。
[0486]
通过解复用处理,生成视频基本流(elementary stream,es)、音频es和可选的字幕。视频解码器3206包括如上述实施例中所说明的视频解码器30,通过如上述实施例中所示的解码方法对视频es进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208,解码音频es以生成音频帧,并将该数据馈送到同步单元3212。或者,在将视频帧馈送到同步单元3212之前,可以将该视频帧存储在缓冲器(图14中未示出)中。类似地,在将音频帧馈送到同步单元3212之前,可以将该音频帧存储在缓冲器(图14中未示出)中。
[0487]
同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用关于经译码的音频和视频数据的表示的时间戳和关于数据流本身的传递的时间戳在语法中对信息进行译码。
[0488]
如果流中包括字幕,则字幕解码器3210解码字幕,并使字幕与视频帧和音频帧同
步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
[0489]
本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。
[0490]
在第一示例中,提供了一种用于对图像的当前块进行反量化的方法,其中,该方法由解码器执行,图像包括亮度分量和色度分量,将亮度分量和/或色度分量分割成多个块,该方法包括:从所接收到的码流中获取一个或多个现有量化参数(quantization parameter,qp)值,其中一个或多个现有qp值与色度分量中的当前块相关;根据一个或多个现有qp值确定色度分量中的当前块的qp值;通过所述确定的qp值对色度分量中的当前块进行反量化。
[0491]
例如,现有的一个或多个qp值包括以下至少一种:亮度分量中的并置块的qp值;亮度分量中的并置块的一个或多个相邻块;色度分量中的当前块的一个或多个相邻块。
[0492]
在一种示例性实现方式中,该方法还包括:根据亮度分量中的并置块的qp值确定色度分量中的当前块的qp值。
[0493]
或者或另外,根据亮度分量中的并置块的qp值确定色度分量中的当前块的qp值的步骤包括:确定与当前色度块的右下四分之一部分的左上角像素点并置的亮度块;取得所述确定的亮度块的qp值(qpy_basic);通过以下公式或根据以下公式推导出的新公式确定当前色度块的qpicb参数和qpicr参数:qpicb=clip3(-qpbdoffsetc,69,qpy_basic pps_cb_qp_offset slice_cb_qp_offset)和/或qpicr=clip3(-qpbdoffsetc,69,qpy_basic pps_cr_qp_offset slice_cr_qp_offset);根据qpicb参数和qpicr参数或值确定色度分量中的当前块的qp值。
[0494]
在一种示例性实现方式中,根据以下公式或者根据以下公式推导出的新公式确定色度分量中的当前块的qp值:qp

cb=qpcb qpbdoffsetc delta_qp_c和/或qp

cr=qpcr qpbdoffsetc delta_qp_c;其中,qpcb和qpcr通过应用色度qp映射函数从qpicb参数和qpicr参数中获得的。
[0495]
例如,根据亮度分量中的并置块的qp值确定色度分量中的当前块的qp值的步骤包括:确定与当前色度块的右下四分之一部分的左上角像素点并置的亮度块;取得所述确定的亮度块的qp值(qpy_basic);通过以下公式或根据以下公式推导出的新公式确定当前色度块的qpicb参数和qpicr参数:qpicb=clip3(-qpbdoffsetc,69,qpy_basic pps_cb_qp_offset slice_cb_qp_offset delta_qp_c)和/或qpicr=clip3(-qpbdoffsetc,69,qpy_basic pps_cr_qp_offset slice_cr_qp_offset delta_qp_c);根据qpicb参数和qpicr参数或值确定色度分量中的当前块的qp值。
[0496]
在一些示例性实现方式中,该方法用于单个cu,并且亮度分量中的并置块等于当前块。
[0497]
例如,该方法通过一个pps指示的控制标志(例如cu_qp_delta_enabled_flag)联合用于亮度和色度平面;如果控制标志(例如cu_qp_delta_enabled_flag)为真,则该方法同时用于亮度和色度qp推导;或者,如果控制标志(例如cu_qp_delta_enabled_flag)为假,则该方法不用于亮度和色度qp推导。
[0498]
在一些示例性实现方式中,该方法通过两个基于pps的控制标志(例如cu_qp_delta_enabled_flag_luma和cu_qp_delta_enabled_flag_chroma)分别用于亮度和色度平
面;如果第一控制标志(例如cu_qp_delta_enabled_flag_luma)为真,则该方法用于亮度qp推导;如果第一控制标志(例如cu_qp_delta_enabled_flag_luma)为假,则该方法不用于亮度qp推导;和/或,如果第二控制标志(例如cu_qp_delta_enabled_flag_chroma)为真,则该方法用于色度qp推导;如果第二控制标志(例如cu_qp_delta_enabled_flag_chroma)为假,则该方法不用于色度qp推导。
[0499]
例如,该方法还包括:根据色度分量中的当前块的一个或多个相邻块的现有qp值的加权和,确定亮度分量中的并置块的qp值。
[0500]
或者或另外,该方法还包括:根据色度分量中的当前块的一个或多个相邻块的现有qp值的加权和,确定色度分量中的当前块的qp值。
[0501]
或者或另外,该方法还包括:根据色度分量中的当前块的一个或多个相邻块的现有qp值的加权和和亮度分量中的并置块的qp值,确定色度分量中的当前块的qp值。
[0502]
或者或另外,根据色度分量中的当前块的相邻块的现有qp值的加权和和亮度分量中的并置块的相邻块的现有qp值的加权和,确定色度分量中的当前块的qp值。
[0503]
在一些示例性实现方式中,该方法还包括:根据一个或多个现有qp值和以下至少一个,确定色度分量中当前块的qp值:在所接收到的码流中指示的色度增量qp值,或在所接收到的码流中指示的色度qp偏移值。
[0504]
在一些示例性实现方式中,该方法还包括:获取当前块的分割深度值;如果分割深度值小于阈值,则根据一个或多个现有qp值和在所接收到的码流中指示的色度增量qp值,确定色度分量中的当前块的qp值。
[0505]
例如,根据预定义的数字或参数集中指示的数字确定阈值。
[0506]
例如,亮度分量和色度分量通过一个分割树分割成多个分块,或者亮度分量和色度分量通过不同的分割树独立分割。
[0507]
在一些示例性实现方式中,根据下表,在码流中指示增量qp语法元素(例如,表示色度增量qp值的增量qp语法元素,即delta_qp_c):
[0508]
[0509][0510]
在一些示例性实施例中,根据下表,在码流中指示增量qp语法元素(例如,表示色度增量qp值的增量qp语法元素,即delta_qp_c):
[0511]
[0512][0513]
在一些示例性实现方式中,根据下表,在码流中指示增量qp语法元素(例如,表示色度增量qp值的增量qp语法元素,即delta_qp_c):
[0514]
[0515][0516]
在一些实施例中,提供了一种解码装置,该解码装置包括用于执行前述方法中的任一种的处理电路。
[0517]
在一些实施例中,提供了一种计算机程序产品,该计算机程序产品包括程序代码,当计算机程序在计算设备上运行时,该计算机程序产品用于执行根据前述方法中的任一种方法。
[0518]
在一种示例性实现方式中,提供了一种用于图像的当前块的边界分割的解码装置,该解码装置包括一个或多个处理器和非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到处理器并存储由处理器执行的程序,其中,该程序在由处理器执行时,使解码器执行前述方法中的任一种方法。
[0519]
在一个实施例中,提供了一种计算机可读存储介质,记录用于使计算机执行前述方法中的任一种方法的程序。
[0520]
在一个或多个示例中,所描述的功能可以在硬件、软件、固件或其任何组合中实现。如果以软件实现功能,则功能可以作为计算机可读介质上的一个或多个指令或代码存储或发送,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,对应数据存储介质等有形介质,或包括便于例如根据通信协议将计算机程序从一个地方传输到另一个地方的任何介质的通信介质。在这种方式中,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质或(2)通信介质,例如信号或载波。数据存储介质可以是任何可用介质,可由一个或多个计算机或一个或多个处理器访问以取得用于实现本发明所描述的技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
[0521]
作为示例而非限制,此类计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存,或可以用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、
双绞线、数字用户线(digital subscriber line,dsl)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compact disc,cd)、激光光盘、光盘、数字通用光盘(digital versatile disc,dvd)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
[0522]
指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digital signal processor,dsp)、通用微处理器、专用集成电路(application-specific integrated circuit,asic)、现场可编程逻辑阵列(field programmable gate array,fpga)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能可以在用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解码器中。另外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
[0523]
本发明的技术可以在多种设备或装置中实现,包括无线手持电话、集成电路(integrated circuit,ic)或一组ic(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同的硬件单元实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。
[0524]
逻辑运算符
[0525]
以下逻辑运算符定义如下:
[0526]
x&&y
ꢀꢀꢀꢀꢀ
x和y的布尔逻辑“与”[0527]
x||y
ꢀꢀꢀꢀꢀ
x和y的布尔逻辑“或”[0528]

ꢀꢀꢀꢀꢀꢀꢀ
布尔逻辑“非”[0529]
x?y:
ꢀꢀꢀꢀ
z如果x为真或不等于0,则等于y的值;否则,等于z的值。
[0530]
关系运算符
[0531]
以下关系运算符定义如下:
[0532]

ꢀꢀꢀꢀꢀꢀꢀꢀ
大于
[0533]
》=
ꢀꢀꢀꢀꢀꢀ
大于等于
[0534]

ꢀꢀꢀꢀꢀꢀꢀꢀ
小于
[0535]
《=
ꢀꢀꢀꢀꢀꢀ
小于等于
[0536]
==
ꢀꢀꢀꢀꢀ
等于
[0537]
!=
ꢀꢀꢀꢀꢀ
不等于
[0538]
当关系运算符用于一个已赋值为“na”(不适用)的语法元素或变量时,则将值“na”视为该语法元素或变量的唯一值。值“na”不等于任何其它值。
[0539]
按位运算符
[0540]
以下按位运算符的定义如下:
[0541]
&
ꢀꢀ
按位“与”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当
对二进制参数进行运算时,如果它包含的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
[0542]
|
ꢀꢀ
按位“或”。对整数参数进行运算时,对整数值的二进制补码表示进行运算。当对二进制参数进行运算时,如果它包含的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
[0543]
^
ꢀꢀ
按位“异或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包含的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
[0544]
x》》y
ꢀꢀ
将x的二的补码整数表示算法右移y个二进制数字。该函数仅针对y的非负整数值定义。右移的结果是移到最高有效位(most significant bit,msb)的位的值等于移位操作前的x的msb。
[0545]
x《《y
ꢀꢀ
将x的二的补码整数表示算法左移y个二进制数字。该函数仅针对y的非负整数值定义。左移的结果是移到最低有效位(least significant bit,lsb)的位的值等于0。
[0546]
赋值运算符
[0547]
以下算术运算符定义如下:
[0548]

ꢀꢀꢀꢀꢀꢀꢀ
赋值运算符
[0549]

ꢀꢀꢀꢀꢀꢀꢀ
递增,即,x 等价于x=x 1;当用于数组索引时,等于递增操作之前变量的值。
[0550]
‑‑ꢀꢀꢀꢀꢀꢀꢀ
递减,即,x
‑‑
等价于x=x-1;当用于数组索引时,等于递减操作之前变量的值。
[0551]

ꢀꢀꢀꢀꢀꢀ
按指定数量递增,即,x =3等价于x=x 3,x =(-3)等价于x=x (-3)。
[0552]-=
ꢀꢀꢀꢀꢀꢀ
按指定数量递减,即,x-=3等价于x=x-3,x-=(-3)等价于x=x-(-3)。
[0553]
范围表示法
[0554]
以下表示法用于指定值的范围:
[0555]
x=y..z
ꢀꢀ
x取从y到z的整数值(包括y和z),其中x、y和z是整数,并且z大于y。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献