(57)【要約】【課題】  量子化中に生じる量子化誤差を最小化しつつデータを符号化できる符号化方法、並びに装置を提供すること。【解決手段】  入力データを所定の量子化ビットで量子化する量子化器と、量子化されたデータに対してＤＰＣＭ演算を行って差分データを生成するＤＰＣＭ演算部と、前記ＤＰＣＭ演算部から入力された差分データをエントロピ符号化してビットストリームとして出力するエントロピ符号化器と、前記入力データ及び前記入力された量子化されたデータを入力され、量子化誤差が最小となるように入力されたデータの最大値及び最小値を調整して出力する量子化誤差最小化部と、前記最大値及び最小値をヘッダ情報として符号化して前記ビットストリームに含めるヘッダ符号化器と、を備える。【選択図】  図１０
2006050609.tif 000002
【特許請求の範囲】
【請求項１】
入力データを所定の量子化ビットで量子化する量子化器と、
量子化されたデータに対してＤＰＣＭ演算を行って差分データを生成するＤＰＣＭ演算部と、
前記ＤＰＣＭ演算部から入力された差分データをエントロピ符号化してビットストリームとして出力するエントロピ符号化器と、
前記入力データ及び前記入力された量子化されたデータを入力され、量子化誤差が最小となるように入力されたデータの最大値及び最小値を調整して出力する量子化誤差最小化部と、
前記最大値及び最小値をヘッダ情報として符号化して前記ビットストリームに含めるヘッダ符号化器と、を備えることを特徴とする符号化装置。
【請求項２】
前記量子化誤差最小化部は、
前記入力データ及び前記入力された量子化されたデータを入力され、前記入力されたデータの最小値の桁数及び量子化誤差を計算して最小誤差値ｅminの初期値を設定し、調整最小値ｍｉｎ’及び量子化誤差最小化値ｍｉｎminの初期値を設定する初期値設定部と、
前記調整最小値ｍｉｎ’に対して所定の演算を行って前記調整最小値を更新する調整最小値更新部と、
前記更新された調整最小値の桁数及び大きさに応じて量子化誤差最小化値ｍｉｎminを逆量子化に用いる最小値として決める判断部と、
前記更新された調整最小値に基づく量子化誤差値を計算し、前記計算された誤差値が前記最小誤差値より小さい場合、前記調整最小値を量子化誤差最小化値ｍｉｎminに更新し、前記計算された誤差値を最小誤差値に更新して前記調整最小値更新部に出力する誤差値更新部と、を備えることを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記初期値設定部は、
所定の量子化ステップサイズを所定の定数で割った値及び前記入力されたデータの最小値に基づき前記調整最小値の初期値を設定することを特徴とする請求項２に記載の符号化装置。
【請求項４】
前記判断部は、
入力された調整最小値の桁数及び前記量子化されたデータの桁数を比較し、前記入力された調整最小値及び前記入力データの最小値を比較し、現在の量子化誤差最小化値を逆正規化に用いる最小値として出力することを特徴とする請求項２に記載の符号化装置。
【請求項５】
（ａ）入力データを所定の量子化ビットで量子化する量子化段階と、
（ｂ）量子化されたデータに対してＤＰＣＭ演算を行って差分データを生成するＤＰＣＭ演算段階と、
（ｃ）前記（ｂ）段階において生成された差分データをエントロピ符号化してビットストリームを生成するエントロピ符号化段階と、
（ｄ）前記入力データ及び前記入力された量子化されたデータを用い、量子化誤差が最小となるように量子化されたデータの最大値及び最小値を調整する量子化誤差最小化段階と、
（ｅ）前記最大値及び最小値をヘッダ情報として符号化して前記ビットストリームに含めるヘッダ符号化段階と、を含むことを特徴とする符号化方法。
【請求項６】
前記（ｄ）段階は、
（ｄ１）前記入力データ及び前記入力された量子化されたデータを用い、前記入力されたデータの最小値の桁数及び量子化誤差を計算して最小誤差値ｅminの初期値を設定し、調整最小値ｍｉｎ’及び量子化誤差最小化値ｍｉｎminの初期値を設定する段階と、
（ｄ２）前記調整最小値ｍｉｎ’に対して所定の演算を行って前記調整最小値を更新する段階と、
（ｄ３）前記更新された調整最小値の桁数及び大きさに応じて量子化誤差最小化値ｍｉｎminを逆量子化に用いる最小値として決める段階と、
（ｄ４）前記（ｄ３）段階において、前記逆量子化に用いられる最小値として決めていない場合に、前記更新された調整最小値に基づく量子化誤差値を計算し、前記計算された誤差値が前記最小誤差値より小さければ、前記調整最小値を量子化誤差最小化値ｍｉｎminに更新し、前記計算された誤差値を最小誤差値に更新した後、前記（ｄ２）段階から再び行う段階と、を含むことを特徴とする請求項５に記載の符号化方法。
【請求項７】
前記（ｄ１）段階は、
所定の量子化ステップサイズを所定の定数で割った値及び前記入力されたデータの最小値に基づき前記調整最小値の初期値を設定することを特徴とする請求項６に記載の符号化方法。
【請求項８】
前記(ｄ３)段階は、
入力された調整最小値の桁数及び前記入力されたデータの桁数を比較し、前記入力された調整最小値及び前記入力データの最小値を比較し、現在の量子化誤差最小化値を逆量子化に用いる最小値として決めることを特徴とする請求項６に記載の符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータの符号化装置、並びに方法に関する。
【背景技術】
【０００２】
図１は、従来のデータ符号化装置及び復号化装置の構成を示すブロック図である。従来の符号化装置は、量子化器１００、ＤＰＣＭ演算部１１０、及びエントロピ符号化器１２０を備えてなる。従来の符号化方法について説明すれば、入力データは、量子化器１００において所定のビット数で量子化された後にＤＰＣＭ演算部１１０に入力される。ＤＰＣＭ演算部１１０は、量子化されたデータに対し、以前のデータから現在のデータを引くことにより差分データを計算し、計算された差分データをエントロピ符号化器１２０に出力する。エントロピ符号化器１２０は、所定のエントロピ符号化方法を用いて差分データをビットストリームに符号化する。
【０００３】
一方、従来の復号化装置は、エントロピ復号化器１３０、逆ＤＰＣＭ演算部１４０、及び逆量子化器１５０を備えてなり、データを符号化したビットストリームは、エントロピ復号化器１３０に入力される。エントロピ復号化器１３０は、エントロピ符号化器において行われた演算の逆過程を行って差分データを出力し、逆ＤＰＣＭ演算部１４０は、入力された差分データを変換して量子化されたデータを逆量子化器に出力し、逆量子化器１５０は、入力された量子化されたデータを逆量子化して復元されたデータを出力する。
【０００４】
しかしながら、上述した従来の符号化方法は、符号化すべきデータの量を縮小するために単純なるＤＰＣＭ演算のみを行うだけであって、符号化効率が高くなく、しかも、様々な成分のデータが連続的に入力されるとき、各成分のデータの性質を考慮せずに符号化するために、符号化効率が高くなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の技術的な課題は、量子化中に生じる量子化誤差を最小化しつつデータを符号化できる符号化方法、並びに装置を提供することである。
【課題を解決するための手段】
【０００６】
技術的な課題を達成するために、本発明の符号化装置は、入力データを所定の量子化ビットで量子化する量子化器と、量子化されたデータに対してＤＰＣＭ演算を行って差分データを生成するＤＰＣＭ演算部と、前記ＤＰＣＭ演算部から入力された差分データをエントロピ符号化してビットストリームとして出力するエントロピ符号化器と、前記入力データ及び前記入力された量子化されたデータを入力され、量子化誤差が最小となるように入力されたデータの最大値及び最小値を調整して出力する量子化誤差最小化部と、前記最大値及び最小値をヘッダ情報として符号化して前記ビットストリームに含めるヘッダ符号化器と、を備える。
【発明の効果】
【０００７】
上述したように、本発明の符号化装置及び方法により、量子化中に生じる量子化誤差を最小化しつつデータを符号化できる。また、本発明による符号化装置及び方法を用いてデータを符号化することにより、データの符号化効率を格段に向上できる。
【０００８】
さらに、本発明による正規化器は、複数の成分よりなるデータをある成分に基づき正規化することにより、残りの成分のデータの大きさを減らすと共に、符号化効率を高められる。
【０００９】
なおかつ、本発明は、位置インタポレータのキー値データを正規化し、ＤＰＣＭ演算及び予測ＤＰＣＭ演算を行った後、循環量子化演算を行って符号化すべき差分データの範囲を狭めることにより、位置インタポレータのキー値データを高画質を維持しつつ高い圧縮比にて符号化及び復号化できる。
【発明を実施するための最良の形態】
【００１０】
以下、添付した図面に基づき、本発明の好ましい実施の形態を説明する。
【００１１】
図２は、本発明の好ましい実施の形態によるＤＰＣＭ演算装置の構成を示すブロック図であり、図３３は、本発明の好ましい実施の形態によるＤＰＣＭ演算方法を説明するフローチャートである。
【００１２】
図２を参照すれば、本発明のＤＰＣＭ演算装置は、入力された量子化されたデータに対して通常のＤＰＣＭ演算を行って差分データを出力するＤＰＣＭ演算部２１０及び入力された差分データに対して差分データの範囲を狭める循環量子化演算を行う循環量子化部２２０を備える循環ＤＰＣＭ演算部２００、入力された量子化されたデータに対して予測ＤＰＣＭ演算を行って予測差分データを出力する予測ＤＰＣＭ演算部２４０及び入力された差分データに対して差分データの範囲を狭める循環量子化演算を行う循環量子化部２５０を備える予測循環ＤＰＣＭ演算部２３０、及び入力された差分データの大きさに応じて循環ＤＰＣＭ演算部から入力された差分データ及び予測循環ＤＰＣＭ演算部から入力された差分データのうちどちらか一方の差分データを選択して出力する選択部２６０を備える。
【００１３】
図３をさらに参照し、本発明の好ましい実施の形態によるＤＰＣＭ演算方法を説明する。
【００１４】
任意の量子化方法により量子化されたデータは、循環ＤＰＣＭ演算部及び予測循環ＤＰＣＭ演算部に各々入力される（Ｓ２１０）。
【００１５】
まず、循環ＤＰＣＭ演算部２００に入力された量子化されたデータを受け取ったＤＰＣＭ演算部２１０は、入力された量子化されたデータに対して通常のＤＰＣＭ演算を行って求められた差分データを循環量子化部２２０に出力し、循環量子化部２２０は、入力された差分データに対して循環量子化を行う（Ｓ２２０ａ）。
【００１６】
ＤＰＣＭ演算部２１０は、入力された量子化されたデータから以前に入力された量子化されたデータを引いて差分データを計算する。その後、循環量子化部２２０は、計算された差分データを入力されて循環量子化演算を行う。循環ＤＰＣＭ演算部２００の処理過程は、下記式１で表わされる。
【００１７】
【数１】
2006050609.tif 000003
【００１８】
前式において、ｎはデータの数を示す。循環量子化演算については後述する。
【００１９】
一方、予測循環ＤＰＣＭ演算部２３０の予測ＤＰＣＭ演算部２４０は、入力された量子化されたデータに対して予測ＤＰＣＭ演算を行って予測差分データを計算し、循環量子化部２５０は、予測差分データに対して循環量子化演算を行う（Ｓ２２０ｂ）。
【００２０】
予測ＤＰＣＭ演算部２４０は、現在入力された量子化されたデータから予測データを引いて予測差分データを生成して出力する。具体的に、予測ＤＰＣＭ演算部２４０は、現在入力された量子化されたデータに対する予測データを求めるために、量子化された以前のデータからその以前データを引いて差分値を求める。その後、求められた差分値を以前の差分データに加えて現在のデータに対する予測データを計算する。予測ＤＰＣＭ演算部２４０は、現在のデータから計算された予測データを引いて現在データに対する予測差分データを計算する。
【００２１】
但し、予測ＤＰＣＭ演算部２４０が計算した予測データは、入力された量子化されたデータが有し得る最大範囲を超えることができない。すなわち、予測ＤＰＣＭ演算部２４０は、予測データが入力された量子化されたデータの量子化範囲の最大値を超える場合には、予測データを入力されたデータの量子化範囲の最大値とし、予測データから現在のデータを引いて現在のデータに対する差分データを生成する。もし、予測データが入力されたデータの量子化範囲の最小値より小さければ、現在のデータそのものを予測差分データとして決める（以下、"修正された予測ＤＰＣＭ演算"と称する）。
【００２２】
予測ＤＰＣＭ演算部２３０において計算された予測差分データは、循環量子化部２５０に入力されて循環量子化演算が行われる。
【００２３】
上述した予測循環ＤＰＣＭ演算部２３０の演算過程は、下記式２で表わされる。
【００２４】
【数２】
2006050609.tif 000004
【００２５】
前記式２において、ｎをデータの数であるとした時、ｉは、２，３，．．．，ｎ−１である。
【００２６】
図３０は、最大値が１０２４であり、最小値が０である５０個の量子化されたデータに対して単純なる予測ＤＰＣＭ演算を行った結果を示す図面であり、図３１は、同データに対して予測値が最大値を超えるか、それとも最小値以下である場合、前式２により差分データを調整した修正された予測ＤＰＣＭ演算結果を示す図面である。
【００２７】
図３０及び図３１に示されたように、単純なる予測ＤＰＣＭ演算を行った結果、予測差分データの範囲は約３０００であり、修正された予測ＤＰＣＭを用いた結果、予測差分データの範囲は２０００以下であるため、修正された予測ＤＰＣＭ演算結果、より狭い予測差分データの範囲が得られる。
【００２８】
以下、循環量子化過程について説明する。
【００２９】
図３２は、量子化されたデータを示す図面であり、図３３は、図３２に示された量子化されたデータに対してＤＰＣＭ演算を行った結果を示す図面である。図３３に示されたように、ＤＰＣＭ演算を行った後の差分データの範囲は、ＤＰＣＭ演算が行われる前のデータの範囲の２倍まで広がる。したがって、循環量子化演算の目的は、差分データの範囲を入力されたデータの範囲に維持しつつＤＰＣＭ演算を行うことである。
【００３０】
循環量子化演算は、量子化範囲の最大値及び量子化範囲の最小値が互いに繋がれていると仮定する。従って、もし、連続した量子化された両データ間の線形ＤＰＣＭ結果である差分データが量子化範囲の最大値の半分を超えれば、差分データ値から最大値を引くことにより、差分データ値をより小さい値で表わせる。
【００３１】
また、もし、連続した量子化された両データ間の線形ＤＰＣＭ結果である差分データが量子化範囲の最小値の半分より小さければ、差分データ値に最大値を加えることにより、差分データ値をより小さい値で表わせる。
【００３２】
2006050609.tif 000005
【００３３】
【数３】
2006050609.tif 000006
【００３４】
前式において、nQBitsは、量子化に用いられるビットサイズである。図３４は、図３３に示された差分データに対して循環量子化を適用した結果を示す図面である。
【００３５】
図３をさらに参照すれば、循環量子化された差分データ及び循環量子化された予測差分データは選択部２６０に出力され、選択部２６０は、入力された差分データに対して絶対誤差合計（ＳＡＤ：Sum of Absolute Difference）演算を行う（Ｓ２３０）。
【００３６】
ＳＡＤ演算は、入力された値の絶対値をいずれも和する演算であって、選択部２６０は、入力された一連の差分データをなす各々の差分データの絶対値をいずれも和する。また、選択部２６０は、入力された一連の予測差分データをなす各々の予測差分データの絶対値をいずれも和する。
【００３７】
その後、選択部２６０は、合計された絶対値を互いに比較し、絶対値が小さい方の差分データを最終的な差分データとして選択して出力する（Ｓ２４０）。その理由は、より小さい絶対値の和を有する差分データが全体的にも小さいであろうと予測するからである。例えば、予測差分データをエントロピ符号化する場合、絶対値が小さい方の差分データの符号化に必要なビット数が、絶対値が大きい方の差分データの符号化に必要なビット数より少ないであろうと予測される。
【００３８】
従って、このようなＳＡＤ演算は差分データを選択するための１方法に過ぎず、選択部は、ＳＡＤ演算のほかに別の方法により差分データを選択し得るということは当業者にとって自明である。
【００３９】
図４は、本発明の好ましい第１の実施の形態の符号化装置の構成を示すブロック図であり、図５は、第１の実施の形態の符号化装置による符号化過程を説明するフローチャートである。本発明の第１の実施の形態の符号化装置は、前記本発明のＤＰＣＭ演算装置をデータの符号化に適用している。
【００４０】
図４に示された符号化装置は、入力されたデータを所定の量子化ビット数で量子化する量子化器３１０、入力された量子化されたデータに対して循環ＤＰＣＭ演算及び予測循環ＤＰＣＭ演算を行って差分データを出力するＤＰＣＭ処理部３４０、及びＤＰＣＭ処理部３４０から入力された差分データに対して所定のエントロピ符号化演算を行ってビットストリームを出力するエントロピ符号化器３５０を備え、ＤＰＣＭ処理部３４０は、前記ＤＰＣＭ演算装置よりなる。
【００４１】
図４及び図５を参照すれば、符号化すべきデータは本発明の符号化装置に入力され（Ｓ３１０）、量子化器３１０において所定の量子化ビットで量子化された後にＤＰＣＭ処理部３４０に出力される（Ｓ３２０）。
【００４２】
量子化されたデータを入力されたＤＰＣＭ処理部３４０の循環ＤＰＣＭ演算部２００は、ＤＰＣＭ演算及び循環量子化演算を行って差分データを選択部２６０に出力する。また、予測循環ＤＰＣＭ演算部は、予測ＤＰＣＭ演算及び循環量子化演算を行って差分データを選択部２６０に出力する（Ｓ３３０）。
【００４３】
選択部２６０は、各々の差分データに対してＳＡＤ演算を行ってエントロピ符号化器３５０に出力する差分データを選択し、選択された差分データを出力する（Ｓ３４０）。
【００４４】
選択部２６０から差分データを入力されたエントロピ符号化器３５０は、所定のエントロピ符号化演算を行い、入力された差分データをエントロピ符号化してビットストリームを生成する（Ｓ３５０）。
【００４５】
図６は、本発明の第２の実施の形態による符号化装置の構成を示すブロック図であり、図７は、図６に示された量子化誤差最小化部の処理過程を説明するフローチャートである。
【００４６】
本発明の第２の実施の形態による符号化装置は、符号化されたデータを復号化するに際して量子化誤差が最小化可能に、量子化誤差を最小化する最小値及び最大値をビットストリームに含めて符号化する。
【００４７】
図６を参照すれば、本発明の好ましい実施の形態による量子化誤差を最小化する符号化装置は、量子化器３１０、ＤＰＣＭ演算部１１０／３４０、エントロピ符号化器３５０、入力データ及び入力された量子化されたデータを入力されて量子化誤差が最小となるようにデータの最大値及び最小値を調整して出力する量子化誤差最小化部３２０、及び最大値及び最小値をヘッダ情報として符号化して前記ビットストリームに含めるヘッダ符号化器３７０を備える。
【００４８】
また、量子化誤差最小化部３２０は、最小誤差値ｅmin、調整最小値ｍｉｎ'及び量子化誤差最小化値ｍｉｎminの初期値を設定する初期値設定部３２１、調整最小値ｍｉｎ'に対して所定の演算を行って調整最小値を更新する調整最小値更新部３２３、更新された調整最小値の桁数及び値に応じて量子化誤差最小化値ｍｉｎminを逆量子化に用いる最小値として決める判断部３２５、及び更新された調整最小値に基づく量子化誤差値を計算し、計算された誤差値が前記最小誤差値より小さければ、前記調整最小値を量子化誤差最小化値ｍｉｎminに更新し、計算された誤差値を最小誤差値に更新して調整最小値更新部３２３に出力する誤差値更新部３２７を備える。
【００４９】
量子化誤差最小化部３２０は、量子化誤差を最小化するために入力されたデータに対して予め量子化及び逆量子化を行い、量子化の誤差が最小となる量子化の範囲を制御する方法を用いる。
【００５０】
具体的に説明すれば、固定された量子化に用いる最大値をMaxとし、調整される量子化に用いる最小値をMinとし、Xiを入力値とし、そしてnQuanBitを量子化に用いるビット数とした時、
2006050609.tif 000007
各々、下記式４により計算する。
【００５１】
【数４】
2006050609.tif 000008
【００５２】
量子化誤差最小化部３２０は、誤差の和Σｅiを減らす方法として、誤差の和が最小となるまでMinを調整し、復号化中に量子化誤差を最小化する最小値を用いて量子化されたデータを復号化する方法を用いた。
【００５３】
量子化器３１０、ＤＰＣＭ演算部１１０／３４０、及びエントロピ符号化器３５０は前記符号化装置の構成と類似しているため、その詳細な説明は省略する。
【００５４】
以下、本発明の新たな構成の量子化誤差最小化部３２０の処理過程を図７に基づき説明する。
【００５５】
初期値設定部３２１は、量子化器３１０に入力されるデータと同じデータを入力され、また、量子化器３１０から出力された量子化されたデータを入力される（Ｓ４０２）。
【００５６】
初期値設定部３２１は、入力されたデータから最大値Max及び最小値Minを選択して最小値の桁数を計算し、選択された最大値及び最小値を用いて量子化されたデータを逆量子化して量子化誤差ｅを計算し、計算された量子化誤差ｅを最小誤差値ｅminの初期値として設定する（Ｓ４０４）。
【００５７】
また、初期値設定部３２１はね入力されたデータのうち最小値ｍｉｎから量子化ステップサイズQuantSpaceを２で割った値を引いて調整最小値ｍｉｎ'の初期値を設定し、調整最小値ｍｉｎ'の初期値を量子化誤差最小化値ｍｉｎminとして設定し、設定された調整最小値を調整最小値更新部３２３に出力する（Ｓ４０６）。
【００５８】
調整最小値更新部３２３は、入力された調整最小値に対して所定の演算を行って調整最小値を更新するが、本発明の好ましい実施の形態による調整最小値更新部３２３は、下記式５により入力された調整最小値を更新して判断部３２５に出力する（Ｓ４０８）。
【００５９】
【数５】
2006050609.tif 000009
【００６０】
判断部３２５は、更新された調整最小値ｍｉｎ'の桁数を計算して初期値設定部３２１において計算した最小値ｍｉｎの桁数と比較し、初期値設定部３２１に入力されたデータの最小値ｍｉｎに所定の量子化ビットサイズQuantSpaceを２で割った値を加えた値及び調整最小値を比較する（Ｓ４１０）。
【００６１】
比較の結果、更新された調整最小値ｍｉｎ'の桁数が入力されたデータの最小値ｍｉｎの桁数より大きいか、それとも更新された調整最小値ｍｉｎ'の大きさがｍｉｎ＋QuantSpace/2より大きければ、判断部は、現在記憶された量子化誤差最小化値ｍｉｎminを逆量子化に用いる最小値として決めて出力部に出力する（Ｓ４１２）。しかし、前記条件を全く満足しなければ、判断部は、更新された調整最小値を誤差値更新部３２７に出力する。
【００６２】
誤差値更新部３２７は、更新された調整最小値及び初期値設定部３２１において選択された最大値ｍａｘを用いて入力された量子化されたデータを逆量子化し、量子化誤差ｅを計算する（Ｓ４１４）。
【００６３】
誤差値更新部３２７は、新しく計算された誤差値ｅを最小誤差値ｅminと比較し（Ｓ４４６）、新しく計算された誤差値ｅが最小誤差値ｅminより小さければ、新しく計算された誤差値ｅをもって最小誤差値ｅminを更新し、調整最小値をもって量子化誤差最小化値ｅminを更新する（Ｓ４１８）。しかし、新しく計算された誤差値ｅが最小誤差値ｅminより大きければ、最小誤差値ｅmin及び量子化誤差最小化値ｍｉｎminを更新せずに第Ｓ４０８段階から再び行う。
【００６４】
一方、上述した過程を通じて検出された量子化誤差を最小化する最小値及び最大値はヘッダ符号化器３７０に出力され、復号化に必要な情報を含むヘッダ情報として符号化されてエントロピ符号化器３５０により生成されたビットストリームに含まれる。
【００６５】
図８は、本発明の好ましい第３の実施の形態による符号化装置の構成を示すブロック図であり、図９は、図８に示された正規化器の処理過程を説明するフローチャートである。第３の実施の形態による本発明の符号化装置は、符号化すべきデータが複数の成分よりなる場合、入力されたデータを正規化することにより符号化効率を高める。
【００６６】
図８に示された第３の実施の形態による符号化装置は、入力された各成分のデータの範囲のうち最大範囲を計算し、各成分のデータを前記最大範囲に基づき正規化する正規化器３００、正規化されたデータを所定の量子化ビットで量子化する量子化器３１０、量子化されたデータに対してＤＰＣＭ演算を行って差分データを出力するＤＰＣＭ演算部１１０／３４０、及び差分データをエントロピ符号化し、入力データの符号化されたビットストリームを出力するエントロピ符号化器３５０を備える。
【００６７】
量子化器３１０、ＤＰＣＭ演算部１１０／３４０及びエントロピ符号化器３５０の構成は上述した構成と類似しているため、正規化器３００の処理過程についてのみ図９に基づき説明する。
【００６８】
符号化すべきデータが複数のデータ成分よりなる場合、例えば、入力データが３次元空間上の客体の位置を示すために、ｘ、ｙ及びｚの３つのデータ成分よりなるとした時、符号化されるべき各成分ｘ、ｙ及びｚのデータはまず符号化装置の正規化器３００に入力され、正規化器３００は、入力された各成分の最大範囲を計算し、計算された最大データの範囲に基づき各成分のデータを正規化する。
【００６９】
正規化器３００は、各成分のデータを入力され、下記式６を用いて各成分のデータの範囲を計算し（Ｓ５１２）、各成分のデータ範囲を比較してデータの最大範囲を計算する（Ｓ５１４）。
【００７０】
【数６】
2006050609.tif 000010
【００７１】
その後、正規化器３００は、下記式７を用いて各成分のデータを正規化する（Ｓ５１６）。
【００７２】
【数７】
2006050609.tif 000011
【００７３】
前式６及び前式７において、ｎはデータの数を示し、ｉ＝０，１，．．．ｎ−１であり、ｊは、データの成分ｘ、ｙ及びｚを示す。前式７から分かるように、各成分のデータは各成分の最大範囲ではない、全ての成分の最大範囲に基づき正規化される。このような正規化過程を通じて最大範囲を有しない成分のデータのビット重なり性が高まって符号化効率が高まる。
【００７４】
正規化器３００は、入力された各成分のデータを正規化して量子化器３１０に出力し、量子化器３１０は、正規化されたデータを上述したように所定の量子化ビットで量子化してＤＰＣＭ演算部１１０／３４０に出力する。その後、ＤＰＣＭ演算部１１０／３４０は、量子化されたデータに対してＤＰＣＭ演算を行って生成された差分データをエントロピ符号化器３５０に出力してデータを符号化する。
【００７５】
以下、上述した本発明のＤＰＣＭ演算装置、量子化誤差を最小化する符号化装置、及び複数成分のデータを符号化する符号化装置を結合した本発明の好ましい第４の実施の形態による符号化装置を説明する。
【００７６】
第４の実施の形態による符号化装置は、符号化すべきデータが３次元アニメーションデータのうち位置インタポレータのキー値データである場合を例にとって説明する。しかし、第４の実施の形態による符号化装置を用いて他の通常のデータが符号化できるということはもちろんである。
【００７７】
位置インタポレータとは、キーフレームに基づくアニメーション方式においてアニメーション経路の位置情報を示すものであって、キーフレームに基づくアニメーションは、コンピュータ合成３次元アニメーションを表わすために用いられる基礎技術の一つである。この技術は、キーデータが示す瞬間に基づきアニメーションの順序を定義するのに用いられる。キーデータが示す瞬間に対応するフレームは、キーフレームと呼ばれる。
【００７８】
キーフレームに基づくアニメーションにおいて、多数のキーフレームとキーフレームとの間に位置するフレームがアニメーションを構成し、キーフレーム間に位置するフレームは補間により満たされる。
【００７９】
ＭＰＥＧ−４ ＢＩＦＳ（Binary Format for Scene）及びＶＲＭＬ（VirtualReality Modeling Language）などの国際マルチメディア標準は、インタポレータノードを用いたキーフレームに基づくアニメーションを支援する。ＭＰＥＧ−４ ＢＩＦＳ及びＶＲＭＬには各種のインタポレータがあるが、中でも、スカラーインタポレータ、位置インタポレータ、座標インタポレータ、回転インタポレータ、法線インタポレータ及び色インタポレータが代表的である。各インタポレータの種類、機能及び特徴は、下記表１に示す。
【００８０】
【表１】
2006050609.tif 000012
【００８１】
前記表１に記載されたインタポレータの一つである位置インタポレータは、キーフレームに基づくアニメーションの位置情報を表わすために用いられ、キー及びキー値フィールドよりなる。キーフィールドは、（−∞、＋∞）の範囲においてキーフレームが位置する時間を不連続的な数字で表わす。キー値フィールドは、各々のキーが表わす時間における客体の位置情報を表わし、ｘ、ｙ及びｚの３成分を有する。従って、キー値フィールドは、キーフィールドと同数のキー値を含む。
【００８２】
位置インタポレータの一例が図３５及び図３６に示してある。図３５は、キーデータを示し、図３６は、キー値データを示している。
【００８３】
ＭＰＥＧ−４ ＢＩＦＳ及びＶＲＭＬは、線形補間を用いるため、線形インタポレータを用いてスムーズで且つ自然なアニメーションを具現するためには、極めて多量のキーデータ及びキー値データが要される。また、このようにスムーズで且つ自然なアニメーションを記憶または伝送するためには、大容量の記憶装置及び長時間が必要である。従って、これらインタポレータの記憶及び伝送のためには、インタポレータを圧縮することが効果的である。
【００８４】
ＭＰＥＧ−４ ＢＩＦＳにおいては、インタポレータノードを符号化して復号化する方法として、ＰＭＦＣ（Predictive MF Coding）と呼ばれる方法がある。図１に示された従来の符号化装置のように、ＰＭＦＣ方法は、量子化器、ＤＰＣＭ（Differential Pulse Code Modulation）及びエントロピ符号化器を用いて位置インタポレータのキー値データを符号化する。量子化器及びＤＰＣＭモジュールは、キー値データの冗長性を除去し、ＤＰＣＭモジュールの出力は、エントロピ符号化器に出力される。しかし、この方法は、通常のＤＰＣＭ演算により得られた差分データをエントロピ符号化するため、符号化効率が高くない。また、エントロピ符号化器の制限により高画質のアニメーションが提供できない。
【００８５】
従って、上述した本発明のＤＰＣＭ演算装置、量子化誤差を最小化する符号化装置、及び複数の成分よりなるデータを符号化する符号化装置を結合してキー値データの符号化効率を高め得るキー値符号化装置を提供する。
【００８６】
図１０は、本発明の好ましい第４の実施の形態によるキー値データ符号化装置の構成を示すブロック図であり、図１１は、キー値データ符号化装置の処理過程を説明するフローチャートである。
【００８７】
図１０を参照すれば、本発明のキー値データ符号化装置は、入力された各成分のキー値データを最大範囲に基づき正規化する正規化器３００、正規化されたキー値データを所定の量子化ビットで量子化する量子化器３１０、量子化誤差が最小化可能に正規化器３００から最小値及び最大範囲を入力されて調整して出力する量子化誤差最小化部３２０、量子化誤差を最小化する最小値及び最大範囲を量子化誤差最小化部３２０から入力されて１０進数体系の実数に変換する実数符号化器３３０、量子化されたキー値データに対して差分データ及び予測差分データを求め、前記差方データの範囲を狭める循環量子化演算を行うＤＰＣＭ処理部３４０、差分データをエントロピ符号化してキー値データの符号化されたビットストリームを出力するエントロピ符号化器３５０、及びビットストリームの復号化に必要な情報を符号化して前記ビットストリームに含めるキー値ヘッダ符号化器３６０を備える。
【００８８】
図１１を参照し、本発明のキー値データの符号化過程を説明する。
【００８９】
符号化されるべき各成分ｘ、ｙ及びｚのキー値データは、まず符号化装置の正規化器３００に入力され（Ｓ６００）、正規化器３００は、入力された各成分の最大キー値範囲を計算して各成分のキー値データを最大キー値データの範囲に基づき正規化する（Ｓ６１０）。正規化器の入力されたキー値データを正規化する過程は、上述の通りである。
【００９０】
正規化器において正規化された各成分ｘ、ｙ及びｚのキー値データは量子化器３１０に入力され、量子化器３１０は、キー値データを下記式８により所定の量子化ビットnQuantBitで量子化する（Ｓ６２０）。
【００９１】
【数８】
2006050609.tif 000013
【００９２】
前式８のfloor()関数は、入力された実数値を実数値以下の最大整数に変換する関数である。量子化器３１０は、量子化されたキー値データをＤＰＣＭ処理部３４０及び量子化誤差最小化部３２０に出力する。
【００９３】
量子化誤差最小化部３２０は、正規化器から各成分の最小値及び最大範囲を入力され、上述したように、量子化誤差を最小化する各成分の最小値及び最大値を決め（Ｓ６３０）、量子化誤差最小化部３２０において決められた各成分の最小値及び最大値に基づき計算された各成分の最小値及び最大範囲は実数符号化器に入力されてキー値ヘッダとして符号化される。
【００９４】
以下、図１２を参照し、実数符号化器３３０の処理過程Ｓ６５０について説明する。
【００９５】
まず、実数符号化器３３０は、正規化器３００から入力された各成分のキー値データの最小値ｘ＿ｍｉｎ，ｙ＿ｍｉｎ，ｚ＿ｍｉｎ、最大範囲を有する成分の最大値ｍａｘ、最大値がいかなる成分に含まれているかを示す情報nWhichAxis、及び元のキー値データの桁数nKeyValueDigitを入力される（Ｓ６５１）。
【００９６】
実数符号化器３３０は、符号化に必要なビット数を減らして符号化効率を高めるために、入力値のうち２進数体系の実数に表わされた各成分の最小値ｘ＿ｍｉｎ，ｙ＿ｍｉｎ，ｚ＿ｍｉｎ、及び全ての成分のうち最大値ｍａｘを１０進数体系の実数に変換する（Ｓ６５２）。
【００９７】
コンピュータは、実数（floating-point number）を３２ビットの２進数の形で記憶する。実数が２進数の形で入力されれば、実数符号化器３３０は、実数を１０進数体系の仮数及び１０の指数の形に変換する。すなわち、下記式９のように変換する。
【００９８】
【数９】
2006050609.tif 000014
【００９９】
例えば、実数１２．３４をコンピュータにて２進数の形で表わせば、下記の通りである。
2006050609.tif 000015
【０１００】
この数を前式９により１０進数で表わせば、下記の通りである。
2006050609.tif 000016
【０１０１】
１０進数体系の仮数及び指数をビットストリームに含めるためには、各々が必要とするビット数を計算しなければならない。まず、指数は、−３８〜３８の範囲の値を有するため、指数は符号を含んで７ビットで表わせる。また、仮数は、桁数に応じて必要なビットの数が決められる。仮数の値及びこれに必要なビット数（但し、符号ビットは除く）を下記表２に示す。
【０１０２】
【表２】
2006050609.tif 000017
【０１０３】
その後、実数符号化器３３０は、各成分の最小値の桁数がいずれも同じであるか否かをチェックし（Ｓ４５３）、もし、同じでなければ、各成分の最小値の桁数をキー値ヘッダ符号化器３６０に出力してキー値ヘッダとして符号化する（Ｓ６５４）。
【０１０４】
もし、各成分の最小値の桁数がいずれも同じであれば、これら最小値の桁数が元のキー値データの桁数とも同じであるか否かをチェックし（Ｓ６５５）、同じでなければ、最小値の桁数をキー値ヘッダ符号化器３６０に出力してキーヘッダとして符号化する（Ｓ６５６）。
【０１０５】
以上の過程を通じて各成分の最小値の桁数情報をいずれもキー値ヘッダとして符号化した実数符号化器３３０は、最大値情報を符号化するために最大値ｍａｘがいかなる成分に含まれるかをチェックし、最大値ｍａｘの桁数及び最大値が含まれる成分の最小値の桁数が同じであるか否かをチェックする（Ｓ６５７）。
【０１０６】
もし、同じでなければ、最大値ｍａｘの桁数をキー値ヘッダ符号化器３６０に出力してキー値ヘッダとして符号化し、同じであれば、桁数が同じである旨の状態情報をキー値ヘッダ符号化器３６０に出力する（Ｓ６５８）。
【０１０７】
上述した過程を通じて実数符号化器３３０は変換された実数の仮数に関する情報をキー値ヘッダとして符号化し、後述する過程を通じて指数に関する情報をキー値ヘッダとして符号化する。
【０１０８】
実数符号化器３３０は、１０進数体系に変換された各成分の最小値ｘ＿ｍｉｎ，ｙ＿ｍｉｎ，ｚ＿ｍｉｎ及び最大値ｍａｘの指数の絶対値のうち最大値をチェックし、その値をnMaxExp値として記憶し、所定のビットでキー値ヘッダとして符号化する（Ｓ６５９）。
【０１０９】
その後、実数符号化器３３０は、全ての指数の符号が同じであるか否かをチェックし（Ｓ４６０）、同じであれば、bSameSignExp値を１として記憶し、同じ最大値ｍａｘまたは最小値の符号をキー値ヘッダ符号化器３６０に出力する（Ｓ６６１）。しかし、同じでなければ、bSameSignExp値を０として設定する（Ｓ６６２）。上述した過程を通じて最小値及び最大値の指数に関する情報がキー値ヘッダとして符号化された。
【０１１０】
図１３を参照すれば、実数符号化器３３０は、入力された各成分の最小値及び最大値をキー値ヘッダとして符号化するが、まず、変換された実数の符号を符号化する（Ｓ６６３）。
【０１１１】
その後、実数符号化器３３０は、前記表２を参照して各実数の桁数に基づき符号化に必要なビット数を計算し、計算されたビット数だけ仮数をキー値ヘッダ符号化器３６０に出力する（Ｓ６６４）。
【０１１２】
また、実数符号化器３３０は、前記表２を参照してnMaxExp値を符号化するのに必要なビット数を計算し、計算されたビット数だけ指数をキー値ヘッダ符号化器３６０に出力する（Ｓ６６５）。
【０１１３】
実数符号化器３３０は、前記bSameSignExp値をチェックし（Ｓ６６６）、最小値ｘ＿ｍｉｎ，ｙ＿ｍｉｎ，ｚ＿ｍｉｎ及び最大値ｍａｘの指数の符号がいずれも同じであるか否かをチェックし、同じでなければ、各成分の最小値の符号及び最大値の符号を各々キー値ヘッダ符号化器３６０に出力して符号化することにより（Ｓ６６７）、正規化器から入力されたキー値データの最小値及び最大値の符号化過程は終わる。
【０１１４】
一方、実数符号化器３３０は、量子化誤差最小化部３２０から各成分の量子化誤差を最小化する最小値及び最大値を入力され、前記のような過程を通じてキー値ヘッダとして符号化する。
【０１１５】
一方、図１１をさらに参照すれば、ＤＰＣＭ処理部３４０は、入力された量子化されたキー値データに対して循環ＤＰＣＭ演算及び予測循環ＤＰＣＭ演算を行い、エントロピ符号化器３５０に差分データを出力する（Ｓ６７０）。ＤＰＣＭ処理部３４０は、前記ＤＰＣＭ演算装置により具現され、ＤＰＣＭ演算装置の構成及び機能は前述の通りである。但し、ＤＰＣＭ処理部３４０は、キー値データの各成分ｘ、ｙ及びｚ別に循環ＤＰＣＭ演算及び予測ＤＰＣＭ演算を行う。
【０１１６】
ＤＰＣＭ処理部３４０から入力された差分データは、エントロピ符号化器３５０においてエントロピ符号化される（Ｓ６８０）。
【０１１７】
図１４を参照すれば、本発明の好ましい実施の形態のエントロピ符号化器３５０は、ｘ、ｙ及びｚの各成分のキー値データの差分データをエントロピ符号化する。
【０１１８】
エントロピ符号化器３５０は、入力された各成分の差分データをチェックし、各成分に含まれた量子化された値が同じであるか否か、すなわち、差分データがいずれも０であるか否かをチェックし、そうであれば、エントロピ符号化過程を終える（Ｓ６８１）。例えば、３次元アニメーション上において汽車がｘ成分方向である水平方向に移動する場合、ｘ成分のキー値データは変わるが、残りの成分のキー値データはその変化が僅かであって、量子化すればその値が同じくなる。従って、同じキー値データをいずれも符号化せず、一つのキー値データのみをキー値ヘッダとして符号化することにより、符号化効率を高めることができる。
【０１１９】
各成分の全ての量子化されたキー値データが同じではなければ、エントロピ符号化器３５０は、予め設定された値を読み込み（Ｓ６８２）、UnaryAAC関数を用いて差分データを符号化するか（Ｓ６８３）、あるいは、SuccessiveQuantizationQAAC関数を用いて入力された差分データをエントロピ符号化する（Ｓ６８５）。
【０１２０】
まず、図１６を参照し、UnaryAAC関数について説明する。UnaryAAC関数は、符号化すべきシンボルを一連の０に変換した後、前記０が終わった旨を示す１及びシンボルの符号を示す１ビットを用いてシンボルを符号化する。この時、一連の０はシンボルの大きさを示す。例えば、符号化すべきシンボルが２５６であれば、UnaryAAC関数は、図９に示されたように、シンボルを２５６個の０と、０が終わった旨を示す１及びシンボルの符号（正数）を示す０を符号化する。UnaryAAC関数により符号化すべきシンボルのビット冗長性が高まるため、符号化効率が高まる。
【０１２１】
図１５、図１７及び図１８を参照し、SuccessiveQuantizationQAAC関数の符号化過程について説明する。SuccessiveQuantizationQAAC関数は、量子化の範囲を連続的に定義することにより、各々のシンボルの値を符号化する。
【０１２２】
図１７は、SuccessiveQuantizationQAAC関数によりシンボルを符号化する概念を説明する図面である。図１７に示されたように、符号化すべき入力シンボルは１であり、符号化範囲の最小値は０であり、そして最大値は９である。
【０１２３】
第１段階においてSuccessiveQuantizationQAACは符号化範囲を上位範囲及び下位範囲に分け、符号化すべきシンボル１がいかなる範囲に属するかをチェックする。シンボル１は符号化範囲の下位範囲に属するために０を符号化し、符号化範囲を下位範囲に更新する。すなわち、符号化範囲の最大値を下位範囲の最大値に更新する。従って、第２段階における符号化範囲は、［０，４］となる。
【０１２４】
第２段階においても、SuccessiveQuantizationQAAC関数は、符号化範囲を上位範囲及び下位範囲に分け、符号化すべきシンボル１がいかなる範囲に属するかをチェックする。シンボル１は符号化範囲の下位範囲に属するために０を符号化し、符号化範囲の最大値を下位範囲の最大値である１に更新する。従って、新しい符号化範囲は、下位範囲である［０，１］に更新される。
【０１２５】
第３段階において、SuccessiveQuantizationQAAC関数は、符号化範囲を上位範囲である１及び下位範囲である０に分け、符号化すべきシンボル１がいかなる範囲に属するかをチェックする。今度はシンボルが上位範囲である１と同じであるために１を符号化し、符号化範囲の最小値を１に更新する。従って、新しい符号化範囲は［１，１］となり、符号化範囲の最大値及び最小値は同じくなる。符号化範囲の最大値及び最小値が同じくなれば、SuccessiveQuantizationQAAC関数は符号化過程を終える。
【０１２６】
図１５は、本発明のエントロピ符号化器３５０において、SuccessiveQuantizationQAAC関数を用いて入力された１成分の差分データをエントロピ符号化する過程を説明するフローチャートである。
【０１２７】
図１５を参照すれば、エントロピ符号化器３５０は、キー値データの差分データ、入力された差分データ（以下、"シンボル"と称する）をエントロピ符号化する時に用いるビット数ｎＱＰ、ビットストリームから符号化されるべき最初のシンボルを表わすnStartIndex及び符号化すべきシンボルの数ｎを入力される（Ｓ６９２）。
【０１２８】
エントロピ符号化器３５０は、入力された全てのシンボルの符号を符号化した後、入力シンボルをいずれも正数に変換する（Ｓ６９４）。全ての値を正数に変換する理由は、以降の過程は負数を入力されないからである。
【０１２９】
エントロピ符号化器３５０は、正数に変換された値のうち最大値を見つけてｎＭａｘとして記憶し、それをｎＱＰビット数だけ符号化する（Ｓ６９６）。
【０１３０】
エントロピ符号化器３５０は、シンボルを符号化する符号化範囲を初期化する。
2006050609.tif 000018
このフラグは、初期にｆａｌｓｅとして設定され、符号化すべき値が１であれば値をｔｒｕｅに変え、その以降には符号化に用いる確率モデルが変わる。
【０１３１】
その後、エントロピ符号化器３５０は、符号化すべき各成分の第１差分データを設定し（i=nStarIndex）、各成分の全てのシンボルの符号化が終わった旨を示すフラグｎＤｏｎｅを真として設定する（Ｓ７００）。
【０１３２】
エントロピ符号化器３５０は、全てのシンボルの符号化範囲の最大値及び最小値が同じくなるまで次の第Ｓ７０２段階ないし第Ｓ７１８段階を繰り返す。（あるシンボルの符号化範囲の最大値及び最小値が同じであるということは、このシンボルの符号化が終わったことを意味するため、全てのシンボルの範囲の最大値及び最小値が同じであるということは、それ以上符号化すべきシンボルが無いということを意味する。）
【０１３３】
2006050609.tif 000019
最大値及び最小値が同じであれば、次シンボルの符号化過程へ進み、同じでなければ、現在成分の符号化が終わった旨をｂＤｏｎｅ値を"偽"として設定して記録する（Ｓ７０４）。
【０１３４】
その後、符号化器は、現在シンボルの符号化範囲の中間値を計算し（Ｓ７０６）、中間値及びシンボルの値を比較する（Ｓ７０８）。本発明の実施の形態においては、中間値ｎＭｉｄを下記式１０を用いて計算した。
【０１３５】
【数１０】
2006050609.tif 000020
【０１３６】
比較の結果、シンボルの値が中間値以下であれば、０をビットストリームとして出力した後、
2006050609.tif 000021
【０１３７】
これに対し、比較の結果、シンボルの値が中間値以上であれば、１をビットストリームとして出力した後、
2006050609.tif 000022
この時、現在のシンボルが最初に中間値以上となる場合、すなわち、最初に１がビットストリームとして出力されたならば、符号化に用いる確率モデルを変更するために、
2006050609.tif 000023
【０１３８】
SuccessiveQuantizationQAAC関数において用いる確率モデルは、２つが存在する。一つは、各シンボルが最初に１を出力するまで出力される各ビットをエントロピ符号化するために用いるnotFoundContextであり、もう一つは、各シンボルが最初に１を出力した後の全てのビットをエントロピ符号化するために用いるFoundContextである。このように確率モデルを変える理由は、第１の確率モデルを用いる時、０が出力される確率を高めるためである。０が出力される確率が高まれば、その分エントロピ符号化の効率が高まる。
【０１３９】
2006050609.tif 000024
【０１４０】
あるシンボルに対する１段階の符号化過程（Ｓ７０２ないしＳ７１８）が終われば、符号化器はインデックスを１だけインクリメントし（Ｓ７２０）、全てのシンボルに対して現在段階の符号化過程が終わったか否かをチェックし（Ｓ７２２）、現在段階において符号化すべきシンボルがさらにあれば、第Ｓ７０２段階から再び行う。
【０１４１】
ある成分の全てのシンボルに対して現在段階の符号化過程が終われば 、エントロピ符号化器３５０はｂＤｏｎｅフラグをチェックしてある成分の全ての段階の符号化過程が終わったか否かをチェックし（Ｓ７２４）、ｂＤｏｎｅが真であれば、ある成分の全ての符号化過程を終え、次の成分を符号化してｂＤｏｎｅが偽であれば、次の段階の符号化のためにＳ７００段階から再び行う。
【０１４２】
図１８は、SuccessiveQuantizationQAAC関数により多数のシンボルを符号化する過程を説明する図面であって、入力された符号化されるシンボルを０，１，２，３，４，及び９であるとした時の符号化過程を示している。
【０１４３】
図１１をさらに参照すれば、符号化装置は、入力されたキー値データをいずれもエントロピ符号化してビットストリームを生成すれば、符号化されたキー値データを復号化する時に必要な情報をキー値ヘッダ符号化器３６０においてキー値ヘッダ情報として符号化し、全ての生成されたキー値データビットストリームに加えて出力する（Ｓ７３０）。
【０１４４】
キー値ヘッダ符号化器３６０は、符号化すべきキー値データを入力されてキー値データの数及びキー値データの桁数を符号化する。また、キー値データの量子化ビットサイズを符号化し、ｘ、ｙ及びｚの各成分に対して全ての量子化値が同じであるか否か（例えば、ｙ及びｚ成分のキー値データは変わるものの、ｘ成分の変化が極めて僅かであって、量子化されたｘ成分のキー値データがいずれも同じである場合）をチェックし、その結果をフラグとして符号化する。
【０１４５】
例えば、もし、Ｘ成分の量子化値がいずれも同じではなければ、Ｘ成分の符号化に用いられたＤＰＣＭ演算の種類（例えば、循環ＤＰＣＭ演算であるか、それとも予測循環ＤＰＣＭ演算であるか）、及びＸ成分のキー値データをUnaryACCにより符号化するか否かを各々フラグとして符号化する。また、キー値データをUnaryACCにより符号化しないならば、ｘ成分の符号化ビットサイズ、及びｘ成分の符号化開始キー値データをキー値ヘッダとして符号化する。
【０１４６】
一方、ｙ及びｚの量子化されたキー値データがｘと同様にいずれも同じではなければ、ｙ及びｚ成分のキー値データに対しても前記ｘ成分のキー値ヘッダ情報と同じ情報をヘッダとして符号化する。
【０１４７】
また、Ｘの全ての量子化値が同じではなく、エントロピ符号化する時にUnaryACCを用いず、且つ、エントロピ符号化されるべきＸ成分の開始キー値データを表わすインデックスが１であれば、第１の量子化されたキー値データをイントラデータとして符号化し、このような過程をＹ及びＺ成分に対して繰り返す。
【０１４８】
キー値ヘッダ符号化器３６０は、正規化器３００から最大範囲を有する成分をチェックしてnWhichAxisパラメータの値を、最大成分がＸであれば０として、Ｙであれば１として、そしてＺであれば２として各々設定し、nWhichAxis及びｘ＿ｍｉｎ，ｙ＿ｍｉｎ，ｚ＿ｍｉｎを実数符号化器３３０を用い、キーヘッダとして符号化する。
【０１４９】
以上、本発明の好ましい実施の形態によるキー値データ符号化方法及び符号化方法について説明した。
【０１５０】
以下では、本発明の好ましい第４の実施の形態による符号化方法及び装置をコンピュータプログラムにて具現した例について説明する。
【０１５１】
本発明の符号化器は、後述するビットストリームの形に位置インタポレータを符号化する。典型的なプログラムコード及びパラメータの意味は、本発明への理解のために、ＳＤＬ言語の形で以下に記載した。
【０１５２】
まず、圧縮された位置インタポレータをプログラムコードにより具現した例を示す図３７を参照し、プログラムコードに用いられたパラメータの意味について説明すれば、図示の部分は、圧縮された位置インタポレータのビットストリームを読み込むための第１のクラスであって、PoslKeyValueHeader及びPoslKeyValueよりなる。PoslKeyValueHeaderは、PoslKeyValueを復号化するためのヘッダ情報を含み、PoslKeyValueclassicは、ビットストリームから各値の位置インタポレータに関するキー値データを読み込む。qf＿start()関数は、ビットストリームからAAC符号化された部分を読み込むに先立って算術復号化器を初期化するのに用いられる。
【０１５３】
PoslKeyValueHeaderのプログラムコードを示す図３８を参照し、PoslKeyValueHeaderについて説明する。
【０１５４】
PoslKeyValueHeaderに記載されたパラメータの意味を説明すれば、nNumKeyValueCodingBitは、nNumberOfKeyValueのビットサイズを示し、nNumberOfKeyValueは、キー値データの数を示し、nKVQBitは、キー値データの量子化ビットサイズを示す。
【０１５５】
x＿Keyvalue＿flag、y＿Keyvalue＿flag及びz＿Keyvalue＿flagは３成分ｘ、ｙ及びｚが同一の量子化された値を有するかを示し、xKVDigitキー値データの最大重要桁数を示し、xKVDPCMOrder＿X、xKVDPCMOrder＿Y及びxKVDPCMOrder＿Zは、各キー値データの成分に対して用いられたＤＰＣＭ演算を示す。もし、ＤＰＣＭ演算が用いられたならば、０がフラグとして設定され、予測ＤＰＣＭ演算が用いられたならば、１がフラグとして設定される。
【０１５６】
一方、blsUnaryAAC＿X、blsUnaryAAC＿Y及びblsUnaryAAC＿Zは、UnaryAAC関数がエントロピ符号化に用いられた旨を示し、nKVCodingBit＿X、nKVCodingBit＿Y及びnKVCodingBit＿Zは、各キー値データの成分に対する符号化ビットを示し、nStartIndex＿X、nStartIndex＿Y及びnStartIndex＿Zは、各成分軸の開始インデックスを示し、firstKV＿X、firstKV＿Y及びfirstKV＿Zは、最初に量子化されたキー値データのｘ、ｙ及びｚを示す。
【０１５７】
KeyvalueMinMaxクラスのプログラムコードを示す図３９を参照すれば、KeyvalueMinMaxクラスは、キー値データの正規化に用いられた最大値及び最小値を復元する。bUse32Floatは、最大値及び最小値を記憶するために３２ビットの実数が用いられたか否かを示す。bUse32Floatが０であれば、１０進数体系で表わされた実数が用いられた旨を示す。
【０１５８】
nWhichAxisは、最大範囲を有する成分を示す。この実施の形態においては、nWhichAxisが０であればｘ軸を、１であればｙ軸を、そして２であればｚ軸を各々示す。
【０１５９】
bAllSameMantissaDigitFlagは、ｘ、ｙ及びｚの最小値の仮数の桁数がいずれも同じであるか否かを示し、bSameKVDigitFlagは、全ての仮数の桁数がnKVDigitと同じであるか否かを示す。nMantissaDigit＿X、nMantissaDigit＿Y、nMantissaDigit＿Zは、ｘ、ｙ及びｚの最小値の仮数の桁数を各々示す。
【０１６０】
bMaxDigitFlagは、最大値の仮数の桁数がｍａｘの属する成分の最小値の仮数の桁数と異なるか否かを示し、異なれば、最大範囲の仮数の桁数がビットストリームから読み込まれる。
【０１６１】
nMantissaDigit＿Mは、最大値の仮数の桁数を示し、nExponentBitsは、指数値を符号化するのに必要なビット数を示す。bAllSameExponentSignは、ｘ、ｙ及びｚ成分の符号がいずれも同じであるか否かを示し、nExponentSignは、bAllSameExponentSignが真である時、指数の符号を示す。
【０１６２】
fpnMin＿X、fpnMin＿Y、fpnMin＿Z及びfpnMaxは、１０進数体系における実数を示し、これらの値はfloating-point numberにおいて説明されるように復号化される。また、fpnMin＿X、fpnMin＿Y、fpnMin＿Zは、各成分の最小値を示し、fMaxは、最大範囲を有する成分のキー値データの最大値を示す。
【０１６３】
以下、図４０を参照し、floating-point numberのプログラムコードについて説明する。
【０１６４】
floating-point numberは、実数を１０進数体系で表わし、nMantissaは、１０進数体系の実数の仮数値を示し、nExponentは、０進数体系の実数の指数値を示し、nSignは、前記値の符号を示す。また、nExponentSignは、１０進数体系の実数の指数の符号を示す。
【０１６５】
以下、図４１を参照し、PoslKeyValueのプログラムコードについて説明する。
【０１６６】
示されたPoslKeyValueクラスに記載されたパラメータの意味を説明すれば、KeyValue＿X、KeyValue＿Y及びKeyValue＿Zは、位置インタポレータにおける各成分の配列を示し、もし、nStartIndex＿Xが１として設定されたならば、KeyValue＿X[0]は、PolKeyValueHeaderclassicのfirstKV＿Xにより埋め込まれる。もし、nStartIndex＿Xが０として設定されたならば、KeyValue＿X[0]は、算術復号化器を用いてビットストリームから復号化される。同じ方式により、KeyValue＿Y[0]及びKeyValue＿Z[0]が決められる。これらは、decodeUnarySQAACまたはdecodeSQAAC関数を通じてビットストリームから算術復号化される。
【０１６７】
コンテキストモデルkVXSignContext、kVYSignContext及びkVZSignContextは、KeyValue＿X、KeyValue＿Y及びKeyValue＿Zの符号を復号化するのに用いられ、これらコンテキストモデルdecodeUnarySQAACまたはdecodeSQAAC関数に送られる。
【０１６８】
MaxValueContext、FoundContext及びNotFoundContextは、キー値の絶対値をエントロピ復号化するのに用いられ（例えば、kVXMaxValueContext、kVXFoundContext及びkVXNotFoundContextは、KeyValue＿Xの復号化に用いられる）、decododeSQAAC関数に送られる。
【０１６９】
コンテキストモデルkVXUContext、kVYUContext及びkVZUContextは、keyValue＿X、keyValue＿Y及びkeyValue＿Zの復号化に用いられ、decodeUnaryAAC関数に送られる。
【０１７０】
以上、本発明の好ましい実施の形態によるＤＰＣＭ演算装置、及び符号化装置並びに方法について説明した。
【０１７１】
以下では、図１９及び図２０を参照し、前記ＤＰＣＭ演算装置により生成された差分データを復元して入力された量子化されたデータを出力する逆ＤＰＣＭ演算装置について説明する。
【０１７２】
図１９は、本発明の逆ＤＰＣＭ演算装置の構成を示すブロック図であり、図２０は、逆ＤＰＣＭ演算過程を説明するフローチャートである。
【０１７３】
図１９を参照すれば、本発明の逆ＤＰＣＭ演算装置は、入力された差分データに対して差分データの範囲を広める逆循環量子化演算を行い、逆ＤＰＣＭ演算を行い、量子化されたデータを出力する逆循環ＤＰＣＭ演算部１０２０、入力された差分データに対して差分データの範囲を広める逆循環量子化演算を行い、逆予測ＤＰＣＭ演算を行い、量子化されたデータを出力する逆予測循環ＤＰＣＭ演算部１０３０、及び入力差分データに対して行われたＤＰＣＭ演算の種類に応じて、入力差分データを前記逆循環ＤＰＣＭ演算部１０２０または前記逆予測循環ＤＰＣＭ演算部１０３０に出力する判断部１０１０を備える。
【０１７４】
図２０を参照し、本発明の逆ＤＰＣＭ演算過程について説明する。
【０１７５】
逆ＤＰＣＭ演算される差分データは、判断部１１３２に入力され、判断部１１３２は、入力された差分データに対して行われたＤＰＣＭ演算の種類をチェックし、いかなる逆ＤＰＣＭ演算を行うかを決め、入力された差分データを逆循環ＤＰＣＭ演算部１０２０または逆予測循環ＤＰＣＭ演算部１０３０に出力する（Ｓ１０１０）。
【０１７６】
まず、逆循環ＤＰＣＭ演算部１０２０の処理過程について説明すれば、ｎＭａｘが入力されたデータの量子化範囲の最大値であるとした時、逆循環ＤＰＣＭ演算部１０２０は、
2006050609.tif 000025
【０１７７】
【数１１】
2006050609.tif 000026
【０１７８】
その後、逆循環ＤＰＣＭ演算部１０２０は、
2006050609.tif 000027
逆ＤＰＣＭ演算されたＢ値を求める（Ｓ１０３０）。
【０１７９】
【数１２】
2006050609.tif 000028
【０１８０】
前記式において、ｎをデータの数であるとした時、ｉは、１ないしｎ−１の整数である。
【０１８１】
逆循環ＤＰＣＭ演算部１０２０は、Ａ値が０以上ｎＭａｘ以下であれば、
2006050609.tif 000029
Ａ値が０未満ｎＭａｘ超過であれば、Ｂ値を出力する（Ｓ１０４０）。
【０１８２】
一方、逆予測循環ＤＰＣＭ演算部１０３０は、
2006050609.tif 000030
【０１８３】
2006050609.tif 000031
【０１８４】
【数１３】
2006050609.tif 000032
【０１８５】
【数１４】
2006050609.tif 000033
【０１８６】
前式において、ｎがデータの数を示すとした時、ｉは、１ないしｎ−１の整数である。
【０１８７】
逆循環ＤＰＣＭ演算部１０２０は、Ａ値が０以上ｎＭａｘ以下であれば、
2006050609.tif 000034
Ａ値が０未満ｎＭａｘ超過であれば、Ｂ値を出力する（Ｓ１０４０）。
【０１８８】
以下、図２１を参照し、本発明の好ましい第１の実施の形態による復号化装置について説明する。
【０１８９】
第１の実施の形態による復号化装置は、本発明のＤＰＣＭ演算装置を用いた前記本発明の第１の実施の形態の符号化装置を用い、入力データを符号化したビットストリームを復号化する。
【０１９０】
図２１に示された復号化装置は、エントロピ復号化器１１２０、前記逆ＤＰＣＭ演算装置により具現される逆ＤＰＣＭ処理部１１３０、及び逆量子化器１１４０を備える。
【０１９１】
エントロピ復号化器１１２０は、入力されたビットストリームをエントロピ復号化して差分データを生成し、差分データを逆ＤＰＣＭ処理部１１３０に出力する。
【０１９２】
逆ＤＰＣＭ処理部１１３０は、前述したように、入力された差分データに対して行われたＤＰＣＭ演算の種類をチェックし、差分データに対して逆循環ＤＰＣＭ演算または逆予測循環ＤＰＣＭ演算を行い、生成された量子化されたデータを逆量子化器１１４０に出力する。
【０１９３】
逆量子化器１１４０は、所定の量子化ビット数に応じて入力された量子化されたデータを逆量子化し、復元されたデータを出力する。
【０１９４】
以下、図２２及び図２３を参照し、本発明の第２の実施の形態による復号化装置について説明する。第２の実施の形態による復号化装置は、本発明の正規化器により正規化された複数成分のデータを符号化したビットストリームを復号化する。
【０１９５】
図２２に示された第２の実施の形態による復号化装置は、入力されたビットストリームをエントロピ復号化して差分データを出力するエントロピ復号化器１１２０、差分データに対して逆ＤＰＣＭ演算を行い、量子化されたデータを出力する逆ＤＰＣＭ演算部１４０／１１３０、量子化されたデータを逆量子化し、正規化されたデータを出力する逆量子化器１１４０、及びビットストリームから復号化された各成分のデータの最小値及び最大範囲を有する成分の最大値を入力され、前記正規化されたデータの最大範囲を求め、最大範囲に基づき複数成分の量子化されたデータを逆正規化する逆正規化器１１５０を備える。
【０１９６】
本発明の第２の実施の形態による復号化器に備えられたエントロピ復号化器１１２０、逆ＤＰＣＭ演算部、及び逆量子化器１１４０の構成及び処理過程は、前述した本発明の第１の実施の形態による復号化器の構成と類似しているため、その詳細な説明は省略する。
【０１９７】
以下、第１の実施の形態とは異なる構成の逆正規化器１１５０の処理過程を図２３を参照して説明する。
【０１９８】
逆正規化器１１５０は、入力ビットストリームから復号化された、正規化に用いられた最大値ｆＭａｘ、各成分の最小値ｆＭａｘ＿Ｘ、ｆＭａｘ＿Ｙ及びｆＭａｘ＿Ｚ、最大値が含まれた成分情報nWhichAxis、及び符号化形式情報bUse32Floatを入力される（Ｓ１２１０）。
【０１９９】
逆正規化器１１５０は、符号化形式情報bUse32Floatをチェックし、入力された最大値ｆＭａｘ及び各成分の最小値が３２ビット単位に符号化されなかったならば、下記式１５により最大範囲Rangemaxを計算し、３２ビット単位に符号化されたならば、入力された最大値を最大範囲として決める（Ｓ１２２０）。
【０２００】
【数１５】
2006050609.tif 000035
【０２０１】
最大範囲が決められれば、逆正規化器１１５０は、最大範囲に基づき各成分のデータを下記式１６により逆正規化する（Ｓ１２３０）。
【０２０２】
【数１６】
2006050609.tif 000036
【０２０３】
前式において、ｎは、データの数を示す。
【０２０４】
以下、図２４及び図２５を参照し、本発明の好ましい第３の実施の形態による復号化装置及び復号化方法について説明する。第３の実施の形態による復号化装置は、本発明の符号化方法を用いて３次元アニメーション客体の位置情報を示す位置インタポレータのキー値データを符号化したビットストリームを復号化する。
【０２０５】
図２４を参照すれば、第３の実施の形態による復号化装置は、復号化に必要な情報をビットストリームから復号化するキー値ヘッダ復号化器１１１０、入力されたビットストリームをエントロピ復号化して差分データを出力するエントロピ復号化器１１２０、差分データに対して逆循環ＤＰＣＭ演算及び逆予測循環ＤＰＣＭ演算を行い、量子化されたキー値データを出力する逆ＤＰＣＭ処理部１１３０、量子化されたキー値データを逆量子化し、正規化されたキー値データを出力する逆量子化器１１４０、キー値ヘッダ復号化器から各成分のキー値データの最小値及び最大値を入力され、各成分の最小値及び最大範囲を有する成分の最大値を２進数体系の実数に変換して逆量子化器１１４０に出力する実数復号化器１１６０、及び実数復号化器から各成分のキー値データの最小値及び最大範囲を有する成分の最大値を入力され、キー値データを逆正規化する逆正規化器１１５０を備える。
【０２０６】
以下、キー値データの復号化方法を説明したフローチャートである図２５をさらに参照し、第３の実施の形態による復号化方法について説明する。
【０２０７】
符号化されたキー値データのビットストリームがエントロピ復号化器１１２０及びキー値ヘッダ復号化器１１１０に各々入力されれば、まず、キー値ヘッダ復号化器１１１０は、入力されたビットストリームから復号化に必要なヘッダ情報を抽出して復号化し、復号化されたヘッダ情報をエントロピ復号化器１１２０、逆ＤＰＣＭ処理部１１３０、及び逆量子化器１１４０に各々出力する（Ｓ１３００）。
【０２０８】
一方、エントロピ復号化器１１２０は、入力されたビットストリームをエントロピ復号化し、差分データを逆ＤＰＣＭ処理部１１３０に出力する（Ｓ１３２０）。
【０２０９】
エントロピ復号化過程を説明するフローチャートである図２６を参照すれば、ビットストリームがエントロピ復号化器１１２０に入力される（Ｓ１３２１）。図２９は、エントロピ復号化器に入力されて復号化される符号化されたキー値データの順序を示す。
【０２１０】
エントロピ復号化器１１２０は、入力されたビットストリームに含まれたある成分（例えば、Ｘ成分）のキー値データの量子化された値がいずれも同じであるか否かをチェックし（Ｓ１３２２）、いずれも同じであれば、その成分の全てのシンボルをキー値ヘッダ復号化器１１１０から入力された最小値（例えば、ｆＭｉｎ＿Ｘ）として設定して復号化する（Ｓ１３２３）。
【０２１１】
エントロピ復号化器１１２０は、キー値データの量子化された値がいずれも同じではなければ、キー値データがUnaryAAC関数により符号化されたか否かをチェックし（Ｓ１３２４）、UnaryAAC関数により符号化されたならば、UnaryAAC関数を用いて復号化する（Ｓ１３２５）。
【０２１２】
UnaryAAC関数は、ビットストリームから１が読み込まれるまで０を読み込み、読み込まれた０の数を絶対値に変換した後、１が読み込まれたビットの次の符号ビットを読み込んで復号化された値を出力する。
【０２１３】
キー値データがUnaryAAC関数により符号化されなかったならば、エントロピ復号化器１１２０は、SuccessiveQuantizationAAC関数を用いて入力されたビットストリームを復号化する（Ｓ１３３０）。
【０２１４】
図２７を参照し、エントロピ復号化器１１２０がSuccessiveQuantizationAAC関数を用い、ある成分のキー値データを符号化したビットストリームを復号化する過程について説明する。
【０２１５】
エントロピ復号化器１１２０は、全てのシンボルの符号をビットストリームから復号化し、最大値ｎＭａｘを復号化した後、
2006050609.tif 000037
初期化する（Ｓ１３３１）。
【０２１６】
その後、エントロピ復号化器１１２０は、復号化すべき第１のキー値データを設定（i=nStartIndex）し、ｂＤｏｎｅを真として設定する（Ｓ１３３２）。
【０２１７】
エントロピ復号化器１１２０は、シンボルを復号化するために、下記の第Ｓ１３３３段階ないしＳ１３４３段階を繰り返す。
【０２１８】
まず、エントロピ復号化器１１２０は、
2006050609.tif 000038
が同じであるか否かをチェックする（Ｓ１３３３）。
【０２１９】
復号化範囲の最大値及び最小値が同じであれば、復号化されるべきシンボルの値を範囲の最大値（または、最小値）として決め（Ｓ１３３４）、同じではなければ、ｂＤｏｎｅを偽として設定し、シンボルの復号化範囲の中間値ｎＭｉｄを下記式１７により更新する（Ｓ１３３５）。
【０２２０】
【数１７】
2006050609.tif 000039
【０２２１】
エントロピ復号化器１１２０は、復号化に用いる確率モデルを決めるために、
2006050609.tif 000040
真であれば、FoundContextを用いてビットストリームを復号化し（Ｓ１３３７）、偽であれば、notFoundContextを用いてビットストリームを復号化する（Ｓ１３３８）。
【０２２２】
ビットストリームから１ビットを復号化したエントロピ復号化器１１２０は、読み込まれたビットが１であるか否かをチェックし（Ｓ１３３９）、１ではなければ、復号化範囲の最大値を中間値に取り替え（Ｓ１３４０）、読み込まれたビットが１であれば、復号化範囲の最小値を中間値に取り替えた後、
2006050609.tif 000041
【０２２３】
エントロピ復号化器１１２０は、復号化インデックスを１だけインクリメントし（Ｓ１３４２）、ある成分の全てのキー値データに対して現在段階の復号化が行われたか否かをチェックした後（Ｓ１３４３）、復号化すべきシンボルがさらにあれば、Ｓ１３３３段階ないしＳ１３４２段階を繰り返す。
【０２２４】
一方、ある成分の全てのキー値データに対して現在段階の復号化が行われたならば、エントロピ復号化器１１２０は、復号化されるべき次の段階がさらにあるか否かをチェックし（Ｓ１３４４）、さらにあれば、第Ｓ１３３２段階ないし第Ｓ１３４３段階を繰り返す。ある成分のキー値データをいずれも復号化したエントロピ復号化器は、他の成分のキー値データを復号化する。
【０２２５】
図２４及び図２５をさらに参照すれば、エントロピ復号化器１１２０により復号化されたキー値データの差分データは、逆ＤＰＣＭ処理部１１３０に入力され、符号化する時に行われたＤＰＣＭ演算の種類により逆循環ＤＰＣＭ演算または逆予測循環ＤＰＣＭ演算が行われる（Ｓ１３５０）。逆循環ＤＰＣＭ演算及び逆予測ＤＰＣＭ演算過程は、キー値データの各成分に対して行われるという点を除けば、上述した逆ＤＰＣＭ演算装置の演算過程と同じである。
【０２２６】
逆ＤＰＣＭ処理部１１３０は、
2006050609.tif 000042
を逆量子化器１１４０に出力し、逆量子化器１１４０は、
2006050609.tif 000043
をキー値ヘッダ復号化器１１１０から入力された量子化ビットnKeyValueQBitsで逆量子化する（Ｓ１３７０）。ｎをキー値ヘッダ復号化器１１１０から入力された復号化されるべきキー値データの数であるとした時、逆量子化器１１４０の逆量子化過程は、下記式１８で表わされる。
【０２２７】
【数１８】
2006050609.tif 000044
【０２２８】
逆量子化器は、全ての成分に対して逆量子化を行って正規化されたデータを生成し、正規化された各成分のキー値データを逆正規化器１１５０に出力する。
【０２２９】
逆正規化器１１５０は、実数復号化器から入力された情報を用い、正規化されたキー値データを逆正規化する。
【０２３０】
図２８をさらに参照し、正規化されたデータの逆正規化過程について説明する。
【０２３１】
実数復号化器１１６０は、キー値ヘッダ復号化器１１１０から逆正規化に用いられる最大値ｆＭａｘ、各成分の最小値ｆＭｉｎ＿Ｘ、ｆＭｉｎ＿Ｙ及びｆＭｉｎ＿Ｚ、最大値が含まれた成分情報nWhichAxis、及び符号化形式情報bUse32Floatを入力される（Ｓ１３８２）。
【０２３２】
実数復号化器１１６０は、前記式９に記載された関係に基づき入力された、１０進数体系で表わされた最大値及び最小値を２進数体系の実数に変換し、入力された情報と、変換された最大値及び最小値を逆正規化器１１５０に出力する（Ｓ１３８４）。
【０２３３】
逆正規化器１１５０は、符号化形式情報bUse32Floatをチェックし、入力された最大値ｆＭａｘ及び最小値が３２ビット単位に符号化されなかったならば、前記式１５に基づき最大範囲Rangemaxを計算し、３２ビット単位に符号化されたならば、入力された最大値ｆＭａｘを最大範囲として決める（Ｓ１３８６）。
【０２３４】
最大範囲が決められれば、逆正規化器１１５０は、最大範囲に基づき各成分のキー値データを前記式１６に基づき逆正規化する（Ｓ１３８８）。
【０２３５】
以上、本発明の好ましい実施の形態による復号化装置及び復号化方法を説明した。一方、上述した第３の実施の形態による復号化装置をプログラムコードにて具現した一例を図４２ないし図４５に示す。
【０２３６】
まず、逆循環ＤＰＣＭ演算をＣ＋＋の形のプログラムコードにて具現した例を図４２に示す。一方、逆予測循環ＤＰＣＭ演算をＣ＋＋の形のプログラムコードにて具現した例を図４３に示す。
【０２３７】
前記逆循環ＤＰＣＭ演算及び逆予測循環ＤＰＣＭ演算は、どちらも量子化範囲内の値を選択する逆循環量子化ルーチンを含む。
【０２３８】
以下、エントロピ復号化器（適応的な算術復号化器）をＣ＋＋の形のプログラムコードにて具現した例を図４４及び４５に各々示す。ここで、qf＿decodeは、ビットストリームから１ビットを読み込む関数を示す。
【０２３９】
本発明はまた、コンピュータにて読取り可能な記録媒体にコンピュータにて読取り可能なコードとして具現可能である。コンピュータにて読取り可能な記録媒体は、コンピュータシステムによって読取り可能なデータが記憶されるあらゆる種類の記録装置を含む。コンピュータにて読取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フレキシブルディスク、光データ記憶装置などがあり、また、キャリアウェーブ（例えば、インターネットを通じた伝送）の形で具現されるものも含む。また、コンピュータにて読取り可能な記録媒体は、ネットワークにより結ばれたコンピュータシステムに分散され、分散方式によりコンピュータにて読取り可能なコードが記憶されて実行できる。今まで本発明についてその好ましい実施の形態を中心として説明した。本発明が属する技術分野における通常の知識を有した者は、本発明が本発明の本質的な特性から逸脱しない範囲において変形された形態で具現できることが理解できるであろう。よって、開示された実施の形態は限定的な観点ではなく、説明的な観点からら考慮されるべきである。本発明の範囲は、以上の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にあるあらゆる違いは、本発明に含まれたものとして解釈されるべきである。
【図面の簡単な説明】
【０２４０】
【図１】従来のデータ符号化及び復号化装置の構成を示すブロック図である。
【図２】本発明のＤＰＣＭ演算装置の構成を示すブロック図である。
【図３】本発明のＤＰＣＭ演算方法を説明するフローチャートである。
【図４】本発明のＤＰＣＭ演算装置を用いたデータ符号化装置の構成を示すブロック図である。
【図５】図４に示された符号化装置の処理過程を説明するフローチャートである。
【図６】量子化誤差を最小化する符号化装置の構成を示すブロック図である。
【図７】量子化誤差を最小化する方法を説明するフローチャートである。
【図８】複数の成分よりなる入力データを正規化して符号化する符号化装置の構成を示すブロック図である。
【図９】図８に示す符号化装置による正規化方法を説明するフローチャートである。
【図１０】本発明の好ましい実施の形態により位置インタポレータのキー値データを符号化する符号化装置の構成を示すブロック図である。
【図１１】図１０に示す符号化装置によるキー値データの符号化方法を説明するフローチャートである。
【図１２】図１０に示された実数符号化器の処理過程を説明するフローチャートである。
【図１３】図１０に示された実数符号化器の処理過程を説明するフローチャートである。
【図１４】本発明の好ましい実施の形態によるエントロピ符号化器の処理過程を説明するフローチャートである。
【図１５】本発明の好ましい実施の形態によるエントロピ符号化器の処理過程を説明するフローチャートである。
【図１６】図１４のＳ６８３段階の処理過程を示す図面である。
【図１７】図１５に示す処理過程を例示する図面である。
【図１８】図１５に示す処理過程を例示する図面である。
【図１９】本発明の好ましい実施の形態による逆ＤＰＣＭ演算装置の構成を示すブロック図である。
【図２０】本発明の好ましい実施の形態による逆ＤＰＣＭ演算方法を説明するフローチャートである。
【図２１】本発明の逆ＤＰＣＭ演算装置を用いた復号化装置の構成を示すブロック図である。
【図２２】本発明の逆正規化器を用いた復号化装置の構成を示すブロック図である。
【図２３】本発明の逆正規化器の処理過程を説明するフローチャートである。
【図２４】本発明の好ましい実施の形態によるキー値データ復号化装置の構成を示すブロック図である。
【図２５】本発明の好ましい実施の形態によるキー値データ復号化方法を説明するフローチャートである。
【図２６】図２５の第Ｓ１３２０段階の詳細フローチャートである。
【図２７】図２６の第Ｓ１３３０段階の詳細フローチャートである。
【図２８】図２５の第Ｓ１３８０段階の詳細フローチャートである。
【図２９】本発明のエントロピ復号化器に入力されて処理されるビットストリームの順序を示す図面である。
【図３０】本発明の単純なる予測ＤＰＣＭ演算を行った結果を示す図面である。
【図３１】本発明の差分データを調整した修正された予測ＤＰＣＭ演算結果を示す図面である。
【図３２】本発明の予測循環ＤＰＣＭ演算の過程で量子化されたデータを示す図面である。
【図３３】本発明の予測循環ＤＰＣＭ演算の過程で、図３２３２に示した量子化されたデータに対してＤＰＣＭ演算を行った結果を示す図面である。
【図３４】本発明の予測循環ＤＰＣＭ演算の結果を示す図面である。
【図３５】位置インタポレータのキーデータを示す図面である。
【図３６】位置インタポレータのキー値データを示す図面である。
【図３７】本発明の好ましい実施の形態による復号化過程において、ビットストリームを読み込む過程のうち、圧縮された位置インタポレータをプログラムコードにて具現した例を示す図面である。
【図３８】本発明の好ましい実施の形態による復号化過程において、ビットストリームを読み込む過程のうち、PosIKeyValueHeaderのプログラムコードを示す図面である。
【図３９】本発明の好ましい実施の形態による復号化過程において、ビットストリームを読み込む過程のうち、KeyvalueMinMaxのプログラムコードを示す図面である。
【図４０】本発明の好ましい実施の形態による復号化過程において、ビットストリームを読み込む過程のうち、floating-point numberのプログラムコードを示す図面である。
【図４１】本発明の好ましい実施の形態による復号化過程において、ビットストリームを読み込む過程のうち、PosIKeyValueのプログラムコードを示す図面である。
【図４２】本発明の好ましい実施の形態による復号化過程における逆循環ＤＰＣＭ演算をプログラムコードにて具現した例を示す図面である。
【図４３】本発明の好ましい実施の形態による復号化過程における逆予測循環ＤＰＣＭ演算をプログラムコードにて具現した例を示す図面である。
【図４４】本発明の好ましい実施の形態によるエントロピ復号化器をプログラムコードにて具現した例を示す図面である。
【図４５】本発明の好ましい実施の形態によるエントロピ復号化器をプログラムコードにて具現した例を示す図面である。
【図１】
2006050609.tif 000045
【図２】
2006050609.tif 000046
【図３】
2006050609.tif 000047
【図４】
2006050609.tif 000048
【図５】
2006050609.tif 000049
【図６】
2006050609.tif 000050
【図７】
2006050609.tif 000051
【図８】
2006050609.tif 000052
【図９】
2006050609.tif 000053
【図１０】
2006050609.tif 000054
【図１１】
2006050609.tif 000055
【図１２】
2006050609.tif 000056
【図１３】
2006050609.tif 000057
【図１４】
2006050609.tif 000058
【図１５】
2006050609.tif 000059
【図１６】
2006050609.tif 000060
【図１７】
2006050609.tif 000061
【図１８】
2006050609.tif 000062
【図１９】
2006050609.tif 000063
【図２０】
2006050609.tif 000064
【図２１】
2006050609.tif 000065
【図２２】
2006050609.tif 000066
【図２３】
2006050609.tif 000067
【図２４】
2006050609.tif 000068
【図２５】
2006050609.tif 000069
【図２６】
2006050609.tif 000070
【図２７】
2006050609.tif 000071
【図２８】
2006050609.tif 000072
【図２９】
2006050609.tif 000073
【図３０】
2006050609.tif 000074
【図３１】
2006050609.tif 000075
【図３２】
2006050609.tif 000076
【図３３】
2006050609.tif 000077
【図３４】
2006050609.tif 000078
【図３５】
2006050609.tif 000079
【図３６】
2006050609.tif 000080
【図３７】
2006050609.tif 000081
【図３８】
2006050609.tif 000082
【図３９】
2006050609.tif 000083
【図４０】
2006050609.tif 000084
【図４１】
2006050609.tif 000085
【図４２】
2006050609.tif 000086
【図４３】
2006050609.tif 000087
【図４４】
2006050609.tif 000088
【図４５】
2006050609.tif 000089