(57)【要約】　　　（修正有）【課題】座標インタポレータのキー及びキー値データの符号化／復号化。【解決手段】キーデータを符号化したキーデータ符号化／復号化情報及びキー値データを符号化したキー値データ符号化／復号化情報を含み、逆ＤＮＤ演算情報と、逆ＤＮＤ演算の行われた差分データを量子化されたキーデータに変換する第１の逆ＤＰＣＭ演算情報、及び量子化されたキーデータを逆量子化して復元されたキーデータを生成する逆量子化に用いられる第１の逆量子化情報を含み、さらに、辞書符号化されたキー値データの辞書復号化情報と、辞書復号化された各頂点成分の差分データを量子化されたキー値データに変換する第２の逆ＤＰＣＭ演算情報、及び量子化されたキー値データを逆量子化して復元されたキーデータを生成する逆量子化に用いられる第２の逆量子化情報を含む。【選択図】　　図２
2004030557.tif 000002
【特許請求の範囲】
【請求項１】
キーフレームの時間軸上の位置を表わすキーデータ、及びｘ、ｙ及びｚ成分を含む頂点の座標でキーフレーム上の客体の位置を表わすキー値データを含む座標インタポレータを符号化する装置であって、
座標インタポレータのキーデータを所定の量子化ビットで量子化する第１の量子化器と、
前記量子化されたキーデータの差分データを生成する第１のＤＰＣＭ処理部と
、
前記差分データと前記差分データの最大値及び最小値との関係に基づき前記差分データの範囲を狭めるＤＮＤ演算を行うＤＮＤ処理部と、
前記ＤＮＤ処理部から入力された差分データを符号化する第１のエントロピ符号化器を有するキーデータ符号化器と、
座標インタポレータのキー値データを所定の量子化ビット数で量子化する第２の量子化器と、
量子化されたキー値データの各頂点成分に対して所定モードのＤＰＣＭ演算を行い、各頂点座標の経時変化による差分データ及び空間的な変化による差分データを生成する第２のＤＰＣＭ処理部と、
ＤＰＣＭ演算された各頂点成分の差分データ及び前記差分データに対して行われたＤＰＣＭ演算モードを表わすシンボル及び前記シンボルの位置を表わすインデックスを生成する辞書符号化器と、
前記シンボル及びインデックスをエントロピ符号化する第２のエントロピ符号化器を有するキー値データ符号化器と、
前記キーデータ符号化器及び前記キー値データ符号化器において符号化されたビットストリームの復号化に必要な情報を符号化するヘッダ符号化器と、を備えることを特徴とする符号化装置。
【請求項２】
前記キーデータ符号化器は、入力される全体キーデータのうちキーデータが線形に増える領域を識別して符号化する線形キー符号化器をさらに備えることを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記キーデータ符号化器は、
前記第１のＤＰＣＭ処理部から入力された差分データのうち頻度数が最も高い差分データ（モード）を求め、前記差分データから前記モードを引くシフト部と、
前記シフト演算された差分データを正数領域または負数領域に変換するフォルド処理部と、をさらに備え、
前記ＤＮＤ処理部は、符号化に必要なビット数に基づき前記シフト部から入力された差分データ、前記フォルド処理部から入力された差分データ、及びＤＮＤ演算された差分データのうちいずれか一つを選択して出力することを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記第２のＤＰＣＭ処理部は、
前記量子化されたキー値データの各頂点成分に対してキーフレーム間の第１の差分データを生成する時間ＤＰＣＭ演算、同じキーフレーム内の頂点間の第２の差分データを生成する空間ＤＰＣＭ演算、及びキーフレーム及び頂点間の第３の差分データを生成する時空間ＤＰＣＭ演算を各々行うＤＰＣＭ演算部と、
前記ＤＰＣＭ演算部から入力された第１から第３の差分データに対して差分データの範囲を狭める循環量子化を行う循環量子化器と、
符号化に必要なビット数に基づき循環量子化された第１から第３の差分データのうちいずれか一つを選択して出力するＤＰＣＭモード選択部と、を備えることを特徴とする請求項１に記載の符号化装置。
【請求項５】
前記辞書符号化器は、
前記各頂点に対し、各頂点成分データに対して行われたＤＰＣＭモードの組合せを表わすシンボル及び前記シンボルの位置を表わすインデックスを生成するＤＰＣＭモード符号化器と、
入力された各頂点成分の差分データに対応するシンボル及び前記シンボルの位置を表わすインデックスを生成する発生モード符号化器と、を備えることを特徴とする請求項１に記載の符号化装置。
【請求項６】
記辞書符号化器は、
入力された各頂点の差分データに所定のシンボルの存否を表わすシンボルフラグ及びシンボルの位置を表わすインデックスを生成する増加モード符号化器と、前記差分データに対応するシンボルよりなる第１のシンボルテープルのサイズ及び前記シンボルフラグのサイズを計算し、前記第１のシンボルテーブル及びシンボルフラグのサイズに応じて前記ＤＰＣＭモード符号化器から入力された前記各頂点の差分データを前記発生モード符号化器または増加モード符号化器に出力するテーブルサイズ計算部と、をさらに備えることを特徴とする請求項５に記載の符号化装置。
【請求項７】
キーフレームの時間軸上の位置を表わすキーデータ、及び、及び成分を含む頂点の座標にキーフレーム上の客体の位置を表わすキー値データを含む座標インタポレータを符号化したビットストリームを復号化する装置であって、
入力されたビットストリームからキー及びキー値データの復号化に必要なヘッダ情報を復号化して出力するヘッダ復号化器と、
入力されたビットストリームをエントロピ復号化し、復号化されたキーデータの差分データを出力する第１のエントロピ復号化器と、
前記ヘッダ復号化器から読み込まれたＤＮＤ次数に基づき前記エントロピ復号化されたキーデータの差分データに対して逆ＤＮＤ演算を行い、差分データの範囲を広める逆ＤＮＤ処理部と、
前記逆ＤＮＤ処理部から入力された差分データに対して前記ヘッダ復号化器から入力されたＤＰＣＭ次数だけ逆ＤＰＣＭ演算を行い、量子化されたキーデータを出力する第１の逆ＤＰＣＭ処理部と、
前記量子化されたキーデータを逆量子化して復号化されたキーデータを出力する第１の逆量子化器を有するキーデータ復号化器と、
入力されたビットストリームをエントロピ復号化してキー値データの差分データのシンボル、前記シンボルの位置を表わすインデックス、及びＤＰＣＭ演算モードを含む辞書復号化されるべきデータを生成する第２のエントロピ復号化器と、
前記ヘッダ復号化器から入力された辞書復号化モード情報に基づき辞書復号化演算を行い、キー値データの差分データを生成する辞書復号化器と、
前記ＤＰＣＭ演算モードに基づき前記辞書復号化器から入力されたキーフレーム間の差分データ及び各頂点間の差分データを復元し、量子化されたデータを生成する第２の逆ＤＰＣＭ処理部と、
前記量子化されたデータを逆量子化して復元されたキー値データを生成する第２の逆量子化器を有するキー値データ復号化器と、を備えることを特徴とする復号化装置。
【請求項８】
前記キーデータ復号化器は、
前記逆ＤＮＤ処理部から差分データを入力され、前記ヘッダ復号化器から入力された前記ＤＮＤ次数に基づき差分データの範囲を負数及び正数に分離する逆フォルド演算を行うか、それともバイパスする逆フォルド処理部と、
前記逆ＤＮＤ処理部または前記逆フォルド処理部から入力された差分データに前記ヘッダ復号化器から受け取った所定のモードを加えて差分データの範囲を移動させる逆シフト部と、をさらに備え、
前記第１の逆ＤＰＣＭ処理部は、前記逆シフト部から入力された差分データを復元して量子化されたキーデータを出力することを特徴とする請求項７に記載の復号化装置。
【請求項９】
前記第２の逆ＤＰＣＭ処理部は、
同じ頂点のキーフレーム間の差分データに対して逆ＤＰＣＭ演算を行う逆時間ＤＰＣＭ演算部と、
同じキーフレーム内の各頂点と前記各頂点に対応する基準頂点との差分データに対して逆ＤＰＣＭ演算を行う逆空間ＤＰＣＭ演算部と、
前記ＤＰＣＭ演算モードに基づき差分データを前記逆時間ＤＰＣＭ演算部または前記逆空間ＤＰＣＭ演算部に出力する逆ＤＰＣＭモード選択部と、を備えることを特徴とする請求項７に記載の復号化装置。
【請求項１０】
キーフレームの時間軸上の位置を表わすキーデータ、及びｘ、ｙ及びｚ成分を含む頂点の座標に客体の位置を表わすキー値データを含む座標インタポレータを符号化したビットストリームであって、
前記ビットストリームは、キーデータ及びキーデータの復号化に必要な情報を符号化したキーデータ符号化／復号化情報、及びキー値データ及びキー値データの復号化に必要な情報を符号化したキー値データ符号化／復号化情報を含み、
前記キーデータ符号化／復号化情報は、
前記キーデータビットストリームをエントロピ復号化して生成された差分データの範囲を広める逆ＤＮＤ演算を行うべき回数を表わす逆ＤＮＤ次数及び各逆ＤＮＤ次数における逆ＤＮＤ演算に用いられる最大値及び最小値を含む逆ＤＮＤ演算情報と、
前記逆ＤＮＤ演算の行われた差分データを量子化されたキーデータに変換する逆ＤＰＣＭ演算の回数及び各回数の逆ＤＰＣＭ演算に用いられるイントラキーデータを含む第１の逆ＤＰＣＭ演算情報と、
前記量子化されたキーデータを逆量子化して復元されたキーデータを生成する逆量子化に用いられる第１の逆量子化情報と、を含み、
前記キー値データ符号化／復号化情報は、
前記キー値データビットストリームからエントロピ復号化された、辞書符号化されたキー値データの差分データを表わすシンボルに関する情報、前記シンボルの位置を表わす第１の位置インデックス、及び前記第１の位置インデックスに対して行われるべき辞書復号化方法を表わす辞書復号化モードを含む辞書復号化情報と、
辞書復号化された各頂点成分の差分データを量子化されたキー値データに変換する逆ＤＰＣＭ演算に用いられる逆ＤＰＣＭ演算モードの組合せを表わすシンボルの位置を表わす第２の位置インデックスを含む第２の逆ＤＰＣＭ演算情報と、前記量子化されたキー値データを逆量子化して復元されたキーデータを生成する逆量子化に用いられる第２の逆量子化情報と、を含むことを特徴とするビットストリーム。
【請求項１１】
前記逆ＤＮＤ演算情報は、
前記逆ＤＮＤ演算の行われるべき差分データに対してシフト−ダウン演算を行うかを表わすフラグをさらに含むことを特徴とする請求項１０に記載のビットストリーム。
【請求項１２】
前記第１の逆量子化情報は、
前記量子化されたキーデータの逆量子化に用いられる逆量子化ビットサイズ、及び量子化されたキーデータの最大値及び最小値を含むことを特徴とする請求項１０に記載のビットストリーム。
【請求項１３】
前記量子化されたキーデータの最大値及び最小値は、量子化されたキーデータの量子化誤差を最小化するように調整された量子化されたキーデータの最大値及び最小値であることを特徴とする請求項１２に記載のビットストリーム。
【請求項１４】
前記キーデータ符号化／復号化情報は、
前記ビットストリームに含まれた線形キー領域の復号化のための線形キー復号化情報をさらに含み、前記線形キー復号化情報は、
キーデータのうち線形に増える線形キー領域の存否を表わすフラグ、前記線形キー領域に含まれるキーデータの数、前記線形キー領域の開始キーデータ及び終了キーデータを含むことを特徴とする請求項１０に記載のビットストリーム。
【請求項１５】
前記開始キーデータ及び終了キーデータには、１０進数体系の仮数及び指数で符号化されたことを特徴とする請求項１４に記載のビットストリーム。
【請求項１６】
前記辞書復号化情報は、
前記辞書復号化モードが発生モードである場合には、前記差分データに存在する差分値に対応するシンボル及び前記シンボルの位置を表わす位置インデックスを含み、
前記辞書復号化モードが増加モードである場合には、前記差分データに存在する差分値が所定のシンボルテーブルに存在するかを表わすシンボルフラグ及び前記シンボルフラグに対応するシンボルの位置を表わす位置インデックスを含むことを特徴とする請求項１０に記載のビットストリーム。
【請求項１７】
前記第２の逆ＤＰＣＭ演算情報は、
各頂点成分に対して行われるべき逆ＤＰＣＭ演算モードの組合せを表わすテーブルに含まれるシンボルのうち各頂点成分の差分データに対して行われるべき逆ＤＰＣＭ演算に対応するシンボルの存否を表わす逆ＤＰＣＭモードフラグをさらに含むことを特徴とする請求項１０に記載のビットストリーム。
【請求項１８】
前記逆ＤＰＣＭ演算モードの組合せは、
各頂点の各成分の差分データに対して行われるべき逆時間ＤＰＣＭ演算、逆空間ＤＰＣＭ演算、及び逆時空間ＤＰＣＭ演算の組合せを表わすことを特徴とする請求項１７に記載のビットストリーム。
【請求項１９】
前記第２の逆ＤＰＣＭ演算情報は、
前記逆ＤＰＣＭモードフラグにより差分データに対して行われるべき逆ＤＰＣＭ演算が逆空間ＤＰＣＭ演算または逆時空間ＤＰＣＭ演算である場合、逆空間ＤＰＣＭ演算または逆時空間ＤＰＣＭ演算の行われるべき頂点に対応する基準頂点を表わす基準頂点フラグをさらに含むことを特徴とする請求項１８に記載のビットストリーム。
【請求項２０】
前記第２の逆量子化情報は、
逆量子化を行うべきキー値データの頂点を表わす頂点選択フラグ、前記頂点選択フラグに基づき選択された頂点成分のキー値データの逆量子化に用いられるキー値データのうち最小値及び最大範囲、及び前記選択された頂点のキー値データの逆量子化に用いられる逆量子化ビットサイズを含むことを特徴とする請求項１０に記載のビットストリーム。
【請求項２１】
前記第２の逆量子化情報は、
逆量子化されるべきキー値データに含まれる頂点の数、前記キー値データの最大有効桁数、各頂点の各成分データの最大値のうち最大値及び最小値、及び各頂点の各成分データの最小値のうち最大値及び最小値をさらに含むことを特徴とする請求項２０に記載のビットストリーム。
【請求項２２】
前記キー値データ符号化／復号化情報は、
前記キー値データの符号化方式が転置モードであるか、それとも頂点モードであるかを表わすフラグをさらに含むことを特徴とする請求項２０に記載のビットストリーム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は合成イメージの符号化及び復号化装置並びに方法に関する。具体的に、本発明は、キーフレームに基づくグラフィックアニメーション方式において、客体の位置をｘ、ｙ及びｚ成分を含む頂点の座標で表わす座標インタポレータの符号化及び復号化装置並びに方法に関する。
【０００２】
【従来の技術】
３次元アニメーション表現技法は、３次元コンピュータゲームまたはコンピュータの仮想現実環境において用いられるとよく知られている。ＶＲＭＬ（Ｖｉｒｔｕａｌ　Ｒｅａｌｉｔｙ　Ｍｏｄｅｌｌｉｎｇ　Ｌａｎｇｕａｇｅ）は、３次元アニメーションを表現する代表例である。
ＭＰＥＧ−４　ＢＩＦＳ（Ｂｉｎａｒｙ　Ｆｏｒｍａｔ　ｆｏｒ　Ｓｃｅｎｅ）及びＶＲＭＬ（Ｖｉｒｔｕａｌ　Ｒｅａｌｉｔｙ　Ｍｏｄｅｌｌｉｎｇ　Ｌａｎｇｕａｇｅ）などの国際マルチメディア標準は、インタポレータノードを用いたキーフレームに基づく３次元アニメーションを支援する。ＭＰＥＧ−４　ＢＩＦＳ及びＶＲＭＬには各種のインタポレータがあるが、中でも代表的なものが、スカラーインタポレータ、位置インタポレータ、座標インタポレータ、回転インタポレータ、法線インタポレータ及び色インタポレータである。各インタポレータの種類、機能及び特徴は下記表１に示す。
【０００３】
【表１】
2004030557.tif 000003
【０００４】
前記表１に記載されたインタポレータの一つである座標インタポレータは、キーフレームに基づくアニメーションの３次元客体に含まれる各頂点の位置情報を表わすために用いられ、キーフィールド及びキー値フィールドよりなる。キーフィールドは（−∞，＋∞）範囲においてキーフレームが位置する時間を不連続的な数字で表わす。キー値フィールドは、各々のキーが表わす時間に３次元客体に含まれる各頂点の位置情報を表わし、各頂点はｘ、ｙ及びｚの３成分を有する。従って、キー値フィールドはキーフィールドと同じ数のキー値を含む。このように、キーフレームに基づくアニメーション方式において、所定のキーフレームは時間軸上の任意の時間に位置し、各キーフレーム間のアニメーションデータは線形補間方法により補間される。
【０００５】
ＭＰＥＧ−４　ＢＩＦＳ及びＶＲＭＬは線形補間を用いるため、線形インタポレータを用いてスムーズで且つ自然なアニメーションを具現するためには、極めて多量のキーデータ及びキー値データが要される。また、このようにスムーズで且つ自然なアニメーションを記憶または伝送するためには大容量の記憶装置と長い時間が必要であった。従って、これらインタポレータの記憶及び伝送のためにはインタポレータを圧縮することが効果的である。
【０００６】
ＭＰＥＧ−４　ＢＩＦＳにおいては、インタポレータノードを符号化して復号化する方法として、ＰＭＦＣ（Ｐｒｅｄｉｃｔｉｖｅ　ＭＦ　Ｃｏｄｉｎｇ）と呼ばれる方法がある。図１に示された従来の符号化装置のように、ＰＭＦＣ方法は、量子化器、ＤＰＣＭ（Ｄｉｆｆｅｒｅｎｔｉａｌ　Ｐｕｌｓｅ　Ｃｏｄｅ　Ｍｏｄｕｌａｔｉｏｎ）及びエントロピ符号化器を用いて座標インタポレータのキー及びキー値データを符号化する。量子化器及びＤＰＣＭモジュールはキー及びキー値データの冗長性を除去し、ＤＰＣＭモジュールの出力はエントロピ符号化器に出力される。しかし、この方法は、通常のＤＰＣＭ演算により得られた差分データをエントロピ符号化するために、符号化効率が低い。また、従来の符号化装置は、３次元客体の形状をなす各頂点間の空間的な相関関係のみを考慮するだけであって、キーフレーム方式のアニメーション方式において相当の割合を占める時間的な相関関係は全く考慮しないため、符号化効率が低かった。
【０００７】
【発明が解決しようとする課題】
本発明が解決しようとする第１の技術的な課題は、キーデータの性質を考慮してデータの冗長性を除去することによりアニメーションキーデータを効率良く圧縮するキーデータ符号化器、及び空間的な相関関係だけではなく、時間的な相関関係をも考慮してキー値データを符号化するキー値データ符号化器を有する座標インタポレータの符号化装置を提供することである。
【０００８】
本発明の第２の技術的な課題は、前記本発明の座標インタポレータ符号化装置により符号化されたビットストリームを復号化する復号化装置を提供することである。
【０００９】
本発明が解決しようとする第３の技術的な課題は、高い圧縮率及び高画質のアニメーションを提供できる、本発明の座標インタポレータの符号化方法及び装置により符号化されて本発明の復号化方法及び装置により復号化されるビットストリームを記録した記録媒体を提供することである。
【００１０】
【課題を解決するための手段】
前記第１の技術的な課題を達成するために、本発明の座標インタポレータ符号化装置は、座標インタポレータのキーデータを所定の量子化ビットで量子化する第１の量子化器と、量子化されたキーデータの差分データを生成する第１のＤＰＣＭ処理部と、差分データと差分データの最大値及び最小値との関係に基づき差分データの範囲を狭めるＤＮＤ演算を行うＤＮＤ処理部と、ＤＮＤ処理部から入力された差分データを符号化する第１のエントロピ符号化器を有するキーデータ符号化器と、座標インタポレータのキー値データを所定の量子化ビット数で量子化する第２の量子化器と、量子化されたキー値データの各頂点成分に対して所定モードのＤＰＣＭ演算を行い、各頂点座標の経時変化による差分データ及び空間的な変化による差分データを生成する第２のＤＰＣＭ処理部と、ＤＰＣＭ演算された各頂点成分の差分データ及び差分データに対して行われたＤＰＣＭ演算モードを表わすシンボル及びシンボルの位置を表わすインデックスを生成する辞書符号化器と、シンボル及びインデックスをエントロピ符号化する第２のエントロピ符号化器を有するキー値データ符号化器と、キーデータ符号化器及びキー値データ符号化器において符号化されたビットストリームの復号化に必要な情報を符号化するヘッダ符号化器と、を備える。
【００１１】
前記第２の技術的な課題を達成するために、本発明の復号化装置は、入力されたビットストリームからキー及びキー値データの復号化に必要なヘッダ情報を復号化して出力するヘッダ復号化器と、入力されたビットストリームをエントロピ復号化し、復号化されたキーデータの差分データを出力する第１のエントロピ復号化器と、ヘッダ復号化器から読み込まれたＤＮＤ次数に基づきエントロピ復号化されたキーデータの差分データに対して逆ＤＮＤ演算を行い、差分データの範囲を広める逆ＤＮＤ処理部と、逆ＤＮＤ処理部から入力された差分データに対してヘッダ復号化器から入力されたＤＰＣＭ次数だけ逆ＤＰＣＭ演算を行い、量子化されたキーデータを出力する第１の逆ＤＰＣＭ処理部と、量子化されたキーデータを逆量子化して復号化されたキーデータを出力する第１の逆量子化器を有するキーデータ復号化器と、入力されたビットストリームをエントロピ復号化してキー値データの差分データのシンボル、シンボルの位置を表わすインデックス、及びＤＰＣＭ演算モードを含む辞書復号化されるべきデータを生成する第２のエントロピ復号化器と、ヘッダ復号化器から入力された辞書復号化モード情報に基づき辞書復号化演算を行い、キー値データの差分データを生成する辞書復号化器と、ＤＰＣＭ演算モードに基づき辞書復号化器から入力されたキーフレーム間の差分データ及び各頂点間の差分データを復元し、量子化されたデータを生成する第２の逆ＤＰＣＭ処理部と、量子化されたデータを逆量子化して復元されたキー値データを生成する第２の逆量子化器を有するキー値データ復号化器と、を備える。
【００１２】
前記第３の技術的な課題を達成するために、本発明の記録媒体に記録されるビットストリームは、キーデータを符号化したキーデータ符号化／復号化情報、及びキー値データを符号化したキー値データ符号化／復号化情報を含み、キーデータ符号化／復号化情報は、キーデータビットストリームをエントロピ復号化して生成された差分データの範囲を広める逆ＤＮＤ演算を行う回数を表わす逆ＤＮＤ次数及び各逆ＤＮＤ次数における逆ＤＮＤ演算に用いられる最大値及び最小値を含む逆ＤＮＤ演算情報と、逆ＤＮＤ演算の行われた差分データを量子化されたキーデータに変換する逆ＤＰＣＭ演算の回数及び各回数の逆ＤＰＣＭ演算に用いられるイントラキーデータを含む第１の逆ＤＰＣＭ演算情報と、量子化されたキーデータを逆量子化して復元されたキーデータを生成する逆量子化に用いられる第１の逆量子化情報と、を含み、キー値データ符号化／復号化情報は、キー値データビットストリームからエントロピ復号化された、辞書符号化されたキー値データの差分データを表わすシンボルに関する情報、シンボルの位置を表わす第１の位置インデックス、及び第１の位置インデックスに対して行われるべき辞書復号化方法を表わす辞書復号化モードを含む辞書復号化情報と、辞書復号化された各頂点成分の差分データを量子化されたキー値データに変換する逆ＤＰＣＭ演算に用いられる逆ＤＰＣＭ演算モードの組合せを表わすシンボルの位置を表わす第２の位置インデックスを含む第２の逆ＤＰＣＭ演算情報と、量子化されたキー値データを逆量子化して復元されたキーデータを生成する逆量子化に用いられる第２の逆量子化情報と、を含む。
【００１３】
【発明の実施の形態】
以下、添付した図面に基づき、本実施の形態における座標インタポレータ符号化装置を説明する。
【００１４】
図２は、本実施の形態における座標インタポレータ符号化装置の構成を示すブロック図である。
本実施の形態における座標インタポレータ符号化装置は、入力された座標インタポレータのキーデータを符号化するキーデータ符号化器３００と、入力された座標インタポレータのキー値データを符号化するキー値データ符号化器７００、及びキーデータ符号化器３００及びキー値データ符号化器７００において符号化されたキー及びキー値データの復号化に必要な情報を符号化するヘッダ符号化器５００を備える。
【００１５】
以下、図３から図２２に基づいて、本実施の形態におけるキーデータ符号化器７００について説明する。
図３は、本実施の形態におけるキーデータ符号化器の構成を示すブロック図である。
本実施の形態のキーデータ符号化器７００は、線形キー符号化器３１０、量子化器３２０、ＤＰＣＭ処理部３３０、シフト部３４０、フォルド処理部３５０、ＤＮＤ処理部３６０及びエントロピ符号化器３７０を備える。
線形キー符号化器３１０は、全体のキーデータの範囲においてキーデータが線形に増える領域を識別して符号化する。量子化器３２０は、量子化誤差を最小化する方法を用いて、入力されたキーデータを量子化する。ＤＰＣＭ処理部３３０は、量子化されたキーデータを受け取り、キーデータの差分データを生成する。シフト部３４０は、全ての差分データから頻度数が最も高い差分データを引く。フォルド処理部３５０は、全ての差分データを正数の領域または負数の領域に移動させる。ＤＮＤ処理部３６０は、ディバイド、ディバイド−アップ、及びディバイド−ダウンの３種の演算を選択的に行ってキーデータの差分データの範囲を狭める。キーデータに対するエントロピ符号化器３７０は、ビットプレイン単位に差分データを符号化するＳｉｇｎｅｄＡＡＣ関数及びＵｎｓｉｇｎｅｄＡＡＣ関数を用いて差分データを符号化する。
【００１６】
以下、図５及び図６を参照し、本実施の形態におけるキーデータ符号化方法を説明する。図５及び図６は、本実施の形態におけるキーデータ符号化方法を示すフローチャートである。
キーデータが符号化器に入力されると、キーデータの総数及び各キーデータの桁数などの情報はヘッダ符号化器５００に入力されて符号化され、入力されたキーデータは線形キー符号化器３１０において線形キー領域、すなわち、一定の時間間隔をおいてキーフレームが存在してキーデータが同じ差を有し、キーデータが線形に変わる領域の有無を検索し、検索された線形領域を先に符号化する（Ｓ４０００）。
【００１７】
３Ｄｍａｘ、Ｍａｙａなどの有名な３次元応用ソフトウェアは、特定の領域が一定の時間間隔を有するキーを用い、キーフレームに基づくアニメーションを生成する。この場合、線形キーデータ領域は、線形領域が始まるキーデータ、終わるキーデータ及び中間に存在するキーフレームの数さえ分かれば簡単にキーデータを符号化できるので、インタポレータにおいて特定領域のキーの符号化のために線形予測を用いることは極めて有用である。
線形予測に用いられる数式は、下記式１の通りである。
【００１８】
【数１】
2004030557.tif 000004
【００１９】
ここで、ｔζは部分的に線形である領域が始まるキーのデータを示し、ｔＥは、部分的に線形である領域が終わるキーのデータを示し、Ｓは、ｔＳのインデックスを、Ｅは、ｔＥのインデックスを各々示す。第Ｓ番目のキーデータ及び第Ｅ番目のキーデータに対応する特定の領域において前記式１により線形的に予測されたキーデータと実際のキーデータとの誤差は、下記式２により計算できる。
【００２０】
【数２】
2004030557.tif 000005
【００２１】
もし、前記式２により計算された誤差値のうち最大誤差値が所定の臨界値以下であれば、ｔｉは［ｔｓ，ｔＥ］区間及び所定の誤差内において類似線形であると言える。最大誤差値及び特定の領域が類似線形であるか否かは、下記式３により決められる。
【００２２】
【数３】
2004030557.tif 000006
【００２３】
もし、
2004030557.tif 000007
であれば、ｔｉは、［ｔＳ，ｔＥ］区間において類似線形である。ただしｎＢｉｔｓは符号化に用いられる符号化ビット数を示す。
【００２４】
ここで、線形キー符号化器３１０は、部分的に線形である領域を見つければ、領域の開始点のキーデータ及び終了点のキーデータは実数変換部３１５に出力し、線形キー領域に含まれるキーの数はヘッダ符号化器５００に出力して符号化する。このように、線形符号化を用いることにより、符号化するデータの量を大いに低減できるということが分かる。開始キーデータ及び終了キーデータは、実数変換部３１５において後述する実数変換過程により符号化される。
【００２５】
実数変換部３１５は、開始キーデータ及び終了キーデータを符号化するために２進数体系で表わされたキーデータを１０進数体系に変換する。
コンピュータは、実数を３２ビットの２進数の形で記憶する。実数が２進数の形で与えられれば、実数変換部３１５は、実数を１０進数体系の仮数及び指数に変換する。すなわち、下記式４のように変換される。
【００２６】
【数４】
2004030557.tif 000008
【００２７】
例えば、実数１２．３４をコンピュータにて２進数の形で表わせば、下記の通りである。
2004030557.tif 000009
【００２８】
１０進数体系の仮数及び指数をビットストリームに含めるためには、各々が必要とするビット数を計算しなければならない。まず、指数は−３８〜３８の範囲の値を有するため、指数は符号を含んで７ビットで表わせる。また、仮数は、桁数に応じて必要なビットの数が決められる。仮数の値及びこれに必要なビット数（但し、符号ビットは除く。）を下記表２に示す。
【００２９】
【表２】
2004030557.tif 000010
【００３０】
一方、前記のような過程により検索されて変換された線形キー領域の開始キーデータ及び終了キーデータは、図７及び図８に示されたような符号化過程により符号化され、ヘッダ符号化器５００に出力されてビットストリームに記憶される。
【００３１】
図７及び図８は、実数変換部３１５が入力された２つの実数を符号化する過程を示す。図７及び図８を参照し、実数変換部３１５が変換された実数を符号化する過程を説明する。
【００３２】
実数変換部３１５は、線形キー符号化器３１０から元のキーデータの桁数（ｏｒｉｇｉｎａｌ　ｋｅｙ　ｄｉｇｉｔ）Ｋｄ、線形領域が始まるキーデータ（Ｓｔａｒｔ　ｋｅｙ）Ｓ、線形領域が終わるキーデータ（ｅｎｄ　ｋｅｙ）Ｅを入力され、前記式４によりキーデータを変換する（Ｓ４０４０）。
【００３３】
実数変換部３１５は、まず、Ｓを符号化するが、Ｓの桁数がＫｄと異なるかを判断し、桁数が異なれば、Ｓの桁数を求めてヘッダ符号化器５００に出力する（Ｓ４０４２）。この時、実数変換部３１５は、ｄｉｇｉｔ関数を用いてＳの桁数を求める。
【００３４】
その後、実数変換部３１５は、Ｓの桁数が７より大きければ、所定のビット数を（本実施の形態では、ＩＥＥＥ標準７５４のｆｌｏａｔｉｎｇ−ｐｏｉｎｔ　ｎｕｍｂｅｒ方式により３２ビット）を用い、Ｓの桁数がビットストリームに含まれるようにヘッダ符号化器５００に出力する（Ｓ４０４３）。
【００３５】
また、Ｓの桁数が０でなくて７より小さければ、実数変換部３１５は、Ｓの符号をヘッダ符号化器５００に出力し（Ｓ４０４４）、Ｓの仮数の絶対値の符号化に必要なビット数を前記表１から求め、求められたビット数として仮数の絶対値をヘッダ符号化器５００に出力する（Ｓ４０４５）。その後、Ｓの指数を求め、符号をヘッダ符号化器５００に出力し、指数を所定のビット数として（本実施の形態では６ビット）ヘッダ符号化器５００に出力する（Ｓ４０４６）。このように、キーデータの変換により、ビットストリームに含まれるビット数は大幅に減る。
【００３６】
また、Ｓの桁数が０であれば、実数は０を意味するため、それ以上の符号化過程が不要となり、開始キーデータの符号化過程は終わり、終了キーデータを変換するための過程へ進む。
【００３７】
実数変換部３１５は、開始キーデータを変換して符号化した後に終了キーデータＥを変換する。Ｅの変換は、Ｓの変換と同じ過程を繰り返すが、単に、Ｅの指数がＳの指数と同じ値を有するか否かを判別し（Ｓ４０４７）、両値が同じであれば、これを示すフラグビットのみをヘッダ符号化器５００に出力し、両値が相異なれば、フラグビット及びＥの指数をＳの指数と同じ方式によりヘッダ符号化器５００に出力する（Ｓ４０４８）。
【００３８】
一方、入力キーデータにおいて線形領域を除いたキーデータは量子化器３２０に入力され、所定の量子化ビットサイズであるｎＫｅｙＱＢｉｔにより量子化される。
【００３９】
しかしながら、復号化器において量子化されたキーデータを復号化して用いる時には、元のキーデータと量子化されたキーデータとの誤差により元のキーデータが完全に復元できない。従って、量子化器３２０では、単に入力されるキーデータから最大値及び最小値を求め、求められた値を用いて量子化可能であるだけではなく、量子化誤差最小化部３２５を含んで、量子化誤差が最小化可能に修正された最大値及び最小値を用いて量子化できる。
【００４０】
量子化誤差最小化部３２５は、量子化誤差を最小化するために入力されたデータに対して予め量子化及び逆量子化を行い、量子化の誤差が最小となる量子化の範囲を制御する方法を用いる（Ｓ４１００）。
【００４１】
詳しく説明すると、固定された量子化に用いられる最大値をＭａｘとし、調節される量子化に用いられる最小値をＭｉｎとした時、Ｘｉを入力値、ｎＱｕａｎｔＢｉｔを量子化に用いられるビットとした時、量子化された入力値
2004030557.tif 000011
、逆量子化された値
2004030557.tif 000012
、及び誤差ｅｉは、各々下記式５により計算する。
【００４２】
【数５】
2004030557.tif 000013
【００４３】
誤差の和ｅｉを減らす方法には２種類があるが、１つは誤差の和が最小となるまでＭｉｎ値を調節することであり、２つ目は、下記に述べる方法である。
【００４４】
まず、ΔＸが入力データの基本ステップサイズであり、ｎが任意の整数であり、ｉが０平均乱数ノイズであるとした時、入力キーデータシーケンスＸｉをＸｉ＝（ｉ＋ｎ）ΔＸ＋εｉのように表わされる量子化された値であると仮定する。その後、ｄｉ＝Ｘｉ−Ｘｉ−１＝ΔＸ＋（εｉ−εｉ−１）であるとした時、Δ’Ｘ＝Ｅ［ｄｉ］であり、最小値Ｍｉｎは、Ｍａｘ−Δ’Ｘ＊（２ｎＱｕａｎｔＢｉｔ−１）である。
このような方法で求められる量子化誤差を最小化するＭｉｎ値は、Ｍａｘ値及び量子化器３２０に入力されてキーデータの量子化に用いられる。
【００４５】
量子化誤差が最小となる最大値Ｍａｘ及び最小値Ｍｉｎを受け取った量子化器３２０は、下記式６を用いてキーデータｆＫｅｙｉの量子化を行う（Ｓ４２００）。
【００４６】
【数６】
2004030557.tif 000014
【００４７】
ここで、ｉは、量子化されたキーデータのインデックスを、ｎＱＫｅｙｉは、量子化されたデータの整数配列を、ｆＫｅｙｉは、入力キーデータとしての実数配列を、ｆＫｅｙＭａｘ及びｆＫｅｙＭｉｎは、量子化誤差最小化部３２５において受け取られた最大値Ｍａｘ及び最小値Ｍｉｎを、ｎＫｅｙＱＢｉｔは量子化ビットサイズを各々示す。一方、前記式６において用いられた関数ｆｌｏｏｒ（ｖ）は実数ｖを入力され、ｖ以下の最大整数を出力する関数である。
【００４８】
一方、本実施の形態の量子化器３２０は、前記量子化誤差を最小化するアルゴリズムを用いず、簡単に、入力されたキーデータのうち最大値ｆＫｅｙＭａｘ及び最小値ｆＫｅｙＭｉｎを求めて量子化を行うこともできる。
【００４９】
本実施の形態の量子化過程を示す図９を参照し、量子化過程を詳細に説明する。
【００５０】
量子化器３２０は、キーデータを入力され（Ｓ４２１０）、量子化誤差最小化部３２５から最大値及び最小値が入力されたか否かをチェックする（Ｓ４２２０）。
次に、量子化器３２０は、量子化誤差最小化部３２５から最大値Ｍａｘ及び最小値Ｍｉｎが入力されたならば、量子化に用いる最大値ｆＫｅｙＭａｘ及び最小値ｆＫｅｙＭｉｎをＭａｘ及びＭｉｎとして設定し（Ｓ４２３０）、設定された最大値及び最小値を前記実数変換部３１５に出力する。量子化に用いられる最大値及び最小値は、前記実数変換過程を通じて変換され符号化されてヘッダ符号化器５００に出力されることにより、復号化に利用可能に最大値及び最小値をキーヘッダに含める。
【００５１】
量子化器３２０は、量子化誤差最小化部３２５から入力された値がなければ、入力されたキーデータのうち最初のキーデータｆＫｅｙ０を最小値ｆＫｅｙＭｉｎとして、そして最後のキーデータｆＫｅｙＮ−１を最大値ｆＫｅｙＭａｘとして設定する（Ｓ４２４０）。
その後、量子化器３２０は、設定された値が１より小さく、且つ、最小値が０より大きいかを判断し（Ｓ４２５０）、そうでなければ、最大値及び最小値を前記実数変換部３１５に出力し、前記過程を通じて変換して符号化した後、ヘッダ符号化器５００に出力して復号化に利用可能に最大値及び最小値をキーヘッダに含める（Ｓ４２６０）。
【００５２】
一方、最大値及び最小値が第Ｓ３２５０段階の条件を満足すれば、最大値及び最小値を復号化に利用可能にキーヘッダデータに含めるかを示すフラグをチェックする（Ｓ４２７０）。もし、フラグが最大値及び最小値をキーヘッダに含めるように設定されていれば、前記第Ｓ４２６０段階を行って最大値ｆＫｅｙＭａｘ及び最小値ｆＫｅｙＭｉｎを符号化した後にヘッダ符号化器５００に出力し、そうでなければ、量子化器３２０は、最大値及び最小値をキーヘッダに含めない。最大値及び最小値をキーヘッダに含めない場合は、キーデータ符号化器及びキーデータ復号化器が互いに最大値を１として、且つ、最小値を０として設定して符号化及び復号化を行うことを規約したケースに当たるため、量子化器３２０は、最小値ｆＫｅｙＭｉｎを０として、そして最大値ｆＫｅｙＭａｘを１として各々設定する（Ｓ４２８０）。このように設定された量子化に用いられる最大値及び最小値は、既に復号化器に知られているため、別途にキーヘッダに含めない。
【００５３】
一方、量子化器３２０は、前記過程を通じて設定されたｆＫｅｙＭａｘ及びｆＫｅｙＭｉｎを前記式６に代入して入力されたキーデータを量子化し、量子化されたキーデータをＤＰＣＭ処理部３３０に出力する（Ｓ４２９０）。
量子化されたキーデータを受け取ったＤＰＣＭ処理部３３０は、所定回数のＤＰＣＭを行って最小の散布度が生成される次数及びイントラキーデータをヘッダ符号化器５００に出力し、ＤＰＣＭ演算の行われたキーデータの差分データをシフト部３４０に出力する（Ｓ４３００）。
【００５４】
以下、図１０を参照し、ＤＰＣＭ処理過程を説明する。ＤＰＣＭ処理部３３０は、入力されたキーデータに対してまず所定の回数だけＤＰＣＭ演算を行い、ＤＰＣＭが行われた回数はＤＰＣＭ次数として記憶する（Ｓ４３１０）。本実施の形態では、３回のＤＰＣＭ演算を行った。
その後、ＤＰＣＭ処理部３３０は、各次数のＤＰＣＭ演算の結果に対して散布度を計算する（Ｓ４３２０）。この時の散布度を示す統計値として分散、標準偏差、及び四分偏差などが用いられ、本実施の形態では、四分偏差が散布度として用いられる。
【００５５】
各次数のＤＰＣＭ演算の結果に対する散布度が計算されば、ＤＰＣＭ処理部３３０は、散布度が最小となるＤＰＣＭ次数及び該当次数のＤＰＣＭ結果を選択し、ＤＰＣＭ演算の結果はシフト部３４０に出力し、ＤＰＣＭ次数、各次数のイントラキーデータ及びその他のＤＰＣＭ演算において必要な情報はヘッダ符号化器５００に出力する（Ｓ４３３０）。但し、本実施の形態では、キーの数が５より小さければ、１次ＤＰＣＭのみを行った。例えば、１次ＤＰＣＭが行われる時には、下記式７を用いてＤＰＣＭ演算を行う。
【００５６】
【数７】
2004030557.tif 000015
【００５７】
ここで、ｉは、量子化されたキーデータのインデックスを、ｎＱＫｅｙｉは整数配列を、そしてｉは差分データを各々示す。
【００５８】
一方、ＤＰＣＭ処理部３３０は、選択されたＤＰＣＭの結果、及びＤＰＣＭされたキーデータの差分データを符号化する時に必要なビット数を計算し、所定の記憶場所（本実施の形態では、ｎＱＳｔｅｐ＿ＤＰＣＭ）に記憶する（Ｓ４３４０）。但し、符号化に必要なビット数を計算する段階は、後述する符号化すべきキーデータを選択する段階において行っても良いということは当業者に取って自明である。
【００５９】
ＤＰＣＭ結果を受け取ったシフト部３４０は、入力された差分データのうち頻度数が最も高い差分データ（以下、モードと称する）を選択して全ての差分データからモードを引くことにより、符号化されるべきデータを０の周りに集中的に分布せしめて符号化に必要なビット数を減らす（Ｓ４４００）。
シフト演算は、量子化された全てのキーデータの差分データからモードｎＫｅｙＳｈｉｆｔを引くことにより行われる。このようなシフト演算は、下記式８で表わされる。
【００６０】
【数８】
2004030557.tif 000016
【００６１】
ここで、ｉは、量子化されたキーデータのインデックスを示し、ｎＱＫｅｙｉは、整数配列を示し、ｎＫｅｙＳｈｉｆｔは、モード値を示す。シフト演算が行われた後には、キーデータの差分データのうち頻度数が最も高い差分データは０となるので、符号化に必要なビット数を大幅に低減できる。
シフト演算が行われたキーデータは、フォルド処理部３５０及びＤＮＤ処理部３６０に出力され、モード値ｎＫｅｙＳｈｉｆｔは、ヘッダ符号化器５００に出力されてキーヘッダに含まれる。
シフトされたデータを受け取ったフォルド処理部３５０は、ＤＮＤ演算を行うための前処理段階としてフォルド演算を行い、フォルド演算されたキーデータをＤＮＤ処理部３６０に出力する（Ｓ４５００）。
フォルド演算は、０を中心として負数領域及び正数領域に様々に分布される差分データを正数領域または負数領域に集中させて差分データの範囲を狭めるためのものであり、この実施の形態では、下記式９によりフォルド演算を行って差分データの分布を正数領域に集中させた。
【００６２】
【数９】
2004030557.tif 000017
【００６３】
ここで、ｉは、量子化されたキーデータのインデックスを示し、ｎＱＫｅｙｉは、整数配列を示す。フォルド演算により、シフトされたキーデータの差分データのうち正数データは正の偶数に、負数のデータは正の奇数に各々変換される。
【００６４】
フォルド処理部３５０は、フォルド演算が行われたデータを符号化する時に必要なビット数を計算して所定の記憶場所ｎＱＳｔｅｐ＿ｆｏｌｄに記憶する。第Ｓ４３００段階と同じく、符号化に必要なビット数の計算は、後述するエントロピ符号化する差分データを選択する段階において行っても良いということは当業者に取って自明である。一方、フォルド処理部３５０においてフォルト演算が行われたデータは、ＤＮＤ処理部３６０に出力される。
【００６５】
ＤＮＤ処理部３６０は、エントロピ符号化の効率を高めるために、入力されたキーデータの差分データに対してＤＮＤ演算を所定の回数だけ行ってデータの範囲を狭める（Ｓ４６００）。
【００６６】
以下、図４を参照し、ＤＮＤ処理部３６０について説明する。　ＤＮＤ処理部は、ＤＮＤ演算を行うＤＮＤ演算部３６２、符号化ビット数に応じてエントロピ符号化すべき差分データを選択する第１の差分データ選択部３６４、第１の差分データ選択部においてＤＮＤ演算の行われた差分データが選択されれば、ＤＮＤ演算の行われた差分データに対してシフト−アップ演算を行うシフト−アップ演算部３６６、及びＤＮＤ演算された差分データ及びシフト−アップ演算された差分データのうち散布度が小さい方の差分データを選択してエントロピ符号化器３７０に出力する第２の差分データ選択部３６８を備える。
【００６７】
まず、ＤＮＤ演算部３６２において行われるＤＮＤ演算について説明する。
フォルド演算された差分データがＤＮＤ演算部３６２に入力されれば、入力された差分データは半分に分けられ、上位範囲に位置する差分データはディバイド関数によって負数領域に移動する。ディバイド関数は、下記式１０のように定義される。
【００６８】
【数１０】
2004030557.tif 000018
【００６９】
ここで、ｊは、入力された差分データのインデックスであり、ｎＱＫｅｙｊは、整数配列を示し、ｎＫｅｙＭａｘは、入力されたフォルド演算された差分データのうち最大値を示す。差分データの分布が全体差分データが占める範囲の境界領域に集中している場合、ＤＮＤ演算はデータの全体領域を大幅に狭める効果がある。
【００７０】
ディバイド演算後に散布度が計算されるが、この場合、最小限の符号化ビットサイズが選択されるように符号化に必要なビットサイズが散布度として用いられる。
ディバイド演算が行われた後、ＤＮＤ演算のディバイド−アップ演算またはディバイド−ダウン演算が行われるが、どちらの演算が行われるかはディバイド演算後のデータの分布範囲によって決められる。
【００７１】
正数側の範囲のデータ方が多ければ、下記式１１により定義されるディバイド−ダウン演算が行われる。
【００７２】
【数１１】
2004030557.tif 000019
【００７３】
一方、負数側の範囲のデータ方が多ければ、下記式１２により定義されるディバイド−アップ演算が行われる。
【００７４】
【数１２】
2004030557.tif 000020
【００７５】
前記式において、ｊは、量子化されたキーデータのインデックスであり、ｎＱＫｅｙｊは、整数配列であり、ｎＱＫｅｙＭａｘは、ｎＱＫｅｙｊの最大値であり、ｎＱＫｅｙＭｉｎは、ｎＱＫｅｙｊの最小値である。
【００７６】
以下、ＤＮＤ演算部３６２の演算過程を示す図１１を参照し、ＤＮＤ演算過程について説明する。
【００７７】
ＤＮＤ演算部３６２は、フォルド処理部３５０からキーデータの差分データが入力されれば、入力された差分データのうち最大値ｎＫｅｙＭａｘ及び最小値ｎＫｅｙＭｉｎを求める（Ｓ４６１０）。その後、ＤＮＤ演算部３６２は、最大値及び最小値の絶対値を比較し（Ｓ４６２０）、最大値が最小値の絶対値以上であれば、求められた最大値を現在のＤＮＤ演算次数の最大値として設定する（Ｓ４６２２）。
【００７８】
ＤＮＤ演算部３６２は、ＤＮＤ演算次数が１であるか否かをチェックし（Ｓ４６２４）、次数が１であれば、前記式１０に最大値ｎＫｅｙＭａｘを代入してＤＮＤ演算部３６２に入力された差分データに対してディバイド演算を行う（Ｓ４６３０）。
【００７９】
ディバイド演算を行ったＤＮＤ演算部３６２は、符号化に必要なビットサイズを求めるための関数ｇｅｔＱＢｉｔを用い、ディバイド演算を行って狭まった差分データの範囲を符号化するために必要なビットサイズを測定する（Ｓ４６４０）。その後、現在のＤＮＤ演算次数が１であれば（Ｓ４６５０）、前記値をＤＮＤ演算後に最小符号化ビットサイズを示す値ｎＱＢｉｔＤＮＤに一旦記憶し、ＤＮＤ次数を１だけインクリメントする（Ｓ４６５５）。
【００８０】
その後、ＤＮＤ演算部３６２は、前記過程を再び行うが、第Ｓ４６２４段階において次数が１でなければ、前記式１１にｎＫｅｙＭａｘ値を代入してディバイド−ダウン演算を行う（Ｓ４６３４）。ＤＮＤ演算部３６２は、ディバイド−ダウン演算の行われた差分データの符号化に必要なビット数を計算し（Ｓ４６４０）、この値が以前の次数のＤＮＤ演算により記憶された符号化に必要な最小値ｎＱＢｉｔＤＮＤより小さければ（Ｓ４６５２）、ＤＮＤ演算後に符号化に必要な最小ビットサイズをこの値に変える（Ｓ４６５８）。
【００８１】
一方、第Ｓ４６２０段階において、最小値の絶対値が最大値より大きければ、当該次数の最大値を入力された最小値に更新し（Ｓ４６２３）、最小値を前記式１２に代入してディバイド−アップ演算を行う（Ｓ４６３８）。その後、ＤＮＤ演算部３６２は、ディバイド−アップ演算の行われた差分データの符号化に必要なビット数を計算し（Ｓ４６４０）、この値が以前の次数のＤＮＤ演算により記憶された符号化に必要な最小値ｎＱＢｉｔＤＮＤより小さければ（Ｓ４６５２）、ＤＮＤ演算後に符号化に必要な最小ビットサイズをこの値に変える（Ｓ４６５８）。
【００８２】
ＤＮＤ演算部３６２は、所定の回数となるまで前記過程を繰り返すが、ＤＮＤ演算を行う回数は可変的である。例えば、この実施の形態は、ＤＮＤ演算を行う回数を７回として設定した。ＤＮＤ演算部３６２は、符号化に必要な最小ビットサイズｎＱＢｉｔＤＮＤ及びその時のＤＮＤ演算された差分データを第１の差分データ選択部３６４に出力し、その時の次数をヘッダ符号化器５００に出力してビットストリームに含める。
【００８３】
第１の差分データ選択部３６４は、シフト演算された差分データ、フォルド演算された差分データ及びＤＮＤ演算された差分データを入力され、いかなる演算の結果をエントロピ符号化するかを決める。
【００８４】
図５及び図６を参照して、第１の差分データ選択部３６４は、ＤＮＤ演算後に符号化に必要な最小ビット数ｎＱＢｉｔＤＮＤがＤＰＣＭ演算後の符号化ビットサイズｎＱＳｔｅｐ＿ＤＰＭＣ以上であれば（Ｓ４７００）、ＤＰＣＭ演算の結果を選択してシフト演算を行った後、シフトされた差分データをエントロピ符号化器３７０に出力してエントロピ符号化する（Ｓ４７１０）。この場合、ＤＮＤ次数は、−１として設定され、ヘッダ符号化器５００に出力されてキーヘッダに含まれる。
【００８５】
しかし、ｎＱＢｉｔＤＮＤがＤＰＣＭ後の符号化ビットサイズより小さいものの、フォルド演算後の符号化ビットサイズ以上であれば（Ｓ４７２０）、第１の差分データ選択部３６４は、フォルド演算された差分データをエントロピ符号化器３７０に出力してエントロピ符号化する（Ｓ４７３０）。この場合、ＤＮＤ次数は、０として設定され、ヘッダ符号化器５００に出力されてキーヘッダに含まれる。
【００８６】
もし、ＤＮＤ演算された後の差分データの符号化ビット数が最小であれば、第１の差分データ選択部３６４は、ＤＮＤ演算された差分データをシフト−アップ演算部３６６に出力し、シフト−アップ演算部３６６は、差分データを入力され、ＤＮＤ演算された差分データに対して第１の散布度を計算すると共に（Ｓ４７４０）、ＤＮＤ演算された差分データに対して下記式１３で定義されるシフト−アップ演算を行った後（Ｓ４８００）、シフト−アップ演算された差分データの第２の散布度を再び計算する（Ｓ４８１０）。
【００８７】
【数１３】
2004030557.tif 000021
【００８８】
ここで、ｊは、量子化されたキーデータの差分データのインデックスであり、ｎＱＫｅｙｊは、整数配列であり、そしてｎＫｅｙＭａｘは、差分データのうち最大値を示す。
【００８９】
ＤＮＤ演算された差分データ及びシフト−アップ演算された差分データを入力された第２の差分データ選択部３６８は、第１の散布度及び第２の散布度を比較し（Ｓ４９００）、シフト−アップ演算後の第２の散布度がＤＮＤ演算後の第１の散布度より小さければ、シフト−アップ演算が行われた差分データをエントロピ符号化器３７０に出力してエントロピ符号化し（Ｓ４９１０）、ＤＮＤ演算に用いられた最大値ｎＫｅｙＭａｘ及び最小値ｎＫｅｙＭｉｎ、そして、シフト−アップ演算に用いられた最大値ｎＫｅｙＭａｘをヘッダ符号化器５００に出力してキーヘッダに含める。
【００９０】
しかし、ＤＮＤ演算後の第１の散布度がシフト−アップ演算後の第２の散布度より小さければ、第２の差分データ選択部３６８は、ＤＮＤ演算が行われた差分データをエントロピ符号化器３７０に出力してエントロピ符号化し（Ｓ４９２０）、ＤＮＤ演算に用いられた最大値ｎＫｅｙＭａｘ及び最小値ｎＫｅｙＭｉｎのみがヘッダ符号化器５００に出力される。本実施の形態では、前記第１及び第２の散布度として標準偏差を用いた。
【００９１】
エントロピ符号化器３７０は、符号化すべき差分データの性質に応じて２種の関数演算を行って差分データを符号化する。例えばＤＰＣＭが行われてシフト演算が行われた差分データ及びディバイド演算が行われた差分データは、正数及び負数を共に有するため、差分データの符号を含む符号化を行い、フォルド演算された差分データ及びシフト−アップ演算された差分データは正数値のみを有するため、符号を含まない符号化を行う。
【００９２】
本実施の形態では、符号を含む符号化関数としてｅｎｃｏｄｅＳｉｇｎｅｄＡＡＣ関数を用い、符号を含まない符号化関数としてｅｎｃｏｄｅＵｎｓｉｇｎｅｄＡＡＣ関数を用いて差分データを符号化する。
【００９３】
図１２は、ｅｎｃｏｄｅＳｉｇｎｅｄＡＡＣ関数の一例を示す図面である。図１２を参照すれば、入力値が７４であり、この値に対する符号化ビット数が８であれば、この値の符号は０であり、この値の２進数は１００１０１０となる。符号及び全てのビットプレインは下記のような過程を通じて符号化される。
第１の段階：２進数をＭＳＢからＬＳＢにビットプレイン単位に符号化する
第２の段階：符号化中に現在符号化されるビットが０でないか否かをチェックする。
第３の段階：もし、最初の０ではない値であれば、２進数の現在符号化ビットを符号化した後に符号を符号化する。
第４の段階：２進数の残りのビットを符号化する。
【００９４】
ｅｎｃｏｄｅＵｎｓｉｇｎｅｄＡＡＣ関数は、符号のない値に対するコンテキストを用いて適応算術符号化ビットストリームに符号化する。これは、符号コンテキストがあるという点を除ければ、前記ｅｎｃｏｄｅＵｎｓｉｇｎｅｄＡＡＣ関数の処理過程と類似している。
【００９５】
図１３から図２２は、本実施の形態における各演算が行われた後のキーデータを示す図面である。図１３から図２２において、横軸は各キーデータのインデックスを示し、縦軸はキーデータの値を示す。
【００９６】
図１３は、本実施の形態の符号化器に入力された元のキーデータを示す図面である。図１３に示されたキーデータが量子化器３２０に出力されて９ビットの量子化ビットで量子化されれば、図１４に示されたように、量子化されたキーデータが得られる。量子化されたキーデータに対してＤＰＣＭを行えば、図１５のように、キーデータの差分データが得られる。
【００９７】
その後、量子化されたキーデータの差分データを約７のモード値にシフトすれば、図１６に示されたように、キーデータの差分データが得られ、シフトされた差分データにフォルド演算を行えば、図１７に示されたように、いずれも正数に変換されたデータが得られる。
【００９８】
フォルドされたデータにＤＮＤ演算を行ったデータを図１８から図２０に示す、フォルドされたデータに対してまずＤＮＤ演算のうちディバイド演算を行った後の差分データを図１８に示す。示されたように、正数側の範囲は０〜２８であり、負数側の範囲は０〜−２９であるため、負数側の範囲がより広い。従って、図１８に示されたデータに対してディバイド−アップ演算が行われ、ディバイド−アップ演算の結果を図１９に示す。
【００９９】
ディバイド−アップ演算によりキーデータの負数側の範囲は正数側の範囲に比べて相当狭まり、ＤＮＤの次の次数においてディバイド−アップ演算された差分データに対してディバイド−ダウン演算が行われる。図２０は、図１９の差分データに対してディバイド−ダウン演算を行った結果を示す図面である。一方、ディバイド−ダウン演算されたキーデータに対してシフト−アップ演算を行った結果を図２１に示す。
【０１００】
前記図１３から図１９では、キーデータ及び差分データの範囲が次第に狭まるということが分かる。しかし、シフト−アップ演算結果を示す図２１及び図２０を比較してみれば、シフト−アップ演算後の符号化されるべき差分データの範囲がより広がったということが分かる。従って、最終的に符号化すべきキーデータの差分データは、ディバイド−ダウン演算が行われた差分データであることが図２２から分かる。
【０１０１】
次に、ヘッダ符号化器５００において符号化されてキーヘッダに記憶される情報について説明する。
符号化されるべきキーデータが入力されれば、ヘッダ符号化器５００は、入力キーデータからキーデータの桁数及び符号化されるべきキーの総数を入力されて符号化する。その後、ヘッダ符号化器５００は、線形キー符号化器３１０から線形キー符号化された線形キー領域の存否を示す情報及び線形キー領域のキーデータの数を入力され、実数変換部３１５から実数変換された線形キー領域の開始キーデータ及び終了キーデータを入力される。
【０１０２】
併せて、実数変換部３１５が量子化誤差最小化部３２５から量子化誤差が最小化となる最大値及び最小値を入力されて実数変換した場合には、変換された最大値及び最小値は逆量子化に利用可能に実数変換部３１５からヘッダ符号化器５００に入力されてキーヘッダに含まれる。また、量子化に用いられた量子化ビットサイズもヘッダ符号化器５００に入力されてキーヘッダに含まれる。
【０１０３】
また、ヘッダ符号化器５００は、ＤＰＣＭ処理部３３０からＤＰＣＭ演算次数及び各次数におけるイントラキーデータを入力され、シフト部３４０からシフト演算に用いられたモード値を入力され、ＤＮＤ処理部３６０からシフト−アップ演算が行われたか否か、散布度が最小となるＤＮＤ次数及び各ＤＮＤ次数における最大値及び最小値を入力される。最後に、ヘッダ符号化器５００は、エントロピ符号化器３７０から符号化に用いられた符号化ビット数を入力されてキーヘッダに符号化する。
【０１０４】
以下、添付した図２３から図３６に基づき、本実施の形態における座標インタポレータのキー値データ符号化器及び符号化方法について説明する。
【０１０５】
図２３は、本実施の形態における符号化装置の構成を示すブロック図であり、図２４は、本発実施の形態における符号化方法を説明するフローチャートである。
【０１０６】
図２３を参照して、本実施の形態のキー値データ符号化器７００は、入力された座標インタポレータキー値データの各頂点の各成分データを所定の量子化ビット数で量子化する量子化器７１０、量子化された各頂点の成分データに対して所定のＤＰＣＭ演算を行うＤＰＣＭ処理部７２０、差分データをシンボル及びシンボルの位置を表わすインデックスに変換する辞書符号化器７５０、及び入力された差分データのシンボル及びインデックスをエントロピ符号化するエントロピ符号化器７６０を備える。
【０１０７】
以下、図２４を参照して、本実施の形態の符号化方法について説明する。
座標インタポレータのキー値データはＮ×Ｍサイズのマトリックス状に量子化器７１０に入力される（Ｓ９０００）。入力された座標インタポレータのキー値データの一例を下記表３に示す。
【０１０８】
【表３】
2004030557.tif 000022
【０１０９】
前記表３において、Ｎはキーデータの数（キーフレーム数）を、Ｍは各キーフレームにおける頂点の数を各々表わす。
【０１１０】
本実施の形態のキー値データ符号化器７００は、座標インタポレータのキー値データを符号化するための２つのモードで動作するが、一つは頂点モードであり、もう一つは転置モードである。前記表３には、頂点モードにおいて量子化器７１０が量子化すべきキー値データの構造が示してある。本実施の形態のキー値データ符号化器７００は、転置モードにおいて前記表３に示された入力されたキー値データの量子化に先立ち、Ｍ×Ｎ行列への変換を行う。転置変換されたデータ行列は、キー値データの復号化中に逆量子化された後、復号化されたキー値データをＮ×Ｍ行列に再び変換して入力されたキー値データに同じキー値データが復元される。
【０１１１】
図２４を参照して、量子化器７１０は、外部から入力されたキー値データの符号化モードが転置モードであるかをチェックし（Ｓ９１００）、転置モードであれば、入力されたＮ×Ｍのキー値データ行列をＭ×Ｎ行列に変換する（Ｓ９２００）。
【０１１２】
その後、量子化器７１０は、所定の量子化ビット数で入力または変換されたキー値データ行列の各成分のデータを量子化し、量子化された各成分のキー値データをＤＰＣＭ処理部７２０に出力し、量子化に用いられた入力データの各成分の最小値及び最大範囲は１０進数体系の実数に変換してヘッダ符号化器に出力する（Ｓ９３００）。
【０１１３】
ＤＰＣＭ処理部７２０は、入力された量子化されたキー値データに対して時間ＤＰＣＭ演算、空間ＤＰＣＭ演算及び時空間ＤＰＣＭ演算を行い、各々のＤＰＣＭ演算の結果に対して循環量子化を行い、循環量子化された各差分データのうちエントロピが最も小さい差分データを辞書符号化器７５０に出力する（Ｓ９４００）。
【０１１４】
辞書符号化器７５０は、入力された差分データに対応する辞書シンボルＳｉｊ及び位置インデックスＩｉｊを生成して出力する（Ｓ９４００）。具体的に、辞書符号化器７５０は、入力された差分データに対して行われたＤＰＣＭ演算モードを表わすシンボル及び位置インデックスを生成し、差分データを、差分データに存在する値を表わすシンボルまたはシンボルフラグ、及びシンボルの位置を表わすインデックで生成してエントロピ符号化器に出力する。
【０１１５】
エントロピ符号化器７６０は、入力されたキー値データ成分のシンボル及びインデックスをエントロピ符号化してビットストリームを生成する（Ｓ９８００）。
以下、前述した各段階を図２５から図３６を参照して詳細に説明する。
【０１１６】
図２７に示すように、量子化器７１０は、入力された各成分データの最大値及び最小値を選択する（Ｓ９３２０）。
【０１１７】
量子化器７１０は、選択された各成分のデータの最大値及び最小値を用いて各成分データの範囲を計算し、全ての成分データの範囲のうち最大範囲を決める（Ｓ９３４０）。
次に、量子化器７１０は、各成分の最小値及び決められた全ての成分の最大範囲を用い、下記式１４により各成分のキー値データを量子化する（Ｓ９３６０）。
【０１１８】
【数１４】
2004030557.tif 000023
【０１１９】
前式１４において、ｉはキーデータを、ｊは頂点を、ｎＫＶＱＢｉｔは量子化ビットサイズを各々表わす。また、ｆＭｉｎ＿Ｘ、ｆＭｉｎ＿Ｙ及びｆＭｉｎ＿Ｚは各成分データの最小値を、ｆＭａｘは各成分データの範囲のうち最大範囲を表わす。
【０１２０】
量子化器７１０は、量子化された各成分のキー値データをＤＰＣＭ処理部７２０に出力し、前記各成分の最小値ｆＭｉｎ＿Ｘ、ｆＭｉｎ＿Ｙ、ｆＭｉｎ＿Ｚ及び最大範囲ｆＭａｘを１０進数体系の実数に変換してヘッダ符号化器５００に出力する。
【０１２１】
以下、図２５及び図２８に基づき、本実施の形態のキー値データ符号化器のＤＰＣＭ処理部及びＤＰＣＭ演算方法について説明する。
【０１２２】
本実施の形態のキー値データ符号化器のＤＰＣＭ処理部の構成を示すブロック図である図２５に示すように、本実施の形態のＤＰＣＭ処理部７２０は、量子化器７１０から入力された各成分データに対して時間ＤＰＣＭ演算、空間ＤＰＣＭ演算及び時空間ＤＰＣＭ演算を行うＤＰＣＭ演算部７３０、ＤＰＣＭ演算部７３０から入力された差分データの範囲を狭める循環量子化器７４０、循環量子化器７４０から入力された差分データのうち何れか一つを選択して出力するＤＰＣＭモード選択部７４５を備える。また、ＤＰＣＭ演算部７３０は、入力された量子化された各成分データに対して時間ＤＰＣＭ演算を行う時間ＤＰＣＭ演算部７３１、量子化された各成分のデータに対して空間ＤＰＣＭ演算を行う空間ＤＰＣＭ演算部７３３、及び量子化された各成分データに対して時間及び空間ＤＰＣＭ演算を行う時空間ＤＰＣＭ演算部７３５を備える。
【０１２３】
キー値データのＤＰＣＭ演算方法を説明する詳細フローチャートである図２８に示すように、量子化器７１０から入力された量子化された各成分のデータは、時間ＤＰＣＭ演算部７３１、空間ＤＰＣＭ演算部７３３、及び時空間ＤＰＣＭ演算部７３５に各々入力されてＤＰＣＭ演算が行われる（Ｓ９４２０）。
【０１２４】
時間ＤＰＣＭ演算部７３１は、現在キーフレームの各頂点の各成分データと以前キーフレームの各頂点の各成分データとの差を計算する。時間ＤＰＣＭ演算は下記式３で表わされる。
【０１２５】
【数１５】
2004030557.tif 000024
【０１２６】
前式１５において、ｉはキーデータを、ｊは頂点のインデックスを各々表わす。
【０１２７】
一方、空間ＤＰＣＭ演算部７３３は、同じキーフレームの各頂点間の差を計算する。具体的には、空間ＤＰＣＭ演算部７３３は、空間ＤＰＣＭ演算を行うべき現在の頂点の以前に空間ＤＰＣＭ演算の行われた頂点に対し、下記式１６を用いてエントロピを計算する。
【０１２８】
【数１６】
2004030557.tif 000025
【０１２９】
前記式１６において、は頂点からシンボルが生じる確率であって、Ｆｉ／Ｎであり、ここで、Ｆｉは、頂点からそのシンボルが生じる回数であり、Ｎはキーデータの数である。
【０１３０】
空間ＤＰＣＭ演算部７３３は、頂点のうち、エントロピが最も低い頂点を基準頂点として設定し、現在空間ＤＰＣＭ演算が行われるべき頂点及び基準頂点の成分データ間の差分データを計算する。空間ＤＰＣＭ演算は、下記式１７で表わされる。
【０１３１】
【数１７】
2004030557.tif 000026
【０１３２】
一方、時空間ＤＰＣＭ演算部７３５は、現在キーフレームの各頂点に対して空間ＤＰＣＭ演算を行い、現在キーフレームの各頂点に対応する以前キーフレームの各頂点に対して現在キーフレームの各頂点の基準頂点に対応する頂点を基準頂点として空間ＤＰＣＭ演算を行った後、現在キーフレームの頂点に対応する差分データと以前フレームの頂点に対応する差分データとの差を計算する。すなわち、空間ＤＰＣＭ演算された結果に対して時間ＤＰＣＭ演算を行う。時空間ＤＰＣＭ演算は、下記式１８で表される。
【０１３３】
【数１８】
2004030557.tif 000027
【０１３４】
但し、空間ＤＰＣＭ演算及び時空間ＤＰＣＭ演算のうち、
2004030557.tif 000028
または
2004030557.tif 000029
が量子化された最小値より小さければ、これらの値の代わりに量子化された最小値がＤＰＣＭ演算に用いられる。また、空間ＤＰＣＭ演算及び時空間ＤＰＣＭ演算のうち、
2004030557.tif 000030
または
2004030557.tif 000031
が量子化された最大値より大きければ、これらの値の代わりに量子化された最大値がＤＰＣＭ演算に用いられる。
【０１３５】
ＤＰＣＭ演算部７３０は、計算された差分データを循環量子化器７４０に出力し、循環量子化器７４０は、時間ＤＰＣＭ演算された差分データ、空間ＤＰＣＭ演算された差分データ、及び時空間ＤＰＣＭ演算された差分データの各々に対して循環量子化を行い、循環量子化された各差分データをＤＰＣＭモード選択部７４５に出力する（Ｓ９４４０）。
【０１３６】
図３１は、量子化器７１０の出力の一例を示し、図３２は、図２７に示された量子化されたデータに対してＤＰＣＭ演算が行われた結果を示す。図３２に示されたように、量子化された値に対してＤＰＣＭ演算が行われれば、符号化されるべきデータの範囲は２倍まで広がる。循環量子化の目的は、量子化された値のデータ範囲を維持しつつＤＰＣＭ演算を行うことである。
このために、循環量子化は、ＤＰＣＭ演算された差分データの最大値がＤＰＣＭ演算された最小値と循環的に連結されていると仮定する。従って、２つの連続された量子化された差分データ間の線形ＤＰＣＭの結果がＤＰＣＭ演算された差分データの最大値の半分より大きければ、差分データの最大範囲を減算してさらに小さい値で表わし、２つの連続された量子化された差分データ間の線形ＤＰＣＭの結果がＤＰＣＭ演算された差分データの最小値の半分より小さければ、差分データの最大範囲を合算してさらに小さい値で表わす。
【０１３７】
循環量子化器７４０の循環量子化演算は、下記式１９で表わされる。
【０１３８】
【数１９】
2004030557.tif 000032
【０１３９】
前記式１９において、ｎＱＭａｘは、ＤＰＣＭ演算された差分データのうち最大値を、ｎＱＭｉｎは、ＤＰＣＭ演算された差分データのうち最小値を表わす。図３２に示されたＤＰＣＭ演算されたデータに対して循環量子化を行った結果が図３３に示されている。
【０１４０】
循環量子化器７４０は、循環量子化された各差分データをＤＰＣＭモード選択部７４５に出力する。
ＤＰＣＭモード選択部７４５は、各頂点に対して入力された時間、空間及び時空間ＤＰＣＭ演算された差分データのエントロピを前記式４により計算する（Ｓ９４６０）。
その後、ＤＰＣＭモード選択部７４５は、計算されたエントロピが最も小さいＤＰＣＭ演算の結果を各頂点のＤＰＣＭ演算モードとして選択し、選択されたＤＰＣＭモードによる差分データ及びＤＰＣＭモード情報を辞書符号化器７５０に出力する（Ｓ９４８０）。
【０１４１】
次に、図２６及び図２９に基づき、本実施の形態の辞書符号化器７５０及び辞書符号化方法について説明する。
【０１４２】
本実施の形態の辞書符号化器７５０の構成を示すブロック図である図２６に示すように、辞書符号化器７５０は、入力された各頂点の各成分データに対して行われたＤＰＣＭ演算モードを符号化するＤＰＣＭモード符号化器７５２、入力された各頂点の各成分の差分データ値を表わすシンボル及びシンボルの位置を表わすインデックスを生成する発生モード符号化器７５６、入力された各頂点の各成分の差分データのシンボルに対応する設定フラグ及びシンボルの位置を表わすインデックスを生成する増加モード符号化器７５８、及び入力された各頂点の各成分の差分データを表わすためのシンボルテーブルの大きさ及びシンボルフラグテーブルの大きさを計算し、ＤＰＣＭモード符号化器７５２から入力された差分データを発生モード符号化器７５６または増加モード符号化器７５８に出力するテーブルサイズ計算部７５４を備える。
【０１４３】
まず、辞書符号化器７５０は、ＤＰＣＭモード符号化器７５２において、入力された各頂点の差分データの量子化選択フラグの値が１であるかをチェックし、フラグ値が１であれば、後述する過程を行う。しかし、フラグ値が０であれば、これは、該当頂点の全てのキーフレームにおける量子化された値が同じであるということを意味するため、辞書符号化過程を省略し、量子化された値ＱＭｉｎをキー値ヘッダとして符号化する。
【０１４４】
本実施の形態の辞書符号化方法を説明する図２９に示すように、ＤＰＣＭ処理部７２０において生成された各頂点の各成分の差分データは、まずＤＰＣＭモード符号化器７５２に入力され、ＤＰＣＭモード符号化器７５２は、入力された各頂点の各成分データのＤＰＣＭモードを表わすシンボル及びシンボルの位置を表わすインデックスを生成する（Ｓ９６２０）。
【０１４５】
図３４は、本実施の形態のＤＰＣＭモード符号化器７５２がＤＰＣＭモードを符号化する方法を示す図面である。
図３４に示すように、ＤＰＣＭモード符号化器７５２は、各頂点に対して各成分のＤＰＣＭモードの組合せ及びこれに対応するシンボルを表わすテーブルを予め用意する。時間ＤＰＣＭ演算をＴ、空間ＤＰＣＭ演算をＳ、時空間ＤＰＣＭ演算をＴ＋Ｓとした時、各頂点のＤＰＣＭモードの組合せは、下記表４の通りである。
【０１４６】
【表４】
2004030557.tif 000033
【０１４７】
各頂点はｘ、ｙ及びｚの３成分を含むため、ＤＰＣＭモードの組合せは２７種に固定される。
【０１４８】
一方、図３４に示されたように、入力された各頂点の差分データは、各成分のＤＰＣＭ演算モードの組合せに応じて前記表４の何れか一つのシンボルに対応する。ＤＰＣＭモード符号化器７５２は、入力された各頂点のＤＰＣＭモードを表４のシンボルに対応づけ、該当シンボルが差分データに存在することを表わすようにフラグを設定する。
【０１４９】
ＤＰＣＭモード符号化器７５２は、入力された各頂点のＤＰＣＭモードの組合せに対応するシンボルを一列に整列し、小さいシンボルからインデックスを生成する。
【０１５０】
入力された差分データに対応するＤＰＣＭモードのシンボルの列は、図３４に示されたように、（４，１，５，１，４，５）である。この時、最も小さいシンボルは１（Ｔ，Ｔ，Ｓ）であるため、ＤＰＣＭモード符号化器７５２は、データ列においてシンボル１がある位置を表わすインデックスを生成するが、シンボル１の位置は１に設定する。従って、インデックスは（０，１，０，１，０，０）となる。
【０１５１】
その後、ＤＰＣＭモード符号化器７５２は、シンボル列のうち１の次に小さいシンボル４（Ｔ，Ｓ，Ｓ）の位置を表わすインデックスを生成するが、シンボル４の位置は１に設定する。但し、この場合、シンボル１の位置は考慮しない。従って、生成されたインデックスは、（１，０，１，０）となる。その後、ＤＰＣＭモード符号化器７５２は、残りのシンボル５（Ｔ，Ｓ，Ｔ＋Ｓ）の位置を表わすインデックスを生成する。従って、シンボル５を表わすインデックスは（１，１）となる。
【０１５２】
ＤＰＣＭモード符号化器７５２は、設定されたフラグ及びインデックスをテーブルサイズ計算部７５４に出力する。
図２６及び図２９に示すように、テーブルサイズ計算部７５４は、入力された差分データの発生モードの符号化時に用いられるシンボルテーブルのサイズＡ、及び入力された差分データの増加モードの符号化時に用いられる予め設定されたシンボルテーブルの各シンボルに対応するシンボルフラグの大きさＢを計算する（Ｓ９４６０）。
【０１５３】
テーブルサイズ計算部７５４は、発生モード符号化器７５６に用いられるシンボルテーブルの大きさＡ＝Ｓ×（ＡＱＰ＋１）及び増加モード符号化器に用いられるシンボルテーブルに対応するシンボルフラグの大きさＢ＝２（ＡＱＰ＋１）−１を比較する（Ｓ９６６０）。ここで、Ｓは、差分データに含まれるシンボル数であり、ＡＱＰは、シンボルを表わすためのビットサイズである。
【０１５４】
また、テーブルサイズ計算部７５４は、ＡがＢより小さければ、入力された各頂点の差分データを発生モード符号化器７５６に出力し、ＢがＡより小さければ、入力された各頂点の差分データを増加モード符号化器７５８に出力する。
【０１５５】
以下、図３５を参照して、本実施の形態の発生モード符号化器７５６の処理過程について説明する。
【０１５６】
発生モード符号化器７５６は、入力された差分データから生じた差分値に対応するシンボル及びシンボルの位置を表わす位置インデックスを生成する（Ｓ９６８０）。
【０１５７】
図３５に示すように、入力された差分データが（３，７，３，７，−４，７，３，−４，３，７，−４，−４）であれば、発生モード符号化器７５６は、入力された各頂点の差分データの差分値に対応するシンボル（３，７，−４）を順次に記録したテーブルを作成する。
【０１５８】
発生モード符号化器７５６は、入力された差分データ列において最初のシンボルである３を符号化した後、以降のキーフレームにおいて３が現れる位置を１に設定し、３が現れていない位置は０に設定して位置インデックスを生成する。シンボル３に対して生成されたインデックスは、（０１０００１０１０００）となる。
【０１５９】
また、発生モード符号化器７５６は、次のシンボルである７に対してインデックスを生成するが、この時、図３５に示されたように、以前シンボルの位置は考慮しない。従って、シンボル７に対するインデックスは、（１０１０１００）となる。
【０１６０】
発生モード符号化器７５６において生成されるインデックスは、符号化されていないシンボルの位置のみを考慮するため、最後のシンボル−４の位置インデックスは（１１１）となる。
【０１６１】
一方、図３５に示された例では、ｂＳｏｌｅＫＶフラグがモード０に設定された。ｂＳｏｌｅＫＶフラグは、差分データに含まれたシンボルが一回のみ生じるかを表わすフラグであって、もし、シンボルが一回のみ生じてインデックスが全て０であれば、該当シンボルに対するｂＳｏｌｅＫＶフラグは１に設定され、インデックスは符号化されない。発生モード符号化器７５６は、差分データをエントロピ符号化するために各シンボル、シンボルのインデックス、及びｂＳｏｌｅＫＶフラグをエントロピ符号化器７６０に出力する。
【０１６２】
以下、図３６に基づき、本実施の形態の増加モード符号化器７５８の処理過程について説明する。
【０１６３】
増加モード符号化器７５８は、シンボル値の代わりにシンボルの存否を表わすフラグ及びシンボルの位置を表わす位置インデックスを生成する（Ｓ９６９０）。
【０１６４】
また、増加モード符号化器７５８は、差分データに存在するシンボルをテーブルで予め生成する。テーブルはシンボルの絶対値の上がり順に生成され、同じ絶対値のうち正数が負数より上位に位置する。従って、テーブルに記載されるシンボルの順序は０，１，−１，２，−２，３，−３．．．となる。シンボルテーブルのシンボルに対応するシンボルフラグのサイズは、前述したように、２（ＡＱＰ＋１）−１として計算されるが、例えば、ＡＱＰが２であれば、ンシンボルフラグで表わせるシンボル数は７となる。また、シンボルフラグは、各シンボルに対応する値が差分データに存在すれば１に設定され、フラグが１に設定されたシンボルに対してのみ位置インデックスが生成される。
【０１６５】
例えば図３６に示すように、増加モード符号化器７５８に入力された差分データが図３６の通りである時、差分データに存在するシンボルは（−１，２，−３）であるため、シンボルフラグは（０，０，１，１，０，０，１）の順に設定される。
【０１６６】
増加モード符号化器７５８は、シンボルテーブルの上位に位置するシンボルに対応する位置インデックスを先に生成する。図３６に示されたように、増加モード符号化器７５８は、シンボルテーブルの最上位シンボルである−１の位置を１に設定し、その他の位置を０に設定してインデックスを（１０１０００１０１０００）として生成する。
【０１６７】
次に、増加モード符号化器７５８は、シンボル−１の位置を考慮せず、残りの位置に対してインデックスを（００１０１０１１）として生成する。最後に、増加モード符号化器７５８は、以前に符号化されたシンボルの位置を考慮せず、シンボル−３のインデックスを（１１１１）として生成する。増加モード符号化器７５８は、差分データをエントロピ符号化するために、フラグと各シンボルの位置インデックスをエントロピ符号化器７６０に出力する。
【０１６８】
一方、本実施の形態の発生モード符号化器７５６及び増加モード符号化器７５８において生成されたインデックスは、いずれもｎＴｒｕｅＯｎｅと呼ばれるフラグを有する。このフラグは、元の位置インデックスが反転されたか否かを表わすものであって、このフラグが０に設定されれば、現在の位置インデックスは元の位置インデックス値が反転されたということを意味する。このように位置インデックスを反転させる理由は、インデックスに１が多く含まれた場合、反転により０の数を増やして算術符号化の効率を高めるためである。
【０１６９】
以下、図３０に基づいて、本実施の形態のエントロピ符号化方法について説明する。
【０１７０】
本実施の形態のエントロピ符号化器７６０は、増加モード符号化器７５８から差分データのシンボルを表わすフラグ及び位置インデックスを入力されてエントロピ符号化し、発生モード符号化器７５６から差分データのシンボル及び位置インデックスを入力され、シンボルをｅｎｃｏｄｅＳｉｇｎｅｄＱｕａｓｉＡＡＣ関数を用いて符号化する。
【０１７１】
ｅｎｃｏｄｅＳｉｇｎｅｄＱｕａｓｉＡＡＣ関数は、入力された値及び符号に対するコンテキストを用いて適応算術符号化されたビットストリームを生成するが、この関数は０でない最初のビットを符号化した後に符号が符号化され、残りのビットはゼロコンテキストを用いて符号化される。
【０１７２】
図３０は、ｅｎｃｏｄｅＳｉｇｎｅｄＱｕａｓｉＡＡＣ関数を用いたシンボルの符号化過程を説明するフローチャートである。
【０１７３】
まず、エントロピ符号化器７６０は、符号化すべき差分データのシンボル及び各シンボルのビットサイズＱｂｉｔを入力される（Ｓ９８１０）。
【０１７４】
次に、エントロピ符号化器７６０は、先に入力されたビットサイズから２を引いて変数ｉに記憶する（Ｓ９８２０）。
【０１７５】
そして、エントロピ符号化器７６０は、エントロピ符号化すべき値ｎＶａｌｕｅの絶対値を変数ｖａｌに記憶した後、ｖａｌにｉだけＳｈｉｆｔＲｉｇｈｔ演算を行い、ＳＲ演算の行われた結果と“１”とのＡＮＤ演算を行って結果をｂｉｔ変数に記憶する（Ｓ９８３０）。
【０１７６】
この段階が最初に行われれば、エントロピ符号化されるべき入力値のうち符号を除いた最初のビットが検出され、以降段階において、最初のビットに相次いで１ビットずつ読み出される。
【０１７７】
そして、エントロピ符号化器７６０は、ｖａｌ値が１以下であるか否かをチェックし（Ｓ９８４０）、ｖａｌが１より大きければ、ｑｆ＿ｅｎｃｏｄｅ関数を用いてｂｉｔ値をゼロコンテキストにより符号化する（Ｓ９８５０）。一方、ｖａｌ値が１以下であれば、ｑｆ＿ｅｎｃｏｄｅ関数を用いてｂｉｔ値を第ｉ番目のコンテキストにより符号化する（Ｓ９８６０）。
【０１７８】
もしも、ｖａｌ値が１以下であればエントロピ符号化器７６０は、ｖａｌ値が１であるか否かを再びチェックし（Ｓ９８７０）、ｖａｌ値が１であれば、ｎＶａｌｕｅ値の符号を設定し（Ｓ９８８０）、設定された符号及び符号コンテキストにより符号化する（Ｓ９８９０）。
【０１７９】
一方、エントロピ符号化器７６０は、１ビットの符号化過程が終われば、ｉを１だけデクリメントし（Ｓ９９００）、デクリメントされたｉが０より小さいかを否かをチェックし（Ｓ９９１０）、ｉが０より小さくなるまで前記第Ｓ９８３０段階からＳ９９００段階を繰り返し、入力された値をエントロピ符号化する。
【０１８０】
最終的に、前記のような過程により、エントロピ符号化器７６０は入力された値の０でない最初値は該当ビット位置のコンテキストにより符号化し、その後のビットは全てゼロコンテキストにより符号化する。
【０１８１】
以下、図２３を参照して、本実施の形態のヘッダ符号化器５００において、キー値ヘッダに符号化される情報について説明する。
ヘッダ符号化器５００は、座標インタポレータを入力されてデータのモード、各キーフレームの頂点数、頂点数を符号化するのに必要なビット数、及び各実数の最大有効桁数を符号化する。
【０１８２】
また、ヘッダ符号化器５００は、量子化器７１０から量子化ビット数、量子化に必要な各頂点の各成分の最小値及び最大範囲、及び量子化された後の各頂点の各成分の最大値及び最小値を符号化する。
【０１８３】
また、ヘッダ符号化器５００は、ＤＰＣＭ処理部７２０から各頂点の各成分データに対して行われたＤＰＣＭ演算モードを入力され、辞書符号化器７５０から辞書符号化モードを入力されて符号化する。
【０１８４】
以上、本実施の形態における座標インタポレータのキー及びキー値データ符号化装置について説明してきた。以下では、添付した図面に基づき、本実施の形態における座標インタポレータのキー及びキー値データを符号化したビットストリームを復号化する方法及び装置について説明する。
【０１８５】
図３７は、本実施の形態における座標インタポレータ復号化装置の構成を示すブロック図である。
【０１８６】
本実施の形態の復号化装置は、入力されたビットストリームからキーデータを復号化するキーデータ復号化器１３００、入力されたビットストリームからキー値データを復号化するキー値データ復号化器１５００、及び入力されたビットストリームからキー及びキー値データの復号化に必要なヘッダ情報を復号化してキーデータ復号化器１３００及びキー値データ復号化器１５００に与えるヘッダ復号化器１５００を備える。
【０１８７】
以下、図３８から図４０に基づき、本実施の形態によるキーデータ復号化器１３００及び復号化方法について説明する。
【０１８８】
図３８は、本実施の形態における復号化装置の構成を示すブロック図である。本実施の形態の復号化器は、符号化されたビットストリームを受け取って復号化されたキーデータを再構成する。
【０１８９】
本実施の形態のキーデータ復号化器１３００は、エントロピ復号化器１３１０、逆ＤＮＤ処理部１３２０、逆フォルド処理部１３３０、逆シフト部１３４０、逆ＤＰＣＭ処理部１３５０、逆量子化器１３６０、線形キー復号化器１３８０及び実数逆変換部１３７０を備える。
【０１９０】
図３９は、本実施の形態によるキーデータ復号化方法を説明するフローチャートである。
【０１９１】
まず、キーデータは、ヘッダ復号化器１８００及びエントロピ復号化器１３１０に入力される。
ヘッダ復号化器１８００は、各復号化段階別に必要な情報を復号化して各段階に与える。ヘッダ復号化器１８００において復号化される各段階における情報について説明する。（Ｓ１４０００）。
【０１９２】
ビットストリームを入力されたエントロピ復号化器１３１０は、ヘッダ復号化器１８００から復号化すべき差分データの数と符号化に用いられたビット数、すなわち、復号化すべきビット数を入力され、ビットストリームをエントロピ復号化する（Ｓ１４１００）。この時、復号化すべき差分データの数は、与えられたキーデータの数からＤＰＣＭ演算のイントラキーデータの数だけ引いた数となる。
【０１９３】
ここで、エントロピ復号化器１３１０は、ビットストリームを復号化する時、ビットストリームに含まれた所定の情報（この実施の形態では、ｂＳｉｇｎｅｄＡＡＣＦｌａｇ）に基づき符号化された差分データが負数であるか、それとも正数であるかを識別し、負数であれば、ｄｅｃｏｄｅＳｉｇｎｅｄＡＡＣ関数を用いて復号化し、正数であれば、ｄｅｃｏｄｅＵｎｓｉｇｎｅｄＡＡＣ関数を用いて復号化する。このようにして復号化された差分データは、逆ＤＮＤ処理部１３２０に送られる。
【０１９４】
次に、エントロピ復号化された差分データを受け取った逆ＤＮＤ処理部１３２０は、ヘッダ復号化器１８００からＤＮＤ次数及び各ＤＮＤ次数における最大値ｎＫｅｙＭａｘを入力される。
【０１９５】
もし、ＤＮＤ次数が−１であれば、これは、符号化器がＤＮＤ演算された差分データの代わりにＤＰＣＭ演算されてシフトされた差分データをエントロピ符号化したことを意味するため、逆シフト演算を行う過程へ直ちに進む。一方、ＤＮＤ次数が０であれば、これは、符号化器がＤＮＤ演算された差分データの代わりにフォルドされた差分データをエントロピ符号化したことを示すために、逆フォルド演算を行う過程へ直ちに進む。しかし、ＤＮＤ次数が０より大きければ、逆ＤＮＤ演算を行う（Ｓ１４２００）。
【０１９６】
まず、逆ＤＮＤ処理部１３２０は、シフト−アップ演算の行われた差分データが符号化されたか否かを判断する（Ｓ４１７０）。本実施の形態においては、ビットストリームに含まれたｎＫｅｙＩｎｖｅｒｔＤｏｗｎ値が０より大きいか否かをチェックすることにより、シフト−アップ演算の行われた差分データが符号化されたか否かを判断する。
【０１９７】
もし、シフト−アップ演算の行われていない差分データが符号化されたならば、逆ＤＮＤ処理部１３２０は、逆ＤＮＤ演算を行う過程へ進む。しかし、シフト−アップ演算の行われた差分データが符号化されたならば、シフト−アップ演算により正数の領域に移動した差分データをさらに元の負数領域に戻す（Ｓ４２００）。本実施の形態は、下記式２０で表わされるシフト−ダウン（以下、“イン
バート−ダウン”と同じ意味で使用する）演算を行ってシフト−アップ演算された差分データを復元する。
【０１９８】
【数２０】
2004030557.tif 000034
【０１９９】
ここで、ｎＫｅｙＩｎｖｅｒｔＤｏｗｎは、シフト−アップ演算における最大値ンＫｅｙＭａｘと同じ値が用いられる。シフト−ダウン演算によりｎＫｅｙＩｎｖｅｒｔＤｏｗｎを超える差分データは−１以下の負数値に変わる。
【０２００】
シフト−ダウン演算の行われた差分デーに対して各ＤＮＤ次数におけるｎＫｅｙＭａｘ値に応じて逆ディバイド−ダウンまたは逆ディバイド−アップ演算が選択的に行われる。
【０２０１】
図４０を参照して、この逆ＤＮＤ演算過程について説明すると、逆ＤＮＤ処理部１３２０は、符号化中に行われたＤＮＤ演算の次数の回数だけ逆ＤＮＤ演算を行う。すなわち、逆ＤＮＤ処理部１３２０は、逆ＤＮＤ次数の初期値をＤＮＤ次数として設定し、逆ＤＮＤ演算を行う都度、１ずつデクリメントし、逆ＤＮＤ次数が１となるまで逆ＤＮＤ演算を行う。
【０２０２】
そして、逆ＤＮＤ処理部１３２０は、各次数におけるｎＫｅｙＭａｘ値をチェックしてｎＫｅｙＭａｘ値が０以上であるか否かを判断する（Ｓ１４５１０）。ｎＫｅｙＭａｘ値が０より小さければ、符号化中にディバイド−アップ演算が行われた旨を意味するために、逆ＤＮＤ処理部１３２０は、逆ディバイド−アップ演算を行って差分データの範囲を負数領域に広め（Ｓ１４５３０）、下記式２１のような逆ディバイド−アップ演算を用いる。
【０２０３】
【数２１】
2004030557.tif 000035
【０２０４】
ここでもし、ｎＫｅｙＭａｘが０以上であれば、逆ＤＮＤ処理部１３２０は、逆ＤＮＤ演算の次数が１であるか否かをチェックする。逆ＤＮＤ次数が１でなければ、符号化する時にディバイド−ダウン演算が行われた旨を意味するために、逆ＤＮＤ処理部１３２０は、逆ディバイド−ダウン演算を行って差分データの範囲を正数領域に広め（Ｓ１４５７０）、下記式２２のような逆ディバイド−ダウン演算を用いる。
【０２０５】
【数２２】
2004030557.tif 000036
【０２０６】
ここでもし、ｎＫｅｙＭａｘが０以上であり、且つ、逆ＤＮＤ演算の次数が１であれば、逆ＤＮＤ処理部１３２０は、逆ディバイド演算を行うことにより逆ＤＮＤ演算を終え（Ｓ１４５９０）、下記式２３のような逆ディバイド演算を用いる。
【０２０７】
【数２３】
2004030557.tif 000037
【０２０８】
次に、逆ＤＮＤ演算の行われたキーデータの差分データは、逆フォルド処理部１３３０に入力され、逆フォルド処理部１３３０は、逆フォルド演算を行い、正数領域にのみ位置する差分データの範囲を正数及び負数に分離し（Ｓ１４６００）、下記式２４のような逆フォルド演算を用いる。
【０２０９】
【数２４】
2004030557.tif 000038
【０２１０】
そして、逆フォルドされた差分データは、逆シフト部１３４０に出力され、逆シフト部１３４０は、ヘッダ復号化器１８００から符号化器に用いられたモードｎＫｅｙＳｈｉｆｔを入力され、下記式２５のように入力されたｎＫｅｙＭａｘ差分データにモードを加える（Ｓ１４７００）。
【０２１１】
【数２５】
2004030557.tif 000039
【０２１２】
逆シフト部１３４０から差分データを入力された逆ＤＰＣＭ処理部１３５０は、キーヘッダ符号化器１８００からＤＰＣＭ次数を入力され、差分データを量子化されたキーデータに復元する（Ｓ１４８００）。逆シフト部１３４０は、下記式２６を用いてＤＰＣＭ次数だけ逆ＤＰＣＭ演算を行う。
【０２１３】
【数２６】
2004030557.tif 000040
【０２１４】
ここで、ｉは、差分データ及びキーデータのインデックスを、ｖは整数配列を、ｄｅｌｔａ（ｉ）は差分データを各々表わす。
【０２１５】
逆ＤＰＣＭ処理されて生成された量子化されたキーデータは、逆量子化器１３６０に入力され、逆量子化器１３６０は、ヘッダ復号化器１８００から量子化ビットサイズｎＫｅｙＱＢｉｔ及び逆量子化に用いられる最大値及び最小値が量子化中に実数変換部３１５により符号化されたか否かを入力され、下記式２７を用いて入力された量子化されたキーデータを逆量子化されたキーデータに変換する（Ｓ１４９００）。
【０２１６】
【数２７】
2004030557.tif 000041
【０２１７】
符号化器においてキーデータを量子化する時、量子化に用いられた最大値及び最小値が実数変換部３１５において変換されなかったならば、前記式２７のｆＫｅｙＭｉｎ及びｆＫｅｙＭａｘは０及び１として各々設定される。しかし、量子化に用いられた最大値及び最小値が実数変換部３１５において変換されたならば、逆量子化に用いられる最大値及び最小値は、後述する実数逆変換部１３７０において逆変換されて入力される最小値及び最大値が各々用いられる。
【０２１８】
一方、逆量子化器１３６０から出力される復号化されたキーデータは、線形キー復号化器１３８０において復号化された線形キーデータに加えられて復号化されたキーデータを構成する。
【０２１９】
以下、線形キー復号化過程を説明する（Ｓ１５０００）。
【０２２０】
ヘッダ復号化器１８００は、ビットストリームからキーヘッダ情報を復号化して線形キーに関する情報があれば、線形キー領域の開始キー及び終了キーを復号化するために必要な情報を実数逆変換部１３７０に出力し、線形キー復号化器１３８０に線形キーとして符号化されたキーの数を出力する。
【０２２１】
線形キー復号化に用いられる開始キー及び終了キー情報を入力された実数逆変換部１３７０は。１０進数の体系で表わされた開始キー及び終了キーをさらに２進数の体系に逆変換して線形キー復号化器１３８０に出力する。
【０２２２】
復号化すべき２つの実数をｆＫｅｙＭｉｎ及びｆＫｅｙＭａｘとすれば、最初の値ｆＫｅｙＭｉｎを逆変換する過程は、下記の通りである。
【０２２３】
ヘッダ復号化器１８００は、ｆＫｅｙＭｉｎの桁数をビットストリームから読み込む。もし、桁数が０であれば、ｆＫｅｙＭｉｎの値を０として設定した後、ｆＫｅｙＭａｘの値を復号化するためにｆＫｅｙＭａｘの桁数をビットストリームから読み込む。もし、桁数が８以上であれば、ＩＥＥＥ標準７５４方式に従って符号化されたものであるため、実数を３２ビットだけ読み込んだ後、ｆＫｅｙＭａｘの値を復号化する過程へ進む。
【０２２４】
ここで、もし、桁数が１と７との間の値を有すれば、ヘッダ復号化器１８００は、符号ビットをビットストリームから読み込む。本実施の形態においては、符号ビットが１であれば、ＭｉｎＫｅｙＭａｎｔｉｓｓａＳｉｇｎを−１として、０であれば、ＭｉｎＫｅｙＭａｎｔｉｓｓａＳｉｇｎを１として設定して符号を読み込む。そして、仮数を前記表１の桁数と必要なビット数との関係に基づき必要なビット数を得た後、そのビット数だけビットストリームから読み込み、読み込まれた値をｎＭｉｎＫｅｙＭａｎｔｉｓｓａに記憶する。その後、ビットストリームから１ビットのみを読み込んでＭｉｎＫｅｙＥｘｐｏｎｅｎｔＳｉｇｎに記憶するが、ＭｉｎＫｅｙＭａｎｔｉｓｓａＳｉｇｎと同じ方式により記憶する。そして、ビットストリームから６ビットのみの指数値を読み込んでｎＭｉｎＫｅｙＥｘｐｏｎｅｎｔに記憶する。
【０２２５】
実数逆変換部１３７０は、ヘッダ復号化器１８００から入力された値を下記式２８に代入してｆＫｅｙＭｉｎを復元する。
【０２２６】
【数２８】
2004030557.tif 000042
【０２２７】
ｆＫｅｙＭａｘを復元する過程は、ｆＫｅｙＭｉｎのそれと同じである。但し、ｆＫｅｙＭａｘの指数をビットストリームから読み込む前に、ｆＫｅｙＭａｘの指数としてｆＫｅｙＭｉｎと同じ指数が用いられたか否かを判読し、同じ値が用いられたならば、ｆＫｅｙＭｉｎの指数を用い、そうでなければ、ｆＫｅｙＭｉｎの指数をビットストリームから読み込む方式と同じく、ｆＫｅｙＭａｘの指数を読み込む。
【０２２８】
一方、実数逆変換部１３７０から線形キー領域の開始キー及び終了キーを入力された線形キー復号化器１３８０は、下記式２９を用いて線形キー領域を復号化する。
【０２２９】
【数２９】
2004030557.tif 000043
【０２３０】
ここで、ｆＫｅｙＭｉｎ及びｆＫｅｙＭａｘは、線形キー領域の開始キーデータ及び終了キーデータを表わす。
【０２３１】
このようにして復号化された線形キー領域のキーデータは、逆量子化器１３６０から出力されたキーデータに加えられて復号化された最終キーデータとして出力される。
【０２３２】
以下、図４１及び図４２に基づき、本実施の形態の符号化された座標インタポレータのキー値データを復号化するキー値データ復号化器及び復号化方法について説明する。
【０２３３】
図４１は、本実施の形態におけるキー値データ復号化器の構成を示すブロック図であり、図４２は、本実施の形態における復号化方法を説明するフローチャートである。
【０２３４】
図４１に示すように、本実施の形態のキー値データ復号化器１５００は、入力されたビットストリームをエントロピ復号化し、ＤＰＣＭ演算された差分データのシンボル、シンボル設定フラグ、前記シンボルの位置を表わすインデックス、及びＤＰＣＭ演算モードを含む辞書復号化されるべきデータを生成するエントロピ復号化器１５０５、辞書復号化されるべきデータのシンボル及びシンボルの位置を表わすインデックスに基づき所定の差分データを生成する辞書復号化器１５１０、ＤＰＣＭ演算モードに基づき差分データに対して所定の逆ＤＰＣＭ演算を行って量子化されたデータを生成する逆ＤＰＣＭ処理部１５３０、量子化されたデータを逆量子化して復元されたキー値データを生成する逆量子化器１５５０、及びビットストリームから座標インタポレータの復号化に必要な情報を復号化して辞書復号化器１５１０、逆ＤＰＣＭ処理部１５３０、及び逆量子化器１５５０に出力するヘッダ復号化器１８００を備える。
【０２３５】
図４２を参照し、本実施の形態のキー値データ復号化方法について説明する。座標インタポレータを符号化したビットストリームがエントロピ復号化器１５０５に入力されれば（Ｓ１７１０）、エントロピ復号化器１５０５は、ビットストリームを復号化し、ビットストリームが発生モードで符号化された場合には、辞書復号化器１５１０に各頂点のシンボル及びシンボルの位置インデックスを出力し、増加モードで符号化された場合には、シンボルの存否を表わすシンボルフラグ及びシンボルの位置を表わすインデックスを辞書復号化器１５１０に出力する（Ｓ１７２０）。
【０２３６】
辞書復号化器１５１０は、入力された辞書符号化モードに基づき入力されたシンボル及びインデックスを発生モード復号化するか、あるいは入力されたシンボルフラグ及びインデックスを増加モード復号化して差分データを生成し、生成された差分データを逆ＤＰＣＭ処理部１５３０に出力する（Ｓ１７３０）。
【０２３７】
逆ＤＰＣＭ処理部１５３０は、入力された差分データに対して各頂点別に、復号化されたＤＰＣＭモードに基づき逆循環量子化及び逆時間ＤＰＣＭ演算、逆空間ＤＰＣＭ演算、及び逆時空間ＤＰＣＭ演算のうちいずれか一つの演算を行い、量子化されたキー値データを逆量子化器１５５０に出力する（Ｓ１７４０）。
【０２３８】
逆量子化器１５５０は、入力された量子化されたキー値データをヘッダ復号化器１８００から入力された各成分データの最小値及び最大範囲を用いて逆量子化する（Ｓ１７５０）。
【０２３９】
また、逆量子化器１５５０は、逆量子化されたキー値データ行列が符号化される時、転置行列に変換されたか否かをチェックし（Ｓ１７６０）、転置行列に変換されたならば、転置行列を逆変換する（Ｓ１７６５）。
逆量子化器１５５０は、復元された座標インタポレータのキー値データを出力する（Ｓ１７７０）。
【０２４０】
以下、図４３から図４６をさらに参照し、本実施の形態のキー値データ復号化装置及び方法について詳細に説明する。
【０２４１】
エントロピ復号化器１５０５は、入力ビットストリームからＤＰＣＭモードを表わすビットストリームを先に復号化しｂＳｅｌＦｌａｇ、ｎＫＶＡＣｏｄｉｎｇＢｉｔ、ｎＱＭｉｎ及びｎＱＭａｘなどのデータ配列を復号化する。
【０２４２】
符号化中にｂＳｅｌＦｌａｇは初期に１に設定され、ｎＫＶＡＣｏｄｉｎｇＢｉｔは初期に０に設定される。もし、ｂＳｅｌＦｌａｇが１である状態で復号化されるならば、エントロピ復号化器１５０５は、他のデータアレイｎＫＶＡＣｏｄｉｎｇＢｉｔ、ｎＱＭｉｎ、ｎＱＭａｘを復号化する。しかし、ｂＳｅｌＦｌａｇが０である状態で復号化されるならば、エントロピ復号化器１５０５は、ｎＱＭｉｎアレイのみを復号化する。
【０２４３】
エントロピ復号化器１５０５は、前記アレイを復号化した後、辞書符号化モードを表わすｎＤｉｃＭｏｄｅＳｅｌｅｃｔを復号化するが、ｎＤｉｃＭｏｄｅＳｅｌｅｃｔ値に基づき復号化すべきビットストリームは２種類に分類される。
【０２４４】
図４７は、座標インタポレータの各頂点及び各頂点の成分データのビットストリーム構造を示す図面である。図４７に示されたように、復号化されたｎＤｉｃＭｏｄｅＳｅｌｅｃｔ値が０であれば、ビットストリーム構造は発生モード符号化器において符号化されたシンボル及びインデックスの情報を含み、ｎＤｉｃＭｏｄｅＳｅｌｅｃｔ値が１であれば、ビットストリーム構造は増加モード符号化器において符号化されたシンボルの存否を表わすシンボルフラグ及び位置インデックスの情報を含む。
【０２４５】
本実施の形態のエントロピ復号化器は、図４８に示されたプログラムコードにより具現されるｄｅｃｏｄｅＳｉｇｎｅｄＱｕａｓｉＡＡＣ関数を用いた。この関数は、適応算術符号化されたビットストリームを符号及び値に対するコンテキストを用いて復号化する。この関数は、符号ビットの以降に読み込まれるビットをゼロコンテキストを用いて復号化する。エントロピ復号化器は、復号化されたデータを辞書復号化器１５１０に出力する。
【０２４６】
図４３は、本実施の形態の辞書復号化器１５１０の構成を示すブロック図であり、図４５は、辞書復号化方法を説明するフローチャートである。
【０２４７】
図４３に示すように、本実施の形態の辞書復号化器１５１０は、入力された各頂点のＤＰＣＭモードを復元するＤＰＣＭモード復号化器１５１２、入力された各頂点の辞書符号化モードを選択する辞書モード選択部１５１４、辞書モード選択部１５１４から各頂点の各成分のシンボル及びシンボルの位置インデックスを入力されて差分データを復元する発生モード復号化器１５１６、及び辞書モード選択部１５１４からシンボルフラグ及びシンボル位置インデックスを入力されて差分データを復元する増加モード復号化器１５１８を備える。
【０２４８】
図４５に示すように、エントロピ復号化された各頂点のシンボル、シンボルフラグ、及び位置インデックスを含む成分データは、ＤＰＣＭモード復号化器１５１２に入力される（Ｓ１７３１）。
【０２４９】
ＤＰＣＭモード復号化器１５１２は、入力された差分データを逆ＤＰＣＭ処理部１５３０に出力するに先立ち、逆ＤＰＣＭ処理部１５３０において各頂点の各成分の差分データに対して行われる逆ＤＰＣＭ演算モードを復号化する（Ｓ１７３２）。
【０２５０】
以下、図４９に基づき、ＤＰＣＭモード復号化方法について説明する。
【０２５１】
ＤＰＣＭモード復号化方法は、各頂点の各成分のＤＰＣＭモードの組合せを表わすシンボルの数が２７に固定され、これにより、シンボルテーブルの大きさが２７に固定されるという点を除ければ、後述する増加モード復号化方法と同じである。
【０２５２】
ＤＰＣＭモード復号化器１５１２は、入力されたＤＰＣＭモードフラグを入力され、フラグに対応するシンボルを入力されたインデックスに基づきデータ列に記録する。
【０２５３】
例えば、図４９に示されたように、入力されたＤＰＣＭモードフラグに対応するシンボルは１（ＴＴＳ）、４（ＴＳＳ）、及び５（Ｔ　Ｓ　Ｔ＋Ｓ）であり、各シンボルに対応するインデックスは（０１０１００）、（１０１０）、及び１１である。従って、シンボル１に対応するインデックスに基づきシンボル１を記録すれば、データ列は（Ｘ１Ｘ１ＸＸ）となり、シンボル４に対応するインデックスに基づきシンボル４を記録すれば、データ列は（４１Ｘ１４Ｘ）となり、シンボル５に対応するインデックスに基づきシンボル５を記録すれば、データ列は（４１５１４５）となる。
【０２５４】
復元されたデータ列（４１５１４５）を各シンボルに対応するＤＰＣＭモードに変換すれば、（ＴＳＳ）（ＴＴＳ）（Ｔ　Ｓ　Ｔ＋Ｓ）（ＴＴＳ）（ＴＳＳ）（Ｔ　Ｓ　Ｔ＋Ｓ）となる。従って、各頂点の各成分に対していかなるＤＰＣＭ演算が行われたかが分かる。
【０２５５】
ＤＰＣＭモード復号化器１５１２は、各頂点の各成分の差分データを復号化されたＤＰＣＭモード情報と共に辞書モード選択部１５１４に出力する。
【０２５６】
辞書モード選択部１５１４は、各頂点の各成分のｎＤｉｃＭｏｄｅＳｅｌｅｃｔ値に基づきＤＰＣＭモード復号化器１５１２から入力された各成分データを発生モード復号化器１５１６または増加モード復号化器に出力する（Ｓ１７３４）。
【０２５７】
また、辞書モード選択部１５１４は、ｎＤｉｃＭｏｄｅＳｅｌｅｃｔ値が０であれば、該当頂点の成分データを発生モード復号化器１５１６に出力し、ｎＤｉｃＭｏｄｅＳｅｌｅｃｔ値が１であれば、該当頂点の成分データを増加モード復号化器１５１８に出力する。
【０２５８】
発生モード復号化器１５１６は、入力された各成分のシンボルデータ及び位置インデックスを差分データに復元する（Ｓ１７３６）。
発生モード復号化方法を示す図５０に示すように、発生モード復号化器１５１６は、辞書モード選択部１５１４からシンボルデータを入力され、ｂＳｏｌｅＫＶ及びｎＴｒｕｅＯｎｅフラグをチェックする。
ｂＳｏｌｅＫＶフラグが入力されたシンボルが多数存在する旨を表わし、ｎＴｒｕｅＯｎｅフラグが以降に入力される位置インデックスが反転されていない旨を表わせば、発生モード復号化器１５１６は、入力されたシンボルを位置インデックスが表わす位置のデータ列に繰り込むことにより、差分データを復元する。
【０２５９】
例えば、発生モード復号化器１５１６は、符号化される時に生じた順番にシンボル（３，７，−４）を入力され、入力された各々のシンボルに対応するインデックス（０１０００１０１０００）、（１０１０１００）及び（１１１）を入力される。
【０２６０】
発生モード復号化器１５１６は、第１番目のシンボル３を復元されるべき差分データ列に記録し、次に、入力されたインデックスの１が設定された差分データ列の位置にシンボル３を記録する。従って、図４９に示されたように、シンボル３の発生モード符号化過程が終われば、差分データ列は（３ｘ３ｘｘｘ３ｘ３ｘｘｘ）で埋め込まれる。
【０２６１】
発生モード復号化器は、次のシンボル７を復元する。但し、シンボル７を復元する時、差分データ列において以前のシンボル３が記録された位置は考慮しない。従って、シンボル７に対応するインデックスは（０１０１０００１００）ではなく、（１０１０１００）となる。
【０２６２】
発生モード復号化器１５１６は、シンボル７を既に復元されたシンボル３が記録されていない第１番目の位置に記録し、その後、シンボル７に対応するインデックスが１に設定されたところにシンボル７を記録する。従って、シンボル７が復元された差分データ列は（３７３７ｘ７３ｘ３７ｘｘ）となる。
発生モード復号化器１５１６は、最後のシンボル−４をインデックス１１１に基づき復元し、最終的に復元された差分データ列は（３７３７−４７３−４３７４−４）となる。
【０２６３】
一方、前記ｂＳｏｌｅＫＶが１に設定されたならば、これは、入力されたシンボルが単に１つのみが差分データに存在するということを意味するため、入力されたシンボルに対応する位置インデックスは存在せず、従って、発生モード復号化器１５１６は、入力されたシンボルをシンボルが記録されていない差分データ列の第１番目のところに記録し、次のシンボルの復元過程を行う。
【０２６４】
また、増加モード復号化器１５１８は、入力された各成分のシンボルフラグ及び位置インデックスを差分データに復元する（Ｓ１７３６）。以下、増加モード復号化方法の一例を示す図５１に基づき、増加モード復号化方法について説明する。
【０２６５】
増加モード復号化器１５１８は、辞書モード選択部１５１４からシンボルの存否を表わすシンボルフラグ、位置インデックスが反転されたか否かを表わすｎＴｒｕｅＯｎｅフラグ、及び位置インデックスを入力される。
【０２６６】
増加モード復号化器１５１８は、入力されたシンボルフラグから差分データに含まれるシンボルを復号化するが、増加モード符号化方法において説明したように、シンボルテーブルは、大きさの上がり順にまとめられ、正数が負数より上位に位置する（すなわち、０，１，−１，２，−２，３，−３）。また、シンボルフラグのサイズは２（ｎＫＶＣｏｄｉｎｇＢｉｔ＋１）−１であり、ｎＫＶＣｏｄｉｎｇＢｉｔはエントロピ復号化器１５０５において復号化された量子化ビット数を表わす。従って、シンボルフラグが（００１１００１）であれば、増加モード復号化器１５１８は、差分データに存在するシンボルとして−１、２及び−３を復号化する。
【０２６７】
また、シンボルフラグの次に入力されたインデックスは（１０１０００１０１０００）、（００１０１０１１）、（１１１１）であり、これらはシンボル（−１，２，３）に各々対応する。
【０２６８】
増加モード復号化器１５１８は、第１番目のシンボル−１に対応するインデックス（１０１０００１０１０００）において１に設定されたところに−１を記録する。従って、第１番目のシンボルに対して復元された差分データ列は（−１ｘ−１ｘｘｘ−１ｘ−１ｘｘｘ）の通りである。
【０２６９】
その後、増加モード復号化器１５１８は、第２番目のシンボル２をインデックス（００１０１０１１）の１が設定されたところに記録してシンボル２を復元する。但し、この場合にも第１番目のシンボル−１が記録された位置は考慮しないため、シンボル２まで記録された差分データ列は（−１ｘ−１ｘ２ｘ−１２−１ｘ２２）の通りである。
【０２７０】
増加モード復号化器１５１８は、最後のシンボル−３をインデックス（１１１１）の１が設定されたところに記録し、シンボル−３を復元する。最終的に復元された差分データ列は（−１−３−１−３２−３−１２−１−３２２）の通りである。
【０２７１】
前記発生モード復号化器１５１６及び増加モード復号化器１５１８は、各頂点の各成分の差分データを復元し、復元された差分データを逆ＤＰＣＭ処理部１５３０に出力する（Ｓ１７３９）。
【０２７２】
図４４は、本実施の形態における逆ＤＰＣＭ処理部１５３０の構成を示すブロック図であり、図４６は、逆ＤＰＣＭ演算方法を説明するフローチャートである。
【０２７３】
図４４を参照すれば、本実施の形態の逆ＤＰＣＭ処理部１５３０は、入力された差分データに対して逆時間ＤＰＣＭ演算及び逆循環量子化を行い、量子化された座標インタポレータのキー値データを出力する逆時間ＤＰＣＭ演算部１５４２、入力された差分データに対して逆空間ＤＰＣＭ演算及び逆循環量子化を行い、量子化されたキー値データを出力する逆空間ＤＰＣＭ演算部１５４４、入力された差分データに対して逆時空間ＤＰＣＭ演算及び逆循環量子化を行い、量子化されたキー値データを出力する逆時空間ＤＰＣＭ演算部１５４６、及び入力された各頂点のＤＰＣＭモードに基づき辞書復号化器１５１０から入力された差分データを逆時間ＤＰＣＭ演算部１５４２、逆空間ＤＰＣＭ演算部１５４４、及び逆時空間ＤＰＣＭ演算部１５４６のうちいずれか一つに出力する逆ＤＰＣＭモード選択部１５３５を備える。
【０２７４】
図４６を参照すれば、逆ＤＰＣＭモード選択部１５３５は、辞書復号化器１５１０のＤＰＣＭモード復号化器１５１２において復元された各頂点の各成分のＤＰＣＭ演算モードに基づき入力された差分データに対して行われる逆ＤＰＣＭ演算を決め、各頂点の各成分の差分データを決められた逆ＤＰＣＭ演算モードに基づき出力する（Ｓ１７４２）。
【０２７５】
各ＤＰＣＭ演算部は、入力された差分データに対して逆ＤＰＣＭ演算及び逆循環量子化を同時に行う。
逆時間ＤＰＣＭ演算部１５４２は、入力された差分データに対して下記式３０に基づき逆時間ＤＰＣＭ演算を行い（Ｓ１７４４）、逆空間ＤＰＣＭ演算部１５４４は、下記式３１に基づき逆空間ＤＰＣＭ演算を行い（Ｓ１７４６）、逆時空間ＤＰＣＭ演算部１５４６は、下記式３２に基づき逆時空間ＤＰＣＭ演算を行う（Ｓ１７４８）。
【０２７６】
【数３０】
2004030557.tif 000044
【０２７７】
【数３１】
2004030557.tif 000045
【０２７８】
【数３２】
2004030557.tif 000046
【０２７９】
前記式において、
2004030557.tif 000047
は、第ｉ番目のキーフレームの第ｊ番目の頂点の量子化されたキー値データを表わし、Ｄｉｊは、第ｉ番目のキーフレームの第ｊ番目の頂点の差分データを表わし、そしてＲｅｆは、基準頂点を表わす。
前記式３１及び前記式３２において、
2004030557.tif 000048
または
2004030557.tif 000049
が量子化された最小値より小さければ、量子化された最小値を前記値の代わりに使用し、
2004030557.tif 000050
または
2004030557.tif 000051
が量子化された最大値より大きければ、量子化された最大値を前記値の代わりに使用する。
【０２８０】
逆ＤＰＣＭ演算を行った各ＤＰＣＭ演算部は、下記式３３を用いて逆ＤＰＣＭ演算を行うと同時に、逆循環量子化を行い、符号化中に狭まった差分データの範囲を広める。
【０２８１】
【数３３】
2004030557.tif 000052
【０２８２】
前記式３３において、
2004030557.tif 000053
はＤｉｊと同じ入力値であり、
2004030557.tif 000054
は
2004030557.tif 000055
または
2004030557.tif 000056
のように以前に逆循環量子化された値である。また、ｎＱＭａｘは、ＤＰＣＭ演算された差分データのうち最大値を、ｎＱＭｉｎは、ＤＰＣＭ演算された差分データのうち最小値を表わす。
【０２８３】
逆ＤＰＣＭ処理部１５３０は、各頂点の各成分に対して逆ＤＰＣＭ演算及び逆循環量子化の行われた量子化されたキー値データを逆量子化器１５５０に出力する（Ｓ１７４９）。
【０２８４】
図４２に示すように、逆量子化器１５５０は、ヘッダ復号化器１８００から入力された各成分データの最小値ｆＭｉｎ＿Ｘ、ｆＭｉｎ＿Ｙ、及びｆＭｉｎ＿Ｚ及び最大範囲値ｆＭａｘを前記式４の関係に基づき２進数体系の実数に変換した後、この値を用いて下記式３４に基づき入力された量子化されたキー値データを逆量子化する。
【０２８５】
【数３４】
2004030557.tif 000057
【０２８６】
前記式３４において、ｎＶＱＢｉｔｓは、逆量子化に用いられる量子化ビットサイズである。
【０２８７】
また、逆量子化器１５５０は、逆量子化された各頂点の各成分のキー値データを表３に記載された行列形式に出力しなければならない。従って、逆量子化器１５５０は、キー値データを出力するに先立って、逆量子化されたキー値データのモードが転置モードであるかをチェックする（Ｓ１７６０）。もし、逆量子化されたキー値データが転置モードであれば、逆量子化器１５５０は、転置行列を逆変換して復号化された座標インタポレータのキー値データを出力する（Ｓ１７６５）。
【０２８８】
以上、座標インタポレータに含まれるキーデータ及び各成分のキー値データを符号化して復号化する方法及び装置について説明した。
以下では、図５２から図６０に基づき、本実施の形態におけるキー及びキー値データを復号化する座標インタポレータ復号化装置を具現するプログラムコードの一例をＳＤＬ言語形式で具現した例について説明する。
【０２８９】
図５２に示すように、ＣｏｍｐｒｅｓｓｅｄＣｏｏｄｉｎａｔｅＩｎｔｅｒｐｏｌａｔｏｒクラスは、座標インタポレータの圧縮ビットストリームを読み込むための最上位クラスである。ＫｅｙＨｅａｄｅｒ及びＫｅｙｃｌａｓｓｉｃは、従来の座標インタポレータのキーフィールドデータに対応するビットストリームからキーデータ情報を読み込むためのクラスである。ＣｏｏｒｄＩＫｅｙＶａｌｕｅＨｅａｄｅｒ及びＣｏｏｒｄＩＫＶＨｅａｄｅｒは、従来の座標インタポレータのキー値フィールドに対応するキー値情報を読み込むためのクラスである。ｑｆ＿ｓｔａｒｔ関数は、ＡｄａｐｔｉｖｅＡｒｉｔｈｍｅｔｉｃＣｏｄｉｎｇを用いてビットストリームの符号化された部分を読み込むに先立って、算術復号化器を初期化するのに用いられる。
【０２９０】
図５３に示されたキーヘッダクラスは、復号化に必要な情報のキーヘッダを復号化するクラスである。
【０２９１】
キーヘッダの主な情報は、キーの数、量子化ビット、イントラキーデータ、ＤＮＤヘッダ及び符号化に必要な実際のビット数である。ｎＫｅｙＱＢｉｔは、実数キー値を復元する逆量子化に用いられる量子化ビットである。ｎＮｕｍＫｅｙＣｏｄｉｎｇＢｉｔは、キーデータの数を表わすｎＮｕｍｂｅｒｏｆＫｅｙのビットサイズを表わす。ｎＫｅｙＤｉｇｉｔは、元のキーデータの最大重要桁数を表わし、復号化された値の切り上げに用いられる。
【０２９２】
キーヘッダに線形キー領域に関する情報が含まれた場合、ｂｌｓＬｉｎｅａｒＫｅｙＳｕｂＲｅｇｉｏｎフラグが１に設定される。この場合、全体のキーに含まれる所定のサブ領域に含まれたキーは、ｂｌｓＬｉｎｅａｒＫｅｙＳｕｂＲｅｇｉｏｎフラグに追従する復号化されたヘッダ情報を用いて計算できる。ｂＲａｎｇｅＦｌａｇは、キーデータの範囲が０から１であるか否かを表わす。もし、範囲が０から１ではなければ、最小値及び最大値はＫｅｙＭｉｎＭａｘｃｌａｓｓｉｃから復号化される。ＫｅｙＭｉｎＭａｘｃｌａｓｓｉｃは、逆量子化のために最小値及び最大値を再構成する。各値は、仮数及び指数に分離できる。
【０２９３】
ｎＢｉｔＳｉｚｅは、ｎＱＩｎｔｒａＫｅｙのビットサイズであり、ｎＫｅｙＳｈｉｆｔは、ｎＫｅｙＭａｘの最初ビットサイズである。ｎＱＩｎｔｒａＫｅｙは、第１の量子化されたイントラデータの大きさである。これは、ｎＱＩｎｔｒａＫｅｙの符号を表わすンｎＱＩｎｔｒａＫｅｙＳｉｇｎと共に結合される。これは、残りの量子化されたキーデータを復元するためのベースとして用いられる。インタポレータ圧縮に用いられる全ての符号ビットにおいて、０は正数を１は負数を各々意味する。ｎＫＤＰＣＭＯｄｅｒは、ＤＰＣＭ次数−１である。次数の範囲は、１から３である。量子化されたイントラデータの数は、ＤＰＣＭの次数に同じである。
【０２９４】
ｎＫｅｙＳｈｉｆｔは、符号ビットのｎＫｅｙＳｈｉｆｔＳｉｇｎと共にキーデータ復号化器のシフト量を表わす整数である。これら両値は、ｂＳｈｉｆｔＦｌａｇが１に設定されれば復号化される。ｎＤＮＤＯｒｄｅｒは、ＤＮＤ（Ｄｉｖｉｄｅ−ａｎｄ−Ｄｉｖｉｄｅ）の次数である。ＤＮＤについては、キーデータ復号化器において説明する。もし、ｎＤＮＤＯｒｄｅｒ値が７であれば、ｂＮｏＤＮＤが復号化される。このブール値は、逆ＤＮＤが処理されるか否かを表わす。ｎＫｅｙＭａｘは、各々の連続した逆ＤＮＤ演算中に用いられる最大値及び最小値である。ｎＫｅｙＣｏｄｉｎｇＢｉｔは、キーデータの符号化に用いられるビットである。
【０２９５】
ｂＳｉｇｎｅｄＡＡＣＦｌａｇは、ＡＡＣ復号化のためにいなかる復号化方法が用いられるかを表わす。もし、値が０であれば、ｕｎｓｉｇｎｅｄＡＡＣ復号化が行われる。そうでなければ、ｓｉｇｎｅｄＡＡＣ復号化が行われる。ｂＫｅｙＩｎｖｅｒｔＤｏｗｎＦｌａｇは、ｎＫｅｙＩｎｖｅｒｔＤｏｗｎが用いられるか否かを表わすブール値である。ｎＫｅｙＩｎｖｅｒｔＤｏｗｎは整数値であって、これを超える全ての量子化されたキーデータを−１以下の負数値に反転させる。ｎＫｅｙＩｎｖｅｒｔＤｏｗｎが−１であれば、シフト−ダウン演算は行われない。
【０２９６】
図５４は、ＬｉｎｅａｒＫｅｙクラスを示す図面である。ＬｉｎｅａｒＫｅｙクラスにおいて用いられた変数の意味を説明すれば、ｎＮｕｍＬｉｎｅａｒＫｅｙＣｏｄｉｎｇＢｉｔは、線形に予測可能なキーの数を符号化するために必要なビットの数を表わす値である。ｎＮｕｍｂｅｒＯｆＬｉｎｅａｒＫｅｙは、線形に予測可能なキーデータの数を表わす。
【０２９７】
図５５は、ＫｅｙＭｉｎＭａｘクラスを示す図面である。
ＫｅｙＭｉｎＭａｘクラスにおいて用いられた変数の意味を説明すれば、まず、ｂＭｉｎＫｅｙＤｉｇｉｔＳａｍｅは、全体キーの最高重要桁数ｎＫｅｙＤｉｇｉｔ及びキーの最大値の最高重要桁数が同じであるかを表わす。ンＭｉｎＫｅｙＤｉｇｉｔは、キーの最大値の最高重要桁数を表わす。ｎＭｉｎＫｅｙＭａｎｔｉｓｓａＳｉｇｎは、ｎＭｉｎＫｅｙＭａｎｔｉｓｓａの符号を表わす。ｎＭｉｎＫｅｙＭａｎｔｉｓｓａは、キーの最小値の仮数を表わす。
【０２９８】
ｎＭｉｎＫｅｙＥｘｐｏｎｅｎｔＳｉｇｎは、ｎＭｉｎＫｅｙＥｘｐｏｎｅｎｔの符号を表わす。ｎＭｉｎＫｅｙＥｘｐｏｎｅｎｔは、キーの最小値の指数を表わす。
【０２９９】
ｆＫｙｅＭｉｎは、キーの最小値を表わす。ｎＭａｘＫｅｙＤｉｇｉｔＳａｍｅは、全体キーの最高重要桁数ｎＫｅｙＤｉｇｉｔ及びキーの最大値の最高重要桁数が同じであるかを表わす。ンＭａｘＫｅｙＤｉｇｉｔは、キーの最大値の重要桁数を表わす。ｎＭａｘＫｅｙＭａｎｔｉｓｓａＳｉｇｎは、ｎＭａｘＫｅｙＭａｎｔｉｓｓａの符号を表わす。ｎＭａｘＫｅｙＭａｎｔｉｓｓａは、キーの最大値の仮数を表わす。
【０３００】
ｂＳａｍｅＥｘｐｏｎｅｎｔは、キーの最大値の指数がｎＫｅｙＥｘｐｏｎｅｎｔＳｉｇｎｅと同じであるかを表わす。ｎＭａｘＫｅｙＥｘｐｏｎｅｎｔＳｉｇｎは、ｎＭａｘＫｅｙＥｘｐｏｎｅｎｔの符号を表わす。ｎＭａｘＫｅｙＥｘｐｏｎｅｎｔは、キーの最大値の指数を表わす。ｆＫｅｙＭａｘは、キーの最大値を表わす。
【０３０１】
図５６は、キークラスを示す図面である。
キークラスに用いられた変数の意味を説明すれば、ｎＱＫｅｙは、ビットストリームから復号化される量子化されたキーデータを記憶した配列を表わす。ＫｅｙＣｏｎｔｅｘｔは、ｎＱＫｅｙの大きさを読み込むのに用いられるコンテキストを意味する。ＫｅｙＳｉｇｎＣｏｎｔｅｘｔは、ｎＱＫｅｙの符号を読み込むのに用いられるコンテキストを意味する。
【０３０２】
ｄｅｃｏｄｅＵｎｓｉｇｎｅｄＡＡＣは、与えられたコンテキストで適応的な算術符号化の行われたビットストリームに対して符号無き復号化を行う関数である。ｄｅｃｏｄｅＳｉｇｎｅｄＡＡＣは、与えられたコンテキストで適応的な算術符号化の行われたビットストリームに対して符号あり復号化を行う関数である。
【０３０３】
図５７は、ＣｏｏｒｄＩＫｅｙＶａｌｕｅＨｅａｄｅｒクラスを示す図面である。
キー値ヘッダデータは、キーヘッダデータが復号化された後に復号化される。キー値ヘッダの主要な情報は頂点の数、キー値データに対する量子化媒介変数、及び量子化のための最大値及び最小値である。ｂＴｒａｎｓｐｏｓｅは、転置モードまたは頂点モードを表わすフラグであって、この値が１であれば、復号化時に転置モードが選択され、そうでなければ、頂点モードが選択される。ｎＫＶＱＢｉｔは、実数を逆量子化して復元するのに用いられる量子化ビットである。ｎＣｏｏｒｄＱＢｉｔは、頂点の数を表わすｎＮｕｍｂｅｒＯｆＣｏｏｒｄを表わすビットサイズである。ｎＫＶＤＤｉｇｉｔは、逆量子化された後に用いられ、キー値データの最大有効数字を表わす。ＫｅｙＶａｌｕｅＭｉｎＭａｘクラスは、逆量子化のための最小値及び最大範囲を復元する。各値は、仮数及び指数に分離される。残りのヘッダ情報は、キー値データの各成分の量子化された最大値及び最小値のうち最大値及び最小値を表わす。例えば、ｎＸＱＭｉｎＯｆＭａｘは、各頂点のＸ成分の量子化された最大値のうち最小値を表わす。
【０３０４】
図５８及び図５９は、本実施の形態のＤＰＣＭモードを復号化装置を具現するためのプログラムコードを示す図面であり、各変数の意味は、下記の通りである。
【０３０５】
ｎＤＰＣＭＭｏｄｅ：この整数配列は、各頂点の各成分ｘ、ｙ及びｚに対するＤＰＣＭモードを表わす。この値は、時間ＤＰＣＭモードの場合には１を、空間ＤＰＣＭモードの場合には２を、そして時空間ＤＰＣＭモードの場合には３を各々有する。
【０３０６】
ｂＳｅｌＦｌａｇ：このブール配列は、各頂点の各成分に対する選択フラグを表わす。このフラグが１に設定された各頂点の各成分のみが辞書符号化器３４０において符号化される。ｓｅｌｅｃｔｉｏｎＦｌａｇＣｏｎｔｅｘｔは、ｂＳｅｌＦｌａｇを読み込むために用いられるコンテキストである。
【０３０７】
ｎＫＶＡＣｏｄｉｎｇＢｉｔ：この整数配列は、各頂点の各成分の符号化ビットを表わす。ａｑｐＸＣｏｎｔｅｘｔ、ａｑｐＹＣｏｎｔｅｘｔ及びａｑｐＺＣｏｎｔｅｘｔは各々、Ｘ、Ｙ及びＺ軸別のｎＫＶＡＣｏｄｉｎｇＢｉｔの値を読み込むためのコンテキストである。
【０３０８】
ｎＲｅｆＶｅｒｔｅｘ：この整数配列は、各頂点に対する基準頂点のインデックスを表わす。ｒｅｆＣｏｎｔｅｘｔは、ｎＲｅｆＶｅｒｔｅｘの値を読み込むためのコンテキストである。
【０３０９】
ｎＱＭｉｎ：各頂点の各成分のｎＱＭｉｎは整数配列であって、ＤＰＣＭ演算された差分データのうち最小値を表わす。ｑＭｉｎＣｏｎｔｅｘｔは、ｎＱＭｉｎを読み込むためのコンテキストであり、ｑＭｉｎＳｉｇｎＣｏｎｔｅｘｔは、ｎＱＭｉｎの符号を読み込むためのコンテキストである。
【０３１０】
ｎＱＭａｘ：各頂点の各成分のｎＱＭａｘは整数配列であって、ＤＰＣＭ演算された差分データのうち最大値を表わす。ｑＭａｘＣｏｎｔｅｘｔは、ｎＱＭａｘを読み込むためのコンテキストであり、ｑＭａｘＳｉｇｎＣｏｎｔｅｘｔは、ｎＱＭａｘの符号を読み込むためのコンテキストである。
【０３１１】
図６０は、本実施の形態のＤＰＣＭモードを復号化するＣｏｏｒｄＩＤＰＣＭＭｏｄｅクラスを示す図面であり、各変数の意味は、下記の通りである。
【０３１２】
ｂＡｄｄｒｅｓｓＯｆＤＰＣＭＭｏｄｅ：このブール配列は、ＤＰＣＭ辞書テーブルの各成分に対するＤＰＣＭモードで構成される各ＤＰＣＭシンボルがどこに用いられたかを表わす。一つの頂点には３成分があり、各成分には３種のＤＰＣＭモード（Ｔ，Ｓ，及び（Ｔ＋Ｓ））が存在できる。従って、前記表３に示されたように、ＤＰＣＭモードの組合せを表わす辞書シンボルは２７個がある。ｄｐｃｍＭｏｄｅＤｉｃＡｄｄｒｅｓｓＣｏｎｔｅｘｔは、ｂＡｄｄｒｅｓｓＯｆＤＰＣＭＭｏｄｅの値を読み込むためのコンテキストである。
【０３１３】
ｂＤＰＣＭＩｎｄｅｘ：このブール配列は、各頂点に対していかなるＤＰＣＭシンボルが用いられたかを表わす。ｄｐｃｍＭｏｄｅＤｉｃＩｎｄｅｘＣｏｎｔｅｘｔは、ｂＤＰＣＭＩｎｄｅｘの値を読み込むためのコンテキストである。
【０３１４】
図６１は、本実施の形態の辞書符号化モードを復号化するＣｏｏｒｄＫｅｙＶａｌｕｅＤｉｃクラスを示す図面であり、各変数の意味は、下記の通りである。
【０３１５】
ｎＤｉｃＭｏｄｅＳｅｌｅｃｔ：このブール値は、辞書符号化にいかなるモードが用いられたかを表わすが、値が１であれば増加モードを、そして値が０であれば発生モードを表わす。
【０３１６】
図６２は、本実施の形態の増加モード復号化方法を具現したＣｏｏｒｄＩＩｎｃｒｅｍｅｎｔａｌＭｏｄｅクラスを示す図面であり、各変数の意味は、下記の通りである。
【０３１７】
ｂＡｄｄｒｅｓｓ：このブール配列は、量子化されたキー値を表わす各増加モード辞書シンボルの利用有無を表わす。増加モードテーブルに用いられるシンボルの数は、２（ｎＫＶＣｏｄｉｎｇＢｉｔ＋１）−１の計算結果に同じである。ｄｉｃＡｄｄｒｅｓｓＣｏｎｔｅｘｔは、ｂＡｄｄｒｅｓｓの値を読み込むためのコンテキストである。
【０３１８】
ｎＴｒｕｅＯｎｅ：このブール配列は、インデックスデータの反転有無を表わす。この値が１であれば、インデックスの１値はシンボルの位置を表わす真値として解釈され、この値が０であれば、インデックスの０値がシンボルの位置を表わす真値として解釈される。
【０３１９】
ｂＡｄｄｒＩｎｄｅｘ：このブール配列は、各頂点の各成分に用いられた増加モードシンボルを表わす。ｄｉｃＩｎｄｅｘＣｏｎｔｅｘｔは、ｂＡｄｄｒＩｎｄｅｘの値を読み込むためのコンテキストである。
【０３２０】
図６３は、本実施の形態の発生モード復号化方法を具現したＣｏｏｒｄＩＯｃｃｕｒｒｅｎｃｅＭｏｄｅクラスを示す図面であり、各変数の意味は、下記の通りである。
【０３２１】
ｎＱＫＶ：この整数配列は、量子化されたキー値データのモード発生モードのシンボルを含む。ｋｖＸＣｏｎｔｅｘｔ、ｋｖＹＣｏｎｔｅｘｔ及びｋｖＺＣｏｎｔｅｘｔは、ｎＱＫＶの値を読み込むためのコンテキストであり、ｋｖＳｉｇｎＣｏｎｔｅｘｔは、ｎＱＫＶの符号を読み込むためのコンテキストである。
【０３２２】
ｂＳｏｌｅＫＶ：このブール値は、復号化されたシンボルが単に一回のみ発生するかを表わす。もし、発生したシンボルが単に一回のみ発生するならば、ｂＳｏｌｅＫＶは１に設定される。ｄｉｃＳｏｌｅＫＶＣｏｎｔｅｘｔは、ｂＳｏｌｅＫＶの値を読み込むためのコンテキストである。
【０３２３】
ｂＤｉｃＩｎｄｅｘ：このブール値は、各頂点の各成分に対していかなる辞書シンボルが用いられたかを表わす。ｄｉｃＩｎｄｅｘＣｏｎｔｅｘｔは、ｂＤｉｃＩｎｄｅｘの値を読み込むためのコンテキストである。本実施の形態はまた、コンピュータにて読取り可能な記録媒体にコンピュータにて読取り可能なコードとして具現可能である。コンピュータにて読取り可能な記録媒体は、コンピュータシステムによって読取り可能なデータが記憶されるあらゆる種類の記録装置を含む。コンピュータにて読取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピーディスク、光データ記憶装置などがあり、またキャリアウェーブ（例えば、インターネットを通じた伝送）の形で具現されるものも含む。また、コンピュータにて読取り可能な記録媒体は、ネットワークに結ばれたコンピュータシステムに分散され、分散方式によりコンピュータにて読取り可能なコードが記憶されて実行できる。
【０３２４】
以上、本発明について、その好ましい実施の形態を中心として説明した。本発明が属する技術分野における当業者であれば、本発明が本発明の本質的な特性から逸脱しない範囲において変形された形で具現できるということが理解できる。よって、開示された実施の形態を限定的な観点ではなく、説明的な観点から考慮しなければならない。本発明の範囲は前述した説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にあるあらゆる違いは本発明に含まれたものとして解釈されなければならない。
【０３２５】
【発明の効果】
上述したように、本発明の座標インタポレータ符号化装置は、単調に増加するキーデータの性質を用いてキーデータを符号化するキーデータ符号化器を含んで高効率にてアニメーションキーデータを符号化でき、空間的な相関関係だけではなく、時間的な相関関係をも考慮してキー値データを符号化するキー値データ符号化器を含んで高効率にてキー値データを符号化できることから、少量のデータにて高画質のアニメーションを復元できる。
【図面の簡単な説明】
【図１】従来の座標インタポレータノードの符号化／復号化装置の構成を示すブロック図である。
【図２】本実施の形態による座標インタポレータ符号化装置の構成を示すブロック図である。
【図３】キーデータ符号化器の構成を示すブロック図である。
【図４】ＤＮＤ処理部の構成を示すブロック図である。
ＡないしＧは、本実施の形態によるキーデータ符号化方法を説明するフローチャートである。
【図５】キーデータを符号化する方法の前半を示すフローチャート図である。
【図６】キーデータを符号化する方法の後半を示すフローチャート図である。
【図７】実数を符号化する方法の前半を示すフローチャート図である。
【図８】実数を符号化する方法の後半を示すフローチャート図である。
【図９】キーデータを量子化する方法を示すフローチャート図である。
【図１０】ＤＰＣＭ処理過程を示すフローチャート図である。
【図１１】ＤＮＤ演算部の演算過程を示すフローチャート図である。
【図１２】ｅｎｃｏｄｅＳｉｇｎｅｄＡＡＣ関数の一例を示す図面である。
【図１３】元のキーデータを表す図である。
【図１４】量子化されたキーデータを表す図である。
【図１５】ＤＰＣＭ処理されたキーデータを表す図である。
【図１６】キーデータの差分データを表す図である。
【図１７】フォルド演算されたデータを表す図である。
【図１８】ＤＮＤ演算されたデータを表す図である。
【図１９】ディバイド−アップ演算されたデータを表す図である。
【図２０】ディバイド−ダウン演算されたデータを表す図である。
【図２１】シフトアップ演算されたデータを表す図である。
【図２２】最終的なデータを表す図である。
【図２３】座標インタポレータキー値データ符号化器の構成を示すブロック図である。
【図２４】座標インタポレータキー値データの符号化方法を説明するフローチャートである。
【図２５】キー値データ符号化器のＤＰＣＭ処理部の構成を示すブロック図である。
【図２６】辞書符号化器の構成を示すブロック図である。
【図２７】量子化方法を説明するフローチャートである。
【図２８】ＤＰＣＭ演算方法を説明するフローチャートである。
【図２９】辞書符号化方法を説明するフローチャートである。
【図３０】キー値データ符号化器のエントロピ符号化方法を説明するフローチャートである。
【図３１】量子化されたキー値データを示す図である。
【図３２】ＤＰＣＭ演算されたキー値データを示す図である。
【図３３】循環量子化されたキー値データを示す図である。
【図３４】ＤＰＣＭモード符号化方法を説明する図面である。
【図３５】発生モード符号化方法を説明する図面である。
【図３６】増加モード符号化方法を説明する図面である。
【図３７】座標インタポレータ復号化装置の構成を示すブロック図である。
【図３８】キーデータ復号化器の構成を示すブロック図である。
【図３９】キーデータ復号化方法を説明するフローチャートである。
【図４０】図３９の第Ｓ１４５００段階の詳細フローチャートである。
【図４１】キー値データ復号化装置の構成を示すブロック図である。
【図４２】キー値データ復号化方法を説明するフローチャートである。
【図４３】辞書復号化器の構成を示すブロック図である。
【図４４】キー値データ復号化器の逆ＤＰＣＭ処理部の構成を示すブロック図である。
【図４５】辞書復号化方法を説明するフローチャートである。
【図４６】逆ＤＰＣＭ演算方法を説明するフローチャートである。
【図４７】座標インタポレータの各頂点及び各頂点の成分データのビットストリーム構造を示す図面である。
【図４８】ｄｅｃｏｄｅＳｉｇｎｅｄＱｕａｓｉＡＡＣ関数を具現したプログラムコードの一例を示す図面である。
【図４９】ＤＰＣＭモード復号化方法を説明する図面である。
【図５０】発生モード復号化方法を説明する図面である。
【図５１】増加モード復号化方法を説明する図面である。
【図５２】ＣｏｍｐｒｅｓｓｅｄＣｏｏｄｉｎａｔｅＩｎｔｅｒｐｏｌａｔｏｒクラスのプログラムを表す図である。
【図５３】キーヘッダクラスのプログラムを表す図である。
【図５４】リニアキークラスのプログラムを表す図である。
【図５５】ＫｅｙＭｉｎＭａｘクラスのプログラムを表す図である。
【図５６】キークラスのプログラムを表す図である。
【図５７】ＣｏｏｒｄＩＫｅｙＶａｌｕｅＨｅａｄｅｒクラスのプログラムを表す図である。
【図５８】ＤＰＣＭモードを復号化装置を具現するためのプログラムの前半を表す図である。
【図５９】ＤＰＣＭモードを復号化装置を具現するためのプログラムの後半を表す図である。
【図６０】ＣｏｏｒｄＩＤＰＣＭＭｏｄｅクラスのプログラムを表す図である。
【図６１】ＣｏｏｒｄＫｅｙＶａｌｕｅＤｉｃクラスのプログラムを表す図である。
【図６２】ＣｏｏｒｄＩＩｎｃｒｅｍｅｎｔａｌＭｏｄｅクラスのプログラムを表す図である。
【図６３】ＣｏｏｒｄＩＯｃｃｕｒｒｅｎｃｅＭｏｄｅクラスのプログラムを表す図である。
【符号の説明】
３００　　キーデータ符号化器
５００　　ヘッダ符号化器
７００　　キー値データ符号化器
【図１】
2004030557.tif 000058
【図２】
2004030557.tif 000059
【図３】
2004030557.tif 000060
【図４】
2004030557.tif 000061
【図５】
2004030557.tif 000062
【図６】
2004030557.tif 000063
【図７】
2004030557.tif 000064
【図８】
2004030557.tif 000065
【図９】
2004030557.tif 000066
【図１０】
2004030557.tif 000067
【図１１】
2004030557.tif 000068
【図１２】
2004030557.tif 000069
【図１３】
2004030557.tif 000070
【図１４】
2004030557.tif 000071
【図１５】
2004030557.tif 000072
【図１６】
2004030557.tif 000073
【図１７】
2004030557.tif 000074
【図１８】
2004030557.tif 000075
【図１９】
2004030557.tif 000076
【図２０】
2004030557.tif 000077
【図２１】
2004030557.tif 000078
【図２２】
2004030557.tif 000079
【図２３】
2004030557.tif 000080
【図２４】
2004030557.tif 000081
【図２５】
2004030557.tif 000082
【図２６】
2004030557.tif 000083
【図２７】
2004030557.tif 000084
【図２８】
2004030557.tif 000085
【図２９】
2004030557.tif 000086
【図３０】
2004030557.tif 000087
【図３１】
2004030557.tif 000088
【図３２】
2004030557.tif 000089
【図３３】
2004030557.tif 000090
【図３４】
2004030557.tif 000091
【図３５】
2004030557.tif 000092
【図３６】
2004030557.tif 000093
【図３７】
2004030557.tif 000094
【図３８】
2004030557.tif 000095
【図３９】
2004030557.tif 000096
【図４０】
2004030557.tif 000097
【図４１】
2004030557.tif 000098
【図４２】
2004030557.tif 000099
【図４３】
2004030557.tif 000100
【図４４】
2004030557.tif 000101
【図４５】
2004030557.tif 000102
【図４６】
2004030557.tif 000103
【図４７】
2004030557.tif 000104
【図４８】
2004030557.tif 000105
【図４９】
2004030557.tif 000106
【図５０】
2004030557.tif 000107
【図５１】
2004030557.tif 000108
【図５２】
2004030557.tif 000109
【図５３】
2004030557.tif 000110
【図５４】
2004030557.tif 000111
【図５５】
2004030557.tif 000112
【図５６】
2004030557.tif 000113
【図５７】
2004030557.tif 000114
【図５８】
2004030557.tif 000115
【図５９】
2004030557.tif 000116
【図６０】
2004030557.tif 000117
【図６１】
2004030557.tif 000118
【図６２】
2004030557.tif 000119
【図６３】
2004030557.tif 000120