本申请主张于2017年05月11日申请的美国临时专利申请第62/504,646号、2017年06月27日申请的美国临时专利申请第62/525,240号,以及2018年01月10日申请的美国临时专利申请第62/615,555号的权利,且上述美国临时专利申请的全文内容以引用方式并入本文中。
背景技术
高效率视频编码(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)的伙伴关系。
在HEVC中,将一个切片(slice)分割成多个编码树单元(Coding Tree Unit,CTU)。在主配置文件中,CTU的最小尺寸和最大尺寸由序列参数集(Sequence Parameter Set,SPS)中的语法元素来指定。所允许的CTU尺寸可以是8×8、16×16、32×32,或者64×64。对于每个切片而言,根据光栅扫描顺序来处理该切片内的CTU。
CTU进一步被分割成多个编码单元(Coding Unit,CU),以适应各种局部特性。表示为编码树的四叉树用于将CTU分割成多个CU。假设CTU尺寸为M×M,其中M为64、32或者16数值中的一个。CTU可以是单个CU,或者被分割成四个具有相同尺寸(即,每个尺寸为M/2×M/2)的更小单元,这些更小单元是编码树的节点。如果这些单元是该编码树的叶节点,则这些单元将变成CU。否则,可以重复四叉树分割处理,直到节点的尺寸达到如SPS中所指定的最小允许的CU尺寸。此表示形成了由编码树(也称为分割树结构)指定的递归结构。
对每个CU指定了一个或多个预测单元(Prediction Unit,PU)。与该CU一起,PU用作共享预测信息的基础代表块(basic representative block)。每个PU内部,应用相同的预测处理,并以PU为基础将相关信息发送给解码器。根据PU分割类型,可以将一个CU分割成一个、二个或四个PU。
在通过根据PU分割类型应用预测处理获取残差块之后,根据类似于CU的编码树的另一四叉树结构,CU可以被分割为变换单元(Transform Unit,TU)。TU是应用整数变换与量化的残差或变换系数的基本代表块。对于每个TU,将具有与该TU相同尺寸的一个整数变换应用至该TU来获取残差系数。以TU为基础的量化之后,将这些系数发送给解码器。
分别定义术语编码树块(coding tree block,CTB)、编码块(coding block,CB)、预测块(prediction block,PB)以及变换块(transform block,TB),以指定分别与CTU、CU、PU和TU相关的一个颜色分量的2D样本阵列(2-D sample array)。这样,CTU由一个亮度CTB、两个色度CTB和相关的语法元素组成。对于CU、PU和TU,相似的关系有效。尽管在色度达到某些最小尺寸时的应用例外,通常将树分割同时应用于亮度和色度。
在下一代视频编解码中,在JVET-E1001(Chen et al.,“Algorithm Descriptionof Joint Exploration Test Model 5(JEM5)”,Joint Collaborative Team on VideoCoding of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,5th Meeting:Geneva,CH,12–20January,2017,Document:JVET-E1001)中已采用了组合四叉树和二叉树结构的方法,该结构也称为四叉树加二叉树(quadtree plus binary tree,QTBT)结构。
所公开的树结构可单独应用于I-切片(I-slice)(即帧内编解码切片)的亮度和色度,并且,同时应用于P-切片(P-slice)和B-切片(B-slice)的亮度和色度(除了在达到色度的某些最小尺寸的时候)。换言之,在I-切片内,亮度CTB具有其QTBT结构化(QTBT-structured)的块分割,两个色度CTB具有另一种QTBT结构化的块分割。两个色度CTB也可以具有其自身的QTBT结构化的块分割。
在HEVC中,对于每个TU,应用具有与该TU相同尺寸的一个整数变换来获取残差系数。以TU为基础的量化之后,将这些系数发送给解码器。由于离散余弦变换类型II(Discrete Cosine Transform Type II,DCT-II)具有较强的“能量压缩”性能,因此HEVC采用DCT-II作为其核心变换。大部分信号信息倾向于集中在DCT-II的少数低频分量中,近似于卡洛南-洛伊变换(Karhunen-Loève Transform,KLT)。如数据压缩的领域中已知的,根据马尔可夫处理(Markov processes)的某些界限,KLT是对信号去相关感应中的最佳变换。信号f[n]的N点DCT-II的定义如(1)所示。
在联合探索测试模型5(Joint Exploration Test Model,JEM-5)中,尺寸高达128×128的大块尺寸的变换能够提高编码效率,尤其提高更高分辨率视频(例如1080p序列以及4K序列)的编解码效率。除了已经在HEVC中采用的DCT-II以及4x4离散正弦变换类型VII(Discrete Cosine Transform Type VII,DST-VII)之外,AMT方案,还用于帧间编解码块和帧内编解码块的残差编解码。对于帧内预测残差,与DCT-II相比,其他变换类型可具有更高效率。因此,在JVET-E1001(即,JEM 5)中,EMT方案用于帧间编解码块和帧内编解码块的残差编解码。在文献中,EMT也可被称为AMT。在本申请中,术语AMT和EMT可以互换使用。其利用从DCT/DST家族中选择的多重变换,而不是利用HEVC中的当前变换。新引入的变换矩阵为DST-VII、DCT-VIII、DST-I以及DCT-V。表1总结了N点输入的每一变换的变换基函数。
表1 N点输入的变换基函数
根据EMT,多重变换可被选择用于一个TU。例如,对于帧间CU,一个EMT标志可以被编解码,以指示HEVC被使用(即,EMT标志等于0),还是新的多重变换中的一个被使用(即,EMT标志等于1)。当EMT标志等于1时,在水平方向和垂直方向上分别存在两种不同的变换。EMT索引可以用于指示所选择以用于水平方向和垂直方向中的每个的变换。总的来说,当EMT标志为1时,对于每个CU,四个不同的变换被支持。对于帧内CU,在多重变换中也存在四个候选项。然而,根据帧内预测方向,这四个候选项是不同的。
为了保持变换矩阵的正交性,与HEVC中的变换矩阵相比,将这些变换矩阵进行更精确地量化。为了使变换系数的中间值保持在16位的范围内,在水平变换和垂直变换后,与当前HEVC变换中所使用的向右移位(shift)相比,所有的变换系数再向右移2位。
AMT被使能以用于宽度和高度均小于或等于64的CU。其中,是否应用AMT是由CU层标志(CU-level flag)所控制。当CU层标志等于0时,将DCT-II应用到CU中以对残差进行编解码。对于在AMT使能的CU中的亮度编解码块,发信两个额外的标志以识别待使用的水平变换和垂直变换。
当AMT可用时,CU层标志用于控制是否将AMT应用到CU。当CU层AMT标志等于0时,将DCT-II应用到CU,以在水平方向和垂直方向上对残差进行编解码。对于亮度编解码块,当CU层AMT标志等于1,表明将AMT应用到CU时,发信两个额外的标志以识别所选择的水平变换和垂直变换。
对于帧内残差编解码,由于不同帧内预测模式的统计量不同,因此使用依赖于模式的变换候选项选择处理。如表2所示,已经预定义三个变换集(transform set)以用于每个CU,其中每个变换集均由两个不同的变换组成。使用从0到2的变换索引以选择变换集。如表3中的规定,根据CU的帧内预测模式选择变换集。根据表3,当CU层AMT标志等于1时,根据CU的帧内预测模式,首先识别出变换集。在所识别出变换集的基础上,对于水平变换和垂直变换中的每个,根据显性发信标志选择两个变换候选项中的其中一个。例如,如果帧内预测模式16用于CU,则垂直变换将使用变换集0(即DST-VII和DCT-VIII),水平变换使用变换集2(即DST-VII和DCT-V)。此外,发信一标志以指示所选择以用于垂直变换的变换候选项,并发信一标志以指示所选择以用于水平变换的变换候选项。如果所发信的这些标志对应于分别用于垂直变换和水平变换的(1,0),且使用帧内预测模式16对CU进行编解码,则来自变换集0的第二候选项(即,DCT-VIII)用于垂直变换,来自变换集2的第一候选项(即,DST-VII)用于水平变换。
表2 三个预定义变换候选项集
表3 根据帧内预测模式的变换集选择
对于帧间预测残差,仅一个变换集包括DST-VII,并且DCT-VIII用于所有的帧间模式以及均用于水平变换和垂直变换。
因此,需要开发一种方法以进一步提高编解码性能或者降低集成有AMT的系统的复杂度。
发明内容
有鉴于此,本发明提供一种编码或解码视频数据的方法及装置,以解决上述问题。
本发明公开了一种编码或解码视频数据方法及设备,该视频编码或解码通过集成有AMT的视频编码器或视频解码器来执行。根据本方法,接收与当前图像中的当前块相关的输入数据;其中,在编码器侧,所述输入数据对应于由前向变换处理进行处理的所述当前块,且在解码器侧,所述输入数据对应于由逆变换处理进行处理的当前系数块。确定由指定为第一类型或第二类型的两种类型候选项组成的变换集,或确定由对应于所述第一类型、所述第二类型以及翻转第二类型的三种类型组成的变换集;其中,所述第一类型与所述第二类型不同。如果当前块使用AMT,则从变换集中选择垂直变换和并从变换集中选择水平变换。在编码器侧,根据所述当前块、所述垂直变换和所述水平变换生成当前系数块;或在解码器侧,根据所述当前系数块、与所述垂直变换相关的垂直逆变换和与所述水平变换相关的水平逆变换恢复当前块。
在一个实施例中,在编码器侧发信用于均指示垂直变换选择和水平变换选择的变换索引,或在解码器侧解析所述变换索引。所述变换索引可被二值化为二进制串,并使用上下文自适应二进制算术编码(Context Adaptive Binary Arithmetic Coding,CABAC)对所述二进制串的一个或多个码元(bin)进行编解码。在另一实施例中,用于所述二进制串的一个或多个码元的CABAC使用N个上下文;其中,N对应于正整数。根据所述当前块的块尺寸,确定用于所述CABAC的上下文索引。在又一实施例中,第一上下文集用于用帧内预测模式进行编解码的所述当前块的所述上下文自适应二进制算术编码,且第二上下文集用于用帧间预测模式进行编解码的所述当前块的所述上下文自适应二进制算术编码。
在一个实施例中,当所述变换集由所述第一类型和所述第二类型组成时,在所述编码器侧发信或在所述解码器侧解析用于指示垂直变换选择的第一标志以及用于指示水平变换选择的第二标志。所述第一标志和所述第二标志通过使用CABAC进行编解码。所述第一标志所使用的第一上下文集与所述第二标志所使用的第二上下文集不同。在另一实施例中,分别根据一个或多个空间相邻块的垂直变换选择和水平变换选择,可确定所述第一标志和所述第二标志的上下文。当在所述编码器侧,并在发信所述第一标志和所述第二标志之前,发信所述当前系数块时;或在所述解码器侧,并在解析所述当前系数块之后,解析所述第一标志和所述第二标志;以及如果所述当前系数块的非零系数的数量小于阈值,则在所述编码器侧不发信所述第一标志和所述第二标志,或在所述解码器侧不解析所述第一标志和所述第二标志。在本例中,所述第一标志和所述第二标志被推断为预定义类型。
在一个实施例中,所述第一类型对应于DCT-II,且所述第二类型自包括离散正弦变换类型IV(Discrete Sine Transform Type IV,DST-IV)、DST-VII以及翻转DCT-IV(Flipped Discrete Cosine Transform Type IV,FDCT-IV)的组中选择。如果所述当前块不使用所述AMT,则选择所述第一类型以用于所述垂直变换和所述水平变换。如果当前块使用所述AMT,则所述垂直变换和所述水平变换选择不同的变换类型,或所述垂直变换和所述水平变换选择所述第二类型。如果当前块使用所述AMT,则所述当前块是否允许所述第二类型依赖于与所述当前块相关的尺寸。与所述当前块相关的所述尺寸对应于变换块尺寸。与所述当前块相关的所述尺寸对应于变换宽度或变换高度。
本发明公开了另一种编码或解码视频数据方法及设备,该视频编码或解码通过集成有AMT的视频编码器或视频解码器来执行。根据本方法,接收与在当前图像中的当前块相关的输入数据;其中,在编码器侧,所述输入数据对应于由前向变换处理进行处理的所述当前块,且在解码器侧,所述输入数据对应于由逆变换处理进行处理的当前系数块。确定与所述当前块相关的当前运动矢量差(Motion Vector Difference,MVD)的分辨率。根据所述当前MVD的分辨率,确定变换集。从所述变换集中选择垂直变换和水平变换。在所述编码器侧,根据所述当前块、所述垂直变换和所述水平变换生成当前系数块;或在所述解码器侧,根据所述当前系数块、与所述垂直变换相关的垂直逆变换和与所述水平变换相关的水平逆变换恢复所述当前块。
在一个实施例中,如果所述当前MVD的分辨率对应于整数亮度样本或者四个亮度样本,使用缩减的变换集以选择所述垂直变换和所述水平变换,或选择默认变换类型以均用于所述垂直变换和所述水平变换。例如,所述默认变换类型可以对应于DCT-II,或者可以在SPS、图像参数集(Picture Parameter Set,PPS)或者切片头中发信所述默认变换类型。
在另一实施例中,还根据与当前MVD的分辨率以及所述变换块相关的尺寸确定所述变换集。例如,如果所述当前MVD的分辨率对应于整数亮度样本或者四个亮度样本,且与所述当前块相关的所述尺寸大于阈值,则使用缩减的变换集以选择所述垂直变换和所述水平变换,或选择默认变换类型以均用于所述垂直变换和所述水平变换。所述默认变换类型可对应于DCT-II,或者在SPS、PPS或切片头中发信所述默认变换类型。与所述当前块相关的尺寸可对应于所述当前块的块尺寸、所述当前块较长侧的长度,或所述当前块较短侧的长度。
本发明仅使用两种类型的变换来进行残差编解码,进一步提高了编解码性能,降低了集成有AMT系统的复杂度。
具体实施方式
以下描述为实施本发明的较佳方式。本描述的目的在于阐释本发明的一般原理,并非起限定意义。本发明的保护范围当视权利要求书所界定为准。
依赖于MVD-分辨率的AMT
在传统的AMT中,根据CU的帧内预测模式,自适应地选择变换集以用于每一CU。为了提高编解码效率,根据MVD分辨率自适应地应用AMT。如视频编解码领域所已知的,通过使用运动矢量预测子可以有效且预测性地发信与当前块相关的运动矢量。因此,发信MVD,而不是发信运动矢量本身。此外,分数像素精度可用于运动矢量、运动矢量预测子以及MVD,以用于更精准的运动估计/运动补偿。图1示出了根据本发明的一种示例性流程。在步骤110中,首先确定用于当前块的MVD分辨率;随后,在步骤120中,根据MVD分辨率确定变换集;在步骤130中,在变换集中选择变换类型以分别用于垂直变换和水平变换;以及,在步骤140中,将所选择的变换类型分别用于垂直变换和水平变换。例如,在编码器侧,根据当前块以及与所选择的变换类型相关的垂直变换和水平变换生成当前系数块。在解码器侧,根据当前系数块、与垂直变换相关的垂直逆变换以及与水平变换相关的逆变换恢复当前块。
在一个实施例中,当在当前块中使用整数亮度样本或四个亮度样本MVD时,禁能AMT,并使用默认变换类型。因此,不会向当前块发信CU层标志或用于指示水平变换及垂直变换的变换类型的标志。可以在高层语法中预定义或发信该默认变换类型。在一个示例中,在两个方向上的默认变换类型为DCT-II。在另一示例中,在SPS、PPS或切片头中发信该默认变换类型。四个亮度样本MVD指的是MVD分辨率对应于四个亮度样本(即,2×2亮度像素)的情况。
在另一实施例中,当在当前块中使用整数亮度样本或四个亮度样本MVD时,完整变换集(full transform set)的集合用于当前块。在一个示例中,选择两个变换作为变换集。首先,发信一个标志以指示是否应用AMT。如果没有应用AMT,则使用默认变换类型;以及如果应用AMT,则应用第二变换类型。默认变换类型(或称为第一变换类型)可以为DCT-II,或者其他预定义类型之一,第二变换类型可以为DST-VII,或者其他预定义类型之一。
在又一实施例中,当在当前块中使用四个亮度样本MVD时,禁能AMT,并在两个方向上使用默认变换类型。因此,不会向当前块发信CU层标志以及用于指示水平变换及垂直变换的变换类型的标志。可以在高层语法中预定义或发信默认变换类型。在一个示例中,该默认变换类型可以是DCT-II。在另一示例中,可以在SPS、PPS或切片头中发信该默认变换类型。
在又一实施例中,当在当前块中使用四个亮度样本MVD时,完整变换集的子集用于当前块。在一个示例中,选择两个变换作为子集。首先,发信一个标志以指示是否应用AMT。如果没有应用AMT,则使用默认变换类型;以及如果应用AMT,则使用第二变换类型。默认变换类型(或称为第一变换类型)可以为DCT-II,或者其他预定义类型之一,第二变换类型可以为DST-VII,或者其他预定义类型之一。
在另一方法中,基于MVD分辨率及块尺寸,自适应地应用AMT。
在一个实施例中,当在当前块中使用整数亮度样本或四个亮度样本MVD且当前块的块尺寸大于阈值时,禁能AMT,并使用默认变换类型。因此,不会向当前块发信CU层标志以及用于指示水平变换及垂直变换的变换类型的标志。可以在高层语法中预定义或发信默认变换类型。在一个示例中,该默认变换类型可以是DCT-II。在另一示例中,可以在SPS、PPS或切片头中发信该默认变换类型。
在另一实施例中,当在当前块中使用整数亮度样本或四个亮度样本MVD且当前块的块尺寸大于阈值时,完整变换集的子集用于当前块。在一个示例中,选择两个变换作为子集。首先,发信一个标志以指示是否应用AMT。如果没有应用AMT,则使用第一变换类型;以及如果应用AMT,则使用第二变换类型。第一变换类型可以为DCT-II,或者其他预定义类型之一,第二变换类型可以为DST-VII,或者其他预定义类型之一。
在又一实施例中,当在当前块中使用四个亮度样本MVD且当前块的块尺寸大于阈值时,禁能AMT,并使用默认变换类型。因此,不会向当前块发信CU层标志以及用于指示水平变换及垂直变换的变换类型的标志。可以在高层语法中预定义或发信该默认变换类型。在一个示例中,该默认变换类型可以是DCT-II。在另一示例中,可以在SPS、PPS或切片头中发信该默认变换类型。
在又一实施例中,当在当前块中使用四个亮度样本MVD且当前块的块尺寸大于阈值时,变换集的子集用于当前块。在一个示例中,选择两个变换作为子集。首先,发信一个标志以指示是否应用AMT。如果没有应用AMT,则使用第一变换类型;以及如果应用AMT,则应用第二变换类型。第一变换类型可以为DCT-II,或者其他预定义类型之一,第二变换类型可以为DST-VII,或者其他预定义类型之一。
在本方法的所有上述实施例中,块尺寸可由其面积(即宽*高)、其较长侧的长度或其较短侧的长度来测量。
在本方法的所有上述实施例中,可以在高层语法中预定义或发信该块面积的阈值。例如,该阈值可以为64、256或1024。在另一示例中,可以在SPS、PPS或切片头中发信该阈值。
在本方法的所有上述实施例中,可以在高层语法中预定义或发信该块的较长侧的阈值。阈值的示例是:8、16、32等。在另一示例中,可以在SPS、PPS或切片头中发信该阈值。
在本方法的所有上述实施例中,可以在高层语法中预定义或发信该块的较短侧的阈值。例如,该阈值可以为8、16或32。在另一示例中,可以在SPS、PPS或切片头中发信该阈值。
在又一实施例中,在本发明上述的所有的方法及实施例中,使用约束(constraint),以在应用AMT时,两个方向(即水平和垂直方向)应当使用相同的变化类型。因此,无需单独地指示两个方向中的每个的变换类型。
变换类型的选择
当前,总共有高达八种DCT以及八种DST,其与传统的AMT相关。为了支持AMT大量的变换,将会导致实施的复杂度高,并需要更多侧信息(side information)来指示所选择的类型。在本发明中,提出了仅使用两种类型的变换来进行残差编解码,这两种类型表示为类型A和类型B。对于水平变换和垂直变换中的每个,使用类型A或类型B。在一个方法中,类型A通常选择DCT-II,另一方面,类型B可以自包括DST-IV、DST-VII以及翻转DCT-IV的组中选择一个。下面列举根据本方法的一些实施例:
类型A为DCT-II且类型B为DST-IV。
类型A为DCT-II且类型B为DST-VII。
类型A为DCT-II且类型B为FDCT-IV。
在上述实施例中,可以将类型A和类型B的选择进行交换。例如,在上述第一实施例中,类型A可以为DST-IV且类型B可以为DCT-II。
将信号f[n]的N点DST-IV变换定义为:
将信号f[n]的N点DCT-IV变换定义为:
可以在高层语法中,例如在SPS、视频参数集(video parameter set,VPS)、PPS或切片头中,发信类型A和类型B的选择。
不同块尺寸的变换类型的可用性
本发明的另一方面提出了允许类型A和类型B变换的条件。首先定义了一些参数:MaxTrSize为所允许的最大变换尺寸;MinTrSize为所允许的最小变换尺寸。
在一个实施例中,类型A和类型B变换可用于位于从MinTrSize到MaxTrSize的范围内的所有尺寸。
在另一实施例中,类型A可用于MinTrSize与MaxTrSize之间的范围内的所有尺寸。然而,类型B仅可用于MinTrSize与MaxTrSize/2之间的范围内的尺寸。在尺寸等于MaxTrSize的例子中,将推断该变换为类型A。
在又一实施例中,如果在一个方向上的变换尺寸等于预定义的最小尺寸,则将仅允许默认变换类型。例如,当变换尺寸等于4时,使用默认类型B。
在又一实施例中,如果变换块的宽度或高度等于MinTrSize,则将水平方向和垂直方向的变换类型设置成相同。例如,在本例中,如果确定水平变换为类型A,则推断垂直变换为类型A。
变换选择标志的编解码
本发明提出了,对于水平方向和垂直方向中的每个,如果类型A和类型B均可用,则一个标志(码元)用于指示变换类型的选择。控制类型A变换或类型B变换的选择的标志由CABAC进行编解码。
在一个实施例中,仅一个上下文用于对水平方向和垂直方向的标志均进行编解码。
在另一实施例中,使用两个上下文,其中一个上下文用于对水平方向的标志进行编解码,另一个上下文用于对垂直方向的标志进行编解码。
在又一实施例中,对于两个方向中的每个,使用空间相邻块的变换类型对该标志进行上下文编解码。例如,如果对顶端块和左侧块均以类型A进行编解码,则可以将上下文索引ctxIdx设置为2;否则,如果对顶端块和左侧块其中之一以类型A进行编解码,则将上下文索引ctxIdx设置为1;否则,将上下文索引ctxIdx设置为0。
在又一实施例中,使用N(N>2)个上下文。根据变换的尺寸确定上下文索引。例如,将上下文索引ctxIdx设置为log2(MaxTrSize)-log2(CurrSize),其中CurrSize对应于当前变换的尺寸。如果ctxIdx大于(N-1),则将ctxIdx设置为(N-1)。
在又一实施例中,使用两个上下文集,每一上下文集均由N个上下文组成。第一上下文集用于对水平标志进行编解码,另一上下文集用于对垂直标志进行编解码。每一上下文集中的索引根据如上所述的空间相邻块的变换尺寸或变换类型来确定。
在又一实施例中,对第一方向的标志进行编解码的上下文依赖于第二方向的变换类型。例如,如果所确定的第二方向的变换类型为类型A,则第一上下文集用于对第一方向的标志进行编解码。否则,如果所确定的第二方向的变换类型为类型B,则第二上下文集用于对第一方向的标志进行编解码。上下文集可仅包括一个上下文,或者包括多个上下文。如果多个上下文被使用,则上下文可以由上述的空间相邻块的变换尺寸或变换类型来确定。
在又一实施例中,在对变换系数进行编解码后,对标志进行编解码。如果非零系数的数量小于阈值,则不对标志进行编解码,且推断标志为0。换言之,推断变换类型为预定义的一种类型,例如类型A。阈值可以为2、3或其他整数。
在又一实施例中,在对变换系数进行编解码后,对标志进行编解码。如果非零AC系数的数量小于阈值,则不对标志进行编解码,且推断标志为0。换言之,推断变换类型为预定义的一种类型,例如类型A。AC系数指的是不处于变换块的左上位置(0,0)的系数。阈值可以为2、3或其他整数。
在两个方向上的变换决策的联合编解码
另一编解码变换决策标志的方法为在两个方向上对决策进行联合编解码。变换索引TrIdx=0,1,2,3用于指示在两个方向上所选择的变换类型。表4示出了TrIdx的二值化以及TrIdx到不同变换类型的映射的实施例。CABAC可用于在二值化后对码元进行编解码。
表4 TrIdx的二值化以及TrIdx到不同变换类型的映射
I.二值化的第一码元的上下文建模:
一个、两个或N个(N>2)上下文可用于对第一码元进行编解码。
上下文索引可以根据块尺寸进行确定。例如,如果块宽度为CurrW,且块高度为CurrH,则上下文索引为ctxIdx=(2*log2(MaxTrSize)-log2(CurrW)-log2(CurrH))>>1。如果ctxIdx大于(N-1),则将ctxIdxis设置为(N-1)。
在另一实施例中,两个上下文集用于对第一码元进行编解码。第一上下文集用于帧内预测模式,另一上下文集则用于帧间预测模式。每一上下文集中的索引由如上所述的块尺寸来确定。
II.第二码元的上下文建模:
在一个实施例中,仅一个上下文用于对第二码元进行编解码。在另一实施例中,两个上下文用于对第二码元进行编解码,其中一个上下文用于帧内预测模式,另一上下文用于帧间预测模式。
III.第三码元的上下文建模:
在一个实施例中,仅一个上下文用于对第三码元进行编解码。在另一实施例中,两个上下文用于对第三码元进行编解码:其中一个上下文用于帧内预测模式,而另一上下文则用于帧间预测模式。
注意,也可以应用上述的联合编解码方法,以对JEM AMT方法中的变换索引进行编解码。
在另一方法中,类型A为DCT-II,且类型B为从{DST-VII,DST-IV,DCT-IV}中选择的一个,并也使用翻转类型B。令
为具有变换类型B的信号f[n]的N点变换,则可以将翻转类型B变换计算为:
在一个实施例中,帧内预测编码和帧间预测编码使用不同的变换集。对于帧内预测编码,使用表4中的变换集。对于帧间预测编码则使用表5中的变换集。
在另一实施例中,帧内预测和帧间预测均使用表5中的相同的变换集。
表5 TrIdx的二值化以及TrIdx到不同变换类型的映射
TrIdx |
二值化 |
水平方向的变换类型 |
垂直方向的变换类型 |
0 |
1 |
类型A |
类型A |
1 |
000 |
类型B |
类型B |
2 |
001 |
类型B |
翻转类型B |
3 |
010 |
翻转类型B |
类型B |
4 |
011 |
翻转类型B |
翻转类型B |
上述的变换可以仅使用具有预定义精准度的整数来实现。例如,变换系数可以被缩放64倍,随后被取整成(rounded to)最接近的整数。
图2示出了根据本发明的方法的集成有AMT的编码系统的流程图的示例;其中,缩减的变换集用于AMT。本流程图中所示的步骤也可根据诸如用于执行本流程图中的步骤的一个或多个电子设备或处理器的硬件来实现。根据本方法,在步骤210中,接收与当前图像相关的输入数据;其中,在编码器侧,输入数据对应于由前向变换处理进行处理的当前块,且在解码器侧,输入数据对应于由逆变换处理进行处理的当前系数块。例如,在编码器侧,输入数据可对应于由前向变换处理进行处理以获取变换块的预测残差块,或者,输入数据可对应于与预测残差相关的变换块以及逆变换以恢复预测残差块的变换块。在步骤220中,确定由指定为第一类型或第二类型的两种类型候选项组成的变换集,或由对应于第一类型、第二类型以及翻转第二类型的三种类型组成的变换集;其中,第一类型和第二类型不同。如前所述,仅限制为两种变换类型可以降低AMT处理的复杂度,并减少用于指示变换类型选择的开销信息。在步骤230中,如果当前块使用AMT,则从变换集中选择垂直变换和水平变换。如视频编解码领域所已知的,编码器可以根据性能标准做出选择,例如,率失真优化(Rate-Distortion Optimization,RDO)处理。在解码器侧,所选择的垂直变换和水平变换可自比特流中的已编解码数据确定,或者可以被隐性地确定。在步骤240中,在编码器侧,根据当前块、垂直变换以及水平变换生成当前系数块,或在解码器侧,根据当前系数块、垂直逆变换和水平逆变换恢复当前块。
图3示出了根据本发明方法的集成有AMT的编码系统的流程图的示例;其中,根据MVD分辨率自适应地AMT。根据本方法,在步骤310中,接收与当前图像相关的输入数据;其中,在编码器侧,输入数据对应于由前向变换处理进行处理的当前块,且在解码器侧,该输入数据对应于由逆变换处理进行处理的当前系数块。例如,在编码器侧,输入数据可对应于由前向变换处理进行处理以获取变换块的预测残差块,或者,输入数据可对应于与预测残差相关的变换块以及逆变换以恢复预测残差块的变换块。在步骤320中,确定与当前块相关的当前MVD的分辨率。如视频编解码领域所已知的,MVD分辨率的选择可在高层语法中表示。由于更精细的MVD分辨率将需要更多的计算(例如插值)以及更多的存储器访问,因此编码系统可根据系统资源或编解码性能选择MVD分辨率。随后,在步骤330中,根据当前MVD的分辨率确定变换集。本申请中已经示出根据MVD分辨率确定变换集的各种示例。在步骤340中,从变换集中选择垂直变换和水平变换。如视频编码领域所已知的,编码器可以根据性能标准做出选择,例如RDO处理。在解码器侧,所选择的垂直变换和水平变换可自比特流中的已编解码的数据确定,或者可以被隐性地确定。在步骤350中,在编码器侧,根据当前块、垂直变换以及水平变换生成当前系数块,或在解码器侧,根据当前系数块、垂直逆变换和水平逆变换恢复当前块。
本发明所示的流程图用于示出视频编码的示例。在不脱离本发明的精神的情况,本领域技术人员可以修改每个步骤、重组这些步骤、将一个步骤进行分离或者组合这些步骤而实施本发明。在本发明中,已经使用特定语法和语义来示出不同示例,以实施本发明的实施例。在不脱离本发明的精神的情况,本领域技术人员可以通过用等价的语法和语义来替换该语法和语义来实施本发明。
上述说明的出现使得本领域的普通技术人员能够在特定应用程序的内容及其需求中实施本发明。对本领域技术人员来说,所描述的实施例的各种变形将是显而易见的,并且本文定义的一般原则可以应用于其他实施例中。因此,本发明不限于所示和描述的特定实施例,而是将被赋予与本文所公开的原理和新颖特征相一致的最大范围。在上述详细说明中,说明了各种具体细节,以便透彻理解本发明。尽管如此,本领域的技术人员将理解的是,本发明能够被实践。
如上所述的本发明的实施例可以在各种硬件、软件代码或两者的结合中实现。例如,本发明的实施例可以是集成在视频压缩芯片内的一个或多个电路,或者是集成到视频压缩软件中的程序代码,以执行本文所述的处理。本发明的一个实施例也可以是在数字信号处理器(Digital Signal Processor,DSP)上执行的程序代码,以执行本文所描述的处理。本发明还可以包括由计算机处理器、数字信号处理器、微处理器或现场可编程门阵列(field programmable gate array,FPGA)所执行的多个函数。根据本发明,通过执行定义本发明所呈现的特定方法的机器可读软件代码或者固件代码,这些处理器可以被配置为执行特定任务。软件代码或固件代码可以由不同的编程语言和不同的格式或样式开发。软件代码也可以编译为不同的目标平台。然而,执行本发明的任务的不同的代码格式、软件代码的样式和语言以及其他形式的配置代码,不会背离本发明的精神和范围。
本发明以不脱离其精神或本质特征的其他具体形式来实施。所描述的例子在所有方面仅是说明性的,而非限制性的。因此,本发明的范围由附加的权利要求来表示,而不是由前述的描述来表示。权利要求的含义以及相同范围内的所有变化都应纳入其范围内。