对定向内插器节点的关键值数据编码和译码的方法和装置的制作方法

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

发明内容
为解决上述和其它问题,本发明一方面提供一种方法和装置,用于通过计算能充分反映旋转变换中冗余的旋转差值,对定向内插器的关键值数据进行编码。
本发明另一方面提供一种方法和装置,用于通过编码旋转差值,对已编码的关键值数据进行译码。
本发明还要提供一种用于生成旋转差分数据的方法和装置,可用在本发明的用于对关键值数据进行编码的方法和装置中。
为实现本发明的上述以及其它方面,提供了一种用于对定向内插器的关键值数据进行编码的装置,所述关键值数据表示对象在关键帧中的旋转变换。该装置包括旋转差分数据生成器、循环DPCM算子以及熵编码器。所述旋转差分数据生成器用当前关键帧的旋转变换值和前关键帧的复原旋转变换值生成旋转差值,并通过量化该旋转差值来输出旋转差分数据。通过关键值数据应用于在当前关键帧中所述对象的旋转变换与通过关键值数据应用于在前关键帧中该对象的旋转变换之间存在差异,所述旋转差值就是用来根据该最大差异旋转上述对象的。所述循环DPCM算子选择性地对旋转差分数据进行线性DPCM或循环DPCM操作。所述熵编码器对所述旋转差分数据进行熵编码。
所述旋转差分数据生成器优选包括量化器、量化数据调节器、逆量化器、旋转差值复原器以及误差测量单元。所述量化器通过量化所述旋转差值的三个分量值来生成旋转差分数据。所述量化数据调节器调节输入到其中的旋转差分数据的三个分量值。所述逆量化器逆量化该调节分量值。所述旋转差值复原器用该三个逆量化的分量值复原未量化的分量值,从而生成复原的旋转差值。所述误差测量单元测量输入到所述量化器中的旋转差值与所述复原旋转差值之间的误差,并输出具有调节分量值的旋转差值,从而将该误差减至最小。
或者,所述旋转差分数据生成器可包括第一四元数乘法器、量化器、逆量化器以及第二四元数乘法器。所述第一四元数乘法器用当前关键帧的旋转变换值和前关键帧的复原旋转变换值来生成所述旋转差值。所述量化器通过量化该旋转差值来生成旋转差分数据。所述逆量化器通过逆量化该旋转差分数据来生成复原旋转差值。所述第二四元数乘法器通过将该复原旋转差值与前关键帧的旋转变换值进行四元数相乘,生成当前关键帧的复原旋转差值。
为实现本发明的上述以及其它方面,提供了一种用于对表示在每个关键帧中对象旋转的定向内插器的关键值数据进行编码的方法。该方法包括(a)用前关键帧的复原旋转变换值生成旋转差值,用来根据通过关键值数据应用于在当前关键帧中所述对象的旋转变换与通过关键值数据应用于在前关键帧中该对象的旋转变换之间的最大差异旋转所述对象;通过量化该旋转差值来生成待熵编码的旋转差分数据,并对该量化旋转差值有选择地进行线性DPCM或循环DPCM操作;(c)对该旋转差分数据进行熵编码。
步骤(a)优选包括(a1)用当前关键帧的旋转变换值以及前关键帧的复原旋转变换值生成所述旋转差值;(a2)通过量化该旋转差值来生成旋转差分数据;(a3)通过逆量化该旋转差分数据来生成复原旋转差值;(a4)通过将复原旋转差值与前关键帧的旋转变换值进行四元数相乘,生成当前关键帧的复原旋转变换值。
步骤(a)优选包括(a1)通过量化旋转差值的三个分量值生成旋转差分数据;(a2)调节该旋转差分数据的三个分量值;(a3)逆量化该调节分量值;(a4)通过用该三个逆量化的分量值复原一个分量值,从而生成复原的旋转差值;(a5)测量所述旋转差值与复原旋转差值之间的误差,并确定具有调节分量值的旋转差分数据,从而将该误差最小化为将被熵编码的旋转差分数据。
为实现本发明的上述和其它方面,提供一种用于对位流进行译码的装置,其中表示在关键帧中对象旋转变换的定向内插器的关键值数据被编码为该位流。该装置包括熵译码器、逆循环DPCM算子、逆量化器以及四元数乘法器。所述熵译码器通过对该位流进行熵译码,生成循环DPCM的旋转差分数据或量化的旋转差分数据。所述逆循环DPCM算子根据从该位流译码出的DPCM次数,对从熵译码器输入的旋转差分数据进行逆循环DPCM操作,从而生成量化的旋转差分数据。所述逆量化器通过逆量化已量化的旋转差值生成旋转差分数据,用来根据通过关键值数据应用于在当前关键帧中所述对象的旋转变换与通过关键值数据应用于在前关键帧中该对象的旋转变换之间的最大差异旋转所述对象。所述四元数乘法器通过将当前关键帧的旋转差值与前关键帧译码后的旋转变换值进行四元数相乘,生成该当前关键帧的旋转变换值。
为实现本发明的上述和其它方面,提供了一种用于对位流进行译码的方法,其中表示在每个关键帧中对象旋转变换的定向内插器的关键值数据被编码为该位流。该方法包括(a)从该位流中对关键值数据进行熵译码,从而生成循环DPCM的旋转差分数据或量化的旋转差分数据;(b)根据从该位流中译码出的DPCM次数对熵译码后的旋转差分数据进行逆循环DPCM操作,从而生成旋转差分数据;(c)通过逆量化该旋转差分数据来生成旋转差值,用来根据通过每个关键帧的四元数关键值数据应用于所述对象的旋转变换间的最大差异旋转所述对象;(d)通过将当前关键帧的旋转差值与前关键帧的译码后的旋转变换值进行四元数相乘,生成该当前关键帧的旋转变换值。
为实现本发明的上述和其它方面,提供了一种用于对位流进行译码的方法,其中表示在每个关键帧中对象旋转变换的定向内插器的关键值数据被编码为该位流。该位流包括旋转差分数据、熵译码信息、逆循环DPCM信息以及逆量化位。所述旋转差分数据通过量化旋转差值而被熵编码,用来根据通过每个关键帧的四元数关键值数据应用于所述对象的旋转变换间的最大差异旋转所述对象。所述熵译码信息包含表示熵译码方法的熵译码模式,该熵译码方法已经使用于上述旋转差分数据。所述逆循环DPCM信息包含显示是否对根据熵译码模式被熵译码的旋转差分数据进行逆循环DPCM操作的逆循环DPCM操作次数。所述逆量化位通过逆量化根据逆循环DPCM操作次数而被逆循环DPCM的旋转差分数据来复原差值。
为实现本发明的上述和其它方面,提供一种用于生成旋转差分数据的装置,生成表示在每帧中对象旋转的旋转变换值的差分数据。该装置包括第一四元数乘法器、量化单元、逆量化单元以及第二四元数乘法器。所述第一四元数乘法器生成旋转差值,用来根据通过当前帧的旋转变换值应用于在当前关键帧中对象的旋转变换与通过前一帧的复原旋转变换值应用于在前关键帧中该对象的旋转变换之间的最大差异旋转所述对象。所述量化单元通过量化该旋转差值来生成旋转差分数据。所述逆量化单元通过逆量化该旋转差分数据来生成复原旋转差值。所述第二四元数乘法器通过将该复原旋转差值与前一帧的旋转变换值进行四元数相乘来生成当前帧的复原旋转变换值。
为实现本发明的上述和其它方面,提供一种用于生成旋转差分数据的方法,生成表示在每一帧中对象旋转的旋转变换值的差分数据。该方法包括(a)用当前帧的旋转变换值和前一帧的复原旋转变换值来生成旋转差值,用来根据应用于每帧中所述对象的旋转变换之间的最大差异旋转所述对象;(b)通过量化该旋转差值来生成旋转差分数据;(c)通过逆量化该旋转差值来生成复原旋转差值;(d)通过将该复原旋转差值与前一帧旋转变换值进行四元数相乘来生成当前帧的复原旋转变换值,并对该当前帧的复原旋转变换值和下一帧的旋转变换值重复执行步骤(a)至(d)。


