專利名稱:用于對(duì)定向內(nèi)插器進(jìn)行編碼和譯碼的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于編碼和譯碼三維動(dòng)畫數(shù)據(jù)的方法和裝置,更準(zhǔn)確地說(shuō),涉及一種用于對(duì)定向內(nèi)插器進(jìn)行編碼和譯碼的方法和裝置,該定向內(nèi)插器表示有關(guān)動(dòng)畫中的對(duì)象的旋轉(zhuǎn)的信息。
背景技術(shù):
MPEG-4BIFS,是國(guó)際多媒體標(biāo)準(zhǔn)之一,利用具有動(dòng)畫地關(guān)鍵字和關(guān)鍵字值的內(nèi)插器節(jié)點(diǎn)支持一種基于關(guān)鍵幀的動(dòng)畫。
為盡可能自然和平滑地使用這樣一種基于關(guān)鍵幀動(dòng)畫技術(shù)來(lái)表示動(dòng)畫,要求相當(dāng)多的關(guān)鍵字和相當(dāng)多的關(guān)鍵字值數(shù)據(jù),并且關(guān)鍵幀間的現(xiàn)場(chǎng)數(shù)據(jù)是由內(nèi)插器填充的。在虛擬現(xiàn)實(shí)造型語(yǔ)言(VRML)中的內(nèi)插器包含線性或球性內(nèi)插。
在時(shí)間軸上關(guān)鍵字和關(guān)鍵字值近似原始的動(dòng)畫曲線。圖1是根據(jù)在三維球性的表面上的時(shí)間推移由定向內(nèi)插器節(jié)點(diǎn)所表示的動(dòng)畫數(shù)據(jù)的二維軌跡的圖。如圖1所示,常規(guī)的MPEG-4BIFS支持關(guān)鍵幀間的球性線性內(nèi)插器,并且動(dòng)畫路徑看起來(lái)與表示該動(dòng)畫數(shù)據(jù)的變化的一組片段類似。
在由BIFS提供的定向內(nèi)插器節(jié)點(diǎn)中,關(guān)鍵字?jǐn)?shù)據(jù)使用-8和8間的間斷數(shù)字表示在動(dòng)畫所處的時(shí)間軸上的預(yù)定時(shí)間瞬間。關(guān)鍵字值數(shù)據(jù)表示在由關(guān)鍵字?jǐn)?shù)據(jù)所表示的預(yù)定的時(shí)間瞬間在合成圖像中有關(guān)該對(duì)象的旋轉(zhuǎn)的信息。在不是由關(guān)鍵字?jǐn)?shù)據(jù)所表示的在另一預(yù)定時(shí)間瞬間上的對(duì)象的旋轉(zhuǎn)信息是通過(guò)球性線形內(nèi)插來(lái)利用與兩個(gè)時(shí)間瞬間相對(duì)應(yīng)的、與預(yù)定時(shí)間瞬間最鄰近的關(guān)鍵字?jǐn)?shù)據(jù)而獲得的。
在球性線性內(nèi)插器中,由旋轉(zhuǎn)軸和旋轉(zhuǎn)角來(lái)表示旋轉(zhuǎn)信息。象虛擬現(xiàn)實(shí)造型語(yǔ)言(VRML)一樣,MPEG4-BIFS利用定向內(nèi)插器節(jié)點(diǎn)來(lái)支持由旋轉(zhuǎn)軸和旋轉(zhuǎn)角所表示的旋轉(zhuǎn)信息。當(dāng)利用在球性線性內(nèi)插器中的關(guān)鍵字值數(shù)據(jù)來(lái)生成平滑動(dòng)畫時(shí),關(guān)鍵幀間的關(guān)鍵字值數(shù)據(jù)的微分值彼此非常相關(guān),這導(dǎo)致了數(shù)據(jù)間的冗余。因此,使用數(shù)據(jù)的微分值來(lái)編碼關(guān)鍵字值數(shù)據(jù)的一種方法是很有效的。
MPEG-4 BIFS提供用于編碼由定向內(nèi)插器節(jié)點(diǎn)的關(guān)鍵字和關(guān)鍵字值數(shù)據(jù)所表示的現(xiàn)場(chǎng)數(shù)據(jù)的兩種不同的方法。一種是利用脈碼調(diào)制(PCM)來(lái)編碼現(xiàn)場(chǎng)數(shù)據(jù)的方法,另一種是利用差分脈碼調(diào)制(DPCM)和熵編碼來(lái)編碼現(xiàn)場(chǎng)數(shù)據(jù)的方法。
在利用PCM來(lái)編碼現(xiàn)場(chǎng)數(shù)據(jù)的方法中,僅在將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)上執(zhí)行量化處理。由于將被編碼的數(shù)據(jù)的特征在本方法中不被考慮,該方法被認(rèn)為無(wú)效。在利用PCM來(lái)編碼現(xiàn)場(chǎng)數(shù)據(jù)的方法中,輸入定向內(nèi)插器節(jié)點(diǎn)的現(xiàn)場(chǎng)數(shù)據(jù),并且現(xiàn)場(chǎng)數(shù)據(jù)的關(guān)鍵字值數(shù)據(jù)被變換成在四元數(shù)空間中的值。接著,量化關(guān)鍵字和關(guān)鍵字值數(shù)據(jù)。量化的現(xiàn)場(chǎng)數(shù)據(jù)以二進(jìn)制數(shù)據(jù)的形式被輸出。為測(cè)量與原始現(xiàn)場(chǎng)數(shù)據(jù)相比四元數(shù)變換的結(jié)果可視失真的程度,二進(jìn)制數(shù)據(jù)被復(fù)原成由旋轉(zhuǎn)軸和旋轉(zhuǎn)角組成的關(guān)鍵字值數(shù)據(jù)。存儲(chǔ)并在屏幕上輸出定向內(nèi)插器節(jié)點(diǎn)的復(fù)原后的現(xiàn)場(chǎng)數(shù)據(jù)。利用復(fù)原后的數(shù)據(jù)測(cè)量由四元數(shù)誤差所引起的圖像的可視失真的程度是可能的。圖像的失真可用以下等式(1)來(lái)計(jì)算。
在等式(1)中,N表示現(xiàn)場(chǎng)數(shù)據(jù)的數(shù)量,以及εi表示在一四元數(shù)時(shí)間中復(fù)原編碼關(guān)鍵字值數(shù)據(jù)Qi以及關(guān)鍵字值數(shù)據(jù)
間的一差分值。
另一方面,在用于使用DPCM和熵編碼來(lái)編碼現(xiàn)場(chǎng)數(shù)據(jù)的方法中,連續(xù)數(shù)據(jù)間的一關(guān)聯(lián)被考慮,因此在編碼效率方面,這種方法被認(rèn)為比利用PCM來(lái)編碼現(xiàn)場(chǎng)數(shù)據(jù)的方法更有效。在這種方法中,在將被編碼的先前復(fù)原關(guān)鍵字值和關(guān)鍵字值數(shù)據(jù)間的一差分值在一量化處理前被計(jì)算,然后量化該差分值,從而通過(guò)利用在該差分值中所示的數(shù)據(jù)的特性提高編碼效率。
圖2A和2B分別是利用線性DPCM和熵編碼的一MPEG-4PMFC以及利用線性衰減DPCM和熵編碼的一MPEG-4PMFC譯碼器的框圖。在圖2A中所示的一線性DPCM運(yùn)算符用以下等式(2)來(lái)計(jì)算當(dāng)前關(guān)鍵字值數(shù)據(jù)和先前復(fù)原關(guān)鍵字值數(shù)據(jù)間的差分?jǐn)?shù)據(jù)
在等式(2)中,Qi表示在一預(yù)定時(shí)間瞬間(t)的原始關(guān)鍵字值數(shù)據(jù),其是由一四元數(shù)來(lái)表示,以及
表示在一預(yù)定時(shí)間瞬間(t-1)的關(guān)鍵字值數(shù)據(jù),其是從一誤差補(bǔ)償電路復(fù)原。
然而,在圖2A中所示的在用于編碼關(guān)鍵字值數(shù)據(jù)的裝置中執(zhí)行的編碼方法沒(méi)有一高的編碼效率。通過(guò)分析關(guān)鍵字值數(shù)據(jù)很容易指出該編碼方法的缺點(diǎn)是什幺是可能的,其確定在一四元數(shù)時(shí)間中一對(duì)象的旋轉(zhuǎn)。關(guān)鍵字值數(shù)據(jù)由以下等式中的一四元數(shù)來(lái)表示。
例如,當(dāng)一個(gè)四元數(shù)的分量具有相同的絕對(duì)值以作為在一四元數(shù)時(shí)間中不同標(biāo)記的另一四元數(shù)的它們的相應(yīng)的分量,如等式(3)中所示時(shí),兩個(gè)四元數(shù)被認(rèn)為是相同的。換句話說(shuō),這兩個(gè)四元數(shù)在一3D時(shí)間的一對(duì)象的旋轉(zhuǎn)變換方面提供相同的效果,這表示影響一對(duì)象的旋轉(zhuǎn)變換的因素是一旋轉(zhuǎn)軸的一方向以及一旋轉(zhuǎn)角,而不是該旋轉(zhuǎn)軸的矢量。然而,象在MPEG4BIFS中,如果關(guān)鍵字值數(shù)據(jù)由使用等式(3)的一四元數(shù)表示以及一差分值通過(guò)計(jì)算連續(xù)關(guān)鍵字值數(shù)據(jù)間的矢量中的差值被線性計(jì)算,該差分值不為0,這表示線性差分值沒(méi)有很好地反映在旋轉(zhuǎn)變換中的冗余。因此,使用如等式(1)中所示用于測(cè)量圖像的失真程度的方法精確地測(cè)量圖像質(zhì)量是不可能的。
發(fā)明內(nèi)容
為解決上述和其它問(wèn)題,本發(fā)明的一個(gè)方面是提供一種用于編碼和譯碼一定向內(nèi)插器的方法和裝置,編碼和譯碼由從一原始定向內(nèi)插器抽取的斷點(diǎn)組成的一抽取定向內(nèi)插器以便防止抽取定向內(nèi)插器與原始定向內(nèi)插器間的一誤差大于一允許誤差極限,從而提供具有一高壓縮比的高質(zhì)量動(dòng)畫。
本發(fā)明的另一方面是提供一種用于編碼和譯碼一定向內(nèi)插器的方法和裝置,通過(guò)計(jì)算一旋轉(zhuǎn)差分比,能提供具有一高壓縮比的高質(zhì)量動(dòng)畫,能充分地反映在旋轉(zhuǎn)變換中的冗余,并能使用該旋轉(zhuǎn)差分值來(lái)編碼一定向內(nèi)插器的關(guān)鍵字值數(shù)據(jù)。
本發(fā)明的另一方面提出了一種由根據(jù)本發(fā)明的對(duì)一定向內(nèi)插器進(jìn)行編碼和譯碼的方法和裝置來(lái)編碼和譯碼的一位流,這能提供具有一高壓縮比的高質(zhì)量的動(dòng)畫。
因此,為實(shí)現(xiàn)本發(fā)明的上述和其它目的,提供一種對(duì)一定向內(nèi)插器進(jìn)行編碼的裝置,該定向內(nèi)插器包括用于表示在一時(shí)間軸上關(guān)鍵幀位置的關(guān)鍵字值以及用于表示一對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù)。該裝置包括一斷點(diǎn)抽取器、一關(guān)鍵字?jǐn)?shù)據(jù)編碼器、一關(guān)鍵字值數(shù)據(jù)編碼器。該斷點(diǎn)抽取器從由輸入到其中的一定向內(nèi)插器所組成的第一動(dòng)畫路徑中抽取一最少數(shù)的斷點(diǎn),這能產(chǎn)生不大于所述第一動(dòng)畫路徑和由抽取斷點(diǎn)所生成的一第二動(dòng)畫路徑間的一預(yù)定誤差極限的一誤差。一關(guān)鍵字?jǐn)?shù)據(jù)編碼器,編碼從斷點(diǎn)抽取器輸入的關(guān)鍵字?jǐn)?shù)據(jù)。一關(guān)鍵字值數(shù)據(jù)編碼器,編碼從所述斷點(diǎn)抽取器輸入的關(guān)鍵字值數(shù)據(jù)。
最好,本發(fā)明進(jìn)一步包括一重新采樣器以及一選擇器。該重新采樣器將第一動(dòng)畫路徑采樣到具有一預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分中,并輸出包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)以及重新采樣關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器。該選擇器響應(yīng)一外部輸入信號(hào),將輸入到其中的一定向內(nèi)插器輸出到該重新采樣器以及該斷點(diǎn)抽取器中。
為實(shí)現(xiàn)本發(fā)明的上述和其它目的,提供一種對(duì)一定向內(nèi)插器進(jìn)行編碼的裝置,該定向內(nèi)插器包括用于表示在一時(shí)間軸上關(guān)鍵幀位置的關(guān)鍵字值以及用于表示一對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù)。該裝置包括一重新采樣器、一關(guān)鍵字?jǐn)?shù)據(jù)編碼器、一關(guān)鍵字值數(shù)據(jù)編碼器。該重新采樣器將由一輸入定向內(nèi)插器組成的一動(dòng)畫路徑采樣到具有一預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分中并輸出包括采樣關(guān)鍵字?jǐn)?shù)據(jù)和采樣關(guān)鍵字值數(shù)據(jù)。該關(guān)鍵字?jǐn)?shù)據(jù)編碼器,編碼從該重新采樣器輸入的關(guān)鍵字?jǐn)?shù)據(jù)。該關(guān)鍵字值數(shù)據(jù)編碼器,生成一旋轉(zhuǎn)差分值,該差分值用來(lái)按幾乎等于通過(guò)一當(dāng)前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換以及通過(guò)一前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的一差值來(lái)旋轉(zhuǎn)該對(duì)象,并因此編碼從該重新采樣器輸入的關(guān)鍵字值數(shù)據(jù)。
最好,斷點(diǎn)抽取器包括一線性內(nèi)插器、一誤差計(jì)算器、以及一確定單元。該線性內(nèi)插器抽取一輸入動(dòng)畫路徑的一開(kāi)始路徑點(diǎn)以及一結(jié)束路徑點(diǎn),在開(kāi)始和結(jié)束路徑點(diǎn)間的選擇路徑點(diǎn),以及利用所選擇的路徑點(diǎn)內(nèi)插還沒(méi)有被選擇的其它路徑點(diǎn)。該誤差計(jì)算器,計(jì)算輸入動(dòng)畫路徑和由線性內(nèi)插器利用內(nèi)插所生成的一內(nèi)插動(dòng)畫路徑間的一誤差。該確定單元抽取斷點(diǎn),通過(guò)該操作,能最小化輸入動(dòng)畫路徑與內(nèi)插動(dòng)畫路徑間的一誤差,并輸出選擇的斷點(diǎn),如果相應(yīng)誤差小于一預(yù)定誤差極限。
最好,關(guān)鍵字值編碼器包括一旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器以及一熵編碼器。該旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器利用一當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值以及一前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值來(lái)生成一旋轉(zhuǎn)差分值,該差分值被用來(lái)按幾乎等于通過(guò)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到在該當(dāng)前關(guān)鍵幀中的該對(duì)象的旋轉(zhuǎn)變換以及通過(guò)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到前關(guān)鍵幀中的該對(duì)象的旋轉(zhuǎn)變換間的一差值來(lái)旋轉(zhuǎn)該對(duì)象,并通過(guò)量化該旋轉(zhuǎn)差分值來(lái)輸出旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該熵編碼器,熵編碼該旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
最好,旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器包括一第一四元數(shù)乘法器,一量化器,一逆量化器,以及一第二四元數(shù)乘法器。該第一四元數(shù)乘法器利用該當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值以及前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成旋轉(zhuǎn)差分值。該一量化器通過(guò)量化該旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該逆量化器通過(guò)逆量化該旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成一復(fù)原旋轉(zhuǎn)差分值。該一第二四元數(shù)乘法器通過(guò)將復(fù)原旋轉(zhuǎn)差分值四元數(shù)乘以前關(guān)鍵幀的一旋轉(zhuǎn)變換值來(lái)生成當(dāng)前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值。
最好,關(guān)鍵字?jǐn)?shù)據(jù)編碼器包括一第一量化器,一第一DPCM處理器,一DND處理器,以及一第一熵編碼器。該第一量化器利用預(yù)定量化位來(lái)量化一定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù)。該第一DPCM處理器,生成量化關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)。該DND處理器,根據(jù)差分?jǐn)?shù)據(jù)與一最大值的關(guān)系以及它們間一最小值在該差分?jǐn)?shù)據(jù)上執(zhí)行一DND操作。該第一熵編碼器,熵編碼從DND處理器輸入的有效期分?jǐn)?shù)據(jù)。
為實(shí)現(xiàn)本發(fā)明的上述和其它目的,提供一種用于對(duì)一位流進(jìn)行譯碼的裝置,將包括用于表示在一時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)以及用于表示一對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器進(jìn)行編碼。該裝置包括一關(guān)鍵字?jǐn)?shù)據(jù)譯碼器,一關(guān)鍵字值數(shù)據(jù)譯碼器,一定向內(nèi)插器合成器。該關(guān)鍵字?jǐn)?shù)據(jù)譯碼器譯碼來(lái)自一輸入位流的關(guān)鍵字?jǐn)?shù)據(jù)。該關(guān)鍵字值數(shù)據(jù)譯碼器,譯碼來(lái)自該輸入位流的關(guān)鍵字值數(shù)據(jù)。該定向內(nèi)插器合成器,通過(guò)合成譯碼關(guān)鍵字值數(shù)據(jù)和利用該譯碼關(guān)鍵字值數(shù)據(jù)球性線性內(nèi)插的關(guān)鍵字值數(shù)據(jù)來(lái)生成一定向內(nèi)插器。
最好,關(guān)鍵字值數(shù)據(jù)譯碼器包括一熵譯碼器,一逆循環(huán)DPCM運(yùn)算符,一逆量化器,以及一四元數(shù)乘法器。該熵譯碼器通過(guò)熵譯碼來(lái)自該位流的關(guān)鍵字值數(shù)據(jù)來(lái)生成循環(huán)DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù)或量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該逆循環(huán)DPCM運(yùn)算符,通過(guò)在從該位流譯碼的DPCM的次數(shù)操作后在從熵譯碼器輸入的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上執(zhí)行一逆循環(huán)DPCM操作來(lái)生成量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該逆量化器,按幾乎等于通過(guò)逆量化量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的每個(gè)關(guān)鍵幀的四元數(shù)關(guān)鍵字值數(shù)據(jù)應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的一差值來(lái)旋轉(zhuǎn)該對(duì)象。該四元數(shù)乘法器,通過(guò)將當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)差分值四元數(shù)乘以一前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值來(lái)生成一當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值。
為實(shí)現(xiàn)本發(fā)明的上述和其它目的,提供一種對(duì)包括用于表示在一時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示一對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器進(jìn)行編碼的方法。該方法包括(b)通過(guò)從由該定向內(nèi)插器組成的第一動(dòng)畫路徑抽取一最少的斷點(diǎn)來(lái)生成將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù),能產(chǎn)生小于第一動(dòng)畫路徑和通過(guò)抽取斷點(diǎn)生成的一第二動(dòng)畫間的一預(yù)定誤差極限的一誤差,(d)編碼在步驟(b)中生成的關(guān)鍵字?jǐn)?shù)據(jù),以及(e)編碼在步驟(b)中生成的關(guān)鍵字值數(shù)據(jù)。
最好,步驟(b)包括(b1)選擇第一動(dòng)畫路徑的一開(kāi)始路徑點(diǎn)和一結(jié)束路徑點(diǎn),(b2)依次選擇開(kāi)始和結(jié)束路徑點(diǎn)間的路徑點(diǎn)并利用所選擇的路徑點(diǎn)內(nèi)插仍未被選擇的其它路徑點(diǎn),(b3)計(jì)算第一動(dòng)畫路徑與通過(guò)內(nèi)插在步驟(b2)中生成的一第二動(dòng)畫路徑間的一誤差,以及(b4)選擇斷點(diǎn),通過(guò)該操作第一動(dòng)畫路徑和第二動(dòng)畫路徑間的一誤差能被最小化,核對(duì)相應(yīng)的誤差是否小于一預(yù)定誤差極限,并確定將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
最好,用于編碼一定向內(nèi)插器的方法可進(jìn)一步包括在步驟(b)之前的(a),通過(guò)將第一動(dòng)畫路徑采樣到具有一預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分中,生成包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)以及重新采樣關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器,或可能進(jìn)一步包括步驟(b)之后的(c),通過(guò)將利用抽取斷點(diǎn)所構(gòu)成的第二動(dòng)畫路徑采樣到具有一預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分中來(lái)生成將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
為實(shí)現(xiàn)本發(fā)明的上述和其它目的,提供一種對(duì)包括用于表示在一時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示一對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器進(jìn)行編碼的方法。該方法包括(a)將由定向內(nèi)插器所構(gòu)成的一動(dòng)畫路徑采樣到具有一預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分中,并因此生成包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)和重新采樣關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器,(d)減小在步驟(a)中采樣的關(guān)鍵字?jǐn)?shù)據(jù)的范圍并編碼關(guān)鍵字?jǐn)?shù)據(jù),以及(e)通過(guò)生成和編碼一旋轉(zhuǎn)差分值來(lái)編碼在步驟(a)中采樣的關(guān)鍵字值數(shù)據(jù),該旋轉(zhuǎn)差分值被用來(lái)按幾乎等于通過(guò)一當(dāng)前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)而應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換與通過(guò)一前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)而應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的一差值來(lái)旋轉(zhuǎn)該對(duì)象。
最好,步驟(d)包括用一預(yù)定數(shù)據(jù)的量化位來(lái)量化關(guān)鍵字?jǐn)?shù)據(jù),通過(guò)在量化數(shù)據(jù)上執(zhí)行一預(yù)定DPCM操作來(lái)生成差分?jǐn)?shù)據(jù),以及熵編碼該差分?jǐn)?shù)據(jù)。
最好,步驟(e)包括(e1)生成一旋轉(zhuǎn)差分值,該差分值用來(lái)通過(guò)利用當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值以及前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值按幾乎等于通過(guò)當(dāng)前和前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)而應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的一差值來(lái)旋轉(zhuǎn)該對(duì)象并通過(guò)量化該旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù),(e2)在該旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上有選擇地執(zhí)行一線性DPCM或一循環(huán)DPCM操作,以及熵編碼該旋轉(zhuǎn)有效期分?jǐn)?shù)據(jù)。
最好,步驟(e1)包括(e11)利用當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值以及前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值生成旋轉(zhuǎn)差分值,(e12)通過(guò)量化該旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù),(e13)通過(guò)逆量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成一復(fù)原旋轉(zhuǎn)差分值,以及(e14)通過(guò)將復(fù)原旋轉(zhuǎn)差分值四元數(shù)乘以前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值來(lái)生成當(dāng)前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值。
為實(shí)現(xiàn)本發(fā)明的上述和其它目的,提供對(duì)一位流進(jìn)行譯碼的方法,將包括有用于表示在一時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和用于表示一對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器編碼成該位流。本發(fā)明包括(a)譯碼來(lái)自一輸入位流的關(guān)鍵字?jǐn)?shù)據(jù),(b)譯碼來(lái)自該輸入位流的關(guān)鍵字值數(shù)據(jù),以及(c)通過(guò)合成譯碼關(guān)鍵字值數(shù)據(jù)以及利用該譯碼關(guān)鍵字值數(shù)據(jù)球性線性內(nèi)插的關(guān)鍵字值數(shù)據(jù)來(lái)生成一定向內(nèi)插器。
最好,在步驟(c)中,如果不對(duì)與關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值進(jìn)行譯碼,該關(guān)鍵字?jǐn)?shù)據(jù)當(dāng)前附屬于定向內(nèi)插器合成,與關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)利用與當(dāng)前合成關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的譯碼關(guān)鍵字值數(shù)據(jù)和與下一個(gè)將被合成的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的譯碼關(guān)鍵字值數(shù)據(jù)被合成。
最好,步驟(a)包括通過(guò)熵譯碼該輸入位流來(lái)生成差分?jǐn)?shù)據(jù)以及通過(guò)在差分?jǐn)?shù)據(jù)上執(zhí)行一預(yù)定的DPCM操作或一逆DND操作來(lái)生成量化關(guān)鍵字?jǐn)?shù)據(jù)以及通過(guò)逆量化量化關(guān)鍵字值數(shù)據(jù)來(lái)生成復(fù)原關(guān)鍵字?jǐn)?shù)據(jù)。
最好,步驟(b)包括(b1)通過(guò)熵譯碼來(lái)自該位流的關(guān)鍵字值數(shù)據(jù)來(lái)生成循環(huán)DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù)或量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù),(b2)通過(guò)在從該位流譯碼的DPCM次數(shù)操作后在熵編碼旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上執(zhí)行一逆循環(huán)DPCM操作來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù),(b3)生成一旋轉(zhuǎn)差分值,該差分值被用來(lái)按幾乎等于通過(guò)逆量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的每個(gè)關(guān)鍵幀的四元數(shù)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的一差值來(lái)旋轉(zhuǎn)該對(duì)象,以及(b4)通過(guò)將當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)差分值四元數(shù)乘以一前關(guān)鍵幀的一譯碼旋轉(zhuǎn)變換值來(lái)生成一當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值。
為實(shí)現(xiàn)本發(fā)明的上述和其它目的,提供一位流,將包括有用于表示在一時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和用于表示一對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器編碼成該位流。該位流包括關(guān)鍵字?jǐn)?shù)據(jù)編碼/譯碼信息以及關(guān)鍵字值數(shù)據(jù)編碼/譯碼信息。將該關(guān)鍵字?jǐn)?shù)據(jù)編碼/譯碼信息編碼成關(guān)鍵字?jǐn)?shù)據(jù)和譯碼該關(guān)鍵字?jǐn)?shù)據(jù)所必須的信息。將關(guān)鍵字值數(shù)據(jù)編碼/譯碼信息編碼成關(guān)鍵字值數(shù)據(jù)以及譯碼該關(guān)鍵字值數(shù)據(jù)所必須的信息被編碼。在這里,關(guān)鍵字?jǐn)?shù)據(jù)編碼/譯碼信息包括逆DND操作信息,第一逆DPCM操作信息,第一逆量化信息。該逆DND操作信息包括表示將在通過(guò)熵譯碼該位流所生成的差分?jǐn)?shù)據(jù)上執(zhí)行的逆DND的多個(gè)預(yù)定周期的逆DND的次數(shù)以便擴(kuò)展該差分?jǐn)?shù)據(jù)的范圍以及在每個(gè)逆DND操作周期中所使用的差分?jǐn)?shù)據(jù)的最大和最小值。第一逆DPCM操作信息包括將在逆DND差分?jǐn)?shù)據(jù)上執(zhí)行的逆DPCM操作操作的次數(shù)以便將逆DND差分?jǐn)?shù)據(jù)轉(zhuǎn)換成每個(gè)逆DPCM操作周期的已量化關(guān)鍵字?jǐn)?shù)據(jù)以及內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)。第一逆量化信息用在逆量化中以通過(guò)逆量化已量化關(guān)鍵字?jǐn)?shù)據(jù)來(lái)生成復(fù)原關(guān)鍵字?jǐn)?shù)據(jù)。關(guān)鍵字值數(shù)據(jù)譯碼/編碼信息包括由量化用于通過(guò)幾乎等于通過(guò)每個(gè)關(guān)鍵幀的四元數(shù)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的一差值來(lái)旋轉(zhuǎn)該對(duì)象的一旋轉(zhuǎn)差分?jǐn)?shù)據(jù)熵編碼的旋轉(zhuǎn)差分?jǐn)?shù)據(jù),熵譯碼信息包括表示將在旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上執(zhí)行的一熵譯碼方法的一熵譯碼模式,逆循環(huán)DPCM操作信息包括逆循環(huán)DPCM操作的次數(shù),其表示是否將在熵譯碼旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上用熵譯碼模式執(zhí)行一逆循環(huán)DPCM操作,以及第二逆量化信息包括多個(gè)預(yù)定逆量化位,用來(lái)通過(guò)逆量化量化關(guān)鍵字值數(shù)據(jù)來(lái)復(fù)原原始關(guān)鍵字值數(shù)據(jù)。
最好,關(guān)鍵字?jǐn)?shù)據(jù)編碼/譯碼信息進(jìn)一步包括線性關(guān)鍵字譯碼信息,用于對(duì)包括在該位流中的一線性關(guān)鍵字部分進(jìn)行譯碼,并且該線性關(guān)鍵字譯碼信息包括一特征位,該特征位表示是否存在線性關(guān)鍵字區(qū)域,包含在該線性關(guān)鍵字部分中的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量以及線性關(guān)鍵字部分的開(kāi)始和結(jié)束關(guān)鍵字?jǐn)?shù)據(jù)。上述區(qū)域中的關(guān)鍵字?jǐn)?shù)據(jù)線性的增加到關(guān)鍵字?jǐn)?shù)據(jù)中。
本發(fā)明的上述目的和優(yōu)點(diǎn)將通過(guò)參考附圖詳細(xì)地描述其優(yōu)選實(shí)施例變得清楚,其中
圖1是根據(jù)一三維球面上的時(shí)間推移,描述由一定向內(nèi)插器節(jié)點(diǎn)表示的動(dòng)畫數(shù)據(jù)的二維軌跡圖2A和2B分別是使用線性DPCM和熵編碼的一MPEG-4PMFC編碼器以及使用線性衰減DPCM和熵譯碼的一MPEG-4PMFC的框圖3A是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,一種用于編碼一定向內(nèi)插器的裝置的框圖,以及圖3B是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,一種用于編碼一定向內(nèi)插器的方法的流程圖4A至4C是根據(jù)本發(fā)明的優(yōu)選實(shí)施例,一分析器的例子的框圖5A是如圖3B所示的一步驟S320的流程圖5B是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,一重新采樣方法的流程圖5C是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,抽取斷點(diǎn)的一方法的一流程圖6A是描述原始關(guān)鍵字?jǐn)?shù)據(jù)以及重新采樣關(guān)鍵字?jǐn)?shù)據(jù)的圖以及圖6B是描述一原始動(dòng)畫路徑以及一重新采樣動(dòng)畫路徑的圖。
圖7A至7F是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,描述抽取斷點(diǎn)的一方法的一例子的圖8是描述在一斷點(diǎn)生成模式中從一斷點(diǎn)抽取器輸出的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的圖9A是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,一關(guān)鍵字?jǐn)?shù)據(jù)編碼器的框圖9B是如圖9A所示的一DND處理器的框圖10A至10E是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,編碼關(guān)鍵字?jǐn)?shù)據(jù)的一方法的流程圖11是描述一函數(shù)encodeSignedAAC的例子的圖12A至12J是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,描述在執(zhí)行編碼關(guān)鍵字?jǐn)?shù)據(jù)的不同步驟后獲得的關(guān)鍵字?jǐn)?shù)據(jù)的圖13A是根據(jù)本發(fā)明的一第一實(shí)施例,一關(guān)鍵字值數(shù)據(jù)編碼器的框圖,以及圖13B是根據(jù)本發(fā)明的一第一實(shí)施例,編碼關(guān)鍵字值數(shù)據(jù)的一方法的流程圖14A是描述在一旋轉(zhuǎn)差分值的每個(gè)分量中的一概率分布函數(shù)(PDF)的典型例子的圖14B是用于非線性量化的反正切曲線;
圖15A是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,從包括在一關(guān)鍵字值數(shù)據(jù)譯碼器中的一量化器輸出的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的例子;圖15B是描述在如圖15A所示的差分?jǐn)?shù)據(jù)上執(zhí)行一線性DPCM操作的結(jié)果的圖;以及圖15C是描述在如圖15B所示的線性DPCM差分?jǐn)?shù)據(jù)上執(zhí)行一循環(huán)DPCM操作的結(jié)果的圖16是描述用于熵編碼的一函數(shù)UnaryAAC()的一個(gè)例子的圖17是描述在使用一旋轉(zhuǎn)差分值來(lái)編碼四元數(shù)旋轉(zhuǎn)變換值期間產(chǎn)生的一旋轉(zhuǎn)方向誤差的圖18A是根據(jù)本發(fā)明的第二實(shí)施例,一關(guān)鍵字值數(shù)據(jù)編碼器的一旋轉(zhuǎn)DPCM運(yùn)算符的框圖,以及圖18B是如圖18A所示的一旋轉(zhuǎn)方向誤差計(jì)算器的框圖19A是根據(jù)本發(fā)明的第二實(shí)施例,一旋轉(zhuǎn)DPCM操作的流程圖;圖19B是描述如圖9A是所示的一旋轉(zhuǎn)方向誤差計(jì)算器、一旋轉(zhuǎn)方向誤差檢測(cè)器、以及一旋轉(zhuǎn)方向校正器的操作的流程圖20A是根據(jù)本發(fā)明的第三實(shí)施例的一關(guān)鍵字值數(shù)據(jù)編碼器的一量化器的框圖,以及圖20B是根據(jù)本發(fā)明的第三實(shí)施例的一量化器的操作的流程圖21A是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例的用于譯碼一定向內(nèi)插器的裝置的框圖,以及圖21B是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,一種用于譯碼一定向內(nèi)插器的方法的流程圖22是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例的一關(guān)鍵字?jǐn)?shù)據(jù)譯碼器的框圖23A和23B是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例的譯碼關(guān)鍵字?jǐn)?shù)據(jù)的一種方法的流程圖24A是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例的一關(guān)鍵字值數(shù)據(jù)譯碼器的框圖,以及圖24B是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例的譯碼關(guān)鍵字值數(shù)據(jù)的方法的流程圖25是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,描述輸入到一關(guān)鍵字值數(shù)據(jù)譯碼器的一熵譯碼器的一位流的結(jié)構(gòu)的圖26是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,合成一定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的方法的流程圖27是描述計(jì)算將被編碼的一定向內(nèi)插器以及一譯碼定向內(nèi)插器間的一誤差的方法的例子的圖28是用于將根據(jù)本發(fā)明用于編碼一定向內(nèi)插器的方法的性能與用于編碼一定向內(nèi)插器的常規(guī)方法的性能相比的圖29A至29J是SDL語(yǔ)言程序代碼,通過(guò)該代碼,根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,用于譯碼一定向內(nèi)插器的裝置,實(shí)現(xiàn)譯碼關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
具體實(shí)施例方式
根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,將參考附圖來(lái)更詳細(xì)地描述一種用于編碼一定向內(nèi)插器的方法和裝置。
圖3A根據(jù)本發(fā)明的一優(yōu)選實(shí)施例給出了一種用于編碼一定向內(nèi)插器的裝置的框圖。參考圖3A,用于編碼一定向內(nèi)插器的裝置包括一分析器40、一關(guān)鍵字值編碼器200、一關(guān)鍵字值數(shù)據(jù)編碼器300以及一標(biāo)題編碼器400。
圖3B根據(jù)本發(fā)明的一優(yōu)選實(shí)施例給出了用于編碼一定向內(nèi)插器的方法的流程圖。參考圖3B,在步驟S300中將將被編碼的一定向內(nèi)插器輸出到分析器40中。在步驟S320中,分析器40從由定向內(nèi)插器的x,y,z及θ(旋轉(zhuǎn)角)分量的關(guān)鍵字值數(shù)據(jù)組成的一第一動(dòng)畫路徑抽取將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù),將抽取關(guān)鍵字?jǐn)?shù)據(jù)輸出關(guān)鍵字?jǐn)?shù)據(jù)編碼器200,并將抽取關(guān)鍵字值數(shù)據(jù)輸出到關(guān)鍵字值數(shù)據(jù)編碼器300。
關(guān)鍵字?jǐn)?shù)據(jù)編碼器200利用多個(gè)預(yù)定已量化位來(lái)量化從分析器40所輸入的關(guān)鍵字?jǐn)?shù)據(jù),通過(guò)在已量化關(guān)鍵字?jǐn)?shù)據(jù)上執(zhí)行一預(yù)定DPCM操作來(lái)生成差分?jǐn)?shù)據(jù)以及在步驟S340中熵編碼該差分?jǐn)?shù)據(jù)。
關(guān)鍵字值數(shù)據(jù)編碼器300使用多個(gè)預(yù)定已量化位來(lái)量化從分析器40所輸入的關(guān)鍵字值數(shù)據(jù),通過(guò)在量化數(shù)據(jù)上執(zhí)行一預(yù)定DPCM操作來(lái)生成差分?jǐn)?shù)據(jù)以及在步驟S360中編碼該差分?jǐn)?shù)據(jù)。
標(biāo)題編碼器400從關(guān)鍵字?jǐn)?shù)據(jù)編碼器200和關(guān)鍵字值數(shù)據(jù)編碼器300接收譯碼關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)所必須的信息并在步驟S380中編碼該信息。
在下文中,將參考附圖更詳細(xì)地描述分析器40、關(guān)鍵字?jǐn)?shù)據(jù)編碼器200以及關(guān)鍵字值數(shù)據(jù)編碼器300的結(jié)構(gòu)和操作。
圖4A根據(jù)本發(fā)明的第一實(shí)施例給出了分析器40的一個(gè)例子的框圖。即使使用分析器40在關(guān)鍵字值數(shù)據(jù)的所有分量(x,y,z及θ)上可執(zhí)行抽取將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的處理,該處理將在下面的圖中,為了方便說(shuō)明僅考慮關(guān)鍵字值數(shù)據(jù)(定向內(nèi)插器)的分量中的一個(gè)。
參考圖4A,根據(jù)本發(fā)明的第一實(shí)施例,該分析器包括一重新采樣器43、一斷點(diǎn)抽取器42和一選擇器41。重新采用器基于一輸入定向內(nèi)插器,將一第一動(dòng)畫路徑采樣成具有一預(yù)定時(shí)間量的間隔的多個(gè)部分并將所采樣的動(dòng)畫路徑輸出到一關(guān)鍵字編碼器200、一關(guān)鍵字值編碼器300、以及一標(biāo)題編碼器400中。該斷點(diǎn)抽取器42抽取一最小量的斷點(diǎn),通過(guò)該操作,第一動(dòng)畫路徑與基于從第一動(dòng)畫路徑抽取的斷點(diǎn)生成的一第二動(dòng)畫路徑間的一誤差能防止超過(guò)一預(yù)定誤差極限,并將抽取斷點(diǎn)輸出到關(guān)鍵字?jǐn)?shù)據(jù)編碼器200、關(guān)鍵字值數(shù)據(jù)編碼器300以及標(biāo)題編碼器400中。該選擇器41響應(yīng)一外部輸入信號(hào),將輸入定向內(nèi)插器輸出到重新采樣器43或斷點(diǎn)抽取器42中。斷點(diǎn)抽取器42包括一線性內(nèi)插器42a、一誤差計(jì)算器42b以及一確定單元42c。
圖5A根據(jù)本發(fā)明第一實(shí)施例給出了分析器40的操作流程圖。參考圖5A,選擇器41在步驟S325從外部接收一定向內(nèi)插器以及一設(shè)定信號(hào)。該設(shè)定信號(hào)包括用來(lái)確定將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的方法的一生成方法設(shè)置信息以及用來(lái)確定用于生成將被譯碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的模式的一生成模式設(shè)置信息。
首先在下面的段路中描述用于生成關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的模式。
分析器40通過(guò)減小輸入到其中的一定向內(nèi)插器的關(guān)鍵幀的數(shù)量來(lái)降低將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)量。根據(jù)從外面輸入其中的一模式設(shè)定信號(hào),假定分析器40具有一動(dòng)畫路徑保存模式或一動(dòng)畫關(guān)鍵字保存模式。
在一動(dòng)畫路徑保存模式中,一定向內(nèi)插器僅被用來(lái)描述一動(dòng)畫路徑的內(nèi)插,且不必隨機(jī)存取關(guān)鍵幀。為有效編碼在動(dòng)畫路徑保存模式中的一定向內(nèi)插器,可移除在一預(yù)定誤差范圍內(nèi)與一動(dòng)畫路徑共存的一定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù)和與該關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)。
另一方面,在一動(dòng)畫關(guān)鍵字保存模式中,使用MPEG-4BIFS命令,如’replace’,’delete’或‘insert’隨機(jī)存取關(guān)鍵幀是必要的。在動(dòng)畫關(guān)鍵字保存模式中,不能改變一定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量。下面將更詳細(xì)地描述動(dòng)畫路徑保存模式以及動(dòng)畫關(guān)鍵字保存模式。
再參考圖5A,選擇器41在從外面輸入一生成模式后,選擇用于生成將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的模式。在步驟S330中,選擇器41將輸入定向內(nèi)插器輸出到斷點(diǎn)抽取器42中,如果輸入生成模式是一動(dòng)畫關(guān)鍵字保存模式。如果輸入模式是一動(dòng)畫路徑保存模式,向應(yīng)從外面輸入的一生成方法設(shè)定信號(hào),選擇器41在步驟S330中將輸入定向內(nèi)插器連同生成關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)所必需的信息輸出到重新采樣器43或斷點(diǎn)抽取器42中。
特別地,在通過(guò)重新采樣生成將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的情況下,選擇器41將關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量(即時(shí)間間隔)和一生成模式連同定向內(nèi)插器輸出到該重新采樣器43中。在通過(guò)抽取斷點(diǎn)生成將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的情況下,選擇器41將在一原始動(dòng)畫路徑和通過(guò)抽取斷點(diǎn)生成的一路徑間的一臨界誤差以及該生成模式輸出到斷點(diǎn)抽取器42。
在步驟S335中,重新采樣器43在多個(gè)預(yù)定時(shí)間間隔通過(guò)采樣由從選擇器41輸入的定向內(nèi)插器生成的一動(dòng)畫路徑生成的采樣關(guān)鍵字?jǐn)?shù)據(jù)和采樣關(guān)鍵字值數(shù)據(jù),以及斷點(diǎn)抽取器42抽取一最少斷點(diǎn),通過(guò)該操作,能防止由輸入定向內(nèi)插器生成的一動(dòng)畫路徑和由抽取斷點(diǎn)生成的一動(dòng)畫路徑間的一誤差超過(guò)一預(yù)定誤差極限。
圖5B根據(jù)本發(fā)明的一優(yōu)選實(shí)施例給出了重新采樣器43的操作流程圖。參考圖5B,重新采樣器43在步驟S502中從選擇器41接收將被重新采樣的一定向內(nèi)插器和關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量(m)。將被重新采樣的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量(m)可由一用戶任意設(shè)置或預(yù)先被設(shè)置為一預(yù)定值上。
在步驟S504中,重新采樣器43選擇由輸入定向內(nèi)插器生成的一原始動(dòng)畫路徑的一第一路徑點(diǎn)和一最終路徑點(diǎn)并將將被重新采樣的該關(guān)鍵字?jǐn)?shù)據(jù)的初始值(i)設(shè)置為1。
此后,在步驟S506,重新采樣器43在多個(gè)預(yù)定時(shí)間的一間隔上生成第I個(gè)關(guān)鍵字?jǐn)?shù)據(jù)。
圖6A是描述原始關(guān)鍵字?jǐn)?shù)據(jù)和重新采樣關(guān)鍵字?jǐn)?shù)據(jù)的圖。由于該輸入定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù)表示在一時(shí)間軸上關(guān)鍵幀的位置,如圖6A所示,關(guān)鍵字?jǐn)?shù)據(jù)單調(diào)地增加,而該關(guān)鍵字?jǐn)?shù)據(jù)中的間隔卻沒(méi)有規(guī)律。
因此,如圖6A所示,重新采樣器43通過(guò)按將被重新采樣的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量來(lái)劃分分別表示在步驟S504中選擇的第一路徑點(diǎn)和最終路徑點(diǎn)的關(guān)鍵字?jǐn)?shù)據(jù)間的一差值來(lái)獲得多個(gè)預(yù)定時(shí)間的一間隔并因此在多個(gè)預(yù)定時(shí)間的間隔上重新采樣將被重新采樣的關(guān)鍵字?jǐn)?shù)據(jù)。
在步驟S508中,重新采樣器43通過(guò)使用原始動(dòng)畫路徑按線性內(nèi)插器重新采樣生成的與該關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)。換句話說(shuō),與重新采樣關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)使用正好在重新采樣關(guān)鍵字?jǐn)?shù)據(jù)后與關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)以及正好在重新采樣關(guān)鍵字?jǐn)?shù)據(jù)前與關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)被線性內(nèi)插。
此后,在步驟S510中,重新采樣器43驗(yàn)證是否已經(jīng)在所有將被重新采樣的關(guān)鍵字?jǐn)?shù)據(jù)上執(zhí)行重新采樣處理并重復(fù)執(zhí)行步驟S506和S508直到重新采樣所有關(guān)鍵字?jǐn)?shù)據(jù)以及他們相應(yīng)的關(guān)鍵字值數(shù)據(jù)。
圖5C根據(jù)本發(fā)明的第一實(shí)施例給出了一種抽取斷點(diǎn)的方法流程圖,圖7A至7F根據(jù)本發(fā)明的一優(yōu)選實(shí)施例給出了從一定向內(nèi)插器抽取斷點(diǎn)的每個(gè)步驟的框圖。
參考圖4A,5C以及7A至7F,斷點(diǎn)抽取器42的線性內(nèi)插器42a在步驟S520從選擇器41接收一定向內(nèi)插器和一臨界誤差eth。由輸入定向內(nèi)插器所構(gòu)成的一動(dòng)畫路徑如圖7A所示。
在步驟S522中,線性內(nèi)插器42a抽取由輸入定向內(nèi)插器所組成的動(dòng)畫路徑的第一路徑點(diǎn)Q0以及最終路徑點(diǎn)Qn,如圖7A所示,并將一計(jì)數(shù)器(i)設(shè)置為1。
在步驟S524中,線性內(nèi)插器42a在第一Q0和最終路徑點(diǎn)Qn間依次地任意或順序選擇路徑點(diǎn)。接著,在步驟S526中,線性內(nèi)插器42a利用所選擇的路徑點(diǎn)線性地內(nèi)插還未被選擇的路徑點(diǎn)并將所選擇的路徑點(diǎn)和內(nèi)插路徑點(diǎn)輸出到誤差計(jì)算器42b中。
在步驟S528中,誤差計(jì)算器42b計(jì)算原始動(dòng)畫路徑和由選擇路徑點(diǎn)和內(nèi)插路徑點(diǎn)所構(gòu)成的一候選動(dòng)畫路徑間的一誤差(e)并將該誤差(e)輸出到確定單元42c中。下面將描述計(jì)算誤差(e)的方法。
誤差計(jì)算器42b核對(duì)在未被線性內(nèi)插器42a所選擇的路徑點(diǎn)中,是否仍然存在當(dāng)計(jì)算誤差(e)時(shí)未被考慮的路徑點(diǎn)。如果有當(dāng)計(jì)算誤差(e)時(shí)未被考慮的路徑點(diǎn),誤差計(jì)算器42b通過(guò)重復(fù)執(zhí)行步驟S524至S528在步驟S530中計(jì)算路徑點(diǎn)與原始動(dòng)畫路徑間的一誤差。
圖7C是描述步驟S524至S530的圖。參考圖7C,線性內(nèi)插器42a抽取與在預(yù)定時(shí)間瞬間k1的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的一斷點(diǎn)Q1并通過(guò)線性內(nèi)插第一路徑點(diǎn)Q0和斷點(diǎn)Q1間的路徑點(diǎn)來(lái)生成一第一候選動(dòng)畫路徑。誤差計(jì)算器42b計(jì)算原始動(dòng)畫路徑與第一候選動(dòng)畫路徑間的一誤差e1。此后,用相同的方式,線性內(nèi)插器選擇另一斷點(diǎn)Qk并通過(guò)線性內(nèi)插在第一路徑點(diǎn)Q0與斷點(diǎn)Qk間和斷點(diǎn)Qk和最終路徑點(diǎn)Qn間的路徑點(diǎn)來(lái)生成第k個(gè)候選動(dòng)畫路徑。誤差計(jì)算器42b計(jì)算原始動(dòng)畫路徑與第k個(gè)候選動(dòng)畫路徑間的一誤差(ek)。
如果步驟S524至S530已經(jīng)在未被線性內(nèi)插器42a選擇的所有路徑點(diǎn)上執(zhí)行過(guò),原始動(dòng)畫路徑和在步驟S524至S530生成的每個(gè)候選動(dòng)畫路徑間的誤差被輸出到確定單元42c。然后,在步驟S532中,確定單元42c選擇形成具有最小誤差和原始動(dòng)畫路徑的一候選動(dòng)畫路徑的一斷點(diǎn),并將計(jì)數(shù)器(i)值加1。
在步驟S534中,確定單元42c核對(duì)原始動(dòng)畫路徑和由抽取斷點(diǎn)構(gòu)成的候選動(dòng)畫路徑間的一誤差(e)是否大于臨界誤差eth以及計(jì)數(shù)器(i)的值是否大于關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量(n)即第一路徑點(diǎn)Q0與最終路徑點(diǎn)Qn的路徑點(diǎn)的數(shù)量。
如果誤差(e)小于臨界誤差eth,它表示已經(jīng)抽取要求編碼的所有斷點(diǎn)。如果最終選擇作為將被編碼的斷點(diǎn)的數(shù)量等于“n”,表示完成抽取所有路徑點(diǎn)的斷點(diǎn)的處理。
然而,如果抽取斷點(diǎn)的數(shù)量小于n以及誤差(e)大于臨界誤差eth,這表示還存在將被抽取的斷點(diǎn),將所選擇的斷點(diǎn)輸出到線性內(nèi)插器42a,然后再執(zhí)行步驟S524至S532。
在下文中,在下面的段路中將描述當(dāng)生成模式是一動(dòng)畫路徑保存模式時(shí),假定從重新采樣器43和斷點(diǎn)抽取器42輸出到關(guān)鍵字值數(shù)據(jù)譯碼器的數(shù)據(jù)。
重新采樣器43將采樣的關(guān)鍵字?jǐn)?shù)據(jù)和采樣的關(guān)鍵字值數(shù)據(jù)分別輸出到關(guān)鍵字?jǐn)?shù)據(jù)編碼器200和關(guān)鍵字值數(shù)據(jù)編碼器300中分別作為將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
在下文中,將參考圖8來(lái)描述根據(jù)一生成模式從斷點(diǎn)抽取器42輸出的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
如圖8所示,假定最終抽取斷點(diǎn)被稱為0,3,6和8,與斷點(diǎn)0,3,6和8相對(duì)應(yīng)的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)連同一關(guān)鍵字選擇特征位被輸出,如下表如示。
表2
上面已經(jīng)根據(jù)本發(fā)明的第一實(shí)施例描述過(guò)分析器40的結(jié)構(gòu)。然而,對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō),分析器40可僅由斷點(diǎn)抽取器42而沒(méi)有選擇器41和重新采樣器43或僅由重新采樣器43而沒(méi)有選擇器41和斷點(diǎn)抽取器42組成。
在下文中,將根據(jù)本發(fā)明的第二實(shí)施例來(lái)描述分析器40的另一例子。
參考圖4B,根據(jù)本發(fā)明第二實(shí)施例的分析器40包括一重新采樣器45以及一斷點(diǎn)抽取器46。該重新采樣器45接收和重新采樣一定向內(nèi)插器。該斷點(diǎn)抽取器46抽取重新采樣的定向內(nèi)插器的斷點(diǎn)并輸出將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。在本發(fā)明的第二實(shí)施例中,斷點(diǎn)抽取器46象在本發(fā)明的第一實(shí)施例中一樣,也包括一線性內(nèi)插器46a、一誤差計(jì)算器46b、以及一確定單元46c。
當(dāng)一定向內(nèi)插器被輸入到分析器40中時(shí),重新采樣器45將由該定向內(nèi)插器所組成的一第一動(dòng)畫路徑重新采樣成彼此之間具有多個(gè)預(yù)定時(shí)間的一間隔的多個(gè)預(yù)定部分。
重新采樣器45將由采樣關(guān)鍵字?jǐn)?shù)據(jù)和采樣關(guān)鍵字值數(shù)據(jù)組成的定向內(nèi)插器輸出到斷點(diǎn)抽取器46的線性內(nèi)插器46a。
線性內(nèi)插器46a通過(guò)執(zhí)行如圖5C所示的步驟S522至S526來(lái)內(nèi)插一定向內(nèi)插器并將該內(nèi)插的定向內(nèi)插器輸出到誤差計(jì)算器46b中。誤差計(jì)算器46b通過(guò)執(zhí)行步驟S528至S530計(jì)算第一動(dòng)畫路徑和由內(nèi)插的定向內(nèi)插器所構(gòu)成的一第二動(dòng)畫路徑間的一誤差。確定單元46c選擇將導(dǎo)致第一和第二動(dòng)畫路徑間的一最小誤差的一路徑點(diǎn),驗(yàn)證相應(yīng)的誤差是否大于一臨界誤差eth以及是否已經(jīng)選擇第一動(dòng)畫路徑的所有路徑點(diǎn)并生成將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
如上所述,在根據(jù)本發(fā)明的第二實(shí)施例的分析器40中,除斷點(diǎn)抽取器46接收由從重新采樣器45輸出的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)構(gòu)成的一定向內(nèi)插器以及在由從重新采樣器45輸入的定向內(nèi)插器構(gòu)成的一動(dòng)畫路徑上執(zhí)行抽取斷點(diǎn)的處理外,重新采樣器45和斷點(diǎn)抽取器46的操作與在本發(fā)明的第一實(shí)施例中的相應(yīng)組件的操作相同。
在下文中,根據(jù)本發(fā)明的第三實(shí)施例,參考圖4C來(lái)描述分析器40的一個(gè)例子。
參考圖4C,分析器40包括一斷點(diǎn)抽取器48,其接收一定向內(nèi)插器,從由該定向內(nèi)插器構(gòu)成的一第一動(dòng)畫路徑抽取斷點(diǎn)并輸入關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù),以及一重新采樣器49,其在一預(yù)定時(shí)間間隔采樣由包括從斷點(diǎn)抽取器48輸入的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器構(gòu)成的一第二動(dòng)畫路徑。斷點(diǎn)抽取器48,與在本發(fā)明的第一和第二實(shí)施例中一樣,也包括一線性內(nèi)插器48a、一誤差計(jì)算器48b以及一確定單元48c。
斷點(diǎn)抽取器48,與本發(fā)明第一實(shí)施例中的一樣,將從第一動(dòng)畫路徑中所抽取的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)輸出到重新采樣器49中。
重新采樣器49在預(yù)定時(shí)間間隔重新采樣由包括從斷點(diǎn)抽取器48所輸入的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)的一定向內(nèi)插器所構(gòu)成的一動(dòng)畫路徑并輸出將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。重新采樣器49的功能與在本發(fā)明的第一和第二實(shí)施例中相同,因此這里不再重復(fù)描述。
在本發(fā)明的第一到第三實(shí)施例中從分析器40輸出的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)被分別輸出到關(guān)鍵字?jǐn)?shù)據(jù)編碼器200和關(guān)鍵字值數(shù)據(jù)編碼器300。
在下文中,將參考圖9A至12J來(lái)描述關(guān)鍵字?jǐn)?shù)據(jù)編碼器200的結(jié)構(gòu)和操作。
圖9A根據(jù)本發(fā)明的一優(yōu)選實(shí)施例給出了一關(guān)鍵字?jǐn)?shù)據(jù)編碼器的框圖。參考圖9A,一關(guān)鍵字?jǐn)?shù)據(jù)編碼器200包括一線性關(guān)鍵字編碼器900、一量化器910、一DPCM處理器920、一移位器930、一折疊處理器940、一DND處理器950以及一熵編碼器960。
線性關(guān)鍵字編碼器900識(shí)別在整個(gè)關(guān)鍵字?jǐn)?shù)據(jù)范圍內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)線性增加的一部分并編碼該部分。量化器910利用能最小化一量化誤差的一量化方法來(lái)量化輸入到其中的關(guān)鍵字?jǐn)?shù)據(jù)。DPCM處理器920接收量化關(guān)鍵字?jǐn)?shù)據(jù)并生成關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)。移位器930從差分?jǐn)?shù)據(jù)中減去在所有差分?jǐn)?shù)據(jù)中具有最大頻率的一差分?jǐn)?shù)據(jù)。折疊處理器940將所有差分?jǐn)?shù)據(jù)傳送到一正數(shù)區(qū)或一負(fù)數(shù)區(qū)。DND處理器950通過(guò)執(zhí)行一劃分操作然后有選擇地執(zhí)行一分割操作或向下分割操作來(lái)減小關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)的范圍。熵編碼器960在每個(gè)位平面上使用一函數(shù)SignedAAC或UnsignedAAC來(lái)編碼差分?jǐn)?shù)據(jù)。
在下文中,將參考圖10A來(lái)更詳細(xì)地描述關(guān)鍵字?jǐn)?shù)據(jù)編碼器200的操作。圖10A是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例的編碼關(guān)鍵字?jǐn)?shù)據(jù)的方法的流程圖。當(dāng)將關(guān)鍵字?jǐn)?shù)據(jù)輸入到用于編碼一定向內(nèi)插器的一裝置中時(shí),信息如關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量以及每個(gè)關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)字的數(shù)量被輸入到標(biāo)題編碼器400中并被編碼。在步驟S9000中,線性關(guān)鍵字編碼器900在該輸入關(guān)鍵字?jǐn)?shù)據(jù)中查找在某一時(shí)間間隔中存儲(chǔ)關(guān)鍵幀的一區(qū)域,關(guān)鍵字?jǐn)?shù)據(jù)具有相同的差值,以及關(guān)鍵字?jǐn)?shù)據(jù)線性改變,以及所查找的線性部分被首先編碼。
著名的3D應(yīng)用軟件,如3DMax或Maya,利用在特定區(qū)域間具有預(yù)定時(shí)間間隔的關(guān)鍵字來(lái)生成基于動(dòng)畫的關(guān)鍵幀。在這種情況下,有可能很容易使用一線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的開(kāi)始和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)以及存在于它們間的關(guān)鍵幀的數(shù)量來(lái)編碼關(guān)鍵字?jǐn)?shù)據(jù)。因此,線性預(yù)測(cè)對(duì)使用一定向器來(lái)編碼在某一區(qū)域中的關(guān)鍵字非常有用。
下面的等式用于線性預(yù)測(cè)。
在這里,tS表示一部分線性區(qū)域開(kāi)始的一關(guān)鍵字的數(shù)據(jù),tE表示該部分線性區(qū)域結(jié)束的一關(guān)鍵字的數(shù)據(jù),S表示tS的一指數(shù),以及E表示tE的一指數(shù)。在從第S個(gè)關(guān)鍵字?jǐn)?shù)據(jù)到第E個(gè)關(guān)鍵字?jǐn)?shù)據(jù)的特定區(qū)域中的實(shí)際關(guān)鍵字?jǐn)?shù)據(jù)與用等式(4)線性預(yù)測(cè)的關(guān)鍵字?jǐn)?shù)據(jù)間的誤差能用下面的等式計(jì)算。
如果在使用等式(5)計(jì)算的誤差中的一最大值不大于一預(yù)定誤差極限,ti能被認(rèn)為在區(qū)域[tS,tE]或在某一誤差范圍內(nèi)共線。使用下述等式(6)能確定最大誤差值ti是否與特定區(qū)域共線。
如果ti是與區(qū)域[tS,tE]共線。此時(shí),nBits表示用于編碼的位的數(shù)量。
如果線性關(guān)鍵字編碼器900查找部分線性區(qū)域,將部分線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的開(kāi)始和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)輸出到浮點(diǎn)數(shù)轉(zhuǎn)換器905中。包含在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中的關(guān)鍵字的數(shù)量被輸出到標(biāo)題編碼器400中并被編碼。使用線性編碼有可能相當(dāng)大地降低將被編碼的數(shù)據(jù)量。
使用浮點(diǎn)數(shù)變換來(lái)編碼開(kāi)始關(guān)鍵字?jǐn)?shù)據(jù)和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù),這將在下面描述。
浮點(diǎn)數(shù)轉(zhuǎn)換器905將用二進(jìn)制表示的關(guān)鍵字?jǐn)?shù)據(jù)轉(zhuǎn)換成十進(jìn)制以便編碼開(kāi)始關(guān)鍵字?jǐn)?shù)據(jù)和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)。
一計(jì)算機(jī)將浮點(diǎn)數(shù)存儲(chǔ)為32位二進(jìn)制數(shù)。如果給出用二進(jìn)制表示的浮點(diǎn)數(shù),浮點(diǎn)數(shù)轉(zhuǎn)換器905將浮點(diǎn)數(shù)轉(zhuǎn)換成十進(jìn)制的一尾數(shù)和一指數(shù),該處理用下面的等式來(lái)表示。
例如,一浮點(diǎn)數(shù)12.34能用一計(jì)算機(jī)轉(zhuǎn)換成一二進(jìn)制數(shù),如下所示。
0 10001010111000010100011 10000010
1 2 3
1特征位
2二進(jìn)制的尾數(shù)
3二進(jìn)制的指數(shù)
用等式(7)能將一二進(jìn)制數(shù)轉(zhuǎn)換成一十進(jìn)制數(shù),如下所示。
0 1234 2
12 3
1特征位
2十進(jìn)制的尾數(shù)
3十進(jìn)制的指數(shù)
為在一位流中包括十進(jìn)制的一尾數(shù)和一指數(shù),必須計(jì)算為表示該尾數(shù)和指數(shù)而所需的位的數(shù)量。指數(shù)具有在-38到38間的一值,因此能用7位來(lái)表示它及其特征位。為表示尾數(shù)而所需的位的數(shù)量由位數(shù)而定。尾數(shù)值以及為表示尾數(shù)而所需的位的數(shù)量如下表所示。
表4
在圖10B中所示的下述編碼處理來(lái)編碼利用上述處理已經(jīng)查找過(guò)和轉(zhuǎn)換過(guò)的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的開(kāi)始和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù),并輸出到報(bào)文編碼器400,且在該位流中存儲(chǔ)。
圖10B表示在浮點(diǎn)數(shù)轉(zhuǎn)換器905中執(zhí)行的編碼兩個(gè)輸入浮點(diǎn)數(shù)的一處理。參考圖10B來(lái)描述浮點(diǎn)數(shù)轉(zhuǎn)換器905編碼一浮點(diǎn)數(shù)的方法。
浮點(diǎn)數(shù)轉(zhuǎn)換器905接收原始關(guān)鍵字?jǐn)?shù)據(jù)、開(kāi)始關(guān)鍵字?jǐn)?shù)據(jù)S以及結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)E的數(shù)字?jǐn)?shù)Kd并在步驟S9040中用等式(7)將轉(zhuǎn)換它們。
浮點(diǎn)數(shù)轉(zhuǎn)換器905首先編碼S。具體來(lái)說(shuō),浮點(diǎn)數(shù)轉(zhuǎn)換器905核對(duì)S的數(shù)字?jǐn)?shù)目是否不同與Kd。如果S的數(shù)字?jǐn)?shù)目與Kd不同,在步驟S9042中獲得S的數(shù)字?jǐn)?shù)目并輸出到標(biāo)題編碼器400。利用函數(shù)Digit(),浮點(diǎn)數(shù)轉(zhuǎn)換器905獲得S的數(shù)字?jǐn)?shù)目。
如果S的數(shù)字?jǐn)?shù)目大于7,在步驟S9043中使用多個(gè)預(yù)定位(在本發(fā)明中,用IEEE754標(biāo)準(zhǔn)的一浮點(diǎn)數(shù)方式使用32位)將S輸出到標(biāo)題編碼器以便將能S的數(shù)字?jǐn)?shù)目包括在該位流中。
在步驟S9100中,量化誤差最小化器915使用用于控制一量化范圍的方法來(lái)預(yù)先量化或逆量化該輸入關(guān)鍵字?jǐn)?shù)據(jù)以便能最小化該量化誤差。
具體來(lái)說(shuō),如果用于量化的一混合最大值用Max表示,用于量化所控制的一最小值用Min表示,一輸入值用Xi表示,以及用于量化的位的數(shù)量用nQuantBit表示,那幺能使用下面的等式來(lái)獲得一量化輸入值
一逆量化值
以及一誤差ei。
有兩種用于最小化誤差和∑ei的方法。一種方法是通過(guò)連續(xù)控制Min來(lái)降低誤差和直到誤差和最小化為止的方法。另一下如下。
首先,假定Xi=(i+n)ΔX+εi,其中Xi表示一輸入關(guān)鍵字?jǐn)?shù)據(jù)序列,Δx表示輸入數(shù)據(jù)的基本步長(zhǎng),n是一任意整數(shù),以及εi表示零平均值隨機(jī)噪聲。
接著,當(dāng)di=Xi-Xi-1=ΔX+(εi-εi-1)時(shí),Δ′x=E[di]以及Min=Max-Δ′x*(2nQuantBit-1)。
Min能使最小化一量化誤差成為可能,以及Max能被輸入到量化器910中并被用于關(guān)鍵字值數(shù)據(jù)的量化。
在步驟S9200中量化器910接收最大和最小值Max以及能最小化一量化誤差的Min并用下述等式(9)量化關(guān)鍵字?jǐn)?shù)據(jù)fKeyi。
在這里,i表示已量化關(guān)鍵字?jǐn)?shù)據(jù)的一指數(shù),nQkeyi表示已量化關(guān)鍵字?jǐn)?shù)據(jù)的一整數(shù)數(shù)組,fKeyi表示已量化關(guān)鍵字?jǐn)?shù)據(jù)的一浮點(diǎn)數(shù)數(shù)組,fKeyMax表示從量化誤差最小化器915輸入的一最大值,fKeyMin表示從量化誤差最小化器輸入的一最小值,以及nKeyQBit表示一量化步長(zhǎng)。在等式(9)中,函數(shù)floor(v)是輸出不大于某一浮點(diǎn)值v的一最大整數(shù)的一函數(shù)。
本發(fā)明的量化器910可能不使用用于降低一量化誤差的這種算術(shù),在這種情況下,簡(jiǎn)單使用輸入關(guān)鍵字?jǐn)?shù)據(jù)中的最大和最小值fKeyMax和fKeyMin來(lái)執(zhí)行量化。
參考圖10C來(lái)更全面地描述本發(fā)明的量化處理。
量化器910在步驟S9210中接收關(guān)鍵字?jǐn)?shù)據(jù)并在步驟S9220中核對(duì)最大和最小值MAX和MIN是否從量化誤差最小化器915中輸入。
如果輸入MAX和MIN,在步驟S3230中量化器910設(shè)置最大和最小值fKeyMax和fKeyMin分別用作量化的MAx和MIN并將新設(shè)置的最大和最小值fKeyMax和fKeyMin輸出到浮點(diǎn)數(shù)轉(zhuǎn)換器905中。通過(guò)上述浮點(diǎn)數(shù)轉(zhuǎn)換方法來(lái)轉(zhuǎn)換和編碼最大和最小值fKeyMax和fKeyMin并輸出到標(biāo)題編碼器400中以便它們能被包括在用在編碼中的一關(guān)鍵字標(biāo)題中。
如果沒(méi)有值從量化誤差最小化器915中輸入,在步驟S9240中,量化器910設(shè)置第一關(guān)鍵字?jǐn)?shù)據(jù)fKey0和最終關(guān)鍵字?jǐn)?shù)據(jù)fKeyN-1分別作為最小fKeyMin和最大值fKeyMax。如果最大值fKeyMax不小于1或不大于0,將最大和最小值fKeyMax和fKeyMin輸出到浮點(diǎn)數(shù)轉(zhuǎn)換器905中并通過(guò)上述浮點(diǎn)數(shù)轉(zhuǎn)換方法轉(zhuǎn)換和編碼。接著,在步驟S9260中,已經(jīng)被轉(zhuǎn)換和編碼的最大和最小值fKeyMax和fKeyMin被包括在關(guān)鍵字標(biāo)題中以便它們能被用在譯碼中。
另一方面,如果最大值fKeyMax小于1且最小值fKeyMin大于0,在步驟S9270中核對(duì)表示最大和最小值fKeyMax和fKeyMin是否將被包括在正用在譯碼中的關(guān)鍵字標(biāo)題中的一標(biāo)志位。如果該標(biāo)志位被設(shè)置以致最大和最小值fKeyMax和fKeyMin能被包括在關(guān)鍵字標(biāo)題中,執(zhí)行步驟S9260以便最大和最小值fKeyMax和fKeyMin能被輸出到標(biāo)題編碼器400中。如果標(biāo)志位未被設(shè)置,量化器910不允許將最大和最小值fKeyMax和fKeyMin包括在關(guān)鍵字標(biāo)題中。
在最大和最小值fKeyMax和fKeyMin未被包括在關(guān)鍵字標(biāo)題中的情況下,關(guān)鍵字?jǐn)?shù)據(jù)編碼器和關(guān)鍵字?jǐn)?shù)據(jù)譯碼器被假定分別執(zhí)行編碼和譯碼、分別將最大和最小值fKeyMax和fKeyMin設(shè)置為1和0。在這種情況下,在步驟S9280中,量化器910分別將最大和最小值fKeyMax和fKeyMin設(shè)置為1和0。對(duì)關(guān)鍵字?jǐn)?shù)據(jù)譯碼器來(lái)說(shuō)最大和最小值fKeyMax和fKeyMin已經(jīng)公知以致它們不需要被包括在關(guān)鍵字標(biāo)題中。
在步驟S9290中,量化器910通過(guò)將通過(guò)上述處理設(shè)置的最大和最小值fKeyMax和fKeyMin代入等式(9)中來(lái)量化輸入關(guān)鍵字?jǐn)?shù)據(jù)并將量化關(guān)鍵字?jǐn)?shù)據(jù)輸出到一DPCM處理器920中。
DPCM處理器920接收量化關(guān)鍵字?jǐn)?shù)據(jù)并在多個(gè)預(yù)定時(shí)間在量化關(guān)鍵字?jǐn)?shù)據(jù)上執(zhí)行DPCM。接著,DPCM處理器920輸出DPCM的次數(shù),通過(guò)該操作,在離散的程序中獲得一最小值以及在每個(gè)DPCM周期中獲得的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)到標(biāo)題編碼器400中。在步驟S9300中,DPCM處理器920將由DPCM生成的差分?jǐn)?shù)據(jù)輸出到移位器930中。
參考圖10D,在步驟S9310中,DPCM處理器920在多個(gè)預(yù)定時(shí)間在輸入關(guān)鍵字?jǐn)?shù)據(jù)上執(zhí)行DPCM并存儲(chǔ)DPCM的周期的數(shù)量作為DPCM的次數(shù)。在本發(fā)明的一優(yōu)選實(shí)施例中,DPCM能被執(zhí)行三次。
此后,在步驟S9250中,量化器910核對(duì)最大值fKeyMax是否小于1而大于0以及最小值是fKeyMin否大于0。在這里,離散度可由離散、標(biāo)準(zhǔn)偏差或四分位差以及在本發(fā)明的一優(yōu)選實(shí)施例中,可使用四分位差。
接著,DPCM處理器920選擇一DPCM周期,通過(guò)該DPCM周期可獲得離散度中的一最小位,并將選擇的DPCM次數(shù)的結(jié)果輸出到移位器930中。選擇的DPCM周期、每個(gè)DPCM周期的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)以及DPCM所要求的其它信息均在步驟S9330中被輸出到標(biāo)題譯碼器400中。然而,在本發(fā)明的一優(yōu)選實(shí)施例中,如果關(guān)鍵字的數(shù)量小于5,則僅執(zhí)行DPCM一次。例如,DCPM的第一周期用等式(10)來(lái)執(zhí)行。
Δi=nQkeyi+1-nQkeyi…(10)
在這里,i表示量化關(guān)鍵字?jǐn)?shù)據(jù)的一指數(shù),nQKeyi表示一整數(shù)數(shù)組,以及Δi表示差分?jǐn)?shù)據(jù)。
DPCM處理器920計(jì)算為編碼DPCM的選擇周期的結(jié)果以及在步驟S9340中在一預(yù)定存儲(chǔ)器(nQStep DPCM0中由DPCM所生成的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)而所需的位的數(shù)量。為進(jìn)行編碼而所需的位的數(shù)量的計(jì)算也可在后來(lái)的選擇將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)的步驟中執(zhí)行,這對(duì)本領(lǐng)域的技術(shù)人員是顯而易見(jiàn)的。
移位器930從DPCM處理器輸入的差分?jǐn)?shù)據(jù)中選擇具有最高頻率的一差分?jǐn)?shù)據(jù)(在下文中,稱為一模式)。然后,移位器930在步驟S9400中從所有差分?jǐn)?shù)據(jù)中減去該模式以便將被編碼的大多數(shù)數(shù)據(jù)排列在0周期以及能減小為進(jìn)行編碼而所需的位的數(shù)量。
通過(guò)從所有已量化關(guān)鍵字?jǐn)?shù)據(jù)中減去一模式nKeyShift,來(lái)執(zhí)行這種移位操作,用下述等式來(lái)表示。
shift(nQKeyi)=nQkeyi-nKeyShift …(11)
在這里,i表示已量化關(guān)鍵字?jǐn)?shù)據(jù)的一指數(shù),nQKeyi表示一整數(shù)數(shù)組,以及nKeyShin表示一模式值。作為該移位操作的結(jié)果,具有最高頻率的差分?jǐn)?shù)據(jù)變?yōu)?以便能相當(dāng)大地減小為進(jìn)行編碼而所需的位的數(shù)量。
通過(guò)移位操作的關(guān)鍵字?jǐn)?shù)據(jù)被輸出到折疊處理器940和DND處理器950中,以及模式值nKeyShift被輸出到標(biāo)題編碼器400以便被包括在關(guān)鍵字標(biāo)題中。
在步驟S9500中,折疊處理器940在移位器930的輸出上執(zhí)行一折疊操作并將折疊操作的結(jié)果輸出到DND處理器950中。
折疊操作被用來(lái)通過(guò)將它們集中到正或負(fù)數(shù)區(qū)域中來(lái)減小在一正數(shù)區(qū)域和一負(fù)數(shù)區(qū)域上廣泛離散的差分?jǐn)?shù)據(jù)的范圍。在本發(fā)明實(shí)施例中,折疊操作用等式(12)來(lái)執(zhí)行以在正數(shù)區(qū)域中集中該差分?jǐn)?shù)據(jù)。
fold(nQKeyi)=2·nQKeyi (nQKeyi≥0) …(12)
=2|nQKeyi|-1 (nQKeyi<0)
在這里,i表示量化關(guān)鍵字?jǐn)?shù)據(jù)的一指數(shù),nQKeyi表示一整數(shù)數(shù)組。作為折疊操作的結(jié)果,正差分?jǐn)?shù)據(jù)被轉(zhuǎn)換成偶數(shù),以及負(fù)差分?jǐn)?shù)據(jù)被轉(zhuǎn)換成奇數(shù)。
折疊處理器940計(jì)算為對(duì)經(jīng)過(guò)折疊操作的差分?jǐn)?shù)據(jù)進(jìn)行編碼而所需的位的數(shù)量并將其存儲(chǔ)在一預(yù)定存儲(chǔ)器nQStep fold。在該步驟中,編碼所需的位的數(shù)量的計(jì)算可在后面的選擇將被熵編碼的差分?jǐn)?shù)據(jù)的步驟后執(zhí)行,這對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的。通過(guò)在折疊處理器940中的折疊操作生成的數(shù)據(jù)被輸出給DND處理器950。
為提高熵編碼的效率,DND處理器950在關(guān)鍵字?jǐn)?shù)據(jù)的輸入差分?jǐn)?shù)據(jù)上執(zhí)行一DND操作一預(yù)定次數(shù),從而在步驟S9600中減小差分?jǐn)?shù)據(jù)的范圍。
參考圖9B,DND處理器950包括一DND運(yùn)算符952,一第一差分?jǐn)?shù)據(jù)選擇器954,一上移運(yùn)算符956,以及一第二差分?jǐn)?shù)據(jù)選擇器958。該DND運(yùn)算符952在差分?jǐn)?shù)據(jù)上執(zhí)行一DND操作。該第一差分?jǐn)?shù)據(jù)選擇器954基于用于編碼的位的數(shù)量來(lái)選擇將被熵編碼的差分?jǐn)?shù)據(jù)。該上移運(yùn)算符956在通過(guò)一DND操作的差分?jǐn)?shù)據(jù)上執(zhí)行一上移操作。該第二差分?jǐn)?shù)據(jù)選擇器958從具有僅通過(guò)DND操作的差分?jǐn)?shù)據(jù)和通過(guò)上移操作的差分?jǐn)?shù)據(jù)上選擇具有一較低離散度的一個(gè)并將所選擇的差分?jǐn)?shù)據(jù)輸出到熵編碼器960。
下面描述將在DND運(yùn)算符952中執(zhí)行的DND操作。
當(dāng)在折疊處理器940中通過(guò)折疊操作的差分?jǐn)?shù)據(jù)被輸入到DND運(yùn)算符952中時(shí),它們被劃分成二組,比另一差分?jǐn)?shù)據(jù)組具有一較高范圍的一組差分?jǐn)?shù)據(jù)通過(guò)一劃分函數(shù)被移動(dòng)到正數(shù)區(qū)域中。劃分函數(shù)由下述等式來(lái)定義。
divide(nQKeyj,nKeyMax) …(13)
=nQKeyj-(nKeyMax+1)
=nQKeyj
在這里,j表示輸入差分?jǐn)?shù)據(jù)的一指數(shù),nQKeyj表示一整數(shù)數(shù)組,以及nKeyMax表示通過(guò)折疊操作的差分?jǐn)?shù)據(jù)間的一最大值。特別地,在大多數(shù)差分?jǐn)?shù)據(jù)沿所有差分?jǐn)?shù)據(jù)占用的整個(gè)區(qū)域的邊界被密集地填充的情況下,使用該劃分操作有可能相當(dāng)大地減小所有差分?jǐn)?shù)據(jù)的整個(gè)區(qū)域。
在劃分操作后,計(jì)算離散度,在這種情況下,編碼所需的位的大小被用作離散度的一度量以便選擇用于編碼的位的大小中的一最小值。
在DND操作后,不同類型的DND操作,即一上劃操作或一下劃操作被進(jìn)一步執(zhí)行。根據(jù)差分?jǐn)?shù)據(jù)的一正范圍的大小以及差分?jǐn)?shù)據(jù)的一負(fù)范圍的大小,確定將進(jìn)一步執(zhí)行一上劃操作還是一下劃操作。
如果具有正值的差分?jǐn)?shù)據(jù)的范圍大于具有負(fù)值的差分?jǐn)?shù)據(jù)的范圍,執(zhí)行由下述等式定義的一下劃操作。
divide-dwon(nQKeyj,nKeyMax) …(14)
=-2(nKeyMax-nQKeyj+1)+1
=nQKeyj
=2·nQKeyj (nQKeyj<0)
另一方面,如果具有正值的差分?jǐn)?shù)據(jù)的范圍大于具有負(fù)值的差分?jǐn)?shù)據(jù)的范圍,執(zhí)行由下述等式定義的一上劃操作。
divide-up(nQKeyj,nKeyMin) …(15)
=nQKeyj (nQKeyj≥0)
=2·nQKeyj
=2(nKeyMin-nQKeyj-1)+1
在等式(14)和(15)中,j表示量化關(guān)鍵字?jǐn)?shù)據(jù)的一指數(shù),nQKeyj表示一整數(shù)數(shù)組,nKeyMax表示nQKeyj的一最大值,以及nKeyMin表示nQKeyj的一最小值。
下面將參考圖10E來(lái)描述DND運(yùn)算符952的操作。
當(dāng)從折疊處理器940輸入關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)時(shí),DND運(yùn)算符952在步驟S9610中獲得輸入差分?jǐn)?shù)據(jù)間的最大值nKeyMax和最小值nKeyMin。然后,在步驟S9620中,DND運(yùn)算符將nKeyMax的絕對(duì)值與nKeyMin的絕對(duì)值比較。如果nKeyMax不小于nKeyMin的絕對(duì)值,DND運(yùn)算符952在步驟S9622中將nKeyMax設(shè)置為在DND操作的當(dāng)前周期中的一最大值。
DND運(yùn)算符952核對(duì)DND操作的次數(shù)是否為1,換句話說(shuō),如果DND的次數(shù)為1,在步驟S9624中,如果它是,則DND運(yùn)算符952在步驟S9630中通過(guò)將最大值nKeyMax代入等式(13)中來(lái)在輸入差分?jǐn)?shù)據(jù)上執(zhí)行一劃分操作。
此后,在步驟S9640中,使用函數(shù)getQBit(),DND運(yùn)算符952使用劃分操作來(lái)測(cè)量用于編碼已經(jīng)被減小的差分?jǐn)?shù)據(jù)范圍的位的大小。在步驟S9650中,如果DND操作的次數(shù)變?yōu)?,編碼所需的位的大小被存儲(chǔ)為表示用于編碼的最小位的大小的一值nQBitDND,以及在步驟S9655中將DND操作的次數(shù)加1。
接著,DND處理器952再次執(zhí)行步驟S9610至S9622。如果在步驟S9624中DND操作的次數(shù)不為1,則在步驟S9634中,DND運(yùn)算符952通過(guò)將最大值nKeyMax代入等式(14)來(lái)執(zhí)行一下劃操作。在步驟S9640中,DND運(yùn)算符952計(jì)算用于編碼通過(guò)下劃操作的差分?jǐn)?shù)據(jù)的位的數(shù)量。如果該數(shù)量小于在先前DND操作周期中存儲(chǔ)的最小值nQBitDND,在步驟S9658中,在DND操作后,它替換要求用于編碼的最小的位的大小。
如果在步驟S9620中,最小值nKeyMin的絕對(duì)值似乎大于最大值nKeyMax的絕對(duì)值,在步驟S9623中,在當(dāng)前DND操作的周期中的最大值被更新為一最小值,然后,在步驟S9628中,通過(guò)將最小值nKeyMin代入等式(15)中來(lái)執(zhí)行一上劃操作。此后,DND運(yùn)算符952在步驟S9640中計(jì)算用于編碼通過(guò)上劃操作的差分?jǐn)?shù)據(jù)的位的數(shù)量。在步驟S9652中,如果計(jì)算結(jié)果變?yōu)樾∮谠谙惹癉ND操作周期中存儲(chǔ)的nQBitDND,在步驟S9658中,在DND操作后,它替換要求用于編碼的位的最小數(shù)nQBitDND。
DND處理器952執(zhí)行預(yù)定次數(shù)的DND操作,以及DND操作的性能的數(shù)量可改變。例如,在本發(fā)明實(shí)施例中,執(zhí)行7次DND操作。DND運(yùn)算符952將nQBitDND和與nQBitDND相對(duì)應(yīng)的差分?jǐn)?shù)據(jù)輸出到第一差分?jǐn)?shù)據(jù)選擇器954中。DND運(yùn)算符952將通過(guò)其生成相應(yīng)差分?jǐn)?shù)據(jù)的DND次數(shù)輸出到標(biāo)題編碼器400中并允許它們包括在位流中。
第一差分?jǐn)?shù)據(jù)選擇器954接收經(jīng)過(guò)移位操作的差分?jǐn)?shù)據(jù)、經(jīng)過(guò)折疊操作的差分?jǐn)?shù)據(jù)以及經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù)并在它們?nèi)齻€(gè)中確定將被熵編碼的差分?jǐn)?shù)據(jù)。
參考圖10A,在步驟S9710中,如果在DND操作后為進(jìn)行編碼而所需的位的最小數(shù)nQBitDND不小于在步驟S9700DPCM操作后用于編碼的大小nQBitDND,則第一差分?jǐn)?shù)據(jù)選擇器954選擇DPCM的結(jié)果并在它們上執(zhí)行一移位操作。接著,第一差分?jǐn)?shù)據(jù)選擇器954將位移操作的結(jié)果輸出給熵編碼器960并允許在步驟S9710中編碼它們。在這種情況下,DND操作的次數(shù)被設(shè)置為-1,被輸出到標(biāo)題編碼器400并被包括在關(guān)鍵字標(biāo)題中。
然而,如果在步驟S9720中出現(xiàn)nQBitDND小于nQStep-DPCM并不小于在折疊操作后用于編碼的位的大小,第一差分?jǐn)?shù)據(jù)選擇器954將經(jīng)過(guò)折疊操作的差分?jǐn)?shù)據(jù)輸出到熵編碼器960中并在步驟S9730中允許熵編碼它們,在這種情況下,DND操作的次數(shù)被設(shè)置為0,輸出到標(biāo)題編碼器400,從而包括在關(guān)鍵字標(biāo)題中。
如果在DND操作后用于編碼差分?jǐn)?shù)據(jù)的位的數(shù)量是最小的,第一差分?jǐn)?shù)據(jù)選擇器954將經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù)輸出到上移運(yùn)算符956中,然后在步驟S9740中上移運(yùn)算符956計(jì)算從第一差分?jǐn)?shù)據(jù)選擇器954輸入的差分?jǐn)?shù)據(jù)的第一離散度。接著,上移運(yùn)算符956在步驟S9800在經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù)上執(zhí)行用下述等式定義的上移操作并在步驟S9810中計(jì)算上移操作的結(jié)果的第二離散度。
shift-up(nQKeyj,nkeyMax) …(16)
=nQKeyj (nQKeyj≥0)
=nKeyMax-nQKeyj (nQKeyj<0)
在這里,j表示量化關(guān)鍵值數(shù)據(jù)的差分?jǐn)?shù)據(jù)的一指數(shù),nQKeyj表示一整數(shù)數(shù)組,以及nKeyMax表示差分?jǐn)?shù)據(jù)間的一最大值。
當(dāng)輸入經(jīng)過(guò)DND操作的差分?jǐn)?shù)據(jù)以及經(jīng)過(guò)上移操作的差分?jǐn)?shù)據(jù)時(shí),在步驟S9900中,第二差分?jǐn)?shù)據(jù)選擇器958將第一離散度與第二離散度進(jìn)行比較。如果第二離散度小于第一離散度,第二離散數(shù)據(jù)選擇器958將經(jīng)過(guò)上移操作的差分?jǐn)?shù)據(jù)輸出到熵編碼器960并在步驟S9910中允許熵編碼它們。第二差分?jǐn)?shù)據(jù)選擇器958輸出用在DND操作中的最大和最小值nKeyMax和nKeyMin。在本發(fā)明的一優(yōu)選實(shí)施例中,標(biāo)準(zhǔn)偏差可被用作第一和第二離散度的一度量。
熵編碼器960根據(jù)差分?jǐn)?shù)據(jù)的特點(diǎn)在差分?jǐn)?shù)據(jù)上執(zhí)行兩個(gè)不同的函數(shù)。例如,經(jīng)過(guò)一DPCM操作和一移位操作的差分?jǐn)?shù)據(jù)以及僅經(jīng)過(guò)一劃分操作的差分?jǐn)?shù)據(jù)具有正和負(fù)值,因此它要求執(zhí)行編碼每個(gè)差分?jǐn)?shù)據(jù)的特征位和差分?jǐn)?shù)據(jù)本身的一處理。另一方面,由于經(jīng)過(guò)一折疊操作的差分?jǐn)?shù)據(jù)僅具有正值,執(zhí)行僅編碼差分?jǐn)?shù)據(jù)的一處理。
在本發(fā)明的一優(yōu)選實(shí)施例中,函數(shù)encodeSignedAAC被用于編碼差分?jǐn)?shù)據(jù)以及它們的特征位,以及函數(shù)encodeUnsignedAAC被用于僅編碼差分?jǐn)?shù)據(jù)。
圖11是函數(shù)encodeSignedAAC()的例子的圖。參考圖11,當(dāng)一輸入值是74以及用于編碼該輸入值的位的數(shù)量為8時(shí),其特征位為0,以及它與二進(jìn)制數(shù)1001010相同。特征位以及所有位平面用下述方法編碼。
第一步在每個(gè)位平面上按從其最高有效位(MSB)到其最低有效位的順序編碼一二進(jìn)制數(shù);
第二步核對(duì)當(dāng)前正被編碼的位是否為0;
第三步如果當(dāng)前正被編碼的位不是0,接著編碼該二進(jìn)制數(shù)的特征位;以及
第四步編碼該二進(jìn)制數(shù)據(jù)的其余位;
使用與這些值有關(guān)的環(huán)境,函數(shù)encodeUnsignedAAC將不具有一特征位的這些值編碼成一自適應(yīng)算術(shù)編碼位流。該函數(shù)除存在一特征位上下文(sign context)外,幾乎與函數(shù)encodeSignedAAC()相同。
圖12A至12J是根據(jù)本發(fā)明的一優(yōu)選實(shí)施例,表示經(jīng)過(guò)操作的關(guān)鍵字?jǐn)?shù)據(jù)的圖。在圖12A至12J,X軸表示每個(gè)關(guān)鍵字?jǐn)?shù)據(jù)的指數(shù),以及Y軸表示關(guān)鍵字?jǐn)?shù)據(jù)的值。
圖12A是表示輸入到本發(fā)明的編碼器中的原始關(guān)鍵字?jǐn)?shù)據(jù)的圖。如圖12A所示的關(guān)鍵字?jǐn)?shù)據(jù)被輸出到量化器910中,然后與9個(gè)量化位一起被量化以便獲得如圖12B所示的量化關(guān)鍵字?jǐn)?shù)據(jù)。如果在如圖12B所示的量化關(guān)鍵字?jǐn)?shù)據(jù)上執(zhí)行DPCM,獲得如圖12C所示的差分?jǐn)?shù)據(jù)。
接著,使用約為7的一模式值來(lái)移位該量化關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)以便獲得如圖12D所示的差分?jǐn)?shù)據(jù)。此后,如果在移位差分?jǐn)?shù)據(jù)上執(zhí)行一折疊操作,獲得如圖12E所示的僅為正值的數(shù)據(jù)。
在如圖12E所示的折疊數(shù)據(jù)上執(zhí)行一DND操作的結(jié)果如圖12F至12H所示。具體來(lái)說(shuō),在折疊數(shù)據(jù)上執(zhí)行一劃分操作的結(jié)果如圖12F所示。如圖12F所示,正關(guān)鍵字?jǐn)?shù)據(jù)值范圍從0至28,負(fù)關(guān)鍵字?jǐn)?shù)據(jù)值范圍從-28至0,這表示負(fù)關(guān)鍵字?jǐn)?shù)據(jù)值的范圍大于正關(guān)鍵字值數(shù)據(jù)的范圍。因此,要求在如圖12F所示的數(shù)據(jù)上執(zhí)行一上劃操作,以及上劃操作的結(jié)果如圖12G所示。
作為上劃分操作的結(jié)果,相當(dāng)大地減小了負(fù)關(guān)鍵字?jǐn)?shù)據(jù)值的范圍以便它遠(yuǎn)小于正關(guān)鍵字?jǐn)?shù)據(jù)值的范圍。在DND操作的下一周期,在上劃操作的結(jié)果上執(zhí)行一下劃操作。圖12H是表示在如圖12G所示的差分?jǐn)?shù)據(jù)上執(zhí)行一下劃操作的結(jié)果。在如圖12H所示的關(guān)鍵字?jǐn)?shù)據(jù)上執(zhí)行一上移操作的結(jié)果如圖12I所示。
如圖12A至12G所示,逐漸減小關(guān)鍵字?jǐn)?shù)據(jù)和差分?jǐn)?shù)據(jù)的范圍。然而,如圖12H和12I所示,在上移操作后增加的差分?jǐn)?shù)據(jù)的范圍大于在上移操作前,這表示經(jīng)過(guò)劃分操作的差分?jǐn)?shù)據(jù),如圖12H所示,是將被最終編碼的差分?jǐn)?shù)據(jù),如圖12J所示。
在標(biāo)題編碼器400中編碼以及在關(guān)鍵字標(biāo)題中存儲(chǔ)的信息如下所述。
當(dāng)輸入將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)時(shí),標(biāo)題編碼器400編碼將編碼的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)字?jǐn)?shù)和關(guān)鍵字?jǐn)?shù)。接著,標(biāo)題編碼器400從線性關(guān)鍵字編碼器900接收有關(guān)是否存在經(jīng)過(guò)線性關(guān)鍵字對(duì)輸入關(guān)鍵字?jǐn)?shù)據(jù)進(jìn)行編碼的一線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域以及在該線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量的信息并從浮點(diǎn)數(shù)轉(zhuǎn)換器905接收經(jīng)過(guò)浮點(diǎn)數(shù)轉(zhuǎn)換的線性關(guān)鍵字?jǐn)?shù)據(jù)的開(kāi)始和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)。
在浮點(diǎn)數(shù)轉(zhuǎn)換器接收能帶來(lái)一最小量化誤差的最小和最大值并將它們轉(zhuǎn)換成浮點(diǎn)數(shù)的情況下,轉(zhuǎn)換的最大和最小值被從浮點(diǎn)數(shù)轉(zhuǎn)換器905輸入到標(biāo)題編碼器400以便它們能被再次用于逆量化。另外,量化位的大小也能被輸入到標(biāo)題編碼器400中并被包括在關(guān)鍵字標(biāo)題中。
關(guān)鍵字標(biāo)題編碼器400從DPCM處理器920接收DPCM的次數(shù)以及在每個(gè)DPCM循環(huán)中的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)并從移位器930接收已經(jīng)用于一移位操作的一模式值。另外,標(biāo)題編碼器400從DND處理器950接收有關(guān)是否已經(jīng)執(zhí)行一上移操作以及DND次數(shù)的信息,通過(guò)該操作,能減小差分?jǐn)?shù)據(jù)的離散度,以及在每個(gè)DND操作周期中的最大和最小值。
最后,標(biāo)題編碼器從熵編碼器960接收用于編碼的位的數(shù)量并將其編碼為一關(guān)鍵字標(biāo)題。
在下文中,參考圖13A至20B,根據(jù)本發(fā)明的第一實(shí)施例來(lái)更全面地描述一關(guān)鍵字值數(shù)據(jù)編碼器300的結(jié)構(gòu)和操作。
圖13A是根據(jù)本發(fā)明第一實(shí)施例的一關(guān)鍵字值數(shù)據(jù)編碼器300的框圖。參考圖13A,關(guān)鍵字值數(shù)據(jù)編碼器300包括一旋轉(zhuǎn)DPCM運(yùn)算符1300,一循環(huán)DPCM運(yùn)算符,一熵編碼器1450,以及一標(biāo)題編碼器。旋轉(zhuǎn)DPCM運(yùn)算符1300計(jì)算在連續(xù)關(guān)鍵幀中一對(duì)象的旋轉(zhuǎn)變換值間的旋轉(zhuǎn)差分值,將關(guān)鍵幀的四元數(shù)關(guān)鍵字值數(shù)據(jù)應(yīng)用到它們各自的對(duì)象上,量化該旋轉(zhuǎn)差分值,并輸出旋轉(zhuǎn)差分值。該循環(huán)DPCM運(yùn)算符在量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上有選擇地執(zhí)行一線性DPCM或一循環(huán)DPCM操作。該熵編碼器1450對(duì)旋轉(zhuǎn)DPCM或循環(huán)DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù)進(jìn)行熵旋轉(zhuǎn)。該標(biāo)題編碼器編碼為譯碼已編碼的動(dòng)畫內(nèi)插器節(jié)點(diǎn)的關(guān)鍵字值數(shù)據(jù)所需的信息。
旋轉(zhuǎn)DPCM編碼器1300包括一第一四元數(shù)乘法器1310,一量化器1340,一逆量化器1350,一第二四元數(shù)乘法器1370,以及一延遲器1390。該第一四元數(shù)乘法器1310計(jì)算在一前關(guān)鍵幀的一對(duì)象的一旋轉(zhuǎn)變換值與在一當(dāng)前關(guān)鍵幀中該對(duì)象的一旋轉(zhuǎn)變換值間的一旋轉(zhuǎn)差分值,通過(guò)將在當(dāng)前關(guān)鍵幀中的該對(duì)象的旋轉(zhuǎn)變換值四元數(shù)乘以在前關(guān)鍵幀中的該對(duì)象的旋轉(zhuǎn)轉(zhuǎn)換值。該量化器1340通過(guò)非線性量化從第一四元數(shù)乘法器1310輸入的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成量化差分?jǐn)?shù)據(jù)。該逆量化器1350通過(guò)逆量化已量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成在當(dāng)前關(guān)鍵幀中的該對(duì)象的復(fù)原旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該第二四元數(shù)乘法器1370通過(guò)將在當(dāng)前關(guān)鍵幀中的該對(duì)象的旋轉(zhuǎn)差分值四元數(shù)乘以通過(guò)累加旋轉(zhuǎn)差分?jǐn)?shù)據(jù)所計(jì)算的在前關(guān)鍵幀中該對(duì)象的旋轉(zhuǎn)變換值來(lái)復(fù)原在當(dāng)前關(guān)鍵幀中的該對(duì)象的旋轉(zhuǎn)變換值。該延遲器1390當(dāng)輸入在下一關(guān)鍵幀中的該對(duì)象的一旋轉(zhuǎn)變換值時(shí),將在當(dāng)前關(guān)鍵幀中的該對(duì)象的復(fù)原旋轉(zhuǎn)變換值輸出到第一四元數(shù)乘法器。
在下文中,將更詳細(xì)地描述根據(jù)本發(fā)明的在一旋轉(zhuǎn)DPCM運(yùn)算符中執(zhí)行的一旋轉(zhuǎn)DPCM操作。
在已經(jīng)在常規(guī)MPEG-4PMFC中采用的一線性DPCM方法中,用下面的等式(17)來(lái)計(jì)算表示在一當(dāng)前關(guān)鍵幀中一對(duì)象的旋轉(zhuǎn)變換(或表示在一當(dāng)前關(guān)鍵幀中一對(duì)象被旋轉(zhuǎn)變換的程度)的一四元數(shù)旋轉(zhuǎn)變換值Q1(Q1=(q1,0,q1,1,q1,2,q1,3))與表示在下一關(guān)鍵幀中該對(duì)象的旋轉(zhuǎn)變換的一四元數(shù)旋轉(zhuǎn)變換值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方法僅計(jì)算四元數(shù)分量間的一差分值,這不能反映任何有意義的旋轉(zhuǎn)差分值,即一實(shí)際的旋轉(zhuǎn)差分值。因此,線性DPCM方法不能有效地減少將被編碼的連續(xù)關(guān)鍵字值數(shù)據(jù)間的冗余。另外,在線性DPCM方法中,除具有最大值的一個(gè)分量之外,編碼一四元數(shù)的三個(gè)分量。因此,有必要另外編碼在未被編碼的該一個(gè)分量上的2比特的長(zhǎng)信息,并將該2比特的長(zhǎng)信息從一編碼器傳送到一譯碼器。
為利用通過(guò)減小在連續(xù)關(guān)鍵字值數(shù)據(jù)間的冗余的傳統(tǒng)線性DPCM方法來(lái)解決上述問(wèn)題,根據(jù)本發(fā)明的第一實(shí)施例,關(guān)鍵字值數(shù)據(jù)編碼器提供一旋轉(zhuǎn)的DPCM操作,其中考慮到實(shí)際的旋轉(zhuǎn)差分值。
當(dāng)
表示一基準(zhǔn)矢量,該基準(zhǔn)矢量表示在一當(dāng)前關(guān)鍵幀中的一對(duì)象的一基準(zhǔn)位置,
表示當(dāng)關(guān)鍵字值等于ki-1時(shí)的關(guān)鍵字值數(shù)據(jù),以及
通過(guò)旋轉(zhuǎn)變換在當(dāng)前關(guān)鍵幀中的對(duì)象獲得的
的一位移矢量,在一四元數(shù)空間中的旋轉(zhuǎn)變換能用下面的等式表示。
在等式(18)中,X0,Yi-1,Qi-1以及
分別表示
以及
的單位四元數(shù)(unit quarternion)。另外,
表示Qi-1的一四元數(shù)復(fù)共扼,以及×表示四元數(shù)乘法。
用這種方式,當(dāng)關(guān)鍵字?jǐn)?shù)據(jù)等于ki時(shí),在一四元數(shù)空間中的旋轉(zhuǎn)變換能用下面的等式來(lái)表示。
可用以下等式(20)來(lái)計(jì)算連續(xù)關(guān)鍵字值數(shù)據(jù)的連續(xù)旋轉(zhuǎn)變換值間的一旋轉(zhuǎn)差分值。
因此,能通過(guò)由等式(5)和(6)導(dǎo)出的下面的等式來(lái)定義一旋轉(zhuǎn)差分值。
為防止一量化誤差擴(kuò)展到下一旋轉(zhuǎn)差分值,根據(jù)本發(fā)明的一實(shí)施例,關(guān)鍵字值數(shù)據(jù)編碼器300利用在下一關(guān)鍵幀中的一旋轉(zhuǎn)變換值以及前關(guān)鍵幀中的一復(fù)原旋轉(zhuǎn)變換值
來(lái)重新定義由等式(21)定義的該旋轉(zhuǎn)差分值,如等式(22)中所示。
在下文中,將參考圖13B來(lái)描述一種用于根據(jù)本發(fā)明的第一實(shí)施例編碼關(guān)鍵字值數(shù)據(jù)的方法。圖13B是根據(jù)本發(fā)明的第一實(shí)施例的用于編碼關(guān)鍵字值數(shù)據(jù)的方法。
根據(jù)本發(fā)明的第一實(shí)施例,關(guān)鍵字值數(shù)據(jù)編碼器在步驟S1300中接收DPCM次數(shù)、一熵編碼模式以及關(guān)鍵字值數(shù)據(jù)。
接著,在步驟S13050中,第一四元數(shù)乘法器1310接收用一四元數(shù)表示的關(guān)鍵字值數(shù)據(jù)Qi并核對(duì)輸入的關(guān)鍵字值數(shù)據(jù)Qi是否是第一關(guān)鍵字值數(shù)據(jù)Q0。如果輸入的關(guān)鍵字值數(shù)據(jù)Qi是第一關(guān)鍵字值數(shù)據(jù)Q0,表示沒(méi)有用于四元數(shù)乘法的累加的四元數(shù)變換值。因此,第一四元數(shù)乘法器1310將輸入關(guān)鍵字值數(shù)據(jù)Qi輸出到量化器1340中。如果輸入關(guān)鍵字值數(shù)據(jù)Qi不是第一關(guān)鍵字值數(shù)據(jù)Qo,在步驟S13100中,通過(guò)將前關(guān)鍵幀中的復(fù)原四元數(shù)變換值
的復(fù)共扼)四元數(shù)乘以由一四元數(shù)變換值表示的輸入關(guān)鍵字值數(shù)據(jù)Qi
第一四元數(shù)乘法器1310計(jì)算一四元數(shù)差分值
其是當(dāng)前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)與前關(guān)鍵幀的復(fù)原關(guān)鍵字值數(shù)據(jù)間的一差分值。
在步驟13300中,量化器1340從第一四元數(shù)乘法器1310接收第一關(guān)鍵字值數(shù)據(jù)Q0或四元數(shù)旋轉(zhuǎn)差分值
并使用一預(yù)定數(shù)量的量化位來(lái)量化該輸入。
由于所有旋轉(zhuǎn)四元數(shù)差分值均由單位四元數(shù)表示,表示一旋轉(zhuǎn)差分值的一四元數(shù)的一范數(shù)總是為1。因此,在未被編碼的一四元數(shù)的四個(gè)分量中的一分量能使用其它三個(gè)分量來(lái)譯碼。根據(jù)本發(fā)明的第一實(shí)施例,關(guān)鍵字值數(shù)據(jù)編碼器300僅編碼一四元數(shù)的四個(gè)分量中的三個(gè)以便將被編碼的數(shù)據(jù)量。因此,量化器1340僅量化將被編碼的三個(gè)分量。
根據(jù)本發(fā)明,量化器1340執(zhí)行非線性量化而不是一般的線性量化,以及下面將參考圖14A描述該原因。
圖14A是描述在一旋轉(zhuǎn)差分值的每個(gè)分量中的一概率分布函數(shù)(PDF)的一個(gè)典型的例子的圖。如圖14A所示,旋轉(zhuǎn)差分值的分量值一般集中在0左右,這被稱為能源壓縮并表示有可能有效地降低旋轉(zhuǎn)信息片中的冗余。因此,為量化旋轉(zhuǎn)差分值,更充分地反映每個(gè)旋轉(zhuǎn)差分值的較低的分量值,需要更完善地在較低分量值上執(zhí)行量化,這就是為什幺根據(jù)本發(fā)明的量化器1340執(zhí)行非線性量化的原因。此時(shí),量化器1340使用一反正切曲線以便將一非線性比例因子分配給每個(gè)旋轉(zhuǎn)差分值。
圖14B根據(jù)本發(fā)明給出用于量化的一反正切曲線。如圖14B所示,該反正切曲線向較高輸入值提供一適當(dāng)?shù)姆直媛什⑾蜉^低輸入值提供一更高的分辨率。量化器1340使用如下所示的等式的一非線性比例函數(shù)來(lái)量化在步驟S13300中的一旋轉(zhuǎn)差分值。
此時(shí),
表示輸入到該量化器1340中的旋轉(zhuǎn)差分值的每個(gè)分量,qi′表示
的一比例值,nQBits表示用于量化的預(yù)定數(shù)量的量化位,以及floor(x)表示用于將一輸入值x變換成不大于x的一最大整數(shù)的一函數(shù)。
量化器1340在輸入旋轉(zhuǎn)差分值上執(zhí)行量化,然后核對(duì)量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)是否與將被編碼的最后一個(gè)關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng)。如果量化后的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)與最后一個(gè)關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng),該量化器1340將量化后的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)輸出到循環(huán)DPCM運(yùn)算符1400中。如果量化后的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)不與最后的關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng),量化器1340將量化后的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)輸出到逆量化器1350中。
在步驟S13400中,反量化器1350相反地量化從量化器1340輸入的量化后的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)并在步驟S1350中輸出一復(fù)原旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
如上所述,根據(jù)本發(fā)明的第一實(shí)施例,關(guān)鍵字值數(shù)據(jù)編碼器通過(guò)量化除第一分量外的三個(gè)分量,僅編碼表示一旋轉(zhuǎn)差分值的一四元數(shù)的三個(gè)分量。一關(guān)鍵字?jǐn)?shù)據(jù)譯碼器的一逆量化器2430,如圖21A所示,以及在上面描述過(guò)的逆量化器1350被假定使用三個(gè)編碼過(guò)的分量來(lái)復(fù)原在旋轉(zhuǎn)差分值的四個(gè)分量中未被編碼的其它的一個(gè)。由于所有旋轉(zhuǎn)差分值每個(gè)均由一單位四元數(shù)表示,表示一旋轉(zhuǎn)差分值的一四元數(shù)的范數(shù)始終為1。因此,使用下述等式來(lái)復(fù)原旋轉(zhuǎn)差分值的四個(gè)分量中的第一分量是可能的。
在等式(24)中,
以及
表示一旋轉(zhuǎn)差分值的三個(gè)復(fù)原分量,以及
表示使用三個(gè)復(fù)原分量
以及
而復(fù)原的第一分量。
為利用等式(11)來(lái)復(fù)原第一分量
第一分量
必須具有一正值,并且該條件可通過(guò)利用當(dāng)將一四元數(shù)應(yīng)用到在一13D空間中的一對(duì)象的旋轉(zhuǎn)變換中時(shí)所出現(xiàn)的一四元數(shù)的特征來(lái)滿足,并如等式(25)所示。
Y=Q×X×Q*=(-Q)×X×(-Q)* …(25)
等式(25)表示當(dāng)將旋轉(zhuǎn)變換應(yīng)用到在一3D空間的一對(duì)象時(shí)旋轉(zhuǎn)變換值Q和-Q具有相同的物理含義。因此,如果根據(jù)本發(fā)明的第一實(shí)施例,在關(guān)鍵字值數(shù)據(jù)編碼器300中一旋轉(zhuǎn)差分值的第一分量能通過(guò)將該旋轉(zhuǎn)差分值的每個(gè)分量乘以-1容易被轉(zhuǎn)換成一正值。然而,在這種情況下,除第一分量外一復(fù)原旋轉(zhuǎn)差分值的每個(gè)分量的平方和由于一量化誤差可能超過(guò)1。在這種情況下,不能由等式(24)確定
并被認(rèn)為是接近0以及小于能被量化器1340量化的一最小值的一值。
具有這樣一值的事實(shí)表示該對(duì)象已經(jīng)通過(guò)幾乎等于約180度被旋轉(zhuǎn)變換。因此,一個(gè)用于譯碼一定向內(nèi)插器的裝置需要用于確定
的一種方法同時(shí)減小復(fù)原第一分量值
在三個(gè)復(fù)原分量值
以及
上的影響,并且該方法將被應(yīng)用到用于根據(jù)本發(fā)明的第一實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300的逆量化器1350中。例如,能由量化器1340量化的最小值乘以一預(yù)定整數(shù)可被確定為
下面的等式可被用來(lái)確定
在等式(26)中,’a’表示一任意常數(shù),以及m表示一預(yù)定數(shù)量的量化位。
當(dāng)在常規(guī)MPEG-4BIFS PMFC方法中要求有關(guān)每個(gè)關(guān)鍵字值數(shù)據(jù)的2比特長(zhǎng)的信息用于譯碼時(shí),該2比特長(zhǎng)信息在本發(fā)明不是必須的,因此當(dāng)編碼N個(gè)關(guān)鍵字值數(shù)據(jù)時(shí),將被編碼的位的數(shù)量能被減少差不多2N。
從該逆量化器350輸出的復(fù)原旋轉(zhuǎn)差分值被輸入到第二四元數(shù)乘法器1370中,以及在步驟S13600中該第二四元數(shù)乘法器1370核對(duì)一輸入關(guān)鍵幀是否是將被編碼的一第一關(guān)鍵幀。如果該輸入關(guān)鍵幀是將被編碼的第一關(guān)鍵幀時(shí),第二四元數(shù)乘法器1370累加從該逆量化器輸入的第一關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值并在步驟S13800中將累加值輸出到該延遲器1390中。
如果該輸入關(guān)鍵幀不是將被編碼的第一關(guān)鍵幀時(shí),在步驟S13700中,通過(guò)將當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)差分值
與一前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值
四元數(shù)相乘第二四元數(shù)乘法器1370復(fù)原一當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值
第二四元數(shù)乘法器1370將當(dāng)前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值
輸出給延遲器1370,然后延遲器1390保持該
直到下一關(guān)鍵幀的一旋轉(zhuǎn)變換值被輸出以便
等于
然后將
輸出到第一四元數(shù)乘法器1310中。
當(dāng)一當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值Qi被輸入到第一四元數(shù)乘法器1310中時(shí),第一四元數(shù)乘法器1310也從延遲器1390接收一前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值
并在步驟S13100中通過(guò)將前關(guān)鍵幀中的復(fù)原四元數(shù)變換值
四元數(shù)乘以Qi
來(lái)生成當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值與前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值間的一旋轉(zhuǎn)差分值Qi。
生成的旋轉(zhuǎn)差分值被輸出到量化器1340中,然后在步驟S13300中,按如下所述,由量化器1340量化。在步驟S13400中,如果所輸入的旋轉(zhuǎn)差分值與最后一個(gè)關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng),量化器1340將通過(guò)量化一旋轉(zhuǎn)差分值所生成的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)輸出到循環(huán)DPCM運(yùn)算符400中。
循環(huán)DPCM運(yùn)算符1400核對(duì)從量化器1340輸入的量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的DPCM的次數(shù)是否為0。在步驟S14000中,如果DPCM的次數(shù)為0,循環(huán)DPCM運(yùn)算符1400將量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)輸出到熵編碼器1450中而不執(zhí)行一線性DPCM操作和一循環(huán)DPCM操作。如果DPCM的次數(shù)不為0,在步驟S14100中,循環(huán)DPCM運(yùn)算符1400在該量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上執(zhí)行一線性DPCM操作以及一循環(huán)DPCM操作。
圖15A是描述從該量化器1340輸出的差分?jǐn)?shù)據(jù)的例子的圖,以及圖15B是描述在從量化器1340輸出的差分?jǐn)?shù)據(jù)上執(zhí)行一線性DPCM操作的結(jié)果的圖。
如圖15B所示,作為一線性DPCM操作的結(jié)果,將被編碼的差分?jǐn)?shù)據(jù)的范圍可比它過(guò)去增加二倍。循環(huán)DPCM操作的性能的目的是將差分?jǐn)?shù)據(jù)的范圍保持在量化的差分?jǐn)?shù)據(jù)的范圍內(nèi)。
循環(huán)DPCM操作是在假定在一量化范圍內(nèi)的一最大值和一最小值被循環(huán)地彼此連接之下執(zhí)行的。因此,如果在兩個(gè)連續(xù)量化數(shù)據(jù)上執(zhí)行線性DPCM的結(jié)果的差分?jǐn)?shù)據(jù)大于在量化范圍內(nèi)的最大值的一半時(shí),通過(guò)從差分?jǐn)?shù)據(jù)減去最大值,可用較小值來(lái)表示它們。
如果差分?jǐn)?shù)據(jù)小于在量化范圍內(nèi)中的最小值的一半時(shí),通過(guò)將在量化范圍內(nèi)的最大值加到該差分?jǐn)?shù)據(jù)上,可用較小值甚至更大的來(lái)表示它們。
當(dāng)
和
分別表示在兩個(gè)連續(xù)時(shí)間瞬間ti和ti-1的量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù),在下面的等式(27)的兩個(gè)連續(xù)量化旋轉(zhuǎn)并非分?jǐn)?shù)據(jù)
和
上執(zhí)行一線性DPCM操作。
另外,在下面的等式(27)、(28)獲得的差分?jǐn)?shù)據(jù)上執(zhí)行一循環(huán)DPCM操作。
(如果Xi≥0)(相反)
在等式(28)中,nQBits表示一預(yù)定數(shù)量的量化位。圖15C是描述在如圖15B所示的DPCM差分?jǐn)?shù)據(jù)上執(zhí)行一循環(huán)DPCM操作的結(jié)果的圖。如圖15C所示,循環(huán)DPCM差分?jǐn)?shù)據(jù)的范圍越小于線性DPCM差分?jǐn)?shù)據(jù)的范圍。
熵編碼器1450根據(jù)旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的DPCM的次數(shù)從循環(huán)DPCM運(yùn)算符1400接收旋轉(zhuǎn)差分?jǐn)?shù)據(jù)或循環(huán)DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù),然后通過(guò)移除位冗余來(lái)編碼輸入差分?jǐn)?shù)據(jù)。
再參考圖13B,熵編碼器1450在步驟S14500中核對(duì)一熵編碼模式。
如果熵編碼模式是一二進(jìn)制熵編碼模式,則在步驟S14600中熵編碼器1450使用一函數(shù)SignedAAC()來(lái)編碼該輸入差分?jǐn)?shù)據(jù)。如果熵編碼模式是一一元熵編碼模式,則在步驟S14700中使用一函數(shù)UnaryAAC()來(lái)編碼該輸入差分?jǐn)?shù)據(jù)。
函數(shù)SignedAAC()被用來(lái)利用一自適應(yīng)的二進(jìn)制算術(shù)編碼器來(lái)編碼差分?jǐn)?shù)據(jù),函數(shù)SignedAAC()在每個(gè)位平面上編碼該差分?jǐn)?shù)據(jù)的標(biāo)記和大小,并且編碼方法已經(jīng)參考圖11在上面描述過(guò)。
另一方面,函數(shù)UnaryAAC()被用來(lái)通過(guò)將被編碼的一值轉(zhuǎn)換成一系列0、表示該0系列結(jié)束的一特征位位1以及表示該值的標(biāo)記的另一位來(lái)編碼符號(hào),0系列的數(shù)量與該值的大小相對(duì)應(yīng)。
在下文中,函數(shù)UnaryAAC()將參考圖16B在下面更全面地描述。例如,2156被編碼成一系列位,這些位由256個(gè)Os,表示Os系列結(jié)束的一特征位位1,以及表示256的標(biāo)記的0,即函數(shù)UnaryAAC()的一加號(hào)標(biāo)記組成。由于UnaryAAC(),表示將被編碼的符號(hào)的位間的冗余增加,這提高了編碼該符號(hào)的有效性。
在下文中,將描述根據(jù)本發(fā)明的第二實(shí)施例的一關(guān)鍵字值數(shù)據(jù)編碼器300。根據(jù)本發(fā)明的第二實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300包括一裝置,用于校正在量化期間產(chǎn)生的一旋轉(zhuǎn)方向誤差以及用于根據(jù)本發(fā)明的第一實(shí)施例編碼的關(guān)鍵字值數(shù)據(jù)編碼器300的所有組件。
圖17是描述在使用旋轉(zhuǎn)差分值編碼四元數(shù)旋轉(zhuǎn)變換值期間生成的一旋轉(zhuǎn)方向誤差的圖。由于在根據(jù)本發(fā)明的關(guān)鍵字值數(shù)據(jù)編碼器300中執(zhí)行的四元數(shù)編碼方法是有損編碼方法(loss encoding method),從而導(dǎo)致旋轉(zhuǎn)方向誤差。
在圖17中,當(dāng)Qi,Qi-1,
和
分別表示當(dāng)前正被應(yīng)用到在一第I關(guān)鍵幀中的一對(duì)象的一旋轉(zhuǎn)變換值、應(yīng)用到在一前關(guān)鍵幀中的該對(duì)象的一旋轉(zhuǎn)變換值、從QI復(fù)原一值以及從Qi-1復(fù)原一值時(shí),通過(guò)幾乎等于分別由Qi,Qi-1,
和
表示的旋轉(zhuǎn)變換旋轉(zhuǎn)的該對(duì)象的位置可由四個(gè)不同區(qū)域表示,如圖17所示。
換句話說(shuō),如果該對(duì)象沿一最短弧線從Qi-1旋轉(zhuǎn)到Qi因此在由Qi和Qi-1旋轉(zhuǎn)后,該對(duì)象位于區(qū)1和區(qū)3中,該對(duì)象被認(rèn)為按逆時(shí)鐘方向從Qi-1旋轉(zhuǎn)到Qi。此時(shí),如果該對(duì)象沿一最短路線從Qi-1旋轉(zhuǎn)到Qi因此在按Qi-1和Qi旋轉(zhuǎn)后,該對(duì)象位于區(qū)2和區(qū)4中,該對(duì)象被認(rèn)為按順時(shí)針?lè)较驈腝i-1旋轉(zhuǎn)到Qi。
另一方面,如果已經(jīng)被編碼,然后被譯碼的旋轉(zhuǎn)信息旋轉(zhuǎn)該對(duì)象,用于譯碼一定向內(nèi)插器的一種裝置利用分別與Qi,Qi-1相對(duì)應(yīng)的
和
來(lái)旋轉(zhuǎn)該對(duì)象。因此,如果相對(duì)于由
所旋轉(zhuǎn)的該對(duì)象的位置而言,由
所旋轉(zhuǎn)的對(duì)象的相對(duì)位置是區(qū)2或3,該對(duì)象逆時(shí)針旋轉(zhuǎn)。如果相對(duì)于由
所旋轉(zhuǎn)的該對(duì)象的位置而言,由
所旋轉(zhuǎn)的對(duì)象的相對(duì)位置是區(qū)1或4,該對(duì)象順時(shí)針旋轉(zhuǎn)。在區(qū)1和2中,當(dāng)利用一原始旋轉(zhuǎn)變換值時(shí),該對(duì)象的旋轉(zhuǎn)方向可能與當(dāng)利用一譯碼的旋轉(zhuǎn)變換值的該對(duì)象的旋轉(zhuǎn)方向相反,因?yàn)镼i和
與被執(zhí)行以編碼四元數(shù)旋轉(zhuǎn)變換值的損失編碼是不同的。為解決該問(wèn)題,需要減小該對(duì)象在與所需要的方向相反的一錯(cuò)誤方向中所旋轉(zhuǎn)的程度或當(dāng)該對(duì)象在一錯(cuò)誤方向中旋轉(zhuǎn)時(shí)校正該對(duì)象的旋轉(zhuǎn)方向以便該對(duì)象在一需要的方向中旋轉(zhuǎn)。在本發(fā)明中,采用用于校正該對(duì)象的旋轉(zhuǎn)方向的方法以便使該對(duì)象在一需要的方向中旋轉(zhuǎn)。
再參考圖17,在下文中將簡(jiǎn)單地描述根據(jù)本發(fā)明的校正一旋轉(zhuǎn)方向誤差的原理。如果檢測(cè)到一旋轉(zhuǎn)方向誤差,如在區(qū)1和2中產(chǎn)生的現(xiàn)象,將被編碼的四元數(shù)旋轉(zhuǎn)差分值被控制以便在一正確方向中旋轉(zhuǎn),在這種情況下在區(qū)2中仍然會(huì)發(fā)生在旋轉(zhuǎn)方向中的不一致性。然而,在區(qū)2中,不象在區(qū)1中,原始四元數(shù)值以及復(fù)原四元數(shù)值間的差值相比較小。因此,根據(jù)本發(fā)明第二實(shí)施例的旋轉(zhuǎn)方向校正僅在區(qū)1上執(zhí)行。
在下文中,將參考圖18A至19B來(lái)描述根據(jù)本發(fā)明第二實(shí)施例的執(zhí)行旋轉(zhuǎn)方向校正的關(guān)鍵字值數(shù)據(jù)編碼器300。根據(jù)本發(fā)明第二實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300與根據(jù)本發(fā)明第一實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300的結(jié)構(gòu)幾乎相同。它們間的唯一區(qū)別是一旋轉(zhuǎn)DPCM運(yùn)算符的結(jié)構(gòu),因此在下面將僅描述根據(jù)本發(fā)明第二實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300中的一旋轉(zhuǎn)DPCM運(yùn)算符的結(jié)構(gòu)。
圖18A根據(jù)本發(fā)明第二實(shí)施例給出了旋轉(zhuǎn)DPCM運(yùn)算符1800的框圖,并且圖18B是如圖18A所示的一旋轉(zhuǎn)方向誤差計(jì)算器1820的一框圖。
參考圖18A,該旋轉(zhuǎn)DPCM運(yùn)算符1800包括一旋轉(zhuǎn)方向誤差計(jì)算器1820,一旋轉(zhuǎn)方向誤差檢測(cè)器1830,一旋轉(zhuǎn)方向校正器1815,以及一旋轉(zhuǎn)方向選擇器1835。旋轉(zhuǎn)方向誤差計(jì)算器1820接收在一當(dāng)前關(guān)鍵幀中的一對(duì)象的一旋轉(zhuǎn)變換值以及在一前關(guān)鍵幀中該對(duì)象的一復(fù)原旋轉(zhuǎn)變換值并計(jì)算旋轉(zhuǎn)方向誤差。該旋轉(zhuǎn)方向誤差檢測(cè)器1830基于從旋轉(zhuǎn)方向誤差計(jì)算器1820輸入的旋轉(zhuǎn)方向誤差檢測(cè)在譯碼過(guò)程中是否足以改變?cè)搶?duì)象的旋轉(zhuǎn)方向的一誤差已經(jīng)發(fā)生。該旋轉(zhuǎn)方向校正器1815校正和輸出從第一四元數(shù)乘法器1810輸入的一旋轉(zhuǎn)差分值以便通過(guò)采用前關(guān)鍵幀的一譯碼旋轉(zhuǎn)變換值的一變換來(lái)定位的該對(duì)象能進(jìn)一步在一原始旋轉(zhuǎn)方向中旋轉(zhuǎn)約180度。該旋轉(zhuǎn)方向選擇器1835根據(jù)從旋轉(zhuǎn)方向誤差檢測(cè)器1830輸入的一值來(lái)選擇從旋轉(zhuǎn)方向校正器1815輸入的旋轉(zhuǎn)差分值或從第一四元數(shù)乘法器1810輸入的旋轉(zhuǎn)差分值并將所選擇的值輸出到該量化器1840中。
參考圖18B,如圖18A所示的旋轉(zhuǎn)方向誤差計(jì)算器1820包括一延遲器1822,一第三四元數(shù)乘法器1824,一第四四元數(shù)乘法器1826,以及一第五四元數(shù)乘法器1828。該延遲器1822存儲(chǔ)一輸入旋轉(zhuǎn)變換值直到下一關(guān)鍵幀的一旋轉(zhuǎn)變換值被輸入為止。該第三四元數(shù)乘法器1824接收該輸入旋轉(zhuǎn)變換值以及從該延遲器1822輸出的一前關(guān)鍵幀的一旋轉(zhuǎn)變換值并通過(guò)四元數(shù)乘法計(jì)算該輸入旋轉(zhuǎn)變換值以及前關(guān)鍵幀的旋轉(zhuǎn)變換值間的一旋轉(zhuǎn)差分值。該第四四元數(shù)乘法器1826計(jì)算從延遲器1822輸出的前關(guān)鍵幀的旋轉(zhuǎn)變換值和該前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值間的一旋轉(zhuǎn)差分值。該第五四元數(shù)乘法器1828在輸入旋轉(zhuǎn)變換值與前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值間計(jì)算。
在下文中,參考圖19A來(lái)更詳細(xì)地描述根據(jù)本發(fā)明的第二實(shí)施例的一旋轉(zhuǎn)DPCM操作。
在步驟S19000中,打算被編碼的一定向內(nèi)插器節(jié)點(diǎn)的關(guān)鍵字值數(shù)據(jù)Qi被輸入到第一四元數(shù)乘法器1810以及該旋轉(zhuǎn)DPCM運(yùn)算符1800的旋轉(zhuǎn)方向誤差計(jì)算器1820中。
第一四元數(shù)乘法器1810,象根據(jù)本發(fā)明第一實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300中的第一四元數(shù)乘法器一樣,通過(guò)將一當(dāng)前關(guān)鍵幀的一輸入旋轉(zhuǎn)變換值四元數(shù)乘以從第二四元數(shù)乘法器1870輸入的一前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值
來(lái)生成一旋轉(zhuǎn)差分值
并在步驟S19100中將所生成的旋轉(zhuǎn)差分值
輸出到該旋轉(zhuǎn)方向校正器1815和旋轉(zhuǎn)方向選擇器1835中。
旋轉(zhuǎn)方向校正器1815按等式(29)校正輸入到其中的一旋轉(zhuǎn)差分值并將校正的旋轉(zhuǎn)差分值Qs輸出到校正方向選擇器1835中。旋轉(zhuǎn)方向誤差計(jì)算器1820接收當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值Qi以及從第二四元數(shù)乘法器1870中輸入的前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值
并計(jì)算旋轉(zhuǎn)變換值QA,QB以及QC,這將在以后描述。旋轉(zhuǎn)方向誤差檢測(cè)器1830利用從旋轉(zhuǎn)方向誤差計(jì)算器1820所輸入的旋轉(zhuǎn)差分值來(lái)檢測(cè)是否已經(jīng)發(fā)生一旋轉(zhuǎn)方向誤差并在步驟S19200中將檢測(cè)結(jié)果輸出到旋轉(zhuǎn)方向選擇器1835中。
在等式(29)中,δr表示非常接近0的一常數(shù),并且(qR,0,qR,1,qR,2,qR,3)T表示從第一四元數(shù)乘法器1810輸出的旋轉(zhuǎn)差分值
旋轉(zhuǎn)方向誤差計(jì)算器1820、旋轉(zhuǎn)方向誤差檢測(cè)器1830以及旋轉(zhuǎn)方向校正器1815將參考圖19B描述如下。
旋轉(zhuǎn)方向選擇器1835核對(duì)是否已經(jīng)發(fā)生一旋轉(zhuǎn)方向誤差以便當(dāng)使用從旋轉(zhuǎn)方向誤差檢測(cè)器1830輸入的一邏輯值來(lái)譯碼一編碼關(guān)鍵字值數(shù)據(jù)時(shí)該對(duì)象在相反方向中旋轉(zhuǎn)到一需要的方向。如果一旋轉(zhuǎn)方向誤差沒(méi)有發(fā)生,在步驟S19300中,旋轉(zhuǎn)方向選擇器1835將從第一四元數(shù)乘法器1810輸入的旋轉(zhuǎn)差分值輸出到量化器1840中。如果一旋轉(zhuǎn)方向誤差已經(jīng)發(fā)生,旋轉(zhuǎn)方向選擇器1835在步驟S19300中將從旋轉(zhuǎn)方向校正器1815輸入的校正旋轉(zhuǎn)并分值輸出。
量化器1840在步驟S19400和S19500中用與本發(fā)明的第一實(shí)施例中相同的量化方法量化原始旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
或校正的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)Qs。
量化器1840在步驟S19600中核對(duì)量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
是否屬于最后一個(gè)關(guān)鍵字值數(shù)據(jù)。如果量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
與最后一個(gè)關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng),量化器1840在步驟S19700中將量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
輸出到一循環(huán)DPCM運(yùn)算符1400中。如果量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
不與最后一個(gè)關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng),量化器1840將量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
輸出到逆量化器1850中。
逆量化器1850在步驟S19800中用與本發(fā)明的第一實(shí)施例相同的逆量化方法逆量化該量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
并將復(fù)原旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
輸出到第二四元數(shù)乘法器1870。
第二四元數(shù)乘法器1870通過(guò)將復(fù)原旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
四元數(shù)乘以一前關(guān)鍵幀的一旋轉(zhuǎn)變換值
生成一當(dāng)前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值
第二四元數(shù)乘法器1870在步驟S19900中經(jīng)延遲器1890將一當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值輸出到第一四元數(shù)乘法器1810和旋轉(zhuǎn)方向誤差計(jì)算器1820中。
在下文中,將參考圖19B來(lái)描述旋轉(zhuǎn)方向誤差計(jì)算器1820、旋轉(zhuǎn)方向誤差檢測(cè)器1830以及旋轉(zhuǎn)方向校正器1815的操作。
旋轉(zhuǎn)方向誤差計(jì)算器1820計(jì)算與區(qū)2至4相對(duì)應(yīng)的旋轉(zhuǎn)誤差值,這已經(jīng)參考圖17描述過(guò)。
旋轉(zhuǎn)方向誤差計(jì)算器1820接收與將被編碼的一關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng)的一旋轉(zhuǎn)變換值,接收在當(dāng)前關(guān)鍵幀前的一前關(guān)鍵幀的一復(fù)原旋轉(zhuǎn)變換值并在步驟S19220中計(jì)算一旋轉(zhuǎn)方向誤差。
與當(dāng)前關(guān)鍵幀的一定向內(nèi)插器的關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng)的旋轉(zhuǎn)變換值被直接輸入到第三四元數(shù)乘法器1824和第五四元數(shù)乘法器1828中并且當(dāng)一下一關(guān)鍵幀的一旋轉(zhuǎn)變換值被輸入時(shí)經(jīng)延遲器1822被輸入到第四四元數(shù)乘法器1826中。另外,從第二四元數(shù)乘法器1870輸出的復(fù)原旋轉(zhuǎn)變換值被輸入到第四四元數(shù)乘法器1826和第五四元數(shù)乘法器1828中。
第三四元數(shù)乘法器1824通過(guò)將當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值四元數(shù)乘以前關(guān)鍵幀的旋轉(zhuǎn)變換值生成旋轉(zhuǎn)差分值QA并將QA輸出到旋轉(zhuǎn)方向誤差檢測(cè)器1830中。旋轉(zhuǎn)差分值QA表示在一時(shí)間間隔[ti-1,ti]間一對(duì)象的一原始旋轉(zhuǎn)方向。
第四四元數(shù)乘法器1826通過(guò)將前關(guān)鍵幀的旋轉(zhuǎn)變換值四元數(shù)乘以前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值生成旋轉(zhuǎn)差分值QB并將QB輸出到旋轉(zhuǎn)方向誤差檢測(cè)器1830中。通過(guò)第四四元數(shù)乘法器1826計(jì)算的旋轉(zhuǎn)差分值QB表示由一量化誤差在一預(yù)定時(shí)間瞬間ti-1引起的一對(duì)象的旋轉(zhuǎn)方向誤差和旋轉(zhuǎn)方向并與如圖17所示的區(qū)2相對(duì)應(yīng)。
第五四元數(shù)乘法器1828通過(guò)將當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值四元數(shù)乘以前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值生成旋轉(zhuǎn)差分值QC并將QC輸出到旋轉(zhuǎn)方向誤差檢測(cè)器1830。由第五四元數(shù)乘法器1828計(jì)算的旋轉(zhuǎn)差分值QC表示在預(yù)定時(shí)間瞬間ti被編碼的一旋轉(zhuǎn)差分值且與如圖17所示的區(qū)4相對(duì)應(yīng)。
旋轉(zhuǎn)方向誤差檢測(cè)器1830在步驟S19240中使用從旋轉(zhuǎn)方向誤差計(jì)算器1820輸入的旋轉(zhuǎn)差分值QA、QB和QC來(lái)核對(duì)在譯碼編碼的關(guān)鍵字值數(shù)據(jù)的過(guò)程中該對(duì)象是否在與一原始方向相反的方向中旋轉(zhuǎn)。為完成該功能,旋轉(zhuǎn)方向誤差檢測(cè)器1830核對(duì)旋轉(zhuǎn)差分值QA、QB和QC是否滿足不等式(30)至(34)。首先,旋轉(zhuǎn)方向誤差檢測(cè)器1830核對(duì)旋轉(zhuǎn)差分值QA和QC是否滿足不等式(30)。
在不等式(30)中,當(dāng)從旋轉(zhuǎn)方向誤差計(jì)算器1820輸入的旋轉(zhuǎn)差分值QA由QA=(qA,0,qA,1,qA,2,qA,3)T時(shí),
表示QA的四個(gè)分量qA,0,qA,1,qA,2,qA,3除第一分量qA,0所組成的一三維矢理(qA,1,qA,2,qA,3)T。
表示由QC的四個(gè)分量qC,0,qC,1,qC,2,qC,3除第一分量qC,0外組成的一三維矢量(qC,1,qC,2,qC,3)T。不等式(30)表示兩個(gè)3D矢量(qA,1,qA,2,qA,3)T和(qC,1,qC,2,qC,3)T的一內(nèi)積小于0的一條件。
如果不等式(30)中的內(nèi)積小于0,一對(duì)象的旋轉(zhuǎn)方向當(dāng)使用QA時(shí)與當(dāng)使用QC時(shí)的旋轉(zhuǎn)方向相反。當(dāng)內(nèi)積小于0時(shí),在不等式(30)中所示的一邏輯表達(dá)式的一值被設(shè)置為“true”。當(dāng)內(nèi)積大于0時(shí),該邏輯表達(dá)式的值被設(shè)置為“false”。
在不等式(31)中,當(dāng)從旋轉(zhuǎn)方向誤差計(jì)算器1820輸入的旋轉(zhuǎn)差分值QB由QB=(qB,0,qB,1,qB,2,qB,3)T時(shí),
表示QB的四個(gè)分量qB,0,qB,1,qB,2,qB,3除第一分量qB,0組成的一三維矢理(qB,1,qB,2,qB,3)T。
表示由QC的四個(gè)分量qC,0,qC,1,qC,2,qC,3除第一分量qC,0外組成的一三維矢量(qC,1,qC,2,qC,3)T。不等式(31)表示兩個(gè)3D矢量(qB,1,qB,2,qB,3)T和(qC,1,qC,2,qC,3)T的一內(nèi)積小于0的一條件。
如果不等式(31)中的內(nèi)積小于0,一對(duì)象的旋轉(zhuǎn)方向當(dāng)使用QB時(shí)與當(dāng)使用QC時(shí)的旋轉(zhuǎn)方向相反。當(dāng)內(nèi)積小于0時(shí),在不等式(31)中所示的一邏輯表示達(dá)的一值被設(shè)置為“true”。當(dāng)內(nèi)積大于0時(shí),該邏輯表達(dá)式的值被設(shè)置為“false”。
ATH<2cos-1|qA,0| ...(32)
在不等式(32)中,qA,0表示旋轉(zhuǎn)差分值QA的第一分量,以及ATH被設(shè)置為接近0的一預(yù)定常數(shù)。當(dāng)在不等式(32)中,2cos-1|qA,0|大于ATH時(shí),在不等式(32)中所示的一邏輯表達(dá)式的一值被設(shè)定為“true”。當(dāng)2cos-1|qA,0|不大于ATH時(shí),邏輯表達(dá)式的值被設(shè)定為“false”。當(dāng)不等式(32)被設(shè)置為“false”時(shí),這表示當(dāng)根據(jù)本發(fā)明實(shí)現(xiàn)關(guān)鍵字值數(shù)據(jù)編碼器300時(shí)小于預(yù)定常數(shù)ATH的一旋轉(zhuǎn)角θ(=2cos-1|qA,0|)能被忽略。即使存在一旋轉(zhuǎn)方向誤差幾乎等于旋轉(zhuǎn)角θ,旋轉(zhuǎn)方向誤差不能導(dǎo)致對(duì)人眼來(lái)說(shuō)嚴(yán)重失真的圖像,特別是當(dāng)使用由本發(fā)明建議的一誤差測(cè)量方法。
ATH<2cos-1|qB,0| ...(33)
在不等式(33)中,qB,0表示旋轉(zhuǎn)差分值QB的第一分量,并且ATH是與不等式(32)中相應(yīng)的一個(gè)相同。當(dāng)在不等式(33)中,2cos-1|qB,0|大于ATH時(shí),在不等式(33)中所示的一邏輯表達(dá)式的一值被設(shè)定為“true”。當(dāng)2cos-1|qB,0|不大于ATH時(shí),該邏輯表達(dá)式的值被設(shè)定為“false”。
ATH<2cos-1|qC,0| ...(34)
在不等式(34)中,qC,0表示旋轉(zhuǎn)差分值QC的第一分量,以及ATH是與不等式(32)中相應(yīng)的一個(gè)相同。當(dāng)在不等式(34)中,2cos-1|qC,0|大于ATH時(shí),在不等式(34)中所示的一邏輯表達(dá)式的一值被設(shè)定為“true”。當(dāng)2cos-1|qC,0|不大于ATH時(shí),該邏輯表達(dá)式的值被設(shè)定為“false”。
旋轉(zhuǎn)方向誤差檢測(cè)器1830在不等式(30)至(34)的邏輯值上執(zhí)行一AND操作并將該AND操作的結(jié)果輸出到旋轉(zhuǎn)方向選擇器1835中。
在一預(yù)定時(shí)間瞬間t,該第一四元數(shù)乘法器1810具有兩個(gè)輸入值Qi和
第一四元數(shù)乘法器1810使用兩個(gè)輸入值Qi和
將一旋轉(zhuǎn)差分值輸出。如上所述,在區(qū)1中,接收旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的用于譯碼已編碼關(guān)鍵字值數(shù)據(jù)的裝置順時(shí)針旋轉(zhuǎn)一對(duì)象。然而,該對(duì)象必須從在按由Qi-1表示的預(yù)定度數(shù)旋轉(zhuǎn)后當(dāng)前所處的一位置旋轉(zhuǎn)到假定在按由Qi表示的預(yù)定度數(shù)旋轉(zhuǎn)后所處的一位置,從而該對(duì)象的原始旋轉(zhuǎn)方向必須是一逆時(shí)針?lè)较颉?br>
因此,旋轉(zhuǎn)方向校正器1815校正該對(duì)象的旋轉(zhuǎn)方向以便該對(duì)象能在基于
所旋轉(zhuǎn)的相同方向旋轉(zhuǎn)等于由
所表示的一旋轉(zhuǎn)角,如圖17所示,即,因此該對(duì)象能從基于
旋轉(zhuǎn)后的當(dāng)前所處的位置逆時(shí)針旋轉(zhuǎn)到假定按等于由
表示的一旋轉(zhuǎn)角旋轉(zhuǎn)后所處的位置。
為此,該旋轉(zhuǎn)方向校正器1815建立新的旋轉(zhuǎn)信息以使該對(duì)象按差不多1180度逆時(shí)針從在按
的預(yù)定角度旋轉(zhuǎn)后當(dāng)前所處的位置旋轉(zhuǎn)。因此,該對(duì)象的旋轉(zhuǎn)方向被校正成與最初方向相同,以及能最小化一旋轉(zhuǎn)方向誤差。該旋轉(zhuǎn)方向校正器1815在步驟S19260中接收來(lái)自該第一四元數(shù)乘法器1810的當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
生成具有一校正的旋轉(zhuǎn)方向的旋轉(zhuǎn)差分?jǐn)?shù)據(jù),并將該校正的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)輸出到旋轉(zhuǎn)方向選擇器1835中。
參考圖19A,在步驟S19300中,旋轉(zhuǎn)方向選擇器1835核對(duì)從旋轉(zhuǎn)方向誤差檢測(cè)器1830輸入的邏輯值是否為真。如果輸入的邏輯值為真,在步驟S19400中,該旋轉(zhuǎn)方向選擇器1835確定如圖17所示的區(qū)1發(fā)生的相同的現(xiàn)象已經(jīng)發(fā)生并將由等式(29)定義的校正的旋轉(zhuǎn)差分值Qs輸出到量化器1840中。
另一方面,如果輸入的邏輯值是假,在步驟S19500中,旋轉(zhuǎn)方向選擇器1835確定沒(méi)有發(fā)生在區(qū)1中發(fā)生的相同的現(xiàn)象并將從第一四元數(shù)乘法器1810輸入的旋轉(zhuǎn)差分值
輸出到量化器1840中。
在下文中,將描述一種根據(jù)本發(fā)明第三實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300。
由于根據(jù)本發(fā)明的第一和第二實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300僅編碼一旋轉(zhuǎn)差分值的四個(gè)分量中的三個(gè)分量,因?yàn)橐涣炕`差它們不能使用等式(24)來(lái)復(fù)原該四元數(shù)的一第一分量值,例如,一復(fù)原旋轉(zhuǎn)差分值的一第一分量可能是一虛數(shù)。
為防止由于僅編碼一四元數(shù)的三個(gè)分量所帶來(lái)的問(wèn)題,根據(jù)本發(fā)明第三實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300包括一量化器,其能適當(dāng)?shù)卣{(diào)節(jié)三個(gè)量化的分量值以便當(dāng)譯碼編碼的關(guān)鍵字值數(shù)據(jù)時(shí),另一分量能被復(fù)原成一正實(shí)數(shù)并減小圖像的矢真。
根據(jù)本發(fā)明第三實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300,除一量化器2000的結(jié)構(gòu)外,與根據(jù)本發(fā)明的第一或第二實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器相同,因此下面將僅描述該量化器2000的結(jié)構(gòu)。
圖20A是包含在根據(jù)本發(fā)明第三實(shí)施例的關(guān)鍵字值數(shù)據(jù)編碼器300中的一量化器2000的框圖。參考圖20A,一量化器2000包括一量化單元2010,一量化數(shù)據(jù)調(diào)節(jié)器2020,一逆量化器2030,以及一誤差測(cè)量單元2050。該量化單元2010量化輸入到其中的一旋轉(zhuǎn)差分值。該量化數(shù)據(jù)調(diào)節(jié)器2020逆調(diào)節(jié)一量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該逆量化器2030逆量化已量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該旋轉(zhuǎn)差分值復(fù)原器2040通過(guò)使用逆量化分量來(lái)復(fù)原量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的一第一分量來(lái)復(fù)原所有量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的分量值。該誤差測(cè)量單元2050測(cè)量一復(fù)原差分值與一原始輸入的旋轉(zhuǎn)差分值間的一誤差并更新量化的旋轉(zhuǎn)差分值。
圖20B是量化器2010的操作流程圖。參考圖20B,當(dāng)從第一四元數(shù)乘法器輸入一旋轉(zhuǎn)差分值
時(shí),在步驟S20050中,該量化器2010使用等式(23)量化輸入的旋轉(zhuǎn)差分值
并將量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
輸出到量化數(shù)據(jù)調(diào)節(jié)器2020中。
量化數(shù)據(jù)調(diào)節(jié)器2020在步驟S20100中用下面的等式(35)來(lái)調(diào)節(jié)量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
的三個(gè)分量。
i,j,k,和d是整數(shù)) …(35)在等式(35)中,i,j,k均是變量,其將能被添加到旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上以便調(diào)節(jié)旋轉(zhuǎn)差分?jǐn)?shù)據(jù),并被用于定義i,j,k的范圍。量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
的三個(gè)調(diào)節(jié)分量被輸出到逆量化器2030中。
在步驟S00200中,逆量化器2030逆量化調(diào)節(jié)量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)Iijk并將逆量化的旋轉(zhuǎn)差分值
(或逆量化的結(jié)果)輸出到旋轉(zhuǎn)差分值復(fù)原器2040中。
在步驟S20300中,接收逆量化的旋轉(zhuǎn)差分值
的三個(gè)分量的旋轉(zhuǎn)差分值復(fù)原器2040用等式(24)復(fù)原旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的一第一分量并將一復(fù)原旋轉(zhuǎn)差分值輸出到誤差測(cè)量單元2050中。
誤差測(cè)量單元2050核對(duì)輸入到其中的一旋轉(zhuǎn)差分值的一第一分量值。在步驟S20400中,如果該第一分量值是一實(shí)數(shù),則誤差測(cè)量單元2050執(zhí)行誤差測(cè)量。另一方面,如果該第一分量值是一虛數(shù),則該方法轉(zhuǎn)入步驟S20600。
當(dāng)該輸入旋轉(zhuǎn)差分值的第一分量是一實(shí)數(shù)時(shí),誤差測(cè)量單元2050在步驟S20450中測(cè)量在一原始旋轉(zhuǎn)差分值和一復(fù)原旋轉(zhuǎn)差分值間的一誤差eijk并在步驟S20500中核對(duì)eijk是否小于一調(diào)節(jié)誤差
下面將參考圖27來(lái)描述測(cè)量原始旋轉(zhuǎn)差分值與復(fù)原旋轉(zhuǎn)差分值間的eijk的方法。
如果測(cè)量誤差eijk小于調(diào)節(jié)誤差
在步驟S20550中eijk替換
然后在步驟S0060中核對(duì)變量i,j以及k是否屬于一調(diào)節(jié)范圍[-d,+d]。如果變量i,j以及k屬于調(diào)節(jié)范圍[-d,+d],則誤差測(cè)量單元2040重復(fù)執(zhí)行步驟S20100至S20550在步驟S20100中,在步驟S20100至S20550的每個(gè)循環(huán)間,在一嵌套的循環(huán)方式中,將量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的二至4個(gè)分量加1。
例如,一量化的數(shù)據(jù)調(diào)節(jié)器2020保持第二和第三分量,試圖通過(guò)增加k值到第四分量值上,同時(shí)在k值超過(guò)+d之前通過(guò)連續(xù)將k值加1來(lái)逐步增加k值使復(fù)原第一分量成為一實(shí)數(shù),然后找出第四個(gè)調(diào)節(jié)分量值,這能最小化一輸入旋轉(zhuǎn)差分值與一復(fù)原旋轉(zhuǎn)差分值間的一誤差。
如果k值到達(dá)+d,該量化數(shù)據(jù)調(diào)節(jié)器2020試圖通過(guò)用-d來(lái)初始化k值并將一j值加到第三分量值上同時(shí)通過(guò)將j(-d≤j≤+d)值加1來(lái)增加j值并將一k值加到第四分量值上同時(shí)在k值超過(guò)+d前通過(guò)連續(xù)地將k(-d≤k≤+d)值加1來(lái)逐步地增加k值來(lái)使該復(fù)原第一分量變成一實(shí)數(shù)值,然后找到第四調(diào)節(jié)分量值,這能減少一輸入的旋轉(zhuǎn)差分值與一復(fù)原旋轉(zhuǎn)差分值間的一誤差。
如果j值到達(dá)+d,該量化數(shù)據(jù)調(diào)節(jié)器2020試圖通過(guò)用-d來(lái)初始化j和k值并將一i值加到第二分量值上同時(shí)通過(guò)將i(-d≤i≤+d)值加1來(lái)增加i值并將一j值加到第三分量值和將一k值加到第四分量上同時(shí)在k值超過(guò)+d前通過(guò)連續(xù)地將k(-d≤k≤+d)值加1來(lái)逐步地增加k值來(lái)使該復(fù)原第一分量變成一實(shí)數(shù)值,然后找到第四調(diào)節(jié)分量值,這能減少一輸入的旋轉(zhuǎn)差分值與一復(fù)原旋轉(zhuǎn)差分值間的一誤差。
重復(fù)上述處理直到i,j,k達(dá)到+d為止然后找出能減少一輸入的旋轉(zhuǎn)差分值與一復(fù)原旋轉(zhuǎn)差分值間的一誤差的四個(gè)調(diào)節(jié)分量值。
誤差測(cè)量單元2050在步驟S20700中核對(duì)調(diào)節(jié)誤差
是否小于一最終誤差
同時(shí)改變第二至第四分量值。如果
小于
代替
同時(shí)在步驟S20750中用下面的等式(36)來(lái)校正量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
此后,誤差測(cè)量單元2050將校正的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)輸出到量化的數(shù)據(jù)調(diào)節(jié)器2020中。
量化的數(shù)據(jù)調(diào)節(jié)器2020將變量i,j,k值設(shè)置為-d并在輸入到其中的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上再次執(zhí)行步驟S20100至S20600。然后,量化數(shù)據(jù)調(diào)節(jié)器2020用輸入旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)核對(duì)是否存在一具有比在前存儲(chǔ)的最終誤差更小的誤差的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
如果調(diào)節(jié)誤差
大于最終誤差
誤差測(cè)量單元2050在步驟S20800中將與當(dāng)前存儲(chǔ)的最終端誤差
相對(duì)應(yīng)的量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)輸出到一循環(huán)DPCM運(yùn)算符中。
在下文中,將參考圖21A至25來(lái)更全面地描述一種根據(jù)本發(fā)明一優(yōu)選實(shí)施例對(duì)一位流進(jìn)行譯碼的裝置和方法,將一定向內(nèi)插器進(jìn)行譯碼成上述位流。
圖21A是根據(jù)本發(fā)明一優(yōu)選實(shí)施例的用于譯碼一定向內(nèi)插器的裝置的框圖,以及圖21B根據(jù)本發(fā)明一優(yōu)選實(shí)施例給出了一種用于編碼一定向內(nèi)插器的方法流程圖。
參考圖21A,用于譯碼一定向內(nèi)插器的裝置包括一關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120,一關(guān)鍵字值數(shù)據(jù)譯碼器2150,一標(biāo)題譯碼器2110,以及一定向內(nèi)插器合成器2180。該關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120譯碼來(lái)自一輸入位流的關(guān)鍵字?jǐn)?shù)據(jù)。該關(guān)鍵字值數(shù)據(jù)譯碼器2150譯碼來(lái)自該輸入位流的關(guān)鍵字值數(shù)據(jù)。該標(biāo)題譯碼器2110譯碼來(lái)自該輸入位流的標(biāo)題信息并將該譯碼標(biāo)題信息輸出到關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120和關(guān)鍵字值數(shù)據(jù)譯碼器2150。該一定向內(nèi)插器合成器2180合成譯碼關(guān)鍵字?jǐn)?shù)據(jù)和譯碼關(guān)鍵字值數(shù)據(jù)并輸出一譯碼定向內(nèi)插器。
參考圖21B,由用于編碼如圖3所示的一定位內(nèi)插器的裝置所編碼的一位流在步驟S21000中被輸入到關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120、關(guān)鍵字值數(shù)據(jù)譯碼器2150以及標(biāo)題譯碼器2110中。
在步驟S21100中,標(biāo)題譯碼器2110譯碼來(lái)自該輸入位流的標(biāo)題信息并將譯碼標(biāo)題信息提供給關(guān)鍵字?jǐn)?shù)據(jù)譯碼器、關(guān)鍵字值數(shù)據(jù)譯碼器2150以及定向內(nèi)插器合成器2180中。
關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120熵譯碼來(lái)自輸入位流的關(guān)鍵字?jǐn)?shù)據(jù),通過(guò)執(zhí)行一預(yù)定逆DND操作、一逆折疊操作以及一逆移位操作來(lái)生成譯碼關(guān)鍵字?jǐn)?shù)據(jù)以及將譯碼關(guān)鍵字?jǐn)?shù)據(jù)輸出到定向內(nèi)插器合成器2180中。關(guān)鍵字值數(shù)據(jù)譯碼器2150熵譯碼來(lái)自輸入位流的關(guān)鍵字值數(shù)據(jù),生成一旋轉(zhuǎn)差分值,該旋轉(zhuǎn)差分值用來(lái)通過(guò)幾乎等于旋轉(zhuǎn)變換間的一差值來(lái)旋轉(zhuǎn)一對(duì)象,通過(guò)逆量化譯碼旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的每個(gè)關(guān)鍵幀的四元數(shù)關(guān)鍵字值數(shù)據(jù)將該旋轉(zhuǎn)變換應(yīng)用到該對(duì)象,通過(guò)將一當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)差分值四元數(shù)乘以一前關(guān)鍵幀的一旋轉(zhuǎn)變換值來(lái)復(fù)原該當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值并在步驟S21200中將該當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值輸出到該定向內(nèi)插器合成器2180。
定向內(nèi)插器合成器2180通過(guò)將輸入到其中的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)用一浮點(diǎn)生成模式和從標(biāo)題譯碼器2110輸入的一關(guān)鍵字選擇特征位來(lái)復(fù)原一定向內(nèi)插器,并在步驟S21400中將復(fù)原的定向內(nèi)插器輸出。
在下文中,將參考圖22至23B來(lái)描述根據(jù)本發(fā)明一優(yōu)選實(shí)施例的一關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120以及根據(jù)本發(fā)明一優(yōu)選實(shí)施例的一種譯碼關(guān)鍵字?jǐn)?shù)據(jù)的方法。
圖22是關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120的一框圖。關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120接收一編碼位流以及通過(guò)譯碼將其重建成關(guān)鍵字?jǐn)?shù)據(jù)。
關(guān)鍵字?jǐn)?shù)據(jù)譯碼器2120包括一熵譯碼器2260、一逆DND處理器2250、一逆折疊處理器2240、一逆移位器2230、一逆DPCM處理器2220、一逆量化器2210、一線性關(guān)鍵字譯碼器2200、以及一浮點(diǎn)數(shù)逆轉(zhuǎn)換器2205。
圖23A是根據(jù)本發(fā)明一優(yōu)選實(shí)施例的一種用于譯碼關(guān)鍵字?jǐn)?shù)據(jù)的方法流程圖。參考圖22和23A,將關(guān)鍵字?jǐn)?shù)據(jù)壓縮成其的一位流被輸入到標(biāo)題譯碼器2110以及熵譯碼器2260中。
在步驟S23000中,標(biāo)題譯碼器2110譯碼用于譯碼所需的每個(gè)步驟的信息片并將它們提供給譯碼它們的相應(yīng)步驟。用每個(gè)譯碼步驟來(lái)描述由標(biāo)題譯碼器2110譯碼的信息。
熵譯碼器2260從標(biāo)題譯碼器2110接收將被譯碼的差分?jǐn)?shù)據(jù)的數(shù)量以及已經(jīng)用于編碼的位的數(shù)量即將被用于譯碼的的位的數(shù)量,以及在步驟S23100中譯碼輸入位流。差分?jǐn)?shù)據(jù)的數(shù)量等于從關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量減去通過(guò)執(zhí)行DPCM獲得的內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量的結(jié)果。
熵譯碼器2260識(shí)別基于包括在該位流中的預(yù)定信息,如在本實(shí)施例中的bSignedAACFlag來(lái)識(shí)別將被譯碼的差分?jǐn)?shù)據(jù)是否具有負(fù)值或正值。如果編碼的差分?jǐn)?shù)據(jù)具有負(fù)值,熵譯碼器2260使用函數(shù)decodeSignedAAC()來(lái)譯碼它們。另一方面,如果編碼差分?jǐn)?shù)據(jù)僅具有正值,熵譯碼器2260使用函數(shù)decodeUnsignedAAC()來(lái)譯碼它們。然后,將譯碼差分?jǐn)?shù)據(jù)傳送到逆DND處理器2250。
逆DND處理器2250從標(biāo)題譯碼器2110接收在每個(gè)DND周期中的DND的次數(shù)以及一最大值nKeyMax。
如果DND的次數(shù)為-1,這表示正被譯碼的編碼差分?jǐn)?shù)據(jù)已經(jīng)經(jīng)過(guò)一DPCM操作以及一移位操作而不是經(jīng)過(guò)DND被熵譯碼,以及該方法直接進(jìn)入到執(zhí)行一逆移位操作的步驟上。如果DND的次數(shù)為0,這表示正被譯碼的編碼差分?jǐn)?shù)據(jù)已經(jīng)經(jīng)過(guò)一折疊操作而不是經(jīng)過(guò)DND被熵譯碼,因此該方法直接進(jìn)入到執(zhí)行一逆折疊操作的步驟上。如果DND次數(shù)大于0,在步驟S23200中執(zhí)行一逆DND操作。
逆DND處理器2250在步驟S23300中確定正被譯碼的編碼差分?jǐn)?shù)據(jù)是否已經(jīng)經(jīng)過(guò)一上移操作被編碼。在本發(fā)明的一優(yōu)選實(shí)施例中,通過(guò)核對(duì)包括在一位流中的nKeyInvertDown是否大于0來(lái)確定正被譯碼的編碼差分?jǐn)?shù)據(jù)經(jīng)過(guò)一上移操作被編碼。
如果正被譯碼的編碼差分?jǐn)?shù)據(jù)沒(méi)有經(jīng)過(guò)一上移操作,該方法進(jìn)入到執(zhí)行一逆DND的步驟上。另一方面,如果正被譯碼的編碼差分?jǐn)?shù)據(jù)已經(jīng)經(jīng)過(guò)一上移操作,通過(guò)執(zhí)行一上移操作已經(jīng)從一正數(shù)區(qū)域轉(zhuǎn)移到一負(fù)數(shù)區(qū)域的差分?jǐn)?shù)據(jù)在步驟S23400中被移回到負(fù)數(shù)區(qū)域。在本發(fā)明一優(yōu)選實(shí)施例中,已經(jīng)經(jīng)過(guò)一上移操作的差分?jǐn)?shù)據(jù)通過(guò)執(zhí)行用下面的等式來(lái)表示的一下移操作(一反轉(zhuǎn)操作)被復(fù)原。
invert-down(v) …(37)
=v (v≤nKeyInvertDown)
=nKeyInvertDown-v (v>nKeyInvertDown)
在這里,nKeyInvertDown與用在上移操作中的最大值nKeyMax具有相同值。作為下移操作的結(jié)果,具有超過(guò)nKeyInvertDown的一值的差分?jǐn)?shù)據(jù)被轉(zhuǎn)換成低于-1的負(fù)值。
根據(jù)在每個(gè)DND周期中的最大值nKeyMax在經(jīng)過(guò)下移操作的差分?jǐn)?shù)據(jù)上有選擇地執(zhí)行一逆下劃操作或一逆上劃操作。
參考圖23B,逆DND處理器2250執(zhí)行與該差分?jǐn)?shù)據(jù)在編碼期間經(jīng)過(guò)的一DND操作一樣的多次逆DND操作。換句話說(shuō),逆DND處理器2250設(shè)置等于DND的次數(shù)的逆DND的次數(shù)的一初始值。接著,當(dāng)逆DND處理器2250每次執(zhí)行一逆DND操作時(shí),從逆DND次數(shù)的初值值減1并繼續(xù)執(zhí)行逆DND操作直到逆DND的次數(shù)變?yōu)?為止。逆DND處理器2250在每個(gè)DND周期中查找nKeyMax以及在步驟S23510中核對(duì)每個(gè)nKeyMax是否小于0。
如果nKeyMax小于0,它表示在編碼過(guò)程中已經(jīng)執(zhí)行一上劃操作,因此,在步驟S23530中,通過(guò)執(zhí)行一逆上劃操作,逆DND處理器2250將正被編碼的差分?jǐn)?shù)據(jù)的范圍擴(kuò)展到一負(fù)數(shù)區(qū)域。在本發(fā)明的一優(yōu)選實(shí)施例中,可使用由下述等式(38)定義的一逆上劃操作。
inverse-divide-up(v) …(38)
=v (v≥0)
然而,如果nKeyMax不小于0,逆DND處理器2250核對(duì)逆DND的次數(shù)是否為1。如果逆DND的次數(shù)不為1,它表示對(duì)編碼過(guò)程中所譯碼的差分?jǐn)?shù)據(jù)執(zhí)行一下劃操作,因此逆DND處理器2250通過(guò)執(zhí)行一逆下劃操作將差分?jǐn)?shù)據(jù)的范圍擴(kuò)展到一正數(shù)區(qū)域。
在本發(fā)明的一優(yōu)選實(shí)施例中,可使用由下述等式定義的一逆下劃操作。
inverse-divide-down(v) …(39)
=v (if v≥0)
如果nKeyMax不小于0且逆DND的次數(shù)為1,在步驟S23590中,逆DND處理器2250在執(zhí)行一逆分割操作后結(jié)束整個(gè)逆DND操作。在本發(fā)明的一優(yōu)選實(shí)施例中,可使用由下述等式(40)定義的一逆分割操作。
inverse-divide(v)…(40)
=v (v≥0)
=v+(nKeyMax0+1) (v<0)
已經(jīng)經(jīng)過(guò)逆DND操作的關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù)被輸入到逆折疊處理器2240中,以及逆折疊處理器2240在該差分?jǐn)?shù)據(jù)上執(zhí)行一逆折疊操作以便過(guò)去僅在一正數(shù)區(qū)域中的差分?jǐn)?shù)據(jù)在步驟S23600中被劃分成正值和負(fù)值。在本發(fā)明的一優(yōu)選實(shí)施例中,可使用由等式(41)定義的一逆折疊操作。
已經(jīng)經(jīng)過(guò)逆折疊操作的差分?jǐn)?shù)據(jù)被輸出到逆移位器2230,以及在步驟S23700中,逆移位器2230將用在編碼過(guò)程中并從標(biāo)題譯碼器2110輸入的一模式nKeyShift添加到從逆折疊處理器2240輸入的差分?jǐn)?shù)據(jù)上。該操作由下述等式來(lái)表示。
inverse-shift(v)=v+nKeyshift …(42)
逆DPCM處理器在步驟S23800中使用從標(biāo)題編碼器2110輸入的DPCM的次數(shù)將從逆移位器2230輸入的差分?jǐn)?shù)據(jù)復(fù)原成量化關(guān)鍵字?jǐn)?shù)據(jù)。逆移位器2230用下述等式(43)執(zhí)行與DPCM的次數(shù)同樣多次數(shù)的一逆DPCM操作。
v(i+1)=v(i)+delta(i) …(43)
在這里,i表示差分?jǐn)?shù)據(jù)和關(guān)鍵字?jǐn)?shù)據(jù)的一指數(shù),v表示一整數(shù)數(shù)組,以及delta(i)表示差分?jǐn)?shù)據(jù)。
已經(jīng)經(jīng)過(guò)逆DPCM操作的量化關(guān)鍵字?jǐn)?shù)據(jù)被輸入到逆量化器2210中。然后,逆量化器2210從標(biāo)題譯碼器2110接收有關(guān)量化位的大小nKeyQbit以及用于逆量化的最大和最小值是否已經(jīng)被浮點(diǎn)數(shù)轉(zhuǎn)換器905編碼的信息并在步驟S23900k使用下述等式將量化關(guān)鍵字?jǐn)?shù)據(jù)轉(zhuǎn)換成逆量化關(guān)鍵字?jǐn)?shù)據(jù)。
如果在編碼關(guān)鍵字?jǐn)?shù)據(jù)的過(guò)程中,用于量化的最大和最小值沒(méi)有被浮點(diǎn)數(shù)轉(zhuǎn)換器905轉(zhuǎn)換,將在等式(44)中所示的fKeyMin和fKeyMax分別設(shè)置為0和1。然而,如果浮點(diǎn)數(shù)轉(zhuǎn)換器905已經(jīng)轉(zhuǎn)換用于量化的最大和最小值,被浮點(diǎn)數(shù)逆轉(zhuǎn)換器2205逆轉(zhuǎn)換的最大和最小值被分別用作用于逆量化的最大和最小值。
下面將描述實(shí)現(xiàn)逆量化逆DND操作的程序代碼的例子。
從逆量化器2210輸出的譯碼關(guān)鍵字?jǐn)?shù)據(jù)被添加到在線性關(guān)鍵字譯碼器2200中譯碼的關(guān)鍵字?jǐn)?shù)據(jù)中,從而構(gòu)成譯碼關(guān)鍵字?jǐn)?shù)據(jù)。
在下文中,下面將描述一線性關(guān)鍵字譯碼過(guò)程。
標(biāo)題譯碼器2110譯碼來(lái)自一位流的關(guān)鍵字標(biāo)題信息。如果有關(guān)一線性關(guān)鍵字?jǐn)?shù)據(jù)的信息存在于該位流中,標(biāo)題譯碼器2110將要求用于譯碼該線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的開(kāi)始和結(jié)尾關(guān)鍵字輸出到浮點(diǎn)數(shù)逆轉(zhuǎn)換器2205中并將被編碼為線性關(guān)鍵字的關(guān)鍵字的數(shù)量輸出到線性關(guān)鍵字譯碼器2200中。
浮點(diǎn)數(shù)逆轉(zhuǎn)換器2205將用十進(jìn)制數(shù)表示的線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的開(kāi)始和結(jié)尾關(guān)鍵字逆轉(zhuǎn)換成二進(jìn)制數(shù)并將該二進(jìn)制數(shù)輸出到線性關(guān)鍵字譯碼器2200中。
假定將被譯碼的兩個(gè)浮點(diǎn)數(shù)被稱為fKeyMin和fKeyMax,譯碼fKeyMin的過(guò)程如下。
標(biāo)題譯碼器2110從一位流讀取fKeyMin的位數(shù)。如果fKeyMin的位數(shù)為0,則fKeyMin被設(shè)置為0,以及從該位流讀取fKeyMax的位數(shù)以便譯碼fKeyMax。如果fKeyMax的位數(shù)不小于8,這表示fKeyMax已經(jīng)用IEEE標(biāo)準(zhǔn)754編碼過(guò)。因此,浮點(diǎn)數(shù)fKeyMax在讀取其32位后被編碼。
然而,如果fKeyMax的位數(shù)在1和7之間,標(biāo)題譯碼器2110從該位流讀取一特征位。在本發(fā)明的一優(yōu)選實(shí)施例中,如果特征位為1,MinKeyMantissaSign被設(shè)置為-1。另一方面,如果特征位為0,MinKeyMantissaSign被設(shè)置為1。此后,參考表1獲得要求用于編碼的位的數(shù)量,該表示出了一尾數(shù)的位數(shù)與編碼所需的位的數(shù)量間的關(guān)系。接著,讀取與編碼所需的位的數(shù)量一樣多的該位流的數(shù)量并存儲(chǔ)在MinKeyMantissa。然后讀取該位流的下一位被用與存儲(chǔ)在MinKeyMantissa中的尾數(shù)的特征位的相同的方式來(lái)存儲(chǔ)在MinKeyExponentSign中。與一指數(shù)值相對(duì)應(yīng)的該位流的接下來(lái)六位被讀取并存儲(chǔ)在MinKeyExponent中。
通過(guò)將從標(biāo)題譯碼器2110輸入的值代入等式(45)中來(lái)復(fù)原fKeyMin。
復(fù)原fKeyMax的過(guò)程與復(fù)原fKeyMin的過(guò)程相同。具體來(lái)說(shuō),在從該位流讀取fKeyMax的指數(shù)前,確定與fKeyMin的指數(shù)相同的值是否被用作fKeyMax的指數(shù)。如果與fKeyMin的指數(shù)相同的值不被用作fKeyMax的指數(shù),與從該位流讀取fKeyMin的指數(shù)相同的方式從該位流讀取fKeyMax的指數(shù)。
線性關(guān)鍵字譯碼器2200從浮點(diǎn)數(shù)逆轉(zhuǎn)換器2205接收線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的開(kāi)始和結(jié)尾關(guān)鍵字并用下述等式(46)譯碼線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域。
(i=0,…nNumberOfLinearKey-1)
在這里,fKeyMin和fKeyMax分別表示該線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域的開(kāi)始和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù)。
在線性關(guān)鍵字?jǐn)?shù)據(jù)區(qū)域中利用上述方法所譯碼的關(guān)鍵字?jǐn)?shù)據(jù)被添加到從逆量化器2210輸出的關(guān)鍵字?jǐn)?shù)據(jù)中,然后將添加結(jié)果輸出作為最終關(guān)鍵字?jǐn)?shù)據(jù)。
在下文中,將參考圖24A至25來(lái)描述根據(jù)本發(fā)明一優(yōu)選實(shí)施例的用于譯碼一定向內(nèi)插器的裝置以及根據(jù)本發(fā)明一優(yōu)選實(shí)施例的用于編碼關(guān)鍵字值數(shù)據(jù)的方法。
圖24A是根據(jù)本發(fā)明一優(yōu)選實(shí)施例的一種用于譯碼一定向內(nèi)插器的裝置的框圖。參考圖24A,用于譯碼一定向內(nèi)插器的裝置包括一標(biāo)題譯碼器2110,一熵譯碼器2410,一逆循環(huán)DPCM運(yùn)算符2420,一逆量化器2430,以及一四元數(shù)乘法器2440。該標(biāo)題譯碼器2110對(duì)為譯碼由來(lái)自一輸入位流的一四元數(shù)所表示的關(guān)鍵字值數(shù)據(jù)所需的標(biāo)題信息進(jìn)行譯碼并將該譯碼的標(biāo)題信息提供給一關(guān)鍵字值數(shù)據(jù)譯碼器2150。該熵譯碼器2410通過(guò)熵譯碼來(lái)自該輸入位流的熵編碼關(guān)鍵字值數(shù)據(jù)來(lái)生成一循環(huán)的DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù)或量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該逆循環(huán)DPCM運(yùn)算符2420通過(guò)在輸入到其中的循環(huán)DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上執(zhí)行一逆循環(huán)DPCM操作來(lái)生成量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。該逆量化器2430通過(guò)逆量化已量化的旋轉(zhuǎn)以及差分?jǐn)?shù)據(jù)來(lái)生成一旋轉(zhuǎn)差分值。該一四元數(shù)乘法器2440通過(guò)將當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)差分值四元數(shù)乘以一前關(guān)鍵幀的一旋轉(zhuǎn)變換值來(lái)生成一當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值。
圖24B是根據(jù)本發(fā)明一優(yōu)選實(shí)施例的用于譯碼關(guān)鍵字值數(shù)據(jù)的方法流程圖。參考圖24B,一位流被輸入到標(biāo)題譯碼器2110以及關(guān)鍵字值數(shù)據(jù)譯碼器2150的熵譯碼器2140中,利用根據(jù)本發(fā)明的用于編碼一定向內(nèi)插器的裝置將關(guān)鍵字值數(shù)據(jù)編碼成上述位流。
在步驟S24100中,標(biāo)題譯碼器2110譯碼用于譯碼來(lái)自該輸入位流的關(guān)鍵字值數(shù)據(jù)所要求的標(biāo)題信息并將該譯碼的標(biāo)題信息提供給關(guān)鍵字值數(shù)據(jù)譯碼器2150中。
在標(biāo)題信息中,對(duì)基于DPCM次數(shù)的已被量化成四元數(shù)中的第一和第二內(nèi)部關(guān)鍵字值數(shù)據(jù)以及多個(gè)用來(lái)譯碼其它關(guān)鍵字值數(shù)據(jù)的特征位進(jìn)行編碼。
如果DPCM的次數(shù)為1(例如,如果多個(gè)特征位之一的nKVDPCMOrder被設(shè)置為0),將第一量化的關(guān)鍵字值數(shù)據(jù)包括在標(biāo)題信息中作為內(nèi)部關(guān)鍵字值數(shù)據(jù)。如果第一逆量化的關(guān)鍵字值數(shù)據(jù)的一四元數(shù)值滿足第一逆量化關(guān)鍵字值數(shù)據(jù)用下述等式(48)來(lái)計(jì)算。
在等式(48)中,僅當(dāng)類OrilDPCMKeyValueHeader中的nFirstXSign為1或在其它條件下為-1時(shí),xSign為1。Ysign和zSign分別與nFirstYSign和nFirstZSign具有如xSign與nFirstXSign間的關(guān)系相同的關(guān)系。
由等式(48)定義的復(fù)原四元數(shù)分量值被轉(zhuǎn)換成將被用作一定向內(nèi)插器的一角位移。從關(guān)鍵字值數(shù)據(jù)復(fù)原每個(gè)角位移能用一四維矢量表示,其中i表示當(dāng)前關(guān)鍵字?jǐn)?shù)據(jù),
表示一旋轉(zhuǎn)軸的矢量,以及
表示一逆時(shí)針旋轉(zhuǎn)角。因此,復(fù)原四元數(shù)分量值用下面的等式(49)被轉(zhuǎn)換成角位移。
如果DPCM的次數(shù)為2,例如,如果nKVDPCMOrder被設(shè)置為1,第一和第二量化的關(guān)鍵字值數(shù)據(jù)被包括在標(biāo)題信息中。用與上面描述的相同的方式復(fù)原第一量化的關(guān)鍵字值數(shù)據(jù)。然后,用一種不同的方法復(fù)原第二關(guān)鍵字值數(shù)據(jù)。換句話說(shuō),僅將第二量化關(guān)鍵字值數(shù)據(jù)的第三分量與一編碼的位流一起被傳送以及它們的值不是內(nèi)部關(guān)鍵字值數(shù)據(jù)而是具有第一關(guān)鍵字值數(shù)據(jù)的不同的數(shù)據(jù)假定表示逆量化的關(guān)鍵字值數(shù)據(jù)的第二關(guān)鍵字值數(shù)據(jù)的一四元數(shù)滿足
用下面的等式(50)來(lái)計(jì)算。
在等式(50)中,僅當(dāng)類OrilDPCMKeyValueHeader中的nSecondXSign為1或在其它條件下為-1時(shí),secondXSign為1。secondYsign和secondZSign分別與nSecondYSign和nSecondZSign具有如xSign與nSecondXSign間的關(guān)系相同的關(guān)系。如果表示第二逆量化的關(guān)鍵字值數(shù)據(jù)的一四元數(shù)
滿足
是通過(guò)
乘以
計(jì)算得出的。換句話說(shuō),
標(biāo)題譯碼器2110將譯碼的關(guān)鍵字值數(shù)據(jù)和譯碼的標(biāo)題信息輸出給關(guān)鍵字值譯碼器2150。
熵譯碼器2410接收一位流并利用在步驟S24120至S24128中由標(biāo)題譯碼器2110所編碼的譯碼信息對(duì)輸入的位流進(jìn)行熵編碼,其中關(guān)鍵字值數(shù)據(jù)的差分?jǐn)?shù)據(jù)被編碼成上述位流。
圖25是描述輸入到熵譯碼器2140中的一位流的結(jié)構(gòu)圖。在圖25中,假定N(nNumberOfKeyValue)表示編碼的關(guān)鍵字值數(shù)據(jù)的數(shù)量,當(dāng)DPCM的次數(shù)為0時(shí),包括在一位流中的每個(gè)分量的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的數(shù)量為N-1(0,1,...,nNumberOfKeyValue-2)。當(dāng)DPCM的次數(shù)為1時(shí),包括在位流中的每個(gè)分量的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的數(shù)量為N-2(0,1,...,nNumberOfKeyValue-3)。
熵譯碼器2410接收來(lái)自標(biāo)題譯碼器2110的x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag并在步驟S24120中核對(duì)x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag每個(gè)是否被設(shè)定為1。
在步驟S24l22中,當(dāng)x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag每個(gè)均被設(shè)定為0時(shí),被認(rèn)為所有量化的關(guān)鍵字值數(shù)據(jù)或每個(gè)分量的所有差分?jǐn)?shù)據(jù)同在類OrilKeyValueCodingBit中的nAllKeyValues相同。因此,熵譯碼器2410將每個(gè)分量的關(guān)鍵字值數(shù)據(jù)譯碼成與從標(biāo)題譯碼器2110輸入的nAllKeyValues的相同值并將譯碼的關(guān)鍵字值數(shù)據(jù)輸出到逆循環(huán)DPCM運(yùn)算符2420中。
如果x_keyvalue_fiag、y_keyvalue_flag以及z_keyvalue_flag不是設(shè)定為0,例如,如果x_keyvalue_flag、y_keyvalue_flag以及z_keyvalue_flag被設(shè)定為1,熵譯碼器2410核對(duì)從關(guān)鍵字值標(biāo)題譯碼器2110輸入的一熵譯碼模式以便在步驟S24124中譯碼輸入的關(guān)鍵字值數(shù)據(jù)的每個(gè)分量
當(dāng)熵譯碼模式是一二進(jìn)制譯碼模式時(shí),在步驟S24126中,熵譯碼器2420使用如表3所示的一函數(shù)decodeSignedAAC()譯碼一自適應(yīng)的算術(shù)上的編碼的位流并將量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)輸出到逆循環(huán)DPCM運(yùn)算符2420中。
表3
另一方面,當(dāng)熵譯碼模式不是一二進(jìn)制譯碼模式時(shí),在步驟S24128中,熵譯碼器2410使用一函數(shù)decodeUnaryAAC()譯碼輸入位流。函數(shù)decodeUnaryAAC()通過(guò)連續(xù)地讀取0直到從該位流中讀出1為止、將連續(xù)Os的數(shù)量轉(zhuǎn)換成它的絕對(duì)值,讀取與位“1”鄰近的一位,并將該位轉(zhuǎn)換成一特征位來(lái)譯碼該輸入位流,然后將量化的旋轉(zhuǎn)差分值輸出到逆循環(huán)DPCM運(yùn)算符2420中。函數(shù)decodeUnaryAAC()的例子如表4所示。
表4
在上述函數(shù)decodeSignedAAC()和decodeUnaryAAC()中所采用的qf_decode()被用來(lái)從一自適應(yīng)的算術(shù)上的編碼的位流中讀取位1并且由國(guó)際標(biāo)準(zhǔn)組織授權(quán)的文獻(xiàn)ISO/IEC14496-21999Coding of Audio-VisualObjectVisual定義。
逆循環(huán)DPCM運(yùn)算符2420從熵譯碼器2410接收熵譯碼的關(guān)鍵字值數(shù)據(jù)并核對(duì)從關(guān)鍵字值標(biāo)題譯碼器2110輸入的DPCM的次數(shù)。如果DPCM的次數(shù)為0,在步驟S24130中,逆循環(huán)DPCM運(yùn)算符2420將譯碼的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
輸出到逆量化器2430中,因?yàn)閺撵刈g碼器2410輸入的熵譯碼的關(guān)鍵字值數(shù)據(jù)是量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
另一方面,如果DPCM的次數(shù)為1,逆循環(huán)DPCM運(yùn)算符2420在步驟S24135執(zhí)行一逆循環(huán)DPCM操作,因?yàn)閺撵刈g碼器2410輸入的熵譯碼關(guān)鍵字值數(shù)據(jù)是循環(huán)的DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
假定nKVQBit表示逆量化位,逆循環(huán)DPCM運(yùn)算符2420在旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
上用等式(51)執(zhí)行一逆循環(huán)DPCM操作并在步驟S24135中生成量化的循環(huán)差分?jǐn)?shù)據(jù)
(i=2,…nNumberOfKeyValue-1)
此后,逆循環(huán)DPCM運(yùn)算符2420分別使用
和
獲得一逆DPCM值A(chǔ)以及一逆DPCM值B,如等式(52)所示。
(i=2,…,nNumberOfKeyValue-1)
如果B+(2nKVQBit-1-1)位于0和在一量化范圍內(nèi)的一最大值之間,逆循環(huán)DPCM運(yùn)算符2420將B輸出作為逆循環(huán)DPCM數(shù)據(jù)
另一方面,如果B+(2nKVQBit-1-1)小于0或大于在量化范圍內(nèi)的最大值時(shí),逆循環(huán)DPCM運(yùn)算符2420輸出A作為
C十十程序代碼的一個(gè)例子,其中寫出了逆循環(huán)DPCM運(yùn)算符2420的上述操作,如圖3所示。
表5逆量化器2430接收由執(zhí)45-一逆循環(huán)DPCM操作的逆循環(huán)DPCM運(yùn)算符2420生成的量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)通過(guò)在
上用等式(53)執(zhí)行一逆量化操作來(lái)復(fù)原一旋轉(zhuǎn)差分值將在步驟S24140中旋轉(zhuǎn)差分值
輸出到四元數(shù)乘法器2440中。
(f=2,…,nNumberOfKeyValue-1,j=1,2,3)
此后,四元數(shù)乘法器2440接收旋轉(zhuǎn)差分值
四元數(shù)乘法器2440在步驟S24154中通過(guò)將輸入旋轉(zhuǎn)差分值
按下面的等式(54)四元數(shù)乘以一前關(guān)鍵幀的一旋轉(zhuǎn)變換值
復(fù)原一當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值
(i=2,…nNumberOfKeyValue-1)
在復(fù)原一旋轉(zhuǎn)變換值后,關(guān)鍵字值數(shù)據(jù)譯碼器2400在步驟S24156中核對(duì)復(fù)原旋轉(zhuǎn)變換值是否與最后一個(gè)關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng)。如果復(fù)原旋轉(zhuǎn)變換值與最后一個(gè)關(guān)鍵字值數(shù)據(jù)不相對(duì)應(yīng),關(guān)鍵字值數(shù)據(jù)譯碼器2400重復(fù)執(zhí)行步驟S24140至S24154。另一方面,如果復(fù)原旋轉(zhuǎn)變換值是最后一個(gè)關(guān)鍵字值數(shù)據(jù),則在步驟S24158中,關(guān)鍵字值數(shù)據(jù)譯碼器2400將復(fù)原旋轉(zhuǎn)變換值輸出。
如果DPCM的次數(shù)為0,逆循環(huán)DPCM運(yùn)算符2420將譯碼的量化的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
(其中
)輸出到逆量化器2430中。然后,通過(guò)逆量化從逆循環(huán)DPCM運(yùn)算符2420輸入的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)
來(lái)生成一旋轉(zhuǎn)差分值
(其中并在步驟S24140中將Qi輸出到四元數(shù)乘法器2440中。
(i=1,…,nNumberOfKeyValue-1,j=1,2,3)
即使當(dāng)DPCM的次數(shù)為0,四元數(shù)乘法器2440將與當(dāng)DPCM的次數(shù)不為0時(shí)的幾乎相同的方式(步驟S24150至S24158)來(lái)復(fù)原旋轉(zhuǎn)變換值。當(dāng)DPCM的次數(shù)不為0時(shí),四元數(shù)乘法器2440用等式(56)執(zhí)行四元數(shù)乘法。
(i=1,…nNumberOfKeyValue-1)
在下文中,將描述定向內(nèi)插器合成器2180的操作。
圖26是定向內(nèi)插器合成器2180的操作流程圖。參考圖26,在步驟S26000中,定向內(nèi)插器合成器2180接收譯碼關(guān)鍵字?jǐn)?shù)據(jù)和譯碼關(guān)鍵字值數(shù)據(jù)并從標(biāo)題譯碼器2110接收關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量以及一斷點(diǎn)生成模式以及關(guān)鍵字選擇特征位。
在步驟S26100中,當(dāng)斷點(diǎn)生成模式是一動(dòng)畫路徑保存模式時(shí),定向內(nèi)插器合成器2180輸出譯碼關(guān)鍵字?jǐn)?shù)據(jù)和譯碼關(guān)鍵字值數(shù)據(jù)。在一動(dòng)畫路徑保存模式中已經(jīng)抽取斷點(diǎn)的情況下,關(guān)鍵字?jǐn)?shù)據(jù)與關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng),因此,沒(méi)有必要使用內(nèi)插生成新的關(guān)鍵字值數(shù)據(jù)。然而,如果在一動(dòng)畫關(guān)鍵字保存模式中已經(jīng)抽取斷點(diǎn),這表示僅與斷點(diǎn)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)被編碼同時(shí)所有關(guān)鍵字?jǐn)?shù)據(jù)已經(jīng)被編碼和譯碼。因此,在這種情況下,關(guān)鍵字?jǐn)?shù)據(jù)與關(guān)鍵字值數(shù)據(jù)不相對(duì)應(yīng),因此有必要內(nèi)插將在下述段路中描述的關(guān)鍵字值數(shù)據(jù)。
當(dāng)斷點(diǎn)生成模式是一動(dòng)畫關(guān)鍵字保存模式時(shí),在步驟S26200中,表示關(guān)鍵字選擇特征位的數(shù)據(jù)的一指數(shù)的一計(jì)數(shù)器被設(shè)置從而與關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng),以便計(jì)算與該關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)是否存在。
定向內(nèi)插器合成器2180在步驟S26300中核對(duì)如果與由該計(jì)數(shù)器表示的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)存在的話,則轉(zhuǎn)入步驟S26500。
如果沒(méi)有與由計(jì)數(shù)器表示的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù),在步驟S26400中,通過(guò)使用與由兩個(gè)連續(xù)斷點(diǎn)表示的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù),線性內(nèi)插當(dāng)前關(guān)鍵字值數(shù)據(jù),定向內(nèi)插器合成器2180生成關(guān)鍵字值數(shù)據(jù),這兩個(gè)連續(xù)斷點(diǎn)包括在由該計(jì)數(shù)器所表示的關(guān)鍵字?jǐn)?shù)據(jù)前的一個(gè)斷點(diǎn)以及在由該計(jì)數(shù)器表示的關(guān)鍵字?jǐn)?shù)據(jù)后的另一個(gè)斷點(diǎn)。
此后,定向內(nèi)插器合成器2180核對(duì)所有關(guān)鍵字值數(shù)據(jù)是否具有它們相應(yīng)的關(guān)鍵字值數(shù)據(jù)并且在步驟S26500中對(duì)所有不具有與其相應(yīng)的關(guān)鍵字值數(shù)據(jù)的關(guān)鍵字?jǐn)?shù)據(jù)執(zhí)行線性操作。如果仍然存在還沒(méi)有被核對(duì)的關(guān)鍵字?jǐn)?shù)據(jù),定向內(nèi)插器合成器2180更新計(jì)數(shù)器并再次執(zhí)行步驟S26300至S26500。如果已經(jīng)核對(duì)所有關(guān)鍵字?jǐn)?shù)據(jù),定向內(nèi)插器合成器2180在步驟S26600中輸出合成關(guān)鍵字?jǐn)?shù)據(jù)和合成關(guān)鍵字值數(shù)據(jù)作為一定向內(nèi)插器。
在下文中,將描述SDL語(yǔ)言程序代碼的例子,通過(guò)該SDL語(yǔ)言程序代碼,可實(shí)現(xiàn)用于根據(jù)本發(fā)明的譯碼一定向內(nèi)插器的裝置,該定向內(nèi)插器譯碼關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
圖29是描述一類CompressedOrientationInterpolator的圖。CompressedOrientationInterpolator是一個(gè)用于讀取一定向內(nèi)插器的一編碼的位流的一最高類。KeyHeader、KeySelectionFlag和Key均是用于從一位流讀取與在一常規(guī)內(nèi)插器的關(guān)鍵字現(xiàn)場(chǎng)數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字?jǐn)?shù)據(jù)信息的類。OrilKeyValueHeader和OrilDPCMKeyValue是用于讀取有關(guān)與在一常規(guī)的定向內(nèi)插器中關(guān)鍵字值現(xiàn)場(chǎng)數(shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)的信息的類。函數(shù)qf_start()是使用自適應(yīng)算術(shù)編碼(AAC),用來(lái)在讀取一位流前初始化算術(shù)譯碼器,其中編碼關(guān)鍵字值數(shù)據(jù)。
圖29B給出了對(duì)譯碼所需的一關(guān)鍵字標(biāo)題進(jìn)行譯碼的一關(guān)鍵字標(biāo)題類的圖。
關(guān)鍵字標(biāo)題類包括關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量、量化位、內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù)、一DND標(biāo)題以及實(shí)際用于譯碼譯碼的位的數(shù)量。nKeyQBit表示用在逆量化中來(lái)復(fù)原浮點(diǎn)關(guān)鍵字值的量化位。nNumKeyCodingBit表示nNumberOfKey的一位長(zhǎng),nNumberOfKey表示關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量。nkeyDigit表示原始關(guān)鍵字?jǐn)?shù)據(jù)的多個(gè)最高有效位并用來(lái)舍入譯碼值。
當(dāng)有關(guān)線性關(guān)鍵字子區(qū)域的信息被包括在一關(guān)鍵字標(biāo)題中時(shí),一特征位blsLinearKeySubRegion被設(shè)置為1。在這種情況下,使用其后的一特征位blsLinearKeySubRegion的譯碼標(biāo)題信息能計(jì)算包括在一整個(gè)關(guān)鍵字區(qū)域的特定線性關(guān)鍵字子區(qū)域中的關(guān)鍵字。bRangeFlag表示關(guān)鍵字?jǐn)?shù)據(jù)范圍是否從0到1。如果關(guān)鍵字?jǐn)?shù)據(jù)范圍不是從0到1,在關(guān)鍵字?jǐn)?shù)據(jù)范圍中的最小和最大值被從一類KeyMinMax類被譯碼。KeyMinMax重新獲得要求用于逆量化的最小和最大值。上述每個(gè)值能被劃分成它們各自的尾數(shù)和指數(shù)。
nBitSize是nQIntraKey的位的大小,以及nKeyShift是nKeyMax的一初始位的大小。nQIntraKey表示第一量化內(nèi)部數(shù)據(jù)的大小并與表示nQIntraKey的一特征位的nQintraKeySign結(jié)合。nQintraKey被用作為復(fù)原其它量化關(guān)鍵字?jǐn)?shù)據(jù)所需的一基數(shù)。在用在內(nèi)插器壓縮中的所有特征位中,一值“0”表示一正號(hào),以及一值“1”表示一負(fù)號(hào)。nKDPCMOrder表示一值,該值是DPCM的次數(shù)減1。DPCM的次數(shù)可是1、2或3。量化內(nèi)部數(shù)據(jù)的數(shù)量與DPCM的次數(shù)相同。
nKeyShift以及一符號(hào)位nKeyShiftSign是表示在一關(guān)鍵字?jǐn)?shù)據(jù)譯碼器中的位移量的一整數(shù)。如果bShiftFlag被設(shè)置為“true”,譯碼nKeyShift以及nKeyShiftSign。nDNDOrder是二次劃分(DND)操作的次數(shù)。DND操作在上面已經(jīng)結(jié)合一關(guān)鍵字?jǐn)?shù)據(jù)譯碼器描述過(guò)。如果nDNDOrder的值為7,則譯碼bNoDND。bNoDND表示是否將執(zhí)行一逆DND操作。nKeyMax是在一逆DND操作的連續(xù)周期期間所使用的一最大值或一最小值。nKeyCodingBit表示用于編碼關(guān)鍵字?jǐn)?shù)據(jù)的位。
bSignedAACFlag表示在AAC譯碼期間將執(zhí)行的一譯碼過(guò)程。如果bSignedAACFlag被設(shè)置為0,將執(zhí)行一無(wú)符號(hào)的AAC譯碼過(guò)程。否則,將執(zhí)行一帶符號(hào)的AAC譯碼過(guò)程。bKeyInvertDownFlag是表示是否將使用nKeyInvertDown的一布爾值。nKeyInvertDown是用來(lái)將大于其自身的所有量化關(guān)鍵字?jǐn)?shù)據(jù)轉(zhuǎn)換成不小于-1的負(fù)數(shù)值的一整數(shù)。如果nKeyInvertDown被設(shè)置為-1,那幺將不執(zhí)行一下移操作。
圖29C是表示一類LinearKey的圖。在圖29C中,nNumLinearKeyCodingBit是表示對(duì)多個(gè)預(yù)定線性預(yù)測(cè)關(guān)鍵字進(jìn)行編碼所必須的位的數(shù)量。nNumberOfLinearKey是表示線性預(yù)測(cè)關(guān)鍵字的一值。
圖29D是描述一類KeyMinMax的圖。在圖29D中,bMinKeyDigitSame是表示所有關(guān)鍵字的最高有效位的數(shù)量(nKeyDigit)和在關(guān)鍵字中的一最小值的最高有效位的數(shù)量是否相同的一特征位。nMinKeyDigit是表示在關(guān)鍵字中最小值的最高有效位的數(shù)量的一值。nMinKeyMantissaSign是表示nMinKeyMantissa的一特征位的一值。nMinKeyMantissa是表示在關(guān)鍵字中最小值的尾數(shù)的一值。nMinKeyExponentSign是表示nMinKeyExponent的一特征位的一值。
nMinKeyExponent是表示在關(guān)鍵字中最小值的尾數(shù)的一值。
fKeyMin是表示在關(guān)鍵字中最小值的一值。bMaxKeyDigitSame是表示所有關(guān)鍵字的最高有效位的數(shù)量nKeyDigit和在關(guān)鍵字中的一最大值的最高有效位的數(shù)量是否相同的一特征位。nMaxKeyDigit是表示在關(guān)鍵字中最大值的最高有效位的數(shù)量的一值。nMaxnKeyMantissaSign是表示nMaxnKeyMantissa的一特征位的一值。nMaxnKeyMantissa是表示在關(guān)鍵字中最大值的尾數(shù)的一值。
bSameExponent是表示在關(guān)鍵字中最大值的尾數(shù)是否與nMinKeyExponent相同的一特征位。nMaxKeyExponentSign是表示nMaxKeyExponent的一特征位的一值。nMaxKeyExponent是表示在關(guān)鍵字中最大值的尾數(shù)的一值。FkeyMax是表示在關(guān)鍵字中最大值的一值。
圖29E是描述一類OrilKeyValueHeader的圖。用在該類中的每個(gè)變量的含義如下。bPreserverKey表示一當(dāng)前譯碼模式是否是一動(dòng)畫關(guān)鍵字保存模式或一動(dòng)畫路徑保存模式。當(dāng)bPreserverKey被設(shè)置為“true”時(shí),當(dāng)前譯碼模式是一動(dòng)畫關(guān)鍵字保存模式。
nKVQBit表示關(guān)鍵字值數(shù)據(jù)的一逆量化位的大小。nKVDPCMOrder表示用于譯碼關(guān)鍵字值數(shù)據(jù)的逆DPCM操作的次數(shù)。當(dāng)nKVDPCMOrder=0時(shí),不需要執(zhí)行一逆循環(huán)DPCM操作。另一方面,當(dāng)nKVDPCMOrder=1時(shí),應(yīng)該執(zhí)行一具有2次方的逆循環(huán)DPCM操作。
圖29F是描述一類OriDPCMKeyValueHeader的圖。用在該類中的每個(gè)變量的含義如下。firstQKV_S、firstQKV_X、firstQKV_Y以及firstQKV_Z分別表示四個(gè)分量s,x,y以及z的第一值,構(gòu)成一四元數(shù)(s,x,y,z)表示量化的關(guān)鍵字值數(shù)據(jù)。nfirstXSign,nfirstYSign以及nfirstZSign分別表示firstQKV_X、firstQKV_Y以及firstQKV_Z的特征位。secondQKV_X、secondQKV_Y以及secondQKV_Z分別表示三個(gè)分量x,y以及z的第二值,以及nsecondXSign,nsecondYSign以及nsecondZSign分別表示secondQKV_X、secondQKV_Y以及secondQKV_Z的特征位。BblsMoreTwoKVs表示當(dāng)必須執(zhí)行一逆循環(huán)DPCM時(shí)是否有將被譯碼的兩個(gè)以上的關(guān)鍵字值數(shù)據(jù)。x_keyvalue_flag、y_keyValue_flag以及z_keyvalue_flag表示每個(gè)分量x,y以及z的所有量化值是否相同。
圖29G是描述一類OrilKeyValueCodingBit的圖。在該類中每個(gè)變量的含義如下。NnKVCodingBit表示用來(lái)存儲(chǔ)量化后除內(nèi)部關(guān)鍵字值數(shù)據(jù)(在類OrilDPCMKeyValueHeader中的firstQKV_S、firstQKV_X、firstQKV_Y、firstQKV_Z、secondQKV_X、secondQKV_Y以及secondQKV_Z外的所有量化關(guān)鍵字值數(shù)據(jù)的位的數(shù)量。
nAllKeyValue表示當(dāng)用于每個(gè)分量的keyvalue_flag設(shè)置為0時(shí)所有關(guān)鍵字值數(shù)據(jù)的每個(gè)分量的一量化的值。nSign表示nAllKeyValue的特征位。BlsUnaryAAC表示用于譯碼每個(gè)分量x,y和z的量化值的一種自適應(yīng)算術(shù)量化方法。如果BlsUnaryAAC被設(shè)置為“true”,將使用一unaryAAC譯碼函數(shù)。另一方面,如果BlsUnaryAAC被設(shè)置為“false”,則將使用一binaryAAC譯碼函數(shù)。
圖29H是描述一類KeySelectionFlag的圖。在該類KeySelectionFlag中,keyFlag表示是否已經(jīng)編碼第i個(gè)關(guān)鍵字?jǐn)?shù)據(jù)。nNumOfKeyValue是表示將被譯碼的關(guān)鍵字值數(shù)據(jù)的數(shù)量的一整數(shù)。
圖29I是描述一類Key的圖。在該類Key中,nQKey是從一位流譯碼的量化關(guān)鍵數(shù)據(jù)的一數(shù)組。KeyContext是用于讀取nQKey的一大小的一環(huán)境(context)。KeySignContext是用于讀取nQKey的一符號(hào)的一環(huán)境。
DecodeUnsignedAAc是用來(lái)執(zhí)行具有一給定環(huán)境的自適應(yīng)算術(shù)編碼的一不帶符號(hào)的譯碼過(guò)程的一函數(shù),這將在下面描述。DecodeSignedAAC是用于執(zhí)行具有一給定環(huán)境的自適應(yīng)算術(shù)編碼的一帶符號(hào)的譯碼過(guò)程的一函數(shù),這將在下面描述。
圖29J是描述一類OrilDPCMKeyValue的圖。在該類中每個(gè)變量的含義如下。DeltaKeyValue被用來(lái)以四元數(shù)的形式存儲(chǔ)包括三個(gè)分量x,y和z的量化的關(guān)鍵字值數(shù)據(jù)。存儲(chǔ)在DeltaKeyValue中的量化的關(guān)鍵字值數(shù)據(jù)使用一函數(shù)decodeUnaryAAC或decodeSignedAAC從一位流中被譯碼。
kVXSignContext,kVYSignContext,kVZSignContext是用于使用函數(shù)decodeUnaryAAC或decodeSignedAAC來(lái)譯碼DeltaKeyValue三個(gè)分量x,y和z的環(huán)境。
kVXUnaryContext,kVYUnaryContext,kVZUnaryContext是用于使用函數(shù)decodeUnaryAAC來(lái)譯碼DeltaKeyValue三個(gè)分量x,y和z的環(huán)境。
kVXContext,kVYContext,kVZContext是用于使用函數(shù)decodeedAAC來(lái)譯碼DeltaKeyValue三個(gè)分量x,y和z的環(huán)境。
在下文中,將參考本發(fā)明第三實(shí)施例來(lái)描述在包含在根據(jù)本發(fā)明第三實(shí)施例的量化器2000中的誤差測(cè)量單元2050中所執(zhí)行的用于測(cè)量一原始旋轉(zhuǎn)差分?jǐn)?shù)據(jù)值與一旋轉(zhuǎn)差分?jǐn)?shù)據(jù)值間的一誤差的方法,以及用于測(cè)量一原始旋轉(zhuǎn)差分值與一旋轉(zhuǎn)差分值間的一誤差的方法,上述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)值是通過(guò)對(duì)分別包含在如圖4A至4C所示的斷點(diǎn)抽取器42、46、48中的誤差計(jì)算器42b,46b以及48b中的已量化旋轉(zhuǎn)差分值進(jìn)行逆量化而復(fù)原的,上述旋轉(zhuǎn)差分值是通過(guò)對(duì)已量化旋轉(zhuǎn)差分值進(jìn)行逆量化而復(fù)原的。
根據(jù)本發(fā)明,測(cè)量一原始旋轉(zhuǎn)差分值和一復(fù)原旋轉(zhuǎn)差分值間的一誤差的方法也能被用來(lái)測(cè)量編碼前的一原始定向內(nèi)插器與通過(guò)譯碼一編碼定向內(nèi)插器生成的一定向內(nèi)插器間的誤差。因此,一定向內(nèi)插器的一動(dòng)畫路徑,將由斷點(diǎn)抽取器42、46或48從其抽取斷點(diǎn),以及用在誤差測(cè)量單元250中的原始旋轉(zhuǎn)差分值將被描述成與編碼前的一定向內(nèi)插器相對(duì)應(yīng)。同樣,由抽取斷點(diǎn)所構(gòu)成的一定向內(nèi)插器的一動(dòng)畫路徑以及用在誤差測(cè)量單元2050中的復(fù)原旋轉(zhuǎn)差分值將被描述成與譯碼定向內(nèi)插器的關(guān)鍵字值數(shù)據(jù)相對(duì)應(yīng)。
在編碼一定向內(nèi)插器的過(guò)程中,在量化期間在原始定向內(nèi)插器和一復(fù)原定向內(nèi)插器間產(chǎn)生一誤差。在這里,原始定向內(nèi)插器和復(fù)原定向內(nèi)插器間的誤差是由使用在原始旋轉(zhuǎn)變換和復(fù)原旋轉(zhuǎn)變換間的角度中的一差值定義。
換句話說(shuō),假定包含在一定向內(nèi)插器節(jié)點(diǎn)中的一關(guān)鍵字值數(shù)據(jù)與在一譯碼器中的其復(fù)原關(guān)鍵字值數(shù)據(jù)分別被稱為
和
其中
表示一旋轉(zhuǎn)軸,以及θ表示一旋轉(zhuǎn)角并滿足θ∈[-π,π],通過(guò)旋轉(zhuǎn)變換,在一三維空間中的一對(duì)象基于
和
被分別從一任意位置
移動(dòng)到一任意位置
以及從
移動(dòng)到一任意位置
一量化誤差是
和
間的差值并滿足以四元數(shù)形式表示的
和
如等式(57)中所示。
當(dāng)表示
和
的四元數(shù)被稱為Q和
時(shí),可導(dǎo)出下述等式。
Y=Q×X×Q* …(58)
X=Q*×Y×Q
此時(shí),A×B表示四元數(shù)乘法,以及A*表示A的一復(fù)共軛?;诘仁?57)和(58),可導(dǎo)出下述等式。
此時(shí),Qerror是表示在旋轉(zhuǎn)變換方面
和
間的關(guān)系以及由下述等式來(lái)定義。
當(dāng)
和
間的一差分旋轉(zhuǎn)角被稱為θerror時(shí),使用一四元數(shù)變換公式以及等式(61)可獲得θerror。
此時(shí),·表示一內(nèi)積操作。等式(61)定義在一預(yù)定時(shí)間瞬間在所有動(dòng)畫關(guān)鍵幀中發(fā)生的瞬時(shí)量化誤差,因此,根據(jù)本發(fā)明的第三實(shí)施例,包括在量化器2000中的誤差測(cè)量單元2050用等式(61)計(jì)算一原始定向內(nèi)插器和一復(fù)原定向內(nèi)插器間的一誤差。
另外,可用下述等式定義在預(yù)定時(shí)間瞬間(t)的一瞬時(shí)量化誤差以便從等式(62)導(dǎo)出用于獲得在一整個(gè)動(dòng)畫間隔中的一量化誤差的一公式。
通過(guò)大量地將公式(62)應(yīng)用到整個(gè)關(guān)鍵幀間隔來(lái)導(dǎo)出一平均誤差Em以及一最大誤差Ep,在這期間,可使用一定向內(nèi)插器來(lái)執(zhí)行一動(dòng)畫。
此時(shí),為獲得平均誤差Em,必須首先獲得在間隔[ti-1,ti]中誤差的部分和
如圖27所示。在下文中,當(dāng)在預(yù)定時(shí)間ti-1和ti與原始關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的譯碼關(guān)鍵字?jǐn)?shù)據(jù)存在時(shí),預(yù)定時(shí)間將分別被稱為
和
與原始關(guān)鍵字值數(shù)據(jù)Qi-1和Qi相對(duì)應(yīng)的譯碼的關(guān)鍵字值數(shù)據(jù)將被分別稱為
和
由于在編碼關(guān)鍵字?jǐn)?shù)據(jù)期間生成的噪音,不可能直接計(jì)算一原始定向內(nèi)插器的原始動(dòng)畫路徑Qi′與一譯碼定向內(nèi)插器的一動(dòng)畫路徑
間的一誤差,如圖27所示。因此,間隔[ti-1,ti]必須被劃分成三個(gè)子間隔
和
接著,使用等式(63)來(lái)獲得在
和
的四元數(shù)值。
在等式(63)中,函數(shù)SLERP()被用來(lái)執(zhí)行球性線性內(nèi)插。
由于在一三維空間中一動(dòng)畫路徑必然矢真的事實(shí),如圖27所示,間隔
必須被劃分成兩個(gè)子間隔
和
然后這兩個(gè)子間隔必須彼此分開(kāi)計(jì)算。此時(shí),假定兩個(gè)動(dòng)畫路徑間,即一組Qi值與一組
值間的一距離在間隔
中的ti”被減小。使用下述等式來(lái)計(jì)算在
和
間的瞬時(shí)誤差。
另外,在間隔
中的ti“與
成比例,如等式(65)所示。
用下述等式(66)來(lái)計(jì)算中間四元數(shù)值以及在ti”處的一瞬時(shí)誤差。然而,用下述等式(67)獲得在任意時(shí)間瞬間(t)的一瞬時(shí)誤差。
此時(shí),以及然而,計(jì)算在任意時(shí)間瞬間(t)的一瞬時(shí)誤差e(t)并不容易。因此,使用如近似法(68)所示的線性近似確定e(t)。
在間隔[ti-1,ti]中的誤差的部分和
以及在間隔
中的最大誤差的一部分和
也能使用近似法(69)和(70)來(lái)獲得。
近似法(69)能被重新整理如下。
最后,在一時(shí)間間隔[tmin,tmax]中的一平均Em以及一最大誤差Ep用以下的近似法(71)計(jì)算。
因此,包括在如圖4A至4C所示的斷點(diǎn)抽取器42、46和48中的誤差計(jì)算器42b、46b和48b分別使用等式(71)計(jì)算一原始定向內(nèi)插器和一復(fù)原定向內(nèi)插器中的一誤差并能更精確地測(cè)量由于由于一量化誤差所帶來(lái)的在一四元數(shù)空間中圖像矢真的程序。
圖28是與用于編碼關(guān)鍵字值數(shù)據(jù)的一常規(guī)方法相比的根據(jù)本發(fā)明的用于編碼關(guān)鍵字值數(shù)據(jù)的方法的性能的圖形。如圖28所示,根據(jù)用于編碼本發(fā)明的一定向內(nèi)插器方法,當(dāng)給定要求用于編碼的一預(yù)定數(shù)量位時(shí),與在常規(guī)的MPEG-4BIFS PMFC方法相比,圖像矢真的程序能被相當(dāng)大地降低。
本發(fā)明能按寫在一計(jì)算機(jī)可讀記錄介質(zhì)上的計(jì)算機(jī)可讀代碼來(lái)實(shí)現(xiàn)。在這里,計(jì)算機(jī)可讀記錄介質(zhì)包括能由一計(jì)算機(jī)系統(tǒng)讀取的任何種類的記錄介質(zhì)。例如,該計(jì)算機(jī)可讀記錄介質(zhì)可能包括一ROM、一RAM、一CD-ROM、一磁帶、一軟盤、一光數(shù)據(jù)存儲(chǔ)器、載波(通過(guò)Internet傳輸)等等。計(jì)算機(jī)可讀記錄介質(zhì)能被分散到連接到網(wǎng)絡(luò)上的計(jì)算機(jī)系統(tǒng),以及一計(jì)算機(jī)能用一分散的方式讀取該記錄介質(zhì)。
根據(jù)本發(fā)明,用于編碼一定向內(nèi)插器的方法和裝置能以高效率編碼動(dòng)畫關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)同時(shí)保持高質(zhì)量動(dòng)畫。另外,根據(jù)本發(fā)明,通過(guò)利用測(cè)量動(dòng)畫數(shù)據(jù)路徑間的一誤差的方法來(lái)保持高質(zhì)量動(dòng)畫是可能的,而且通過(guò)利用重新采樣方法和本發(fā)明的斷點(diǎn)抽取,也可能相當(dāng)大地減小將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)量。
另外,通過(guò)計(jì)算一旋轉(zhuǎn)差分值,有可能提供具有一高壓縮比的高質(zhì)量動(dòng)畫,該旋轉(zhuǎn)差分值能充分反映在與一定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的旋轉(zhuǎn)變換中的冗余,并因此編碼該定向內(nèi)插器的關(guān)鍵字值數(shù)據(jù)。
同時(shí)本發(fā)明已經(jīng)明確表示和參考其優(yōu)選實(shí)施例描述過(guò),對(duì)本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)在不脫離由附加權(quán)利要求限定的本發(fā)明的精神和范圍的情況下可對(duì)形式和細(xì)節(jié)做出改變。
權(quán)利要求
1、一種用于編碼定向內(nèi)插器的裝置,所述定向內(nèi)插器包括表示在時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù),該裝置包括
斷點(diǎn)抽取器,從由輸入到其中的定向內(nèi)插器組成的第一動(dòng)畫路徑抽取最小數(shù)量的斷點(diǎn),能產(chǎn)生不大于所述第一動(dòng)畫路徑和由抽取的斷點(diǎn)生成的第二動(dòng)畫間的預(yù)定誤差極限的誤差;
關(guān)鍵字?jǐn)?shù)據(jù)編碼器,編碼從所述斷點(diǎn)抽取器輸入的關(guān)鍵字?jǐn)?shù)據(jù);
關(guān)鍵字值數(shù)據(jù)編碼器,通過(guò)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)編碼從所述斷點(diǎn)抽取器輸入的關(guān)鍵字值數(shù)據(jù),通過(guò)關(guān)鍵字值數(shù)據(jù)編碼器,所述對(duì)象按幾乎等于當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和前關(guān)鍵幀的旋轉(zhuǎn)變換值間的差值被旋轉(zhuǎn)變換。
2、如權(quán)利要求1所述的裝置,進(jìn)一步包括
重新采樣器,將所述第一動(dòng)畫路徑采樣成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,并輸出包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)和重新采樣關(guān)鍵字值數(shù)據(jù)的定向內(nèi)插器;以及
選擇器,根據(jù)外部輸入信號(hào),將輸入到其中的定向內(nèi)插器輸出到所述重新采樣器或所述斷點(diǎn)抽取器。
3、如權(quán)利要求1所述的裝置,進(jìn)一步包括重新采樣器,將所述第一動(dòng)畫路徑采樣成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,并輸出包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)和重新采樣關(guān)鍵字值數(shù)據(jù)的定向內(nèi)插器,
其中所述斷點(diǎn)抽取器從由從所述重新采樣器輸入的定向內(nèi)插器組成的動(dòng)畫路徑抽取斷點(diǎn)。
4、如權(quán)利要求1所述的裝置,進(jìn)一步包括重新采樣器,將由從所述斷點(diǎn)抽取器抽取的定向內(nèi)插器組成的動(dòng)畫路徑采樣成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,并將包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)和重新采樣關(guān)鍵字值數(shù)據(jù)的定向內(nèi)插器輸出到所述關(guān)鍵字?jǐn)?shù)據(jù)編碼器和所述關(guān)鍵字值編碼器。
5、如權(quán)利要求2至4中任何一個(gè)所述的裝置,其中所述重新采樣器將由定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)組成的動(dòng)畫路徑劃分成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,并輸出每個(gè)部分的終點(diǎn)作為將被編碼的關(guān)鍵字?jǐn)?shù)據(jù),并輸出存在于每個(gè)部分中的動(dòng)畫路徑上的關(guān)鍵字值數(shù)據(jù)以作為將被編碼的關(guān)鍵字值數(shù)據(jù)。
6、如權(quán)利要求1至4中任何一個(gè)所述的裝置,其中所述斷點(diǎn)抽取器包括
線性內(nèi)插器,抽取輸入動(dòng)畫路徑的開(kāi)始路徑點(diǎn)和結(jié)束路徑點(diǎn),在所述開(kāi)始和結(jié)束路徑點(diǎn)間選擇路徑點(diǎn),以及利用所選擇的路徑點(diǎn)和所抽取的路徑點(diǎn)來(lái)球性線性內(nèi)插還沒(méi)有被選擇的其它路徑點(diǎn);
誤差計(jì)算器,計(jì)算所述輸入動(dòng)畫路徑與由所述線性內(nèi)插器使用內(nèi)插所生成的內(nèi)插動(dòng)畫路徑間的誤差;
確定單元,抽取斷點(diǎn),通過(guò)該操作,能最小化所述輸入動(dòng)畫路徑與所述內(nèi)插動(dòng)畫路徑間的誤差,并且如果所述相應(yīng)誤差不大于預(yù)定誤差極限,則輸出抽取的斷點(diǎn)。
7、如權(quán)利要求6所述的裝置,其中如果所述輸入動(dòng)畫路徑與由抽取斷點(diǎn)所組成的所述內(nèi)插動(dòng)畫路徑間的誤差大于所述預(yù)定誤差極限,則線性內(nèi)插器依次選擇除從所述確定單元輸入的斷點(diǎn)外的所有路徑點(diǎn)并在所選擇的路徑點(diǎn)上執(zhí)行球性線性內(nèi)插。
8、如權(quán)利要求6所述的裝置,其中基于構(gòu)成它們的路徑點(diǎn)的一個(gè)基準(zhǔn)分量,所述誤差計(jì)算器將所述輸入動(dòng)畫路徑和通過(guò)球性線性內(nèi)插所生成的動(dòng)畫路徑分割成多個(gè)預(yù)定部分,并通過(guò)測(cè)量每個(gè)部分的區(qū)域來(lái)計(jì)算所述輸入動(dòng)畫路徑和在每個(gè)部分中所生成的動(dòng)畫路徑間的誤差。
9、如權(quán)利要求1所述的裝置,其中關(guān)鍵字?jǐn)?shù)據(jù)編碼器使用預(yù)定量化位量化從所述斷點(diǎn)抽取器輸入的關(guān)鍵字?jǐn)?shù)據(jù),通過(guò)在已量化關(guān)鍵字?jǐn)?shù)據(jù)上執(zhí)行預(yù)定DPCM操作來(lái)生成差分?jǐn)?shù)據(jù),以及編碼所述差分?jǐn)?shù)據(jù)。
10、如權(quán)利要求1所述的裝置,其中所述關(guān)鍵字?jǐn)?shù)據(jù)編碼器包括
第一量化器,使用預(yù)定量化位來(lái)量化定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù);
第一DPCM處理器,生成所述量化關(guān)鍵字?jǐn)?shù)據(jù)的差分?jǐn)?shù)據(jù);
DND處理器,根據(jù)所述差分?jǐn)?shù)據(jù)與其中的最大值和最小值間的關(guān)系,在所述差分?jǐn)?shù)據(jù)上執(zhí)行DND操作;
第一熵編碼器,熵編碼從所述DND處理器輸入的所述差分?jǐn)?shù)據(jù)。
11、如權(quán)利要求1所述的裝置,其中所述關(guān)鍵字?jǐn)?shù)據(jù)編碼器進(jìn)一步包括線性關(guān)鍵字編碼器,其識(shí)別和編碼所有輸入其中的關(guān)鍵字?jǐn)?shù)據(jù)都線性增長(zhǎng)的區(qū)域。
12、如權(quán)利要求10所述的裝置,其中所述關(guān)鍵字?jǐn)?shù)據(jù)編碼器進(jìn)一步包括
移位器,獲得在從所述第一DPCM處理器所輸入的差分?jǐn)?shù)據(jù)中具有最高頻率的差分?jǐn)?shù)據(jù)(模式)并從所述差分?jǐn)?shù)據(jù)減去該模式;以及
折疊處理器,將所述移位差分?jǐn)?shù)據(jù)轉(zhuǎn)換成正數(shù)或負(fù)數(shù),以及DND處理器根據(jù)要求用于編碼的位的數(shù)量,從所述移位器輸入的差分?jǐn)?shù)據(jù)、從所述折疊處理器輸入的差分?jǐn)?shù)據(jù)以及DND差分?jǐn)?shù)據(jù)中選擇一個(gè),并輸出選擇的差分?jǐn)?shù)據(jù)。
13、如權(quán)利要求1所述的裝置,其中所述關(guān)鍵字值編碼器包括
旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器,使用當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù),所述旋轉(zhuǎn)差分值被用來(lái)按幾乎等于通過(guò)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到當(dāng)前關(guān)鍵幀中的所述對(duì)象的旋轉(zhuǎn)變換與通過(guò)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到前關(guān)鍵幀中的所述對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象,并通過(guò)量化所述旋轉(zhuǎn)差分值來(lái)輸出旋轉(zhuǎn)差分?jǐn)?shù)據(jù);以及
熵編碼器,熵編碼所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
14、如權(quán)利要求13所述的裝置,其中所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器包括
量化器,通過(guò)量化所述旋轉(zhuǎn)差分值的三個(gè)分量值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
量化數(shù)據(jù)調(diào)節(jié)器,調(diào)節(jié)輸入到其中的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的三個(gè)分量值;
逆量化器,逆量化所述調(diào)節(jié)分量值;
旋轉(zhuǎn)差分值復(fù)原器,使用所述三個(gè)逆量化分量值來(lái)復(fù)原未被量化的一個(gè)分量值,從而生成復(fù)原旋轉(zhuǎn)差分值;以及
誤差測(cè)量單元,測(cè)量輸入到所述量化器中的旋轉(zhuǎn)差分值和所述復(fù)原旋轉(zhuǎn)差分值間的誤差,并輸出具有已調(diào)節(jié)分量值的旋轉(zhuǎn)差分?jǐn)?shù)據(jù),以便能最小化該誤差。
15、如權(quán)利要求13所述的裝置,其中所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器包括
第一四元數(shù)乘法器,使用所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成所述旋轉(zhuǎn)差分值;
量化器,通過(guò)量化所述旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
逆量化器,通過(guò)逆量化所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成復(fù)原旋轉(zhuǎn)差分值;以及
第二四元數(shù)乘法器,通過(guò)將所述復(fù)原旋轉(zhuǎn)差分值四元數(shù)乘以所述前關(guān)鍵幀的旋轉(zhuǎn)變換值來(lái)生成所述當(dāng)前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)差分值。
16、如權(quán)利要求13所述的裝置,其中所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器包括
旋轉(zhuǎn)方向誤差檢測(cè)器,基于所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值以及所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)檢測(cè)是否已經(jīng)出現(xiàn)旋轉(zhuǎn)方向誤差,以致所述對(duì)象的原始旋轉(zhuǎn)方向與所述對(duì)象的譯碼旋轉(zhuǎn)方向相反;
旋轉(zhuǎn)方向校正器,調(diào)節(jié)所述旋轉(zhuǎn)差分值以便所述對(duì)象的譯碼旋轉(zhuǎn)方向能與所述對(duì)象的原始旋轉(zhuǎn)方向相同;以及
旋轉(zhuǎn)方向選擇器,根據(jù)從所述旋轉(zhuǎn)方向誤差檢測(cè)器輸入的檢測(cè)結(jié)果,選擇所述旋轉(zhuǎn)差分值或從所述旋轉(zhuǎn)方向校正器輸入的所述旋轉(zhuǎn)差分值以作為將被量化的差分?jǐn)?shù)據(jù)。
17、一種用于編碼定向內(nèi)插器的裝置,所述定向內(nèi)插器包括表示在時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù),該裝置包括
重新采樣器,將由輸入定向內(nèi)插器組成的動(dòng)畫路徑采樣成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,并輸出包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)和重新采樣關(guān)鍵字值數(shù)據(jù)的定向內(nèi)插器;
關(guān)鍵字?jǐn)?shù)據(jù)編碼器,編碼從所述重新采樣器輸入的關(guān)鍵字?jǐn)?shù)據(jù);以及
關(guān)鍵字值數(shù)據(jù)編碼器,生成旋轉(zhuǎn)差分值,所述旋轉(zhuǎn)差分值用來(lái)按幾乎等于通過(guò)當(dāng)前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)而應(yīng)用到對(duì)象的旋轉(zhuǎn)變換和通過(guò)前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)而應(yīng)用到所述對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象,從而編碼從所述重新采樣器所輸入的關(guān)鍵字值數(shù)據(jù)。
18、如權(quán)利要求17所述的裝置,其中所述重新采樣器將由定向內(nèi)插器的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)所組成的動(dòng)畫路徑劃分成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,并輸出每個(gè)部分的終點(diǎn)以作為將被編碼的關(guān)鍵字?jǐn)?shù)據(jù),并輸出存在于每個(gè)部分中的動(dòng)畫路徑上的關(guān)鍵字值數(shù)據(jù)以作為將被編碼的關(guān)鍵字值數(shù)據(jù)。
19、如權(quán)利要求17所述的裝置,其中所述關(guān)鍵字?jǐn)?shù)據(jù)編碼器包括線性關(guān)鍵字編碼器,其識(shí)別和編碼所有輸入其中的關(guān)鍵字?jǐn)?shù)據(jù)都線性增長(zhǎng)的區(qū)域。
20、如權(quán)利要求17所述的裝置,其中所述關(guān)鍵字值編碼器包括
旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器,使用當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成旋轉(zhuǎn)差分值,所述旋轉(zhuǎn)差分值被用來(lái)按幾乎等于通過(guò)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到當(dāng)前關(guān)鍵幀中的所述對(duì)象的旋轉(zhuǎn)變換和通過(guò)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到前關(guān)鍵幀中的所述對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象,并通過(guò)量化所述旋轉(zhuǎn)差分值來(lái)輸出旋轉(zhuǎn)差分?jǐn)?shù)據(jù);以及
熵編碼器,熵編碼所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
21、如權(quán)利要求20所述的裝置,其中所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器包括
量化器,通過(guò)量化所述旋轉(zhuǎn)差分值的三個(gè)分量值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
量化數(shù)據(jù)調(diào)節(jié)器,調(diào)節(jié)輸入到其中的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的三個(gè)分量值;
逆量化器,逆量化所述調(diào)節(jié)分量值;
旋轉(zhuǎn)差分值復(fù)原器,使用所述三個(gè)逆量化分量值來(lái)復(fù)原未被量化的一個(gè)分量值,從而生成復(fù)原旋轉(zhuǎn)差分值;以及
誤差測(cè)量單元,測(cè)量輸入到所述量化器中的旋轉(zhuǎn)差分值和所述復(fù)原旋轉(zhuǎn)差分值間的誤差,并輸出具有已調(diào)節(jié)分量值的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)以便能最小化該誤差。
22、如權(quán)利要求20所述的裝置,其中所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器包括
第一四元數(shù)乘法器,使用所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成所述旋轉(zhuǎn)差分值;
量化器,通過(guò)量化所述旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
逆量化器,通過(guò)逆量化所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成復(fù)原旋轉(zhuǎn)差分值;以及
第二四元數(shù)乘法器,通過(guò)將所述復(fù)原旋轉(zhuǎn)差分值四元數(shù)乘以所述前關(guān)鍵幀的旋轉(zhuǎn)變換值來(lái)生成所述當(dāng)前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)差分值。
23、如權(quán)利要求20所述的裝置,其中所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)生成器包括
旋轉(zhuǎn)方向誤差檢測(cè)器,基于所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值以及所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)檢測(cè)是否已經(jīng)出現(xiàn)旋轉(zhuǎn)方向誤差,以致所述對(duì)象的原始旋轉(zhuǎn)方向與所述對(duì)象的譯碼旋轉(zhuǎn)方向相反;
旋轉(zhuǎn)方向校正器,調(diào)節(jié)所述旋轉(zhuǎn)差分值,以便所述對(duì)象的譯碼旋轉(zhuǎn)方向能與所述對(duì)象的原始旋轉(zhuǎn)方向相同;以及
旋轉(zhuǎn)方向選擇器,根據(jù)從所述旋轉(zhuǎn)方向誤差檢測(cè)器所輸入的檢測(cè)結(jié)果,選擇所述旋轉(zhuǎn)差分值或從所述旋轉(zhuǎn)方向校正器輸入的所述旋轉(zhuǎn)差分值以作為將被量化的差分?jǐn)?shù)據(jù)。
24、一種用于譯碼位流的裝置,其中將定向內(nèi)插器編碼成該位流,該定向內(nèi)插器包括表示在時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù),該裝置包括
關(guān)鍵字?jǐn)?shù)據(jù)譯碼器,譯碼來(lái)自輸入位流的關(guān)鍵字?jǐn)?shù)據(jù);
關(guān)鍵字值數(shù)據(jù)譯碼器,譯碼來(lái)自所述輸入位流的關(guān)鍵字值數(shù)據(jù);以及
定向內(nèi)插器合成器,通過(guò)合成已譯碼的關(guān)鍵字值數(shù)據(jù)和使用所述譯碼關(guān)鍵字值數(shù)據(jù)而球性線性內(nèi)插的關(guān)鍵字值數(shù)據(jù)來(lái)生成定向內(nèi)插器。
25、如權(quán)利要求24所述的裝置,其中如果不存在與當(dāng)前正在受到定向內(nèi)插器合成的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的已譯碼的關(guān)鍵字值數(shù)據(jù),則所述定向內(nèi)插器合成器利用與先前合成的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的譯碼關(guān)鍵字值數(shù)據(jù)以及與下一個(gè)將被合成的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的譯碼關(guān)鍵字值數(shù)據(jù)來(lái)內(nèi)插與當(dāng)前正在受到定向內(nèi)插器合成的所述關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)。
26、如權(quán)利要求24所述的裝置,其中所述關(guān)鍵字?jǐn)?shù)據(jù)譯碼器包括
熵譯碼器,通過(guò)熵譯碼所述輸入位流來(lái)生成差分?jǐn)?shù)據(jù);
逆DPCM處理器,通過(guò)在所述差分?jǐn)?shù)據(jù)上執(zhí)行預(yù)定逆DPCM操作來(lái)生成量化關(guān)鍵字?jǐn)?shù)據(jù);
逆量化器,通過(guò)逆量化所述量化關(guān)鍵字?jǐn)?shù)據(jù)來(lái)生成復(fù)原關(guān)鍵字?jǐn)?shù)據(jù)。
27、如權(quán)利要求24所述的裝置,其中所述關(guān)鍵字值譯碼器包括
熵譯碼器,通過(guò)熵譯碼來(lái)自所述位流的關(guān)鍵字值數(shù)據(jù)來(lái)生成循環(huán)的DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù)或量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
逆循環(huán)DPCM運(yùn)算符,通過(guò)在從所述熵譯碼器輸入的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上依據(jù)從所述位流譯碼的DPCM操作的次數(shù)來(lái)執(zhí)行逆循環(huán)DPCM操作,以生成量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
逆量化器,通過(guò)逆量化所述量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù),所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)被用來(lái)按幾乎等于通過(guò)每個(gè)關(guān)鍵幀的四元數(shù)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象;以及
四元數(shù)乘法器,通過(guò)將當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)差分值四元數(shù)乘以前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換差分值來(lái)生成所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值。
28、一種用于編碼定向內(nèi)插器的方法,所述定向內(nèi)插器包括表示在時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù),所述方法包括
(b)通過(guò)從由所述定向內(nèi)插器組成的第一動(dòng)畫路徑抽取最少量的斷點(diǎn)來(lái)生成將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù),能產(chǎn)生不大于所述第一動(dòng)畫路徑和將由抽取的斷點(diǎn)生成的第二動(dòng)畫間的預(yù)定誤差極限的誤差;
(d)編碼在步驟(b)中生成的所述關(guān)鍵字?jǐn)?shù)據(jù);
(e)通過(guò)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)編碼在步驟(b)中生成的關(guān)鍵字值數(shù)據(jù),通過(guò)該操作,所述對(duì)象按幾乎等于當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和前關(guān)鍵幀的旋轉(zhuǎn)變換值間的差值旋轉(zhuǎn)變換。
29、如權(quán)利要求28所述的方法,其中步驟(b)包括
(b1)抽取所述第一動(dòng)畫路徑的開(kāi)始路徑點(diǎn)和結(jié)束路徑點(diǎn);
(b2)利用所選擇的路徑點(diǎn)和所提取的路徑點(diǎn)來(lái)依次選擇開(kāi)始和結(jié)束路徑點(diǎn)之間的路徑點(diǎn),并球性線性內(nèi)插仍未被選擇的的其它路徑點(diǎn);
(b3)計(jì)算所述第一動(dòng)畫路徑和通過(guò)在步驟(b2)中內(nèi)插生成的第二動(dòng)畫路徑間的誤差;
(b)抽取斷點(diǎn),通過(guò)該操作,能最小化所述第一動(dòng)畫路徑和所述第二動(dòng)畫路徑間的誤差,檢查所述相應(yīng)誤差是否不大于預(yù)定誤差極限,并確定將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
30、如權(quán)利要求28所述的方法,進(jìn)一步包括在步驟(b)之前的(a),通過(guò)將所述第一動(dòng)畫路徑采樣成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分來(lái)生成包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)和重新采樣關(guān)鍵字值數(shù)據(jù)的定向內(nèi)插器,
其中在步驟(b)中,從由在步驟(a)中所生成的所述定向內(nèi)插器構(gòu)成的動(dòng)畫路徑抽取斷點(diǎn)。
31、如權(quán)利要求30所述的方法,其中在步驟(a)中,所述第一動(dòng)畫路徑被分割成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,每個(gè)部分的終點(diǎn)被設(shè)置成采樣關(guān)鍵字?jǐn)?shù)據(jù),以及存在于每個(gè)部分中的第一動(dòng)畫路徑上的關(guān)鍵字值數(shù)據(jù)被設(shè)置成采樣關(guān)鍵字值數(shù)據(jù)。
32、如權(quán)利要求28所述的方法,進(jìn)一步包括在步驟(b)之后的(c),通過(guò)將利用所抽取的斷點(diǎn)而組成的所述第二動(dòng)畫路徑采樣成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分來(lái)生成將被編碼的關(guān)鍵字?jǐn)?shù)據(jù)和關(guān)鍵字值數(shù)據(jù)。
33、如權(quán)利要求28所述的方法,其中步驟(d)包括
利用預(yù)定數(shù)量的量化位量化所述關(guān)鍵字?jǐn)?shù)據(jù);
通過(guò)在量化數(shù)據(jù)上執(zhí)行預(yù)定DPCM操作來(lái)生成差分?jǐn)?shù)據(jù);以及
熵編碼所述差分?jǐn)?shù)據(jù)。
34、如權(quán)利要求28所述的方法,其中步驟(e)包括
(e1)使用所述當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值以及所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成旋轉(zhuǎn)差分值,所述旋轉(zhuǎn)差分值用來(lái)按幾乎等于通過(guò)當(dāng)前和前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)而應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象,以及通過(guò)量化所述旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);以及
(e2)熵編碼所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
35、如權(quán)利要求34所述的方法,其中步驟(e1)包括
(e11)通過(guò)量化所述旋轉(zhuǎn)差分值的三個(gè)分量值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
(e12)調(diào)節(jié)所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的三個(gè)分量值;
(e13)逆量化所述調(diào)節(jié)分量值;
(e14)通過(guò)利用所述三個(gè)逆量化分量值而復(fù)原一個(gè)分量值來(lái)生成復(fù)原旋轉(zhuǎn)差分值;
(e15)測(cè)量所述旋轉(zhuǎn)差分值和所述復(fù)原旋轉(zhuǎn)差分值間的誤差并確定具有已調(diào)節(jié)分量值的旋轉(zhuǎn)差分?jǐn)?shù)據(jù),以便所述誤差能被最小化為將被熵編碼的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
36、如權(quán)利要求34所述的方法,其中步驟(e1)包括
(e11)使用所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成所述旋轉(zhuǎn)差分值;
(e12)通過(guò)量化所述旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
(e13)通過(guò)逆量化所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成復(fù)原旋轉(zhuǎn)差分值;
(e14)通過(guò)將所述復(fù)原旋轉(zhuǎn)差分值四元數(shù)乘以所述前關(guān)鍵幀的旋轉(zhuǎn)變換值來(lái)生成所述當(dāng)前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值。
37、如權(quán)利要求34所述的方法,其中步驟(e1)包括
(e11)基于所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值以及所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)檢測(cè)是否已經(jīng)發(fā)生旋轉(zhuǎn)方向誤差以致所述對(duì)象的原始旋轉(zhuǎn)方向與所述對(duì)象的譯碼旋轉(zhuǎn)方向相反;
(e12)調(diào)節(jié)所述旋轉(zhuǎn)差分值,以便所述對(duì)象的原始旋轉(zhuǎn)方向能與所述對(duì)象的譯碼旋轉(zhuǎn)方向相同;以及
(e13)根據(jù)在步驟(e11)中執(zhí)行的檢測(cè)結(jié)果,選擇所述旋轉(zhuǎn)差分值或在步驟(e12)中的所述調(diào)節(jié)旋轉(zhuǎn)差分值作為將被量化的差分?jǐn)?shù)據(jù)。
38、一種用于編碼定向內(nèi)插器的方法,所述定向內(nèi)插器包括表示在時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù),所述方法包括
(a)將由所述定向內(nèi)插器所構(gòu)成的動(dòng)畫路徑采樣成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,從而生成包括重新采樣關(guān)鍵字?jǐn)?shù)據(jù)和重新采樣關(guān)鍵字值數(shù)據(jù)的定向內(nèi)插器;
(d)減小在步驟(a)中采樣的所述關(guān)鍵字?jǐn)?shù)據(jù)的范圍并編碼所述關(guān)鍵字?jǐn)?shù)據(jù);以及
(e)通過(guò)生成和編碼旋轉(zhuǎn)差分值來(lái)編碼在步驟(a)中采樣的所述關(guān)鍵字值數(shù)據(jù),所述旋轉(zhuǎn)差分值被用來(lái)按幾乎等于通過(guò)當(dāng)前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)應(yīng)用到所述對(duì)象的旋轉(zhuǎn)變換和通過(guò)前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)而應(yīng)用到所述對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象。
39、如權(quán)利要求38所述的方法,其中步驟(a)包括將所述動(dòng)畫路徑分割成具有預(yù)定時(shí)間量間隔的多個(gè)預(yù)定部分,將每個(gè)部分的終點(diǎn)設(shè)置成所述采樣關(guān)鍵字?jǐn)?shù)據(jù),以及將存在于在每個(gè)部分的所述第一動(dòng)畫路徑上的關(guān)鍵字值數(shù)據(jù)設(shè)置為所述采樣關(guān)鍵字值數(shù)據(jù)。
40、如權(quán)利要求38所述的方法,其中所述步驟(e)包括
(e1)使用所述當(dāng)前關(guān)鍵幀的一旋轉(zhuǎn)變換值以及所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成旋轉(zhuǎn)差分值,所述旋轉(zhuǎn)差分值用來(lái)按幾乎等于通過(guò)當(dāng)前和前關(guān)鍵幀的關(guān)鍵字值數(shù)據(jù)而應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象,以及通過(guò)量化所述旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);以及
(e2)熵編碼所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
41、如權(quán)利要求40所述的方法,其中步驟(e1)包括
(e11)通過(guò)量化所述旋轉(zhuǎn)差分值的三個(gè)分量值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
(e12)調(diào)節(jié)所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的三個(gè)分量值;
(e13)逆量化所述調(diào)節(jié)分量值;
(e14)通過(guò)利用所述三個(gè)逆量化分量值而復(fù)原一個(gè)分量值來(lái)生成復(fù)原旋轉(zhuǎn)差分值;
(e15)測(cè)量所述旋轉(zhuǎn)差分值和所述復(fù)原旋轉(zhuǎn)差分值間的誤差并確定具有已調(diào)節(jié)分量值的旋轉(zhuǎn)差分?jǐn)?shù)據(jù),以便所述誤差能被最小化為將被熵編碼的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
42、如權(quán)利要求40所述的方法,其中步驟(e1)包括
(e11)使用所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)生成所述旋轉(zhuǎn)差分值;
(e12)通過(guò)量化所述旋轉(zhuǎn)差分值來(lái)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
(e13)通過(guò)逆量化所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成復(fù)原旋轉(zhuǎn)差分值;
(e14)通過(guò)將所述復(fù)原旋轉(zhuǎn)差分值四元數(shù)乘以所述前關(guān)鍵幀的旋轉(zhuǎn)變換值來(lái)生成所述當(dāng)前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值。
43、如權(quán)利要求40所述的方法,其中步驟(e1)包括
(e11)基于所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值以及所述前關(guān)鍵幀的復(fù)原旋轉(zhuǎn)變換值來(lái)檢測(cè)是否已經(jīng)發(fā)生旋轉(zhuǎn)方向誤差以致所述對(duì)象的原始旋轉(zhuǎn)方向與所述對(duì)象的譯碼旋轉(zhuǎn)方向相反;
(e12)調(diào)節(jié)所述旋轉(zhuǎn)差分值,以便所述對(duì)象的原始旋轉(zhuǎn)方向能與所述對(duì)象的譯碼旋轉(zhuǎn)方向相同;以及
(e13)根據(jù)在步驟(e11)中執(zhí)行的檢測(cè)結(jié)果,選擇所述旋轉(zhuǎn)差分值或在步驟(e12)中的所述調(diào)節(jié)旋轉(zhuǎn)差分值作為將被量化的差分?jǐn)?shù)據(jù)。
44、一種計(jì)算機(jī)可讀記錄介質(zhì),記錄可實(shí)現(xiàn)權(quán)利要求28至43中任何一個(gè)的方法的計(jì)算機(jī)可讀程序代碼。
45、一種用于譯碼位流的方法,定向內(nèi)插器被編碼成該位流,該定向內(nèi)插器包括表示在時(shí)間軸上關(guān)鍵幀的位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù),所述方法包括
(a)譯碼來(lái)自輸入位流的關(guān)鍵字?jǐn)?shù)據(jù);
(b)譯碼來(lái)自所述輸入位流的關(guān)鍵字值數(shù)據(jù);以及
(c)通過(guò)合成已譯碼的關(guān)鍵字值數(shù)據(jù)和利用所述已譯碼關(guān)鍵字值數(shù)據(jù)所球性線性內(nèi)插的關(guān)鍵字值數(shù)據(jù)來(lái)生成定向內(nèi)插器。
46、如權(quán)利要求45所述的方法,其中在步驟(c)中,如果沒(méi)有與當(dāng)前正在受到定向內(nèi)插器合成的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的譯碼關(guān)鍵字值數(shù)據(jù),則利用與先前已合成的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的譯碼關(guān)鍵字值數(shù)據(jù)以及與下一個(gè)將被合成的關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的已譯碼關(guān)鍵字值數(shù)據(jù)來(lái)內(nèi)插與當(dāng)前正在受到定向內(nèi)插器合成的所述關(guān)鍵字?jǐn)?shù)據(jù)相對(duì)應(yīng)的關(guān)鍵字值數(shù)據(jù)。
47、如權(quán)利要求45所述的方法,其中步驟(a)包括
通過(guò)熵譯碼所述輸入位流來(lái)生成差分?jǐn)?shù)據(jù);
通過(guò)在所述差分?jǐn)?shù)據(jù)上執(zhí)行預(yù)定DPCM操作和逆DND操作來(lái)生成量化關(guān)鍵字?jǐn)?shù)據(jù);
通過(guò)逆量化所述量化關(guān)鍵字?jǐn)?shù)據(jù)來(lái)生成復(fù)原關(guān)鍵字?jǐn)?shù)據(jù)。
48、如權(quán)利要求45所述的方法,其中步驟(b)包括
(b)通過(guò)熵譯碼來(lái)自所述位流的關(guān)鍵字值數(shù)據(jù)來(lái)生成循環(huán)DPCM旋轉(zhuǎn)差分?jǐn)?shù)據(jù)或量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
(b)通過(guò)在從所述熵譯碼器輸入的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上依據(jù)從所述位流譯碼的DPCM操作的次數(shù)來(lái)執(zhí)行逆循環(huán)DPCM操作以生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù);
(b)通過(guò)逆量化所述量化旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)生成旋轉(zhuǎn)差分值,所述旋轉(zhuǎn)差分值被用來(lái)按幾乎等于通過(guò)每個(gè)關(guān)鍵幀的四元數(shù)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象;以及
(b)通過(guò)將當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)差分值四元數(shù)乘以前關(guān)鍵幀的譯碼旋轉(zhuǎn)變換差分值來(lái)生成所述當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值。
49、一種計(jì)算機(jī)可讀記錄介質(zhì),記錄可實(shí)現(xiàn)權(quán)利要求45至49中任何一個(gè)的方法的計(jì)算機(jī)可讀程序代碼。
50、一種位流,定向內(nèi)插器被編碼成該位流,該定向內(nèi)插器包括表示在時(shí)間軸上關(guān)鍵幀位置的關(guān)鍵字?jǐn)?shù)據(jù)和表示對(duì)象的旋轉(zhuǎn)的關(guān)鍵字值數(shù)據(jù),所述位流包括
關(guān)鍵字?jǐn)?shù)據(jù)編碼/譯碼信息,關(guān)鍵字?jǐn)?shù)據(jù)和譯碼所述關(guān)鍵字?jǐn)?shù)據(jù)所需的信息被編碼成該信息;以及
關(guān)鍵字值數(shù)據(jù)編碼/譯碼信息,關(guān)鍵字值數(shù)據(jù)和譯碼所述關(guān)鍵字值數(shù)據(jù)所需的信息被編碼成該信息,
其中所述關(guān)鍵字?jǐn)?shù)據(jù)編碼/譯碼信息包括
逆DND操作信息,包括表示將在差分?jǐn)?shù)據(jù)上執(zhí)行的逆DND的多個(gè)預(yù)定周期的逆DND的次數(shù),所述差分?jǐn)?shù)據(jù)是通過(guò)熵譯碼所述位流生成的,以便擴(kuò)展所述差分?jǐn)?shù)據(jù)和用在每個(gè)逆DND操作周期中的差分?jǐn)?shù)據(jù)中的最大和最小值的范圍;
第一逆DPCM操作信息,包括將在所述逆DND差分?jǐn)?shù)據(jù)上執(zhí)行的逆DPCM操作的次數(shù),以便將逆DND差分?jǐn)?shù)據(jù)轉(zhuǎn)換成用于每個(gè)逆DPCM操作周期的量化關(guān)鍵字?jǐn)?shù)據(jù)和內(nèi)部關(guān)鍵字?jǐn)?shù)據(jù);以及
第一逆量化信息,用在逆量化中,以便通過(guò)逆量化所述量化關(guān)鍵字?jǐn)?shù)據(jù)來(lái)生成復(fù)原關(guān)鍵字?jǐn)?shù)據(jù);以及
關(guān)鍵字?jǐn)?shù)據(jù)編碼/譯碼信息,包括
通過(guò)量化旋轉(zhuǎn)差分值熵編碼的旋轉(zhuǎn)差分?jǐn)?shù)據(jù),所述旋轉(zhuǎn)差分值被用來(lái)按幾乎等于通過(guò)每個(gè)關(guān)鍵幀的四元數(shù)關(guān)鍵字值數(shù)據(jù)而應(yīng)用到該對(duì)象的旋轉(zhuǎn)變換間的差值來(lái)旋轉(zhuǎn)所述對(duì)象;
熵譯碼信息,包括表示將在所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上執(zhí)行的熵譯碼方法的熵譯碼模式;
逆循環(huán)DPCM操作信息,包括逆循環(huán)DPCM操作的次數(shù),表示是否將在熵譯碼旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上依據(jù)所述熵譯碼模式執(zhí)行逆循環(huán)DPCM操作;以及
第二逆量化信息,包括多個(gè)預(yù)定逆量化位,用來(lái)通過(guò)逆量化所述量化關(guān)鍵字值數(shù)據(jù)復(fù)原原始關(guān)鍵字值數(shù)據(jù)。
51、如權(quán)利要求50所述的位流,其中所述逆DND操作信息進(jìn)一步包括表示是否將在經(jīng)逆DND操作的差分?jǐn)?shù)據(jù)上執(zhí)行上移操作的標(biāo)志位。
52、如權(quán)利要求50所述的位流,其中所述第一逆量化信息包括當(dāng)逆量化所述量化關(guān)鍵字?jǐn)?shù)據(jù)時(shí)所使用的逆量化位大小以及在量化關(guān)鍵字?jǐn)?shù)據(jù)中的最大和最小值。
53、如權(quán)利要求52所述的位流,其中調(diào)節(jié)在所述量化關(guān)鍵字?jǐn)?shù)據(jù)中的最大和最小值,以便最小化所述量化關(guān)鍵字?jǐn)?shù)據(jù)的量化誤差。
54、如權(quán)利要求50所述的位流,其中所述關(guān)鍵字?jǐn)?shù)據(jù)編碼/譯碼信息進(jìn)一步包括在對(duì)包括在位流中的線性關(guān)鍵字區(qū)域進(jìn)行譯碼而使用的線性關(guān)鍵字譯碼信息,并且所述線性關(guān)鍵字譯碼信息包括表示是否存在所述線性關(guān)鍵字區(qū)域的標(biāo)志位,包括在所述線性關(guān)鍵字區(qū)域中的關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)量、以及所述線性關(guān)鍵字區(qū)域的開(kāi)始和結(jié)尾關(guān)鍵字?jǐn)?shù)據(jù),其中該線性關(guān)鍵字區(qū)域中的關(guān)鍵字?jǐn)?shù)據(jù)線性增加。
55、如權(quán)利要求50所述的位流,其中所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)被編碼,以便由四元數(shù)表示的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的僅三個(gè)分量被量化。
56、如權(quán)利要求50所述的位流,其中所述熵編碼信息進(jìn)一步包括
關(guān)鍵字值標(biāo)志位,表示所述關(guān)鍵字值數(shù)據(jù)的每個(gè)分量的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)是否具有相同值;以及
預(yù)定旋轉(zhuǎn)差分?jǐn)?shù)據(jù),當(dāng)所述關(guān)鍵字值標(biāo)志位表示所述關(guān)鍵字值數(shù)據(jù)的每個(gè)分量的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)具有相同值時(shí),將被譯碼成所有關(guān)鍵字值數(shù)據(jù)的旋轉(zhuǎn)差分?jǐn)?shù)據(jù)的每個(gè)分量。
57、如權(quán)利要求50所述的位流,其中逆循環(huán)DPCM信息進(jìn)一步包括用于在所述旋轉(zhuǎn)差分?jǐn)?shù)據(jù)上執(zhí)行逆循環(huán)DPCM操作的內(nèi)部旋轉(zhuǎn)差分?jǐn)?shù)據(jù)。
全文摘要
本發(fā)明提供一種用于對(duì)定向內(nèi)插器進(jìn)行編碼和譯碼的方法和裝置,該定向內(nèi)插器指出了在時(shí)間軸上關(guān)鍵幀的位置以及在每一個(gè)關(guān)鍵幀中的對(duì)象的旋轉(zhuǎn)。用于編碼定向內(nèi)插器的裝置包括斷點(diǎn)抽取器,從由輸入到其中的定向內(nèi)插器組成的第一動(dòng)畫路徑中抽取最小數(shù)量的斷點(diǎn),能產(chǎn)生不大于所述第一動(dòng)畫路徑與由抽取的斷點(diǎn)所生成的第二動(dòng)畫間的預(yù)定誤差極限;關(guān)鍵字?jǐn)?shù)據(jù)編碼器,編碼從所述斷點(diǎn)抽取器輸入的關(guān)鍵字?jǐn)?shù)據(jù);關(guān)鍵字值數(shù)據(jù)編碼器,通過(guò)生成旋轉(zhuǎn)差分?jǐn)?shù)據(jù)來(lái)編碼從所述斷點(diǎn)抽取器輸入的關(guān)鍵字值數(shù)據(jù),通過(guò)該操作,所述對(duì)象按幾乎等于當(dāng)前關(guān)鍵幀的旋轉(zhuǎn)變換值和前關(guān)鍵幀的旋轉(zhuǎn)變換值間的差值被旋轉(zhuǎn)變換。
文檔編號(hào)H03M7/40GK1441387SQ0216111
公開(kāi)日2003年9月10日 申請(qǐng)日期2002年11月27日 優(yōu)先權(quán)日2001年11月27日
發(fā)明者金道均, 鄭錫潤(rùn), 張義善, 禹相玉, 李信俊, 韓萬(wàn)鎮(zhèn), 張敬子 申請(qǐng)人:三星電子株式會(huì)社