技术领域
[0001]本发明涉及数据解码和编码方法,具体来说,是多层二至四划分指定分量转换模式的数据编码和解码方法。
背景技术
[0002]现有技术中,在压缩子集层次指定在当前压缩子集中允许使用预定的多种分量转换模式中的哪几种分量转换模式(如允许使用前述6种分量转换模式中的1种或2种或3种负号分量转换模式或者允许使用前述6种分量转换模式中的1种或2种或3种正号分量转换模式),在整压缩单元层次指定当前整压缩单元使用当前压缩子集所允许的各种分量转换模式中的哪一种分量转换模式。一个整压缩单元内的所有元素都使用同一种分量转换模式。使用非恒等转换模式的整压缩单元被称为非恒等转换整压缩单元。使用恒等转换模式的整压缩单元被称为恒等转换整压缩单元。
[0003]由于一个压缩子集(例如一帧图像或图像的一个条带)中一般有上万个整压缩单元,逐个整压缩单元指定使用哪一种分量转换模式需要消耗大量比特,严重影响了编码效率的提高。
发明内容
[0004]本发明的目的是提供多层二至四划分指定分量转换模式的数据编码和解码方法,以解决现有技术中存在的问题。
[0005]作为本发明的一方面,多层二至四划分指定分量转换模式的数据编码方法,至少包括如下步骤:
[0006]A1、在压缩子集层次指定当前压缩子集之中是否存在非恒等转换整压缩单元;
[0007]A2、如果当前压缩子集,称其为第0层次最大压缩单元组,之中存在非恒等转换整压缩单元,则按照预定规则将当前压缩子集即第0层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第1层次最大压缩单元组并分别指定每个第1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0008]A3、如果一个第1层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第1层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第2层次最大压缩单元组并分别指定每个第2层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0009]A4、递归地,如果一个第k(k≥0)层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第k层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第k+1层次最大压缩单元组并分别指定每个第k+1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0010]A5、持续递归地进行二划分或三划分或四划分,直到划分所产生的其中存在非恒等转换整压缩单元的最大压缩单元组仅含一个最大压缩单元为止;
[0011]A6、对其中存在非恒等转换整压缩单元的最大压缩单元中的每一个整压缩单元,指定该整压缩单元使用允许的多种分量转换模式中的哪一种分量转换模式;
[0012]A7、至少使用指定的那一种分量转换模式对整压缩单元进行分量转换的正转换;
[0013]A8、至少将下列信息写入压缩数据码流:
[0014]在压缩子集层次指定当前压缩子集之中是否存在非恒等转换整压缩单元所需要的信息
[0015]和/或
[0016]在各层次指定各最大压缩单元组中是否存在非恒等转换整压缩单元所需要的信息
[0017]和/或
[0018]指定在当前压缩子集或最大压缩单元组内允许使用的分量转换模式所需要的部分或全部信息
[0019]和/或
[0020]指定整压缩单元使用允许的多种分量转换模式中的哪一种分量转换模式所需要的部分或全部信息。
[0021]作为本发明的另一方面,多层二至四划分指定分量转换模式的数据解码方法,至少包括如下步骤:
[0022]B1、解析压缩数据码流,至少获取下列信息:
[0023]在压缩子集层次指定当前压缩子集之中是否存在非恒等转换整压缩单元所需要的信息
[0024]和/或
[0025]在各层次指定各最大压缩单元组中是否存在非恒等转换整压缩单元所需要的信息
[0026]和/或
[0027]指定在当前压缩子集或最大压缩单元组内允许使用的分量转换模式所需要的部分或全部信息
[0028]和/或
[0029]指定整压缩单元使用允许的多种分量转换模式中的哪一种分量转换模式所需要的部分或全部信息;
[0030]B2、至少根据所述信息,如果当前压缩子集,称其为第0层次最大压缩单元组,之中存在非恒等转换整压缩单元,则按照预定规则将当前压缩子集即第0层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第1层次最大压缩单元组并分别确定每个第1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0031]B3、至少根据所述信息,如果一个第1层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第1层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第2层次最大压缩单元组并分别确定每个第2层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0032]B4、递归地,至少根据所述信息,如果一个第k(k≥0)层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第k层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第k+1层次最大压缩单元组并分别确定每个第k+1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0033]B5、持续递归地进行二划分或三划分或四划分,直到划分所产生的其中存在非恒等转换整压缩单元的最大压缩单元组仅含一个最大压缩单元为止;
[0034]B6、至少根据所述信息,对其中存在非恒等转换整压缩单元的最大压缩单元中的每一个整压缩单元,确定该整压缩单元使用允许的多种分量转换模式中的其中一种分量转换模式;
[0035]B7、至少使用确定的那一种分量转换模式对整压缩单元进行分量转换的逆转换。
[0036]本发明的有益效果在于:在本方法中,对多分量数据,首先在压缩子集层次指定当前压缩子集之中是否存在非恒等转换整压缩单元;如果当前压缩子集之中存在非恒等转换整压缩单元,则按照预定规则将当前压缩子集内的最大压缩单元划分为两个或三个或四个第1层次最大压缩单元组,并分别指定每组中是否存在非恒等转换整压缩单元;如果一个第1层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第1层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第2层次最大压缩单元组,并分别指定每组中是否存在非恒等转换整压缩单元;如此递归地,如果一个第k层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第k层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第k+1层次最大压缩单元组,并分别指定每组中是否存在非恒等转换整压缩单元;这样不断递归地进行二划分或三划分或四划分,直到划分所产生的其中存在非恒等转换整压缩单元的最大压缩单元组仅含一个最大压缩单元为止;对其中存在非恒等转换整压缩单元的最大压缩单元中的每一个整压缩单元,都需要指定该整压缩单元使用哪一种分量转换模式;本发明适用于对数据进行有损压缩的编码和解码,本发明也同样适用于对数据进行无损压缩的编码和解码。本发明适用于一维数据如字符串数据或字节串数据或一维图形或分维图形的编码和解码,本发明也同样适用于二维或以上数据如图像或视频数据的编码和解码。
具体实施方式
[0037]下面结合具体实施例对本发明进一步说明。
[0038]多层二至四划分指定分量转换模式的数据编码方法,至少包括如下步骤:
[0039]A1、在压缩子集层次指定当前压缩子集之中是否存在非恒等转换整压缩单元;
[0040]A2、如果当前压缩子集,称其为第0层次最大压缩单元组,之中存在非恒等转换整压缩单元,则按照预定规则将当前压缩子集即第0层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第1层次最大压缩单元组并分别指定每个第1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0041]A3、如果一个第1层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第1层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第2层次最大压缩单元组并分别指定每个第2层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0042]A4、递归地,如果一个第k(k≥0)层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第k层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第k+1层次最大压缩单元组并分别指定每个第k+1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0043]A5、持续递归地进行二划分或三划分或四划分,直到划分所产生的其中存在非恒等转换整压缩单元的最大压缩单元组仅含一个最大压缩单元为止;
[0044]A6、对其中存在非恒等转换整压缩单元的最大压缩单元中的每一个整压缩单元,指定该整压缩单元使用允许的多种分量转换模式中的哪一种分量转换模式;
[0045]A7、至少使用指定的那一种分量转换模式对整压缩单元进行分量转换的正转换;
[0046]A8、至少将下列信息写入压缩数据码流:
[0047]在压缩子集层次指定当前压缩子集之中是否存在非恒等转换整压缩单元所需要的信息
[0048]和/或
[0049]在各层次指定各最大压缩单元组中是否存在非恒等转换整压缩单元所需要的信息
[0050]和/或
[0051]指定在当前压缩子集或最大压缩单元组内允许使用的分量转换模式所需要的部分或全部信息
[0052]和/或
[0053]指定整压缩单元使用允许的多种分量转换模式中的哪一种分量转换模式所需要的部分或全部信息。
[0054]多层二至四划分指定分量转换模式的数据解码方法,至少包括如下步骤:
[0055]B1、解析压缩数据码流,至少获取下列信息:
[0056]在压缩子集层次指定当前压缩子集之中是否存在非恒等转换整压缩单元所需要的信息
[0057]和/或
[0058]在各层次指定各最大压缩单元组中是否存在非恒等转换整压缩单元所需要的信息
[0059]和/或
[0060]指定在当前压缩子集或最大压缩单元组内允许使用的分量转换模式所需要的部分或全部信息
[0061]和/或
[0062]指定整压缩单元使用允许的多种分量转换模式中的哪一种分量转换模式所需要的部分或全部信息;
[0063]B2、至少根据所述信息,如果当前压缩子集,称其为第0层次最大压缩单元组,之中存在非恒等转换整压缩单元,则按照预定规则将当前压缩子集即第0层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第1层次最大压缩单元组并分别确定每个第1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0064]B3、至少根据所述信息,如果一个第1层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第1层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第2层次最大压缩单元组并分别确定每个第2层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0065]B4、递归地,至少根据所述信息,如果一个第k(k≥0)层次最大压缩单元组中存在非恒等转换整压缩单元,则按照预定规则将该第k层次最大压缩单元组内的最大压缩单元划分为两个或三个或四个第k+1层次最大压缩单元组并分别确定每个第k+1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0066]B5、持续递归地进行二划分或三划分或四划分,直到划分所产生的其中存在非恒等转换整压缩单元的最大压缩单元组仅含一个最大压缩单元为止;
[0067]B6、至少根据所述信息,对其中存在非恒等转换整压缩单元的最大压缩单元中的每一个整压缩单元,确定该整压缩单元使用允许的多种分量转换模式中的其中一种分量转换模式;
[0068]B7、至少使用确定的那一种分量转换模式对整压缩单元进行分量转换的逆转换。
[0069]上述编码方法或者解码方法中,数据压缩所涉及的原始数据包括下列类型的数据之一或其组合:一维数据;二维数据;多维数据;图形;分维图形;图像;图像的序列;视频;音频;文件;字节;比特;像素;三维场景;持续变化的三维场景的序列;虚拟现实的场景;持续变化的虚拟现实的场景的序列;像素形式的图像;图像的变换域数据;二维或二维以上字节的集合;二维或二维以上比特的集合;像素的集合;单分量像素的集合;三分量像素(R,G,B,A)的集合;三分量像素(Y,U,V)的集合;三分量像素(Y,Cb,Cr)的集合;三分量像素(Y,Cg,Co)的集合;四分量像素(C,M,Y,K)的集合;四分量像素(R,G,B,A)的集合;四分量像素(Y,U,V,A)的集合;四分量像素(Y,Cb,Cr,A)的集合;四分量像素(Y,Cg,Co,A)的集合;压缩子集包括图像、图像的子图像、片块tile、条带slice;最大压缩单元包括片块tile、最大编码单元LCU、编码树单元CTU;整压缩单元包括宏块、编码单元CU、CU的子区域、子编码单元SubCU、预测块、预测单元PU、PU的子区域、子预测单元SubPU、变换块、变换单元TU、TU的子区域、子变换单元SubTU。
[0070]上述编码方法或者解码方法中,数据有三个分量:第一分量Y,第二分量U,第三分量V,所述允许的多种分量转换模式至少包括恒等转换模式即不进行分量转换和下列对分量U和分量V的6种转换模式中的部分或全部模式:
[0071]正转换:
[0072]转换模式1–:w0=U/2+V,w1=U/2–V,
[0073]转换模式1+:w0=U/2–V,w1=U/2+V,
[0074]转换模式2–:w0=(U+V)/2,w1=(U–V)/2,
[0075]转换模式2+:w0=(U–V)/2,w1=(U+V)/2,
[0076]转换模式3–:w0=U+V/2,w1=U–V/2;
[0077]转换模式3+:w0=U–V/2,w1=U+V/2;
[0078]逆转换:
[0079]转换模式1–:U=w0+w1,V=(w0–w1)/2,
[0080]转换模式1+:U=w1+w0,V=(w1–w0)/2,
[0081]转换模式2–:U=w0+w1,V=w0–w1,
[0082]转换模式2+:U=w1+w0,V=w1–w0,
[0083]转换模式3–:U=(w0+w1)/2,V=w0–w1,
[0084]转换模式3+:U=(w1+w0)/2,V=w1–w0。
[0085]上述编码方法或者解码方法中,通过调整对w0的量化程度使量化后的w0为零,所述6种转换模式的逆转换变为:
[0086]转换模式1–:U=w1,V=(–w1)/2,
[0087]转换模式1+:U=w1,V=w1/2,
[0088]转换模式2–:U=w1,V=–w1,
[0089]转换模式2+:U=w1,V=w1,
[0090]转换模式3–:U=w1/2,V=–w1,
[0091]转换模式3+:U=w1/2,V=w1;
[0092]以上转换模式1–、2–、3–统称为负号分量转换模式,而转换模式1+、2+、3+统称为正号分量转换模式。
[0093]所述编码方法或者解码方法中,所述允许的多种分量转换模式是恒等转换模式和下列转换模式:
[0094]所述6种转换模式中的部分转换模式;
[0095]或者
[0096]转换模式1–、2–、3–;
[0097]或者
[0098]转换模式1+、2+、3+;
[0099]或者
[0100]转换模式2–;
[0101]或者
[0102]转换模式2+。
[0103]上述编码方法或者解码方法中,压缩子集中有N个最大压缩单元,每个最大压缩单元都有一个编号n,其中1≤n≤N;根据编号n,按照下列规则将一个第k层次最大压缩单元组划分为两个或三个或四个第k+1层次最大压缩单元组。
[0104]在将一个第k层次最大压缩单元组划分为两个第k+1层次最大压缩单元组的情形,划分产生的第一个最大压缩单元组中的最大压缩单元的编号都小于划分产生的第二个最大压缩单元组中的最大压缩单元的编号,并且所述两个第k+1层次最大压缩单元组中最大压缩单元的数目不能相差大于1。
[0105]在将一个第k层次最大压缩单元组划分为三个第k+1层次最大压缩单元组的情形,划分产生的第一个最大压缩单元组中的最大压缩单元的编号都小于划分产生的第二个最大压缩单元组中的最大压缩单元的编号,划分产生的第二个最大压缩单元组中的最大压缩单元的编号都小于划分产生的第三个最大压缩单元组中的最大压缩单元的编号,并且所述三个第k+1层次最大压缩单元组中最大压缩单元的数目不能相差大于1。
[0106]在将一个第k层次最大压缩单元组划分为四个第k+1层次最大压缩单元组的情形,划分产生的第一个最大压缩单元组中的最大压缩单元的编号都小于划分产生的第二个最大压缩单元组中的最大压缩单元的编号,划分产生的第二个最大压缩单元组中的最大压缩单元的编号都小于划分产生的第三个最大压缩单元组中的最大压缩单元的编号,划分产生的第三个最大压缩单元组中的最大压缩单元的编号都小于划分产生的第四个最大压缩单元组中的最大压缩单元的编号,并且所述四个第k+1层次最大压缩单元组中最大压缩单元的数目不能相差大于1。
[0107]上述编码方法或者解码方法中,压缩子集是包括图像或图像的子图像或片块tile或条带slice的二维数据元素的阵列。
[0108]上述压缩子集被分割成以水平方向从左向右排列的I个最大压缩单元和以垂直方向从上向下排列的J个最大压缩单元,总共有I列最大压缩单元和J行最大压缩单元。
[0109]左边第1列中的最大压缩单元的列号i为1,列号i从左向右递增;上边第1行中的最大压缩单元的行号j为1,行号j从上向下递增;
[0110]列号为i而行号为j的最大压缩单元的编码n使用下列方式计算:
[0111]n=i+(j–1)*I;
[0112]或者
[0113]n=j+(i–1)*J。
[0114]上述编码方法或者解码方法中,所述压缩子集是包括图像或图像的子图像或片块tile或条带slice的二维数据元素的阵列;按照下列规则之一将一个第k层次最大压缩单元组划分为两个或三个或四个第k+1层次最大压缩单元组:
[0115]规则1:
[0116]当k是偶数时,将一个第k层次最大压缩单元组划分为以垂直方向从上向下排列的两个或三个或四个第k+1层次最大压缩单元组,
[0117]当k是奇数时,将一个第k层次最大压缩单元组划分为以水平方向从左向右排列的两个或三个或四个第k+1层次最大压缩单元组;
[0118]规则2:
[0119]当k是偶数时,将一个第k层次最大压缩单元组划分为以水平方向从左向右排列的两个或三个或四个第k+1层次最大压缩单元组,
[0120]当k是奇数时,将一个第k层次最大压缩单元组划分为以垂直方向从上向下排列的两个或三个或四个第k+1层次最大压缩单元组。
[0121]上述编码方法或者解码方法中,所述信息是直接或间接或直接间接混合的标识码;所述直接的标识码由压缩数据码流中的一个或多个位串(比特串)所组成。所述间接的标识码是从其他编码参数和/或编解码变量和/或压缩数据码流的其他语法元素导出的标识码。所述直接间接混合的编码模式标识码是部分直接(即由压缩数据码流中的一个或多个位串所组成)部分间接(即从其他编码参数和/或编解码变量和/或压缩数据码流的其他语法元素导出)混合的标识码。
[0122]所述编码方法或者解码方法中,所述在各层次指定各最大压缩单元组中是否存在非恒等转换整压缩单元所需要的信息是一个存在于一个第k层次最大压缩单元组的一个预定最大压缩单元的头中的二值标志,记为“存在经过分量转换的整压缩单元的标志having_component_transformed_cu_flag”:
[0123]存在经过分量转换的整压缩单元的标志having_component_transformed_cu_flag
[0124]如果having_component_transformed_cu_flag取一个值(通常为0),则
[0125]{
[0126]当前最大压缩单元组中不存在非恒等转换整压缩单元,即对当前最大压缩单元组中的所有整压缩单元都不进行分量转换,也不需要将当前最大压缩单元组内的最大压缩单元划分为两个或三个或四个第k+1层次最大压缩单元组;
[0127]}
[0128]否则,having_component_transformed_cu_flag取另一个值,通常为1
[0129]{
[0130]当前最大压缩单元组中存在非恒等转换整压缩单元,需要将当前最大压缩单元组内的最大压缩单元划分为两个或三个或四个第k+1层次最大压缩单元组并分别指定每个第k+1层次最大压缩单元组中是否存在非恒等转换整压缩单元;
[0131]}
[0132]上述编码方法或者解码方法中,压缩子集有N个最大压缩单元,每个最大压缩单元都有一个编号n,其中1≤n≤N;所述预定最大压缩单元是所述第k层次最大压缩单元组中编码n最小的最大压缩单元。
[0133]上述编码方法或者解码方法中,压缩子集是包括图像或图像的子图像或片块tile或条带slice的二维数据元素的阵列;所述压缩子集被分割成以水平方向从左向右排列的I个最大压缩单元和以垂直方向从上向下排列的J个最大压缩单元,总共有I列最大压缩单元和J行最大压缩单元;所述预定最大压缩单元是所述第k层次最大压缩单元组中最左上角的最大压缩单元。
[0134]上述编码方法或者解码方法中,压缩子集是包括图像或图像的子图像或片块tile或条带slice的二维数据元素的阵列;压缩子集被分割成以水平方向从左向右排列的I个最大压缩单元和以垂直方向从上向下排列的J个最大压缩单元,总共有I列最大压缩单元和J行最大压缩单元;左边第1列中的最大压缩单元的列号i为1,列号i从左向右递增;上边第1行中的最大压缩单元的行号j为1,行号j从上向下递增;所述预定最大压缩单元是所述第k层次最大压缩单元组中列号i和行号j都最小的最大压缩单元。
[0135]以上是本发明的优选实施例,本领域普通技术人员还可以在此基础上进行各种变换或改进,在不脱离本发明总的构思的前提下,这些变换或改进都应当属于本发明要求保护范围之内。