结合参考附图详细描述本发明的优选实施例,将更清楚地说明本发明的上述和其它方面以及优点,其中图1根据在三维球体表面上的时间推移来说明动画数据的二维轨迹,这些数据由定向内插器节点表示;图2A和2B分别是采用线性DPCM和熵编码的MPEG-4 PMFC编码器的框图以及采用逆线性DPCM和熵译码的MPEG-4 PMFC译码器的框图;图3A是本发明第一实施例的用于对关键值数据进行编码的装置框图;图3B是本发明第一实施例的用于对关键值数据进行译码的装置框图;图4A是描述在旋转差值每个分量中的概率分布函数(PDF)的典型示例;图4B是非线性量化的反正切曲线;图5A是根据本发明优选实施例的从量化器输出的旋转差分数据示例;图5B描述对图5A所示的差分数据进行线性DPCM操作后的结果;图5C描述对图5B所示的线性DPCM的差分数据进行循环DPCM操作后的结果;图6A是描述用于熵编码的函数SignedAAC()示例;图6B是描述用于熵编码的函数UnaryAAC()示例;图7描述在用旋转差值对四元数旋转变换值进行编码的过程中产生的旋转方向误差;图8A是本发明第二实施例的循环DPCM算子的框图;图8B是图8A所示的旋转方向误差计算器的框图;图9A是本发明第二实施例的循环DPCM操作的流程图;图9B是描述图9A所示的旋转方向误差计算器、旋转方向误差检测器以及旋转方向校正器操作的流程图;图10A的框图表示包含在本发明第三实施例的用于对关键值数据进行编码的装置中的量化器;图10B是本发明第三实施例的该量化器的操作流程图;图11A的框图表示本发明优选实施例的用于对定向内插器的关键值数据进行编码的装置;图11B中的流程图表示本发明优选实施例的用于对关键值数据进行译码的方法;图12描述输入到熵译码器中的位流的结构;图13A至13E是描述SDL语言程序代码示例的框图,通过这些代码实现了本发明的用于对关键值数据进行译码的装置;
图14是描述用于测量原始动画路径与复原动画路径之间误差的方法示例;图15将用于对关键值数据进行编码的本发明方法的性能与用于对关键值数据进行编码的常规方法的性能进行比较。
具体实施例方式
以下将结合示出了本发明优选实施例的附图更为全面地描述本发明。
图3A是本发明第一实施例的用于对定向内插器节点的关键值数据进行编码的装置框图。根据图3A,本发明第一实施例的用于对定向内插器节点的关键值数据进行编码的装置包括旋转DPCM算子300、循环DPCM算子400、熵编码器450以及关键值头编码器500。所述旋转DPCM算子300计算对象在连续关键帧中的旋转变换值间的旋转差值,量化该旋转差值,然后输出旋转差分数据,其中所述旋转变换值是通过将所述关键帧的四元数关键值数据应用于其各自的对象来获得的。所述循环DPCM算子400对量化后的旋转差分数据有选择地进行线性DPCM操作和循环DPCM操作。所述熵编码器450对旋转DPCM或循环DPCM后的旋转差分数据进行熵编码。所述关键值头编码器500对在对定向内插器节点的编码关键值数据进行译码时所需的信息进行编码。
所述旋转DPCM算子300包括第一四元数乘法器310、量化器340、逆量化器350、第二四元数乘法器370以及延迟器390。所述第一四元数乘法器310通过将对象在当前关键帧中的旋转变换值与其在前关键帧中的旋转变换值进行四元数相乘,来计算该对象在前关键帧中的旋转变换值与在当前关键帧中的旋转变换值之间的旋转差值。所述量化器340通过非线性量化从第一四元数乘法器310输入的旋转差值来生成量化的旋转差分数据。所述逆量化器350通过对已量化的旋转差分数据进行逆量化来生成所述对象在当前关键帧中的复原旋转差分数据。所述第二四元数乘法器370通过将所述对象在当前关键帧中的旋转差值与该对象在前关键帧中的通过累加所述旋转差分数据而计算出的旋转变换值进行四元数相乘,来复原所述对象在当前关键帧中的旋转变换值。当输入所述对象在下一关键帧中的旋转变换值时,所述延迟器390将该对象在当前关键帧中的复原旋转变换值输出到第一四元数乘法器310中。
下面将更详细地说明本发明的旋转DPCM算子中进行的循环DPCM操作。
在已被常规的MPEG-4 PMFC采用的线性DPCM方法中,用下面的等式(4)来计算四元数旋转变换值Q1(Q1=(q1,0,q1,1,q1,2,q1,3))与四元数旋转变换值Q2(Q2=(q2,0,q2,1,q2,2,q2,3))之间的差值,其中所述四元数旋转变换值Q1表示对象在当前关键帧中的旋转变换(或表示对象在当前关键帧中被旋转变换的程度),所述四元数旋转变换值Q2表示该对象在下一关键帧中的旋转变换。
QlinearDPCM=(q1,0-q2,0,q1,1-q2,1,q1,2-q2,2,q1,3-q2,3) ...(4)但是,上述线性DPCM方法仅计算四元数分量间的差值,这不能反映任何有意义的旋转差值,即实际的旋转差值。因此,该线性DPCM方法不能有效地减少待编码的连续关键值数据间的冗余。另外,在该线性DPCM方法中,除了一个具有最大值的分量之外,要对四元数的四个分量进行编码。因此,需要就这一个未被编码的分量另外编码2比特长的信息,并将该2比特长的信息从编码器传输到译码器。
为了通过减小连续关键值数据间的冗余来达到用常规的线性DPCM方法解决上述问题的目的,本发明第一实施例的用于对关键值数据进行编码的装置提供了循环DPCM操作,其中考虑了实际的旋转差值。
如果 表示基准矢量,该基准矢量表示对象在当前关键帧中的基准位置,(ni-1^,θi-1)]]>表示当关键字数据等于ki-1时的关键值数据, 是通过在当前关键帧中旋转变换该对象而获得的 的位移矢量,则四元数空间中的旋转变换可以用以下等式表示。Yi-1=Qi-1×X0×Qi-1*-----(5)]]>在等式(5)中,X0,Yi-1,Qi-1以及 分别表示x^,yi-1^,(ni-1^,θi-1)]]>以及(ni-1^,θi-1)*]]>的单位四元数。另外, 表示Qi-1的四元数复共扼,×表示四元数乘法。
用这种方式,如果关键字数据等于ki,则四元数空间中的旋转变换可以用以下等式表示。Yi=Qi×X0×Qi*-----(6)]]>可用以下等式(7)来计算连续关键值数据的连续旋转变换值间的旋转差值。Yi=Qi×X0×Qi*=Q×Qi-1*×Yi-1×Qi-1×Qi*=Qi×Yi-1×Qi*-----(7)]]>因此,可以通过以下由等式(5)和(6)导出的等式来定义旋转差值。Q.=Qi×Qi-1*---(8)]]>为了防止量化误差影响下一旋转差值,本发明第一实施例的用于对关键值数据进行编码的装置用在下一关键帧中的旋转变换值以及在前关键帧中的复原旋转变换值 ,来重新定义由等式(8)定义的旋转差值,如等式(9)所示。Q.i=Qi×Q^i-1*---(9)]]>下面将结合图3B来描述本发明优选实施例的用于对关键值数据进行编码的方法。图3B是本发明优选实施例的用于对关键值数据进行编码的方法流程图。
本发明第一实施例的用于对关键值数据进行编码的装置在步骤S300中接收DPCM次数、熵编码模式以及关键值数据。
接着,在步骤S305中,第一四元数乘法器310接收用四元数表示的关键值数据Qi,并检查所输入的关键值数据Qi是否是第一关键值数据Q0。如果输入的关键值数据Qi是第一关键值数据Q0,则表示没有累积的四元数变换值用于四元数乘法。因此,第一四元数乘法器310将输入的关键值数据Qi输出到量化器340中。如果输入的关键值数据Qi不是第一关键值数据Q0,在步骤S310中,第一四元数乘法器310通过将在前关键帧中的复原四元数变换值 ( 的复共扼)与用四元数变换值表示的输入关键值数据Qi四元数相乘(Qi×Q^i-1*]]>),来计算四元数差值 ,它是当前关键帧的关键值数据与前关键帧的复原关键值数据之间的差值。
在步骤S330中,量化器340从第一四元数乘法器310接收第一关键值数据Q0或四元数旋转差值QI,并用预定数量的量化位来量化该输入。
由于所有旋转四元数差值均分别由单位四元数表示,因此表示旋转差值的四元数范数(norm)始终为1。因此,在四元数的四个分量中,可以用其它三个分量对未编码的分量进行译码。根据本发明第一实施例的用于对定向内插器节点的关键值数据进行编码的装置仅对四元数四个分量中的三个进行编码,以减小待编码的数据量。因此,量化器340仅对待编码的三个分量进行量化。
根据本发明,量化器340执行非线性量化而不是通用的线性量化,下面将结合图4A说明其原因。
图4A是描述在旋转差值的每个分量中的概率分布函数(PDF)的典型示例图。如图4A所示,旋转差值的分量值一般集中在0左右,这被称为能量压缩(energy compaction),意味着可以有效地降低旋转信息间的冗余。因此,为量化旋转差值,更充分地反映每个旋转差值的较小分量值,需要更精心地对较小分量值进行量化,这就是为什么本发明的量化器340要执行非线性量化的原因。此时,量化器340采用反正切曲线,以便将非线性比例因子分配给每个旋转差值。
图4B是用于根据本发明的量化的反正切曲线。如图4B所示,该反正切曲线向较大输入值提供适当的分辨率,向较小输入值提供高得多的分辨率。在步骤S330中,量化器340用以下等式中所示的非线性比例函数来量化旋转差值。q~i=floor(qi′·(2nQBits-1-1)+0.5)----(qi′≥0)----(10)]]>=-floor(-qi′·(2nQBits-1-1)+0.5)----(qi′<0)]]>(qi′=4π.tan-1(q.i),i=1,2,3,-1≤q.i≤1)]]>此时, 表示输入到量化器340中的旋转差值的各个分量,qi′表示 的比例值,nQBits表示用于量化的预定数量的量化位,floor(x)表示将输入值x转换为不大于x的最大整数的函数。
量化器340对输入的旋转差值进行量化,然后检查量化的旋转差分数据是否与待编码的最后一个关键值数据一致。如果量化的旋转差分数据与最后一个关键值数据一致,则量化器340将量化的旋转差分数据输出到循环DPCM算子400中。如果量化的旋转差分数据与最后一个关键值数据不一致,则量化器340将量化的旋转差分数据输出到逆量化器350中。
在步骤S340中,逆量化器350对从量化器340输入的量化的旋转差分数据进行逆量化,并在步骤S350中输出复原的旋转差分数据。
如上所述,根据本发明第一实施例的用于对关键值数据进行编码的装置通过对表示旋转差值的四元数的除第一分量外的三个分量进行量化,从而仅对这三个分量进行编码。一种用于对关键值数据进行译码的装置的逆量化器1130,如图11A所示,以及上述逆量化器350用所述三个编码的分量来复原旋转差值的四个分量中未编码的分量其它。由于所有旋转差值均分别由单位四元数表示,因此表示旋转差值的四元数范数始终为1。因此,可以用以下等式来复原旋转差值四个分量中的第一分量。q^0=1-(q^12+q^22+q^32)-----(q^0≥0)---(11)]]>在等式(11)中, 以及 表示旋转差值的三个复原分量, 表示用该三个复原分量 以及 复原的第一分量。
为了根据等式(11)复原第一分量 ,第一分量 必须具有正值,该条件可利用四元数的特点来满足,这些特点在将四元数应用到对象在三维空间中的旋转变换时出现,并如等式(12)所示。
Y=Q×X×Q*=(-Q)×X×(-Q)*...(12)等式(12)表示在将旋转变换应用到三维空间中的对象时,旋转变换值Q和-Q在其功能方面是相同的。因此,在根据本发明第一实施例的用于对关键值数据进行编码的装置中,如果旋转差值的第一分量具有负值,则可以通过将该旋转差值的每个分量乘以-1而很容易地将该旋转差值转换为正值。但是在这种情况下,除第一分量外,复原旋转差值的各分量的平方和可能会由于量化误差而超过1。在这种情况下,不能由等式(11)确定 并且认为 是接近0且小于能被量化器340量化的最小值的值。 具有这样一个值的事实表示该对象已被旋转变换了约180度。因此,对关键值数据进行译码的装置需要确定 的一种方法,并同时减小复原的第一分量值 对三个复原的分量值 以及 的影响,该方法将被应用到根据本发明第一实施例的用于对关键值数据进行编码的装置的逆量化器350中。例如,可以将能由量化器340量化的最小值以及乘以一个预定整数的最小值确定为 。可以用以下等式确定 q0^=a.2-m---(13)]]>在等式(113)中,“α”表示任意常数,m表示预定数量的量化位。
在常规MPEG-4 BIFS PMFC方法中要求有关每个关键值数据的2比特长的信息用于译码,而在本发明中,不需要该2比特长的信息,因此在对N个关键值数据进行编码时,能减少差不多2N个待编码的位。
在步骤S360中,将从逆量化器350输出的复原旋转差值输入到第二四元数乘法器370中,并且该第二四元数乘法器370检查输入的关键帧是否是待编码的第一关键帧。如果该输入关键帧是待编码的第一关键帧,则在步骤S380中,第二四元数乘法器370累加从该逆量化器350输入的第一关键帧的复原旋转变换值( ),并将累加值输出到延迟器390中。
如果该输入的关键帧不是待编码的第一关键帧,则在步骤S370中,第二四元数乘法器370通过将当前关键帧的旋转差值 与前关键帧的复原旋转变换值 进行四元数相乘( ),复原该当前关键帧的旋转变换值 第二四元数乘法器370将该当前关键帧的复原旋转变换值 输出到延迟器390,然后该延迟器390将该 保持到输入下一关键帧的旋转变换值为止,从而使 能与 相同,然后将 输出到第一四元数乘法器310中。
在将当前关键帧的旋转变换值Qi输入到第一四元数乘法器310中时,在步骤S310中,第一四元数乘法器310也从延迟器390接收前关键帧的复原旋转变换值 ,并通过将前关键帧中的复原四元数变换值 与Qi进行四元数相乘( ),生成当前关键帧的旋转变换值与前关键帧的复原旋转变换值间的旋转差值 在步骤S330中,将生成的旋转差值输出到量化器340中,然后由量化器340进行量化,如上所述。在步骤S340中,如果输入的旋转差值与最后一个关键值数据一致,则量化器340将通过量化旋转差值所生成的旋转差分数据输出到循环DPCM算子400中。
循环DPCM算子400检查从量化器340输入的量化旋转差分数据的DPCM的次数是否为0。在步骤S400中,如果DPCM的次数为0,则循环DPCM算子400将量化的旋转差分数据输出到熵编码器450中,而不执行线性DPCM操作和循环DPCM操作。如果DPCM的次数不为0,则在步骤S410中,循环DPCM算子400对该量化的旋转差分数据进行一次线性DPCM操作和一次循环DPCM操作。
图5A是描述从量化器340输出的差分数据的示例图,图5B是描述对从量化器340输出的差分数据进行线性DPCM操作的结果图。
如图5B所示,作为线性DPCM操作的结果,待编码的差分数据的范围可以比过去增加两倍。进行循环DPCM操作的目的是将差分数据的范围保持在量化的差分数据的范围内。
循环DPCM操作是在假定量化范围内的最大值和最小值彼此循环地连接之下进行的。因此,如果作为对两个连续的量化数据进行线性DPCM的结果的差分数据大于该量化范围内的最大值的一半,则可以通过从差分数据中减去该最大值来用较小值表示这些差分数据。
如果差分数据小于该量化范围内的最小值的一半,则可以通过将量化范围内的最大值与该差分数据相加来用较小值甚至更多地表示这些差分数据。
如果 和 分别表示在两个连续时刻ti和ti-1时的量化旋转差分数据,则根据等式(14),对两个连续的量化旋转差分数据 和 进行线性DPCM操作。Xi=Qi~-Qi-1~=(qi,1~-qi-1,1~,qi,2~-qi-1,2~,qi,3~-qi-1,3~)T------(14)]]>另外,根据等式(15),对根据等式(14)获得的差分数据进行循环DPCM操作。Q∪i=min(|Xi|,|Xi′|)-----(15)]]>Xi’=Xi-(2nQBits-1) (Xi≥0)Xi’=Xi+(2nQBits-1) (其它)在等式(15)中,nQBits表示预定数量的量化位。图5C是说明如图5B所示的对DPCM的差分数据进行循环DPCM操作的结果图。如图5C所示,循环DPCM的差分数据范围远小于线性DPCM的差分数据范围。
根据旋转差分数据的DPCM的次数,熵编码器450从循环DPCM算子400中接收旋转差分数据或循环DPCM的旋转差分数据,然后通过消除位冗余对输入的差分数据进行编码。
再参考图3B,在步骤S450中,熵编码器450检查熵编码模式。
如果该熵编码模式是二进制熵编码模式,则在步骤S460中,熵编码器450用函数SignedAAC()对输入的差分数据进行编码。如果该熵编码模式是一元熵编码模式,则在步骤S470中,熵编码器450用函数UnaryAAC()对输入的差分数据进行编码。
通过自适应的二进制算术编码器,用函数SignedAAC()对差分数据进行编码,该算数编码器在每个位平面(bit plane)上对该差分数据的正负号和大小进行编码。
图6A是说明函数SignedAAC()的示例图。根据图6A,当输入值为74,且要求用于对该输入值进行编码的位数为8时,该输入值的正负号为0,并且表示该输入数的二进制数为1001010。用以下方式对正负号和所有位平面进行编码第一步在每个位平面上,按从其最高有效位(Most Significant Bit,MSB)到其最低有效位(Last Significant Bit,LSB)的顺序来编码二进制数;第二步检查当前正被编码的位是否为0;第三步如果当前正被编码的位不是0,则接着对该二进制数的正负号进行编码;第四步对该二进制数据的剩余位进行编码。
函数UnaryAAC()将待编码的值转换为预定数量位,由一系列0、表示该0系列结束的标志位1以及表示该值正负号的位组成。此时,0的数量与该值的大小一致。
下面将结合图6B更全面地说明函数UnaryAAC()。例如,将256编码为一系列位,这些位由256个0、表示该0系列结束的标志位1以及表示256正负号的0,也就是由函数UnaryAAC()转换的正号标记组成。由于采用了UnaryAAC(),表示该待编码符号的位间的冗余增加,这提高了对该符号的编码效率。
下面,将描述一种根据本发明第二实施例的用于对关键值数据进行编码的装置。该根据本发明第二实施例的用于对关键值数据进行编码的装置包括一种用于校正量化期间出现的旋转方向误差的装置,以及根据本发明第一实施例的用于对关键值数据进行编码的装置的所有元件。
图7是描述在用旋转差值对四元数旋转变换值进行编码期间产生的旋转方向误差的图。由于在本发明的用于对关键值数据进行编码的装置中进行的四元数编码方法是一种有损编码方法,因此产生了旋转方向误差。
在图7中,如果Qi、Qi-1、 和 分别表示当前正被应用到第i关键帧中的对象的旋转变换值、应用到该对象在前关键帧中的旋转变换值、从Qi复原的值以及从Qi-1复原的值,则分别由Qi、Qi-1、 和 应用的旋转变换对该对象进行旋转后的位置可由四个不同的区域表示,如图7所示。
换句话说,如果该对象沿最短弧线从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和 不同,因此在采用原始的旋转变换值时,该对象的旋转方向可能与该对象在采用译码的旋转变换值时的旋转方向相反。为解决这个问题,要求将该对象在与期望方向相反的错误方向上旋转的角度减至最小,或者在该对象在错误方向上旋转时校正该对象的旋转方向,从而使该对象在期望的方向上旋转。在本发明中,采用校正该对象旋转方向以使该对象在期望的方向上旋转的方法。
再参考图7,下面将简单描述根据本发明校正旋转方向误差的原理。如果检测到旋转方向误差,如在区域1和2中发生的现象,则控制待编码的四元数旋转差值,以便在正确方向上旋转,在这种情况下,在区域2中仍然会出现旋转方向上的不一致。但是在区域2中,和在区域1中不一样,原始的四元数值和复原的四元数值间的差值相对较小。因此,根据本发明的第二实施例,仅在区域1中对旋转方向进行校正。
下面将结合图8A至9B来描述根据本发明第二实施例的用于对关键值数据进行编码的、执行旋转方向校正的装置。根据本发明第二实施例的用于对关键值数据进行编码的装置与根据本发明第一实施例的用于对关键值数据进行编码的装置的结构几乎完全相同。它们之间的唯一区别是旋转DPCM算子的结构,因此下面将只描述根据本发明第二实施例的用于对关键值数据进行编码的装置中的旋转DPCM算子的结构。
图8A是根据本发明第二实施例的旋转DPCM算子800的框图,图8B是如图8A所示的旋转方向误差计算器820的框图。
根据图8A,旋转DPCM算子800包括旋转方向误差计算器820、旋转方向误差检测器830、旋转方向校正器815以及旋转方向选择器835。所述旋转方向误差计算器820接收对象在当前关键帧中的旋转变换值以及该对象在前关键帧中的复原旋转变换值,并计算旋转方向误差。所述旋转方向误差检测器830基于从旋转方向误差计算器820输入的旋转方向误差,检测在译码过程中是否产生了足以改变该对象旋转方向的误差。所述旋转方向校正器815校正和输出从第一四元数乘法器810输入的旋转差值,从而使该对象在按照前关键帧的译码的旋转变换值旋转之后还能进一步在原始的旋转方向上旋转约180度。所述旋转方向选择器835根据从旋转方向误差检测器830输入的值来选择从旋转方向校正器815输入的旋转差值或从第一四元数乘法器810输入的旋转差值,并将所选择的值输出到量化器840中。
根据图8B,如图8A所示的旋转方向误差计算器820包括延迟器822、第三四元数乘法器824、第四四元数乘法器826以及第五四元数乘法器828。所述延迟器822存储输入的旋转变换值,直到输入下一关键帧的旋转变换值为止。所述第三四元数乘法器824接收从该延迟器822输出的该输入旋转变换值以及前关键帧的旋转变换值,并通过四元数乘法计算该输入旋转变换值与该前关键帧的旋转变换值间的旋转差值。所述第四四元数乘法器826计算从延迟器822输出的前关键帧的旋转变换值与前关键帧的复原旋转变换值间的旋转差值。所述第五四元数乘法器828在前关键帧的输入旋转变换值与复原旋转变换值间进行计算。
下面,将结合图9A更详细地描述根据本发明第二实施例的旋转DPCM操作。
在步骤S900中,将待编码的定向内插器节点的关键值数据Qi输入到第一四元数乘法器810和该旋转DPCM算子800的旋转方向误差计算器820中。
在步骤S910中,第一四元数乘法器810象在根据本发明第一实施例的由于对关键值数据进行编码的装置中的第一四元数乘法器一样,通过将当前关键帧的输入旋转变换值与从第二四元数乘法器870输入的前关键帧的复原旋转变换值进行四元数相乘( ),生成旋转差值 ,并将生成的旋转差值 输出到旋转方向校正器815和旋转方向选择器835中。
旋转方向校正器815根据等式(16)校正输入到其中的旋转差值,并将校正的旋转差值Qs输出到旋转方向选择器835中。旋转方向误差计算器820接收当前关键帧的旋转变换值Qi以及从第二四元数乘法器870中输入的前关键帧的复原旋转变换值 ,并计算旋转变换值QA、QB以及QC,这将在以后描述。在步骤S920中,旋转方向误差检测器830用从旋转方向误差计算器820输入的旋转差值来检测是否产生了旋转方向误差,并将检测结果输出到旋转方向选择器835中。 在等式(16)中,δT表示非常接近0的常数,并且(q.R,0,q.R,1,q.R,2,q.R,3)T]]>表示从第一四元数乘法器810输出的旋转差值 。以后将结合图9B描述旋转方向误差计算器820、旋转方向误差检测器830以及旋转方向校正器815。
旋转方向选择器835检查是否产生了旋转方向误差,从而在用从旋转方向误差检测器830输入的逻辑值对编码的关键值数据进行译码时,使该对象在与期望方向相反的方向上旋转。如果没有产生旋转方向误差,则在步骤S930中,旋转方向选择器835将从第一四元数乘法器810输入的旋转差值输出到量化器840中。如果产生了旋转方向误差,则在步骤S930中,旋转方向选择器835将输出从旋转方向校正器815输入的校正旋转差值。
在步骤S940和950中,量化器840用与本发明的第一实施例中相同的量化方法量化原始的旋转差分数据 或校正的旋转差分数据Qs。
在步骤S960中,量化器840检查量化的旋转差分数据 是否属于最后一个关键值数据。如果量化的旋转差分数据 与最后一个关键值数据相对应,则在步骤S970中,量化器840将量化的旋转差分数据 输出到循环DPCM算子400中。如果量化的旋转差分数据 不与最后一个关键值数据相对应,则量化器840将量化的旋转差分数据 输出到逆量化器850中。
在步骤S980中,逆量化器850用与本发明的第一实施例相同的逆量化方法对该量化的旋转差分数据 进行逆量化,并将复原的旋转差分数据 输出到第二四元数乘法器870中。
第二四元数乘法器870通过将复原的旋转差分数据 与前关键帧的旋转变换值 进行四元数相乘,生成当前关键帧的复原旋转变换值 。在步骤S990中,第二四元数乘法器870通过延迟器890将当前关键帧的旋转变换值输出到第一四元数乘法器810和旋转方向误差计算器820中。
下面,将结合图9B来描述旋转方向误差计算器820、旋转方向误差检测器830以及旋转方向校正器815的操作。
旋转方向误差计算器820计算与区域2至4相应的旋转差值,这已经结合图7描述过。
在步骤S922中,旋转方向误差计算器820接收与待编码的关键帧的关键值数据相应的旋转变换值,接收当前关键阿帧前的前关键帧的复原旋转变换值,并计算旋转方向误差。
将与当前关键帧的定向内插器的关键值数据相应的旋转变换值直接输入到第三四元数乘法器824和第五四元数乘法器828中,并在输入下一关键帧的旋转变换值时,通过延迟器822输入到第四四元数乘法器826中。另外,将从第二四元数乘法器870输出的前关键帧的复原旋转变换值输入到第四四元数乘法器826和第五四元数乘法器828中。
第三四元数乘法器824通过将当前关键帧的旋转变换值与前关键帧的旋转变换值进行四元数相乘(QA=Qi×Qi-1*]]>),生成旋转差值QA,并将QA输出到旋转方向误差检测器830中。旋转差值QA表示在时间间隔[ti-1,ti]期间对象的原始旋转方向。
第四四元数乘法器826通过将前关键帧的旋转变换值与前关键帧的复原旋转变换值进行四元数相乘(QB=Qi-1×Q^i-1*]]>),生成旋转差值QB,并将QB输出到旋转方向误差检测器830中。第四四元数乘法器826计算的旋转差值QB表示在预定时刻ti-1的由量化误差影响的对象的旋转方向误差和旋转方向,并与图7所示的区域2对应。
第五四元数乘法器828通过将当前关键帧的旋转变换值与前关键帧的复原旋转变换值进行四元数相乘(QC=Qi×Q^i-1*]]>)生成旋转差值QC,并将QC输出到旋转方向误差检测器830中。由第五四元数乘法器828计算的旋转差值QC表示将在预定时刻ti编码的旋转差值,且与图7所示的区域4对应。
在步骤S924中,旋转方向误差检测器830用从旋转方向误差计算器820输入的旋转差值QA、QB和QC来检查在对编码的关键值数据进行译码的过程中该对象是否在与原始方向相反的方向上旋转。为完成该功能,旋转方向误差检测器830检查旋转差值QA、QB和QC是否满足不等式(17)至(21)。首先,旋转方向误差检测器830检查旋转差值QA和QC是否满足不等式(17)。qA,1qA,2qA,3.qC,1qC,2qC,3<0-----(17)]]>在不等式(17)中,如果从旋转方向误差计算器820输入的旋转差值QA由QA=(qA,0,qA,1,qA,2,qA,3)T表示,则qA,1qA,2qA,3]]>表示三维矢量(qA,1,qA,2,qA,3)T,由QA的四个分量qA,0、qA,1、qA,2、qA,3除第一分量qA,0外组成。qC,1qC,2qC,3]]>表示三维矢量(qC,1,qC,2,qC,3)T,由QC的四个分量qC,0、qC,1、qC,2、qC,3除第一分量qC,0外组成。不等式(17)显示了两个三维矢量(qA,1,qA,2,qA,3)T和(qC,1,qC,2,qC,3)T的内积小于0的条件。
如果该不等式(17)中的内积小于0,则采用QA时的对象旋转方向与采用QC时的旋转方向相反。当该内积小于0时,将不等式(17)中所示的逻辑表达式的值设置为“true(真)”。当该内积大于0时,将该逻辑表达式的值设置为“false(假)”。qB,1qB,2qB,3.qC,1qC,2qC,3<0-----(18)]]>在不等式(18)中,如果从旋转方向误差计算器820输入的旋转差值QB由QB=(qB,0,qB,1,qB,2,qB,3)T表示,则qB,1qB,2qB,3]]>表示三维矢量(qB,1,qB,2,qB,3)T,由QB的四个分量qB,0、qB,1、qB,2、qB,3除第一分量qB,0外组成。qC,1qC,2qC,3]]>表示三维矢量(qC,1,qC,2,qC,3)T,由QC的四个分量qC,0、qC,1、qC,2、qC,3除第一分量qC,0外组成。不等式(18)显示了两个三维矢量(qB,1,qB,2,qB,3)T和(qC,1,qC,2,qC,3)T的内积小于0的条件。
如果该不等式(18)中的内积小于0,则采用QB时对象的旋转方向与采用QC时的旋转方向相反。当该内积小于0时,将不等式(18)中所示的逻辑表达式的值设置为“true”。当该内积大于0时,将该逻辑表达式的值设置为“false”。
ATH<2cos-1|qA,0| …(19)在不等式(19)中,qA,0表示旋转差值QA的第一分量,将ATH设置为接近0的预定常数。当不等式(19)中的2cos-1|qA,0|大于ATH时,将不等式(19)中所示的逻辑表达式的值设置为“true”。当2cos-1|qA,0|不大于ATH时,将该逻辑表达式的值设定为“false”。当不等式(19)设置为“false”时,表示在实现根据本发明的用于对关键值数据进行编码的装置时可以忽略小于预定常数ATH的旋转角θ(=2cos-1|qA,0|)。即使存在约等于旋转角θ的旋转方向误差,该旋转方向误差也不会导致对人眼来说严重失真的图像,特别是在用由本发明建议的误差测量方法时。
ATH<2cos-1|qB,0| ...(20)在不等式(20)中,qB,0表示旋转差值QB的第一分量,ATH与不等式(19)中的相应部分相同。当不等式(20)中的2cos-1|qB,0|大于ATH时,将不等式(20)所示的逻辑表达式的值设置为“true”。当2cos-1|qB,0|不大于ATH时,将该逻辑表达式的值设置为“false”。
ATH<2cos-1|qC,0| ...(21)在不等式(21)中,qC,0表示旋转差值QC的第一分量,ATH与不等式(19)中的相应部分相同。当不等式(21)中的2cos-1|qC,0|大于ATH时,将不等式(21)所示的逻辑表达式的值设置为“true”。当2cos-1|qC,0|不大于ATH时,将该逻辑表达式的值设置为“false”。
旋转方向误差检测器830对不等式(17)至(21)的逻辑值执行一次与(AND)操作,并将该与操作的结果输出到旋转方向选择器835中。
在预定时刻t,第一四元数乘法器810具有两个输入值Qi和 。第一四元数乘法器810用这两个输入值Qi和 输出旋转差值。如上所述,在区域1中,接收旋转差分数据的用于对编码的关键值数据进行译码的装置顺时针旋转对象。但是,该对象必须从在旋转了由Qi-1所示的预定度数之后所处的当前位置旋转到假定在旋转了由Qi所示的预定度数之后所处的位置,因此该对象的原始旋转方向必须是逆时针方向。
因此,旋转方向校正器815校正该对象的旋转方向,从而使该对象能在其基于 旋转的相同方向上旋转由 所示的旋转角度大小,如图7所示,也就是说,从而使该对象能从基于 旋转后所处的当前位置逆时针旋转到假定旋转由 所示的旋转角度之后所处的位置。
为此,该旋转方向校正器815建立新的旋转信息,以使该对象从其在旋转了 的预定角度之后所处的当前位置逆时针旋转大约180度。因此,该对象的旋转方向被校正为与原始方向相同,并能将旋转方向误差减至最小。在步骤S926中,旋转方向校正器815接收来自第一四元数乘法器810的当前关键帧的旋转差分数据 ,生成具有校正旋转方向的旋转差分数据,并将该校正的旋转差分数据输出到旋转方向选择器835中。
根据图9A,在步骤S930中,旋转方向选择器835检查从旋转方向误差检测器830输入的逻辑值是否为真。如果该输入的逻辑值为真,则在步骤S940中,该旋转方向选择器835确定出现了图7所示的区域1中发生的相同现象,并将由等式(16)定义的校正旋转差值Qs输出到量化器840中。
另一方面,如果该输入的逻辑值为假,则在步骤S950中,旋转方向选择器835确定没有出现在区域1中发生的相同现象,并将从第一四元数乘法器810输入的旋转差值 输出到量化器840中。
下面,将描述一种根据本发明第三实施例的用于对关键值数据进行编码的装置。
由于根据本发明第一和第二实施例的用于对关键值数据进行编码的装置只对旋转差值的四个分量中的三个分量进行编码。它们可能因为量化误差而不能用等式(11)来复原该四元数的第一分量值。例如,复原旋转差值的第一分量可能是虚数。
为防止由于只对四元数的三个分量进行编码所带来的问题,根据本发明第三实施例的用于对关键值数据进行编码的装置包括量化器,可以适当地调节三个量化的分量值,从而在对编码的关键值数据进行译码时,将另一分量复原为正实数,并将图像失真减至最小。
除量化器的结构外,根据本发明第三实施例的用于对关键值数据进行编码的装置与根据本发明第一或第二实施例的用于对关键值数据进行编码的装置相同,因此下面将只描述该量化器的结构。
图10A是包括在根据本发明第三实施例的用于对关键值数据进行编码的装置中的量化器框图。根据图10A,量化器1000包括量化单元1010、量化数据调节器1020、逆量化器1030、旋转差值复原器1040以及误差测量单元1050。所述量化单元1010量化输入到其中的旋转差值。所述量化数据调节器1020调节量化的旋转差值。所述逆量化器1030对量化的旋转差分数据进行逆量化。所述旋转差值复原器1040通过用逆量化的分量复原量化旋转差分数据的第一分量来复原量化旋转差分数据的所有分量值。所述误差测量单元1050测量复原的差值与原始的输入旋转差值间的误差,并更新量化的旋转差分数据。
图10B是量化器1010的操作流程图。根据图10B,当从第一四元数乘法器输入旋转差值 时,在步骤S1005中,该量化器1010用等式(10)量化输入的旋转差值 ,并将量化的旋转差分数据 输出到量化数据调节器1020中。
在步骤S1010中,量化数据调节器1020根据等式(22)调节量化旋转差分数据 的三个分量。Iijk=Q~+Dijk,Dijk=(i,j,k)T]]>(-d≤i,j,k≤di,i,j,k和d为整数)(22)在等式(22)中,i、j、k均为变量,将它们与旋转差分数据相加,以调节该旋转差分数据,d用于定义i、j、k的范围。将量化旋转差分数据 的三个调节分量输出到逆量化器1030中。
在步骤S1020中,逆量化器1030对调节量化旋转差分数据Iijk进行逆量化,并将逆量化的旋转差值 (或逆量化的结果)输出到旋转差值复原器1040中。
在步骤S1030中,接收逆量化的旋转差值 的三个分量的旋转差值复原器1040根据等式(11)复原旋转差分数据的第一分量,并将复原的旋转差值输出到误差测量单元1050中。
误差测量单元1050检查输入到其中的旋转差值的第一分量值。在步骤S1040中,如果该第一分量值是实数,则误差测量单元1050执行误差测量。另一方面,如果该第一分量值是虚数,则该方法转入步骤S1060。
当该输入旋转差值的第一分量是实数时,在步骤S1050中,误差测量单元1050测量原始的旋转差值和复原的旋转差值间的误差eijk,在步骤S1050中检查eijk是否小于调节误差 。以后将结合图14描述测量原始的旋转差值与复原的旋转差值间的eijk的方法。
如果测量误差eijk小于调节误差 ,则在步骤S1055中,用eijk替换 ,然后在步骤S1060中检查变量i、j、k是否属于调节范围[-d,+d]。如果变量i、j、k属于调节范围[-d,+d],则误差测量单元1040重复执行步骤S1010至S1055。在步骤S1010中,在步骤S1010至S1055的每个循环期间,在嵌套的循环方式中,将量化的旋转差分数据的第二至第四分量加1。
例如,量化数据调节器1020保持第二和第三分量,通过将k值与第四分量值相加并同时在k值超过+d之前通过连续将k值加1逐步增加k值,从而试图使复原的第一分量成为实数,然后找到四个调节分量值,这可以将输入的旋转差值与复原的旋转差值间的误差减至最小。
如果k值达到+d,则用-d初始化k值,将j值与第三分量值相加并同时通过将j(-d≤j≤+d)值加1来增加j值,将k值与第四分量值相加并同时在k值超过+d前通过连续地将k(-d≤k≤+d)值加1逐步增加k值,通过上述方式,量化数据调节器1020试图使该复原的第一分量成为实数值,然后找到四个调节分量值,这可以将输入的旋转差值与复原的旋转差值间的误差减至最小。
如果j值达到+d,则用-d初始化j和k值,将i值与第二分量值相加并同时通过将i(-d≤i≤+d)值加1来增加i值,将j值与第三分量值相加,将k值与第四分量值相加并同时在k值超过+d前通过连续地将k(-d≤k≤+d)值加1逐步增加k值,通过上述方式,量化数据调节器1020试图使该复原的第一分量成为实数值,然后找到四个调节分量值,这可以将输入的旋转差值与复原的旋转差值间的误差减至最小。
重复上述处理直到i、j、k达到+d为止,量化数据调节器1020找到四个调节分量值,这可以将输入的旋转差值与复原的旋转差值间的误差减至最小。
在步骤S1070中,误差测量单元1050检查调节误差 是否小于最终误差 ,同时修改第二至第四分量值。如果 小于 ,则在步骤S1075中,用 代替 ,同时根据等式(23)校正量化的旋转差分数据。Q~*=(q1~,q2~,q~3)T+(i*,j*,k*)T------(23)]]>此后,误差测量单元1050将校正的旋转差分数据输出到量化的数据调节器1020中。
量化的数据调节器1020将变量i、j、k值设置为-d,并对输入到其中的旋转差分数据再次执行步骤S1010至S1060。然后,量化数据调节器1020用输入的旋转差分数据检查是否存在其误差比以前存储的最终误差更小的旋转差分数据。
如果调节误差 不小于最终误差 ,则在步骤S1080中,误差测量单元1050将与当前存储的最终误差 相应的量化旋转差分数据Q~g*=Q~*=(q~1*,q~2*,q~3*)T]]>输出到循环DPCM算子中。
下面,将结合图11A至12描述一种用于对编码的位流进行译码的装置和方法,根据本发明,采用对关键值数据进行编码的装置将关键值数据编码到该位流中。
图11A是根据本发明优选实施例的用于对编码的位流进行译码的装置框图。根据图11A,根据本发明的用于对编码的位流进行译码的装置包括关键值头译码器1170、熵译码器1110、逆循环DPCM算子1120、逆量化器1130以及四元数乘法器1140。所述关键值头译码器1170对从输入位流中对由四元数表示的关键值数据进行译码时所要求的头信息进行译码,并将该译码的头信息提供给关键值数据译码器1100。所述熵译码器1110通过从该输入位流中对熵编码的关键值数据进行熵译码来生成循环DPCM的旋转差分数据或量化的旋转差分数据。所述逆循环DPCM算子1120通过对输入到其中的循环DPCM的旋转差分数据执行逆循环DPCM操作来生成量化的旋转差分数据。所述逆量化器1130通过对量化的旋转差分数据进行逆量化来生成旋转差值。所述四元数乘法器1140通过将当前关键帧的旋转差值与前关键帧的旋转变换值进行四元数相乘来生成该当前关键帧的旋转变换值。
图11B是根据本发明优选实施例的用于对关键值数据进行译码的方法流程图。根据图11B,将位流,其中具有用根据本发明的用于对关键值数据进行编码的装置所编码的关键值数据,输入到关键值头译码器1170以及关键值数据译码器1100的熵译码器1110中。
在步骤S1100中,关键值头译码器1170对从该输入位流中对关键值数据进行译码时所要求的头信息进行译码,并将该译码的头信息提供给关键据进行译码时所要求的头信息进行译码,并将该译码的头信息提供给关键值数据译码器1100。
在该头信息中,对基于DPCM次数被量化为四元数的第一和第二内部关键值数据以及多个用来对其它关键值数据进行译码的标志位进行编码。
如果DPCM的次数为1(例如,如果将多个标志之一的nKVDPCMOrder设置为0),则将第一量化关键值数据作为内部关键值数据包括在该头信息中。如果第一逆量化关键值数据的四元数值满足Q^0=(q^0,0,q^0,1,q^0,2,q^0,3)T]]>,则根据等式(24)来计算该第一逆量化关键值数据。q^0,0=tan(π4*(|firstQKV_S|2nKVQBit-1-1))---(24)]]>q^0,1=tan(π4*(xSign*|firstQKV_X|2nKVQBit-1-1))]]>q^0,2=tan(π4*(ySign*|firstQKV_y|2nKVQBit-1-1))]]>q^0,3=tan(π4*(zSign*|firstQKV_Z|2nKVQBit-1-1))]]>在等式(24)中,仅当类OrilDPCMKeyValueHeader中的nFirstXSign为1时,xSign为1,在其它条件下,xSign为-1。Ysign和zSign分别与nFirstYSign和nFirstZSign间的关系与xSign与nFirstXSign间的关系相同。
将由等式(24)定义的复原四元数分量值转换为将被用作定向内插器的角位移。从关键值数据中复原的各角位移均可以用四维矢量(x^i,y^i,z^i,θ^i)T]]>表示,其中i表示当前关键字数据,( )表示旋转轴的矢量, 表示逆时针旋转角。因此,根据等式(25)将复原的四元数分量值转换为角位移。x^0=q^0,1*1sin(θ0^2)------(25)]]>y^0=q^0,2*1sin(θ0^2)]]>z^0=q^0,3*1sin(θ0^2)]]>θ^0=arccos(q^0,0)*2]]>如果DPCM的次数为2,例如,如果将nKVDPCMOrder设置为1,则将第一和第二量化关键值数据包括在头信息中。用与上述相同的方式复原该第一量化关键值数据。但是用不同的方法复原该第二关键值数据。换句话说,仅将第二量化关键值数据的三个分量与编码的位流一起传送,且其值不是内部关键值数据,而是具有第一关键值数据的差值(Q~1=(q~1,1,q~1,2,q~1,3)).]]>假定表示逆量化关键值数据的第二关键值数据的四元数满足Q~^1=(q~^1,0,q~^1,1,,q~^1,2,q~^1,3)T]]>,则根据等式(26)计算 q~^1,0=1-(q~^1,12+q~^1,22+q~^1,32)------(26)]]>q~^1,1=tan(π4*(secondXSign*|secondQKV_X|2nKVQBit-1-1)]]>q~^1,2=tan(π4*(secondYSign*|secondQKV_Y|2nKVQBit-1-1)]]>q~^1,3=tan(π4*(secondZSign*|secondQKV_Z|2nKVQBit-1-1)]]>在等式(26)中,仅当类OrilDPCMKeyValueHeader中的nSecondXSign为1时,secondXSign为1,在其它条件下,secondXSign为-1。secondYsign和secondZSign分别与nSecondYSign和nSecondZSign间的关系与xSign与nSecondXSign间的关系相同。如果表示第二逆量化的关键值数据的四元数 满足Q^1=(q^1,0,q^1,1,q^1,2,q^1,3)T]]>,则通过 乘以 计算 。换句话说,Q^1=Q~^1×Q^0.]]>关键值头译码器1170将译码的关键值数据和译码的头信息输出到关键值译码器1100中。
在步骤S1120至S1128中,熵译码器1110接收位流,其中具有编码的关键值数据的差分数据,并用由关键值头译码器1170译码的译码信息对输入位流进行熵译码。
图2是描述输入到熵译码器1110中的位流的结构图。在图12中,假定N(nNumberOfKeyValue)表示编码的关键值数据量,当DPCM的次数为0时,包括在位流中的每个分量的旋转差分数据量为N-1(0,1,...,nNumberOfKeyValue-2)。当DPCM的次数为1时,包括在该位流中的每个分量的旋转差分数据量为N-2(0,1,...,nNumberOfKeyValue-3)。
在步骤S1120中,熵译码器1110接收来自关键值头译码器1170的x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag,并检查x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag是否都被设定为1。
当x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag均被设定为0时,认为所有量化的关键值数据或每个分量的所有差分数据与类OrilKeyValueCodingBit中的nAllKeyValues相同。因此,在步骤S1122中,熵译码器1110将每个分量的关键值数据译码为与从关键值头译码器1170输入的nAllKeyValues相同的值,并将译码的关键值数据输出到逆循环DPCM算子1120中。
如果x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag不是设定为0,例如,如果x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag被设定为1,则在步骤S1124中,熵译码器1110检查从关键值头译码器1170输入的熵译码模式,以便对输入的关键值数据的每个分量 进行译码。
当熵译码模式是二进制译码模式时,在步骤S1126中,熵译码器1110用如表1所示的函数decodeSignedAAC()对自适应算术编码的位流进行译码,并将量化的旋转差分数据输出到逆循环DPCM算子1120中。
表1

