(57)【要約】【課題】髪の毛をより自然にアニメーションできるようにする。【解決手段】テクスチャ生成部４１は、髪の毛の領域よりも大きな領域を可動範囲として設定したテクスチャと、顔の中心から離れている程、大きな遅延量が設定されるテクスチャを生成する。遅延量決定部４９は、処理対象とされる座標における遅延量を決定し、算出値記憶部４８に記憶されている角速度の履歴から、決定された遅延量に対応する角速度を読み出す。テクスチャ変更部５０は、読み出された角速度を用いた演算を行うことにより、テクスチャをピクセル単位で変更する。本発明は、アニメーションを生成するコンピュータに適用することができる。【選択図】図２
2007286669.tif 000002
【特許請求の範囲】
【請求項１】
入力された画像のうち、処理対象とする領域を設定する領域設定手段と、
前記処理対象の領域に、前記画像中の基準となる位置からの距離に応じて遅延量を設定する遅延量設定手段と、
前記画像の所定の位置における角速度を算出する角速度算出手段と、
前記角速度算出手段により算出された前記角速度の履歴を記憶する角速度記憶手段と、
前記処理対象の領域内の前記画像を変更する際、前記遅延量設定手段により設定された遅延量分だけ前の時刻の角速度を、前記角速度記憶手段から読み出す読み出し手段と、
前記読み出し手段により読み出された前記角速度を用いて、前記処理対象の領域内の前記画像を変更する変更手段と
を備える画像処理装置。
【請求項２】
前記処理対象とする領域は、髪の毛の領域を含む
請求項１に記載の画像処理装置。
【請求項３】
時刻ｔにおける画像と、時刻ｔより前の時点での画像との差分から、所定の位置の角度を算出する角度算出手段をさらに備え、
前記角速度算出手段は、前記角度算出手段により算出された前記角度の差分から角速度を算出する
請求項１に記載の画像処理装置。
【請求項４】
前記変更手段による処理は、ピクセルシェーダにより行われ、
前記ピクセルシェーダが処理を行うために必要とされるデータは、テクスチャに含まれて供給される
請求項１に記載の画像処理装置。
【請求項５】
入力された画像のうち、処理対象とする領域を設定する領域設定ステップと、
前記処理対象の領域に、前記画像中の基準となる位置からの距離に応じて遅延量を設定する遅延量設定ステップと、
前記画像の所定の位置における角速度を算出する角速度算出ステップと、
前記角速度算出ステップの処理で算出された前記角速度を履歴として記憶するための制御を行う角速度記憶制御ステップと、
前記処理対象の領域内の前記画像を変更する際、前記遅延量設定ステップの処理で設定された遅延量分だけ前の時刻の角速度を、前記角速度記憶ステップの処理で記憶が制御された履歴から読み出す読み出しステップと、
前記読み出しステップの処理で読み出された前記角速度を用いて、前記処理対象の領域内の前記画像を変更する変更ステップと
を含む画像処理方法。
【請求項６】
入力された画像のうち、処理対象とする領域を設定する領域設定ステップと、
前記処理対象の領域に、前記画像中の基準となる位置からの距離に応じて遅延量を設定する遅延量設定ステップと、
前記画像の所定の位置における角速度を算出する角速度算出ステップと、
前記角速度算出ステップの処理で算出された前記角速度を履歴として記憶するための制御を行う角速度記憶制御ステップと、
前記処理対象の領域内の前記画像を変更する際、前記遅延量設定ステップの処理で設定された遅延量分だけ前の時刻の角速度を、前記角速度記憶ステップの処理で記憶が制御された履歴から読み出す読み出しステップと、
前記読み出しステップの処理で読み出された前記角速度を用いて、前記処理対象の領域内の前記画像を変更する変更ステップと
を含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置および方法、並びにプログラムに関し、特に、リアルなアニメーションを容易に実現することができるようにする画像処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
例えば、人の顔のリアルなコンピュータグラフィック（ＣＧ：Computer Graphics)を生成するには、顔の忠実な３次元モデル、即ち、３次元形状とテクスチャを得る必要がある。顔の忠実な３次元モデルを得る方法としては、例えば、３次元スキャナにより実際の顔をスキャンする方法や、実際の顔の型をとって模型を作成し、３次元ポインタを用いて、模型のデータを入力する方法などがある。
【０００３】
これらの方法によれば、リアルで高精細な３次元モデルを得ることができるので、精細なＣＧが必要とされる映画製作や、リアリティが重要なゲーム製作などでよく利用される。しかしながら、３次元スキャナは高価であり、また、３次元スキャナによって顔のすべてをスキャンするのは、多大な時間を要する。同様に、３次元ポインタも高価であり、さらに、３次元ポインタによるデータの入力は、人手によって行わなければならないため、より多大なコスト（時間と労力）を要する。
【０００４】
また、アニメーションをよりリアルに表現するために、例えば、人間の髪の毛の動きまでもよりリアルに表現することが望まれている。そこで、特許文献１では、髪の毛を１本毎に表現する頭髪の髪型を、複数の異なる頭部形状に対応して変化させることを可能とし、よりリアルに髪の毛を表現することを提案している。
【特許文献１】特開２００１−３５７４１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
髪の毛をＣＧで表現する際、一般的に、個々の髪の毛あるいは髪の毛の集合がポリゴン（Polygon）によるモデリングにより、ポリゴン単位の動きとして表現されている。ポリゴン単位で髪の毛を表現する場合、ポリゴン単位の変形なので、ポリゴンの大きさが大きいと変形や動きに粗さや不連続性が目立ってしまい、リアルな表現が難しいということがあった。
【０００６】
そこで、よりリアルな表現を可能とするために、ポリゴンの大きさを細かくすると、多くのポリゴンを処理しなくてはならなくなり、処理速度の低下や、処理の破綻をまねく可能性があるため、ポリゴンの大きさを細かくするのには限度があった。
【０００７】
また、モデリングは、市販のモデリングツールなどが用いられることが一般的であり、モデリングツールを使用して手作業でモデリングすることが一般的であった。これは、上述したように、多大なコストを要することを意味するため、コストを低減させることが望まれていた。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、より簡便にリアルなアニメーションを実現することができるようにするものである。
【課題を解決するための手段】
【０００９】
本発明の一側面の画像処理装置は、入力された画像のうち、処理対象とする領域を設定する領域設定手段と、前記処理対象の領域に、前記画像中の基準となる位置からの距離に応じて遅延量を設定する遅延量設定手段と、前記画像の所定の位置における角速度を算出する角速度算出手段と、前記角速度算出手段により算出された前記角速度の履歴を記憶する角速度記憶手段と、前記処理対象の領域内の前記画像を変更する際、前記遅延量設定手段により設定された遅延量分だけ前の時刻の角速度を、前記角速度記憶手段から読み出す読み出し手段と、前記読み出し手段により読み出された前記角速度を用いて、前記処理対象の領域内の前記画像を変更する変更手段とを備える。
【００１０】
前記処理対象とする領域は、髪の毛の領域を含むようにすることができる。
【００１１】
時刻ｔにおける画像と、時刻ｔより前の時点での画像との差分から、所定の位置の角度を算出する角度算出手段をさらに備え、前記角速度算出手段は、前記角度算出手段により算出された前記角度の差分から角速度を算出するようにすることができる。
【００１２】
前記変更手段による処理は、ピクセルシェーダにより行われ、前記ピクセルシェーダが処理を行うために必要とされるデータは、テクスチャに含まれて供給されるようにすることができる。
【００１３】
本発明の一側面の画像処理方法は、入力された画像のうち、処理対象とする領域を設定する領域設定ステップと、前記処理対象の領域に、前記画像中の基準となる位置からの距離に応じて遅延量を設定する遅延量設定ステップと、前記画像の所定の位置における角速度を算出する角速度算出ステップと、前記角速度算出ステップの処理で算出された前記角速度を履歴として記憶するための制御を行う角速度記憶制御ステップと、前記処理対象の領域内の前記画像を変更する際、前記遅延量設定ステップの処理で設定された遅延量分だけ前の時刻の角速度を、前記角速度記憶ステップの処理で記憶が制御された履歴から読み出す読み出しステップと、前記読み出しステップの処理で読み出された前記角速度を用いて、前記処理対象の領域内の前記画像を変更する変更ステップとを含む。
【００１４】
本発明の一側面のプログラムは、入力された画像のうち、処理対象とする領域を設定する領域設定ステップと、前記処理対象の領域に、前記画像中の基準となる位置からの距離に応じて遅延量を設定する遅延量設定ステップと、前記画像の所定の位置における角速度を算出する角速度算出ステップと、前記角速度算出ステップの処理で算出された前記角速度を履歴として記憶するための制御を行う角速度記憶制御ステップと、前記処理対象の領域内の前記画像を変更する際、前記遅延量設定ステップの処理で設定された遅延量分だけ前の時刻の角速度を、前記角速度記憶ステップの処理で記憶が制御された履歴から読み出す読み出しステップと、前記読み出しステップの処理で読み出された前記角速度を用いて、前記処理対象の領域内の前記画像を変更する変更ステップとを含む処理をコンピュータに実行させる。
【００１５】
本発明の一側面の画像処理装置および方法、並びにプログラムにおいては、変更対象とする画像の領域が検出され、その領域内の画像が変更される際、所定の位置からの距離に応じて設定された遅延量に基づいて読み出される角速度を用いた演算が行われ、その演算の結果、画像が変更される。
【発明の効果】
【００１６】
本発明の一側面によれば、例えば、髪の毛などを自然でリアルにコンピュータグラフィックで表現することができる。
【００１７】
本発明の一側面によれば、コンピュータグラフィックにおいてピクセル単位の表現が可能となり、より自然でリアルなアニメーションを実現することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００１９】
本発明の一側面の画像処理装置（例えば、図２の画像処理装置１０）は、入力された画像のうち、処理対象とする領域を設定する領域設定手段（例えば、図２の可動範囲設定部４３）と、前記処理対象の領域に、前記画像中の基準となる位置からの距離に応じて遅延量を設定する遅延量設定手段（例えば、図２の遅延量設定部４４）と、前記画像の所定の位置における角速度を算出する角速度算出手段（例えば、図２の角速度算出部４７）と、前記角速度算出手段により算出された前記角速度の履歴を記憶する角速度記憶手段（例えば、算出値記憶部４８）と、前記処理対象の領域内の前記画像を変更する際、前記遅延量設定手段により設定された遅延量分だけ前の時刻の角速度を、前記角速度記憶手段から読み出す読み出し手段（例えば、図２の遅延量設定部４９）と、前記読み出し手段により読み出された前記角速度を用いて、前記処理対象の領域内の前記画像を変更する変更手段（例えば、図２のテクスチャ変更部５０）とを備える。
【００２０】
時刻ｔにおける画像と、時刻ｔより前の時点での画像との差分から、所定の位置の角度を算出する角度算出手段（例えば、図２の角度算出部４６）をさらに備える。
【００２１】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２２】
［画像処理装置の構成について］
図１は、本発明を適用した画像処理装置の一実施の形態の構成を示す図である。画像処理装置１０は、コンピュータで構成することが可能である。
【００２３】
画像処理装置１０は、ＣＰＵ１１を内蔵している。ＣＰＵ１１には、バス１４を介して、入出力インタフェース１５が接続されており、ＣＰＵ１１は、入出力インタフェース１５を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部１６が操作等されることにより指令が入力されると、それに基づいてＲＯＭ(Read Only Memory)１２に格納されているプログラムを実行する。
【００２４】
あるいは、また、ＣＰＵ１１は、ハードディスクなどで構成される記憶部１８に格納されているプログラム、衛星もしくはネットワークから転送され、通信部１９で受信されて記憶部１８にインストールされたプログラム、またはドライブ２０に装着されたリムーバブルメディア２１から読み出されて記憶部１８にインストールされたプログラムを、ＲＡＭ(Random Access Memory)１３にロードして実行する。これにより、ＣＰＵ１１は、後述するフローチャートにしたがった処理、あるいは後述するブロック図の構成により行われる処理を行う。
【００２５】
そして、ＣＰＵ１１は、その処理結果を、必要に応じて、例えば、入出力インタフェース１５を介して、ＬＣＤ(Liquid Crystal Display)やスピーカ等で構成される出力部１７から出力、あるいは、通信部１９から送信、さらには、記憶部１８に記録等させる。
【００２６】
ＣＰＵ１１に実行させるプログラムは、画像処理装置１０に内蔵されている記録媒体としての記憶部１８やＲＯＭ１２に予め記録しておくことができる。あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory)，MO(Magneto Optical)ディスク，DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブルメディア２１に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブルメディア２１は、いわゆるパッケージソフトウエアとして提供することができる。
【００２７】
なお、プログラムは、上述したようなリムーバブルメディア２１から画像処理装置１０にインストールする他、ダウンロードサイトから、デジタル衛星放送用の人工衛星を介して、画像処理装置１０に無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、画像処理装置１０に有線で転送し、画像処理装置１０では、そのようにして転送されてくるプログラムを、例えば、NIC（Network Interface Card）や、IEEE（Institute of Electrical and Electronics Engineers）1394またはUSB（Universal Serial Bus）に準拠したインタフェースである通信部１９で受信し、内蔵する記憶部１８にインストールすることができる。
【００２８】
図１の実施の形態においては、画像処理装置１０（ＣＰＵ１１）が、記憶部１８にインストールされている（アプリケーション）プログラムを実行することにより、例えば、３次元の物体としての、例えば、人の顔が表示された（写っている）２次元の画像から、その顔の３次元モデルを生成する処理（モデリング処理）と、その３次元モデルから、顔（の部位）が動くCGを生成して表示する処理（アニメーション処理）とを行う画像処理装置として機能する。ここでは、特に、髪の毛の動きをよりリアルに表現するための処理を行う画像処理装置の機能について説明を加える。
【００２９】
図２は、図１の画像処理装置１０がプログラムを実行することによって等価的に実現される画像処理装置１０の機能ブロック図である。画像処理装置１０は、テクスチャ生成部４１を有する。テクスチャ生成部４１は、前景部分設定部４２、可動範囲設定部４３、および、遅延量設定部４４という３つの設定部を有し、それぞれの設定部は、設定した情報に応じて、後述するテクスチャ（texture）を生成する。
【００３０】
画像処理装置１０は、また、画像記憶部４５、角度算出部４６、角速度算出部４７、算出値記憶部４８、遅延決定部４９、および、テクスチャ変更部５０を有する。画像記憶部４５は、連続する２フレーム分の画像を記憶する。角度算出部４６は、処理対象とされる画像の所定のアドレスにおけるポリゴン内のテクスチャが、他のポリゴンに移動したときの、移動前の移動先との差分、すなわちこの場合角度を、画像記憶部４５に記憶されている２フレームの画像を用いて検出し、算出値記憶部４８に記憶させる。算出値記憶部４８には、検出された角度の一定期間の履歴が記憶される。
【００３１】
角速度算出部５７は、算出値記憶部４８に記憶されている角度の履歴を用いて、所定のアドレスのポリゴン内のテクスチャが移動したときの角速度を検出し、算出値記憶部４８に記憶させる。算出値記憶部４８には、検出された角速度の一定期間の履歴が記憶される。
【００３２】
遅延決定部４９は、後述するように、ポリゴン内のテクスチャを変更するときの演算に用いる角速度を決定する際に、用いられる遅延量を決定する。遅延決定部４９により決定された遅延量に基づき角速度が、算出値記憶部４８から読み出され、その読み出された角速度を用いた演算を行うことにより、テクスチャ変更部５０は、ポリゴン内のテクスチャを変更する。
【００３３】
このような機能を有する画像処理装置１０の動作について、図３のフローチャートを参照して説明する。ステップＳ１１において、画像処理装置１０は、処理対象とされる画像（フレーム）を入力する。画像記憶部４５（図２）は、入力された画像を記憶する。画像処理装置１０に入力される画像は、アニメーションの対象とされる画像である。
【００３４】
初期画像は、デジタル（スチル）カメラで撮影された画像や、スキャナなどで取り込まれた画像などである。初期画像の後の時点の画像は、初期画像を加工した画像（後述する処理が施された画像）であり、アニメーションを構成する１フレームであり、画像処理装置１０が後述する処理を実行した結果、生成された画像である。
【００３５】
ステップＳ１２において、テクスチャ生成部４１は、入力された画像を分析することによりテクスチャを生成する。生成されるテクスチャは、図４乃至６に示すようなテクスチャである。
【００３６】
図４に示したテクスチャは、前景部分設定部４２により生成されるテクスチャの一例である。前景部分設定部４２は、背景と前景との境界を設定し、背景を黒、前景を白と設定したテクスチャを生成する。前景とは、ここでは、人物の顔の部分と髪の毛の部分を含めた部分である。また、ここでは、背景が黒、前景が白と設定されるとして説明を続けるが、もちろん、背景が白、前景が黒と設定されるようにしても良い（他のテクスチャに関しても同様である）。
【００３７】
このように、背景と前景を区別するためのテクスチャを、前景部分設定部４２は、生成する。図４に示したテクスチャ（以下、適宜、前景テクスチャと記述する）は、例えば、図８に示したような画像が初期画像として供給されたときに、生成される前景テクスチャである（他のテクスチャに関しても同様である）。
【００３８】
また、前景部分設定部４２は、前景テクスチャを生成するとき、処理対象の画像のα値から、前景と背景を識別し、識別結果に応じて、前景テクスチャを生成する。
【００３９】
図５に示したテクスチャは、可動範囲設定部４３により生成されるテクスチャの一例である。可動範囲設定部４３は、髪の毛の領域より大きな領域を可動範囲として設定し、図５に示したように、可動範囲を白、その他の領域を黒と設定したテクスチャ（以下、適宜、可動範囲テクスチャと記述する）を生成する。
【００４０】
可動範囲とは、後述するように、髪の毛に関するテクスチャを書き換える範囲、換言すれば、動きパラメータを基にしてピクセル単位でテクスチャの内容を変化させる範囲である。可動範囲テクスチャの生成に関する処理については、図７のフローチャートを参照して後述する。
【００４１】
図６に示したテクスチャは、遅延量設定部４４により生成されるテクスチャの一例である。遅延量設定部４４は、ポリゴン内のテクスチャを書き換えるとき、後述するように遅延という概念を導入し、遅延量に基づく演算が行われることにより、ポリゴン内に貼り付けるテクスチャが変更されるが、そのような処理に用いられる遅延量を設定し、その設定された値が書き込まれたテクスチャ（以下、適宜、遅延量テクスチャと記述する）を生成する。遅延量をグラデーションで表すならば、図６に示すように、顔と髪の境界線から徐々に色が薄くなるように設定され、色が薄くなるほど、遅延量が大きいことを示す。
【００４２】
すなわち、例えば、顔を横に振るようなアニメーションが行われるとき、顔付近の髪の毛は、顔の動きとともに動くが、顔より離れた位置の髪の毛は、顔の動きよりも遅れて動く（遅延して動く）ので、そのようなアニメーションができるように、顔付近の遅延量よりも顔より離れた位置の遅延量の方が大きくなるように、遅延量が設定され、図６に示したようなテクスチャが生成される。
【００４３】
ここで、図７のフローチャートを参照し、図５に示した可動範囲テクスチャの生成にかかわる処理について説明する。ステップＳ３１において、顔の周辺部が表現される。顔の周辺部が表現されるとは、図８に示したように、入力された画像に対して、顔の部分と類推される部分（髪の毛の部分は含まれない部分）を大枠で囲む処理のことである。
【００４４】
図８に示したように、目、鼻、口を囲うほぼ楕円形の領域を数個の直線の集合で表現することにより、顔の部分と類推される部分が大枠で囲まれる。このように、顔の部分であると類推される部分を囲むため、目、鼻、口といった顔の中で特徴的な部分が抽出され、その抽出された特徴的な部分を囲むようにして、ステップＳ３１における顔の周辺部を表現するといった処理が行われる。
【００４５】
顔の位置、目、鼻、口などの位置を検出する方法は、既に提案されている方法、例えば、AAM(Active Appearance Models)といった方法を適用することが可能である。
【００４６】
図８に示したように、各直線は、点間を結ぶように設定される。各点（各直線）における情報として、集合の中で、自分の位置、前後の点（直線）との関係を認識できる情報が生成される。
【００４７】
ステップＳ３２において、顔と髪の毛の境界が推測される。境界の推測は、各直線を移動させながら、処理対象とされている直線において、その直線の周辺の画像の画素値をサンプリングし、そのサンプリングした画素値の違いなどから、顔と顔以外の部分を判別する。そのような判別が収束したら、それぞれの直線の端点をお互いに整合させることにより、図９に示したように、顔の領域が囲まれる。
【００４８】
画素値をサンプリングした後の、境界の判断方法としては、画素の輝度、色情報、処理対象とされている領域のテクスチャの解析結果などに基づいて行うことができる。
【００４９】
さらに、詳細に顔の領域を設定するために、ステップＳ３３において、直線を細分化する処理が実行される。直線の細分化とは、点間の直線を２または複数に分割する（新たな点を直線状に生成する）ことにより行われる。直線の細分化が行われた画像を、図１０に示す。図１０において、丸で示した点が元々の点であり、５角形で示した点が、新たに生成された点である。新たな点が生成されることにより、６点が１２点になっている。
【００５０】
ステップＳ３４において、所定の回数だけ、上記処理（ステップＳ３２とステップＳ３３の処理）が繰り返されたか否かが判断される。ステップＳ３４において、所定の回数だけ、処理は繰り返されていないと判断された場合、ステップＳ３２に処理が戻され、それ以降の処理が繰り返される。
【００５１】
図１１は、図１０に示した画像に対して、さらに、ステップＳ３２の処理が実行されることにより、各直線において、顔と髪の毛の境界が推測された結果を示す図である。そして、図１２は、図１１に示した画像に対して、ステップＳ３３の処理が実行されることにより、直線が細分化された結果を示す図である。このように、直線を細分化し、直線毎に境界を推測するという処理が繰り返されることにより、徐々に、顔と髪の毛の境界が推測される（設定される）。
【００５２】
ステップＳ３２乃至Ｓ３４の処理が繰り返され、ステップＳ３４において、所定の回数だけ処理が繰り返されたと判断されると、ステップＳ３５において、顔領域が決定される。顔領域とは、顔と髪の毛の境界として設定された枠内の領域である。図１３に、一連の処理で設定された顔領域を示す。
【００５３】
このようにして、顔領域が設定されると、次に、髪の毛の領域が設定される。髪の毛の領域の設定も基本的に顔領域の設定と同様の処理で行われる。すなわち、ステップＳ３６において、髪の毛の周辺部が表現され、ステップＳ３７において、直線毎に境界（この場合、背景と髪の毛の境界）が推測され、ステップＳ３８において、直線が細分化され、ステップＳ３９において所定の回数だけ処理が繰り返されたか否かが判断され、その判断結果に応じて、ステップＳ３７以降の処理が繰り返される。
【００５４】
そして、ステップＳ３９において、所定の回数だけ処理が繰り返されたと判断された場合、ステップＳ４０に処理が進められ、髪領域が決定される。髪領域とは、髪の毛と背景の境界と、顔と髪の毛の境界との間の領域である。既に顔と髪の毛の境界は設定されているので、髪の毛と背景の境界が設定されれば、髪領域も設定できる。図１４は、ステップＳ３６乃至Ｓ３９の処理により設定された、髪の毛と背景の境界線を示している。
【００５５】
ステップＳ４１において、可動範囲が設定される。可動範囲とは、髪領域よりも大きな領域とされる。可動範囲は、例えば、髪の毛と背景との境界（図１４で示した境界線）をラインやスプラインで描画し、そのライン（スプライン）を画像処理的に膨張させることで設定することができる。
【００５６】
図１５に、設定された可動範囲を示す。図１５に示すように、髪の毛の領域よりも大きな領域が可動範囲として設定され、その設定された可動範囲を白、その他の領域を黒と設定することにより、図５に示した可動範囲テクスチャが生成される。
【００５７】
図６に示した遅延テクスチャは、例えば、図１３に示したように、顔と髪の毛の境界が設定された後（顔領域が設定された後）、その境界線から、所定の範囲に位置するポリゴンを遅延量１、次の所定の範囲に位置するポリゴンを遅延量２、さらに次の所定の範囲に位置するポリゴンを遅延量３、・・・、といったように、順次、遅延量が設定されることにより生成される。この場合、顔領域に近い程、遅延量が小さく、顔領域から遠い程、遅延量が大きく設定される。
【００５８】
このようにして、生成された前景テクスチャ、可動範囲テクスチャ、および、遅延量テクスチャを用いた処理について説明を続ける。図３のフローチャートの説明に戻り、ステップＳ１２において、図４乃至図６に示したようなテクスチャが生成されると、ステップＳ１３において、角度、角速度の算出と記憶が行われる。
【００５９】
角度は、角速度を算出するために必要とされる。角度は、角度算出部４６で算出され、角速度は角速度算出部４７で算出される。算出された角度と角速度は、算出値記憶部４８に記憶される。算出値記憶部４８には、所定の期間内（所定のフレーム数）の角度と角速度が記憶されている。
【００６０】
すなわち、算出値記憶部４８は、以下に示すような角度ｒｏｔと角速度ωの履歴を記憶している。
ｒｏｔx［x1，x2，x3，・・・，xt-1，xt，・・・］
ｒｏｔy［y1，y2，y3，・・・，yt-1，yt，・・・］
ωx［ωx1，ωx2，ωx3，・・・，ωx1-1，ωxt，・・・］
ωy［ωy1，ωy2，ωy3，・・・，ωy1-1，ωyt，・・・］
【００６１】
角度ｒｏｔｘや角度ｒｏｔｙは、フレームとフレームの差分が演算されることにより求められる。角速度は、角度から求められる。例えば、時刻ｔにおけるｘ軸方向の角速度ωｘtは、時刻ｔにおける角度ｒｏｔｘtから、１フレーム前の時刻ｔ―１における角度ｒｏｔｘt-1を減算することにより求められる。
角速度ωｘt＝角度ｒｏｔｘt−角度ｒｏｔｘt-1
【００６２】
このように、角度の履歴から角速度の履歴が生成される。また、角度や角速度の履歴は、順次更新される（新たなデータが追加される）。
【００６３】
ステップＳ１４において、遅延量決定部４９により遅延量が決定される。その決定された遅延量に基づき、ステップＳ１５において、テクスチャ変更部５０により、テクスチャが書き換えられる。
【００６４】
ステップＳ１３乃至Ｓ１５までの処理について説明を加える。まず、図１６に示したように、人物の画像の頭部に髪の毛の画像をテクスチャとして用いる単純な形のポリゴンをおく。本実施の形態によれば、図１６の左側に示したように、ポリゴンとして正方形といった単純な図形を用いることが可能であるため、複雑な形のポリゴンを用いた処理や多くのポリゴンを扱う処理と比べて、処理の軽減をはかることが可能となる。
【００６５】
図１６の右側に示した髪の毛の画像のテクスチャが、左側に示した単純な形のポリゴンに貼り付けられる。α値を用いることで、髪の毛の部分と髪の毛のない部分を分けることができ、髪の毛のない部分が透明に設定され、レンダリングされないように制御される。
【００６６】
このような髪の毛の画像のテクスチャは変化させずに、ピクセル毎にピクセル値を与えるテクスチャアドレスを変化させることにより、髪の毛の動きをリアルに表現できるようにする。また、テクスチャアドレスに“揺らぎ”を与えることにより、髪の毛の動きを表現する。テクスチャアドレスを変化させるのに、遅延量というパラメータが用いられる。
【００６７】
ここで、図１６の左側に示したポリゴンの座標（以下、モデル表面の座標と記述する）を、（ｘ，ｙ）と記述する。また図１６の右側に示した髪の毛の画像のテクスチャの座標を、（ｕ，ｖ）と記述する。
【００６８】
テクスチャ内で動きのないテクスチャの座標（ｕ，ｖ）は、モデル表面の座標（ｘ，ｙ）を用いて、以下のように表せる。
ｕ＝ｆｕｎｃ＿ｕ（ｘ，ｙ）  ・・・（１）
ｖ＝ｆｕｎｃ＿ｖ（ｘ，ｙ）  ・・・（２）
式（１）において、ｆｕｎｃ＿ｕは、ｕ座標を求める所定の関数を表し、ｆｕｎｃ＿ｖは、ｖ座標を求める所定の関数を表す。
【００６９】
式（１）と式（２）から、テクスチャ内で動きのないテクスチャの座標（ｕ，ｖ）が求められる。式（１）、式（２）からわかるように、動きのないテクスチャの座標（ｕ，ｖ）は、モデル表面の座標（ｘ，ｙ）のみの関数で表現できる。
【００７０】
一方、テクスチャ内で動きのあるテクスチャの座標（ｕ，ｖ）は、モデル表面の座標（ｘ，ｙ）と、時間ｔ（フレーム）で変化する揺らぎ要因を考慮した関数を用いて、以下のように表せる。
ｕ＝ｆｕｎｃ＿ｕ（ｘ，ｙ）＋ｄｕ（ｘ，ｙ，ｔ）  ・・・（３）
ｖ＝ｆｕｎｃ＿ｖ（ｘ，ｙ）＋ｄｖ（ｘ，ｙ，ｔ）  ・・・（４）
式（３）の右辺の第１項は、式（１）と同一であり、式（４）の右辺の第１項は、式（２）と同一である。すなわち、動きのあるテクスチャの座標は、動きのないテクスチャの座標に対して、ｄｕ（ｘ，ｙ，ｔ）、ｄｖ（ｘ，ｙ，ｔ）という第２項が追加された演算により求められる。
【００７１】
ここで、ｄｕ（ｘ，ｙ，ｔ）、ｄｖ（ｘ，ｙ，ｔ）の具体的な関数の一例を示す。
ｄｕ（ｘ，ｙ，ｔ）＝α１（ｘ，ｙ）×ωｘ（ｘ，ｙ，ｔ）
＋α２（ｘ，ｙ）×ωｙ（ｘ，ｙ，ｔ）
＋α３（ｘ，ｙ）×ωｚ（ｘ，ｙ，ｔ）
＋α４（ｔ）                          ・・・（５）
ｄｖ（ｘ，ｙ，ｔ）＝α５（ｘ，ｙ）×ωｘ（ｘ，ｙ，ｔ）
＋α６（ｘ，ｙ）×ωｙ（ｘ，ｙ，ｔ）
＋α７（ｘ，ｙ）×ωｚ（ｘ，ｙ，ｔ）
＋α８（ｔ）                          ・・・（６）
【００７２】
式（５）、式（６）において、α１，α２，α３，α５，α６，α７は、それぞれ、髪の毛の動きの振幅を与える係数である。これらの係数には、顔の中心よりも遠い位置の座標（ｘ，ｙ）に対しては大きな値が設定される。このように、顔の中心よりも遠い位置の座標（ｘ，ｙ）に対しては大きな値が設定されるようにすることにより、より自然な髪の毛の動きを表現（アニメーション）することが可能となる。また、これらの係数は、遅延量テクスチャ（図６）が参照されることにより設定される値である。
【００７３】
式（５）における、α１（ｘ，ｙ）×ωｘ（ｘ，ｙ，ｔ）、α２（ｘ，ｙ）×ωｙ（ｘ，ｙ，ｔ）、α３（ｘ，ｙ）×ωｚ（ｘ，ｙ，ｔ）の各項と、式（６）におけるα５（ｘ，ｙ）×ωｘ（ｘ，ｙ，ｔ）、α６（ｘ，ｙ）×ωｙ（ｘ，ｙ，ｔ）、α７（ｘ，ｙ）×ωｚ（ｘ，ｙ，ｔ）の各項は、それぞれ、頭部（首）の動きにより、比較的大きく動く髪の毛の動き与える項である。
【００７４】
これらの項のうち、ωｘ、ωｙ、ωｚは、それぞれｘ軸、ｙ軸、ｚ軸周りの頭部の回転角速度である。この角速度は、角速度算出部４７によりステップＳ１３において算出され、算出値記憶部４８に記憶されている角速度である。算出値記憶部４８には、角速度の履歴が記憶されており、履歴の中からどの角速度が読み出されるかは、決定される遅延量に依存する。
【００７５】
すなわち、これらの各項は、時間ｔの関数となっており、頭部の回転が、（ｘ，ｙ）の座標位置まで伝搬する遅延の効果を考慮した関数となっている。遅延の効果を考慮することにより、髪の毛のような柔らかい物体の、その柔らかさや自然な質感を表現することが可能となる。
【００７６】
このように、α１，α２，α３，α５，α６，α７が関わる項は、時間ｔの関数となっており、遅延量を考慮した関数となっている。そこで、ωｘ（ｘ，ｙ，ｔ）、ωｙ（ｘ，ｙ，ｔ）、ωｚ（ｘ，ｙ，ｔ）をそれぞれ遅延量を考慮した式に書き直すと以下のような式（７）、式（８）、式（９）になる。
ωｘ（ｘ，ｙ，ｔ）＝ωｘ（ｔ−ｇ（ｘ，ｙ））    ・・・（７）
ωｙ（ｘ，ｙ，ｔ）＝ωｙ（ｔ−ｇ（ｘ，ｙ））    ・・・（８）
ωｚ（ｘ，ｙ，ｔ）＝ωｚ（ｔ−ｇ（ｘ，ｙ））    ・・・（９）
【００７７】
式（７）乃至（９）において、ｇ（ｘ、ｙ）は、遅延量に関わる項であり、関数ｇの値が大きい程、遅延が大きくなる。例えば、式（７）を参照するに、ωｘ（ｔ−ｇ（ｘ，ｙ））という演算は、時刻ｔから遅延量ｇ（ｘ，ｙ）だけ前の角速度が用いられる演算であることがわかる。よって、上記したように、算出値記憶部４８から読み出される角速度は、遅延量決定部４９によりステップＳ１４において決定された遅延量に基づいて、履歴から読み出される。
【００７８】
遅延量は、図６に示した遅延量テクスチャが参照されることにより設定される。すなわち、遅延量決定部４９は、処理対象とされているモデル表面の座標（ｘ，ｙ）に設定されている遅延量を、遅延量テクスチャを参照して決定し、その決定された遅延量に基づく角速度を、算出値記憶部４８から読み出し、テクスチャ変更部５０に供給する。
【００７９】
テクスチャ変更部５０は、上記した式（５）、（６）に基づく演算を行うことにより、髪の毛を動かすテクスチャマッピングの座標を算出する。
【００８０】
式（５）、式（６）において、α４（ｔ），α８（ｔ）は、それぞれ風などの環境により、常に微少になびいている髪の毛の動きを考慮し、そのような動きを表現するために演算される項である。このα４（ｔ），α８（ｔ）は、比較的周波数の高い振動の関数であり、例えば、ｓｉｎカーブや、その重ね合わせで与えられる。
【００８１】
このような、常に微少になびいている髪の毛の動きを考慮したα４（ｔ），α８（ｔ）という演算までも行うことで、より自然な髪の毛の動きを表現することが可能となる。
【００８２】
このように、髪の毛の領域（可動範囲）を設定し、その可動範囲内において、マッピングされるテクスチャの内容を、遅延量を考慮した演算を行い、ピクセル単位で変化させることにより、自然でリアルな表現（アニメーション）が可能となる。また、ピクセル単位での表現をより容易に行うことが可能となる。さらに、上記した処理は、ユーザの手を煩わすことなく、画像処理装置１０側で行うことが可能である。
【００８３】
［ピクセルシェーダを用いた画像処理について］
上記した実施の形態においては、ＣＰＵ１１（図１）が所定のプログラムを実行することにより上記したような処理が実行されるとして説明した。上記した処理を、ピクセルシェーダを用いて実行させることも可能である。ピクセルシェーダを用いることにより、通常のテクスチャマッピングだけでなく、各ピクセルにマッピングするテクスチャのアドレスを任意に変えることができるようになる。
【００８４】
ピクセルシェーダを用いた場合、図１７に示すように、ＣＰＵ１１からピクセルシェーダ１０１に対して、ピクセルシェーダ１０１が処理を実行するうえで必要とされるデータが供給される。具体的にはピクセルシェーダ１０１は、この場合、式（３）と式（４）に基づく演算を行うため、式（３）と式（４）の演算を行ううえで必要とされるデータが、ＣＰＵ１１から供給される。
【００８５】
式（３）と式（４）に基づく演算を行うためにＣＰＵ１１からピクセルシェーダ１０１に供給されるデータは、以下のデータ１乃至３である。
データ１：振幅α１，α２，α３，α５，α６，α７
データ２：遅延ｇ（ｘ，ｙ）
データ３：頭部回転の角速度ωｘ、ωｙ、ωｚ
【００８６】
なお、α４とα８は、ピクセルシェーダ１０１のプログラムで任意に与えることができるため、ＣＰＵ１１からピクセルシェーダ１０１に供給する必要はない。
【００８７】
データ１とデータ２は、ｘとｙの２変数の関数なので、図１８に示したように、テクスチャ１２０に含ませてピクセルシェーダ１０１に供給することが可能である。すなわち、テクスチャ画像自体もｘ軸とｙ軸を有する２次元の画像であり、ｘ，ｙの２変数の関数を画像として持つことが可能であるので、ｘとｙの２変数の関数であるデータ１とデータ２を、テクスチャ１２０に含ませることは可能であるし、含ませた状態で、ＣＰＵ１１からピクセルシェーダ１０１に供給することも可能である。
【００８８】
具体的には、図１８に示すように、テクスチャ１２０の上側の所定の領域をテクスチャ画像に割り当て（テクスチャ部１２１）、下側の所定の領域をデータを含ませる領域に割り当てる（データ部１２２）。
【００８９】
ＣＰＵ１１からピクセルシェーダ１０１にテクスチャ画像を供給するのは一般的に備わっている機能であるため、親和性が良く、テクスチャ画像にテクスチャ以外のデータを含ませて供給すること、そして、ピクセルシェーダ１０１側で利用することは可能である。
【００９０】
ピクセルシェーダ１０１に供給するデータは、データ１乃至データ３の３つある。そこで、ここでは、マルチテクスチャの機能を用いて、データ１乃至データ３をピクセルシェーダ１０１に供給するようにする。下記に、その一例を示す。
テクスチャ１：髪の毛のｒ，ｇ，ｂ，ａのテクスチャ画像（通常のテクスチャ画像）
テクスチャ２：α１，α２，α３，α５を、それぞれｒ，ｇ，ｂ，ａの画像として持つ
テクスチャ３：α６，α７，ｇ（ｘ，ｙ）を、それぞれｒ，ｇ，ｂ，ａの画像として持つ
【００９１】
なお、α１，α２，α３，α５，α６，α７を統廃合すれば、必要なテクスチャの数を減少させることが可能となり、そのような実施の形態でも良い。
【００９２】
データ３の角速度の履歴に関しては、ピクセルシェーダ１０１に配列の変数を与えるのが困難であったり、ピクセルシェーダ１０１中に配列をもっていて、ランタイム（Runtime）で参照する配列のインデックスを決めることが不可能であったりすることが考えられるため、その履歴情報を、マルチテクスチャのどれかの画像の一部に埋め込むことにより、ＣＰＵ１１からピクセルシェーダ１０１に供給されるようにする。
【００９３】
角速度を配列で持っておくということは、離散的な時間（とびとびの時間）での情報となることを意味するが、テクスチャに埋め込むことにより、テクスチャのフィルタリング機能を使い、自動的に補間された連続的な時間での情報（関数）として取り出すことが可能となるという利点もある。
【００９４】
このように、テクスチャにデータを含ませて、ＣＰＵ１１からピクセルシェーダ１０１にデータを供給することにより、ピクセルシェーダ１０１において上記した処理、すなわち、図３乃至図１６を参照して説明した処理を実行することが可能となる。よって、ピクセルシェーダ１０１において実行される処理は、上記した場合と同様に実行されるので、その説明は省略する。
【００９５】
また、ピクセルシェーダ１０１において処理を実行させるようにした場合であっても、自然でリアルな表現が可能となり、ピクセル単位での表現がより容易に行うことが可能となり、ユーザの手を煩わすことなく、画像処理装置１０側で行うことが可能であるといった利点が同様にある。
【００９６】
上記した実施の形態においては、髪の毛をアニメーションすることを例に挙げて説明したが、髪の毛以外のアニメーション、例えば、木々が風に揺れるようなアニメーションにも、本発明を適用することは可能である。
【００９７】
なお、本明細書において、プログラム格納媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【００９８】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００９９】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１００】
【図１】本発明の画像処理装置の一実施の形態の構成を示す図である。
【図２】画像処理装置の機能を示す図である。
【図３】画像処理装置の動作を説明するフローチャートである。
【図４】テクスチャの一例を示す図である。
【図５】テクスチャの一例を示す図である。
【図６】テクスチャの一例を示す図である。
【図７】可動範囲の設定について説明するフローチャートである。
【図８】領域の設定の仕方について説明する図である。
【図９】領域の設定の仕方について説明する図である。
【図１０】領域の設定の仕方について説明する図である。
【図１１】領域の設定の仕方について説明する図である。
【図１２】領域の設定の仕方について説明する図である。
【図１３】領域の設定の仕方について説明する図である。
【図１４】領域の設定の仕方について説明する図である。
【図１５】領域の設定の仕方について説明する図である。
【図１６】座標について説明する図である。
【図１７】ピクセルシェーダを用いたときの構成例を示す図である。
【図１８】テクスチャ画像内にデータを含めるときのデータ構成を示す図である。
【符号の説明】
【０１０１】
１０  画像処理装置，  １１  ＣＰＵ，  １２  ＲＯＭ，  １３  ＲＡＭ，  １４  バス，  １５  入出力インタフェース，  １６  入力部，  １７  出力部，  １８  記憶部，  １９  通信部，  ２０  ドライブ，  ２１  リムーブルメディア，  ４１  テクスチャ生成部，  ４２  前景部分設定部，  ４３  可動範囲設定部，  ４４  遅延量設定部，  ４５  画像記憶部，  ４６  角度算出部，  ４７  角速度算出部，  ４８  算出値記憶部，  ４９  遅延量決定部，  ５０  テクスチャ変更部
【図１】
2007286669.tif 000003
【図２】
2007286669.tif 000004
【図３】
2007286669.tif 000005
【図４】
2007286669.tif 000006
【図５】
2007286669.tif 000007
【図６】
2007286669.tif 000008
【図７】
2007286669.tif 000009
【図８】
2007286669.tif 000010
【図９】
2007286669.tif 000011
【図１０】
2007286669.tif 000012
【図１１】
2007286669.tif 000013
【図１２】
2007286669.tif 000014
【図１３】
2007286669.tif 000015
【図１４】
2007286669.tif 000016
【図１５】
2007286669.tif 000017
【図１６】
2007286669.tif 000018
【図１７】
2007286669.tif 000019
【図１８】
2007286669.tif 000020