用于彩色视频数据的调色板模式编解码的方法及装置
相关引用
本申请是申请号为201780030882.8,发明名称为用于彩色视频数据的调色板模式编解码的方法及装置的发明专利申请的分案申请。
本申请要求于2016年5月28日申请的号码为62/342,882的美国临时专利申请案的优先权,美国临时专利申请案的全文以引用的方式被纳入本文中以作参考。
技术领域
本发明涉及视频编解码中的编解码和/或预测过程的块区分,特别地,本发明公开了对具有亮度和色度分量的视频数据使用调色板模式编解码的编解码系统的各种编解码配置。
背景技术
高效视频编码(High Efficiency Video Coding,HEVC)标准是在ITU-T的视频编码专家组(Video Coding Experts Group,VCEG)和ISO/IEC的移动图像专家组(MovingPicture Experts Group,MPEG)标准化组织联合开发的视频项目下的标准,尤其与视频编码联合小组(Joint Collaborative Team on Video Coding,JCT-VC)合作。在高效视频编码中,一个切片被划分成多个编码树单元(CTU)。在主要规范(main profile)中,编码树单元的最小尺寸和最大尺寸由序列参数集(sequence parameter set,SPS)中的语法元素(syntax elements)指定,允许的CTU尺寸可以是8×8、16×16、3×32或者64×64。对每个切片来说,切片中的CTU根据光域扫描序列(raster scan order)进行处理。
CTU可以进一步地被划分割成多个编码单元(CU)以适应各种局部特性。四叉树(quadtree)被表示为编码树,用于将CTU分割成多个CU。使CTU的尺寸为M×M,M可以是数值62、32或者16中的一个。CTU可以是一个单一CU(也就是没有被拆分)或者是分割成四个具有相同尺寸的较小单元(也就是每个单元都是M/2×M/2),其对应于编码树的节点。如果单元是编码树的叶节点,那么所述单元变成CU。否则,四叉树的拆分进程可以被重复直到一个节点的尺寸达到SPS(序列参数集)中指定的CU尺寸允许的最小值。这种表示导致了如图1中编码树(也被称为分割树结构)120所指定的递归结构(recursive structure)。如图1所示的编码树单元(CTU)分区110,其中实线指示CU的边界。是用帧间图像(时间域)预测还是用帧内图像(空间域)预测来编码图像区域的决定,是在CU级(level)上做出的。因为最小的CU尺寸可以是8×8,那么在不同基本预测类型之间的切换的最小间隔尺寸(granularity)是8×8。
此外,根据HEVC,每一个CU可以被分割成一个或多个预测单元(PU)。PU与CU耦合,PU作为用于共享预测信息的一个基础代表块。在每一个PU中,应用相同的预测进程,在PU的基础上将相关信息发送到解码器。根据PU分割类型(split type),一个CU可以被分割成1个、2个或者4个PU。如图2所示,HEVC定义了将一个CU分割成PU的8个形状,包括2N×2N,2N×N,N×2N,N×N,2N×nU,2N×nD,nL×2N和nR×2N分区类型。不像CU,PU根据HEVC可能只能被分割一次。第二行所示的分区相当于不对称分区,其中两个被分割的部分具有不同的尺寸。
在通过基于PU分割类型的预测进程获得残差块后,根据类似于图1所示的CU编码树的另一个的四叉树结构,CU的预测残差(prediction residues)可能会被分割成转换单元(TU)。实线表示CU的边界,虚线表示TU的边界。该TU是具有用于应用于整数转换和量化的残差或转换系数的基础代表块。对于每一个TU来说,应用与TU具有相同尺寸的整数变换来获得残差系数,在TU基础上量化之后,这些系数被发送到解码器。
术语编码树块(CTB)、编码块(CB)、预测块(PB)和转换块(TB)分别被定义来指定与CTU、CU、PU及TU相关联的一个色彩分量的二维取样阵列。因此,一个CTU由一个亮度CTB、两个色度CTB以及相应的语法元素组成。类似的关系对CU、PU和TU是有效的。树分割通常是同时应用于亮度和色度,然而当色度达到某一最小尺寸的时候树分割可以不应用于亮度。
或者,在JCTVC-P1005(D.Fleyn等,“HEVC Range Extensions Draft 6”,ITU-T SGWP3视频编码联合小组(JCT-VC)和ISO/IEC JTC/SC 29/WG 11,第16次会议,San Jose,美国,9-17,2014年1月,文档:JCTVC-P1005)中提出了一种二叉树(binary tree)块分割结构。在所提出来的二叉树块分割结构中,一个块可以使用如图3所示的各种二进制分割类型递归地分割成两个较小方块。最有效和最简单的是对称水平分割和对称垂直分割,如图3顶部所示的两种分割类型。对于一个尺寸为M×N的给定块,一个旗标被发信(signalled)以指示给定的块是否分割成两个较小方块。如果是,另一个语法元素被发信以指示用了哪一种分割类型。如果使用了水平分割,给定块被分割成两个尺寸为M×N/2的块,如果使用了垂直分割,给定块被分割成两个尺寸为M/2×N的块。二叉树的拆分进程可用被重复直到一个分裂块的尺寸(宽度或高度)达到一个最小允许的块尺寸(宽度或者高度)。该最小允许的块尺寸可以被定义在高级语法中,如SPS。因为二叉树有两个分割类型(也就是水平和垂直),最小允许的块宽度和高度都应该被指示。当分割将导致块高度小于所指示的最小值时,会暗示非水平分割,当分割将导致块宽度小于所指示的最小值时,会暗示非垂直分割。图4显示块分割410及对应的二叉树420的例子。在二叉树的每一个分割节点上(也就是非叶节点),一旗标被用于指示使用了哪一分割类型(水平或者垂直),其中0可以指示水平分割,1可以指示垂直分割。
二叉树结构可以用于将一个图像区域分割成多个较小方块,如将一个切片(slice)分割成多个CTU,一个CTU分割成多个CU,一个CU分割成多个PU或者一个CU分割成多个TU等等。二叉树可以用于将一个CTU分割成多个CU,其中二叉树上的一个根节点就是一个CTU,二叉树上的一个叶节点就是CU。叶节点可以更进一步的通过预测和转换编解码进行处理。简单来说,这里没有从CU到PU或者CU到TU的更进一步的分割,这也就意味着CU等于PU及PU等于TU。因此,换句话说,二叉树的叶节点是预测和转换编解码的基础单元。
二叉树结构相比于四叉树结构更加灵活,因此可以支持更多的分割形状,这也是编解码效率提升的源头。但是,为了选中最佳分割形状,编解码的复杂性也会被增加。为了平衡复杂性和编解码的效率,提出了一种组合四叉树结构和二叉树结构的方法,也被称为四叉树加二叉树(quadtree plus binary tree,QTBT)结构。根据该QTBT结构,块首先通过四叉树结构分割以及该四叉树分割可以被重复直到一个分割块的尺寸达到四叉树叶节点尺寸所允许的最小值。如果叶四叉树块(leaf quadtree block)不大于二叉树根节点尺寸允许的最大值,它可以通过二叉树结构进一步的分割,该二叉树分割可以被重复直到分割块的尺寸(宽度或者高度)达到二叉树叶节点尺寸(宽度或者高度)所允许的最小值,或者该二叉树深度达到二叉树深度允许的最大值。在QTBT结构中,四叉树叶节点尺寸允许的最小值,二叉树根节点尺寸允许的最大值,二叉树叶节点宽度和高度允许的最小值以及二叉树深度允许的最大值可以在高级语法中被指示,如SPS。图5显示了块分割510及对应的QTBT520的例子。实线指示四叉树分割,虚线表示二叉树分割。在二叉树的每个分割节点中(也就是非叶节点),一个旗标指示使用了哪一分割类型(水平或者垂直),0可以指示水平分割以及1可以指示垂直分割。
以上QTBT结构可以用于将一个图像区域(例如,一个切片,CTU或者CU)分割成多个较小方块,如将一个切片分割成多个CTU,一个CTU分割成多个CU,一个CU分割成多个PU或者一个CU分割成多个TU等等。例如,QTBT结构可以用于将一个CTU分割成多个CU,其中QTBT的根节点就是CTU,该CTU通过QTBT结构被分割成多个CU,该多个CU可以通过预测和转换编解码进一步处理。简单来说,这里没有从CU到PU或者CU到TU的更进一步的分割,这意味着CU等于PU,PU等于TU。因此,换句话说,QTBT结构的叶节点是预测和转换的基础单元。
如下所示的一个QTBT结构的例子。对于一个尺寸为128×128的CTU,四叉树叶节点尺寸允许的最小值被设为16×16,二叉树根节点尺寸允许的最大值被设为64×64,二叉树叶节点宽度和高度允许的最小值被设为4以及二叉树深度允许的最大值被设为4。首先,该CTU被一个四叉树结构分割,叶四叉树单元(leaf quadtree unit)可以有一个从16×16(也就是四叉树叶节点尺寸允许的最小值)到128×128(等于CTU的尺寸,也就是没有分割)的尺寸。如果叶四叉树单元是128×128,它不能进一步的被二叉树分割,因为尺寸超过了二叉树根节点尺寸允许的最大值64×64。否则,叶四叉树单元可以进一步的被二叉树分割。该叶四叉树单元(也是根二叉树单元)的二叉树深度为0。当二叉树深度到达4(也就是所指示的二叉树允许的最大值),会暗示不分割。当对应于二叉树节点的块的宽度等于4,会暗示非水平分割,当对应于二叉树节点的块的高度等于4,会暗示非垂直分割。QTBT的叶节点可以通过预测(帧内图像或者帧间图像)和转换编解码进一步处理。
QTBT树结构被分别的应用于I-切片(slice)的亮度和色度分量,以及同时应用于P-切片和B-切片的亮度和色度(除了色度达到某些最小尺寸之外)。换句话说,在一个I-切片中,一个亮度CTB有一个它的QTBT-结构的块分割,两个色度CTB有另一个QTBT-结构的块分割,在另一个示例中,该两个色度CTB也可以有他们自己的QTBT-结构的块分割。
对于基于块的编解码,总是需要将图像分割成多个块(例如多个CU、多个PU和多个TU)以用于编解码的目的。如本领域所习知的是,在应用块分区之前,图像可能会被分成多个较小的图像区域,例如切片、方块(tiles)、多个CTU行或者多个CTU。为了编码的目的将图像分割成多个块的进程被称为使用编码单元结构对图像进行分割。HEVC采用一种特定的分割方法以生成CU、PU和TU,这种方法是编码单元结构的一个例子,QTBT树结构是编码单元结构的另一个例子。
调色板编解码
调色板模式是根据屏幕内容视频帧中的像素值通常集中在几个色彩值之上的观察来设计。图6给出了一个调色板操作模式的示例,其中图像区域610是输入,图像区域的直方图620表示了集中于50,80和210的稀疏强度水平(sparse intensity levels)。因此,调色板630(也叫调色板表)基于直方图获得,其中每一个代表性色彩值都与调色板表中的颜色索引(也叫调色板索引)相关。图像区域然后可以简洁地被表示成一个颜色索引图640。编码器分析CU中的像素,并确定几个代表性的色彩去构成调色板表,也就是在代表性色彩值(也叫主要色彩值)和颜色索引之间的色彩映射表。调色板表在比特流(bitstream)中被发信。具有接近于调色板色彩的像素值的像素被量化成调色板色彩,并用对应的调色板索引表示。剩下的像素(也就是具有像素值但未在调色板中被表示的像素)被称为逃逸像素(escape pixel),逃逸像素的像素值被直接发信。一个特定的调色板索引值被保留以表示逃逸像素,CU中的所有调色板索引组成了一个调色板索引图,其与逃逸像素值一起被发送到解码器。注意,在图6中,为了简化说明,一个像素或者调色板索引被表示为仅对应一个值。然而,在HEVC屏幕内容编码(Screen Content Coding,SCC)草案中,一个像素或调色板索引可以代表三个色彩分量值(如YCbCr或者GBR)。
在HEVC屏幕内容编码调色板模式中,在CU级发送一个旗标以发信是否使用了调色板模式。如果利用了调色板模式,CU中的像素由主色彩或者逃逸色彩所表示,主色彩是CU中比较有代表性的色彩,逃逸色彩是不属于主色彩的色彩。注意,色彩是三值(YCbCr或GBR)向量。
主色彩由调色板表描述,并由调色板表编解码工具所编码,基于调色板表,一个具有三个色彩分量的像素被调色板索引所表示,CU中所有像素的调色板索引形成了一个调色板索引图并由调色板索引图编解码工具进行编码。
对调色板应用预测编解码,解码器构建了一个调色板表预测子去预测当前CU的调色板表。在早期的调色板表编解码方法中,预测子是邻近CU的调色板表。然而,如果邻近CU在调色板模式中没有被编码,在这种情况中,不存在有效的预测子也没有预测被应用,因此,调色板表的预测是低效的。为了解决这个问题,将最后一个调色板模式编码的CU的调色板作为预测子。换句话说,无论邻近CU是不是由调色板编码,CU总能获得一个有效的调色板预测子。此外,当一个大CU使用一个小CU中的调色板表作为调色板表预测子时,因为该小CU可能包括比大CU更少的色彩,预测将被发现为低效的。调色板预测不足以在调色板表预测子中提供足够的色彩。因此,不仅最后编码的调色板表,而且在所有先前编码的调色板表中的色彩,都用于为后续CU形成一个新的预测子,以至于CU可以请求具有足够色彩的调色板表预测子来进行优良的预测。
在调色板表被编码以后,CU中的像素通过调色板中对应的色彩所对应的调色板索引来表示,该索引形成了一个索引图,并以水平或者垂直遍历扫描序列被基于运行编码(run-based encoded)。图7A是一个假定是水平扫描序列的调色板索引图编解码的示例。在这个示例中,通过三个水平遍历扫描对有16个索引的16个像素的索引图进行编码。这里有两种运行模式,复制索引模式(copy index mode)或者复制上面的模式(copy abovemode),对于每一个运行的启动位置,一个旗标被发送以指示使用了哪一运行模式。
如果使用了复制上面的模式,发送PaletteIndexRun信息以指示行程长度。对于对应于像素运行(run of pixels)的模式,从他们上面的像素中复制调色板索引,其中行程值(run value)从PaletteIndexRun中获取。图7B举例显示了图7A中的一个索引表编解码的例子,对应于R2的运行是一个行程值等于10的复制上面的运行。因为行程值应该大于0,PaletteIndexRun被定义为PaletteIndexRun=行程值-1,因此,图7B例中的R0,R1和R2的PaletteIndexRun值分别是3,1和9。另外,PaletteIndexRun在作为前缀语法元素和后缀语法元素被分开编码。
如果使用了复制索引模式,一个palette_index_idc语法元素首先被发信,随后是PaletteIndexRun信息。一行程组(run)的像素的共享相同的调色板索引,其中调色板索引和行程值分别从palette_index_idc和PaletteIndexRun中得到。如图7A和图7B中的示例,R0和R1是两个复制索引运行,其中其对应的(调色板索引,行程值)分别是(1,4)和(2,2)。
在当前的发明中,使用编码单元结构对视频数据进行调色板模式编解码的各个方面都有涉及。
发明内容
本发明提供了一种用于使用调色板模式编解码的用于彩色视频数据编码系统与解码系统的方法和装置。
本发明提出了一种使用调色板编解码模式对彩色视频进行视频编解码的方法和装置,彩色视频包括一个亮度分量与一个或多个色度分量。根据一种使用调色板编解码模式对彩色视频进行视频编解码的方法,当当前图像启动调色板模式的时候,使用相同编码单元结构将所述当前图像的所述分量亮度与所述色度分量共同的分割成多个亮度块与多个色度块,以及如果调色板模式被选中用于所述多个亮度块与所述多个色度块,所述多个亮度块与所述多个色度块被联合编码。或者,当使用各自的编码单元结果将当前图像的亮度和色度分量分别地分割成多个亮度块和多个色度块的时候,使用从排除所述调色板模式的编解码模式组中选中的一个编解码模式对多个亮度块与所述多个色度块进行编码或解码。通过在编码器侧的视频比特流中发信或者在解码器侧的从所述视频比特流中解析的调色板模式启用语法指示所述调色板模式是否启用。所述调色板模式启用语法在序列参数集(SPS)、图像参数集(PPS)或者视频比特流的切片的起始码中被发信或者解析。
根据另一方法,使用编码单元结构将当前图像的亮度和色度分量分割成多个亮度块与多个色度块。当所述当前图像启用调色板模式的时候,调色板模式编解码仅应用于所述多个亮度块,以及非调色板模式编解码应用于所述多个色度块。当色度块使用直接模式(DM)编码及对应的亮度块在所述调色板模式中进行编码的时候,预定义的帧内模式可以被用于编码所述色度模块。所述预定义帧内模式可能相当于直流模式(DC mode)或者平面(planar)模式。如果在所述调色板模式中对对应的亮度块进行编码,使用除直接模式以外的码字表,对码字编码或解码,所述码字指示与所述对应亮度块相关的色度块所使用的编解码模式。
根据另一个方法,当前图像使用编码单元结构被分割成多个编码单元,其中至少一个编码单元是非方形的。如果调色板编码模式用于非方形的编码单元,考虑所述非方形的编码单元的宽度是否大于或者小于所述非方形的编码单元的高度,根据所述非方形的编码单元形状,决定所述非方形的编码单元的与调色板编解码相关的扫描方向。然后使用推测的所述扫描方向将调色板编解码应用于所述非方形的编码单元。可以不用标志或者解析旗标来推测所述扫描方向。另外,所述旗标可以被明确的标志。如果所述非方形的编码单元的宽度大于所述非方形的编码单元的高度,所述扫描方向对应于水平扫描,否则,所述扫描方向对应于垂直扫描。在以上例子中,可以交换水平方向和垂直方向。
根据本发明的另一实施例,还提供了供上述方法实现的装置。
本发明提供了一种使用调色板模式的彩色视频数据编解码方法及装置,公开了编解码系统的各种配置,在使用相同的编码单元结构或各自的编码单元结构时候,可以对当前所采用的调色板模式进行修正,分别为亮度和色度确定合适的调色板模式编解码,实现更好的编码或解码效果。
附图说明
图1示出了使用四叉树结构将编码树单元分割成多个编码单元的示例。
图2示出了根据高效视频编码的非对称运动分区,非对称运动分区定义了将一个CU分割成PU的8个形状。
图3示出了二叉树分割结构使用的各种二进制分割类型,其中一个块可以使用所述分割类型递归地分割成两个较小方块。
图4示出了块分割及其对应的二叉树的示例,其中二叉树的每个分割点(也就是非叶节点),一个旗标用于指示使用了哪一分割类型(水平或者垂直),其中0可以指示水平分割以及1可以指示垂直分割。
图5示出了块分割及其对应的四叉树加二叉树结构的示例,其中实线指示四叉树分割以及虚线指示二叉树分割。
图6示出了调色板模式运行的示例,其中图像区域的直方图用于确定主要色彩,调色板根据被选中的主要色彩中产生,以及颜色索引图从所述图像区域中产生。
图7A示出了调色板索引图编解码的示例,其中假定是水平扫描序列。
图7B示出了图7A中的索引图编解码的示例。
图8示出了对应于本发明的一个实施例的各自的亮度和色度调色板编解码的示例,其中色度分量共享色度调色板。
图9示出了对应于本发明的一个实施例的单独亮度和色度调色板编解码的示例,其中色度分量使用各自的色度调色板。
图10示出了基于同位亮度编码单元获得目标色度单元的chroma_palette_mode旗目标示例。
图11示出了根据本发明一个实施例的用于具有色彩分量视频数据的使用调色板模式编解码的编解码系统的流程图,当启用调色板模式的时候,对亮度分量和色度分量的各自编解码是失效的,或者如果对亮度或者色度分量各自编解码,所述调色板模式是失效的。
图12示出了根据本发明一个实施例的用于具有色彩分量视频数据的使用调色板模式编解码的编解码系统的流程图,当当前图像启用调色板模式的时候,调色板模式编解码仅被应用于亮度块以及非调色板模式编解码被应用于色度块。
图13示出了根据本发明一个实施例的用于具有色彩分量视频数据的使用调色板模式编解码的编解码系统的流程图,如果调色板模式被选中用于亮度块,使用亮度调色板将调色板模式编解码应用于亮度块,以及如果调色板模式被选中用于色度块,使用色度调色板将调色板模式编解码应用于色度块。
图14示出了根据本发明一个实施例的用于具有色彩分量视频数据的使用调色板模式编解码的编解码系统的流程图,如果调色板模式用于非方形的编码单元,根据所述非方形的编码单元关于所述非方形的编码单元的宽度是否大于或者小于所述非方形的编码单元的高度的形状,为所述非方形的编码单元确定与调色板编解码相关的扫描方向。
具体实施方式
以下描述是实施本发明的最佳实施方式,所做之描述是为了更好的理解本发明的基本原理的目的而不应该对其作限制性理解,本发明保护范围由所附权利要求最佳确定。
根据目前的用于视频编解码的QTBT结构,所有的帧内视频帧的亮度和色度都被分别编码。但是,在HEVC-SCC中,调色板模式是为联合三个色彩分量所设计。而且,在HEVC-SCC中,在调色板模式中编码的CU通常是方形的CU,然而,当应用QTBT的时候,可能会产生非方形的CU。在本发明中,公开了各种方法来解决对包含亮度分量和色度分量的色彩视频应用调色板模式相关的问题。使用编码单元结构将图像分割成用于编解码的块,所述编码单元结构包括QTBT,HEVC CU/PU/TU分区以及其他在本发明中公开的其他块分区技术。
调色板模式的联合色彩分量编解码
当调色板模式被启用的时候,根据本发明的一个实施例,亮度和色度(或者R/G/B)各自编解码是失效的。这种情况下,亮度和色度分量可能会像P-切片或B-切片的情况一样被联合编解码。调色板模式的使用可以由一个旗标来指示,例如SPS,PPS或者切片的数据头中的palette_mode_enabled_flag为真。
在另一实施例中,如果应用了亮度和色度(或R/G/B)单独编码,调色板模式是失效的。换句话说,如果应用了亮度和色度(或R/G/B)单独编码,亮度和色度分量将会使用排除了所述调色板模式的一组编码模式中选中一个进行编码。
亮度和色度分量的各自的调色板编解码
当亮度和色度分量被分别编解码的时候,根据本发明的一个实施例,各自的调色板编解码被用于亮度和色度分量。例如,对于亮度分量编解码,使用单一分量调色板模式,一个调色板索引或者一个主要色彩指的是一个亮度值。亮度调色板仅包括来自单一色彩分量中的值。对于色度分量编解码,使用二分量调色板模式,一个调色板索引或者一个主要色彩指的是两个色度值。色度调色板包括来自于两个色彩分量的两个值。亮度调色板和色度调色板是独立的。图8示出了对应于该实施例的各自的亮度和色度调色板编解码示例。Y色彩分量810有一个独立的调色板840,U/V分量(820和830)共享另一个调色板850。块812对应于被编码的亮度CU。块822和块823分别对应于被编码的一个色度UCU和一个色度V CU。对于调色板表840,它有三个条目并且每个索引指向一个亮度色彩值(y0,y1或者y2)。对于调色板表850,它有三个条目并且每个索引指向一对色度值((u0,v0),(u1,v1)或者(u2,v2))。
在另一个实施例中,可分别对U/V(或者Cb/Cr)分量进行调色板编码。图9给出了一个示例。每一个色彩分量有独立的调色板。Y色彩分量910有独立的调色板940,U/V分量(920和930)也分别使用独立调色板950和960。块912对应于被编码的亮度CU,块922和932对应于被编码的一色度U CU和一色度V CU。对于调色板表940,它有三个条目并且每个索引指向亮度色彩值(y0,y1或者y2),对于调色板表950,它有三个条目并且每个索引指向U色度值(u0,u1或u2),对于调色板表960,它有三个条目并且每个索引指向V色度值(v0,v1或v2)。
当各自的调色板编解码应用于亮度和色度分量的时候,因为亮度和色度分量通常可能是相关的,因此色度调色板编解码可以从亮度分量中获得某些信息。根据一实施例,基于同位亮度块(例如CU)可以确定目标色度块是否要使用调色板编解码。palette_mode_mode旗标可以指示目标色度块是否在调色板模式中被编码。图10示出了基于同位亮度CU获得目标色度CU的chroma_palette_mode旗标示例。区域1010对应于一个亮度CTU,块1020对应于一个同位亮度CU,其中每个小方形对应于一个4X4的块(也就是最小CU尺寸),块1030,1032,1034和1036对应于四个角落4X4的块以及块1038对应于四个中间4X4块。根据一个实施例,如果同位亮度CU的左上角4X4块在调色板模式中被编码,当前色度块(称为目标色度块)被推测在所述调色板模式中被编码(也就是chroma_palette_mode=1)。根据另一个实施例,同位亮度CU的四个角落4X4块(也就是左上角,右上角,左下角,右下角)和四个(或一个)中间4X4亮度块被检查,如果它们中的任意一个使用调色板模式编码,推测当前色度块正使用了所述调色板模式进行编码。否则,chroma_palette_mode旗标等于0以指示色度块没有使用所述调色板模式。
chroma_palette_mode旗标可以有条件的被发信或者解析,根据一个实施例,如果同位亮度CU的左上角4X4块在调色板模式中进行编码,对应当前色度块的chroma_palette_mode被发信。根据另一个实施例,同位亮度CU的四个角落4X4块(也就是左上角,右上角,左下角,右下角)和四个(或一个)中间4X4亮度块被检查,如果它们中的任意一个使用调色板模式进行编码,对应当前色度块的chroma_palette_mode被发信。否则,所述chroma_palette_mode旗标被推测为0。
根据另一个实施例,如果同位亮度CU的左上角4X4块在调色板模式中进行编码,chroma_palette_mode被推测为当前色度块使用所述调色板模式(也就是chroma_palette_mode=1)。根据另一个实施例,同位亮度CU的四个角落4X4块(也就是左上角,右上角,左下角,右下角)和四个(或一个)中间4X4亮度块被检查,如果它们中的任意一个使用调色板模式进行编码,chroma_palette_mode被推测为当前色度块使用所述调色板模式(也就是chroma_palette_mode=1)。否则,chroma_palette_mode旗标被发信。
初始预测子列表
初始调色板预测子列表在切片,波前(wavefront)和方块(tile)的起点处设置初始预测子列表中的色彩条目,他们作为调色板编码CU的初始预测子。本发明公开了两种方法。
A.具有联合色彩分量的初始调色板预测子列表
在本方法中,I-切片的初始预测子列表具有和P/B-切片相同的结构,也就是说,使用一联和色彩分量调色板(例如每个条目有三个分量)。当I-切片用各自的亮度和色度编解码时候,对于通过调色板模式编码的亮度(例如Y)块,将来自初始调色板中的色彩条目对应的亮度分量当做调色板预测子。对于用调色板模式编码的色度块,如果U和V在QTBT或者其他CU结构下进行联合编码,将来自初始调色板列表中色彩条目对应的两个分量值作为调色板预测子。另一方面,如果在QTBT或者其他CU结构下分别对U和V进行编码,将来自初始调色板预测子列表中每个分量对应的值分别用于U和V的编码。
B.各自的初始调色板预测子列表
在本方法中,因为I-切片具有各自的亮度和色度编解码,使用各自的初始调色板预测子列表。一个初始调色板预测子列表中仅包括亮度值(Y-分量初始调色板预测子列表),其用于使用调色板模式编码的亮度块。如果当U和V使用QTBT或者其他CU结构联合编码,使用另一个包含二分量色彩条目的初始调色板预测子列表,其用于使用调色板模式编码的色度(U+V)块。如果当U和V使用QTBT或者其他CU结构分别进行编码,使用两个初始调色板预测子列表,每一个仅包括U和V的分量值。他们用于用调色板模式编码的U块或者V块。
共享调色板索引图编解码
在各自的亮度和色度编解码中,可以使用图8和图9中各自的调色板编解码。根据本发明的一个实施例,色度索引图编解码共享亮度索引图编解码结果。例如,当编解码色度CU的时候,如果同位亮度CU也在调色板模式中编码,所述亮度索引图可以重复使用。例如,palette_transpose_flag和palette_escape_val_present_flag可以共享。copy_above_palette_indices_flag也可以被共享,其可用于推导取样是否使用copy_above或者index_run模式。如果亮度分量的copy_above_palette_indices_flag被共享至色度分量,copy_above_palette_indices_flag和palette_run可以略过。在这种情况下,只有palette_index_idc需要被发信至每个index_run_mode调色板运行。num_palette_indices_minus1和copy_above_indices_for_final_run_flag也可以略过,并从亮度分量中复制。
在一个实施中,share_plt_coding_flag被发信以指示色度CU的调色板编解码是否可以从同位亮度CU中共享信息。
在另一个实施例中,识别色度CU的第一N×N子块(例如在该色度CU内的光域扫描序列中的第一),其对应的同位亮度块属于调色板编码的CU。当在调色板模式中编码色度CU的时候,共享上述提到的该亮度CU的调色板索引图编码信息。
在另一个实施例中,当色度CU的调色板编码可以共享一些来自于调色板编码的亮度CU中信息时,建立这些亮度CU的候选列表,发信索引以指示哪些亮度CU被选中来共享相关的信息。
在另一个实施例中,如果在调色板模式中编码亮度块,可以通过一种类似于HEVC中的LM模式的方式由亮度块预测同位色度块。根据另一实施例,参数a和b可以被推导或发信,其中chroma_pred_samlpe=a*collocated_luma_rec_samlpe+b,或者chroma_pred_samlpe=a*collocated_luma_pred_samlpe+b。
共享调色板编码取样
在各自的亮度和色度编解码中,在HEVC-SCC中的三分量调色板编解码模式可以用于亮度分量编解码。在这种情况下,只有解码调色板的亮度分量将被用来重建亮度CU。当编码/解码色度CU的时候,如果其同位亮度CU在三分量调色板模式中被编码,来自于三分量调色板编码模式中重建的色度取样可以用于编码/解码色度CU。一个明确发信的或者推导的旗标可以用于指示是否重新使用来自于所述三分量调色板编解码模式的所述重建的色度取样。
非方形编码单元的不同扫描方向
在HEVC-SCC中,CU的形状通常是方形的。水平或者垂直的遍历扫描应用于CU。palette_transpose_flag被发信以指示扫描方向。在QTBT或者其他CU结构中,可能会产生非方形的CU,因此CU可以是方形的也可以是非方形的。对于一个在调色板模式中编码的方形形状的CU,扫描方向仍然被发信。对于一个非方形的CU,扫描方向可以被推测出来。例如,对于一个CU宽度大于CU高度的非方形CU,使用垂直扫描。否则(也就是CU宽度小于CU高度),使用水平扫描。换句话说,所述扫描方向取决于CU宽度是否大于或者小于CU的高度。在另一个实施例中,对于一个CU宽度大于CU高度的非方形CU,使用水平扫描。否则(也就是CU宽度小于CU高度),使用垂直扫描。在另一个实施例中,palette_transpose_flag对应一个非方形的CU被发信。如果CU宽度大于CU高度,所述palette_transpose_flag设置为0以指示水平扫描或者设置为1以指示垂直扫描。否则(也就是CU宽度小于CU高度),所述palette_transpose_flag设置为1以指示水平扫描或者设置为0以指示垂直扫描。
以上公开的发明可以各种形式整合到各种视频编码或者解码系统中,例如,本发明可以基于硬件的方法来实现,如专用集成电路(IC)、现场可程序化逻辑数组(FPGA)、数字信号处理器(DSP)、中央处理单元(CPU)等等。本发明也可以使用计算机,笔记本电脑或者移动设备如智能手机上可执行的软件代码或者韧体代码来实现。此外,所述软件代码或韧体代码可执行于如带有专用处理器(如视频编码引擎或者协调处理器)的CPU那样的混合型平台上。
图11示出了根据本发明实施例的对带有色彩分量的视频数据使用调色板模式编解码的示例性编解码系统的流程图。当启用调色板模式的时候,对亮度和色度分量的各自编解码失效或者如果亮度和色度分量各自编码,则所述调色板模式是失效的。如流程图及本发明公开的其他后续流程图所示的步骤,其可以作为编码器侧和/或解码器侧的一个或多个处理器(例如一个或多个CPU)上可执行的程序代码来实现。流程图中所示的步骤可能也可以基于硬件来实现,如一个或多个电子设备或者处理器用于执行流程图中的步骤。根据本方法,与当前图像中一个图像区域相关的输入数据在步骤1110中被接收,其中所述当前图像包括一个亮度分量和一个或者多个色度分量。在编码器侧,所述输入数据可对应于将要被编码的视频数据。在解码器侧,所述输入数据可对应于将要被解码的压缩视频数据。在步骤1120中,当对应当前图像启用调色板模式的时候,使用相同编码单元结构将当前图像中的所述亮度分量和所述一个或多个色度分量联合地分割成多个亮度块和多个色度块,以及如果调色板模式被选中用于所述多个亮度块和所述多个色度块,调色板编解码被联合应用于所述多个亮度块和所述多个色度块。或者当使用各自的CU结构将当前图像中的所述亮度分量和所述一个或多个色度分量分别地分割成多个亮度块和多个色度块,使用从排除所述调色板模式的编解码模式组中选中的一个编解码模式对所述多个亮度块和所述多个色度块进行编码或解码。
图12示出了根据本发明实施例的对带有色彩分量的视频数据使用调色板模式编解码的示例性编解码系统的流程图。当对应当前图像启用调色板模式的时候,调色板模式编解码仅应用于亮度块,以及非调色板模式编解码应用于色度块。根据本方法,与当前图像中一个图像区域相关的输入数据在步骤1210中被接收,其中所述当前图像包括一个亮度分量和一个或者多个色度分量。在步骤1220中,使用编码单元结构将所述当前图像的所述亮度分量和所述一个或多个色度分量分割成多个亮度块和多个色度块。当对应当前图像启用调色板模式的时候,在步骤1230中,调色板模式编解码应用于所述多个亮度块以及非调色板模式编解码应用于所述多个色度块。
图13示出了根据本发明实施例的对带有色彩分量的视频数据使用调色板模式编解码的示例性编解码系统的流程图。如果调色板模式被选中用于亮度块,则使用亮度调色板将调色板模式编解码应用于亮度块,如果调色板模式被选中用于色度块,则使用色度调色板将调色板模式编解码应用于色度块。根据本方法,与当前图像中一个图像区域相关的输入数据在步骤1310中被接收,其中所述当前图像包括一个亮度分量和一个或者多个色度分量。在步骤1320中,使用各自的编码单元结构将所述当前图像的所述亮度分量和所述一个或多个色度分量分别分割成多个亮度块和多个色度块。在步骤1330中,如果调色板模式被选中用于亮度块,则使用亮度调色板将调色板模式编解码应用于亮度块,如果调色板模式被选中用于色度块,则使用色度调色板将调色板模式编解码应用于色度块。
图14示出了根据本发明实施例的对带有色彩分量的视频数据使用调色板模式编解码的示例性编解码系统的流程图。如果调色板模式用于一个非方形的CU,考虑所述非方形的编码单元的宽度是否大于或者小于所述非方形的编码单元的高度,根据非方形的编码单元的形状,决定所述非方形的CU的与调色板编码相关的扫描方向。根据本方法,与当前图像中一个图像区域相关的输入数据在步骤1410中被接收。在步骤1420中,使用编码单元结构将当前图像分割成多个编码单元,其中至少有一个CU是非方形的。在步骤1430中,检查非方形的CU是否使用了调色板模式。如果非方形的CU使用了所述调色板模式(也就是步骤1430中“是”的通路),执行步骤1440和1450。否则(也就是步骤1430“否”的通路),略过步骤1440和1450。在步骤1400中,考虑所述非方形的编码单元的宽度是否大于或者小于所述非方形的编码单元的高度,根据所述非方形的编码单元的形状,决定所述非方形的编码单元的与调色板编解码相关的扫描方向。在步骤1450中,使用推测的扫描方向将所述调色板编解码应用于所述非方形编码单元。
所示流程图旨在说明根据本发明的视频编解码的示例,本领域技术人员可以在不背离本发明精神的前提下,对每个步骤进行修改、重新排列、拆分以及组合来实施本发明。在本发明中,特定的语法和语义已经用于说明本发明的实施例。本领域技术人员可以在不背离本发明精神的前提下,用等同的语法和语义替换特定的语法和语义来实施本发明。
以上描述是为了使本领域普通技术人员能够实现本发明,如在特定应用和其要求的情景下提供的。对所描述的实施例的各种修改对本领域技术人员而言是显而易见的,并且本文中所定义的一般原理可应用于其他实施例。因此,本发明并不局限于所示出和描述的特定实施例,但要符合与这里公开的原理和新颖特征一致的最宽范围。为提供对本发明的彻底理解,在以上详细描述中给出了各种具体细节。不仅如此,本领域技术人员应当理解,本发明可以具体实施。
以上所描述的本发明的实施例可能以各种硬件、软件代码或者两者的组合来实现。例如,本发明的一个实施例可以是一个或多个集成到一个视频压缩芯片中的电子电路或者集成到视频压缩软件中的程序代码执行本文所描述的进程。本发明的一个实施例也可以是在一个数字信号处理器(DSP)上执行的程序代码以执行本发明所描述的进程。本发明也可以包含由计算机处理器,数字信号处理器,微处理器或者现场可编程逻辑门阵列(FPGA)执行的多个功能。这些处理器可通过执行定义本发明所采用的特定方法的机器可读软件代码或者固件代码,来根据本发明被用以执行特定的任务。软件代码或固件代码可以以不同的程序设计语言和不同的格式或者样式来开发,还可以为不同的目标平台所编译。然而,软件代码不同的代码格式,风格和语言以及用以执行遵循本发明的任务的配置代码的其他手段并不脱离本发明的精神和范围。
在不脱离本发明精神或基本特征的情况下,本发明可以以其他特定的形式实施,所描述的实施例在所有方面都仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求而非前面的描述指示。落入权利要求的等同物的含义和范围内的所有变化都包括在其范围内。