视频处理系统中参考量化参数推导的方法与装置与流程

文档序号:17121011发布日期:2019-03-15 23:48阅读:434来源:国知局
视频处理系统中参考量化参数推导的方法与装置与流程

本申请要求2016年07月28日提出的名称为“methodsofreferencequantizationparameterderivationforsignalingofquantizationparameterinquad-treeplusbinarytreestructure”的pct专利申请号为pct/cn2016/092011的在先申请的优先权。在此合并参考该pct专利申请。

【技术领域】

本发明涉及用于视频编码或视频解码的视频数据处理方法和装置。具体地,本发明涉及视频数据处理方法和装置,根据为量化参数信令(signaling)导出的参考量化参数对视频数据进行编码或解码。



背景技术:

高效率视频编码(high-efficiencyvideocoding,简写为hevc)标准是由itu-t研究组的视频编码专家组视频编码联合协作(jointcollaborativeteamonvideocoding,简写为jct-vc)小组开发的最新视频编码标准。hevc标准依赖于基于块的编码结构,其将每个片(slice)分成多个编码树单元(codingtreeunit,简写为ctu)。在hevc主配置文件中,ctu的最小和最大面积由序列参数集(sequenceparameterset,简写为sps)中指示的语法元素指定。根据光栅扫描顺序对片中的ctu进行处理。根据四叉树划分方法,将每个ctu进一步递归地分成一个或多个编码单元(codingunit,简写为cu),以适应各种局部特征。cu尺寸被限制为小于或等于sps中指定的最小允许cu尺寸。图1中示出了用于ctu的四叉树块分割结构的示例,其中实线表示ctu100中的cu边界。

在cu级进行预测判定,其中每个cu通过帧间预测或帧内预测进行编码。一旦完成了cu分层树的分割,则根据用于预测的pu划分类型,每个cu进一步分为一个或多个预测单元(predictionunit,简写为pu)。图2显示了在hevc标准中定义的八种pu划分类型。根据图2所示的八个pu划分类型之一,每个cu分成一个、两个或四个pu。因为将相同的预测处理应用于pu中的所有像素,并且预测相关信息以pu为基础传送到解码器,pu作为用于共享预测信息的基本代表性块。在获得由预测处理产生的残差信号之后,属于cu的残差信号的残差数据根据另一个四叉树块分割结构被分割为一个或多个变换单元(transformunit,简写为tu),用于将残差数据变换成变换系数,用于压缩数据表示。图1中的虚线表示tu边界。tu是用于对残差信号进行变换和量化的基本代表性块。对于每个tu,将具有与tu相同尺寸的变换矩阵应用于残差信号以产生变换系数,并且这些变换系数被量化并以tu为基础传送到解码器。

术语编码树块(codingtreeblock,简写为ctb)、编码块(codingblock,简写为cb)、预测块(predictionblock,简写为pb)和变换块(transformblock,简写为tb)被定义为指定分别与ctu、cu、pu和tu相关联的一个颜色分量的二维采样阵列。例如,ctu由一个亮度(luminance/luma)ctb,两个色度(chrominance/chroma)ctb及其相关联的语法元素组成。在hevc系统中,通常将相同的四叉树块分割结构应用于亮度和色度分量,除非达到色度块的最小尺寸。

另一种分割方法被称为二叉树块划分(binarytreeblockpartitioning),其中块被递归地分成两个较小的块。最简单的二叉树划分方法只允许对称的水平分割和对称的垂直分割。虽然二叉树划分方法支持更多的划分形状,因此比四叉树划分方法更加灵活,但为了在所有可能的划分形状中选择最佳划分形状,编码复杂度和信令开销增加。称为四叉树二叉树(quad-tree-binary-tree,简写为qtbt)结构的组合划分方法将四叉树划分方法与二叉树划分方法相结合,平衡了两种划分方法的编码效率和编码复杂度。在图3a中示出了示例性的qtbt结构,其中诸如ctu的大块首先被四叉树划分方法分割,然后被二叉树划分方法分割。图3a示出了根据qtbt划分方法的块分割结构的示例,图3b示出了图3a所示的qtbt块分割结构的编码树图。图3a和图3b中的实线表示四叉树分割,而虚线表示二叉树分割。在二叉树结构的每个分割(即非叶)节点中,一个标志指示使用哪种分割类型(对称水平分割或对称垂直分割),0表示水平分割,1表示垂直分割。通过省略从cu到pu和cu到tu的分割,可以简化分割过程,因为二叉树块划分结构的叶节点是用于预测和变换编码的基本代表性块。例如,图3a所示的qtbt结构将大块分割成多个较小的块,并且这些较小的块通过预测和变换编码进行处理,而不进一步分割。

