用于对定向内插器进行编码和译码的方法和装置的利记博彩app

文档序号:7521980阅读:271来源:国知局
专利名称:用于对定向内插器进行编码和译码的方法和装置的利记博彩app
技术领域
本发明涉及一种用于编码和译码三维动画数据的方法和装置,更准确地说,涉及一种用于对定向内插器进行编码和译码的方法和装置,该定向内插器表示有关动画中的对象的旋转的信息。
背景技术
MPEG-4BIFS,是国际多媒体标准之一,利用具有动画地关键字和关键字值的内插器节点支持一种基于关键帧的动画。
为尽可能自然和平滑地使用这样一种基于关键帧动画技术来表示动画,要求相当多的关键字和相当多的关键字值数据,并且关键帧间的现场数据是由内插器填充的。在虚拟现实造型语言(VRML)中的内插器包含线性或球性内插。
在时间轴上关键字和关键字值近似原始的动画曲线。图1是根据在三维球性的表面上的时间推移由定向内插器节点所表示的动画数据的二维轨迹的图。如图1所示,常规的MPEG-4BIFS支持关键帧间的球性线性内插器,并且动画路径看起来与表示该动画数据的变化的一组片段类似。
在由BIFS提供的定向内插器节点中,关键字数据使用-8和8间的间断数字表示在动画所处的时间轴上的预定时间瞬间。关键字值数据表示在由关键字数据所表示的预定的时间瞬间在合成图像中有关该对象的旋转的信息。在不是由关键字数据所表示的在另一预定时间瞬间上的对象的旋转信息是通过球性线形内插来利用与两个时间瞬间相对应的、与预定时间瞬间最邻近的关键字数据而获得的。
在球性线性内插器中,由旋转轴和旋转角来表示旋转信息。象虚拟现实造型语言(VRML)一样,MPEG4-BIFS利用定向内插器节点来支持由旋转轴和旋转角所表示的旋转信息。当利用在球性线性内插器中的关键字值数据来生成平滑动画时,关键帧间的关键字值数据的微分值彼此非常相关,这导致了数据间的冗余。因此,使用数据的微分值来编码关键字值数据的一种方法是很有效的。
MPEG-4 BIFS提供用于编码由定向内插器节点的关键字和关键字值数据所表示的现场数据的两种不同的方法。一种是利用脉码调制(PCM)来编码现场数据的方法,另一种是利用差分脉码调制(DPCM)和熵编码来编码现场数据的方法。
在利用PCM来编码现场数据的方法中,仅在将被编码的关键字数据和关键字值数据上执行量化处理。由于将被编码的数据的特征在本方法中不被考虑,该方法被认为无效。在利用PCM来编码现场数据的方法中,输入定向内插器节点的现场数据,并且现场数据的关键字值数据被变换成在四元数空间中的值。接着,量化关键字和关键字值数据。量化的现场数据以二进制数据的形式被输出。为测量与原始现场数据相比四元数变换的结果可视失真的程度,二进制数据被复原成由旋转轴和旋转角组成的关键字值数据。存储并在屏幕上输出定向内插器节点的复原后的现场数据。利用复原后的数据测量由四元数误差所引起的图像的可视失真的程度是可能的。图像的失真可用以下等式(1)来计算。
在等式(1)中,N表示现场数据的数量,以及εi表示在一四元数时间中复原编码关键字值数据Qi以及关键字值数据
间的一差分值。
另一方面,在用于使用DPCM和熵编码来编码现场数据的方法中,连续数据间的一关联被考虑,因此在编码效率方面,这种方法被认为比利用PCM来编码现场数据的方法更有效。在这种方法中,在将被编码的先前复原关键字值和关键字值数据间的一差分值在一量化处理前被计算,然后量化该差分值,从而通过利用在该差分值中所示的数据的特性提高编码效率。
图2A和2B分别是利用线性DPCM和熵编码的一MPEG-4PMFC以及利用线性衰减DPCM和熵编码的一MPEG-4PMFC译码器的框图。在图2A中所示的一线性DPCM运算符用以下等式(2)来计算当前关键字值数据和先前复原关键字值数据间的差分数据
在等式(2)中,Qi表示在一预定时间瞬间(t)的原始关键字值数据,其是由一四元数来表示,以及
表示在一预定时间瞬间(t-1)的关键字值数据,其是从一误差补偿电路复原。
然而,在图2A中所示的在用于编码关键字值数据的装置中执行的编码方法没有一高的编码效率。通过分析关键字值数据很容易指出该编码方法的缺点是什幺是可能的,其确定在一四元数时间中一对象的旋转。关键字值数据由以下等式中的一四元数来表示。
例如,当一个四元数的分量具有相同的绝对值以作为在一四元数时间中不同标记的另一四元数的它们的相应的分量,如等式(3)中所示时,两个四元数被认为是相同的。换句话说,这两个四元数在一3D时间的一对象的旋转变换方面提供相同的效果,这表示影响一对象的旋转变换的因素是一旋转轴的一方向以及一旋转角,而不是该旋转轴的矢量。然而,象在MPEG4BIFS中,如果关键字值数据由使用等式(3)的一四元数表示以及一差分值通过计算连续关键字值数据间的矢量中的差值被线性计算,该差分值不为0,这表示线性差分值没有很好地反映在旋转变换中的冗余。因此,使用如等式(1)中所示用于测量图像的失真程度的方法精确地测量图像质量是不可能的。

发明内容
为解决上述和其它问题,本发明的一个方面是提供一种用于编码和译码一定向内插器的方法和装置,编码和译码由从一原始定向内插器抽取的断点组成的一抽取定向内插器以便防止抽取定向内插器与原始定向内插器间的一误差大于一允许误差极限,从而提供具有一高压缩比的高质量动画。
本发明的另一方面是提供一种用于编码和译码一定向内插器的方法和装置,通过计算一旋转差分比,能提供具有一高压缩比的高质量动画,能充分地反映在旋转变换中的冗余,并能使用该旋转差分值来编码一定向内插器的关键字值数据。
本发明的另一方面提出了一种由根据本发明的对一定向内插器进行编码和译码的方法和装置来编码和译码的一位流,这能提供具有一高压缩比的高质量的动画。
因此,为实现本发明的上述和其它目的,提供一种对一定向内插器进行编码的装置,该定向内插器包括用于表示在一时间轴上关键帧位置的关键字值以及用于表示一对象的旋转的关键字值数据。该装置包括一断点抽取器、一关键字数据编码器、一关键字值数据编码器。该断点抽取器从由输入到其中的一定向内插器所组成的第一动画路径中抽取一最少数的断点,这能产生不大于所述第一动画路径和由抽取断点所生成的一第二动画路径间的一预定误差极限的一误差。一关键字数据编码器,编码从断点抽取器输入的关键字数据。一关键字值数据编码器,编码从所述断点抽取器输入的关键字值数据。
最好,本发明进一步包括一重新采样器以及一选择器。该重新采样器将第一动画路径采样到具有一预定时间量间隔的多个预定部分中,并输出包括重新采样关键字数据以及重新采样关键字值数据的一定向内插器。该选择器响应一外部输入信号,将输入到其中的一定向内插器输出到该重新采样器以及该断点抽取器中。
为实现本发明的上述和其它目的,提供一种对一定向内插器进行编码的装置,该定向内插器包括用于表示在一时间轴上关键帧位置的关键字值以及用于表示一对象的旋转的关键字值数据。该装置包括一重新采样器、一关键字数据编码器、一关键字值数据编码器。该重新采样器将由一输入定向内插器组成的一动画路径采样到具有一预定时间量间隔的多个预定部分中并输出包括采样关键字数据和采样关键字值数据。该关键字数据编码器,编码从该重新采样器输入的关键字数据。该关键字值数据编码器,生成一旋转差分值,该差分值用来按几乎等于通过一当前关键帧的关键字值数据应用到该对象的旋转变换以及通过一前关键帧的关键字值数据应用到该对象的旋转变换间的一差值来旋转该对象,并因此编码从该重新采样器输入的关键字值数据。
最好,断点抽取器包括一线性内插器、一误差计算器、以及一确定单元。该线性内插器抽取一输入动画路径的一开始路径点以及一结束路径点,在开始和结束路径点间的选择路径点,以及利用所选择的路径点内插还没有被选择的其它路径点。该误差计算器,计算输入动画路径和由线性内插器利用内插所生成的一内插动画路径间的一误差。该确定单元抽取断点,通过该操作,能最小化输入动画路径与内插动画路径间的一误差,并输出选择的断点,如果相应误差小于一预定误差极限。
最好,关键字值编码器包括一旋转差分数据生成器以及一熵编码器。该旋转差分数据生成器利用一当前关键帧的一旋转变换值以及一前关键帧的一复原旋转变换值来生成一旋转差分值,该差分值被用来按几乎等于通过关键字值数据而应用到在该当前关键帧中的该对象的旋转变换以及通过关键字值数据而应用到前关键帧中的该对象的旋转变换间的一差值来旋转该对象,并通过量化该旋转差分值来输出旋转差分数据。该熵编码器,熵编码该旋转差分数据。
最好,旋转差分数据生成器包括一第一四元数乘法器,一量化器,一逆量化器,以及一第二四元数乘法器。该第一四元数乘法器利用该当前关键帧的旋转变换值以及前关键帧的复原旋转变换值来生成旋转差分值。该一量化器通过量化该旋转差分值来生成旋转差分数据。该逆量化器通过逆量化该旋转差分数据来生成一复原旋转差分值。该一第二四元数乘法器通过将复原旋转差分值四元数乘以前关键帧的一旋转变换值来生成当前关键帧的一复原旋转变换值。
最好,关键字数据编码器包括一第一量化器,一第一DPCM处理器,一DND处理器,以及一第一熵编码器。该第一量化器利用预定量化位来量化一定向内插器的关键字数据。该第一DPCM处理器,生成量化关键字数据的差分数据。该DND处理器,根据差分数据与一最大值的关系以及它们间一最小值在该差分数据上执行一DND操作。该第一熵编码器,熵编码从DND处理器输入的有效期分数据。
为实现本发明的上述和其它目的,提供一种用于对一位流进行译码的装置,将包括用于表示在一时间轴上关键帧的位置的关键字数据以及用于表示一对象的旋转的关键字值数据的一定向内插器进行编码。该装置包括一关键字数据译码器,一关键字值数据译码器,一定向内插器合成器。该关键字数据译码器译码来自一输入位流的关键字数据。该关键字值数据译码器,译码来自该输入位流的关键字值数据。该定向内插器合成器,通过合成译码关键字值数据和利用该译码关键字值数据球性线性内插的关键字值数据来生成一定向内插器。
最好,关键字值数据译码器包括一熵译码器,一逆循环DPCM运算符,一逆量化器,以及一四元数乘法器。该熵译码器通过熵译码来自该位流的关键字值数据来生成循环DPCM旋转差分数据或量化旋转差分数据。该逆循环DPCM运算符,通过在从该位流译码的DPCM的次数操作后在从熵译码器输入的旋转差分数据上执行一逆循环DPCM操作来生成量化旋转差分数据。该逆量化器,按几乎等于通过逆量化量化旋转差分数据的每个关键帧的四元数关键字值数据应用到该对象的旋转变换间的一差值来旋转该对象。该四元数乘法器,通过将当前关键帧的一旋转差分值四元数乘以一前关键帧的一复原旋转变换值来生成一当前关键帧的一旋转变换值。
为实现本发明的上述和其它目的,提供一种对包括用于表示在一时间轴上关键帧的位置的关键字数据和表示一对象的旋转的关键字值数据的一定向内插器进行编码的方法。该方法包括(b)通过从由该定向内插器组成的第一动画路径抽取一最少的断点来生成将被编码的关键字数据和关键字值数据,能产生小于第一动画路径和通过抽取断点生成的一第二动画间的一预定误差极限的一误差,(d)编码在步骤(b)中生成的关键字数据,以及(e)编码在步骤(b)中生成的关键字值数据。
最好,步骤(b)包括(b1)选择第一动画路径的一开始路径点和一结束路径点,(b2)依次选择开始和结束路径点间的路径点并利用所选择的路径点内插仍未被选择的其它路径点,(b3)计算第一动画路径与通过内插在步骤(b2)中生成的一第二动画路径间的一误差,以及(b4)选择断点,通过该操作第一动画路径和第二动画路径间的一误差能被最小化,核对相应的误差是否小于一预定误差极限,并确定将被编码的关键字数据和关键字值数据。
最好,用于编码一定向内插器的方法可进一步包括在步骤(b)之前的(a),通过将第一动画路径采样到具有一预定时间量间隔的多个预定部分中,生成包括重新采样关键字数据以及重新采样关键字值数据的一定向内插器,或可能进一步包括步骤(b)之后的(c),通过将利用抽取断点所构成的第二动画路径采样到具有一预定时间量间隔的多个预定部分中来生成将被编码的关键字数据和关键字值数据。
为实现本发明的上述和其它目的,提供一种对包括用于表示在一时间轴上关键帧的位置的关键字数据和表示一对象的旋转的关键字值数据的一定向内插器进行编码的方法。该方法包括(a)将由定向内插器所构成的一动画路径采样到具有一预定时间量间隔的多个预定部分中,并因此生成包括重新采样关键字数据和重新采样关键字值数据的一定向内插器,(d)减小在步骤(a)中采样的关键字数据的范围并编码关键字数据,以及(e)通过生成和编码一旋转差分值来编码在步骤(a)中采样的关键字值数据,该旋转差分值被用来按几乎等于通过一当前关键帧的关键字值数据而应用到该对象的旋转变换与通过一前关键帧的关键字值数据而应用到该对象的旋转变换间的一差值来旋转该对象。
最好,步骤(d)包括用一预定数据的量化位来量化关键字数据,通过在量化数据上执行一预定DPCM操作来生成差分数据,以及熵编码该差分数据。
最好,步骤(e)包括(e1)生成一旋转差分值,该差分值用来通过利用当前关键帧的一旋转变换值以及前关键帧的一复原旋转变换值按几乎等于通过当前和前关键帧的关键字值数据而应用到该对象的旋转变换间的一差值来旋转该对象并通过量化该旋转差分值来生成旋转差分数据,(e2)在该旋转差分数据上有选择地执行一线性DPCM或一循环DPCM操作,以及熵编码该旋转有效期分数据。
最好,步骤(e1)包括(e11)利用当前关键帧的一旋转变换值以及前关键帧的一复原旋转变换值生成旋转差分值,(e12)通过量化该旋转差分值来生成旋转差分数据,(e13)通过逆量化旋转差分数据来生成一复原旋转差分值,以及(e14)通过将复原旋转差分值四元数乘以前关键帧的一复原旋转变换值来生成当前关键帧的一复原旋转变换值。
为实现本发明的上述和其它目的,提供对一位流进行译码的方法,将包括有用于表示在一时间轴上关键帧的位置的关键字数据和用于表示一对象的旋转的关键字值数据的一定向内插器编码成该位流。本发明包括(a)译码来自一输入位流的关键字数据,(b)译码来自该输入位流的关键字值数据,以及(c)通过合成译码关键字值数据以及利用该译码关键字值数据球性线性内插的关键字值数据来生成一定向内插器。
最好,在步骤(c)中,如果不对与关键字数据相对应的关键字值进行译码,该关键字数据当前附属于定向内插器合成,与关键字数据相对应的关键字值数据利用与当前合成关键字数据相对应的译码关键字值数据和与下一个将被合成的关键字数据相对应的译码关键字值数据被合成。
最好,步骤(a)包括通过熵译码该输入位流来生成差分数据以及通过在差分数据上执行一预定的DPCM操作或一逆DND操作来生成量化关键字数据以及通过逆量化量化关键字值数据来生成复原关键字数据。
最好,步骤(b)包括(b1)通过熵译码来自该位流的关键字值数据来生成循环DPCM旋转差分数据或量化旋转差分数据,(b2)通过在从该位流译码的DPCM次数操作后在熵编码旋转差分数据上执行一逆循环DPCM操作来生成旋转差分数据,(b3)生成一旋转差分值,该差分值被用来按几乎等于通过逆量化旋转差分数据的每个关键帧的四元数关键字值数据而应用到该对象的旋转变换间的一差值来旋转该对象,以及(b4)通过将当前关键帧的一旋转差分值四元数乘以一前关键帧的一译码旋转变换值来生成一当前关键帧的一旋转变换值。
为实现本发明的上述和其它目的,提供一位流,将包括有用于表示在一时间轴上关键帧的位置的关键字数据和用于表示一对象的旋转的关键字值数据的一定向内插器编码成该位流。该位流包括关键字数据编码/译码信息以及关键字值数据编码/译码信息。将该关键字数据编码/译码信息编码成关键字数据和译码该关键字数据所必须的信息。将关键字值数据编码/译码信息编码成关键字值数据以及译码该关键字值数据所必须的信息被编码。在这里,关键字数据编码/译码信息包括逆DND操作信息,第一逆DPCM操作信息,第一逆量化信息。该逆DND操作信息包括表示将在通过熵译码该位流所生成的差分数据上执行的逆DND的多个预定周期的逆DND的次数以便扩展该差分数据的范围以及在每个逆DND操作周期中所使用的差分数据的最大和最小值。第一逆DPCM操作信息包括将在逆DND差分数据上执行的逆DPCM操作操作的次数以便将逆DND差分数据转换成每个逆DPCM操作周期的已量化关键字数据以及内部关键字数据。第一逆量化信息用在逆量化中以通过逆量化已量化关键字数据来生成复原关键字数据。关键字值数据译码/编码信息包括由量化用于通过几乎等于通过每个关键帧的四元数关键字值数据而应用到该对象的旋转变换间的一差值来旋转该对象的一旋转差分数据熵编码的旋转差分数据,熵译码信息包括表示将在旋转差分数据上执行的一熵译码方法的一熵译码模式,逆循环DPCM操作信息包括逆循环DPCM操作的次数,其表示是否将在熵译码旋转差分数据上用熵译码模式执行一逆循环DPCM操作,以及第二逆量化信息包括多个预定逆量化位,用来通过逆量化量化关键字值数据来复原原始关键字值数据。
最好,关键字数据编码/译码信息进一步包括线性关键字译码信息,用于对包括在该位流中的一线性关键字部分进行译码,并且该线性关键字译码信息包括一特征位,该特征位表示是否存在线性关键字区域,包含在该线性关键字部分中的关键字数据的数量以及线性关键字部分的开始和结束关键字数据。上述区域中的关键字数据线性的增加到关键字数据中。


本发明的上述目的和优点将通过参考附图详细地描述其优选实施例变得清楚,其中
图1是根据一三维球面上的时间推移,描述由一定向内插器节点表示的动画数据的二维轨迹图2A和2B分别是使用线性DPCM和熵编码的一MPEG-4PMFC编码器以及使用线性衰减DPCM和熵译码的一MPEG-4PMFC的框图3A是根据本发明的一优选实施例,一种用于编码一定向内插器的装置的框图,以及图3B是根据本发明的一优选实施例,一种用于编码一定向内插器的方法的流程图4A至4C是根据本发明的优选实施例,一分析器的例子的框图5A是如图3B所示的一步骤S320的流程图5B是根据本发明的一优选实施例,一重新采样方法的流程图5C是根据本发明的一优选实施例,抽取断点的一方法的一流程图6A是描述原始关键字数据以及重新采样关键字数据的图以及图6B是描述一原始动画路径以及一重新采样动画路径的图。
图7A至7F是根据本发明的一优选实施例,描述抽取断点的一方法的一例子的图8是描述在一断点生成模式中从一断点抽取器输出的关键字数据和关键字值数据的图9A是根据本发明的一优选实施例,一关键字数据编码器的框图9B是如图9A所示的一DND处理器的框图10A至10E是根据本发明的一优选实施例,编码关键字数据的一方法的流程图11是描述一函数encodeSignedAAC的例子的图12A至12J是根据本发明的一优选实施例,描述在执行编码关键字数据的不同步骤后获得的关键字数据的图13A是根据本发明的一第一实施例,一关键字值数据编码器的框图,以及图13B是根据本发明的一第一实施例,编码关键字值数据的一方法的流程图14A是描述在一旋转差分值的每个分量中的一概率分布函数(PDF)的典型例子的图14B是用于非线性量化的反正切曲线;
图15A是根据本发明的一优选实施例,从包括在一关键字值数据译码器中的一量化器输出的旋转差分数据的例子;图15B是描述在如图15A所示的差分数据上执行一线性DPCM操作的结果的图;以及图15C是描述在如图15B所示的线性DPCM差分数据上执行一循环DPCM操作的结果的图16是描述用于熵编码的一函数UnaryAAC()的一个例子的图17是描述在使用一旋转差分值来编码四元数旋转变换值期间产生的一旋转方向误差的图18A是根据本发明的第二实施例,一关键字值数据编码器的一旋转DPCM运算符的框图,以及图18B是如图18A所示的一旋转方向误差计算器的框图19A是根据本发明的第二实施例,一旋转DPCM操作的流程图;图19B是描述如图9A是所示的一旋转方向误差计算器、一旋转方向误差检测器、以及一旋转方向校正器的操作的流程图20A是根据本发明的第三实施例的一关键字值数据编码器的一量化器的框图,以及图20B是根据本发明的第三实施例的一量化器的操作的流程图21A是根据本发明的一优选实施例的用于译码一定向内插器的装置的框图,以及图21B是根据本发明的一优选实施例,一种用于译码一定向内插器的方法的流程图22是根据本发明的一优选实施例的一关键字数据译码器的框图23A和23B是根据本发明的一优选实施例的译码关键字数据的一种方法的流程图24A是根据本发明的一优选实施例的一关键字值数据译码器的框图,以及图24B是根据本发明的一优选实施例的译码关键字值数据的方法的流程图25是根据本发明的一优选实施例,描述输入到一关键字值数据译码器的一熵译码器的一位流的结构的图26是根据本发明的一优选实施例,合成一定向内插器的关键字数据和关键字值数据的方法的流程图27是描述计算将被编码的一定向内插器以及一译码定向内插器间的一误差的方法的例子的图28是用于将根据本发明用于编码一定向内插器的方法的性能与用于编码一定向内插器的常规方法的性能相比的图29A至29J是SDL语言程序代码,通过该代码,根据本发明的一优选实施例,用于译码一定向内插器的装置,实现译码关键字数据和关键字值数据。
具体实施例方式
根据本发明的一优选实施例,将参考附图来更详细地描述一种用于编码一定向内插器的方法和装置。
图3A根据本发明的一优选实施例给出了一种用于编码一定向内插器的装置的框图。参考图3A,用于编码一定向内插器的装置包括一分析器40、一关键字值编码器200、一关键字值数据编码器300以及一标题编码器400。
图3B根据本发明的一优选实施例给出了用于编码一定向内插器的方法的流程图。参考图3B,在步骤S300中将将被编码的一定向内插器输出到分析器40中。在步骤S320中,分析器40从由定向内插器的x,y,z及θ(旋转角)分量的关键字值数据组成的一第一动画路径抽取将被编码的关键字数据和关键字值数据,将抽取关键字数据输出关键字数据编码器200,并将抽取关键字值数据输出到关键字值数据编码器300。
关键字数据编码器200利用多个预定已量化位来量化从分析器40所输入的关键字数据,通过在已量化关键字数据上执行一预定DPCM操作来生成差分数据以及在步骤S340中熵编码该差分数据。
关键字值数据编码器300使用多个预定已量化位来量化从分析器40所输入的关键字值数据,通过在量化数据上执行一预定DPCM操作来生成差分数据以及在步骤S360中编码该差分数据。
标题编码器400从关键字数据编码器200和关键字值数据编码器300接收译码关键字数据和关键字值数据所必须的信息并在步骤S380中编码该信息。
在下文中,将参考附图更详细地描述分析器40、关键字数据编码器200以及关键字值数据编码器300的结构和操作。
图4A根据本发明的第一实施例给出了分析器40的一个例子的框图。即使使用分析器40在关键字值数据的所有分量(x,y,z及θ)上可执行抽取将被编码的关键字数据和关键字值数据的处理,该处理将在下面的图中,为了方便说明仅考虑关键字值数据(定向内插器)的分量中的一个。
参考图4A,根据本发明的第一实施例,该分析器包括一重新采样器43、一断点抽取器42和一选择器41。重新采用器基于一输入定向内插器,将一第一动画路径采样成具有一预定时间量的间隔的多个部分并将所采样的动画路径输出到一关键字编码器200、一关键字值编码器300、以及一标题编码器400中。该断点抽取器42抽取一最小量的断点,通过该操作,第一动画路径与基于从第一动画路径抽取的断点生成的一第二动画路径间的一误差能防止超过一预定误差极限,并将抽取断点输出到关键字数据编码器200、关键字值数据编码器300以及标题编码器400中。该选择器41响应一外部输入信号,将输入定向内插器输出到重新采样器43或断点抽取器42中。断点抽取器42包括一线性内插器42a、一误差计算器42b以及一确定单元42c。
图5A根据本发明第一实施例给出了分析器40的操作流程图。参考图5A,选择器41在步骤S325从外部接收一定向内插器以及一设定信号。该设定信号包括用来确定将被编码的关键字数据和关键字值数据的方法的一生成方法设置信息以及用来确定用于生成将被译码的关键字数据和关键字值数据的模式的一生成模式设置信息。
首先在下面的段路中描述用于生成关键字数据和关键字值数据的模式。
分析器40通过减小输入到其中的一定向内插器的关键帧的数量来降低将被编码的关键字数据和关键字值数据量。根据从外面输入其中的一模式设定信号,假定分析器40具有一动画路径保存模式或一动画关键字保存模式。
在一动画路径保存模式中,一定向内插器仅被用来描述一动画路径的内插,且不必随机存取关键帧。为有效编码在动画路径保存模式中的一定向内插器,可移除在一预定误差范围内与一动画路径共存的一定向内插器的关键字数据和与该关键字数据相对应的关键字值数据。
另一方面,在一动画关键字保存模式中,使用MPEG-4BIFS命令,如’replace’,’delete’或‘insert’随机存取关键帧是必要的。在动画关键字保存模式中,不能改变一定向内插器的关键字数据的数量。下面将更详细地描述动画路径保存模式以及动画关键字保存模式。
再参考图5A,选择器41在从外面输入一生成模式后,选择用于生成将被编码的关键字数据和关键字值数据的模式。在步骤S330中,选择器41将输入定向内插器输出到断点抽取器42中,如果输入生成模式是一动画关键字保存模式。如果输入模式是一动画路径保存模式,向应从外面输入的一生成方法设定信号,选择器41在步骤S330中将输入定向内插器连同生成关键字数据和关键字值数据所必需的信息输出到重新采样器43或断点抽取器42中。
特别地,在通过重新采样生成将被编码的关键字数据和关键字值数据的情况下,选择器41将关键字数据的数量(即时间间隔)和一生成模式连同定向内插器输出到该重新采样器43中。在通过抽取断点生成将被编码的关键字数据和关键字值数据的情况下,选择器41将在一原始动画路径和通过抽取断点生成的一路径间的一临界误差以及该生成模式输出到断点抽取器42。
在步骤S335中,重新采样器43在多个预定时间间隔通过采样由从选择器41输入的定向内插器生成的一动画路径生成的采样关键字数据和采样关键字值数据,以及断点抽取器42抽取一最少断点,通过该操作,能防止由输入定向内插器生成的一动画路径和由抽取断点生成的一动画路径间的一误差超过一预定误差极限。
图5B根据本发明的一优选实施例给出了重新采样器43的操作流程图。参考图5B,重新采样器43在步骤S502中从选择器41接收将被重新采样的一定向内插器和关键字数据的数量(m)。将被重新采样的关键字数据的数量(m)可由一用户任意设置或预先被设置为一预定值上。
在步骤S504中,重新采样器43选择由输入定向内插器生成的一原始动画路径的一第一路径点和一最终路径点并将将被重新采样的该关键字数据的初始值(i)设置为1。
此后,在步骤S506,重新采样器43在多个预定时间的一间隔上生成第I个关键字数据。
图6A是描述原始关键字数据和重新采样关键字数据的图。由于该输入定向内插器的关键字数据表示在一时间轴上关键帧的位置,如图6A所示,关键字数据单调地增加,而该关键字数据中的间隔却没有规律。
因此,如图6A所示,重新采样器43通过按将被重新采样的关键字数据的数量来划分分别表示在步骤S504中选择的第一路径点和最终路径点的关键字数据间的一差值来获得多个预定时间的一间隔并因此在多个预定时间的间隔上重新采样将被重新采样的关键字数据。
在步骤S508中,重新采样器43通过使用原始动画路径按线性内插器重新采样生成的与该关键字数据相对应的关键字值数据。换句话说,与重新采样关键字数据相对应的关键字值数据使用正好在重新采样关键字数据后与关键字数据相对应的关键字值数据以及正好在重新采样关键字数据前与关键字数据相对应的关键字值数据被线性内插。
此后,在步骤S510中,重新采样器43验证是否已经在所有将被重新采样的关键字数据上执行重新采样处理并重复执行步骤S506和S508直到重新采样所有关键字数据以及他们相应的关键字值数据。
图5C根据本发明的第一实施例给出了一种抽取断点的方法流程图,图7A至7F根据本发明的一优选实施例给出了从一定向内插器抽取断点的每个步骤的框图。
参考图4A,5C以及7A至7F,断点抽取器42的线性内插器42a在步骤S520从选择器41接收一定向内插器和一临界误差eth。由输入定向内插器所构成的一动画路径如图7A所示。
在步骤S522中,线性内插器42a抽取由输入定向内插器所组成的动画路径的第一路径点Q0以及最终路径点Qn,如图7A所示,并将一计数器(i)设置为1。
在步骤S524中,线性内插器42a在第一Q0和最终路径点Qn间依次地任意或顺序选择路径点。接着,在步骤S526中,线性内插器42a利用所选择的路径点线性地内插还未被选择的路径点并将所选择的路径点和内插路径点输出到误差计算器42b中。
在步骤S528中,误差计算器42b计算原始动画路径和由选择路径点和内插路径点所构成的一候选动画路径间的一误差(e)并将该误差(e)输出到确定单元42c中。下面将描述计算误差(e)的方法。
误差计算器42b核对在未被线性内插器42a所选择的路径点中,是否仍然存在当计算误差(e)时未被考虑的路径点。如果有当计算误差(e)时未被考虑的路径点,误差计算器42b通过重复执行步骤S524至S528在步骤S530中计算路径点与原始动画路径间的一误差。
图7C是描述步骤S524至S530的图。参考图7C,线性内插器42a抽取与在预定时间瞬间k1的关键字数据相对应的一断点Q1并通过线性内插第一路径点Q0和断点Q1间的路径点来生成一第一候选动画路径。误差计算器42b计算原始动画路径与第一候选动画路径间的一误差e1。此后,用相同的方式,线性内插器选择另一断点Qk并通过线性内插在第一路径点Q0与断点Qk间和断点Qk和最终路径点Qn间的路径点来生成第k个候选动画路径。误差计算器42b计算原始动画路径与第k个候选动画路径间的一误差(ek)。
如果步骤S524至S530已经在未被线性内插器42a选择的所有路径点上执行过,原始动画路径和在步骤S524至S530生成的每个候选动画路径间的误差被输出到确定单元42c。然后,在步骤S532中,确定单元42c选择形成具有最小误差和原始动画路径的一候选动画路径的一断点,并将计数器(i)值加1。
在步骤S534中,确定单元42c核对原始动画路径和由抽取断点构成的候选动画路径间的一误差(e)是否大于临界误差eth以及计数器(i)的值是否大于关键字数据的数量(n)即第一路径点Q0与最终路径点Qn的路径点的数量。
如果误差(e)小于临界误差eth,它表示已经抽取要求编码的所有断点。如果最终选择作为将被编码的断点的数量等于“n”,表示完成抽取所有路径点的断点的处理。
然而,如果抽取断点的数量小于n以及误差(e)大于临界误差eth,这表示还存在将被抽取的断点,将所选择的断点输出到线性内插器42a,然后再执行步骤S524至S532。
在下文中,在下面的段路中将描述当生成模式是一动画路径保存模式时,假定从重新采样器43和断点抽取器42输出到关键字值数据译码器的数据。
重新采样器43将采样的关键字数据和采样的关键字值数据分别输出到关键字数据编码器200和关键字值数据编码器300中分别作为将被编码的关键字数据和关键字值数据。
在下文中,将参考图8来描述根据一生成模式从断点抽取器42输出的关键字数据和关键字值数据。
如图8所示,假定最终抽取断点被称为0,3,6和8,与断点0,3,6和8相对应的关键字数据和关键字值数据连同一关键字选择特征位被输出,如下表如示。
表2
上面已经根据本发明的第一实施例描述过分析器40的结构。然而,对本领域的技术人员来说,分析器40可仅由断点抽取器42而没有选择器41和重新采样器43或仅由重新采样器43而没有选择器41和断点抽取器42组成。
在下文中,将根据本发明的第二实施例来描述分析器40的另一例子。
参考图4B,根据本发明第二实施例的分析器40包括一重新采样器45以及一断点抽取器46。该重新采样器45接收和重新采样一定向内插器。该断点抽取器46抽取重新采样的定向内插器的断点并输出将被编码的关键字数据和关键字值数据。在本发明的第二实施例中,断点抽取器46象在本发明的第一实施例中一样,也包括一线性内插器46a、一误差计算器46b、以及一确定单元46c。
当一定向内插器被输入到分析器40中时,重新采样器45将由该定向内插器所组成的一第一动画路径重新采样成彼此之间具有多个预定时间的一间隔的多个预定部分。
重新采样器45将由采样关键字数据和采样关键字值数据组成的定向内插器输出到断点抽取器46的线性内插器46a。
线性内插器46a通过执行如图5C所示的步骤S522至S526来内插一定向内插器并将该内插的定向内插器输出到误差计算器46b中。误差计算器46b通过执行步骤S528至S530计算第一动画路径和由内插的定向内插器所构成的一第二动画路径间的一误差。确定单元46c选择将导致第一和第二动画路径间的一最小误差的一路径点,验证相应的误差是否大于一临界误差eth以及是否已经选择第一动画路径的所有路径点并生成将被编码的关键字数据和关键字值数据。
如上所述,在根据本发明的第二实施例的分析器40中,除断点抽取器46接收由从重新采样器45输出的关键字数据和关键字值数据构成的一定向内插器以及在由从重新采样器45输入的定向内插器构成的一动画路径上执行抽取断点的处理外,重新采样器45和断点抽取器46的操作与在本发明的第一实施例中的相应组件的操作相同。
在下文中,根据本发明的第三实施例,参考图4C来描述分析器40的一个例子。
参考图4C,分析器40包括一断点抽取器48,其接收一定向内插器,从由该定向内插器构成的一第一动画路径抽取断点并输入关键字数据和关键字值数据,以及一重新采样器49,其在一预定时间间隔采样由包括从断点抽取器48输入的关键字数据和关键字值数据的一定向内插器构成的一第二动画路径。断点抽取器48,与在本发明的第一和第二实施例中一样,也包括一线性内插器48a、一误差计算器48b以及一确定单元48c。
断点抽取器48,与本发明第一实施例中的一样,将从第一动画路径中所抽取的关键字数据和关键字值数据输出到重新采样器49中。
重新采样器49在预定时间间隔重新采样由包括从断点抽取器48所输入的关键字数据和关键字值数据的一定向内插器所构成的一动画路径并输出将被编码的关键字数据和关键字值数据。重新采样器49的功能与在本发明的第一和第二实施例中相同,因此这里不再重复描述。
在本发明的第一到第三实施例中从分析器40输出的关键字数据和关键字值数据被分别输出到关键字数据编码器200和关键字值数据编码器300。
在下文中,将参考图9A至12J来描述关键字数据编码器200的结构和操作。
图9A根据本发明的一优选实施例给出了一关键字数据编码器的框图。参考图9A,一关键字数据编码器200包括一线性关键字编码器900、一量化器910、一DPCM处理器920、一移位器930、一折叠处理器940、一DND处理器950以及一熵编码器960。
线性关键字编码器900识别在整个关键字数据范围内部关键字数据线性增加的一部分并编码该部分。量化器910利用能最小化一量化误差的一量化方法来量化输入到其中的关键字数据。DPCM处理器920接收量化关键字数据并生成关键字数据的差分数据。移位器930从差分数据中减去在所有差分数据中具有最大频率的一差分数据。折叠处理器940将所有差分数据传送到一正数区或一负数区。DND处理器950通过执行一划分操作然后有选择地执行一分割操作或向下分割操作来减小关键字数据的差分数据的范围。熵编码器960在每个位平面上使用一函数SignedAAC或UnsignedAAC来编码差分数据。
在下文中,将参考图10A来更详细地描述关键字数据编码器200的操作。图10A是根据本发明的一优选实施例的编码关键字数据的方法的流程图。当将关键字数据输入到用于编码一定向内插器的一装置中时,信息如关键字数据的数量以及每个关键字数据的数字的数量被输入到标题编码器400中并被编码。在步骤S9000中,线性关键字编码器900在该输入关键字数据中查找在某一时间间隔中存储关键帧的一区域,关键字数据具有相同的差值,以及关键字数据线性改变,以及所查找的线性部分被首先编码。
著名的3D应用软件,如3DMax或Maya,利用在特定区域间具有预定时间间隔的关键字来生成基于动画的关键帧。在这种情况下,有可能很容易使用一线性关键字数据区域的开始和结尾关键字数据以及存在于它们间的关键帧的数量来编码关键字数据。因此,线性预测对使用一定向器来编码在某一区域中的关键字非常有用。
下面的等式用于线性预测。
在这里,tS表示一部分线性区域开始的一关键字的数据,tE表示该部分线性区域结束的一关键字的数据,S表示tS的一指数,以及E表示tE的一指数。在从第S个关键字数据到第E个关键字数据的特定区域中的实际关键字数据与用等式(4)线性预测的关键字数据间的误差能用下面的等式计算。
如果在使用等式(5)计算的误差中的一最大值不大于一预定误差极限,ti能被认为在区域[tS,tE]或在某一误差范围内共线。使用下述等式(6)能确定最大误差值ti是否与特定区域共线。
如果ti是与区域[tS,tE]共线。此时,nBits表示用于编码的位的数量。
如果线性关键字编码器900查找部分线性区域,将部分线性关键字数据区域的开始和结尾关键字数据输出到浮点数转换器905中。包含在线性关键字数据区域中的关键字的数量被输出到标题编码器400中并被编码。使用线性编码有可能相当大地降低将被编码的数据量。
使用浮点数变换来编码开始关键字数据和结尾关键字数据,这将在下面描述。
浮点数转换器905将用二进制表示的关键字数据转换成十进制以便编码开始关键字数据和结尾关键字数据。
一计算机将浮点数存储为32位二进制数。如果给出用二进制表示的浮点数,浮点数转换器905将浮点数转换成十进制的一尾数和一指数,该处理用下面的等式来表示。
例如,一浮点数12.34能用一计算机转换成一二进制数,如下所示。
0 10001010111000010100011 10000010
1 2 3
1特征位
2二进制的尾数
3二进制的指数
用等式(7)能将一二进制数转换成一十进制数,如下所示。
0 1234 2
12 3
1特征位
2十进制的尾数
3十进制的指数
为在一位流中包括十进制的一尾数和一指数,必须计算为表示该尾数和指数而所需的位的数量。指数具有在-38到38间的一值,因此能用7位来表示它及其特征位。为表示尾数而所需的位的数量由位数而定。尾数值以及为表示尾数而所需的位的数量如下表所示。
表4
在图10B中所示的下述编码处理来编码利用上述处理已经查找过和转换过的线性关键字数据区域的开始和结尾关键字数据,并输出到报文编码器400,且在该位流中存储。
图10B表示在浮点数转换器905中执行的编码两个输入浮点数的一处理。参考图10B来描述浮点数转换器905编码一浮点数的方法。
浮点数转换器905接收原始关键字数据、开始关键字数据S以及结尾关键字数据E的数字数Kd并在步骤S9040中用等式(7)将转换它们。
浮点数转换器905首先编码S。具体来说,浮点数转换器905核对S的数字数目是否不同与Kd。如果S的数字数目与Kd不同,在步骤S9042中获得S的数字数目并输出到标题编码器400。利用函数Digit(),浮点数转换器905获得S的数字数目。
如果S的数字数目大于7,在步骤S9043中使用多个预定位(在本发明中,用IEEE754标准的一浮点数方式使用32位)将S输出到标题编码器以便将能S的数字数目包括在该位流中。
在步骤S9100中,量化误差最小化器915使用用于控制一量化范围的方法来预先量化或逆量化该输入关键字数据以便能最小化该量化误差。
具体来说,如果用于量化的一混合最大值用Max表示,用于量化所控制的一最小值用Min表示,一输入值用Xi表示,以及用于量化的位的数量用nQuantBit表示,那幺能使用下面的等式来获得一量化输入值
一逆量化值
以及一误差ei。
有两种用于最小化误差和∑ei的方法。一种方法是通过连续控制Min来降低误差和直到误差和最小化为止的方法。另一下如下。
首先,假定Xi=(i+n)ΔX+εi,其中Xi表示一输入关键字数据序列,Δx表示输入数据的基本步长,n是一任意整数,以及εi表示零平均值随机噪声。
接着,当di=Xi-Xi-1=ΔX+(εi-εi-1)时,Δ′x=E[di]以及Min=Max-Δ′x*(2nQuantBit-1)。
Min能使最小化一量化误差成为可能,以及Max能被输入到量化器910中并被用于关键字值数据的量化。
在步骤S9200中量化器910接收最大和最小值Max以及能最小化一量化误差的Min并用下述等式(9)量化关键字数据fKeyi。
在这里,i表示已量化关键字数据的一指数,nQkeyi表示已量化关键字数据的一整数数组,fKeyi表示已量化关键字数据的一浮点数数组,fKeyMax表示从量化误差最小化器915输入的一最大值,fKeyMin表示从量化误差最小化器输入的一最小值,以及nKeyQBit表示一量化步长。在等式(9)中,函数floor(v)是输出不大于某一浮点值v的一最大整数的一函数。
本发明的量化器910可能不使用用于降低一量化误差的这种算术,在这种情况下,简单使用输入关键字数据中的最大和最小值fKeyMax和fKeyMin来执行量化。
参考图10C来更全面地描述本发明的量化处理。
量化器910在步骤S9210中接收关键字数据并在步骤S9220中核对最大和最小值MAX和MIN是否从量化误差最小化器915中输入。
如果输入MAX和MIN,在步骤S3230中量化器910设置最大和最小值fKeyMax和fKeyMin分别用作量化的MAx和MIN并将新设置的最大和最小值fKeyMax和fKeyMin输出到浮点数转换器905中。通过上述浮点数转换方法来转换和编码最大和最小值fKeyMax和fKeyMin并输出到标题编码器400中以便它们能被包括在用在编码中的一关键字标题中。
如果没有值从量化误差最小化器915中输入,在步骤S9240中,量化器910设置第一关键字数据fKey0和最终关键字数据fKeyN-1分别作为最小fKeyMin和最大值fKeyMax。如果最大值fKeyMax不小于1或不大于0,将最大和最小值fKeyMax和fKeyMin输出到浮点数转换器905中并通过上述浮点数转换方法转换和编码。接着,在步骤S9260中,已经被转换和编码的最大和最小值fKeyMax和fKeyMin被包括在关键字标题中以便它们能被用在译码中。
另一方面,如果最大值fKeyMax小于1且最小值fKeyMin大于0,在步骤S9270中核对表示最大和最小值fKeyMax和fKeyMin是否将被包括在正用在译码中的关键字标题中的一标志位。如果该标志位被设置以致最大和最小值fKeyMax和fKeyMin能被包括在关键字标题中,执行步骤S9260以便最大和最小值fKeyMax和fKeyMin能被输出到标题编码器400中。如果标志位未被设置,量化器910不允许将最大和最小值fKeyMax和fKeyMin包括在关键字标题中。
在最大和最小值fKeyMax和fKeyMin未被包括在关键字标题中的情况下,关键字数据编码器和关键字数据译码器被假定分别执行编码和译码、分别将最大和最小值fKeyMax和fKeyMin设置为1和0。在这种情况下,在步骤S9280中,量化器910分别将最大和最小值fKeyMax和fKeyMin设置为1和0。对关键字数据译码器来说最大和最小值fKeyMax和fKeyMin已经公知以致它们不需要被包括在关键字标题中。
在步骤S9290中,量化器910通过将通过上述处理设置的最大和最小值fKeyMax和fKeyMin代入等式(9)中来量化输入关键字数据并将量化关键字数据输出到一DPCM处理器920中。
DPCM处理器920接收量化关键字数据并在多个预定时间在量化关键字数据上执行DPCM。接着,DPCM处理器920输出DPCM的次数,通过该操作,在离散的程序中获得一最小值以及在每个DPCM周期中获得的内部关键字数据到标题编码器400中。在步骤S9300中,DPCM处理器920将由DPCM生成的差分数据输出到移位器930中。
参考图10D,在步骤S9310中,DPCM处理器920在多个预定时间在输入关键字数据上执行DPCM并存储DPCM的周期的数量作为DPCM的次数。在本发明的一优选实施例中,DPCM能被执行三次。
此后,在步骤S9250中,量化器910核对最大值fKeyMax是否小于1而大于0以及最小值是fKeyMin否大于0。在这里,离散度可由离散、标准偏差或四分位差以及在本发明的一优选实施例中,可使用四分位差。
接着,DPCM处理器920选择一DPCM周期,通过该DPCM周期可获得离散度中的一最小位,并将选择的DPCM次数的结果输出到移位器930中。选择的DPCM周期、每个DPCM周期的内部关键字数据以及DPCM所要求的其它信息均在步骤S9330中被输出到标题译码器400中。然而,在本发明的一优选实施例中,如果关键字的数量小于5,则仅执行DPCM一次。例如,DCPM的第一周期用等式(10)来执行。
Δi=nQkeyi+1-nQkeyi…(10)
在这里,i表示量化关键字数据的一指数,nQKeyi表示一整数数组,以及Δi表示差分数据。
DPCM处理器920计算为编码DPCM的选择周期的结果以及在步骤S9340中在一预定存储器(nQStep DPCM0中由DPCM所生成的关键字数据的差分数据而所需的位的数量。为进行编码而所需的位的数量的计算也可在后来的选择将被编码的关键字数据的步骤中执行,这对本领域的技术人员是显而易见的。
移位器930从DPCM处理器输入的差分数据中选择具有最高频率的一差分数据(在下文中,称为一模式)。然后,移位器930在步骤S9400中从所有差分数据中减去该模式以便将被编码的大多数数据排列在0周期以及能减小为进行编码而所需的位的数量。
通过从所有已量化关键字数据中减去一模式nKeyShift,来执行这种移位操作,用下述等式来表示。
shift(nQKeyi)=nQkeyi-nKeyShift …(11)
在这里,i表示已量化关键字数据的一指数,nQKeyi表示一整数数组,以及nKeyShin表示一模式值。作为该移位操作的结果,具有最高频率的差分数据变为0以便能相当大地减小为进行编码而所需的位的数量。
通过移位操作的关键字数据被输出到折叠处理器940和DND处理器950中,以及模式值nKeyShift被输出到标题编码器400以便被包括在关键字标题中。
在步骤S9500中,折叠处理器940在移位器930的输出上执行一折叠操作并将折叠操作的结果输出到DND处理器950中。
折叠操作被用来通过将它们集中到正或负数区域中来减小在一正数区域和一负数区域上广泛离散的差分数据的范围。在本发明实施例中,折叠操作用等式(12)来执行以在正数区域中集中该差分数据。
fold(nQKeyi)=2·nQKeyi (nQKeyi≥0) …(12)
=2|nQKeyi|-1 (nQKeyi<0)
在这里,i表示量化关键字数据的一指数,nQKeyi表示一整数数组。作为折叠操作的结果,正差分数据被转换成偶数,以及负差分数据被转换成奇数。
折叠处理器940计算为对经过折叠操作的差分数据进行编码而所需的位的数量并将其存储在一预定存储器nQStep fold。在该步骤中,编码所需的位的数量的计算可在后面的选择将被熵编码的差分数据的步骤后执行,这对本领域的技术人员来说是显而易见的。通过在折叠处理器940中的折叠操作生成的数据被输出给DND处理器950。
为提高熵编码的效率,DND处理器950在关键字数据的输入差分数据上执行一DND操作一预定次数,从而在步骤S9600中减小差分数据的范围。
参考图9B,DND处理器950包括一DND运算符952,一第一差分数据选择器954,一上移运算符956,以及一第二差分数据选择器958。该DND运算符952在差分数据上执行一DND操作。该第一差分数据选择器954基于用于编码的位的数量来选择将被熵编码的差分数据。该上移运算符956在通过一DND操作的差分数据上执行一上移操作。该第二差分数据选择器958从具有仅通过DND操作的差分数据和通过上移操作的差分数据上选择具有一较低离散度的一个并将所选择的差分数据输出到熵编码器960。
下面描述将在DND运算符952中执行的DND操作。
当在折叠处理器940中通过折叠操作的差分数据被输入到DND运算符952中时,它们被划分成二组,比另一差分数据组具有一较高范围的一组差分数据通过一划分函数被移动到正数区域中。划分函数由下述等式来定义。
divide(nQKeyj,nKeyMax) …(13)
=nQKeyj-(nKeyMax+1)
=nQKeyj
在这里,j表示输入差分数据的一指数,nQKeyj表示一整数数组,以及nKeyMax表示通过折叠操作的差分数据间的一最大值。特别地,在大多数差分数据沿所有差分数据占用的整个区域的边界被密集地填充的情况下,使用该划分操作有可能相当大地减小所有差分数据的整个区域。
在划分操作后,计算离散度,在这种情况下,编码所需的位的大小被用作离散度的一度量以便选择用于编码的位的大小中的一最小值。
在DND操作后,不同类型的DND操作,即一上划操作或一下划操作被进一步执行。根据差分数据的一正范围的大小以及差分数据的一负范围的大小,确定将进一步执行一上划操作还是一下划操作。
如果具有正值的差分数据的范围大于具有负值的差分数据的范围,执行由下述等式定义的一下划操作。
divide-dwon(nQKeyj,nKeyMax) …(14)
=-2(nKeyMax-nQKeyj+1)+1
=nQKeyj
=2·nQKeyj (nQKeyj<0)
另一方面,如果具有正值的差分数据的范围大于具有负值的差分数据的范围,执行由下述等式定义的一上划操作。
divide-up(nQKeyj,nKeyMin) …(15)
=nQKeyj (nQKeyj≥0)
=2·nQKeyj
=2(nKeyMin-nQKeyj-1)+1
在等式(14)和(15)中,j表示量化关键字数据的一指数,nQKeyj表示一整数数组,nKeyMax表示nQKeyj的一最大值,以及nKeyMin表示nQKeyj的一最小值。
下面将参考图10E来描述DND运算符952的操作。
当从折叠处理器940输入关键字数据的差分数据时,DND运算符952在步骤S9610中获得输入差分数据间的最大值nKeyMax和最小值nKeyMin。然后,在步骤S9620中,DND运算符将nKeyMax的绝对值与nKeyMin的绝对值比较。如果nKeyMax不小于nKeyMin的绝对值,DND运算符952在步骤S9622中将nKeyMax设置为在DND操作的当前周期中的一最大值。
DND运算符952核对DND操作的次数是否为1,换句话说,如果DND的次数为1,在步骤S9624中,如果它是,则DND运算符952在步骤S9630中通过将最大值nKeyMax代入等式(13)中来在输入差分数据上执行一划分操作。
此后,在步骤S9640中,使用函数getQBit(),DND运算符952使用划分操作来测量用于编码已经被减小的差分数据范围的位的大小。在步骤S9650中,如果DND操作的次数变为1,编码所需的位的大小被存储为表示用于编码的最小位的大小的一值nQBitDND,以及在步骤S9655中将DND操作的次数加1。
接着,DND处理器952再次执行步骤S9610至S9622。如果在步骤S9624中DND操作的次数不为1,则在步骤S9634中,DND运算符952通过将最大值nKeyMax代入等式(14)来执行一下划操作。在步骤S9640中,DND运算符952计算用于编码通过下划操作的差分数据的位的数量。如果该数量小于在先前DND操作周期中存储的最小值nQBitDND,在步骤S9658中,在DND操作后,它替换要求用于编码的最小的位的大小。
如果在步骤S9620中,最小值nKeyMin的绝对值似乎大于最大值nKeyMax的绝对值,在步骤S9623中,在当前DND操作的周期中的最大值被更新为一最小值,然后,在步骤S9628中,通过将最小值nKeyMin代入等式(15)中来执行一上划操作。此后,DND运算符952在步骤S9640中计算用于编码通过上划操作的差分数据的位的数量。在步骤S9652中,如果计算结果变为小于在先前DND操作周期中存储的nQBitDND,在步骤S9658中,在DND操作后,它替换要求用于编码的位的最小数nQBitDND。
DND处理器952执行预定次数的DND操作,以及DND操作的性能的数量可改变。例如,在本发明实施例中,执行7次DND操作。DND运算符952将nQBitDND和与nQBitDND相对应的差分数据输出到第一差分数据选择器954中。DND运算符952将通过其生成相应差分数据的DND次数输出到标题编码器400中并允许它们包括在位流中。
第一差分数据选择器954接收经过移位操作的差分数据、经过折叠操作的差分数据以及经过DND操作的差分数据并在它们三个中确定将被熵编码的差分数据。
参考图10A,在步骤S9710中,如果在DND操作后为进行编码而所需的位的最小数nQBitDND不小于在步骤S9700DPCM操作后用于编码的大小nQBitDND,则第一差分数据选择器954选择DPCM的结果并在它们上执行一移位操作。接着,第一差分数据选择器954将位移操作的结果输出给熵编码器960并允许在步骤S9710中编码它们。在这种情况下,DND操作的次数被设置为-1,被输出到标题编码器400并被包括在关键字标题中。
然而,如果在步骤S9720中出现nQBitDND小于nQStep-DPCM并不小于在折叠操作后用于编码的位的大小,第一差分数据选择器954将经过折叠操作的差分数据输出到熵编码器960中并在步骤S9730中允许熵编码它们,在这种情况下,DND操作的次数被设置为0,输出到标题编码器400,从而包括在关键字标题中。
如果在DND操作后用于编码差分数据的位的数量是最小的,第一差分数据选择器954将经过DND操作的差分数据输出到上移运算符956中,然后在步骤S9740中上移运算符956计算从第一差分数据选择器954输入的差分数据的第一离散度。接着,上移运算符956在步骤S9800在经过DND操作的差分数据上执行用下述等式定义的上移操作并在步骤S9810中计算上移操作的结果的第二离散度。
shift-up(nQKeyj,nkeyMax) …(16)
=nQKeyj (nQKeyj≥0)
=nKeyMax-nQKeyj (nQKeyj<0)
在这里,j表示量化关键值数据的差分数据的一指数,nQKeyj表示一整数数组,以及nKeyMax表示差分数据间的一最大值。
当输入经过DND操作的差分数据以及经过上移操作的差分数据时,在步骤S9900中,第二差分数据选择器958将第一离散度与第二离散度进行比较。如果第二离散度小于第一离散度,第二离散数据选择器958将经过上移操作的差分数据输出到熵编码器960并在步骤S9910中允许熵编码它们。第二差分数据选择器958输出用在DND操作中的最大和最小值nKeyMax和nKeyMin。在本发明的一优选实施例中,标准偏差可被用作第一和第二离散度的一度量。
熵编码器960根据差分数据的特点在差分数据上执行两个不同的函数。例如,经过一DPCM操作和一移位操作的差分数据以及仅经过一划分操作的差分数据具有正和负值,因此它要求执行编码每个差分数据的特征位和差分数据本身的一处理。另一方面,由于经过一折叠操作的差分数据仅具有正值,执行仅编码差分数据的一处理。
在本发明的一优选实施例中,函数encodeSignedAAC被用于编码差分数据以及它们的特征位,以及函数encodeUnsignedAAC被用于仅编码差分数据。
图11是函数encodeSignedAAC()的例子的图。参考图11,当一输入值是74以及用于编码该输入值的位的数量为8时,其特征位为0,以及它与二进制数1001010相同。特征位以及所有位平面用下述方法编码。
第一步在每个位平面上按从其最高有效位(MSB)到其最低有效位的顺序编码一二进制数;
第二步核对当前正被编码的位是否为0;
第三步如果当前正被编码的位不是0,接着编码该二进制数的特征位;以及
第四步编码该二进制数据的其余位;
使用与这些值有关的环境,函数encodeUnsignedAAC将不具有一特征位的这些值编码成一自适应算术编码位流。该函数除存在一特征位上下文(sign context)外,几乎与函数encodeSignedAAC()相同。
图12A至12J是根据本发明的一优选实施例,表示经过操作的关键字数据的图。在图12A至12J,X轴表示每个关键字数据的指数,以及Y轴表示关键字数据的值。
图12A是表示输入到本发明的编码器中的原始关键字数据的图。如图12A所示的关键字数据被输出到量化器910中,然后与9个量化位一起被量化以便获得如图12B所示的量化关键字数据。如果在如图12B所示的量化关键字数据上执行DPCM,获得如图12C所示的差分数据。
接着,使用约为7的一模式值来移位该量化关键字数据的差分数据以便获得如图12D所示的差分数据。此后,如果在移位差分数据上执行一折叠操作,获得如图12E所示的仅为正值的数据。
在如图12E所示的折叠数据上执行一DND操作的结果如图12F至12H所示。具体来说,在折叠数据上执行一划分操作的结果如图12F所示。如图12F所示,正关键字数据值范围从0至28,负关键字数据值范围从-28至0,这表示负关键字数据值的范围大于正关键字值数据的范围。因此,要求在如图12F所示的数据上执行一上划操作,以及上划操作的结果如图12G所示。
作为上划分操作的结果,相当大地减小了负关键字数据值的范围以便它远小于正关键字数据值的范围。在DND操作的下一周期,在上划操作的结果上执行一下划操作。图12H是表示在如图12G所示的差分数据上执行一下划操作的结果。在如图12H所示的关键字数据上执行一上移操作的结果如图12I所示。
如图12A至12G所示,逐渐减小关键字数据和差分数据的范围。然而,如图12H和12I所示,在上移操作后增加的差分数据的范围大于在上移操作前,这表示经过划分操作的差分数据,如图12H所示,是将被最终编码的差分数据,如图12J所示。
在标题编码器400中编码以及在关键字标题中存储的信息如下所述。
当输入将被编码的关键字数据时,标题编码器400编码将编码的关键字数据的数字数和关键字数。接着,标题编码器400从线性关键字编码器900接收有关是否存在经过线性关键字对输入关键字数据进行编码的一线性关键字数据区域以及在该线性关键字数据区域中的关键字数据的数量的信息并从浮点数转换器905接收经过浮点数转换的线性关键字数据的开始和结尾关键字数据。
在浮点数转换器接收能带来一最小量化误差的最小和最大值并将它们转换成浮点数的情况下,转换的最大和最小值被从浮点数转换器905输入到标题编码器400以便它们能被再次用于逆量化。另外,量化位的大小也能被输入到标题编码器400中并被包括在关键字标题中。
关键字标题编码器400从DPCM处理器920接收DPCM的次数以及在每个DPCM循环中的内部关键字数据并从移位器930接收已经用于一移位操作的一模式值。另外,标题编码器400从DND处理器950接收有关是否已经执行一上移操作以及DND次数的信息,通过该操作,能减小差分数据的离散度,以及在每个DND操作周期中的最大和最小值。
最后,标题编码器从熵编码器960接收用于编码的位的数量并将其编码为一关键字标题。
在下文中,参考图13A至20B,根据本发明的第一实施例来更全面地描述一关键字值数据编码器300的结构和操作。
图13A是根据本发明第一实施例的一关键字值数据编码器300的框图。参考图13A,关键字值数据编码器300包括一旋转DPCM运算符1300,一循环DPCM运算符,一熵编码器1450,以及一标题编码器。旋转DPCM运算符1300计算在连续关键帧中一对象的旋转变换值间的旋转差分值,将关键帧的四元数关键字值数据应用到它们各自的对象上,量化该旋转差分值,并输出旋转差分值。该循环DPCM运算符在量化旋转差分数据上有选择地执行一线性DPCM或一循环DPCM操作。该熵编码器1450对旋转DPCM或循环DPCM旋转差分数据进行熵旋转。该标题编码器编码为译码已编码的动画内插器节点的关键字值数据所需的信息。
旋转DPCM编码器1300包括一第一四元数乘法器1310,一量化器1340,一逆量化器1350,一第二四元数乘法器1370,以及一延迟器1390。该第一四元数乘法器1310计算在一前关键帧的一对象的一旋转变换值与在一当前关键帧中该对象的一旋转变换值间的一旋转差分值,通过将在当前关键帧中的该对象的旋转变换值四元数乘以在前关键帧中的该对象的旋转转换值。该量化器1340通过非线性量化从第一四元数乘法器1310输入的旋转差分数据来生成量化差分数据。该逆量化器1350通过逆量化已量化旋转差分数据来生成在当前关键帧中的该对象的复原旋转差分数据。该第二四元数乘法器1370通过将在当前关键帧中的该对象的旋转差分值四元数乘以通过累加旋转差分数据所计算的在前关键帧中该对象的旋转变换值来复原在当前关键帧中的该对象的旋转变换值。该延迟器1390当输入在下一关键帧中的该对象的一旋转变换值时,将在当前关键帧中的该对象的复原旋转变换值输出到第一四元数乘法器。
在下文中,将更详细地描述根据本发明的在一旋转DPCM运算符中执行的一旋转DPCM操作。
在已经在常规MPEG-4PMFC中采用的一线性DPCM方法中,用下面的等式(17)来计算表示在一当前关键帧中一对象的旋转变换(或表示在一当前关键帧中一对象被旋转变换的程度)的一四元数旋转变换值Q1(Q1=(q1,0,q1,1,q1,2,q1,3))与表示在下一关键帧中该对象的旋转变换的一四元数旋转变换值Q2(Q2=(q2,0,q2,1,q2,2,q2,3))间的一差分值。
QlinearDPCM=(q1,0-q2,0,q1,1-q2,1,q1,2-q2,2,q1,3-q2,3)…(17)
然而,线性DPCM方法仅计算四元数分量间的一差分值,这不能反映任何有意义的旋转差分值,即一实际的旋转差分值。因此,线性DPCM方法不能有效地减少将被编码的连续关键字值数据间的冗余。另外,在线性DPCM方法中,除具有最大值的一个分量之外,编码一四元数的三个分量。因此,有必要另外编码在未被编码的该一个分量上的2比特的长信息,并将该2比特的长信息从一编码器传送到一译码器。
为利用通过减小在连续关键字值数据间的冗余的传统线性DPCM方法来解决上述问题,根据本发明的第一实施例,关键字值数据编码器提供一旋转的DPCM操作,其中考虑到实际的旋转差分值。

表示一基准矢量,该基准矢量表示在一当前关键帧中的一对象的一基准位置,
表示当关键字值等于ki-1时的关键字值数据,以及
通过旋转变换在当前关键帧中的对象获得的
的一位移矢量,在一四元数空间中的旋转变换能用下面的等式表示。
在等式(18)中,X0,Yi-1,Qi-1以及
分别表示
以及
的单位四元数(unit quarternion)。另外,
表示Qi-1的一四元数复共扼,以及×表示四元数乘法。
用这种方式,当关键字数据等于ki时,在一四元数空间中的旋转变换能用下面的等式来表示。
可用以下等式(20)来计算连续关键字值数据的连续旋转变换值间的一旋转差分值。
因此,能通过由等式(5)和(6)导出的下面的等式来定义一旋转差分值。
为防止一量化误差扩展到下一旋转差分值,根据本发明的一实施例,关键字值数据编码器300利用在下一关键帧中的一旋转变换值以及前关键帧中的一复原旋转变换值
来重新定义由等式(21)定义的该旋转差分值,如等式(22)中所示。
在下文中,将参考图13B来描述一种用于根据本发明的第一实施例编码关键字值数据的方法。图13B是根据本发明的第一实施例的用于编码关键字值数据的方法。
根据本发明的第一实施例,关键字值数据编码器在步骤S1300中接收DPCM次数、一熵编码模式以及关键字值数据。
接着,在步骤S13050中,第一四元数乘法器1310接收用一四元数表示的关键字值数据Qi并核对输入的关键字值数据Qi是否是第一关键字值数据Q0。如果输入的关键字值数据Qi是第一关键字值数据Q0,表示没有用于四元数乘法的累加的四元数变换值。因此,第一四元数乘法器1310将输入关键字值数据Qi输出到量化器1340中。如果输入关键字值数据Qi不是第一关键字值数据Qo,在步骤S13100中,通过将前关键帧中的复原四元数变换值
的复共扼)四元数乘以由一四元数变换值表示的输入关键字值数据Qi
第一四元数乘法器1310计算一四元数差分值
其是当前关键帧的关键字值数据与前关键帧的复原关键字值数据间的一差分值。
在步骤13300中,量化器1340从第一四元数乘法器1310接收第一关键字值数据Q0或四元数旋转差分值
并使用一预定数量的量化位来量化该输入。
由于所有旋转四元数差分值均由单位四元数表示,表示一旋转差分值的一四元数的一范数总是为1。因此,在未被编码的一四元数的四个分量中的一分量能使用其它三个分量来译码。根据本发明的第一实施例,关键字值数据编码器300仅编码一四元数的四个分量中的三个以便将被编码的数据量。因此,量化器1340仅量化将被编码的三个分量。
根据本发明,量化器1340执行非线性量化而不是一般的线性量化,以及下面将参考图14A描述该原因。
图14A是描述在一旋转差分值的每个分量中的一概率分布函数(PDF)的一个典型的例子的图。如图14A所示,旋转差分值的分量值一般集中在0左右,这被称为能源压缩并表示有可能有效地降低旋转信息片中的冗余。因此,为量化旋转差分值,更充分地反映每个旋转差分值的较低的分量值,需要更完善地在较低分量值上执行量化,这就是为什幺根据本发明的量化器1340执行非线性量化的原因。此时,量化器1340使用一反正切曲线以便将一非线性比例因子分配给每个旋转差分值。
图14B根据本发明给出用于量化的一反正切曲线。如图14B所示,该反正切曲线向较高输入值提供一适当的分辨率并向较低输入值提供一更高的分辨率。量化器1340使用如下所示的等式的一非线性比例函数来量化在步骤S13300中的一旋转差分值。
此时,
表示输入到该量化器1340中的旋转差分值的每个分量,qi′表示
的一比例值,nQBits表示用于量化的预定数量的量化位,以及floor(x)表示用于将一输入值x变换成不大于x的一最大整数的一函数。
量化器1340在输入旋转差分值上执行量化,然后核对量化的旋转差分数据是否与将被编码的最后一个关键字值数据相对应。如果量化后的旋转差分数据与最后一个关键字值数据相对应,该量化器1340将量化后的旋转差分数据输出到循环DPCM运算符1400中。如果量化后的旋转差分数据不与最后的关键字值数据相对应,量化器1340将量化后的旋转差分数据输出到逆量化器1350中。
在步骤S13400中,反量化器1350相反地量化从量化器1340输入的量化后的旋转差分数据并在步骤S1350中输出一复原旋转差分数据。
如上所述,根据本发明的第一实施例,关键字值数据编码器通过量化除第一分量外的三个分量,仅编码表示一旋转差分值的一四元数的三个分量。一关键字数据译码器的一逆量化器2430,如图21A所示,以及在上面描述过的逆量化器1350被假定使用三个编码过的分量来复原在旋转差分值的四个分量中未被编码的其它的一个。由于所有旋转差分值每个均由一单位四元数表示,表示一旋转差分值的一四元数的范数始终为1。因此,使用下述等式来复原旋转差分值的四个分量中的第一分量是可能的。
在等式(24)中,
以及
表示一旋转差分值的三个复原分量,以及
表示使用三个复原分量
以及
而复原的第一分量。
为利用等式(11)来复原第一分量
第一分量
必须具有一正值,并且该条件可通过利用当将一四元数应用到在一13D空间中的一对象的旋转变换中时所出现的一四元数的特征来满足,并如等式(25)所示。
Y=Q×X×Q*=(-Q)×X×(-Q)* …(25)
等式(25)表示当将旋转变换应用到在一3D空间的一对象时旋转变换值Q和-Q具有相同的物理含义。因此,如果根据本发明的第一实施例,在关键字值数据编码器300中一旋转差分值的第一分量能通过将该旋转差分值的每个分量乘以-1容易被转换成一正值。然而,在这种情况下,除第一分量外一复原旋转差分值的每个分量的平方和由于一量化误差可能超过1。在这种情况下,不能由等式(24)确定
并被认为是接近0以及小于能被量化器1340量化的一最小值的一值。
具有这样一值的事实表示该对象已经通过几乎等于约180度被旋转变换。因此,一个用于译码一定向内插器的装置需要用于确定
的一种方法同时减小复原第一分量值
在三个复原分量值
以及
上的影响,并且该方法将被应用到用于根据本发明的第一实施例的关键字值数据编码器300的逆量化器1350中。例如,能由量化器1340量化的最小值乘以一预定整数可被确定为
下面的等式可被用来确定
在等式(26)中,’a’表示一任意常数,以及m表示一预定数量的量化位。
当在常规MPEG-4BIFS PMFC方法中要求有关每个关键字值数据的2比特长的信息用于译码时,该2比特长信息在本发明不是必须的,因此当编码N个关键字值数据时,将被编码的位的数量能被减少差不多2N。
从该逆量化器350输出的复原旋转差分值被输入到第二四元数乘法器1370中,以及在步骤S13600中该第二四元数乘法器1370核对一输入关键帧是否是将被编码的一第一关键帧。如果该输入关键帧是将被编码的第一关键帧时,第二四元数乘法器1370累加从该逆量化器输入的第一关键帧的复原旋转变换值并在步骤S13800中将累加值输出到该延迟器1390中。
如果该输入关键帧不是将被编码的第一关键帧时,在步骤S13700中,通过将当前关键帧的一旋转差分值
与一前关键帧的一复原旋转变换值
四元数相乘第二四元数乘法器1370复原一当前关键帧的一旋转变换值
第二四元数乘法器1370将当前关键帧的复原旋转变换值
输出给延迟器1370,然后延迟器1390保持该
直到下一关键帧的一旋转变换值被输出以便
等于
然后将
输出到第一四元数乘法器1310中。
当一当前关键帧的一旋转变换值Qi被输入到第一四元数乘法器1310中时,第一四元数乘法器1310也从延迟器1390接收一前关键帧的复原旋转变换值
并在步骤S13100中通过将前关键帧中的复原四元数变换值
四元数乘以Qi
来生成当前关键帧的旋转变换值与前关键帧的复原旋转变换值间的一旋转差分值Qi。
生成的旋转差分值被输出到量化器1340中,然后在步骤S13300中,按如下所述,由量化器1340量化。在步骤S13400中,如果所输入的旋转差分值与最后一个关键字值数据相对应,量化器1340将通过量化一旋转差分值所生成的旋转差分数据输出到循环DPCM运算符400中。
循环DPCM运算符1400核对从量化器1340输入的量化的旋转差分数据的DPCM的次数是否为0。在步骤S14000中,如果DPCM的次数为0,循环DPCM运算符1400将量化的旋转差分数据输出到熵编码器1450中而不执行一线性DPCM操作和一循环DPCM操作。如果DPCM的次数不为0,在步骤S14100中,循环DPCM运算符1400在该量化旋转差分数据上执行一线性DPCM操作以及一循环DPCM操作。
图15A是描述从该量化器1340输出的差分数据的例子的图,以及图15B是描述在从量化器1340输出的差分数据上执行一线性DPCM操作的结果的图。
如图15B所示,作为一线性DPCM操作的结果,将被编码的差分数据的范围可比它过去增加二倍。循环DPCM操作的性能的目的是将差分数据的范围保持在量化的差分数据的范围内。
循环DPCM操作是在假定在一量化范围内的一最大值和一最小值被循环地彼此连接之下执行的。因此,如果在两个连续量化数据上执行线性DPCM的结果的差分数据大于在量化范围内的最大值的一半时,通过从差分数据减去最大值,可用较小值来表示它们。
如果差分数据小于在量化范围内中的最小值的一半时,通过将在量化范围内的最大值加到该差分数据上,可用较小值甚至更大的来表示它们。


分别表示在两个连续时间瞬间ti和ti-1的量化旋转差分数据,在下面的等式(27)的两个连续量化旋转并非分数据

上执行一线性DPCM操作。
另外,在下面的等式(27)、(28)获得的差分数据上执行一循环DPCM操作。
(如果Xi≥0)(相反)
在等式(28)中,nQBits表示一预定数量的量化位。图15C是描述在如图15B所示的DPCM差分数据上执行一循环DPCM操作的结果的图。如图15C所示,循环DPCM差分数据的范围越小于线性DPCM差分数据的范围。
熵编码器1450根据旋转差分数据的DPCM的次数从循环DPCM运算符1400接收旋转差分数据或循环DPCM旋转差分数据,然后通过移除位冗余来编码输入差分数据。
再参考图13B,熵编码器1450在步骤S14500中核对一熵编码模式。
如果熵编码模式是一二进制熵编码模式,则在步骤S14600中熵编码器1450使用一函数SignedAAC()来编码该输入差分数据。如果熵编码模式是一一元熵编码模式,则在步骤S14700中使用一函数UnaryAAC()来编码该输入差分数据。
函数SignedAAC()被用来利用一自适应的二进制算术编码器来编码差分数据,函数SignedAAC()在每个位平面上编码该差分数据的标记和大小,并且编码方法已经参考图11在上面描述过。
另一方面,函数UnaryAAC()被用来通过将被编码的一值转换成一系列0、表示该0系列结束的一特征位位1以及表示该值的标记的另一位来编码符号,0系列的数量与该值的大小相对应。
在下文中,函数UnaryAAC()将参考图16B在下面更全面地描述。例如,2156被编码成一系列位,这些位由256个Os,表示Os系列结束的一特征位位1,以及表示256的标记的0,即函数UnaryAAC()的一加号标记组成。由于UnaryAAC(),表示将被编码的符号的位间的冗余增加,这提高了编码该符号的有效性。
在下文中,将描述根据本发明的第二实施例的一关键字值数据编码器300。根据本发明的第二实施例的关键字值数据编码器300包括一装置,用于校正在量化期间产生的一旋转方向误差以及用于根据本发明的第一实施例编码的关键字值数据编码器300的所有组件。
图17是描述在使用旋转差分值编码四元数旋转变换值期间生成的一旋转方向误差的图。由于在根据本发明的关键字值数据编码器300中执行的四元数编码方法是有损编码方法(loss encoding method),从而导致旋转方向误差。
在图17中,当Qi,Qi-1,

