(57)【特許請求の範囲】
【請求項１】
関節により接続された複数の部位を有する物体を撮影した画像データに基づいて前記物体の姿勢の推定を行う姿勢推定装置であって、
前記姿勢毎に、前記部位の位置を規定する基準モデルを格納する基準モデル格納部と、
前記姿勢毎に、密集部分の重みが小さくなるように前記部位に対して重み付けを行う重み付け算出部と、
前記重み付けを適用して前記基準モデルと前記物体とを比較することにより、前記物体の姿勢を推定する姿勢推定部と、を有する、
姿勢推定装置。
【請求項２】
前記重み付け算出部は、
前記部位毎に、他の部位が位置したときに当該他の部位の存在が前記推定のノイズとなる可能性が高い範囲を示す部位間最小重み距離を算出する部位間最小重み距離算出部と、
重みの範囲を保持する最大最小重み算出部と、
前記姿勢毎に、前記重みの範囲で、前記基準モデルの前記部位のうち、その前記部位間最小重み距離が示す範囲内に当該部位間最小重み距離に対応する前記他の部位が位置する前記部位に対しては小さい重みを決定し、その前記部位間最小重み距離が示す範囲内に当該部位間最小重み距離に対応する前記他の部位が位置しない前記部位に対しては大きい重みを決定する姿勢毎重み付け処理部と、を有する、
請求項１記載の姿勢推定装置。
【請求項３】
前記最大最小重み算出部は、
前記姿勢推定部が前記比較の対象とする部位の数に基づいて、前記部位の数がより多いほどより広くなるように、前記重み範囲を決定する、
請求項２記載の姿勢推定装置。
【請求項４】
前記部位間最小重み距離算出部は、
前記部位毎に、当該部位の部位太さに基づいて、前記部位間最小重み距離を算出する、
請求項３記載の姿勢推定装置。
【請求項５】
前記部位間最小重み距離算出部は、
前記部位毎に、当該部位の、前記姿勢推定において無視すべき角度誤差に基づいて、前記部位間最小重み距離を算出する、
請求項４記載の姿勢推定装置。
【請求項６】
前記姿勢毎重み付け処理部は、
前記姿勢毎および前記部位毎に、他の部位との距離の最小値が小さいほど、より小さい重みを決定する、
請求項５記載の姿勢推定装置。
【請求項７】
前記物体の体格や姿勢に関する制約条件であって、前記部位太さおよび前記角度誤差を含む身体制約情報を格納する身体制約情報格納部、を更に有し、
前記部位間最小重み距離算出部は、
前記身体制約情報格納部から、前記部位太さおよび角度誤差を取得する、
請求項６記載の姿勢推定装置。
【請求項８】
前記物体は、人である、
請求項７記載の姿勢状態推定装置。
【請求項９】
関節により接続された複数の部位を有する物体を撮影した画像データに基づいて前記物体の姿勢の推定を行う姿勢推定装置を含む姿勢推定システムであって、
前記姿勢毎に、前記部位の位置を規定する基準モデルを格納する第１の基準モデル格納部と、前記姿勢毎に、密集部分の重みが小さくなるように前記部位に対して重み付けを行う重み付け算出部と、前記重み付けを示す重み付け情報を格納する重み付け情報格納部と、を有する重み付け決定装置を有し、
前記姿勢推定装置は、
前記基準モデルを格納する第２の基準モデル格納部と、前記重み付け決定装置から前記重み付け情報を取得する重み付け情報取得部と、取得された前記重み付け情報を適用して前記基準モデルと前記物体とを比較することにより、前記物体の姿勢を推定する姿勢推定部と、を有する、
姿勢推定システム。
【請求項１０】
関節により接続された複数の部位を有する物体を撮影した画像データに基づいて、前記姿勢毎に前記部位の位置を規定する基準モデルを用いて前記物体の姿勢の推定を行う姿勢推定方法であって、
前記姿勢毎に、密集部分の重みが小さくなるように前記部位に対して重み付けを行うステップと、
前記重み付けを適用して前記基準モデルと前記物体とを比較することにより、前記物体の姿勢を推定するステップと、を有する、
姿勢推定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、関節により接続された複数の部位を有する物体を撮影した画像データに基づいて、その物体の姿勢の推定を行う姿勢推定装置、姿勢推定システム、および姿勢推定方法に関する。
【背景技術】
【０００２】
近年、撮影された動画像の画像データに基づく人の姿勢推定に関する研究が、盛んに行われている。なぜなら、動画像から人の行動をコンピュータ解析により判定することができれば、各種の分野において行われている行動解析を、人手に頼らずに行うことが可能となるからである。行動解析としては、例えば、街頭での異常行動検知、店舗での購買行動分析、工場における作業効率化支援、およびスポーツにおけるフォーム指導が挙げられる。
【０００３】
そこで、単眼カメラにより撮影された画像データに基づいて、人の姿勢を推定する技術が、例えば特許文献１および非特許文献１に記載されている。
【０００４】
特許文献１および非特許文献１に記載の技術（以下「従来技術」という）は、モデル画像のシルエット（モデルシルエット）を、姿勢毎に用意しておく。そして、従来技術は、撮影画像から抽出したシルエット（観測対象シルエット）との類似度が最も高いシルエットの姿勢を、撮影画像に含まれる被写体の姿勢と推定する。具体的には、従来技術は、モデルシルエットと観測シルエットとのピクセル毎の排他的論理和に基づいて、シルエット距離を算出し、シルエット距離が小さいことをもって類似度が高いと判定する。
【０００５】
ただし、シルエットの輪郭部分は、同じ姿勢であってもその位置や角度のばらつきが大きい。そこで、従来技術は、観測シルエットの中心により近いピクセルほどその排他的論理和に対してより大きい重み付けを行って、シルエット距離を算出する。これにより、従来技術は、輪郭部分のノイズ（ばらつき）にロバストな姿勢推定を行うことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３１０７０７号公報
【非特許文献】
【０００７】
【非特許文献１】岡田隆三、シュテンガ  ビヨン、「シルエットを用いた Tree-Based Filtering による人体の姿勢推定」、画像の認識・理解シンポジウム（ＭＩＲＵ２００６）、２００６年７月、ｐ.６３−６９
【非特許文献２】下坂正倫、佐藤真、森武俊、佐藤知正、「単眼画像からの形状特徴を用いた動作認識法」、全国大会講演論文集  第７０回平成２０年（５）、社団法人情報処理学会、２００８年３月１３日、ｐ.５−９３、ｐ.５−９４
【非特許文献３】P. Viola and M. Jones, "Rapid Object Detection Using a Boosted Cascade of Simple Features," in Proc. of CVPR, vol.1, December, 2001, ppp.511-518
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来技術は、姿勢によっては、これを高精度に推定することができないという課題を有していた。なぜなら、従来技術は、部位ごとに、部位の中心位置からの距離に基づいて重み付けしているが、特徴的な姿勢情報を有効活用していないからである。たとえば、腕を伸ばしている姿勢において前腕は特徴的な姿勢情報であり、腕を垂らしている姿勢において前腕は特徴的な姿勢情報ではないにもかかわらず、いずれの姿勢においても、その姿勢における前腕の重み付けは同等である。
【０００９】
また、従来技術は、ロボット等の、関節により接続された複数の部位を有する人以外の各種物体にも適用することが考えられるが、この場合にも同様の問題が起こり得る。
【００１０】
本発明の目的は、関節を有する物体の姿勢を高精度に推定することができる姿勢推定装置、姿勢推定システム、および姿勢推定方法を提供することである。
【課題を解決するための手段】
【００１１】
本発明の姿勢推定装置は、関節により接続された複数の部位を有する物体を撮影した画像データに基づいて前記物体の姿勢の推定を行う姿勢推定装置であって、前記姿勢毎に、前記部位の位置を規定する基準モデルを格納する基準モデル格納部と、前記姿勢毎に、密集部分の重みが小さくなるように前記部位に対して重み付けを行う重み付け算出部と、前記重み付けを適用して前記基準モデルと前記物体とを比較することにより、前記物体の姿勢を推定する姿勢推定部とを有する。
【００１２】
本発明の姿勢推定システムは、関節により接続された複数の部位を有する物体を撮影した画像データに基づいて前記物体の姿勢の推定を行う姿勢推定装置を含む姿勢推定システムであって、前記姿勢毎に、前記部位の位置を規定する基準モデルを格納する第１の基準モデル格納部と、前記姿勢毎に、密集部分の重みが小さくなるように前記部位に対して重み付けを行う重み付け算出部と、前記重み付けを示す重み付け情報を格納する重み付け情報格納部とを有する重み付け決定装置を有し、前記姿勢推定装置は、前記基準モデルを格納する第２の基準モデル格納部と、前記重み付け決定装置から前記重み付け情報を取得する重み付け情報取得部と、取得された前記重み付け情報を適用して前記基準モデルと前記物体とを比較することにより、前記物体の姿勢を推定する姿勢推定部とを有する。
【００１３】
本発明の姿勢推定方法は、関節により接続された複数の部位を有する物体を撮影した画像データに基づいて、前記姿勢毎に前記部位の位置を規定する基準モデルを用いて前記物体の姿勢の推定を行う姿勢推定方法であって、前記姿勢毎に、密集部分の重みが小さくなるように前記部位に対して重み付けを行うステップと、前記重み付けを適用して前記基準モデルと前記物体とを比較することにより、前記物体の姿勢を推定するステップとを有する。
【発明の効果】
【００１４】
本発明によれば、関節を有する物体の姿勢を高精度に推定することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１に係る姿勢推定装置の構成の一例を示すブロック図
【図２】本発明の実施の形態２に係る姿勢推定装置の構成の一例を示すブロック図
【図３】本発明の実施の形態３に係る姿勢推定装置の構成の第１の例を示すブロック図
【図４】本実施の形態３における画像データを説明するための図
【図５】本実施の形態３における身体候補推定部の構成の一例を示すブロック図
【図６】本実施の形態３における重み付け算出部の構成の一例を示すブロック図
【図７】本実施の形態３に係る姿勢推定装置の動作の一例を示すフローチャート
【図８】本実施の形態３における部位間最小重み距離算出処理の一例を示すフローチャート
【図９】本実施の形態３における基準モデルの例と推定尤度マップが示す物体の例とを模式的に示す図
【図１０】本実施の形態３における部位間最小重み距離の算出手法の第１の例を説明するための第１の図
【図１１】本実施の形態３における部位間最小重み距離の算出手法の第２の例を説明するための第２の図
【図１２】本実施の形態３における部位間最小重み距離の算出手法の第３の例を説明するための図
【図１３】本実施の形態３における重み付け算出処理の一例を示すフローチャート
【図１４】本実施の形態３における姿勢推定処理の一例を示すフローチャート
【図１５】本実施の形態３におけるオメガ形状を説明するための図
【図１６】本実施の形態３における基準線からオメガ形状までの垂直距離を説明するための図
【図１７】本実施の形態３における距離ヒストグラムの一例を示す図
【図１８】本実施の形態３における２値化後の距離ヒストグラムの一例を示す図
【図１９】本実施の形態３における基準部位を示す各種パラメータを説明するための図
【図２０】本実施の形態３における基準部位対応テーブルの内容の一例を示す図
【図２１】本実施の形態３における部位領域対応テーブルの内容の一例を示す図
【図２２】本実施の形態３における部位領域データの内容の一例を示す図
【図２３】本実施の形態３における推定尤度マップの一例を示す図
【図２４】本実施の形態３における２値化後の推定尤度マップの一例を示す図
【図２５】本実施の形態３に係る姿勢推定装置の構成の第２の例を示すブロック図
【図２６】本実施の形態３に係る姿勢推定装置の構成の第３の例を示すブロック図
【発明を実施するための形態】
【００１６】
以下、本発明の各実施の形態について、図面を参照して詳細に説明する。本発明の実施の形態１および実施の形態２は、本発明の基本的態様の例であり、本発明の実施の形態３は、本発明の具体的態様の例である。
【００１７】
なお、以下に説明する各実施の形態において、「部位」とは、人の身体のうち関節によって分割された部分の一まとまりをいうものとする。すなわち、部位は、例えば、頭、肩、右上腕、右前腕、左上腕、左前腕、右膝上、右膝下、左膝上、および左膝下である。また、「部位領域」とは、画像においてある部位が占め得る領域、つまり、部位の可動範囲であるものとする。
【００１８】
また、「部位数」とは、姿勢推定における評価対象となる部位の総数である。すなわち、全身を評価対象として姿勢の推定を行う場合には、部位数は、例えば、頭、肩（胴体を含む）、右上腕、右前腕、左上腕、左前腕、右膝上、右膝下、左膝上、および左膝下で分類される部位の数であり、「１０」である。
【００１９】
また、「部位軸」とは、部位の長手方向の仮想的な中心軸であり、具体的には、部位を基準部位側の他の第１の部位と接続する第２の関節と、部位を他の第２の部位と接続する第２の関節または部位の端部とを結ぶ線分をいうものとする。部位軸は、例えば、第１の関節の座標情報と、角度情報と、部位長さとの組により定義されてもよいし、第１の関節の座標情報と第２の関節もしくは部位の端部の座標情報とにより定義されてもよい。例えば、右上腕の部位軸の位置、向き、および長さは、右上腕の骨の中心軸の位置、向き、および長さにほぼ一致する。
【００２０】
また、「部位太さ」とは、部位の部位軸周りの太さであり、例えば画面上での幅である。
【００２１】
また、「部位候補」とは、部位の位置の候補であり、画像データから推定される部位の位置である。
【００２２】
また、「シルエット」とは、画面上で一人の身体が占める閉じられた領域の候補であり、画像から推定される身体の位置である。なお、部位候補およびシルエット候補は、適宜、「身体候補」と総称する。
【００２３】
また、「姿勢」とは、２次元座標系または３次元座標系における、部位を接続する関節の位置、または、関連する各部位の長さおよび部位間の角度等の情報によって表現されるものとする。したがって、「姿勢推定」とは、これらの情報を推定することにより、姿勢を推定することをいう。なお、上述の位置、長さ、および角度は、人の所定の身体部位を基準とした相対値により表現されてもよいし、２次元座標系または３次元座標系における絶対値により表現されてもよい。
【００２４】
また、以下の各実施の形態では、処理対象の単位を画素として説明するが、姿勢推定装置は、所定のサイズに相当する複数の画素の一まとまりを、それぞれ一つの画素とみなして、同様の処理を行ってもよい。これにより、姿勢推定装置は、処理を高速に行うことができる。複数の画素をひとつの画素とみなす場合、複数の画素の重心となる画素の値をその複数の画素の値として用いてもよいし、複数の画素の値の平均値を、その複数の画素の値として用いてもよい。
【００２５】
（実施の形態１）
図１は、本発明の実施の形態に係る姿勢推定装置の構成を示すブロック図である。
【００２６】
図１において、本発明の実施の形態に係る姿勢推定装置１００は、関節により接続された複数の部位を有する物体である人を撮影した画像データに基づいて、その人の姿勢の推定を行う装置である。姿勢推定装置１００は、基準モデル格納部１４０、重み付け算出部１５０、および姿勢推定部１６０を有する。
【００２７】
基準モデル格納部１４０は、姿勢毎に、部位の位置を規定する基準モデルを格納する。
【００２８】
重み付け算出部１５０は、姿勢毎に、密集部分の重みが小さくなるように部位に対して重み付けを行う。ここで、密集部分とは、胴体の前で組んだ両腕の各部位など、複数の部位が密集している部分である。すなわち、密集部分は、姿勢推定においてノイズが発生し易い部位である。
【００２９】
姿勢推定部１６０は、上述の重み付けを適用して基準モデルと人とを比較することにより、人の姿勢を推定する。
【００３０】
なお、姿勢推定装置１００は、例えば、ＣＰＵ（central processing unit）、制御プログラムを格納したＲＯＭ（read only memory）などの記憶媒体、およびＲＡＭ（random access memory）などの作業用メモリをそれぞれ有する。この場合、上記した各構成部の機能は、ＣＰＵが制御プログラムを実行することにより実現される。
【００３１】
このような姿勢推定装置１００は、ノイズが発生し易い密集部分の影響を低減して姿勢推定を行うことができる。また、これにより、姿勢推定装置１００は、周囲に伸ばした腕の手や前腕など、他の部位と離れており姿勢の特徴部分となる部位（以下「分散部分」という）の重み付けを、相対的に大きくすることができる。したがって、姿勢推定装置１００は、各部位が姿勢推定精度に与える影響の度合いに対応した重み付けを行うので、関節を有する人の姿勢を高精度に推定することができる。
【００３２】
なお、ここでは、重み付け算出部１５０は、姿勢毎に、密集部分の重みが小さくなるように部位に対して重み付けを行う例を説明したが、分散部分の重み付けを大きくして、密集部分の重みが相対的に小さくなるようにしてもよい。
【００３３】
（実施の形態２）
図２は、本発明の実施の形態に係る姿勢推定装置の構成を示すブロック図である。
【００３４】
図２において、本発明の実施の形態に係る姿勢推定装置１００は、関節により接続された複数の部位を有する物体である人を撮影した画像データに基づいて、その人の姿勢の推定を行う装置である。姿勢推定装置１００は、基準モデル格納部１４０、重み付け算出部１５０、および姿勢推定部１６０を有する。
【００３５】
基準モデル格納部１４０は、姿勢毎に、部位の位置を規定する基準モデルを格納する。
【００３６】
重み付け算出部１５０は、姿勢毎に、密集部分の重みが小さくなるように部位に対して重み付けを行う。重み付け算出部１５０は、部位間最小重み距離算出部１５１、最大最小重み算出部１５２、および姿勢毎重み付け処理部１５３を有する。
【００３７】
部位間最小重み距離算出部１５１は、部位毎に、部位間最小重み距離を算出する。部位間最小重み距離とは、他の部位が位置したときに当該他の部位の存在が上述の姿勢の推定のノイズとなる可能性が高い範囲を示すパラメータである。
【００３８】
最大最小重み算出部１５２は、重みの範囲を保持する。
【００３９】
姿勢毎重み付け処理部１５３は、姿勢毎に、上述の重みの範囲で、基準モデルの部位毎に小さい重みまたは大きい重みを決定して、基準モデルの各部位に対して重み付けを決定する。より具体的には、姿勢毎重み付け処理部１５３は、基準モデルの部位のうち、その部位間最小重み距離が示す範囲内に、当該部位間最小重み距離に対応する他の部位が位置する部位に対しては、小さい重みを決定する。また、姿勢毎重み付け処理部１５３は、その部位間最小重み距離が示す範囲内に、当該部位間最小重み距離に対応する他の部位が位置しない部位に対しては、大きい重みを決定する。
【００４０】
姿勢推定部１６０は、姿勢毎重み付け処理部１５３が決定した重み付けを適用して基準モデルと人とを比較することにより、人の姿勢を推定する。
【００４１】
なお、姿勢推定装置１００は、例えば、ＣＰＵ、制御プログラムを格納したＲＯＭなどの記憶媒体、およびＲＡＭなどの作業用メモリをそれぞれ有する。この場合、上記した各構成部の機能は、ＣＰＵが制御プログラムを実行することにより実現される。
【００４２】
このような姿勢推定装置１００は、他の部位が位置したときに当該他の部位の存在が姿勢推定のノイズとなる可能性が高い範囲（画像領域、部位間最小重み距離が示す範囲）を、小さい重みを決定すべき密集部分として扱うことができる。これにより、姿勢推定装置１００は、ノイズが発生し易い部分に対して的確に小さい重みを設定することができるので、関節を有する人の姿勢を高精度に推定することができる。
【００４３】
（実施の形態３）
図３は、本発明の実施の形態に係る姿勢推定装置の構成を示すブロック図である。説明の簡便化のため、姿勢推定装置の周辺機器についても併せて図示する。
【００４４】
図３において、本発明の実施の形態に係る姿勢推定装置１００は、関節により接続された複数の部位を有する物体である人を撮影した画像データに基づいて、その人の姿勢の推定を行う装置である。姿勢推定装置１００は、身体制約情報格納部１１０、画像データ取得部１２０、身体候補推定部１３０、基準モデル格納部１４０、重み付け算出部１５０、および姿勢推定部１６０を有する。
【００４５】
身体制約情報格納部１１０は、人の体格や姿勢に関する制約条件（以下「身体制約情報」という）を、予め格納する。身体制約情報は、後述の部位領域の推定や部位候補の抽出に用いられる情報である。身体制約情報の具体的な内容は、部位領域の推定手法や部位候補の抽出手法により異なるため、後述する。
【００４６】
画像データ取得部１２０は、所定の３次元座標空間に設置された単眼カメラ２００によって撮像された画像の画像データを、有線通信または無線通信により取得し、身体候補推定部１３０へ出力する。なお、本実施の形態において、単眼カメラ２００はビデオカメラであるものとする。画像データ取得部１２０は、単眼カメラ２００において連続的にリアルタイムで撮影された動画像データを入力し、動画像データを構成する各静止画像データを、順次、身体候補推定部１３０へ出力する。以下の説明において、画像データは、一人のみの画像を含むものとして説明するが、この限りではなく、複数人の画像を含んでもよいし、人の画像を含んでいなくてもよい。
【００４７】
図４は、画像データを説明するための図である。
【００４８】
図４に示すように、例えば、単眼カメラ２００の位置を地面に投射した位置を原点Ｏとする３次元の座標系４１０を設定する。座標系４１０は、例えば、垂直方向をＹ軸とし、Ｙ軸および単眼カメラ２００の光軸４１１と直交する方向をＸ軸とし、Ｘ軸およびＹ軸に直交する方向をＺ軸とする。
【００４９】
単眼カメラ２００の設置角度は、例えば、Ｙ軸と光軸４１１との間の角度θにより表される。そして、単眼カメラ２００は、単眼カメラ２００の画角φの範囲に含まれるある平面４１２に焦点（フォーカス）を合わせて撮像を行う。このように撮影された画像の画像データは、姿勢推定装置１００へ送信される。
【００５０】
図３の身体候補推定部１３０は、画像データ取得部１２０から入力された画像データに基づいて、人の身体候補（シルエットまたは部位候補）を取得する。そして、身体候補推定部１３０は、取得した身体候補を示す身体候補情報（シルエット情報または部位候補情報）を、姿勢推定部１６０へ出力する。本実施の形態において、身体候補推定部１３０は、人の部位候補を取得し、部位候補情報を出力するものとする。
【００５１】
図５は、身体候補推定部１３０の構成の一例を示すブロック図である。
【００５２】
図５において、身体候補推定部１３０は、部位領域推定部１３１および部位候補抽出部１３２を有する。
【００５３】
部位領域推定部１３１は、画像データ取得部１２０から入力された画像データに基づいて、各部位の部位領域を推定する。具体的には、画像データ取得部１２０から入力された画像データに基づいて、各部位の部位領域を推定する。具体的には、部位領域推定部１３１は、画像データから、人の基準部位の位置および向きを推定する。「基準部位」とは、他の部位より前にその位置および向きの推定が行われ、その推定結果が他の部位の位置および向きの推定に影響を与える部位である。そして、部位領域推定部１３１は、推定した基準部位の位置および向きを基準として、各部位の部位領域を推定する。
【００５４】
基準部位は、画像取得空間において、安定して映像が得られる部位とすることが望ましい。そこで、本実施の形態において、基準部位は、人の頭部および肩部とする。また、基準部位の向きは、肩部の向きとし、肩部の向きは、右肩部と左肩部とを結ぶ直線の方向とする。そして、部位領域推定部１３１は、画像データと、部位毎の部位領域を示す情報（以下「部位領域データ」という）とを、部位候補抽出部１３２へ出力する。本実施の形態において、図４に示すように上から画像を取得するようにしている。このため、基準部位を人の頭部および肩部とすることにより、最も安定して推定を行うことができる。
【００５５】
部位候補抽出部１３２は、入力された画像データから、入力された部位領域データに基づいて、各部位候補を抽出する。そして、部位候補抽出部１３２は、画像データと、抽出した部位候補を示す部位候補情報とを、姿勢推定部１６０へ出力する。なお、本実施の形態において、部位候補は、画像上の位置、つまり、画像の２次元座標系により表現されるものとし、部位候補情報は、各部位が位置することの尤もらしさの分布を示す尤度マップであるものとする。
【００５６】
すなわち、本実施の形態において、部位候補抽出部１３２は、部位領域推定部１３１から入力された部位領域データが示す部位領域以外の領域については、その部位領域に対応する指定部位が位置することの尤もらしさを低くした、尤度マップを生成する。以下、画像データに基づいて生成された尤度マップは、「推定尤度マップ」という。
【００５７】
図３の基準モデル格納部１４０は、図３の姿勢推定部１６０の姿勢推定結果となり得る姿勢毎に、基準モデル２次元情報を格納している。基準モデル２次元情報とは、ある姿勢の基準モデルを、ある２次元平面に投影したときの各部位の相対的な位置関係によって示す情報である。基準モデル２次元情報は、非特許文献１に開示されているような、各部位の番号付投影像情報でもよいし、各部位の位置、角度からなる情報でもよい。基準モデル２次元情報の詳細については後述する。
【００５８】
図３の重み付け算出部１５０は、身体制約情報格納部１１０の身体制約情報を参照して、基準モデル格納部１４０に基準モデル２次元情報が格納されている姿勢毎に、基準モデルの各部位に対して重み付けを決定する。より具体的には、重み付け算出部１５０は、姿勢毎に、密集部分の重みが小さくなるように部位に対して重み付けを行う。そして、重み付け算出部１５０は、決定した重み付けを示す重み付け情報を、姿勢推定部１６０へ出力する。
【００５９】
図６は、重み付け算出部１５０の構成の一例を示すブロック図である。説明の簡便化のため、重み付け算出部１５０の周辺の機能部についても併せて図示する。
【００６０】
図６において、重み付け算出部１５０は、部位間最小重み距離算出部１５１、最大最小重み算出部１５２、および姿勢毎重み付け処理部１５３を有する。
【００６１】
部位間最小重み距離算出部１５１は、身体制約情報格納部１１０を参照して、姿勢毎および基準モデルの部位毎に、部位間最小重み距離を算出する。部位間最小重み距離は、上述の通り、他の部位が位置したときに当該他の部位の存在が上述の姿勢の推定のノイズとなる可能性が高い範囲を示すパラメータである。部位間最小重み距離の詳細については、後述する。
【００６２】
最大最小重み算出部１５２は、部位数に基づいて、重みの最大値と最小値を、重みの範囲として算出し、これを保持する。具体的には、最大最小重み算出部１５２は、後述の姿勢推定部１６０が比較の対象とする部位の数（部位数）に基づいて、部位数がより多いほどより広くなるように、重み範囲を決定する。
【００６３】
姿勢毎重み付け処理部１５３は、姿勢毎に、上述の重みの範囲で、基準モデルの部位毎に小さい重みまたは大きい重みを決定して、基準モデルの各部位に対して重み付けを決定する。より具体的には、姿勢毎重み付け処理部１５３は、基準モデルの部位のうち、その部位間最小重み距離が示す範囲内に、当該部位間最小重み距離に対応する他の部位が位置する部位に対しては、小さい重みを決定する。また、姿勢毎重み付け処理部１５３は、その部位間最小重み距離が示す範囲内に、当該部位間最小重み距離に対応する他の部位が位置しない部位に対しては、大きい重みを決定する。重み付けの単位は、部位、画素、複数の画素の範囲のいずれでもよい。部位毎の場合は、重み付け処理を特に高速に行うことができ、画素毎の場合には、特に精度よく姿勢を推定することができる。そして、姿勢毎重み付け処理部１５３は、決定した、姿勢毎の基準モデルの各部位に対する重み付けを示す重み付け情報を、姿勢推定部１６０へ出力する。
【００６４】
なお、部位間最小重み距離算出部１５１が算出した部位毎の部位間最小重み距離、および、最大最小重み算出部１５２が算出した重みの範囲は、全姿勢に共通の値となる。したがって、部位間最小重み距離算出部１５１および最大最小重み算出部１５２は、これらの値を姿勢毎に計算し直さなくてもよく、計算結果を保持しておけばよい。
【００６５】
図３の姿勢推定部１６０は、身体候補推定部１３０から入力された身体候補情報に基づいて、画像データに含まれる人（以下「被写体」という）の姿勢の推定を行う。本実施の形態において、姿勢推定部１６０は、推定尤度マップに基づいて姿勢の推定を行うものとする。
【００６６】
具体的には、姿勢推定部１６０は、姿勢毎および部位毎に、２次元基準モデルマップが示す基準モデルの各部位の位置（領域）と、推定尤度マップが示す対応部位の位置（領域）とが重なる画素の個数をカウントする。例えば、２次元基準モデルマップが、ある部位が存在する画素の値を１、存在しない画素の値を０として保持しているとする。また、推定尤度マップが、ある部位が存在する画素の値を１、存在しない画素の値を０として保持しているとする。この場合、姿勢推定部１６０は、部位ごとに２次元基準モデルマップの値と推定尤度マップの値とを画素ごとに掛け算し、値が１となる画素の個数をカウントする。
【００６７】
ここで、２次元基準モデルマップとは、基準モデル２次元情報が示す基準モデルを、所定の２次元平面に投影したときの、各部位の相対位置関係を示す情報である。この所定の２次元平面は、画像データを撮影したカメラ（ここでは単眼カメラ２００）の撮像面に対応する。２次元基準モデルマップの詳細については後述する。
【００６８】
更に、姿勢推定部１６０は、姿勢毎に、各部位のカウント値に、その部位に対して決定された重みを乗じた値を、画面全体について合算する。そして、姿勢推定部１６０は、その合算値に基づいて、推定尤度マップが示す人と各姿勢の基準モデルとの一致度を判定する。そして、姿勢推定部１６０は、ディスプレイ装置等の情報出力装置３００に対して、有線通信または無線通信により情報を送信し、ユーザに対して推定結果を通知する。
【００６９】
姿勢推定装置１００は、例えば、ＣＰＵ、制御プログラムを格納したＲＯＭなどの記憶媒体、およびＲＡＭなどの作業用メモリをそれぞれ有する。この場合、上記した各構成部の機能は、ＣＰＵが制御プログラムを実行することにより実現される。
【００７０】
このような姿勢推定装置１００は、基準モデルの部位毎に、他の部位が位置したときに当該他の部位の存在が姿勢推定のノイズとなる可能性が高い範囲（画像領域）については、相対的に重みを小さくする。
【００７１】
他の部位と重なっている、または、他の部位との距離が近い部位（密集部分）は、身体候補推定部１３０で正しく推定される確率が低くなる。特に、平行線の抽出により部位候補の推定を行う場合、密集部分は、正しく推定される確率が低くなる。
【００７２】
そこで、姿勢推定装置１００は、密集部分の影響は小さく、分散部分の影響を大きくして、姿勢推定を行う。これにより、姿勢推定装置１００は、ノイズを多く含み得る密集部分による影響を小さくしつつ、姿勢を特徴付ける分散部分による影響を大きくして、姿勢推定を行うので、姿勢推定の精度を向上させることができる。
【００７３】
また、人の姿勢は自由度が高いのに対し、現実的には、限定された代表的な姿勢しか基準モデルとして用意することはできない。したがって、部位数が多ければ多いほど、推定結果となるべき姿勢の基準モデルに対する構造上の細かい差異が累積し易い。
【００７４】
そこで、姿勢推定装置１００は、部位数が多いほど、密集部分の重みと離隔部分の重みとの差を大きくする。これにより姿勢推定装置１００は、１つの部位の大きな違いを見逃さないようにしつつ、細かい差異による影響を抑えた姿勢推定を行うことができる。すなわち、姿勢推定装置１００は、姿勢推定の精度を更に向上させることができる。
【００７５】
ここで、姿勢推定装置１００の動作の説明に先立って、身体制約情報および基準モデルの例について説明する。
【００７６】
まず、身体制約情報格納部１１０に格納されている身体制約情報の例について説明する。
【００７７】
身体制約情報は、例えば、所定の部位の長さ、および関節の角度のうち少なくとも一方を基準として、所定の部位に接続する部位が存在し得る領域（つまり部位領域）を制限する。この場合、身体制約情報は、例えば、ある部位と他の部位との間の長さの比および関節の可動角度のうち少なくとも一方を含む。例えば、身体制約情報は、肩幅を１とした場合に上腕の長さが０.６となる旨を規定する。
【００７８】
例えば、身体制約情報は、部位毎に、部位長比と、胴体に近い側の関節を基点としたときの運動の自由度を３方向（Ｘ軸方向、Ｙ軸方向、Ｚ軸方向）について記述する情報とを含む。
【００７９】
また、身体制約情報は、例えば、右上腕の部位ＩＤが「３」で、右上腕の部位長の肩部の部位長に対する比が「０.８」である場合、以下のような記述のファイルまたはプログラムソースにより、右上腕の部位長を規定することができる。
Ｂｅｇｉｎ
部位ＩＤ：３
長さの比：０.８
Ｅｎｄ
【００８０】
また、身体制約情報は、例えば、右上腕の部位ＩＤが「３」で、肩部の部位長に対する右上腕の太さの比が「０.２」である場合、以下のような記述のファイルまたはプログラムソースにより、右上腕の部位太さを規定することができる。
Ｂｅｇｉｎ
部位ＩＤ：３
太さの比：０.２
Ｅｎｄ
【００８１】
また、例えば、右肩の関節ＩＤが「１００」で、肩部の部位ＩＤが「１」で、右上腕の部位ＩＤが「３」であるものとする。また、右上腕の可動方向が、Ｘ軸について（−６０.０，９０.０）、Ｙ軸について（−９０.０，９０.０）、Ｚ軸について（−９０.０，９０.０）であるものとする。この場合、身体制約情報は、例えば、以下のような記述のファイルまたはプログラムソースにより、右上腕の右肩の関節に対する自由度を規定することができる。
Ｂｅｇｉｎ
関節ＩＤ：１００
部位ＩＤ：１
部位ＩＤ：３
可動方向：ｒｘ，ｒｙ，ｒｚ
角度：（−６０.０，９０.０）、（−９０.０，９０.０）、（−９０.０，９０.０）
Ｅｎｄ
【００８２】
なお、これらの場合において、関節ＩＤと部位ＩＤによって示される関節と部位との接続関係を示す情報と、各関節の可動方向および角度を示す情報とは、別のファイルに記述されてもよい。
【００８３】
また、身体制約情報は、各位置を２次元座標系に射影した情報により記述したものであってもよい。この場合、３次元では一意である位置情報であっても、射影角度によってその値は異なり得る。また、可動方向や角度は２次元の値となる。したがって、身体制約情報格納部１１０は、このような値を身体制約情報として保持する場合には、併せて、射影角度に関する情報を保持しておく必要がある。
【００８４】
以上で、身体制約情報の例についての説明を終える。
【００８５】
次に、基準モデルの例について説明する。
【００８６】
基準モデルは、例えば、基準モデル３次元情報と、その基準モデル３次元情報についての基準モデル２次元情報とから成る。
【００８７】
ここで、基準モデル３次元情報とは、姿勢状態毎の基準モデルを、３次元座標系における部位位置や関節位置等によって表現する、第１段階の情報である。そして、基準モデル２次元情報とは、基準モデル３次元情報が示す姿勢状態にある基準モデルを、２次元座標系における部位位置や関節位置等によって表現する、第２段階の情報である。すなわち、基準モデル２次元情報とは、ある視点から見たとき（ある２次元平面に投影したとき）の、関節等の相対位置関係を示す情報である。
【００８８】
この場合、基準モデル２次元情報は、基準モデル３次元情報を２次元座標系に射影することにより得られる。また、１つの姿勢状態にある基準モデルに対して複数の視点を想定する場合、１つの基準モデル３次元情報からは、複数の基準モデル２次元情報が生成され得ることになる。複数の視点は、つまり、カメラ視点に対して、基準モデルの位置と向きとの組み合わせが複数存在することに対応する。
【００８９】
まず、基準モデル３次元情報について説明する。
【００９０】
基準モデル３次元情報は、右肩関節の関節位置を原点とし、右肩位置と左肩位置との距離を１とする所定の３次元座標系を用いて表現される。なお、基準モデル３次元情報は、他の位置を原点とする座標系や、腕の部位長や身長等の他の長さを１とする座標系を用いて表現されてもよい。
【００９１】
ここで、例えば、姿勢状態の姿勢ＩＤが「２００」で、右肩の関節ＩＤが「１００」で、肩部の部位ＩＤが「１」で、右上腕の部位ＩＤが「３」であるものとする。また、右上腕の可動方向が、Ｘ軸について（２０.０）、Ｙ軸について（９０.０）、Ｚ軸について（０.０）であるものとする。この場合、基準モデル３次元情報は、例えば、以下のような記述のファイルまたはプログラムソースにより、基準モデルの右上腕の右肩の関節に対する自由度を規定することができる。なお、基準モデル３次元情報における可動方向が、身体制約情報とは異なり、範囲ではなく一方向となっているのは、基準モデル３次元情報が姿勢状態毎の情報であるためである。ただし、基準モデル３次元情報における可動方向も、関節角度の誤差や個体差を考慮して、範囲をもって定義されてもよい。
３次元姿勢Ｂｅｇｉｎ
姿勢ＩＤ：２００
関節Ｂｅｇｉｎ
関節ＩＤ：１００
部位ＩＤ：１
部位ＩＤ：３
可動方向：ｒｘ，ｒｙ，ｒｚ
角度：２０.０，９０.０，０.０
位置：（０，０，０）
関節Ｅｎｄ
３次元姿勢Ｅｎｄ
【００９２】
なお、基準モデル３次元情報は、関節に関する情報と部位に関する情報とを別のファイルで記述してもよい。これにより、複数の姿勢状態の間でファイルを共有することが可能となり、基準モデル格納部１４０のサイズを小さくすることができる。
【００９３】
また、基準モデル３次元情報は、関節位置と姿勢状態との対応関係と、関節角度と姿勢状態との対応関係とを、別のファイルで記述してもよい。これにより、体格の異なる複数の基準モデルについての基準モデル３次元情報を用意する場合に、関節角度と姿勢状態との対応関係を記述したファイルを共通のファイルとすることができる。したがって、基準モデル格納部１４０のサイズを小さくすることができる。
【００９４】
また、基準モデル３次元情報は、各関節の関節角度と部位長および部位太さ等を記述し、関節位置は記述しなくてもよい。この場合には、関節位置は、関節角度と身体制約とから算出することができる。これにより、基準モデル格納部１４０のサイズを小さくすることができる。
【００９５】
例えば、上述の右上腕に関する基準モデル３次元情報は、以下のように分けて記述することができる。
３次元姿勢定義Ｂｅｇｉｎ
姿勢ＩＤ：２００
関節Ｂｅｇｉｎ
関節ＩＤ：１００
部位ＩＤ：１
部位ＩＤ：３
可動方向：ｒｘ，ｒｙ，ｒｚ
関節Ｅｎｄ
３次元姿勢定義Ｅｎｄ
３次元姿勢角度Ｂｅｇｉｎ
姿勢ＩＤ：２００
関節Ｂｅｇｉｎ
関節ＩＤ：１００
角度：２０.０，９０.０，０.０
関節Ｅｎｄ
３次元姿勢角度Ｅｎｄ
３次元姿勢位置Ｂｅｇｉｎ
姿勢ＩＤ：２００
関節Ｂｅｇｉｎ
関節ＩＤ：１００
位置：（０，０，０）
関節Ｅｎｄ
３次元姿勢位置Ｅｎｄ
【００９６】
また、基準モデル３次元情報は、以下のように、複数の関節に関する情報を１つのファイルに含めてもよい。なお、この場合、角度および位置は、右肩関節位置等の１つの基準点を原点とした所定の３次元座標系により表現されてもよい。あるいは、角度および位置は、胴体に近い側の関節位置および胴体に近い側の他の部位の軸方向を基準とした相対的な３次元座標系により表現されてもよい。
３次元姿勢Ｂｅｇｉｎ
姿勢ＩＤ：２００
関節Ｂｅｇｉｎ
関節ＩＤ：１００
部位ＩＤ：１
部位ＩＤ：３
可動方向：ｒｘ，ｒｙ，ｒｚ
角度：２０.０，９０.０，０.０
位置：（０，０，０）
関節Ｅｎｄ
関節Ｂｅｇｉｎ
・・・
関節Ｅｎｄ
３次元姿勢Ｅｎｄ
・・・
３次元姿勢Ｂｅｇｉｎ
姿勢ＩＤ：３００
関節Ｂｅｇｉｎ
・・・
関節Ｅｎｄ
関節Ｂｅｇｉｎ
・・・
関節Ｅｎｄ
３次元姿勢Ｅｎｄ
【００９７】
なお、基準モデル３次元情報は、このように複数の関節に関する情報を１つのファイルに含める場合でも、上述のように、情報の種別毎に別のファイルで記述してもよい。
【００９８】
また、基準モデル３次元情報は、複数の姿勢状態に関する情報を、同様に１つのファイルに含めてもよい。
【００９９】
次に、基準モデル２次元情報について説明する。
【０１００】
基準モデル２次元情報は、基準モデル３次元情報に基づいて生成される。基準モデル２次元情報は、予め生成されて基準モデル格納部１４０に格納されていてもよいし、基準モデル格納部１４０、重み付け算出部１５０、および姿勢推定部１６０等により、基準モデル３次元情報から都度生成されてもよい。複数の視点を想定する場合、基準モデル２次元情報を都度生成するようにすることにより、基準モデル格納部１４０のサイズを小さくすることができる。基準モデル２次元情報は、例えば、基準モデル格納部１４０により生成される。なお、基準モデル２次元情報には、基準とする部位の長さが画像上で何画素に相当するかを示す情報が付加されるものとする。
【０１０１】
例えば、２次元座標に射影する水平の角度が「９０度」で、垂直方向の角度が「４５度」で、基準とする部位が肩部であり、肩の長さ（右肩関節位置から左肩間接位置までの距離）が「２０画素」であるものとする。この場合、上述の右上腕に関する基準モデル２次元情報は、以下のように記述することができる。ここで、２次元座標系は、画像における水平方向をｘ軸、垂直方向をｙ軸とし、右肩関節位置を原点とする。また、角度は、ｘ軸に対する角度とする。なお、射影角度は、例えば、単眼カメラ２００の設置角度に基づいて基準モデル２次元情報を絞り込むのに用いられる。
２次元姿勢Ｂｅｇｉｎ
姿勢ＩＤ：２００
基準とする部位の長さ換算：２０
射影Ｂｅｇｉｎ
射影角度：（９０，  ４５）
関節Ｂｅｇｉｎ
関節ＩＤ：１００
部位ＩＤ：１
部位ＩＤ：３
角度：１０.０
位置：（０，０）
関節Ｅｎｄ
射影Ｅｎｄ
２次元姿勢Ｅｎｄ
【０１０２】
なお、基準２次元モデル情報は、上述の基準３次元モデル情報の場合と同様に、画像姿勢状態毎あるいは情報の種別毎に、別のファイルで記述してもよい。
【０１０３】
また、基準２次元モデル情報は、以下に示すように、１つの射影角度に対して複数の関節に関する情報を含んだり、１つの姿勢に対して複数の射影角度に関する情報を含んでもよい。
２次元姿勢Ｂｅｇｉｎ
姿勢ＩＤ：２００
基準とする部位の長さ換算：２０
射影Ｂｅｇｉｎ
射影角度：（９０，  ４５）
関節Ｂｅｇｉｎ
関節ＩＤ：１００
部位ＩＤ：１
部位ＩＤ：３
角度：１０.０
位置：（０，０）
関節Ｅｎｄ
・・・
関節Ｂｅｇｉｎ
・・・
関節Ｅｎｄ
射影Ｅｎｄ
射影Ｂｅｇｉｎ
射影角度：（７０，  ４５）
関節Ｂｅｇｉｎ
・・・
関節Ｅｎｄ
射影Ｅｎｄ
・・・
２次元姿勢Ｅｎｄ
【０１０４】
なお、基準モデル２次元情報は、１つの姿勢に対して複数の射影角度に関する情報を含む場合でも、上述の基準３次元モデル情報の場合と同様に、画像姿勢状態毎あるいは情報の種別毎に、別のファイルで記述してもよい。これにより、基準モデル格納部１４０のサイズを小さくすることができる。
【０１０５】
また、基準モデル３次元情報を基準モデル２次元情報へ変換するための、２次元座標系への射影角度は、固定値であってもよいし、算出された肩向きに応じて変化する値であってもよい。
【０１０６】
また、基準モデル２次元情報は、２次元基準モデルマップを含んでいてもよい。ここで、２次元基準モデルマップとは、２次元情報で記述された姿勢を所定の大きさの画像上に表現したもので、各基準モデルの重み付けする画素を特定するマップである。
【０１０７】
２次元基準モデルマップは、例えば、３次元基準モデル情報に基づき、各部位に太さを持たせた立体を２次元基準モデル情報に含まれる射影方向により平面上に射影することにより、算出することができる。また、２次元基準モデルマップは、２次元基準モデル情報に基づき、各部位の太さと長さをもつ矩形領域内をその部位の画素とすることにより、算出することができる。また、２次元基準モデルマップは、２次元基準モデル情報に基づき、各部位の関節を結ぶ軸の画素、または、各部位の中心の一点、またはその一点を含む領域をその部位の画素とすることにより、算出することができる。
【０１０８】
２次元基準モデルマップは、画素毎に、どの部位に含まれるかの情報が格納を格納する。具体的には、２次元基準モデルマップは、画素毎および部位毎に、その部位に含まれる場合には１を、含まれない場合には０を取るフラグを有するマップ情報である。
【０１０９】
また、姿勢推定装置１００は、推定結果として２次元姿勢のみを求める場合には、３次元基準モデル情報は必ずしも保持しなくてもよい。また、２次元基準モデルマップは、予め生成されて基準モデル格納部１４０に格納されていてもよいし、基準モデル格納部１４０、重み付け算出部１５０、および姿勢推定部１６０等により、基準モデル２次元情報から都度生成されてもよい。
【０１１０】
以上で、基準モデルの例についての説明を終える。
【０１１１】
次に、姿勢推定装置１００の動作について説明する。
【０１１２】
図７は、姿勢推定装置１００の動作の一例を示すフローチャートである。
【０１１３】
まず、ステップＳ１０００において、姿勢推定装置１００は、部位間最小重み距離算出処理を実行する。部位間最小重み距離算出処理は、身体制約情報に基づき、各部位に対して部位間最小重み距離を算出して決定する処理である。
【０１１４】
図８は、部位間最小重み距離算出処理の一例を示すフローチャートである。
【０１１５】
まず、ステップＳ１１００において、部位間最小重み距離算出部１５１は、評価対象となる部位の中から、注目部位ｐを１つ選択する。
【０１１６】
そして、ステップＳ１２００において、部位間最小重み距離算出部１５１は、選択中の注目部位ｐの身体制約情報のうち、部位間最小重み距離算出に必要な情報を取得する。
【０１１７】
そして、ステップＳ１３００において、部位間最小重み距離算出部１５１は、評価対象となる部位のうち、選択中の注目部位ｐ以外の部位（以下「他の部位」という）の中から、比較部位ｑを選択する。
【０１１８】
そして、ステップＳ１４００において、部位間最小重み距離算出部１５１は、選択中の比較部位ｑの身体制約情報のうち、部位間最小重み距離算出に必要な情報を取得する。
【０１１９】
そして、ステップＳ１５００において、部位間最小重み距離算出部１５１は、選択中の注目部位ｐの身体制約情報および選択中の比較部位ｑの身体制約情報に基づいて、部位間最小重み距離Ｒｐｑを算出する。そして、部位間最小重み距離算出部１５１は、算出した部位間最小重み距離Ｒｐｑを、選択中の注目部位ｐと選択中の比較部位ｑとの組み合わせに対応付けて保存する。
【０１２０】
ここで、部位間最小重み距離の算出手法の例について説明する。
【０１２１】
図９は、基準モデルの例と推定尤度マップが示す人の例とを模式的に示す図である。
【０１２２】
人の姿勢の自由度は大きく、部位毎に位置のばらつきがあるが、各部位の位置のばらつきの全てを包含した基準モデルを用意することは困難である。ここでは、説明の簡便化のため、図９（Ａ）に示す第１の姿勢の基準モデル４１３−１と、図９（Ｂ）に示す第２の姿勢の基準モデル４１３−２とのみが存在した場合を想定する。そして、図９（Ｃ）に示す人４１４の推定尤度マップが得られたとする。
【０１２３】
また、上方に曲げた前腕以外において、図９（Ｄ）に示すように第１の姿勢の基準モデル４１３−１との一致度が高く、図９（Ｅ）に示すように第２の姿勢の基準モデル４１３−２との一致度が低いとする。
【０１２４】
本実施の形態において、姿勢推定部１６０は、上述の通り、部位毎の一致画素数のカウント値に基づいて、姿勢推定を行う。したがって、図９（Ｅ）の場合、各部位を均等に取り扱うと、第２の姿勢の基準モデル４１３−２との間の比較では誤差が累積する。その結果、全体として、第２の姿勢の基準モデル４１３−２との一致度は、第１の姿勢の基準モデル４１３−１との一致度よりも低くなり得る。
【０１２５】
ところが、人４１４の姿勢の特徴は主に上方に曲げた前腕にあり、同様に前腕が上方に曲げた第２の姿勢の基準モデル４１３−２が、得られるべき推定結果である。
【０１２６】
そこで、本実施の形態に係る姿勢推定装置１００は、上述の通り、密集部分よりも分散部分に大きい重みを設定する。これにより、図９の例では、上方に曲げた前腕の一致度に重点が置かれ、推定結果として、第２の姿勢の基準モデル４１３−２が得られることになる。すなわち、姿勢推定の精度が向上する。
【０１２７】
密集部分は、基準モデルにおいて他の部位との距離が近い部位である。また、分散部分は、基準モデルにおいて他の部位との距離が遠い部位である。したがって、部位間最小重み距離算出部１５１は、例えば、下記のような手法により、密集部分と分散部分とを区分する基準として、部位間最小重み距離を算出する。
【０１２８】
図１０および図１１は、部位間最小重み距離の算出手法の例を説明するための図である。
【０１２９】
図１０および図１１に示すように、基準モデルにおいて、部位太さＤｐの注目部位ｐと、部位太さＤｑの比較部位ｑとが存在していたとする。図１０は、部位太さＤｐと部位太さＤｑとが同一である場合を示し、図１１は、部位太さＤｐと部位太さＤｑとが同一ではない場合を示す。部位太さＤｐ、Ｄｑは、例えば、身体制約情報格納部１１０が格納する身体制約情報に含まれている。
【０１３０】
姿勢によっては、注目部位ｐと比較部位ｑとの間の距離ｒが、部位太さＤｐおよび部位太さＤｑの少なくとも一方に近似する場合がある。このような場合、特に２本の平行線の組の検出に基づく部位候補抽出においては、注目部位ｐの内側のエッジと比較部位ｑの内側のエッジとの組が、部位太さＤｐ、Ｄｑの条件を満たす平行線の組となる。したがって、注目部位ｐの内側のエッジと比較部位ｑの内側のエッジとに挟まれた空間４１５が、注目部位ｐあるいは比較部位ｑの部位領域として誤って推定されてしまう可能性がある。
【０１３１】
逆に、距離ｒが、部位太さＤｐ、Ｄｑの両方よりも十分に大きければ、空間４１５が注目部位ｐあるいは比較部位ｑの部位領域として誤って推定されてしまう可能性は低い。
【０１３２】
そこで、部位間最小重み距離算出部１５１は、基準モデルの各部位について、他の部位と組み合わせたときのそれぞれの部位太さおよび距離に基づいて、部位間最小重み距離を算出する。具体的には、部位間最小重み距離算出部１５１は、例えば、以下の式（１）を用いて、部位太さＤｐの注目部位ｐと、部位太さＤｑの比較部位ｑとの間の部位間最小重み距離Ｒｐｑを算出する。
Ｒｐｑ＝ａ×Ｄｐ＋ｂ×Ｄｑ            ・・・・・・（１）
【０１３３】
ここで、パラメータａ、ｂは、姿勢推定に対して求められる精度あるいは姿勢推定装置１００が用いられる環境の条件に応じて任意に設定可能な定数であり、例えば、Ｄｐ≦Ｄｑである場合には、ａ＝０、ｂ＝１である。例えば、薄着で似たような体型の人しか被写体とならないような環境よりも、厚着の人や様々な体型の人が被写体となり得る環境のほうが、パラメータａ、ｂは大きく設定すべきである。これにより、姿勢推定のロバスト性を向上させることができる。
【０１３４】
但し、人の姿勢の自由度は大きく、部位毎に角度のばらつきがあるが、各部位の角度のばらつきの全てを包含した基準モデルを用意することは困難である。そこで、姿勢推定装置１００は、一定の範囲の角度誤差を無視し、最も近似する姿勢を推定する。部位間最小重み距離算出部１５１は、この角度誤差を考慮して、部位間最小重み距離Ｒｐｑを算出することが望ましい。
【０１３５】
図１２は、角度誤差を考慮した部位間最小重み距離の算出手法の例を説明するための図である。
【０１３６】
図１２に示すように、注目部位ｐにおいて、部位長がＬｐであり、角度誤差の最大値（無視すべき角度誤差）をｅとすると、部位の位置のずれＭは、最大で、Ｌｐ×ｔａｎ（ｅ）となる。同様に、図示しないが、比較部位ｑにおいて、部位長がＬｑである場合、Ｌｑ×ｔａｎ（ｅ）だけその位置がずれている可能性がある。
【０１３７】
したがって、部位間最小重み距離算出部１５１は、例えば、以下の式（２）を用いて、部位太さＤｐの注目部位ｐと、部位太さＤｑの比較部位ｑとの間の部位間最小重み距離Ｒｐｑを算出する。部位太さＤｐ、Ｄｑ、部位長Ｌｑ、および角度誤差の最大値ｅは、例えば、身体制約情報格納部１１０が格納する身体制約情報に含まれている。
Ｒｐｑ＝ａ×Ｄｐ＋ｂ×Ｄｑ＋ｃ×Ｌｐ×ｔａｎ（ｅ）＋ｄ×Ｌｑ×ｔａｎ（ｅ）
・・・・・・（２）
【０１３８】
ここで、パラメータａ〜ｄは、姿勢推定に対して求められる精度あるいは姿勢推定装置１００が用いられる環境の条件に応じて任意に設定可能な定数である。
【０１３９】
すなわち、部位間最小重み距離算出部１５１は、式（２）を用いた場合、部位間の各部位の部位太さ、長さ、および無視すべき角度誤差に基づいて、部位間最小重み距離を算出することができる。
【０１４０】
以上のような手法により、部位間最小重み距離算出部１５１は、他の部位が位置したときに当該他の部位の存在が姿勢推定のノイズとなる可能性が高い範囲を精度良く示す値として、部位間最小重み距離を算出することができる。
【０１４１】
以上で、部位間最小重み距離の算出手法の例についての説明を終える。
【０１４２】
そして、図８のステップＳ１６００において、部位間最小重み距離算出部１５１は、全ての他の部位を比較部位ｑとして処理したか否かを判断する。部位間最小重み距離算出部１５１は、比較部位ｑとして処理していない他の部位が残っている場合（Ｓ１６００：ＮＯ）、ステップＳ１３００へ戻り、次の他の部位を選択して処理を繰り返す。また、部位間最小重み距離算出部１５１は、全ての他の部位を比較部位ｑとして処理した場合（Ｓ１６００：ＹＥＳ）、ステップＳ１７００へ進む。
【０１４３】
ステップＳ１７００において、部位間最小重み距離算出部１５１は、評価対象となる部位の全てを注目部位ｐとして処理したか否かを判断する。部位間最小重み距離算出部１５１は、注目部位ｐとして処理していない部位が残っている場合（Ｓ１７００：ＮＯ）、ステップＳ１１００へ戻り、次の部位を選択して処理を繰り返す。また、部位間最小重み距離算出部１５１は、全ての部位を注目部位ｐとして処理した場合（Ｓ１７００：ＹＥＳ）、図７の処理へ戻る。
【０１４４】
そして、図７のステップＳ２０００において、姿勢推定装置１００は、最大最小重み算出部１５２において、重み範囲を算出する。
【０１４５】
ここで、重み範囲の算出手法の例について説明する。
【０１４６】
部位数が多いほど、人の姿勢の自由度は高くなり、同一の姿勢と認められる範囲における各部位の位置の誤差の累積は大きくなる。そこで、最大最小重み算出部１５２は、例えば、以下の式（３）を満たすような最小重みＷｍｉｎおよび最大重みＷｍａｘを算出し、最小重みＷｍｉｎから最大重みＷｍａｘまでの範囲を、重みの範囲とする。
ｅ’×（ｎ−１）×Ｗｍｉｎ  ＜  ｃ×Ｗｍａｘ      ・・・・・・（３）
【０１４７】
ここで、ｎは部位数であり、ｕは目標分解能（度数）であり、ｅ’は位置の誤差範囲（一致画素の度数）である。部位数ｎは、上述の通り評価対象の部位の総数であり、例えば１０である。目標分解能ｕおよびパラメータｃは、姿勢推定に対して求められる精度あるいは姿勢推定装置１００が用いられる環境の条件に応じて任意に設定可能な定数である。誤差範囲ｅ’は、例えば、身体制約情報格納部１１０が格納する身体制約情報に含まれている。
【０１４８】
以上のような手法により、最大最小重み算出部１５２は、部位数がより多いほどより広くなるように、重み範囲を決定することができる。すなわち、最大最小重み算出部１５２は、一部の部位を除き誤差範囲内の誤差となる姿勢について、残りの部位の目標分解能を打ち消さないような重み付けを行うことができる。最大最小重み算出部１５２は、具体的には、最小重みＷｍｉｎを１などに固定して、最大重みＷｍａｘを決定してよいし、最大重みＷｍａｘを１などに固定して最小重みＷｍｉｎを決定してもよい。または、最大最小重み算出部１５２は、最小重みＷｍｉｎと最大重みＷｍａｘとの和が１となるように、それぞれの値を決定してもよい。
【０１４９】
以上で、重み範囲の算出手法の例についての説明を終える。
【０１５０】
そして、ステップＳ３０００において、姿勢推定装置１００は、重み付け算出処理を実行する。重み付け算出処理は、各部位の部位間最小重み距離に基づき、基準モデル毎に各部位に対して重み付けを算出して決定する処理である。
【０１５１】
図１３は、重み付け算出処理の一例を示すフローチャートである。
【０１５２】
まず、ステップＳ３１００において、姿勢毎重み付け処理部１５３は、評価対象となる姿勢の中から１つを選択する。
【０１５３】
そして、ステップＳ３２００において、姿勢毎重み付け処理部１５３は、評価対象となる部位の中から、注目部位ｐを１つ選択する。
【０１５４】
そして、ステップＳ３３００において、姿勢毎重み付け処理部１５３は、他の部位の中から、比較部位ｑを選択する。
【０１５５】
そして、ステップＳ３４００において、姿勢毎重み付け処理部１５３は、選択中の注目部位ｐと選択中の比較部位ｑとの組み合わせに対応する部位間最小重み距離Ｒｐｑが示す範囲内の、比較部位ｑの画素数をカウントする。そして、カウントした画素数が、所定の閾値以上であるか否かを判断する。この所定の閾値は、姿勢推定部１６０における部位の一致性の判断基準に対応する値である。すなわち、姿勢毎重み付け処理部１５３は、画素数のカウント値が所定の閾値以上であるか否かによって、部位間最小重み距離Ｒｐｑが示す範囲内に選択中の比較部位ｑが位置するか否かを判断する。
【０１５６】
上述の所定の閾値は、例えば、２次元基準モデルマップの各部位に含まれる画素数に対する割合で定義される。閾値が５０％で定義され、２次元基準モデルマップのある部位に含まれる画素数が１００の場合、姿勢毎重み付け処理部１５３は、カウントした画素数が５０以上かを判断する。閾値の値を大きくするほど、部位が部位間最小重み距離Ｒｐｑ内に含まれる確率が高くなり、閾値の値を小さくするほど、部位間最小重み距離Ｒｐｑ内に含まれる部位の割合が低くなる。
【０１５７】
姿勢毎重み付け処理部１５３は、上述の画素数が所定の閾値以上である場合（Ｓ３４００：ＹＥＳ）、ステップＳ３５００へ進む。これは、つまり、選択中の姿勢において、選択中の注目部位ｐについての部位間最小重み距離Ｒｐｑが示す範囲内に、選択中の比較部位ｑが位置するということを示す。
【０１５８】
また、姿勢毎重み付け処理部１５３は、上述の画素数が所定の閾値未満である場合（Ｓ３４００：ＮＯ）、ステップＳ３６００へ進む。これは、つまり、選択中の姿勢において、選択中の注目部位ｐについての部位間最小重み距離Ｒｐｑが示す範囲内に、選択中の比較部位ｑが位置しないということを示す。
【０１５９】
ステップＳ３５００において、姿勢毎重み付け処理部１５３は、選択中の注目部位ｐに対して、重み範囲のうち、最小重みＷｍｉｎを、その重みとして決定する。すなわち、姿勢毎重み付け処理部１５３は、その部位間最小重み距離が示す範囲内に位置する他の部位が１つでも存在する部位に対しては、最小重みＷｍｉｎを設定する。
【０１６０】
一方、ステップＳ３６００において、姿勢毎重み付け処理部１５３は、全ての他の部位を比較部位ｑとして処理したか否かを判断する。姿勢毎重み付け処理部１５３は、比較部位ｑとして処理していない他の部位が残っている場合（Ｓ３６００：ＮＯ）、ステップＳ３３００へ戻り、次の他の部位を選択して処理を繰り返す。また、姿勢毎重み付け処理部１５３は、全ての他の部位を比較部位ｑとして処理した場合（Ｓ３６００：ＹＥＳ）、ステップＳ３７００へ進む。
【０１６１】
ステップＳ３７００において、姿勢毎重み付け処理部１５３は、選択中の注目部位ｐに対して、重み範囲のうち、最大重みＷｍａｘを、その重みとして決定する。すなわち、姿勢毎重み付け処理部１５３は、その部位間最小重み距離が示す範囲内に位置する他の部位が１つも存在しない部位に対しては、最大重みＷｍｉｎを設定する。
【０１６２】
そして、ステップＳ３８００において、姿勢毎重み付け処理部１５３は、評価対象となる部位の全てを注目部位ｐとして処理したか否かを判断する。姿勢毎重み付け処理部１５３は、注目部位ｐとして処理していない部位が残っている場合（Ｓ３８００：ＮＯ）、ステップＳ３２００へ戻り、次の部位を選択して処理を繰り返す。また、姿勢毎重み付け処理部１５３は、全ての部位を注目部位ｐとして処理した場合（Ｓ３８００：ＹＥＳ）、ステップＳ３９００へ進む。
【０１６３】
ステップＳ３９００において、姿勢毎重み付け処理部１５３は、評価対象となる姿勢の全てを処理したか否かを判断する。姿勢毎重み付け処理部１５３は、評価対象となる姿勢に処理していないものが残っている場合（Ｓ３９００：ＮＯ）、ステップＳ３１００へ戻り、次の姿勢を選択して処理を繰り返す。また、姿勢毎重み付け処理部１５３は、評価対象となる姿勢の全てを処理した場合（Ｓ３９００：ＹＥＳ）、各部位の識別子とその部位に設定された重みの値とをリスト化した情報を、重み付け情報として出力し、図７の処理へ戻る。
【０１６４】
そして、図７のステップＳ４０００において、姿勢推定装置１００は、姿勢推定処理を実行する。姿勢推定処理は、決定した重み付けを適用して画像データに含まれる人の姿勢を推定する処理である。
【０１６５】
図１４は、姿勢推定処理の一例を示すフローチャートである。
【０１６６】
まず、ステップＳ４１００において、身体候補推定部１３０の部位領域推定部１３１は、画像データ取得部１２０を介して、単眼カメラ２００から、静止画像１枚分の画像データを取得する。
【０１６７】
そして、ステップＳ４２００において、部位領域推定部１３１は、基準部位の位置および向きを推定する処理（以下「基準部位推定処理」という）を行う。
【０１６８】
ここで、基準部位推定処理の詳細の例について説明する。基準部位推定処理は、大きく分けて、人の肩関節位置を推定する第１の処理と、人の胴体の向きを推定する第２の処理とから成る。
【０１６９】
まず、人の肩関節位置を推定する第１の処理について説明する。
【０１７０】
部位領域推定部１３１は、画像データから、オメガ形状を検出し、オメガ形状に基づいて肩関節位置を推定する。
【０１７１】
図１５は、オメガ形状を説明するための図である。
【０１７２】
オメガ（Ω）形状は、人の頭部および肩部を含む領域の特徴的なエッジ形状であり、人の身体のうち、監視カメラ等を用いた場合に最も安定して撮影される確率が高い形状である。また、頭部および肩部は、人の胴体との相対位置の変化が少ない。したがって、部位領域推定部１３１は、オメガ形状をまず検出して人の頭部および肩部の位置を検出し、これらを基準として他の部位の部位領域を推定することにより、部位領域を高精度に推定する。
【０１７３】
オメガ形状は、例えば、充分な数のサンプル画像を用いてＲｅａｌ  ＡｄａＢｏｏｓｔ等により作成された検出器を用いて、検出することができる。検出器に用いられる特徴量としては、例えば、ＨｏＧ（histogram of gradient）特徴量、Ｓｐａｒｓｅ特徴量、Ｈａａｒ特徴量等を用いることができる。また、学習方法としては、例えば、Ｂｏｏｓｔｉｎｇ手法のほか、ＳＶＭ（サポートベクタマシン）、ニューラルネットワークなどを利用することも可能である。
【０１７４】
部位領域推定部１３１は、画像データの画像４２０から、まず、オメガ形状４２１を検出する。ここで、オメガ領域４２２の画素のうち、オメガ形状４２１を構成する画素（エッジ部分の画素）はデジタル信号「１」であり、他の画素はデジタル信号「０」であるものとする。そして、オメガ形状４２１を包含する比較的小さい矩形領域を、オメガ領域４２２として決定する。ここで、オメガ領域４２２の下の辺を基準線４２３という。
【０１７５】
部位領域推定部１３１は、オメガ領域４２２に含まれるノイズを取り除く。具体的には、部位領域推定部１３１は、オメガ領域４２２の画素のうち、オメガ形状４２１に囲まれた領域に存在するデジタル信号「１」を、ノイズとして、これをデジタル信号「０」に修正する。この修正は、例えば、いわゆるクロージング処理を行うことにより可能である。クロージング処理とは、所定の画素分または所定の割合で、画像領域を拡大また縮小する処理である。この修正により、後述の距離ヒストグラムの精度を向上させることができる。
【０１７６】
そして、部位領域推定部１３１は、基準線４２３からオメガ形状４２１までの垂直距離を、基準線４２３の各位置について取得する。
【０１７７】
図１６は、基準線４２３からオメガ形状４２１までの垂直距離を説明するための図である。
【０１７８】
図１６に示すように、部位領域推定部１３１は、基準線４２３の方向をＸ軸とし、基準線４２３の垂直方向をＹ軸として扱う。部位領域推定部１３１は、例えば、基準線４２３の左端からの画素数を、Ｘ座標値とする。そして、部位領域推定部１３１は、基準線４２３からオメガ形状４２１を構成する画素までのＹ軸方向の画素数、つまり、オメガ形状４２１までの垂直距離を、垂直距離ｄ（Ｘ）として取得する。オメガ形状４２１を構成する画素とは、例えば、デジタル信号「１」の画素のうち、基準線４２３から直近のものである。
【０１７９】
そして、部位領域推定部１３１は、ｎ個（ｎは正の整数）の垂直距離ｄ（Ｘ）のデータをＸ座標に対応付けた距離ヒストグラムを生成する。
【０１８０】
図１７は、部位領域推定部１３１が図１５に示すオメガ領域４２２に基づいて生成する距離ヒストグラムの一例を示す図である。
【０１８１】
図１７に示すように、部位領域推定部１３１は、ＸＹ座標系に、垂直距離ｄ（Ｘ）をＹ軸の値として、垂直距離ｄ（Ｘ）の分布を示す距離ヒストグラム４３０を生成する。距離ヒストグラム４３０は、肩部に対応する形状で盛り上がり、そのうち、頭部の中心部に対応する範囲で突出した形状となる。
【０１８２】
そして、部位領域推定部１３１は、生成した距離ヒストグラム４３０に対して、所定の閾値Ｔｈを適用して、２値化処理を行う。具体的には、部位領域推定部１３１は、垂直距離ｄ（Ｘ）が閾値Ｔｈ以上となっているＸ座標のＹ座標値を、「１」に置き換え、垂直距離ｄ（Ｘ）が閾値Ｔｈ未満となっているＸ座標のＹ座標値を、「０」に置き換える。閾値Ｔｈは、オメガ領域４２２において、高い確率で、肩部上端の垂直距離ｄ（Ｘ）よりも大きく、頭部上端の垂直距離ｄ（Ｘ）よりも小さくなる値が設定される。なお、２値化処理はこれに限定されるものではなく、例えば、いわゆる大津の２値化（大津の手法）等、他の手法としてもよい。
【０１８３】
図１８は、図１７に示す距離ヒストグラム４３０を２値化処理した結果の一例である。
【０１８４】
図１８に示すように、「１」となる範囲４４１は、頭部の中央部分の画像領域（以下「頭領域」という）のＸ座標の範囲を示すことになる。また、「１」となる範囲４４１を含む全体の範囲４４２は、肩部の画像領域（以下「肩領域」という）のＸ座標の範囲を示すことになる。したがって、部位領域推定部１３１は、画像データの画像４２０のうち、オメガ領域４２２のＸ軸方向範囲を、肩領域のＸ軸方向範囲として抽出し、「１」となる範囲４４１のＸ軸方向範囲を、頭領域のＸ軸方向範囲として抽出する。
【０１８５】
そして、部位領域推定部１３１は、抽出した肩領域および頭領域に基づいて、基準部位の位置および向きを示す各種パラメータを算出する。
【０１８６】
図１９は、基準部位を示す各種パラメータを説明するための図である。
【０１８７】
ここで、部位領域推定部１３１は、図１９に示すように、基準部位の位置を示す記号（括弧内はＸＹ座標系におけるパラメータ）として、Ｈ（ｘｈ，ｙｈ）、ＲＳＥ（ｘ＿ｒｓｅ）、ＲＤ（ｘ＿ｒｄ）、ＲＳ（ｘ＿ｒｓ，ｙ＿ｒｓ）、ＲＳＵ（ｙ＿ｒｓｕ）、およびＬＳを用いるものとする。Ｈは、頭部の重心位置である。ＲＳＥは、右肩の端部の位置である。ＲＤは、頭部の重心から右肩の端部までのＸ軸方向の距離である。ＲＳは、右肩の関節の位置（以下「右肩位置」という）である。ＲＳＵは、右肩の頂部の位置である。ＬＳは、左肩の関節の位置（以下「左肩位置」という）である。
【０１８８】
部位領域推定部１３１は、例えば、以下のようにして各パラメータの値を算出する。
【０１８９】
まず、部位領域推定部１３１は、２値化処理の結果に基づいて抽出した肩領域から、人（の胴体）が単眼カメラ２００側に向いているか否かに基づいて、右肩領域を決定する。部位領域推定部１３１は、頭領域の色情報の肌色成分が所定の閾値以上となっているか否かに基づいて、人が単眼カメラ２００側に向いているか否かを判断する。ここでは、人は単眼カメラ２００側に向いており、画像に向かって左側の肩領域が、右肩領域に決定されたものとする。
【０１９０】
次に、部位領域推定部１３１は、右肩領域の重心位置を、右肩位置ＲＳ（ｘ＿ｒｓ，ｙ＿ｒｓ）として算出する。また、部位領域推定部１３１は、頭部の重心位置Ｈ（ｘｈ，ｙｈ）を算出し、重心位置Ｈ（ｘｈ，ｙｈ）と基のオメガ形状４２１とのＹ軸方向の距離（以下「頭部高さΔｈ」という）用いて、右肩位置ＲＳ（ｘ＿ｒｓ，ｙ＿ｒｓ）を算出してもよい。具体的には、部位領域推定部１３１は、例えば、頭部高さΔｈに対して予め定められた比となる値を、頭部の重心位置Ｈから右肩位置ＲＳまでのＸ軸方向の距離（ｘｈ−ｘ＿ｒｓ）とする。また、部位領域推定部１３１は、例えば、肩の高さから頭部高さΔｈの半分の値Δｈ／２だけ低い位置を、右肩位置ＲＳのＹ座標ｙ＿ｒｓとする。
【０１９１】
更に、部位領域推定部１３１は、オメガ形状４２１のエッジの傾き（つまり距離ヒストグラムの変化率）が閾値を越えた点を、右肩の端部の位置ＲＳＥ（ｘ＿ｒｓｅ）として算出する。そして、部位領域推定部１３１は、頭部の重心位置Ｈと右肩の端部の位置ＲＳＥとのＸ軸方向の距離ＲＤ（ｘ＿ｒｄ）を算出する。
【０１９２】
最後に、部位領域推定部１３１は、頭部の重心位置ＨからＸ軸方向において距離ＲＤの８０％の位置に、右肩位置ＲＳがあるものと推定する。すなわち、部位領域推定部１３１は、右肩位置ＲＳのＸ座標ｘ＿ｒｓを、  ｘ＿ｒｓ＝ｘ＿ｒｓｅ＋０.２×ＲＤ  により算出する。また、部位領域推定部１３１は、右肩位置ＲＳを通り垂直な直線（Ｙ軸に並行な直線）とオメガ形状４２１のエッジとの交点を、右肩の頂部の位置ＲＳＵ（ｙ＿ｒｓｕ）として算出する。そして、部位領域推定部１３１は、右肩位置ＲＳのＹ座標ｙ＿ｒｓを、  ｙ＿ｒｓ＝ｙ＿ｒｓｕ−０.２×ＲＤ  により算出する。
【０１９３】
また、部位領域推定部１３１は、同様にして、左肩位置ＬＳについても算出する。
【０１９４】
なお、各パラメータの算出手法は、上述の例に限定されるものではない。例えば、肩幅（例えば右肩位置ＲＳと左肩位置ＬＳとの距離）等の部位長は、身体制約情報の１つとして、身体制約情報格納部１１０に格納され得る。この場合、部位領域推定部１３１は、その身体制約情報を用いて各パラメータを算出してもよい。
【０１９５】
以上で、人の肩関節位置を推定する第１の処理についての説明を終える。
【０１９６】
次に、人の胴体の向きを推定する第２の処理について説明する。
【０１９７】
本実施の形態では、部位領域推定部１３１は、身体制約情報格納部１１０に身体制約情報の１つとして予め保持された基準部位対応テーブルを参照して、第２の処理を行うものとする。
【０１９８】
基準部位対応テーブルは、頭部の重心位置Ｈと、右肩位置ＲＳと、左肩位置ＬＳとの組み合わせ（以下「基準部位の位置」という）と、その基準部位の位置から推定される身体の向き（以下「基準部位の向き」という）とを対応付けて記述したテーブルである。すなわち、基準部位テーブルは、各部位の相対的な位置関係を記述したテーブルである。なお、基準部位とは、上述の通り、人の頭部および肩部を示すオメガ形状の部分である。したがって、基準部位の向きとは、人の身体（胴体）の向きである。
【０１９９】
部位領域推定部１３１は、画像データから算出した基準部位の位置に対応する基準部位の向きを、基準部位対応テーブルから導出する。
【０２００】
なお、保持された基準部位対応テーブルに記述される基準部位の位置、および、部位領域推定部１３１が画像データから算出する基準部位の位置は、人の画面上の大きさによらない正規化された値であることが望ましい。具体的には、部位領域推定部１３１は、例えば、頭部の重心位置Ｈを原点とし、頭部の重心位置Ｈと右肩位置ＲＳまたは左肩位置ＬＳとの間の長さが１となるように正規化した値を用いて、準部位の向きを導出する。
【０２０１】
また、基準部位対応テーブルには、右肩位置ＲＳおよび左肩位置ＬＳが記述されていてもよい。また、基準部位対応テーブルには、頭部の重心位置Ｈと右肩位置ＲＳまたは左肩位置ＬＳとを通る線と、頭部の重心位置Ｈを通る垂直な直線（以下「頭部垂直線」という）とが成す角が記述されていてもよい。また、基準部位対応テーブルには、頭部の重心位置Ｈと右肩位置ＲＳとの間の距離を１としたときの頭部の重心位置Ｈと左肩位置ＬＳとの間の距離が記述されていてもよい。部位領域推定部１３１は、基準部位対応テーブルに記述されたパラメータに対応するパラメータを算出することにより、基準部位の向きを導出する。
【０２０２】
図２０は、基準部位対応テーブルの内容の一例を示す図である。
【０２０３】
図２０に示すように、基準部位対応テーブル４５０は、識別子４５１に対応付けて、射影角度４５２、左肩位置ＬＳの座標４５３、頭部の重心位置Ｈの座標４５４、および基準部位の向き４５５を記述する。各座標は、例えば、右肩位置ＲＳを原点とし、画面の２次元座標系に平行な所定の２次元座標系を用いて表現される。射影角度４５２は、例えば、図４で説明した３次元座標系４１０のＸＺ平面に対する、この所定の２次元座標系の角度（つまり図４に示す設置角度θ）である。また、基準部位の向き４５５は、例えば、図４で説明した３次元座標系４１０のＸＹＺ軸のそれぞれに対する回転角度で表される。なお、各座標は、腕の部位長や身長等の他の長さを１とする座標系を用いて表現されてもよい。
【０２０４】
このようにして、部位領域推定部１３１は、身体制約情報を用いて、基準部位の位置および向きを推定する。
【０２０５】
以上で、人の胴体の向きを推定する第２の処理についての説明を終える。すなわち、基準部位推定処理の説明を終える。
【０２０６】
次に、図１４のステップＳ４３００において、部位領域推定部１３１は、推定した基準部位の位置および向きに基づいて、部位毎に部位領域を推定する処理（以下「部位領域推定処理」という）を行う。
【０２０７】
ここで、部位領域推定処理の詳細の例について説明する。
【０２０８】
本実施の形態では、部位領域推定部１３１は、身体制約情報格納部１１０に身体制約情報の１つとして予め保持された部位領域対応テーブルを参照して、部位領域推定処理を行うものとする。
【０２０９】
部位領域対応テーブルは、基準部位の位置と向きと、他の部位の部位領域とを対応付けて記述したテーブルである。
【０２１０】
部位領域推定部１３１は、画像データから推定した基準部位の位置および向きに対応する部位領域を、部位領域対応テーブルから導出する。
【０２１１】
部位領域は、例えば、画像データの画像の画素位置により定義される。したがって、部位領域推定部１３１は、画像データの画像全体の全ての画素について、各画素がいずれかの部位の部位領域に属する画素であるかを判断する。
【０２１２】
図２１は、部位領域対応テーブルの内容の一例を示す図である。
【０２１３】
図２１に示すように、部位領域対応テーブル４６０は、識別子４６１に対応付けて、射影角度４６２、頭肩領域（基準部位）の位置４６３、頭肩領域（基準部位）の向き４６４、および各部位の領域４６５を記述する。
【０２１４】
各位置および領域は、例えば、画像の２次元座標系の値で表される。射影角度４６２は、例えば、図４で説明した３次元座標系４１０のＸＺ平面に対する、この所定の２次元座標系の角度（つまり図４に示す設置角度θ）である。頭肩領域の位置４６３は、例えば、右肩位置ＲＳである。頭肩領域の向き４６４は、例えば、図４で説明した３次元座標系４１０のＸＹＺ軸のそれぞれに対する回転角度で表される。各部位の領域４６５は、例えば、領域が円で近似される場合における、その円の中心座標と半径とにより表される。半径は、つまり、部位長である。
【０２１５】
なお、識別子４６１が基準部位対応テーブル４５０の識別子４５１と共通である場合には、頭肩領域の向き４６４は、必ずしも部位領域対応テーブル４６０に記述されていなくてもよい。
【０２１６】
なお、部位領域を推定する際には、他の種類の身体制約情報を用いることもできる。また、身体制約情報は、上述の構成以外の構成を取ることもできる。
【０２１７】
部位領域推定部１３１は、部位領域の推定を完了すると、画像データの画像全体の全ての画素について、画素毎に部位の部位領域であるか否かを示す情報を、部位領域データとして部位候補抽出部１３２へ出力する。
【０２１８】
部位領域データは、例えば、画像データの全ての画素位置（ｉ，ｊ）について、いずれかの部位の部位領域に該当するか否かを示す画素情報Ｋｉｊを並べた構造を有し得る。画素情報Ｋｉｊの各要素は、例えば、対応する部位の部位領域に属する場合には「１」を取り、属しない場合には「０」を取る。画素情報Ｋｉｊは、例えば、Ｋｉｊ＝［ｋ１，ｋ２］というように、部位の数と同数の次元を有する。ここでは、ｋ１は右上腕の部位領域に対応し、ｋ２は右前腕の部位領域に対応するものとする。
【０２１９】
例えば、部位領域推定部１３１は、ある画素位置Ｋａｂが、右上腕の部位領域に含まれるが右前腕の部位領域には含まれないと判定した場合、Ｋａｂ＝［１，０］という画素情報を生成する。部位領域推定部１３１は、このように生成した各画素の画素情報の集合を、部位領域データとして生成する。
【０２２０】
なお、部位領域データによる部位領域の表し方は、上述の例に限定されるものではない。例えば、部位領域データは、画像に予め設定された部分領域毎に、いずれの部位の部位領域に該当するかを示してもよいし、部位毎に部位領域の外縁の座標を示してもよい。
【０２２１】
なお、基準部位の位置を正規化した位置が基準部位推定処理において用いられる場合には、部位領域対応テーブルには、正規化された基準部位に対応する部位領域が記述されていることが望ましい。また、部位領域データには、上述の基準部位対応テーブルの場合と同様に、右肩位置ＲＳおよび左肩位置ＬＳ等の他の情報が記述されていてもよい。部位領域推定部１３１は、部位領域対応テーブルに記述されたパラメータに対応するパラメータを算出することにより、各部位の部位領域を導出する。
【０２２２】
図２２は、部位領域データの内容の一例を示す図である。ここでは、説明の簡便化のため、直立状態にある場合の各部位の位置を併せて図示する。
【０２２３】
図２２に示すように、部位領域データは、画像データの画像４２０において、右上腕の部位領域４７１と、右前腕の部位領域４７２とを示す。これらの部位領域４７１、４７２は、上述の通り、先に推定された基準部位４７３の位置および向きを基準として推定されたものである。
【０２２４】
このようにして、部位領域推定部１３１は、身体制約情報を用いて、各部位の部位領域を推定する。
【０２２５】
以上で、部位領域推定処理についての説明を終える。
【０２２６】
次に、図１４のステップＳ４４００において、部位候補抽出部１３２は、部位毎に部位領域について部位候補の抽出を行って、抽出された部位候補を示す部位候補情報を生成する。
【０２２７】
ここで、部位候補情報として推定尤度マップを生成する処理（以下「推定尤度マップ生成処理」という）の詳細の第１の例について説明する。
【０２２８】
まず、部位候補抽出部１３２は、画像データから、各部位の部位領域内の画素毎に、その部位の位置および向きの状態を表すのに適した画像特徴量を判別して部位が位置することの尤もらしさを示す尤度値を算出する。そして、部位候補抽出部１３２は、画像データから算出された尤度値を用いて、各画素の尤度値の分布を示す推定尤度マップを生成する。尤度値は、０〜１の範囲となるように正規化した値であってもよいし、正の整数や負の数を含む実数であってもよい。
【０２２９】
画像から注目対象を認識する手法としては、例えば、矩形情報を基にした複数の弱識別器の総和をＡｄａＢｏｏｓｔにより統合して強識別器を作成し、強識別器をカスケード接続させて、画像中の注目対象として顔を認識する技術を、採用することができる。また、画像特徴量としては、例えば、ＳＩＦＴ（scale-invariant feature transform）特徴量を採用することができる（例えば、非特許文献２および非特許文献３参照）。ＳＩＦＴ特徴量は、１２８次元のベクトルにより構成されており、画素毎に計算される値である。ＳＩＦＴ特徴量は、検出の対象となる人のスケール変化、回転、および平行移動に影響を受けないため、特に、腕のように、様々な方向に回転し得る部位の検出に有効である。すなわち、ＳＩＦＴ特徴量は、姿勢を２つ以上の部位の相対的な関節の位置および角度によって定義する本実施の形態に好適である。
【０２３０】
ＳＩＦＴ特徴量を用いた手法を本実施の形態に適用した場合、強識別器Ｈｋ（ｋ＝１，２）は、右上腕（ｋ＝１）、右前腕（ｋ＝２）等、部位領域毎に、予め機械学習により生成され、部位候補抽出部１３２に保持される。識別器Ｈｋは、ＡｄａＢｏｏｓｔアルゴリズムにより生成される。すなわち、強識別器Ｈｋは、予め部位毎に用意されている複数の学習画像に対して、右上腕であるか否か、および、右前腕であるか否かが、所望の精度で判定できるまで学習が繰り返され、複数の弱識別器がカスケード接続されることによって生成される。
【０２３１】
部位候補抽出部１３２は、部位毎および画素毎に画像特徴量を算出すると、その画像特徴量を強識別器Ｈｋに入力する。そして、部位候補抽出部１３２は、その強識別器Ｈｋを構成する各弱識別器の出力に対して、弱識別器毎に予め得られた信頼度αを乗算した値の総和を、算出する。そして、部位候補抽出部１３２は、算出した総和から所定の閾値Ｔｈを減算して、部位毎および画素毎の尤度値ｃｋを算出する。ここでは、ｃ１は右上腕の尤度値を示し、ｃ２は右前腕の尤度値を示す。
【０２３２】
部位候補抽出部１３２は、各部位の尤度値を統合した画素毎の尤度値Ｃｉｊを、Ｃｉｊ＝［ｃ１，ｃ２］とする。そして、部位候補抽出部１３２は、画像全体の全ての画素の尤度値Ｃｉｊを、推定尤度マップとして、姿勢推定部１６０へ出力する。
【０２３３】
部位候補抽出部１３２は、各画素について、その画素がいずれかの部位領域に含まれるか否かを判断し、含まれればその部位の識別器を用いて尤度値を算出し、含まなければその部位の尤度値を０としてもよい。換言すると、部位候補抽出部１３２は、部位領域推定部１３１から出力された画素情報の行列式（Ｋｉｊ）と、部位領域とは無関係に算出した各画素の尤度値の行列式（Ｃｉｊ）とを積算した結果を、最終的な推定尤度マップとしてもよい。
【０２３４】
図２３は、推定尤度マップの一例を示す図である。ここでは、推定尤度マップのうち１つの部位（例えば右上腕）の尤度値のみを表し、尤度値がより高い画素ほどより濃い網掛けを付している。  図２３に示すように、推定尤度マップ４７８は、部位が位置することの尤もらしさの分布を表す。
【０２３５】
尤度マップの画素毎の情報は、例えば、部位ｋの尤度値をｃｋと表し、部位がｎ個存在する場合には、尤度ベクトルＣｉｊ＝［ｃ１，ｃ２，…，ｃｋ，…，ｃｎ］というデータ構造となる。
【０２３６】
このようにして、部位候補抽出部１３２は、推定尤度マップを生成する。
【０２３７】
以上で、推定尤度マップ生成処理の詳細の第１の例についての説明を終える。
【０２３８】
次いで、推定尤度マップ生成処理の詳細の第２の例について説明する。
【０２３９】
部位候補抽出部１３２は、例えば、特許文献１記載の技術のように、画像データに含まれるエッジから平行線を抽出することにより、推定尤度マップを生成する。
【０２４０】
この場合、部位候補抽出部１３２は、例えば、身体制約情報格納部１１０に身体制約情報の１つとして予め保持された、肩関節の長さと各部位の標準的な太さの値とを対応付けた対応テーブルを参照して、平行線の抽出を行う。部位候補抽出部１３２は、部位領域内に、その部位の標準的な太さに相当する距離で離隔する平行線の組を、判定する方向を３６０度回転させながら検索する。そして、部位候補抽出部１３２は、該当する平行線の組が存在する場合に、それらの平行線によって囲まれた領域の各画素に対して投票を行う処理を繰り返し、最終的な各画素の投票数に基づいて推定尤度マップを生成する。
【０２４１】
このような手法の場合、推定尤度マップおよび２次元基準モデルマップは、画素毎および部位毎に、平行線の方向と投票数（以下「方向の尤度値」という）とを含むことになる。例えば、平行線の角度を８つに分類した場合、画素毎および部位毎の尤度値は、８方向に対応した８次元の値となる。更に、例えば、平行線の幅を２つに分類した場合、画素毎および部位毎の尤度値は、２×８＝１６次元の値となる。なお、投票の対象となる平行線の距離や角度は、部位毎に異なっていてもよい。平行線の幅を複数求めて、そのうちの尤度値が尤も高くなる幅の尤度値を用いることにより、体型や服装の違いを吸収して、尤度を求めることができる。
【０２４２】
そして、部位候補抽出部１３２は、例えば、部位毎に、方向の尤度値が最も高い方向を、その部位の主要なエッジ方向と判定する。このとき、姿勢推定部１６０は、方向毎に全画素の尤度値の合計値を取り、その合計値が最も高い方向を、方向の尤度値が最も高い方向であると判定してもよい。
【０２４３】
このようにして、部位候補抽出部１３２は、身体制約情報を用いて、推定尤度マップを生成する。
【０２４４】
以上で、推定尤度マップ生成処理の詳細の第２の例についての説明を終える。
【０２４５】
次に、図１４のステップＳ４５００において、姿勢推定部１６０は、適宜補完が行われた部位候補情報に基づいて、予め設定された姿勢のいずれかに、被写体の姿勢が該当するか否かを判断する。この予め設定された姿勢とは、重み付けされた２次元基準モデルのうち、判定の対象として設定された姿勢である。
【０２４６】
姿勢推定部１６０は、この判断を、いずれかの重み付けされた２次元基準モデルマップと推定尤度マップとが一致するか否かに基づいて行う。この場合、姿勢推定部１６０は、例えば、重み付けされた２次元基準モデルマップと推定尤度マップとが一致するか否かを、その一致度が所定のレベル以上であるか否かに基づいて判断する、一致度判定処理を行う。
【０２４７】
ここで、一致度判定処理の詳細の例について説明する。まず、上述の推定尤度マップ生成処理の第１の例が採用されている場合に対応する、一致度判定処理の詳細の第１の例について説明する。
【０２４８】
姿勢推定部１６０は、まず、推定尤度マップを所定の閾値を用いて２値化する。具体的には、姿勢推定部１６０は、画素毎および部位毎の尤度値を、所定の閾値以上である場合はデジタル信号「０」に、所定の閾値未満である場合にはデジタル信号「１」に変換する。
【０２４９】
図２４は、図２３に示す推定尤度マップを２値化した後の状態の一例を示す図である。ここでは、デジタル信号「１」の画素は灰色、デジタル信号「０」の画素は白色で表している。図２４に示すように、２値化後の推定尤度マップ４７９は、部位が位置することの尤もらしさが高い部分の分布を表す。
【０２５０】
そして、姿勢推定部１６０は、２次元基準モデルマップ毎に、推定尤度マップと重み付きモデルマップとの間で、画素毎に２値化された尤度値との積を取る。更に、姿勢推定部１６０は、重み値の積をとり、全ての画素および全ての部位についての値の和を、評価値とする。具体的には、姿勢推定部１６０は、推定尤度マップと重み付きモデルマップとを所定の位置関係で重ね、画素毎に２値化後の尤度値情報と重み情報を掛け算し、掛け算した値の全ての画素および部位についての和を求める。
【０２５１】
姿勢推定部１６０は、推定尤度マップと２次元基準モデルマップの重ね合わせの位置関係を肩位置情報に基づいて決定する。両肩間の距離が異なる場合、２次元基準モデルマップを拡大縮小してから重ね合わせてもよい。更に、姿勢推定部１６０は、肩位置を中心に移動および回転によりずらしていき、各位置関係について上述の演算処理を行ってもよい。そして、姿勢推定部１６０は、求めた評価値のうちの最大値を、２次元基準モデルマップとの一致度を表す最終的な評価値として取得するようにしてもよい。こうすることで、推定尤度マップの肩位置情報に誤差がある場合にも、最適な重ね位置を探索することで、推定精度を向上させることができる。そして、姿勢推定部１６０は、この評価値が所定の閾値以上となる２次元基準モデルマップが存在するとき、その２次元基準モデルマップと推定尤度マップとが一致すると判断する。閾値は、予め、学習等により適切な値が設定される。
【０２５２】
なお、姿勢推定部１６０は、必ずしも推定尤度マップを２値化しなくてもよい。この場合には、姿勢推定部１６０は、２次元基準モデルマップと推定尤度マップとの一致度をより精度良く判定することができる。また、２値化した場合には、姿勢推定部１６０は、高速に一致度の判定を行うことができる。
【０２５３】
このようにして、姿勢推定部１６０は、推定尤度マップと２次元基準モデル尤度マップとの一致度を判定する。
【０２５４】
以上で、一致度判定処理の第１の例についての説明を終える。
【０２５５】
次いで、上述の推定尤度マップ生成処理の第２の例が採用されている場合に対応する、一致度判定処理の詳細の第２の例について説明する。
【０２５６】
姿勢推定部１６０は、部位毎に、それぞれの主要なエッジ方向が一致するように推定尤度マップと２次元基準モデルマップとを重ね合わせて、一致度を算出する。以降の処理は、上述の第１の例と同様である。
【０２５７】
このように、エッジの方向を考慮した手法は、推定尤度マップと２次元基準モデルマップとの重ね合わせの位置関係に制約を加えることができるので、処理負荷を軽減することができる。
【０２５８】
以上で、一致度判定処理の第２の例についての説明を終える。
【０２５９】
なお、姿勢推定部１６０は、推定尤度マップ生成処理の第３の例として、推定尤度マップと２次元基準モデルマップとの一致度を算出する際に、エッジ方向の情報のみを用いてもよい。
【０２６０】
ここで、推定尤度マップ生成処理の第３の例について説明する。
【０２６１】
例えば、姿勢推定部１６０は、複数の指定部位間で各指定部位の主要なエッジ方向が成す角の一致度を、推定尤度マップと２次元基準モデルマップとの一致度を表す評価値とする。具体的には、推定尤度マップと重み付きモデルマップの各指定部位について、主要なエッジ方向が成す角の差をもとめ、その差の値と対応する部位の重みの積をとり、全部位の和を評価値とする。値が小さいほど、一致度が高くなる評価値となっている。そして、姿勢推定部１６０は、評価値が所定の範囲内であるとき、被写体の姿勢が、該当する２次元基準モデルマップに対応する姿勢にあると判定する。
【０２６２】
エッジ方向は、部位軸の方向に対応する。したがって、このような姿勢推定は、画像データから各部位軸の方向および各関節の角度を推定し、推定した部位軸方向および関節角度の、各姿勢における基準モデルとの間の一致度を評価することに相当する。
【０２６３】
このように、エッジ方向のみを用いて一致度を判定する手法は、画素毎に繰り返し算出して評価値を求める処理を不要とすることができるため、処理負荷を更に低減することができる。また、各２次元基準モデルマップに対応する重み値は、部位の識別子と重みの値だけの情報だけあれば評価値を求めることができるので、重み付きの処理を軽減し、重み値のデータ量を削減することができる。
【０２６４】
なお、推定尤度マップ生成処理の第３の例が採用されている場合、一致度判定処理の詳細は、一致度判定処理の第１の例と同様に処理することができる。
【０２６５】
以上で、推定尤度マップ生成処理の第３の例についての説明を終える。
【０２６６】
姿勢推定部１６０は、いずれかの重み付きモデルマップと推定尤度マップとが一致する場合（Ｓ４５００：ＹＥＳ）、ステップＳ４６００へ進む。また、姿勢推定部１６０は、重み付きモデルマップと推定尤度マップとが一致しない場合（Ｓ４５００：ＮＯ）、ステップＳ４７００へ進む。
【０２６７】
ステップＳ４６００において、姿勢推定部１６０は、推定尤度マップと一致する重み付きモデルマップに対応する姿勢を、情報出力装置３００を介してユーザに通知して、ステップＳ４７００へ進む。
【０２６８】
ステップＳ４７００において、部位領域推定部１３１は、ユーザ操作等により処理終了の指示があったか否かを判断する。部位領域推定部１３１は、処理終了の指示がない場合（Ｓ４７００：ＮＯ）、ステップＳ４１００へ戻り、次の静止画像に対する処理へ移る。また、部位領域推定部１３１は、処理終了の指示があった場合には（Ｓ４７００：ＹＥＳ）、一連の処理を終了する。
【０２６９】
このような動作により、姿勢推定装置１００は、ノイズが多い部位（密集部分）の尤度の影響を小さくし、ノイズが少ない部位（分散部分）の尤度の影響を大きくした状態で、姿勢推定を行うことができる。これにより、姿勢推定装置１００は、人の細かい構造上のばらつきに対してロバストな姿勢推定を行うことができる。
【０２７０】
なお、図７のステップＳ１０００の部位間最小重み距離算出処理と、ステップＳ２０００の重み範囲算出処理は、逆の順序で実行されてもよい。
【０２７１】
以上のように、本実施の形態に係る姿勢推定装置１００は、姿勢毎に、各部位に対して、部位間最小重み距離が示す範囲に他の部位が位置するか否かに応じて、重み付けを行う。これにより、姿勢推定装置１００は、ノイズを多く含み得る密集部分と姿勢を特徴付ける分散部分とを精度良く判別し、密集部分による影響を小さくしつつ分散部分による影響を大きくして姿勢推定を行うことができる。したがって、本実施の形態に係る姿勢推定装置１００は、関節を有する人の姿勢を、高精度に推定することができる。
【０２７２】
なお、重み付け算出部１５０は、部位ではなく、部位内の画素を単位として、重み付けの処理を行ってもよい。
【０２７３】
この場合、具体的には、図１３のＳ３２００の処理として、姿勢毎重み付け処理部１５３は、注目部位を選択する代わりに注目画素を選択する。更に、ステップＳ３４００の処理として、姿勢毎重み付け処理部１５３は、注目画素が含まれる部位ｐと比較部位ｑとの組み合わせに対応する部位間最小重み距離Ｒｐｑが示す範囲内に、注目画素が存在するかを判断する。そして、姿勢毎重み付け処理部１５３は、該当する注目画素が存在すれば（Ｓ３４００：ＹＥＳ）、ステップＳ３５００へ進み、注目画素の部位ｐに対する重みを決定する。また、姿勢毎重み付け処理部１５３は、該当する注目画素が存在しなければ（Ｓ３４００：ＮＯ）、ステップＳ３７００へ進み、注目画素の部位ｐに対する重みを決定する。なお、注目画素が複数の部位に含まれる場合、姿勢毎重み付け処理部１５３は、複数の部位間最小重み距離Ｒｐｑについて判断を行う。そして、ステップＳ３８００の処理として、姿勢毎重み付け処理部１５３は、全ての画素について処理したかを判断する。
【０２７４】
画素毎に行う姿勢毎の重み付け情報は、具体的には、画素毎および部位毎に、その部位に含まれる場合に「１」をとり、含まれない場合に「０」をとるフラグと、その部位に含まれる場合その部位に対応する重みとを記述したマップ情報となる。このように、画素毎に重みを算出して姿勢推定に適用した場合、姿勢推定装置１００は、更に精度良く姿勢推定を行うことが可能となる。
【０２７５】
また、重み付け算出部１５０は、各部位の重心または部位軸の中心点の位置を、各部位の代表位置として用いて、部位間最小重み距離内に他の部位が位置するか等の判定を行い、各部位の重みの算出を行うようにしてもよい。これにより、姿勢推定装置１００は、重み付けの処理を高速化することができ、特に、上述の推定尤度マップ生成処理の第３の例に好適である。
【０２７６】
また、身体候補推定部１３０は、身体候補として、部位候補ではなく、シルエットを推定してもよい。この場合、身体候補推定部１３０は、例えば、非特許文献１に記載の手法を用いて、カラー画像の背景差分により、シルエットを抽出する。そして、身体候補推定部１３０は、各画素がシルエットに含まれるか否かを示す情報を、「１」または「０」をとる値で表現したマップを、推定尤度マップとして出力する。但し、この場合、推定尤度マップには、部位の識別情報は含まれない。
【０２７７】
なお、姿勢推定装置１００が人検出の対象とする画像データは、本実施の形態では単眼カメラ２００によって撮影された画像データとしたが、これに限定されない。姿勢推定装置１００は、ステレオカメラまたは複数のカメラによって撮影された画像のデータを、人検出の対象としてもよい。ステレオカメラの画像データを用いる場合には、姿勢推定装置１００は、片方のカメラによって撮像された画像データと、ステレオカメラの設置パラメータから得られる被写体の位置情報とを用いてもよい。また、複数のカメラの画像データを用いる場合には、姿勢推定装置１００は、それらのうち一台のカメラによって撮像された画像データと、各カメラの設置パラメータから得られる被写体の位置情報とを用いてもよい。
【０２７８】
また、部位領域推定部１３１は、基準部位の位置および向きが既知である場合や指定される場合には、上述の基準部位推定処理を行わなくてもよい。また、部位領域推定部１３１は、例えば人の歩行する方向が決まっており、基準部位の向きがほぼ一定である場合には、身体の向き情報を保持しておいてもよい。
【０２７９】
また、部位領域推定部１３１が行う部位領域の推定の手法は、上述の例に限定されない。例えば、部位領域推定部１３１は、画像データから画像のエッジ部分（以下、単に「エッジ」という）を抽出し、エッジにより囲まれた領域のＹ座標の値の範囲に基づいて、各部位領域を推定してもよい。具体的には、例えば、部位領域推定部１３１は、エッジにより囲まれた領域において、Ｙ座標の値が最も高い位置から２０％までの領域を頭部の部位領域というように推定する。同様に、例えば、部位領域推定部１３１は、１５％から６５％までの領域を胴の部位領域、５５％から８５％までの領域を膝上の部位領域、７５％から１００％までの領域を膝下の部位領域というように推定する。この場合には、各領域のパーセンテージに対応する値が、身体制約情報となる。
【０２８０】
また、部位領域推定部１３１は、基の動画像データにおける画像間で背景差分を取ることにより動体を抽出し、抽出した領域を含む領域全体を、各部位の部位領域の候補としてもよい。これにより、部位領域を推定する際の処理の高速化を図ることができる。
【０２８１】
また、姿勢推定装置１００は、基準部位から近い順に１つずつ部位の位置を推定し、推定した位置に基づいて次の部位の部位領域を推定するという処理を繰り返すことにより、各着目部位の部位領域を推定するようにしてもよい。
【０２８２】
また、姿勢推定装置１００は、必ずしも部位領域推定を行わなくてもよい。この場合には、部位候補抽出部１３２は、画像の全ての領域に対して均一に、尤度値の算出を行うことになる。
【０２８３】
また、本実施の形態では、重み付け算出部１５０は、２段階の重み付けを決定したが、３段階以上（以下「多段階」という）の重み付けを決定してもよい。
【０２８４】
ここで、多段階の重み付けを決定する手法の例について説明する。
【０２８５】
まず、多段階の重み付けを決定する第１の手法について説明する。第１の手法は、姿勢毎に異なる、部位間の最大距離（身体の広がり度合い）を基準として重みの分布を変化させる例である。
【０２８６】
姿勢毎重み付け処理部１５３は、部位毎に、身体制約情報を満たす動きにおける、他の部位との距離（注目部位ｐと比較部位ｑとの距離）の最大値Ｒ'ｐを求めておく。
【０２８７】
そして、姿勢毎重み付け処理部１５３は、姿勢毎および注目部位ｐと比較部位ｑとの組み合わせ毎に、例えば以下の式（４）を用いて、重みＷｐｑを算出する。ここで、Ｒ''ｐｑは、その姿勢における他の部位との距離（注目部位ｐと比較部位ｑとの距離）である。
Ｗｐｑ＝（Ｗｍａｘ−Ｗｍｉｎ）
×（Ｒ''ｐｑ−Ｒｐｑ）／（Ｒ'ｐ−Ｒｐｑ）＋Ｗｍｉｎ
・・・・・・（４）      
【０２８８】
式（４）では、Ｒ''ｐｑ＝Ｒ'ｐのとき、Ｗｐｑ＝Ｗｍａｘとなる。そして、姿勢毎重み付け処理部１５３は、姿勢毎および注目部位ｐ毎に、算出した重みＷｐｑの最小値を、最終的な重みとして決定する。
【０２８９】
次に、多段階の重み付けを決定する第２の手法について説明する。第２の手法は、他の部位との距離の最大値Ｒ'ｐを求めず、予め定めた定数に従って重みを多段階に設定する例である。ここでは、３段階の重みを設定する例について説明する。
【０２９０】
まず、姿勢毎重み付け処理部１５３は、姿勢毎および注目部位ｐ毎に、距離Ｒ''ｐｑが、その部位間最小重み距離Ｒｐｑ以下となる比較部位ｑが存在するか否かを判断する。姿勢毎重み付け処理部１５３は、当該比較部位ｑが存在する場合、その姿勢における注目部位ｐの重みとして、最小重みＷｍｉｎを決定する。
【０２９１】
次に、姿勢毎重み付け処理部１５３は、姿勢毎に、重みが未決定の注目部位ｐについて、距離Ｒ''ｐｑが、その注目部位ｐと比較部位ｑとの部位間最小重み距離Ｒｐｑの定数倍の所定の値以下となる比較部位ｑが存在するか否かを判断する。この所定の値は、定数が０.５の場合、Ｒｐｑ×２となる。そして、この場合、Ｒ''ｐｑ×０.５≦Ｒｐｑとなっているか否かが判断される。姿勢毎重み付け処理部１５３は、当該比較部位ｑが存在する場合、その姿勢における注目部位ｐの重みとして、最小重みＷｍｉｎと最大重みＷｍａｘとの差の定数倍の値を決定する。この値は、定数が０.５の場合、（Ｗｍａｘ−Ｗｍｉｎ）×０.５＋Ｗｍｉｎとなる。
【０２９２】
最後に、姿勢毎重み付け処理部１５３は、姿勢毎に、重みが未決定の注目部位ｐに対して、その重みとして、最大重みＷｍａｘを決定する。この注目部位ｐは、距離Ｒ''ｐｑが、その注目部位ｐと比較部位ｑとの部位間最小重み距離Ｒｐｑの定数倍の所定の値以下となる比較部位ｑが存在しない部位である。
【０２９３】
姿勢推定装置１００は、このような多段階の重み付けを行うことにより、密集の度合いにきめ細かに対応させて推定精度への各部位の影響度を設定することができ、姿勢推定の高精度化を図ることができる。
【０２９４】
また、姿勢推定部１６０は、本実施の形態では基準モデル格納部１４０から直接に基準モデル（２次元基準モデルマップ）を取得するものとしたが、これに限定されない。姿勢推定部１６０は、例えば、図２５に示すような構成において、重み付け算出部１５０を経由して基準モデルを取得してもよい。この場合には、重み付け算出部１５０は、例えば、姿勢推定部１６０からの要求を受けて、都度、重み付けを算出し、その際に取得した基準モデルと共に、重み付け情報を出力すればよい。また、重み付け算出部１５０は、２次元基準モデルマップの各値を、重み付けを反映させた値に変更し、変更後の２次元基準モデルマップを出力してもよい。
【０２９５】
また、本実施の形態では、重み付け算出部１５０は、姿勢推定部１６０と同一の装置に配置されているものとしたが、これに限定されない。重み付け算出部１５０は、例えば、姿勢推定部１６０とは別個の装置に配置されてもよい。
【０２９６】
図２６は、重み付け算出部１５０と姿勢推定部１６０とを別の装置に配置した姿勢推定システムの構成を示すブロック図である。
【０２９７】
図２６に示すように、姿勢推定システム５００は、重み付けの決定までの処理を行う重み付け決定装置１００−１と、重み付けを適用して姿勢推定の処理を行う姿勢推定装置１００−２とを有する。
【０２９８】
重み付け決定装置１００−１は、第１の身体制約情報格納部１１０−１、第１の基準モデル格納部１４０−１、重み付け算出部１５０、および第１の重み付け格納部１７０−１、および第１の通信処理部１８０−１を有する。また、姿勢推定装置１００−２は、第２の身体制約情報格納部１１０−２、第２の基準モデル格納部１４０−２、第２の重み付け格納部１７０−２、画像データ取得部１２０、身体候補推定部１３０、姿勢推定部１６０、および第２の通信処理部１８０−２を有する。
【０２９９】
第１の通信処理部１８０−１および第２の通信処理部１８０−２は、インターネット等の通信ネットワーク６００を介して、通信可能に接続する。
【０３００】
第１の身体制約情報格納部１１０−１および第１の基準モデル格納部１４０−１は、図３の身体制約情報格納部１１０および基準モデル格納部１４０に相当する。第１の重み付け格納部（重み付け情報格納部）１７０−１は、重み付け算出部１５０が決定した重み付けを示す重み付け情報を格納する。また、第１の身体制約情報格納部１１０−１、第１の基準モデル格納部１４０−１、および第１の重み付け格納部１７０−１は、それぞれ第１の通信処理部１８０−１に接続している。
【０３０１】
第２の通信処理部１８０−２（重み付け情報取得部）は、第１の通信処理部１８０−１との通信により、第１の身体制約情報格納部１１０−１、第１の基準モデル格納部１４０−１、および第１の重み付け格納部１７０−１に格納された各情報を取得する。そして、第２の通信処理部１８０−２は、取得した身体制約情報、基準モデル、および重み付け情報を、第２の身体制約情報格納部１１０−２、第２の基準モデル格納部１４０−２、および第２の重み付け格納部１７０−２へそれぞれ格納する。すなわち、重み付け決定装置１００−１と姿勢推定装置１００−２とには、共通の身体制約情報、基準モデル、および重み付け情報が格納される。
【０３０２】
また、身体候補推定部１３０は、第２の身体制約情報格納部１１０−２を参照して処理を行い、姿勢推定部１６０は、第２の基準モデル格納部１４０−２および第２の重み付け格納部１７０−２を参照して処理を行う。
【０３０３】
このような姿勢推定システム５００によっても、ノイズが発生し易い密集部分の影響を低減して姿勢推定を行うことができ、関節を有する人の姿勢を高精度に推定することができる。
【０３０４】
また、このように装置を分離することにより、姿勢推定を行う装置の構成を簡素化しつつ、高精度の姿勢推定を実現することができる。また、一旦算出された重み付け情報その他の情報を複数の装置で共用して姿勢推定を行うことができるので、複数の場所で姿勢推定処理を行う場合に、利便性を向上させ、更にシステム全体のコストを低減することができる。
【０３０５】
なお、重み付け決定装置１００−１から姿勢推定装置１００−２への情報の転送は、通信ではなく、情報を格納した記録媒体によって行われてもよい。この場合、重み付け決定装置１００−１および姿勢推定装置１００−２は、記録媒体への情報記録および記録媒体からの情報読み出しを行うためのインタフェースを供える必要がある。また、この場合、重み付け決定装置１００−１および姿勢推定装置１００−２は、必ずしも第１の通信処理部１８０−１および第２の通信処理部１８０−２を備えなくてもよい。
【０３０６】
また、本発明は、以上説明した各実施の形態では、人の姿勢推定への適用について説明したが、これに限定されず、ロボット等の、関節により接続された複数の部位を有する人以外の各種物体の姿勢推定にも適用することができる。
【産業上の利用可能性】
【０３０７】
本発明は、人などの関節を有する物体の姿勢を高精度に推定することができる姿勢推定装置、姿勢推定システム、および姿勢推定方法として有用である。
【符号の説明】
【０３０８】
１００  姿勢推定装置
１００−１  重み付け決定装置
１００−２  姿勢推定装置
１１０  身体制約情報格納部
１１０−１  第１の身体制約情報格納部
１１０−２  第２の身体制約情報格納部
１２０  画像データ取得部
１３０  身体候補推定部
１３１  部位領域推定部
１３２  部位候補抽出部
１４０  基準モデル格納部
１４０−１  第１の基準モデル格納部
１４０−２  第２の基準モデル格納部
１５０  重み付け算出部
１５１  部位間最小重み距離算出部
１５２  最大最小重み算出部
１５３  姿勢毎重み付け処理部
１６０  姿勢推定部
１７０−１  第１の重み付け格納部
１７０−２  第２の重み付け格納部
１８０−１  第１の通信処理部
１８０−２  第２の通信処理部
２００  単眼カメラ
３００  情報出力装置
５００  姿勢推定システム
６００  通信ネットワーク
【図１】
0005771413.tif 000002
【図２】
0005771413.tif 000003
【図３】
0005771413.tif 000004
【図４】
0005771413.tif 000005
【図５】
0005771413.tif 000006
【図６】
0005771413.tif 000007
【図７】
0005771413.tif 000008
【図８】
0005771413.tif 000009
【図９】
0005771413.tif 000010
【図１０】
0005771413.tif 000011
【図１１】
0005771413.tif 000012
【図１２】
0005771413.tif 000013
【図１３】
0005771413.tif 000014
【図１４】
0005771413.tif 000015
【図１５】
0005771413.tif 000016
【図１６】
0005771413.tif 000017
【図１７】
0005771413.tif 000018
【図１８】
0005771413.tif 000019
【図１９】
0005771413.tif 000020
【図２０】
0005771413.tif 000021
【図２１】
0005771413.tif 000022
【図２２】
0005771413.tif 000023
【図２３】
0005771413.tif 000024
【図２４】
0005771413.tif 000025
【図２５】
0005771413.tif 000026
【図２６】
0005771413.tif 000027