引入了另一种称为三叉树划分(tripletreepartitioning)方法的划分方法来捕获位于块中心的对象,而四叉树划分方法和二叉树划分方法总是沿块中心分割。两个示例性的三叉树划分类型包括水平中心侧(center-side)三叉树划分和垂直中心侧三叉树划分。三叉树划分方法可以通过允许垂直或水平四分之一划分来提供沿块边界更快地定位小对象的能力。

当在hevc中启用自适应qp或多qp优化时,量化参数(quantizationparameter,简写为qp)由参考qp和增量(delta)qp确定。发送增量qp而不是qp,以便减少qp信息所需的比特率。亮度分量的增量qp信令(signaling)由两个标志:使能标志cu_qp_delta_enabled_flag和深度标志diff_cu_qp_delta_depth控制。使能标志cu_qp_delta_enabled_flag用于指示增量qp信令被启用或禁用,深度标志diff_cu_qp_delta_depth用于设置增量qp信令的最小面积。深度标志diff_cu_qp_delta_depth以高级语法呈现。大于或等于增量qp信令的最小面积的编码块(cb)具有其自己的增量qp,而小于最小面积的cb与一个或多个其他cb共享一个增量qp。具有其自己的增量qp的单个cb或共享相同增量qp的多个cb被称为量化单元或量化组。图4示出了图1的ctu中的量化组的示例,其中ctu的面积为64×64,增量qp信令的最小面积为16×16。图6中的粗实线表示量化组的边界,实线表示cu边界,虚线表示tu边界。一个量化组中的多个cu共享相同的增量qp。

在hevc标准中,当前量化组的参考qp是从左侧和上方相邻编码量化组的qp导出的,其中参考qp是两个qp的平均值。如果左侧和上方相邻编码量化组中的任何一个不可用,则不可用的qp被解码顺序中的先前编码的量化组的先前的qp替代。如果先前的编码量化组不可用,则诸如片qp的默认qp被用作前一个qp。

为了根据hevc标准对视频数据进行编码或解码,参考qp的推导可能需要解码顺序中的先前编码量化组的先前qp,其中先前编码的量化组根据当前量化组的z扫描顺序索引来确定。在图4中,使当前图像的左上亮度采样的坐标为(0,0),将当前亮度编码块46的左上角亮度采样460的坐标设为(xcb,ycb)。当前亮度编码块46在当前量化组44内。位置(xqg,yqg)指定相对于当前画面的左上角亮度采样当前量化组44的左上角亮度采样440。将左上角亮度采样440的水平位置xqg设定为等于xcb–(xcb&((1<<log2mincuqpdeltasize)–1)),将左上角亮度采样440的垂直位置yqg设定为等于ycb–(ycb&((1<<log2mincuqpdeltasize)–1)),其中log2mincuqpdeltasize表示增量qp信令的最小面积的log2值。在导出当前量化组44的左上位置(xqg,yqg)之后,使用当前量化组44的z扫描顺序索引来导出先前编码量化组42的z扫描顺序索引。例如,解码顺序中的先前编码量化组42由当前量化组的z扫描顺序索引减去1导出。



技术实现要素:

在视频编码系统中处理视频数据的方法和装置确定当前编码块(cb)的参考量化参数(qp),并且根据确定的参考qp对当前cb进行编码或解码。根据划分方法将片中的颜色分量的视频数据划分为多个cb。颜色分量的示例是亮度分量和色度分量。划分方法的一个例子首先通过四叉树划分视频数据,然后通过二叉树划分或三叉树划分进行分割。所述方法和装置包括由编码器或解码器接收在当前片中与当前cb相关联的输入数据。编码器或解码器使用递归处理或跟踪处理导出包括当前cb的当前量化组的左上位置(xqg,yqg)。当前cb的参考qp由当前量化组的一个或多个相邻qp确定,并且当前量化组的相邻qp由当前量化组的左上位置(xqg,yqg)确定。

用于推导参考qp的递归处理的一些实施例首先检查当前cb的面积是否大于或等于增量qp的最小面积,并且如果当前cb的面积大于或等于增量qp的最小面积,则设置左上位置(xqg,yqg)等于当前cb的左上位置(xcb,ycb)。递归处理还包括检查当前cb是否是四叉叶节点块,或者包含当前cb的当前四叉树叶节点块的面积是否小于增量qp信令的最小面积,如果检查结果是肯定的,则使用左上位置(xcb,ycb)和增量qp信号的最小面积导出左上位置(xqg,yqg)。否则,将当前递归的位置(x0,y0)初始化为包含当前cb的当前四叉树叶节点块的左上位置(xcqt,ycqt),并且位置(x0,y0)根据到当前递归的分割标志递归更新,直到位置(x0,y0)等于当前cb的左上位置(xcb,ycb)为止。如果当前递归的面积大于或等于增量qp信令的最小面积,则左上位置(xqg,yqg)被更新为等于当前递归的位置(x0,y0)。使用当前量化组的导出左上位置(xqg,yqg)的实施例来确定相邻块的相邻qp,例如当前量化组的左邻近块的左qp和当前量化组的相邻块的上方qp。基于相邻块的相邻qp计算参考qp。