另一方面,当熵译码模式不是二进制译码模式时,则在步骤S1128中,熵译码器1110用函数decodeUnaryAAC()对输入的位流进行译码。通过连续地读取0直到从该位流中读出1为止,将连续0的数量转换为其绝对值,读取位“1”的下一位,并将该位转换为正负号位,函数decodeUnaryAAC()对该输入位流进行译码,然后将量化的旋转差分数据输出到逆循环DPCM算子1120中。表2示出了函数decodeUnaryAAC()的例子。
表2

在上述函数decodeSignedAAC()和decodeUnaryAAC()中采用的函数qf_decode()被用来从自适应算术编码的位流中读取位1,并已由国际标准组织授权的文献IS0/IEC 14496-21999 Coding of Audio-Visual ObiectVisual定义。
逆循环DPCM算子1120从熵译码器1110接收熵译码的关键值数据,并检查从关键值头译码器1170输入的DPCM次数。如果DPCM的次数为0,则在步骤S1130中,逆循环DPCM算子1120将译码的旋转差分数据 输出到逆量化器1130中,因为从熵译码器1110输入的熵译码的关键值数据是量化的旋转差分数据。
另一方面,如果DPCM的次数为1,则在步骤S1135中,逆循环DPCM算子1120执行逆循环DPCM操作,因为从熵译码器1110输入的熵译码的关键值数据是循环DPCM的旋转差分数据。
假定nKVQBit表示逆量化位,则在步骤S1135中,逆循环DPCM算子1120用等式(27)对旋转差分数据 进行逆循环DPCM操作,并生成量化的循环差分数据 Q∪i-2′=Q∪i-2-(2nKVQBits-1)-----(Q∪i≥0)---(27)]]>Q∪i-2′=Q∪i-2+(2nKVQBits-1)-----(Q∪i<0)]]>(i=2,…nNumberOfKeyValue-1)此后,逆循环DPCM算子1120分别用 和 获得逆DPCM的值A以及逆DPCM的值B,如等式(28)所示。A=Q∪i-2+Q~i-1------(28)]]>B=Q∪i-2′+Q~i-1]]>(i=2,…,nNumberOfKeyValue-1)如果B+(2nKVQBit-1-1)位于0和量化范围内的最大值之间,则循环DPCM算子1120将B作为逆循环DPCM数据 输出。另一方面,如果B+(2nKVQBit-1-1)小于0或大于该量化范围内的最大值,则逆循环DPCM算子1120将A作为 输出。
表3示出了C++程序代码的例子,其中写出了逆循环DPCM算子1120的上述操作。
表3

