(57)【要約】【課題】  よりロバストな人物の姿勢推定技術を提供すること。【解決手段】  複数のパーツから構成され且つ関節を有する対象物体を表す３次元点群を取得する。複数のパーツのそれぞれに対応する形状モデルを、３次元点群において該形状モデルに対応する部分３次元点群を用いて移動及び／又は変形させる。それぞれの形状モデルのうち１以上の形状モデルの位置及び／又は姿勢、若しくは該位置及び／又は姿勢から計算される情報を、対象物体の姿勢を推定するための推定情報として出力する。【選択図】  図１
2015102913.tif 000002
【特許請求の範囲】
【請求項１】
複数のパーツから構成され且つ関節を有する対象物体を表す３次元点群を取得する取得手段と、
前記複数のパーツのそれぞれに対応する形状モデルを、前記３次元点群において該形状モデルに対応する部分３次元点群を用いて移動及び／又は変形させる処理手段と、
前記処理手段により処理されたそれぞれの形状モデルのうち１以上の形状モデルの位置及び／又は姿勢、若しくは該位置及び／又は姿勢から計算される情報を、前記対象物体の姿勢を推定するための推定情報として出力する出力手段と
を備えることを特徴とする姿勢推定装置。
【請求項２】
前記処理手段は、
前記形状モデルを、前記部分３次元点群を用いて移動及び／又は変形させた後、該部分３次元点群に含まれるそれぞれの３次元点と、該３次元点に対応する前記形状モデル上の３次元点と、の間の距離に基づいて、前記形状モデルの位置合わせを行う
ことを特徴とする請求項１に記載の姿勢推定装置。
【請求項３】
前記処理手段は更に、
前記移動及び／又は変形の後に一方の形状モデルと、該一方の形状モデルとの連結の対象である他方の形状モデルとの間の距離が規定の距離以下であれば、該一方の形状モデルと該他方の形状モデルとを連結させる
ことを特徴とする請求項１又は２に記載の姿勢推定装置。
【請求項４】
前記処理手段は、
前記複数のパーツのそれぞれに対応する形状モデルのうち、隠れていない形状モデルとして指定されている形状モデルを移動及び／又は変形させる
ことを特徴とする請求項１乃至３の何れか１項に記載の姿勢推定装置。
【請求項５】
前記処理手段は、
前記形状モデルを、前記部分３次元点群を用いて移動及び／又は変形させた後、該部分３次元点群に含まれるそれぞれの３次元点と、該３次元点に対応する前記形状モデル上の３次元点と、の間の距離の総和を、それぞれの形状モデルについて求め、該それぞれの形状モデルについて求めた総和の合計を最小化するように、該それぞれの形状モデルの位置合わせを行う
ことを特徴とする請求項１に記載の姿勢推定装置。
【請求項６】
前記取得手段は、前記対象物体の距離画像から前記３次元点群を取得することを特徴とする請求項１乃至５の何れか１項に記載の姿勢推定装置。
【請求項７】
姿勢推定装置が行う姿勢推定方法であって、
前記姿勢推定装置の取得手段が、複数のパーツから構成され且つ関節を有する対象物体を表す３次元点群を取得する取得工程と、
前記姿勢推定装置の処理手段が、前記複数のパーツのそれぞれに対応する形状モデルを、前記３次元点群において該形状モデルに対応する部分３次元点群を用いて移動及び／又は変形させる処理工程と、
前記姿勢推定装置の出力手段が、前記処理工程で処理されたそれぞれの形状モデルのうち１以上の形状モデルの位置及び／又は姿勢、若しくは該位置及び／又は姿勢から計算される情報を、前記対象物体の姿勢を推定するための推定情報として出力する出力工程と
を備えることを特徴とする姿勢推定方法。
【請求項８】
コンピュータを、請求項１乃至６の何れか１項に記載の姿勢推定装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、取得した距離画像から対象の姿勢を推定する方法において、あらかじめ得られた初期姿勢から三次元点群をもとに詳細な姿勢を推定する技術に関するものである。
【背景技術】
【０００２】
距離画像から人物の姿勢を推定する方法として、特許文献１に開示されている方法がある。これには、輝度画像から顔検出と肌色抽出による手検出を行い、顔と手の位置を基準として輝度・距離画像に対してモデルのマッチングを行う方法がある。また、特許文献２では、フレーム間での腕・脚の領域の重なりを基準として、肘・膝関節位置を推定する方法が開示されている。
【０００３】
その他には非特許文献１が提案されている。非特許文献１では、時系列の距離画像に対して人物に近似したモデルをもとに、各パーツをＩＣＰ（Ｉｔｅｒａｔｉｖｅ  Ｃｌｏｓｅｓｔ  Ｐｏｉｎｔｓ）を使って位置合わせを行っている。ＩＣＰを行う際、各点において距離が近いパーツ２つを選択して、その点とパーツ間の距離比を用いて点をどちらのパーツとＩＣＰするかを決定し、ＩＣＰを行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開１９９７−２３７３４８号公報
【特許文献２】特開２０１２−１２０６４７号公報
【非特許文献】
【０００５】
【非特許文献１】D. Droeschel and S. Behnke (2011), “3D Body Pose Estimation using an Adaptive Person Model for Articulated ICP”, IEEE Conference on Intelligent Robotics and Applications (ICIRIA), 2011.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の方法では顔や手が見えていなければいけないため、後ろ向きや横向きの人物には対応できない。特許文献２では、時系列での領域の重なりが必要なため、速い動きには対応できない。非特許文献１では、パーツの隠れに対処できないことが課題として挙げられる。
【０００７】
本発明はこのような問題に鑑みてなされたものであり、よりロバストな人物の姿勢推定技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一様態として、複数のパーツから構成され且つ関節を有する対象物体を表す３次元点群を取得する取得手段と、前記複数のパーツのそれぞれに対応する形状モデルを、前記３次元点群において該形状モデルに対応する部分３次元点群を用いて移動及び／又は変形させる処理手段と、前記処理手段により処理されたそれぞれの形状モデルのうち１以上の形状モデルの位置及び／又は姿勢、若しくは該位置及び／又は姿勢から計算される情報を、前記対象物体の姿勢を推定するための推定情報として出力する出力手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明の構成によれば、よりロバストな人物の姿勢推定技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】姿勢推定装置の機能構成例を示すブロック図。
【図２】３次元点群及びその特徴量を説明する図。
【図３】初期姿勢及び近似モデルを説明する図。
【図４】パーツ検出部１０４の処理を説明する図。
【図５】パーツ検出部１０４の処理を説明する図。
【図６】位置合わせ部１０５及び関節位置推定部１０６の処理を説明する図。
【図７】関節位置推定部１０６の処理を説明する図。
【図８】姿勢推定装置が行う処理のフローチャート。
【図９】第２の実施形態を説明する図。
【図１０】第２の実施形態を説明する図。
【図１１】パーツ検出部１０４が行う処理のフローチャート。
【図１２】第３の実施形態を説明する図。
【図１３】第３の実施形態を説明する図。
【図１４】第３の実施形態を説明する図。
【図１５】パーツ検出部１０４が行う処理のフローチャート。
【図１６】第４の実施形態を説明する図。
【図１７】位置合わせ部１０５が行う処理のフローチャート。
【図１８】姿勢推定装置に適用可能な装置のハードウェア構成例を示すブロック図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１２】
［第１の実施形態］
本実施形態では、複数のパーツを有する対象物体を表す３次元点群を用いて、該対象物体の姿勢（対象物体の各部位の位置や各部位の姿勢）を推定する。先ず、本実施形態に係る姿勢推定装置の機能構成例について、図１のブロック図を用いて説明する。
【００１３】
データ取得部１０１は、複数のパーツを有する対象物体を表す３次元点群を取得する。本実施形態では、「複数のパーツを有する対象物体」として人体を用いるので、データ取得部１０１は、顔や腕、手、胴体、腰、足などのパーツからなる人体の３次元点群を取得することになる。３次元点群の取得方法には様々な方法があり、例えば、予め本装置若しくは外部装置に登録しておいた３次元点群を取得しても良いし、ステレオカメラやＴＯＦカメラなどを用いて撮影した人体の距離画像から３次元点群を取得しても良い。距離画像はステレオカメラやＴＯＦカメラなどから直接得ても良いし、本装置若しくは外部装置に登録されているものを用いても良い。データ取得部１０１が取得した３次元点群とは、例えば図２の左側に示す如く、人体上の各点の集合２０１である。そしてデータ取得部１０１は、取得した３次元点群を後段の特徴量算出部１０２に対して送出する。
【００１４】
特徴量算出部１０２は、３次元点群のうちいくつかの３次元点（全ての３次元点であっても構わないし、一部の３次元点（部分集合）であっても構わない）について、該３次元点の特徴量を算出する。本実施形態では、それぞれの３次元点について、該３次元点の３次元位置と、該３次元点における法線ベクトルと、をセットにし、これを該３次元点の特徴量とする。
【００１５】
３次元点の３次元位置については、３次元点群を取得した時点でそれぞれの３次元点の３次元位置は分かっているので、これを用いる。３次元点の法線ベクトルについては、該３次元点を中心として指定した近傍範囲（図２の範囲２０２）内にある複数の３次元点を使用して法線ベクトル（図２の法線ベクトル２０３）を算出する。法線ベクトルを算出するためには、先ず、以下の式（１）に従って、基準となる３次元点とその近傍の３次元点群との外積ベクトルの共分散行列を求める。
【００１６】
【数１】
2015102913.tif 000003
【００１７】
ここで、Ｃは共分散行列、ｋは近傍点の数、ｐｉは基準点と指定距離内の点が成すベクトル、ｐ−（括弧内の第２項目）は平均ベクトル（近傍点の重心）を意味する。そして、この共分散行列の主成分を法線ベクトル２０３とする。なお、法線ベクトル２０３を算出する方法はこの方法に限るものではなく、他の方法を用いて算出しても構わない。
【００１８】
そして上記の通り、特徴量算出部１０２は、３次元点の３次元位置と、該３次元点の法線ベクトルと、をセットにし、これを該３次元点の特徴量として、パーツ検出部１０４に対して送出する。なお、変形例として、データ取得部１０１は、３次元点群の取得元である距離画像と同視点から撮像した輝度画像を取得し、特徴量算出部１０２は、３次元点の特徴量に、該３次元点に対応する輝度画像上の画素位置における輝度値を更に加えても構わない。
【００１９】
初期姿勢取得部１０３は、図３の左側に示すような、人体の初期姿勢（初期のポーズ）３０４を取得する。人体の初期姿勢３０４とは、各関節の初期位置や各部位の初期姿勢である。このような初期姿勢３０４は、予め設定されていても良いし、前回推定したものであっても良いし、例えば、以下に示す文献に開示されているような公知の手法を用いて距離画像から取得してもよい。
【００２０】
文献：“Ｒｅａｌ−ｔｉｍｅ  Ｈｕｍａｎ  Ｐｏｓｅ  Ｒｅｃｏｇｎｉｔｉｏｎ  ｉｎ  Ｐａｒｔｓ  ｆｒｏｍ  Ｓｉｎｇｌｅ  Ｄｅｐｔｈ  Ｉｍａｇｅｓ”，  Ｊ．Ｓｈｏｔｔｏｎ，Ａ．Ｆｉｔｚｇｉｂｂｏｎ，  Ｍ．Ｃｏｏｋ，Ｔ．Ｓｈａｒｐ，Ｍ．Ｆｉｎｏｃｃｈｉｏ，Ｒ．Ｍｏｏｒｅ，ＣＶＰＲ  ２０１１”
そして初期姿勢取得部１０３は、人体の初期姿勢３０４を取得すると、この初期姿勢３０４をとっている人体を表すように、人体の各パーツに対応する形状モデル（仮想物体）を配置する。形状モデルの形状は以下では円筒としているが、円筒に限らず、他の形状であっても良い。これにより、初期姿勢３０４をとっている人体を表す近似モデル３０５（図３右側）を生成する。形状モデルを配置する際には、関節位置と関節位置間の長さをもとに配置する。図３では、人体の各パーツに対応する形状モデル３１０〜３１９を、初期姿勢３０４をとっている人体を表すように配置している。各形状モデルは、本装置若しくは外部装置から取得する。なお、近似モデル３０５は非連結構造であってもよい。そして初期姿勢取得部１０３は、上記のようにして作成した近似モデル３０５を、後段のパーツ検出部１０４に対して送出する。
【００２１】
パーツ検出部１０４は、３次元点群の特徴量を用いて、初期姿勢取得部１０３から受けた近似モデルを構成する各形状モデルを移動（位置姿勢）及び／又は変形させて、人体の各パーツに一致する（太さや長さ、位置や姿勢）ような形状モデルを生成する。この処理には形状検出手法を用い、例えば、以下に示す文献に開示されている手法が適用可能である。
【００２２】
文献：ＲＡＮＳＡＣ（Ｒａｎｄｏｍ  Ｓａｍｐｌｉｎｇ  Ｃｏｎｓｅｎｓｕｓ）を使った物体形状検出方法（参考文献：“Ｅｆｆｉｃｉｅｎｔ  ＲＡＮＳＡＣ  ｆｏｒ  Ｐｏｉｎｔ−Ｃｌｏｕｄ  Ｓｈａｐｅ  Ｄｅｔｅｃｔｉｏｎ”，Ｒ．Ｓｃｈｎａｂｅｌ，  Ｒ．Ｗａｈｌ  Ｒ．Ｋｌｅｉｎ，Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  Ｆｏｒｕｍ，２００７）
もちろん、人体の各パーツに（太さや長さ、位置や姿勢が）一致するような形状モデルを生成する処理は、他の手法を用いて行っても良い。ここで、具体例を挙げてパーツ検出部１０４の動作を説明する。
【００２３】
パーツ検出部１０４は、図４の４０６に示す如く、３次元点群内に近似モデルを配置し、形状モデルごとに、該形状モデルの３次元位置、回転、サイズ（半径と長さ）から、後述する方法により処理範囲（４２４や４２６）を設定する。そしてパーツ検出部１０４は、設定した処理範囲から、ＲＡＮＳＡＣ等による処理により、パーツに一致するような形状モデルを生成する。
【００２４】
例えば、図３の形状モデル３１４からは、対応するパーツに一致するような形状モデルとして図５の形状モデル５３４を生成し、図３の形状モデル３１６からは、対応するパーツに一致するような形状モデルとして図５の形状モデル５３６を生成する。このように、パーツ検出部１０４は、図３の形状モデル３１０〜３１９のそれぞれから、形状モデル５４０〜５４９を生成する。パーツ検出部１０４は、上記のようにして生成した各形状モデルを、後段の位置合わせ部１０５に対して送出する。
【００２５】
位置合わせ部１０５は、それぞれの形状モデルに対し、該形状モデルと、３次元点群において該形状モデルに対応する部分３次元点群と、の間でＩＣＰ（Ｉｔｅｒａｔｉｖｅ  Ｃｌｏｓｅｓｔ  Ｐｏｉｎｔ）を適用し、該形状モデルの位置合わせを行う。ＩＣＰは、例えば、以下の文献に開示されているように公知の技術である。
【００２６】
文献：“Ａ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｒｅｇｉｓｔｒａｔｉｏｎ  ｏｆ  ３−Ｄ  ｓｈａｐｅｓ”、ＩＥＥＥ  ＰＡＭＩ，ｖｏｌ．１４、ｎｏ．２、ｐｐ。２３９−２５６、Ｆｅｂ  １９９２）
この位置合わせでは先ず、パーツ検出部１０４が形状モデルを生成する際に用いた「上記３次元点群において該形状モデルに対応する部分３次元点群」におけるそれぞれの３次元点と、該３次元点から最短の該形状モデル上の点と、の間の距離を求める。そして、「上記３次元点群において該形状モデルに対応する部分３次元点群」におけるそれぞれの３次元点と、該３次元点から最短の該形状モデル上の点と、の間の距離の総和Ｅを最小化するように、該形状モデルを更に移動及び／又は変形させる。この総和Ｅは以下の式に従って計算する。
【００２７】
【数２】
2015102913.tif 000004
【００２８】
ここでＮは、部分３次元点群に含まれている３次元点の数、ｉは部分３次元点群に含まれている各３次元点に対するインデックスを表す。また、ｄｉは部分３次元点群においてｉ番目の３次元点の世界座標系における位置、ｍｉは部分３次元点群においてｉ番目の３次元点に最も近い形状モデル上の点の形状モデル座標系における位置、を表す。形状モデル座標系とは、形状モデル上の１点を原点とし、この原点で互いに直交する３軸をそれぞれ、ｘ、ｙ、ｚ軸とする座標系である。Ｔは世界座標系における位置を形状モデル座標系における位置に変換するための変換マトリクスである。
【００２９】
このＥは形状モデルごとに計算され、それぞれの形状モデルは、対応するＥが最小化されるように、移動及び／又は変形される。なお、上記位置合わせは、ＩＣＰを用いた方法に限るものではなく、他の方法を採用しても構わない。
【００３０】
位置合わせ部１０５による上記処理により、図５の右側に示した各形状モデル５４０〜５４９からなる近似モデルは、図６の６０７に示す如く更新される。そして位置合わせ部１０５は、上記処理により更新した近似モデルを、後段の関節位置推定部１０６に対して送出する。
【００３１】
関節位置推定部１０６は、位置合わせ部１０５から受けた近似モデルを構成する各形状モデルの位置関係に基づいて、一方の形状モデルを他方の形状モデルに連結させる。例えば、図６の左側に示す如く、予め定められた形状モデル間の距離６５１〜６５９を計算し、計算したそれぞれの距離と規定の距離との大小比較を行う。ここで、例えば、距離６５１が規定の距離以下であった場合、頭部に相当する形状モデルと胴体に相当する形状モデルとの間の距離をより小さくすることで、それぞれの形状モデルを連結させる。このような形状モデル連結を行うことで、６０７に示した近似モデルは連結構造を成すように再構築される。
【００３２】
そして関節位置推定部１０６は、このようにして再構築した近似モデルから、例えば図７に示す如く、頭、首、腰、両肩、両肘、両手首、両脚付け根、両膝、両かかとの位置７６１〜７７５を推定し、関節位置及び人物の姿勢を示す情報（７０９）を出力する。各部位の位置の推定方法としては、各形状モデルに対して関節点との対応付けを行い、形状モデルの中心位置から関節点の位置へのベクトルを保持しておき、それを関節推定時に使用して求める。例えば、形状モデル５４１の中心位置から関節点の位置７７１へのベクトルを近似モデルに対して保持しておき、中心位置からそのベクトルを足して関節点の位置７７１を算出する。同様に他の関節点の位置７６１〜７７５も求めることができる。
【００３３】
以上説明した姿勢推定装置が行う処理について、同処理のフローチャートを示す図８を用いて説明する。ステップＳ１０１では、データ取得部１０１は、人体の３次元点群を取得し、該取得した３次元点群を後段の特徴量算出部１０２に対して送出する。
【００３４】
ステップＳ１０２では、特徴量算出部１０２は、３次元点群のうちいくつかの３次元点（全ての３次元点であっても構わないし、一部の３次元点（部分集合）であっても構わない）について、該３次元点の特徴量を算出する。そして、特徴量算出部１０２は、それぞれの３次元点について、該３次元点の３次元位置と、該３次元点の法線ベクトルと、をセットにし、これを該３次元点の特徴量として、パーツ検出部１０４に対して送出する。
【００３５】
ステップＳ１０３では、初期姿勢取得部１０３は、人体の初期姿勢（初期のポーズ）を取得する。そして初期姿勢取得部１０３は、人体の初期姿勢を取得すると、この初期姿勢をとっている人体を表すように、人体の各パーツに対応する形状モデルを配置し、これにより、初期姿勢をとっている人体を表す近似モデルを生成する。そして初期姿勢取得部１０３は、上記のようにして作成した近似モデルを、後段のパーツ検出部１０４に対して送出する。
【００３６】
ステップＳ１０４では、パーツ検出部１０４は、３次元点群の特徴量を用いて、初期姿勢取得部１０３から受けた近似モデルを構成する各形状モデルを移動及び／又は変形させて、人体の各パーツに一致するような形状モデルを生成する。
【００３７】
形状モデルごとに、該形状モデルの３次元位置、回転、サイズ（半径と長さ）から処理範囲を設定する処理は、次のようにして行う。例えば、形状モデル３１４に対して処理範囲を設定する場合には、次のようにして設定を行う。先ず、形状モデル３１４の外接矩形に指定した長さを加えた処理範囲４２４を設定する。そして、この処理範囲４２４内で形状モデル３１４が収まる位置において、形状モデル３１４の回転角度を基準として設定した回転角度４２５の範囲内において、形状モデル３１４の位置・回転角度および長さ・大きさを変えながら、形状モデル５３４を得る。
【００３８】
同様に、形状モデル３１６に対して処理範囲を設定する場合には、次のようにして設定を行う。先ず、形状モデル３１６の外接矩形に指定した長さを加えた処理範囲４２６を設定する。そして、この処理範囲４２６内で形状モデル３１６が収まる位置において、形状モデル３１６の回転角度を基準として設定した回転角度４２７の範囲内において、形状モデル３１６の位置・回転角度および長さ・大きさを変えながら、形状モデル５３６を得る。そしてパーツ検出部１０４は、上記のようにして生成した各形状モデルを、後段の位置合わせ部１０５に対して送出する。
【００３９】
ステップＳ１０５では、位置合わせ部１０５は、それぞれの形状モデルに対し、該形状モデルと、３次元点群において該形状モデルに対応する部分３次元点群と、の間でＩＣＰを適用し、該形状モデルの位置合わせを行う。そして位置合わせ部１０５は、形状モデルの位置合わせにより更新された近似モデルを、後段の関節位置推定部１０６に対して送出する。
【００４０】
ステップＳ１０６では、関節位置推定部１０６は、位置合わせ部１０５から受けた形状モデルを構成する各形状モデルの位置関係に基づいて、一方の形状モデルを他方の形状モデルに連結させることで、近似モデルを再構築する。そして関節位置推定部１０６は、このようにして再構築した近似モデルから、頭、首、腰、両肩、両肘、両手首、両脚付け根、両膝、両かかとの位置を推定し、関節位置及び人物の姿勢を示す情報を出力する。
【００４１】
本実施形態では、「複数のパーツを有する対象物体」として人体を用いたが、それぞれの姿勢が可変となる複数のパーツを有する対象物体であれば、例えば動物など、人体以外であっても構わない。
【００４２】
なお、上記で説明した構成は、以下に説明する基本構成の一例に過ぎず、以下の基本構成に帰着する構成であれば、如何なる構成を採用しても良い。基本構成では、複数のパーツから構成され且つ関節を有する対象物体を表す３次元点群を取得すると共に、複数のパーツのそれぞれに対応する形状モデルを、３次元点群において該形状モデルに対応する部分３次元点群を用いて移動及び／又は変形させる。そして、処理された（移動及び／又は変形）それぞれの形状モデルのうち１以上の形状モデルの位置及び／又は姿勢、若しくは該位置及び／又は姿勢から計算される情報を、対象物体の姿勢を推定するための情報である推定情報として出力する。このような推定情報があれば、各関節の位置などを特定することができるので、結果として、対象物体の姿勢を推定することができる。
【００４３】
このような構成によれば、例えば、リハビリ患者の身体の３次元点群を取得することで、この３次元点群からリハビリ患者の姿勢を推定することができる。これにより、リハビリ患者の身体がどの程度動いているのか、どのような範囲で各部位が動いているのか、などを得ることができる。
【００４４】
［第２の実施形態］
本実施形態では、パーツ検出部１０４による処理範囲の設定方法が、第１の実施形態と異なる。本実施形態では、データ取得部１０１は図９に９０１として示す３次元点群を取得し、初期姿勢取得部１０３は、図９に９０２として示す近似モデルを生成したとする。
【００４５】
処理範囲を設定する際、形状モデル同士が近い場合には重複する領域があるため、形状モデル間の距離を用いて境界を設定し、重複しないよう処理範囲を設定する。パーツ検出部１０４は、図１０に示す如く、形状モデル１００３の境界を設定する場合、形状モデル１００３と形状モデル１００４との間に境界を設定する。この境界は、形状モデル１００３の中心線１００５と形状モデル１００４の中心線１００６に対する距離を次の式で求める。
【００４６】
【数３】
2015102913.tif 000005
【００４７】
ここで、Ｐ１は中心線１００５の方向ベクトル、Ｐ２は中心線１００６の方向ベクトルで、ｎはＰ１及びＰ２に対して直交するベクトルである。ベクトルｎ（線分１００７）上において、形状モデル１００３と形状モデル１００４の半径の長さの差分を取った距離の中点１００８を求める。この中点１００８を複数箇所で求めて、複数の中点を通る平面１００９を求め、これを形状モデル間の境界とする。同様に他の各形状モデルに対しても、形状モデル同士の境界平面を求める、各形状モデルの中心位置を基準に平面より近い範囲を処理範囲として設定する。
【００４８】
本実施形態では、パーツ検出部１０４は、ステップＳ１０４において、図１１に示したフローチャートに従った処理を実行する。ステップＳ１１０１では、パーツ検出部１０４は、特徴量算出部１０２から３次元点群及びその特徴量を取得し、初期姿勢取得部１０３からは近似モデルを取得する。
【００４９】
ステップＳ１１０２ではパーツ検出部１０４は、初期姿勢取得部１０３から受けた近似モデルを構成する各形状モデルのうち未選択の形状モデルを選択し、該選択形状モデルに近接する形状モデルがあれば、この形状モデル間に上記のようにして境界を設定する。もちろん、近接する形状モデル間に境界を設定する方法は上記の方法に限るものではない。
【００５０】
ステップＳ１００３では、パーツ検出部１０４は、選択形状モデルに対し、第１の実施形態と同様にして処理範囲を設定する。その際、処理範囲がステップＳ１１０２で設定した境界の内部（選択形状モデルの中心位置から境界までの距離以下）に収まるように設定する。
【００５１】
ステップＳ１００４では、パーツ検出部１０４は、ステップＳ１００３で設定した処理範囲内で、第１の実施形態と同様にして、選択形状モデルを移動及び／又は変形させる。ステップＳ１００５では、パーツ検出部１０４は、初期姿勢取得部１０３から受けた近似モデルを構成する全ての形状モデルをステップＳ１１０２で選択したか否かを判断する。この判断の結果、全ての形状モデルを選択した場合には、処理はステップＳ１０５に進み、未選択の形状モデルが残っている場合には、処理はステップＳ１１０２に進む。
【００５２】
［第３の実施形態］
本実施形態では図１２に示す如く、データ取得部１０１が取得した３次元点群１２０１に対して、初期姿勢取得部１０３において初期姿勢１２０２をもとに作成された近似モデル１２０３と各形状モデルの隠れ情報１２０４とがパーツ検出部１０４に出力される。
【００５３】
パーツ検出部１０４は、近似モデル１２０３と隠れ情報１２０４をもとに、処理範囲を設定し、形状モデルの移動及び／又は変形を行う。その際、例えば形状モデル１３０５（図１３）に対応する隠れ情報が「有」（隠れている）の場合、該形状モデル１３０５を移動及び／又は変形させるための処理範囲のパラメータ（３次元位置、３軸の回転）を０に設定する。これにより、実質的には、形状モデル１３０５の移動及び／又は変形は行われないことになる。即ち、パーツ検出部１０４は、隠れていない形状モデルとして指定されている指定形状モデルについてのみ、移動及び／又は変形を行う。これを全形状モデルに対して実行した結果１３０６（図１３）が位置合わせ部１０５に対して送出される。
【００５４】
位置合わせ部１０５では、パーツ検出部１０４と同様に各形状モデルの隠れ情報１２０４を参照する。そして、例えば形状モデル１３０５に対応する隠れ情報が「有」の場合、形状モデル１３０５に対する位置合わせのパラメータ、例えば、用いる３次元点数や用いる３次元点の距離を０に設定することで、形状モデル１３０５の位置合わせを行わない。そして位置合わせ部１０５は、隠れ情報が「無」に対応する形状モデルについて位置合わせを行った近似モデルを、後段の関節位置推定部１０６に対して送出する。
【００５５】
関節位置推定部１０６は、位置合わせ部１０５から受けた近似モデルを用いて第１の実施形態と同様の処理を行うことで、図１４に例示するような、関節位置及び人物の姿勢を示す情報（１４０７）を出力する。
【００５６】
本実施形態では、パーツ検出部１０４は、ステップＳ１０４において、図１５に示したフローチャートに従った処理を実行する。ステップＳ１５０１では、パーツ検出部１０４は、特徴量算出部１０２から３次元点群及びその特徴量を取得し、初期姿勢取得部１０３からは近似モデル及び隠れ情報を取得する。
【００５７】
ステップＳ１５０２では、パーツ検出部１０４は、対象形状モデルに対応する隠れ情報を参照し、該対象形状モデルが隠れているか否かを判断する。この判断の結果、隠れている場合には、処理はステップＳ１５０７に進み、隠れていない場合には、処理はステップＳ１５０３に進む。
【００５８】
ステップＳ１５０３では、パーツ検出部１０４は、第１の実施形態と同様にして、対象形状モデルに対して処理範囲を設定する。ステップＳ１５０４では、パーツ検出部１０４は、ステップＳ１５０３で設定した処理範囲内で、第１の実施形態と同様にして、対象形状モデルを移動及び／又は変形させる。ステップＳ１５０５では、パーツ検出部１０４は、ステップＳ１５０４における処理が成功したか否かを判断する。この判断には様々な基準を用いることができる。例えば、ステップＳ１５０４における処理で確定した形状モデルと、そのほかの確定済みの形状モデルとの位置や姿勢の関係において基準値以上のずれがある場合には失敗と判断しても良い。
【００５９】
そしてステップＳ１５０５における判断の結果、ステップＳ１５０４における処理が成功したと判断した場合には、処理はステップＳ１５０７に進み、失敗と判断した場合には、処理はステップＳ１５０６に進む。ステップＳ１５０６では、パーツ検出部１０４は、対象形状モデルに対応する隠れ情報を「有」に設定する。
【００６０】
ステップＳ１５０７では、パーツ検出部１０４は、初期姿勢取得部１０３から受けた近似モデルを構成する全ての形状モデルについてステップＳ１５０２〜Ｓ１５０６の処理を行ったか否かを判断する。
【００６１】
この判断の結果、初期姿勢取得部１０３から受けた近似モデルを構成する全ての形状モデルについてステップＳ１５０２〜Ｓ１５０６の処理を行った場合、パーツ検出部１０４は、近似モデルと隠れ情報とを位置合わせ部１０５に送出する。そして、処理はステップＳ１０５に進む。
【００６２】
一方、初期姿勢取得部１０３から受けた近似モデルを構成する全ての形状モデルのうちステップＳ１５０２〜Ｓ１５０６の処理を行っていない形状モデルが残っている場合には、処理はステップＳ１５０２に戻る。そして、残っている形状モデルのうち１つを対象形状モデルとしてステップＳ１５０２以降の処理を行う。
【００６３】
なお、隠れ情報は、形状モデルに対してではなく、各人体部位に対して設定されても良い。その場合であっても、各人体部位と形状モデルとは対応しているので、パーツ検出部１０４及び位置合わせ部１０５は、隠れ情報が「無」になっている人体部位に対応する形状モデルを処理対象とすればよい。
【００６４】
［第４の実施形態］
本実施形態では、図１６に示す如く、３次元点群１６０１を用いて近似モデル１６０２を確定させた場合に、この近似モデル１６０２における形状モデル間の連結位置１６１０〜１６１８を定義し、全部の形状モデルの連結構造を定義する。そして、以下に示す文献に開示されている手法であるＡｒｔｉｃｕｌａｔｅｄ  ＩＣＰを用いて、上記連結構造に基づいて形状モデル連結を行うと共に、上記の位置合わせを行い、近似モデル１６０３を得る。
【００６５】
文献：“Ａ  Ｇｅｎｅｒａｌｉｚａｔｉｏｎ  ｏｆ  ｔｈｅ  ＩＣＰ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ａｒｔｉｃｕｌａｔｅｄ  Ｂｏｄｉｅｓ”、Ｓ．Ｐｅｌｌｅｇｒｉｎｉ，Ｋ．Ｓｃｈｉｎｄｌｅｒ，Ｄ．Ｎａｒｄｉ，ＢＭＶＣ  ２００８）
位置合わせ部１０５は、パーツ検出部１０４から得られた近似モデル１６０２に対して、上記の連結位置１６１０〜１６１９を設定し、各形状モデルと連結位置とから、全体の形状モデルの連結構造を定義する。この定義では、胴体を基準として胴体と頭の形状モデルが連結位置１６１０を介して繋がっていることや、胴体と右上腕と右前腕が連結位置１６１１及び１６１２を介して繋がっていることを定義する。この定義をＰ１，…、ＰＢとして定義する。
【００６６】
ここで、Ｐ１はルートとなるパーツの形状モデル、Ｐ２〜ＰＢはノードとなるパーツの形状モデルである。このように、各形状モデルに対してルートとノードの連結関係を用いて、３次元点群１６０１に対して式（４）を最小化するように、各形状モデルの位置合わせを行う。
【００６７】
【数４】
2015102913.tif 000006
【００６８】
ここで、Ｔ１は、ルートとなる形状モデルの座標系から世界座標系への変換マトリクス、Ｔ２〜ＴＢはそれぞれ、対応するノードの形状モデルの座標系から世界座標系への変換マトリクスである。Ｌは、形状モデルに対応する部分３次元点群に含まれている３次元点の数、ｉは部分３次元点群に含まれている各３次元点に対するインデックス、ｊは各形状モデルに対するインデックス（ｊ＝１はルートの形状モデル）を表す。また、ｄｉは部分３次元点群においてｉ番目の３次元点の世界座標系における位置、ｍｉｊは部分３次元点群においてｉ番目の３次元点に最も近い、ｊ番目の形状モデル上の点の形状モデル座標系における位置、を表す。
【００６９】
このＥは、形状モデルごとの３次元点群との距離の総和を合計したエネルギー関数であり、この総和を最小化するように各形状モデルの位置合わせを行う。なお、Ｔが複数ある場合は、先ほど述べたパーツの連結関係を利用する。また、この連結関係は隠れ情報１２０４を利用して、隠れているパーツがある場合はそれを取り除いて連結関係を作り直してもよい。そして位置合わせ部１０５は、このようにして位置合わせを行った近似モデルを、後段の関節位置推定部１０６に対して送出する。
【００７０】
本実施形態では、位置合わせ部１０５は、ステップＳ１０５において図１７のフローチャートに従った処理を行う。ステップＳ１７０１では、位置合わせ部１０５は、パーツ検出部１０４から送出された近似モデル及び３次元点群の特徴量を取得する。
【００７１】
ステップＳ１７０２では、位置合わせ部１０５は、ステップＳ１７０１で取得した近似モデルに対して、上記の連結位置を求め、該求めた連結位置に基づいて上記の連結構造を定義する。すなわち、胴体を基準に頭、腕、脚の連結関係を定義する。
【００７２】
ステップＳ１７０３では、位置合わせ部１０５は、上記のエネルギー関数の値を計算し、この値を最小化するように、各形状モデルの位置合わせを行う。ステップＳ１７０４では位置合わせ部１０５は、再度エネルギー関数の値を計算し、前回計算したエネルギー関数の値との差分の絶対値を計算すると共に、ステップＳ１７０３の処理を行った回数をカウントする。
【００７３】
そして、計算した絶対値が規定値以下（エネルギー関数の値が収束した）、若しくはカウントした回数が規定回数以上であれば、位置合わせ部１０５は、近似モデルを関節位置推定部１０６に対して送出し、処理はステップＳ１０６に進む。一方、計算した絶対値が規定値より大きく（エネルギー関数の値が収束していない）、且つカウントした回数が規定回数未満であれば、処理はステップＳ１７０３に進む。なお、第１〜４の実施形態のうち２以上の実施形態の全体若しくは一部を組み合わせて使用しても構わない。
【００７４】
［第５の実施形態］
図１に示した各部はいずれもハードウェアで構成しても良いが、ソフトウェア（コンピュータプログラム）で構成しても良い。その場合、このコンピュータプログラムを実行可能な装置は、上記の各実施形態における姿勢推定装置として機能することができる。各実施形態における姿勢推定装置として機能可能な装置のハードウェア構成例を図１８に示す。なお、各実施形態における姿勢推定装置として機能可能な装置のハードウェア構成は図１８に示した構成に限るものではなく、様々な構成例が考え得る。
【００７５】
ＣＰＵ１８０１は、ＲＡＭ１８０２やＲＯＭ１８０３に格納されているコンピュータプログラムやデータを用いて本装置全体の動作制御を行うと共に、姿勢推定装置が行うものとして上述した各処理を実行する。
【００７６】
ＲＡＭ１８０２は、外部記憶装置１８０６からロードされたコンピュータプログラムやデータ、Ｉ／Ｆ（インターフェース）１８０７を介して外部から取得したデータを一時的に記憶するためのエリアを有する。また、ＲＡＭ１８０２は、ＣＰＵ１８０１が各種の処理を実行する際に用いるワークエリアも有する。即ち、ＲＡＭ１８０２は、各種のエリアを適宜提供することができる。
【００７７】
ＲＯＭ１８０３には、本装置の設定データやブートプログラムなどが格納されている。操作部１８０４は、キーボードやマウスなどにより構成されており、本装置の操作者が操作することで、各種の指示をＣＰＵ１８０１に対して入力することができる。
【００７８】
表示部１８０５は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１８０１による処理結果を画像や文字などでもって表示することができる。例えば、表示部１８０５には、３次元点群や形状モデルなどを表示することができる。
【００７９】
外部記憶装置１８０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１８０６には、ＯＳ（オペレーティングシステム）や、姿勢推定装置が行うものとして上述した各処理をＣＰＵ１８０１に実行させるためのコンピュータプログラムやデータが保存されている。このコンピュータプログラムには、図１に示した各部の機能をＣＰＵ１８０１に実行させるためのコンピュータプログラムが含まれている。また、このデータには、距離画像や３次元点群、上記の各処理において既知の情報として説明した情報が含まれている。外部記憶装置１８０６に保存されているコンピュータプログラムやデータは、ＣＰＵ１８０１による制御に従って適宜ＲＡＭ１８０２にロードされ、ＣＰＵ１８０１による処理対象となる。
【００８０】
Ｉ／Ｆ１８０７は、外部装置を本装置に接続するためのもので、例えば３次元点群や距離画像を保持している外部装置や、上記のステレオカメラやＴＯＦカメラなどの距離画像を撮像する撮像装置をこのＩ／Ｆ１８０７に接続することができる。これにより本装置は、Ｉ／Ｆ１８０７に接続されている機器とのデータ通信を行うことができる。なお、上記の各部はいずれも、バス１８０８に接続されている。
【００８１】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015102913.tif 000007
【図３】
2015102913.tif 000008
【図４】
2015102913.tif 000009
【図５】
2015102913.tif 000010
【図６】
2015102913.tif 000011
【図７】
2015102913.tif 000012
【図８】
2015102913.tif 000013
【図９】
2015102913.tif 000014
【図１０】
2015102913.tif 000015
【図１１】
2015102913.tif 000016
【図１２】
2015102913.tif 000017
【図１３】
2015102913.tif 000018
【図１４】
2015102913.tif 000019
【図１５】
2015102913.tif 000020
【図１６】
2015102913.tif 000021
【図１７】
2015102913.tif 000022
【図１８】
2015102913.tif 000023
【図２】
2015102913.tif 000024