(57)【要約】      （修正有）【課題】非剛性の物体の動作モデルを高精度に生成する。【解決手段】CPU101は、非剛性の物体に外力を供給するアーム装置203、および、物体を撮影するカメラ装置202を制御する。GPU104は、物体に対応する動作モデルを用いて、物体に所定の外力を加えた場合の物体の形状を表すコンピュータグラフィクス(CG)を描画する。CPU101は、アーム装置203により物体に所定の外力を加えて、カメラ装置202から物体を撮影した画像を取得し、画像とCGの比較、および、動作モデルの外力に対する動きを規定するパラメータの調整により、動作モデルのパラメータを設定する。【選択図】図１
2012003727.tif 000002
【特許請求の範囲】
【請求項１】
非剛性の物体の動作モデルを生成する画像処理装置であって、
前記非剛性の物体に外力を供給する供給装置、および、前記物体を撮影する撮影装置を制御する制御手段と、
前記物体に対応する動作モデルを用いて、前記物体に所定の外力を加えた場合の前記物体の形状を表すコンピュータグラフィクスを描画する描画手段とを有し、
前記制御手段は、前記供給装置により前記物体に前記所定の外力を加えて、前記撮影装置から前記物体を撮影した画像を取得し、前記画像と前記コンピュータグラフィクスの比較、および、動作モデルの外力に対する動きを規定するパラメータの調整により、前記動作モデルのパラメータを設定することを特徴とする画像処理装置。
【請求項２】
前記動作モデルは、前記物体に対応する面に配置された複数の質点と、隣接する質点同士を接続するジョイントによって構成され、前記ジョイントは回転運動とスウィング運動が可能であり、前記パラメータは、前記外力と前記回転運動の関係および前記外力と前記スウィング運動の関係を規定することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記制御手段は、前記比較、前記調整、および、前記描画手段による前記調整の後のパラメータを用いた前記コンピュータグラフィクスの描画を所定の回数、繰り返して、前記画像と前記コンピュータグラフィクスの差分を最小にするパラメータを前記動作モデルのパラメータに設定することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項４】
前記制御手段は、前記差分が所定の閾値未満になった場合、前記差分を得たパラメータを前記動作モデルのパラメータに設定し、前記繰り返しを終了することを特徴とする請求項3に記載された画像処理装置。
【請求項５】
前記制御手段は、前記供給装置により前記物体に前記所定の外力を加えた後、前記撮影装置により前記物体を連続撮影した複数の画像および各画像の撮影タイミングを示す情報を取得し、前記物体に前記所定の外力を加えた後、前記各画像の撮影タイミングにおける前記物体の形状を表すコンピュータグラフィクスを前記描画手段に描画させた複数のコンピュータグラフィクスと前記複数の画像を比較することを特徴とする請求項1に記載された画像処理装置。
【請求項６】
前記制御手段は、前記動作モデルのパラメータを設定した後、前記ジョイントの追加、前記描画手段による前記ジョイントの追加後の動作モデルを用いた前記コンピュータグラフィクスの描画、および、前記比較を所定の回数、繰り返して、前記画像と前記コンピュータグラフィクスの差分を最小にするジョイントの状態を前記動作モデルのジョイントの状態に決定することを特徴とする請求項2に記載された画像処理装置。
【請求項７】
前記制御手段は、前記動作モデルのパラメータを設定した後、前記質点の移動、前記描画手段による前記質点の移動後の動作モデルを用いた前記コンピュータグラフィクスの描画、および、前記比較を所定の回数、繰り返して、前記画像と前記コンピュータグラフィクスの差分を最小にする質点の配置を前記動作モデルの質点の配置に決定することを特徴とする請求項2に記載された画像処理装置。
【請求項８】
制御手段、描画手段を有し、非剛性の物体の動作モデルを生成する画像処理装置の画像処理方法であって、
前記制御手段が、前記非剛性の物体に外力を供給する供給装置、および、前記物体を撮影する撮影装置を制御し、
前記描画手段が、前記物体に対応する動作モデルを用いて、前記物体に所定の外力を加えた場合の前記物体の形状を表すコンピュータグラフィクスを描画し、
前記制御手段は、前記供給装置により前記物体に前記所定の外力を加えて、前記撮影装置から前記物体を撮影した画像を取得し、前記画像と前記コンピュータグラフィクスの比較、および、動作モデルの外力に対する動きを規定するパラメータの調整により、前記動作モデルのパラメータを設定することを特徴とする画像処理方法。
【請求項９】
コンピュータ装置を請求項1から請求項7の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非剛性の物体の動作モデルを生成する画像処理に関する。
【背景技術】
【０００２】
コンピュータグラフィクス(CG)の進化により、実写と見分けが付かない映像生成（photorealistic rendering、写実的描写）が可能になった。この技術を用いれば、モニタ上に様々な物体を再現することができ、最近では、インターネットを介した通販などにも利用されている。
【０００３】
例えば、結婚式などの記念として、写真などが製本されたアルバムがある。アルバムの発注者は、CGによって再現されたアルバムの光沢感や色を参照して、アルバムの製本について指示する。しかし、アルバムは、その光沢感や色だけではなく、紙の硬さも高級感を演出する要素として重要視される。紙の硬さを表現するには、頁をめくる際の紙の動きをCGによって再現する必要がある。
【０００４】
物体の動きの再現に関する研究は、古くから行われており、代表的なものとしてモーションキャプチャが存在する。モーションキャプチャは、物体の各特徴点に検出が容易なマーカを付加して、マーカの動きをキャプチャ（例えばビデオ撮影）する。モーションキャプチャによれば、マーカの位置を正確に検出することができるため、物体の動きをほぼ正確に捉えることができる。その反面、物体の動きが少しで異なれば、別途、キャプチャが必要になる。アルバムの頁をめくる場合を例にすれば、頁のめくり方を変わる度にキャプチャが必要になる。
【０００５】
モーションキャプチャは物体の動きを正確に捉えることができるが、物体の動きが多岐に亘る場合、多数のキャプチャが必要になり不便である。そこで、物理シミュレーションを用いて物体の動きを再現する手法も存在する。
【０００６】
特許文献1、2などには、人間の体を物理モデル化し、任意の環境下における動きを再現したり、顔の表情を変化させる方法が記載されている。しかし、物理モデルに用いる各種制御パラメータの決定は難しく、実物の動きと物理シミュレーションの動きを見比べて、制御パラメータをマニュアル調整することになる。この問題への対処として、例えば非特許文献1は、ビデオカメラを用いて物体の形状、質量などの物理パラメータを推測する手法を記載する。
【０００７】
しかし、非特許文献1の手法は、変形しない剛体の動きに対しては有効であるが、アルバムの頁をめくる場合などの非剛体の運きに対する応用は難しい。また、ある時間連続した映像を必要とし、計算量も膨大である。さらに、物体に加わる外力が未知の場合、物理パラメータを精度よく推測するのは難しい。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開2003-044873公報
【特許文献２】特開平10-149445号公報
【非特許文献】
【０００９】
【非特許文献１】Kiran S. Bhat, Steven M. Seitz, Jovan Popovie, and Pradeep K. Khosla "Computing the Physical Parameters of Rigid-body Motion from Video" ECCV '02, (http://www.cs.cmu.edu/~kiranb/rigidBodies/rigidBodies.html)
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、非剛性の物体の動作モデルを高精度に生成することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１２】
非剛性の物体の動作モデルを生成する際に、前記非剛性の物体に外力を供給する供給装置、および、前記物体を撮影する撮影装置を制御し、前記物体に対応する動作モデルを用いて、前記物体に所定の外力を加えた場合の前記物体の形状を表すコンピュータグラフィクスを描画し、前記供給装置により前記物体に前記所定の外力を加えて、前記撮影装置から前記物体を撮影した画像を取得し、前記画像と前記コンピュータグラフィクスの比較、および、前記動作モデルの外力に対する動きを規定するパラメータの調整により、前記動作モデルのパラメータを設定することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、非剛性の物体の動作モデルを高精度に生成することができる。
【図面の簡単な説明】
【００１４】
【図１】メイン装置の構成例を説明するブロック図。
【図２】非剛性の物体の動作モデルを生成する動作モデル生成装置の構成例を説明する図。
【図３】アーム装置の詳細を説明する図。
【図４】アーム装置を駆動する処理を説明するフローチャート。
【図５】紙の簡易モデルを説明する図。
【図６】紙の動作モデルをCGで再現する方法を説明する図。
【図７】ジョイント調整パラメータを推測する方法を説明するフローチャート。
【図８】実写画像とCGの関係を説明する図。
【図９】複数点の実写画像とCGを比較してジョイント調整パラメータを推測する処理を説明するフローチャート。
【図１０】質点とジョイントの関係を説明する図。
【図１１】追加するジョイントを推測する処理を説明するフローチャート。
【図１２】質点の移動ベクトルを推測する処理を説明するフローチャート。
【発明を実施するための形態】
【００１５】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。以下では、非剛性の物体の簡易的な動作モデル（以下、簡易モデル）を生成し、その動作を規定するパラメータを設定する方法を説明する。また、非剛性の物体例として以下では紙などのフィルム状の物体を説明する。
【実施例１】
【００１６】
［装置の構成］
●メイン装置
図1のブロック図によりメイン装置201の構成例を説明する。マイクロプロセッサ(CPU)101は、メインメモリ102のRAMをワークメモリとして、メインメモリ102のROMや記憶部103に格納されたプログラムを実行する。そして、システムバス109を介して後述する構成を制御し、各種演算処理を実行する。記憶装置103は、例えばハードディスクドライブであり、各種データ、各種プログラムを格納する。CPU101は、ビデオカード107を介してモニタ204に各種情報やユーザインタフェイス(UI)を表示する。そして、例えばUSBなどの汎用インタフェイス(I/F)108に接続されたキーボードやポインティングデバイスからユーザ指示を入力し、ユーザ指示に応じた処理を実行する。
【００１７】
ビデオカード107の描画処理部(GPU)104は、並列演算処理に特化したプロセッサで、CPU101よりも高速にコンピュータグラフィクス(CG)を描画することができる。なお、GPU104は、CGなどの描画にビデオカード107の図示しないビデオRAM(VRAM)を利用する。
【００１８】
アーム制御カード105は、例えばUSBなどのや専用インタフェイスを介してアーム装置203に接続し、CPU101の制御に従い、アーム装置203との間で各種の信号や命令の送受信を行う。カメラ制御カード106は、例えば汎用インタフェイスを介してカメラ装置202に接続し、CPU101の制御に従い、カメラ装置202との間で各種の信号や命令の送受信を行う。なお、ビデオ制御ボード106が受信する信号には、カメラ装置202から出力される静止画や動画のデータが含まれる。つまり、CPU101は、アーム制御カード105やカメラ制御カード106を介して、間接的に、アーム装置203やカメラ装置202を操作する。しかし、以下では、CPU101が、直接、アーム装置203やカメラ装置202にデータや命令を送信して、それらを操作するように説明する。
【００１９】
●動作モデル生成装置
図2により非剛性の物体の動作モデルを生成する動作モデル生成装置の構成例を説明する。
【００２０】
図2(a)に示すように、カメラ装置202は、CPU101の制御の下、台座204上の紙205を撮影する撮影装置である。アーム装置203は、CPU101の制御の下、台座204上の紙205に所定の外力を加えて紙205を変形する、外力を供給するための装置である。また、図2(b)は、動作モデル生成装置における座標系を示し、台座204の中心を原点Oとして、台座204の平面（以下、台座面）にxy座標が、台座面に直交する方向にz座標がそれぞれ定義される。
【００２１】
また、光源206は、紙205を変形した場合に紙205からカメラ装置202に入射する反射光の変化を捉え易いように配置し、例えば、紙205に対する入射角が45度になるように配置する。また、光源206の放射光により紙205の温度が変化して紙205の動きに変化が表れないように、光源206の種類を考慮するか、撮影時以外は光源206をオフにするなどの考慮が必要である。
【００２２】
●アーム装置
図3によりアーム装置203の詳細を説明する。図3(a)に示すように、アーム装置203は、可動部302を有する筺体301、および、マニピュレータ303を有する。筐体301は、可動部302により回転動作と、振り子のような動きを行うスウィング動作が可能で、マニピュレータ303を任意の位置に移動することが可能である。マニピュレータ303は、二本指のクリップ状の構造をもつ。本実施例において、マニピュレータ303が紙205を把持した状態で、筐体301を動かすことによって、頁をめくる動作を再現する。なお、マニピュレータ303には、静電気によって紙205を吸着し、把持し易くする機構が搭載されている。
【００２３】
図3(b)はマニピュレータ303が紙205を把持した様子を示している。この状態で、筐体301の動きによりマニピュレータ303を移動することで、図3(c)に示すように、紙205に任意の外力Fを加えて、頁をめくる動作を再現する。
【００２４】
図4のフローチャートによりアーム装置203を駆動する処理を説明する。
【００２５】
CPU101は、初期座標(x0, y0, z0)と、初期座標への移動命令をアーム装置203に送信する(S501)。例えば、初期座標(x0, y0, z0)は紙205の右上端部（図3(b)参照）である。この移動命令に従い、アーム装置203は、可動部302を駆動してマニピュレータ303の先端を初期座標(x0, y0, z0)に移動する。
【００２６】
次に、CPU101は、物体捕捉命令をアーム装置203に送信する(S502)。この命令に従い、アーム装置203は、マニピュレータ303の先端部に静電気を発生させ、紙205の右上端部を吸着する。次に、アーム装置203は、マニピュレータ303の二本の指を操作して紙205を把持する（図3(b)参照）。
【００２７】
次に、CPU101は、次の情報と、その設定命令をアーム装置203に送信し(S503)、目的位置への移動命令をアーム装置203に送信する(S504)。
目的位置(x1, y1, z1)、
初速度v0 = (vx0, vy0, vz0)（単位m/s）、
加速度a = (ax, ay, az)（単位はm/s2）。
【００２８】
アーム装置203は、設定命令に従い目標位置、初速度、加速度を設定し、移動命令に従いマニピュレータ303を移動する。この移動におけるマニピュレータ303の先端部分の座標は次式によって表される。
(x, y, z) = (x0, y0, z0) + ∫(v0 + at)dt      …(1)
【００２９】
マニピュレータ303の移動に伴い、図3(c)に示すように、紙205が変形される。このとき、紙205の右上端部に加わる外力Farm（単位はN）は次式で表される。
Farm = m×a      …(2)
ここで、mは紙205の右上端部の質量（単位はkg）。
【００３０】
［紙の簡易モデル］
図5により紙の簡易モデルを説明する。紙の簡易モデルは、図5(a)に示すように、その面にほぼ均等に配置された質点402と、それら質点402を接続するジョイント403によって構成される。各質点402は質量mをもち、ジョイント403は隣接する質点402同士を接続する。例えば、紙の全質量をM、簡易モデルの質点数をNとすると、各質点402の質量mはM/Nである。
【００３１】
ジョイント403は、図5(b)に示すように、球状のスフィア部410を略半球状の外殻部411が取り囲む構造を有する。スフィア部410は、外殻部411内で、回転運動とスウィング運動を行うことができる。ジョイント403に加わる外力Fjは、下式に示すように、回転運動方向の力Fθとスウィング運動方向の力Fφに分解される。
Fj = Fθ + Fφ      …(3)
【００３２】
このときの回転運動の回転角度θ[rad]は次式で表される。
θ = fR(Fθ, Kθ, θmin, θmax)      …(4)
【００３３】
式(4)において、Kθは、0＜Kθ≦1の値をもつ回転調整パラメータであり、0に近付くほど回転が容易になり、1に近付くほど回転が困難になる。関数fRは、回転調整パラメータKθに応じて、最小角度θminから最大角度θmaxの範囲で回転角度θを算出する。
【００３４】
また、スウィング運動のスウィング角度φ[rad]は次式で表される。
φ = fP(Fφ, Kφ, φmin, φmax)      …(5)
【００３５】
式(5)において、Kφは、0＜Kφ≦1の値をもつスウィング調整パラメータであり、0に近付くほど回転が容易になり、1に近付くほど回転が困難になる。関数fPは、回転調整パラメータKφに応じて、最小角度φminから最大角度φmaxの範囲でスウィング角度φを算出する。
【００３６】
つまり、回転角度θとスウィング角度φが決まれば、それに応じた力Fjがジョイント403に接続された質点402に加わることになる。回転運動によって生じた力Fθとスウィング運動によって生じた力Fφの和Fθ+Fφ=Fjが質点402に加わる。このとき、次式の関係が成り立つ。
Fθ ∝ 1/θ
Fφ ∝ 1/φ      …(6)
【００３７】
式(6)に示すように、回転角度θやスウィング角度φが小さいほど、質点402に加わる力は大きくなる。これは、回転角度θやスウィング角度φが大きいほど、回転運動やスウィング運動により多くのエネルギを消費するからである。従って、質点402には、それが接続する各ジョイント403からの力を加えた、次式に示す外力Fが加わる。
F = mg + ΣFj      …(7)
ここで、gは重力加速度(gx, gy, gz)=(0, -9.8, 0)。
【００３８】
さらに、式(2)に示すアーム装置203からの外力Farmを加えると、質点402に加わる外力Fは次式で表される。
F = Farm + mg +ΣFj      …(8)
【００３９】
また、質点402の加速度aは次式で表される。
a = F/m      …(9)
【００４０】
このうように、各質点402の加速度aを計算することができるので、各質点402の時間軸に沿った位置を式(1)によって算出することができ、アーム装置203から外力を受けた紙205の動きを再現することができる。なお、質点数を増せば滑らかな動きを再現することが可能である。しかし、計算量が増大し、滑らかな動きの再現と演算に要する時間のバランスを図る必要がある。また、台座との衝突判定や、質点同士の衝突判定が必要であるが、紙の場合はほぼ非弾性衝突として扱うことができ、既知の手法であるため、詳細な説明は省略する。なお、上記では、動作モデルとしてジョイントモデルを用いる例を説明したが、質点同士を発条で接続するような動作モデルを用いてもよい。
【００４１】
なお、以下では、Kθ、θmin、θmax、Kφ、φmin、φmaxを一括して「ジョイント調整パラメータ」と呼ぶ場合がある。
【００４２】
［動作モデルの再現］
図6により紙の動作モデルをCGで再現する方法を説明する。
【００４３】
まず、CGにおける座標系を決定する必要があるが、図2(b)に示す座標系をそのまま用いることにする。つまり、図6(a)に示すように、台座204と同じサイズで生成した台座モデル603の中心を原点Oとして、台座モデル603の平面（台座面）にxy座標が、台座面に直交する方向にz座標をそれぞれ定義する。そして、カメラ装置202の座標に対応するCG空間の座標に仮想カメラ601を配置し、仮想カメラ601の画角とカメラ装置202の画角を一致させる。
【００４４】
次に、台座204と同じサイズの台座モデル603をCG空間に配置し、紙205と同じサイズ、同じ色、同じ光沢度をもつ動作モデル401を、紙205の座標に対応するCG空間の座標に配置する。その際、図6(b)に示すように、動作モデル401の質点608は描画せずに、四つの質点608が囲む四角形を二つに分割したポリゴン（例えば三角形）606、607の集合として動作モデル401を表示する。これにより、紙205の動きをよりリアルに表示することができる。
【００４５】
台座モデル603、動作モデル401、仮想カメラ601などの配置が終了すると、次式に従い、仮想カメラ601から観た映像の描画を行う。
Image = Screen{Proj * View * Pos(x, y, z)}      …(10)
ここで、Projは三次元から二次元への射影行列、
Viewは視点変換行列、
Pos(x, y, z)は各モデルの座標、
Screen()は描画結果を格納するデータに合わせて座標系を変換する関数。
【００４６】
式(10)において、射影行列Projは、仮想カメラ601の画角とクリップ領域を表す。なお、仮想カメラ601の画角はカメラ装置202の画角に一致させる。クリップ領域は、前方クリップ面604と、後方クリップ面605に囲まれた台形領域を表し、この領域が描画対象である。また、視点変換行列Viewは、仮想カメラ601の座標、撮影方向を表す。仮想カメラ601の座標、撮影方向は、カメラ装置202の座標、撮影方向に一致させる。
【００４７】
以上の操作により、仮想カメラ601から観た映像を画像データに変換することができる。さらに、CGをよりリアルにする処理として、動作モデルに陰影をつけるライティングを行ってもよい。つまり、実写環境の光源の位置とCG空間の光源の位置を合わせて、よりリアルなCGを生成する。
【００４８】
［ジョイント調整パラメータ］
図7のフローチャートによりジョイント調整パラメータKθ、θmin、θmax、Kφ、φmin、φmaxを推測する方法を説明する。なお、紙205のサイズ、質量Mなどはデータとして予め与えられているものとする。また、カメラ装置202のレンズの歪みなどを補正する補正処理は、予め行われているとする。
【００４９】
CPU101は、前述したようにアーム装置203を制御して、時刻t0において、紙205の右上端部に外力Farmを加える(S701)。続いて、カメラ装置202に撮影命令を送信して、時刻t1において、紙205を撮影させ、画像取得命令を送信して紙205を撮影した実写画像を受信（取得）する(S702)。図8により実写画像とCGの関係を説明する。図8に示す実写画像801には、変形した紙205、台座204、マニピュレータ303が写っている。
【００５０】
次に、CPU101は、紙205のサイズに合わせた動作モデル401（および、衝突判定を行う場合は台座モデル603）をメインメモリ102のRAMに構成し(S703)、ジョイント調整パラメータの既定値を設定する(S704)。既定値は、例えば次のような値である。
Kθ = 0.5、
θmin = -π/3、
θmax = π/3、
Kφ = 0.5、
φmin = -π/3、
φmax = π/3。
【００５１】
次に、CPU101は閾値Ds、最大試行回数Imax、カウンタi=1を設定する(S705)。ジョイント調整パラメータの推測精度は閾値Dsに依存し、閾値Dsに小さい値を設定するほど推測精度は向上するが、推測解が存在しない可能性が高くなる。そこで、最大試行回数Imaxによって推測処理の回数を制限する。
【００５２】
次に、CPU101は、アーム装置203と同様に、動作モデル401の右上端部に外力Farmを加えて、動きの再現を開始する。再現の開始からt1-t0時間経過するまで再現処理を進めて、実写画像の撮影時刻t1に一致した時点の動作モデル401の各質点の座標を記録する(S706)。続いて、CPU101は、撮影時刻t1における動作モデル401の各質点の座標を含む、描画に必要なデータをGPU104に送信してCGを描画させる(S707)。
【００５３】
GPU104は、台座モデル603、動作モデル401（各質点の座標を含む）、仮想カメラ601、光の入射角などの必要なデータを入力する。そして、図6(a)に示す前方クリップ面604と後方クリップ面605に囲まれた台形領域の描画を行い、CGを生成する。なお、CG（画像）の縦横比、画素数は、実写画像の縦横比、画素数に一致させる。図8に示すように、CG802には、外力を与えられて形状が変形した動作モデル401や台座モデル603が描画されている。
【００５４】
次に、CPU101は、実写画像801とCG802の差分Dを算出し(S708)、カウンタiをインクリメントする(S709)。例えば、両画像における同一位置の画素の値の差の二乗の総和（二乗誤差）を差分Dとすればよい。なお、動作モデル401の質点に対応する画像領域のみから差分Dを算出すれば、演算時間を短縮することができる。また、マニピュレータ303が写っている領域の画素の値は差が大きく、推測精度に大きく影響する可能性がある。そこで、検出し易い色でマニピュレータ303を着色して、実写画像801において当該色を検出した場合は、当該色の領域を差分Dの演算から除外することも有効である。
【００５５】
次に、CPU101は、差分Dと閾値Dsの大小関係を判定し(S710)、差分が閾値未満(D＜Ds)であれば処理を終了する。また、D≧Dsの場合はカウンタiと最大試行回数Imaxを比較し(S711)、i＞Imaxであれば処理を終了する。また、i≦Imaxの場合はジョイント調整パラメータを更新して(S712)、処理をステップS706に戻す。つまり、ステップS710の判定によりD＜Dsになるか、ステップS711の判定によりi＞Imaxになるまで、ステップS706からS712の処理を繰り返す。なお、CPU101は、D＜Dsの条件で処理を終了した場合は、そのときのジョイント調整パラメータを推測解にするが、i＞Imaxの条件で処理が終了した場合は、最も小さい差分Dを示したジョイント調整パラメータを推測解にする。
【００５６】
ジョイント調整パラメータの更新方法は、例えば、ジョイント調整パラメータが取り得る範囲の値を所定の間隔で設定して差分Dを求める方法でもよいし、遺伝的アルゴリズムなどを用いて六つのパラメータを効率よく推測してもよい。また、実写画像801から、紙205の輪郭（エッジ）を抽出してジョイント調整パラメータの範囲を絞り込んでもよい。つまり、柔軟な紙に外力を加えると紙205の輪郭は弧を描くが、硬い紙に外力を加えた場合は直線に近い輪郭を維持する。この特性を応用してジョイント調整パラメータを絞り込むことができる。
【００５７】
このように、実写画像801とCG802の比較により、動作モデル401のジョイント調整パラメータを精度よく推測して、任意の外力が加わった場合に非剛性の物体が示す動きを高精度に再現することができる。
【実施例２】
【００５８】
以下、本発明にかかる実施例2のデータ処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００５９】
実施例2では、比較する実写画像とCGの数を増して、ジョイント調整パラメータの推測精度の向上を図る。つまり、実施例1では、時刻t1における一点の実写画像とCGの比較を行ったが、一点の比較では充分な推測精度が得られない場合がある。例えば、硬さが異なるが近い二種類の紙の動きの差は小さく、一点の比較では、両者の違いを再現するジョイント調整パラメータを推測することはできないと考えられる。
【００６０】
図9のフローチャートにより複数点の実写画像とCGを比較してジョイント調整パラメータを推測する処理を説明する。
【００６１】
まず、CPU101は、撮影回数Sを設定し(S901)、アーム装置203に時刻t0において紙205の右上端部に外力Farmを加えるように命令し、カメラ装置202に時刻t0以降、撮影回数S分、紙205を連続撮影するように命令する(S902)。そして、外力の供給および撮影が終了した後、画像取得命令を送信して紙205を撮影した複数の実写画像およびS回の撮影タイミングを示す情報tk（1≦k≦S）を受信（取得）する(S903)。
【００６２】
次に、CPU101は、紙205のサイズに合わせた動作モデル401（および、衝突判定を行う場合は台座モデル603）をメインメモリ102のRAMに構成し(S904)、ジョイント調整パラメータの既定値を設定する(S905)。
【００６３】
次に、CPU101は閾値Ds、最大試行回数Imax、カウンタi=1を設定する(S906)。そして、CPU101は、動作モデル401の右上端部に外力Farmを加えて、動きの再現を開始する。再現の開始からtS-t0時間経過するまで再現処理を進めて、実写画像の撮影タイミングtk（1≦k≦S）の各時点における動作モデル401の各質点の座標を記録する(S907)。続いて、CPU101は、撮影タイミングtkにおける動作モデル401の各質点の座標を含む、描画に必要なデータをGPU104に送信して撮影回数S分のCGを描画させる(S908)。
【００６４】
次に、CPU101は、対応する実写画像とCGの差分Dk（1≦k≦S）を算出し(S909)、Dkの総和ΣDkを差分Dとし(S910)、カウンタiをインクリメントする(S911)。そして、差分Dと閾値Ds×Sの大小関係を判定し(S912)、差分が閾値と撮影回数の積未満(D＜Ds×S)であれば処理を終了する。また、D≧Ds×Sの場合はカウンタiと最大試行回数Imaxを比較し(S913)、i＞Imaxであれば処理を終了する。また、i≦Imaxの場合はジョイント調整パラメータを更新して(S914)、処理をステップS907に戻す。つまり、ステップS912の判定によりD＜Ds×Sになるか、ステップS913の判定によりi＞Imaxになるまで、ステップS907からS914の処理を繰り返す。なお、CPU101は、D＜Ds×Sの条件で処理を終了した場合は、そのときのジョイント調整パラメータを推測解にするが、i＞Imaxの条件で処理が終了した場合は、最も小さい差分Dを示したジョイント調整パラメータを推測解にする。
【００６５】
このように、複数の実写画像とCGを用いて複数の比較を行うことにより、より高精度にジョイント調整パラメータを推測することができる。例えば、硬さが異なるが近い二種類の紙の動きの小さな差を検出して、両者の違いを再現するジョイント調整パラメータを推測することができる。
【実施例３】
【００６６】
以下、本発明にかかる実施例3のデータ処理を説明する。なお、実施例2において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６７】
実施例3では、非剛性の物体の動きと動作モデルの動きを、より正確に一致させる方法を説明する。
【００６８】
図10により質点とジョイントの関係を説明する。実施例1では、質点を正方格子状に並べ、水平垂直方向に隣接する質点同士をジョイントで接続した動作モデルを用いる例を説明した。しかし、図10(a)に示すように、質点の一部を斜めの方向に接続するジョイントを追加すれば、ジョイントの追加前とは異なる動き再現することが可能になり、通常、ジョイントによる接続数が増えるほど硬い紙の動きを再現し易くなる。また、図10(b)に示すように、質点をランダム配置すれば質点の動きに制限が発生し、紙の繊維構造を疑似的に再現して、紙に動きをより正確に再現することが可能になる。
【００６９】
●ジョイントの追加
図11のフローチャートにより動作モデル401の動きを紙205の動きに近付けるために追加するジョイントを推測する処理を説明する。
【００７０】
CPU101は、図7を用いて説明した手順によりジョイント調整パラメータを推測し、当該ジョイント調整パラメータによる差分Dを閾値Dsとして(S1101)、追加最大回数Jmax、カウンタj=0を設定する(S1102)。
【００７１】
次に、CPU101は、動作モデルにジョイントを追加し(S1103)、動作モデルの右上端部に対し外力Farmを加えて、動きの再現を開始する。再現の開始からt1-t0時間経過するまで再現処理を進めて、実写画像の撮影時刻t1に一致した時点の動作モデル401の各質点の座標を記録する(S1104)。続いて、CPU101は、動作モデルの各質点の座標を含む、描画に必要なデータをGPU104に送信してCGを描画させる(S1105)。
【００７２】
次に、CPU101は、実写画像とCGの差分Dを算出し(S1106)、差分Dと閾値Dsの大小関係を判定し(S1107)、差分が閾値以上(D≧Ds)であれば処理を終了する。ステップS1107の判定における閾値Dsは、直前のステップS1103におけるジョイント追加前の差分Dに相当し、D≧Dsの判定結果はステップS1103のジョイント追加は効果なしと判定したことになる。従って、ステップS1103におけるジョイント追加前のジョイントの状態を動作モデルのジョイントの状態に決定する(S1111)。
【００７３】
一方、D＜Dsの場合はステップS1103のジョイント追加は効果ありと判定したことになり、CPU101は処理を継続し、カウンタjをインクリメントする(S1108)。そして、カウンタjと追加最大回数Jmaxを比較し(S1109)、j≧Jmaxであれば処理を終了して、ステップS1103におけるジョイント追加後のジョイントの状態を動作モデルのジョイントに決定する(S1111)。また、j＜Jmaxの場合は閾値Dsを差分Dで更新し(Ds=D)(S1110)、処理をステップS1103に戻す。つまり、ステップS1107の判定によりD≧Dsになるか、ステップS1109の判定によりj≧Jmaxになるまで、ステップS1103からS1110の処理を繰り返す。
【００７４】
ステップS1103におけるジョイントの追加は、例えば、まず、動作モデルの右上頂点から左下頂点を結ぶ対角線に相当するジョイント（以下、追加ジョイント1）を追加する。次は、動作モデルの左上頂点から右下頂点を結ぶ対角線に相当するジョイント（以下、追加ジョイント2）を追加する。次は、追加ジョイント1に並行するジョイントを追加する。次は、追加ジョイント2に並行するジョイントを追加する…のように行えばよい。
【００７５】
また、前述したように、通常、ジョイントによる接続数が増えるほど硬い紙の動きを再現し易くなり、ジョイントを追加するほど差分Dが小さくなる傾向にある。従って、図11の処理はj=Jmaxになるまで繰り返される可能性が高い。勿論、ジョイント数が増えればCGを生成する演算処理が増加することになり、演算量を考慮すればジョイント数は少ない方が望ましい。そこで、ステップS1107の判定をD≧k×Dsか否かにして、例えばk=0.95にする。こうすれば、ジョイント追加前の差分Dsに対してジョイント追加後の差分Dが95%以上の場合は、ジョイント追加による精度の向上が5%未満として、処理を打ち切ることができる。
【００７６】
●質点のランダム配置
図12のフローチャートにより動作モデル401の動きを紙205の動きに近付けるための質点の移動ベクトルを推測する処理を説明する。
【００７７】
CPU101は、図7を用いて説明した手順によりジョイント調整パラメータを推測し、当該ジョイント調整パラメータによる差分Dを閾値Dsとする(S1201)。そして、最大試行回数Mmax、カウンタm=1を設定し(S1202)、各質点の移動ベクトルを記録する三次元の行列PV[n, x, y]（0≦n≦N-1、Nは質点数）をメインメモリ102のRAMに割り当てる(S1203)。なお、行列PVのx、yの初期値は0である。
【００７８】
次に、CPU101は、移動する一以上の質点とその移動量をランダムに決定し(S1204)、移動を決定したい質点を初期位置から決定した移動量で移動する(S1205)。その際、動作モデルの境界（最外郭）の質点は移動しない、移動後の質点は紙205のサイズに収まるなどの移動条件のほか、一回の移動量に制限を設ける。
【００７９】
次に、CPU101は、質点を移動した動作モデルの右上端部に対し外力Farmを加えて、動きの再現を開始する。再現の開始からt1-t0時間経過するまで再現処理を進めて、実写画像の撮影時刻t1に一致した時点の動作モデル401の各質点の座標を記録する(S1206)。続いて、CPU101は、動作モデルの各質点の座標を含む、描画に必要なデータをGPU104に送信してCGを描画させる(S1207)。
【００８０】
次に、CPU101は、実写画像とCGの差分Dを算出し(S1208)、差分Dと閾値Dsの大小関係を判定し(S1209)、差分が閾値以上(D≧Ds)であれば処理をステップS1211に進める。なお、ステップS1209の判定における閾値Dsは、直前のステップS1205における質点の移動前の差分Dに相当し、D≧Dsの判定結果は質点を移動する効果がないと判定したことになる。一方、D＜Dsの場合は質点を移動する効果があると考えられるので、CPU101は、移動した質点Pmに対応する行列PV[Pm, x, y]に質点Pmのx、y方向の移動量を記録する(S1210)。
【００８１】
次にCPU101は、カウンタmをインクリメントし(S1211)、カウンタｍと最大試行回数Mmaxを比較し(S1212)、m＞Mmaxであれば処理を終了する。また、m≦Mmaxの場合は閾値Dsを差分Dで更新し(Ds=D)(S1213)、処理をステップS1204に戻す。つまり、ステップS1212の判定によりm＞Mmaxになるまで、ステップS1204からS1213の処理を繰り返す。そして、処理が終了した時点の行列PV[n, x, y]が質点の移動ベクトルの推測解であり、各質点の初期位置に対応する移動ベクトルを加えた、各質点の配置を動作モデルの質点の配置に決定する(S1214)。
【００８２】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
2012003727.tif 000003
【図２】
2012003727.tif 000004
【図３】
2012003727.tif 000005
【図４】
2012003727.tif 000006
【図５】
2012003727.tif 000007
【図６】
2012003727.tif 000008
【図７】
2012003727.tif 000009
【図８】
2012003727.tif 000010
【図９】
2012003727.tif 000011
【図１０】
2012003727.tif 000012
【図１１】
2012003727.tif 000013
【図１２】
2012003727.tif 000014