(57)【特許請求の範囲】
【請求項１】
コンピュータ生成イメージストリームを符号化するコンピュータで実行される方法を実現するための命令を記憶したコンピュータ読み取り可能な媒体において、
前記方法は、
（ａ）イメージストリーム中のイメージデータを表現するのに使用される第１の数値データタイプに対して、対応するタイプ特定の量子化パラメータを決定するステップと、
（ｂ）前記イメージストリーム中で使用される第１の数値データタイプのデータアレイから第１の値を取得するステップと、
（ｃ）前記対応するタイプ特定の量子化パラメータを使用して前記第１の値を量子化するステップと、
（ｄ）前記イメージストリーム中で使用される第１の数値データタイプの前記データアレイから、前記第１の値に続く第２の値を取得するステップと、
（ｅ）前記第１の数値データタイプに対応する所定の減算プロセスにより、前記第１の値と前記第２の値とから予測値を決定し、前記予測値は、前記第１の値と前記第１の数値データタイプに対応する所定の予測関数とに基づいて前記第２の値を予測するのに用いられるステップと、
（ｆ）前記対応するタイプ特定の量子化パラメータを使用して前記予測値を量子化するステップと、
（ｇ）前記量子化された第１の値と前記量子化された予測値とを符号化して、前記符号化された量子化第１の値と前記符号化された量子化予測値とを前記イメージストリームに入れるステップと、
（ｈ）前記イメージストリーム中のイメージデータを表現するのに使用される第２の数値データタイプ、および符号化されて前記イメージストリームに入れられるべき前記第２の数値データタイプのデータアレイに対して前記ステップ（ａ）−（ｇ）を反復し、前記第２の数値データタイプは前記第１の数値データタイプとは異なるステップと、
（ｉ）前記ステップ（ｇ）および（ｈ）で符号化されたイメージストリームを復号化するステップとを含むコンピュータ読み取り可能な媒体。
【請求項２】
ヘッダ情報を符号化して前記イメージストリームに入れるステップをさらに含む請求項１記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【発明の属する技術分野】
【０００１】
本発明はコンピュータで生成されるイメージの符号化に関し、特にデータの関数と無関係な、データアレイの統一的な符号化方法に関する。これにより位置データ、回転、垂線のアレイが一貫して符号化される。
【従来の技術】
【０００２】
用語“コンピュータで生成されたイメージ”とは、ビデオ技術の拡張された分野を含む。元来、この用語は、簡単なテキストイメージまたは2Dイメージと等しいものを表すことが多かったが、現在ではこの用語は、あらゆるタイプのデジタル符号化されたビデオストリームを含む。モーションピクチャーズエキスパートグループ(MPEG)は、イメージストリームの符号化および復号化に要求される技術を研究するために形成された。結果的に得られた標準規格（現在“MPEG-1”と呼ばれている）は、２つの付加的なMPEG標準規格、MPEG-2およびMPEG-4の基礎として機能している。MPEG-4標準規格は、“進行中”の標準規格であり、本発明の基礎を形成する。委員会の最終的な草案は、ISO/IEC FCD 14496-1 MPEG-4システムおよび-2 MPEG-4ビジュアルである。その内容は参照によりここに取り込まれている。
【０００３】
草案の標準規格はビデオの単一ストリームベースのモデルから出発し、連携して動作する一連のストリームへ焦点を移している。標準規格の一部分はシーンに対するバイナリフォーマット（“BIFS”としても知られている）である。このフォーマットは3Dオブジェクトおよびそれらの運動の記述を可能にし、ビデオストリームのその部分とのさらなるインタラクションの能力を備えている。MPEG-4 BIFS用草案標準規格は、線形量子化プロセスにより多数のデータフィールドを符号化することを提案しているが、これは多数のフィールド内の相関を考慮していない。したがってMPEG-4 BIFSはアレイの予測符号化については記載していない。
【０００４】
別の提案されたグラフィックスフォーマットはバーチャルリアリティマークアップ言語用の圧縮されたバイナリフォーマット（以後“CBF VRML”という）であり、これはいくつかのノードのいくつかのフィールドに対してそしてデータタイプの限定された一部に対してのみ適用可能である。それぞれ1997年8月22日と1997年10月15日付けのCBF VRML標準規格の第４、第５の草案はwww.vrml.orgから入手可能であり、参照によりここに取り込まれている。同様に、1998年4月3日付けのCBF VRML97の改定された要求事項明細書も参照によりここに取り込まれている。
【０００５】
さらに別のグラフィックスフォーマットは、タグイメージファイルフォーマット（TIFF）である。TIFF仕様のバージョン6.0の内容は、参照によりここに取り込まれている。TIFFファイルの各エントリは４つの部分、即ち（１）タグ、（２）タイプ識別子、（３）カウント、（４）１つ以上の値、として記憶される。バージョン6.0仕様書の１６ページには、“大部分のフィールドが１つの値だけを含んでいても、全てのフィールドが実際には１次元アレイである”ことが記載されている。さらに、１６ページには１ファイルにつき多数のイメージが存在してもよいことが記載されているが、仕様書は3Dイメージのストリーミングではなく独立して符号化された2Dイメージに対して設計されている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、既知のMPEG-4 BIFSデータストリームの符号化の非効率性を解決することである。
【０００７】
本発明のさらに別の目的は、時間的な予測符号化プロセスを使用して、シーンまたはオブジェクトを表すデータのアレイを符号化するための方法およびシステムを提供することである。
【課題を解決するための手段】
【０００８】
本発明のこれらの目的およびその他の目的は、（１）値のアレイを一律に符号化するコンピュータにより実現される方法と、（２）値のアレイを一律に符号化するシステムと、（３）値のアレイを一律に符号化するコンピュータプログラム製品のうちの１つ以上のものにより解決される。このようなシステムは、ゲーム、バーチャルリアリティ環境、および映画の改良された記憶および再生に適用可能である。さらに、向上した効率に基づいて、本発明により符号化されたビデオストリームは、あまり効率的ではない符号化されたストリームよりも狭い帯域幅の通信リンクによって再生できる。
【発明の実施の形態】
【０００９】
本発明のより完璧なアプリケーション、およびそれに付随する利点の多くは、以下の詳細な説明を参照することによって、特に添付図面とともに検討することによって容易に明らかになるであろう。  
図面を参照すると、同じ参照符号は、いくつかの図にわたって同じまたは対応した部分を示している。図１は、値のアレイの一律の符号化および／または復号化を行うコンピュータシステムの概略図である。コンピュータ100 は本発明の方法を実施し、コンピュータハウジング102 はマザーボード104を収容している。マザーボード104は、CPU106 と、メモリ108 （例えば、DRAM，ROM，EPROM，EEPROM，SRAM，SDRAM，およびフラッシュRAM）と、その他のオプション的な特定用途向け論理デバイス（例えば、ASIC）または構成可能な論理デバイス（例えば、GALおよび書き換え可能FPGA）とを含む。コンピュータ100 はさらに、複数の入力デバイス（例えば、キーボード122 およびマウス124 ）、およびモニタ120 を制御するためのディスプレイカード110 を含む。さらに、コンピュータシステム100 はフロッピー（登録商標）ディスクドライブ114、他の取外し可能な媒体デバイス（例えば、コンパクトディスク119 、テープ、および（示されていない）取外し可能な磁気光学媒体）、およびハードディスク112または適切なデバイスバス（例えば、SCSIバス、強化されたIDEバス、またはウルトラDMAバス）を使用して接続された固定された他の高密度媒体ドライブも備えている。また、同じデバイスバスまたは別のデバイスバスに接続されているものとして、コンピュータ100 は、コンパクトディスク読出し装置118 、（示されていない）コンパクトディスク読出し／書込みユニット、または（示されていない）コンパクトディスクジュークボックスをさらに備えていてもよい。コンパクトディスク119 はCDキャディに入って示されているが、コンパクトディスク119はキャディを必要としないCD-ROMドライブ中に直接挿入することができる。さらに、符号化および／または復号化されたアレイのリストが（示されていない）プリンタにより印刷される。
【００１０】
前述したように、システムは、少なくとも１つのコンピュータ読出し可能媒体を含む。コンピュータ読出し可能媒体の例は、コンパクトディスク119 、ハードディスク112 、フロッピー（登録商標）ディスク、テープ、光磁気ディスク、PROM（EPROM，EEPROM，フラッシュEPROM），DRAM，SRAM，SDRAMなどである。本発明は、コンピュータ読出し可能媒体の任意の１つまたはそれらの組み合わせに記憶されるソフトウェアを含み、このソフトウェアはコンピュータ100 のハードウェアを制御し、コンピュータ100 が人間のユーザと対話できるようにする。このようなソフトウェアは、デバイスドライバ、オペレーティングシステム、および開発ツールのようなユーザアプリケーションを含むが、それらに制限されない。これらのコンピュータ読出し可能媒体はさらに、シーン記述および／またはアニメーション化におけるアレイの一律の符号化および／または復号化のための本発明のコンピュータプログラム製品をさらに含む。本発明のコンピュータコード機構／デバイスは、スクリプト、翻訳プログラム、ダイナミックリンクライブラリ、Java（登録商標）クラス、および完全な実行可能プログラムを含む、任意の翻訳されたまたは実行可能なコードメカニズムとすることができるが、それらに制限されない。
【００１１】
図２に示されているように、オーサリングツール200 はシーン240 を生成する第１のステップで使用される。オーサリングツール200 が一連のイメージを生成すると、それら一連のイメージは量子化装置205 へ送信される。量子化後、量子化されたイメージはプレディクタ210 へ送られ、このプレディクタ210は、前のフレームと後のフレームの間の類似性を利用して、差分符号化によって後のフレームの内容をさらにコンパクトに表す。プレディクタは線形または非線形（即ち、多次）補間を含んでもよい。フレーム間の差分はエントロピーエンコーダ／デコーダ215 により符号化される。エンコーダ／デコーダ215 は多数のエントロピーシステムのうちの任意の１つ（例えば、適応型算術エンコーダ）であってもよい。エンコーダ／デコーダ215 の結果は、組込まれたプロトコル220 でフォーマットされ、送信機または記憶装置225 を使用して送信または記憶される。
【００１２】
フォーマットされ、記憶され／送信されたイメージを復号化するため、逆に“元に戻す”ように符号化プロセスが行われる。最初に、フォーマットは、組込まれたプロトコル220 により復号化されて、元のエントロピー符号化データが生成される。このエントロピー符号化データは、補償装置を含むデコーダ230 に与えられる。補償装置は、前のフレームと差分符号化を使用して、量子化されたデータのフレームを生成する。量子化されたデータはデータをシーンに逆量子化する逆量子化装置235 に送られる。量子化プロセスでは多くのビットが使用されるので、シーンはオーサリングされた元のシーンの完全な表示ではないかもしれないが、本発明を使用することにより、追加のビットを他の目的（例えば高い分解能の量子化）に使用できるように、アレイがより効率的に符号化される。
【００１３】
明瞭にする目的で、オーサリングはここでは一連のアニメーションパラメータｖを生成するために実行されるものとして説明される。任意のパラメータvi は一連のパラメータのｉ番目のパラメータであり、それ自体は実数値のアレイを含んでもよい。量子化中、パラメータvi は量子化されたパラメータvqi に変換される。量子化方法の１つの例は、MPEG-4BIFSバージョン１に記載されているような線形の一律の量子化である。
【００１４】
このような量子化プロセスは、以下で説明するような、値の予測が全ての値のタイプに拡張される補償プロセスをサポートする。１つ以上の予測関数が各データタイプに対して規定され、これによりそのデータタイプの値が予測できる。別の実施形態では、１つの予測関数（例えば、加算）が全てのデータタイプに対して使用される。予測の結果として、復号化中に、目的のシーンを再生成するのに必要とされるビットの数は、一般的により少なくなる。
【００１５】
以下で説明する符号化方法は、シーン内のデータのアレイの全てのタイプに適用される一般化された一律の予測符号化方法である。したがって、この方法はフレーム内符号化（即ちＩモード）と予測符号化（即ちＰモード）に適用可能である。代わりの実施形態において、Ｐモードでは、可変長のエンコーダがデータサイズをさらに減少するために使用される。図３の（Ａ）乃至（Ｃ）で示されているように、回転に適用される場合、データの符号化は量子化なしのときよりも少ない数のビットで実現でき、予測符号化と組み合わせる場合にはさらに少数のビットで実現できる。
【００１６】
別のタイプのデータも処理できる。任意の2Dまたは3Dパラメータｖは、次式により与えられる次元Ｄの実数値のベクトルとして見ることができる。  
v=(v[0],v[1],…,v[D-1])  
このパラメータの対応する量子化値は、次式により与えられる次元Ｄ' の整数のアレイである。  
q=(q[0],q[1],…,q[D'-1])  
ここで次元Ｄ' はＤに等しい必要はない。ベクトル、単位ベクトル、整数は、本発明の予測的かつ量子化された符号化にしたがって符号化されるパラメータの３つの特定のカテゴリーを構成している。
【００１７】
グループ“ベクトル”は、３次元、２次元、１次元ベクトルに区分される。３次元ベクトルは、位置3D、サイズ3D、テクスチャ座標の各タイプの値を符号化するために使用される。２次元ベクトルは、位置2D、サイズ2D、テクスチャ座標の各タイプの値を符号化するために使用される。１次元ベクトルは、任意の１つの整数ではない値を符号化する浮動点である。即ち、角度、スケール、補間キー、境界浮動点の各タイプの値を符号化するために長さｌの浮動小数点アレイが使用される。色も、スケール０．０−１．０でそれぞれ表される赤、緑、青成分を有する浮動小数点３次元ベクトルの特別な形態である。MPEG-4 BIF Sv1仕様に基づいて、量子化タイプとアニメーションタイプが１，２，４，５，６，７，８，１１，１２であるカテゴリーにベクトルは使用される。
【００１８】
単位ベクトルの特別な特性の結果として、単位ベクトルは別々に処理され、垂線および回転(QuantTypesとAnimationTypes9および10)に使用される。回転および垂線の使用のさらなる詳細は、先に参照した本出願人の同日特許出願の明細書に記載されている。
【００１９】
最後のカテゴリーである整数も予測的で量子化される符号化を受ける。MPEG4 BIFSv1仕様に基づくと、このカテゴリーは量子化タイプとアニメーションタイプ３，１３，１４に一致する。参照のため、カテゴリーのさらに完全な記述を以下のテーブル１とテーブル２で行う。  
テーブル１：量子化タイプ（量子化カテゴリー）  
カテゴリー  説明  
０      なし  
１      3D位置  
２      2D位置  
３      描画順序  
４      SF色  
５      テクスチャ座標  
６      角度  
７      スケール  
８      補間キー  
９      垂線  
１０      回転  
１１      オブジェクトサイズ3D  
１２      オブジェクトサイズ2D  
１３      線形スカラー量子化  
１４      座標インデックス  
１５      保留  
テーブル２：アニメーションタイプ  
カテゴリー  説明  
０      なし  
１      位置3D  
２      位置2D  
３      保留  
４      色  
５      保留  
６      角度  
７      浮動点  
８      境界浮動点  
９      垂線  
１０      回転  
１１      サイズ3D  
１２      サイズ2D  
１３      整数  
１４      保留  
１５      保留  
量子化／逆量子化プロセスはいくつかのパラメータにより特定される。これらのパラメータは符号化パラメータの一般的なカテゴリーに基づく。ベクトルに関して、量子化装置／逆量子化装置に以下のものが与えられるべきである。  
QuantMin：ベクトルの量子化の最小境界であり、パラメータの次元Ｄと同じ次元の浮動小数点の数（“浮動点”）のアレイとして符号化される。  
QuantMax：ベクトルの量子化の上限境界であり、パラメータの次元Ｄと同じ次元の浮動点のアレイとして符号化される。  
QuantNbBits：ベクトルの量子化に使用されるビット数である。  
あるカテゴリー（例えば、色、すなわち当然に境界浮動点）に対しては、QuantMinとQuantMax値はパラメータのデフォルト（有限）境界から得られる。別の実施形態では、量子化ステップはQuantMaxの代わりに以下のように特定される。  
QuantStep＝(QuantMax-QuantMin)/((2^(QuantNbBits ))-1)
同様に、単位ベクトルに対して、エンコーダ／デコーダは、１つの符号化パラメータQuantNbBits、即ちベクトル量子化で使用されるビット数が与えられるだけである。一貫させるために、浮動点QuantMinとQuantMaxはそれぞれ０と１として規定される。
【００２０】
整数に対しては、量子化装置／逆量子化装置には以下のものが与えられる。  
QuantMin：ベクトルに対する量子化の下限境界であり、整数として符号化される。  
QuantNbBits：ベクトルの量子化で使用されるビット数である。  
基本的な量子化プロセスは以下の３つのパラメータにしたがって実数値を量子化する。  
QuantMin：最小の量子化値である。  
QuantMax：最大の量子化値である。  
QuantNbBits：量子化で使用されるビット数である。
【００２１】
量子化ステップは以下のものにしたがって規定できる。  
QuantNbBits ≦０：量子化ステップは実際の意味をもたず、量子化値は単に０に設定される。  
QuantNbBits ＞０： QuantStep =(QuantMax-QuantMin)/(2QuantNbBits -1)
基本的な量子化プロセスは（Ｃプログラミング言語スタイルで）以下の関数により規定される。  
int quantize (float QuantMin, float QuantMax, float v, int QuantNbBits) 
returns the rounded value of (v-QuantMin) / QuantStep   
したがって、基本的な逆量子化プロセスは以下の関数により規定される。  
float invQuantize (float QuantMin, float QuantMax, float vq, int QuantNbBits )    
returns (QuantMin+vq*QuantStep)  
MPEG4 BIFS v1で記載されている量子化プロセスは、前述したような量子化および逆量子化関数を使用し、そして本発明に適応可能である。量子化プロセスが補償プロセスも同様にサポートする限り、他の量子化および逆量子化関数を代わりの実施形態で使用してもよい。
【００２２】
補償プロセスの一部として、以下のパラメータが規定される。  
CompMin：補償ベクトルvDeltaの下限境界を規定する整数アレイである。  
CompNbBits：補償ベクトルの成分を符号化するために使用されるビット数を規定する整数である。
【００２３】
これらの値は補償装置の特別な特性ではないが、バイナリファイル中の補償ベクトルvDeltaの成分の符号化を規定する。各成分vDelta[i]は、CompMin[i]により変換され、CompNbBitsを使用して符号化される。したがって、実際の符号化値はvDelta[i]-CompMin[i]である。
【００２４】
一般的な予測プロセスを、連続的な量子化値vq1とvq2、およびそれらの間のデルタ値vDeltaに関して説明する。
【００２５】
符号化プロセスを最初に説明する。ベクトルおよび整数に対しては、計算は簡単であり、次式により与えられる。  
vDelta[i]=vq2[i]-vq1[i]
単位ベクトルに対しては、さらに詳細な計算が使用される（上述した共に留保中の特許出願でさらに詳細に説明されている）。前述したように、QuantNbBits=0ならば、使用するために利用可能なビットがないので実際の符号化は存在しない。その場合、全ての値はゼロと仮定され、ビデオストリームに書き込まれる必要はない。
【００２６】
しかしながら、QuantNbBits>0のとき、符号化プロセスは以下のように行われる。最初に、変数invは１に設定される（しかしこの変数はプロセス中に変更されてもよい）。次に、減少された成分の数Ｎが決定され、ここで垂線ではＮ＝２、回転ではＮ＝３である。その後、vq1とvq2との間の差分方位および方向が以下の式に基づいて計算される。  
dOri=(ori2-ori1)mod(N+1)  
dDir=dir1*dir2  
スケール＝２QuantNbBits-1 −１
２つの場合について検討する。  
【表１】
0004444943.tif 000002
【００２７】
変数inverseは、inverse=inv*dDirにしたがって計算される。量子化プロセスの限界的非単射性（marginal non-injectivity）の結果、vDeltaによるvq1の補償、vq2’は正確にvq2を生成しない。しかしながらvq2とvq2'は常にほぼ同一の垂線または回転を表す。
【００２８】
値の３つの基本的なカテゴリー（即ち、整数、ベクトル、単位ベクトル）のそれぞれの値が予測できる。整数は簡単な減算を使用して予測される。ベクトルは予測のための量子化された成分ベースの減算を利用する。単位ベクトルはマッピングキューブのトポロジ構造に基づいた特殊化された減算を用いる。
【００２９】
各データタイプの値が予測されると、復号化中に補償が使用され、予測値と実際の値との間の差が補正される。vq1を先に計算された量子化パラメータとし、vDeltaをデルタ値とし、vq2を加算から得られた量子化値とする。結果として、量子化値vqは整数のアレイvq[]を含む。さらに、垂線および回転に対しては、vq1は方位を含み、垂線のみは、方向を含む。同様に、デルタ値vDeltaは整数のアレイvDelta[]を含む。さらに、垂線に対しては、値が−１または１である整数の逆数を含む。結果的なvq2は計算されている値のタイプに応じて計算される。ベクトルおよび整数に対しては、vq2の成分は次式により与えられる。  
vq2[i]=vq1[i]+vDelta[i]  
しかしながら、単位ベクトルに対しては、単位キューブ構造のために付加的な処理が実行される。
【００３０】
前述したように、以下の方法が実行される。最初に、成分単位での加算が実行され、その結果は以下により与えられる一時的なアレイに記憶される。  
vqTemp[i]=vq1[i]+vDelta[i]  
QuantNbBitsが0または1であるならば、スケールは１／２に設定され、そうでなければ2QuantNbBits-1-1に設定される。共に留保中の特許出願でさらに詳細に説明されているようにQuantNbBits=0の使用は、基本的に本発明についてのQuantNbBits=1と等しい。方向および方位情報だけを使用することにより（即ちQuantNbBits=0のとき）、１つの面から他のそれぞれの面への移動が説明できる。
【００３１】
しかしながら、以下で説明するさらに一般的な場合では、QuantNbBits>=2である。減少された成分の数Ｎが設定される（ここで垂線ではN=2、回転ではN=3である）。これらの初期ステップが行われると、３つの条件のいずれが満たされるかに基づいて、付加的な処理が以下で説明するように実行される。
【表２】
0004444943.tif 000003
【００３２】
３つのタイプの値（即ち整数、ベクトル、単位ベクトル）のそれぞれでは、補償プロセスは予測プロセスの逆である。即ち整数では、簡単な加算プロセスは予測的な減算をもとに戻す。同様に、ベクトルに対しては、量子化された成分ベースの加算が使用される。最後に、トポロジ的なコヒーレント加算が単位ベクトルに対して使用され、潜在的に新しい方位と方向の計算を必要とする。
【００３３】
図２を参照して説明したように、エンコーダ215 がエントロピー符号化を完了すると、結果的な値は、ヘッダ情報と共に、プロトコルにより特定されたフォーマットで記憶されなければならない。したがって、１つの実施形態は（他の構造も可能であるが）以下の構造を利用する。まず、各ノードの各フィールドにはパラメータカテゴリーが与えられる。パラメータカテゴリーは、先に説明したプロセスにしたがって、QuantMin，QuantMax，QuantNbBits，CompMin，CompNbBitsのどれが使用されるべきかを記述する。次に、各アレイに対するヘッダが符号化される。ヘッダは以下のものを含む。  
（１）フィールドの長さ、
（２）以下の３つのカテゴリーのうちの１つが与えられた場合のＩモード（即ち簡単な量子化）とＰモードのポリシー。
【００３４】
（ａ）予測符号化値だけが１つのイントラ値に続く。  
（ｂ）Ｉ値がｎ個のｐ値のそれぞれに対して与えられる（したがってエラーの伝播の長さを制限する）。  
（ｃ）値がＩ値またはＰ値であるかを示すため、ビットが各値に先行（または後続）する。
【００３５】
その後、予測値の符号化のための量子化および補償パラメータがストリームに付加される。イントラ量子化パラメータ(QuantMin、QuantMax、QuantNbBits）は、符号化されたフィールドの範囲で対応する量子化パラメータによりBIFS中で検索できる。補償パラメータ(CompMin、CompNbBits）は直接ストリームに加算される。
【００３６】
最後に、量子化値のアレイが、イントラ／予測ポリシーに続いて符号化される。Ｉ値は量子化値として符号化される。Ｐ値はそのセッションが任意の２つのイントラ間でオープンである適応型算術エンコーダにより符号化される。
【００３７】
以下のビットストリームシンタックスが使用されて、値のアレイが符号化される。ビットストリームシンタックスは、MPEG-4 FDIS14496-1により特定されるようなＭＳＤＬ言語の規約を使用する。
【００３８】
1.0   ArrayOfData  
1.1 シンタックス  
class  ArrayOfData{  
ArrayHeader     header;   
ArrayOfValues   values;   
} 
1.2 意味  
データのアレイはHeaderとArrayOfValuesからなる。
【００３９】
2.0 ArrayHeader  
2.1 シンタックス  
class  ArrayHeader{  
int(5)      NbBits;  
int(NbBits) numberOfFields:  
bit(2)      IPPolicy;  
if (IPPolicy==1)   
int(NbBits) intraInterval;  
InitialArrayQP qp;   
} 
2.2 意味  
アレイヘッダはフィールド数を特定するための第１の情報を含む（NbBitsはnumberOfFieldsの符号化に使用されるビット数である）。イントラ／予測ポリシー(IPPolicy）は以下のように特定される。  
０の場合：開始における１つのみのイントラ値と、予測符号化値のみ  
１の場合：所定数の予測値ごとのイントラ
２の場合：値がイントラまたは予測値であるかを決定するための各値に対するビットである。
【００４０】
最後に、InitialArrayQPが符号化される。
【００４１】
3.0   InitialArrayQP  
3.1 シンタックス  
class  InitialArrayQP{   
switch (IPPolicy)  
case 1 ;  
int        NbBits;   
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  
case 3 :  
break;   
} 
3.2 意味  
IPPolicyが１であるならば、２つのイントラ間の間隔のサイズが最初に特定される。IPPolicyと無関係に、予測モードCompNbBitsとCompMinsで使用されるビット数が符号化される（関数NbComp()は量子化限界の成分の数を返す関数であり、オブジェクトに基づいている。例えばこれは3D位置に対して３を返し、2D位置に対して２を返し、回転に対して３を返す）。
【００４２】
4.0   ArrayQP  
4.1 シンタックス  
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)  hasCompMin  
if (hasCompMin)  
for (int i=0;i<NbComp(quantType))   
int(QuantNbBits+1)    CompMin[i]   
// no break  
case 3 :  
break;   
} 
4.2 意味  
ArrayQPはInitialArrayQPと同じ目的を実現するが、この場合パラメータはオプション的に設定される。これらがストリームで設定されない場合には、これらは、InitialArrayQPまたはパラメータの最後に受信された値を参照してデフォルトにより設定される。
【００４３】
IPPolicyが１であるならば、２つのイントラ間の間隔のサイズが最初に特定される。いずれの場合でも、予測モード（CompNbBitsとCompMins）で使用されるビット数が符号化される。関数NbComp（）は、量子化限界の成分の数を返す関数であり、単にオブジェクトに依存する。例えば3D位置では３であり、2D位置では２であり、回転では３などである。
【００４４】
5.0   ArrayOfValues  
5.1 シンタックス  
class  ArrayOfValues{  
ArrayIValue value[0];   
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;  
}   
} 
5.2 意味  
値のアレイは最初に第１のイントラ値を符号化し、その後IPPolicyにしたがってイントラおよび予測値を符号化する。Ｐだけのモードでは、もはやイントラ値は符号化されない。第２のモードでは、ビットは各値においてＰまたはＩモードを決定する。その場合、QPをイントラ値のために送信することができる。QPが送信されるならば、演算型エンコーダの統計が再設定される。第３のモードでは、イントラはintraInterval値ごとに送信される。
【００４５】
6.0   ArrayIValue  
6.1 シンタックス  
class AnimationIValue(FieldData field) {  
switch (field.animType) {  
case  9: //Normal   
int(1)         direction   
case 10: //Rotation   
int(2)         orientation   
break;   
default:  
break;   
}  
for (j=0;j<getNbComp(field);j++)   
int(QuantNbBits)  vq[j]; 
} 
6.2 意味  
ArrayIValueは、フィールドの量子化されたイントラ値を表している。この値は量子化セクションで説明した量子化プロセスに続いて符号化され、そしてフィールドのタイプにしたがって符号化される。垂線に対しては、量子化プロセスで特定されている方向および方位値が最初に符号化される。回転に対しては、方位値のみが符号化される。方向を表すビットが０であるならば、垂線の方向は１に設定され、ビットが１であるならば、垂線の方向は−１に設定される。方位の値は２ビットを使用して符号のない整数として符号化される。フィールド値の圧縮された成分vq[i]はその後、フィールドデータ構造で特定されたビット数を使用して、符号のない整数のシーケンスとして符号化される。イントラモードの復号化プロセスは、逆量子化プロセスを適用することによりアニメーション値を計算する。
【００４６】
7.0   ArrayPValue  
7.1 シンタックス  
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];    
} 
7.2 意味  
ArrayPValueは先に受信された量子化値と、フィールドの現在の量子化値との間の差を表している。この値は前述したような補償プロセスを使用して符号化される。
【００４７】
値は、処理v aac=aa decode(モデル)により、適応型算術コーダビットストリームから復号化される。このモデルは、処理model update(モデル,v aac)で更新される。垂線に対しては、逆数値が均一で更新されていないモデルで、適応型算術コーダにより復号化される。ビットが０であるならば、逆数値は１に設定され、ビットが１であるならば、逆数値は−１に設定される。補償値vqDelta[i]はその後１つずつ復号化される。vq(t-1)を前のフレームで復号化された量子化値とし、v_acc(t)をフィールドのモデルで瞬間ｔにおいてフレームの適応型算術デコーダにより復号化された値とする。時間ｔの値は以下のように先の値から得られる。  
vDelta(t)=v acc(t)+Pmin  
vq(t)=AddDelta(vq(t-1),vDelta(t))  
v(t)=InvQuant(vq(t))  
フィールドのモデルは、値が適応型算術コーダにより復号化される度に更新される。animTypeが1（位置3D）、または２（位置2D）であるならば、フィールド値の各成分はその自己のモデルとオフセットPMin[i]を使用している。全ての他の場合では、同じモデルとオフセットPMin[0]が全ての成分に対して使用される。
【００４８】
以下のテーブル３で示されているように、本発明にしたがった値のアレイの圧縮は、実質的に類似したビデオストリームを表すVRML ASCIIファイルと比較して、シーンの大きな圧縮を行うことができる。
【表３】
0004444943.tif 000004
【００４９】
当業者に自明であるように、本発明の方法に基づいて多くの変形が行われてよい。したがって、上述の例および実施形態は例示であり、本発明の技術的範囲を限定することを意図するものではない。特許請求の範囲の記載によってのみ、本出願人が権限を有する保護の範囲が限定される。
【図面の簡単な説明】
【００５０】
【図１】図１は、本発明の符号化および／または復号化サービスを実現するコンピュータの概略図である。
【図２】図２は、エンコーダ／デコーダシステムの概略図である。
【図３】図３（Ａ）は、１２８ビットで回転を符号化するために使用される元のビット長を示した図であり、（Ｂ）は、それぞれ２７ビットで一連の回転を符号化するため８ビット量子化を使用する既知の量子化および符号化方法を使用した結果を示した図であり、（Ｃ）は、本発明にしたがった、即ち（１）２７ビットで第１の回転を符号化し、（２）それぞれ１２ビットでその後の一連の回転を符号化するための８ビットの量子化と４ビットの予測符号化を用いた、量子化および予測符号化方法を使用した結果を示した図である。
【図１】
0004444943.tif 000005
【図２】
0004444943.tif 000006
【図３】
0004444943.tif 000007