專利名稱:數(shù)據(jù)數(shù)組預(yù)測編碼的方法和系統(tǒng)的制作方法
本申請和標(biāo)題為“對三維生成的景物中的旋轉(zhuǎn)和法線編碼的方法和系統(tǒng)”的共同未決申請相關(guān),后一申請的序列號為09/205,190,代理審查號為2167-0105-2,和本申請同一天提交,發(fā)明人也是JulienSignes和Olivier Ondet。該其同未決申請的內(nèi)容收錄為參考資料。
本發(fā)明涉及對計算機(jī)生成的圖象的編碼,并且更具體地涉及和數(shù)據(jù)的函數(shù)無關(guān)的對數(shù)據(jù)數(shù)組的統(tǒng)一編碼方法。從而,相容地編碼位置數(shù)據(jù)、旋轉(zhuǎn)和法線的數(shù)組。
術(shù)語“計算機(jī)生成的圖象”包含視頻技術(shù)的延伸領(lǐng)域。原始上,該術(shù)語通常等同于簡單的文本圖象或者二維圖象;然而,現(xiàn)在該術(shù)語包含任何類型的數(shù)字編碼視頻流。為了研究圖象流的編碼和譯碼所需要的技術(shù)成立了運動圖象專家組(MPEG)。所產(chǎn)生的標(biāo)準(zhǔn)(現(xiàn)稱為“MPEG-1”)已作為另二個MPEG標(biāo)準(zhǔn),MPEG-2和MPEG-4,的基礎(chǔ)。MPEG-4是一個“進(jìn)展中”的標(biāo)準(zhǔn)并且構(gòu)成本發(fā)明的基礎(chǔ)。最終的委員會草案是ISO/IEC FCD 14496-1 MPEG-4系統(tǒng)和-2 MPEG-4Visual,收錄這些最終的委員會草案作為參考資料。
該標(biāo)準(zhǔn)草案脫離基于單個流的視頻模型并且把焦點改變到一系列一致行動的流。該標(biāo)準(zhǔn)的一部分是用于景物的二進(jìn)制格式(也稱為“BIFS”)。該格式能描述三維對象和它們的運動并且提供和這部分的視頻流更多交互的能力。MPEG-4 BIFS的標(biāo)準(zhǔn)草案建議通過線性量化處理編碼多個數(shù)據(jù)字段,該處理未考慮這些多個字段內(nèi)的相關(guān)性。從而,MPEG-4 BIFS不描述數(shù)組的預(yù)測編碼。
另一種建議的圖形格式是用于虛擬現(xiàn)實標(biāo)記語言的壓縮二進(jìn)制格式(以下稱為“CBF VRML”),它包括一種只能應(yīng)用于一些節(jié)點的一些字段以及數(shù)據(jù)類型的有限子集的編碼方法??梢詮膚ww.vrml.org得到分別于1997年8月22日和1997年10月15日發(fā)布的CBF VRML標(biāo)準(zhǔn)的第四和第五草案,它們由本文收錄為參考資料。類似地,1998年4月3日發(fā)布的CBF VRML97的修訂需求報告也收錄為參考資料。
再一種圖形格式是標(biāo)記圖象文件格式(TIFF),TIFF說明書的版本6.0的內(nèi)容收錄為本文的參考資料。TIFF文件中的每個項是按四部分存儲的(1)標(biāo)記,(2)類型標(biāo)識符,(3)計數(shù)和(4)一個或多個值,版本6.0說明書的16頁指出“所有字段實際上是一維數(shù)組,盡管大多數(shù)字段只包含單個值”。另外,盡管16頁還指出每個文件可能存在多個圖象,該說明書是為獨立編碼的二維圖象而不是為流式三維圖象設(shè)計的。
本發(fā)明的一個目的是解決周知的MPEG-4 BIFS數(shù)據(jù)流中的編碼低效。
本發(fā)明的另一個目的是利用瞬時預(yù)測編碼處理提供一種用于對表達(dá)景物或?qū)ο蟮臄?shù)據(jù)數(shù)組編碼的方法和系統(tǒng)。
通過(1)統(tǒng)一地編碼值的數(shù)組的計算機(jī)實現(xiàn)的方法、(2)統(tǒng)一地編碼值的數(shù)組的系統(tǒng)和(3)統(tǒng)一地編碼值的數(shù)組的計算機(jī)程序產(chǎn)品中的一個或多個解決本發(fā)明的這些和其它目的。這樣的系統(tǒng)可應(yīng)用于存儲改進(jìn)以及游戲回放、虛擬現(xiàn)實環(huán)境和影片。另外,基于效率的改進(jìn),可以在比效率較低的編碼流帶寬更低的通信鏈路上回放依據(jù)本發(fā)明編碼的視頻流。
通過參照下述詳細(xì)說明,尤其是在連帶著各附圖下,對本發(fā)明的更為完整的理解以及它的許多伴隨優(yōu)點將會相當(dāng)清楚,附圖是
圖1示意表示用來提供本發(fā)明的編碼和/或譯碼服務(wù)的計算機(jī);圖2示意表示一個編碼器/譯碼器系統(tǒng);以及圖3示出用于編碼128位的旋轉(zhuǎn)的原始位長度;圖3B示出利用已知的量化和編碼方法的結(jié)果,其中利用8位的量化在各為27位下對一系列的旋轉(zhuǎn)編碼;以及圖3C示出利用依據(jù)本發(fā)明的量化和預(yù)測編碼方法的結(jié)果-即,利用8位量化和4位預(yù)測編碼(1)在27位下對第一個旋轉(zhuǎn)編碼和(2)在各為12位下對一系列相繼的旋轉(zhuǎn)編碼。
現(xiàn)參照各附圖,其中相似的參考數(shù)字指示各圖中相同或?qū)?yīng)的部分,圖1示意表示用于統(tǒng)一地編碼和/或譯碼值的數(shù)組的計算機(jī)系統(tǒng)。計算機(jī)100實現(xiàn)本發(fā)明的方法,其中計算機(jī)機(jī)殼102容納母板104,母板104含有CPU106、存儲器108(例如DRAM、ROM、EPROM、EEPROM、SRAM、SDRAM和閃速RAM)以及其它選用的專用邏輯部件(例如,各個ASIC)或可配置的邏輯部件(例如,GAL和可再編程FPGA)。計算機(jī)100還包括多個輸入部件(例如鍵盤122和鼠標(biāo)124)以及用于控制監(jiān)視器120的顯示卡110。另外,計算機(jī)系統(tǒng)100還包括利用適當(dāng)?shù)牟考偩€(例如,SCSI總線,增強型IDE總線或超DMA總線)連接的軟盤機(jī)114、其它可移動介質(zhì)部件(例如,光盤119、帶、可移動磁光介質(zhì)(未示出))和硬盤112或其它高密度固定介質(zhì)部件。也和同一個部件總線連接或者和其它部件總線連接,計算機(jī)系統(tǒng)100還可包括讀光盤機(jī)118、光盤讀/寫機(jī)單元(未示出)或者自動光盤機(jī)(未示出)。盡管光盤119示成是在CD盒式機(jī)中的,可把光盤119直接插入到CD-ROM機(jī)中,后者不需要盤盒。另外,打印機(jī)(未示出)還提供編碼的和/或譯碼的數(shù)組的打印列出。
如上面所述,本系統(tǒng)包括至少一種的計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)的例子包括光盤119、硬盤112、軟盤、磁帶、磁光盤、各種PROM(EPROM、EEPROM、閃速EPROM)、DRAM、SRAM、SDRAM等。本發(fā)明包括存儲在任一計算機(jī)可讀介質(zhì)上的或者其組合上的軟件,用于控制計算機(jī)100的硬件和使能計算機(jī)100與人類用戶交互。這樣的軟件包括但不限于部件驅(qū)動程序、操作系統(tǒng)和用戶應(yīng)用例如開發(fā)工具。這樣的計算機(jī)可讀介質(zhì)還包括本發(fā)明的用于統(tǒng)一地對景物描述或動畫中的數(shù)組進(jìn)行編碼和譯碼的計算機(jī)程序產(chǎn)品。本發(fā)明的計算機(jī)代碼機(jī)構(gòu)/部件可以是任何解釋的或可執(zhí)行的代碼機(jī)構(gòu),包括但不限于腳本、解釋程序、動態(tài)鏈接庫、Java類和完整的可執(zhí)行程序。
如圖2中所示,在建立景物240的第一步驟中使用創(chuàng)造工具200。一旦創(chuàng)造工具200建立一系列圖象,把這一系列圖象發(fā)送到量化器205。在量化后,把量化的圖象發(fā)送到預(yù)測器210,其利用前一幀和后一幀之間的相似性通過差編碼更緊致地表達(dá)后一幀的內(nèi)容。該預(yù)測器可包括線性的或非線性(即多序)的內(nèi)插。熵編碼器/譯碼器215編碼幀間的差。編碼器/譯碼器215可以為一些熵系統(tǒng)中的任一種(例如,自適應(yīng)算術(shù)編碼器)。編碼器/譯碼器215的結(jié)果由嵌入?yún)f(xié)議220格式化并且利用發(fā)送器或存儲部件225發(fā)送或者存儲。
為了譯碼格式后的存儲/發(fā)送圖象,反向地復(fù)舊編碼處理。首先,通過嵌入?yún)f(xié)議220譯碼格式以產(chǎn)生原始熵編碼的數(shù)據(jù)。把熵編碼的數(shù)據(jù)饋入到包含補償器的譯碼器。該補償器利用前面的幀和差編碼生成量化數(shù)據(jù)的幀。把量化數(shù)據(jù)發(fā)送到反量化器235,它把數(shù)據(jù)反量化成景物。由于量化處理中使用的位數(shù),該景物可能不是原始建立的景物的良好表達(dá),但是,通過使用本發(fā)明數(shù)組更有效地得到編碼從而可把附加的位組用于其它目的(例如,更高分辨率的量化)。
出于簡明的目的,以下把創(chuàng)造描述為建立一系列的動畫參數(shù)v。任一參數(shù)vi是該序列中的第i個參數(shù)并且本身可包含一個實數(shù)值數(shù)組。在量化期間,參數(shù)vi可變換成量化后的參數(shù)vqi。量化方法的一個例子是線性均勻量化,如在MPEG-4 BIFS版本1中所說明。
這種量化處理支持后面說明的在其中把值的預(yù)測擴(kuò)展到各種類型的值的補償處理。對每種數(shù)據(jù)類型定義一個或多個預(yù)測函數(shù),從而可以預(yù)測這種數(shù)據(jù)類型的值。在一替代實施例中,所有數(shù)據(jù)類型使用一種預(yù)測函數(shù)(例如,加法)。作為預(yù)測的后果,在譯碼期間為重建想要的景物通常需要的位數(shù)較少。
后面說明的編碼方法是一種通用的和統(tǒng)一的預(yù)測編碼方法,可應(yīng)用于景物中的所有類型的數(shù)據(jù)數(shù)組。這樣,該方法可應(yīng)用于幀內(nèi)編碼(即,I方式)和預(yù)測編碼(即,P方式)。在一替代實施例中,P方式里使用長度可變編碼器以進(jìn)一步減小數(shù)據(jù)尺寸。如圖3A—3C中所示,在應(yīng)用于旋轉(zhuǎn)時,利用量化能在更少的位數(shù)下完成數(shù)據(jù)的編碼,并且在和預(yù)測編碼組合下甚至能在更少的位數(shù)下完成數(shù)據(jù)的編碼。
還可以解決其它類型的數(shù)據(jù)。任何二維或三維參數(shù)v可以看成是如下的D維的實數(shù)值向量v=(v
,v[1],…,v[D-1])該參數(shù)的對應(yīng)量化值是如下的D′維的整數(shù)數(shù)組q=(q
,q[1],…,q[D′-1])其中維數(shù)D′不必必須等于D。向量、單位向量和整數(shù)組成依據(jù)本發(fā)明的預(yù)測、量化編碼方法的被編碼的三種特定種類的參數(shù)。
“向量”族劃分為三維向量、二維向量和一維向量。三維向量用于編碼下述類型的值三維位置、三維尺寸和紋理坐標(biāo)。二維向量用于編碼下述類型的值二維位置、二維尺寸和紋理坐標(biāo)。一維向量是浮點的用于編碼任何單個的非整數(shù)值,即,長度為1的浮點數(shù)組用于編碼“角度”、“尺度”、“插值器關(guān)鍵字”和“BoundFloat(邊界浮點)”類型的值。彩色是一種特殊形式的三維浮點向量,其帶有各用尺度0.1—1.0表達(dá)的紅、綠、蘭分量。根據(jù)MPEG-4 BIFS v1說明書,向量用于其中QuantType(量化類別)和AnimationType(動畫類別)為1、2、4、5、6、7、8、11和12的各種類別。
作為單位向量的特殊性質(zhì)的結(jié)果,單獨對待單位向量并用于法線和旋轉(zhuǎn)(QuantType和AnimationType為9和10)。在上面標(biāo)明的共同未決專利申請中公開使用旋轉(zhuǎn)和法線的其它細(xì)節(jié)。
最后一種類型,即整數(shù),也受到預(yù)測、量化和編碼。根據(jù)MPEG4BIFS v1說明書,該類別和quantType和AnimationType 3、13、14匹配。作為參考,下面的表1和表2給出對各類別的更完整的描述。
表1QuantType(量化類別)
表2AnimType(動畫類別)
量化/反量化處理是通過幾個參數(shù)規(guī)定的,這些參數(shù)取決于被編碼參數(shù)的總類別。對于向量,應(yīng)對量化器/反量化器提供quantMin對向量量化的最小界限(bound)—按一個維數(shù)和該參數(shù)的維數(shù)D相同的浮點數(shù)數(shù)組編碼。
QuantMax對向量量化的上界—按一個維數(shù)和該參數(shù)的維數(shù)D相同的浮點數(shù)組編碼。
QuantNbBits向量量化中采用的位數(shù)。對于某些類別(例如彩色和自然Bound Float(界限浮點)),可以從該參數(shù)的默認(rèn)(有限)界限得到QuantMin和QuantMax。在一替代實施例中,規(guī)定一個代替QuantMax的量化步驟,即
QuantStep=(QuantMax-QuantMin)/((2^(QuantNbBits))-1)對于單位向量,類似地只對編碼器/譯碼器提供一個編碼參數(shù)QuantNbBits,即,向量量化中采用的位數(shù)。出于一致性,分別用0和1定義浮點數(shù)QuantMin和quantMax。
對于整數(shù),向量化器/反量化器提供QuantMin對向量量化的下限一按整數(shù)編碼。
QuantNbBits向量量化中采用的位數(shù)。
基本量化處理根據(jù)下述三個參數(shù)量化實數(shù)值QuantMin最小量化值QuantMax最大量化值QuantNbBits量化采用的位數(shù)然后可把量化步驟定義為 然后通過下述函數(shù)(以C編程語言形式)定義基本量化處理int quantize(float QuantMin,float QuantMax,float v,int QuantNbBits)returns the rounded value of(v-QuantMin)/QuantsStep相應(yīng)地,通過下述函數(shù)定義基本反量化處理float invQuantize(float QuantMin,float QuantMax,float vq,int QuantNbBits)retums(quantMin+vq*QuantStep)MPEG4 BIFS v1中說明的量化處理使用諸如上面所說明的量化和反量化函數(shù)并且可應(yīng)用于本發(fā)明。只要量化處理同樣支持補償處理,可在替代實施例中采用其它量化和反量化函數(shù)。
作為補償處理的一部分,定義下述參數(shù)CompMin一個定義補償向量vDelta的下限的整數(shù)數(shù)組CompNbBits一個定義用于編碼補償向量的各分量的位數(shù)的整數(shù)這些值不是補償器的專用特性,但是定義二進(jìn)制文件中對補償向量vDelta的各分量的編碼。每個分量vDelta[i]通過CompMin[i]變換并且利用CompNbBits編碼。實際的編碼值則為vDelta[i]-CompMin[i]。
現(xiàn)在根據(jù)相繼的量化值vq1、vq2和它們之間的增量值vDelta說明總預(yù)測處理。
首先說明編碼處理。對于向量和整數(shù),計算是直接的并且為vDelta[i]=vq2[i]-vq1[i].
對于單位向量,采用更詳細(xì)的計算(并且在前面確定的共同未申請中更詳細(xì)的討論)。如上面所討論,若QuantNbBits=0,則實際上不存在編碼,因為沒有可使用的位。在該情況下,所有值假定為零并且不必寫到視頻流中。
然而,當(dāng)QuantNbBits>0時,按如下進(jìn)行編碼處理。首先把變量inv初始設(shè)為1(但在處理中該變量可能改變)。接著確定減少后的分量的數(shù)量N,其中對于法線N=2而對于旋轉(zhuǎn)N=3。然后,根據(jù)dOri=(ori2-ori1)mod(N+1)dDir=dir1*dir2scale=2QuantNbBits-1-1.計算vq1t和vq2之間的差方位和差方向。
接著孝慮二種情況
變量inverse根據(jù)inverse=inv*dDir計算。作為量化處理的邊緣不投影性的結(jié)果,vDelta對vq1補償?shù)玫降膙q2′不能不會產(chǎn)生準(zhǔn)確的vq2。但是,vq2和vq2′總是代表幾乎相同的法線和旋轉(zhuǎn)。
可以預(yù)測這三種基本類別的值(即,整數(shù)、向量和單位向量)中的每一種。利用簡單的減法預(yù)測整數(shù)。向量利用基于量化后的分量的減法預(yù)測。單位向量根據(jù)映象立方體的拓樸結(jié)構(gòu)采用專用的減法。
在具有各種數(shù)據(jù)類型的預(yù)測值后,在譯碼期間利用補償修正預(yù)測值和實際值之間的差。令vq1為先前計算的量化參數(shù)、vDelta為增量值而vq2為經(jīng)加法產(chǎn)生的量化值。然后是包含一個整數(shù)數(shù)組vq[]的量化值vq。另外,對于法線和旋轉(zhuǎn)vq1含有一個方位,并且只對法線vq1還含有一個方向。類似地,增量值vDelta含有一個整數(shù)數(shù)組vDelta。另外,對于法線它具有一個整數(shù)倒數(shù),其值為-1或1。接著根據(jù)要計算的值的類型計算結(jié)果vq2。對于向量和整數(shù),vq2的分量為vq2[i]=vq1[i]+vDelta[i]然而對于單位向量,由于單位立方體的結(jié)構(gòu)進(jìn)行附加處理。
如上面所說明,執(zhí)行下述方法。首先進(jìn)行逐個分量的相加,并把結(jié)果存儲到臨時數(shù)組中,其為vqTemp[i]=vq1[i]+vDelta[i]若QuantNbBits為零或1,scale設(shè)成為1/2,在其它情況下把scale置成為2QuantNbBits-1-1如在那篇共同未決的申請中更詳細(xì)說明那樣,對于本發(fā)明,使用QuantNbBits=0本質(zhì)上等同于QuantNbBits=1。通過只使用方向和方位信息(即,當(dāng)QuantNbBits=0時),可描述從一個面到任何其它面的移動。
然而,在下面說明的更常見情況中,QuantNbBits>=2。接著,設(shè)定減少后的分量的數(shù)量N(其中對于法線N=2而對于旋轉(zhuǎn)N=3)。一旦完成這些初始步驟,取決于遇到三種情況中的哪種情況執(zhí)行附加處理如下面說明那樣。
對于三種類型的值(即,整數(shù)、向量和單位向量)中的每一種,補償處理反向預(yù)測處理。這樣,對于整數(shù),簡單的加法處理復(fù)原預(yù)測減法。類似地,對于向量,使用基于量化分量的加法。最后,對于單位向量,使用拓樸相干加法,其潛在地需要計算新的方位和方向。
如參照圖2說明那樣,一旦編碼器215完成熵編碼,必須在該協(xié)議規(guī)定的格式下和標(biāo)題信息一起存儲結(jié)果值。從而,一實施例采用下述結(jié)構(gòu)(盡管其它結(jié)構(gòu)也是可能的)。首先,賦予每個節(jié)點的每個字段一個參數(shù)類別,其描述根據(jù)前面說明的處理使用Quant Min、QuantMax、QuantNb Bits、CompMin、ComPnb、CompNbBits中的哪些。接著編碼每個數(shù)組的標(biāo)題。標(biāo)題包含(1)字段的長度,以及(2)在給定下面三種類別中之一下對I方式(即,簡單量化)和P
方式的策略(a)單個I(幀內(nèi))值只跟有預(yù)測編碼值,(b)對每n個P值只提供一個I值(從而限制錯誤的傳播長度),以及(c)每個值前面(或后面)的一個位表示該值是I值還是為P值。
然后對流添加用于編碼預(yù)測值的量化參數(shù)和補償參數(shù)。在BIFS中可通過編碼后的字段的范圍內(nèi)的對應(yīng)量化參數(shù)檢索內(nèi)量化參數(shù)(Quant Min、QuantMax、QuantNbBits)。直接對流添加補償參數(shù)(CompMin、CompNbBits)。
最后,根據(jù)(幀)內(nèi)/預(yù)測策略編碼量化值的數(shù)組。I值按量化值編碼。通過其對話在任何二個I值間是公開的自適應(yīng)算術(shù)編碼器對值編碼。
下面的位流語法用于編碼值的數(shù)組。該位流語法使用MPEG-4FDIS 14496-1中規(guī)定的MSDL語言的約定。
1.0 ArrayOfData1.1語法class ArrayOfData{ArrayHeader header;ArrayOfValues values;}1.2語義該數(shù)據(jù)數(shù)組由Header和ArrayOfValues組成2.0 ArrayHeader2.1語法class ArrayHeader{int(5) NbBits;int(NbBits) numberOfFields;bit(2) IPPolicy;
if(IPPolicy=1)int(NbBits)intraInterval;InitialArrayQP qp;}2.2語義數(shù)組標(biāo)題含有規(guī)定字段數(shù)量的第一信息(NbBits是用來編碼numberOfFields的位數(shù))。接著按如下規(guī)定(幀)內(nèi)/預(yù)測策略(IPPolicy)若為0僅在開點處有一個內(nèi)值并且接著僅為預(yù)測編碼值若為1每給個數(shù)量的預(yù)測值一個內(nèi)值若為2每個值一個位以確定該值為內(nèi)值還是為預(yù)測值最后,編碼InitialArrayQP3.0 InitalArrayPQ3.1語法<pre listing-type="program-listing"><![CDATA[ class InitialArrayQP{ switch(IPPolicy) case 1 ihtNbBits; int(NbBits)intraInterval; //no break case 0 case 2 int(5) CompNbBits; for(int i=0;i<NbComp(quantType)) int(QuantNbBits+1)CompMin[i] //no break case3 break }]]></pre>3.2語義若IPPolicy為1,首先規(guī)定二個內(nèi)值之間的間隔尺寸。和IPPolicy無關(guān),編碼預(yù)測方式下CompNbBits和CompMin中使用的位數(shù)。(函數(shù)NbComp()是一個回送量化界限的分量數(shù)量的函數(shù),其和對象有關(guān)。例如,它為三維位置回送3,為二維位置回送2,而為旋轉(zhuǎn)回送3。)4.0 ArrayQP4.1語法<pre listing-type="program-listing"><![CDATA[ class ArrayQP{ Switch(intraMode) case 1 int NbBits int(NbBits)intraInterval; //no break case 0 case 2 boolean(1)hasCompNbBits if(hasCompNbBits) int(5) CompNbBits; boolean(1)hasCompNbBits if(hasCompMin) for(int i=0;i<NbComp(quantType)) int(QuantNbBitst+1)CompMin[i] //no break case3 break }]]></pre>
4.2語義ArrayQP和IntialArrayQP完成相同的目的,但在該情況中,任選地設(shè)定參數(shù),若流中未設(shè)定它們,按默認(rèn)、參照InitialArrayQP或參數(shù)的最近接收值設(shè)定它們。
若IPPolicy為1,首先規(guī)定二個內(nèi)值之閃的間隔尺寸。在任何情況下,編碼預(yù)測方式中采用的位數(shù)(CompNbBits)和CompMin。函數(shù)NbComp()是一個回送量化界限的分量數(shù)量的函數(shù),其簡單地和對象有關(guān)。例如,它為三維位置回送3,為二維位置回送2,為旋轉(zhuǎn)回送3,等等。
5.0 ArrayOfValues5.1語法<pre listing-type="program-listing"><![CDATA[ class ArrayOfValues{ ArrayIValue value
; for(int i=1;i<numberOfFields;i++) Switch(IntraMode){ case 0 ArrayPValue value; break; case 1 bit(1)isIntra; if(isIntra){ bit(1)hasQP; if(hasQP) ArrayQP qp; ArrayIValue value; }else{ ArrayPvalue value;} break case 2 if((i%intraInterval)=0){ bit(1)hasQP; if(hasQP) ArrayQP qp; ArrayIValue value; }else{ ArrayPvalue value; } break; } }]]></pre>5.2語義該值的數(shù)組首先編碼第一內(nèi)值,并接著根據(jù)IPPolcy編碼內(nèi)(Intra)值和預(yù)測(Predictive)值。在僅為P方式下,不編碼更多的內(nèi)值。在第二方式中,一個位指示每個值處的P或I方式。在該情況下,可為Intra值發(fā)送一個QP。若發(fā)送QP,復(fù)位算術(shù)譯碼器的統(tǒng)計數(shù)據(jù)。在第三模式下,每個intraInterval值發(fā)送一個Intra。
6.0 ArrayIValue6.1語法<pre listing-type="program-listing"><![CDATA[ class AnimationIValue(FieldData field){ Switch(field.animType){ case 9//Normal int(1) direction case 10//Rotationint(2)orientation break default break } for(j=0;j<getNbComp(field);j++) int(QuantNbBits)Vq[j];}]]></pre>6.2語義ArrayIValue代表一個字段的量化的內(nèi)值。根據(jù)該字段的類型按量化一節(jié)中說明的量化處理編碼該值。對于法淺首先編碼量化處理中規(guī)定的方向和方位值。對于旋轉(zhuǎn)只編碼方位值。若代表方向的位為0則把法線的方向置為1,若該位為1則把法線的方向置為-1。利用二個位把方位的值編碼成不帶符號的整數(shù)。接著利用該字段數(shù)據(jù)結(jié)構(gòu)中規(guī)定的位數(shù)把該字段的值的壓縮分量vq[i]編碼為一序列的無符號整數(shù),內(nèi)方式下的譯碼處理通過應(yīng)用反量化處理計算各動畫值。
7.0 ArrayPValue7.1語法<pre listing-type="program-listing"><![CDATA[ class ArrayPValue(FieldData field){ switch(field.animType){ case 9//Normal int(1)inverse break; default break }for(j=0;j<getNbComp(field);j++) int(aacNbBits)vqDelta[j];}]]></pre>7.2語義ArrayPValue代表一字段的前一接收到的量化值和當(dāng)前量化值之間的差。利用前面說明的補償處理編碼該值。
從自適應(yīng)算術(shù)編碼器流利用過程v_aac=aa_decode(model)譯碼這些值。利用過程model_updete(model,v_aac)更新模型。對于法線,通過帶有統(tǒng)一、不更新的模型的自適應(yīng)算術(shù)編碼器譯碼逆值,若該位為0,則逆置為1,若該位為1,則逆置為-1。接著逐個地譯碼補償值vqDelta[i]。令vq(t-1)為前一幀上譯碼的量化值而v_aac(t)為幀的自適應(yīng)算術(shù)譯碼器利用字段的模型地時刻t譯碼的值。按如下從前一值得到時刻t上的值vDelta(t)=v_acc(t)+Pminvq(t)=AddDelta(vq(t-1),vDelta(t))v(t)=InvQuant(t)每次通過自適應(yīng)算術(shù)編碼器譯碼一個值時更新一次字段的模型。若動畫類型為1(三維位置)或2(二維位置),該字段值的每個分量使用它自己的模型和偏移PMin[i]。在所有其它情況下對所有分量使用相同模型和偏移PMin
。
如下面的表3中所示,和其本上類似地表達(dá)視頻流的各種VRMLASCII文件相比,依據(jù)本發(fā)明的對值的數(shù)組的壓縮可對景物提供明顯的壓縮。
表5
由表5可以看出,實施例11中的表面上用環(huán)氧樹脂包覆的樹脂粘接型磁體,與對比例5中沒有包覆的相比,出現(xiàn)生銹的時間要長得多,具有足夠的防銹效果。
對二次利用實施例1和對比例3的樹脂粘接型磁體制備的樹脂粘接型磁體,作進(jìn)一步地解釋。
首先,用塑料粉碎機(jī)將實施例1和對比例3的樹脂粘接型磁體進(jìn)行粉碎,篩分后使其最大粒徑為100μm或更小,并按照上述1~3的方法制備樹脂粘接型磁體,按上述4的方法對其性能進(jìn)行評價。結(jié)果列于表6中。
表權(quán)利要求
1.一種統(tǒng)一編碼視頻流的計算機(jī)實現(xiàn)的方法,該方法包括步驟(a)為視頻流中實際使用的每種數(shù)據(jù)類型確定一個對應(yīng)的類型專用的量化參數(shù);(b)從該視頻流中使用的數(shù)據(jù)類型中的一種類型的第一數(shù)組中選擇第一值;(c)利用對應(yīng)的類型專用量化參數(shù)量化該第一值,(d)從該視頻流中使用的數(shù)據(jù)類型中的該種類型的該第一數(shù)組中選擇第二值;(e)利用對應(yīng)的類型專用量化參數(shù)從該第一值和該第二值確定一預(yù)測值;(f)利用對應(yīng)的類型專用量化參數(shù)量化該預(yù)測值;(g)把量化的第一值和量化的預(yù)測值編碼到該視頻流中;以及(h)具體地對該視頻流中要編碼的所有數(shù)組重復(fù)步驟(b)-(g)
2.依據(jù)權(quán)利要求1的方法,還包括把標(biāo)題信息編碼到視頻流中的步驟。
3.依據(jù)權(quán)利要求1的方法,還包括譯碼步驟(g)和(h)中編碼的視頻流的步驟。
全文摘要
一種用于統(tǒng)一編碼視頻流的數(shù)值組的方法和系統(tǒng)。使用待編碼的元素的數(shù)據(jù)類型,可以將預(yù)測值量化和編碼為視頻流的一部分產(chǎn)生的視頻流編碼旋轉(zhuǎn)、法線和向量。
文檔編號H03M7/40GK1329733SQ99814076
公開日2002年1月2日 申請日期1999年11月30日 優(yōu)先權(quán)日1998年12月4日
發(fā)明者朱利安·西格內(nèi)斯, 奧利弗·昂代特 申請人:法國電信公司