在步骤S1140中,逆量化器1130接收由执行逆循环DPCM操作的逆循环DPCM算子1120生成的量化旋转差分数据(Q~i=(q~i,1,q~i,2,q~i,3))]]>,通过在

上用等式(29)执行一逆量化操作来复原一旋转差值(Q~^=(q~^i,.0,q~^i,1,q~^i,2,q~^i,3)T)]]>,并将该旋转差值

输出到四元数乘法器1140中。q~^1,0=1-(q~^f,12+q~^f,22+q~^f,32)-------(29)]]>q~^i,j=tan(π4*(sgn(q~i,j)*|q~i,j|2nKVQBit-1-1)]]>(i=2,…,nNumberOfKeyValue-1,j=1,2,3)此后,四元数乘法器1140接收旋转差值 。在步骤S1154中,四元数乘法器1140通过将输入的旋转差值 根据等式(30)与前关键帧的旋转变换值 进行四元数相乘,来复原当前关键帧的旋转变换值 (其中Q^i=(q^i,.0,q^i,1,q^i,2,q^i,3)T.]]>Q^i=Q~^i×Q^i-1]]>(i=2,…nNumberOfKeyValue-1)在步骤S1156中,在复原旋转变换值后,关键值数据译码器1100检查该复原的旋转变换值是否对应于最后一个关键值数据。如果该复原的旋转变换值不对应于最后一个关键值数据,则关键值数据译码器1100重复执行步骤S1140至S1154。另一方面,如果该复原的旋转变换值是最后一个关键值数据的旋转变换值,则在步骤S1158中,关键值数据译码器1100将复原的旋转变换值输出。
如果DPCM的次数为0,逆循环DPCM算子1120将译码的量化旋转差分数据 (其中Q∪i=(q∪i,1,q∪i,2,q∪i,3)]]>))输出到逆量化器1130中。然后,在步骤S1140中,通过对从逆循环DPCM算子1120输入的旋转差分数据 进行逆量化,生成旋转差值 (其中Q~^i=(q~^i,0,q~^i,1,q~^i,2,q~^i,3)T]]>),并将 输出到四元数乘法器1140中。q~^1,0=1-(q~^i,12+q~^i,22+q~^i,32)-------(31)]]>q~^i,j=tan(π4*(sgn(q∪i-1,j)*|q∪i-1,j|2nKVQBit-1-1)]]>(i=1,…,nNumberOfKeyValue-1,j=1,2,3)
即使DPCM的次数为0,四元数乘法器1140将与DPCM的次数不为0时几乎相同的方式(步骤S1150至S1158)来复原旋转变换值。当DPCM的次数不为0时,四元数乘法器1140根据等式(32)执行四元数乘法。Q^i=Q~^i×Q^i-1---(32)]]>(i=1,…nNumberOfKeyValue-1)图13A至13E是描述SDL语言程序代码的示例图,其中实现了根据本发明的用于对关键值数据进行译码的装置。下面,将描述在图13A至13E中所示的每个变量的含义。
图13A是描述类CompressedOrientationInterpolator的图。CompressedOrientationInterpolator是用于读取定向内插器的编码位流的最高类。OrilKeyValueHeader和OrilDPCMKeyValue是用于有关与常规定向内插器中的关键值字段数据相应的关键值数据的信息的类。函数qf_start()用来在读取具有编码的关键值数据的位流前初始化算术译码器。
图13B是描述类OrilKeyValueHeader的图。用在该类中的每个变量的含义如下。nKVQBit表示关键值数据的逆量化位大小。nNumKeyValueCodingBit表示关键值数据量。nKVDPCMOrder表示用于对关键值数据进行译码的逆DPCM操作的次数。当nKVDPCMOrder=0时,不需要执行逆循环DPCM操作。另一方面,当nKVDPCMOrder=1时,应当执行逆循环DPCM操作。
图13C是描述类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的正负号。blsMoreTwoKVs表示在应当执行逆循环DPCM时是否有两个以上的待译码的关键值数据。x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag表示每个分量x、y以及z的所有量化值是否相同。
图13D是描述类OrilKeyValueCodingBit的图。用在该类中的每个变量的含义如下。nKVCodingBit表示用来存储除内部关键值数据(在类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译码函数。
图13E是描述类OrilDPCMKeyValue的图。用在该类中的每个变量的含义如下。用DeltaKeyValue来以四元数的形式存储包括三个分量x、y和z的量化的关键值数据。用函数decodeUnaryAAC或decodeSignedAAC从位流中对存储在DeltaKeyValue中的量化的关键值数据进行译码。
kVXSignContext、kVYSignContext、kVZSignContext是用于在使用函数decodeUnaryAAC或decodeSignedAAC对DeltaKeyValue的三个分量x、y和z进行译码时的语境。
kVXUnaryContext、kVYUnaryContext、kVZUnaryContext是用于在使用函数decodeUnaryAAC对DeltaKeyValue的三个分量x、y和z进行译码的语境。
kVXContext、kVYContext、kVZContext是用于在使用函数deeodeedAAC对DeltaKeyValue的三个分量x、y和z进行译码的语境。
下面,将描述根据本发明第三实施例的测量原始旋转差值与通过在量化器1000包括的误差测量单元1050中对量化的旋转差值进行逆量化来复原的旋转差值间的误差的方法。
根据本发明,该测量原始旋转差值与复原旋转差值间误差的方法还可以用于测量编码前的定向内插器关键值数据与通过对编码的关键值数据进行译码而获得的该定向内插器关键值数据间的误差。因此,在以下根据本发明的误差测量方法的描述中,原始的旋转差值与复原的旋转差值将分别与编码前的原始关键值数据与通过对编码的关键值数据进行译码而获得的关键值数据相对应。
在对定向内插器的关键值数据进行编码的过程中,量化期间会在原始的关键值数据和复原的关键值数据间产生误差。此时,该原始的关键值数据与该复原的关键值数据间的误差是由用该原始关键值数据获得的旋转角与由该复原关键值数据获得的旋转角间的差值来定义的。
换句话说,假定包含在定向内插器节点中的一个关键值数据与其在译码器中的复原关键值数据分别称为 和 ,其中 表示旋转轴,θ表示旋转角并满足θ∈[-π,π],且通过旋转变换,在三维空间中的对象分别基于 和 从任意位置 移动到任意位置 和从 移动到任意位置 ,则量化误差是 和 间的差值,并满足e→(x→)=y→-y→^]]>,以四元数形式表示的 和 如等式(33)所示。X=(0,x→),Y=(0,y→),Y^=(0,y→^)------(33)]]>当表示 和 的四元数称为Q和 时,可导出以下等式。
Y=Q×X×Q*…(34)X=Q*×Y×Q此时,A×B表示四元数乘法,以及A*表示A的共轭。基于等式(33)和(34),可导出以下等式。Y^=Q^×X×Q*^=Q^×Q*×Y×Q×Q*^=Qerror×Y×Qerror*-------(35)]]>此时,Qerror是表示 和 间在旋转变换方面的关系,并由以下等式定义。Qerror=Q^×Q*-----(36)]]>当 和 间的差分旋转角称为θerror时,用四元数变换公式以及等式(36)可获得θerror。θerror=2cos-1q0,error=2cos-1(Q^·Q)-----θerror∈
------(37)]]>此时,●表示内积操作。等式(37)定义在预定时刻出现在所有动画关键帧中的瞬时量化误差,可由以下等式定义预定时刻(t)的瞬时量化误差,以便从等式(37)导出用于获得在整个动画间隔中的量化误差的公式。e(t)=2arccos{Q(t)·Q^(t)}------(38)]]>
通过将公式(38)大量地应用到整个关键帧间隔,可以导出平均误差Em以及最大误差Ep,在该间隔期间,用定向内插器来执行动画。
此时,为了获得平均误差Em,必须首先获得时间间隔[ti-1,ti]中误差的部分和 ,如图14所示。下面,与原始关键值数据Qi-1和Qi相对应的译码的关键值数据将分别称为 和 由于动画路径在三维空间中会出现失真,因此必须将时间间隔[ti-1,ti]必划分为两个子间隔[ti-1,ti”]和[ti-1”,ti],且该两子间隔必须彼此分开计算。此时,假定将两个动画路径间,即一组Qi值与一组 值间的距离在间隔[ti-1,ti]的ti”减至最小。用以下等式计算在ti-1和ti时的瞬时误差。ei-1=2arccos(Q′i-1·Q^i-1)-----(39)]]>ei=2arccos(Q′i·Q^i)]]>另外,间隔[ti-1,ti]中的ti”与 成比例,如等式(40)所示。ti′′=ti-1+ei-1ei-1+ei(ti-ti-1)------(40)]]>用等式(41)计算中间四元数值以及在ti”时的瞬时误差。Qi′′=SLERP(Qi-1,Qi,ti′′-ti-1ti-ti-1)---(41)]]>Q^i′′=SLERP(Q^i-1,Q^i,ti′′-ti-1ti-ti-1)]]>ei′′=2·arccos(Qi′′·Q^i′′)]]>但是,用下述等式(42)获得在任意时刻(t)的一瞬时误差。e(t)=2·arccos(Q(t)·Q^(t))------(42)]]>此时,Q(t)=SLERP(Qi-1,Qi,t-ti-1ti-ti-1)]]>以及Q^(t)=SLERP(Q^i-1,Q^i,t-ti-1ti-ti-1)]]>。但是,计算在任意时刻(t)的瞬时误差e(t)并不容易。因此,使用近似法(43)所示的线性近似来确定e(t)。 也可以用近似法(43)和(44)来获得时间间隔[ti-1,ti]中的误差的部分和 以及时间间隔[ti-1,ti]中的最大误差的部分和 近似法(45)可以重新整理如下。 最后,用以下的近似法(46)计算时间间隔[tmin,tmax]中的平均误差Em以及最大误差Ep。Em≅1tmax-tminΣiEim]]>Ep≅maxiEip]]>因此,根据本发明的第三实施例,量化器1000中的误差测量单元1050用等式(37)计算原始关键值数据与复原关键值数据间的误差,并可以更精确地测量在四元数空间中由于量化误差而引起的图像失真的程度。
图15是本发明的用于对关键值数据进行编码的方法与用于对关键值数据进行编码的常规方法相比较的性能图。如图15所示,根据本发明的用于对关键值数据进行编码的方法,当给定编码所需的预定位数量时,与常规的MPEG-4 BIFS PMFC方法相比,可以大大降低图像失真的程度。
本发明能以写在计算机可读记录介质上的计算机可读代码来实现。在这里,计算机可读记录介质包括能由计算机系统读取的任何种类的记录介质。例如,该计算机可读记录介质包括ROM、RAM、CD-ROM、磁带、软盘、光数据存储器以及载波(通过Internet传输)。可将该计算机可读记录介质分散到通过网络连接的计算机系统中,计算机能以分散方式读取该记录介质。
尽管本发明是参照其优选实施例来描述的,但本领域的技术人员应该理解,在不脱离由所附权利要求限定的本发明的精神和范围的情况下,可以对其进行形式和细节的各种改变。
根据本发明,用于对定向内插器的关键值数据进行编码和译码的方法可以通过对表示关键帧的旋转变换值间的差值的旋转差值进行编码来有效降低待编码的连续关键值数据间的冗余。
另外,根据本发明,通过直接校正对象的旋转方向,可以防止由于量化误差而将对象复原为在与原始方向相反的方向上旋转。
此外,由于在本发明中,在构成表示关键值数据的四元数的四个分量中只对具有相对较小值的第二至第四分量进行编码,并用该第二至第四分量来复原第一分量,调节第二至第四分量从而将第一分量复原为实数,可以大大降低编码所需的数据大小。
权利要求
1.一种用于对表示关键帧中的对象旋转变换的定向内插器的关键值数据进行编码的装置,包括旋转差分数据生成器,利用当前关键帧的旋转变换值和前关键帧的复原旋转变换值来生成旋转差值,用来根据通过关键值数据应用于在当前关键帧中所述对象的旋转变换与通过关键值数据应用于在前关键帧中该对象的旋转变换之间的最大差异来旋转所述对象,并通过量化该旋转差值来输出旋转差分数据;熵编码器,对该旋转差分数据进行熵编码。
2.如权利要求1所述的装置,其中,所述旋转差分数据生成器通过将所述当前关键帧的旋转变换值与所述前关键帧的复原旋转变换值的共轭进行四元数相乘来生成所述旋转差值。
3.如权利要求1所述的装置,其中,所述旋转差分数据生成器执行非线性量化,通过该操作,可以将具有较小旋转差值的区域量化为比具有较大旋转差值的区域具有更大的分辨率。
4.如权利要求1所述的装置,其中,所述旋转差分数据生成器调节所述旋转差分数据的分量值,从而可以通过逆量化旋转差分数据的量化分量值将旋转差分数据的未量化分量值复原为实数。
5.如权利要求4所述的装置,其中,所述旋转差分数据生成器通过将预定调节范围内的变量增加到所述旋转差分数据的各量化分量值或所述旋转差分数据的各调节分量值,或者从所述旋转差分数据的各量化分量值或所述旋转差分数据的各调节分量值中减去预定调节范围内的变量来生成所述旋转差分数据。
6.如权利要求1所述的装置,其中,所述旋转差分数据生成器包括量化器,通过量化所述旋转差值的三个分量值来生成旋转差分数据;量化数据调节器,调节输入到其中的旋转差分数据的三个分量值;逆量化器,对该调节分量值进行逆量化;旋转差值复原器,用该三个逆量化的分量值来复原未量化的分量值,并因此生成复原的旋转差值;误差测量单元,测量输入到所述量化器中的旋转差值与所述复原旋转差值间的误差,并输出具有调节分量值的旋转差分数据,从而可以将该误差减至最小。
7.如权利要求6所述的装置,其中,如果所述当前误差小于所述调节误差,则所述误差测量单元利用输入到所述量化器中的所述旋转差值与所述复原旋转差值间的当前误差来更新调节误差,如果所述调节误差小于最终误差,则用所述调节误差更新最终误差,并将与所述调节误差相应的所述调节旋转差分数据输出到所述量化数据调节器中。
8.如权利要求1所述的装置,其中,所述旋转差分数据生成器包括第一四元数乘法器,用所述当前关键帧的旋转变换值和所述前关键帧的复原旋转变换值来生成所述旋转差值;量化器,通过量化该旋转差值来生成旋转差分数据;逆量化器,通过逆量化该旋转差分数据来生成复原的旋转差值;第二四元数乘法器,通过将该复原的旋转差值与所述前关键帧的旋转变换值进行四元数相乘来生成所述当前关键帧的复原旋转差值。
9.如权利要求8所述的装置,其中,所述量化器只量化由四元数表示的所述旋转差值的第一至第四分量值中的三个分量值。
10.如权利要求1所述的装置,其中,所述旋转差分数据生成器生成所述当前关键帧的旋转变换值与所述前关键帧的旋转变换值间的第一旋转差值,所述前关键帧的旋转变换值与所述前关键帧的复原旋转变换值间的第二旋转差值,以及所述当前关键帧的旋转变换值与所述前关键帧的复原旋转变换值间的第三旋转差值,并检测是否出现了旋转方向误差,以致使该对象在与原始方向相反的方向上旋转。
11.如权利要求10所述的装置,其中,当从所述第一旋转差值获得的所述对象的旋转方向与从所述第三旋转差值获得的该对象的旋转方向相反,从第二旋转差值获得的该对象的旋转方向与从所述第三旋转差值获得的该对象的旋转方向相反,以及从第一至第三旋转差值获得的旋转角超过预定的临界旋转角时,所述旋转差分数据生成器确定出现了所述旋转方向误差。
12.如权利要求1所述的装置,其中,所述旋转差分数据生成器包括旋转方向误差检测器,基于所述当前关键帧的旋转变换值以及所述前关键帧的复原旋转变换值来检测是否出现了旋转方向误差,以致使所述对象的原始旋转方向与其译码的旋转方向相反;旋转方向校正器,调节所述旋转差值,从而使所述对象的译码的旋转方向与其原始旋转方向相同;旋转方向选择器,根据从所述旋转方向误差检测器输入的检测结果,将所述旋转差值或从所述旋转方向校正器输入的旋转差值选择为待量化的差分数据。
13.如权利要求12所述的装置,其中,所述旋转差分数据生成器进一步包括量化单元,量化由所述旋转方向选择器选择的差值,并输出该量化的差值,该量化单元包括量化器,通过量化输入到其中的旋转差值的三个分量值来生成旋转差分数据;量化数据调节器,调节输入到其中的旋转差分数据的三个分量值;逆量化器,逆量化该调节分量值;旋转差值复原器,通过用该三个逆量化的分量值复原未量化的分量值,来生成复原的旋转差值;误差测量单元,测量输入到所述量化单元中的旋转差值与该复原旋转差值间的误差,并基于该测量误差来输出调节的旋转差分数据。
14.如权利要求13所述的装置,其中,量化数据调节器通过将预定调节范围内的变量增加到从所述量化器输入的旋转差分数据的各量化分量值或从所述误差测量单元输入的旋转差分数据的各调节分量值,或者从所述误差测量单元输入的旋转差分数据的各调节分量值或从所述误差测量单元输入的旋转差分数据的各调节分量值中减去预定调节范围内的变量来生成调节旋转差分数据。
15.如权利要求13所述的装置,其中,所述误差测量单元利用输入到所述量化器中的所述旋转差值与所述复原的旋转差值间的当前误差来更新调节误差,如果该当前误差小于该调节误差;如果该调节误差小于最终误差,则用该调节误差更新该最终误差,并将与该调节误差相应的所述调节旋转差分数据输出到所述量化数据调节器中。
16.如权利要求1所述的装置,进一步包括循环DPCM算子,通过对所述旋转差分数据进行线性DPCM操作以及然后对该线性DPCM的差分数据和量化范围内的最大值进行预定操作,生成其大小被减小的差分数据,其中,所述熵编码器对循环DPCM的旋转差分数据进行熵编码。
17.如权利要求16所述的装置,其中,所述循环DPCM算子输出所述线性DPCM的差分数据和所述线性DPCM差分数据与所述量化范围内的最大值的差值间的较小者。
18.如权利要求16所述的装置,其中,所述旋转差分数据生成器包括第一四元数乘法器,用当前关键帧的旋转变换值和前关键帧的复原旋转变换值来生成所述旋转差值;量化器,通过量化该旋转差值来生成旋转差分数据;逆量化器,通过逆量化该旋转差分数据来生成复原的旋转差值;第二四元数乘法器,通过将该复原的旋转差值与所述前关键帧的旋转变换值进行四元数相乘来生成所述当前关键帧的复原旋转差值。
19.如权利要求1所述的装置,其中,所述熵编码器将待编码的旋转差分数据编码为第一数字序列,其数量与该待编码的旋转差分数据的大小相应,以及用于表示该第一数字序列结束的一比特的第二数字。
20.如权利要求1所述的装置,其中,所述熵编码器对在各位平面上待编码的旋转差分数据进行编码。
21.一种用于对位流进行译码的装置,其中将表示关键帧中的对象旋转变换的定向内插器的关键值数据编码为该位流,该装置包括熵译码器,通过对该位流进行熵译码来生成循环DPCM的旋转差分数据或量化的旋转差分数据;逆循环DPCM算子,根据从该位流译码的DPCM次数,通过对从所述熵译码器输入的旋转差分数据进行逆循环DPCM操作来生成量化的旋转差分数据;逆量化器,通过对量化的旋转差分数据进行逆量化来生成旋转差分数据,该旋转差分数据用来根据通过关键值数据应用于在当前关键帧中所述对象的旋转变换与通过关键值数据应用于在前关键帧中该对象的旋转变换之间的最大差异来旋转所述对象;四元数乘法器,通过将当前关键帧的旋转差值与前关键帧的译码的旋转变换值进行四元数相乘来生成该当前关键帧的旋转变换值。
22.如权利要求21所述的装置,其中,如果从所述位流中译码的关键值标志显示所有关键帧差分数据的每个分量均具有相同值,则所述熵译码器将所述关键帧关键值数据的每个分量均译码为从所述位流中译码的预定值。
23.如权利要求21所述的装置,其中,所述逆循环DPCM算子通过对所述循环DPCM的旋转差分数据和该旋转差分数据量化范围内的最大值进行预定操作来生成逆循环DPCM的循环差分数据。
24.如权利要求21所述的装置,其中,所述逆量化器通过逆量化单位四元数的三个分量值并利用该三个复原的分量值复原另一个分量值,来生成旋转差值。
25.一种用于生成旋转差分数据的装置,其生成表示每帧中对象旋转的旋转变换值的差分数据,包括第一四元数乘法器,生成旋转差值,用来根据通过当前关键帧的旋转变换值应用于该当前关键帧中所述对象的旋转变换与通过前关键帧的旋转变换值应用于该前关键帧中所述对象的旋转变换间的最大差异来旋转所述对象;量化单元,通过量化该旋转差值来生成旋转差分数据;逆量化单元,通过逆量化该旋转差分数据来生成复原的旋转差值;第二四元数乘法器,通过将该复原的旋转差值与所述前一帧的旋转变换值进行四元数相乘来生成复原的旋转变换值。
26.如权利要求25所述的装置,其中,所述第一四元数乘法器通过将所述当前帧的旋转变换值与所述前一帧的复原旋转变换值的共轭进行四元数相乘来生成旋转差值。
27.如权利要求25所述的装置,其中,所述量化单元执行非线性量化,通过该操作,可以将具有较小旋转差值的区域量化为比具有较大旋转差值的区域具有更大的分辨率。
28.如权利要求25所述的装置,其中,所述量化单元只量化由四元数表示的所述旋转差值的第一至第四分量中的三个分量。
29.如权利要求25所述的装置,其中,所述量化单元调节所述旋转差分数据的分量,从而可以将用该旋转差分数据分量值复原的还未量化的旋转差值分量值转换为实数,并输出该旋转差分数据的调节分量。
30.如权利要求29所述的装置,其中,所述量化单元通过将预定调节范围内的变量增加到所述旋转差分数据的各量化分量或所述旋转差分数据的各调节分量,或者从所述旋转差分数据的各量化分量或从所述旋转差分数据的各调节分量中减去预定调节范围内的变量来生成最终旋转差分数据。
31.如权利要求25所述的装置,其中,所述量化单元包括量化器,通过量化输入到其中的旋转差值的三个分量来生成旋转差分数据;量化数据调节器,调节输入到其中的旋转差分数据的三个分量值;逆量化器,逆量化该调节分量值;旋转差值复原器,通过该三个逆量化的分量值来复原未被量化的分量值,从而生成复原的旋转差值;误差测量单元,测量输入到所述量化单元中的旋转差值与所述复原旋转差值间的误差,并输出具有调节分量的旋转差分数据,从而可以将该误差减至最小。
32.如权利要求31所述的装置,其中,所述误差测量单元用输入到所述量化单元中的所述旋转差值与所述复原旋转差值间的当前误差来更新调节误差,如果该当前误差小于该调节误差;如果该调节误差小于最终误差,则用该调节误差来更新该最终误差,并将与该调节误差相应的调节旋转差分数据输出到所述量化数据调节器中。
33.如权利要求25所述的装置,其中,所述逆量化器对量化的分量值进行逆量化,并用该逆量化的分量值来复原未量化的分量值。
34.如权利要求25所述的装置,进一步包括旋转方向误差检测器,生成所述当前帧的旋转变换值与所述前一帧的旋转变换值间的第一旋转差值,所述前一帧的旋转变换值与从所述第二四元数乘法器输入的所述前一帧的复原旋转变换值间的第二旋转差值,以及所述当前帧的旋转变换值与所述前一帧的复原旋转变换值间的第三旋转差值,并检测是否出现了旋转方向误差。
35.如权利要求34所述的装置,其中,当从所述第一旋转差值获得的所述对象的旋转方向与从所述第三旋转差值获得的所述对象的旋转方向相反,从第二旋转差值获得的所述对象的旋转方向与从所述第三旋转差值获得的所述对象的旋转方向相反,以及从第一至第三旋转差值获得的旋转角超过预定的临界旋转角时,所述旋转方向误差检测器确定出现了所述旋转方向误差。
36.如权利要求25所述的装置,进一步包括旋转方向误差检测器,从所述第二四元数乘法器接收所述当前帧的旋转变换值以及所述前一帧的复原旋转变换值,并检测是否出现了旋转方向误差,以致所述对象的原始旋转方向与其译码的旋转方向相反;旋转方向校正器,调节从所述第一四元数乘法器输入的所述旋转差值,从而可以使所述对象的原始旋转方向与其译码的旋转方向相同,并输出已调节的旋转差值;旋转方向选择器,根据在所述旋转方向误差检测器中执行的检测结果,将从所述第一四元数乘法器输入的所述旋转差值或从所述旋转方向校正器输入的调节旋转差值输出到所述量化单元中。
37.如权利要求36所述的装置,其中,所述量化单元包括量化器,通过量化输入到其中的旋转差值的三个分量值来生成旋转差分数据;量化数据调节器,调节输入到其中的旋转差分数据的三个分量值;逆量化器,逆量化该调节分量值;旋转差值复原器,通过该三个逆量化的分量值来复原未量化的分量值,从而生成复原的旋转差值;误差测量单元,测量输入到所述量化单元中的旋转差值与复原旋转差值间的误差,并输出具有调节分量值的旋转差分数据,从而将该误差减至最小。
38.一种用于对表示各关键帧中对象旋转的定向内插器的关键值数据进行编码的方法,包括(a)生成复原的旋转差值,用来根据通过关键值数据应用于在当前关键帧中所述对象的旋转变换与通过关键值数据应用于在前关键帧中该对象的旋转变换之间存在的最大差异旋转所述对象,通过量化该旋转差值来生成待熵编码的旋转差分数据,以及(c)对该旋转差分数据进行熵编码。
39.如权利要求38所述的方法,其中在步骤(a)中,通过将所述当前关键帧的所述旋转变换值与所述前关键帧的所述复原旋转变换值进行四元数相乘来生成所述旋转差值。
40.如权利要求38所述的方法,其中在步骤(a)中,执行非线性量化,从而可以将具有较小旋转差值的区域量化为比具有较大旋转差值的区域具有更大的分辨率。
41.如权利要求38所述的方法,其中在步骤(a)中,调节所述旋转差分数据的分量值,从而可以将通过逆量化旋转差分数据的量化分量而复原的未量化的旋转差值分量值转换为实数。
42.如权利要求41所述的方法,其中在步骤(a)中,通过将预定调节范围内的变量增加到所述旋转差分数据的各量化分量值或所述旋转差分数据的各调节分量值,或者从所述旋转差分数据的各量化分量值或所述旋转差分数据的各调节分量值中减去预定调节范围内的变量来生成待熵编码的所述旋转差分数据。
43.如权利要求38所述的方法,其中步骤(a)包括(a1)通过量化所述旋转差值的三个分量值来生成旋转差分数据;(a2)调节该旋转差分数据的三个分量值;(a3)逆量化该调节分量值;(a4)通过用该三个逆量化的分量值复原一个分量值来生成复原的旋转差值;(a5)测量所述旋转差值和所述复原旋转差值间的误差,并确定具有调节分量值的旋转差分数据,从而可以将该误差最小化为待熵编码的旋转差分数据。
44.如权利要求43所述的方法,其中步骤(a5)包括(a51)用所述旋转差值与所述复原旋转差值间的当前误差来更新调节误差,如果该当前误差小于该调节误差;(a52)重复执行步骤(a2)至(a51),直到添加到或从所述旋转差值减去的变量超过所述预定调节范围;(a53)如果该调节误差小于最终误差,则用该调节误差更新该最终误差,对与所述调节误差相应的调节旋转差分数据执行步骤(a2)至(a52),并将与所述最终误差相应的调节旋转差分数据确定为待熵编码的旋转差分数据。
45.如权利要求38所述的方法,其中步骤(a)包括(a1)用所述当前关键帧的旋转变换值以及所述前关键帧的复原旋转变换值来生成所述旋转差值;(a2)通过量化该旋转差值来生成旋转差分数据;(a3)通过逆量化该旋转差分数据来生成复原的旋转差值;(a4)通过将该复原的旋转差值与所述前关键帧的旋转变换值进行四元数相乘来生成所述当前关键帧的复原旋转变换值。
46.如权利要求38所述的方法,其中在步骤(a2)中,只量化由四元数表示的所述旋转差值的第一至第四分量中的三个分量。
47.如权利要求38所述的方法,其中在步骤(a)中,生成所述当前关键帧的旋转变换值与所述前关键帧的旋转变换值间的第一旋转差值,所述前关键帧的旋转变换值与所述前关键帧的复原旋转变换值间的第二旋转差值,以及所述当前关键帧的旋转变换值与所述前关键帧的复原旋转变换值间的第三旋转差值,并检测是否出现了导致所述对象的译码旋转方向与其原始旋转方向相反的旋转方向误差。
48.如权利要求47所述的方法,其中在步骤(a)中,当从所述第一旋转差值获得的所述对象的旋转方向与从所述第三旋转差值获得的旋转方向相反,从第二旋转差值获得的所述对象的旋转方向与从所述第三旋转差值获得的旋转方向相反,以及从第一至第三旋转差值获得的旋转角超过预定的临界旋转角时,确定出现了所述旋转方向误差。
49.如权利要求38所述的方法,其中步骤(a)包括(a1)根据所述当前关键帧的旋转变换值与所述前关键帧的复原旋转变换值来检测是否出现了旋转方向误差,以致使所述对象的原始旋转方向与其译码的旋转方向相反;(a2)调节该旋转差值,从而可以使所述对象的原始旋转方向与其译码的旋转方向相同;(a3)根据步骤(a1)中执行的检测结果,选择该旋转差值或步骤(a2)中的所述调节旋转差值作为待量化的差分数据。
50.如权利要求49所述的方法,其中步骤(a)进一步包括(a4)量化步骤(a3)中选择的所述旋转差值,步骤(a4)包括(a41)通过量化选择的旋转差值的三个分量值来生成旋转差分数据;(a42)调节该旋转差分数据的三个量化分量值;(a43)逆量化该调节分量值;(a44)通过用该三个逆量化的分量值复原未量化的分量值,来生成复原的旋转差值;(a45)测量所述旋转差值与该复原旋转差值间的误差,并基于该误差来更新待熵编码的旋转差分数据。
51.如权利要求50所述的方法,其中在步骤(a42)中,通过将预定调节范围内的变量增加到步骤(a41)中生成的所述旋转差分数据的各分量值或步骤(a45)中更新的旋转差分数据的各分量值,或者从步骤(a41)中生成的所述旋转差分数据的各分量值或步骤(a45)中更新的旋转差分数据的各分量值中减去预定调节范围内的变量来调节所述旋转差分数据的三个分量。
52.如权利要求50所述的方法,其中步骤(a45)包括(a451)用所述旋转差值与所述复原旋转差值间的当前误差来更新调节误差,如果该当前误差小于该调节误差;(a452)重复执行步骤(a42)至(a451),直到添加到或从所述旋转差值减去的变量超过所述预定调节范围为止;(a453)如果该调节误差小于最终误差,则用该调节误差更新该最终误差,对与该调节误差相应的调节旋转差分数据执行步骤(a42)至(a452),并将与该最终误差相应的调节旋转差分数据确定为待熵编码的旋转差分数据。
53.如权利要求38所述的方法,进一步包括(c)通过对所述旋转差分数据执行线性DPCM操作,并对所述线性DPCM的差分数据以及步骤(a)和(c)间的量化范围内的最大值执行预定操作来生成其大小被减小的差分数据,其中在步骤(c)中,对在步骤(b)中其大小被减小的差分数据进行熵编码。
54.如权利要求53所述的方法,其中在步骤(b)中,输出所述线性DPCM的差分数据与所述线性DPCM的差分数据和所述量化范围内的所述最大值的差值间的较小者。
55.如权利要求53所述的方法,其中步骤(a)包括(a1)利用所述当前关键帧的旋转变换值和所述前关键帧的复原旋转变换值来生成所述旋转差值;(a2)通过量化该旋转差值来生成旋转差分数据;(a3)通过逆量化该旋转差分数据来生成复原的旋转差值;(a4)通过将该复原的旋转差值与所述前关键帧的旋转变换值进行四元数相乘来生成所述当前关键帧的复原旋转变换值。
56.如权利要求38所述的方法,其中在步骤(c)中,将旋转差分数据编码为第一数字序列,其数量与旋转差分数据的大小相应,以及表示该第一数字序列结束的一比特第二数字。
57.如权利要求38所述的方法,其中在步骤(c)中,在每个位平面上对旋转差分数据进行编码。
58.一种计算机可读记录介质,其中如权利要求38所述的方法以计算机可读程序代码的方式被记录。
59.一种计算机可读记录介质,其中如权利要求43所述的方法以计算机可读程序代码的方式被记录。
60.一种计算机可读记录介质,其中如权利要求45所述的方法以计算机可读程序代码的方式被记录。
61.一种计算机可读记录介质,其中如权利要求49所述的方法以计算机可读程序代码的方式被记录。
62.一种计算机可读记录介质,其中如权利要求53所述的方法以计算机可读程序代码的方式被记录。
63.一种用于对位流进行译码的方法,其中表示每个关键帧中对象旋转的定向内插器的关键值数据被编码为该位流,该方法包括(a)通过从该位流熵译码关键值数据来生成循环DPCM的旋转差分数据或量化的旋转差分数据;(b)根据从该位流译码的DPCM次数,通过对熵译码的旋转差分数据执行逆循环DPCM操作来生成旋转差分数据;(c)通过逆量化该旋转差分数据来生成旋转差值,用来根据通过各关键帧的四元数关键值数据应用于所述对象的旋转变换间的最大差异旋转所述对象;(d)通过将当前关键帧的旋转差值与前关键帧的译码旋转变换值进行四元数相乘来生成该当前关键帧的旋转变换值。
64.如权利要求63所述的方法,其中在步骤(a)中,如果从所述位流译码的关键字标志显示所有关键帧的差分数据的各分量具有相同值,则所述各关键帧的关键值数据的每个分量均被译码为从所述位流译码的预定值。
65.如权利要求63所述的方法,其中在步骤(b)中,通过对循环DPCM的旋转差分数据和所述旋转差分数据的量化范围内的最大值执行逆循环DPCM操作来生成具有扩大范围的旋转差分数据。
66.如权利要求63所述的方法,其中在步骤(c)中,通过逆量化所述旋转差分数据来复原旋转差值的三个分量值以及用该三个复原的分量值来复原一个分量值,生成该由单位四元数表示的旋转差值。
67.一种计算机可读记录介质,其中如权利要求63所述的方法以计算机可读程序代码的方式被记录。
68.一种计算机可读记录介质,其中如权利要求66所述的方法以计算机可读程序代码的方式被记录。
69.一种用于生成旋转差分数据的方法,生成表示每帧中对象旋转的旋转变换值的差分数据,该方法包括(a)用当前帧的旋转变换值和前一帧的复原旋转变换值来生成旋转差值,用来根据应用到每帧中所述对象的旋转变换间的最大差值来旋转所述对象;(b)通过量化该旋转差值来生成旋转差分数据;(c)通过逆量化该旋转差值来生成复原的旋转差值;(d)通过将该复原的旋转差值与前一帧的旋转变换值进行四元数相乘来生成当前帧的复原旋转变换值,并对所述当前帧的复原旋转变换值和下一帧的旋转变换值再次执行步骤(a)至(d)。
70.如权利要求69所述的方法,其中在步骤(a)中,通过将所述当前帧的旋转变换值与所述前一帧的复原旋转变换值的共扼进行四元数相乘来生成旋转差值。
71.如权利要求69所述的方法,其中在步骤(b)中,执行非线性量化,从而可以将具有较小旋转差值的区域量化为比具有较大旋转差值的区域具有更大的分辨率。
72.如权利要求69所述的方法,其中在步骤(b)中,只量化由四元数表示的所述旋转差值的第一至第四分量值中的三个分量值。
73.如权利要求69所述的方法,其中在步骤(b)中,调节所述旋转差分数据的量化分量值,从而可以通过逆量化所述旋转差分数据的分量值将旋转差值的未量化分量值复原为实数。
74.如权利要求73所述的方法,其中在步骤(b)中,通过将预定调节范围内的变量增加到所述旋转差分数据的各量化分量值或所述旋转差分数据的各调节分量值,或者从所述旋转差分数据的各量化分量值或所述旋转差分数据的各调节分量值减去预定调节范围内的变量来生成最终旋转差分数据。
75.如权利要求69所述的方法,其中步骤(b)包括(b1)通过量化所述旋转差值的三个分量值来生成旋转差分数据;(b2)调节该旋转差分数据的三个分量值;(b3)逆量化该调节分量值;(b4)通过用该三个逆量化的分量值复原未量化的分量值,来生成复原的旋转差值;(b5)测量所述旋转差值与该复原旋转差值间的误差,并输出具有调节分量值的旋转差分数据,从而可以将该误差减至最小。
76.如权利要求75所述的方法,其中(b5)包括(b51)用所述旋转差值与所述复原旋转差值间的当前误差更新调节误差,如果该当前误差小于该调节误差;(b52)重复执行步骤(b2)至(b51),直到步骤(b2)中添加到或从所述旋转差值减去的变量超过所述预定调节范围;(b53)如果该调节误差小于最终误差,则用该调节误差更新该最终误差,对与该调节误差相应的调节旋转差分数据执行步骤(b2)至(b52),并输出与该最终误差相应的调节旋转差分数据。
77.如权利要求69所述的方法,其中在步骤(c)中,通过逆量化所述旋转差分数据来复原未量化的旋转差值的分量值。
78.如权利要求69所述的方法,其中步骤(a)进一步包括(a2)通过生成所述当前帧的旋转变换值与所述前一帧的旋转变换值间的第一旋转差值,所述前一帧的旋转变换值与其复原的旋转变换值间的第二旋转差值,以及所述当前帧的旋转变换值与所述前一帧的复原旋转变换值间的第三旋转差值来检测旋转方向误差。
79.如权利要求78所述的方法,其中在步骤(a2)中,当从所述第一旋转差值获得的所述对象的旋转方向与从所述第三旋转差值获得的所述对象的旋转方向相反,从第二旋转差值获得的所述对象的旋转方向与从所述第三旋转差值获得的所述对象的旋转方向相反,以及从第一至第三旋转差值获得的旋转角超过预定的临界旋转角时,确定出现了所述旋转方向误差。
80.一种用于生成旋转差分数据的方法,生成表示每帧中对象旋转的旋转变换值的差分数据,该方法包括(a)用当前帧的旋转变换值和前一帧的复原旋转变换值生成旋转差值,用来根据应用于每帧中所述对象的旋转变换间的最大差值来旋转所述对象;(b)根据所述当前帧的旋转变换值和所述前一帧的复原旋转变换值,检测是否出现了旋转方向误差,以致使所述对象的原始旋转方向与其译码的旋转方向相反;(c)调节步骤(a)中生成的旋转差值,从而使所述对象的原始旋转方向与其译码的旋转方向相同;(d)根据步骤(b)中执行的检测结果,选择在步骤(a)中生成的旋转差值或该调节的旋转差值;(e)通过量化所选择的旋转差值来生成旋转差分数据;(f)通过逆量化该旋转差分数据来生成复原的旋转差值;(g)通过将该复原的旋转差值与所述前一帧的旋转变换值进行四元数相乘来生成所述当前帧的复原旋转变换值。
81.如权利要求80所述的方法,其中步骤(e)包括(e1)通过量化所选择的旋转差值的三个分量值来生成旋转差分数据;(e2)调节该旋转差分数据的三个分量值;(e3)逆量化该调节分量值;(e4)通过用该三个逆量化的分量值复原未量化的分量值,生成复原的旋转差值;(e5)测量所选择的旋转差值与所述复原旋转差值间的误差,并输出具有调节分量值的旋转差分数据,从而将该误差减至最小。
82.一种计算机可读记录介质,其中如权利要求69所述的方法以计算机可读程序代码的方式被记录。
83.一种计算机可读记录介质,其中如权利要求80所述的方法以计算机可读程序代码的方式被记录。
84.一种位流,其中表示每关键帧中对象旋转的定向内插器的关键值数据被编码为该位流,该位流包括通过量化用来根据各关键帧的四元数关键值数据应用于所述对象的旋转变换间的最大差值来旋转所述对象的旋转差值而被熵译码的旋转差分数据;熵译码信息,包括表示对所述旋转差分数据执行的熵译码方法的熵译码模式;逆循环DPCM信息,包括显示是否将对根据该熵译码模式被熵译码的旋转差分数据执行逆循环DPCM操作的逆循环DPCM操作次数;逆量化位,用来通过根据逆循环DPCM操作次数对逆循环DPCM的旋转差分数据进行逆量化来复原旋转差值。
85.如权利要求84所述的位流,其中,对所述旋转差分数据进行编码,从而只量化由四元数表示的旋转差值的三个分量。
86.如权利要求84所述的位流,其中所述熵译码信息进一步包括关键值标志,显示该关键值数据的各分量的旋转差分数据是否具有相同值;预定旋转差分数据,当该关键值标志显示该关键值数据的各分量的旋转差分数据具有相同值时,将该预定旋转差分数据译码到所有关键值数据的旋转差分数据的各分量中。
87.如权利要求84所述的位流,其中,所述逆循环DPCM信息进一步包括用于对所述旋转差分数据执行逆循环DPCM操作的内部旋转差分数据。
全文摘要
提供一种用于对表示关键帧图像中对象旋转的定向内插器的关键值数据进行编码的方法和装置。该装置包括旋转差分数据生成器、循环DPCM算子以及熵编码器。所述旋转差分数据生成器利用当前关键帧的旋转变换值和前关键帧的复原旋转变换值来生成旋转差值,用来根据通过关键值数据而应用于该当前关键帧中所述对象的旋转变换和通过关键值数据而应用于该前关键帧中所述对象的旋转变换间的最大差值来旋转所述对象,并通过量化该旋转差值来输出旋转差分数据。所述循环DPCM算子对旋转差分数据有选择地执行线性DPCM操作或循环DPCM操作。所述熵编码器对该旋转差分数据进行熵编码。
文档编号G06T9/00GK1428745SQ0215423
公开日2003年7月9日 申请日期2002年11月27日 优先权日2001年11月27日
发明者金道均, 郑锡润, 张义善, 禹相玉, 李信俊, 韩万镇, 张敬子 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1