在一个实施例中,用于增量qp信令log2mincuqpdeltasize的最小面积的左上位置(xcb,ycb)和log2值可用于通过以下方式导出左上位置(xqg,yqg):xqg=xcb-(xcb&((1<<log2mincuqpdeltasize)-1),且yqg=ycb-(ycb&((1<<log2mincuqpdeltasize)-1));或xqg=(xcb>>log2mincuqpdeltasize<<log2mincuqpdeltasize),yqg=(ycb>>log2mincuqpdeltasize<<log2mincuqpdeltasize)。

在一个实施例中,当前四叉树叶节点块的面积由当前四叉树叶节点块的ctb和四叉树深度的面积导出。当前四叉树叶节点块的位置(xcqt,ycqt)是使用当前四叉树叶节点块的面积的log2值log2cqtsize导出的:xcqt=(xcb>>log2cqtsize<<log2cqtsize),ycqt=(ycb>>log2cqtsize<<log2cqtsize);或xcqt=xcb-(xcb&((1<<log2cqtsize)-1)),ycqt=ycb-(ycb&((1<<log2cqtsize)-1))。当划分方法是四叉树二叉树(qtbt)划分方法时,当前递归的分割标志从四叉树分割标志和二叉树分割标志之一中选择。

用于推导参考qp的跟踪过程的一些实施例包括根据分割类型以及当前块的宽度和当前块的高度中的一个或两个跟踪当前块的位置(x0,y0)。初始当前块可以是包含当前cb的编码树块(ctb)。当当前块的面积大于或等于增量qp信令的最小面积时,左上位置(xqg,yqg)被确定为等于位置(x0,y0)。然后,通过跟踪过程导出的左上位置(xqg,yqg)用于确定当前cb的参考qp。例如,编码器或解码器根据左上位置(xqg,yqg)确定一个或多个相邻qp以计算参考qp。

对于跟踪处理,当分割类型是四叉树分割时,根据分割标志以及当前块的高度和权重两者来更新当前块的位置(x0,y0)。当分割类型是二叉树分割时,当前块的位置根据二叉树分割模式和当前块的宽度和高度之一进行更新。更新的位置在当前片或当前图片内。

在一些实施例中,如果当前量化组的相邻qp中的任一个不可用,则基于前一个qp进一步确定当前cb的参考qp。先前的qp用于替换不可用的相邻qp。先前的qp可以通过跟踪方法来确定。该跟踪方法首先将“先前的qp”初始化为先前已编码的编码树单元(ctu)的最后一个编码的qp。或者,如果先前已编码的编码树单元不可用,初始化为片qp。在针对后续量化组的当前cb的量化参数的导出处理之后,将“先前的qp”更新为导出qp。导出过程的示例根据当前cb的左上位置(xcb,ycb)和当前量化组的左上位置(xqg,yqg)导出导出的qp。可以通过预测的qp,增量qp和亮度阵列的采样的比特深度来计算导出的qp。

本公开的方面还提供了一种用于视频编码系统的装置,其根据根据由递归处理或跟踪过程导出的位置确定的参考qp编码或解码视频数据。

本公开的方面进一步提供了一种非挥发性算机可读介质,其存储用于使装置的处理电路根据由递归处理或跟踪处理导出的位置导出参考qp的视频编码处理的程序指令。通过对具体实施方案的以下描述的审查,本发明的其它方面和特征对于本领域具有通常知识者将变得显而易见。

【附图说明】

将参考以下附图详细描述作为示例提出的本公开的各种实施例,其中相同的附图标记表示相同的元件,并且其中:

图1示出了用于将编码树单元(ctu)分割成编码单元(cu)并根据hevc标准将每个cu分割成一个或多个变换单元(tu)的示例性编码树。

图2显示了根据hevc标准将cu分割成一个或多个pu的八种不同pu划分类型。

图3a示出了四叉树二叉树(qtbt)划分方法的示例性块划分结构。

图3b示出了对应于图3a的块划分结构的编码树结构。

图4示出了图1的ctu中的示例性量化组。

图5示出了由qtbt划分方法划分的大块的量化组和解码顺序中的先前量化组可能根据当前量化组的z-扫描次序索引可能不被正确地导出的示例。

图6示出了根据本发明的实施例的使用递归过程来推导当前量化组的左上位置的示例性伪代码。

图7示出了使用根据本发明的实施例的递归过程来推导当前量化组的左上位置的示例性伪代码。

图8示出了根据本发明的实施例的跟踪处理的示例性语法表。

图9示出了根据本发明的实施例的跟踪处理的示例性语法表。

图10示出了包含根据本发明的实施例的视频数据处理方法的视频编码系统的示例性系统框图。

图11示出了结合根据本发明的实施例的视频数据处理方法的视频解码系统的示例性系统框图。

【具体实施方式】

将容易理解的是,如本文图中一般描述和示出的本发明的组件可以以各种各样的不同配置进行布置和设计。因此,如附图所示的本发明的系统和方法的实施例的以下更详细的描述并不旨在限制如所要求保护的本发明的范围,而是仅代表本发明的选定实施例。

整个本说明书中对“实施例”,“一些实施例”或类似语言的参考意味着结合实施例描述的特定特征,结构或特性可以包括在本发明的至少一个实施例中。因此,贯穿本说明书的各个地方的短语“在一个实施例中”或“在一些实施例中”的出现不一定全部指代相同的实施例,这些实施例可以单独实现或结合一个或多个其他实施例来实现。此外,所描述的特征,结构或特征可以以任何合适的方式组合在一个或多个实施例中。然而,相关领域的技术人员将认识到,可以在没有一个或多个具体细节,或其他方法,组件等的情况下实践本发明。在其他情况下,未示出已知的结构或操作的详细描述以避免模糊本发明的方面。

根据四叉树划分方法以外的分割方法分割的编码块可以不是全部正方形。例如,qtbt和三叉树分割方法都产生一些矩形形状编码块,因此一些量化组也是矩形形状。对于非平方量化组,当前量化组的左上亮度采样的水平和垂直位置xqg和yqg不能由量化组的最小亮度面积简单地导出。另外,解码顺序中的先前的量化组可能不是通过z扫描顺序索引简单导出的。图5示出了根据qtbt划分方法从大块50拆分的量化组52、54和56的示例,其中大块50首先被垂直分割划分,然后左划分进一步被水平分割划分。使curr表示当前量化组56的z扫描顺序索引,则z扫描顺序索引减1(即curr-1)表示左划分顶部的量化组52。然而,解码顺序中的先前编码量化组实际上是左划分底部的量化组54。

本发明的实施例通过根据递归处理或跟踪过程确定包含编码块的量化组的左上位置(xqg,yqg)来导出编码块的参考qp。本发明的一些实施例还通过确定编码块的先前编码量化组的先前qp来导出参考qp。

用于确定当前量化组的左上位置的递归处理本发明的一些实施例使用递归处理确定当前量化组的左上位置。在实施例中用于划分视频数据的块划分方法可以生成非正方形块,例如,块划分方法首先通过四叉树分割来分割亮度编码树块(ctb)以生成亮度(luminance/luma)四叉树叶节点块,随后可以使用二叉树划分或三叉树划分来进一步分割每个亮度四叉树叶节点块。在本实施例中,亮度四叉树叶节点块被定义为四叉树分割停止的块,所以亮度四叉树叶节点块总是正方形。让位置(xcb,ycb)指定当前图像中当前图像中当前亮度编码块(cb)相对于当前图像的左上采样的左上采样。当前亮度编码块的宽度和高度的log2值分别为log2cbwidth和log2cbheight,亮度ctb的面积的log2值为log2ctbsize。亮度编码块的宽度和高度不一定相等,但是由于亮度ctb是正方形亮度ctb的宽度和高度相等。变量cqtdepth指定包含当前编码块的四叉叶节点块的四叉树深度。位置(xqg,yqg)指定当前量化组的左上采样相对于当前图像的左上采样的位置。当前亮度编码块在当前量化组内。

如果当前亮度编码块的面积大于或等于增量qp信令的最小面积,则当前亮度编码块的左上采样也是当前量化组的左上角采样,所以位置(xqg,yqg)等于位置(xcb,ycb)。下面给出了当前亮度编码块的面积与增量qp信令的最小面积之间的比较:

log2cbwidth+log2cbheight>=(log2mincuqpdeltasize<<1).

如果当前亮度编码块是亮度四叉树叶节点块,或者如果包含当前亮度编码块的当前叶节点块的面积小于增量qp信令的最小面积,则导出当前量化组的左上采样的位置(xqg,yqg)为:

xqg=xcb-(xcb&((1<<log2mincuqpdeltasize)-1))

yqg=ycb-(ycb&((1<<log2mincuqpdeltasize)-1))

或者,等同地,

xqg=(xcb>>log2mincuqpdeltasize<<log2mincuqpdeltasize)

yqg=(ycb>>log2mincuqpdeltasize<<log2mincuqpdeltasize).

在其他情况下,调用递归处理以导出当前量化组的左上采样的位置(xqg,yqg)。变量log2cqtsize指定当前亮度四叉树叶节点块的面积的log2值,该变量由亮度ctb的面积和当前亮度四叉叶节点块的四叉树深度计算:

log2cqtsize=log2ctbsize–cqtdepth.

位置(xcqt,ycqt)指定包含当前亮度编码块的当前亮度四叉树叶节点块的左上采样,并且可以通过以下方式导出位置(xcqt,ycqt):

xcqt=(xcb>>log2cqtsize<<log2cqtsize),

ycqt=(ycb>>log2cqtsize<<log2cqtsize);

或者等效地,

xcqt=xcb-(xcb&((1<<log2cqtsize)-1)),

ycqt=ycb-(ycb&((1<<log2cqtsize)-1)).

变量bfound指定是否找到当前量化组的左上位置(xqg,yqg),并且当bfound为true时递归处理终止。递归处理的输入是当前递归的位置(x0,y0)、块宽度的log2值log2width、块高度的log2值log2height、左上位置(xcb,ycb)当前编码块、当前量化组的左上位置(xqg,yqg)和变量bfound。当前递归的位置(x0,y0)被初始化为包含当前亮度编码块的当前亮度四叉树叶节点块的左上位置(xcqt,ycqt),块宽度的log2值log2width被初始化为log2cqtsize,块高度的log2值log2height也初始化为log2cqtsize,变量bfound初始化为false。在递归处理中,如果当前递归的面积大于或等于增量qp信令的最小面积,则将位置(xqg,yqg)设置为等于当前递归的位置(x0,y0)。如果当前递归的位置(x0,y0)等于(xcb,ycb),则变量bfound设置为true,当变量bfound为true时,递归处理停止。否则变量bfound仍然为false,递归处理继续搜索位置(xqg,yqg)。

导出使用递归处理的当前量化组的左上位置(xqg,yqg)的伪代码如图6和图7所示。在图7中,四叉树分割标志qt_split_flag[x0][y0]指定位置(x0,y0)处的块是否为四叉树分割,二叉树分割标志bt_cu_split_flag[x0][y0]指定位置(x0,y0)处的块的二叉树分割类型,其中0表示不进一步分割,1表示水平分割,2表示垂直分割。当前递归的位置(x0,y0)根据四叉树分割标志或二进制分割标志递归地更新,直到位置(x0,y0)等于当前亮度编码块的左上位置(xcb,ycb)。在每个递归中,如果当前递归的面积大于或等于增量qp信号的最小面积,则当前量化组的左上位置(xqg,yqg)被更新为等于当前递归的位置(x0,y0)。用于拆分视频数据的划分方法是图6和图7中的qtbt划分,但是相同的递归处理也可以应用于其他划分方法。例如,如果划分方法是三叉树划分,则当前递归的位置(x0,y0)根据当前递归是水平三叉树分割还是垂直三叉树分割递归更新,如果当前递归的面积大于或等于增量qp信令的最小面积,则将当前量化组的左上位置(xqg,yqg)更新为等于位置(x0,y0)。在另一个例子中,划分方法首先用四叉树划分视频数据,然后用二叉树划分或三叉树划分,根据当前的递归是否是四叉树分割、水平二叉树分割、垂直二叉树分割、水平三叉树分割或垂直三叉树分割递归更新当前递归的位置(x0,y0)。

在当前量化组的左上位置(xqg,yqg)的导出之后,通过当前量化组的一个或多个相邻块的一个或多个相邻qp导出参考qp。例如,参考qp由当前量化组的左相邻块的左qp和当前量化组的上方相邻块的上方qp导出。编码器根据当前亮度编码块的qp对当前亮度编码块的残差信号进行量化,从qp和参考qp导出增量qp,并向视频比特流中的当前亮度编码块发送增量qp。解码器从接收到的视频比特流中确定当前亮度编码块的增量qp,从增量qp和参考qp导出当前亮度编码块的qp,并且根据当前亮度编码块的qp,恢复当前亮度编码块的量化残差信号。

跟踪当前量化组的左上位置和先前量化组的qp本发明的一些实施例在视频编码或解码期间跟踪当前量化组的左上位置(xqg,yqg)。左上位置(xqg,yqg)被初始化为当前编码树块(ctb)的左上角亮度采样的位置。对于使用诸如qtbt划分方法的分割方法编码的视频数据,如果使能标志cu_qp_delta_enabled_flag指示使能,并且当前编码块的面积大于或等于增量qp信令的最小面积,则将左上位置(xqg,yqg)设置为等于当前编码块的左上位置,即log2cbwidth+log2cbheight>=(log2mincuqpdeltasize<<1)。用于跟踪处理的相应语法表的细节包括在图8中。

在图8的语法表中,函数coding_qtbt的输入包括当前块(x0,y0)的位置、当前块log2cbwidth的宽度的log2值、当前块的高度log2cbheight的log2值和深度cqtdetph。分割标志qt_split_cu_flag[x0][y0]由函数coding_qtbt决定。当使能标志cu_qp_delta_enabled_flag为true,并且当前块的面积大于或等于增量qp信令的最小面积时,确定左上位置(xqg,yqg)作为当前块(x0,y0)的位置,并将先前编码量化组的先前qpqulastcodedqp确定为当前块的最后编码qplastcodeqp。当当前划分是四叉树分割时,根据分割标志qt_split_cu_flag[x0][y0](当前块的宽度和高度)更新当前块的位置。检查当前块的更新位置在当前片或当前图片内,更新的位置、宽度的一半(即log2cbwidth-1)、高度的一半(即log2cbheight-1)和cqtdepth+1被用作函数coding_qtbt的输入。当当前划分是二叉树分割时,根据二叉树分割模式bt_split_mode,根据当前块的宽度或高度来更新当前块的位置(x0,y0)。例如,如果二叉树分割模式是水平分割,则基于高度来更新当前块的位置,并且更新的位置被检查在当前片或当前图片内。更新的位置、宽度log2cbwidth、高度的一半(即log2cbheight-1)和cqtdepth是函数coding_qtbt的输入。在另一示例中,如果二叉树分割模式是垂直分割,则基于宽度来更新当前块的位置,并且更新的位置被检查在当前图片内。通过提供更新的位置、宽度log2cbwidth-1的一半、高度log2cbheight和cqtdepth来执行函数coding_qtbt。图8中的实施例使用qtbt划分方法分割视频数据,类似的跟踪处理可以应用于使用其他划分方法的视频数据分割。示例性的划分方法使用四叉树划分然后进行二叉树划分或三叉树划分来分割视频数据,并且图8中的语法表仅需要在当前划分是三叉树划分的情况下再插入一个分支,其中,当当前划分是三叉树分割时,当前块的位置(x0,y0)根据水平三叉树分割或垂直三叉树分割进行更新。

该方法的实施例还跟踪先前编码量化组的先前量化参数(qp),表示为qulastcodedqp。在一个实施例中,变量lastcodedqp用于指定先前编码块的先前qp。变量qulastcodedqp和lastcodedqp在对当前ctu进行编码或解码的开始处初始化,其中初始值被设置为先前编码的ctu的lastcodedqp,或者如果先前编码的ctu不可用,则初始值被设置为片qp。当使能标志cu_qp_delta_enabled_flag为true且当前编码块的面积大于或等于增量qp信令的最小面积时,将变量qulastcodedqp设置为等于lastcodedqp,即log2cbwidth+log2cbheight>=(log2mincuqpdeltasize<<1)。换句话说,当在编码或解码期间遇到量化组的第一编码块时,将变量qulastcodedqp设置为等于lastcodedqp。相应语法表的一个例子如图8所示。

在编码或解码当前编码块之后,将lastcodedqp设置为等于当前编码块qpy的qp。相应语法表的一个例子如图9所示。

给定当前量化组的左上采样的导出位置(xqg,yqg)和先前的qpqulastcodedqp,编码块的参考qp可以根据位置(xqg,yqg)和之前的qp中的一个或两个导出。例如,当前量化组的左上位置(xqg,yqg)首先用于识别左边和上方相邻编码块。当前量化组的参考qp被计算为左邻近编码块的左qp和上方相邻编码块的上方qp的平均值,即(qpleft+qpabove+1)>>1。如果左qp和上方qp中的任一个不可用,则不可用的相邻qp的qp值被导出的先前qpqulastcodedqp替换以计算参考qp。参考qp用于在量化与编码器侧的量化组相关联的视频数据时确定增量qp;并且参考qp用于基于在解码器侧的接收到的增量qp来确定用于逆量化的qp。

在跟踪先前编码量化组的先前qp的另一种方法中,qulastcodedqp、辅助变量lastcodedqp不被使用。在对每个ctu进行编码或解码的开始处,初始化变量qulastcodedqp,并且在编码块的量化参数的导出处理之后,将qulastcodedqp更新为导出的qp,即qpy。以下对编码块的量化参数的导出处理进行说明。导出过程从位置(xcb,ycb)和(xqg,yqg)导出变量qpy、亮度qpqp'y和色度qpsqp'cb及qp'cr。位置(xcb,ycb)指定当前画面中相对于当前画面的左上角亮度采样的当前亮度编码块的左上角亮度采样,并且位置(xqg,yqg)指定当前量化组相对于当前图像的左上角亮度采样的亮度采样的左上角的亮度采样。增量qp信令的最小面积由变量log2mincuqpdeltasize定义,该变量决定共享相同qp的ctb内最小面积的亮度面积。通过以下步骤导出预测亮度qpqpy_pred:

在步骤1中,如果以下三个条件中的一个或多个为true,则将当前编码块的预测亮度qpqpy_pred设置为等于片qpsliceqpy。第一条件是当包含当前编码块的当前量化组是片中的第一量化组时。第二条件是当包含当前编码块的当前量化组是瓦片(tile)中的第一量化组时。第三条件是当包含当前编码块的当前量化组是编码树块行(row)中的第一量化组,并且使能标志entropy_coding_sync_enabled_flag为true,指示熵编码同步被使能时。如果三个条件都不为true,则将预测亮度qpqpy_pred设置为等于qulastcodedqp。

在步骤2中,确定当前量化组的左邻近块的左qp以计算参考qp。可用性导出处理(availabilityderivationprocess)根据位置(xcurr,ycurr)和(xnby,ynby)来确定左qp是否可用,其中将位置(xcurr,ycurr)设置为等于当前编码块的左上位置(xcb,ycb),而相邻位置(xnby,ynby)被设置为等于(xqg-1,yqg)。如果以下两个条件中的一个或多个为true,则将左qpqpy_a设置为等于预测亮度qpqpy_pred。第一个条件是当可用性导出处理的输出指示左qp不可用时,即变量availablea等于false。第二个条件是当包含覆盖相邻位置(xqg-1,yqg)的编码块的ctb的编码树块地址ctbaddra不等于变量ctbaddrints时。变量ctbaddrints的导出如下:

xtmp=(xqg-1)>>log2mintrafosize

ytmp=yqg>>log2mintrafosize

mintbaddra=mintbaddrzs[xtmp][ytmp]

ctbaddra=(mintbaddra>>2)*(ctblog2sizey-log2mintrafosize);

其中变量log2mintrafosize指定最小变换块面积的log2值,阵列mintbaddrzs[x][y]指定以最小变换块为单位的位置(x,y)到z-扫描顺序变换块地址的转换,变量ctblog2sizey指定编码树块(ctb)的面积的log2值。

如果两个上述条件均为false,则将左qpqpy_a设置为等于覆盖位置(xqg-1,yqg)的编码块的亮度qpqpy。

在步骤3中,确定当前量化组的上方相邻块的上方qp以计算参考qp。类似于左qp,可用性导出处理根据位置(xcurr,ycurr)和(xnby,ynby)来确定上方qp是否可用,其中将位置(xcurr,ycurr)设置为等于当前编码块的左上位置(xcb,ycb),相邻位置(xnby,ynby)被设置为等于(xqg,yqg-1)。如果以下两个条件中的一个或多个为true,则将上方qppy_b设置为等于预测亮度qpqpy_pred。第一个条件是当可用性导出处理的输出指示上方qp不可用时,即变量available等于false。第二个条件是当包含覆盖位置(xqg,yqg-1)的编码块的ctb的编码树块地址ctbaddrb不等于变量ctbaddrints时,其中变量ctbaddrb由下式导出:

xtmp=xqg>>log2mintrafosize,

ytmp=(yqg-1)>>log2mintrafosize,

mintbaddrb=mintbaddrzs[xtmp][ytmp],

ctbaddrb=(mintbaddrb>>2)*(ctblog2sizey-log2mintrafosize);

其中变量log2mintrafosize指定最小变换块面积的log2值,阵列mintbaddrzs[x][y]指定以最小变换块为单位的位置(x,y)到z扫描顺序变换块地址的转换,变量ctblog2sizey指定编码树块(ctb)的面积的log2值。

如果上述两个条件都为false,则将上方qpqpy_b设置为等于覆盖位置(xqg,yqg-1)的编码块的亮度qpqpy。

预测亮度qpqpy_pred由左qpqpy_a和上方qpqpy_b的平均值导出,即qpy_pred=(qpy_a+qpy_b+1)>>1。根据预测亮度qpqpy_pred导出变量qpy。

qpy=

((qpy_pred+cuqpdeltaval+52+2*qpbdoffsety)%(52+qpbdoffsety))-qpbdoffsety;

其中cuqpdeltaval是在图8的语法表中定义的变量,指定增量qp的值,且其被初始化为零,qpbdoffsety=6*bit_depth_luma_minus8,bit_depth_luma_minus8指定亮度阵列bitdepthy的采样的比特深度,且bitdepthy=8+bit_depth_luma_minus8。

如果亮度和色度ctb被分别编码,则可以分别对亮度和色度分量执行上述参考qp导出处理。

图10示出了实现本发明的实施例的视频编码器1000的示例性系统框图。帧内预测1010基于当前图像的重构视频数据提供帧内预测值(intrapredictor)。帧间预测1012执行运动估计(me)和运动补偿(mc),以基于参考来自其他一个或多个图像的视频数据来提供预测值。帧内预测1010或帧间预测1012将选定的预测值提供给加法器1016以形成残差。通过变换(t)1018进一步处理当前块的残差,接着进行量化(q)1020处理。然后,经熵编码器1034对经变换和量化的残差信号进行编码以形成视频比特流。在量化1020中,每个量化组的变换的残差由qp量化,并且根据本发明的实施例之一来确定参考qp,以导出每个量化组的增量qp。然后,利用包括每个量化组的增量qp的边信息(sideinformation)来压缩视频比特流。根据当前量化组的左上位置和先前编码的qp中的一个或两个导出当前量化组的参考qp。通过逆量化(iq)1022和逆变换(it)1024处理当前块的经变换和量化的残差信号以恢复预测残差。如图10所示,通过在重构(rec)1026处加回所选择的预测值来恢复残差,以产生重构的视频数据。重构的视频数据可以存储在参考图像缓冲器(ref.pict.buffer)1032中,并用于预测其它图像。由于编码处理,来自rec1026的重构的视频数据可能受到各种损害,因此,在将重构的视频数据存储在参考图像缓冲器1032中之前,将环路处理滤波器(in-loopprocessingfilter,简写为ilpf)1028应用于重构的视频数据,以进一步增强图像质量。语法元素被提供给熵编码器1034,用于并入到视频比特流中。

在图11中示出了对应于图10的视频编码器1000的视频解码器1100,由视频编码器编码的视频比特流是视频解码器1100的输入,并被熵解码器1110解码以解析和恢复变换和量化残差信号以及其他系统信息。熵解码器1110解析每个量化组的增量qp。解码器1100的解码处理类似于编码器1000处的重构循环,除了解码器1100仅需要帧间预测1114中的运动补偿预测。每个块由帧内预测1112或帧间预测1114解码。开关1116根据解码的模式信息从每个块由帧内预测1112或帧间预测1114中选择帧内预测值。通过逆量化(iq)1120和逆变换(it)1122来恢复经变换和量化的残差信号。逆量化1120确定当前量化组的参考qp,并且根据从由熵解码器1110解析的增量qp导出的qp和参考qp来恢复与当前量化组相关联的量化残差信号。参考qp根据当前量化组的左上位置和先前qp中的一个或两个导出。可以使用根据实施例的递归处理或跟踪处理来导出左上位置,并且可以根据跟踪方法的实施例导出先前的qp。通过在rec1118中加回预测值来重构恢复的残差信号,以产生重构的视频。重构视频进一步由环路处理滤波器(ilpf)1124处理,以产生最终解码的视频。如果当前解码的图像是参考图像,则当前解码的图像的重构视频也存储在参考图像缓冲器1128中用于解码顺序中的后期图像。

图10和图11中的视频编码器1000和视频解码器1100的各种组件可以由硬体组件、被配置为执行存储在存储器中的程序指令的一个或多个处理器或硬体和处理器的组合来实现。例如,处理器执行程序指令以控制输入视频数据的接收。处理器配备有单个或多个处理核心。在一些示例中,处理器执行程序指令以在编码器1000和解码器1100中的一些组件中执行功能,并且与处理器电耦合的存储器用于存储程序指令/对应于块的重构图像的信息和/或在编码或解码过程中的中间数据。在一些实施例中的存储器包括非挥发性计算机可读介质,诸如半导体或固态存储器、随机存取存储器(ram)、只读存储器(rom)、硬盘、光盘,或其他合适的存储介质。存储器也可以是上面列出的两个或多个非挥发性性计算机可读介质的组合。如图10和图11所示,编码器1000和解码器1100可以在相同的电子装置中实现,因此如果在相同的电子装置中实现,则编码器1000和解码器1100的各种功能组件可以被共享或重用。例如,图10中的重构1026、变换1024、逆量化1022、环路处理滤波器1028和参考图像缓冲器1032中的一个或多个也可以用作图11中的重构1118、逆变换1122、逆量化1120、环路处理滤波器1124和参考图像缓冲器1128。

具有用于视频编码系统的经调整的qp信息信令的视频数据处理方法的实施例可以在集成到视频压缩软件中的视频压缩芯片或程序代码的电路中实现,以执行上述处理。例如,可以在计算机处理器、数字信号处理器(dsp)、微处理器或场可程序化闸阵列(fpga)上执行的程序代码中实现对当前块的当前模式集的确定。这些处理器可以被配置为通过执行定义本发明所体现的特定方法的机器可读软件代码或固件代码来执行根据本发明的特定任务。

在不脱离本发明的精神或基本特征的情况下,本发明可以以其他具体形式实施。所描述的例子仅在所有方面被认为是说明性的而不是限制性的。因此,本发明的范围由所附权利要求而不是前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化将被包括在其范围内。

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