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