JP3965360B2 - 位置インタポレータの符号化/復号化方法、及び装置 - Google Patents
位置インタポレータの符号化/復号化方法、及び装置 Download PDFInfo
- Publication number
- JP3965360B2 JP3965360B2 JP2002382761A JP2002382761A JP3965360B2 JP 3965360 B2 JP3965360 B2 JP 3965360B2 JP 2002382761 A JP2002382761 A JP 2002382761A JP 2002382761 A JP2002382761 A JP 2002382761A JP 3965360 B2 JP3965360 B2 JP 3965360B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- key
- path
- value
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
- H04N19/25—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with scene description coding, e.g. binary format for scenes [BIFS] compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
- H04N19/126—Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
本発明は、3次元アニメーションデータの符号化及び復号化に関する。具体的に、本発明は、アニメーション経路の位置情報を表わす位置インタポレータの符号化/復号化方法、及び装置に関する。
【0002】
【従来の技術】
キーフレームに基づくアニメーション方式は、コンピュータにより生成された3次元アニメーションを表現するための最も基本的な技術の一つである。キーフレームに基づくアニメーションにおいて、多数のキーフレーム間に位置するフレームがアニメーションを構成し、キーフレーム間に位置するフレームは補間により満たされる。
【0003】
MPEG−4 BIFS(Binary Format for Scene)及びVRML(Virtual Reality Modelling Language)などの国際マルチメディア標準は、インタポレータノードを用いたキーフレームに基づくアニメーションを支援する。
【0004】
MPEG−4 BIFS及びVRMLには各種のインタポレータがあるが、そのうち代表的なものが、スカラーインタポレータ、位置インタポレータ、座標インタポレータ、回転インタポレータ、法線インタポレータ及び色インタポレータである。各インタポレータの種類、機能及び特徴は、下記下1に示す。
【表1】
【0005】
前記表1に記載されたインタポレータの一つである位置インタポレータは、キーフレームに基づくアニメーション方式においてアニメーション経路の位置情報を表わすものであって、キー及びキー値フィールドよりなる。
キーフィールドは、(−∞、+∞)の範囲においてキーフレームが位置する時間を不連続的な数字で表わす。キー値フィールドは、各々のキーが表わす時間における客体の位置情報を表わし、x、y及びzの3成分を有する。
従って、キー値フィールドは、キーフィールドと同数のキー値を含む。
【0006】
位置インタポレータの一例が図1(a)、図1(b)に示してある。
図1(a)は、キーデータを示し、図1(b)は、キー値データを示している。
【0007】
MPEG−4 BIFS及びVRMLは線形補間を用いるため、線形インタポレータを用いてスムーズで且つ自然なアニメーションを具現するためには、極めて多量のキーデータ及びキー値データが要される。
また、このようにスムーズで且つ自然なアニメーションを貯蔵または伝送するためには、大容量の貯蔵装置及び長時間が必要である。
従って、これらインタポレータの貯蔵及び伝送のためには、インタポレータを圧縮することが効果的である。
【0008】
MPEG−4 BIFSにおいては、インタポレータノードを符号化して復号化する方法として、PMFC(Predictive MF Coding)と呼ばれる方法がある。
【0009】
図2は、MPEG−4 BIFSのPMFCの符号化器及び復号化器の構造を示す図面である。
図2に示された従来の符号化装置のように、PMFC方法は、量子化器、DPCM(Differential Pulse Code Modulation)及びエントロピ符号化器を用いて位置インタポレータのキー及びキー値データを符号化する。
【0010】
量子化器及びDPCMモジュールはキー及びキー値データの冗長性を除去し、DPCMモジュールの出力はエントロピ符号化器に出力される。しかし、この方法は、通常のDPCM演算により得られた差分データをエントロピ符号化するために符号化効率が高くない。また、エントロピ符号化器の制限により高画質のアニメーションが提供できない。
【0011】
【発明が解決しようとする課題】
本発明が解決しようとする技術的な課題は、高い圧縮率及び高画質のアニメーションを提供し得る位置インタポレータの符号化/復号化方法、及び装置を提供するところにある。
本発明が解決しようとする他の技術的な課題は、本発明の位置インタポレータの符号化及び復号化装置が高画質を維持しつつ位置インタポレータを符号化及び復号化可能に、元の位置インタポレータと復号化された位置インタポレータとの誤差を測定する方法、及びこれを用いて入力された位置インタポレータの分節点を抽出し、符号化に必要なデータの量を減らす分節点の抽出方法を提供するところにある。
【0012】
【課題を解決するための手段】
前記技術的な課題を達成するために、本発明に係る位置インタポレータ符号化装置は、入力位置インタポレータよりなる第1のアニメーション経路と、第1のアニメーション経路から抽出された分節点により生成される第2のアニメーション経路との誤差を所定の臨界値以下にする最小数の分節点を第1のアニメーション経路から抽出し、抽出された分節点に含まれたキーデータ及びキー値データを出力する分節点抽出部と、分節点抽出部より入力されたキーデータを符号化するキー符号化器と、分節点抽出部より入力されたキー値データを符号化するキー値符号化器と、を備える。
【0013】
また、前記技術的な課題を達成するために、本発明に係る位置インタポレータの符号化装置は、キーデータ及びキー値データよりなるアニメーション経路を一定の時間間隔を有する所定数の区間にサンプリングし、リサンプリングされたキーデータ及びキー値データを含む位置インタポレータを出力するリサンプリング部と、リサンプリング部より入力されたキーデータを符号化するキー符号化器と、リサンプリング部より入力されたキー値データを符号化するキー値符号化器と、を備えることが好ましい、
【0014】
さらに、前記技術的な課題を達成するために、本発明に係る位置インタポレータの復号化装置は、入力ビットストリームからキーデータを復号化するキーデータ復号化器と、入力ビットストリームからキー値データを復号化するキー値データ復号化器と、復号化されたキー値データ及び復号化されたキー値データから線形補間されたキー値データを復号化されたキーデータと合成して位置インタポレータを生成するインタポレータ合成器と、を備える。
【0015】
一方、前記技術的な課題を達成するために、本発明に係る位置インタポレータの符号化方法は、(b)位置インタポレータよりなる第1のアニメーション経路と、第1のアニメーション経路から抽出された分節点により生成される第2のアニメーション経路との誤差を所定の臨界値以下にする最小数の分節点を第1のアニメーション経路から抽出して符号化するキーデータ及びキー値データを生成する段階と、(d)(b)段階において抽出されたキーデータを符号化するキー符号化段階と、(e)(b)段階において抽出されたキー値データを符号化するキー値符号化段階と、を含む。
【0016】
また、前記技術的な課題を達成するために、本発明に係る位置インタポレータの符号化方法は、(b)位置インタポレータよりなるアニメーション経路を一定の時間間隔を有する所定数の区間にサンプリングし、リサンプリングされたキーデータ及びキー値データを含む位置インタポレータを生成する段階と、(d)(b)段階において生成されたキーデータを符号化するキー符号化段階と、(e)(b)段階において生成されたキー値データを符号化するキー値符号化段階と、を含むことが好ましい。
【0017】
さらに、前記技術的な課題を達成するために、本発明に係る位置インタポレータの復号化方法は、(a)入力ビットストリームからキーデータを復号化する段階と、(b)入力ビットストリームからキー値データを復号化する段階と、(c)復号化されたキー値データ及び復号化されたキー値データから線形補間されたキー値データを復号化されたキーデータと合成して位置インタポレータを生成する段階と、を含む。
【0018】
一方、前記技術的な課題を達成するために、本発明に係る位置インタポレータよりなる経路の分節点を線形近似化を用いて抽出する方法は、(a)元の経路の開始点及び終了点に対応する経路点を抽出する段階と、(b)抽出された経路点を除いた経路点のうちいずれか一つを選択し、残りの経路点を選択された経路点から線形補間する段階と、(c)元の経路と、補間された経路点により生成された経路との誤差を計算する段階と、(d)(b)及び(c)段階を選択されていない全ての経路点に対して行い、誤差が最小となる経路点を抽出する段階と、(e)(d)段階において抽出された経路点を含む抽出された経路点よりなる経路と元の経路との誤差を所定の臨界値と比較し、(b)ないし(d)段階を繰り返し行う段階と、を含む。
【0019】
さらに、前記技術的な課題を達成するために、本発明に係る複数の経路点よりなる第1及び第2の経路間の誤差を計算する方法は、(a)経路点に含まれる一つの成分データを基準として、第1及び第2の経路が互いに同じ経路点を有するように第1及び第2の経路上に経路点を挿入する段階と、(b)基準成分データに基づき、経路点に対応するように経路の区間を分割する段階と、(c)各区間の誤差を計算する段階と、(d)全ての区間の誤差が計算されたかを判断して誤差を正規化する段階と、を含む。
【0020】
【発明の実施の形態】
以下、添付した図面に基づき、本発明の好ましい実施の形態による位置インタポレータの符号化装置について説明する。
本発明の好ましい実施の形態による符号化装置の構成を示すブロック図である図3を参照すれば、本発明の符号化装置は、分析器40、キーデータ符号化器200、キー値データ符号化器300、及びヘッダ符号化器400を備える。
【0021】
本発明の好ましい実施の形態による符号化方法を示すフローチャートである図4を参照すれば、符号化されるべき位置インタポレータは分析器40に入力され(S300)、分析器40は、位置インタポレータを構成するx、y及びz成分のキー値データの第1のアニメーション経路から符号化すべきキーデータ及びキー値データを各々抽出して、キーデータはキーデータ符号化器200に出力し、キー値データはキー値データ符号化器300に出力する(S320)。
【0022】
キーデータを受け取ったキーデータ符号化器200は、キーデータを所定の量子化ビット数で量子化し、量子化されたキーデータに対して所定のDPCM演算を行って差分データを求めた後、差分データをエントロピ符号化する(S340)。
また、キー値データを受け取ったキー値データ符号化器300は、キー値データを所定の量子化ビット数で量子化し、量子化されたキーデータに対して所定のDPCM演算を行って差分データを求めた後、差分データを符号化する(S360)。
【0023】
一方、ヘッダ符号化器400は、キーデータ符号化器200及びキー値データ符号化器300から復号化に必要な情報を受け取って符号化する(S380)。
以下、分析器40、キーデータ符号化器200、及びキー値データ符号化器300の各々の構成を示す図面に基づき、各々の構成及び処理過程について詳細に説明する。
【0024】
図5は、本発明の好ましい第1の実施の形態による分析器40の構成を示すブロック図である。
以下、分析器40が符号化されるべきキーデータ及びキー値データを抽出する過程はキー値データのx、y、及びz成分の各々に対して行われ、説明の便宜のために、一つの成分のキー値データ及びこのキー値データに対応するキーデータに対する場合のみについて説明する。
【0025】
図5を参照すれば、本発明の好ましい第1の実施の形態による分析器40は、入力位置インタポレータによる第1のアニメーション経路を一定の時間間隔を有する所定数の区間にサンプリングし、キー符号化器、キー値符号化器及びヘッダ符号化器に出力するリサンプリング部43と、第1のアニメーション経路と、第1のアニメーション経路から抽出された分節点により生成される第2のアニメーション経路との誤差を所定の臨界値以下にする最小数の分節点を第1のアニメーション経路から抽出してキーデータ符号化器、キー値データ符号化器及びヘッダ符号化器に出力する分節点抽出部42、及び入力位置インタポレータを外部入力信号に基づきリサンプリング部43または分節点抽出部42に出力する選択部41を備える。
【0026】
また、分節点抽出部42は、線形補間部42a、誤差計算部42b、及び判断部42cを備える。
【0027】
図8は、本発明の好ましい第1の実施の形態による分析器40の処理過程を示すフローチャートである。
図8を参照すれば、選択部41は、外部より位置インタポレータ及び設定信号を受け取る(S325)。外部より入力される設定信号は、符号化すべきキーデータ及びキー値データを生成する方法を設定する信号並びに符号化すべきキーデータ及びキー値データを生成するモードを設定する生成信号を含む。
【0028】
まず、キーデータ及びキー値データを生成するモードについて説明する。
分析器40は、入力された位置インタポレータのキーフレームを減らして全体的に符号化すべきキーデータ及びキー値データの量を減らす。
このような分析器40は、外部より入力されたモード設定信号に基づきアニメーション経路維持モード(path−preserving mode)及びアニメーションキー維持モード(key−preserving mode)のうちいずれか一方のモードを有する。
【0029】
まず、経路維持モードは、位置インタポレータがアニメーション経路の補間を記述するためにのみ用いられ、キーフレームのランダムアクセスが必要ない場合である。経路維持モードにおいては、効率的な符号化のために、所定の誤差範囲内において経路に含まれる位置インタポレータのキーデータ及び対応するキー値データを除去することが認められる。
【0030】
一方、キー維持モードは、MPEG−4のBIFS命令語(例えば、replace、delete、insertなど)を用いてキーフレームにランダムアクセスが必要な場合である。キー維持モードにおいては、インタポレータのキーデータの数がそのまま維持される。経路維持モード及びキー維持モードの詳細については、後述する。
【0031】
図8をさらに参照すれば、選択部41は、外部より入力された生成モードに基づき符号化すべきキー及びキー値データの生成モードを選択する。また、選択部41は、入力された生成モードがキー維持モードである場合には入力された位置インタポレータを分節点抽出部42に出力し、入力された生成モードが経路維持モードである場合には入力された生成方法の設定信号に基づき位置インタポレータをキー及びキー値データの生成に必要な情報と共にリサンプリング部43または分節点抽出部42に出力する(S330)。
【0032】
具体的に、リサンプリングにより符号化すべきキー及びキー値データを生成する場合には、位置インタポレータと共にサンプリングすべきキーデータの数(すなわち、時間間隔)及び生成モードをリサンプリング部43に出力し、分節点抽出により符号化すべきキー及びキー値データを生成する場合には、元の経路と分節点抽出により生成された経路との臨界誤差値及び生成モードを共に出力する。
【0033】
選択部41より入力位置インタポレータを受け取ったリサンプリング部43は、入力位置インタポレータにより形成されたアニメーション経路を所定の時間間隔にてサンプリングしてサンプリングされたキーデータ及びキー値データを生成し、選択部41より入力位置インタポレータを受け取った分節点抽出部42は、入力位置インタポレータにより形成された経路と抽出された分節点により形成された経路との誤差を所定の臨界値以下にする最小数の分節点を抽出する(S335)。
【0034】
図9は、本発明の好ましい実施の形態によるリサンプリング部43の処理過程を示すフローチャートである。
【0035】
図9に基づき、リサンプリング過程について説明する。
リサンプリング部43は、選択部41から位置インタポレータ及びリサンプリングすべきキーデータの数mを受け取る(S502)。この時、リサンプリングすべきキーデータの数はユーザによって任意に設定されるか、あるいは予め定義された所定の値となる。
リサンプリング部43は、入力位置インタポレータにより形成された元の経路の最初及び最後の経路点を選択し、リサンプリングすべきキーデータの初期値iを1として設定する(S504)。
【0036】
その後、リサンプリング部43は、所定の時間間隔をもって第i番目のキーデータを生成する(S506)。
元のキーデータ及びリサンプリングされたキーデータを示す図6Aを参照すれば、入力位置インタポレータのキーデータはキーフレームの時間軸上の位置を表わすために単調増加するが、図11に示されたように、その間隔が一定ではない。
【0037】
従って、図11に示されたように、リサンプリング部43は、第S504段階において選択された最初及び最後の経路点を表わすキーデータ間の差を受け取ったリサンプリングすべきキーの数で割って時間間隔を求め、求められた一定の時間間隔をもってキーデータをリサンプリングする。
【0038】
リサンプリング部43は、リサンプリングにより生成されたキーデータに対応するキー値データを元のアニメーション経路において線形補間して生成する(S508)。すなわち、リサンプリングされたキーデータより時間軸上の後方に位置するキーデータに対応するキー値データ及びリサンプリングされたキーデータより時間軸上の前方に位置するキーデータに対応するキー値データを用い、リサンプリングされたキー値データを線形補間してキー値データを生成する。
【0039】
リサンプリング部43は、補間によりキーデータ及びキー値データをリサンプリングした後、入力されたリサンプリングすべき全てのキーデータに対してキーデータ及びキー値データのリサンプリングが行われたか否かをチェックし、全てのキーデータ及びキー値データがリサンプリングされるまで第S506及びS508段階を繰り返す(S510)。
【0040】
図10は、本発明の好ましい第1の実施の形態による分節点の抽出方法を示すフローチャートであり、図13ないし図18は、位置インタポレータ経路から分節点を抽出する過程を段階別に示す図面である。
【0041】
図5、図10、及び図13ないし図18を参照すれば、本発明の好ましい第1の実施の形態による分節点抽出部42の線形補間部42aは、選択部41より位置インタポレータ及び臨界誤差値ethを受け取る(S520)。
受け取られた位置インタポレータよりなる経路は、図13に示された通りである。
【0042】
線形補間部42aは、図14に示されたように、入力された位置インタポレータよりなる経路の最初の経路点Q0及び最後の経路点Qnを抽出し、カウンタiを1として設定する(S522)。
【0043】
線形補間部42aは、最初の経路点Q0及び最後の経路点Qn間の経路点のうちいずれか一つを任意にまたは順次的に選択し(S524)、選択されていない経路点を選択された経路点から線形補間し、選択された経路点及び補間された経路点を誤差計算部42bに出力する(S526)。
【0044】
誤差計算部42bは、抽出された経路点及び補間された経路点により形成される侯補経路と元の経路との誤差eを計算して判断部42cに出力する(S528)。経路間の誤差を計算する方法については、後述する。
【0045】
誤差計算部42bは、選択されていない全ての経路点に対して誤差が計算されたか否かをチェックし、誤差が計算されていない経路点があれば、第S524段階ないし第S528段階を繰り返し行い、全ての抽出されていない点に対して元の経路との誤差を計算する(S530)。
【0046】
図15は、前記第S524段階及びS530段階を示す図面であって、線形補間部42aはまず、k1時間に当たるキーデータに対して分節点Q1を抽出し、Q1及びQn間の経路点を線形補間して候補1経路を生成し、誤差計算部42bは、元の経路と候補1経路との誤差e1を計算した。
【0047】
その後、前記過程を繰り返して線形補間部42aは分節点Qkを抽出し、Q1及びQk間の経路点とQk及びQn間の経路点とを線形補間して侯補k経路を生成し、誤差計算部42bは、元の経路と候補k経路との誤差ekを計算する。
一方、抽出されていない全ての経路点に対して誤差が計算されれば、全ての経路点に対する誤差は判断部42cに入力され、判断部42cは、誤差が最小となる経路点を抽出し、カウンタiを1だけインクリメントする(S532)。
【0048】
判断部42cは、第S532段階において選択された分節点による誤差eが入力された所定の臨界誤差値ethより大きく、カウンタが最初の経路点Q0及び最後の経路点Qn間の経路点の数に当たるキーデータの数nより大きいかをチェックする(S534)。
【0049】
もし、計算された誤差が臨界誤差値より小さければ、符号化に必要な分節点がいずれも抽出されたことを意味し、カウンタが表わす選択された分節点の数がnに同じであれば、全ての元の経路上の全ての経路点として抽出されたことを意味するため、分節点の抽出過程は終わる。
【0050】
しかし、選択された分節点の数がnより小さく、且つ、抽出された分節点による誤差が臨界誤差値より大きければ、分節点をさらに抽出しなければならないため、選択された分節点を線形補間部42aに出力して第S524段階ないしS532段階を繰り返し行う。
以下、分析器40の選択部41に入力された符号化すべきキーデータ及びキー値データ生成モードが経路維持モードである場合に、リサンプリング部43及び分節点抽出部42からキーデータ符号化器200及びキー値データ符号化器300に出力されるデータについて説明する。
【0051】
リサンプリング部43は、サンプリングされたキーデータ及びキー値データをいずれも符号化すべきキー及びキー値データとしてキーデータ符号化器200及びキー値データ符号化器300に出力する。
【0052】
以下、図8に基づき、生成モードに基づき分節点抽出部42から出力されるキーデータ及びキー値データについて説明する。
図8に示されたように、最終的に抽出された分節点が0、3、6及び8であるとした時、経路維持モードにおいて分析器40は、分節点0、3、6及び8に当たるキーデータ及びキー値データのみを出力する。
【0053】
しかし、キー維持モードにおいて分析器40は、0ないし8の全てのキーデータを符号化すべきデータとして出力し、分節点0、3、6及び8に当たるキー値データはキー選択フラグと共に出力する。キー選択フラグは、下記表2に示す。
【0054】
【表2】
【0055】
以上、本発明の好ましい第1の実施の形態による分析器40の構成について説明した。本発明の技術分野における当業者であれば、前記第1の実施の形態による分析器40の構成のうち選択器41及びリサンプリング部43を省略して分節点抽出部42だけで分析器40を構成でき、また、分析器40の構成のうち選択器41及び分節点抽出部42を省略してリサンプリング部43だけで分析器40を構成できるということが分かるであろう。
【0056】
以下、図6に基づき、本発明の好ましい第2の実施の形態による分析器40について説明する。
図6を参照すれば、第2の実施の形態による分析器40は、入力位置インタポレータを受け取ってリサンプリングするリサンプリング部45、及びリサンプリングされた位置インタポレータの分節点を抽出して符号化すべきキーデータ及びキー値データを出力する分節点抽出部46を備える。
【0057】
また、分節点抽出部46は、前記第1の実施の形態の分節点抽出部46と同様に、線形補間部46a、誤差計算部46b、及び判断部46cを備える。
【0058】
本発明の第2の実施の形態による分析器40に位置インタポレータが入力されれば、リサンプリング部45は、外部より入力されたモード設定信号に基づき、入力された位置インタポレータにより形成される第1のアニメーション経路を一定の時間間隔を有する所定数の区間にリサンプリングする。
【0059】
リサンプリング部45は、リサンプリングされたキーデータ及びキー値データよりなる位置インタポレータを分節点抽出部46の線形補間部46aに出力する。
【0060】
線形補間部46aは前記図5Cの第S522段階ないし第S526段階を行い、位置インタポレータを補間して誤差計算部46bに出力し、誤差計算部46bは第S528及び第S530段階を行い、補間された位置インタポレータにより形成される第2のアニメーション経路と第1のアニメーション経路との誤差を計算する。判断部46cは、誤差が最小となる経路点を選択し、選択された経路点による誤差が臨界誤差値ethより大きいか否か、及び全ての経路点が選択されたか否かをチェックし、符号化すべきキーデータ及びキー値データを生成する。
【0061】
従って、第2の実施の形態による分析器40に含まれたリサンプリング部45及び分節点抽出部46の動作は、第1の実施の形態のリサンプリング部45及び分節点抽出部46の動作とほとんど類似している。
但し、分節点抽出部46がリサンプリング部45から出力されたキー及びキー値データよりなる位置インタポレータを入力され、リサンプリング部45より入力された位置インタポレータにより形成されるアニメーション経路に対して分節点の抽出を行うという点だけで、前記第1の実施の形態の符号化すべきキー及びキー値データ選択過程とは異なる。
【0062】
以下、図7に基づき、本発明の好ましい第3の実施の形態による分析器40について説明する。
図4Cを参照すれば、第3の実施の形態による分析器40は、入力位置インタポレータを入力され、位置インタポレータにより形成される第1のアニメーション経路から分節点を抽出してキーデータ及びキー値データを出力する分節点抽出部48、及び分節点抽出部48より入力されたキーデータ及びキー値データよりなる位置インタポレータにより形成される第2のアニメーション経路を所定の時間間隔をもってリサンプリングするリサンプリング部49を備える。また、分節点抽出部48は、前記第1の実施の形態の分節点抽出部48と同様に、線形補間部48a、誤差計算部48b、及び判断部48cを備える。
【0063】
第3の実施の形態による分節点抽出部48は、前記第1の実施の形態と同様に、キーデータ及びキー値データを抽出してリサンプリング部49に出力する。
リサンプリング部49は、入力されたキーデータ及びキー値データよりなる位置インタポレータにより形成された経路を所定の一定の時間間隔をもってリサンプリングして符号化すべきキーデータ及びキー値データを出力する。リサンプリング部49の機能は、前記第1及び第2の実施の形態のリサンプリング部49の機能と類似しているため、その詳細な説明は省く。
【0064】
前記第1ないし第3の実施の形態による分析器40から出力されたキーデータ及びキー値データは、各々キーデータ符号化器200及びキー値データ符号化器300に入力される。
【0065】
以下、図20ないし図29に基づき、本発明の好ましい実施の形態によるキーデータ符号化器200について説明する。
【0066】
図20は、本発明の好ましい実施の形態によるキーデータ符号化器の構成を示す図面である。
本発明のキーデータ符号化器200は、線形キー符号化器900、量子化器910、DPCM処理部920、シフト部930、フォルド処理部940、DND処理部950及びエントロピ符号化器960を備える。
【0067】
線形キー符号化器900は、全体キーデータの範囲においてキーデータが線形に増える領域を選択して符号化する。量子化器910は、量子化誤差を最小化する方法を用いて入力されたキーデータを量子化する。DPCM処理部920は、量子化されたキーデータを受け取り、キーデータの差分データを生成する。
【0068】
シフト部930は、全ての差分データから頻度数が最も高い差分データを引く。フォルド処理部940は、全ての差分データを正数の領域または負数の領域に移動させる。DND処理部950は、ディバイド、ディバイド−アップ、及びディバイド−ダウンの3種の演算を選択的に行い、キーデータの差分データの範囲を狭める。キーデータに対するエントロピ符号化器960は、ビットプレイン単位に差分データを符号化するSignedAAC及びUnsignedAAC関数を用いて差分データを符号化する。
【0069】
以下、図22及び図23をさらに参照し、本発明の好ましい実施の形態によるキーデータ符号化器について説明する。
図22及び図23は、本発明のキーデータ符号化方法を示すフローチャートである。
【0070】
キーデータが符号化器に入力されれば、キーデータの総数及び各キーデータの桁数などの情報は、ヘッダ符号化器400に入力されて符号化され、入力されたキーデータは線形キー符号化器900において線形キー領域、すなわち、一定の時間間隔をおいてキーフレームが存在してキーデータが同じ差を有し、キーデータが線形に変わる領域の存否を検索し、検索された線形領域を先に符号化する(S9000)。
【0071】
3Dmax、Mayaなどの有名な3次元応用ソフトウェアは、特定の領域が一定の時間間隔を有するキーを用い、キーフレームに基づくアニメーションを生成する。この場合、線形キーデータ領域は、線形領域が始まるキーデータ、終わるキーデータ及び中間に存在するキーフレームの数さえ分かれば簡単にキーデータを符号化できるので、インタポレータにおいて特定領域のキーの符号化のために線形予測を用いることは極めて有用である。
線形予測に用いられる数式は、下記式1の通りである。
【0072】
【数1】
【0073】
ここで、tsは部分的に線形である領域が始まるキーのデータを示し、tEは、部分的に線形である領域が終わるキーのデータを示し、Sは、tsのインデックスを、Eは、tEのインデックスを各々示す。
第S番目のキーデータ及び第E番目のキーデータに対応する特定の領域において前記式1により線形的に予測されたキーデータと実際のキーデータとの誤差は、下記式2により計算できる。
【0074】
【数2】
【0075】
もし、前記式2により計算された誤差値のうち最大誤差値が所定の臨界値以下であれば、tiは[ts,tE]区間及び所定の誤差内において類似線形であると言える。
最大誤差値及び特定の領域が類似線形であるか否かは、下記式3により決められる。
【数3】
【0076】
である。ここで、nBitsは符号化に用いられる符号化ビット数を示す。
【0077】
一旦、線形キー符号化器900は、部分的に線形である領域を見つければ、領域の開始点のキーデータ及び終了点のキーデータは実数変換部905に出力し、線形キー領域に含まれるキーの数はヘッダ符号化器400に出力して符号化する。このように、線形符号化を用いることにより、符号化するデータの量を大いに低減できるということが分かる。
開始キーデータ及び終了キーデータは、実数変換部905において後述する実数変換過程により符号化される。
【0078】
実数変換部905は、開始キーデータ及び終了キーデータを符号化するために2進数の体系で表わされたキーデータを10進数の体系に変換する。
コンピュータは、実数を32ビットの2進数の形で貯蔵する。実数が2進数の形で与えられれば、実数変換部905は、実数を10進数の体系の仮数及び指数に変換する。すなわち、下記式4のように変換される。
【0079】
【数4】
【0080】
例えば、実数12.34をコンピュータにて2進数の形で表わせば、下記の通りである。
【0081】
【0082】
尚、1:符合、2:2進数の体系における仮数、3:2進数の体系における指数である。
この数を前記式4により10進数で表わせば、下記の通りである。
【0083】
尚、1:符号、2:10進数の体系における仮数、3:10進数の体系における指数である。
10進数の体系の仮数及び指数をビットストリームに含めるためには、各々が必要とするビット数を計算しなければならない。まず、指数は−38〜38の範囲の値を有するため、指数は符号を含んで7ビットで表わせる。また、仮数は、桁数に応じて必要なビットの数が決められる。仮数の値及びこれに必要なビット数(但し、符号ビットは除く。)を下記表3に示す。
【0084】
【表3】
【0085】
一方、前記のような過程により検索されて変換された線形キー領域の開始キーデータ及び終了キーデータは、図5及び図6に示されたような符号化過程により符号化され、ヘッダ符号化器400に出力されてビットストリームに貯蔵される。
【0086】
図24及び図25は、実数変換部905が入力された2つの実数を符号化する過程を示す。
図22及び図23を参照し、実数変換部905が変換された実数を符号化する過程について説明する。
【0087】
実数変換部905は、線形キー符号化器900から元のキーデータの桁数(original key digit)Kd、線形領域が始まるキーデータ(Start key)S、線形領域が終わるキーデータ(end key)Eを入力され、前記式4によりキーデータを変換する(S9040)。
【0088】
実数変換部905は、まず、Sを符号化するが、Sの桁数がKdと異なるかを判断し、桁数が異なれば、Sの桁数を求めてヘッダ符号化器400に出力する(S9042)。
【0089】
その後、実数変換部905は、Sの桁数が7より大きければ、所定のビット数を(本発明では、IEEE標準754のfloating−point number方式により32ビット)を用い、Sの桁数がビットストリームに含まれるようにヘッダ符号化器400に出力する(S9043)。
【0090】
一方、Sの桁数が0でなくて7より小さければ、実数変換部905は、Sの符号をヘッダ符号化器400に出力し(S9044)、Sの仮数の絶対値の符号化に必要なビット数を前記表3から求め、求められたビット数として仮数の絶対値をヘッダ符号化器400に出力する(S9045)。
【0091】
その後、Sの指数を求め、符号をヘッダ符号化器400に出力し、指数を所定のビット数として(本発明の実施の形態では6ビット)ヘッダ符号化器400に出力する(S9046)。このように、キーデータの変換により、ビットストリームに含まれるビット数は大幅に減る。
【0092】
一方、Sの桁数が0であれば、開始キーデータの符号化過程は終わり、終了キーデータを変換するための過程へ進む。なぜならば、桁数が0であれば、実数は0を意味するため、それ以上の符号化過程が不要であるからである。
【0093】
実数変換部905は、開始キーデータを変換して符号化した後に終了キーデータEを変換する。Eの変換は、Sの変換と同じ過程を繰り返すが、単に、Eの指数がSの指数と同じ値を有するか否かを判別し(S9047)、両値が同じであれば、これを示すフラグビットのみをヘッダ符号化器400に出力し、両値が相異なれば、フラグビット及びEの指数をSの指数と同じ方式によりヘッダ符号化器400に出力する(S9048)。
【0094】
一方、入力キーデータにおいて線形領域を除いたキーデータは量子化器910に入力され、所定の量子化ビットサイズであるnKeyQbitにより量子化される。
しかしながら、復号化器において量子化されたキーデータを復号化して用いる時には、元のキーデータと量子化されたキーデータとの誤差により元のキーデータが完全に復元できない。したがって、本発明の量子化器910は、単に入力されるキーデータから最大値及び最小値を求め、求められた値を用いて量子化可能であるだけではなく、量子化誤差最小化部915を含んで、量子化誤差が最小化可能に修正された最大値及び最小値を用いて量子化できる。
【0095】
量子化誤差最小化部915は、量子化誤差を最小化するために入力されたデータに対して予め量子化及び逆量子化を行い、量子化の誤差が最小となる量子化の範囲を制御する方法を用いる(S9100)。
【0096】
具体的に説明すれば、固定された量子化に用いられる最大値をMaxとし、調節される量子化に用いられる最小値をMinとした時、Xiを入力値、nQuantBitを量子化に用いられるビットとした時、量子化された入力
【0097】
【数5】
【0098】
誤差の和eiを減らす方法には2種類があるが、一つは誤差の和が最小となるまでMin値を調節することであり、他の一つは、下記の通りである。
【0099】
まず、△xが入力データの基本ステップサイズであり、nが任意の整数であり、iが0平均乱数ノイズであるとした時、入力キーデータシーケンスXiを、Xi=(i+n)△x+εiのように表わされる量子化された値であると仮定する。
【0100】
その後、di=Xi−Xi−1=△x+(εi+εi−1)であるとした時、△’x=E[di]であり、最小値Minは、Max−Δ’X *(2nQuantBit−1)の通りである。
【0101】
このような過程を通じて求められた量子化誤差を最小化するMin値は、Max値及び量子化器910に入力されてキーデータの量子化に用いられる。
量子化誤差が最小となる最大値Max及び最小値Minを受け取った量子化器910は、下記式6を用いてキーデータfKeyiの量子化を行う(S9200)。
【0102】
【数6】
【0103】
ここで、iは、量子化されたキーデータのインデックスを、nQKeyiは、量子化されたデータの整数配列を、fKeyiは、入力キーデータとしての実数配列を、fKeymax及びfKeyminは、量子化誤差最小化部915において受け取られた最大値Max及び最小値Minを、nKeyQbitは量子化ビットサイズを各々示す。
【0104】
一方、前記式6において用いられた関数floor(v)は実数vを入力され、v以下の最大整数を出力する関数である。
一方、本発明の量子化器910は、前記量子化誤差を最小化するアルゴリズムを用いず、簡単に、入力されたキーデータのうち最大値fKeymax及び最小値fKeyminを求めて量子化を行うこともできる。
【0105】
本発明の量子化過程を示す図26を参照し、量子化過程を詳細に説明する。
量子化器910は、キーデータを入力され(S9210)、量子化誤差最小化部915から最大値及び最小値が入力されたか否かをチェックする(S9220)。
量子化器910は、量子化誤差最小化部915から最大値Max及び最小値Minが入力されたならば、量子化に用いる最大値fKeymax及び最小値fKeyminをMax及びMinとして設定し(S9230)、設定された最大値及び最小値を前記実数変換部905に出力する。量子化に用いられる最大値及び最小値は、前記実数変換過程を通じて変換され符号化されてヘッダ符号化器400に出力されることにより、復号化に利用可能に最大値及び最小値をキーヘッダに含める。
【0106】
量子化器910は、量子化誤差最小化部915から入力された値がなければ、入力されたキーデータのうち最初のキーデータfkey0を最小値fKeyminとして、そして最後のキーデータfKeyN−1を最大値fKeymaxとして設定する(S9240)。
その後、量子化器910は、設定された最大値が1より小さく、且つ、最小値が0より大きいか否かを判断し(S9250)、そうでなければ、最大値及び最小値を前記実数変換部905に出力し、前記過程を通じて変換して符号化した後、ヘッダ符号化器400に出力して復号化に利用可能に最大値及び最小値をキーヘッダに含める(S9260)。
【0107】
一方、最大値及び最小値が第S9250段階の条件を満足すれば、最大値及び最小値を復号化に利用可能にキーヘッダデータに含めるか否かを示すフラグをチェックする(S9270)。もし、フラグが最大値及び最小値をキーヘッダに含めるように設定されていれば、前記第S9260段階を行って最大値fKeymax及び最小値fKeyminを符号化した後にヘッダ符号化器400に出力し、そうでなければ、量子化器910は、最大値及び最小値をキーヘッダに含めない。
【0108】
最大値及び最小値をキーヘッダに含めない場合には、キーデータ符号化器及びキーデータ復号化器が互いに最大値を1として、且つ、最小値を0として設定して符号化及び復号化を行うことを規約したケースに当たるため、量子化器910は、最小値fKeyminを0として、そして最大値fKeymaxを1として各々設定する(S9280)。
このように設定された量子化に用いられる最大値及び最小値は、既に復号化器に知られているため、別途にキーヘッダに含めない。
【0109】
一方、量子化器910は、前記過程を通じて設定されたfKeymax及びfKeyminを前記式6に代入して入力されたキーデータを量子化し、量子化されたキーデータをDPCM処理部920に出力する(S9290)。
量子化されたキーデータを受け取ったDPCM処理部920は、所定回数のDPCMを行って最小の散布度が生成される次数及びイントラキーデータをヘッダ符号化器400に出力し、DPCM演算の行われたキーデータの差分データをシフト部930に出力する(S9300)。
【0110】
以下、図6を参照し、DPCM処理過程について説明する。DPCM処理部920は、入力されたキーデータに対してまず所定の回数だけDPCM演算を行い、DPCMが行われた回数はDPCM次数として貯蔵する(S9310)。本発明の好ましい実施の形態では、3回のDPCM演算を行った。
【0111】
その後、DPCM処理部920は、各次数のDPCM演算の結果に対して散布度を計算する(S9320)。この時の散布度を示す統計値として分散、標準偏差、及び四分偏差などが用いられ、本発明の好ましい実施の形態では、四分偏差が散布度として用いられる。
【0112】
各次数のDPCM演算の結果に対する散布度が計算されば、DPCM処理部920は、散布度が最小となるDPCM次数及び該当次数のDPCM結果を選択し、DPCM演算の結果はシフト部930に出力し、DPCM次数、各次数のイントラキーデータ及びその他のDPCM演算において必要な情報はヘッダ符号化器400に出力する(S9330)。但し、本発明の好ましい実施の形態では、キーの数が5より小さければ、1次DPCMのみを行った。例えば、1次DPCMが行われる時には、下記式7を用いてDPCM演算を行った。
【0113】
【数7】
【0114】
ここで、iは、量子化されたキーデータのインデックスを、nQKeyiは整数配列を、そしてiは差分データを各々示す。
一方、DPCM処理部920は、選択されたDPCMの結果、及びDPCMされたキーデータの差分データを符号化する時に必要なビット数を計算し、所定の記憶場所(本発明の実施の形態では、nQStep_DPCM)に貯蔵する(S9340)。
但し、符号化に必要なビット数を計算する段階は、後述する符号化すべきキーデータを選択する段階において行っても良いということは当業者に取って自明である。
【0115】
DPCM結果を受け取ったシフト部930は、入力された差分データのうち頻度数が最も高い差分データ(以下、モードと称する。)を選択して全ての差分データからモードを引くことにより、符号化されるべきデータを0の周りに集中的に分布せしめて符号化に必要なビット数を減らす(S9400)。
【0116】
シフト演算は、量子化された全てのキーデータの差分データからモードnKeyShiftを引くことにより行われる。このようなシフト演算は、下記式8で表わされる。
【0117】
【数8】
【0118】
iは、量子化されたキーデータのインデックスを示し、nQKeyiは、整数配列を示し、nKeyShiftは、モード値を示す。シフト演算が行われた後には、キーデータの差分データのうち頻度数が最も高い差分データは0となるので、符号化に必要なビット数を大幅に低減できる。
【0119】
シフト演算が行われたキーデータは、フォルド処理部940及びDND処理部950に出力され、モード値nKeyShiftは、ヘッダ符号化器400に出力されてキーヘッダに含まれる。
【0120】
シフトされたデータを受け取ったフォルド処理部940は、DND演算を行うための前処理段階としてフォルド演算を行い、フォルド演算されたキーデータをDND処理部950に出力する(S9500)。
フォルド演算は、0を中心として負数領域及び正数領域に様々に分布される差分データを正数領域または負数領域に集中させて差分データの範囲を狭めるためのものであり、この実施の形態では、下記式9によりフォルド演算を行って差分データの分布を正数領域に集中させた。
【0121】
【数9】
【0122】
ここで、iは、量子化されたキーデータのインデックスを示し、nQKeyiは、整数配列を示す。
フォルド演算により、シフトされたキーデータの差分データのうち正数データは正の偶数に、負数のデータは正の奇数に各々変換される。
【0123】
フォルド処理部940は、フォルド演算が行われたデータを符号化する時に必要なビット数を計算して所定の記憶場所nQStep_foldに貯蔵する。
第S9300段階と同じく、符号化に必要なビット数の計算は、後述するエントロピ符号化する差分データを選択する段階において行っても良いということは当業者に取って自明である。
【0124】
一方、フォルド処理部940においてフォルト演算が行われたデータは、DND処理部950に出力される。
DND処理部950は、エントロピ符号化の効率を高めるために、入力されたキーデータの差分データに対してDND演算を所定の回数だけ行ってデータの範囲を狭める(S9600)。
【0125】
以下、図21を参照し、DND処理部950について説明する。
DND処理部950は、DND演算を行うDND演算部952、符号化ビット数に応じてエントロピ符号化すべき差分データを選択する第1の差分データ選択部954、第1の差分データ選択部においてDND演算の行われた差分データが選択されれば、DND演算の行われた差分データに対してシフト−アップ演算を行うシフト−アップ演算部956、及びDND演算された差分データ及びシフト−アップ演算された差分データのうち散布度が小さい差分データを選択してエントロピ符号化器960に出力する第2の差分データ選択部958を備える。
【0126】
まず、DND演算部952において行われるDND演算について説明する。
フォルド演算された差分データがDND演算部952に入力されれば、入力された差分データは半分に分けられ、上位範囲に位置する差分データはディバイド関数によって負数領域に移動する。ディバイド関数は、下記式10のように定義される。
【0127】
【数10】
【0128】
ここで、jは、入力された差分データのインデックスであり、nQKeyjは、整数配列を示し、nKeyMaxは、入力されたフォルド演算された差分データのうち最大値を示す。
差分データの分布が全体差分データが占める範囲の境界領域に集中している場合、DND演算はデータの全体領域を大幅に狭める効果がある。
【0129】
ディバイド演算後に散布度が計算されるが、この場合、最小限の符号化ビットサイズが選択されるように符号化に必要なビットサイズが散布度として用いられる。
ディバイド演算が行われた後、ディバイド演算と類似した他のDND演算のディバイド−アップ演算またはディバイド−ダウン演算が行われるが、行われるべき演算はディバイド演算後のデータの正数側及び負数側の範囲によって決められる。
【0130】
正数側の範囲の方が大きければ、下記式11により定義されるディバイド−ダウン演算が行われる。
【0131】
【数11】
【0132】
一方、負数側の範囲の方が大きければ、下記式12により定義されるディバイド−アップ演算が行われる。
【0133】
【数12】
【0134】
前記式において、jは、量子化されたキーデータのインデックスであり、nQKeyjは、整数配列であり、nQKeyMaxは、nQKeyjの最大値であり、nQKeyMinは、nQKeyjの最小値である。
【0135】
以下、DND演算部952の演算過程を示す図28を参照し、DND演算過程について説明する。
DND演算部952は、フォルド処理部940からキーデータの差分データが入力されれば、入力された差分データのうち最大値nKeyMax及び最小値nKeyMinを求める(S9610)。
その後、DND演算部952は、最大値及び最小値の絶対値を比較し(S9620)、最大値が最小値の絶対値以上であれば、求められた最大値を現在のDND演算次数の最大値として設定する(S9622)。
【0136】
DND演算部952は、DND演算次数が1であるか否かをチェックし(S9624)、次数が1であれば、前記式10に最大値nKeyMaxを代入してDND演算部952に入力された差分データに対してディバイド演算を行う(S9630)。
【0137】
ディバイド演算を行ったDND演算部952は、符号化に必要なビットサイズを求めるための関数getQBitを用い、ディバイド演算を行って狭まった差分データの範囲を符号化するために必要なビットサイズを測定する(S9640)。
その後、現在のDND演算次数が1であれば(S9650)、前記値をDND演算後に最小符号化ビットサイズを示す値nQBitDNDに一旦貯蔵し、DND次数を1だけインクリメントする(S9655)。
【0138】
その後、DND演算部952は、前記過程を再び行うが、第S9624段階において次数が1でなければ、前記式11にnKeyMax値を代入してディバイド−ダウン演算を行う(S9634)。
DND演算部952は、ディバイド−ダウン演算が行われた差分データの符号化に必要なビット数を計算し(S9640)、この値が以前の次数のDND演算により貯蔵された符号化に必要な最小値nQBitDNDより小さければ(S9652)、DND演算後に符号化に必要な最小ビットサイズをこの値に変える(S9658)。
【0139】
一方、第S9620段階において、最小値の絶対値が最大値より大きければ、当該次数の最大値を入力された最小値に更新し(S9623)、最小値を前記式12に代入してディバイド−アップ演算を行う(S9638)。
その後、DND演算部952は、ディバイド−アップ演算の行われた差分データの符号化に必要なビット数を計算し(S9640)、この値が以前の次数のDND演算により貯蔵された符号化に必要な最小値nQBitDNDより小さければ(S9652)、DND演算後に符号化に必要な最小ビットサイズをこの値に変える(S9658)。
【0140】
DND演算部952は、所定の回数となるまで前記過程を繰り返すが、DND演算を行う回数は可変的である。
例えば、この実施の形態は、DND演算を行う回数を7回として設定した。DND演算部952は、符号化に必要な最小ビットサイズnQBitDND及びその時のDND演算された差分データを第1の差分データ選択部954に出力し、その時の次数をヘッダ符号化器400に出力してビットストリームに含める。
【0141】
第1の差分データ選択部954は、シフト演算された差分データ、フォルド演算された差分データ及びDND演算された差分データを入力され、いかなる演算の結果をエントロピ符号化するかを決める。
【0142】
図22及び図23をさらに参照すれば、第1の差分データ選択部954は、DND演算後に符号化に必要な最小ビット数nQBitDNDがDPCM演算後の符号化ビットサイズnQStep_DPMC以上であれば(S9700)、DPCM演算の結果を選択してシフト演算を行った後、シフトされた差分データをエントロピ符号化器960に出力してエントロピ符号化する(S9710)。
【0143】
この場合、DND次数は、−1として設定され、ヘッダ符号化器400に出力されてキーヘッダに含まれる。
しかし、nQBitDNDがDPCM後の符号化ビットサイズより小さいものの、フォルド演算後の符号化ビットサイズ以上であれば(S9720)、第1の差分データ選択部954は、フォルド演算された差分データをエントロピ符号化器960に出力してエントロピ符号化する(S9730)。この場合、DND次数は、0として設定され、ヘッダ符号化器400に出力されてキーヘッダに含まれる。
【0144】
もし、DND演算された後の差分データの符号化ビット数が最小であれば、第1の差分データ選択部954は、DND演算された差分データをシフト−アップ演算部956に出力し、シフト−アップ演算部956は、差分データを入力され、DND演算された差分データに対して第1の散布度を計算すると共に(S9740)、DND演算された差分データに対して下記式13で定義されるシフト−アップ演算を行った後(S9800)、シフト−アップ演算された差分データの第2の散布度を再び計算する(S9810)。
【0145】
【数13】
【0146】
ここで、jは、量子化されたキーデータの差分データのインデックスであり、nQKeyjは、整数配列であり、そしてnKeyMaxは、差分データのうち最大値を示す。
DND演算された差分データ及びシフト−アップ演算された差分データを入力された第2の差分データ選択部958は、第1の散布度及び第2の散布度を比較し(S9900)、シフト−アップ演算後の第2の散布度がDND演算後の第1の散布度より小さければ、シフト−アップ演算が行われた差分データをエントロピ符号化器960に出力してエントロピ符号化し(S9910)、DND演算に用いられた最大値nKeyMax及び最小値nKeyMin、そして、シフト−アップ演算に用いられた最大値nKeyMaxをヘッダ符号化器400に出力してキーヘッダに含める。
【0147】
しかし、DND演算後の第1の散布度がシフト−アップ演算後の第2の散布度より小さければ、第2の差分データ選択部958は、DND演算の行われた差分データをエントロピ符号化器960に出力してエントロピ符号化し(S9920)、DND演算に用いられた最大値nKeyMax及び最小値nKeyMinのみがヘッダ符号化器400に出力される。
【0148】
本発明の好ましい実施の形態では、前記第1及び第2の散布度として標準偏差を用いた。
エントロピ符号化器960は、符号化すべき差分データの性質に応じて2種の関数演算を行って差分データを符号化する。例えば、DPCMが行われてシフト演算が行われた差分データ及びディバイド演算が行われた差分データは、正数及び負数を共に有するため、差分データの符号を含む符号化を行い、フォルド演算された差分データ及びシフト−アップ演算された差分データは正数値のみを有するため、符号を含まない符号化を行う。
【0149】
本発明の好ましい実施の形態では、符号を含む符号化関数としてencodeSignedAAC関数を用い、符号を含まない符号化関数としてencodeUnsignedAAC関数を用いて差分データを符号化する。
【0150】
図29は、encodeSignedAAC関数の一例を示す図面である。図29を参照すれば、入力値が74であり、この値に対する符号化ビット数が8であれば、この値の符号は0であり、この値の2進数は1001010となる。符号及び全てのビットプレインは下記のような過程を通じて符号化される。
【0151】
第1の段階:2進数をMSBからLSBにビットプレイン単位に符号化する。
第2の段階:符号化中に現在符号化されるビットが0でないか否かをチェックする。
第3の段階:もし、最初の0ではない値であれば、2進数の現在符号化ビットを符号化した後に符号を符号化する。
第4の段階:2進数の残りのビットを符号化する。
【0152】
encodeUnsignedAAC関数は、符号無き値に対するコンテキストを用いて適応算術符号化ビットストリームに符号化する。これは、符号コンテキストがあるという点を除ければ、前記encodeUnsignedAAC関数の処理過程と類似している。
【0153】
図30ないし図39は、本発明の好ましい実施の形態による演算が行われた後のキーデータを示す図面である。図30ないし図39において、横軸は各キーデータのインデックスを示し、縦軸はキーデータの値を示す。
【0154】
図30は、本発明の符号化器に入力された元のキーデータを示す図面である。図30に示されたキーデータが量子化器910に出力されて9ビットの量子化ビットで量子化されれば、図31に示されたように、量子化されたキーデータが得られる。量子化されたキーデータに対してDPCMを行えば、図32のように、キーデータの差分データが得られる。
【0155】
その後、量子化されたキーデータの差分データを約7のモード値にシフトすれば、図33に示されたように、キーデータの差分データが得られ、シフトされた差分データにフォルド演算を行えば、図34に示されたように、いずれも正数に変換されたデータが得られる。
フォルドされたデータにDND演算を行ったデータを図35ないし図37に示す。
【0156】
フォルドされたデータに対してまずDND演算のうちディバイド演算を行った後の差分データを図35に示す。示されたように、正数側の範囲は0〜28であり、負数側の範囲は0〜−29であるため、負数側の範囲がより広い。したがって、図35に示されたデータに対してディバイド−アップ演算が行われ、ディバイド−アップ演算の結果を図36に示す。
【0157】
ディバイド−アップ演算によりキーデータの負数側の範囲は正数側の範囲に比べて相当狭まり、DNDの次の次数においてディバイド−アップ演算された差分データに対してディバイド−ダウン演算が行われる。図37は、図36の差分データに対してディバイド−ダウン演算を行った結果を示す図面である。
一方、ディバイド−ダウン演算されたキーデータに対してシフト−アップ演算を行った結果を図38に示す。
【0158】
前記図30ないし図36では、キーデータ及び差分データの範囲が次第に狭まるということが分かる。しかし、シフト−アップ演算結果を示す図38及び図37を比較してみれば、シフト−アップ演算後の符号化されるべき差分データの範囲がより広がったということが分かる。したがって、最終的に符号化すべきキーデータの差分データは、ディバイド−ダウン演算が行われた差分データであることが図39から分かる。
【0159】
一方、ヘッダ符号化器400において符号化されてキーヘッダに貯蔵される情報を説明する。
符号化されるべきキーデータが入力されれば、ヘッダ符号化器400は、入力キーデータからキーデータの桁数及び符号化されるべきキーの総数を入力されて符号化する。その後、ヘッダ符号化器400は、線形キー符号化器900から線形キー符号化された線形キー領域の存否を示す情報及び線形キー領域のキーデータの数を入力され、実数変換部905から実数変換された線形キー領域の開始キーデータ及び終了キーデータを入力される。
【0160】
併せて、実数変換部905が量子化誤差最小化部915から量子化誤差が最小化となる最大値及び最小値を入力されて実数変換した場合には、変換された最大値及び最小値は逆量子化に利用可能に実数変換部905からヘッダ符号化器400に入力されてキーヘッダに含まれる。また、量子化に用いられた量子化ビットサイズもヘッダ符号化器400に入力されてキーヘッダに含まれる。
【0161】
また、ヘッダ符号化器400は、DPCM処理部920からDPCM演算次数及び各次数におけるイントラキーデータを入力され、シフト部930からシフト演算に用いられたモード値を入力され、DND処理部950からシフト−アップ演算が行われたか否か、散布度が最小となるDND次数及び各DND次数における最大値及び最小値を入力される。最後に、ヘッダ符号化器400は、エントロピ符号化器960から符号化に用いられた符号化ビット数を入力されてキーヘッダに符号化する。
【0162】
以下、図40ないし図58に基づき、本発明の好ましい実施の形態によるキー値データ符号化器300及び符号化方法について説明する。
図40は、本発明の好ましい実施の形態によるキー値符号化器300の構成を示すブロック図であり、図43は、キー値データの符号化方法を示すフローチャートである。
【0163】
図40を参照すれば、本発明のキー値データ符号化器300は、入力された各成分のキー値データを最大範囲に基づき正規化する正規化器1300、正規化されたデータを所定の量子化ビットで量子化する量子化器1310、量子化誤差が最小化可能に前記各成分の量子化されたキー値データの最大値及び最小値を調整して出力する量子化誤差最小化部1320、量子化誤差を最小化する最小値及び最大値を10進数体系の実数に変換する実数符号化器1330、量子化されたキー値データに対して差分データ及び予測差分データを求め、前記差分データの範囲を狭める循環量子化演算を行うDPCM演算部1340、及び差分データをエントロピ符号化してキー値データが符号化されたビットストリームを出力するエントロピ符号化器1350を備える。
【0164】
図43をさらに参照し、本発明のキー値データの符号化方法について説明する。
符号化されるべき各成分x、y及びzのデータはまず符号化装置の正規化器1300に入力され(S14000)、正規化器1300は、下記式14を用いて各成分のキー値データの範囲を計算し(S14120)、各成分のキー値データの範囲を比較してキー値データの最大範囲を計算する(S14140)。
【0165】
【数14】
【0166】
その後、正規化器1300は、下記式15を用いて各成分のキー値データを正規化する(S14160)。
【0167】
【数15】
【0168】
前式14及び前式15において、nはデータの数を示し、i=0,1,…,n−1であり、jは、データの成分x、y及びzを示す。
前式15から分かるように、各成分のデータは各成分の最大範囲ではない、全ての成分の最大範囲に基づき正規化される。このような正規化過程を通じて最大範囲を有しない成分のデータのビット冗長性が高まって符号化効率が高まる。
【0169】
正規化器1300は、各成分のキー値データの最小値x_min、y_min及びz_min、全ての成分のキー値データのうち最大値max、最大値がいかなる成分に含まれるかを示す情報nWhichAxis、及び元のキー値データの桁数nKeyValueDigitを後述する実数符号化器1330に出力してキー値ヘッダにおいてビットストリームに含め、正規化されたキー値データは量子化器1310に出力する。
【0170】
一方、正規化器において正規化された各成分x、y及びzのキー値データは量子化器1310に入力され、量子化器1310は、キー値データを下記式16に基づき所定の量子化ビットnQuanBitで量子化する(S14200)。
【0171】
【数16】
【0172】
前記式16のfloor()関数は、入力された実数値を実数値以下の最大整数に変換する関数である。量子化器1310は、量子化されたキー値データをDPCM処理部1340及び量子化誤差最小化部1320に出力する。
【0173】
図41は、本発明の好ましい実施の形態による量子化誤差最小化部1320の構成を示すブロック図である。
図41を参照すれば、本発明の好ましい実施の形態による量子化誤差最小化部1320は、最小誤差値emin、調整最小値min’及び量子化誤差最小化値minminの初期値を設定する初期値設定部1321、調整最小値min’に対して所定の演算を行って調整最小値を更新する調整最小値更新部1323、更新された調整最小値の桁数及び大きさに基づき量子化誤差最小化値minminを逆量子化に用いられる最小値として決める判断部1325、及び更新された調整最小値による量子化誤差値を計算して計算された誤差値が前記最小誤差値より小さい場合、前記調整最小値を量子化誤差最小化値minminに更新し、計算された誤差値を最小誤差値に更新して調整最小値更新部1323に出力する誤差値更新部1327を備える。
【0174】
量子化誤差最小化部1320は、量子化誤差を最小化するために入力されたデータに対して予め量子化及び逆量子化を行い、量子化の誤差が最小となる量子化の範囲を制御する方法を用いる点で、キーデータ符号化器の量子化誤差最小化部915と類似している。
【0175】
以下、図45に基づき、本発明の量子化誤差最小化部1320の処理過程について説明する。
初期値設定部1321は、正規化器1300に入力されるキー値データと同じキー値データを入力され、また、量子化器1310から出力された量子化されたキー値データを入力される(S14320)。
初期値設定部1321は、入力された量子化されたキー値データから最大値max及び最小値minを選択して最小値の桁数を計算し、選択された最大値及び最小値を用いて量子化されたキー値データを逆量子化して量子化誤差eを計算し、計算された量子化誤差eを最小誤差値eminの初期値として設定する(S14340)。
【0176】
また、初期値設定部1321は、入力されたキー値データのうち最小値minから、量子化ステップサイズQuantSpaceを2で割った値を引き、調整最小値min’の初期値を設定し、調整最小値min’の初期値を量子化誤差最小化値minminとして設定し、設定された調整最小値を調整最小値更新部1323に出力する(S14360)。
【0177】
調整最小値更新部1323は、入力された調整最小値に対して所定の演算を行って調整最小値を更新するが、本発明の好ましい実施の形態による調整最小値更新部1323は、下記式17に基づき入力された調整最小値を更新して判断部1325に出力する(S14380)。
【0178】
【数17】
【0179】
判断部1325は、更新された調整最小値min’の桁数を計算して初期値設定部1321において計算された最小値minの桁数と比較し、初期値設定部1321に入力された量子化されたキー値データの最小値minに、所定の量子化ビットサイズQuantSpaceを2で割った値を加えた値と調整最小値の大きさとを比較する(S14400)。
【0180】
比較の結果、更新された調整最小値min’の桁数が量子化されたキー値データの最小値minの桁数より大きいか、更新された調整最小値min’の大きさがmin+QuantSpace/2より大きければ、判断部は、現在貯蔵された量子化誤差最小化値minminを逆量子化に用いる最小値として決めて出力部に出力する(S14420)。
しかし、前記条件をいずれも満足しなければ、判断部は、更新された調整最小値を誤差値更新部1327に出力する。
【0181】
誤差値更新部1327は、更新された調整最小値及び初期値設定部1321において選択された最大値maxを用いて入力された量子化されたキー値データを逆量子化し、量子化誤差eを計算する(S14440)。
【0182】
誤差値更新部1327は、新しく計算された誤差値eを最小誤差値eminと比較し(S14460)、新しく計算された誤差値eが最小誤差値eminより小さければ、新しく計算された誤差値eに最小誤差値eminを更新し、調整最小値に量子化誤差最小化値minminを更新する(S14480)。しかし、新しく計算された誤差値eが最小誤差値eminより大きければ、最小誤差値emin及び量子化誤差最小化値minminを更新せず、第S14380段階から再び行う。
【0183】
一方、上述した過程を通じて検出された量子化誤差を最小化する最小値及び最大値は実数符号化器1330に出力されて復号化に必要な情報を含むヘッダ情報として符号化され、エントロピ符号化器1350により生成されたビットストリームに含まれる。
【0184】
以下、図46に基づき、実数符号化器1330の処理過程S14500について説明する。基本的に、キー値データ符号化装置の実数符号化器1330は、図20に示された実数変換部905とその機能が類似している。
【0185】
まず、実数符号化器1330は、正規化器1300より入力された各成分のキー値データの最小値x_min、y_min及びz_min、全ての成分のキー値データのうち最大値max、最大値がいかなる成分に含まれているかを表わす情報nWhichAxis、及び元のキー値データの桁数nKeyValueDigitを入力される(S14510)。
【0186】
実数符号化器1330は、符号化に必要なビット数を減らして符号化効率を高めるために、入力値のうち2進数体系の実数で表わされた各成分の最小値x_min、y_min及びz_min、及び全ての成分のうち最大値maxを前記式4の関係に基づき10進数体系の実数に変換する(S14520)。
その後、実数符号化器1330は、各成分の最小値の桁数がいずれも同じであるか否かをチェックし(S14530)、もし、同じでなければ、各成分の最小値の桁数をヘッダ符号化器400に出力してキー値ヘッダとして符号化する(S14540)。
【0187】
もし、各成分の最小値の桁数がいずれも同じであれば、これらの最小値の桁数が元のキー値データの桁数とも同じであるかをチェックし(S14550)、同じでなければ、最小値の桁数をヘッダ符号化器400に出力してキーヘッダとして符号化する(S14560)。
以上の過程を通じて各成分の最小値の桁数情報をいずれもキー値ヘッダとして符号化した実数符号化器1330は、最大値情報を符号化するために最大値maxがいかなる成分に含まれているかをチェックし、最大値maxの桁数と最大値が含まれる成分の最小値の桁数とが同じであるか否かをチェックする(S14570)。
【0188】
もし、同じでなければ、最大値maxの桁数をヘッダ符号化器400に出力してキー値ヘッダとして符号化し、同じであれば、桁数が同じであるという旨の状態情報をヘッダ符号化器400に出力する(S14580)。
上述した過程を通じて実数符号化器1330は、変換された実数の仮数に関する情報をキー値ヘッダとして符号化し、後述する過程を通じて指数に関する情報をキー値ヘッダとして符号化する。
【0189】
実数符号化器1330は、10進数体系に変換された各成分の最小値x_min、y_min及びz_min、及び最大値maxの指数の絶対値のうち最大値をチェックし、その値をnMaxExp値として貯蔵して所定のビットでキー値ヘッダとして符号化する(S14590)。
【0190】
その後、実数符号化器1330は、全ての指数の符号が同じであるか否かをチェックし(S14600)、同じであれば、bSameSignExp値を1として貯蔵し、同じ最大値maxまたは最小値の符号をヘッダ符号化器400に出力する(S14610)。
しかし、同じでなければ、bSameSignExp値を0として設定する(S14620)。上述した過程を通じて最小値及び最大値の指数に関する情報がキー値ヘッダとして符号化された。
【0191】
図47を参照すれば、実数符号化器1330は、入力された各成分の最小値及び最大値をキー値ヘッダとして符号化するが、まず、変換された実数の符号を符号化する(S14630)。
【0192】
その後、実数符号化器1330は、前記表2を参照し、各実数の桁数に基づき符号化に必要なビット数を計算し、計算されたビット数だけ仮数をヘッダ符号化器400に出力する(S14640)。
また、実数符号化器1330は、前記表3を参照し、nMaxExp値を符号化するのに必要なビット数を計算し、計算されたビット数だけ指数をヘッダ符号化器400に出力する(S14650)。
【0193】
実数符号化器1330は、前記bSameSignExp値をチェックし(S14660)、指数の符号がいずれも同じであるかをチェックし、同じでなければ、各成分の最小値の符号及び最大値の符号を各々ヘッダ符号化器400に出力して符号化することにより(S14670)、正規化器より入力されたキー値データの最小値及び最大値の符号化過程は終わる。
【0194】
一方、実数符号化器1330は、量子化誤差最小化部1320より各成分の量子化誤差を最小化する最小値及び最大値を入力され、前記過程を通じてキー値ヘッダとして符号化する。
【0195】
図42は、本発明の好ましい実施の形態によるDPCM処理部1340の構成を示すブロック図であり、図48は、本発明の好ましい実施の形態によるDPCM演算方法を示すフローチャートである。
【0196】
図42を参照すれば、本発明のDPCM処理部1340は、入力された量子化されたキー値データに対して通常のDPCM演算を行って差分データを出力するDPCM演算部1342及び入力された差分データに対して差分データの範囲を狭める循環量子化演算を行う循環量子化部1343を備える循環DPCM演算部1341、入力された量子化されたキー値データに対して予測DPCM演算を行って予測差分データを出力する予測DPCM演算部1346及び入力された差分データに対して差分データの範囲を狭める循環量子化演算を行う循環量子化部1347を備える予測循環DPCM演算部1345、及び入力された差分データの大きさに基づき循環DPCM演算部より入力された差分データ及び予測循環DPCM演算部より入力された差分データのうちどちらか一方の差分データを選択して出力する選択部1349を備える。
【0197】
図48をさらに参照し、本発明の好ましい実施の形態によるDPCM演算方法について説明する。
量子化されたキー値データは、循環DPCM演算部1341及び予測循環DPCM演算部1345に各々入力される(S14720)。
まず、循環DPCM演算部1341に入力された量子化されたキー値データを受け取ったDPCM演算部1342は、入力された量子化されたキー値データに対して通常のDPCM演算を行って求めた差分データを循環量子化部1343に出力し、循環量子化部1343は、入力された差分データに対して循環量子化を行う(S14740a)。
【0198】
DPCM演算部1342は、入力された量子化されたキー値データから以前に入力された量子化されたキー値データを引いて差分データを計算する。その後、循環量子化部1343は、計算された差分データを入力されて循環量子化演算を行う。循環DPCM演算部1341の処理過程は、下記式18により表わされる。
【0199】
【数18】
【0200】
前記式18において、nはデータの数を表わす。循環量子化演算については後述する。
一方、予測循環DPCM演算部1345の予測DPCM演算部1346は、入力された量子化されたキー値データに対して予測DPCM演算を行って予測差分データを計算し、循環量子化部1347は、予測差分データに対して循環量子化演算を行う(S14740b)。
【0201】
予測DPCM演算部1346は、現在の量子化されたキー値データから予測データを引いて予測差分データを生成して出力する。具体的に、予測DPCM演算部1346は、現在の量子化されたキー値データに対する予測データを求めるために、量子化された以前のデータからその以前のデータを引いて差分値を求める。その後、求められた差分値を以前の差分データに加えて現在データに対する予測データを計算する。予測DPCM演算部1346は、現在のデータから計算された予測データを引いて現在のデータに対する予測差分データを計算する。
【0202】
但し、予測DPCM演算部1346が計算した予測データは、入力された量子化されたキー値データが有し得る最大範囲を超えられない。すなわち、予測DPCM演算部1346は、予測されたデータが入力された量子化されたキー値データの量子化範囲の最大値を超える場合には、予測データを入力されたデータの量子化範囲の最大値とし、予測データから現在のデータを引いて現在のデータに対する差分データを生成する。
【0203】
もし、予測データが入力されたデータの量子化範囲の最小値より小さければ、現在のデータそのものを予測差分データとして決める(以下、「修正された予測DPCM演算」と称する。)
予測DPCM演算部1346において計算された予測差分データは、循環量子化部1347に入力されて循環量子化演算が行われる。
【0204】
上述した予測循環DPCM演算部1345の演算過程は、下記式19により表わされる。
【0205】
【数19】
【0206】
前記式19において、nがデータの数である時、iは2,3,…,n−1である。
図51は、最大値が1024であり、最小値が0である50個の量子化されたキー値データに対して単純な予測DPCM演算を行った結果を示し、図52は、同じ量子化されたキー値データに対して予測値が最大値を超えるか、あるいは最小値以下である場合、前記式19に基づき差分データを調整した修正された予測DPCM演算の結果を示している。
【0207】
図51及び図52に示されたように、単純なる予測DPCM演算を行った結果、予測差分データの範囲は約3000であることが分かり、修正された予測DPCMを用いた結果予測差分データの範囲は2000以下であるため、修正された予測DPCM演算の結果、より狭い予測差分データの範囲が得られるということが分かる。
【0208】
以下、循環量子化過程について説明する。
図53は、量子化されたデータを示し、図54は、図53に示された量子化されたデータに対してDPCM演算を行った結果を示している。
図54に示されたように、DPCM演算を行った後の差分データの範囲は、DPCM演算が行われる前のデータの範囲の2倍まで広まる。従って、循環量子化演算の目的は、差分データの範囲を入力されたデータの範囲に維持しつつDPCM演算を行うことである。
【0209】
循環量子化演算は、量子化範囲の最大値及び量子化範囲の最小値が互いに連続していると仮定する。従って、もし、連続した量子化された両データ間の線形DPCM結果の差分データが量子化範囲の最大値の半分を超えれば、差分データ値から最大値を引くことにより、差分データ値をより小さい値で表わせる。
【0210】
また、もし、連続した量子化された両データ間の線形DPCM結果の差分データが量子化範囲の最小値の半分より小さければ、差分データ値に最大値を加えることにより、差分データ値をより小さい範囲の値で表わせる。
環量子化は、下記式20のように表わされる。
【0211】
【数20】
【0212】
前記式20において、nQBitsは、量子化に用いられるビットサイズである。図55は、図54に示された差分データに対して循環量子化を適用した結果を示す図面である。
【0213】
図48をさらに参照すれば、循環量子化された差分データ及び予測差分データは選択部1349に出力され、選択部1349は、入力された差分データに対して絶対誤差合計(SAD:Sum of Absolute Difference)演算を行う(S14760)。
【0214】
SAD演算は、入力された値の絶対値をいずれも和する演算であって、選択部1349は、入力された一連の差分データを構成する各々の差分データの絶対値をいずれも和する。また、選択部1349は、入力された一連の予測差分データを構成する各々の予測差分データの絶対値をいずれも和する。
【0215】
その後、選択部1349は、和された絶対値を互いに比較して絶対値がより小さい差分データを最終差分データとして選択して出力する(S14780)。
その理由は、より小さい絶対値の和を有する差分データが全体的にも小さいであろうと予測するからである。例えば、予測差分データをエントロピ符号化する場合、絶対値が小さい方の差分データの符号化に必要なビット数が、絶対値が大きい方の差分データの符号化に必要なビット数より少ないであろうと予測される。
【0216】
従って、このようなSAD演算は差分データを選択するための1方法に過ぎず、選択部は、SAD演算のほかに別の方法により差分データを選択し得るということは当業者にとって自明である。
【0217】
図43をさらに参照すれば、DPCM処理部1340より入力された差分データは、エントロピ符号化器1350においてエントロピ符号化される(S14800)。
【0218】
図49を参照すれば、本発明の好ましい実施の形態のよるエントロピ符号化器1350は、x、y及びzの各成分のキー値データの差分データをエントロピ符号化する。
エントロピ符号化器1350は、入力された各成分の差分データをチェックし、各成分に含まれた量子化された値が同じであるか否か、すなわち、差分データがいずれも0であるかをチェックし、そうであれば、エントロピ符号化過程を終える(S14810)。
【0219】
例えば、3次元アニメーション上において汽車がx成分方向である水平方向に移動する場合、x成分のキー値データは変わるが、残りの成分のキー値データはその変化が僅かであって、量子化すればその値が同じくなる。従って、同じキー値データをいずれも符号化せず、一つのキー値データのみをキー値ヘッダとして符号化することにより、符号化効率を高めることができる。本発明においては、実数符号化器1330を通じて各成分の最小値が符号化されるため、その値を用いることができる。
【0220】
各成分の全ての量子化されたキー値データが同じではなければ、エントロピ符号化器350は、予め設定された値を読み込み(S14820)、UnaryAAC関数を用いて差分データを符号化するか(S14830)、あるいは、SuccesiveQuantizationQAAC関数を用いて入力された差分データをエントロピ符号化する(S14850)。
【0221】
まず、図56を参照し、UnaryAAC関数について説明する。UnaryAAC関数は、符号化すべきシンボルを一連の0に変換した後、前記0が終わった旨を示す1及びシンボルの符号を示す1ビットを用いてシンボルを符号化する。この時、一連の0はシンボルの大きさを示す。
例えば、符号化すべきシンボルが256であれば、UnaryAAC関数は、図56に示されたように、シンボルを256個の0と、0が終わった旨を示す1及びシンボルの符号(正数)を示す0を符号化する。UnaryAAC関数により符号化すべきシンボルのビット冗長性が高まるため、符号化効率が高まる。
【0222】
図46、図57及び図58を参照し、SuccesiveQuantizationQAAC関数の符号化過程について説明する。SuccesiveQuantizationQAAC関数は、量子化の範囲を連続的に定義することにより、各々のシンボルの値を符号化する。
【0223】
図57は、SuccesiveQuantizationQAAC関数によりシンボルを符号化する概念を説明する図面である。図57に示されたように、符号化すべき入力シンボルは1であり、符号化範囲の最小値は0であり、そして最大値は9である。
【0224】
第1段階においてSuccesiveQuantizationQAACは符号化範囲を上位範囲及び下位範囲に分け、符号化すべきシンボル1がいかなる範囲に属するかをチェックする。シンボル1は符号化範囲の下位範囲に属するために0を符号化し、符号化範囲を下位範囲に更新する。すなわち、符号化範囲の最大値を下位範囲の最大値に更新する。従って、第2段階における符号化範囲は、[0,4]となる。
【0225】
第2段階においても、SuccesiveQuantizationQAAC関数は、符号化範囲を上位範囲及び下位範囲に分け、符号化すべきシンボル1がいかなる範囲に属するかをチェックする。シンボル1は符号化範囲の下位範囲に属するために0を符号化し、符号化範囲の最大値を下位範囲の最大値である1に更新する。従って、新しい符号化範囲は、下位範囲である[0,1]に更新される。
【0226】
第3段階において、SuccesiveQuantizationQAAC関数は、符号化範囲を上位範囲である1及び下位範囲である0に分け、符号化すべきシンボル1がいかなる範囲に属するかをチェックする。今度はシンボルが上位範囲である1と同じであるために1を符号化し、符号化範囲の最小値を1に更新する。従って、新しい符号化範囲は[1,1]となり、符号化範囲の最大値及び最小値は同じくなる。符号化範囲の最大値及び最小値が同じくなれば、SuccesiveQuantizationQAAC関数は符号化過程を終える。
【0227】
図50は、本発明のエントロピ符号化器350において、SuccesiveQuantizationQAAC関数を用いて入力された1成分の差分データをエントロピ符号化する過程を説明するフローチャートである。
【0228】
図50を参照すれば、エントロピ符号化器350は、キー値データの差分データ、入力された差分データ(以下、「シンボル」と称する)をエントロピ符号化する時に用いるビット数nQP、量子化された値の第1値がイントラ値に符号化されたか否かを示すnStartIndex及び符号化すべきシンボルの数nを入力される(S14920)。
【0229】
エントロピ符号化器350は、入力された全てのシンボルの符号を符号化した後、入力シンボルをいずれも正数に変換する(S14940)。全ての値を正数に変換する理由は、以降の過程は負数を入力されないからである。
エントロピ符号化器1350は、正数に変換された値のうち最大値を見つけてnMaxとして貯蔵し、それをnQPビット数だけ符号化する(S14960)。
【0230】
エントロピ符号化器350は、シンボルを符号化する符号化範囲を初期化
0段階において検出された最大値nMaxとして設定する。
【0231】
の値はシンボルを符号化する時、確率モデルを変換するために用いられる(S14980)。このフラグは、初期にfalseとして設定され、符号化すべき値が1であれば値をtrueに変え、その以降には符号化に用いる確率モデルが変わる。
【0232】
その後、エントロピ符号化器1350は、符号化すべき各成分の第1差分データを設定し(i=nStarIndex)、各成分の全てのシンボルの符号化が終わった旨を示すフラグnDoneを真として設定する(S15000)。
【0233】
エントロピ符号化器1350は、全てのシンボルの符号化範囲の最大値及び最小値が同じくなるまで次の第S15020段階ないし第S15180段階を繰り返す。(あるシンボルの符号化範囲の最大値及び最小値が同じであるということは、このシンボルの符号化が終わったことを意味するため、全てのシンボルの範囲の最大値及び最小値が同じであるということは、それ以上符号化すべきシンボルが無いということを意味する。)
【0234】
及び最小値が同じであれば、次シンボルの符号化過程へ進み、同じでなければ、現在成分の符号化が終わった旨をbDone値を「偽」として設定して記録する(S15040)。
【0235】
その後、符号化器は、現在シンボルの符号化範囲の中間値を計算し(S15060)、中間値及びシンボルの値を比較する(S15080)。本発明の実施の形態においては、中間値nMidを下記式21を用いて計算した。
【0236】
【数21】
【0237】
比較の結果、シンボルの値が中間値以下であれば、0をビットストリーム
替える(S15100)。
【0238】
これに対し、比較の結果、シンボルの値が中間値以上であれば、1をビッ
中間値に取り替える。この時、現在のシンボルが最初に中間値以上となる場合、すなわち、最初に1がビットストリームとして出力されたならば、符号
5120)。
【0239】
SuccesiveQuantizationQAAC関数において用いる確率モデルは、2つが存在する。一つは、各シンボルが最初に1を出力するまで出力される各ビットをエントロピ符号化するために用いるnotFoundContextであり、もう一つは、各シンボルが最初に1を出力した後の全てのビットをエントロピ符号化するために用いるFoundContextである。
【0240】
このように確率モデルを変える理由は、第1の確率モデルを用いる時、0が出力される確率を高めるためである。0が出力される確率が高まれば、その分エントロピ符号化の効率が高まる。
真であれば、FoundContextを用いて差分データを符号化し(S
用いて差分データを符号化する(S15180)。
【0241】
あるシンボルに対する符号化過程(S15020ないしS15180)が終われば、符号化器はインデックスを1だけインクリメントし(S15200)、全てのシンボルに対して符号化過程が終わったか否かをチェックし(S15220)、符号化すべきシンボルがさらにあれば、第S15020段階から再び行う。
【0242】
ある成分の全てのシンボルに対して符号化過程が終われば、エントロピ符号化器1350はbDoneフラグをチェックして全ての成分に対する符号化過程が終わったか否かをチェックし(S15240)、bDoneが真であれば、全ての符号化過程を終え、bDoneが偽であれば、他の成分のシンボルを符号化するためにS15000段階から再び行う。
【0243】
図18Bは、SuccessiveQuantizationQAAC関数により多数のシンボルを符号化する過程を説明する図面であって、入力された符号化されるシンボルを0,1,2,3,4,及び9であるとした時の符号化過程を示している。
【0244】
図43をさらに参照すれば、符号化装置は、入力されたキー値データをいずれもエントロピ符号化してビットストリームを生成すれば、符号化されたキー値データを復号化する時に必要な情報をヘッダ符号化器400においてキー値ヘッダ情報として符号化し、全ての生成されたキー値データビットストリームに加えて出力する(S15300)。
【0245】
ヘッダ符号化器400は、符号化すべきキー値データを入力されてキー値データの数及びキー値データの桁数を符号化する。また、キー値データの量子化ビットサイズを符号化し、x、y及びzの各成分に対して全ての量子化値が同じであるか否か(例えば、y及びz成分のキー値データは変わるものの、x成分の変化が極めて僅かであって、量子化されたx成分のキー値データがいずれも同じである場合)をチェックし、その結果をフラグとして符号化する。
【0246】
例えば、もし、X成分の量子化値がいずれも同じではなければ、X成分の符号化に用いられたDPCM演算の種類(例えば、循環DPCM演算であるか、それとも予測循環DPCM演算であるか)、及びX成分のキー値データをUnaryACCにより符号化するか否かを各々フラグとして符号化する。また、キー値データをUnaryACCにより符号化しないならば、x成分の符号化ビットサイズ、及びx成分の符号化開始キー値データをキー値ヘッダとして符号化する。
【0247】
一方、y及びzの量子化されたキー値データがxと同様にいずれも同じではなければ、y及びz成分のキー値データに対しても前記x成分のキー値ヘッダ情報と同じ情報をヘッダとして符号化する。
また、Xの全ての量子化値が同じではなく、エントロピ符号化する時にUnaryACCを用いず、且つ、符号化開始キー値データが第1のキー値データであれば、第1のキー値データをイントラデータとして符号化し、このような過程をY及びZ成分に対して繰り返す。
【0248】
ヘッダ符号化器400は、正規化器1300から最大範囲を有する成分をチェックしてnWhichAxisパラメータの値を、最大成分がXであれば0として、Yであれば1として、そしてZであれば2として各々設定し、nWhichAxis及びx_min、y_min、z_minを実数符号化器1330を用い、キーヘッダとして符号化する。また、量子化誤差最小化部1320から各成分の量子化誤差を最小化する最小値及び最大値を実数符号化器から入力され、キー値ヘッダとして符号化する。
【0249】
以上、本発明の好ましい実施の形態によるキー値データ符号化器300及び符号化方法について説明した。
図3及び図4をさらに参照すれば、本発明の符号化器は、キーデータ及びキー値データを符号化した後、ヘッダ符号化器400においてヘッダ情報を符号化した後(S380)、符号化されたキーデータ、キー値データ、及びヘッダを和して位置インタポレータを符号化したビットストリームを出力する。
【0250】
以下、図59ないし図71に基づき、本発明の好ましい実施の形態による位置インタポレータを符号化したビットストリームを復号化する復号化装置及び復号化方法について説明する。
図59は、本発明の好ましい実施の形態による復号化装置の構成を示すブロック図であり、図60は、符号化された位置インタポレータを復号化する方法を示すフローチャートである。
【0251】
図59を参照すれば、本発明の復号化装置は、入力されたビットストリームからキーデータを復号化するキーデータ復号化器1920、入力されたビットストリームからキー値データを復号化するキー値データ復号化器1950、入力されたビットストリームからヘッダ情報を復号化してキーデータ復号化器1920及びキー値データ復号化器1950に出力するヘッダ復号化器1910、及びヘッダ復号化器1910より入力された情報に基づき復号化されたキーデータ及びキー値データを合成して復号化された位置インタポレータを出力する位置インタポレータ合成器1980を備える。
【0252】
図60を参照すれば、図3Aに示された符号化装置により符号化された位置インタポレータは、本発明の符号化装置のキーデータ復号化器1920、キー値データ復号化器1950及びヘッダ復号化器1910に各々入力される(S19000)。
ヘッダ復号化器1910は、入力されたビットストリームからヘッダ情報を復号化してキーデータ符号化器200、キー値データ符号化器300及び位置インタポレータ合成器1980に各々与える(S19100)。
【0253】
キーデータ復号化器1920は、入力されたビットストリームからキーデータをエントロピ復号化し、所定の逆DND演算、逆フォルド演算、逆シフト演算などを行い、復号化されたキーデータを生成して位置インタポレータ合成器1980に出力する。また、キー値データ復号化器1950は、入力されたビットストリームからキー値データをエントロピ復号化し、所定の逆量子化演算及び逆DPCM演算などを行い、復号化されたキー値データを生成して位置インタポレータ合成器1980に出力する(S19200)。
【0254】
位置インタポレータ合成器1980は、ヘッダ復号化器1910より入力されたモード設定信号及びキー選択フラグに基づき入力されたキーデータ及びキー値データを合成し、位置インタポレータを合成して出力する(S19400)。
以下、図61ないし図63に基づき、本発明の好ましい実施の形態によるキーデータ復号化器1920及び復号化方法について説明する。
図61は、本発明の好ましい実施の形態によるキーデータ復号化器1920の構成を示すブロック図である。本発明のキーデータ復号化器は、符号化されたビットストリームを受け取り、復号化されたキーデータに再構成する。
【0255】
本発明のキーデータ復号化器1920は、エントロピ復号化器2060、逆DND処理部2050、逆フォルド処理部2040、逆シフトBU2030、逆DPCM処理部2020、逆量子化器2010、線形キー復号化器2000及び実数逆変換部2005を備える。
【0256】
図62は、本発明の好ましい実施の形態によるキーデータ復号化方法を示すフローチャートである。
まず、入力ビットストリームは、ヘッダ復号化器1910及びエントロピ復号化器2060に入力される。
ヘッダ復号化器1910は、各復号化段階別に必要な情報を復号化して各段階に与えるが、ヘッダ復号化器1910において復号化される情報については各段階ごとに説明する(S21000)。
【0257】
ビットストリームを受け取ったエントロピ復号化器2060は、ヘッダ復号化器1910から復号化すべき差分データの数及び符号化に用いられたビット数、すなわち、復号化すべきビット数を受け取り、ビットストリームをエントロピ復号化する(S21100)。この時、復号化すべき差分データの数は与えられたキーデータの数からDPCM演算のイントラキーデータの数だけを引いた数となる。
【0258】
エントロピ復号化器2060は、ビットストリームを復号化する時、ビットストリームに含まれた所定の情報(この実施の形態では、bSignedAACFlag)に基づき符号化された差分データが負数または正数であるかを識別し、負数であれば、decodeSignedACC関数を用いて復号化し、正数であれば、decodeUnsignedACC関数を用いて復号化する。このようにして復号化された差分データは、逆DND処理部2050に伝わる。
【0259】
エントロピ復号化された差分データを受け取った逆DND処理部2050は、ヘッダ復号化器1910よりDND次数及び各DND次数における最大値nKeymax受け取る。
もし、DND次数が−1であれば、これは、符号化器がDND演算された差分データの代わりにDPCM演算されてシフトされた差分データをエントロピ符号化した旨を表わすため、逆シフト演算を行う過程へ直ちに進む。一方、DND次数が0であれば、これは、符号化器がDND演算された差分データの代わりにフォルドされた差分データをエントロピ符号化した旨を表わすため、逆フォルド演算を行う過程へ直ちに進む。しかし、DND次数が0より大きければ、逆DND演算を行う(S21200)。
【0260】
まず、逆DND処理部2050は、シフト−アップ演算の行われた差分データが符号化されたか否かを判断する(S21300)。本発明の好ましい実施の形態においては、ビットストリームに含まれたnKeyInvertDown値が0より大きい値であるか否かをチェックすることにより、シフト−アップ演算の行われた差分データが符号化されたか否かを判断する。
【0261】
もし、シフト−アップ演算の行われていない差分データが符号化されたならば、逆DND処理部2050は、逆DND演算を行う過程へ進む。しかし、シフト−アップ演算の行われた差分データが符号化されたならば、シフト−アップ演算により正数の領域に移動した差分データを再び元の負数領域に変換する(S21400)。本発明の実施の形態は、下記式22により表わされるシフト−ダウン(以下、「インバートダウン」と同じ意味で用いられる)演算を行い、シフト−アップ演算された差分データを復元する。
【0262】
【数22】
【0263】
ここで、nKeyInvertDownは、シフト−アップ演算における最大値nKeyMaxと同じ値が用いられる。シフト−ダウン演算によりnKeyInvertDownを超える差分データは−1以下の負数値に変わる。
【0264】
シフト−ダウン演算の行われた差分デーに対して各DND次数におけるnKeyMax値に応じて逆ディバイド−ダウンまたは逆ディバイド−アップ演算が選択的に行われる。
【0265】
図63をさらに参照し、この逆DND演算過程を説明すれば、逆DND処理部2050は、符号化過程において行われたDND演算の次数の回数だけ逆DND演算を行う。すなわち、逆DND処理部2050は、逆DND次数の初期値をDND次数として設定し、逆DND演算を行う都度1ずつデクリメントし、逆DND次数が1となるまで逆DND演算を行う。まず、逆DND処理部2050は、各次数におけるnKeyMax値をチェックしてnKeyMax値が0以上であるか否かを判断する(S21510)。
【0266】
nKeyMax値が0より小さければ、符号化過程においてディバイド−アップ演算が行われた旨を意味するために、逆DND処理部2050は、逆ディバイド−アップ演算を行って差分データの範囲を負数領域に広める(S1530)。本発明の好ましい実施の形態は、下記式23のような逆ディバイド−アップ演算を用いた。
【0267】
【数23】
【0268】
しかしながら、もし、nKeyMaxが0以上であれば、逆DND処理部2050は、逆DND演算の次数が1であるか否かをチェックする。逆DND次数が1でなければ、符号化する時にディバイド−ダウン演算が行われた旨を意味するために、逆DND処理部2050は、逆ディバイド−ダウン演算を行って差分データの範囲を正数領域に広める(S21570)。
【0269】
本発明の好ましい実施の形態は、下記式24のような逆ディバイド−ダウン演算を用いた。
【0270】
【数24】
【0271】
もし、nKeyMaxが0以上であり、且つ、逆DND演算の次数が1であれば、逆DND処理部350は、逆ディバイド演算を行うことにより逆DND演算を終える(S21590)。本発明の好ましい実施の形態は、下記式25のような逆ディバイド演算を用いた。
【0272】
【数25】
【0273】
逆DND演算の行われたキーデータの差分データは、逆フォルド処理部2040に入力され、逆フォルド処理部2040は、逆フォルド演算を行い、正数領域にのみ位置する差分データの範囲を正数及び負数に分離する(S21600)。本発明の好ましい実施の形態は、下記式18のような逆フォルド演算を用いた。
【0274】
【数26】
【0275】
逆フォルドされた差分データは、逆シフト部2030に出力され、逆シフト部2030は、キーヘッダ復号化器1910から符号化器に用いられたモードnKeyShiftを入力され、下記式27のように入力されたnKeyMax差分データにモードを加える(S21700)。
【0276】
【数27】
inverse−shift(ν)=ν+nKeyShift
【0277】
逆シフト部2030から差分データを入力された逆DPCM処理部2020は、キーヘッダ符号化器1910からDPCM次数を入力され、差分データを量子化されたキーデータに復元する(S21800)。逆シフト部2030は、下記式28を用いてDPCM次数だけ逆DPCM演算を行う。
【0278】
【数28】
ν(i+1)=ν(i)+delta(i)
【0279】
ここで、iは、差分データ及びキーデータのインデックスを、vは整数配列を、delta(i)は差分データを各々示す。
逆DPCM処理されて生成された量子化されたキーデータは、逆量子化器2010に入力され、逆量子化器2010は、ヘッダ復号化器1910から量子化ビットサイズnKeyQBit及び逆量子化に用いられる最大値及び最小値が量子化過程において実数変換部905により符号化されたか否かを入力され、下記式29を用いて入力された量子化されたキーデータを逆量子化されたキーデータに変換する(S21900)。
【0280】
【数29】
【0281】
符号化器においてキーデータを量子化する時、量子化に用いられた最大値及び最小値が実数変換部905において変換されなかったならば、前記式29のfKeyMin及びfKeyMaxは0及び1として各々設定される。しかし、量子化に用いられた最大値及び最小値が実数変換部905において変換されたならば、逆量子化に用いられる最大値及び最小値は、後述する実数逆変換部2005において逆変換されて入力される最小値及び最大値が各々用いられる。
【0282】
一方、逆量子化器2010から出力される復号化されたキーデータは、線形キー復号化器2000において復号化された線形キーデータに加えられて復号化されたキーデータを構成する。
【0283】
以下、線形キー復号化過程を説明する。
ヘッダ復号化器1910は、ビットストリームからキーヘッダ情報を復号化して線形キーに関する情報があれば、線形キー領域の開始キー及び終了キーを復号化するために必要な情報を実数逆変換部2005に出力し、線形キー復号化器2000に線形キーとして符号化されたキーの数を出力する。
【0284】
線形キー復号化に用いられる開始キー及び終了キー情報を入力された実数逆変換部2005は。10進数の体系で表わされた開始キー及び終了キーをさらに2進数の体系に逆変換して線形キー復号化器2000に出力する。
【0285】
復号化すべき2つの実数をfKeyMin及びfKeyMaxとすれば、最初の値fKeyMinを逆変換する過程は、下記の通りである。
ヘッダ復号化器1910は、fKeyMinの桁数をビットストリームから読み込む。もし、桁数が0であれば、fKeyMinの値を0として設定した後、fKeyMaxの値を復号化するためにfKeyMaxの桁数をビットストリームから読み込む。もし、桁数が8以上であれば、IEEE標準754方式に従って符号化されたものであるため、実数を32ビットだけ読み込んだ後、fKeyMaxの値を復号化する過程へ進む。
【0286】
しかしながら、もし、fKeyMaxの桁数が1と7との間の値を有すれば、ヘッダ復号化器1910は、符号ビットをビットストリームから読み込む。本発明の実施の形態においては、符号ビットが1であれば、MinKeyMantissaSignを−1として、0であれば、MinKeyMantissaSignを1として設定して符号を読み込む。そして、仮数を前記表1の桁数と必要なビット数との関係に基づき必要なビット数を得た後、そのビット数だけビットストリームから読み込み、読み込まれた値をnMinKeyMantissaに貯蔵する。その後、ビットストリームから1ビットのみを読み込んでMinKeyExponentSignに貯蔵するが、MinKeyMatissaSignと同じ方式により貯蔵する。そして、ビットストリームから6ビットのみの指数値を読み込んでnMinKeyExponentに貯蔵する。
【0287】
実数逆変換部2005は、ヘッダ復号化器1910から入力された値を下記式30に代入してfKeyMinを復元する。
【0288】
【数30】
【0289】
fKeyMaxを復元する過程は、fKeyMinのそれと同じである。但し、fKeyMaxの指数をビットストリームから読み込む前に、fKeyMaxの指数としてfKeyMinと同じ指数が用いられたか否かを判読し、同じ値が用いられたならば、fKeyMinの指数を用い、そうでなければ、fKeyMinの指数をビットストリームから読み込む方式と同じく、fKeyMaxの指数を読み込む。
【0290】
一方、実数逆変換部2005から線形キー領域の開始キー及び終了キーを入力された線形キー復号化器2000は、下記式31を用いて線形キー領域を復号化する。
【0291】
【数31】
【0292】
ここで、fKeyMin及びfKeyMaxは、線形キー領域の開始キーデータ及び終了キーデータを意味する。
このようにして復号化された線形キー領域のキーデータは、逆量子化器2010から出力されたキーデータに加えられて復号化された最終キーデータとして出力される。
【0293】
以下、図64ないし図70に基づき、本発明の好ましい実施の形態によるキー値データ復号化器1950及び復号化方法について説明する。
【0294】
図64を参照すれば、本発明のキー値データ復号化器1950は、入力されたビットストリームをエントロピ復号化して差分データを出力するエントロピ復号化器2220、差分データに対して逆循環DPCM演算及び逆予測循環DPCM演算を行い、量子化されたキー値データを出力する逆DPCM処理部2230、量子化されたキー値データを逆量子化して正規化されたキー値データを出力する逆量子化器2240、キー値ヘッダ復号化器から各成分の量子化されたキー値データの最小値及び最大値を入力されて2進数体系の実数に変換して逆量子化器2240に出力し、各成分のキー値データの最小値及び最大値を2進数体系の実数に変換して出力する実数復号化器2260、及び実数復号化器から各成分のキー値データの最小値及び全ての成分のキー値データのうち最大値を入力されてキー値データを逆正規化する逆正規化器2250を備える。
【0295】
以下、キー値データ復号化方法を示すフローチャートである図66をさらに参照し、復号化方法について説明する。
符号化されたキー値データのビットストリームがエントロピ復号化器2220に入力されれば、まず、ヘッダ復号化器1910は、入力されたビットストリームから復号化に必要なヘッダ情報を抽出して復号化し、復号化されたヘッダ情報をエントロピ復号化器2220、逆DPCM処理部2230、及び逆量子化器2240に各々出力する(S23000)。
【0296】
一方、エントロピ復号化器2220は、入力されたビットストリームをエントロピ復号化して差分データを逆DPCM処理部2230に出力する(S23200)。
エントロピ復号化過程を示すフローチャートである図23Bを参照すれば、ビットストリームPiは、エントロピ復号化器2220に入力される(S23210)。
【0297】
エントロピ復号化器2220は、入力されたビットストリームに含まれたある成分(例えば、X成分)のキー値データの量子化された値がいずれも同じであるか(すなわち、差分データがいずれも0であるかをチェックし(S23220))、いずれも同じであれば、その成分の全てのシンボルをヘッダ復号化器1910より入力された最小値(例えば、fMin_X)として設定して復号化する(S23230)。
【0298】
エントロピ復号化器2220は、キー値データの量子化された値がいずれも同じでなければ、キー値データがUnaryAAC関数により符号化されたかをチェックし(S23240)、UnaryAAC関数により符号化されたならば、UnaryAAC関数を用いて復号化する(S23250)。
UnaryAAC関数は、ビットストリームから1が読み込まれるまで0を読み込み、読み込まれた0の数を絶対値に変換した後、1が読み込まれたビットの次の符号ビットを読み込んで復号化された値を出力する。
【0299】
キー値データがUnaryAAC関数により符号化されなかったならば、エントロピ復号化器2220は、SuccessiveQuantizationAAC関数を用いて入力されたビットストリームを復号化する(S23300)。
【0300】
図68を参照し、エントロピ復号化器2220がSuccessiveQuantizationAAC関数を用いてある成分のキー値データを符号化したビットストリームを復号化する過程について説明する。
エントロピ復号化器2220は、全てのシンボルの符号をビットストリームから復号化し、最大値nMaxを復号化した後、全てのシンボルの復号化
3310)。
【0301】
その後、エントロピ復号化器2220は、復号化すべき第1のキー値データを設定(i=nStartIndex)し、bDoneを真として設定する(S23320)。
【0302】
エントロピ復号化器2220は、シンボルを復号化するために、下記の第S23330段階ないしS23430段階を繰り返す。
【0303】
復号化範囲の最大値及び最小値が同じであれば、復号化されるべきシンボルの値を範囲の最大値(または、最小値)として決め(S23340)、同じではなければ、bDoneを偽として設定し、シンボルの復号化範囲の中間値nMidを下記式32により更新する(S23350)。
【0304】
【数32】
【0305】
エントロピ復号化器2220は、復号化に用いる確率モデルを決めるため
真であれば、FoundContextを用いてビットストリームを復号化し(S23370)、偽であれば、notFoundContextを用いてビットストリームを復号化する(S23380)。
【0306】
ビットストリームから1ビットを復号化したエントロピ復号化器2220は、読み込まれたビットが1であるかをチェックし(S23390)、1ではなければ、復号化範囲の最大値を中間値に取り替え(S23400)、読み込まれたビットが1であれば、復号化範囲の最小値を中間値に取り替えた
【0307】
エントロピ復号化器2220は、復号化インデックスを1だけインクリメントし(S23420)、ある成分の全てのキー値データが復号化されたか否かをチェックした後(S23430)、復号化すべきシンボルがさらにあれば、S2330段階ないしS23420段階を繰り返す。
【0308】
一方、ある成分のキー値データがいずれも復号化されたならば、エントロピ復号化器2220は、復号化すべき他の成分のキー値データがさらにあるかをチェックし(S22440)、さらにあれば、第S23320段階ないし第S23430段階を繰り返し行う。
【0309】
図64及び図66をさらに参照すれば、エントロピ復号化器2220により復号化されたキー値データの差分データは逆DPCM処理部2230に入力され、逆循環DPCM演算及び逆予測循環DPCM演算が行わる(S23500)。
【0310】
図69をさらに参照し、本発明の逆DPCM演算過程S23500について説明する。
逆DPCM演算される差分データは判断部1132に入力され、判断部1132は、入力された差分データに対して行われたDPCM演算の種類をチェックし、いかなる逆DPCM演算を行うかを決め、入力された差分データを逆循環DPCM演算部2234または逆予測循環DPCM演算部2238に出力する(S23520)。
【0311】
まず、逆循環DPCM演算部2234の処理過程について説明すれば、nMaxが入力されたデータの量子化範囲の最大値であるとした時、逆循環D
0)。
【0312】
【数33】
【0313】
その後、逆循環DPCM演算部2234は、下記式34により入力された
【0314】
【数34】
【0315】
前記式において、nをデータの数であるとした時、iは、1ないしn−1の整数である。
【0316】
逆循環DPCM演算部2234は、A値が0以上nMax以下であれば、
x超過であれば、B値を出力する(S23580)。
一方、逆予測循環DPCM演算部2238は、前式34を用いて入力され
【0317】
用いて逆予測DPCM演算されたA値を求め、下記式36により、逆循環量
(S23560)。
【0318】
【数35】
【0319】
【数36】
【0320】
前式において、nがデータの数を示すとした時、iは、1ないしn−1の整数である。
逆循環DPCM演算部2234は、A値が0以上nMax以下であれば、
x超過であれば、B値を出力する(S23580)。
【0321】
逆DPCM処理部2230は、前記逆DPCM演算が行われて生成された
910から入力された量子化ビットnKeyValueQBitsで逆量子化する(S23700)。
【0322】
nをキー値ヘッダ復号化器1910から入力された復号化されるべきキー値データの数であるとした時、逆量子化器2240の逆量子化過程は、下記式37で表わされる。
【0323】
【数37】
【0324】
逆量子化器は、全ての成分に対して逆量子化を行って正規化されたデータを生成し、正規化された各成分のキー値データを逆正規化器2250に出力する。
【0325】
逆正規化器2250は、実数復号化器から入力された情報を用い、正規化されたキー値データを逆正規化する。
図70をさらに参照し、正規化されたデータの逆正規化過程について説明する。
【0326】
実数復号化器2260は、ヘッダ復号化器1910から正規化に用いられる最大値fmax、各成分の最小値fMin_X、fMin_Y及びfMin_Z、最大値が含まれた成分情報nWhichAxis、及び符号化形式情報bUse32Floatを入力される(S23820)。
【0327】
実数復号化器2260は、前記式4に記載された関係に基づき入力された、10進数体系で表わされた最大値及び最小値を2進数体系の実数に変換し、入力された情報と、変換された最大値及び最小値を逆正規化器2250に出力する(S23840)。
【0328】
逆正規化器2250は、符号化形式情報bUse32Floatをチェックし、入力された最大値fMax及び最小値が32ビット単位に符号化されたならば、前記式38に基づき最大範囲Rangemaxを計算し、32ビット単位に符号化されなかったならば、入力された最大値を最大範囲として決める(S23860)。
【0329】
【数38】
【0330】
最大範囲が決められれば、逆正規化器2250は、最大範囲に基づき各成分のキー値データを前記式38に基づき逆正規化する(S23880)。
【0331】
【数39】
【0332】
前記式において、nはデータの数を表わす。
逆正規化器2250は、逆正規化されたキー値データを位置インタポレータ合成器1980に出力する(S23900)。
【0333】
以下、復号化されたキーデータ及びキー値データを結合する位置インタポレータ合成器1980について説明する。
図71は、位置インタポレータ合成器1980の処理過程を示すフローチャートである。
合成器1980は、復号化されたキーデータ及びキー値データを入力され、ヘッダ復号化器からキーデータの数及び分節点生成モードを入力される(S24000)。
【0334】
合成器1980は、分節点生成モードをチェックし、分節点生成モードが経路維持モードであれば、復号化されたキーデータ及びキー値データを出力する(S24100)。
経路維持モードで分節点が抽出された場合には、キーデータ及びキー値データが互いに対応するため、補間により新しいキー値データを生成する必要がない。
【0335】
しかし、符号化された位置インタポレータがキー維持モードで生成されたならば、キーデータはいずれも符号化されて復号化されたのに対し、キー値データは分節点に当たる場合にのみ符号化されるため、キーデータ及びキー値データが対応しない。従って、後述するように、キー値データを補間しなければならない。
【0336】
分節点の抽出に用いられた生成モードがキー維持モードであれば、キーデータと対応するキー値データが存在しているかをチェックするために、キーデータに対応するようにキー選択フラグ配列のインデックスを示すカウンタを設定する(S24200)。
合成器1980は、カウンタが設定されれば、カウンタが指すキーデータに対応するキー値データの存否をチェックし、カウンタが示すキーデータに対応するキー値データが存在すれば、第S24500段階へ進む(S24300)。
【0337】
もし、対応するキー値データが存在しなければ、合成器1980は、現在のキーデータの以前の分節点であるキーデータに対応するキー値データ及び現在のキーデータ以降の分節点であるキーデータに対応するキー値データに基づき現在のキー値データを線形補間して、キー値データを生成する(S24400)。
【0338】
合成器1980は、キー値データを線形補間した後、全てのキーデータに対してキー値データの存否及び線形補間が行われたかをチェックし(S24500)、まだチェックしていないキーデータが存在すれば、カウンタを取り替えて第S24300段階から再び行い、全てのキーデータに対してチェックしたならば、キー及び合成されたキー値データを位置インタポレータとして出力する(S24600)。
【0339】
以上、位置インタポレータに含まれるキーデータ及び各成分のキー値データを符号化して復号化する方法及び装置について説明した。
以下では、図78ないし図87に基づき、本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例について説明する。
【0340】
図78に示されたCompressedPositionInterpolatorクラスは、最上位クラスであって、位置インタポレータの圧縮ビットストリームを読み込むためのクラスである。
このクラスは、KeyHeeader、PosIkeyValueHeader、KeySelectionFlag、Key及びPosIKeyValueのサブクラスを含む。
【0341】
KeyHeeader及びPosIkeyValueHeaderクラスは、Key及びPosIKeyValueを復号化するのに用いられるヘッダ情報を含む。
KeySelectionFlagクラスは、対応するキー値データがPoslkeyValueに含まれている場合、各キーを表わすフラグを有する。
最後に、Key及びPoslkeyValueクラスは、ビットストリームから各々キー及びキー値データを読み込むクラスである。
【0342】
図79に示されたキーヘッダクラスは、復号化に必要な情報のキーヘッダを復号化するクラスである。
キーヘッダの主たる情報は、キーの数、量子化ビット、イントラキーデータ、DNDヘッダ及び符号化に必要な実際のビット数である。
nKeyQBitは、実数のキー値を復元する逆量子化に用いられる量子化ビットである。
nNumKeyCodingBitは、キーデータの数を表わすnNumberOfKeyのビットサイズを表わす。
nKeyDigitは、元のデータの最大重要桁数を表わし、復号化された値の切り上げに用いられる。
【0343】
キーヘッダに線形キー領域に関する情報が含まれた場合、blsLinearSubRegionフラグが1として設定される。
この場合、全体キーに含まれる所定のサブ領域に含まれたキーは、blsLinearLeySubRegionフラグに追従する復号化されたヘッダ情報を用いて計算できる。
bRangeFlagは、キーデータの範囲が0ないし1であるかを否かを表わす。もし、範囲が0ないし1ではなければ、最小値及び最大値はKeyMinMaxクラスから復号化される。KeyMinMaxクラスは、逆量子化のために最小値及び最大値を再構成する。各値は仮数及び指数に分離できる。
【0344】
nBitSizeは、nQIntraKeyのビットサイズであり、nKeyShiftは、nKeyMaxの最初ビットサイズである。
nQIntraKeyは、第1の量子化されたイントラデータの大きさである。これは、nQIntraKeyの符号を表わすnQIntraKeySignと共に結合される。これは、残りの量子化されたキーデータを復元するための用いられる。
インタポレータ圧縮に用いられる全ての符号ビットにおいて、0は正数を、1は負数を各々意味する。nKDPCMOrderは、DPCM次数−1である。次数の範囲は1ないし3である。量子化されたイントラデータの数は、DPCMの次数に同じである。
【0345】
nKeyShiftは、符号ビットのnKeyshiftSignと共にキーデータ復号化器のシフト量を表わす整数である。これら両値は、bShiftFlagが1として設定されれば復号化される。nDNDOrderは、DND(Divide−and−Divide)の次数である。DNDは、キーデータ復号化器のところで説明する。
もし、nDNDOrder値が7であれば、bNoDNDが復号化される。このブール値は、逆DNDが処理されるか否かを表わす。nKeyMaxは、各々の連続した逆DND演算中に用いられる最大値及び最小値である。nKeyCodingBitは、キーデータの符号化に用いられるビットである。
【0346】
bSignedAACFlagは、AAC復号化のためにいかなる復号化方法が用いられるかを表わす。もし、値が0であれば、unsignedAAC復号化が行われる。そうでなければ、signedAAC復号化が行われる。
bKeyInvertDownFlagは、nKeyInvertDownが用いられるか否かを表わすブール値である。nKeyInvertDownは整数値であって、これを超える全ての量子化されたキーデータを−1以下の負数値に変換する。nKeyInvertDownが−1であれば、シフト−ダウン演算は行われない。
【0347】
図80は、LinearKeyクラスを示す図面である。LinearKeyクラスにおいて用いられるパラメータの意味を説明すれば、nNumLinearKeyCodingBitは、線形で予測可能なキーの数を符号化するために必要なビットの数を表わす値である。nNumberOflinearKeyは、線形で予測可能なキーデータの数を表わす。
【0348】
図81は、KeyMinMaxクラスを示す図面である。
KeyMinMaxクラスにおいて用いられるパラメータの意味を説明すれば、まず、bMinKeyDigitSameは、全体キーの最高重要桁数nKeyDigit及びキーの最大値の最高重要桁数が同じであるかを表わす。nMinKeyDigitは、キーの最大値の最高重要桁数を表わす。
【0349】
nMinKeyMantissaSignは、nMinKeyMantissaの符号を表わす。
nMinKeyMantissaは、キーの最小値の仮数を表わす。
nMinKeyExponentSignは、nMinKeyExponentの符号を表わす。nMinKeyExponentは、キーの最小値の指数を表わす。
【0350】
fKeyMinは、キーの最小値を表わす。nMaxKeyDigitSameは、全体キーの最高重要桁数nKeyDigit及びキーの最大値の最高重要桁数が同じであるかを表わす。
nMaxKeyDigitは、キーの最大値の重要桁数を表わす。
nMaxKeyMantissaSignは、nMaxKeyMantissaの符号を表わす。
nMaxKeyMantissaは、キーの最大値の仮数を表わす。
【0351】
bSameExponentは、キーの最大値の指数がnMinKeyExponentと同じであるかを表わす。
nMaxKeyExponentSignは、nMaxKeyExponentの符号を表わす。
nMaxKeyExponentは、キーの最大値の指数を表わす。
fKeyMaxは、キーの最大値を表わす。
【0352】
図82は、PosIKeyValueHeaderクラスを示す図面である。
PosIKeyValueHeaderに記載されたパラメータの意味を説明すれば、まず、bPreserveKeyは、現在の復号化モードがキー維持モードであるか否かを表わし、nKVQBitは、キー値データの量子化ビットサイズを表わす。
【0353】
x_keyvalue_flag、y_keyvalue_flag及びz_keyvalue_flagは3成分であるx、y及びzを表わし、nKVDigitは、キー値データの最大重要桁数を表わし、nKVDPCMOrder_X、nKVDPCMOrder_Y、及びnKVDPCMOrder_Zは、各キー値データの成分に対して用いられたDPCM演算を表わす。
【0354】
もし、DPCM演算が用いられたならば、0がフラグとして設定され、予測DPCM演算が用いられたならば、1がフラグとして設定される。
一方、blsUnaryAAC_X、blsUnaryAAC_Z、blsUnaryAAC_Yは、unaryAAC_Y関数がエントロピ符号化に用いられた旨を表わし、nKVCodingBit_X、nKVCodingBit_Y、及びnKVCodingBit_Zは、各キー値データの成分に対する量子化ビットを表わし、nStartIndex_X、nStartIndex_Y、nStartIndex_Zは、各成分軸の開始インデックスを表わし、firsKV_X、firsKV_Y、及びfirsKV_Zは、最初に量子化されたキー値データのx、y及びzを表わす。
【0355】
図83は、KeyValueMinMaxクラスを示す図面である。
KeyValueMinMaxクラスは、キー値データの正規化に用いられた最大値及び最小値を復元する。bUse32Floatは、最大値及び最小値を貯蔵するために32ビット実数が用いられたかを表わす。bUse32Floatが0であれば、10進数体系で表わされた実数が用いられた旨を表わす。
【0356】
nWhichAxisは、最大範囲を有する成分を表わす。この実施の形態では、nWhichAxisが0であればx軸を、1であればy軸を、そして2であればz軸を各々表わす。
【0357】
bAllSameMantissaDigtFlagは、x、y及びzの最小値の仮数の桁数がいずれも同じであるかを表わし、bSameKVDigitFlagは、全ての仮数の桁数がnKVDigitと同じであるかを表わす。
nMantissaDiti_X、nMantissaDiti_Y、及びnMantissaDiti_Zは、z、y及びzの最小値の仮数の桁数を各々表わす。
【0358】
bMaxDigitFlagは、最大値の仮数の桁数が最小値の仮数の桁数と異なるかを表わし、異なれば、最大範囲の仮数の桁数がビットストリームから読み込まれる。
nMantissaDigit_Mは、最大値の仮数の桁数を表わし、nExponentBitsは、指数値を符号化するのに必要なビット数を表わす。bAllSameExponentSignは、x、y及びz成分の符号がいずれも同じであるかを表わし、nExponentSignは、bAllSameExponentSignが真である時、指数の符号を表わす。
【0359】
fpnMin_X、fpnMin_Y、fpnMin_Z、及びfpnMaxは、10進数体系における実数を表わし、これらの値はFloatingPointNumberにおいて説明されるように復号化される。また、fpnMin_X、fpnMin_Y、及びfpnMin_Zは各成分の最小値を表わし、fMaxは最大範囲を有する成分の最大値を表わす。
【0360】
図84は、FloatingPointNumberクラスを示す図面である。
FloatingPointNumberクラスは、実数を10進数体系で表わし、nMantissaは、10進数体系の実数FloatingPointNumberの仮数値を表わし、nExponentは、10進数体系の実数FloatingPointNumberの指数値を表わし、nSignは、前記値の符号を表わす。また、nExponentSignは、10進数体系の実数FloatingPointNumberの指数の符号を表わす。
【0361】
図85は、KeySelectionFlagを示す図面である。このクラスにおいて用いられたKeyFlagは、第i番目のキーデータのキー値データが符号化されたか否かを表わすブール配列であり、nNumOfKeyValueは、復号化されるべきキー値データの数を表わす整数値である。
【0362】
図86は、Keyクラスを示す図面である。
Keyクラスに用いられたパラメータの意味について説明すれば、nQKeyは、ビットストリームから復号化されるべき量子化されたキーデータを貯蔵した配列を表わす。KeyContextは、nQKeyの大きさを読み込むのに用いられるコンテキストを意味する。KeySignContextは、nQKeyの符号を読み込むのに用いられるコンテキストを意味する。
【0363】
decodeUnsignedAACは、与えられたコンテキストで、適応的な算術符号化の行われたビットストリームに対して符号なき復号化を行う関数である。decodeSignedAACは、与えられたコンテキストで、適応的な算術符号化の行われたビットストリームに対してを符号あり復号化を行う関数である。
【0364】
図87は、PosIKeyValueクラスを示す図面である。
このPosIKeyValueクラスに記載されたパラメータの意味について説明すれば、keyValue_X、keyValue_Y、及びkeyValue_Zは、位置インタポレータにおける各成分の配列を表わし、もし、nStartIndex_Xが1として設定されたならば、keyValue_X[0]は、PosIkeyValueHeaderクラスのfirstKV_Xで満たされる。
【0365】
もし、nStartIndex_Xが0として設定されたならば、keyValue_X[0]は算術復号化器を用いてビットストリームから復号化される。
同じ方式により、keyValue_Y[0]及びkeyValue_Z[0]が決められる。
これらは、decodeUnaryAAC関数またはdecodeSQAAC関数を通じてビットストリームから算術復号化される。
【0366】
コンテキストモデルkVXSignContext、kVYSignContext及びkVZSignContextは、keyValue_X、keyValue_Y及びkeyValue_Zの符号を復号化するのに用いられ、これらコンテキストはdecodeUnaryAAC関数またはdecodeSQAAC関数に伝わる。
【0367】
MaxValueContext、FoundContext及びNotFoundContextは、キー値の絶対値をエントロピ復号化するのに用いられ(例えば、kVXMaxValueContext、kVXFoundContext及びkVXNotFoundContextは、keyValue_Xの復号化に用いられる)、decodeUnaryAAC関数に伝わる。
【0368】
コンテキストモデルkVXUCContext、kVYUContext及びkVZUContextは、keyValue_X、keyValue_Y及びkeyValue_Zの復号化に用いられ、decodeUnaryAAC関数に伝わる。
【0369】
以下、図72ないし図77に基づき、本発明のアニメーション経路間の誤差測定方法について説明する。
図72及び図73は、前記本発明の好ましい第1ないし第3の実施の形態による分析器40において、経路誤差を計算する方法を示す図面である。
【0370】
本発明において、経路間の誤差は、図72及び図73に示されたように、各経路間に生成される面積に基づき計算する。
【0371】
を補間により生成された位置インタポレータの経路点とする。
【0372】
また、元のアニメーション経路は実線にて、補間されたインタポレータにより生成されたアニメーション経路は点線にて各々表わす。この時、iはキーデータを、jは位置インタポレータのキー値データの各成分を各々表わす。
【0373】
2本の経路間には、図25Aに示された台形の誤差及び図25Bに示された捩れた台形の2種の誤差が存在する。分析器40の誤差計算部154は、キーデータに基づき各成分のアニメーション経路を所定の区間に分割し、各区間に対して誤差を求めた後、求められた誤差を和して両経路間の最終誤差を計算する。
【0374】
まず、誤差計算部154は、元の位置インタポレータを時間軸上に配列し、入力された補間された位置インタポレータを時間軸上に配列して、2つのアニメーション経路を生成する。その後、生成されたアニメーション経路を時間軸上のキーデータの間隔で分割する。
【0375】
誤差計算部154は、各区間が台形であるか、それとも捩れた台形であるかをチェックし、台形である場合には下記式40を用い、捩れた台形である場合には下記式41を用いて各区間の面積を計算する。
【0376】
【数40】
【0377】
【数41】
【0378】
ある成分に対する全体区間の誤差の和は、下記式42で表わされる。
【0379】
【数42】
【0380】
誤差計算部154は、前記式42により計算された誤差を判断部156に出力し、判断部156は、入力された誤差と臨界誤差値とを比較して分節点を選択する。
また、X、Y、及びZの3つのキー値データ成分に対する誤差を和して空間に対して正規化を行うことにより、2本の経路間の全体誤差を計算できる。計算方法は、下記式43の通りである。
【0381】
【数43】
【0382】
一方、本発明の誤差計算方法は、符号化のために符号化装置に入力された位置インタポレータにより形成される第1の経路と、復号化された位置インタポレータにより形成される第2の経路との誤差を計算するのに用いられる。
【0383】
図74乃至図76は、第1の経路と第2の経路との誤差を計算する過程の一例を示す図面であり、図77は、第1の経路と第2の経路との誤差を計算する過程を示すフローチャートである。
【0384】
以下、図74乃至図77に基づき、第1の経路と第2の経路との誤差を計算する方法について説明する。
復号化された位置インタポレータのキーデータ及びキー値データは符号化中に加減及び補間されて量子化されるため、元の位置インタポレータと同じではない。特に、分析器40における誤差計算過程とは異なって、キーデータが互いに異なってくるため、キーデータの位置を補償する過程が必要である。
【0385】
図74は、第1の経路と第2の経路との間にキーデータが互いにずれる台形の区間を示している。また、図75は、第1の経路と第2の経路との間にキーデータが互いにずれる捩れた台形の区間を示している。上述したように、各経路の区間を分割し、前記式40ないし前記式42を用いて面積誤差を計算するためには、各キーデータを一致させる必要がある。
【0386】
従って、図76及び図77を参照すれば、まず、各経路が同じキーデータの経路点を有するように第1の経路にはないものの第2の経路上に存在するキーデータに対応する経路点を第1の経路に挿入し、第2の経路にはないものの第1の経路上に存在するキーデータに対応する経路点を第2経路に挿入する(S27000)。
【0387】
その後、挿入された経路点を含む経路点に基づき、各経路を多数の区間に分割する(S27100)。
各区間の誤差を計算するためには、まず、各区間が台形であるか、それとも捩れた台形であるかをチェックし、前記式40及び前記式41を用いて各区間の誤差を計算する(S27200)。
【0388】
各成分に対する誤差がいずれも求められたならば、全ての区間の誤差を和し、和された誤差を時間及び空間に対して正規化を行い、入力された位置インタポレータにより形成された第1の経路と、復号化された位置インタポレータにより形成された第2の経路との誤差を測定できる(S27300)。誤差の正規化は下記式44を用いて行う。
【0389】
【数44】
【0390】
前記式44において、tMaxは経路の開始キーデータを、tMinは経路の終了キーデータを各々表わし、Rangemaxは前記式43を用いて求める。
【0391】
本発明はまた、コンピュータにて読取り可能な記録媒体にコンピュータにて読取り可能なコードとして具現可能である。コンピュータにて読取り可能な記録媒体は、コンピュータシステムにより読取り可能なデータが貯蔵されるあらゆる種類の記録装置を含む。コンピュータにて読取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピーディスク、光データ貯蔵装置などがあり、またキャリアウェーブ(例えば、インターネットを通じた伝送)の形で具現されるものも含む。また、コンピュータにて読取り可能な記録媒体はネットワークにより結ばれたコンピュータシステムに分散され、分散方式によりコンピュータにて読取り可能なコードが貯蔵されて実行できる。
【0392】
以上、本発明についてその好ましい実施の形態を中心に説明した。本発明が属する技術分野における当業者であれば、本発明が本発明の本質的な特性から逸脱しない範囲において変形された形で具現可能であるということが理解できるであろう。よって、開示された実施の形態を限定的な観点ではなく、説明的な観点から考慮しなければならない。本発明の範囲は前述した説明ではなく、特許請求の範囲上に示されており、それと同等な範囲内にある全ての違いは本発明に含まれたものとして解釈されなければならない。
【0393】
【発明の効果】
本発明の位置インタポレータ符号化方法及び装置によれば、高画質のアニメーション映像を維持しつつキーデータ及びキー値データを高効率にて符号化及び復号化できる。特に、本発明のデータ経路間の誤差測定方法を用いることにより高画質のアニメーションデータを維持でき、本発明のリサンプリング方法及び分節点の抽出方法により符号化すべきキーデータ及びキー値データの量を大いに低減できる。
【0394】
【図面の簡単な説明】
【図1】(a)は、位置インタポレータのキーデータを、(b)は、位置インタポレータの各成分のキー値データを各々示す図面である。
【図2】MPEG−4 BIFSのPMFCの符号化器及び復号化器の構造を示すブロック図である。
【図3】本発明の好ましい実施の形態による位置インタポレータ符号化装置の構成を示すブロック図である。
【図4】本発明の好ましい実施の形態による位置インタポレータ符号化方法を示すフローチャートである。
【図5】本発明の好ましい実施の形態による分析器の構成を示すブロック図である。
【図6】本発明の好ましい実施の形態による分析器の構成を示すブロック図である。
【図7】本発明の好ましい実施の形態による分析器の構成を示すブロック図である。
【図8】図4に示されたS320段階の詳細フローチャートである。
【図9】本発明の好ましい実施の形態によるリサンプリング方法を示すフローチャートである。
【図10】本発明の好ましい実施の形態による分節点の抽出方法を示すフローチャートである。
【図11】元のデータ及びリサンプリングされたキーデータを示す図面である
【図12】元のアニメーション経路及びリサンプリングされたアニメーション経路を示す図面である。
【図13】本発明の好ましい実施の形態による分節点の抽出方法の一例を示す図面である。
【図14】本発明の好ましい実施の形態による分節点の抽出方法の一例を示す図面である。
【図15】本発明の好ましい実施の形態による分節点の抽出方法の一例を示す図面である。
【図16】本発明の好ましい実施の形態による分節点の抽出方法の一例を示す図面である。
【図17】本発明の好ましい実施の形態による分節点の抽出方法の一例を示す図面である。
【図18】本発明の好ましい実施の形態による分節点の抽出方法の一例を示す図面である。
【図19】生成モードに基づき分節点抽出部から出力されるキーデータ及びキー値データを示す図面である。
【図20】本発明の好ましい実施の形態によるキーデータ符号化器の構成を示すブロック図である。
【図21】図20に示されたDND処理部の構成を示すブロック図である。
【図22】本発明の好ましい実施の形態によるキーデータ符号化方法を示すフローチャートである。
【図23】本発明の好ましい実施の形態によるキーデータ符号化方法を示すフローチャートである。
【図24】本発明の好ましい実施の形態によるキーデータ符号化方法を示すフローチャートである。
【図25】本発明の好ましい実施の形態によるキーデータ符号化方法を示すフローチャートである。
【図26】本発明の好ましい実施の形態によるキーデータ符号化方法を示すフローチャートである。
【図27】本発明の好ましい実施の形態によるキーデータ符号化方法を示すフローチャートである。
【図28】本発明の好ましい実施の形態によるキーデータ符号化方法を示すフローチャートである。
【図29】encodeSignedAAC関数の一例を示す図面である。
【図30】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図31】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図32】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図33】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図34】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図35】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図36】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図37】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図38】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図39】本発明の好ましい実施の形態によるキーデータを符号化するための演算が行われた後のキーデータを示す図面である。
【図40】本発明の好ましい実施の形態によるキー値データ符号化器の構成を示すブロック図である。
【図41】図40に示された量子化誤差最小化部の構成を示すブロック図であり
【図42】図40に示されたDPCM処理部の構成を示すブロック図である。
【図43】本発明の好ましい実施の形態によるキー値データ符号化方法を示すフローチャートである。
【図44】本発明の好ましい実施の形態によるキー値データ符号化方法を示すフローチャートである。
【図45】本発明の好ましい実施の形態によるキー値データ符号化方法を示すフローチャートである。
【図46】本発明の好ましい実施の形態によるキー値データ符号化方法を示すフローチャートである。
【図47】本発明の好ましい実施の形態によるキー値データ符号化方法を示すフローチャートである。
【図48】本発明の好ましい実施の形態によるキー値データ符号化方法を示すフローチャートである。
【図49】本発明の好ましい実施の形態によるキー値データ符号化方法を示すフローチャートである。
【図50】本発明の好ましい実施の形態によるキー値データ符号化方法を示すフローチャートである。
【図51】量子化されたキー値データに対して単純なる予測DPCM演算を行った結果を示す図面である。
【図52】量子化された同キー値データに対して修正された予測DPCM演算結果を示す図面である。
【図53】量子化されたデータを示すずである。
【図54】図53に示された量子化されたデータに対してDPCM演算を行った結果を示す図である。
【図55】図53に示された量子化されたデータに対して循環量子化DPCM演算を行った結果を示す図である。
【図56】UnaryAAC関数を例示する図面である。
【図57】SuccesiveQuantization関数を例示する図面である。
【図58】SuccesiveQuantization関数を例示する図面である。
【図59】本発明の好ましい実施の形態による位置インタポレータ復号化器の構成を示すブロック図であり
【図60】位置インタポレータ復号化方法を示すフローチャートである。
【図61】本発明の好ましい実施の形態によるキーデータ復号化器の構成を示すブロック図である。
【図62】本発明の好ましい実施の形態によるキーデータ復号化方法を示すフローチャートである。
【図63】本発明の好ましい実施の形態によるキーデータ復号化方法を示すフローチャートである。
【図64】本発明の好ましい実施の形態によるキー値データ復号化器の構成を示すブロック図である。
【図65】図64に示された逆DPCM処理部の構成を示すブロック図である。
【図66】本発明の好ましい実施の形態によるキー値データ復号化方法を示すフローチャートである。
【図67】本発明の好ましい実施の形態によるキー値データ復号化方法を示すフローチャートである。
【図68】本発明の好ましい実施の形態によるキー値データ復号化方法を示すフローチャートである。
【図69】本発明の好ましい実施の形態によるキー値データ復号化方法を示すフローチャートである。
【図70】本発明の好ましい実施の形態によるキー値データ復号化方法を示すフローチャートである。
【図71】本発明の好ましい実施の形態によるキーデータ及びキー値データの位置インタポレータ合成方法を示すフローチャートである。
【図72】図3に示された分析器において経路誤差を計算する方法を例示する図面である。
【図73】図3に示された分析器において経路誤差を計算する方法を例示する図面である。
【図74】符号化すべき位置インタポレータと復号化された位置インタポレータとの誤差を計算する方法を例示する図面である。
【図75】符号化すべき位置インタポレータと復号化された位置インタポレータとの誤差を計算する方法を例示する図面である。
【図76】符号化すべき位置インタポレータと復号化された位置インタポレータとの誤差を計算する方法を例示する図面である。
【図77】符号化すべき位置インタポレータと復号化された位置インタポレータとの誤差を計算する方法を示すフローチャートである。
【図78】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図79】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図80】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図81】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図82】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図83】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図84】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図85】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図86】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
【図87】本発明の好ましい実施の形態によりキー及びキー値データを復号化する位置インタポレータ復号化装置を具現するプログラムコードの一例をSDL言語形式で具現した例を示す図面である。
Claims (31)
- キーフレームが位置する時間情報であるキーデータ及び客体の位置情報を表わすキー値データを含む位置インタポレータを符号化する装置であって、
前記位置インタポレータが入力される分析器と
前記分析器の分節点抽出部より入力されたキーデータを符号化するキー符号化器と、
前記分節点抽出部より入力されたキー値データを符号化するキー値符号化器とを備え、
前記分節点抽出部は、
前記位置インタポレータの前記キー値データを経路点として時間軸に沿って繋げて形成される第1のアニメーション経路に対象区間を設定すると共に、前記第1のアニメーション経路上に設定された前記対象区間の始点と終点との間に位置する経路点のうちの一つを選択し、選択した経路点と前記始点とを結ぶ線分と、前記選択した経路点と前記終点とを結ぶ線分とを、それぞれ経路点を補完しつつ形成し、これら線分により形成される候補経路を、前記第1のアニメーション経路上の前記始点と前記終点との間に位置する複数の経路点のそれぞれについて生成する線形補間部と
前記第1のアニメーション経路と、前記候補経路の各々との誤差を計算する誤差計算部と、
前記第1のアニメーション経路と前記候補経路の各々との誤差のうち、誤差が最小となる前記候補経路の経路点を分節点として決定すると共に、前記最小となる誤差と所定の臨界値とを比較する判断部とを備え、
前記最小となる誤差が前記所定の臨界値以下である場合、
前記判断部は、前記分節点、前記始点、そして終点に対応する前記キーデータ及び前記キー値データを出力する
ことを特徴とする符号化装置。 - 前記分析器は、
入力された前記位置インタポレータの中から、所定時間をあけてあらかじめ決められた時刻の各々における位置インタポレータを取り出し、取り出した位置インタポレータを、前記第1のアニメーション経路を構成する位置インタポレータとして出力するリサンプリング部と、
外部から入力される入力信号に基づいて、前記入力された位置インタポレータを、前記リサンプリング部または前記分節点抽出部に出力する選択部と、
をさらに備えることを特徴とする請求項1に記載の符号化装置。 - 前記分析器は、
入力された前記位置インタポレータの中から、所定時間をあけてあらかじめ決められた時刻における位置インタポレータを取り出し、取り出した位置インタポレータを、前記第1のアニメーション経路を構成する位置インタポレータとして出力するリサンプリング部を備え、
前記分節点抽出部には、前記リサンプリングから出力された前記位置インタポレータが入力されることを特徴とする請求項1に記載の符号化装置。 - 前記分析器は、
前記分節点抽出部から出力された位置インタポレータの中から、所定時間をあけてあらかじめ決められた時刻における位置インタポレータを取り出し、取り出した位置インタポレータを、前記第1のアニメーション経路を構成する位置インタポレータとして出力するリサンプリング部を備え、
前記キー符号化器には、前記リサンプリング部より出力された前記位置インタポレータのキーデータが入力され、
前記キー値符号化器には、前記リサンプリング部より出力された前記位置インタポレー タのキー値データが入力される
ことを特徴とする請求項1に記載の符号化装置。 - 前記誤差が所定の臨界値よりも大きい場合、
前記分節点抽出部は、
前記第1のアニメーション経路上の、前記始点と前記分節点との間と、前記分節点と前記終点との間に、それぞれ新たな対象区間を設定し、新たに設定された対象区間ごとに、候補経路を形成し、各対象区間ごとに形成された候補経路を繋いだ経路と前記第1のアニメーション経路との誤差が前記所定の臨界値以下になるまで、新たな対象区間の設定と候補経路の形成を繰り返す
ことを備えることを特徴とする請求項1に記載の符号化装置。 - 前記誤差計算部は、
経路点に含まれる一つの基準成分に基づいて、前記第1のアニメーション経路と前記候補経路とを複数の区間に分割して区間毎の面積を求めると共に、各区間毎に前記第1のアニメーション経路と前記候補経路との誤差を、求めた面積に基づいて計算することを特徴とする請求項1に記載の符号化装置。 - 前記誤差計算部は、
各区間の経路点のキーデータ間の距離及びキー値データ間の距離に基づき分割された区間の面積を計算することを特徴とする請求項6に記載の符号化装置。 - 前記キー符号化器は、
入力されたキーデータを所定の量子化ビットで量子化する量子化器と、
前記量子化されたキーデータの差分データを生成するDPCM処理部と、
入力された差分データのうち頻度数が最も高い差分データをモードとして選択し、モードとして選択されなかった残りの差分データの各々からモードを引くことにより行われるシフト演算を行うシフト部と、
正数領域及び負数領域に分布する前記シフト演算後の差分データを、正数領域または負数領域に集中させるフォルド演算を行うフォルド処理部と、
差分データの分布範囲を集約させるDND演算を、前記フォルド演算後の差分データに対して行うと共に、前記シフト演算後の差分データと、前記フォルド演算後の差分データと、前記DND演算後の差分データのうちの一つを、エントロピ符号化を行う差分データとして選択し、選択した差分データを出力するDND処理部と、
前記DND処理部より入力された差分データを符号化するエントロピ符号化器と、を備えることを特徴とする請求項1に記載の符号化装置。 - 前記キー値符号化器は、
入力されたキー値データを所定の量子化ビットで量子化する量子化器と、
量子化されたキー値データである量子化キー値データの差分データを生成するDPCM処理部と、
前記DPCM処理部より入力された差分データをエントロピ符号化するエントロピ符号化器とを備え、
前記DPCM処理部は、
前記量子化キー値データから以前に入力された量子化キー値データ差し引いて差分データを生成すると共に、前記差分データの循環量子化演算を行う循環DPCM演算部と、
以前に入力された量子化キー値データからその以前の量子化キー値データを差し引いて差分値を求め、求めた差分値を以前に入力された量子化キー値データに加えて予測データを求め、入力された量子化キー値データから予測データを差し引いて予測差分データを生成すると共に、前記予測差分データの循環量子化演算を行う予測DPCM演算部と、
前記循環DPCM演算部から入力される循環量子化演算後の差分データと、前記予測DPCM演算部から入力される循環量子化演算後の予測差分データとのうち、小さい方のデータを選択して出力する選択部とを含んで構成される
ことを特徴とする請求項1に記載の符号化装置。 - キーフレームが位置する時間情報であるキーデータ及び客体の位置情報を表わすキー値データを含む位置インタポレータを符号化する装置であって、
前記位置インタポレータが入力される分析器と
前記リサンプリング部より入力されたキーデータを符号化するキー符号化器と、
前記リサンプリング部より入力されたキー値データを符号化するキー値符号化器とを備え、
前記分析器は、
キーデータ及びキー値データを含む位置インタポレータを時間軸に沿って繋げて形成される第1のアニメーション経路に含まれる位置インタポレータの中から、所定時間をあけてあらかじめ決められた時刻における位置インタポレータを取り出し、取り出した位置インタポレータに含まれる前記キーデータと前記キー値データとを出力するリサンプリング部を備え、
前記キー値符号化器は、
入力されたキー値データを所定の量子化ビットで量子化する量子化器と、
量子化されたキー値データである前記量子化キー値データから以前に入力された量子化キー値データ差し引いて差分データを生成し、当該差分データを循環量子化演算すると共に、以前に入力された量子化キー値データからその以前の量子化キー値データを差し引いて差分値を求め、求めた差分値を以前に入力された量子化キー値データに加えて予測データを求め、入力された量子化キー値データから予測データを差し引いて予測差分データを生成し、当該予測差分データを循環量子化演算し、循環量子化演算後の差分データと前記予測差分データの循環量子化演算後の予測差分データとのうちの小さい方のデータを差分データとして選択して出力するDPCM処理部と、
前記DPCM処理部より入力された差分データをエントロピ符号化するエントロピ符号化器と
を備えることを特徴とする符号化装置。 - 分析器と、キー符号化器と、キー値符号化器とを備える装置において、キーフレームが位置する時間情報であるキーデータ及び客体の位置情報を表わすキー値データを含む位置インタポレータを符号化する方法であって、
前記分析器において、
(b1)前記位置インタポレータの前記キー値データを経路点として時間軸に沿って繋げて形成される第1のアニメーション経路に対象区間を設定すると共に、前記第1のアニメーション経路上に設定された前記対象区間の前記始点と前記終点との間に位置する経路点のうちの一つを選択し、選択した経路点と前記始点とを結ぶ線分と、前記選択した経路点と前記終点とを結ぶ線分とを、それぞれ経路点を補完しつつ形成し、これら線分により形成される候補経路を、前記第1のアニメーション経路上の前記始点と前記終点との間に位置する複数の経路点のそれぞれについて生成する線形補間段階と
(b2)前記第1のアニメーション経路と、前記候補経路の各々との誤差を計算する誤差計算段階と、
(b3)前記第1のアニメーション経路と前記候補経路の各々との誤差のうち、誤差が最小となる前記候補経路の経路点を分節点として決定すると共に、前記最小となる誤差と所定の臨界値とを比較する判断段階と、
(b4)前記最小となる誤差が前記所定の臨界値以下である場合、前記判断部は、前記分節点、前記始点、そして終点に対応する前記キーデータ及び前記キー値データを出力する出力段階とが行われ、
前記キー符号化器において、
(c)前記分節点抽出部より入力されたキーデータを符号化するキー符号化段階が行われ、
キー値符号化器において、
(d)前記分節点抽出部より入力されたキー値データを符号化するキー値符号化段階が行われる
ことを特徴とする符号化方法。 - 前記誤差が所定の臨界値よりも大きい場合、
(b5)前記第1のアニメーション経路上の、前記始点と前記分節点との間と、前記分節点と前記終点との間に、それぞれ新たな対象区間を設定し、新たに設定された対象区間ごとに、候補経路を形成し、各対象区間ごとに形成された候補経路を繋いだ経路と前記第1のアニメーション経路との誤差が前記所定の臨界値以下になるまで、新たな対象区間の設定と候補経路の形成を繰り返す段階をさらに含む
ことを特徴とする請求項11に記載の符号化方法。 - 前記(b1)段階前に、
(a)入力された前記位置インタポレータの中から、所定時間をあけてあらかじめ決められた時刻の各々における位置インタポレータを取り出し、取り出した位置インタポレータを、前記第1のアニメーション経路を構成する位置インタポレータとして出力するリサンプリング段階を含む
ことを特徴とする請求項11に記載の符号化方法。 - 前記(b4)段階の後に、
(b6)入力された前記位置インタポレータの中から、所定時間をあけてあらかじめ決められた時刻の各々における位置インタポレータを取り出し、取り出した位置インタポレータを、前記第1のアニメーション経路を構成する位置インタポレータとして出力するリサンプリング段階を含む
ことを特徴とする請求項11に記載の符号化方法。 - (c)段階は、
(c1)入力されたキーデータを所定の量子化ビットで量子化する量子化段階と、
(c2)前記量子化されたキーデータの差分データを生成するDPCM処理段階と、
(c3)入力された差分データのうち頻度数が最も高い差分データをモードとして選択し、モードとして選択されなかった残りの差分データの各々からモードを引くことにより行われるシフト演算を行うシフト段階と、
(c4)正数領域及び負数領域に分布する前記シフト演算後の差分データを、正数領域または負数領域に集中させるフォルド演算を行うフォルド処理段階と、
(c5)差分データの分布範囲を集約させるDND演算を、前記フォルド演算後の差分データに対して行うと共に、前記シフト演算後の差分データと、前記フォルド演算後の差分データと、前記DND演算後の差分データのうちの一つを、エントロピ符号化を行う差分データとして選択し、選択した差分データを出力するDND処理段階と、
(c6)前記DND処理部より入力された差分データを符号化するエントロピ符号化段階と、を備えることを特徴とする請求項11に記載の符号化方法。 - 前記(d)段階は、
(d1)入力されたキー値データを所定の量子化ビットで量子化する量子化段階と、
(d2)量子化されたキー値データの差分データを生成するDPCM処理段階と、
(d3)前記DPCM処理部より入力された差分データをエントロピ符号化するエントロピ符号化段階とを備え、
前記DPCM処理段階は、
(d2a)入力されたキー値データから以前に入力された差分データ差し引いて差分データを生成すると共に、前記差分データの循環量子化演算を行う循環DPCM演算段階と、
(d2b)入力された以前のデータからその以前のデータを差し引いて差分値を求め、求めた差分値を以前のデータに加えて予測データを求め、現在のデータから予測データを差し引いて予測差分データを生成すると共に、前記予測差分データの循環量子化演算を行う予測DPCM演算段階と、
(d2c)前記循環DPCM演算部から入力される循環量子化演算後の差分データと、前記予測DPCM演算部から入力される循環量子化演算後の予測差分データとのうち、小さい方のデータを選択して出力する選択段階とを含んで構成される
ことを特徴とする請求項11に記載の符号化方法。 - コンピュータにロードされたときに、請求項11乃至請求項16のうちのいずれか一項に記載の符号化方法を実行するためのプログラムを記録した記録媒体。
- 請求項1に係る符号化装置の前記分析器において、前記第1のアニメーション経路と前記候補経路との誤差を計算する方法であって、
前記誤差計算部において、
(a)経路点に含まれる一つの成分データを基準成分データとして、前記第1のアニメーション経路と前記候補経路とが、それぞれ同じ時刻における経路点を有するように、前記第1のアニメーション経路と前記候補経路とに経路点を追加する段階と、
(b)前記基準成分データに基づいて、前記第1のアニメーション経路と前記候補経路に含まれる経路点のうち同じ時刻における経路点を基準として、前記第1のアニメーション経路と前記候補経路とを複数の区間に分割する段階と、
(c)前記区間毎に前記第1のアニメーション経路と前記候補経路との誤差を計算する段階と、
(d)前記区間毎に求めた誤差を加算した後に正規化する段階と
を含むことを特徴とする誤差計算方法。 - 前記(c)段階では、
経路点の前記基準成分データ間の距離及び経路点の前記基準成分データ以外の成分データ間の距離に基づき誤差を求めることを特徴とする請求項18に記載の誤差計算方法。 - 前記基準成分データは、前記位置インタポレータに含まれるキーデータであり、
前記(c)段階では、
前記経路点のキーデータ間の距離を台形の高さとして、前記経路点の前記キーデータ以外の成分データ間の距離を台形の上辺及び下辺として設定して誤差を計算することを特徴とする請求項19に記載の誤差計算方法。 - 前記(d)段階では、
経路点の前記基準成分データの両極端値を求め、前記極端値に基づき前記誤差を正規化することを特徴とする請求項18に記載の誤差計算方法。 - コンピュータにロードされたときに、請求項18乃至21のうちのいずれか一項に記載の方法を実行するためのプログラムを記録した記録媒体。
- 請求項1に係る符号化装置の前記分析器において、前記分節点を線形近似化を用いて抽出する方法であって、
(a)前記線形補完部が、前記第1のアニメーション経路に対象区間を設定する段階と、
(b)前記線形補完部が、前記第1のアニメーション経路上に設定された前記対象区間の 始点と終点との間に位置する経路点のうちの一つを選択し、選択した経路点と前記始点とを結ぶ線分と、前記選択した経路点と前記終点とを結ぶ線分とを、それぞれ経路点を補完しつつ形成し、これら線分により形成される候補経路を、前記第1のアニメーション経路上の前記始点と前記終点との間に位置する複数の経路点のそれぞれについて生成する段階と
(c)前記誤差計算部が、前記第1のアニメーション経路と、前記候補経路の各々との誤差を計算する段階と、
(d)前記判断部が、前記第1のアニメーション経路と前記候補経路の各々との誤差のうち、誤差が最小となる前記候補経路の経路点を分節点として決定すると共に、前記最小となる誤差と所定の臨界値とを比較する段階と
(e)前記誤差が所定の臨界値よりも大きい場合、前記第1のアニメーション経路上の、前記始点と前記分節点との間と、前記分節点と前記終点との間に、それぞれ新たな対象区間を設定し、新たに設定された対象区間ごとに、前記(b)段階の処理を行って候補経路を形成すると共に、(c)段階と(d)段階の処理を行って、各対象区間ごとに形成された候補経路を繋いだ経路と前記第1のアニメーション経路との誤差が前記所定の臨界値以下になるまで、新たな対象区間の設定と候補経路の形成が繰り返す段階と
を含むことを特徴とする分節点の抽出方法。 - 前記(c)段階では、
(c1)前記経路点に含まれる一つの成分データを基準成分データとして、前記第1のアニメーション経路と前記候補経路とが、それぞれ同じ時刻における経路点を有するように、前記第1のアニメーション経路と前記候補経路とに経路点を追加すると共に、前記基準成分データに基づいて、前記第1のアニメーション経路と前記候補経路に含まれる経路点のうち同じ時刻における経路点を基準として、前記第1のアニメーション経路と前記候補経路とを複数の区間に分割する段階と、
(c2)前記経路点の基準成分データ間の距離及び経路点の基準成分データ以外の成分データ間の距離に基づき誤差を計算する段階と
を含むことを特徴とする請求項23に記載の分節点の抽出方法。 - 前記経路点は、3次元アニメーションを表現する位置インタポレータであり、
前記基準成分データは、位置インタポレータに含まれるキーデータであり、
前記(c2)段階では、
前記経路点のキーデータ間の距離を台形の高さとして、前記経路点の前記キーデータ以外の成分データ間の距離を台形の上辺及び下辺として設定して誤差を計算することを特徴とする請求項24に記載の分節点の抽出方法。 - 前記経路点は、3次元アニメーションを表現する位置インタポレータであり、
前記基準成分データは、時間軸上のキーフレームの位置情報を表わすキーデータであり、基準成分データ以外の成分データは、アニメーションに表現される客体の位置情報を表わすキー値データである
ことを特徴とする請求項24に記載の分節点の抽出方法。 - コンピュータにロードされたときに、請求項23乃至26のうちのいずれか一項に記載の方法を実行するためのプログラムを記録した記録媒体。
- 請求項10に係る符号化装置の前記リサンプリング部おいて、
複数のキーフレームの時間軸上の位置及びキーフレームに表現される客体の位置を含む経路点よりなる第1のアニメーション経路の分節点を線形近似化を用いて抽出する方法であって、
(a)前記第1のアニメーション経路に対象区間を設定する段階と、
(b)前記第1のアニメーション経路上に設定された前記対象区間の始点と終点との間に位置する経路点のうちの一つを選択し、選択した経路点と前記始点とを結ぶ線分と、前記選択した経路点と前記終点とを結ぶ線分とを、それぞれ経路点を補完しつつ形成し、これら線分により形成される候補経路を、前記第1のアニメーション経路上の前記始点と前記終点との間に位置する複数の経路点のそれぞれについて生成する段階と
(c)前記第1のアニメーション経路と、前記候補経路の各々との誤差を計算する段階と、
(d)前記第1のアニメーション経路と前記候補経路の各々との誤差のうち、誤差が最小となる前記候補経路の経路点を分節点として決定すると共に、前記最小となる誤差と所定の臨界値とを比較する段階と
(e)前記誤差が所定の臨界値よりも大きい場合、前記第1のアニメーション経路上の、前記始点と前記分節点との間と、前記分節点と前記終点との間に、それぞれ新たな対象区間を設定し、新たに設定された対象区間ごとに、前記(b)段階の処理を行って候補経路を形成すると共に、(c)段階と(d)段階の処理を行って、各対象区間ごとに形成された候補経路を繋いだ経路と前記第1のアニメーション経路との誤差が前記所定の臨界値以下になるまで、新たな対象区間の設定と候補経路の形成が繰り返す段階と
(f)前記誤差が前記所定の臨界値以下である場合、前記分節点、前記始点、そして終点に対応する前記キーデータ及び前記キー値データを含む前記位置インタポレータを出力する段階と
を含むことを特徴とする分節点の抽出方法。 - 前記(c)段階では、
(c1)前記キーフレームに対応するように元のアニメーション経路及び補間されたアニメーション経路を分割する段階と、
(c2)分割された各経路のキーフレーム間の時間間隔及びキーフレームの位置情報間の間隔に基づき誤差を計算する段階と、を含むことを特徴とする請求項28に記載の分節点の抽出方法。 - 前記(c2)段階では、
前記キーフレーム間の時間間隔を台形の高さとして、前記各キーフレームの位置情報間の間隔を台形の上辺及び下辺として設定して誤差を計算することを特徴とする請求項29に記載の分節点の抽出方法。 - キーデータに関する情報を示すキーヘッダ、キー値データに関する情報を示すキー値ヘッダ、キーフレームの選択有無を示すキー選択フラグ、キーフレームの時間軸上の位置を示すキーデータ、および前記キーフレーム上の客体の位置情報を示すキー値データ含む位置インタポレータを示すビットストリームを符号化する方法において、
(a)プリザーブキービットおよびナンバーオブキーを含むキーヘッダを生成する段階と、
(b)キー値ヘッダを生成する段階と、
(c)前記キーヘッダに含まれたプリザーブキーピットおよび全体キーフレーム個数を示すナンバーオブキーを用いてキー選択フラグを生成する段階と、
(d)キーヘッダ情報に基づきキーデータを生成して符号化する段階と、
(e)前記キー選択フラグ情報およびキー値ヘッダ情報に基づきキー値データを生成し前記キー値ヘッダ情報に基づき正規化、量子化、DPCM次数およびエントロピーエンコーダ種類に応じて前記キー値データを符号化する段階と
を含むことを特徴とする位置インタポレータを示すビットストリームの符号化方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US33313001P | 2001-11-27 | 2001-11-27 | |
US33454101P | 2001-12-03 | 2001-12-03 | |
US34210101P | 2001-12-26 | 2001-12-26 | |
US36959702P | 2002-04-04 | 2002-04-04 | |
KR1020020070659A KR100552710B1 (ko) | 2001-11-27 | 2002-11-14 | 위치 인터폴레이터 부호화/복호화 방법 및 장치 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006273674A Division JP4629014B2 (ja) | 2001-11-27 | 2006-10-05 | 位置インタポレータの符号化/複合化方法、及び装置 |
JP2006273675A Division JP4555271B2 (ja) | 2001-11-27 | 2006-10-05 | 位置インタポレータの符号化/複合化方法、及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004007392A JP2004007392A (ja) | 2004-01-08 |
JP3965360B2 true JP3965360B2 (ja) | 2007-08-29 |
Family
ID=27532389
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002382761A Expired - Fee Related JP3965360B2 (ja) | 2001-11-27 | 2002-11-27 | 位置インタポレータの符号化/復号化方法、及び装置 |
JP2006273675A Expired - Fee Related JP4555271B2 (ja) | 2001-11-27 | 2006-10-05 | 位置インタポレータの符号化/複合化方法、及び装置 |
JP2006273674A Expired - Fee Related JP4629014B2 (ja) | 2001-11-27 | 2006-10-05 | 位置インタポレータの符号化/複合化方法、及び装置 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006273675A Expired - Fee Related JP4555271B2 (ja) | 2001-11-27 | 2006-10-05 | 位置インタポレータの符号化/複合化方法、及び装置 |
JP2006273674A Expired - Fee Related JP4629014B2 (ja) | 2001-11-27 | 2006-10-05 | 位置インタポレータの符号化/複合化方法、及び装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1320265B1 (ja) |
JP (3) | JP3965360B2 (ja) |
CN (1) | CN1310192C (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3649469B2 (ja) * | 1995-05-12 | 2005-05-18 | 株式会社ソニー・コンピュータエンタテインメント | アニメーションデータの作成方法および作成装置 |
US6075901A (en) | 1998-12-04 | 2000-06-13 | France Telecom | Method and system for predictive encoding of arrays of data |
WO2001041156A1 (en) | 1999-12-01 | 2001-06-07 | Ivast, Inc. | Optimized bifs encoder |
-
2002
- 2002-11-27 EP EP20020258178 patent/EP1320265B1/en not_active Expired - Lifetime
- 2002-11-27 CN CNB021542937A patent/CN1310192C/zh not_active Expired - Fee Related
- 2002-11-27 JP JP2002382761A patent/JP3965360B2/ja not_active Expired - Fee Related
-
2006
- 2006-10-05 JP JP2006273675A patent/JP4555271B2/ja not_active Expired - Fee Related
- 2006-10-05 JP JP2006273674A patent/JP4629014B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1310192C (zh) | 2007-04-11 |
EP1320265B1 (en) | 2014-05-21 |
EP1320265A3 (en) | 2005-05-25 |
JP2007066321A (ja) | 2007-03-15 |
JP2004007392A (ja) | 2004-01-08 |
JP4555271B2 (ja) | 2010-09-29 |
JP4629014B2 (ja) | 2011-02-09 |
EP1320265A2 (en) | 2003-06-18 |
CN1432971A (zh) | 2003-07-30 |
JP2007052804A (ja) | 2007-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100561875B1 (ko) | 위치 인터폴레이터 복호화 방법 및 장치 | |
JP4002502B2 (ja) | 座標インタポレータの符号化/復号化装置及びその方法 | |
US20060171533A1 (en) | Method and apparatus for encoding and decoding key data | |
JP4070783B2 (ja) | データ符号化方法、並びに装置 | |
EP1199894B1 (en) | Coding apparatus and method for orientation interpolator node | |
JP3965360B2 (ja) | 位置インタポレータの符号化/復号化方法、及び装置 | |
US7209590B2 (en) | Coding and decoding apparatus of key data for graphic animation and method thereof | |
JP4104615B2 (ja) | キーデータの符号化及び復号化方法、並びに装置 | |
JP4205426B2 (ja) | 回転インタポレータのキー値データ復号化方法 | |
JPH10187998A (ja) | 映像信号における物体の輪郭線符号化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060405 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060705 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060710 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061005 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20061101 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20061107 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070515 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070528 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110601 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120601 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120601 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130601 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |