CN100530977C - 对数据进行编码和译码的方法和装置 - Google Patents
对数据进行编码和译码的方法和装置 Download PDFInfo
- Publication number
- CN100530977C CN100530977C CN 200510092099 CN200510092099A CN100530977C CN 100530977 C CN100530977 C CN 100530977C CN 200510092099 CN200510092099 CN 200510092099 CN 200510092099 A CN200510092099 A CN 200510092099A CN 100530977 C CN100530977 C CN 100530977C
- Authority
- CN
- China
- Prior art keywords
- data
- carried out
- minimum value
- value
- component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Processing Or Creating Images (AREA)
Abstract
提供了对数据进行编码和译码的方法和装置。用于对数据进行编码的装置包括:一个量化器,用于将输入给它的数据量化为预定的比特量化;一个DPCM操作器,用于通过对量化数据执行DPCM操作生成差分数据;一个熵编码器,用于对从DPCM操作器输入的差分数据进行熵编码,并将经过熵编码的差分数据输出到比特流中;一个量化误差最小化器,用于接收输入数据和量化数据,调节输入数据中的最大和最小值,从而使量化误差最小,并且输出最大和最小值;以及一个标题编码器,用于对将被包括在比特流中的最大和最小值进行编码。
Description
本申请是申请日为2002年11月27日、申请号为02154294.5、发明名称为“对数据进行编码和译码的方法和装置”的发明专利申请的分案申请。
技术领域
本发明涉及一种用于对数据进行编码和译码的装置和方法,更具体讲,涉及一种差分脉冲码调制(DPCM)操作、一种规范数据的方法以及一种使用所述DPCM操作和所述规范数据的方法对数据进行编码和译码的方法和装置。
背景技术
图1的框图示出了常规的用于对数据进行编码的装置以及常规的用于对数据进行译码的装置的结构。参照图1,常规的用于对数据进行编码的装置包括量化器100、DPCM操作器110和熵编码器120。按照常规的用于对数据进行编码的方法,在量化器100中,利用预定数量的比特量化输入数据并将其输入给DPCM操作器110。DPCM操作器110通过从在先量化的数据中减掉从量化器100输入的当前量化数据,生成差分数据并将该差分数据输出给熵编码器120。熵编码器120使用预定的熵编码方法,将该差分数据编码成比特流。
参照图1,传统的用于对数据进行译码的装置包括熵译码器130、逆DPCM操作器140和逆量化器150。将数据编码在其中的比特流被输入给熵译码器130。熵译码器130逆向执行由熵编码器执行的处理,输出差分数据,然后,逆DPCM操作器140将从熵译码器130输入的差分数据转换为量化数据并将该量化数据输出给逆量化器150。逆量化器150对从逆DPCM操作器140输入的量化数据进行逆量化,然后输出译码的数据。
但是,由于前述常规的用于对数据进行编码的方法仅仅执行简单的DPCM操作,以至于减少了将被编码的数据量,并且这种方法对具有多个分量的数据进行编码而没有考虑数据的x、y和z分量中每个分量的特性,特别是当数据被连续输入时,它的编码效率不够高。
发明内容
为了解决上述和其他问题,本发明的一个目的就是要提供一种能够显著地减少将被编码的数据的尺寸的DPCM操作和DPCM操作器。
本发明的另一个方面是提供一种用于编码和对数据进行译码的方法和装置,它们能够使得在量化处理期间生成的量化误差最小并能够对数据的正负号进行编码。
本发明的另一个方面是提供一种利用对数据进行规范的方法,对数据进行编码和译码的方法和装置,所述规范数据的方法通过根据一个分量来对x、y和z分量中的每一个分量的数据进行规范,可以减少具有多个分量的数据的尺寸。
本发明的另一个方面是提供一种用于对数据进行编码的方法和装置,其中,按照本发明的DPCM操作、误差最小化方法和数据规范方法被应用于用于编码和译码位置内插器的密钥值数据的方法,所述密钥值数据用于表示出现在三维动画中的目标的位置,还提供一种用于对比特流进行译码的方法和装置,该比特流已经被按照用于对数据进行编码的方法和装置进行了编码。
因此,为了实现本发明的上述和其他方面,提供了一种用于生成差分数据的装置,该装置包括:一个循环DPCM操作器,用于对量化数据执行DPCM操作,以便生成差分数据,对差分数据执行循环量化操作以便减少它们的范围,然后,输出循环量化的差分数据;一个预测循环DPCM操作器,用于对量化数据执行预测DPCM操作,以便生成预测的差分数据,对所述预测的差分数据执行循环量化操作,以便减少它们的范围,然后输出循环量化预测的差分数据;以及一个选择器,用于根据输入给它的差分数据的值,选择循环量化的差分数据和预测差分数据中的一个。
为了实现本发明的上述和其他方面,提供了一种用于生成差分数据的方法。该方法包括:(a)通过对量化数据执行DPCM操作,生成差分数据,通过对量化数据执行预测DPCM操作,生成预测差分数据,(b)通过对差分数据和预测的差分数据执行循环量化操作,生成循环量化差分数据和循环量化预测差分数据,以便减少它们的范围,以及(c)根据它们的幅值选择循环量化差分数据和循环量化预测差分数据中的一个。
为了实现本发明的上述和其他方面,提供了一种使用差分数据生成量化数据的装置。该装置包括:一个逆循环DPCM操作器,用于对输入给它的差分数据执行逆循环量化操作,以便扩展它们的范围,对逆循环量化操作的结果执行逆DPCM操作,然后输出量化数据;一个逆预测循环DPCM操作器,用于对输入给它的差分数据执行逆循环量化操作便扩展它们的范围,对逆循环量化操作的结果执行逆预测DPCM操作,然后输出量化数据;以及一个确定单元,用于根据对差分数据已经执行的DPCM的种类,将差分数据输出给逆循环DPCM操作器或逆预测循环DPCM操作器。
为了实现本发明的上述和其他方面,提供了一种利用差分数据生成量化数据的方法。该方法包括:(a)识别已经对输入的差分数据执行的DPCM的种类,(b)对输入差分数据执行逆循环量化操作,以便扩展它们的范围,以及(c)如果输入差分数据已经被执行了DPCM操作,则通过对逆循环量化的差分数据执行逆循环DPCM操作来生成量化数据,而如果输入差分数据已经被执行了预测DPCM操作,则通过对逆循环量化的差分数据执行逆预测循环DPCM操作来生成量化数据。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行编码的装置。所述装置包括:一个量化器,用于将输入给它的数据量化为预定的量化比特;一个DPCM操作器,用于通过对量化数据执行DPCM操作生成差分数据;一个熵编码器,用于对从DPCM操作器输入给它的差分数据执行熵编码,并将经过熵编码的差分数据输出为比特流;一个量化误差极小化器,用于接收输入数据和量化数据,调节输入数据中的最大和最小值,从而使量化误差最小并且输出最大和最小值;以及一个标题编码器,用于对将被包括在比特流中的最大和最小值进行编码。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行编码的方法。该方法包括:(a)利用预定的量化比特,量化输入数据;(b)通过对量化数据执行DPCM操作,生成差分数据;(c)通过对在步骤(b)中生成的差分数据进行熵编码,生成比特流;(d)利用输入数据和量化数据调节在输入数据中的最大和最小值,从而使量化误差最小;以及(e)对将被包括在比特流中的最大和最小值进行编码。
为了实现本发明的上述和其他方面,提供了一种用于对具有多个分量的数据进行编码的装置。该装置包括:一个规范器,用于计算分量的数据范围中的最大范围,并根据该最大范围,规范每个分量的数据;一个量化器,用于用预定的量化比特,对经过规范的数据进行量化;一个DPCM操作器,用于对量化数据执行DPCM操作,然后输出差分数据;和一个熵编码器,用于对差分数据执行熵编码,并输出差分数据已经被编码进其中的比特流。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行编码的方法,该方法用于对具有多个分量的数据进行编码。该方法包括:(a)计算分量的数据范围当中的最大范围,并根据该最大范围规范每个分量的数据;(b)利用预定的量化比特,量化经过规范的数据;(c)通过对量化数据执行DPCM操作生成差分数据;以及(d)通过对差分数据执行熵编码,生成数据已经被编码进其中的比特流。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行译码的装置,该装置对将具有多个分量的数据编码进其中的比特流进行译码。该装置包括:一个熵译码器,用于对输入给它的比特流进行熵译码并输出差分数据;一个逆DPCM操作器,用于对差分数据执行逆DPCM操作并输出量化数据;一个逆量化器,用于对量化数据执行逆量化并输出规范数据;以及一个逆规范器,用于从比特流中接收每个分量数据当中的最小值以及每个分量数据当中的最大值,得到规范数据的最大范围,并根据该最大范围和最小值,对规范数据进行逆规范。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行译码的方法,该方法对将具有多个分量的数据编码进其中的比特流进行译码。该方法包括:(a)通过对输入比特流执行熵译码,生成差分数据;(b)通过对差分数据执行逆DPCM操作,生成量化数据;(c)通过对量化数据执行逆量化,生成规范数据;以及(d)利用从比特流中译码的每个分量数据当中的最小值和每个分量数据当中的最大值,得到规范数据的最大范围,并根据最大范围和最小值,对规范数据执行逆规范。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行编码的装置,该装置用于对表示具有x、y和z分量的目标的位置的位置内插器的密钥值数据进行编码。所述装置包括:一个规范器,用于计算分量的数据范围当中的最大范围,根据该最大范围,规范x、y和z分量中的每个分量的密钥值数据并输出规范的密钥值数据;一个量化器,用于利用预定的量化比特,量化规范的密钥值数据;一个浮点数编码器,用于接收在规范操作中使用的最小值和最大范围并将输入值转换成十进制数;一个DPCM处理器,用于获得量化密钥值数据的差分数据和预测差分数据,并对差分数据和预测差分数据执行循环量化操作,从而减少它们的范围;一个熵编码器,用于对差分数据执行熵编码,并输出将密钥值数据编码进其中的比特流;以及一个密钥值标题编码器,用于对对比特流进行译码所需的、将被包括在比特流中的信息进行编码。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行编码的方法,该方法用于对表示具有x、y和z分量的目标的位置的位置内插器的密钥值数据进行编码。。所述方法包括:(a)计算分量的数据范围当中的一个最大范围,根据该最大范围,规范x、y和z分量中的每个分量的密钥值数据,然后生成规范的密钥值数据;(b)利用预定的量化比特,量化规范的密钥值数据;(c)将在规范操作中使用的最小值和最大范围转换成十进制数;(d)获得量化密钥值数据的差分数据和预测差分数据,并对差分数据和预测差分数据执行循环量化操作,从而减少它们的范围;(e)通过对差分数据执行熵编码,生成将密钥值数据编码进其中的比特流;以及(f)对对比特流进行译码所需的、将被包括在比特流中的信息进行编码。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行译码的装置,该装置用于对将用x、y和z分量表示目标的位置的位置内插器的密钥值数据编码进其中的比特流进行译码。该装置包括:一个密钥值标题译码器,用于对来自比特流的、译码所需的信息进行译码;一个熵译码器,用于对比特流进行熵译码并输出差分数据;一个逆DPCM处理器,用于根据对差分数据执行的DPCM的类型,对差分数据执行逆循环DPCM操作或逆预测循环DPCM操作,并由此输出量化的密钥值数据;一个逆量化器,用于对量化的密钥值数据进行逆量化并输出规范的密钥值数据;一个浮点数译码器,用于从密钥值标题译码器中接收x、y和z分量中的每个分量的密钥值数据当中的最小值和x、y和z分量的数据范围当中的最大范围,将最小值和最大范围转换成二进制数,并将该二进制数输出给逆规范器;以及一个逆规范器,用于从浮点数译码器中接收x、y和z分量中的每个分量的密钥值数据当中的最小值和x、y和z分量的数据范围当中的最大范围,并对x、y和z分量的密钥值数据进行逆规范。
为了实现本发明的上述和其他方面,提供了一种用于对数据进行译码的方法,该方法用于对将用x、y和z分量表示目标的位置的位置内插器的密钥值数据编码进其中的比特流进行译码。所述方法包括:(a)对来自比特流的、进行译码所需的标题信息进行译码;(b)通过对比特流进行熵译码生成差分数据;(c)通过根据对差分数据执行的DPCM的类型,对差分数据执行逆循环DPCM操作或逆预测循环DPCM操作,生成量化的密钥值数据;(d)将已经在步骤(a)中译码的、x、y和z分量中的每个分量的密钥值数据当中的最小值和x、y和z分量的数据范围当中的最大范围转换成二进制数,并将x、y和z分量中的每个分量的密钥值数据当中的最小值和x、y和z分量的所有密钥值数据当中的最大值转换成二进制数;(e)通过根据预定的量化比特,对量化的密钥值数据执行逆量化,生成规范的密钥值数据;以及(f)根据已经在步骤(d)中被转换的、x、y和z分量中的每个分量的密钥值数据当中的最小值和x、y和z分量的数据范围当中的最大范围,对密钥值数据进行逆规范。
附图说明
通过结合附图对本发明的优选实施例进行详细描述,本发明的上述目的和优点将变得更加清楚,其中:
图1的框图示出了用于对数据进行编码的常规装置和用于对数据进行译码的常规装置的结构;
图2A的框图示出了按照本发明的优选实施例的、用于执行DPCM操作的装置,并且图2B示出了按照本发明的优选实施例的DPCM操作的流程图;
图3A的框图示出了按照本发明的优选实施例的、用于利用DPCM操作器对数据进行编码的装置,并且图3B示出了图3A所示的、用于对数据进行编码装置的操作流程图;
图4A的框图示出了按照本发明的优选实施例的、用于对数据进行编码的装置,该装置能够使量化误差最小。图4B示出了使量化误差最小的方法的流程图;
图5A的框图示出了按照本发明的优选实施例的、用于对数据进行编码的装置,该装置对具有多个分量的输入数据进行规范,然后对规范的数据进行编码,并且图5B示出了对数据进行规范的方法的流程图;
图6A的框图示出了按照本发明的优选实施例的、用于对数据进行编码的装置,该装置用于对位置内插器的密钥值数据进行编码,并且图6B示出了用于对密钥值数据进行编码的方法的流程图;
图7A和7B示出了图6A所示的浮点数编码器的操作流程图;
图7C和7D示出了按照本发明的优选实施例的熵译码器的操作流程图;
图8示出了图7C中所示的步骤S683;
图9A和9B示出了图7D中所示的步骤;
图10A的框图示出了按照本发明的优选实施例的逆DPCM操作器;并且图10B示出了逆DPCM操作的流程图;
图11的框图示出了按照本发明的优选实施例的、用于利用逆DPCM操作器对数据进行译码的装置;
图12A的框图示出了按照本发明的优选实施例的、用于利用逆规范器对数据进行译码的装置,并且图12B示出了逆规范器的操作流程图;
图13A的框图示出了按照本发明的优选实施例的、用于对密钥值数据进行译码的装置,和图13B示出了用于对密钥值数据进行译码的方法的流程图;
图14A示出了图13B中所示的步骤S1320的详细流程图;
图14B示出了图14A中所示的步骤S1330的详细流程图;
图14C示出了图13B中所示的步骤S1380的详细流程图;
图15示出了按照本发明的优选实施例的、被输入给熵译码器的比特流的分量顺序;
图16A和16B示出了按照本发明的优选实施例的预测DPCM操作的结果;
图17A到17C示出了按照本发明的优选实施例的循环DPCM操作的结果;
图18A和18B示出了位置内插器的密钥和密钥值数据;以及
图19到27示出了程序代码的例子,通过这些程序代码,可以实现在按照本发明的优选实施例的、用于对数据进行译码的方法中的读取比特流的过程。
具体实施方式
下面将结合附图更充分地描述本发明。
图2A的框图示出了按照本发明的优选实施例的、用于执行DPCM操作的装置,并且图2B示出了按照本发明的优选实施例的DPCM操作的流程图。
参照图2A,按照本发明的优选实施例的、用于执行DPCM操作的装置包括:一个循环DPCM操作器200,它包括用于执行一般DPCM操作、然后输出差分数据的DPCM操作器210和对输入给它的差分数据执行循环量化操作以便减少它们的范围的循环量化操作器220;一个预测循环DPCM操作器230,它包括用于对输入给它的量化数据执行预测DPCM操作、然后输出预测差分数据的预测DPCM操作器和用于对输入给它的差分数据执行循环量化操作以便减少它们的范围的循环量化器250;以及一个选择器260,用于根据输入给它差分数据的值,在从循环DPCM操作器200输入的差分数据和从预测循环DPCM操作器230输入的差分数据之间选择一个差分数据。
下面将参照图2B,描述按照本发明的优选实施例的DPCM操作。
在步骤S210中,被按照任何一种量化方法进行量化的数据被输入给循环DPCM操作器200和预测循环DPCM操作器230。
在循环DPCM操作器200中,DPCM操作器210通过对输入给它的量化数据执行一般的DPCM操作,生成差分数据,并将所生成的差分数据输出给循环量化器220。然后,循环量化器220在步骤S220a中对从DPCM操作器210输入的差分数据执行循环量化。
具体来说,DPCM操作器210通过从在步骤S210中输入的当前量化数据中减去在前量化数据,计算的差分数据。此后,循环量化器220对所计算的差分数据执行循环量化。循环DPCM操作器200的操作由下述等式表示。
在等式(1)中,n表示数据的数量。随后将描述循环量化。
在预测循环DPCM操作器230中的预测DPCM操作器240通过对输入给它的差分数据执行预测DPCM操作计算预测差分数据,然后,循环量化器250在步骤S220b中对预测差分数据执行循环量化。
具体来说,预测DPCM操作器240通过从当前的量化数据中减去预测数据,生成预测的差分数据并将其输出。为了获得用于当前量化数据的预测数据,通过从在前的量化数据中减去在在前的量化数据之前的量化数据获得差分值,然后将该差分值加到在前的差分数据上,从而计算用于当前数据的预测数据。
由预测DPCM操作器240计算的预测数据不可以超过输入给它的量化数据的最大范围。换言之,如果预测数据超过输入量化数据的量化范围中的最大值,那么,预测DPCM操作器240将把该预测数据设置成输入量化数据的量化范围中的最大值并通过从该预测数据中减去当前数据,生成用于当前数据的差分数据。如果预测数据小于在输入数据的量化范围中的最小值,那么,预测DPCM操作器240将当前数据确定为预测差分数据。此后,预测DPCM操作器240的操作将被称为“经过修改的预测DPCM操作”。
由预测DPCM操作器230计算的预测差分数据被输入给循环量化器250,并被执行循环量化操作。
预测循环DPCM操作器230的操作可以由下述等式表示。
在等式(2)中,i是一个位于2和n-1之间的整数,n表示数据的数量。
图16A示出了对50个具有最大值为1024和最小值为0的量化数据执行简单预测DPCM操作的结果,并且图16B示出了对与图16A的情况的数据相同的数据执行经过修改的预测DPCM操作的结果,从而,在用于数据的预测数据超过数据当中的最大值或低于数据当中的最小值的情况下,将用于数据的差分数据按照等式(2)进行调节。
作为简单预测DPCM操作的结果,预测差分数据具有大约3,000宽的范围,如图16A所示。作为经过修改的预测DPCM操作的结果,预测差分数据具有不大于2,000的窄范围,如图16B所示。这意味着在经过修改的预测DPCM操作中比在简单预测DPCM操作中更容易获得具有较窄范围的预测差分数据。
下面将描述循环量化。
图17A示出了量化数据,并且图17B示出了对图17A中所示的量化数据执行DPCM操作的结果。如图17B所示,在DPCM操作之后的差分数据的范围可以增加到执行DPCM操作之前的两倍宽。因此,可以说,使用循环量化操作可以使得在将被执行DPCM操作的差分数据的范围保持在输入数据的范围以内的同时,执行DPCM操作。
在假设量化范围内的最大值和最小值彼此循环连接的基础上,执行循环量化操作。因此,如果作为对两个连续的量化数据执行线性DPCM的结果的差分数据大于量化范围中的最大值的一半,则可以通过从差分数据的每一个当中减去最大值来减小它们的值。
如果差分数据小于量化范围中的最小值的一半,则通过将量化范围中的最大值加到差分数据的每一个上,可以进一步减小它们的值。
假定X和分别表示输入差分数据和循环量化的差分数据,则循环量化可以由下列等式表示。
X′i=Xi-(2nQBits-1) (如果X≥0)
X′i=Xi+(2nQBits-1) (否则)
在等式(3)中,nQBits表示用于量化的比特尺寸。图17C示出了对图17B所示的差分数据执行循环量化的结果。
再次参照图2B,循环量化的差分数据和循环量化的预测差分数据被输出给选择器260,然后,选择器260在步骤S230中对输入的差分数据执行差分绝对值求和(SAD)操作。这里,执行SAD操作从而使输入数据的绝对值都被相加。在步骤S230中,选择器将所有循环量化的差分数据的绝对值相加并将所有循环量化的预测差分数据的绝对值相加。
此后,选择器260将量化的差分数据的绝对值之和与预测的差分数据的绝对值之和进行比较,从量化的差分数据和预测的差分数据之间选择具有较小绝对值和的差分数据并在步骤S240中输出所选择的差分数据。选择器260选择具有较小绝对值和的差分数据的原因在于按照推测它们具有较窄范围的值。例如,在对预测差分数据进行熵编码的过程中,可以期望对具有较小绝对值和的差分数据进行编码所需的比特数少于对具有较大绝对值和的差分数据进行编码所需的比特数。
对于本领域内普通技术人员来讲很明显,SAD操作只不过是多种用于选择某组差分数据的方法中的一种,由此,选择器260可以采用不同的方法选择差分数据。
图3A的框图示出了按照本发明的第一实施例的、用于对数据进行编码的装置,和图3B示出了按照本发明的第一实施例的、用于对数据进行编码的装置的操作的流程图。按照本发明的第一实施例的、用于对数据进行编码的装置包括前述的本发明的DPCM操作器。
图3A所示的用于对数据进行编码的装置包括:一个量化器310,用于利用预定的量化比特对输入数据进行量化;一个DPCM处理器340,用于对量化数据执行循环DPCM操作和预测DPCM操作、然后输出差分数据;以及一个熵编码器350,用于对从DPCM处理器340输入的差分数据执行预定的熵编码操作,然后输出比特流。DPCM处理器340包括前述的本发明的DPCM操作器。
参照图3A和3B,在步骤S310中,要被编码的数据被输入给用于对数据进行编码的装置,并在步骤S320中,被在量化器310中利用预定数量的量化比特进行量化并且被输出给DPCM处理器340。
在DPCM处理器340中的循环DPCM操作器200对从量化器310输入的量化数据执行DPCM操作和循环量化操作,然后将结果输出到选择器260。另外,所述预测循环DPCM操作器在步骤S330中对从量化器310输入的量化数据执行预测DPCM操作和循环量化。
选择器260对从循环DPCM操作器200输入的差分数据和从预测循环DPCM操作器230输入的差分数据执行SAD操作,选择将被输出给熵译码器350的差分数据,并在步骤S340中将所选择的差分数据输出。
熵编码器350对从选择器260输入的差分数据执行预定的熵编码操作,从而对它们进行熵编码并在步骤S350中生成比特流。
图4A的框图示出了按照本发明第二实施例用于对数据进行编码的装置,和图4B的流程图示出了图4A所示量化误差最小化器的操作。
按照本发明第二实施例用于对数据进行编码的装置包括用于使一个比特流中的量化误差最小化的最大值和最小值,并对该比特流进行编码从而当对对数据进行编码进行译码时使所述量化误差可以被最小化。
参照图4A,按照本发明优选实施例的、用于对数据进行编码的装置包括量化器310、DPCM操作器110/340、熵编码器350、量化误差最小化器320以及标题编码器370,其中,量化误差最小化器320用于接收数据和量化数据,调节数据中的最大值和最小值以便能够使量化误差最小,并且输出经过调节的最大和最小值,标题编码器370用于将从量化误差最小化器320输入的最大值和最小值编码成标题信息,并且使该信息包括在比特流中。
量化误差最小化器320包括:一个初始值设置单元321,用于设置最小误差值emin、经过调节的最小值min’以及量化误差最小值minmin;一个经过调节的最小值更新单元323,用于通过执行一个预定的操作更新经过调节的最小值min’;一个确定单元325,用于根据经过更新和调节的最小值的数字数和值,将量化误差最小值minmin确定为将被用于逆量化的最小值;一个误差值更新单元327,用于利用经过更新和调节的最小值,计算量化误差值,如果所计算的误差值小于最小误差值emin,将经过调节的最小值min’和所计算的误差值分别更新成量化误差最小值minmin和最小误差值emin,并将更新的结果输出给经过调节的最小值更新单元323。
量化误差最小化器320通过对输入数据执行量化和逆量化来控制量化范围,以便使量化误差最小。
具体地说,当Max表示将被用于量化的固定最大值、Min表示将被用于量化的经过调节的最小值、Xi表示输入值、和nQuanBit表示用于量化的比特数,则利用等式(4)对量化输入值逆量化值以及误差ei进行计算。
为了减少误差和∑ei,量化误差最小化器320控制Min,从而能够使误差和∑ei最小并使用能够使在对数据进行译码的过程中的量化误差最小的最小值,对量化数据进行译码。
量化器310、DPCM操作器110/340及熵编码器350和用于对数据进行编码的前述装置的对应元件几乎相同,因此这里不再重复。下面结合图4B更充分地描述量化误差最小化器320的操作。
初始值设置单元321在步骤S402中接收与输入给量化器310的数据相同的数据以及从量化器310输出的量化数据。
初始值设置单元321从输入数据当中获得最大值max和最小值min并计算最小值min的数字数。接着,初始值设置单元321在步骤S404中通过利用最大值max和最小值min对量化数据进行逆量化来计算量化误差e并将该量化误差e设置为初始最小误差值emin。
初始值设置单元321从输入数据当中的最小值中减去将量化步长QuantSpace除以2所得到的结果并将该减法结果设置为初始调节的最小值min’。然后,初始值设置单元321将所述初始调节的最小值min’设置为量化误差最小值mmin并在步骤S406中将经过调节的最小值min’输出给经过调节的最小值更新单元323。
经过调节的最小值更新单元323通过执行预定的操作,更新从初始值设置单元321输入的经过调节的最小值min’。按照本发明的优选实施例,经过调节的最小值更新单元323按照等式(5)更新从初始值设置单元321输入的经过调节的最小值min’并在步骤S408中将经过更新和调节的最小值min’输出给确定单元325。
在步骤S410中,确定单元325计算经过更新和调节的最小值min’的数字数,将该计算的结果与由初始值设置单元321计算的输入数据当中的最小值min的数字数进行比较,并将经过更新和调节的最小值min’与将输入数据当中的最小值min加到将量化比特尺寸QuantSpace除以2所得结果上的结果进行比较。
如果经过更新和调节的最小值min’的数字数大于输入数据当中的最小值min的数字数,或者如果经过更新和调节的最小值min’大于则确定单元325将当前所存储的量化误差最小值minmin确定为将被用于逆量化的最小值,并将该量化误差最小值minmin输出给输出单元329。如果经过更新和调节的最小值min’的数字数不大于输入数据当中的最小值min的数字数并且经过更新和调节的的最小值min’不大于则确定单元325将经过更新和调节的最小值min’输出给误差值更新单元327。
在步骤S414中,误差值更新单元327利用经过更新和调节的最小值min’和由初始值设置单元321获得最大值max对量化数据进行逆量化,并计算量化误差e。
在步骤S446中,误差值更新单元327将新计算的误差值e与最小误差值emin进行比较。作为比较结果,如果新计算的误差值e小于最小误差值emin,则在步骤S418中,误差值更新单元327利用新计算的误差值e更新最小误差值emin,并利用经过更新和调节的最小值min’更新量化误差最小值minmin。另一方面,如果新计算的误差值e大于最小误差值emin,则误差值更新单元327将再次执行步骤S408而不对最小误差值emin和量化误差最小值minmin进行更新。
经过上述处理获得的用于使量化误差最小的最大和最小值被输出给标题编码器370并被编码为标题信息。然后,该标题信息被包括在由熵编码器350生成的比特流中。
图5A的框图示出了按照本发明第三实施例的、用于对数据进行编码的装置,图5B的示出了图5A所示规范器的操作流程图。按照本发明第三实施例的、用于对数据进行编码的装置通过对具有多个分量的输入数据进行规范,提高了对数据进行编码的效率。
如图5A所示,按照本发明第三实施例的、用于对数据进行编码的装置包括:规范器300,用于计算输入给用于对数据进行编码的装置的分量的数据范围当中的最大范围,并根据该最大范围对x、y和z分量中每个分量的数据进行规范;量化器310,用于利用预定数量的量化比特对经过规范的数据进行量化;DPCM操作器110/340,用于对量化数据执行DPCM操作并输出差分数据;以及熵编码器350,用于对差分数据进行熵编码并输出经过编码的比特流。
量化器310、DPCM操作器110/340及熵编码器350和按照本发明第一实施例的、用于对数据进行编码的装置的对应元件相同,因此关于它们的详细描述这里不再重复。下面仅仅结合图5B描述规范器300的操作。
在将被编码的数据包括多个分量的情况下,例如,如果输入数据包括表示目标在三维空间中的位置的三个分量x、y和z,则将x、y和z分量中的每一个分量输入给用于对数据进行编码的装置的规范器300。然后,规范器300计算x、y和z分量的范围当中的最大范围,并根据该最大范围对x、y和z分量中每一个分量的数据进行规范。
在步骤S512中,规范器300接收每个分量的数据并按照等式(6)计算x、y和z分量的数据范围。然后,在步骤S514中,规范器300通过比较,计算x、y和z分量的数据范围当中的最大范围。
Rangemax=Max(Maxx-Minx,Maxy-Miny,Maxz-Minz)
此后,在步骤S516中,规范器300利用下述等式x、y和z分量中的每一个分量的数据进行规范。
在等式(6)和(7)中,n表示数据的数量,i=0,1,...,n-1,并且j表示x、y和z分量中的每一个分量。如等式(7)所示,使用它们数据范围当中的最大范围Rangemax对x、y和z分量进行规范。作为这种规范的结果,有关不具有最大范围Rangemax的分量的数据的冗余度增加,所以,提高了对数据进行编码的效率。
规范器300对输入分量中的每个分量进行规范,并将规范的结果输出给量化器310,然后,量化器320利用预定数量的量化比特,对从规范器300输入的规范数据进行量化,并将量化的结果输出给DPCM操作器110/340。此后,DPCM操作器110/340通过对从量化器310输入的量化数据执行DPCM操作生成差分数据,并将该差分数据输出给熵编码器350,从而能够对它们进行编码。
下面将描述按照本发明第四实施例的用于对数据进行编码的装置,在该装置中集成了本发明前述的DPCM操作器、用于按照本发明对数据进行编码的能够使量化误差最小的前述装置以及用于按照本发明对数据进行编码的能够对具有多个分量的数据进行编码的前述装置。
尽管按照本发明第四实施例的用于对数据进行编码的装置被专门描述为对在三维动画数据当中的位置内插器的密钥值数据进行编码,但是很明显,它也可以对其它一般类型的数据进行编码。
位置内插器是关于表示在基于关键帧的动画中的动画路径的信息,基于关键帧的动画是表示计算机合成3D动画的基本技术之一。基于关键帧的动画被用于根据密钥数据出现的时刻,规定动画的顺序。与密钥数据出现的瞬间相对应的帧被称之为关键帧。
在基于关键帧的动画中,多个关键帧和在关键帧之间的多个帧构成了一个动画,并且这些帧被内插到关键帧之间(或使用内插法生成关键帧之间的帧)。
诸如用于景物的MPEG-4二进制格式(BIFS)和虚拟现实造型语言(VRML)等国际多媒体标准,支持使用内插器节点的基于关键帧的动画。在MPEG-4BIFS和VRML中,有包括标量内插器、位置内插器、坐标内插器、定向内插器、标准内插器和颜色内插器在内的各种内插器。这些内插器和它们的功能以及特征示于表1中。
表1
内插器的类型 | 特征 | 功能 |
标量内插器 | 标量变量的线性内插 | 能够表示面积、直径和密度 |
位置内插器 | 在3D坐标上的线性内插 | 在3D空间中的平行运动 |
定向内插器 | 3D坐标轴和旋转量的线性内插 | 3D空间中的旋转 |
坐标内插器 | 3D坐标中的变量的线性内插 | 3D变体 |
标准内插器 | 标准3D坐标的线性内插 | 能够表示标准3D矢量中的变量 |
颜色内插器 | 颜色信息的线性内插 | 能够表示在颜色中的变量 |
表1所示的位置内插器被用于表示基于关键帧的动画的位置信息并包括密钥和密钥值字段。密钥字段用范围在-∞和∞之间的不连续数表示每个关键帧在时间轴上的位置。密钥值字段中的每一个规定目标在由每个密钥表示的时刻的位置的信息,并且包括x、y和z三个分量。密钥值字段中的每一个都包括与密钥字段中的每一个所具有的密钥值的数量相同的密钥值。
关于位置内插器的例子示于图18A和18B中。具体地说,图18A示出了密钥数据,图18B示出了密钥值数据。
在MPEG-4BIFS和VRML中已经使用了线性内插。但是,为了利用线性内插平滑并且自然地表示动画,需要相当大数量的密钥数据和密钥值数据。另外,为了存储和传输这种动画,需要具有大容量的存储器和大量的时间。因此,最好压缩内插器以便存储和传输这些内插器。
在MPEG4-BIFS中,使用了对被称之为预测MF编码(PMFC)的内插器节点进行编码和译码的方法。在PMFC方法中,与图1所示的、用于对数据进行编码的常规装置的操作类似,利用量化器、DPCM操作器和熵编码器对位置内插器的密钥值数据进行编码。量化器和DPCM操作器减少了冗余的密钥值数据,DPCM操作器的输出被输入给熵编码器。但是,在PMFC方法中,对由DPCM操作器获得的差分数据进行熵编码,所以,其编码效率不够高。另外,由于熵编码器所具有的限制,它几乎不可能提供高质量的动画。
因此,本发明提供一种用于对密钥值进行编码的装置,在该装置中集成了按照本发明的前述DPCM操作器、用于按照本发明对数据进行编码的能够使量化误差最小的前述装置以及用于按照本发明对数据进行编码的能够对具有多个分量的数据进行编码的前述装置,由此增加了对密钥值数据进行编码的效率。
图6A的框图示出了按照本发明第四实施例的、用于对密钥值数据进行编码的装置,图6B为用于对密钥值数据进行编码的装置的操作流程图。
参照图6A,用于对密钥值数据进行编码的装置包括:规范器300,用于根据x、y和z分量的数据范围当中一个最大范围,对每个分量的输入密钥值数据进行规范;量化器310,用于利用预定的量化比特,对规范的密钥值数据进行量化;量化误差最小化器320,用于从规范器300接收最小值和最大范围,并调节和输出最大和最小值,以便能够使量化误差最小;浮点数编码器330,用于从量化误差最小化器320接收最小值和最大范围,并将用于使量化误差最小的最大范围和最小值转换成十进制数;DPCM处理器340,用于获得量化密钥值数据的差分数据和预测差分数据并执行循环量化操作以便减少差分数据的范围;熵编码器350,用于对差分数据进行熵编码,然后输出将密钥值数据编码进其中的比特流;以及密钥值标题编码器360,用于对译码比特流所需的信息进行编码并使该信息能被包括在比特流中。
下面结合图6B描述按照本发明的用于对密钥值数据进行编码的装置的操作。
在步骤S600中,x、y和z分量中每一个分量的密钥值数据被输入给用于对密钥值数据进行编码的装置的规范器300。然后,在步骤S610中,规范器300计算x、y和z分量的数据范围当中的最大范围,并根据该最大范围对所输入的x、y和z分量的密钥值数据进行规范。上面已经描述了对输入给规范器300的密钥值数据进行规范的处理,这里将不再重复。
被规范的x、y和z分量的密钥值数据被输入给量化器310,然后在步骤S620中,量化器310利用预定数量的量化比特nQuanBit,按照等式(8)对规范的密钥值数据进行。
在等式(8)中,floor()是一个用于将输入的浮点数转换成不大于该输入的浮点数的最大整数的函数。量化器310向DPCM处理器340和量化误差最小化器320输出量化的密钥值数据。
在步骤S630中,量化误差最小化器320从规范器300接收最小值和最大范围,利用从规范器300输入的最小值和最大范围计算最小值和最大值,确定一个最小值和一个最大值以便使量化误差最小化,利用所确定的最小和最大值计算最小值和最大范围,并且向浮点数转换器330输出该最小值和最大范围,由此将它们编码成密钥值标题。这里,由量化误差最小化器320确定的最小和最大值被用于使量化误差最小。
下面结合图7A描述由浮点数编码器330执行的步骤S650。
在步骤S651中,浮点数编码器330接收x、y和z分量的每个分量的密钥值数据当中的最小值x_min、y_min、z_min、具有最大范围的分量的最大值max、关于最大值max属于哪个分量的信息nWhichAxis以及原始密钥值数据的数字数nKeyValueDigit。
为了通过减少编码所需比特数来提高对密钥值数据进行编码的效率,浮点数编码器330在步骤S652中将由二进制数表示的x_min、y_min、z_min和max转换成十进制数。
计算机以32位二进制数的形式存储浮点数。当输入二进制系统的浮点数时,浮点数编码器330按照等式(9)将该浮点数转换成十进制系统的尾数和它的指数。
例如,十进制系统的浮点数12.34可以由计算机转换成如下所示的二进制数。
1:正负号
2:二进制系统中的尾数
3:二进制系统中的指数
如下所示,该二进制数可以按照等式(9)被转换回原始的十进制数。
1:正负号
2:十进制系统中的尾数
3:十进制系统中的指数
为了将十进制系统的尾数和指数包括在比特流中,必须计算表示尾数所需的比特数和表示指数所需的比特数。指数具有-38和38之间的值,由此可以利用7位和正负号一起来表示指数。表示尾数所需的比特数取决于该尾数的数字数。下表示出了各种范围的值和表示各种范围的值的尾数所需的比特数。
表2
值的范围 | 尾数的数字数 | 表示尾数所需的比特数 |
0 | 0 | 0 |
1-9 | 1 | 4 |
10-99 | 2 | 7 |
100-999 | 3 | 10 |
1000-9999 | 4 | 14 |
10000-99999 | 5 | 17 |
100000-999999 | 6 | 20 |
1000000-9999999 | 7 | 24 |
浮点数编码器330在步骤S453中检查x_min、y_min和z_min的数字数是否相同。如果它们不相同,则在步骤S654中输出给密钥值标题编码器360并将它们编码为密钥值标题。
如果x_min、y_min和z_min的数字数相同,则在步骤S655中,浮点数编码器330检查它们是否与原始密钥值数据的数字数相同。如果x_min、y_min和z_min的数字数与原始密钥值数据的数字数不同,那么,在步骤S656,x_min、y_min和z_min的数字数中的一个被输出给密钥值标题编码器360并被编码为密钥标题。
此后,浮点数编码器330在步骤S657中检查x、y和z分量的所有密钥值数据当中的最大值max是从哪个分量的密钥值数据当中选择的,并确定max的数字数是否与得到最大值max的分量的密钥值数据当中的最小值的数字数相同。
如果max的数字数与得到最大值max的分量的密钥值数据当中的最小值的数字数不同,则max的数字数被输出给密钥值标题编码器360并被编码为一个密钥值标题。另一方面,如果max的数字数与最大值max所属的分量的密钥值数据当中最小值的数字数相同,则在步骤S658中,描述它们相同的状态信息被输出给密钥值标题编码器360。
浮点数编码器330的前述操作是用于对经过转换的浮点数的尾数进行编码。下面描述将与浮点数的指数相关的信息编码成密钥值标题的处理。
在步骤S659中,浮点数编码器330识别在x_min、y_min、z_min以及max的指数的绝对值当中哪一个是最大值,将所识别的最大值存储为nMaxExp,并将nMaxExp编码到若干比特的密钥值标题中。
此后,浮点数编码器330在步骤S660中检查x_min、y_min、z_min以及max的指数的正负号是否相同。如果它们相同,则在步骤S661中将bSameSignExp设置为1并将它们的正负号输出给密钥值标题编码器360。另一方面,如果它们不相同,则在步骤S662中将bSameSignExp设置为0,然后完成对与x_min、y_min、z_min以及max的指数相关信息的编码。
参照图7B,浮点数编码器330在将x_min,y_min,z_min以及max编码成密钥值标题之前,在步骤S663中对经过转换的浮点数的正负号进行编码。
接着,在步骤S664中,浮点数编码器330参照表2计算对浮点数进行编码所需的比特数,并将具有与计算结果同样多比特的浮点数的尾数输出给密钥值标题编码器360。
在步骤S665中,浮点数编码器330参照表2计算对nMaxExp进行编码所需的比特数,并将具有与计算结果同样多比特的浮点数的指数输出给密钥值标题编码器360。
浮点数编码器330根据bSameSignExp检查x_min、y_min、z_min以及max是否具有相同的正负号。如果它们不具有相同的正负号,则在步骤S667中它们的正负号输出给密钥值标题编码器360并进行编码,由此,完成对从规范器300输入的x、y和z分量中每一个分量的密钥数据当中的最大和最小值的编码处理。
浮点数编码器330从量化误差最小化器320接收使量化误差最小所需的最大和最小值,并经过上述步骤将它们编码成密钥标题。
再次参照图6B,在步骤S670中,DPCM处理器340对量化的密钥值数据执行循环DPCM操作和预测循环DPCM操作并向熵编码器350输出差分数据。DPCM处理器340由前述的DPCM操作器组成,DPCM操作器的操作和结构已经在上面进行了描述。DPCM处理器340和前述的DPCM操作器之间的差别仅在于DPCM处理器340分别对x、y和z分量中每个分量的密钥值数据执行循环DPCM操作和预测循环DPCM操作。
在步骤S680中,在熵编码器350中对从DPCM处理器340输出的差分数据进行编码。
参照图7C,熵编码器350对x、y和z分量的每个分量的密钥值数据的差分数据进行熵编码。
熵编码器350参照x、y和z分量的每个分量的差分数据,检查x、y和z分量的量化值是否相同,如果它们相同,则在步骤S681中完成熵编码。例如,在三维动画的情况下,一列火车以与x分量方向相同的水平方向运动,x分量的密钥值数据是变化的。但是,y和z分量几乎不变。因此,如果y和z分量被量化,估计它们将会具有相同的值。因此,不需要对实际上相同的所有密钥值数据进行编码,由此可以通过仅仅将密钥值数据当中的一个编码成密钥值标题来提高编码的效率。
如果x、y和z分量中每一个分量的量化密钥值数据都不同,则在步骤S682中,熵编码器350读出已经被预先设置的预定值。此后,熵编码器350在步骤S683中用unaryAAC函数对x、y和z分量中每个分量的量化密钥值数据的差分数据进行编码,或者在步骤S685中用连续量化AAC函数对它们进行编码。
下面结合图8描述unary AAC函数。unary AAC函数把将被编码的符号转换成由一系列0、一个用于指示这一系列0结束的标记位1和一个表示符号的正负号的位组成多个比特。这里,多个0对应于符号的幅值。例如,利用unary AAC函数将256编码成由256个0、用于指示这一系列0结束的标记位1和表示256的正负号,即正号,的0组成的一系列比特。由于unary AAC函数,增加了表示将被编码的符号的比特的冗余度,提高了对符号进行编码的效率。
下面将参照图7D、9A和9B描述利用SQ AAC函数对符号进行编码的方法。SQ AAC函数连续更新量化范围地对符号进行编码。
图9A示出了利用SQ AAC函数对符号进行编码的方法。如图9A所示,将被编码的输入符号是1,在编码范围中的最小值和最大值分别是0和9。
参照图9A,在对该符号进行编码的第一步骤中,将编码范围划分为两个子域,即上界和下界,然后,检查将被编码的符号,即1,是属于上界还是属于下界。由于1属于所述下界,所以,0被编码并且下界被更新为一个新的编码范围。因此,用于第二步骤的新的编码范围是从0到4。
在第二步骤中,新的编码范围0到4被划分为两个子域,即上界和下界,然后,检查1是属于上界还是属于下界。由于1属于下界,所以,0被编码,并且将编码范围当中的最大值更新为作为下界中的最大值的1。因此,用于第三步骤的新编码范围是原被用做下界的从0到1。
在第三步骤中,0到1的编码范围被划分为一个上限值和下限值,然后检查1是否属于一个上界。由于1等于上限值,所以,1被编码,然后在对应编码范围中的最小值被更新为1。因此,一个新的编码范围是[1,1],由此,它的最大和最小值彼此相同。当在编码范围中的最小和最大值相同时,利用SQAAC函数的编码处理完成。
图7D的流程图示出了利用SQ AAC函数对分量的密钥值数据的差分数据的编码处理,按照本发明,该处理是在的熵编码器350中执行的。
参照图7D,在步骤S692中,熵编码器350接收密钥值数据的差分数据(下面称之为符号)、对符号进行熵编码所需的比特数nQP、表示将被编码为比特流的符号的第一下标nStartIndex以及将被编码的符号的数量(n)。
熵编码器350在步骤S694中对符号的正负号进行编码并将符号转换成正数。将符号转换成正数的原因在于在后续的处理中不允许负数。
熵编码器350在步骤S696中识别正数当中的最大值,将该最大值存储为nMax,并将nMax编码为与nQP一样多的比特。
熵编码器350对将在其中对符号进行编码的范围进行初始化,将在编码范围内的最小值和最大值分别设置为0和nMax。另外,熵编码器350将一个比特的标记分派到符号中的每一个符号。标记被用于在对符号编码进行期间改变概率模型。开始时将标记设置为‘假’并且当下一个将被编码的值是1时将其转换成‘真’,然后,到目前为止已经被用于对符号编码进行的概率模型被其他的模型代替。
接着,熵编码器350在步骤S700中识别x、y和z分量中每一个分量的差分基准点(i=nStartIndex),假设它首先被编码,并将标记bDone设置为“真”,该标记说明对所有符号的编码是否完成。
熵编码器350重复执行将在下面进行说明的步骤S702到S718,直到用于符号中的每一个的编码范围中的最大和最小值变为相同为止,即直到没有剩余的符号需要被编码为止。这里,当在用于一个符号的编码范围中的最大和最小值相同时,可以认为完成对符号的编码。
熵编码器350在步骤S702中检查是否等于如果等于方法移动到用于对下一个符号进行编码的步骤。如果不等,则在步骤S704中将bDone设置为‘假’,这意味着对当前符号(当前正在被编码的符号)的编码还没有完成。
熵编码器350在步骤S706计算在用于当前符号的编码范围中的中间值nMid并在步骤S708中将中间值nMid与当前符号的值进行比较。在本发明的优选实施例中,根据下述等式计算中间值nMid:
另一方面,如果当前符号值大于中间值nMid,这意味着当前符号属于上界,则给比特流发出1,并且用中间值nMid代替用于当前符号的编码范围中的最小值当当前正被编码的符号的值第一次超过的中间值nMid时,换言之,当第一次将1发给比特流时,在步骤S712中将设置为‘真’,从而改变用于对符号进行编码的概率模型。
有两种在SQ AAC函数中使用的概率模型。一种是用于对在第一次从每个符号发出1之前输出的比特进行熵编码的notFoundContext,另一种是用于对恰好在第一次从每个符号发出1之后输出的比特进行熵编码的FoundContext。使用两种不同概率模型的目的是为了增加在使用noFoundContext期间生成0的概率。由于生成0的概率增加,因此提高了对符号进行熵编码效率。
此后,熵编码器350在步骤S714中检查是真还是假。如果是真,则熵编码器350在步骤S716中使用FoundContext对符号进行编码,否则,熵编码器350在步骤S718中使用notFoundContext对符号进行编码。
当完成对当前符号进行从步骤S702到步骤S718的编码处理时,这意味着该熵编码器仅完成了对当前符号进行编码的第一阶段,在步骤S720中,熵编码器350将编码下标i增加1。接着,熵编码器350在步骤S722中检查在当前阶段中是否完成对所有符号的编码。如果在当前阶段中还有要被编码的符号,则熵编码器350再次执行步骤S702到步骤S722。
当完成了对在一阶段中的所有符号的编码时,在步骤S724中,熵编码器350根据标记nDone检查是否所有阶段的编码都已经完成。如果bDone是真,则熵编码器350完成在当前阶段中的全部编码处理并且开始对下一个分量进行编码,如果不是,则熵编码器350再次执行步骤S700到S722,对剩余的符号进行编码。
图9B示出了用SQ AAC函数对多个符号进行编码的处理。具体地说,图9B示出了用SQ AAC函数对0、1、2、3、4和9进行编码的处理。
再次参照图6B,如果按照本发明的用于对数据进行编码的装置通过对所有输入密钥值数据进行熵编码生成比特流,则密钥值标题编码器360在步骤S730中将对编码的密钥值数据进行译码所需的信息编码成密钥值标题信息,将该密钥值标题信息添加到比特流中,并且输出合成的比特流。
密钥值标题编码器360对将被编码的输入密钥值数据的数量和数字数进行编码。接着,密钥值标题编码器360识别x、y和z分量中的每个分量是否具有相同的量化值(例如,即使x、y和z分量中的每个分量的密钥值数据变化,但由于x分量的密钥值数据变化的程度很小,所以x分量的量化密钥值数据具有相同值)并且将结果编码成一个标记。
例如,如果x分量的量化值不相同,那么,是已经利用循环DPCM操作还是已经利用预测循环DPCM操作对x分量的密钥值数据进行了编码,以及是将用unaryAAC函数还是将用SQ AAC函数对x分量的密钥值数据进行编码都被编码成标记。如果不期望用unary AAC函数对x分量的密钥值数据进行编码,那么,将被熵编码的x分量的编码比特尺寸和x分量的开始下标都被编码成密钥值标题。
同样,如果y和z分量中每个分量的密钥值数据不同,那么,与前述的x分量的标题信息完全对应的y和z的标题信息被编码成标题。
如果x分量的量化值不同,则不用unary AAC函数对x分量的密钥值数据进行编码,并且将被熵编码的x分量的开始下标是1,然后,将第一量化密钥值基准点编码为内部基准点。按照相同的方式,将y和z分量中的每个分量的第一量化密钥值基准点编码为内部基准点。
密钥值标题编码器360识别在x、y和z分量中哪一个分量具有最大范围。如果x分量具有最大范围,则密钥值标题编码器360将变量nWhichAxis设置为0。如果分量y具有最大范围,则密钥值标题编码器360将nWhichAxis设置为1。如果分量z具有最大范围,则密钥值标题编码器360将nWhichAxis设置为2。此后,密钥值标题编码器360利用浮点数编码器330将nWhichAxis、x_min、y_min、z_min和max编码成密钥标题。
下面将描述用于实现按照本发明第四实施例的,对数据进行编码的方法的计算机程序.
按照本发明的用于对数据进行编码的装置将位置内插器编码成比特流,这将在下面描述。为了更好地理解,下面将以SDL语言的形式描述传统的程序代码和变量。
图19示出了实现压缩位置内插器的程序代码的例子。在图19中,示出了用于读取一个压缩位置内插器的第一个类。第一个类包括PoslKeyValueHeader和PoslKeyValue。PoslKeyValueHeader包括用于译码PoslKeyValue的标题信息,类PoslKeyValue从所述比特流中读出有关压缩位置内插器的密钥值数据。函数qf_start()被用于在读出被ACC编码的部分比特流之前启动一个算术译码器。
图20示出了PoslKeyValueHeader的程序代码。参照图20,在存储在PoslKeyValueHeader中的变量当中nNumKeyValueCodingBit表示nNumberOfKeyValue的比特尺寸,nNumberOfKeyValue表示密钥值数据的数量,和nKVQBit表示密钥值数据的量化比特尺寸。
x_keyvalue_flag,y_keyvalue-flag和z_keyvalueflag说明x、y和z分量是否具有相同的量化值,并且nKVDigit表示密钥值数据中的每个数据的最高有效位的最大数。NKVDPCMOrder_X,nKVDPCMOrder_Y,nKVDPCMOrder_Z分别对应于被用于x、y和z分量中的每个分量的密钥值数据的DPCM的阶数。如果已经执行了DPCM,则该标记被设置为0,如果已经执行了预测DPCM,则该标记被设置为1。
blsUnaryAAC_X,blsUnaryAAC_Y,blsUnaryAAC_Z中的每一个说明在熵编码期间已经使用了unary AAC函数。nKVCodingBit_X,nKVCodingBit_Y和nKVCodingBit_Z分别说明用于x、y和z分量的编码比特尺寸。nStartIndex_X nStartIndex_Y和nStartIndex_Z表示将被编码的每个分量轴的开始下标。firstKV_X,frstKV_Y和firstKV_Z分别表示x、y和z分量中的每个分量的第一量化密钥值数据,它们都被编码成内部数据。
图21示出了类KeyValueMinMax的程序代码。参照图21,类KeyValueMin恢复已经被用于规范密钥值数据的最大和最小值。bUse32float说明32比特浮点数是否已经被用于存储最大和最小值。如果bUse32Float是0,那么用IEEE标准754的浮点数格式对用于规范密钥值数据的最大和最小值进行编码。否则,用浮点数编码器对用于规范密钥值数据的最大和最小值进行编码。
nWhichAxis表示在x、y和z当中具有最大范围的分量。在本实施例中,如果nWhichAxis是0,则X轴具有最大范围,如果nWhichAxis是1,则Y轴具有最大范围,而如果nWhichAxis是2,则Z轴具有最大范围。
BAllSameMantissaDigitFlag说明在x、y和z分量中的每个分量的密钥值数据当中的最小值的尾数是否具有相同的数字数,并且bSameKVDigitFlag表示最小值的尾数的数字数与nKVDigit相同。nMantissaDigit_X、nMantissaDigit_Y和nMantissaDigit_Z分别表示在x、y和z分量的每个分量的密钥值数据当中的最小值的尾数的数字数。
BMaxDigitFlag说明最大值的尾数是否具有与从中获得最大值max的分量的最小值相同的数字数。如果最大值的尾数的数字数不同于最小值的尾数的数字数,则从比特流中读出最大值的尾数的数字数。
nMantissaDigit_M表示最大值的尾数的数字数,nExponentBits表示对最大和最小值的指数当中的最大绝对指数进行编码所需的比特数。BAllSameExponentSign说明x、y和z分量的正负号是否相同,当bAllSameExponentSign为真时,nExponentSign表示指数的正负号。
fpnMin_X、fpnMin_Y、fpnMin_Z和fpnMax表示在十进制系统中被译码的浮点数。下面将用FloatingPointNumber来描述对fpnMin_X、fpnMin_Y、fpnMin_Z和fpnMax进行译码的方法。fMin_X、fMin_Y和fMin_Z表示在x、y和z分量中的每个分量的密钥值当中的最小值,fMax表示在具有最大范围的分量的密钥值数据当中的最大值。
下面结合图22描述类FloatingPointNumber的程序代码。类FloatingPointNumber使用十进制系统表示浮点数。nMantissa表示十进制系统中的浮点数的尾数,nExponent表示该浮点数的指数。
nSign表示浮点数的正负号,nExponentSign表示该浮点数的指数的正负号。
下面结合图23描述类PoslKeyValue的程序代码。参见图23,在存储在类PoslKeyValue中的变量中,keyValue_X、keyValue_Y和keyValue_Z分别表示在位置内插器中的x、y和z分量中的每个分量的密钥值数据的数组。如果nStartIndex_X被设置为0,则使用算术译码器从比特流中译码keyValue_X[0]。如果nStartIndex_X被设置为1,则从密钥值标题译码器中译码keyValue_X[0]。以相同的方式,确定keyValue_Y[0]和keyValue_Z[0]。当从比特流中算术译码keyValue_X[0]、keyValue_Y[0]和keyValue_Z[0]时,使用decodeUnaryAAC或者decodeSQAAC函数。
上下文模型kVXSignContext、kVYSignContext和kVZSignContext被分别用于对keyValue_X、keyValue_Y和keyValue_Z的正负号进行译码。上下文模型kVXSignContext、kVYSignContext和kVZSignContext被发送给decodeUnaryAAC或decodeSQAAC函数。
MaxValueContext、FoundContext和NotFoundContext被用于对密钥值的绝对值进行熵译码。例如,kVXMaxValueContexr,kVXFoundContext和kVXNotFoundContext被用于对keyValue_X进行译码。MaxValueContext、FoundContext和NotFoundContext被发送给decodeUnaryACC或decodeSQAAC函数。
上下文模型kVXUCotext、kVYUContext和kVZUContext被用于对keyValue_X、keyValue_Y和keyValue_Z进行译码,并被发送给decodeUnaryAAC函数。
下面结合图10A和10B描述通过恢复由前述DPCM操作器生成的差分数据,输出量化数据的逆DPCM操作器。
图10A的框图示出了按照本发明的逆DPCM操作器,图10B为逆DPCM操作的流程图。
参见图10A,按照本发明的逆DPCM操作器包括:逆循环DPCM操作器1020,用于对输入给它的差分数据执行逆循环量化操作以便扩展它们的范围,对输入差分数据执行逆DPCM操作,然后输出量化数据;逆预测循环DPCM操作器1030,用于对输入给它的差分数据执行逆循环量化操作以便扩展它们的范围,对输入差分数据执行逆预测DPCM操作,然后输出量化的数据;以及确定单元1010,用于根据已经对差分数据执行的DPCM种类,将差分数据输出给逆循环DPCM操作器1020或逆预测循环DPCM操作器1030。
下面结合图10B描述逆DPCM操作。参见图10A和10B,经历逆DPCM操作的差分数据被输入给确定单元1010。然后,在步骤S1010中,确定单元1010识别对输入差分数据执行了哪种DPCM,根据结果确定将要对输入差分数据执行哪种逆DPCM,并将差分数据输出给逆循环DPCM操作器1020或逆预测循环DPCM操作器1030。
如果所述差分数据被输入给逆循环DPCM操作器1020并且nMax是输入差分数据的量化范围中的最大值,逆循环DPCM操作器1020通过在步骤S1020中对输入差分数据执行按照下述等式的逆循环量化获得量化的差分数据
在等式(12)中,n表示数据的数量,和i表示1和n-1之间的整数。
在等式(13)和(14)中,n表示数据的数量,i表示1和n-1之间的整数。如果A不小于0且不大于nMax,那么,逆循环DPCM操作器1020输出A作为逆预测循环DPCM的数据如果A小于0或大于nMax,则逆预测循环DPCM操作器1020在步骤S1040中输出B作为
下面结合图11描述按照本发明第一实施例的,用于对数据进行译码的装置。按照本发明第一实施例的用于对数据进行译码的装置使用按照本发明的DPCM操作器对比特流进行译码,在该比特流中,输入数据已经被利用按照本发明第一实施例的,用于对数据进行编码的装置编码。
参见图11,按照本发明第一实施例的用于对数据进行译码的装置包括熵译码器1120、由前述逆DPCM操作器组成的逆DPCM处理器1130和逆量化器1140。
熵译码器1120通过对输入比特流进行熵译码,生成差分数据并将该差分数据输出给逆DPCM处理器1130。
如上所述,逆DPCM处理器1130识别对输入差分数据执行了哪种DPCM,对差分数据执行逆循环DPCM操作或逆预测循环DPCM操作,并将量化数据输出给逆量化器1140。
逆量化器1140利用预定的量化比特,对从逆DPCM处理器1130输入的量化数据进行逆量化并输出重新得到的数据。
下面结合图12A和12B描述按照本发明第二实施例的,用于对数据进行译码的装置。按照本发明第二实施例的用于对数据进行译码的装置对比特流进行译码,在该比特流中,具有多个分量的数据已经被利用按照本发明的规范器规范。
参见图12A,按照本发明第二实施例的,用于对数据进行译码的装置包括:熵译码器1120,用于对输入比特流进行熵译码并输出差分数据;逆DPCM操作器140/1130,用于对从熵译码器1120输入的差分数据执行逆DPCM操作并输出量化数据;逆量化器1140,用于对从逆DPCM操作器140/1130输入的量化数据进行逆量化并输出规范数据;以及逆规范器1150,用于接收每个分量的密钥值数据当中的最小值和具有最大范围的分量的最大值,计算规范数据的最大范围,并根据该最大范围对从逆量化器1140输入的量化数据进行逆规范。
熵译码器1120、逆DPCM操作器140/1130和逆量化器1140的操作与结构和按照本发明第一实施例的,用于对数据进行译码的装置的相应元件的操作和结构相同,这里不再重复描述。下面将结合图12B对逆规范器1150的操作进行描述。
逆规范器1150在步骤S1210中接收从输入比特流中译码的,用于规范的最大值fMax,并分别接收x、y和z分量的最小值fMin_X、fMin_Y和fMin_Z,以及关于哪个分量轴具有最大值的信息nWhichAxis和有关编码类型的信息bUse32Float。
逆规范器1150根据bUse32Float识别fMax、fMin_X、fMin_Y和fMin_Z是否被利用IEEE标准754的浮点数格式编码,如果不是,则逆规范器1150使用下述等式计算最大范围中的最大值Rangemax。如果fMax、fMin_X、fMin_Y和fMin_Z被以32位编码,则逆规范器1150在步骤S1220中将fMax确定为Rangemax。
Rangemax=fMax-fMin_X (如果n WhichAxis=0)....(15)
Rangemax=fMax-fMin_Y (如果n WhichAxis=1)
Rangemax=fMax-fMin_Z (如果n WhichAxis=2)
如果Rangemax被确定,逆规范器1150在步骤S1230中根据Rangemax,利用下述等式对x、y和z分量的每个分量的数据进行规范。
在等式(16)中,n表示数据的数量。
下面结合图13A和13B描述按照本发明第三实施例的,用于对数据进行译码的装置和方法。按照本发明第三实施例的,用于对数据进行译码的装置对比特流进行译码,已经利用按照本发明的对数据进行编码的方法,将表示三维动画中的目标的位置内插器的密钥值数据编码进该比特流中。
参见图13A,按照本发明第三实施例的,用于对数据进行译码的装置包括:密钥值标题译码器1110,用于对来自比特流的译码所需的信息进行译码;熵译码器1120,用于对输入给它的比特流进行熵译码,然后输出差分数据;逆DPCM处理器1130,用于对从熵译码器1120输入给它的差分数据执行逆循环DPCM操作或逆预测循环DPCM操作,然后输出量化的密钥值数据;逆量化器1140,用于对从逆DPCM处理器1130输入的量化密钥值数据进行逆量化并输出规范的密钥值数据;浮点数译码器1160,用于从密钥值标题译码器1110接收最小和最大值并将x、y和z分量的每个分量的密钥值数据当中的最小值和具有最大范围的分量的最大值转换成二进制数;以及逆规范器1150,用于从浮点数译码器1160接收x、y和z分量中的每个分量的密钥值数据当中的最小值和具有最大范围的分量的最大值,根据来自浮点数译码器1160的最小值和最大值,计算最大范围,然后对从逆量化器1140输入的密钥值数据进行逆规范。
下面结合图13B描述按照本发明第三实施例的,用于对数据进行译码的方法。参照图13B,将经过编码的密钥值数据的比特流输入给熵译码器1120和密钥值标题译码器1110。然后,在步骤S1300中,密钥值标题译码器1110从比特流中对译码所需的标题信息进行译码并将译码的标题信息输出给熵译码器1120、逆DPCM处理器1130和逆量化器1140。
在步骤S1320中,熵译码器1120对比特流进行熵译码并将差分数据输出给逆DPCM处理器1130。
图14A是步骤S1320的详细流程图。参照图14A,在步骤S1321中将比特流Pi输入给熵译码器1120。图15示出了输入给熵译码器1120的并要进行熵译码的经过编码的密钥值数据的顺序。
熵译码器1120在步骤S1322中检查分量,例如x,的密钥值数据是否具有相同的量化值。如果分量的密钥值数据具有相同的量化值,则在步骤S1323中将该分量的所有符号译码,并将它们设置为从密钥值标题译码器1110输入的最小值,例如fMin_X。
如果分量的密钥值数据具有不同的量化值,则熵译码器1120在步骤S1324中检查该密钥值数据是否已经被利用unary AAC函数编码。如果该密钥值数据已经被利用unaryAAC函数编码,则在步骤S1325利用unaryAAC函数对它们进行译码。
unary AAC函数从比特流中读出0,直到比特“1”出现为止,将0的数量转换成绝对值,读出接着“1”的一位作为值的正负号,如果该位是“0”,则值的正负号为正,如果该位是“1”,则值的正负号为负,并且输出经过译码的值。
如果分量的密钥值数据没有被利用unaryAAC函数编码,则熵译码器1120利用SQ AAC函数对比特流进行译码,该比特流是指利用SQ AAC函数将分量的密钥值数据编码进其中的比特流,这将在下面描述。
此后,在步骤S1332中,熵译码器1120确定将被首先译码的密钥值基准点(i=nStartlndex)并将bDone设置为‘真’。
熵译码器1120再次执行步骤S1333到S1343,对符号进行译码。
如果最大值和最小值相同,则在步骤S1334中,将被编码的符号被确定为译码范围内的最大值(或最小值),如果不是,则在步骤S1335中,熵译码器1120将bDone设置为‘假’,并利用下述等式(17)更新译码范围内的中间值nMid。
熵译码器1120在步骤S1336中检查上下文标记是否为真,从而确定用于译码的概率模型。如果是真,则熵译码器1120在步骤S1337中利用FoundContext对比特流进行译码,否则,熵译码器1120在步骤S1338中利用notFoundContext对比特流进行译码。
已经对来自比特流的一个比特进行译码的熵译码器1120在步骤S1339中检查从比特流中读出的该比特是否是1,如果不是,则熵译码器1120在步骤S1340中用中间值nMid代替译码范围中的最大值如果从比特流译码的比特是1,则熵译码器1120在步骤S1341中利用中间值nMid代替译码范围中的最小值并将上下文标记设置为‘真’。
熵译码器1120在步骤S1342中将译码下标i加1,在步骤S1343中检查当前阶段中分量的所有密钥值数据是否被完全译码,如果在当前阶段中还剩余要被译码的符号,则执行步骤S1333到S1342。
如果已经将当前阶段的所有密钥值数据译码,熵译码器1120在步骤S1344中检查是否需要附加阶段来对当前分量的密钥值数据进行译码,如果是,则再次执行步骤S1332到S1343。熵译码器检查如果已经将当前分量的所有密钥值译码,则熵译码器开始对下一个分量的密钥值数据进行译码。
参见图13A和13B,由熵译码器1120译码的密钥值数据的差分数据被输入给逆DPCM处理器130,然后逆DPCM处理器130根据所执行的DPCM的类型执行逆循环DPCM操作或逆预测循环DPCM操作。除了对x、y和z分量的每个分量的密钥值数据单独执行以外,逆循环DPCM操作和预测循环DPCM操作与前述逆DPCM操作器的操作相同。
逆DPCM处理器1130将由逆DPCM操作生成的量化密钥值数据输出给逆量化器1140,然后,在步骤S1370中,逆量化器1140利用从密钥值标题译码器1110输入的量化比特nKeyValueQBits对进行逆量化。当n表示 (i=nStartIndex,...,n;j=x,y,z)...(18)
从密钥值标题译码器1110输入的密钥值数据的数量时,在逆量化器1140中执行的逆量化可以利用下述等式表示。
逆量化器1140通过对x、y和z分量中的每个分量的密钥值数据执行逆量化生成规范的数据,并向逆规范器1150输出x、y和z分量中的每个分量的规范的密钥值数据。
逆规范器1150利用从浮点数译码器1160输入的信息,对从逆量化器1140输入的规范的密钥值数据进行逆规范。
下面结合图14C描述对x、y和z分量中的每个分量的规范密钥值数据进行的逆规范。
浮点数译码器1160接收信息bUse32Float并检查bUse32Float是否为真。如果bUse32Float为真,则浮点数译码器接收用于逆规范的最大值fMax以及具有IEEE标准754的浮点数格式的x、y和z分量中的每个分量的密钥值数据当中的最小值fMin_X、fMin_Y和fMin_Z。如果不是,则浮点数译码器在步骤S1382中接收用于逆规范的最大值fMax以及x、y和z分量中的每个分量的密钥值数据当中的最小值fMin_X、fMin_Y和fMin_Z,并接收关于最大值fMax属于哪一个分量的信息nWhichAxis。
浮点数译码器1160在步骤S1384中按照等式(9)将在十进制系统中表示的fMax、fMin_X、fMin_Y和fMin_Z转换成二进制数,并将转换后的值输出给逆规范器1150。
逆规范器1150根据bUse32Float检查fMax、fMin_X、fMin_Y和fMin_Z是否已经被编码为32比特。如果fMax、fMin_X、fMin_Y和fMin_Z已经被编码为32比特,则逆规范器1150将fMax确定为Rangemax,如果不是,则逆规范器在步骤S1386中按照等式(15)计算最大范围中的最大值Rangemax。
如果Rangemax被确定,则逆规范器1150在步骤S1388中根据Rangemax,按照等式(16)对x、y和z分量中的每个分量的密钥值数据进行逆规范。
图24到27示出了按照本发明第三实施例的,用于对数据进行译码的装置运行的程序代码的例子。
图24示出了用于实现逆循环DPCM操作的C++程序代码的例子,图25示出了用于实现逆预测循环DPCM操作的C++程序代码的例子。
逆循环DPCM操作和逆预测循环DPCM操作都包括用于在量化范围中选择某个值的逆循环量化程序。
用于实现熵译码(自适应算术译码器)操作的C++程序代码的例子示于图26到31中。这里,qf_decode()表示用于从比特流中读出一个比特的函数。
利用写入到计算机可读记录介质上的计算机可读代码可以实现本发明。这里,计算机可读记录介质包括任何一种可以被计算机系统读出的记录介质。例如,计算机可读记录介质可以是ROM、RAM、CD-ROM、磁带、软盘、光数据存储器和载波(通过互联网传输)。计算机可读记录介质可以被传输到通过网络连接的计算机系统,计算机可以以分散方式读取记录介质。
如上所述,可以认为,按照本发明的DPCM操作器及其操作通过执行预测DPCMA操作和循环量化操作以及传统的DPCM操作,可以大大减少差分数据的规模。另外,通过利用按照本发明的DPCM操作对数据进行编码,可以明显地提高对数据进行编码的效率。
另外,通过利用按照本发明的规范器,根据x、y和z分量中的一个分量对具有多个分量的数据进行规范,可以提高对数据进行编码的效率,从而减小数据的规模。
此外,通过在执行DPCM操作和预测DPCM操作之后执行循环量化操作,可以以较高的压缩比对位置内插器的密钥值数据进行编码和译码,从而减少将被编码的差分数据的范围。
尽管本发明是参照其优选实施例来描述的,但本领域的技术人员应该理解,可以在不脱离由所附权利要求限定的本发明的精神和范围的情况下,对其进行形式和细节上的各种修改。
Claims (13)
1.一种用于对数据进行编码的装置,该装置包括:
一个量化器,用于将输入给它的数据量化为预定的比特量化;
一个DPCM操作器,用于通过对量化数据执行DPCM操作生成差分数据;
一个熵编码器,用于对从DPCM操作器输入的差分数据进行熵编码,并将经过熵编码的差分数据输出到比特流中;
一个量化误差最小化器,用于接收输入数据和量化数据,调节输入数据中的最大和最小值,从而使量化误差最小,并且输出最大和最小值;以及
一个标题编码器,用于对将被包括在比特流中的从量化误差最小化器输出的最大和最小值进行编码,
其中,所述量化误差最小化器包括:
一个初始值设置单元,用于接收输入数据和量化数据,通过计算输入数据和量化误差当中的最小值的数字数设置最小误差值emin的初始值,并设置经过调节的最小值min’和量化误差最小值minmin的初始值;
一个经过调节的最小值更新单元,用于通过对经过调节的最小值min’执行一个预定的操作,对经过调节的最小值min’进行更新;
一个确定单元,用于根据经过更新和调节的最小值的数字数和值,将量化误差最小值minmin确定为将被用于逆量化的最小值;以及
一个误差值更新单元,用于根据经过更新和调节的最小值计算量化误差值,如果所计算的量化误差值小于最小误差值emin,则将经过调节的最小值更新为量化误差最小值minmin,将所计算的量化误差值更新为最小误差值emin,并将最小误差值emin输出给经过调节的最小值更新单元。
2.如权利要求1所述的装置,其中,所述初始值设置单元根据用预定常数除预定量化步长的结果和输入数据中的最小值,设置经过调节的最小值的初始值。
3.如权利要求1所述的装置,其中,在通过将输入给所述确定单元的经过调节的最小值的数字数和输入数据的数字数进行比较,以及将输入的经过调节的最小值的值和输入数据当中最小值的值进行比较之后,所述确定单元将当前的量化误差最小值输出为将被用于逆规范的最小值。
4.一种用于对具有多个分量的数据进行编码的装置,该装置包括:
一个规范器,用于计算分量的数据范围当中的最大范围,并且根据该最大范围对分量中的每个分量的数据进行规范;
一个量化器,用于利用预定的量化比特对经过规范的数据进行量化;
一个DPCM操作器,用于对量化数据执行DPCM操作并输出差分数据;以及
一个熵编码器,用于对差分数据进行熵编码并输出将差分数据编码进其中的比特流,
其中,所述规范器计算分量中的每个分量的数据当中的最大和最小值,利用分量的最大和最小值获得分量的数据范围当中的最大范围,并根据该最大范围对分量中的每个分量的数据进行规范。
5.一种用于对数据进行译码的装置,用于比特流进行译码,所述比特流包含被编码的数据,所述数据具有多个分量,所述装置包括:
一个熵译码器,用于对输入给它的比特流进行熵译码并输出差分数据;
一个逆DPCM操作器,用于对差分数据执行逆DPCM操作并输出量化数据;
一个逆量化器,用于对量化数据进行逆量化并输出规范数据;以及
一个逆规范器,用于接收每个分量数据当中的最小值和具有最大范围的分量的最大值,获得规范数据的最大范围,并该最大范围对规范数据进行逆规范,
其中,逆DPCM操作器包括:
逆循环DPCM操作器,用于对输入给它的差分数据执行逆循环量化操作以便扩展它们的范围,对输入差分数据执行逆DPCM操作,然后输出量化数据;
逆预测循环DPCM操作器,用于对输入给它的差分数据执行逆循环量化操作以便扩展它们的范围,对输入差分数据执行逆预测DPCM操作,然后输出量化的数据;以及
确定单元,用于根据已经对差分数据执行的DPCM种类,将差分数据输出给逆循环DPCM操作器或逆预测循环DPCM操作器。
6.如权利要求5所述的装置,其中,所述逆规范器利用规范数据所属分量的最大范围和最小值,对规范数据进行逆规范。
7.如权利要求5所述的装置,其中,所述逆规范器通过将规范数据乘以最大范围并将规范数据所属分量的最小值加到乘法的结果上,对规范数据进行逆规范。
8.一种用于对数据进行编码的方法,该方法包括如下步骤:
(a)利用预定量化比特对输入数据进行量化;
(b)通过对量化数据执行DPCM操作,生成差分数据;
(c)通过对在步骤(b)生成的差分数据执行熵编码,生成比特流;
(d)利用输入数据和量化数据调节在量化数据中的最大和最小值,从而使化量误差最小;以及
(e)对将被包括在比特流中的经调节的最大和最小值进行编码,
其中,步骤(d)包括如下步骤:
(d1)通过利用输入数据和量化数据计算输入数据的最小值和量化误差的的数字数,设置最小误差值emin的初始值,并且设置经过调节的最小值min’和量化误差最小值minmin的初始值;
(d2)通过对经过调节的最小值min’执行预定操作,更新经过调节的最小值min’;
(d3)根据经过更新和调节的最小值的数字数和大小,将量化误差最小值minmin确定为将被用于逆量化的最小值;以及
(d4)如果在步骤(d3)中,还没有将量化误差最小值minmin确定为将被用于逆量化的最小值,则根据经过更新和调节的最小值,计算量化误差值,并且将经过调节的最小值更新为量化误差最小值minmin,将计算的量化误差更新为最小误差值,如果所计算的量化误差值小于最小误差值emin,则移动到步骤(d2)。
9.如权利要求8所述的方法,其中,在步骤(d1)中,根据用预定常数除预定量化步长的结果和输入数据当中的最小值,设置经过调节的最小值的初始值。
10.如权利要求8所述的方法,其中,在步骤(d3)中,通过将经过调节的最小值的数字数与输入数据的数字数进行比较,并且将输入的经过调节的最小值与输入数据当中的最小值的值进行比较,将当前量化误差最小值确定为将被用于逆量化的最小值。
11.一种用于对数据进行编码的方法,该方法对具有多个分量的数据进行编码,所述方法包括:
(a)计算分量的数据范围中的最大范围并根据该最大范围对每个分量的数据进行规范;
(b)利用预定量化比特对规范数据进行量化;
(c)通过对量化数据执行DPCM操作,生成差分数据;以及
(d)通过对差分数据执行熵编码,生成将数据编码进其中的比特流,
其中,步骤(a)包括如下步骤:
(a1)计算每个分量的数据当中的最大和最小值;
(a2)利用最大和最小值计算分量的数据范围和分量的数据范围中的最大范围;以及
(a3)根据最大范围对每个分量的数据进行规范。
12.一种对数据进行译码的方法,该方法用于对将具有多个分量的数据编码进其中的比特流进行译码,所述方法包括如下步骤:
(a)通过对输入的比特流执行熵编码,生成差分数据;
(b)通过对差分数据执行逆DPCM操作,生成量化数据;
(c)通过对量化数据进行逆量化,生成规范数据;以及
(d)利用从比特流中译码的,每个分量数据当中的最小值和具有最大范围的分量的最大值,获得规范数据的最大范围,并且根据该最大范围对规范数据进行逆规范,
其中,步骤(b)包括:
识别对输入差分数据执行了哪种DPCM;
根据识别的结果确定要对输入差分数据执行哪种逆DPCM;
对输入差分数据执行逆循环量化;
根据所确定的要执行的逆DPCM的种类,执行逆循环DPCM或逆预测循环DPCM;以及
输出逆DPCM的结果。
13.如权利要求12所述的方法,其中,在步骤(d)中,使用所述最大范围和规范数据所属分量的最小值逆规范规范的数据。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US33313001P | 2001-11-27 | 2001-11-27 | |
US60/333,130 | 2001-11-27 | ||
US60/334,541 | 2001-12-03 | ||
US60/342,101 | 2001-12-26 | ||
US60/369,597 | 2002-04-04 | ||
KR67679/02 | 2002-11-02 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021542945A Division CN100459460C (zh) | 2001-11-27 | 2002-11-27 | 对数据进行编码和译码的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1741392A CN1741392A (zh) | 2006-03-01 |
CN100530977C true CN100530977C (zh) | 2009-08-19 |
Family
ID=36076905
Family Applications (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610094359 Expired - Fee Related CN100581253C (zh) | 2001-11-27 | 2002-11-27 | 用于解码比特流的装置和方法 |
CN 200610094358 Expired - Fee Related CN1878311B (zh) | 2001-11-27 | 2002-11-27 | 用于编码和解码比特流和并列内插器的装置和方法 |
CNB2005100916428A Expired - Fee Related CN100350433C (zh) | 2001-11-27 | 2002-11-27 | 计算路径误差的方法和提取路径断点的方法 |
CN 200610168615 Expired - Fee Related CN100546386C (zh) | 2001-11-27 | 2002-11-27 | 编码和解码坐标内插符的关键值数据的方法和装置 |
CN 200710084973 Expired - Fee Related CN101009837B (zh) | 2001-11-27 | 2002-11-27 | 将位置内插器编码到比特流中的方法 |
CN 200610075350 Expired - Fee Related CN1856105B (zh) | 2001-11-27 | 2002-11-27 | 用于对定向内插器进行编码和译码的方法和装置 |
CN 200510092099 Expired - Fee Related CN100530977C (zh) | 2001-11-27 | 2002-11-27 | 对数据进行编码和译码的方法和装置 |
CN200610110089.2A Expired - Fee Related CN1941910B (zh) | 2001-11-27 | 2002-11-27 | 编码坐标内插符、解码比特数据流的装置及方法 |
Family Applications Before (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610094359 Expired - Fee Related CN100581253C (zh) | 2001-11-27 | 2002-11-27 | 用于解码比特流的装置和方法 |
CN 200610094358 Expired - Fee Related CN1878311B (zh) | 2001-11-27 | 2002-11-27 | 用于编码和解码比特流和并列内插器的装置和方法 |
CNB2005100916428A Expired - Fee Related CN100350433C (zh) | 2001-11-27 | 2002-11-27 | 计算路径误差的方法和提取路径断点的方法 |
CN 200610168615 Expired - Fee Related CN100546386C (zh) | 2001-11-27 | 2002-11-27 | 编码和解码坐标内插符的关键值数据的方法和装置 |
CN 200710084973 Expired - Fee Related CN101009837B (zh) | 2001-11-27 | 2002-11-27 | 将位置内插器编码到比特流中的方法 |
CN 200610075350 Expired - Fee Related CN1856105B (zh) | 2001-11-27 | 2002-11-27 | 用于对定向内插器进行编码和译码的方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610110089.2A Expired - Fee Related CN1941910B (zh) | 2001-11-27 | 2002-11-27 | 编码坐标内插符、解码比特数据流的装置及方法 |
Country Status (2)
Country | Link |
---|---|
CN (8) | CN100581253C (zh) |
ES (1) | ES2360786T3 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4835554B2 (ja) * | 2007-09-06 | 2011-12-14 | ソニー株式会社 | 符号化装置及び方法、復号装置及び方法、並びにプログラム |
KR20120052739A (ko) | 2010-11-16 | 2012-05-24 | 삼성전자주식회사 | 디스플레이 구동 장치 및 그것의 영상 데이터 압축 및 복원 방법 |
KR20130049523A (ko) * | 2011-11-04 | 2013-05-14 | 오수미 | 인트라 예측 블록 생성 장치 |
FR2982446A1 (fr) | 2011-11-07 | 2013-05-10 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
FR2982447A1 (fr) | 2011-11-07 | 2013-05-10 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
CN103517022B (zh) * | 2012-06-29 | 2017-06-20 | 华为技术有限公司 | 一种图像数据压缩和解压缩方法、装置 |
EP3847814A4 (en) * | 2018-11-06 | 2021-07-14 | Beijing Bytedance Network Technology Co. Ltd. | POSITION DEPENDENT STORAGE, MOVEMENT INFORMATION |
CN117714685A (zh) * | 2019-06-18 | 2024-03-15 | Lg 电子株式会社 | 图像解码方法和装置 |
CN111272280B (zh) * | 2020-02-25 | 2020-12-15 | 电子科技大学 | 利用逆卷积提高光谱仪系统分辨率的方法 |
CN112965462B (zh) * | 2021-02-07 | 2022-08-16 | 深圳市千与诺科技有限责任公司 | 工艺系统的信号发生方法、系统、介质和设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4230728A1 (de) * | 1992-09-14 | 1994-03-17 | Philips Patentverwaltung | Adaptiver DPCM-Kodierer |
CN1052608C (zh) * | 1993-07-24 | 2000-05-17 | 电子科技大学 | 一种数字式高清晰度电视传输方法 |
JP3649469B2 (ja) * | 1995-05-12 | 2005-05-18 | 株式会社ソニー・コンピュータエンタテインメント | アニメーションデータの作成方法および作成装置 |
KR100212552B1 (ko) * | 1996-12-23 | 1999-08-02 | 전주범 | 이산적 사인 변환을 이용한 윤곽선 영상 신호 부호화 방법 및 그 장치 |
FR2765984B1 (fr) * | 1997-07-11 | 1999-10-22 | France Telecom | Signal de donnees d'animation d'une scene graphique a objet de quantification, procede et dispositif correspondants |
US6075901A (en) * | 1998-12-04 | 2000-06-13 | France Telecom | Method and system for predictive encoding of arrays of data |
WO2001006794A1 (en) * | 1999-07-20 | 2001-01-25 | Koninklijke Philips Electronics N.V. | Encoding method for the compression of a video sequence |
KR100608454B1 (ko) * | 1999-10-19 | 2006-08-02 | 삼성전자주식회사 | 키프레임을 이용한 동화상 기록 및/또는 재생장치 |
US6693645B2 (en) * | 1999-12-01 | 2004-02-17 | Ivast, Inc. | Optimized BIFS encoder |
EP1134702A3 (en) * | 2000-03-14 | 2003-10-29 | Samsung Electronics Co., Ltd. | Method for processing nodes in 3D scene and apparatus thereof |
-
2002
- 2002-11-27 CN CN 200610094359 patent/CN100581253C/zh not_active Expired - Fee Related
- 2002-11-27 CN CN 200610094358 patent/CN1878311B/zh not_active Expired - Fee Related
- 2002-11-27 CN CNB2005100916428A patent/CN100350433C/zh not_active Expired - Fee Related
- 2002-11-27 CN CN 200610168615 patent/CN100546386C/zh not_active Expired - Fee Related
- 2002-11-27 ES ES02258174T patent/ES2360786T3/es not_active Expired - Lifetime
- 2002-11-27 CN CN 200710084973 patent/CN101009837B/zh not_active Expired - Fee Related
- 2002-11-27 CN CN 200610075350 patent/CN1856105B/zh not_active Expired - Fee Related
- 2002-11-27 CN CN 200510092099 patent/CN100530977C/zh not_active Expired - Fee Related
- 2002-11-27 CN CN200610110089.2A patent/CN1941910B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
ES2360786T3 (es) | 2011-06-09 |
CN1878311B (zh) | 2013-04-03 |
CN1976473A (zh) | 2007-06-06 |
CN1878311A (zh) | 2006-12-13 |
CN100581253C (zh) | 2010-01-13 |
CN100350433C (zh) | 2007-11-21 |
CN1878312A (zh) | 2006-12-13 |
CN1941910B (zh) | 2015-03-11 |
CN1734502A (zh) | 2006-02-15 |
CN101009837B (zh) | 2011-04-27 |
CN1741392A (zh) | 2006-03-01 |
CN1941910A (zh) | 2007-04-04 |
CN1856105A (zh) | 2006-11-01 |
CN100546386C (zh) | 2009-09-30 |
CN1856105B (zh) | 2011-08-24 |
CN101009837A (zh) | 2007-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7336713B2 (en) | Method and apparatus for encoding and decoding data | |
KR100543697B1 (ko) | 데이터 부호화/복호화 방법 및 장치 | |
US7746249B2 (en) | Method and apparatus for encoding and decoding key data | |
US6744817B2 (en) | Motion predictive arbitrary visual object encoding and decoding system | |
CN100530977C (zh) | 对数据进行编码和译码的方法和装置 | |
JP4070783B2 (ja) | データ符号化方法、並びに装置 | |
JP3521411B2 (ja) | オリエンテーション補間ノード情報の符号化装置および方法 | |
EP1565000B1 (en) | Method and apparatus for encoding and decoding data | |
EP1322118B1 (en) | Method and apparatus for encoding and decoding key data | |
JP4555271B2 (ja) | 位置インタポレータの符号化/複合化方法、及び装置 | |
CN117692662A (zh) | 一种基于双八叉树结构的点云编码及解码方法 | |
EP1750447A2 (en) | Method and apparatus for encoding and decoding key data | |
KR20230026422A (ko) | 정수값의 시퀀스를 인코딩 및 디코딩하는 장치, 정수값의 시퀀스를 인코딩 및 디코딩하는 방법 및 이러한 방법을 구현하기 위한 컴퓨터 프로그램 | |
Shih | Asymptotic quantization: A method for determining zador’s constant | |
JPH089165A (ja) | 2値画像符号化装置及び2値画像復号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090819 Termination date: 20151127 |