(57)【要約】【課題】高次元テクスチャデータのより効率の高いベクトル量子化を可能とするコードブック作成方法を提供する。【解決手段】被写体を複数の撮影条件の下で撮影して取得される高次元テクスチャデータから生成されるトレーニングベクトルを用いてコードブックを作成する方法であって、テクスチャデータの取得時に撮影条件を記録しておき（Ｓ１０１）、トレーニングベクトルが所属するクラスタを求め（Ｓ１０４）、トレーニングベクトルに対して撮影条件に応じて決定される重みにより重み付けを行って得られるベクトルの重心を該トレーニングベクトルが所属するクラスタの新たな代表ベクトルとして求め（Ｓ１０５）、この誤差に基づいて全クラスタの新たな代表ベクトルの総合誤差を評価し（Ｓ１０６）、この総合誤差の推移からコードブックの作成が収束したか否かを判断し（Ｓ１０７）、収束したと判断されるまでＳ１０４〜Ｓ１０６の処理を繰り返す。【選択図】    図８
2004265330.tif 000002
【特許請求の範囲】
【請求項１】
被写体を複数の撮影条件の下で撮影して取得される複数のテクスチャデータからそれぞれ生成されるトレーニングベクトルを用いて、ベクトル空間を分割した複数のクラスタ毎の代表ベクトルが格納された、テクスチャデータのベクトル量子化のためのコードブックを作成する方法であって、
前記テクスチャデータの取得時に前記撮影条件を記録するステップと、
前記トレーニングベクトル毎に所属するクラスタを求めるステップと、
前記トレーニングベクトルに対して記録された撮影条件に応じて決定される重みにより重み付けを行って得られるベクトルの重心を該トレーニングベクトルが所属するクラスタの新たな代表ベクトルとして求めるステップと、
前記トレーニングベクトルに対する前記新たな代表ベクトルの誤差に基づいて全クラスタの新たな代表ベクトルの総合誤差を評価するステップと、
前記総合誤差の推移から前記コードブックの作成が収束したか否かを判断するステップと
を具備するテクスチャデータのベクトル量子化のためのコードブック作成方法。
【請求項２】
前記複数の撮影条件は異なる複数の撮影角度を含み、前記重みは前記被写体を正面から撮影する際の投影面積に対する、正面以外の撮影角度から撮影する際の投影面積の比率に従って決定される請求項１記載のコードブック作成方法。
【請求項３】
前記重みは前記複数の撮影条件の参照頻度により決定される請求項１記載のコードブック作成方法。
【請求項４】
被写体を複数の撮影条件の下で撮影して取得される複数のテクスチャデータからそれぞれ生成されるトレーニングベクトルを用いて、ベクトル空間を分割した複数のクラスタ毎の代表ベクトルが格納された、テクスチャデータのベクトル量子化のためのコードブックを作成する方法であって、
前記テクスチャデータの取得時に前記撮影条件を記録するステップと、
前記テクスチャデータから、記録された撮影条件に応じて決定される個数比率で前記トレーニングベクトルを生成するステップと、
前記トレーニングベクトル毎に所属するクラスタを求めるステップと、
前記トレーニングベクトルの重心を該トレーニングベクトルが属するクラスタの新たな代表ベクトルとして求めるステップと、
前記トレーニングベクトルに対する前記新たな代表ベクトルの誤差に基づいて全クラスタの新たな代表ベクトルの総合誤差を評価するステップと、
前記総合誤差の推移から前記コードブックの作成が収束したか否かを判断するステップと
を具備するテクスチャデータのコードブック作成方法。
【請求項５】
前記複数の撮影条件は異なる複数の撮影角度を含み、前記個数比率は前記被写体を正面から撮影する際の投影面積に対する、正面以外の撮影角度から撮影する際の投影面積の比率に従って決定される請求項４記載のコードブック作成方法。
【請求項６】
前記個数比率は前記複数の撮影条件の参照頻度により決定される請求項４記載のコードブック作成方法。
【請求項７】
請求項１乃至６のいずれか１項に記載のコードブック作成方法により作成されたコードブックを用いて、新たに取得されるテクスチャデータをベクトル量子化するベクトル量子化方法。
【請求項８】
請求項１乃至６のいずれか１項に記載のコードブック作成方法により作成されたコードブックを用いてベクトル量子化により符号化されたテクスチャデータを復号するステップと、復号されたテクスチャデータをマッピング対象のモデルにマッピングして描画を行うステップとを具備するテクスチャ描画方法。
【請求項９】
請求項１乃至６のいずれか１項に記載のコードブック作成方法により作成されたコードブックを用いてベクトル量子化により符号化されたテクスチャデータを復号する復号部と、復号されたテクスチャデータをマッピング対象のモデルにマッピングして描画を行う描画部とを具備するテクスチャ描画装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のテクスチャ画像を切り替えて高品位なＣＧ画像を生成する高次元テクスチャマッピング技術に係り、特に被写体を複数の撮影条件の下で撮影することにより取得されるテクスチャデータをベクトル量子化するためのコードブックの作成方法とベクトル量子化方法並びにこれを用いたテクスチャ描画方法及び装置に関する。
【０００２】
【従来の技術】
３次元ＣＧ（コンピュータグラフィクス）の分野では、高品位な描画を行うために、例えば三角形パッチで構成されるポリゴンモデルに代表されるような３次元モデルの表面に、実世界から取得したテクスチャ画像を貼り付けるテクスチャマッピングと呼ばれる手法が存在する。一方、光源や視点位置に応じた物体表面の陰影をポリゴン表面の塗りつぶしで表現する手法は、一般にシェーディングと呼ばれる。具体的には、ポリゴン内を一様に塗りつぶすフラットシェーディングや、ポリゴン内を頂点輝度値の線形補間で塗るグーローシェーディングなどが知られている。これらのシェーディングとテクスチャマッピングを組み合わせることで、物体モデルと視点や照明位置に応じた陰影の組み合わさったテクスチャマッピングを行うことが可能となっている。
【０００３】
テクスチャマッピングで用いられるテクスチャは通常、特定の撮影条件（特定の照明条件及びカメラ位置）の下で被写体を撮影して得られる画像であり、貼り付ける対象である３次元モデルの形状や描画時の視点及び照明位置といった情報は考慮されていない。このため描画結果は陰影に変化のない単調なものとなり、実写との違いが大きくなってしまう原因にもなっている。シェーディングに関しても、基本的には頂点単位の光源計算で輝度を計算し、ポリゴン内部については線形に補間しているため、３次元物体が本来持っている細かな表面形状に対応した描画は行われていない。
【０００４】
光源処理を頂点単位でなく、ピクセル単位で行う方法も存在する。フォーンシェーディングと呼ばれる手法は、ピクセル単位に物体表面の法線情報を再計算して光源処理を行うため、照明ハイライトなどの表現に有効である。しかし、法線の再計算はポリゴン頂点の法線情報をもとに線形補間を行って求めることが一般的であり、ポリゴン内部の微細な形状を表現しているわけではない。
【０００５】
一方、３次元物体表面をメッシュで構成し、再帰的なポリゴン分割を行うことで物体表面の細かな形状を表現する手法として、Ｓｕｂｄｉｖｉｓｉｏｎ  ｓｕｒｆａｃｅと呼ばれる手法が存在する（非特許文献１参照）。ポリゴンを細かく分割していくことで、頂点単位の光源計算をピクセル単位の光源処理に近づけることができる。但し、この手法では頂点数が膨大になり、３次元頂点の座標計算負荷が重くなる。
【０００６】
以上のような手法を使えば、光源処理の問題は解決される。しかしながら、特定環境で被写体を撮像して得られるテクスチャ画像を３次元モデルの表面に一枚貼り付けているだけでは、実写画像のような視点及び照明位置に対応して変化する画像を生成することは不可能である。
【０００７】
実写画像、すなわちカメラによって撮像した画像は、レンズを通して各ピクセルに入射してくる光の情報を取得したものと考えることができる。つまりテクスチャ画像は撮像時のカメラ位置、向き、時刻といったパラメータで規定できる光の集合とみなすことができる。このような光線情報を再利用することで高品位な画像を生成する技術が登場しており、これはイメージベースレンダリング技術と呼ばれている。
【０００８】
イメージベースレンダリングの一手法として、被写体を異なる視点あるいは照明条件で撮像することによって予め取得した複数のテクスチャ画像をテクスチャデータとして用意しておき、３次元物体のレンダリング時には物体表面の法線や視点及び照明位置などの情報から、用意しておいたテクスチャデータを切り替えてマッピングを行う手法が知られている（非特許文献２参照）。
【０００９】
高次元テクスチャデータは、一般に照明位置を固定して撮像位置を所定のサンプリング間隔でずらせてテクスチャ画像の撮像を繰り返したり、逆に照明位置を所定のサンプリング間隔でずらせてテクスチャ画像の撮像を繰り返すことによって取得される。ここで、被写体の形状が例えば正方形の場合、それを正面から撮影して得られるテクスチャ画像に対して、斜め方向から撮影したときに得られるテクスチャ画像は歪を生じる。テクスチャデータとして保存する際には、正面から取得したテクスチャ画像と斜め方向から取得したテクスチャ画像とで被写体の各頂点を対応させて、斜め方向から取得した画像に対して正面から取得した画像と同様に正方形の領域になるように画像変換を行うことによって、このような歪を補正できる。
【００１０】
このような高次元テクスチャデータを考えられる複数の撮像環境に応じて多数取得して用意しておくことは、テクスチャデータを保存するために膨大な容量のテクスチャメモリを必要とする。従って、テクスチャデータを圧縮符号化してからテクスチャメモリに格納する必要がある。高次元テクスチャデータを圧縮する方法の一つとして、ベクトル量子化を利用する例が知られている（例えば、特許文献１参照）。特許文献１では、同一被写体を多視点から撮影して得られる高次元テクスチャデータをベクトル量子化によって符号化するために、高次元テクスチャデータを全てトレーニングシーケンスとしてコードブックを作成し、被写体毎に作成したコードブックでベクトル量子化を行う。すなわち、被写体毎にコードブックデータとインデックスデータを符号化データとして持つ。
【００１１】
【特許文献１】
特開２０００−３４９６４４
【非特許文献１】
“Ｓｕｂｄｉｖｉｓｉｏｎ  ｓｕｒｆａｃｅ”，  Ｄ．Ｚｏｒｉｎ，  Ｐ．Ｓｃｈｒｏｄｅｒ，  ａｎｄ  Ｗ  Ｓｗｅｌｄｅｎｓ，  Ｉｎｔｅｒｐｏｌａｔｉｎｇ  Ｓｕｂｄｉｖｉｓｉｏｎ  Ｆｏｒ  Ｍｅｓｈｅｓ  Ｗｉｔｈ  Ａｒｂｉｔｒａｒｙ  Ｔｏｐｏｌｏｇｙ．  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  （ＳＩＧＧＲＡＰＨ  ９６  Ｃｏｎｆｅｒｅｎｃｅ  Ｐｒｏｃｅｅｄｉｎｇｓ），  ３０：１８９−１９２，  １９９６．
【非特許文献２】
“Ｂｉｄｉｒｅｃｔｉｏｎａｌ  Ｔｅｘｔｕｒｅ  Ｆｕｎｃｔｉｏｎ（ＢＴＦ）”，  Ｋ．Ｊ．Ｄａｎａ，Ｂ．ｖａｎ  Ｇｉｎｎｅｋｅｎ，  Ｓ．Ｋ．Ｎａｙａｒ，  ａｎｄ  Ｊ．Ｊ．Ｋｏｅｎｄｅｒｉｎｋ．  Ｒｅｆｌｅｃｔａｎｃｅ  ａｎｄ  ｔｅｘｔｕｒｅ  ｏｆ  ｒｅａｌ  ｗｏｒｌｄ  ｓｕｒｆａｃｅｓ．  ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎ  ｏｎ  Ｇｒａｐｈｉｃｓ，  １８（１）：１−３４，  １９９９．
【００１２】
【発明が解決しようとする課題】
ベクトル量子化では、トレーニングシーケンスが符号化対象の一般的な信号分布を代表していることを想定した量子化代表点の割り当てを行うため、高次元テクスチャデータに対してベクトル量子化を適用しようとする場合、以下のような問題点がある。
第１に、前述したように斜め方向から取得されるテクスチャ画像は、正面から取得したテクスチャ画像に変換された後にデータとして保存されるため、傾いた角度から取得したテクスチャ画像のデータほど解像度が低く、含まれる情報が少ない状況になっている。従って、全てのテクスチャデータを同じ条件でトレーニングすると、解像度が低いデータに対しては、それが本来持っている情報と比較して必要以上に多くの代表点が割り当てられることとなり、全体の効率の低下を招いてしまう。
言い換えれば、テクスチャデータの取得に起因する情報の偏り、つまり解像度の高いテクスチャと低いテクスチャがトレーニングシーケンス内に混在すると、従来のコードブック作成方法では全体を最適化する量子化代表点の割り当てができないという問題がある。
【００１３】
第２に、高次元テクスチャデータを取得する際に、前述したような単に角度的に均等に視線及び光源方向をサンプリングしてテクスチャ画像を撮像する方法を用いると、トレーニングシーケンス上のテクスチャ画像の出現頻度と実際のテクスチャ画像が参照される頻度分布のずれが、平均的な画質の観点から見た効率の低下を招いてしまう。
【００１４】
本発明の目的は、高次元テクスチャデータのより効率の高いベクトル量子化を可能とする高次元テクスチャデータのベクトル量子化のためのコードブック作成方法とテクスチャデータのベクトル量子化方法、テクスチャ描画方法及び装置を提供することにある。
【００１５】
【課題を解決するための手段】
上記課題を解決するため、本発明の一つの観点では被写体を複数の撮影条件の下で撮影して取得される複数のテクスチャデータからそれぞれ生成されるトレーニングベクトルを用いて、ベクトル空間を分割した複数のクラスタ毎の代表ベクトルが格納された、テクスチャデータのベクトル量子化のためのコードブックを作成する方法であって、（ａ）前記テクスチャデータの取得時に前記撮影条件を記録するステップと、（ｂ）前記トレーニングベクトル毎に所属するクラスタを求めるステップと、（ｃ）前記トレーニングベクトルに対して記録された撮影条件に応じて決定される重みにより重み付けを行って得られるベクトルの重心を該トレーニングベクトルが所属するクラスタの新たな代表ベクトルとして求めるステップと、（ｄ）前記トレーニングベクトルに対する前記新たな代表ベクトルの誤差に基づいて全クラスタの新たな代表ベクトルの総合誤差を評価するステップと、（ｅ）前記総合誤差の推移から前記コードブックの作成が収束したか否かを判断するステップとを具備するコードブック作成方法を提供する。
【００１６】
ここで、前記複数の撮影条件は例えば異なる複数の撮影角度を含み、前記重みは前記被写体を正面から撮影する際の投影面積に対する、正面以外の撮影角度から撮影する際の投影面積の比率に従って決定される。他の例では、前記重みは前記複数の撮影条件の参照頻度により決定される。
【００１７】
本発明の他の観点によると、被写体を複数の撮影条件の下で撮影して取得される複数のテクスチャデータからそれぞれ生成されるトレーニングベクトルを用いて、ベクトル空間を分割した複数のクラスタ毎の代表ベクトルが格納された、テクスチャデータのベクトル量子化のためのコードブックを作成する方法であって、（ａ）前記テクスチャデータの取得時に前記撮影条件を記録するステップと、（ｂ）前記テクスチャデータから、記録された撮影条件に応じて決定される個数比率で前記トレーニングベクトルを生成するステップと、（ｃ）前記トレーニングベクトル毎に所属するクラスタを求めるステップと、（ｄ）前記トレーニングベクトルの重心を該トレーニングベクトルが属するクラスタの新たな代表ベクトルとして求めるステップと、（ｅ）前記トレーニングベクトルに対する前記新たな代表ベクトルの誤差に基づいて全クラスタの新たな代表ベクトルの総合誤差を評価するステップと、（ｆ）前記総合誤差の推移から前記コードブックの作成が収束したか否かを判断するステップとを具備するテクスチャデータのコードブック作成方法を提供する。
【００１８】
ここで、前記複数の撮影条件は例えば異なる複数の撮影角度を含み、前記個数比率は前記被写体を正面から撮影する際の投影面積に対する、正面以外の撮影角度から撮影する際の投影面積の比率に従って決定される。他の例では、前記個数比率は前記複数の撮影条件の参照頻度により決定される。
【００１９】
本発明の別の観点によると、上述したコードブック作成方法により作成されたコードブックを用いて、取得されたテクスチャデータをベクトル量子化するベクトル量子化方法を提供する。
【００２０】
さらに、本発明によると、上述したコードブック作成方法により作成されたコードブックを用いてベクトル量子化により符号化されたテクスチャデータを復号し、復号されたテクスチャデータをマッピング対象のモデルにマッピングして描画を行うテクスチャ描画方法あるいはテクスチャ描画装置を提供することができる。
【００２１】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について説明する。
［第１の実施形態］
（全体構成）
図１に、本発明の一実施形態に係るデータ作成装置およびテクスチャ描画装置の構成を示す。まず、データ作成装置において高次元テクスチャ撮像装置（カメラ）１によって被写体が複数の撮影条件、例えば複数の視点（撮影角度）及び複数の光源の少なくとも一方を有する条件下で撮影されることにより、複数のテクスチャ画像がテクスチャデータとして取得される。このような複数の視点、複数の光源の下で得られるテクスチャデータを高次元テクスチャデータという。
【００２２】
取得された高次元テクスチャデータは、符号化のために高次元テクスチャデータ蓄積部３にいったん蓄えられる。高次元テクスチャデータは情報量が非常に大きいので、描画装置側で使用されるために符号化部２により圧縮符号化される。符号化部２は、後述するようにベクトル量子化を用いて高次元テクスチャデータの符号化を行う。符号化部２から出力される符号化データ（符号化高次元テクスチャ情報）は、符号化高次元テクスチャ情報蓄積部４に蓄積される。以上がデータ作成装置の処理である。
【００２３】
一方、描画装置は例えば高次元テクスチャを使用したＣＧを使ったゲーム機などであり、データ作成装置により作成され符号化高次元テクスチャ情報蓄積部４に格納された符号化高次元テクスチャ情報は、描画装置側の符号化高次元テクスチャ情報蓄積部５に蓄えられる。符号化高次元テクスチャ情報蓄積部５に蓄積された符号化高次元テクスチャ情報は、随時読み出されて復号部６に送られ、ここで符号化部２と逆の処理により復号される。
【００２４】
一方、グラフィック要求に従って決まる、描画オブジェクトに対する視点や照明などの描画環境を示す描画環境データと３次元モデルの形状データから、描画パラメータ計算部７によりワイヤーフレームの各パッチの描画パラメータが求められる。具体的には、３次元モデル形状データよりパッチ毎に法線が計算され、視点及び照明環境と３次元モデルとの位置関係から、パッチの法線に対する視点方向及び光源方向が決まる。
【００２５】
計算された描画パラメータは、描画テクスチャ選択部８に供給される。描画テクスチャ選択部８では、描画パラメータ計算部７で計算された描画パラメータに従って、高次元テクスチャのうちのどの部分が各パッチに対して使用されるかが決定され、必要なアドレスを指定する情報が符号化高次元テクスチャ情報蓄積部５に送られる。
【００２６】
復号部６には符号化高次元テクスチャデータの中から描画に必要なデータがパッチ毎に選択されて送られ、逐次テクスチャデータに復号されてテクスチャメモリ９に蓄えられる。描画部１０では、モデル形状データを読み込みテクスチャメモリ９に蓄えられたテクスチャデータを使用してテクスチャマッピングが行われる。すなわち、選択されたテクスチャデータがマッピング対象の３次元モデル表面にマッピングされることにより、描画が行われる。描画結果は、表示装置１１によって適宜表示される。
【００２７】
（高次元テクスチャデータの取得方法）
次に、高次元テクスチャ撮像装置１による高次元テクスチャデータの取得方法について説明する。
先に挙げた非特許文献１に開示されたＢＴＦでは、視点位置及び照明位置の指定に、図２に示すような対象物（被写体）を原点とした球座標系を用いる。視点は無限遠、照明は平行光源を仮定すると、視点位置を（θｅ，φｅ）、照明位置を（θｉ，φｉ）と表現することができる。ここでθは例えば方位角、φは例えば仰角であり、φは高次元テクスチャ撮像装置１として用いられるカメラの角度に相当する。このとき、テクスチャアドレスＴは以下のように６次元で定義することができる。
Ｔ（θｅ，φｅ，θｉ，φｉ，ｕ，ｖ）
（ただし、ｕ，ｖはテクスチャ内アドレス）
【００２８】
このようにテクスチャの切替とテクスチャ内アドレスの組み合わせでテクスチャを表現することを高次元テクスチャ・マッピングと呼ぶことにする。言い換えると、高次元テクスチャ画像とは、撮像位置及び照明位置をそれぞれ変えて撮像したテクスチャ画像群のことである。同一の被写体を撮像してレイアウトした高次元テクスチャの例を図３に示す。図３に示された矩形のブロックは、それぞれある撮影条件で撮影されたテクスチャ画像を表している。
【００２９】
このような高次元テクスチャ画像の取得方法としては、例えば図４に示すように、回転する試料台の上に載せられた被写体の上方に撮像装置１を配置した撮像環境を用い、▲１▼光源による照明位置を固定して、撮像位置をθ，φ方向にサンプリング間隔ずらして撮像を繰り返す、▲２▼照明位置をθ方向あるいはφ方向に所定のサンプリング間隔ずらす、という処理を繰り返していけばよい。
【００３０】
この際、図５（ｂ）の左側に示すように正面（θ，φ）＝（０，０）から見て正方形の被写体があったとした場合、（θ，φ）≠（０，０）、すなわち傾きを持たせて撮影を行ってテクスチャ画像を取得すると、図５（ｂ）の右側に示すように投影により撮影される形状が正面から撮影されたときと比較して変形し、歪を生じる。こうして取得されるテクスチャ画像をテクスチャデータとして保存する際には、頂点の対応をとって、すなわち図５の点ａ，ｂ，ｃ，ｄを各テクスチャ画像間で互いに対応させ、正面から取得したテクスチャ画像と同様に正方形の領域になるように画像変換を行うことによって、θ，φの値によらず同じ形式でテクスチャデータを保存する。
【００３１】
（符号化部）
次に、図６を用いて図１中の符号化部２の構成例について説明する。
図１中に示した高次元テクスチャ情報蓄積部３に蓄えられた高次元テクスチャ情報は、相関が強くなるようにブロック化部６１により符号化対象ブロックにまとめられる。符号化対象ブロックは、例えば同一視点・同一光源の画像を４×４画素のブロックに区切ったもの（１６次元ベクトル）や、同一視点・同一光源の画像を２×２画素のブロックに区切り、さらにＲＧＢの成分をまとめたもの（１２次元ベクトル）などである。画像はＲＧＢ成分間にも相関があるため、同一位置の画素のＲＧＢ成分をまとめてベクトル化することは、相関を利用して圧縮する上で効果がある。
【００３２】
ベクトル量子化では、後述するトレーニングによりトレーニングベクトル間の相関を利用した効果が期待できるので、ここでのブロックは視点位置及び光源位置のパラメータをあえてまたぐように設定しなくともよい。但し、視点位置及び光源位置のパラメータをまたぐようにブロックを設定しても、符号化効率の面で大きな問題となることはない。
【００３３】
コードブックメモリ６２には、ベクトル量子化で使用されるコードブックが格納される。コードブックは、後述する手順によりブロック化部６１でブロック化された高次元テクスチャ情報を元に符号化対象ブロックと同じ次元のベクトルの集合として作成される。
【００３４】
マッチング部６３は、符号化対象ブロックとコードブックメモリ６２内のコードブックに含まれる各コードベクトルを比較して両者の誤差を評価し、誤差を最小とするコードベクトルを示す情報（インデックスという）を出力する。このインデックスは、符号化対象ブロックの符号化情報の一部として出力される。本実施形態では、さらに符号化対象画像全体に対して符号化で使用されたコードブック自体も、コードブックメモリ６２から符号化情報の他の一部として出力される。これらコードブックとインデックスが符号化高次元テクスチャ情報として符号化高次元テクスチャ情報蓄積部４に蓄えられる。
【００３５】
（復号部）
次に、図７を用いて符号化部２の図６に示す構成に対応する図１中の復号部４の構成例について説明する。
入力される符号化高次元テクスチャ情報蓄積部５からの符号化高次元テクスチャ情報は、符号化高次元テクスチャ情報蓄積部４に蓄積された情報と全く同じものである。符号化高次元テクスチャ情報蓄積部５からの情報はコードブックとインデックスとに分けられ、コードブックはコードブックメモリ７１上に格納される。
【００３６】
次に、復号の必要のある情報位置（同一視点・同一光源の画像内の位置パラメータｕ，ｖ、視点位置θｅ，φｅ及び光源位置θｉ，φｉにより規定される）のインデックスが符号化高次元テクスチャ情報記憶部５から呼び出される。
【００３７】
一方、テーブル参照部７２によってコードブックメモリ７１がテーブル引きされ、対応するテクスチャのコードベクトルが読み出される。読み出されたコードベクトルは、図１中に示したテクスチャメモリ９に書き込まれる。これらの処理は、描画に必要な全てのテクスチャのコードベクトルがテクスチャメモリ９に書き込まれるまで、繰り返し実行される。
【００３８】
（コードブック作成手順）
次に、図５に示した構成の符号化部２において、高次元テクスチャデータをベクトル量子化する手順、特にコードブックを作成する手順について図８に示すフローチャートを用いて説明する。
【００３９】
コードブックの作成手順を説明する前に、ベクトル量子化の概要について述べる。ベクトル量子化では、まず符号化対象をブロック化する。例えば、符号化対象が画像の場合であれば、画像を４×４画素といったサイズのブロックに分割する。ブロックは複数の要素を含むため、ベクトルとして扱われる。これを入力ベクトルという。この入力ベクトルをコードブック内の各量子化代表ベクトルと比較して、誤差が最小となる量子化代表ベクトルのインデックスで入力ベクトルを表現する。これがベクトル量子化である。量子化代表ベクトルは、多次元ベクトル空間を分割した複数のクラスタ毎の代表ベクトルである。
【００４０】
量子化代表ベクトルも、入力ベクトルと同様に符号化対象のブロックと同じサイズのブロックでできている。量子化代表ベクトルの数は、インデックスに使用するビット数によって決まる。例えば、インデックスが１２ビットならば、量子化代表ベクトルの数は２１２＝４，０９６となる。コードブックの作成は通常、符号化対象の統計的性質を代表する、トレーニングシーケンスと呼ばれる有限の信号源を入力して、繰り返し処理により行う。図８の場合、ステップＳ１０１により取得されるテクスチャ画像が符号化対象であり、テクスチャ画像を分割したブロックをトレーニングベクトルとするトレーニングシーケンスＴＳが求められる。
【００４１】
ステップＳ１０１では、高次元テクスチャ画像の取得を行う。ここでは図４に示した構成により、撮像装置１のφ方向及びθ方向の移動、照明用光源のφ方向及びθ方向の移動を順次行いながらテクスチャ画像を取得し、各テクスチャ画像を図５で説明した方法に従って、全て同一形状・同一サイズの画像に変換した後、高次元テクスチャデータとして蓄積する。
【００４２】
この際、ステップＳ１０１ではテクスチャ毎の撮影条件を後で参照できるように、テクスチャデータとは別に撮影条件を示す情報を付随データとして記録しておく。撮影条件を示す情報の記録については、陽にデータとして記録するのではなく、「何番目から何番目のテクスチャ画像は（θ，φ）の値がいくつ」という参照ができるように、撮影時の条件規則を定めておくだけでもよい。
【００４３】
高次元テクスチャ画像の全てのテクスチャデータをこのような形式にして保持すると、保持されたテクスチャデータのテクスチャ内アドレス（ｕ，ｖ）が同じ画素は、基本的に被写体の同じ部分に対応する。従って、符号化の観点からはテクスチャデータを圧縮符号化する際に、各テクスチャ画像間の相関も利用して効率的に符号化できるという効果をもたらす。こうして取得されたテクスチャデータの各ブロックは、トレーニングデータとしてトレーニングシーケンスＴＳで使用される。
【００４４】
コードブックの作成に際しては、まず初期ベクトルの設定、すなわち代表ベクトルの初期値を求める処理を行う（ステップＳ１０３）。具体的には、例えばトレーニングシーケンスＴＳに対しベクトル空間上で重心を求め、トレーニングシーケンスＴＳを特異値展開して第１主成分ベクトル方向に±の微小ベクトルを設定する。次に、トレーニングシーケンスＴＳ内の各トレーニングベクトルがどちらのベクトルに対してより誤差が小さいかによって、ベクトル空間を２分する。以下、２分されたベクトル空間に対して、同様の処理で４分、８分…とベクトル空間の分割を繰り返し、代表ベクトルの数までベクトル空間を分割することにより、代表ベクトルの初期値を設定する。
【００４５】
一方、ステップＳ１０２において、被写体を正面（θ，φ）＝（０，０）から撮影したときの撮影条件を基準とし、ステップＳ１０１で高次元テクスチャのテクスチャデータを取得した際の撮影条件毎に、この基準の撮影条件に対する投影面積比率を求め、撮影条件毎の重みを撮影条件の関数として保持する。ここで、投影面積とは図１及び図４に示した高次元テクスチャ撮像装置１の撮像面に投影される被写体の面積である。
【００４６】
投影面積比率は例えば図５に示した例でいうと、基準の撮影条件で撮影された図５（ｂ）の左側に示される正方形と、基準の撮影条件以外の撮影条件で撮影された図５（ｂ）の右側に示される平行四辺形との面積比である。また、φ＝０の条件は通常θの値に依存しないので、他のφの値と比較して取得されるテクスチャ画像の枚数が少なくなっていることが考えられる。
【００４７】
例えば、θ，φをいずれも１０°間隔で段階的に変化させた撮影を行う場合、φ＝１０°以降のテクスチャ画像は、θが１０°間隔で変化することによって、３６０°／１０°＝３６枚ずつ取得されるのに対して、φ＝０°のテクスチャ画像は唯１枚である。このような撮影角度によるテクスチャ画像の枚数の差を重み付けで同時に補正する。すなわち、投影面積の補正を別として、正面から撮影したテクスチャ画像に対しては、他の撮影方向から撮影したテクスチャ画像に対して３６倍の重み付けをする。投影面積の補正に関しては、実際の面積を評価する代わりに、これを近似により簡略化した関数としてｃｏｓφの値などを使用するなどして、処理を簡略化することも考えられる。実際の重みの関数を最適化するために、θ，φの値によらず各視点から取得したテクスチャ画像を実際に作成されたコードブックを使って符号化した際のＳＮＲ（信号対雑音比）が一定になるように再帰的に繰り返し試行することにより、重みをθ，φの関数として求めるようにしてもよい。
【００４８】
次に、ステップＳ１０４〜Ｓ１０７の繰り返し処理を行う。まず、トレーニングシーケンスＴＳの各トレーニングベクトルを各クラスタの代表ベクトルと比較して、最も誤差が小さい代表ベクトルを選択することで、各トレーニングベクトルが所属するクラスタを決定する（ステップＳ１０４）。
【００４９】
次に、決定されたクラスタ毎に当該クラスタに所属するトレーニングベクトルの重心を再計算し、それを当該クラスタの新たな代表ベクトルとする（ステップＳ１０５）。この際、まず各トレーニングベクトルについてそれがどのような撮影条件で撮影されたテクスチャデータを基に生成されたベクトルであるかをステップＳ１０１で記録されたテクスチャデータ毎の情報に基づいて確認する（ステップＳ１０５ａ）。次に、トレーニングベクトルの基となったテクスチャデータが取得されたときの撮影条件に応じて、ステップＳ１０２で設定された重み関数を用いて、トレーニングベクトルに対して重み付けを行う（ステップＳ１０５ｂ）。ステップＳ１０５での重心（代表ベクトル）の計算は、以下の数式によって行われる。
【００５０】
【数１】
2004265330.tif 000003
｛Ｘ｝：トレーニングシーケンス
Ｘ：トレーニングシーケンス内の各ベクトル
Ｓｋ：クラスタ（ｋ＝０，…，Ｋ−１）
Ｃｋ：各クラスタの代表ベクトル
Ｎｋ：各クラスタに含まれるベクトルの数
Ｗ（Ｘ）：トレーニングベクトル毎の撮影条件で定義される重み関数
式（１）は、Ｗ（Ｘ）を含んでいる点が通常のベクトル量子化におけるコードブックの作成手順と異なっている。
【００５１】
次に、所属クラスタの各ベクトルと代表ベクトルとの差を誤差として全体の誤差（全クラスタの代表ベクトルの総合誤差）の大きさを評価する（ステップＳ１０６）。この総合誤差の評価に際しては、ステップＳ１０５と同様に、各トレーニングベクトルについてそれがどのような撮影条件で撮影されたテクスチャデータを元に生成されたベクトルであるかをステップＳ１０１で記録したテクスチャデータ毎の情報に基づいて確認し（ステップＳ１０６ａ）、その撮影条件に応じてステップＳ１０２で設定された重み関数を用いて、トレーニングベクトルに対して重み付けを行う（ステップＳ１０６ｂ）。ステップＳ１０６での総合誤差Ｄの評価式は、以下のように表される。
【００５２】
【数２】
2004265330.tif 000004
【００５３】
次に、ステップＳ１０６で評価された総合誤差Ｄの大きさが収束したかを判断する（ステップＳ１０７）。ステップＳ１０７では、Ｄが前回のループでのＤからほとんど減少しなくなったら、処理が収束したものとして終了する。総合誤差Ｄの減り方が所定の閾値より大きいようであれば、現状の代表ベクトルセットでステップＳ１０４〜Ｓ１０６の処理を繰り返す。但し、繰り返し回数の上限を閾値として設け、繰り返し回数が閾値を上回った場合は強制的に終了することが望ましい。
【００５４】
このように本実施形態によると、トレーニングベクトルに対して記録された撮影条件に応じて決定される重みにより重み付けを行い、それにより得られるベクトルの重心を該トレーニングベクトルが所属するクラスタの新たな代表ベクトルとして求める。具体的には、コードブック作成時の量子化代表点の割り当てに際し、被写体を正面から撮影した情報を最も多く含むテクスチャ画像に対して最大の重みを与え、被写体を正面から撮影する際の投影面積に対する、正面以外の撮影角度から撮影する際の投影面積の比率に従って重みを変化させることにより、トレーニングシーケンス内を平均的に均一な画質で符号化できる。従って、総合的により最適に近い符号割り当てを実現することが可能となり、平均的な画質を向上させることができる。
【００５５】
［第２の実施形態］
次に、図９を用いて本発明の第２の実施形態におけるコードブック作成手順について説明する。本実施形態では、図８で説明した第１の実施形態におけるコードブック作成手順と同様の処理をより簡略化した方法で行う。
【００５６】
重心の再計算、誤差の評価の処理として第１の実施形態では各ベクトルに記録された撮影条件に応じた重み付けを行うことで補正を行った。これに対し、第２の実施形態では重み付けを行うことに代えて、記録された撮影条件に応じて決定される個数比率でトレーニングベクトルが生成されるように、同じ撮影条件のテクスチャ画像からトレーニングベクトルの間引きを行う。以下、図９において図８と基本的に同じ処理ステップについては同一番号を付して説明する。
【００５７】
まず、ステップＳ１０１で高次元テクスチャ画像の取得を行った後、ステップＳ２０１で各テクスチャ画像の取得条件の分析を行う。撮影条件のうちトレーニングベクトルに含まれる情報量に影響を与えるのは、主に高次元テクスチャ撮像装置１として用いられるカメラの角度φであるので、ここでの説明はφが同じであれば撮影条件は同じであるとして説明する。このときステップＳ２０１では、第１の実施形態で説明した正面からの撮影時とφ＝φｅのときの撮影時との投影面積比を求め、正面のサンプル数を３６（第１の実施形態における投影面積以外の補正要素に相当）としたときに、φ＝φｅのときのサンプル数が投影面積比と等しくなるような、トレーニングベクトルの個数比率を撮影条件毎に求める。
【００５８】
次に、ステップＳ２０２で撮影条件毎に求めた、トレーニングベクトルの個数比率に従い、取得したテクスチャ全体から撮影条件毎にランダムにトレーニングベクトルの間引きを行うことで、トレーニングシーケンスＴＳを生成する。こうして生成されたトレーニングシーケンスＴＳにより、ステップＳ１０３〜Ｓ１０７でコードブック作成を行う。ステップＳ１０３〜Ｓ１０７の処理は、ステップＳ１０５及びＳ１０６で重み付けを行わない以外、基本的には第１の実施形態と同様である。こうして作成されたコードブックを使用してベクトル量子化により高次元テクスチャデータを符号化する際には、ステップＳ１０１で取得される高次元テクスチャ画像全体に対して符号化を行う。
【００５９】
［第３の実施形態］
次に、図１０を用いて本発明の第２の実施形態におけるコードブック作成手順について説明する。
本実施形態は、テクスチャデータの撮影条件による情報の偏りではなく、テクスチャデータの参照頻度に応じて参照頻度の高いテクスチャほど高画質で符号化できるようにコードブックを作成する。このために第１の実施形態と同様の重み付けを重心の再計算及び全クラスタの代表ベクトルの総合誤差の評価ステップに導入するが、この際の重みの設定の根拠が描画時のテクスチャデータの参照頻度に基づいている点が特徴である。ここで、描画時のテクスチャデータの参照頻度とは、そのテクスチャデータを取得したときの撮影条件の使用頻度に等しい。以下、図１０において図８と基本的に同じ処理ステップについては同一番号を付して説明する。
【００６０】
まず、重みの設定に先立ち、ステップＳ３０１で描画の試行を行う。これは例えば図１に示した高次元テクスチャ描画装置により高次元テクスチャを使ってある被写体の描画を行うことを考えている時に、高次元テクスチャができる前の段階で高次元テクスチャを使用しないＣＧ（コンピュータグラフィクス）として想定する被写体の描画を実際に使用する状況に近い状態で試行して、参照頻度を測定するなどの方法を想定している。この際、描画パラメータ計算部５を動作させながら、ここで得られる描画パラメータを記録する。
【００６１】
次に、ステップＳ３０１で記録された描画パラメータをテクスチャの撮影条件（ここでは、全ての撮影条件として最大でカメラ位置のθ，φ、光源のθ，φ、及びテクスチャ上のアドレスの組み合わせを考える）毎に、参照された頻度を集計する（ステップＳ３０２）。
【００６２】
一方、第１の実施形態と同様に、ステップＳ１０１で高次元テクスチャデータを取得し、トレーニングシーケンスＴＳを生成する。ステップＳ１０２では、第１の実施形態と同様に重みを設定するが、本実施形態では撮影条件毎の重みをステップＳ３０２で集計された参照頻度に基づき、撮影条件毎に定義される重みとして記録する。この場合、最も簡単には、重み＝参照頻度とする方法が考えられる。
【００６３】
以下、実際のコードブック作成はステップＳ１０３〜Ｓ１０７によって行われるが、この手順は重みとして定義された値が上記説明したものであること以外は第１の実施形態の場合と全く同じである。
【００６４】
［その他の実施形態］
本発明では、第１〜第３の実施形態で説明したコードブック作成手順を適宜組み合わせて実施することも可能である。
例えば、第３の実施形態で示したテクスチャの参照頻度（撮影条件の使用頻度）を重みとする方法を第２の実施形態のようにトレーニングベクトルの間引きという形で実施することも可能である。すなわち、参照頻度に応じた比率に従ってトレーニングベクトルを間引き、トレーニングシーケンスを生成する。
【００６５】
また、第１の実施形態と第３の実施形態を両者の効果を加味して同時に実施してもかまわない。この場合、重心の再計算、誤差の評価ステップで使用される重みは第１の実施形態で説明した撮影条件により設定される重みと、第３の実施形態で説明した描画時の参照頻度により設定される重みの積として設定してやればよい。同様に、第２の実施形態と第３の実施形態を同時に実施することも可能である。
【００６６】
【発明の効果】
以上説明したように、本発明によれば高次元テクスチャデータについてより効率の高いベクトル量子化を行うことができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る高次元テクスチャ描画装置の構成を示すブロック図
【図２】高次元テクスチャアドレスに用いる球座標系を説明するための図
【図３】高次元テクスチャの構成例を示す図
【図４】高次元テクスチャ撮像装置の構成例を示す図
【図５】角度による取得テクスチャの歪を説明するための図
【図６】図１中の符号化部の構成例を示すブロック図
【図７】図１中の復号部の構成例を示すブロック図
【図８】本発明の第１の実施形態における高次元テクスチャデータのベクトル量子化のためのコードブック作成手順の第１の例を示すフローチャート
【図９】本発明の第２の実施形態における高次元テクスチャデータのベクトル量子化のためのコードブック作成手順の第２の例を示すフローチャート
【図１０】本発明の第３の実施形態における高次元テクスチャデータのベクトル量子化のためのコードブック作成手順の第３の例を示すフローチャート
【符号の説明】
１…高次元テクスチャ撮像装置
２…符号化部
３…テクスチャメモリ
４…復号部
５…描画パラメータ計算部
６…描画テクスチャ選択部
７…描画部
８…表示装置
【図１】
2004265330.tif 000005
【図２】
2004265330.tif 000006
【図３】
2004265330.tif 000007
【図４】
2004265330.tif 000008
【図５】
2004265330.tif 000009
【図６】
2004265330.tif 000010
【図７】
2004265330.tif 000011
【図８】
2004265330.tif 000012
【図９】
2004265330.tif 000013
【図１０】
2004265330.tif 000014