分别表示当前正被应用到在一第I关键帧中的一对象的一旋转变换值、应用到在一前关键帧中的该对象的一旋转变换值、从QI复原一值以及从Qi-1复原一值时,通过几乎等于分别由Qi,Qi-1,

表示的旋转变换旋转的该对象的位置可由四个不同区域表示,如图17所示。
换句话说,如果该对象沿一最短弧线从Qi-1旋转到Qi因此在由Qi和Qi-1旋转后,该对象位于区1和区3中,该对象被认为按逆时钟方向从Qi-1旋转到Qi。此时,如果该对象沿一最短路线从Qi-1旋转到Qi因此在按Qi-1和Qi旋转后,该对象位于区2和区4中,该对象被认为按顺时针方向从Qi-1旋转到Qi。
另一方面,如果已经被编码,然后被译码的旋转信息旋转该对象,用于译码一定向内插器的一种装置利用分别与Qi,Qi-1相对应的

来旋转该对象。因此,如果相对于由
所旋转的该对象的位置而言,由
所旋转的对象的相对位置是区2或3,该对象逆时针旋转。如果相对于由
所旋转的该对象的位置而言,由
所旋转的对象的相对位置是区1或4,该对象顺时针旋转。在区1和2中,当利用一原始旋转变换值时,该对象的旋转方向可能与当利用一译码的旋转变换值的该对象的旋转方向相反,因为Qi和
与被执行以编码四元数旋转变换值的损失编码是不同的。为解决该问题,需要减小该对象在与所需要的方向相反的一错误方向中所旋转的程度或当该对象在一错误方向中旋转时校正该对象的旋转方向以便该对象在一需要的方向中旋转。在本发明中,采用用于校正该对象的旋转方向的方法以便使该对象在一需要的方向中旋转。
再参考图17,在下文中将简单地描述根据本发明的校正一旋转方向误差的原理。如果检测到一旋转方向误差,如在区1和2中产生的现象,将被编码的四元数旋转差分值被控制以便在一正确方向中旋转,在这种情况下在区2中仍然会发生在旋转方向中的不一致性。然而,在区2中,不象在区1中,原始四元数值以及复原四元数值间的差值相比较小。因此,根据本发明第二实施例的旋转方向校正仅在区1上执行。
在下文中,将参考图18A至19B来描述根据本发明第二实施例的执行旋转方向校正的关键字值数据编码器300。根据本发明第二实施例的关键字值数据编码器300与根据本发明第一实施例的关键字值数据编码器300的结构几乎相同。它们间的唯一区别是一旋转DPCM运算符的结构,因此在下面将仅描述根据本发明第二实施例的关键字值数据编码器300中的一旋转DPCM运算符的结构。
图18A根据本发明第二实施例给出了旋转DPCM运算符1800的框图,并且图18B是如图18A所示的一旋转方向误差计算器1820的一框图。
参考图18A,该旋转DPCM运算符1800包括一旋转方向误差计算器1820,一旋转方向误差检测器1830,一旋转方向校正器1815,以及一旋转方向选择器1835。旋转方向误差计算器1820接收在一当前关键帧中的一对象的一旋转变换值以及在一前关键帧中该对象的一复原旋转变换值并计算旋转方向误差。该旋转方向误差检测器1830基于从旋转方向误差计算器1820输入的旋转方向误差检测在译码过程中是否足以改变该对象的旋转方向的一误差已经发生。该旋转方向校正器1815校正和输出从第一四元数乘法器1810输入的一旋转差分值以便通过采用前关键帧的一译码旋转变换值的一变换来定位的该对象能进一步在一原始旋转方向中旋转约180度。该旋转方向选择器1835根据从旋转方向误差检测器1830输入的一值来选择从旋转方向校正器1815输入的旋转差分值或从第一四元数乘法器1810输入的旋转差分值并将所选择的值输出到该量化器1840中。
参考图18B,如图18A所示的旋转方向误差计算器1820包括一延迟器1822,一第三四元数乘法器1824,一第四四元数乘法器1826,以及一第五四元数乘法器1828。该延迟器1822存储一输入旋转变换值直到下一关键帧的一旋转变换值被输入为止。该第三四元数乘法器1824接收该输入旋转变换值以及从该延迟器1822输出的一前关键帧的一旋转变换值并通过四元数乘法计算该输入旋转变换值以及前关键帧的旋转变换值间的一旋转差分值。该第四四元数乘法器1826计算从延迟器1822输出的前关键帧的旋转变换值和该前关键帧的复原旋转变换值间的一旋转差分值。该第五四元数乘法器1828在输入旋转变换值与前关键帧的复原旋转变换值间计算。
在下文中,参考图19A来更详细地描述根据本发明的第二实施例的一旋转DPCM操作。
在步骤S19000中,打算被编码的一定向内插器节点的关键字值数据Qi被输入到第一四元数乘法器1810以及该旋转DPCM运算符1800的旋转方向误差计算器1820中。
第一四元数乘法器1810,象根据本发明第一实施例的关键字值数据编码器300中的第一四元数乘法器一样,通过将一当前关键帧的一输入旋转变换值四元数乘以从第二四元数乘法器1870输入的一前关键帧的一复原旋转变换值
来生成一旋转差分值
并在步骤S19100中将所生成的旋转差分值
输出到该旋转方向校正器1815和旋转方向选择器1835中。
旋转方向校正器1815按等式(29)校正输入到其中的一旋转差分值并将校正的旋转差分值Qs输出到校正方向选择器1835中。旋转方向误差计算器1820接收当前关键帧的旋转变换值Qi以及从第二四元数乘法器1870中输入的前关键帧的复原旋转变换值
并计算旋转变换值QA,QB以及QC,这将在以后描述。旋转方向误差检测器1830利用从旋转方向误差计算器1820所输入的旋转差分值来检测是否已经发生一旋转方向误差并在步骤S19200中将检测结果输出到旋转方向选择器1835中。
在等式(29)中,δr表示非常接近0的一常数,并且(qR,0,qR,1,qR,2,qR,3)T表示从第一四元数乘法器1810输出的旋转差分值
旋转方向误差计算器1820、旋转方向误差检测器1830以及旋转方向校正器1815将参考图19B描述如下。
旋转方向选择器1835核对是否已经发生一旋转方向误差以便当使用从旋转方向误差检测器1830输入的一逻辑值来译码一编码关键字值数据时该对象在相反方向中旋转到一需要的方向。如果一旋转方向误差没有发生,在步骤S19300中,旋转方向选择器1835将从第一四元数乘法器1810输入的旋转差分值输出到量化器1840中。如果一旋转方向误差已经发生,旋转方向选择器1835在步骤S19300中将从旋转方向校正器1815输入的校正旋转并分值输出。
量化器1840在步骤S19400和S19500中用与本发明的第一实施例中相同的量化方法量化原始旋转差分数据
或校正的旋转差分数据Qs。
量化器1840在步骤S19600中核对量化的旋转差分数据
是否属于最后一个关键字值数据。如果量化的旋转差分数据
与最后一个关键字值数据相对应,量化器1840在步骤S19700中将量化的旋转差分数据
输出到一循环DPCM运算符1400中。如果量化的旋转差分数据
不与最后一个关键字值数据相对应,量化器1840将量化的旋转差分数据
输出到逆量化器1850中。
逆量化器1850在步骤S19800中用与本发明的第一实施例相同的逆量化方法逆量化该量化的旋转差分数据
并将复原旋转差分数据
输出到第二四元数乘法器1870。
第二四元数乘法器1870通过将复原旋转差分数据
四元数乘以一前关键帧的一旋转变换值
生成一当前关键帧的一复原旋转变换值
第二四元数乘法器1870在步骤S19900中经延迟器1890将一当前关键帧的一旋转变换值输出到第一四元数乘法器1810和旋转方向误差计算器1820中。
在下文中,将参考图19B来描述旋转方向误差计算器1820、旋转方向误差检测器1830以及旋转方向校正器1815的操作。
旋转方向误差计算器1820计算与区2至4相对应的旋转误差值,这已经参考图17描述过。
旋转方向误差计算器1820接收与将被编码的一关键帧的关键字值数据相对应的一旋转变换值,接收在当前关键帧前的一前关键帧的一复原旋转变换值并在步骤S19220中计算一旋转方向误差。
与当前关键帧的一定向内插器的关键字值数据相对应的旋转变换值被直接输入到第三四元数乘法器1824和第五四元数乘法器1828中并且当一下一关键帧的一旋转变换值被输入时经延迟器1822被输入到第四四元数乘法器1826中。另外,从第二四元数乘法器1870输出的复原旋转变换值被输入到第四四元数乘法器1826和第五四元数乘法器1828中。
第三四元数乘法器1824通过将当前关键帧的旋转变换值四元数乘以前关键帧的旋转变换值生成旋转差分值QA并将QA输出到旋转方向误差检测器1830中。旋转差分值QA表示在一时间间隔[ti-1,ti]间一对象的一原始旋转方向。
第四四元数乘法器1826通过将前关键帧的旋转变换值四元数乘以前关键帧的复原旋转变换值生成旋转差分值QB并将QB输出到旋转方向误差检测器1830中。通过第四四元数乘法器1826计算的旋转差分值QB表示由一量化误差在一预定时间瞬间ti-1引起的一对象的旋转方向误差和旋转方向并与如图17所示的区2相对应。
第五四元数乘法器1828通过将当前关键帧的旋转变换值四元数乘以前关键帧的复原旋转变换值生成旋转差分值QC并将QC输出到旋转方向误差检测器1830。由第五四元数乘法器1828计算的旋转差分值QC表示在预定时间瞬间ti被编码的一旋转差分值且与如图17所示的区4相对应。
旋转方向误差检测器1830在步骤S19240中使用从旋转方向误差计算器1820输入的旋转差分值QA、QB和QC来核对在译码编码的关键字值数据的过程中该对象是否在与一原始方向相反的方向中旋转。为完成该功能,旋转方向误差检测器1830核对旋转差分值QA、QB和QC是否满足不等式(30)至(34)。首先,旋转方向误差检测器1830核对旋转差分值QA和QC是否满足不等式(30)。
在不等式(30)中,当从旋转方向误差计算器1820输入的旋转差分值QA由QA=(qA,0,qA,1,qA,2,qA,3)T时,
表示QA的四个分量qA,0,qA,1,qA,2,qA,3除第一分量qA,0所组成的一三维矢理(qA,1,qA,2,qA,3)T。
表示由QC的四个分量qC,0,qC,1,qC,2,qC,3除第一分量qC,0外组成的一三维矢量(qC,1,qC,2,qC,3)T。不等式(30)表示两个3D矢量(qA,1,qA,2,qA,3)T和(qC,1,qC,2,qC,3)T的一内积小于0的一条件。
如果不等式(30)中的内积小于0,一对象的旋转方向当使用QA时与当使用QC时的旋转方向相反。当内积小于0时,在不等式(30)中所示的一逻辑表达式的一值被设置为“true”。当内积大于0时,该逻辑表达式的值被设置为“false”。
在不等式(31)中,当从旋转方向误差计算器1820输入的旋转差分值QB由QB=(qB,0,qB,1,qB,2,qB,3)T时,
表示QB的四个分量qB,0,qB,1,qB,2,qB,3除第一分量qB,0组成的一三维矢理(qB,1,qB,2,qB,3)T。
表示由QC的四个分量qC,0,qC,1,qC,2,qC,3除第一分量qC,0外组成的一三维矢量(qC,1,qC,2,qC,3)T。不等式(31)表示两个3D矢量(qB,1,qB,2,qB,3)T和(qC,1,qC,2,qC,3)T的一内积小于0的一条件。
如果不等式(31)中的内积小于0,一对象的旋转方向当使用QB时与当使用QC时的旋转方向相反。当内积小于0时,在不等式(31)中所示的一逻辑表示达的一值被设置为“true”。当内积大于0时,该逻辑表达式的值被设置为“false”。
ATH<2cos-1|qA,0| ...(32)
在不等式(32)中,qA,0表示旋转差分值QA的第一分量,以及ATH被设置为接近0的一预定常数。当在不等式(32)中,2cos-1|qA,0|大于ATH时,在不等式(32)中所示的一逻辑表达式的一值被设定为“true”。当2cos-1|qA,0|不大于ATH时,逻辑表达式的值被设定为“false”。当不等式(32)被设置为“false”时,这表示当根据本发明实现关键字值数据编码器300时小于预定常数ATH的一旋转角θ(=2cos-1|qA,0|)能被忽略。即使存在一旋转方向误差几乎等于旋转角θ,旋转方向误差不能导致对人眼来说严重失真的图像,特别是当使用由本发明建议的一误差测量方法。
ATH<2cos-1|qB,0| ...(33)
在不等式(33)中,qB,0表示旋转差分值QB的第一分量,并且ATH是与不等式(32)中相应的一个相同。当在不等式(33)中,2cos-1|qB,0|大于ATH时,在不等式(33)中所示的一逻辑表达式的一值被设定为“true”。当2cos-1|qB,0|不大于ATH时,该逻辑表达式的值被设定为“false”。
ATH<2cos-1|qC,0| ...(34)
在不等式(34)中,qC,0表示旋转差分值QC的第一分量,以及ATH是与不等式(32)中相应的一个相同。当在不等式(34)中,2cos-1|qC,0|大于ATH时,在不等式(34)中所示的一逻辑表达式的一值被设定为“true”。当2cos-1|qC,0|不大于ATH时,该逻辑表达式的值被设定为“false”。
旋转方向误差检测器1830在不等式(30)至(34)的逻辑值上执行一AND操作并将该AND操作的结果输出到旋转方向选择器1835中。
在一预定时间瞬间t,该第一四元数乘法器1810具有两个输入值Qi和
第一四元数乘法器1810使用两个输入值Qi和
将一旋转差分值输出。如上所述,在区1中,接收旋转差分数据的用于译码已编码关键字值数据的装置顺时针旋转一对象。然而,该对象必须从在按由Qi-1表示的预定度数旋转后当前所处的一位置旋转到假定在按由Qi表示的预定度数旋转后所处的一位置,从而该对象的原始旋转方向必须是一逆时针方向。
因此,旋转方向校正器1815校正该对象的旋转方向以便该对象能在基于
所旋转的相同方向旋转等于由
所表示的一旋转角,如图17所示,即,因此该对象能从基于
旋转后的当前所处的位置逆时针旋转到假定按等于由
表示的一旋转角旋转后所处的位置。
为此,该旋转方向校正器1815建立新的旋转信息以使该对象按差不多1180度逆时针从在按
的预定角度旋转后当前所处的位置旋转。因此,该对象的旋转方向被校正成与最初方向相同,以及能最小化一旋转方向误差。该旋转方向校正器1815在步骤S19260中接收来自该第一四元数乘法器1810的当前关键帧的旋转差分数据
生成具有一校正的旋转方向的旋转差分数据,并将该校正的旋转差分数据输出到旋转方向选择器1835中。
参考图19A,在步骤S19300中,旋转方向选择器1835核对从旋转方向误差检测器1830输入的逻辑值是否为真。如果输入的逻辑值为真,在步骤S19400中,该旋转方向选择器1835确定如图17所示的区1发生的相同的现象已经发生并将由等式(29)定义的校正的旋转差分值Qs输出到量化器1840中。
另一方面,如果输入的逻辑值是假,在步骤S19500中,旋转方向选择器1835确定没有发生在区1中发生的相同的现象并将从第一四元数乘法器1810输入的旋转差分值
输出到量化器1840中。
在下文中,将描述一种根据本发明第三实施例的关键字值数据编码器300。
由于根据本发明的第一和第二实施例的关键字值数据编码器300仅编码一旋转差分值的四个分量中的三个分量,因为一量化误差它们不能使用等式(24)来复原该四元数的一第一分量值,例如,一复原旋转差分值的一第一分量可能是一虚数。
为防止由于仅编码一四元数的三个分量所带来的问题,根据本发明第三实施例的关键字值数据编码器300包括一量化器,其能适当地调节三个量化的分量值以便当译码编码的关键字值数据时,另一分量能被复原成一正实数并减小图像的矢真。
根据本发明第三实施例的关键字值数据编码器300,除一量化器2000的结构外,与根据本发明的第一或第二实施例的关键字值数据编码器相同,因此下面将仅描述该量化器2000的结构。
图20A是包含在根据本发明第三实施例的关键字值数据编码器300中的一量化器2000的框图。参考图20A,一量化器2000包括一量化单元2010,一量化数据调节器2020,一逆量化器2030,以及一误差测量单元2050。该量化单元2010量化输入到其中的一旋转差分值。该量化数据调节器2020逆调节一量化旋转差分数据。该逆量化器2030逆量化已量化的旋转差分数据。该旋转差分值复原器2040通过使用逆量化分量来复原量化的旋转差分数据的一第一分量来复原所有量化的旋转差分数据的分量值。该误差测量单元2050测量一复原差分值与一原始输入的旋转差分值间的一误差并更新量化的旋转差分值。
图20B是量化器2010的操作流程图。参考图20B,当从第一四元数乘法器输入一旋转差分值
时,在步骤S20050中,该量化器2010使用等式(23)量化输入的旋转差分值
并将量化的旋转差分数据
输出到量化数据调节器2020中。
量化数据调节器2020在步骤S20100中用下面的等式(35)来调节量化旋转差分数据
的三个分量。
i,j,k,和d是整数) …(35)在等式(35)中,i,j,k均是变量,其将能被添加到旋转差分数据上以便调节旋转差分数据,并被用于定义i,j,k的范围。量化旋转差分数据
的三个调节分量被输出到逆量化器2030中。
在步骤S00200中,逆量化器2030逆量化调节量化旋转差分数据Iijk并将逆量化的旋转差分值
(或逆量化的结果)输出到旋转差分值复原器2040中。
在步骤S20300中,接收逆量化的旋转差分值
的三个分量的旋转差分值复原器2040用等式(24)复原旋转差分数据的一第一分量并将一复原旋转差分值输出到误差测量单元2050中。
误差测量单元2050核对输入到其中的一旋转差分值的一第一分量值。在步骤S20400中,如果该第一分量值是一实数,则误差测量单元2050执行误差测量。另一方面,如果该第一分量值是一虚数,则该方法转入步骤S20600。
当该输入旋转差分值的第一分量是一实数时,误差测量单元2050在步骤S20450中测量在一原始旋转差分值和一复原旋转差分值间的一误差eijk并在步骤S20500中核对eijk是否小于一调节误差
下面将参考图27来描述测量原始旋转差分值与复原旋转差分值间的eijk的方法。
如果测量误差eijk小于调节误差
在步骤S20550中eijk替换
然后在步骤S0060中核对变量i,j以及k是否属于一调节范围[-d,+d]。如果变量i,j以及k属于调节范围[-d,+d],则误差测量单元2040重复执行步骤S20100至S20550在步骤S20100中,在步骤S20100至S20550的每个循环间,在一嵌套的循环方式中,将量化的旋转差分数据的二至4个分量加1。
例如,一量化的数据调节器2020保持第二和第三分量,试图通过增加k值到第四分量值上,同时在k值超过+d之前通过连续将k值加1来逐步增加k值使复原第一分量成为一实数,然后找出第四个调节分量值,这能最小化一输入旋转差分值与一复原旋转差分值间的一误差。
如果k值到达+d,该量化数据调节器2020试图通过用-d来初始化k值并将一j值加到第三分量值上同时通过将j(-d≤j≤+d)值加1来增加j值并将一k值加到第四分量值上同时在k值超过+d前通过连续地将k(-d≤k≤+d)值加1来逐步地增加k值来使该复原第一分量变成一实数值,然后找到第四调节分量值,这能减少一输入的旋转差分值与一复原旋转差分值间的一误差。
如果j值到达+d,该量化数据调节器2020试图通过用-d来初始化j和k值并将一i值加到第二分量值上同时通过将i(-d≤i≤+d)值加1来增加i值并将一j值加到第三分量值和将一k值加到第四分量上同时在k值超过+d前通过连续地将k(-d≤k≤+d)值加1来逐步地增加k值来使该复原第一分量变成一实数值,然后找到第四调节分量值,这能减少一输入的旋转差分值与一复原旋转差分值间的一误差。
重复上述处理直到i,j,k达到+d为止然后找出能减少一输入的旋转差分值与一复原旋转差分值间的一误差的四个调节分量值。
误差测量单元2050在步骤S20700中核对调节误差
是否小于一最终误差
同时改变第二至第四分量值。如果
小于
代替
同时在步骤S20750中用下面的等式(36)来校正量化的旋转差分数据。
此后,误差测量单元2050将校正的旋转差分数据输出到量化的数据调节器2020中。
量化的数据调节器2020将变量i,j,k值设置为-d并在输入到其中的旋转差分数据上再次执行步骤S20100至S20600。然后,量化数据调节器2020用输入旋转差分数据来核对是否存在一具有比在前存储的最终误差更小的误差的旋转差分数据。
如果调节误差
大于最终误差
误差测量单元2050在步骤S20800中将与当前存储的最终端误差
相对应的量化的旋转差分数据输出到一循环DPCM运算符中。
在下文中,将参考图21A至25来更全面地描述一种根据本发明一优选实施例对一位流进行译码的装置和方法,将一定向内插器进行译码成上述位流。
图21A是根据本发明一优选实施例的用于译码一定向内插器的装置的框图,以及图21B根据本发明一优选实施例给出了一种用于编码一定向内插器的方法流程图。
参考图21A,用于译码一定向内插器的装置包括一关键字数据译码器2120,一关键字值数据译码器2150,一标题译码器2110,以及一定向内插器合成器2180。该关键字数据译码器2120译码来自一输入位流的关键字数据。该关键字值数据译码器2150译码来自该输入位流的关键字值数据。该标题译码器2110译码来自该输入位流的标题信息并将该译码标题信息输出到关键字数据译码器2120和关键字值数据译码器2150。该一定向内插器合成器2180合成译码关键字数据和译码关键字值数据并输出一译码定向内插器。
参考图21B,由用于编码如图3所示的一定位内插器的装置所编码的一位流在步骤S21000中被输入到关键字数据译码器2120、关键字值数据译码器2150以及标题译码器2110中。
在步骤S21100中,标题译码器2110译码来自该输入位流的标题信息并将译码标题信息提供给关键字数据译码器、关键字值数据译码器2150以及定向内插器合成器2180中。
关键字数据译码器2120熵译码来自输入位流的关键字数据,通过执行一预定逆DND操作、一逆折叠操作以及一逆移位操作来生成译码关键字数据以及将译码关键字数据输出到定向内插器合成器2180中。关键字值数据译码器2150熵译码来自输入位流的关键字值数据,生成一旋转差分值,该旋转差分值用来通过几乎等于旋转变换间的一差值来旋转一对象,通过逆量化译码旋转差分数据的每个关键帧的四元数关键字值数据将该旋转变换应用到该对象,通过将一当前关键帧的一旋转差分值四元数乘以一前关键帧的一旋转变换值来复原该当前关键帧的一旋转变换值并在步骤S21200中将该当前关键帧的旋转变换值输出到该定向内插器合成器2180。
定向内插器合成器2180通过将输入到其中的关键字数据和关键字值数据用一浮点生成模式和从标题译码器2110输入的一关键字选择特征位来复原一定向内插器,并在步骤S21400中将复原的定向内插器输出。
在下文中,将参考图22至23B来描述根据本发明一优选实施例的一关键字数据译码器2120以及根据本发明一优选实施例的一种译码关键字数据的方法。
图22是关键字数据译码器2120的一框图。关键字数据译码器2120接收一编码位流以及通过译码将其重建成关键字数据。
关键字数据译码器2120包括一熵译码器2260、一逆DND处理器2250、一逆折叠处理器2240、一逆移位器2230、一逆DPCM处理器2220、一逆量化器2210、一线性关键字译码器2200、以及一浮点数逆转换器2205。
图23A是根据本发明一优选实施例的一种用于译码关键字数据的方法流程图。参考图22和23A,将关键字数据压缩成其的一位流被输入到标题译码器2110以及熵译码器2260中。
在步骤S23000中,标题译码器2110译码用于译码所需的每个步骤的信息片并将它们提供给译码它们的相应步骤。用每个译码步骤来描述由标题译码器2110译码的信息。
熵译码器2260从标题译码器2110接收将被译码的差分数据的数量以及已经用于编码的位的数量即将被用于译码的的位的数量,以及在步骤S23100中译码输入位流。差分数据的数量等于从关键字数据的数量减去通过执行DPCM获得的内部关键字数据的数量的结果。
熵译码器2260识别基于包括在该位流中的预定信息,如在本实施例中的bSignedAACFlag来识别将被译码的差分数据是否具有负值或正值。如果编码的差分数据具有负值,熵译码器2260使用函数decodeSignedAAC()来译码它们。另一方面,如果编码差分数据仅具有正值,熵译码器2260使用函数decodeUnsignedAAC()来译码它们。然后,将译码差分数据传送到逆DND处理器2250。
逆DND处理器2250从标题译码器2110接收在每个DND周期中的DND的次数以及一最大值nKeyMax。
如果DND的次数为-1,这表示正被译码的编码差分数据已经经过一DPCM操作以及一移位操作而不是经过DND被熵译码,以及该方法直接进入到执行一逆移位操作的步骤上。如果DND的次数为0,这表示正被译码的编码差分数据已经经过一折叠操作而不是经过DND被熵译码,因此该方法直接进入到执行一逆折叠操作的步骤上。如果DND次数大于0,在步骤S23200中执行一逆DND操作。
逆DND处理器2250在步骤S23300中确定正被译码的编码差分数据是否已经经过一上移操作被编码。在本发明的一优选实施例中,通过核对包括在一位流中的nKeyInvertDown是否大于0来确定正被译码的编码差分数据经过一上移操作被编码。
如果正被译码的编码差分数据没有经过一上移操作,该方法进入到执行一逆DND的步骤上。另一方面,如果正被译码的编码差分数据已经经过一上移操作,通过执行一上移操作已经从一正数区域转移到一负数区域的差分数据在步骤S23400中被移回到负数区域。在本发明一优选实施例中,已经经过一上移操作的差分数据通过执行用下面的等式来表示的一下移操作(一反转操作)被复原。
invert-down(v) …(37)
=v (v≤nKeyInvertDown)
=nKeyInvertDown-v (v>nKeyInvertDown)
在这里,nKeyInvertDown与用在上移操作中的最大值nKeyMax具有相同值。作为下移操作的结果,具有超过nKeyInvertDown的一值的差分数据被转换成低于-1的负值。
根据在每个DND周期中的最大值nKeyMax在经过下移操作的差分数据上有选择地执行一逆下划操作或一逆上划操作。
参考图23B,逆DND处理器2250执行与该差分数据在编码期间经过的一DND操作一样的多次逆DND操作。换句话说,逆DND处理器2250设置等于DND的次数的逆DND的次数的一初始值。接着,当逆DND处理器2250每次执行一逆DND操作时,从逆DND次数的初值值减1并继续执行逆DND操作直到逆DND的次数变为1为止。逆DND处理器2250在每个DND周期中查找nKeyMax以及在步骤S23510中核对每个nKeyMax是否小于0。
如果nKeyMax小于0,它表示在编码过程中已经执行一上划操作,因此,在步骤S23530中,通过执行一逆上划操作,逆DND处理器2250将正被编码的差分数据的范围扩展到一负数区域。在本发明的一优选实施例中,可使用由下述等式(38)定义的一逆上划操作。
inverse-divide-up(v) …(38)
=v (v≥0)
然而,如果nKeyMax不小于0,逆DND处理器2250核对逆DND的次数是否为1。如果逆DND的次数不为1,它表示对编码过程中所译码的差分数据执行一下划操作,因此逆DND处理器2250通过执行一逆下划操作将差分数据的范围扩展到一正数区域。
在本发明的一优选实施例中,可使用由下述等式定义的一逆下划操作。
inverse-divide-down(v) …(39)
=v (if v≥0)
如果nKeyMax不小于0且逆DND的次数为1,在步骤S23590中,逆DND处理器2250在执行一逆分割操作后结束整个逆DND操作。在本发明的一优选实施例中,可使用由下述等式(40)定义的一逆分割操作。
inverse-divide(v)…(40)
=v (v≥0)
=v+(nKeyMax0+1) (v<0)
已经经过逆DND操作的关键字数据的差分数据被输入到逆折叠处理器2240中,以及逆折叠处理器2240在该差分数据上执行一逆折叠操作以便过去仅在一正数区域中的差分数据在步骤S23600中被划分成正值和负值。在本发明的一优选实施例中,可使用由等式(41)定义的一逆折叠操作。
已经经过逆折叠操作的差分数据被输出到逆移位器2230,以及在步骤S23700中,逆移位器2230将用在编码过程中并从标题译码器2110输入的一模式nKeyShift添加到从逆折叠处理器2240输入的差分数据上。该操作由下述等式来表示。
inverse-shift(v)=v+nKeyshift …(42)
逆DPCM处理器在步骤S23800中使用从标题编码器2110输入的DPCM的次数将从逆移位器2230输入的差分数据复原成量化关键字数据。逆移位器2230用下述等式(43)执行与DPCM的次数同样多次数的一逆DPCM操作。
v(i+1)=v(i)+delta(i) …(43)
在这里,i表示差分数据和关键字数据的一指数,v表示一整数数组,以及delta(i)表示差分数据。
已经经过逆DPCM操作的量化关键字数据被输入到逆量化器2210中。然后,逆量化器2210从标题译码器2110接收有关量化位的大小nKeyQbit以及用于逆量化的最大和最小值是否已经被浮点数转换器905编码的信息并在步骤S23900k使用下述等式将量化关键字数据转换成逆量化关键字数据。
如果在编码关键字数据的过程中,用于量化的最大和最小值没有被浮点数转换器905转换,将在等式(44)中所示的fKeyMin和fKeyMax分别设置为0和1。然而,如果浮点数转换器905已经转换用于量化的最大和最小值,被浮点数逆转换器2205逆转换的最大和最小值被分别用作用于逆量化的最大和最小值。
下面将描述实现逆量化逆DND操作的程序代码的例子。
从逆量化器2210输出的译码关键字数据被添加到在线性关键字译码器2200中译码的关键字数据中,从而构成译码关键字数据。
在下文中,下面将描述一线性关键字译码过程。
标题译码器2110译码来自一位流的关键字标题信息。如果有关一线性关键字数据的信息存在于该位流中,标题译码器2110将要求用于译码该线性关键字数据区域的开始和结尾关键字输出到浮点数逆转换器2205中并将被编码为线性关键字的关键字的数量输出到线性关键字译码器2200中。
浮点数逆转换器2205将用十进制数表示的线性关键字数据区域的开始和结尾关键字逆转换成二进制数并将该二进制数输出到线性关键字译码器2200中。
假定将被译码的两个浮点数被称为fKeyMin和fKeyMax,译码fKeyMin的过程如下。
标题译码器2110从一位流读取fKeyMin的位数。如果fKeyMin的位数为0,则fKeyMin被设置为0,以及从该位流读取fKeyMax的位数以便译码fKeyMax。如果fKeyMax的位数不小于8,这表示fKeyMax已经用IEEE标准754编码过。因此,浮点数fKeyMax在读取其32位后被编码。
然而,如果fKeyMax的位数在1和7之间,标题译码器2110从该位流读取一特征位。在本发明的一优选实施例中,如果特征位为1,MinKeyMantissaSign被设置为-1。另一方面,如果特征位为0,MinKeyMantissaSign被设置为1。此后,参考表1获得要求用于编码的位的数量,该表示出了一尾数的位数与编码所需的位的数量间的关系。接着,读取与编码所需的位的数量一样多的该位流的数量并存储在MinKeyMantissa。然后读取该位流的下一位被用与存储在MinKeyMantissa中的尾数的特征位的相同的方式来存储在MinKeyExponentSign中。与一指数值相对应的该位流的接下来六位被读取并存储在MinKeyExponent中。
通过将从标题译码器2110输入的值代入等式(45)中来复原fKeyMin。
复原fKeyMax的过程与复原fKeyMin的过程相同。具体来说,在从该位流读取fKeyMax的指数前,确定与fKeyMin的指数相同的值是否被用作fKeyMax的指数。如果与fKeyMin的指数相同的值不被用作fKeyMax的指数,与从该位流读取fKeyMin的指数相同的方式从该位流读取fKeyMax的指数。
线性关键字译码器2200从浮点数逆转换器2205接收线性关键字数据区域的开始和结尾关键字并用下述等式(46)译码线性关键字数据区域。
(i=0,…nNumberOfLinearKey-1)
在这里,fKeyMin和fKeyMax分别表示该线性关键字数据区域的开始和结尾关键字数据。
在线性关键字数据区域中利用上述方法所译码的关键字数据被添加到从逆量化器2210输出的关键字数据中,然后将添加结果输出作为最终关键字数据。
在下文中,将参考图24A至25来描述根据本发明一优选实施例的用于译码一定向内插器的装置以及根据本发明一优选实施例的用于编码关键字值数据的方法。
图24A是根据本发明一优选实施例的一种用于译码一定向内插器的装置的框图。参考图24A,用于译码一定向内插器的装置包括一标题译码器2110,一熵译码器2410,一逆循环DPCM运算符2420,一逆量化器2430,以及一四元数乘法器2440。该标题译码器2110对为译码由来自一输入位流的一四元数所表示的关键字值数据所需的标题信息进行译码并将该译码的标题信息提供给一关键字值数据译码器2150。该熵译码器2410通过熵译码来自该输入位流的熵编码关键字值数据来生成一循环的DPCM旋转差分数据或量化的旋转差分数据。该逆循环DPCM运算符2420通过在输入到其中的循环DPCM旋转差分数据上执行一逆循环DPCM操作来生成量化的旋转差分数据。该逆量化器2430通过逆量化已量化的旋转以及差分数据来生成一旋转差分值。该一四元数乘法器2440通过将当前关键帧的一旋转差分值四元数乘以一前关键帧的一旋转变换值来生成一当前关键帧的一旋转变换值。
图24B是根据本发明一优选实施例的用于译码关键字值数据的方法流程图。参考图24B,一位流被输入到标题译码器2110以及关键字值数据译码器2150的熵译码器2140中,利用根据本发明的用于编码一定向内插器的装置将关键字值数据编码成上述位流。
在步骤S24100中,标题译码器2110译码用于译码来自该输入位流的关键字值数据所要求的标题信息并将该译码的标题信息提供给关键字值数据译码器2150中。
在标题信息中,对基于DPCM次数的已被量化成四元数中的第一和第二内部关键字值数据以及多个用来译码其它关键字值数据的特征位进行编码。
如果DPCM的次数为1(例如,如果多个特征位之一的nKVDPCMOrder被设置为0),将第一量化的关键字值数据包括在标题信息中作为内部关键字值数据。如果第一逆量化的关键字值数据的一四元数值满足第一逆量化关键字值数据用下述等式(48)来计算。
在等式(48)中,仅当类OrilDPCMKeyValueHeader中的nFirstXSign为1或在其它条件下为-1时,xSign为1。Ysign和zSign分别与nFirstYSign和nFirstZSign具有如xSign与nFirstXSign间的关系相同的关系。
由等式(48)定义的复原四元数分量值被转换成将被用作一定向内插器的一角位移。从关键字值数据复原每个角位移能用一四维矢量表示,其中i表示当前关键字数据,
表示一旋转轴的矢量,以及
表示一逆时针旋转角。因此,复原四元数分量值用下面的等式(49)被转换成角位移。
如果DPCM的次数为2,例如,如果nKVDPCMOrder被设置为1,第一和第二量化的关键字值数据被包括在标题信息中。用与上面描述的相同的方式复原第一量化的关键字值数据。然后,用一种不同的方法复原第二关键字值数据。换句话说,仅将第二量化关键字值数据的第三分量与一编码的位流一起被传送以及它们的值不是内部关键字值数据而是具有第一关键字值数据的不同的数据假定表示逆量化的关键字值数据的第二关键字值数据的一四元数满足
用下面的等式(50)来计算。
在等式(50)中,仅当类OrilDPCMKeyValueHeader中的nSecondXSign为1或在其它条件下为-1时,secondXSign为1。secondYsign和secondZSign分别与nSecondYSign和nSecondZSign具有如xSign与nSecondXSign间的关系相同的关系。如果表示第二逆量化的关键字值数据的一四元数
满足
是通过
乘以
计算得出的。换句话说,
标题译码器2110将译码的关键字值数据和译码的标题信息输出给关键字值译码器2150。
熵译码器2410接收一位流并利用在步骤S24120至S24128中由标题译码器2110所编码的译码信息对输入的位流进行熵编码,其中关键字值数据的差分数据被编码成上述位流。
图25是描述输入到熵译码器2140中的一位流的结构图。在图25中,假定N(nNumberOfKeyValue)表示编码的关键字值数据的数量,当DPCM的次数为0时,包括在一位流中的每个分量的旋转差分数据的数量为N-1(0,1,...,nNumberOfKeyValue-2)。当DPCM的次数为1时,包括在位流中的每个分量的旋转差分数据的数量为N-2(0,1,...,nNumberOfKeyValue-3)。
熵译码器2410接收来自标题译码器2110的x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag并在步骤S24120中核对x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag每个是否被设定为1。
在步骤S24l22中,当x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag每个均被设定为0时,被认为所有量化的关键字值数据或每个分量的所有差分数据同在类OrilKeyValueCodingBit中的nAllKeyValues相同。因此,熵译码器2410将每个分量的关键字值数据译码成与从标题译码器2110输入的nAllKeyValues的相同值并将译码的关键字值数据输出到逆循环DPCM运算符2420中。
如果x_keyvalue_fiag、y_keyvalue_flag以及z_keyvalue_flag不是设定为0,例如,如果x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag被设定为1,熵译码器2410核对从关键字值标题译码器2110输入的一熵译码模式以便在步骤S24124中译码输入的关键字值数据的每个分量
当熵译码模式是一二进制译码模式时,在步骤S24126中,熵译码器2420使用如表3所示的一函数decodeSignedAAC()译码一自适应的算术上的编码的位流并将量化的旋转差分数据输出到逆循环DPCM运算符2420中。
表3
另一方面,当熵译码模式不是一二进制译码模式时,在步骤S24128中,熵译码器2410使用一函数decodeUnaryAAC()译码输入位流。函数decodeUnaryAAC()通过连续地读取0直到从该位流中读出1为止、将连续Os的数量转换成它的绝对值,读取与位“1”邻近的一位,并将该位转换成一特征位来译码该输入位流,然后将量化的旋转差分值输出到逆循环DPCM运算符2420中。函数decodeUnaryAAC()的例子如表4所示。
表4
在上述函数decodeSignedAAC()和decodeUnaryAAC()中所采用的qf_decode()被用来从一自适应的算术上的编码的位流中读取位1并且由国际标准组织授权的文献ISO/IEC14496-21999Coding of Audio-VisualObjectVisual定义。
逆循环DPCM运算符2420从熵译码器2410接收熵译码的关键字值数据并核对从关键字值标题译码器2110输入的DPCM的次数。如果DPCM的次数为0,在步骤S24130中,逆循环DPCM运算符2420将译码的旋转差分数据
输出到逆量化器2430中,因为从熵译码器2410输入的熵译码的关键字值数据是量化的旋转差分数据。
另一方面,如果DPCM的次数为1,逆循环DPCM运算符2420在步骤S24135执行一逆循环DPCM操作,因为从熵译码器2410输入的熵译码关键字值数据是循环的DPCM旋转差分数据。
假定nKVQBit表示逆量化位,逆循环DPCM运算符2420在旋转差分数据
上用等式(51)执行一逆循环DPCM操作并在步骤S24135中生成量化的循环差分数据
(i=2,…nNumberOfKeyValue-1)
此后,逆循环DPCM运算符2420分别使用

获得一逆DPCM值A以及一逆DPCM值B,如等式(52)所示。
(i=2,…,nNumberOfKeyValue-1)
如果B+(2nKVQBit-1-1)位于0和在一量化范围内的一最大值之间,逆循环DPCM运算符2420将B输出作为逆循环DPCM数据
另一方面,如果B+(2nKVQBit-1-1)小于0或大于在量化范围内的最大值时,逆循环DPCM运算符2420输出A作为
C十十程序代码的一个例子,其中写出了逆循环DPCM运算符2420的上述操作,如图3所示。
表5逆量化器2430接收由执45-一逆循环DPCM操作的逆循环DPCM运算符2420生成的量化的旋转差分数据通过在
上用等式(53)执行一逆量化操作来复原一旋转差分值将在步骤S24140中旋转差分值
输出到四元数乘法器2440中。
(f=2,…,nNumberOfKeyValue-1,j=1,2,3)
此后,四元数乘法器2440接收旋转差分值
四元数乘法器2440在步骤S24154中通过将输入旋转差分值
按下面的等式(54)四元数乘以一前关键帧的一旋转变换值
复原一当前关键帧的旋转变换值
(i=2,…nNumberOfKeyValue-1)
在复原一旋转变换值后,关键字值数据译码器2400在步骤S24156中核对复原旋转变换值是否与最后一个关键字值数据相对应。如果复原旋转变换值与最后一个关键字值数据不相对应,关键字值数据译码器2400重复执行步骤S24140至S24154。另一方面,如果复原旋转变换值是最后一个关键字值数据,则在步骤S24158中,关键字值数据译码器2400将复原旋转变换值输出。
如果DPCM的次数为0,逆循环DPCM运算符2420将译码的量化的旋转差分数据
(其中
)输出到逆量化器2430中。然后,通过逆量化从逆循环DPCM运算符2420输入的旋转差分数据
来生成一旋转差分值
(其中并在步骤S24140中将Qi输出到四元数乘法器2440中。
(i=1,…,nNumberOfKeyValue-1,j=1,2,3)
即使当DPCM的次数为0,四元数乘法器2440将与当DPCM的次数不为0时的几乎相同的方式(步骤S24150至S24158)来复原旋转变换值。当DPCM的次数不为0时,四元数乘法器2440用等式(56)执行四元数乘法。
(i=1,…nNumberOfKeyValue-1)
在下文中,将描述定向内插器合成器2180的操作。
图26是定向内插器合成器2180的操作流程图。参考图26,在步骤S26000中,定向内插器合成器2180接收译码关键字数据和译码关键字值数据并从标题译码器2110接收关键字数据的数量以及一断点生成模式以及关键字选择特征位。
在步骤S26100中,当断点生成模式是一动画路径保存模式时,定向内插器合成器2180输出译码关键字数据和译码关键字值数据。在一动画路径保存模式中已经抽取断点的情况下,关键字数据与关键字值数据相对应,因此,没有必要使用内插生成新的关键字值数据。然而,如果在一动画关键字保存模式中已经抽取断点,这表示仅与断点相对应的关键字值数据被编码同时所有关键字数据已经被编码和译码。因此,在这种情况下,关键字数据与关键字值数据不相对应,因此有必要内插将在下述段路中描述的关键字值数据。
当断点生成模式是一动画关键字保存模式时,在步骤S26200中,表示关键字选择特征位的数据的一指数的一计数器被设置从而与关键字数据相对应,以便计算与该关键字数据相对应的关键字值数据是否存在。
定向内插器合成器2180在步骤S26300中核对如果与由该计数器表示的关键字数据相对应的关键字值数据存在的话,则转入步骤S26500。
如果没有与由计数器表示的关键字数据相对应的关键字值数据,在步骤S26400中,通过使用与由两个连续断点表示的关键字数据相对应的关键字值数据,线性内插当前关键字值数据,定向内插器合成器2180生成关键字值数据,这两个连续断点包括在由该计数器所表示的关键字数据前的一个断点以及在由该计数器表示的关键字数据后的另一个断点。
此后,定向内插器合成器2180核对所有关键字值数据是否具有它们相应的关键字值数据并且在步骤S26500中对所有不具有与其相应的关键字值数据的关键字数据执行线性操作。如果仍然存在还没有被核对的关键字数据,定向内插器合成器2180更新计数器并再次执行步骤S26300至S26500。如果已经核对所有关键字数据,定向内插器合成器2180在步骤S26600中输出合成关键字数据和合成关键字值数据作为一定向内插器。
在下文中,将描述SDL语言程序代码的例子,通过该SDL语言程序代码,可实现用于根据本发明的译码一定向内插器的装置,该定向内插器译码关键字数据和关键字值数据。
图29是描述一类CompressedOrientationInterpolator的图。CompressedOrientationInterpolator是一个用于读取一定向内插器的一编码的位流的一最高类。KeyHeader、KeySelectionFlag和Key均是用于从一位流读取与在一常规内插器的关键字现场数据相对应的关键字数据信息的类。OrilKeyValueHeader和OrilDPCMKeyValue是用于读取有关与在一常规的定向内插器中关键字值现场数据相对应的关键字值数据的信息的类。函数qf_start()是使用自适应算术编码(AAC),用来在读取一位流前初始化算术译码器,其中编码关键字值数据。
图29B给出了对译码所需的一关键字标题进行译码的一关键字标题类的图。
关键字标题类包括关键字数据的数量、量化位、内部关键字数据、一DND标题以及实际用于译码译码的位的数量。nKeyQBit表示用在逆量化中来复原浮点关键字值的量化位。nNumKeyCodingBit表示nNumberOfKey的一位长,nNumberOfKey表示关键字数据的数量。nkeyDigit表示原始关键字数据的多个最高有效位并用来舍入译码值。
当有关线性关键字子区域的信息被包括在一关键字标题中时,一特征位blsLinearKeySubRegion被设置为1。在这种情况下,使用其后的一特征位blsLinearKeySubRegion的译码标题信息能计算包括在一整个关键字区域的特定线性关键字子区域中的关键字。bRangeFlag表示关键字数据范围是否从0到1。如果关键字数据范围不是从0到1,在关键字数据范围中的最小和最大值被从一类KeyMinMax类被译码。KeyMinMax重新获得要求用于逆量化的最小和最大值。上述每个值能被划分成它们各自的尾数和指数。
nBitSize是nQIntraKey的位的大小,以及nKeyShift是nKeyMax的一初始位的大小。nQIntraKey表示第一量化内部数据的大小并与表示nQIntraKey的一特征位的nQintraKeySign结合。nQintraKey被用作为复原其它量化关键字数据所需的一基数。在用在内插器压缩中的所有特征位中,一值“0”表示一正号,以及一值“1”表示一负号。nKDPCMOrder表示一值,该值是DPCM的次数减1。DPCM的次数可是1、2或3。量化内部数据的数量与DPCM的次数相同。
nKeyShift以及一符号位nKeyShiftSign是表示在一关键字数据译码器中的位移量的一整数。如果bShiftFlag被设置为“true”,译码nKeyShift以及nKeyShiftSign。nDNDOrder是二次划分(DND)操作的次数。DND操作在上面已经结合一关键字数据译码器描述过。如果nDNDOrder的值为7,则译码bNoDND。bNoDND表示是否将执行一逆DND操作。nKeyMax是在一逆DND操作的连续周期期间所使用的一最大值或一最小值。nKeyCodingBit表示用于编码关键字数据的位。
bSignedAACFlag表示在AAC译码期间将执行的一译码过程。如果bSignedAACFlag被设置为0,将执行一无符号的AAC译码过程。否则,将执行一带符号的AAC译码过程。bKeyInvertDownFlag是表示是否将使用nKeyInvertDown的一布尔值。nKeyInvertDown是用来将大于其自身的所有量化关键字数据转换成不小于-1的负数值的一整数。如果nKeyInvertDown被设置为-1,那幺将不执行一下移操作。
图29C是表示一类LinearKey的图。在图29C中,nNumLinearKeyCodingBit是表示对多个预定线性预测关键字进行编码所必须的位的数量。nNumberOfLinearKey是表示线性预测关键字的一值。
图29D是描述一类KeyMinMax的图。在图29D中,bMinKeyDigitSame是表示所有关键字的最高有效位的数量(nKeyDigit)和在关键字中的一最小值的最高有效位的数量是否相同的一特征位。nMinKeyDigit是表示在关键字中最小值的最高有效位的数量的一值。nMinKeyMantissaSign是表示nMinKeyMantissa的一特征位的一值。nMinKeyMantissa是表示在关键字中最小值的尾数的一值。nMinKeyExponentSign是表示nMinKeyExponent的一特征位的一值。
nMinKeyExponent是表示在关键字中最小值的尾数的一值。
fKeyMin是表示在关键字中最小值的一值。bMaxKeyDigitSame是表示所有关键字的最高有效位的数量nKeyDigit和在关键字中的一最大值的最高有效位的数量是否相同的一特征位。nMaxKeyDigit是表示在关键字中最大值的最高有效位的数量的一值。nMaxnKeyMantissaSign是表示nMaxnKeyMantissa的一特征位的一值。nMaxnKeyMantissa是表示在关键字中最大值的尾数的一值。
bSameExponent是表示在关键字中最大值的尾数是否与nMinKeyExponent相同的一特征位。nMaxKeyExponentSign是表示nMaxKeyExponent的一特征位的一值。nMaxKeyExponent是表示在关键字中最大值的尾数的一值。FkeyMax是表示在关键字中最大值的一值。
图29E是描述一类OrilKeyValueHeader的图。用在该类中的每个变量的含义如下。bPreserverKey表示一当前译码模式是否是一动画关键字保存模式或一动画路径保存模式。当bPreserverKey被设置为“true”时,当前译码模式是一动画关键字保存模式。
nKVQBit表示关键字值数据的一逆量化位的大小。nKVDPCMOrder表示用于译码关键字值数据的逆DPCM操作的次数。当nKVDPCMOrder=0时,不需要执行一逆循环DPCM操作。另一方面,当nKVDPCMOrder=1时,应该执行一具有2次方的逆循环DPCM操作。
图29F是描述一类OriDPCMKeyValueHeader的图。用在该类中的每个变量的含义如下。firstQKV_S、firstQKV_X、firstQKV_Y以及firstQKV_Z分别表示四个分量s,x,y以及z的第一值,构成一四元数(s,x,y,z)表示量化的关键字值数据。nfirstXSign,nfirstYSign以及nfirstZSign分别表示firstQKV_X、firstQKV_Y以及firstQKV_Z的特征位。secondQKV_X、secondQKV_Y以及secondQKV_Z分别表示三个分量x,y以及z的第二值,以及nsecondXSign,nsecondYSign以及nsecondZSign分别表示secondQKV_X、secondQKV_Y以及secondQKV_Z的特征位。BblsMoreTwoKVs表示当必须执行一逆循环DPCM时是否有将被译码的两个以上的关键字值数据。x_keyvalue_flag、y_keyValue_flag以及z_keyvalue_flag表示每个分量x,y以及z的所有量化值是否相同。
图29G是描述一类OrilKeyValueCodingBit的图。在该类中每个变量的含义如下。NnKVCodingBit表示用来存储量化后除内部关键字值数据(在类OrilDPCMKeyValueHeader中的firstQKV_S、firstQKV_X、firstQKV_Y、firstQKV_Z、secondQKV_X、secondQKV_Y以及secondQKV_Z外的所有量化关键字值数据的位的数量。
nAllKeyValue表示当用于每个分量的keyvalue_flag设置为0时所有关键字值数据的每个分量的一量化的值。nSign表示nAllKeyValue的特征位。BlsUnaryAAC表示用于译码每个分量x,y和z的量化值的一种自适应算术量化方法。如果BlsUnaryAAC被设置为“true”,将使用一unaryAAC译码函数。另一方面,如果BlsUnaryAAC被设置为“false”,则将使用一binaryAAC译码函数。
图29H是描述一类KeySelectionFlag的图。在该类KeySelectionFlag中,keyFlag表示是否已经编码第i个关键字数据。nNumOfKeyValue是表示将被译码的关键字值数据的数量的一整数。
图29I是描述一类Key的图。在该类Key中,nQKey是从一位流译码的量化关键数据的一数组。KeyContext是用于读取nQKey的一大小的一环境(context)。KeySignContext是用于读取nQKey的一符号的一环境。
DecodeUnsignedAAc是用来执行具有一给定环境的自适应算术编码的一不带符号的译码过程的一函数,这将在下面描述。DecodeSignedAAC是用于执行具有一给定环境的自适应算术编码的一带符号的译码过程的一函数,这将在下面描述。
图29J是描述一类OrilDPCMKeyValue的图。在该类中每个变量的含义如下。DeltaKeyValue被用来以四元数的形式存储包括三个分量x,y和z的量化的关键字值数据。存储在DeltaKeyValue中的量化的关键字值数据使用一函数decodeUnaryAAC或decodeSignedAAC从一位流中被译码。
kVXSignContext,kVYSignContext,kVZSignContext是用于使用函数decodeUnaryAAC或decodeSignedAAC来译码DeltaKeyValue三个分量x,y和z的环境。
kVXUnaryContext,kVYUnaryContext,kVZUnaryContext是用于使用函数decodeUnaryAAC来译码DeltaKeyValue三个分量x,y和z的环境。
kVXContext,kVYContext,kVZContext是用于使用函数decodeedAAC来译码DeltaKeyValue三个分量x,y和z的环境。
在下文中,将参考本发明第三实施例来描述在包含在根据本发明第三实施例的量化器2000中的误差测量单元2050中所执行的用于测量一原始旋转差分数据值与一旋转差分数据值间的一误差的方法,以及用于测量一原始旋转差分值与一旋转差分值间的一误差的方法,上述旋转差分数据值是通过对分别包含在如图4A至4C所示的断点抽取器42、46、48中的误差计算器42b,46b以及48b中的已量化旋转差分值进行逆量化而复原的,上述旋转差分值是通过对已量化旋转差分值进行逆量化而复原的。
根据本发明,测量一原始旋转差分值和一复原旋转差分值间的一误差的方法也能被用来测量编码前的一原始定向内插器与通过译码一编码定向内插器生成的一定向内插器间的误差。因此,一定向内插器的一动画路径,将由断点抽取器42、46或48从其抽取断点,以及用在误差测量单元250中的原始旋转差分值将被描述成与编码前的一定向内插器相对应。同样,由抽取断点所构成的一定向内插器的一动画路径以及用在误差测量单元2050中的复原旋转差分值将被描述成与译码定向内插器的关键字值数据相对应。
在编码一定向内插器的过程中,在量化期间在原始定向内插器和一复原定向内插器间产生一误差。在这里,原始定向内插器和复原定向内插器间的误差是由使用在原始旋转变换和复原旋转变换间的角度中的一差值定义。
换句话说,假定包含在一定向内插器节点中的一关键字值数据与在一译码器中的其复原关键字值数据分别被称为

其中
表示一旋转轴,以及θ表示一旋转角并满足θ∈[-π,π],通过旋转变换,在一三维空间中的一对象基于

被分别从一任意位置
移动到一任意位置
以及从
移动到一任意位置
一量化误差是

间的差值并满足以四元数形式表示的

如等式(57)中所示。
当表示

的四元数被称为Q和
时,可导出下述等式。
Y=Q×X×Q* …(58)
X=Q*×Y×Q
此时,A×B表示四元数乘法,以及A*表示A的一复共轭。基于等式(57)和(58),可导出下述等式。
此时,Qerror是表示在旋转变换方面

间的关系以及由下述等式来定义。


间的一差分旋转角被称为θerror时,使用一四元数变换公式以及等式(61)可获得θerror。
此时,·表示一内积操作。等式(61)定义在一预定时间瞬间在所有动画关键帧中发生的瞬时量化误差,因此,根据本发明的第三实施例,包括在量化器2000中的误差测量单元2050用等式(61)计算一原始定向内插器和一复原定向内插器间的一误差。
另外,可用下述等式定义在预定时间瞬间(t)的一瞬时量化误差以便从等式(62)导出用于获得在一整个动画间隔中的一量化误差的一公式。
通过大量地将公式(62)应用到整个关键帧间隔来导出一平均误差Em以及一最大误差Ep,在这期间,可使用一定向内插器来执行一动画。
此时,为获得平均误差Em,必须首先获得在间隔[ti-1,ti]中误差的部分和
如图27所示。在下文中,当在预定时间ti-1和ti与原始关键字数据相对应的译码关键字数据存在时,预定时间将分别被称为

与原始关键字值数据Qi-1和Qi相对应的译码的关键字值数据将被分别称为

由于在编码关键字数据期间生成的噪音,不可能直接计算一原始定向内插器的原始动画路径Qi′与一译码定向内插器的一动画路径
间的一误差,如图27所示。因此,间隔[ti-1,ti]必须被划分成三个子间隔

接着,使用等式(63)来获得在

的四元数值。
在等式(63)中,函数SLERP()被用来执行球性线性内插。
由于在一三维空间中一动画路径必然矢真的事实,如图27所示,间隔
必须被划分成两个子间隔

然后这两个子间隔必须彼此分开计算。此时,假定两个动画路径间,即一组Qi值与一组
值间的一距离在间隔
中的ti”被减小。使用下述等式来计算在

间的瞬时误差。
另外,在间隔
中的ti“与
成比例,如等式(65)所示。
用下述等式(66)来计算中间四元数值以及在ti”处的一瞬时误差。然而,用下述等式(67)获得在任意时间瞬间(t)的一瞬时误差。
此时,以及然而,计算在任意时间瞬间(t)的一瞬时误差e(t)并不容易。因此,使用如近似法(68)所示的线性近似确定e(t)。
在间隔[ti-1,ti]中的误差的部分和
以及在间隔
中的最大误差的一部分和
也能使用近似法(69)和(70)来获得。
近似法(69)能被重新整理如下。
最后,在一时间间隔[tmin,tmax]中的一平均Em以及一最大误差Ep用以下的近似法(71)计算。
因此,包括在如图4A至4C所示的断点抽取器42、46和48中的误差计算器42b、46b和48b分别使用等式(71)计算一原始定向内插器和一复原定向内插器中的一误差并能更精确地测量由于由于一量化误差所带来的在一四元数空间中图像矢真的程序。
图28是与用于编码关键字值数据的一常规方法相比的根据本发明的用于编码关键字值数据的方法的性能的图形。如图28所示,根据用于编码本发明的一定向内插器方法,当给定要求用于编码的一预定数量位时,与在常规的MPEG-4BIFS PMFC方法相比,图像矢真的程序能被相当大地降低。
本发明能按写在一计算机可读记录介质上的计算机可读代码来实现。在这里,计算机可读记录介质包括能由一计算机系统读取的任何种类的记录介质。例如,该计算机可读记录介质可能包括一ROM、一RAM、一CD-ROM、一磁带、一软盘、一光数据存储器、载波(通过Internet传输)等等。计算机可读记录介质能被分散到连接到网络上的计算机系统,以及一计算机能用一分散的方式读取该记录介质。
根据本发明,用于编码一定向内插器的方法和装置能以高效率编码动画关键字数据和关键字值数据同时保持高质量动画。另外,根据本发明,通过利用测量动画数据路径间的一误差的方法来保持高质量动画是可能的,而且通过利用重新采样方法和本发明的断点抽取,也可能相当大地减小将被编码的关键字数据和关键字值数据量。
另外,通过计算一旋转差分值,有可能提供具有一高压缩比的高质量动画,该旋转差分值能充分反映在与一定向内插器的关键字数据相对应的旋转变换中的冗余,并因此编码该定向内插器的关键字值数据。
同时本发明已经明确表示和参考其优选实施例描述过,对本领域的普通技术人员来说在不脱离由附加权利要求限定的本发明的精神和范围的情况下可对形式和细节做出改变。
权利要求
1、一种用于编码定向内插器的装置,所述定向内插器包括表示在时间轴上关键帧的位置的关键字数据和表示对象的旋转的关键字值数据,该装置包括
断点抽取器,从由输入到其中的定向内插器组成的第一动画路径抽取最小数量的断点,能产生不大于所述第一动画路径和由抽取的断点生成的第二动画间的预定误差极限的误差;
关键字数据编码器,编码从所述断点抽取器输入的关键字数据;
关键字值数据编码器,通过生成旋转差分数据来编码从所述断点抽取器输入的关键字值数据,通过关键字值数据编码器,所述对象按几乎等于当前关键帧的旋转变换值和前关键帧的旋转变换值间的差值被旋转变换。
2、如权利要求1所述的装置,进一步包括
重新采样器,将所述第一动画路径采样成具有预定时间量间隔的多个预定部分,并输出包括重新采样关键字数据和重新采样关键字值数据的定向内插器;以及
选择器,根据外部输入信号,将输入到其中的定向内插器输出到所述重新采样器或所述断点抽取器。
3、如权利要求1所述的装置,进一步包括重新采样器,将所述第一动画路径采样成具有预定时间量间隔的多个预定部分,并输出包括重新采样关键字数据和重新采样关键字值数据的定向内插器,
其中所述断点抽取器从由从所述重新采样器输入的定向内插器组成的动画路径抽取断点。
4、如权利要求1所述的装置,进一步包括重新采样器,将由从所述断点抽取器抽取的定向内插器组成的动画路径采样成具有预定时间量间隔的多个预定部分,并将包括重新采样关键字数据和重新采样关键字值数据的定向内插器输出到所述关键字数据编码器和所述关键字值编码器。
5、如权利要求2至4中任何一个所述的装置,其中所述重新采样器将由定向内插器的关键字数据和关键字值数据组成的动画路径划分成具有预定时间量间隔的多个预定部分,并输出每个部分的终点作为将被编码的关键字数据,并输出存在于每个部分中的动画路径上的关键字值数据以作为将被编码的关键字值数据。
6、如权利要求1至4中任何一个所述的装置,其中所述断点抽取器包括
线性内插器,抽取输入动画路径的开始路径点和结束路径点,在所述开始和结束路径点间选择路径点,以及利用所选择的路径点和所抽取的路径点来球性线性内插还没有被选择的其它路径点;
误差计算器,计算所述输入动画路径与由所述线性内插器使用内插所生成的内插动画路径间的误差;
确定单元,抽取断点,通过该操作,能最小化所述输入动画路径与所述内插动画路径间的误差,并且如果所述相应误差不大于预定误差极限,则输出抽取的断点。
7、如权利要求6所述的装置,其中如果所述输入动画路径与由抽取断点所组成的所述内插动画路径间的误差大于所述预定误差极限,则线性内插器依次选择除从所述确定单元输入的断点外的所有路径点并在所选择的路径点上执行球性线性内插。
8、如权利要求6所述的装置,其中基于构成它们的路径点的一个基准分量,所述误差计算器将所述输入动画路径和通过球性线性内插所生成的动画路径分割成多个预定部分,并通过测量每个部分的区域来计算所述输入动画路径和在每个部分中所生成的动画路径间的误差。
9、如权利要求1所述的装置,其中关键字数据编码器使用预定量化位量化从所述断点抽取器输入的关键字数据,通过在已量化关键字数据上执行预定DPCM操作来生成差分数据,以及编码所述差分数据。
10、如权利要求1所述的装置,其中所述关键字数据编码器包括
第一量化器,使用预定量化位来量化定向内插器的关键字数据;
第一DPCM处理器,生成所述量化关键字数据的差分数据;
DND处理器,根据所述差分数据与其中的最大值和最小值间的关系,在所述差分数据上执行DND操作;
第一熵编码器,熵编码从所述DND处理器输入的所述差分数据。
11、如权利要求1所述的装置,其中所述关键字数据编码器进一步包括线性关键字编码器,其识别和编码所有输入其中的关键字数据都线性增长的区域。
12、如权利要求10所述的装置,其中所述关键字数据编码器进一步包括
移位器,获得在从所述第一DPCM处理器所输入的差分数据中具有最高频率的差分数据(模式)并从所述差分数据减去该模式;以及
折叠处理器,将所述移位差分数据转换成正数或负数,以及DND处理器根据要求用于编码的位的数量,从所述移位器输入的差分数据、从所述折叠处理器输入的差分数据以及DND差分数据中选择一个,并输出选择的差分数据。
13、如权利要求1所述的装置,其中所述关键字值编码器包括
旋转差分数据生成器,使用当前关键帧的旋转变换值和前关键帧的复原旋转变换值来生成旋转差分数据,所述旋转差分值被用来按几乎等于通过关键字值数据而应用到当前关键帧中的所述对象的旋转变换与通过关键字值数据而应用到前关键帧中的所述对象的旋转变换间的差值来旋转所述对象,并通过量化所述旋转差分值来输出旋转差分数据;以及
熵编码器,熵编码所述旋转差分数据。
14、如权利要求13所述的装置,其中所述旋转差分数据生成器包括
量化器,通过量化所述旋转差分值的三个分量值来生成旋转差分数据;
量化数据调节器,调节输入到其中的旋转差分数据的三个分量值;
逆量化器,逆量化所述调节分量值;
旋转差分值复原器,使用所述三个逆量化分量值来复原未被量化的一个分量值,从而生成复原旋转差分值;以及
误差测量单元,测量输入到所述量化器中的旋转差分值和所述复原旋转差分值间的误差,并输出具有已调节分量值的旋转差分数据,以便能最小化该误差。
15、如权利要求13所述的装置,其中所述旋转差分数据生成器包括
第一四元数乘法器,使用所述当前关键帧的旋转变换值和所述前关键帧的复原旋转变换值来生成所述旋转差分值;
量化器,通过量化所述旋转差分值来生成旋转差分数据;
逆量化器,通过逆量化所述旋转差分数据来生成复原旋转差分值;以及
第二四元数乘法器,通过将所述复原旋转差分值四元数乘以所述前关键帧的旋转变换值来生成所述当前关键帧的复原旋转差分值。
16、如权利要求13所述的装置,其中所述旋转差分数据生成器包括
旋转方向误差检测器,基于所述当前关键帧的旋转变换值以及所述前关键帧的复原旋转变换值来检测是否已经出现旋转方向误差,以致所述对象的原始旋转方向与所述对象的译码旋转方向相反;
旋转方向校正器,调节所述旋转差分值以便所述对象的译码旋转方向能与所述对象的原始旋转方向相同;以及
旋转方向选择器,根据从所述旋转方向误差检测器输入的检测结果,选择所述旋转差分值或从所述旋转方向校正器输入的所述旋转差分值以作为将被量化的差分数据。
17、一种用于编码定向内插器的装置,所述定向内插器包括表示在时间轴上关键帧的位置的关键字数据和表示对象的旋转的关键字值数据,该装置包括
重新采样器,将由输入定向内插器组成的动画路径采样成具有预定时间量间隔的多个预定部分,并输出包括重新采样关键字数据和重新采样关键字值数据的定向内插器;
关键字数据编码器,编码从所述重新采样器输入的关键字数据;以及
关键字值数据编码器,生成旋转差分值,所述旋转差分值用来按几乎等于通过当前关键帧的关键字值数据而应用到对象的旋转变换和通过前关键帧的关键字值数据而应用到所述对象的旋转变换间的差值来旋转所述对象,从而编码从所述重新采样器所输入的关键字值数据。
18、如权利要求17所述的装置,其中所述重新采样器将由定向内插器的关键字数据和关键字值数据所组成的动画路径划分成具有预定时间量间隔的多个预定部分,并输出每个部分的终点以作为将被编码的关键字数据,并输出存在于每个部分中的动画路径上的关键字值数据以作为将被编码的关键字值数据。
19、如权利要求17所述的装置,其中所述关键字数据编码器包括线性关键字编码器,其识别和编码所有输入其中的关键字数据都线性增长的区域。
20、如权利要求17所述的装置,其中所述关键字值编码器包括
旋转差分数据生成器,使用当前关键帧的旋转变换值和前关键帧的复原旋转变换值来生成旋转差分值,所述旋转差分值被用来按几乎等于通过关键字值数据而应用到当前关键帧中的所述对象的旋转变换和通过关键字值数据而应用到前关键帧中的所述对象的旋转变换间的差值来旋转所述对象,并通过量化所述旋转差分值来输出旋转差分数据;以及
熵编码器,熵编码所述旋转差分数据。
21、如权利要求20所述的装置,其中所述旋转差分数据生成器包括
量化器,通过量化所述旋转差分值的三个分量值来生成旋转差分数据;
量化数据调节器,调节输入到其中的旋转差分数据的三个分量值;
逆量化器,逆量化所述调节分量值;
旋转差分值复原器,使用所述三个逆量化分量值来复原未被量化的一个分量值,从而生成复原旋转差分值;以及
误差测量单元,测量输入到所述量化器中的旋转差分值和所述复原旋转差分值间的误差,并输出具有已调节分量值的旋转差分数据以便能最小化该误差。
22、如权利要求20所述的装置,其中所述旋转差分数据生成器包括
第一四元数乘法器,使用所述当前关键帧的旋转变换值和所述前关键帧的复原旋转变换值来生成所述旋转差分值;
量化器,通过量化所述旋转差分值来生成旋转差分数据;
逆量化器,通过逆量化所述旋转差分数据来生成复原旋转差分值;以及
第二四元数乘法器,通过将所述复原旋转差分值四元数乘以所述前关键帧的旋转变换值来生成所述当前关键帧的复原旋转差分值。
23、如权利要求20所述的装置,其中所述旋转差分数据生成器包括
旋转方向误差检测器,基于所述当前关键帧的旋转变换值以及所述前关键帧的复原旋转变换值来检测是否已经出现旋转方向误差,以致所述对象的原始旋转方向与所述对象的译码旋转方向相反;
旋转方向校正器,调节所述旋转差分值,以便所述对象的译码旋转方向能与所述对象的原始旋转方向相同;以及
旋转方向选择器,根据从所述旋转方向误差检测器所输入的检测结果,选择所述旋转差分值或从所述旋转方向校正器输入的所述旋转差分值以作为将被量化的差分数据。
24、一种用于译码位流的装置,其中将定向内插器编码成该位流,该定向内插器包括表示在时间轴上关键帧的位置的关键字数据和表示对象的旋转的关键字值数据,该装置包括
关键字数据译码器,译码来自输入位流的关键字数据;
关键字值数据译码器,译码来自所述输入位流的关键字值数据;以及
定向内插器合成器,通过合成已译码的关键字值数据和使用所述译码关键字值数据而球性线性内插的关键字值数据来生成定向内插器。
25、如权利要求24所述的装置,其中如果不存在与当前正在受到定向内插器合成的关键字数据相对应的已译码的关键字值数据,则所述定向内插器合成器利用与先前合成的关键字数据相对应的译码关键字值数据以及与下一个将被合成的关键字数据相对应的译码关键字值数据来内插与当前正在受到定向内插器合成的所述关键字数据相对应的关键字值数据。
26、如权利要求24所述的装置,其中所述关键字数据译码器包括
熵译码器,通过熵译码所述输入位流来生成差分数据;
逆DPCM处理器,通过在所述差分数据上执行预定逆DPCM操作来生成量化关键字数据;
逆量化器,通过逆量化所述量化关键字数据来生成复原关键字数据。
27、如权利要求24所述的装置,其中所述关键字值译码器包括
熵译码器,通过熵译码来自所述位流的关键字值数据来生成循环的DPCM旋转差分数据或量化旋转差分数据;
逆循环DPCM运算符,通过在从所述熵译码器输入的旋转差分数据上依据从所述位流译码的DPCM操作的次数来执行逆循环DPCM操作,以生成量化旋转差分数据;
逆量化器,通过逆量化所述量化旋转差分数据来生成旋转差分数据,所述旋转差分数据被用来按几乎等于通过每个关键帧的四元数关键字值数据而应用到对象的旋转变换间的差值来旋转所述对象;以及
四元数乘法器,通过将当前关键帧的旋转差分值四元数乘以前关键帧的复原旋转变换差分值来生成所述当前关键帧的旋转变换值。
28、一种用于编码定向内插器的方法,所述定向内插器包括表示在时间轴上关键帧的位置的关键字数据和表示对象的旋转的关键字值数据,所述方法包括
(b)通过从由所述定向内插器组成的第一动画路径抽取最少量的断点来生成将被编码的关键字数据和关键字值数据,能产生不大于所述第一动画路径和将由抽取的断点生成的第二动画间的预定误差极限的误差;
(d)编码在步骤(b)中生成的所述关键字数据;
(e)通过生成旋转差分数据来编码在步骤(b)中生成的关键字值数据,通过该操作,所述对象按几乎等于当前关键帧的旋转变换值和前关键帧的旋转变换值间的差值旋转变换。
29、如权利要求28所述的方法,其中步骤(b)包括
(b1)抽取所述第一动画路径的开始路径点和结束路径点;
(b2)利用所选择的路径点和所提取的路径点来依次选择开始和结束路径点之间的路径点,并球性线性内插仍未被选择的的其它路径点;
(b3)计算所述第一动画路径和通过在步骤(b2)中内插生成的第二动画路径间的误差;
(b)抽取断点,通过该操作,能最小化所述第一动画路径和所述第二动画路径间的误差,检查所述相应误差是否不大于预定误差极限,并确定将被编码的关键字数据和关键字值数据。
30、如权利要求28所述的方法,进一步包括在步骤(b)之前的(a),通过将所述第一动画路径采样成具有预定时间量间隔的多个预定部分来生成包括重新采样关键字数据和重新采样关键字值数据的定向内插器,
其中在步骤(b)中,从由在步骤(a)中所生成的所述定向内插器构成的动画路径抽取断点。
31、如权利要求30所述的方法,其中在步骤(a)中,所述第一动画路径被分割成具有预定时间量间隔的多个预定部分,每个部分的终点被设置成采样关键字数据,以及存在于每个部分中的第一动画路径上的关键字值数据被设置成采样关键字值数据。
32、如权利要求28所述的方法,进一步包括在步骤(b)之后的(c),通过将利用所抽取的断点而组成的所述第二动画路径采样成具有预定时间量间隔的多个预定部分来生成将被编码的关键字数据和关键字值数据。
33、如权利要求28所述的方法,其中步骤(d)包括
利用预定数量的量化位量化所述关键字数据;
通过在量化数据上执行预定DPCM操作来生成差分数据;以及
熵编码所述差分数据。
34、如权利要求28所述的方法,其中步骤(e)包括
(e1)使用所述当前关键帧的一旋转变换值以及所述前关键帧的复原旋转变换值来生成旋转差分值,所述旋转差分值用来按几乎等于通过当前和前关键帧的关键字值数据而应用到该对象的旋转变换间的差值来旋转所述对象,以及通过量化所述旋转差分值来生成旋转差分数据;以及
(e2)熵编码所述旋转差分数据。
35、如权利要求34所述的方法,其中步骤(e1)包括
(e11)通过量化所述旋转差分值的三个分量值来生成旋转差分数据;
(e12)调节所述旋转差分数据的三个分量值;
(e13)逆量化所述调节分量值;
(e14)通过利用所述三个逆量化分量值而复原一个分量值来生成复原旋转差分值;
(e15)测量所述旋转差分值和所述复原旋转差分值间的误差并确定具有已调节分量值的旋转差分数据,以便所述误差能被最小化为将被熵编码的旋转差分数据。
36、如权利要求34所述的方法,其中步骤(e1)包括
(e11)使用所述当前关键帧的旋转变换值和所述前关键帧的复原旋转变换值来生成所述旋转差分值;
(e12)通过量化所述旋转差分值来生成旋转差分数据;
(e13)通过逆量化所述旋转差分数据来生成复原旋转差分值;
(e14)通过将所述复原旋转差分值四元数乘以所述前关键帧的旋转变换值来生成所述当前关键帧的复原旋转变换值。
37、如权利要求34所述的方法,其中步骤(e1)包括
(e11)基于所述当前关键帧的旋转变换值以及所述前关键帧的复原旋转变换值来检测是否已经发生旋转方向误差以致所述对象的原始旋转方向与所述对象的译码旋转方向相反;
(e12)调节所述旋转差分值,以便所述对象的原始旋转方向能与所述对象的译码旋转方向相同;以及
(e13)根据在步骤(e11)中执行的检测结果,选择所述旋转差分值或在步骤(e12)中的所述调节旋转差分值作为将被量化的差分数据。
38、一种用于编码定向内插器的方法,所述定向内插器包括表示在时间轴上关键帧的位置的关键字数据和表示对象的旋转的关键字值数据,所述方法包括
(a)将由所述定向内插器所构成的动画路径采样成具有预定时间量间隔的多个预定部分,从而生成包括重新采样关键字数据和重新采样关键字值数据的定向内插器;
(d)减小在步骤(a)中采样的所述关键字数据的范围并编码所述关键字数据;以及
(e)通过生成和编码旋转差分值来编码在步骤(a)中采样的所述关键字值数据,所述旋转差分值被用来按几乎等于通过当前关键帧的关键字值数据应用到所述对象的旋转变换和通过前关键帧的关键字值数据而应用到所述对象的旋转变换间的差值来旋转所述对象。
39、如权利要求38所述的方法,其中步骤(a)包括将所述动画路径分割成具有预定时间量间隔的多个预定部分,将每个部分的终点设置成所述采样关键字数据,以及将存在于在每个部分的所述第一动画路径上的关键字值数据设置为所述采样关键字值数据。
40、如权利要求38所述的方法,其中所述步骤(e)包括
(e1)使用所述当前关键帧的一旋转变换值以及所述前关键帧的复原旋转变换值来生成旋转差分值,所述旋转差分值用来按几乎等于通过当前和前关键帧的关键字值数据而应用到该对象的旋转变换间的差值来旋转所述对象,以及通过量化所述旋转差分值来生成旋转差分数据;以及
(e2)熵编码所述旋转差分数据。
41、如权利要求40所述的方法,其中步骤(e1)包括
(e11)通过量化所述旋转差分值的三个分量值来生成旋转差分数据;
(e12)调节所述旋转差分数据的三个分量值;
(e13)逆量化所述调节分量值;
(e14)通过利用所述三个逆量化分量值而复原一个分量值来生成复原旋转差分值;
(e15)测量所述旋转差分值和所述复原旋转差分值间的误差并确定具有已调节分量值的旋转差分数据,以便所述误差能被最小化为将被熵编码的旋转差分数据。
42、如权利要求40所述的方法,其中步骤(e1)包括
(e11)使用所述当前关键帧的旋转变换值和所述前关键帧的复原旋转变换值来生成所述旋转差分值;
(e12)通过量化所述旋转差分值来生成旋转差分数据;
(e13)通过逆量化所述旋转差分数据来生成复原旋转差分值;
(e14)通过将所述复原旋转差分值四元数乘以所述前关键帧的旋转变换值来生成所述当前关键帧的复原旋转变换值。
43、如权利要求40所述的方法,其中步骤(e1)包括
(e11)基于所述当前关键帧的旋转变换值以及所述前关键帧的复原旋转变换值来检测是否已经发生旋转方向误差以致所述对象的原始旋转方向与所述对象的译码旋转方向相反;
(e12)调节所述旋转差分值,以便所述对象的原始旋转方向能与所述对象的译码旋转方向相同;以及
(e13)根据在步骤(e11)中执行的检测结果,选择所述旋转差分值或在步骤(e12)中的所述调节旋转差分值作为将被量化的差分数据。
44、一种计算机可读记录介质,记录可实现权利要求28至43中任何一个的方法的计算机可读程序代码。
45、一种用于译码位流的方法,定向内插器被编码成该位流,该定向内插器包括表示在时间轴上关键帧的位置的关键字数据和表示对象的旋转的关键字值数据,所述方法包括
(a)译码来自输入位流的关键字数据;
(b)译码来自所述输入位流的关键字值数据;以及
(c)通过合成已译码的关键字值数据和利用所述已译码关键字值数据所球性线性内插的关键字值数据来生成定向内插器。
46、如权利要求45所述的方法,其中在步骤(c)中,如果没有与当前正在受到定向内插器合成的关键字数据相对应的译码关键字值数据,则利用与先前已合成的关键字数据相对应的译码关键字值数据以及与下一个将被合成的关键字数据相对应的已译码关键字值数据来内插与当前正在受到定向内插器合成的所述关键字数据相对应的关键字值数据。
47、如权利要求45所述的方法,其中步骤(a)包括
通过熵译码所述输入位流来生成差分数据;
通过在所述差分数据上执行预定DPCM操作和逆DND操作来生成量化关键字数据;
通过逆量化所述量化关键字数据来生成复原关键字数据。
48、如权利要求45所述的方法,其中步骤(b)包括
(b)通过熵译码来自所述位流的关键字值数据来生成循环DPCM旋转差分数据或量化旋转差分数据;
(b)通过在从所述熵译码器输入的旋转差分数据上依据从所述位流译码的DPCM操作的次数来执行逆循环DPCM操作以生成旋转差分数据;
(b)通过逆量化所述量化旋转差分数据来生成旋转差分值,所述旋转差分值被用来按几乎等于通过每个关键帧的四元数关键字值数据而应用到对象的旋转变换间的差值来旋转所述对象;以及
(b)通过将当前关键帧的旋转差分值四元数乘以前关键帧的译码旋转变换差分值来生成所述当前关键帧的旋转变换值。
49、一种计算机可读记录介质,记录可实现权利要求45至49中任何一个的方法的计算机可读程序代码。
50、一种位流,定向内插器被编码成该位流,该定向内插器包括表示在时间轴上关键帧位置的关键字数据和表示对象的旋转的关键字值数据,所述位流包括
关键字数据编码/译码信息,关键字数据和译码所述关键字数据所需的信息被编码成该信息;以及
关键字值数据编码/译码信息,关键字值数据和译码所述关键字值数据所需的信息被编码成该信息,
其中所述关键字数据编码/译码信息包括
逆DND操作信息,包括表示将在差分数据上执行的逆DND的多个预定周期的逆DND的次数,所述差分数据是通过熵译码所述位流生成的,以便扩展所述差分数据和用在每个逆DND操作周期中的差分数据中的最大和最小值的范围;
第一逆DPCM操作信息,包括将在所述逆DND差分数据上执行的逆DPCM操作的次数,以便将逆DND差分数据转换成用于每个逆DPCM操作周期的量化关键字数据和内部关键字数据;以及
第一逆量化信息,用在逆量化中,以便通过逆量化所述量化关键字数据来生成复原关键字数据;以及
关键字数据编码/译码信息,包括
通过量化旋转差分值熵编码的旋转差分数据,所述旋转差分值被用来按几乎等于通过每个关键帧的四元数关键字值数据而应用到该对象的旋转变换间的差值来旋转所述对象;
熵译码信息,包括表示将在所述旋转差分数据上执行的熵译码方法的熵译码模式;
逆循环DPCM操作信息,包括逆循环DPCM操作的次数,表示是否将在熵译码旋转差分数据上依据所述熵译码模式执行逆循环DPCM操作;以及
第二逆量化信息,包括多个预定逆量化位,用来通过逆量化所述量化关键字值数据复原原始关键字值数据。
51、如权利要求50所述的位流,其中所述逆DND操作信息进一步包括表示是否将在经逆DND操作的差分数据上执行上移操作的标志位。
52、如权利要求50所述的位流,其中所述第一逆量化信息包括当逆量化所述量化关键字数据时所使用的逆量化位大小以及在量化关键字数据中的最大和最小值。
53、如权利要求52所述的位流,其中调节在所述量化关键字数据中的最大和最小值,以便最小化所述量化关键字数据的量化误差。
54、如权利要求50所述的位流,其中所述关键字数据编码/译码信息进一步包括在对包括在位流中的线性关键字区域进行译码而使用的线性关键字译码信息,并且所述线性关键字译码信息包括表示是否存在所述线性关键字区域的标志位,包括在所述线性关键字区域中的关键字数据的数量、以及所述线性关键字区域的开始和结尾关键字数据,其中该线性关键字区域中的关键字数据线性增加。
55、如权利要求50所述的位流,其中所述旋转差分数据被编码,以便由四元数表示的旋转差分数据的仅三个分量被量化。
56、如权利要求50所述的位流,其中所述熵编码信息进一步包括
关键字值标志位,表示所述关键字值数据的每个分量的旋转差分数据是否具有相同值;以及
预定旋转差分数据,当所述关键字值标志位表示所述关键字值数据的每个分量的旋转差分数据具有相同值时,将被译码成所有关键字值数据的旋转差分数据的每个分量。
57、如权利要求50所述的位流,其中逆循环DPCM信息进一步包括用于在所述旋转差分数据上执行逆循环DPCM操作的内部旋转差分数据。
全文摘要
本发明提供一种用于对定向内插器进行编码和译码的方法和装置,该定向内插器指出了在时间轴上关键帧的位置以及在每一个关键帧中的对象的旋转。用于编码定向内插器的装置包括断点抽取器,从由输入到其中的定向内插器组成的第一动画路径中抽取最小数量的断点,能产生不大于所述第一动画路径与由抽取的断点所生成的第二动画间的预定误差极限;关键字数据编码器,编码从所述断点抽取器输入的关键字数据;关键字值数据编码器,通过生成旋转差分数据来编码从所述断点抽取器输入的关键字值数据,通过该操作,所述对象按几乎等于当前关键帧的旋转变换值和前关键帧的旋转变换值间的差值被旋转变换。
文档编号H03M7/40GK1441387SQ0216111
公开日2003年9月10日 申请日期2002年11月27日 优先权日2001年11月27日
发明者金道均, 郑锡润, 张义善, 禹相玉, 李信俊, 韩万镇, 张敬子 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1