【文献】
関根 真弘 杉田 馨 フランク ペルーベー,仮想試着システムにおける体型推定を用いた衣服画像合成技術,東芝レビュー Vol.70 No.5 (2015),日本,株式会社東芝,2015年 5月,Vol.70 No.5,P.42-45
【文献】
杉田 馨 関根 真弘 西山 正志,人物シルエットへの時空間位置合わせによる衣服画像の合成,電子情報通信学会論文誌 D Vol.J97-D No.9,日本,社団法人 電子情報通信学会,2014年 9月 1日,Vol.J97-D No.9,P.1519-1528
【文献】
平尾 公男,多関節CGモデルと距離画像による上半身の姿勢推定,電子情報通信学会技術研究報告 パターン認識・メディア理解 Vol.104 No.573,日本,社団法人 電子情報通信学会,2005年 1月14日,PRMU2004-177,P.79-84,ISSN 0913-5685
(58)【調査した分野】(Int.Cl.,DB名)
前記3次元モデル生成システムは、前記体型変形手段により変形した3次元モデルの表面形状の一部と、当該部分に対応する前記被写体の表面形状と、の差に基づいて、当該部分を変形させる部分変形手段、
を更に含むことを特徴とする請求項1又は2に記載の3次元モデル生成システム。
前記3次元モデル生成システムは、前記深度情報に基づいて、前記3次元モデルの中から、前記深度検出装置の検出範囲に対応する部分を特定する検出範囲特定手段を更に含み、
前記部分変形手段は、前記3次元モデルのうち、前記検出範囲特定手段により特定された部分を変形させる、
ことを特徴とする請求項3に記載の3次元モデル生成システム。
前記3次元モデル生成システムは、前記3次元モデル又は前記被写体の表面形状に基づいて、前記3次元モデルの中から、前記被写体の身体に対応する身体部分を特定する身体部分特定手段を更に含み、
前記体型決定手段は、前記体型パラメータを決定する場合に、前記身体部分に対応する差の重み付けを、他の部分の差の重み付けよりも高くする、
ことを特徴とする請求項1〜6の何れかに記載の3次元モデル生成システム。
前記3次元モデル生成システムは、前記深度情報に基づいて、前記3次元モデルの中から、前記深度検出装置の検出範囲に対応する頂点を特定する検出範囲特定手段を更に含み、
前記体型決定手段は、前記検出範囲における前記3次元モデルの表面形状と、前記被写体の表面形状と、の差に基づいて、前記体型パラメータを決定する、
ことを特徴とする請求項1〜7の何れかに記載の3次元モデル生成システム。
【発明を実施するための形態】
【0020】
[1.3次元モデル生成システムのハードウェア構成]
以下、本発明に関わる3次元モデル生成システムの実施形態の例を説明する。
図1は、3次元モデル生成システムにおいて被写体が撮影される様子を示す図であり、
図2は、3次元モデル生成システムのハードウェア構成を示す図である。
図1及び
図2に示すように、3次元モデル生成システム1は、深度検出装置10及び3次元モデル生成装置20を含む。深度検出装置10及び3次元モデル生成装置20は、有線通信又は無線通信によりデータ送受信可能に接続される。
【0021】
深度検出装置10は、被写体の深度を検出する計測機器である。例えば、深度検出装置10は、Kinect(登録商標)センサであってよい。深度は、深度検出装置10と被写体との距離である。被写体は、検出対象となる動く物体であり、例えば、人や動物及びその被服である。
【0022】
深度検出装置10は、制御部11、記憶部12、通信部13、及び深度検出部14を含む。制御部11は、例えば、一又は複数のマイクロプロセッサを含む。制御部11は、記憶部12に記憶されたプログラムやデータに従って処理を実行する。記憶部12は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMなどの揮発性メモリであり、補助記憶部は、ハードディスクやフラッシュメモリなどの不揮発性メモリである。通信部13は、有線通信又は無線通信用のネットワークカードを含む。通信部13は、ネットワークを介してデータ通信を行う。
【0023】
深度検出部14は、電磁波や音波などを利用して深度を検出する深度センサ(距離カメラ)であり、例えば、RGBDカメラや超音波センサなどである。ここでは、深度検出部14がRGBDカメラを含み、赤外線を利用して被写体の深度を検出する場合を説明するが、深度検出部14自体は、公知の種々の深度センサにより実現可能である。
【0024】
例えば、深度検出部14のRGBDカメラは、CMOSイメージセンサ又はCCDイメージセンサと、赤外線センサと、を含む。深度検出部14は、CMOSイメージセンサ又はCCDイメージセンサの検出信号により、被写体のRGB画像を生成する。RGB画像は、被写体の平面的な情報であり、深度を持たない。また、深度検出部14は、赤外線センサの発光素子から赤外線を発射し、被写体により反射した赤外線を受光素子で検出する。そして、深度検出部14は、赤外線を発射してから戻るまでの飛行時間に基づいて、被写体との距離を推定して深度情報を生成する。なお、深度情報の生成方法自体は、公知の種々の手法を適用可能であり、上記説明した飛行時間方式以外にも、ライトコーディング方式を利用してもよい。
【0025】
図3は、深度情報の一例を示す図である。
図3に示すように、ここでは、深度情報Iは、深度画像として示される。このため、深度情報Iの各ピクセルには、深度を示す画素値が関連付けられる。なお、深度情報Iは、RGB画像と別の画像として扱ってもよいし、RGB画像と1つにまとめたRGBD画像として扱ってもよい。RGBD画像とする場合には、各ピクセルの画素値は、各色チャンネルの数値に加えて、深度チャンネルの数値を含むことになる。本実施形態では、深度情報IがRGB画像とは別のものとして扱われる場合を説明する。
【0026】
深度検出装置10は、深度検出部14が検出した深度情報Iに基づいて、被写体の各関節の位置を推定してスケルトンを取得する。スケルトンは、公知の種々の抽出方法で取得可能であるが、ここでは、テンプレートマッチングを利用した方法を一例として説明する。例えば、深度検出装置10は、深度検出部14が検出した深度情報Iと、被写体の輪郭の基本形状を示すテンプレート画像と、のテンプレートマッチングを実行し、深度情報Iにおける被写体の各関節の位置(ピクセル)を推定する。そして、深度検出装置10は、各関節の深度を所定の行列変換することで、各関節の3次元的な位置を推定する。当該推定された各関節の位置は、スケルトンの姿勢であり、以降では、検出姿勢情報として表される。
【0027】
図4は、検出姿勢情報の一例を示す図である。
図4に示すように、検出姿勢情報Jは、被写体の複数の関節のそれぞれの3次元座標を含む。ここでは、検出姿勢情報Jは、頭J
1、肩中央J
2、右肩J
3、右ひじJ
4、右手J
5、左肩J
6、左ひじJ
7、左手J
8、背骨J
9、尻中央J
10、右尻J
11、右ひざJ
12、右足J
13、左尻J
14、左ひざJ
15、及び左足J
16の3次元座標を含む場合を説明する。なお、
図4では、深度検出装置10から被写体を見た様子を示すので、図面上では左右の位置関係が逆になっている。また、検出姿勢情報Jが示す関節の数は、上記16個より多くてもよいし、少なくてもよい。検出姿勢情報Jは、深度情報Iから検出可能な関節の位置を示せばよく、他にも例えば、手首や足首の位置を含んでいてもよい。
【0028】
本実施形態では、深度検出装置10は、所定のフレームレートのもと、深度情報Iと検出姿勢情報Jを生成する。このため、深度検出装置10は、深度情報Iと検出姿勢情報Jを定期的に生成する。例えば、フレームレートを30fpsとすると、深度検出装置10は、1/30秒ごとに深度情報Iと検出姿勢情報Jを生成する。以降、深度情報Iと検出姿勢情報Jのうち、ある時刻tのものを指すときは、それぞれの符号をI
t,J
tと記載する。
【0029】
3次元モデル生成装置20は、3次元モデルを生成するコンピュータであり、例えば、パーソナルコンピュータ、携帯情報端末(タブレット型コンピュータを含む)、又は携帯電話機(スマートフォンを含む)等である。3次元モデル生成装置20は、制御部21、記憶部22、通信部23、操作部24、及び表示部25を含む。制御部21、記憶部22、及び通信部23のハードウェア構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であるので説明を省略する。
【0030】
操作部24は、プレイヤが操作を行うための入力デバイスであり、例えば、タッチパネルやマウス等のポインティングデバイスやキーボード等である。操作部24は、プレイヤによる操作内容を制御部21に伝達する。表示部25は、例えば、液晶表示部又は有機EL表示部等である。表示部25は、制御部21の指示に従って画面を表示する。
【0031】
なお、記憶部12,22に記憶されるものとして説明するプログラム及びデータは、ネットワークを介してこれらに供給されるようにしてもよい。また、深度検出装置10及び3次元モデル生成装置20のハードウェア構成は、上記の例に限られず、種々のコンピュータのハードウェアを適用可能である。例えば、深度検出装置10及び3次元モデル生成装置20の各々は、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)を含んでもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部を介して、深度検出装置10及び3次元モデル生成装置20に供給されるようにしてもよい。
【0032】
[2.本発明に係る処理の概要]
図5は、3次元モデル生成システム1が実行する処理の概要を示す図である。
図5のtは時間軸である。
図5に示すように、深度検出装置10は、3次元モデル生成装置20に深度情報Iと検出姿勢情報Jを定期的に送信する。3次元モデル生成装置20は、各フレームの開始時点で深度情報Iと検出姿勢情報Jを受信すると、被写体の身体の形状(ボディライン)を推定する形状推定処理と、推定したボディラインから部分的な詳細形状(洋服のしわなど)を再構成する幾何学的再構成処理と、を実行する。形状推定処理と幾何学的再構成処理は、毎フレーム実行される。
【0033】
形状推定処理では、深度情報Iや検出姿勢情報Jを利用して、身体の基本形状を示すテンプレートが、被写体の姿勢や体型と似るように変形する。テンプレートは、身体そのものを示す3次元モデルであり、例えば、裸の3次元モデルであってよい。テンプレートは、身体の部位を示す複数のパーツから構成され、被写体の撮影データや3DCADを利用して予め用意しておけばよい。以降、テンプレートを指すときは、3次元モデルに「M
T」の符号を記載し、形状推定処理で変形させた3次元モデルを指すときは、「M
S」の符号を記載する。3次元モデルM
Sは、被写体の姿勢や体型を再現した裸の3次元モデルといえる。
【0034】
幾何学的再構成処理では、深度情報Iを利用して、洋服のしわなどの詳細形状(身体以外の部分の形状)が表れるように、3次元モデルM
Sを部分的に再構成する。以降、この状態の3次元モデルを指すときは、「M
D」の符号を記載する。3次元モデルM
Dは、被写体のボディラインだけでなく、身に着けているものまで再現した3次元モデルである。詳細は後述するが、3次元モデルM
Dは、被写体の身体の部分とそれ以外の部分とを区別できるので、幾何学的再構成処理の実行結果を形状推定処理にフィードバックすることで、3次元モデルM
Sの精度を高めることもできる。
【0035】
本実施形態では、ベイズ推定理論を利用して、3次元モデルM
S,M
Dの精度の高さを評価して、これらの精度を高めるようにしている。ベイズ推定理論は、現実世界の計測結果をもとに、推定したい事柄を確率的な意味で推定する手法である。ベイズ推定理論の確率が高いほど、推定したい事柄が実際に起こる蓋然性が高い。即ち、ベイズ推定理論の確率が高ければ、推定した3次元モデルM
S,M
Dが実際の被写体に似ていることになる。
【0036】
3次元モデル生成システム1は、ベイズ推定理論の確率が高くなるように、3次元モデルM
Tの全体的な変形具合と部分的な再構成具合を決める。本実施形態では、この確率を高めるために、3次元モデルM
Sと被写体との全体的なずれ具合の評価値E
S、3次元モデルM
Dと被写体との部分的なずれ具合の評価値E
D、及び、3次元モデルM
Sが現実ではありえない急激な変化をしないようにするための評価値E
0の3つの評価値を利用して、精度の高い3次元モデルを迅速に生成するようにしている。以降、この技術の詳細を説明する。
【0037】
[3.本実施形態において実現される機能]
図6は、3次元モデル生成システム1で実現される機能の一例を示す機能ブロック図である。
図6に示すように、本実施形態では、データ記憶部30、深度取得部31、骨格取得部32、体型取得部33、姿勢変化部34、検出範囲特定部35、表面形状取得部36、体型決定部37、履歴記録部38、体型変形部39、骨格決定部40、部分変形部41、及び身体部分特定部42が、3次元モデル生成装置20で実現される場合を説明する。なお、ここでは、体型決定部37及び骨格決定部40により形状推定処理の主たる処理が実行され、部分変形部41により幾何学的再構成処理の主たる処理が実行される。
【0038】
[3−1.データ記憶部]
データ記憶部30は、記憶部22を主として実現される。データ記憶部30は、3次元モデルM
S,M
Dを生成するためのデータを記憶する。ここでは、データ記憶部30が記憶するデータの一例として、下記のデータを説明する。
(1)深度情報Iの履歴を格納する深度履歴データ
(2)骨格パラメータ(詳細後述)の履歴を格納する骨格履歴データ
(3)体型パラメータ(詳細後述)の履歴を格納する体型履歴データ
(4)頂点移動量(詳細後述)の履歴を格納する移動量履歴データ
(5)3次元モデルM
Tを定義したテンプレートデータ
(6)3次元モデルM
Sの履歴を格納する身体履歴データ
(7)3次元モデルM
Dの履歴を格納する再構成履歴データ
【0039】
なお、データ記憶部30に記憶されるデータは上記の例に限られない。例えば、データ記憶部30は、検出姿勢情報Jの履歴を格納するデータやスケルトンJ
Tの基本姿勢を示すデータを記憶してもよい。
【0040】
[3−2.深度取得部]
深度取得部31は、制御部21を主として実現される。深度取得部31は、深度検出装置10が検出した被写体の深度情報I(
図3)を取得する。本実施形態では、3次元モデル生成装置20が深度検出装置10と直接的に接続されているので、深度取得部31は、深度検出装置10から深度情報Iを直接的に受信するが、他の機器を経由して深度情報Iを間接的に受信してもよい。深度取得部31は、取得した深度情報を深度履歴データに格納する。
【0041】
[3−3.骨格取得部]
骨格取得部32は、制御部21を主として実現される。骨格取得部32は、深度検出装置10が検出した深度情報Iに基づいて、被写体の骨格パラメータを取得する。骨格パラメータは、被写体の骨格に関する情報であり、各関節の位置関係を示す情報である。
図4の検出姿勢情報Jをそのまま骨格パラメータとして用いてもよいが、ここでは、骨格取得部32は、検出姿勢情報Jが示す各関節の角度を骨格パラメータとして用いる場合を説明する。骨格取得部32は、取得した骨格パラメータを骨格履歴データに格納する。
【0042】
図7は、骨格パラメータを示す図である。
図7に示すように、骨格取得部32は、検出姿勢情報Jが示す各関節の3次元座標に基づいて計算した各関節の角度{θ
j}を、骨格パラメータとして取得する。検出姿勢情報Jが示す各関節のうち、末端以外の関節には角度が存在するので、
図7の例では、骨格パラメータ{θ
j}は12個の角度から構成されることになる。以降、ある時刻tにおける骨格パラメータ{θ
j}を指すときは、{θ
tj}と記載する。
【0043】
[3−4.体型取得部]
体型パラメータ取得部は、制御部21を主として実現される。体型パラメータ取得部は、体型パラメータを取得する。本実施形態では、3次元モデルM
Tが体型パラメータにより変形したものが、3次元モデルM
Sである。ここでの変形とは、表面の位置や形状を変えることであり、例えば、全体的なサイズを変えたり、部分的な形状を変えたりすることである。体型取得部33は、取得した体型パラメータを体型履歴データに格納する。
【0044】
体型パラメータは、被写体の体型の特徴を示すものであり、全身又は部位ごとのサイズを示す。例えば、体型パラメータは、身長、胸囲、ウエスト、身幅、股下、腕の長さ、又は足のサイズなどのそれぞれの数値を含む。本実施形態では、体型パラメータは、複数の値の組み合わせであり、{β
k}の符号で記載する。kは、体型パラメータに含まれる項目を識別する数字であり、例えば、β
1は身長、β
2は胸囲、β
3はウエスト・・・などである。なお、体型パラメータは、複数の値の組み合わせではなく、単一の値のみであってもよい。
【0045】
図8は、体型パラメータ{β
k}により3次元モデルM
Tが変形する様子を示す図である。
図8に示すように、3次元モデルM
Tは、体型パラメータ{β
k}が示す体型になるように変形する。例えば、3次元モデルM
Tは、β
1が小さいほど身長が低くなり、β
1が大きいほど身長が高くなるように変形する。また例えば、3次元モデルM
Tは、β
2が小さいほど胸囲が短くなり、β
2が大きいほど胸囲が長くなるように変形する。また例えば、3次元モデルM
Tは、β
3が小さいほどウエストが細くなり、β
3が大きいほどウエストが太くなるように変形する。
【0046】
体型パラメータ{β
k}と、3次元モデルM
Tの各パーツの形状(即ち、頂点の位置)と、の関係は、予めデータ記憶部30に記憶されているものとする。この関係は、数式形式であってもよいし、テーブル形式であってもよいし、プログラムコードとして記述されていてもよい。この関係は、3次元モデルM
Tが体型パラメータ{β
k}の体型になるように定義されている。後述する体型変形部39は、体型パラメータ{β
k}に関連付けられた形状になるように、3次元モデルM
Tの各パーツを変形させる。これにより、体型パラメータ{β
k}に応じた体型になるように、3次元モデルM
Tが変形する。
【0047】
以降、ある時刻tにおける体型パラメータ{β
k}を指すときは、{β
tk}と記載する。なお、深度情報Iが初めて取得されたとき(即ち、本発明に係る処理の開始時)をt=0とすると、その時点の体型パラメータ{β
0k}は初期値となり、テンプレートの3次元モデルM
Tの体型をそのまま示す値となる。体型パラメータ{β
0k}は、データ記憶部30に予め記憶させておけばよい。t=0では、体型取得部33は、データ記憶部30に記憶された初期値の体型パラメータ{β
0k}を取得することになる。
【0048】
[3−5.姿勢変化部]
姿勢変化部34は、制御部21を主として実現される。姿勢変化部34は、骨格パラメータ{θ
j}に基づいて、体型パラメータ{β
k}により変形可能な3次元モデルM
Tの姿勢を変化させる。姿勢変化部34は、骨格パラメータ{θ
j}が示す姿勢になるように、3次元モデルM
Tの各パーツの位置関係を変化させる。なお、姿勢は、身体の部位の位置関係であり、ここでは、各関節の位置関係である。
【0049】
図9及び
図10は、骨格パラメータ{θ
j}に基づいて3次元モデルM
Tの姿勢が変化する様子を示す図である。
図9に示すように、まず、姿勢変化部34は、基本姿勢(例えば、直立の状態)のスケルトンJ
Tを3次元モデルM
Tの内部に設定する。スケルトンJ
Tを構成する複数の関節の位置関係は、テンプレートである3次元モデルM
Tの姿勢を示すように予め定めておけばよい。3次元モデルM
TにスケルトンJ
Tが設定されると、3次元モデルM
Tの各頂点は、スケルトンJ
Tの何れかの関節と関連付けられる。スケルトンJ
Tが変形して各関節が移動すると、当該関節に関連付けられた頂点は、当該関節と所定の位置関係を保つように移動する。即ち、ある関節に関連付けられた頂点は、その関節と連動することになる。
【0050】
姿勢変化部34は、骨格パラメータ{θ
j}が示す各関節の位置関係と、スケルトンJ
Tの各関節の位置関係と、が対応するように、スケルトンJ
Tを変形させる。位置関係が対応するとは、これら2つの関節の位置が一致すること、又は、位置のずれが所定未満になることである。ある程度の位置的なずれを許容するのは、被写体の実際の関節間の距離と、スケルトンJ
Tの関節間の距離と、が必ずしも一致せず、これらの3次元座標を完全に一致させることが難しいからである。
【0051】
本実施形態では、全体的な姿勢を似せるために、姿勢変化部34は、スケルトンJ
Tの各関節の角度が、骨格パラメータ{θ
j}と一致又はずれが基準未満になるように、スケルトンJ
Tを変形させる。先述したように、3次元モデルM
Tの各頂点は、自身が関連付けられた関節と連動するので、
図10に示すように、姿勢変化部34がスケルトンJ
Tを変形させると、被写体の姿勢と似た姿勢の3次元モデルM
Sを取得することができる。
【0052】
[3−6.検出範囲特定部]
検出範囲特定部35は、制御部21を主として実現される。検出範囲特定部35は、深度情報Iに基づいて、3次元モデルM
Sの中から、深度検出装置10の検出範囲に対応する部分を特定する。検出範囲は、被写体の表面のうち検出可能な範囲であり、深度検出装置10の赤外線が反射する場所である。例えば、検出範囲特定部35は、深度情報Iに基づいて、3次元空間における深度検出装置10の向きを取得し、当該取得した向きと、3次元モデルM
Sの表面の向きと、の関係に基づいて検出範囲を特定する。
【0053】
図11は、検出範囲特定部35の処理を説明するための説明図である。
図11に示すように、ここでは、深度検出装置10の視線方向V(即ち、赤外線の照射方向)を深度検出装置10の向きとして使用する。検出範囲特定部35は、深度情報Iに基づいて、3次元空間における視点O
V及び視線方向Vを取得する。視点O
Vは視点座標系の原点であり、視線方向Vは視点座標系のZ軸である(なお、
図11の座標軸はワールド座標系の座標軸である)。
【0054】
例えば、検出範囲特定部35は、深度情報Iの注視点(即ち、画像の中心のピクセル)の深度に基づいて、3次元空間における深度検出装置10の位置O
V及び視線方向Vを取得する。そして、検出範囲特定部35は、3次元モデルの各頂点v
iの法線n
iと、視線方向Vと、の関係に基づいて、検出範囲内の頂点v
iを特定する。法線n
iは、頂点間ベクトルの外積で取得すればよい。検出範囲特定部35は、法線n
iと視線方向Vが互いに向かい合う(例えば、これらのなす角度が90°以上)頂点v
iを検出範囲内とし、それ以外を検出範囲外とする。
【0055】
[3−7.表面形状取得部]
表面形状取得部36は、制御部21を主として実現される。表面形状取得部36は、深度情報Iに基づいて、被写体の表面形状(後述の
図12で示す。)を取得する。被写体の表面形状は、被写体のうち、深度検出装置10が検出した部分の形状であり、深度情報Iに深度として表れた領域である。被写体の表面形状は、深度情報Iに所定の行列変換を施して得られる3次元座標群であり、深度情報Iの各ピクセルの深度を3次元空間に変換したものである。深度検出装置10と被写体の位置関係が
図1のような場合は、表面形状取得部36が取得する表面形状は、被写体の前面のみであり、背面は含まれない。
【0056】
[3−8.体型決定部]
体型決定部37は、制御部21を主として実現される。体型決定部37は、姿勢変化部34により姿勢が変化した3次元モデルの表面形状と、被写体の表面形状と、の差に基づいて、体型パラメータを決定する。形状の差とは、3次元空間における位置的な違いであり、例えば、頂点間の距離である。体型決定部37は、形状の差が小さくなるように、体型パラメータを変化させる。即ち、体型決定部37は、体型パラメータを変化させる前の差よりも、体型パラメータを変化させた後の差が小さくなるように体型パラメータを変化させる。
【0057】
図12は、体型決定部37の処理の説明図である。
図12では、3次元モデルM
Sを実線で示し、被写体の表面S
OBを破線で示す。まず、体型決定部37は、3次元モデルM
Sの各頂点と、被写体の表面S
OBの各点と、に基づいて、これらの全体的なずれ具合を示す評価値E
Sを取得する。評価値E
Sは、各頂点v
iの3次元座標と、当該頂点v
iに対応する点p
iの3次元座標と、の距離d
iを総合的に評価するための評価値E
Sといえる。別の言い方をすれば、評価値E
Sは、3次元モデルM
Sの精度の高さを示す。
【0058】
例えば、体型決定部37は、距離d
iを所定の数式に代入することによって、評価値E
Sを取得する。以降、ある時刻tにおける評価値E
Sを指すときは、E
tS(X
t)と記載する。ある時刻tにおける3次元モデルM
Sの表面形状は、体型パラメータ{β
tk}と骨格パラメータ{θ
tj}によって決まるので、これらの組み合わせをX
tと記載すると(即ち、X
t={β
tk,θ
tj}である。)、評価値E
tS(X
t)は、変数X
tの関数で示すことができ、例えば、下記の式1により求めることができる。
【0060】
式1のμ
tiは、重み付け係数(ここでは、0以上1以下とする)である。重み付け係数μ
tiは、身体ではない(例えば、洋服のしわなど)と思われる部分のずれ具合が、評価値E
tS(X
t)に与える影響を低減又は除去するための係数である。即ち、身体ではないと思われる部分のずれ具合は、評価値E
tS(X
t)を取得するうえで、信頼することができないので、身体と思われる部分の重み付けを大きくし、身体ではないと思われる部分の重み付けを小さくするために、重み付け係数μ
tiを使用している。重み付け係数μ
tiの取得方法は後述する。
【0061】
式1のv
tiは、時刻tにおける3次元モデルM
Sの各頂点である。p
tiは、被写体の表面S
OBの各点のうち、最も頂点v
tiに近い点である。vis(v
ti,p
ti)は、条件式を含む関数であり、頂点v
tiが検出範囲内であれば頂点v
tiと点p
tiとの距離を返し、頂点v
tiが検出範囲外であれば所定値λ
Sを返す。所定値λ
Sを返すのは、頂点v
tiが検出範囲外の場合は、頂点v
tiに対応する点p
tiが存在せず距離を取得できないからである。なお、所定値λ
Sは、任意の値であってよいが、0にすると3次元モデルが縮小することがあるので、0.1程度であってよい。式1に示すように、体型決定部37は、頂点v
tiごとに、点p
tiとの距離又は所定値λ
Sを取得し、重み付け係数μ
tiを乗じた総和を評価値E
tS(X
t)として取得する。
【0062】
本実施形態では、体型決定部37は、評価値E
Sに基づいて体型パラメータ{β
k}を最適化させる。例えば、体型決定部37は、体型パラメータ{β
k}の候補を複数選出して、その中から、評価値E
Sを最小又は閾値未満にさせる候補の値を、体型パラメータ{β
k}として決定する。最適化自体は、種々の最適化アルゴリズムを利用してよいが、ここでは、粒子群最適化手法を利用する場合を一例として説明する。
【0063】
体型決定部37は、粒子群最適化アルゴリズムに基づいて、体型パラメータ{β
k}の候補を複数選出する。ここでは、体型決定部37は、後述する式2の評価値E
0に基づいて体型パラメータ{β
k}を初期化し、当該初期化した{β
k}に基づいて複数の候補を選出する。例えば、初期化した{β
k}との差が所定範囲に収まるものが候補となる。候補の数は、任意であってよく、例えば、30個程度であってよい。体型決定部37は、候補ごとに評価値E
Sを計算して、複数の候補の中の1つを選択する。例えば、体型決定部37は、評価値E
Sを最も小さくさせる候補の値を、新たな体型パラメータ{β
k}として選択する。体型決定部37は、最適化後の体型パラメータ{β
k}を体型変形部39に渡して3次元モデルM
Sを更新させる。
【0064】
上記のように、本実施形態では評価値E
Sを計算するときに重み付け係数μ
tiを使用することによって、体型決定部37は、体型パラメータ{β
k}を決定する場合に、身体部分に対応する差の重み付け(即ち、重み付け係数μ
ti)を、他の部分の差の重み付けよりも高くするようにしている。また、本実施形態では、条件関数vis(v
ti,p
ti)を使用することによって、体型決定部37は、検出範囲における前記3次元モデルの表面形状と、被写体の表面形状と、の差に基づいて、体型パラメータを決定するようにしている。
【0065】
なお、深度情報Iは所定のフレームレートのもと繰り返し取得されるので、体型決定部37は、上記のような最適化処理を繰り返し実行することになる。体型決定部37は、ある1つのフレームで1回だけ最適化を実行してもよいし、次のフレームが訪れるまで最適化処理を繰り返し、可能な限り評価値E
Sを小さくしてもよい。更に、体型決定部37は、評価値E
Sが閾値未満になった場合の体型パラメータ{β
k}を保持して、次のフレームの深度情報Iを得るまでは、それ以上の最適化をしないようにしてもよい。
【0066】
また、被写体は動体なので、骨格パラメータ{θ
j}が急に変化することはあるが、被写体の体型が急に変化することはないので、体型パラメータ{β
k}が急に変化することはない。しかし、例えば、あるフレームの深度情報Iがたまたま多くのノイズを含んだ場合などは、計算上、体型パラメータ{β
k}が前回のフレームから急に変化することがある。この場合、3次元モデルM
Sが急激に膨らんだりしぼんだりしてしまう。このような状況を発生させないために、体型決定部37は、あるフレームにおける体型パラメータ{β
k}の初期値を、過去の値から求めて体型パラメータ{β
k}の変動を抑えてもよい。この初期値は、過去の体型パラメータ{β
k}を所定の数式に代入することで得られるようにすればよいが、本実施形態では、評価値E
0をもとに体型パラメータ{β
k}の初期値が決める場合を説明する。評価値E
0は、例えば、下記の式2のように、体型パラメータ{β
k}を変数とする関数で示すことができる。
【0068】
式2のdは、主成分分析空間(いわゆるPCA空間。ここでは、体型パラメータ{β
k}が示されるk次元空間である。)における距離である。rは任意の時間である。式2の右辺は、体型パラメータ{β
k}の候補値と、各時刻tにおける体型パラメータ{β
tk}と、の距離の総計である。このため、式2の左辺は、ある体型パラメータ{β
k}の候補値が、過去の体型パラメータ{β
k}と全体的にどれだけずれているかを示す。本実施形態では、体型決定部37は、評価値E
0({β
k})を最小又は閾値未満にする{β
k}に基づいて、初期化を行う。
【0069】
式2では、過去の体型パラメータ{β
k}の平均値のときに評価値E
0({β
k})が最小になるので、体型決定部37は、過去の体型パラメータ{β
k}の平均値に基づいて初期化をすることになる。このようにすれば、ある時刻tだけ急激に体型パラメータ{β
k}が変化することを防止することができる。なお、この平均値は、過去の全期間の平均としてもよいし、直近の所定期間の平均としてもよい。更に、式2では、特に係数を設けなかったが、時刻tに応じて係数を設けてもよい。この場合、現時点に近いほど重み付けを大きくした加重平均としてもよい。このように、本実施形態では、体型決定部37は、体型パラメータ{β
k}と、履歴記録部38により記録された履歴と、に基づいて、体型パラメータ{β
k}を決定することになる。
【0070】
[3−9.履歴記録部]
履歴記録部38は、制御部21を主として実現される。履歴記録部38は、体型パラメータ{β
k}の履歴をデータ記憶部30に記録する。履歴記録部38は、体型パラメータ{β
k}を時系列的に体型履歴データに格納したり、体型パラメータ{β
k}を最適化した時間と関連付けて体型履歴データに格納したりする。
【0071】
[3−10.体型変形部]
体型変形部39は、制御部21を主として実現される。体型変形部39は、体型パラメータ決定部により決定された体型パラメータに基づいて、3次元モデルM
Tを変形させる。体型変形部39は、3次元モデルM
Tの頂点の位置を変えることで変形させる。頂点は、個々のポリゴンを定義する点なので、頂点の位置が変わると、3次元モデルM
Tの各パーツの位置及び形状の少なくとも一方が変わる。即ち、体型変形部39は、3次元モデルM
Tを構成するポリゴンを移動又は変形させることになる。なお、ここでは、三角形のポリゴンを利用する場合を説明するが、四角形や五角形以上のポリゴンを利用してもよい。
【0072】
図13は、最適化が行われた場合に3次元モデルM
Sが変化する様子を示す図である。
図13に示すように、最適化前の3次元モデルM
S(実線)は、被写体の表面S
OB(破線)よりも身長が短いので、体型決定部37は、身長を示すβ
1を大きくして3次元モデルM
Sの身長が高くなるように最適化を行うことになる。体型変形部39が当該最適化された体型パラメータ{β
k}に基づいて3次元モデルM
Sを更新すると、3次元モデルM
Sが被写体の実際の身長に近づく。
【0073】
[3−11.骨格決定部]
骨格決定部40は、制御部21を主として実現される。骨格決定部40は、3次元モデルM
Sの表面形状と、被写体の表面形状と、の差に基づいて、骨格パラメータ{θ
j}を決定する。ここでは、骨格取得部32が検出姿勢情報Jをもとに取得した骨格パラメータ{θ
j}だけでは、3次元モデルM
Sの姿勢を被写体の姿勢に一致させることが難しいので、骨格決定部40は、評価値E
Sに基づいて骨格パラメータ{θ
j}を決定して、骨格パラメータ{θ
j}を最適化させるようにしている。
【0074】
例えば、骨格決定部40は、骨格パラメータ{θ
j}の候補を複数選出して、その中から、評価値E
Sを最小又は閾値未満にさせる候補の値を、骨格パラメータ{θ
j}として決定する。最適化自体は、種々の最適化アルゴリズムを利用してよいが、ここでは、最小二乗法による最適化手法を利用して決定する。
【0075】
骨格決定部40は、最小二乗法に基づいて、骨格パラメータ{θ
j}の候補を複数選出する。例えば、候補は、現在の骨格パラメータ{θ
j}との差が所定範囲に収まるものである。候補の数は、任意であってよい。体型決定部37は、候補ごとに評価値E
Sを計算して、複数の候補の中の1つを選択する。例えば、体型決定部37は、評価値E
Sを最も小さくさせる候補の値を、新たな骨格パラメータ{θ
j}として選択する。姿勢変化部34は、骨格決定部40により決定された骨格パラメータ{θ
j}に基づいて、3次元モデルM
Sの姿勢を更新する。
【0076】
[3−12.部分変形部]
部分変形部41は、制御部21を主として実現される。部分変形部41は、体型変形部39により変形した3次元モデルM
Sの表面形状の一部と、当該部分に対応する被写体の表面形状と、の差に基づいて、当該部分を変形させる。例えば、部分変形部41は、3次元モデルM
Sと、被写体の表面形状と、の部分的なずれ具合に基づいて、3次元モデルM
Sの各頂点があるべき位置に関する頂点移動量を取得する。頂点移動量は、被写体の部分的な詳細を再現するために、3次元モデルM
Sの頂点v
iをどこに移動させればよいかを示すものである。
【0077】
図14は、頂点移動量の説明図である。
図14は、3次元モデルM
S及び被写体の表面S
OBの胴体付近を拡大したものである。なお、
図12と同様、3次元モデルM
Sを実線で示し、被写体の表面S
OBを破線で示している。頂点移動量は、移動先の頂点v
iを識別可能な情報であればよいが、
図14に示すように、本実施形態では、頂点移動量が、頂点v
iの法線n
iに対する方向への移動量η
iである場合を説明する。
【0078】
なお、頂点移動量は、移動量η
iに限られず、移動先の頂点v
iの3次元座標そのものを示してもよいし、移動方向及び移動量を示すベクトル情報であってもよい。部分変形部41は、頂点v
iの3次元座標と、被写体の表面形状のうち頂点v
iに最も近い点p
iの3次元座標と、を所定の数式に代入することによって、頂点移動量η
iを取得する。この数式は、頂点v
iの3次元座標と点p
iの3次元座標とのずれが大きいほど頂点移動量η
iが大きくなり、このずれが小さいほど頂点移動量η
iが小さくなるように定められている。
【0079】
本実施形態では、評価値E
Dを利用して頂点移動量η
iを取得する場合を説明する。評価値E
Dは、3次元モデルM
Sを頂点移動量η
iに基づいて変形させた場合に、被写体の表面S
OBとどれだけずれているかを評価する評価値である。なお、ここでは、頂点移動量η
iに基づいて3次元モデルM
Sを変形させたものは「M
D」の符号で記載しているので、評価値E
Dは、3次元モデルM
Dの精度の高さを示すものといえる。以降では、ある時刻tにおける評価値E
Dを指すときは、E
tDと記載する。なお、評価値E
tDは、頂点移動量η
iに応じて変化するので、頂点移動量η
iを変数とした関数E
tD(η
i)と記載することができる。本実施形態では、部分変形部41は、下記の式3を用いて、評価値E
tD(η
i)を取得する。
【0081】
式3の右辺第1項のS
tは、3次元モデルM
Sの表面である。式3の右辺第1項は、ある時刻tにおける被写体の点p
tiと、頂点v
tiを法線n
i方向に頂点移動量η
iにだけ移動した点v
i’と、の距離を個々の頂点v
tiごとに算出して総和を取ったものである。式3の右辺第2項のN(i)は、ある頂点v
iに隣接する他の頂点であり、λ
Dは、ハイパーパラメータである。式3の右辺第2項は、ある頂点v
tiの頂点移動量η
iと、隣接する頂点の頂点移動量η
jと、の差の総和を意味する。この値が大きいと、ある頂点v
tiだけ周囲の頂点よりも出っ張り、現実には起こりえないような局所的に出っ張った形状になる可能性があるので、これを防止して自然な表面にするために、本実施形態では、式3の右辺第2項を定義している。なお、右辺第2項は省略してもよい。
【0082】
部分変形部41は、評価値E
Dに基づいて、各頂点v
iの頂点移動量η
iを取得する。評価値E
Dが小さいほど、3次元モデルM
Dと被写体の表面形状との差が小さくなり精度が高くなるので、部分変形部41は、評価値E
Dを最小又は閾値未満にさせる頂点移動量η
iを取得する。以降、ある時刻tにおける頂点移動量η
iを指すときは、η
tiと記載する。本実施形態では、部分変形部41は、下記の式4を利用して、いったん頂点移動量η
tiを仮計算し、その後に、式3の評価値E
tD(η
i)が最小になるような頂点移動量η
tiに修正する。
【0084】
式4は、現在の時刻tにおける頂点v
tiと点p
tiとのずれと、過去の頂点移動量(式4では直近フレームのもの)と、の加重平均をとるための式である。式4のω
t−1及びω´tは、加重平均の係数である。式4のように頂点移動量η
tiを仮計算するのは、ある時刻tの深度情報Iはノイズが混じることがあるので、ノイズが混じってしまったときだけ急激に頂点移動量η
iが変化して、3次元モデルM
Dが突然出っ張ったりへこんだりすることを防止するために、過去との平均を取り、ある時点の頂点移動量η
iだけ大きく又は小さくなり過ぎないようにするためである。
【0085】
部分変形部41は、式4を利用して頂点ごとに頂点移動量η
iを仮計算する。そして、部分変形部41は、仮計算した頂点移動量η
iに基づいて複数の候補を取得する。この候補は、仮計算の頂点移動量η
iとのずれが所定範囲内になるものであればよい。この候補の数は、任意であってよい。部分変形部41は、頂点v
iごとに取得した候補に基づいて評価値E
tD(ηi)を計算して、最小になる候補を頂点移動量η
iとして決定する。
【0086】
上記のように、本実施形態では、式3の右辺第2項に示すように、部分変形部41は、各頂点の頂点移動量η
iを、周囲の頂点の頂点移動量η
iに基づいて決定する。このため、部分変形部41は、3次元モデルM
Sの各部分を、周囲の変形具合に基づいて変形させる。例えば、部分変形部41は、3次元モデルM
Sの各部分の変形具合と、周囲の部分の変形具合と、の差が所定未満になるようにすることができる。
【0087】
また、式4に示すように、頂点移動量η
iは、過去の頂点移動量との加重平均により得られるので、部分変形部41は、過去に取得された頂点移動量η
iに基づいて、頂点移動量η
iを取得する。このため、部分変形部41は、3次元モデルの各部分を、当該部分の過去の形状に基づいて変形する。例えば、部分変形部41は、3次元モデルの各部分の変形具合と、当該部分の過去の変形具合と、の差が所定未満になるようにすることができる。
【0088】
部分変形部41は、上記のようにして頂点ごとに取得された頂点移動量η
iに基づいて、当該頂点の位置を変更する。部分変形部41は、頂点移動量η
iに基づいて定まる位置に移動するように、各頂点を移動させる。ここでは、頂点移動量η
iが法線方向の移動量を示すので、部分変形部41は、頂点v
iが法線n
iの方向に頂点移動量η
iだけ離れた位置v
i’になるように、頂点v
iの3次元座標を変更する。即ち、部分変形部41は、頂点移動量η
iに基づいて3次元モデルM
Sを変形させることによって、3次元モデルM
Dを生成することになる。
【0089】
図15は、3次元モデルM
Dを示す図である。
図15に示すように、3次元モデルM
Dは、洋服のしわや鞄などの詳細な形状が再現されている。なお、部分変形部41は、深度検出装置10が撮影したRGB画像を、テクスチャとして3次元モデルM
Dの表面にマッピングするようにしてもよい。このようにすれば、被写体の表面の模様や色彩なども3次元モデルM
Dで表現することができる。
【0090】
なお、深度検出装置10の検出範囲外の部分は、深度が計測されないので、部分変形部41は、3次元モデルM
Sのうち、検出範囲特定部35により特定された部分の形状を変更するようにしてもよい。また、頂点移動量η
iは繰り返し取得されるので、部分変形部41は、頂点移動量が取得されるたびに、3次元モデルM
Sの各頂点の位置を変更することになる。
【0091】
[3−13.身体部分特定部]
身体部分特定部42は、制御部21を主として実現される。身体部分特定部42は、3次元モデルM
S,M
D又は被写体の表面形状に基づいて、3次元モデルM
S,M
Dのうち、被写体の身体に対応する身体部分を特定する。身体部分は、式1の重み付け係数μ
tiを決定するために特定される。身体部分は、形状の変化が小さい部分であり、比較的固い物体を示す部分である。それ以外の部分は、形状の変化が大きい部分であり、比較的柔らかい物体を示す部分である。例えば、身体部分は、地肌が露出している部分であり、それ以外の部分は、洋服や鞄などのしわが寄る部分(身体の動きに合わせて動く部分)である。
【0092】
洋服のしわや鞄などは形状が変わりやすいが、身体が突然膨らんだりしぼんだりしないので、ここでは、身体部分を特定するために、3次元モデルM
Dのうち位置的な変化の大きい部分を特定する場合を例に挙げる。本実施形態では、身体部分特定部42は、3次元モデルM
Dの頂点の位置関係や時間変化に基づいて身体部分を特定する。例えば、身体部分特定部42は、ある時刻tにおける頂点とその周囲の頂点との位置のずれ具合に基づいて特定してもよいし、頂点の密度や分散具合に基づいて特定してもよい。他にも例えば、身体部分特定部42は、ある頂点の時間経過に伴う位置変化に基づいて特定してもよい。
【0093】
本実施形態では、3次元モデルM
Dの表面の曲率を利用する場合を説明する。身体部分特定部42は、3次元モデルの頂点ごとに、下記の式5のように、曲率に関する評価値κを取得する。評価値κは、局所的な曲率を示す。評価値κは、−1以上1以下の値となる。身体部分特定部42は、ある時刻tにおけるある頂点v
iのκの標準偏差κ
tが閾値未満であれば、変化が小さいことを示すので身体に対応する領域とし、それ以上であれば、変化が大きいことを示すので身体以外の領域とする。
【0095】
なお、式5のKは、ガウス曲率であり、Hは、平均曲率(Mean curvature)である。KとHは、頂点ごとに、当該頂点と周囲の頂点との位置関係に基づいて計算され、例えば、頂点の密集具合に基づいて計算される。これらの計算方法自体は一般的であるので、詳細は、「M.Meyer, M.Desbrun, P.Schroder, and A.H.Barr. Discrete differential-geometry operators for triangulated 2-manifolds.Mathematics and Visualization, pages 35−57, 2003」などを参照されたい。
【0096】
身体部分特定部42は、標準偏差κ
tが閾値以上であれば、重み付け係数μ
tiを1未満の所定値λ
u(例えば、λ
u≪1)とし、標準偏差κ
tが閾値未満であれば、重み付け係数μ
tiを1とする。標準偏差κ
tが大きいことは、曲率の変化が大きいことを示すので、この部分は、形状が変わりやすい柔らかい物体と推定される。一方、標準偏差κ
tが小さいことは、曲率の変化が小さいことを示すので、この部分は、形状が変わりにくい固い物体と推定される。このため、標準偏差κ
tが大きい場所の重み付け係数μ
tiを小さくし、標準偏差κ
tが小さい場所の重み付け係数μ
tiを大きくしている。なお、上記では、評価値κを利用する場合を説明したが、下記の式6で求まる曲率の大きさを示す評価値cを利用して身体部分が特定されてもよい。
【0098】
[4.本実施形態において実行される処理]
図16は、3次元モデル生成システムにおいて実行される処理の一例を示すフロー図である。
図16に示す処理は、制御部11,21が、それぞれ記憶部12,22に記憶されたプログラムに従って動作することによって実行される。下記に説明する処理は、
図6に示す機能ブロックにより実行される処理の一例である。
【0099】
まず、深度検出装置10の動作を説明する。
図16に示すように、制御部11は、深度検出部14の検出信号に基づいて、深度情報Iと検出姿勢情報Jとを生成する(S10)。制御部11は、S10で生成した深度情報Iと検出姿勢情報Jとを3次元モデル生成装置20に送信する(S11)。
【0100】
制御部11は、次の処理タイミング(フレーム)が訪れたかを判定する(S12)。フレームレートは、予め記憶部12に記憶されているものとする。制御部11は、リアルタイムクロックを利用して計時処理を実行することにより、現在時刻が各フレームの開始時点になったかを判定する。
【0101】
次の処理タイミングが訪れたと判定されない場合(S12;N)、制御部11は、本処理を終了するかを判定する(S13)。S13においては、制御部11は、予め定められた終了条件(例えば、3次元モデル生成装置20から処理を終了するための信号を受信したかなど)が満たされるかを判定すればよい。本処理を終了すると判定されない場合(S13;N)、S12の処理に戻る。一方、本処理を終了すると判定された場合(S13;Y)、本処理は終了する。
【0102】
一方、S12において、次の処理タイミングが到来したと判定された場合(S12;Y)、S10の処理に戻る。以降、深度検出装置10は、本処理が終了するまで、定期的に深度情報Iと検出姿勢情報Jを生成して3次元モデル生成装置20に送信することになる。
【0103】
次に、3次元モデル生成装置20の動作を説明する。
図16に示すように、制御部21は、まず、制御部21は、記憶部22に記憶されたテンプレートデータに基づいて、仮想3次元空間内に3次元モデルM
Tを配置する(S20)。S20においては、制御部21は、3次元モデルM
Tに対応する体型パラメータ{β
k}(即ち、初期値)を体型履歴データに格納する。この初期値は、予め記憶部22に記憶させておけばよい。
【0104】
制御部21は、記憶部22に記憶された基本姿勢データに基づいて、S20で配置した3次元モデルM
Tの内部にスケルトンJ
Tを設定する(S21)。S21の時点では、3次元モデル生成装置20は、深度検出装置10から深度情報Iと検出姿勢情報Jをまだ受信していないので、3次元空間では、基本形状の3次元モデルM
Tが基本姿勢を取っている。即ち、3次元モデルM
Tの体型や姿勢は、実際の被写体の形状とは似ていない。
【0105】
制御部21は、深度検出装置10から深度情報Iと検出姿勢情報Jとを受信する(S22)。S22では、制御部21は、受信した深度情報Iと検出姿勢情報Jを、それぞれ深度履歴データと骨格履歴データに格納する。制御部21は、被写体の身体の形状を推定するための形状推定処理を実行する(S23)。
【0106】
図17は、形状推定処理の詳細を示す図である。
図17に示すように、制御部21は、S22で受信した検出姿勢情報Jに基づいて、各関節の骨格パラメータ{θ
j}を取得する(S30)。制御部21は、S30で取得した骨格パラメータ{θ
j}に基づいて、3次元モデルM
Tを変形させる(S31)。S31においては、制御部21は、S31で取得した骨格パラメータ{θ
j}に基づいて、3次元モデルM
T内のスケルトンJ
Tを変形させる。
【0107】
制御部21は、S31で変形させた3次元モデルM
Tに対してスキニング処理を実行する(S32)。S32の処理により、3次元モデルの表面が滑らかになる。これにより3次元モデルM
Sが生成される。時刻tにおける3次元モデルM
Sを識別する情報(頂点やスケルトンJ
Tの位置)は、身体履歴データに格納される。
【0108】
制御部21は、評価値E
0に基づいて体型パラメータ{β
k}を初期化する(S33)。S33においては、制御部21は、記憶部22に記憶された体型履歴データに格納された履歴を式2に代入し、評価値E
0を最小にする値(即ち、平均値)を最新の体型パラメータ{β
k}とする。なお、時刻t=0であれば、体型履歴データには、初期値しか格納されていないので、初期値がそのまま使用される。
【0109】
制御部21は、評価値E
Sに基づいて、体型パラメータ{β
k}を最適化する(S34)。S34においては、制御部21は、S22で受信した深度情報に基づいて被写体の3次元座標を取得する。そして、制御部21は、S33で取得した体型パラメータ{β
k}と粒子群最適化アルゴリズムに基づいて、体型パラメータ{β
k}の候補を複数取得する。制御部21は、各候補に対応する3次元モデルM
Sと式1に基づいて、各候補の評価値E
Sを取得する。制御部21は、評価値E
Sが最小になる候補の値を体型パラメータ{β
k}とすることで最適化を実行する。最適化された体型パラメータ{β
k}は、体型履歴データに格納される。制御部21は、S34で最適化した体型パラメータ{β
k}に基づいて、3次元モデルM
Sを更新する(S35)。
【0110】
制御部21は、評価値E
Sに基づいて、骨格パラメータ{θ
j}を最適化する(S36)。S36においては、制御部21は、最新の骨格パラメータ{θ
j}と最小二乗法に基づいて、骨格パラメータ{θ
j}の候補を複数取得する。制御部21は、各候補に対応する3次元モデルM
Sと式1に基づいて、各候補の評価値E
Sを取得する。制御部21は、評価値E
Sが最小になる候補の値になるように骨格パラメータ{θ
j}を更新することで最適化を実行する。最適化された骨格パラメータ{θ
j}は、骨格履歴データに格納される。制御部21は、S36で最適化した骨格パラメータ{θ
j}に基づいて、3次元モデルを更新する(S37)。
【0111】
以降、制御部21は、評価値E
Sが十分に小さくなるまでS33〜S37の処理を繰り返す。なお、S22において深度情報Iと検出姿勢情報Jが受信された場合(即ち、次のフレームになった場合)は、最新の深度情報I及び検出姿勢情報Jに体型や姿勢を合わせる必要があるので、再びS30の処理から実行されることになる。
【0112】
図16に戻り、制御部21は、被写体の部分的な詳細を表現するための幾何学的再構成処理を実行する(S24)。なお、幾何学的再構成処理は、フレーム内で繰り返し実行されるようにしてもよいし、1回だけ実行されるようにしてもよい。
【0113】
図18は、幾何学的再構成処理の詳細を示す図である。
図18に示すように、制御部21は、S22で取得した深度情報Iに基づいて、3次元モデルM
Sのうち検出範囲を特定する(S40)。S40においては、制御部21は、深度情報Iに基づいて深度検出装置10の視線方向Vを取得して、3次元モデルM
Sの各頂点v
iの法線n
iとの関係に基づいて検出範囲を特定する。
【0114】
制御部21は、評価値E
Dに基づいて、検出範囲内の頂点ごとに頂点移動量{η
i}を取得する(S41)。S41においては、制御部21は、検出範囲内の頂点の3次元座標と、被写体の3次元座標と、式3と、に基づいて評価値E
Dを取得する。そして、制御部21は、式4に基づいて仮の頂点移動量{η
i}を取得し、評価値E
Dを最小にする頂点移動量{η
i}に修正する。時刻tにおける頂点移動量{η
i}は、移動量履歴データに格納される。
【0115】
制御部21は、S41で取得した頂点移動量{η
i}に基づいて、検出範囲内の頂点を再配置する(S42)。これにより、3次元モデルM
Dが生成される。時刻tにおける3次元モデルM
Dを識別する情報(頂点やスケルトンJ
Tの位置)は、再構成履歴データに格納される。
【0116】
制御部21は、S41で取得した頂点移動量{η
i}に基づいて、検出範囲内の頂点の重み付け係数μ
iを取得する(S43)。S43においては、制御部21は、式5に基づいて3次元モデルM
S,M
Dにおける身体部分とそれ以外の部分とを区別し、当該区別した結果に基づいて、頂点ごとに重み付け係数μ
iを取得することになる。S43で取得された重み付け係数μ
iは、S23の形状推定処理で評価値E
Dを計算するときに利用される。
【0117】
図16に戻り、制御部21は、本処理を終了するか否かを判定する(S25)。終了すると判定されない場合(S25;N)、S22の処理に戻り、次のフレームの深度情報Iと検出姿勢情報Jが受信された場合に、最新の深度情報Iと検出姿勢情報Jに基づく形状推定処理及び幾何学的再構成処理が実行される。一方、終了すると判定された場合(S25;Y)、本処理は終了する。
【0118】
以上説明した3次元モデル生成システム1によれば、3次元モデルM
Tの姿勢を被写体の姿勢に近づけたうえで、体型パラメータ{β
k}を決定して3次元モデルM
Sを生成するので、精度の高い3次元モデルM
Sを迅速に生成することができる。即ち、多数の深度検出装置10の画像解析をする必要がないので、複雑な処理を実行する必要がなくなり、迅速に3次元モデルM
Sを生成することができる。更に、被写体の実際のボディラインに近づくように体型パラメータ{β
k}が最適化されるので、3次元モデルM
Sの精度を高めることができる。例えば、3次元モデルM
Sの精度を高めることができれば、3次元モデルM
Sに洋服などのオブジェクトを重畳させることにより、オンラインショッピングモールなどにおいて、商品を疑似的に試着させることができる。他にも例えば、オーダーメイドの洋服を作成するなどの種々の用途に、3次元モデルM
Sを使用することができる。
【0119】
また、被写体の実際の骨格とのずれが小さくなるように骨格パラメータ{θ
j}が最適化されるので、3次元モデルM
Sの姿勢を被写体の姿勢に近づけることができ、3次元モデルM
Sの精度を更に高めることができる。例えば、先述したように検出姿勢情報JとスケルトンJ
Tとを完全に一致させることは難しいので、骨格パラメータ{θ
j}を最適化することで、体型と姿勢の両方を実際の被写体に近づけることができる。更に、体型パラメータ{β
k}を最適化した後に骨格パラメータ{θ
j}を最適化し、その後再びこれらの最適化を繰り返すことによって、3次元モデルM
Sと被写体とのずれを徐々に小さくすることができる。
【0120】
また、頂点移動量η
iに基づいて3次元モデルM
Sを部分的に変形させることによって、3次元モデルM
Dの各部分の形状を被写体の部分的な形状に近づけることができるので、3次元モデルM
Dの精度を高めることができる。例えば、実施形態のように単一の深度検出装置10を用いた場合であっても、深度検出装置10が検出した面については、洋服のしわなどの詳細を3次元モデルM
Dで再現することができ、その他の面については、ボディラインを再現することができる。
【0121】
また、幾何学的再構成処理の対象を検出範囲内の領域とすることにより、変形させる必要のない部分にまで処理を実行することがなくなるので、3次元モデル生成装置20の処理負荷を軽減するとともに、より迅速に3次元モデルM
Dを生成することができる。
【0122】
また、各頂点の頂点移動量η
iは周囲の頂点の頂点移動量に基づいて定まるため、3次元モデルM
Sの各部分の形状を周囲の形状に基づいて変形させることができる。その結果、ある部分だけ不自然に飛び出たりへこんだりするような状態を防止することができ、3次元モデルM
Dの精度を高めることができる。
【0123】
また、各頂点の頂点移動量η
iは、その頂点の過去の頂点移動量に基づいて定まるので、3次元モデルM
Sの各部分を当該部分の過去の形状に基づいて変形させることができる。その結果、ある時点だけ特定の部分が急に変形してしまうことを防止することができる。
【0124】
また、重み付け係数μ
iを利用することにより、身体以外の部分が評価値E
Dに与える影響を抑えることができるので、被写体のボディラインを推定するうえで重要ではない部分が評価値E
Dに与える影響を抑えることができる。その結果、信頼性の高い部分で被写体のボディラインを推定して3次元モデルM
Sとすることができるので、3次元モデルM
Sの精度をより高めることができる。
【0125】
また、深度検出装置10の検出範囲内のずれ具合に基づいて3次元モデルM
Sを変形させることで、検出できない範囲の位置が3次元モデルM
Sの体型に影響を与えてしまうことを防止することができるので、3次元モデルM
Sの精度をより高めることができる。
【0126】
また、体型パラメータ{β
k}の履歴に基づいて体型パラメータが決まるので、体型パラメータ{β
k}が突然大きくなるようなことを防止することができる。その結果、ある特定の時だけ3次元モデルM
Sの体型が急激に変化してしまうような不自然な状況を防止することができる。
【0127】
[5.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0128】
例えば、体型パラメータ{β
k}を最適化した後に骨格パラメータ{θ
j}を最適化する場合を説明したが、これらの順序は逆であってもよい。また例えば、体型パラメータ{β
k}と骨格パラメータ{θ
j}の両方が最適化される場合を説明したが、何れか一方のみが最適化されてもよい。
【0129】
また例えば、頂点移動量η
iを計算する場合に、周囲の頂点の変形具合や時間経過に伴う変化を考慮する場合を説明したが、処理速度を優先するのであればこれらは特に考慮しなくてもよい。同様に、過去の体型パラメータ{β
j}から大きくずれないように評価値E
0を利用する場合を説明したが、処理速度を優先するのであれば過去の体型パラメータ{β
j}は特に考慮しなくてもよい。また、3次元モデルM
Sのうち検出範囲内の領域を特定して評価値E
Sを取得したり幾何学的再構成の処理対象にしたりする場合を説明したが、特に検出範囲を考慮せず、3次元モデルM
Sの全面を処理対象にしてもよい。
【0130】
また例えば、形状推定処理と幾何学的再構成処理の両方が実行される場合を説明したが、ボディラインの推定だけを目的として3次元モデル生成システム1を利用する場合は、幾何学的再構成処理は省略してもよい。更に、評価値E
S,E
D,E
0の計算式は一例にすぎず、他の計算式を用いてもよい。また例えば、身体部分は、3次元モデルM
Sを利用して特定されてもよいし、深度情報Iを利用して特定されてもよい。3次元モデルM
Sを利用する場合は、実施形態で説明した方法と同様に、頂点の位置関係や時間変化により特定されるようにすればよい。一方、深度情報Iを利用する場合は、被写体の表面S
OBの各点から最も近い頂点のみを身体部分とし、それ以外を身体部分以外としてよい。
【0131】
また例えば、検出姿勢情報Jは、3次元モデル生成装置20により生成されるようにしてもよい。この場合、3次元モデル生成装置20は、深度情報Iに基づいて検出姿勢情報Jを生成することになる。また例えば、骨格パラメータ{θ
j}は、深度検出装置10が生成して3次元モデル生成装置20に送信してもよい。また例えば、特にフレームレートを定めておかず、深度検出装置10は、深度情報Iと検出姿勢情報Jを不定期的に生成してもよい。また例えば、被写体は、人以外の動物(例えば、犬や猫など)であってもよい。
【0132】
また例えば、3次元モデル生成装置20で各機能が実現される場合を説明したが、深度検出装置10や他のコンピュータで各機能が実現されるようにしてもよい。また例えば、3次元モデル生成システム1の複数のコンピュータで各機能が分担されるようにしてもよい。更に、上記説明した各機能のうち、骨格取得部32、姿勢変化部34、表面形状取得部36、体型決定部37、及び体型変形部39以外の機能は省略してもよい。
精度の高い3次元モデルを迅速に生成する。3次元モデル生成システム(1)の骨格取得手段(32)は、深度検出装置(10)が検出した被写体の深度情報に基づいて、骨格パラメータを取得する。姿勢変化手段(34)は、骨格パラメータに基づいて、体型パラメータにより変形可能な3次元モデルの姿勢を変化させる。表面形状取得手段(36)は、深度情報に基づいて、被写体の表面形状を取得する。体型決定手段(37)は、姿勢変化手段(34)により姿勢が変化した3次元モデルの表面形状と、被写体の表面形状と、の差に基づいて、体型パラメータを決定する。体型変形手段(39)は、体型パラメータ決定手段(37)により決定された体型パラメータに基づいて、3次元モデルを変形させる。