(57)【要約】【課題】多関節の物体に対してより整合性のとれた姿勢を推定できるようにする。【解決手段】距離画像入力部１０１は、処理対象とする距離画像を入力し、さらに距離画像から人体領域を抽出する。続いて関節位置候補算出部１０２は、距離画像から対象の関節位置候補を算出する。整合性評価部１０３は、各関節の関節位置候補とその尤度とを基に、最終的な関節位置を決定して姿勢を推定する。このとき、あらかじめ学習により設定した人体モデルの関節間の距離や角度などの関節についての関節位置許容範囲情報を人体モデル記憶部１０４から取得し、この情報に基づいて、ある関節の関節位置候補と他の関節の関節位置候補との関係について整合性を評価して、最もよい関節位置の組み合わせとなる姿勢を決定する。【選択図】図１
2015167008.tif 000002
【特許請求の範囲】
【請求項１】
多関節の物体を含む距離画像を入力する入力手段と、
前記入力手段によって入力された距離画像から前記物体の関節位置候補を算出する算出手段と、
前記物体に相当する多関節物体モデルにおける関節と他の関節との間の配置関係を含む情報を記憶する記憶手段と、
前記算出手段によって算出された関節位置候補と、前記記憶手段に記憶された情報とに基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定する評価手段と、
を有することを特徴とする姿勢推定装置。
【請求項２】
前記記憶手段は、さらに前記物体に相当する多関節物体モデルにおける関節と他の関節との間の距離もしくは角度の少なくとも１つを含む情報を記憶し、
前記評価手段は、前記距離もしくは角度の少なくとも１つを含む情報に基づいて前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定することを特徴とする請求項１に記載の姿勢推定装置。
【請求項３】
前記関節と他の関節との間の距離および角度の分布が、正規分布又は一様分布であることを特徴とする請求項２に記載の姿勢推定装置。
【請求項４】
前記評価手段は、前記物体に類似した多関節物体モデルを推定し、前記記憶手段から、前記推定した多関節物体モデルに対応する情報を取得することを特徴とする請求項１〜３の何れか１項に記載の姿勢推定装置。
【請求項５】
前記記憶手段は、前記物体に相当する複数の多関節物体モデルにおける前記関節と他の関節との間の距離を含む情報を記憶し、
前記評価手段は、前記複数の多関節物体モデルに係る情報に基づいて前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定することを特徴とする請求項１〜４の何れか１項に記載の姿勢推定装置。
【請求項６】
前記評価手段は、すべての関節の前記関節位置候補の組み合わせについて評価することを特徴とする請求項１〜５の何れか１項に記載の姿勢推定装置。
【請求項７】
前記評価手段は、隣接する関節との間で前記関節位置候補を評価して、一定の閾値を超えた関節位置候補に絞り込んで前記物体の関節位置の配置の整合性を評価することを特徴とする請求項１〜５の何れか１項に記載の姿勢推定装置。
【請求項８】
前記算出手段は、前記物体の関節位置候補の尤度をも算出し、
前記評価手段は、前記算出した尤度に基づいて前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定することを特徴とする請求項１〜７の何れか１項に記載の姿勢推定装置。
【請求項９】
前記評価手段は、さらに前記入力された距離画像と前記関節位置候補の位置との整合性を評価することを特徴とする請求項１〜８の何れか１項に記載の姿勢推定装置。
【請求項１０】
前記評価手段は、遮蔽状態の関節位置候補を追加して前記物体の関節位置の配置の整合性を評価することを特徴とする請求項１〜８の何れか１項に記載の姿勢推定装置。
【請求項１１】
前記多関節の物体が人体であることを特徴とする請求項１〜１０の何れか１項に記載の姿勢推定装置。
【請求項１２】
前記評価手段によって推定された姿勢を初期姿勢として、前記距離画像に対してモデルフィッティングを行う手段をさらに有することを特徴とする請求項１〜１１の何れか１項に記載の姿勢推定装置。
【請求項１３】
前記評価手段は、さらに前記入力手段によって得られた距離画像と前記多関節物体モデル又は前記多関節物体モデルの一部分との整合性を評価することを特徴とする請求項１に記載の姿勢推定装置。
【請求項１４】
前記評価手段は、さらに前記物体に相当する多関節物体モデルにおける関節と他の関節との位置の重複を評価することを特徴とする請求項１に記載の姿勢推定装置。
【請求項１５】
前記評価手段は、前記物体の関節位置の配置の整合性を評価することによって得られた評価値を複数用いることを特徴とする請求項１に記載の姿勢推定装置。
【請求項１６】
前記記憶手段は、さらに前記物体に相当する多関節物体モデルにおける関節と他の関節との間の距離と、それ以外の関節間の距離との比率の情報を少なくとも１つ記憶し、
前記評価手段は、さらに前記比率の情報に基づいて前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定することを特徴とする請求項１〜１５の何れか１項に記載の姿勢推定装置。
【請求項１７】
前記記憶手段は、前記物体に相当する多関節物体モデルにおける少なくとも２つの関節間の距離の和とそれ以外の少なくとも２つの関節間の距離の和との比率の情報を少なくとも１つ記憶し、
前記評価手段は、前記比率の情報に基づいて前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定することを特徴とする請求項１〜１５の何れか１項に記載の姿勢推定装置。
【請求項１８】
前記評価手段によって推定された姿勢に基づいて、前記物体に係る関節と他の関節との間の配置関係を含む情報を推定する推定手段をさらに有し、
前記評価手段は、前記物体を含む他の距離画像に対して、前記算出手段によって算出された前記他の距離画像における関節位置候補と、前記推定手段によって推定された情報とに基づいて、前記他の距離画像における物体の関節位置の配置の整合性を評価して姿勢を推定することを特徴とする請求項１〜１７の何れか１項に記載の姿勢推定装置。
【請求項１９】
前記推定手段は、前記物体の関節間距離を学習することによって前記物体に係る関節と他の関節との間の配置関係を含む情報を推定することを特徴とする請求項１８に記載の姿勢推定装置。
【請求項２０】
前記推定手段は、前記物体における２つの関節間距離の比率を学習することによって前記物体に係る関節と他の関節との間の配置関係を含む情報を推定することを特徴とする請求項１８に記載の姿勢推定装置。
【請求項２１】
多関節の物体を含む距離画像を入力する入力手段と、
前記入力手段によって入力された距離画像から前記物体の関節位置候補を算出する算出手段と、
前記物体に相当する多関節物体モデルにおける関節と他の関節との間の配置関係を含む情報を記憶する第１の記憶手段と、
前記算出手段によって算出された関節位置候補と、前記第１の記憶手段に記憶された情報とに基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定する評価手段と、
前記評価手段によって推定された姿勢に係る関節位置情報を記憶する第２の記憶手段と、
前記第２の記憶手段に記憶されている関節位置情報から前記物体における関節と他の関節との間の配置関係を含む情報を推定する推定手段とを有し、
前記評価手段は、前記推定手段により前記物体における関節と他の関節との間の配置関係を含む情報が推定された場合は、前記推定手段によって推定された情報に基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定すること特徴とする姿勢推定装置。
【請求項２２】
多関節の物体に相当する多関節物体モデルにおける関節と他の関節との間の距離を含む情報を記憶する姿勢推定装置の姿勢推定方法であって、
前記多関節の物体を含む距離画像を入力する入力工程と、
前記入力工程において入力された距離画像から前記物体の関節位置候補を算出する算出工程と、
前記算出工程において算出された関節位置候補と、前記姿勢推定装置に記憶された情報とに基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定する評価工程と、
を有することを特徴とする姿勢推定方法。
【請求項２３】
多関節の物体に相当する多関節物体モデルにおける関節と他の関節との間の配置関係を含む情報を記憶する姿勢推定装置の姿勢推定方法であって、
前記多関節の物体を含む距離画像を入力する入力工程と、
前記入力工程において入力された距離画像から前記物体の関節位置候補を算出する算出工程と、
前記算出工程において算出された関節位置候補と、前記姿勢推定装置に記憶された情報とに基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定する評価工程と、
前記評価工程において推定された姿勢に係る関節位置情報を記憶手段に記憶する記憶工程と、
前記記憶手段に記憶されている関節位置情報から前記物体における関節と他の関節との間の配置関係を含む情報を推定する推定工程とを有し、
前記評価工程においては、前記推定工程において前記物体における関節と他の関節との間の配置関係を含む情報が推定された場合は、前記推定工程において推定された情報に基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定することを特徴とする姿勢推定方法。
【請求項２４】
多関節の物体に相当する多関節物体モデルにおける関節と他の関節との間の距離を含む情報を記憶する姿勢推定装置を制御するためのプログラムであって、
前記多関節の物体を含む距離画像を入力する入力工程と、
前記入力工程において入力された距離画像から前記物体の関節位置候補を算出する算出工程と、
前記算出工程において算出された関節位置候補と、前記姿勢推定装置に記憶された情報とに基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定する評価工程と、
をコンピュータに実行させることを特徴とするプログラム。
【請求項２５】
多関節の物体に相当する多関節物体モデルにおける関節と他の関節との間の配置関係を含む情報を記憶する姿勢推定装置を制御するためのプログラムであって、
前記多関節の物体を含む距離画像を入力する入力工程と、
前記入力工程において入力された距離画像から前記物体の関節位置候補を算出する算出工程と、
前記算出工程において算出された関節位置候補と、前記姿勢推定装置に記憶された情報とに基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定する評価工程と、
前記評価工程において推定された姿勢に係る関節位置情報を記憶手段に記憶する記憶工程と、
前記記憶手段に記憶されている関節位置情報から前記物体における関節と他の関節との間の配置関係を含む情報を推定する推定工程とをコンピュータに実行させ、
前記評価工程においては、前記推定工程において前記物体における関節と他の関節との間の配置関係を含む情報が推定された場合は、前記推定工程において推定された情報に基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、多関節の物体の姿勢を推定するために用いて好適な姿勢推定装置、姿勢推定方法およびプログラムに関する。
【背景技術】
【０００２】
画像中の物体の姿勢を推定する代表的な方法として、識別器を用いて姿勢の種類を得る方法と、画像と暫定姿勢とを比較し、その差が小さくなるように徐々に暫定姿勢を修正していく方法（フィッティング）とが知られている。識別器を用いて姿勢の種類を得る方法としては、局所特徴を利用して全体の姿勢を決める方法がある。特許文献１には、対象物の部分形状を２か所ずつ順次選択し、その配置関係を基に姿勢候補を選出して、最終的な姿勢候補を決定する方法が開示されている。また、物体の姿勢を得る方法として、対象のある姿勢に含まれる複数の局所特徴とその姿勢との相関関係により、一意に姿勢を決定する方法も考えられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１２４６７７号公報
【非特許文献】
【０００４】
【非特許文献１】Jamie Shotton, "Real-Time Human Pose Recognition in Parts from Single Depth Images," IEEE Computer Vision and Pattern Recognition, 2011
【非特許文献２】Ross Girshick, "Efficient Regression of General-Activity Human Poses from Depth Images," IEEE International Conference on Computer Vision, 2011
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されているような局所特徴の配置関係を利用して姿勢候補を絞っていく方法では、局所特徴の配置関係が固定であることが前提となっている。そのため、予め形状が定まっている剛体には適用できるが、形状が大きく変形する物体には適用できない。また、物体の取り得る姿勢として予め設定されたモデルなどから一意に姿勢を決定する方法は、物体としてあり得る姿勢が必ず得られるという点は利点である。しかし、局所部分を無視して全体の姿勢を一意に決めてしまうので、局所部分を含めて姿勢の整合性が不十分である。
【０００６】
本発明は前述の問題点に鑑み、多関節の物体に対してより整合性のとれた姿勢を推定できるようにすることを目的としている。
【課題を解決するための手段】
【０００７】
本発明に係る姿勢推定装置は、多関節の物体を含む距離画像を入力する入力手段と、前記入力手段によって入力された距離画像から前記物体の関節位置候補を算出する算出手段と、前記物体に相当する多関節物体モデルにおける関節と他の関節との間の距離を含む情報を記憶する記憶手段と、前記算出手段によって算出された関節位置候補と、前記記憶手段に記憶された情報とに基づいて、前記物体の関節位置の配置の整合性を評価して前記物体の姿勢を推定する評価手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、局所部分における姿勢の精度が向上し、より整合性のとれた姿勢を推定することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る姿勢推定装置の構成例を示すブロック図である。
【図２】本発明の実施形態における姿勢推定装置が行う処理手順の一例を示すフローチャートである。
【図３】人体モデルを作成する方法を説明するための図である。
【図４】各関節に対する関節位置候補の一例を示す図である。
【図５】関節位置候補としてあり得るか否か判定する方法を説明するための図である。
【図６】推定した関節の位置が人体領域の範囲内か否かを判定する方法を説明するための図である。
【図７】人体領域および各関節の奥行き値を無視した人体モデルの一例を示す図である。
【図８】部分モデルが平面上に表現され人体モデル及びその拡大部分の一例を示す図である。
【図９】部分モデルが表現され人体モデルの一例を示す図である。
【図１０】学習された関節間距離の比率の一例を示す図である。
【図１１】距離画像及びその姿勢候補の一例を示す図である。
【図１２】本発明の第８の実施形態に係る姿勢推定装置の構成例を示すブロック図である。
【図１３】人体に応じた関節位置許容範囲情報を推定する処理手順の一例を示すフローチャートである。
【図１４】複数の関節位置情報から関節位置許容範囲情報を推定する手順を説明するための図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
本実施形態では、距離撮像装置から距離画像を得て、写っている人体の関節位置候補を推定し、人体としてあり得る関節位置の配置か整合性を評価して、最終的な姿勢を推定する例を示す。以下の説明においては、姿勢を推定するとは人体の関節位置を推定することを意味するものとする。その際に、求める関節位置は２次元上だけでなく、３次元上も含むものとする。以後の実施形態で人体の姿勢を推定する例について説明するが、本発明は人体だけでなく他の関節をもつ物体にも適用できる。
【００１１】
＜構成と概要＞
図１は、本実施形態に係る姿勢推定装置１００の構成例を示すブロック図である。
図１に示す姿勢推定装置１００は、距離画像入力部１０１、関節位置候補算出部１０２、整合性評価部１０３、および人体モデル記憶部１０４を備えている。本実施形態の姿勢推定装置１００は、ネットワークまたは各種記録媒体を介して取得したソフトウェア（プログラム）を、ＣＰＵ、メモリ、ストレージデバイス、入出力装置、バス、表示装置などにより構成される計算機にて実行することにより実現できる。また、不図示の制御用の計算機については、汎用の計算機を用いてもよく、ソフトウェアに最適に設計されたハードウェアを用いてもよい。
【００１２】
図２は、本実施形態における姿勢推定装置１００が行う処理手順の一例を示すフローチャートである。以下、図１及び図２を参照しながら、本実施形態の基本的な処理を説明する。なお、詳細な処理については、それぞれ後述する。
【００１３】
図１に示す距離画像入力部１０１は、処理対象とする距離画像を入力する構成であり、例えば図２のＳ２０１およびＳ２０２の処理を実行する。ここで距離画像とは、画像中の各画素に奥行き方向の距離情報が所定のスケーリングで記録された画像であり、ＣＧ等により作成された画像であってもよい。Ｓ２０１において、距離画像入力部１０１は、距離撮像装置から距離画像を取得する。なお、予め撮影した距離画像を保存した不図示の記録装置から、処理対象とする距離画像を距離画像入力部１０１に入力するようにしてもよい。また、距離画像入力部１０１は、Ｓ２０２において、距離画像から人体領域を抽出する処理も行う。
【００１４】
関節位置候補算出部１０２は、距離画像から対象の関節位置候補を算出する構成であり、例えば図２のＳ２０３の処理を実行する。まず、部分領域識別器を用いて距離画像の人体領域の各部分が学習した部分領域のいずれに該当するかを識別し、識別された部分と関節位置との相関関係、すなわち相対ベクトルや距離や方向などから関節位置候補を算出する。もしくは、頭部検出器・胴体検出器・手検出器・足検出器などの複数の検出器を用いて距離画像の人体領域内で検出器に対応する部位を検出し、その部位と関節位置との相関関係から関節位置候補を算出してもよい。また、部分領域の特徴から関節位置を推定することもできる。関節位置候補の算出方法はこれらの手法に特に限定しない。
【００１５】
整合性評価部１０３は、各関節の関節位置候補とその尤度とを基に、最終的な関節位置を決定して姿勢を推定する構成であり、例えば図２のＳ２０４およびＳ２０５の処理を実行する。整合性評価部１０３は、Ｓ２０４において、対象となる人体に類似した人体モデルを推定し、人体モデル記憶部１０４から、推定した人体モデルの関節位置許容範囲情報を取得する。そして、Ｓ２０５において、この関節位置許容範囲情報を基に、ある関節の関節位置候補と他の関節の関節位置候補との関係について整合性を評価する。この処理を繰り返し、かつ関節位置候補の尤度も考慮し、最もよい関節位置の組み合わせとなる姿勢を決定する。
【００１６】
人体モデル記憶部１０４には、あらかじめ学習により設定した人体モデルの関節間の距離や角度などの関節についての情報が関節位置許容範囲情報として格納されており、指定した関節の関節位置許容範囲情報が参照できるようになっている。また、対象が人でない場合には、同様に多関節物体モデルの関節位置配置関係を示す関節位置許容範囲情報が格納される。また、関節位置許容範囲情報は人体モデル（多関節物体モデル）ごとに保持してもよく、身長、体型などによる分類ごとに保持してもよく、全モデルで１つとして保持してもよい。
【００１７】
＜処理の詳細＞
次に、個々の処理について詳細に説明する。
【００１８】
＜人体領域の抽出＞
前述したように、距離画像入力部１０１は、姿勢推定を行う距離画像を取得し、前処理として距離画像から人体領域を抽出する。人体領域の抽出処理では、まず、距離画像に対して背景差分処理を行うことにより、前景候補画素のみを抽出する。続いて、前景候補画素の距離値をカメラ座標系（３次元座標系）の点群へ変換する。そして、３次元座標系の点群の固まりの中心位置を求め、中心位置周辺の点群のうち、人体サイズに収まる範囲に存在する点を人体領域とする。このとき、人体サイズはあらかじめ学習しておいた人体の平均サイズや最大サイズなどを用いて決めることができる。
【００１９】
また、床との接地部分については、平面推定を行うなどすることにより、床と人体との境界を決定し、人体領域を決めることができる。人体領域とラベル付けされた点群を再び画像平面に投影することにより、人体領域が抽出された距離画像を取得することができる。なお、人体領域の抽出方法は、これに限らず公知の手法を用いればよい。
【００２０】
＜関節位置候補算出＞
次に、関節位置候補算出部１０２により距離画像から関節位置候補を算出する具体的な方法について説明する。
まず、部分領域識別器を用いた方法について説明する。部分領域識別器は、距離画像の人体領域に対して部分領域の識別を行う。部分領域の識別は、例えば非特許文献１に記載されているような既存の方法を用いればよい。具体的には、特徴量に距離画像の２点比較を使用し、識別器に決定木を用いて各画素について部分領域の識別を行う。また、この方法に限らず、例えば、特徴量としてＨＯＧ（Histograms of Oriented Gradients）特徴量やEdglet特徴量などを使用することが考えられる。また、識別器としてＳＶＭ（Support Vector Machine）などを用いることが考えられる。この際、識別境界（超平面）からの距離を用いて尤度を算出することができる。
【００２１】
このようにして識別された部分領域から関節位置候補を算出する。関節位置候補は、部分領域と関節位置との間の相関関係をあらかじめ学習時に算出しておくことによって求めることができる。相関関係とは例えば距離や方向などが考えられる。複数の部分領域の情報を用いることにより複数の関節位置候補を算出することができ、また、ある特定の関節周辺の部分領域のみを利用して、その中心位置や重み付きの重心位置を算出して関節位置候補とすることもできる。mean-shift等の手法を用いる場合には、クラスタごとに重心を算出することができ、それを複数の関節位置候補とすることができる。
【００２２】
次に、複数の検出器を用いた方法について説明する。この方法では、頭部検出器、胴体検出器、手検出器、足検出器などの人体に関する複数の検出器を用いて距離画像の人体領域内で検出器に対応する部位を検出する。検出器を用いた処理は既存の方法を用いればよい。例えば、特徴量としてＨＯＧ特徴量やEdglet特徴量などを使用して、識別器としてＳ
ＶＭやboostingを用いることなどが考えられる。各検出器で対象の部位を検出し、それぞ
れの部位の尤度と位置とを得る。そして、部分領域識別器を用いた方法と同様に、検出対象の部位と関節との相関関係をあらかじめ学習時に算出しておくことにより、検出した部位から関節位置候補を求めることができる。各検出器で複数の部位を検出すれば、複数の関節位置候補を得ることができる。
【００２３】
さらに、部分領域の特徴と関節位置との関係を結び付け、関節位置候補を直接算出する方法を用いてもよい。このとき、例えば非特許文献２に記載された方法を用いる。この方法では、特徴量に距離画像の２点比較を使用し、識別器に決定木を用いて、各画素について各関節位置への相対ベクトルを直接算出している。すべての画素で取得した各画素から各関節への相対ベクトルを、関節ごとに集計し、mean-shiftを用いて関節位置候補を算出している。非特許文献２に記載の方法では、mean-shiftで関節位置候補を一意に算出しているが、この際、mean-shiftで算出した複数のクラスタを選択して用いることにより、複数の関節位置候補を得ることができる。
【００２４】
＜人体モデルの学習＞
次に、整合性評価部１０３が人体としての整合性評価を行う際に必要となる人体モデルについて述べる。
図３は、人体モデルを作成する方法を説明するための図である。
図３に示すように、整合性評価部１０３は、人体モデル記憶部１０４に記憶されている関節位置が既知である学習データ３０１、３０２、・・・、３０ｍを用いて、人体モデル３１１の関節位置関係のテーブル３１２を算出する。ここで、人体モデル３１１のＪ1、Ｊ2、・・・、Ｊ16は関節を表している。
【００２５】
人体モデルを作成するために、学習データとして同一人物の人体だけを用いてもよいし、同程度の身長や体型の人体ごとに用いてもよい。また、性別や年齢などを考慮した分類ごとに用いてもよく、色々なバリエーションが考えられ、本実施形態では特に限定しない。また、図３に示す例では、関節位置の数は１６としているが、特にこの数に限定せず、この数よりも多くても少なくてもよい。
【００２６】
関節位置関係は、ある関節と他のすべての関節との関係を示している。例えば、テーブル３１２において、距離ｄ21は、横軸の関節Ｊ1と縦軸の関節Ｊ2との距離を示している。また、関節位置関係は必ずしも全ての関節との関係を示すものである必要はなく、ある関節と隣接する関節との関係のみであってもよい。さらに、ある関節と近隣の１つ以上の関節との関係でもよく、どの範囲の関節との関係についてかは特に限定しない。
【００２７】
また、テーブル３１２では、関節間の関係を距離として示しているが、角度などの関係を用いてもよい。なお、３次元上で関節位置関係を考える場合に、角度を利用するためには３点間の関係を用いる必要がある。距離や角度などを使用する際には、その平均値等のみを算出するのでなく、平均値から一定の範囲で一様分布を仮定してもよい。もしくは、平均値と分散とを求めて例えば正規分布を仮定して人体モデルとして許容できる関節位置の範囲を算出できるようにしてもよい。正規分布を仮定すると確信度も得ることができる。また、平均値でなくとも、学習データに重みをつけて重み付きの平均値などを使用してもよいし、mean-shiftなどにより重心を求めてもよく、ヒストグラムを考えて範囲を算出してもよい。特にここに述べた方法に限定しない。
【００２８】
＜整合性評価＞
次に、整合性評価部１０３により、各関節の関節位置候補とその尤度とを基に、人体モデルとの整合性を評価して最終的な関節位置を決定して姿勢を推定する方法について説明する。なお、この関節位置候補は前述した方法により関節位置候補算出部１０２によって取得され、関節位置候補を選出する際に、その尤度に閾値を設定してもよい。期待される位置が予め予測できる場合は、その情報をもとにある範囲内の関節位置候補に制限してもよい。
【００２９】
図４は、関節ごとの関節位置候補の３次元位置（ｘ，ｙ，ｚ）と尤度（ｌ）との一例を示す図である。ある関節Ｊiに対してｎi個の関節位置候補がある場合、関節の数をＮ個とすると、関節位置候補の組み合わせの数は、ｎ1×ｎ2×・・・・・×ｎN組（以下、Πｎiとする）となる。なお、このときの組み合わせは人体としてあり得ない関節位置候補の組み合わせも含まれている。また、図４に示すように、関節Ｊ1は２個、関節Ｊ2は４個というように関節ごとで関節位置候補数が違ってもよいし、同じでもよい。
【００３０】
次に、このΠｎi組の組み合わせに対し、それぞれ関節位置の組み合わせがあり得るか否かを評価する。まず、Πｎi組中のａ番目の関節位置候補の組み合わせを（Ｊa1，Ｊa2，・・・ＪaN）とする。この時の各関節位置候補の尤度を（ｌa1，ｌa2，・・・ｌaN）とし、各座標位置を（（ｘa1，ｙa1，ｚa1），（ｘa2，ｙa2，ｚa2），・・・（ｘaN，ｙaN，ｚaN））とする。人体モデルより関節ｉと関節ｊとの間の距離をｄijとし、一定範囲ｄfを定める。
【００３１】
ここで一定範囲ｄfは、例えばあらかじめ学習した人体モデルの関節間の距離の最大値、最小値、平均値、分散等をもとに決める。最大値および最小値を含む範囲で一定範囲ｄfを定めた場合は、学習データに存在する程度の個体差を許容することになる。また、どのくらいのばらつきを許容するかは、分散を基に一定範囲ｄfを定めるとよい。
【００３２】
次に、評価する対象が以下の式（１）を満たす場合は、以下の式（２）中の値ｗijを１とし、それ以外の場合は式（２）中の値ｗijを０とする。ある関節ｉの判定に利用する他の関節の数をｎ（ｉ）とすると、例えば評価値ｆ（ａ）は、以下の式（２）により算出される。
【００３３】
【数１】
2015167008.tif 000003
【００３４】
【数２】
2015167008.tif 000004
【００３５】
なお、式（２）中のΠｗijの部分は、ある関節位置としてあり得る場合にのみ１となり、その他の場合には０になる。つまり、評価値ｆ（ａ）は、人体としてあり得る関節位置のときのみ尤度を加算する形になっている。そして、評価値ｆ（ａ）が最大となる姿勢を選ぶことにより、整合性のある姿勢を推定することができる。
【００３６】
一方、人体モデルの整合性を考慮せずに関節位置を算出する場合に、図５に示す画像５０１のように左つま先位置に推定されるべき点が右つま先位置である関節Ｊ501の位置に推定される場合がある。このような場合においても前述のように人体モデルとの整合性を考えて整合性評価を行う。例えば、画像５０１で誤推定となっていた左つま先の関節位置候補として、人体モデル５１１における関節位置候補Ｊ5111、Ｊ5112、Ｊ5113が得られるものとする。この中で、左足首や左膝との位置関係より本来選ばれるべき関節位置候補Ｊ5112が選ばれ、人体として整合性のとれた姿勢を推定することが可能となる。
【００３７】
さらに、人体モデルとの整合性を評価する際に、身長や体型などの違う複数の人体モデルを用いて整合性を評価する。このとき、式（１）に含まれる人体モデルの関節ｉと関節ｊとの間の距離ｄij、および一定範囲ｄfは各人体モデルについて算出する。そして、そのすべての人体モデルに対して上記の手順で評価値ｆ（ａ）を算出して最も高い評価値となったものを姿勢として決定する。これにより、対象と身長や体型の適した人体モデルの評価値が高くなり、より高い精度で姿勢を推定することが可能となる。もちろん、対象の身長および体型が予めわかっている場合には、その身長および体型に相当する人体モデルのみを使用して評価値を算出してもよい。
【００３８】
例えば、図５に示す画像５０２において、左膝位置に推定されるべき点がやや高めの関節Ｊ502に推定されたものとする。この程度の推定誤差では、人体としての整合性はある程度とれているように見えるが、対象となる個人の身長および体型を考慮すると整合性がとれていない。ここで、あらかじめ学習していた複数の人体モデルを用いて関節間の距離を考慮しながらそれぞれ整合性を評価する。対象に適した身長および体型の人体モデル５１２を使用した際に、左膝の関節位置候補Ｊ5121、Ｊ5122、Ｊ5123、Ｊ5124の中からより正しい位置に近い関節位置候補Ｊ5122が選ばれる。これにより、対象個人として整合性のとれた姿勢を推定することが可能となる。
【００３９】
なお、評価値はこれだけに限らず、関節位置候補としてあり得るか否か判定して尤度を加算していくのみの形式でもよい。また、加算する尤度に重みづけしてもよい。式（２）に示した例では、関節位置候補としてあり得るか否かを判定する際に一様分布を仮定していたが、一様分布ではなく正規分布を仮定すれば、値ｗij＝１もしくは０の判定ではなく、確率的な判定および出力も可能となる。
【００４０】
また、式（１）では、人体モデルの関節間の距離だけが用いられているが、さらに角度を利用することもできる。この場合、距離による値ｗijを判定するだけでなく、角度による判定を追加する必要がある。ここで、関節ｉと関節ｍとを結ぶ直線と関節ｉと関節ｎとを結ぶ線とがなす角度が所定の範囲内である場合は、以下の式（３）に用いられる値ｗimnを１とし、それ以外の場合は値ｗimnを０とする。そして、ある関節ｉの距離判定に利用する他の関節の数と角度判定に利用する他の関節の数とをそれぞれｎｄ（ｉ）、ｎａ（ｉ）とすると、例えば評価値ｆ（ａ）は、以下の式（３）により算出される。
【００４１】
【数３】
2015167008.tif 000005
【００４２】
式（２）と比較して式（３）ではさらに関節の角度が人体としてあり得るか否かの判定項が追加されている。距離、角度ともに人体としてふさわしい場合、すなわち値ｗijおよび値ｗimnがすべてゼロでない場合のみ尤度が加算される。なお、評価値はこれだけに限定しない。また、人体モデルの関節間の距離および角度のみでなく、さらに人体が左右対称であることを利用して右側の関節間の距離と左側の関節間の距離との比などを利用することもできる。
【００４３】
以上のようにして関節位置の組み合わせを決定することにより、画像から対象の姿勢を得ることができる。さらに、図１に示す構成にさらにモデルフィッティング部が追加された構成であってもよい。この場合、モデルフィッティング部は、算出した姿勢を初期姿勢として、入力された距離画像から三次元での点群を生成し、この点群に対してなんらかの人体モデルを用いてモデルフィッティングを行う。これにより、より高精度に最終的な姿勢を算出することもできる。人体モデルには、例えば円柱の組み合わせからなるものが考えられ、モデルフィッティング処理については既存の方法でよい。
【００４４】
＜整合性評価の高速化＞
上記の例では、すべての組み合わせに対して評価値を算出するので、処理に時間を要する。そこで、ある関節位置候補を起点とし、隣接する関節位置候補に対して順次整合性を評価して決定していく方法について説明する。この際、評価値が低い場合、評価値の低くなる関節位置候補については以降の処理を打ち切ることにより処理を高速化できる。
【００４５】
まず、起点となる関節を決める必要がある。これは学習時に安定した精度が得られた関節を使用するのがよい。例えば、頭部や首、腰等が考えられるが特にこれに限定しない。本実施形態では、頭部の関節位置候補を起点とした例について説明する。
【００４６】
まず、頭部の関節Ｊ1における１つの関節位置候補の３次元位置（ｘ１＿１、ｙ１＿１、ｚ１＿１）を正しい位置と仮定し、隣接する首の関節Ｊ2における１つの関節位置候補の３次元位置（ｘ２＿１、ｙ２＿１、ｚ２＿１）の整合性を評価する。整合性の評価方法は、全組み合わせ評価時と同等である。ただし、確定している関節はこの時点では頭部のみなので、頭部との関係のみで整合性を評価する。そして、評価値が一定の閾値以上である場合には、さらに首に隣接する関節Ｊ3における１つの関節位置候補の３次元位置（ｘ３＿１、ｙ３＿１、ｚ３＿１）の整合性を同様に評価する。この時、確定している関節は頭部および首であるため、頭部と首と首に隣接する関節位置候補との関係で整合性を評価する。なお、頭部と首とのどちらかだけ使用してもよい。このようにして順次隣接する関節の評価を行っていく。
【００４７】
また、評価値が一定の閾値を超えない場合、もしくは、順次評価して全部の関節位置での評価が終了して最終的な評価値まで算出した場合は、他の関節位置候補の評価を行い、同様の処理を行う。例えば、頭部の関節Ｊ1における１つの関節位置候補の３次元位置（ｘ１＿１、ｙ１＿１、ｚ１＿１）と首の関節Ｊ2における２つ目の関節位置候補の３次元位置（ｘ２＿２、ｙ２＿２、ｚ２＿２）との評価を行う。繰り返し処理を行った結果、最終的な評価値まで算出できた関節位置の組み合わせの中から、評価値が最大となるものを最終的な姿勢として決定する。また、起点となる関節位置候補に正しい位置が含まれていない場合や候補がない場合を想定して、第二、第三の起点候補を決めておくとよい。
【００４８】
以上のように本実施形態によれば、人体の関節位置候補を推定し、人体としてあり得る関節位置か否かについて整合性を評価して、最終的な姿勢を推定するようにした。これにより、局所の精度劣化を低減し、より多関節物体として整合性のとれた姿勢を得ることが可能となる。また、関節位置を決める際に、関節位置の許容範囲を正規分布や一様分布で定めることにより、対象の個体差を多少吸収することができる。さらに、関節位置を決めるために身長や体型の違う人体モデルを複数使用することにより、対象に適した関節位置を決定することができ、姿勢の推定精度をより向上させることができる。
【００４９】
また、整合性を評価するにあたり、関節位置候補のすべての組み合わせを考慮することにより最終候補として１つに絞るだけでなく、上位いくつかを選出することができるようになる。さらに、全組み合わせでなく、１つずつ隣接する関節位置候補の整合性を評価することにより、処理を高速化することができる。また、整合性のとれた姿勢を推定した後に、推定した姿勢を初期姿勢としてフィッティング処理を行うことにより、局所の精度をより向上させて姿勢を推定することが可能となる。
【００５０】
（第２の実施形態）
本実施形態では、整合性評価の指標に、人体としての関節位置の配置の整合性だけでなく、入力した距離画像に矛盾がないか否かの妥当性を追加する。つまり、距離撮像装置から距離画像を得て写っている人体の関節位置候補を推定し、そして人体としてあり得る関節位置配置か、および入力した距離画像との整合性を評価し、最終的な姿勢を推定する。以下、第１の実施形態と異なる箇所について説明する。
【００５１】
＜構成と概要＞
基本的な構成は図１と同様であるため、重複する部分については説明を省略する。本実施形態では、整合性評価部１０３は、さらに、距離画像入力部１０１が抽出した距離画像の人体領域に対して、関節位置候補が矛盾しているか否か（距離画像との整合性）について評価する。これらの処理を繰り返し、かつ関節位置候補の尤度も考慮し、最もよい関節位置の組み合わせとなる姿勢を決定する。
【００５２】
＜整合性評価＞
人体との整合性を評価する方法は第１の実施形態と同様であるため、説明は省略する。以下、入力された距離画像との整合性を評価する。
【００５３】
図６に示す例では、距離画像の人体領域から関節Ｊ601の位置が外れている。第１の実施形態で説明したような方法で関節位置候補を個別に算出する場合に、手法によっては推定する位置の中心や重心などを算出するため、入力画像の人体領域から外れる場合がある。そこで、関節位置が距離画像の人体領域内かどうかを判定して整合性を確認する。ここで、関節ｉが人体領域の内部に含まれる場合は、以下の式（４）に含まれる値Ｓ（ｉ）を１とし、人体領域の内部に含まれない場合は値Ｓ（ｉ）を０とする。関節位置間の距離を考慮した人体モデルの評価と合わせて、評価値ｆ（ａ）は、以下の式（４）により算出される。
【００５４】
【数４】
2015167008.tif 000006
【００５５】
このように値Ｓ（ｉ）は、ある関節ｉが距離画像と整合性のある場合にのみ１となり、その他は０になる。つまり、評価値ｆ（ａ）は、距離画像との整合性および人体との整合性のとれた関節位置候補のときのみ尤度を加算する形になっている。なお、評価値はこれだけに限らず、式（３）に示したようにさらに角度による判定を加えてもよい。この場合、評価値ｆ（ａ）は、以下の式（５）により算出される。
【００５６】
【数５】
2015167008.tif 000007
【００５７】
また、距離画像との整合性については、図６で示したような画像平面方向のみのずれだけでなく、奥行き方向についてのずれも含むようにする。距離画像ではノイズ等の影響を除くと、深度値より小さい（手前）に関節位置が存在することはあり得ない。このことも人体領域の評価に利用する。つまり人体領域Ｓは２次元の画像平面だけではなく、３次元も含むものとする。
【００５８】
以上のように本実施形態によれば、多関節物体として整合性がとれた姿勢であることに加え、入力画像に対しても整合性のとれた姿勢を得ることが可能となる。
【００５９】
（第３の実施形態）
本実施形態では、遮蔽が生じている場合を考慮して関節位置を推定する方法について説明する。本実施形態では、整合性を評価する際に、関節位置候補のすべての組み合わせに加えて、ある関節が遮蔽されている場合の組み合わせを追加して評価する。
【００６０】
本実施形態では、第１の実施形態の例でさらに遮蔽のある場合を考慮して整合性を評価する例について説明する。つまり、距離撮像装置から距離画像を取得し、写っている人体の関節位置候補を推定する。そして、遮蔽も考慮して人体としてあり得る関節位置配置であるかについて整合性を評価して、最終的な姿勢を推定する。以下、第１の実施形態と異なる箇所について説明する。
【００６１】
＜構成と概要＞
基本的な構成は図１と同様であるため、重複する部分については説明を省略する。本実施形態では、整合性評価部１０３は、さらに、ある関節が遮蔽していると仮定した場合を候補に追加する。すなわち、遮蔽された関節位置候補が加わる。この整合性評価の処理を繰り返し、かつ関節位置候補の尤度も考慮し、最もよい関節位置の組み合わせ、すなわち姿勢を決定する。
【００６２】
＜整合性評価＞
以下、第１の実施形態と異なる点について説明する。ある関節Ｊiに対して遮蔽されていないｎi個の関節位置候補があり、遮蔽状態も関節位置候補の１つと考えると、（ｎi＋１）個の関節位置候補があることになる。関節の数をＮ個とすると、関節位置候補の組み合わせの数は全部で、（ｎ1＋１）×（ｎ2＋１）×・・・×（ｎN＋１）組（以下、Π（ｎi＋１）とする）となる。第１の実施形態と同様、関節ごとで候補数は違ってもよいし、同じでもよい。
【００６３】
このΠ（ｎi＋１）組の組み合わせに対し、遮蔽候補も含んで関節位置としてあり得るか否かを評価する。このとき、遮蔽状態の関節位置候補の尤度は０とし、座標位置はＮａＮとする。なお、別途遮蔽フラグを持つようにしてもよく、遮蔽時の取り扱いはこの値に限定しない。
【００６４】
ここで、評価する対象が前述の式（１）を満たす場合は、以下の式（６）中の値ｗijを１とし、それ以外の場合は式（６）中の値ｗijを０とする。このとき、関節ｉおよび関節ｊはどちらも遮蔽されていないものを使用することとする。ある関節ｉの判定に利用する他の関節の数をｎ（ｉ）とすると、評価値ｆ（ａ）は、以下の式（６）により算出される。
【００６５】
【数６】
2015167008.tif 000008
【００６６】
ただし、このときの関節数ｎ（ｉ）は、遮蔽状態の関節が除外された数とする。また、値ｏiは遮蔽の際の重みであり、遮蔽時以外は０とする。つまり、この例では値ｌaiもしくは値ｏiのどちらかが０でない数をとることとなる。値ｏiの項がない場合は、遮蔽されている場合と関節位置候補がない場合とで同じ評価値になってしまうが、値ｏiの項があることにより、人体の配置として整合性のとれていない関節位置候補よりも、遮蔽状態とすることを優先する効果がある。
【００６７】
＜整合性評価の高速化＞
第１の実施形態と同様に、遮蔽を考慮した場合でも、ある関節候補を起点とし、隣接する関節位置に対して順次整合性を評価して決定していくことにより処理を高速化することができる。この際に、評価値の低い候補については以降の処理を打ち切ることにより処理を高速化できる。ただし、遮蔽されている状態を関節位置候補として追加して考える必要がある。
【００６８】
まず、学習時に安定した精度が得られた起点となる関節を決める。例えば頭部の関節Ｊ1における１つの関節位置候補の３次元位置（ｘ１＿１、ｙ１＿１、ｚ１＿１）を正しい位置と仮定し、隣接する首の関節Ｊ2における１つの関節位置候補の３次元位置の整合性を評価する。遮蔽のない状態での評価方法は第１の実施形態と同様である。
【００６９】
ここで、例えば図４に示す例では首の関節位置候補は４つであるが、これに５つ目の候補として遮蔽状態を追加する。頭部の関節位置候補に対し、首の関節Ｊ2は遮蔽状態として、さらに隣接する関節の評価を続ける。この際、遮蔽していない確定している関節である頭部との関係で整合性を評価する。つまり、遮蔽状態を含む関節位置候補は残しつつ、次の関節を選出して評価していくことになる。遮蔽を考慮しなかった場合に比べて関節位置候補の組み合わせの数は増えることとなるが、全組み合わせについて処理する場合よりも高速に処理することが可能となる。
【００７０】
以上のように本実施形態によれば、遮蔽が起きている場合においても、より多関節物体として整合性のとれた姿勢を得ることが可能となる。
【００７１】
（第４の実施形態）
本実施形態では、整合性を評価する指標として、入力した距離画像に矛盾が無いか否かの妥当性をさらに追加する。ここで、本実施形態では、第２の実施形態で行った関節位置候補と距離画像との整合性を評価するだけでなく、取得される人体モデルと入力された距離画像との整合性を評価する。
【００７２】
＜構成と概要＞
基本的な構成は図１と同様であるため、重複する部分については説明を省略する。本実施形態では、整合性評価部１０３は距離画像入力部１０１が抽出した距離画像の人体領域に対して、関節位置候補から取得される人体モデルが矛盾しているか否か（距離画像との整合性）について評価する。
【００７３】
＜整合性評価＞
人体との整合性を評価する方法は第１の実施形態と同様であるため、説明は省略する。推定した関節位置が真値とすると、その関節位置から得られる人体モデルは、距離画像中の人体領域と一致するはずである。そこで、関節位置から得られる人体モデルと、入力された距離画像中の人体領域との一致度を評価することによって、整合性を評価する。
【００７４】
本実施形態では、関節位置候補の配置から得られる人体モデルと入力された距離画像との整合性を得る。以下、整合性を評価する関節位置候補の組み合わせをａとし、ａに含まれる関節の個数をｎと表記し、ａから表現される人体モデルを構成する部分モデルの個数をｍと表記することにする。ここで、部分モデルとは、人体モデルをさらに部分ごとに分解して得られるモデルのことである。例えば、上半身、腕、上腕など、その粒度はどのようなものであってもよい。整合性を評価する関節の組み合わせａとしては、人体を構成するすべての関節である必要はなく、一部の関節でもよい。その例を図７に示す。図７においては、点群Ｈ1が距離画像中の人体領域を表しており、整合性を評価する関節位置候補の組み合わせａを構成する関節Ｊ1〜Ｊnと、関節の配置から取得される部分モデルＬ1〜Ｌmとが表現されている。
【００７５】
本実施形態では、人体領域と推定された関節の組み合わせａから表現される人体モデルとの整合性を評価するために、人体領域および組み合わせａに含まれる関節を二次元平面上に射影する。ここで、射影の代替手段として人体領域および各関節の奥行き値であるＺ座標軸を無視したものを用いることもできる。以降、人体領域および各関節の奥行き値を単純に無視した図７のような場合を説明する。各関節の位置および尤度は図４で表記されたものと同様とするが、本実施形態では平面に射影されたものとしてＺ軸座標は無視される。
【００７６】
ここで、図７の部分モデルＬ1〜Ｌmは直線を用いて繋がりのある関節間を結んだいわゆるスケルトン（骨格）モデルであるが、それ以外にも人体モデルの部分モデルとして任意のモデルを用いることができる。例として、楕円や台形、その他の多角形などの領域パーツとして置き換えてもよい。また、より詳細な人体モデルを用いるために、実際の距離データをメッシュ化するなどして人体モデルを構成してもよい。以降は、関節の推定結果および人体領域を平面上に投影した場合に、直線からなる人体の部分モデルを用いるものとして具体例を示す。このとき、直線ではなく矩形を用いてもよいが、不整合性を定量化する目的のため、基本的には関節の推定結果が真値をとった場合に、少なくとも人体領域を超えない幅の大きさの矩形を使用する。
【００７７】
図７に示す例では、部分モデルＬ1、Ｌ2の位置が距離画像中の人体領域から外れていることが分かる。これは、入力された距離画像中の人体領域と推定された関節により得られる人体モデルが不整合を起こしていると考えられる。そこで、部分モデルが距離画像の人体領域外に存在する量を定量化するために、以下の式（７）により不整合スコアｐout（・）を算出する。
【００７８】
【数７】
2015167008.tif 000009
【００７９】
ここで、∪は和集合を表し、部分モデルの存在する領域の和をとっている。同様に∩も積集合を表し、ｓ（・）は渡された領域の画素数を返す関数を表している。ここで画素数は、距離画像中の人体領域に対して人体モデルを重畳した結果として得られる。なお、計算機の処理を軽減するために、関数ｓ（・）で指定される領域の画素数をすべて計算するのではなく、メッシュ化した一部の領域に関して画素数を算出するなど、サンプリングを施してもよい。これによって、距離画像中の画素数を計算するためのデータ転送量を軽減することができ、計算機の処理時間の高速化に繋がると言える。また、距離画像中の人体領域は人体が奥行き方向に存在するほど小さく撮像されるため、奥行き情報に対して関数ｓ（・）によって得られる画素数が変動しやすいという問題がある。そこで、奥行き情報に関してより正確な面積を算出するために、関数ｓ（・）の出力に対して奥行き値を用いて重みをつけることも、正規化を施すこともできる。
【００８０】
式（７）により、関節の組み合わせａから得られる部分モデルが距離画像の人体領域の外に存在する不整合な量を算出することができるが、人体領域の内に存在する不整合な量を考慮する必要がある場合がある。例えば、図８に示す人体モデル８０１は、図７と同様に距離画像中の人体領域Ｈ2に対しての関節位置候補から得られる組み合わせａの関節を示したものであり、部分モデルＬ'1〜Ｌ'mが平面上に表現されている。ここで、Ｌ'1、Ｌ'2は足の部分モデルであるが、本来存在すべき足の位置ではなく、もう片側の足の位置に誤って位置している。
【００８１】
図８に示す下半身の人体モデル８０２は、人体モデル８０１のうちの下半身を、より分かりやすいように拡大表示したものである。図８の下半身の人体モデル８０２では、片側の足の位置の推定が誤った結果、人体領域Ｈ2のうち中央下部の足部分に本来存在すべき部分モデルが存在していないことが分かる。
【００８２】
人体領域の内に存在する部分モデルとの不整合な量は、式（７）では定量化できていないため、このような場合は例として以下の式（８）を用いて不整合な量を調整する。
【００８３】
【数８】
2015167008.tif 000010
【００８４】
式（８）によって、人体領域に対して人体領域中に存在する部分モデルの画素数を引くことにより、残りの人体領域の画素数を得ることができ、人体領域と部分モデルとが整合していないスコアを定量化することができる。このとき、関数ｓ（・）で求める画素数の代替として、図８の人体モデル８０３に示すように、計算量を削減するために距離画像を分割したブロック数を用いてもよい。
【００８５】
ここで、ブロックｂ1〜ｂkは距離画像中の人体領域Ｈ2を一定の間隔で分割したブロックを示し、ｋはブロックの総数とする。このときブロックを分割する間隔はどのようなものでもよい。このように関数ｓ（・）をブロック数によって求める場合は、各ブロックにおいて関数ｓ（・）の引数・が領域中に存在するブロックがいくつ存在するかを算出する。
【００８６】
例えば、関数ｓ（Ｈ2）が与えられたとき、ブロックｂ1中には距離画像が存在していないため、カウントはしない。一方、ブロックｂ2中には距離画像が存在するため、１をカウントする。このような処理をブロックｂ1〜ｂkについて繰り返し、人体領域Ｈ2が存在するブロック数をすべて数え上げた数を関数ｓ（Ｈ2）として算出することができる。関数ｓ（・）の引数・が部分モデルであった場合も同様に計算を行い、各ブロックに部分モデルが存在するか否かを判定することにより、ブロック数を数え上げることができる。
【００８７】
なお、ブロックの数で画素数の代替とした例について説明したが、ブロックの面積を用いてもよい。また、ブロックを分割する方法として、例として挙げたように事前に分割を行うのではなく、関数ｓ（・）の引数・が存在するブロックに対してのみ二分割を一定数繰り返すことにより計算量を削減することもできる。
【００８８】
式（７）及び式（８）は、それぞれ距離画像中の人体領域の内外に関して人体領域と部分モデルとの不整合なスコアを算出することができるが、全体として人体領域と部分モデルとの整合性を得たい場合がある。そこで、二つの不整合なスコアを考慮するために、例として以下の式（９）を用いる。ここで、ｗoutはｐout（・）に対する重み定数であり、ｗinはｐin（・）に対する重み定数である。
【００８９】
【数９】
2015167008.tif 000011
【００９０】
式（９）により、関節の組み合わせａから得られる部分モデルと距離画像中の人体領域との不整合な量を算出することができるが、このままでは関節の組み合わせａの確からしさを考慮されていない。そこで、さらに以下の式（１０）により、距離画像との整合性を考慮した組み合わせａの確からしさｆを算出する。
【００９１】
【数１０】
2015167008.tif 000012
【００９２】
ここで、ｃは関節組み合わせａに含まれるすべての関節の尤度の総和である。この結果ｆ（・）は、尤度の合計値ｃに対して不整合スコアｐ（・）を引いた値を出力し、推定された関節位置と人体領域との整合性を示す整合性評価値となる。不整合スコアｐ（・）が０であれば推定したモデルが人体領域と一致し、逆に不整合スコアｐ（・）が大きいほど人体領域と整合していないこととなり、尤度の合計値ｃから引かれる値が大きくなる。
【００９３】
なお、深度情報に関しても推定結果と人体領域との整合性を評価したい場合は、二次元平面に投影せずに三次元空間上で整合性を判定することもできる。その際は、人体領域の深度値が、平面上同じ位置に推定された関節の人体モデルの深度値に対して大きく異なる場合、不整合を起こしているとみなし、人体モデルの不整合な領域に関して定量化することができる。定量化の具体的方法としては、例として人体モデルが深度値に対して手前側に存在している場合、その距離の総和を得ることが挙げられる。
【００９４】
本実施形態で用いる距離画像中の人体領域が正確に抽出できず、人体領域の輪郭が本来の形状に対して歪む場合などにおいては、人体領域と人体モデルがしばしば一致しない現象が起きる。その結果、通常よりも整合性の評価が低くなる場合がある。そこで、ｆ（ａ）が一定の閾値より低い場合は不整合ではないと判定することによって、人体領域の歪みに対しても比較的ロバストに整合性評価値を算出することができる。
【００９５】
本実施形態では、関節位置候補の組み合わせに対する整合性評価関数ｆ（・）を用いて、さらに複数の関節位置候補組み合わせの評価ランク付けを行う。
【００９６】
まず、関節位置候補の組み合わせ｛ａ1，・・・，ａq｝の集合をＡとする。ここでｑは集合Ａの要素数である。集合Ａの要素それぞれに対して式（１０）を用いて整合性を評価したものを集合Ａf＝｛ｆ（ａ1），・・・，ｆ（ａq）｝とおく。集合Ａfの要素を降順に並び変えることにより、関節位置候補組み合わせの集合Ａの要素に関して評価ランク付けを行うことができる。
【００９７】
例えば、ａ1として図７に示す推定された関節の組み合わせが与えられ、ａ2として図９に示す関節の組み合わせが与えられたとする。このとき、組み合わせａ1は部分モデルＬ1、Ｌ2の位置が距離画像中の人体領域から外れている一方で、組み合わせａ2はそれらに相当する部分モデルＬ"1、Ｌ"2の位置が距離画像中の人体領域から外れておらず、すべての部分モデルが人体領域の中にある。この結果、ｆ（ａ1）よりもｆ（ａ2）の方が大きくなり、組み合わせａ1よりも組み合わせａ2の方が高く評価ランクが付けられることとなる。
【００９８】
＜整合性評価の高速化＞
第１の実施形態と同様に、上記の例では、整合性評価を必要とする多数の関節の組み合わせａに対して整合性評価値を算出するので、処理に時間を要する場合がある。そこで、ある関節位置候補を起点とし、繋がりのある関節位置候補に対して順次整合性を評価して関節位置候補の組み合わせを決定していく方法をとることができる。この際、繋がりのある関節位置候補の整合性評価値が低い場合、その関節位置候補についてはそれ以降の連結する関節で整合性評価値を算出することを打ち切り、関節位置候補の組み合わせにその関節位置候補を含まないようにする。これにより、整合性評価を高速化できる。この処理は第１の実施形態における整合性評価の高速化と同様の内容であるため、説明を省略する。また、この処理により複数の関節位置候補の組み合わせが得られた場合は、上記の評価ランク付けをさらに行うことができる。
【００９９】
以上のように本実施形態によって、多関節物体として整合性がとれた姿勢であることに加え、入力画像に対しても整合性のとれた姿勢を得ることが可能となる。
【０１００】
（第５の実施形態）
本実施形態では整合性評価の指標に、人体として物理的に矛盾が無いか否かの妥当性を追加する。
【０１０１】
＜構成と概要＞
基本的な構成は図１と同様であるため、重複する部分については説明を省略する。本実施形態では、整合性評価部１０３は関節位置候補算出部１０２が算出した関節位置候補の位置が重なっていることにより、物理的に矛盾しているか否かについて整合性を評価する。ここで、整合性評価の際には人体のパーツの物理的大きさを考慮し、推定された人体の関節が物理的にありえないような重なりを持っているかどうかを判定する。
【０１０２】
＜整合性評価＞
以下、関節位置候補が物理的にありえないような重なりを持っているか否かを評価する整合性評価における、本実施形態の詳細を説明する。
【０１０３】
本実施形態において、整合性を評価する関節の組み合わせをａとし、組み合わせａに含まれる関節の個数をｎと表記することにする。なお、整合性を評価する関節の組み合わせａとしては、人体を構成するすべての関節である必要はなく、一部の関節でもよい。図７に示す例では、整合性を評価する関節の組み合わせａの関節Ｊ1〜Ｊnが表現されている。各関節の位置および尤度は図４で表記されたものと同様とする。
【０１０４】
まず、関節の組み合わせａにおける関節Ｊ1〜Ｊnのうち、任意の二関節が重なっているかどうかを、例えば以下の式（１１）を用いて判定する。
【０１０５】
【数１１】
2015167008.tif 000013
【０１０６】
ここで、関数ｇ（ｉ，ｊ）は、組み合わせａに含まれる任意の関節Ｊi、Ｊjが重なっているか否かを判定するために、二つの関節の距離を算出している。距離関数として、二つの関節の三次元ユークリッド距離上の距離を求める。なお、｜・｜は三次元空間上のノルムを算出する関数を示し、ｄは重なっていると判定される距離の上限を表す任意の閾値である。また、式（１１）の上段のｉｆは関数｜・｜とｄによる大小関係に対する条件式であり、ｉｆより右側に書かれた条件式を満たす場合に二つの関節が重複していると判定し、関数ｇ（ｉ，ｊ）は１の値をとる。一方、そうでなければ下段のｅｌｓｅの場合として０の値をとる。
【０１０７】
ここで求める距離尺度は各関節間の距離を示すものであれば何であってもよく、三次元空間上の距離でもよいし、二次元平面に射影した上での距離でもよいし、その他の何らかの距離関数を用いてもよい。その場合、関数｜・｜を任意の距離関数に変更すればよい。また、閾値ｄは距離を算出する二つの関節に対して可変に設定することも可能である。関数ｇ（ｉ，ｊ）の返す値は、１または０ではなく実数として表現することもできる。例として、二つの関節Ｊi，Ｊjの距離値をそのまま算出してもよい。このような式（１１）によって、二つの関節の距離値が重なっていると判定される基準である閾値よりも低いか否かを判定し、低い場合には関節位置同士が重なっているとして不整合スコアを得ることができる。
【０１０８】
次に、関節の組み合わせａに対する不整合スコアを算出する。関数ｇ（ｉ，ｊ）によって任意の二関節の重なりに関する不整合スコアを算出することができるため、関節の組み合わせａに含まれる関節のうち、すべての組の不整合度の総和を、以下の式（１２）を用いて得ることができる。
【０１０９】
【数１２】
2015167008.tif 000014
【０１１０】
ここで関数ｐ（ａ）は、ａに含まれる関節のうちすべての二個組の不整合性を関数ｇ（ｉ，ｊ）によって評価し、その総和をとったものである。さらに、関節の組み合わせａの確からしさも考慮しつつ整合性評価値を算出するために、第４の実施形態と同様に式（１０）を用いる。
【０１１１】
ここで、ｃは整合性を評価する関節の組み合わせａに含まれるすべての関節の尤度の総和とし、不整合スコアｐ（ａ）をｃから引いた値をとる。すなわち、式（１１）の上段の条件式を満たすｉ，ｊの組の数だけｃから引かれ、式（１０）によって出力される。これにより、関節の組み合わせａの整合性評価値を得ることができる。
【０１１２】
これまでは関節位置候補から直接算出される距離を用いていたが、より詳細な人体モデルを定義して距離を求めてもよい。例として、図７の人体の部分モデルＬ1〜Ｌmで示すように、人体モデルを表現するために繋がりのある関節の間を直線で繋げることができる。ここで、ｍは関節の組み合わせａに含まれる関節が持つ、関節間の繋がりの数を示す。
【０１１３】
関節位置候補だけを用いた場合、人体が本来持つ身体の部分的なパーツを考慮することができないが、以上のような部分モデルを用いることでより現実の人体に即した整合性を求めることができる。例として、部分モデルを直線で表現することによって、例えば直線間の距離の平均やミニマムを求めて部分モデル間の距離を算出できる。その際、全体の直線のうちどの程度の割合が重なっているかを求めることにより、よりロバストに評価値を算出することができる。当然ながら部分モデルとしては関節間を繋いだ直線に限る必要はなく、円筒モデルや詳細な人体表面モデルなど、より表現力の高いモデルを必要に応じて用い、部分モデル間の重なりを評価することができる。
【０１１４】
複数の関節位置候補の組み合わせに対して整合性評価値のランク付けを行う際には、第４の実施形態と同様に、関節位置候補の組み合わせの集合Ａを決定し、式（１０）、式（１１）、及び式（１２）を用いて集合Ａfを求める。
【０１１５】
なお、式（１０）の第二項の符号をマイナスからプラスに反転させ、式（１１）の上段のｉｆ文の大小関係を＞に反転することにより、関節が重ならないという整合性が高い場合に整合性評価関数ｆ（・）を増加させることもできる。しかし結果として整合性評価関数ｆ（・）のとる値の相対的な大きさが異なるだけで、集合Ａfのランク付けには影響がないため、どちらを用いてもよい。
【０１１６】
＜整合性評価の高速化＞
第１の実施形態と同様に、上記の例では、整合性評価を必要とする多数の関節の組み合わせａに対して整合性評価値を算出するので、処理に時間を要する場合がある。そこで、ある関節位置候補を起点とし、繋がりのある関節位置候補に対して順次整合性を評価して関節位置候補の組み合わせを決定していく方法をとることができる。この際、繋がりのある関節位置候補の整合性評価値が低い場合、その関節位置候補についてはそれ以降の連結する関節で整合性評価値を算出することを打ち切り、関節位置候補の組み合わせにその関節位置候補を含まないようにする。これにより、整合性評価を高速化できる。この処理は第１の実施形態における整合性評価の高速化と同様の内容であるため、説明を省略する。また、この処理により複数の関節位置候補の組み合わせが得られた場合は、上記の評価ランク付けをさらに行うことができる。
【０１１７】
以上のように本実施形態によって、多関節物体として物理的に整合性がとれた姿勢を得ることが可能となる。
【０１１８】
（第６の実施形態）
本実施形態では整合性評価において、複数の整合性評価値を同時に導入した最終的な評価値を求める。
【０１１９】
＜構成と概要＞
基本的な構成は図１と同様であるため、重複する部分については説明を省略する。本実施形態では、整合性評価部１０３において算出された複数の評価値を用いて整合性評価を行う。複数算出された評価値を同時に用いて整合性評価を行うことにより、より正確に整合性評価を行うことができる。
【０１２０】
＜整合性評価＞
以下、第１の実施形態と異なる点について説明する。
整合性評価では、例えば式（１０）により、関節位置候補の組み合わせについて整合性評価値を算出することができる。本実施形態では、式（９）および式（１２）を用いて不整合スコアを複数同時に導入する。より具体的には、式（９）により距離画像中の人体領域と推定された関節位置から求められる人体モデルとの不整合性を定量化し、式（１２）により推定された関節位置が重なっているか否かをみる物理的な不整合性を定量化することができる。本実施形態ではこれら複数の評価を同時に行う。
【０１２１】
関節位置候補の組み合わせをａとしたとき、例えば以下の式（１３）を用いて複数の整合性評価を導入した最終な評価値を求める。以降、この最終な評価値を最終評価値と記す。
【０１２２】
【数１３】
2015167008.tif 000015
【０１２３】
ここで、ｃは関節位置候補の組み合わせａに含まれる関節の尤度の総和であり、Ｉは最終評価値を算出するために用いる整合性評価の種類である。また、ｗiは整合性評価ｉの重み定数であり、ｐi（・）は整合性評価ｉの評価値である。評価値ｐi（・）は、例えば式（９）および式（１２）をそのまま用いてもよいし、その他の新たな整合性評価関数を用いてもよい。
【０１２４】
式（１３）の第二項では、それぞれの整合性評価に対して重み付けを行った値の総和をとっており、重み定数ｗiの値は整数や実数など、どのような値を設定してもよい。例えば、Ｉの中での整合性評価ｉの重要性に比例した設定を行い、非負の実数を設定するとよい。或いは、boosting学習やクロスバリデーション等で決めてもよい。ただし、例として関節位置候補の組み合わせａの不整合性が高い場合に評価値ｐi（ａ）がマイナスの符号をとるような場合は、重み定数ｗiが非負であると最終評価値ｆ（ａ）が増加してしまうことになる。そのため、重み定数ｗiの符号は評価値ｐi（・）の符号に合わせて設定する必要がある。なお、式（１３）では、第二項が第一項を引く式であるが、すべての項の積をとってもよい。その場合、以下の式（１４）を用いることになる。
【０１２５】
【数１４】
2015167008.tif 000016
【０１２６】
このようにすることによって、関節の尤度の総和ｃが低いときにより低い最終評価値となり、関節の尤度の総和ｃが高いときにより高い最終評価値となる。すなわち尤度の重要性をさらに増すことができる。以上のように、最終評価値を算出する式の形は、目的に応じて定めることができる。
【０１２７】
複数の関節位置候補の組み合わせに対して本実施形態による最終評価値のランク付けを行う際には、第４の実施形態と同様に、関節位置候補の組み合わせの集合Ａを決定し、式（１３）を用いて集合Ａfを求める。
【０１２８】
＜整合性評価の高速化＞
第１の実施形態と同様に、上記の例では、整合性評価を必要とする多数の関節の組み合わせａに対して整合性評価値を算出するので、処理に時間を要する場合がある。そこで、ある関節位置候補を起点とし、繋がりのある関節位置候補に対して順次整合性を評価して関節位置候補の組み合わせを決定していく方法をとることができる。この際、繋がりのある関節位置候補の整合性評価値が低い場合、その関節位置候補についてはそれ以降の連結する関節で整合性評価値を算出することを打ち切り、関節位置候補の組み合わせにその関節位置候補を含まないようにする。これにより、整合性評価を高速化できる。この処理は第１の実施形態における整合性評価の高速化と同様の内容であるため、説明を省略する。また、この処理により複数の関節位置候補の組み合わせが得られた場合は、上記の評価ランク付けをさらに行うことができる。
【０１２９】
以上のように本実施形態によって、多関節物体として複数の整合性がとれた姿勢を得ることが可能となる。
【０１３０】
（第７の実施形態）
本実施形態では、整合性評価部１０３において、さらに複数の関節間距離の比率を導入して整合性の評価値を算出する例について説明する。
【０１３１】
＜構成と概要＞
基本的な構成は図１と同様であるため、重複する部分については説明を省略する。本実施形態では、整合性評価部１０３は、これまでの整合性評価に加えて、関節位置候補算出部１０２で得られた各関節位置候補に対して、関節間距離の比率を用いて整合性を評価する。
【０１３２】
ここで、関節間距離の比率とは、例えば図３に示す人体モデル３１１において、関節Ｊ11と関節Ｊ12との間の長さと関節Ｊ12と関節Ｊ13との間の長さとの比率（前腕と上腕とにおける関節間距離の比率）が挙げられる。それ以外には、例えば関節Ｊ5と関節Ｊ6との間の距離と関節Ｊ6と関節Ｊ7との間の距離との比率（脚における大腿部と下腿部とにおける関節間距離の比率）などが挙げられる。また、評価するために用いる関節間距離は、腕や脚における関節間距離に限定せず、以下のような例を用いてもよい。例えば、左右の上腕の長さの比率（関節Ｊ11と関節Ｊ12との間の距離と関節Ｊ14と関節Ｊ15との間の距離との比率）が挙げられる。それ以外には、例えば腕の長さ（関節Ｊ11と関節Ｊ12との間の距離と関節Ｊ12と関節Ｊ13との間の距離との和）と胴体の長さ（関節Ｊ2と関節Ｊ3との間の距離と関節Ｊ3と関節Ｊ4との間の距離との和）との比率が挙げられる。
【０１３３】
また、人体モデル記憶部１０４には、整合性評価部１０３で関節間距離の比率を評価するために、あらかじめ学習により人体モデルの関節間距離の比率についての情報が関節位置許容範囲情報として格納されている。これにより、指定した関節間距離の比率を参照できるようになっている。
【０１３４】
次に、個々の処理について詳細に説明する。前述した実施形態と重複する部分についての説明は省略する。
【０１３５】
＜人体モデルの学習または設定＞
まず、整合性評価部１０３が人体としての整合性を評価する際に必要となる人体モデルについて説明する。人体モデルを作成する際には、前述した実施形態における人体モデルの学習（関節間距離及び関節間角度の学習）に加えて本実施形態における人体モデルの関節間距離の比率の学習を行う。なお、これらの学習を独立して行ってもよい。
【０１３６】
本実施形態における関節間距離の比率の関係は、図１０に示すように、例えばテーブル１００１において管理される。図１０において、比率ｒ1は、関節Ｊ11と関節Ｊ12との間の距離と関節Ｊ12と関節Ｊ13との間の距離との比率を表しており、右腕の前腕と上腕とにおける長さの比率を表している。また、比率ｒ3は、関節Ｊ5と関節Ｊ6との間の距離と関節Ｊ6と関節Ｊ7との間の距離との比率を表しており、脚の大腿部と下腿部とにおける長さの比率を表している。
【０１３７】
また、テーブル１００１に示すように、左右の腕の長さの比率や、左右の脚の長さの比率、腕と胴体の長さの比率、脚と胴体の長さの比率などを学習してもよく、本実施形態においてはテーブル１００１に示す関節間距離の比率に限定されない。このように本実施形態において、人体モデルを学習（または設定）する際には、関節間距離の比率を関節位置許容範囲情報として取得する。
【０１３８】
＜整合性評価＞
次に、整合性評価部１０３により、各姿勢候補の関節位置候補とその尤度とを基に、人体モデルとの整合性を評価して最終的な関節位置を決定して姿勢を推定する方法について説明する。なお、本実施形態においては、前述した実施形態と異なる点について説明する。
【０１３９】
図１１には、人物領域を抽出した距離画像１１０１から関節位置候補算出部１０２により算出された関節位置候補を組み合わせて作成される姿勢候補１１０２、１１０３を示している。整合性の評価では、関節間距離の比率についてテーブル１００１に示すように、関節間距離の比率または複数の関節間距離の和の比率を用いて整合性の評価値を算出する。このとき、整合性評価部１０３は、関節位置候補を組み合わせて姿勢候補を作成しておく。
【０１４０】
関節間距離の比率を用いて整合性を評価する際に、まず、テーブル１００１に示す関節間距離の比率の算出式の番号が１である場合には、以下の式（１５）を用いて関節間距離の比率を算出する。そして、以下の式（１６）により関節間距離の比率を評価する。
【０１４１】
【数１５】
2015167008.tif 000017
【０１４２】
【数１６】
2015167008.tif 000018
【０１４３】
式（１５）は、該当する関節Ｊの三次元位置座標（ｘ、ｙ、ｚ）を用いてユークリッド距離を算出することを意味し、ｉは姿勢候補の番号である。また、ｊはテーブル１００１に示す関節間距離の比率の算出式の番号を表しており、ｒfは関節間距離の比率の一定範囲を表している。ここで一定範囲ｒfは、あらかじめ学習した人体モデルの関節間距離の比率に関する最大値、最小値、平均値、標準偏差等を基に決定される。
【０１４４】
例えば、姿勢候補１１０２（以下、ｉ＝１とする）に対して、式（１５）により関節Ｊ1,11と関節Ｊ1,12との距離と関節Ｊ1,12と関節Ｊ1,13との距離との比率ｒ1,1を算出する。そして、姿勢候補１１０３（以下、ｉ＝２とする）に対しても同様に、関節Ｊ2,11と関節Ｊ2,12との距離と関節Ｊ2,12と関節Ｊ2,13との距離との比率ｒ2,1を算出する。
【０１４５】
式（１５）により算出された関節間距離の比率ｒi,1が、一定範囲ｒfに基づいた範囲を満たす場合は、選択した姿勢候補に対して式（１６）中のｈ（ｉ，ｊ）の値を１とし、そうでない場合はｈ（ｉ、ｊ）の値を０とする。例えば、姿勢候補１１０２、１１０３の関節間距離の比率ｒi,1を評価した結果、姿勢候補１１０２は関節間距離の比率ｒ1,1の値が前述した範囲内でない場合には、ｈ（１，１）＝０となる。また、姿勢候補１１０３の関節間距離の比率ｒ2,1が前述した範囲内である場合には、ｈ（２，１）＝１となる。
【０１４６】
以上のような関節間距離の比率の評価方法により、テーブル１００１に記述されている全ての関節間距離の比率に対して評価し、以下の式（１７）により評価値ｆ（ａ）を算出する。
【０１４７】
【数１７】
2015167008.tif 000019
【０１４８】
式（１７）に示すｃiは姿勢候補ｉが持つスコアであり、そのスコアｃiに関節間距離の比率を評価した結果を掛け合わせている。この式（１７）により、関節間距離の比率の条件をすべて満たす姿勢候補の評価値は維持され、関節間距離の比率の条件が１つでも満たされない姿勢候補の評価値は０となる。この評価を全ての姿勢候補に適用し、最終的に最も高い評価値を持つ姿勢候補が最終的な姿勢として選択される。
【０１４９】
また、関節間距離の比率を評価する際に、評価値を算出する方法を変更してもよい。その場合、例えば式（１５）により関節間距離の比率ｒi,1を算出し、以下の式（１８）及び式（１９）を用いて評価値ｆ（ａ）を算出する。
【０１５０】
【数１８】
2015167008.tif 000020
【０１５１】
【数１９】
2015167008.tif 000021
【０１５２】
ここで、式（１９）のｗjは各関節間距離の比率の評価式に付与する重みを表しており、あらかじめ学習によって決定してもよい。これにより、算出された各姿勢候補の評価値ｆ（ａ）が最も高い姿勢候補を最終的な姿勢として選択してもよい。
【０１５３】
＜整合性評価の高速化＞
前述した例では、全ての姿勢候補において、全ての関節間距離の比率を算出して評価値を求めているので、処理に多くの時間を要する。そこで、姿勢候補に対して各関節間距離の比率を順次評価して決定してもよい。この際、式（１６）でｈ（ｉ，ｊ）の値が０となった場合は、評価値ｆ（ａ）は０となるため、その姿勢候補については以降の処理を打ち切ることにより処理を高速化できる。
【０１５４】
まず、図１０に示す関節間距離の比率の評価式の順番を設定する。この順番の設定は学習時に求めた関節間距離の比率に関して最大値と最小値との幅が小さいもの、または平均値に対する標準偏差が小さいものから評価するように順番を設定する。
【０１５５】
次に、設定した順番で姿勢候補ｉに対して関節間距離の比率ｒi,jを算出し、式（１６）でｈ（ｉ，ｊ）の値が０となった場合に、姿勢候補ｉは関節間距離の比率がその人体モデルと合っていないと判断する。この場合、評価値ｆ（ａ）に０を代入して以後の処理を打ち切ることができる。これにより、学習データにある様々な人体モデルの中で、変動が少ない関節間距離の比率から評価して、変動が大きい姿勢候補は評価処理を打ち切ることにより、姿勢候補の評価を高速に行うことができる。
【０１５６】
（第８の実施形態）
本実施形態では、整合性の評価において得られた複数の姿勢推定結果からその個人に適した関節許容範囲情報を推定し、推定した関節位置許容範囲情報を用いて整合性を評価する方法について説明する。
【０１５７】
＜構成と概要＞
図１２は、本実施形態に係る姿勢推定装置１２００の構成例を示すブロック図である。また、図１３は、本実施形態において、個人の関節位置許容範囲情報を推定する処理手順の一例を示すフローチャートである。
図１２に示す姿勢推定装置１２００は、距離画像入力部１０１、関節位置候補算出部１０２、整合性評価部１２０３、人体モデル記憶部１０４、関節位置記憶部１２０５、および人体モデル推定部１２０６を備えている。なお、距離画像入力部１０１、関節位置候補算出部１０２、および人体モデル記憶部１０４は図１と同様であるため、説明は省略する。また、図１３のＳ１３０１〜Ｓ１３０３の処理についても、それぞれ図２のＳ２０１〜Ｓ２０３と同様であるため、説明は省略する。
【０１５８】
整合性評価部１２０３は、関節位置候補算出部１０２によって得られた関節位置候補に対して、人体モデル記憶部１０４または人体モデル推定部１２０６とから取得した人体モデルを用いて、関節位置候補を評価し、最終的な姿勢を推定する。また、整合性評価部１２０３は、後述する図１３のＳ１３０４及びＳ１３０５の処理を実行する。
【０１５９】
関節位置記憶部１２０５は、整合性評価部１２０３によって出力された人体の姿勢を含む関節位置情報を記憶する構成であり、後述する図１３のＳ１３０６の処理を実行する。また、記憶した関節位置情報は人体モデル推定部１２０６へ出力される。
【０１６０】
人体モデル推定部１２０６は、関節位置記憶部１２０５から出力される関節位置情報を取得し、人体モデルの関節位置許容範囲情報を推定する構成であり、例えば、後述する図１３のＳ１３０７の処理を実行する。推定する関節位置許容範囲情報としては、多関節物体モデルの関節間距離や関節間距離の比率がある。また、関節位置許容範囲情報を推定する方法として、関節位置記憶部１２０５から出力される関節位置情報に対して最小二乗法や確率的勾配降下法を適用して、関節間距離や関節間距離の比率を求める。また、本実施形態において推定する人体モデルの関節位置許容範囲情報及び関節位置許容範囲情報の推定手法はこれらに限定するものではない。
【０１６１】
＜オンラインでの人体モデルの学習＞
まず、図１３のＳ１３０７において、人体モデル推定部１２０６が、整合性評価部１２０３が人体として整合性を評価する際に必要となる人体モデルを、時系列で取得した関節位置情報を基に推定する方法について説明する。
【０１６２】
まず、関節位置記憶部１２０５に記憶されている関節位置情報を取得する。関節位置記憶部１２０５には、これまで整合性評価部１２０３によって出力された姿勢に関する関節位置情報が記憶されている。そして、関節位置記憶部１２０５から取得した関節位置情報の姿勢に対して、整合性評価部１２０３で用いる人体モデルの関節位置許容範囲情報を算出する。ここで、関節間の関係は図３に示すテーブル３１２と同様のものでもよい。また、関節間距離の比率を算出するために用いる計算式は、図１０に示すテーブル１００１を用いてもよいし、それ以外のものでもよい。
【０１６３】
次に、関節位置許容範囲情報を推定する方法について説明する。本実施形態では、関節位置記憶部１２０５に記憶されている複数の関節位置情報を学習データとし、確率的勾配降下法を用いて関節位置許容範囲情報を推定する方法について説明する。なお、関節位置許容範囲情報を推定する方法については、確率的勾配降下法に限定せず、他の方法を用いてもよい。
【０１６４】
図１４は、２つの関節間距離の関係を示す図である。図１４における白い丸印で示す座標１４０１は、関節位置記憶部１２０５に記憶されている関節位置情報における、図３の関節Ｊ11と関節Ｊ12との間の関節間距離ｄ11と、関節Ｊ12と関節Ｊ13との間の関節間距離ｄ12とからなる座標を表している。
【０１６５】
まず、関節間距離ｄ11、ｄ12に対して黒い菱形印で示す任意の座標１４０２を設定する。このとき、関節間距離の座標１４０１から１個を選択してもよいし、ランダムに設定してもよい。この設定した初期の関節間距離の任意の座標１４０２を、以下の式（２０）によって更新する。
【０１６６】
【数２０】
2015167008.tif 000022
【０１６７】
式（２０）により、学習データとする関節間距離の座標１４０１のＮ個のデータの中から任意の個数に対して関節間距離ｄjとの差分値を算出し、差分値に学習係数ηiを掛けた値との差分を取ることにより、関節間距離ｄjを更新する。この更新は、設定した収束条件（例えば∇Ｅiのノルムの値が１０-4以下になる）を満たすまで繰り返すか、収束条件を満たす前に指定した回数まで更新処理を実行した場合に終了する。この時、∇Ｅiは関節間距離ｄjと任意の選択した関節位置情報のｉ番目のデータとの差分値を算出してもよいし、差分値の二乗を算出してもよい。また、学習係数ηiは固定値でもよいし、更新回数に応じて減少するように変更してもよい。
【０１６８】
図１４の黒い四角印で示す座標１４０３は、関節間距離の座標１４０２を式（２０）により更新した結果により得られた関節間距離（ｄ11，ｄ12）の座標である。また、関節間距離の比率はｒ1＝ｄ11／ｄ12を計算することによって得られる。そして、更新によって得られた関節間距離ｄ11、ｄ12及び関節間距離の比率ｒ1を個人の関節位置許容範囲情報として、整合性評価部１２０３へ出力する。同様に、テーブル１００１に示すように、他の関節間距離及び関節間距離の比率についても学習して人体モデルの関節位置許容範囲情報を推定し、出力する。これにより、個人の体型に合わせた人体の関節位置許容範囲情報を取得することができる。
【０１６９】
＜整合性評価＞
以下、新たに追加した部分についてのみ説明する。まず、整合性評価部１２０３は、図１３のＳ１３０４において、距離画像入力部１０１から取得した距離画像と関節位置候補算出部１０２にて推定した関節位置候補とを取得する。そして、Ｓ１３０５において、人体モデル記憶部１０４に記憶された関節位置許容範囲情報を用いて人体の整合性を評価する。このとき、なお、初期の段階では、人体モデル推定部１２０６によって関節位置許容範囲情報が推定されていないため、評価方法については前述した実施形態と同様であり、最終的な姿勢を推定する。そして、Ｓ１３０６において、推定された姿勢は関節位置情報として関節位置記憶部１２０５へ出力する。この処理を繰り返し、一定の時間または指定したフレーム数の関節位置情報が関節位置記憶部１２０５に記憶された場合に、人体モデル推定部１２０６にて人体モデルの学習を行い、関節位置許容範囲情報を推定する。
【０１７０】
人体モデル推定部１２０６から関節位置許容範囲情報が取得できるようになると、整合性評価部１２０３は、人体モデル推定部１２０６から取得した関節位置許容範囲情報を用いて関節位置候補の整合性を評価する。このとき、関節位置の重複判定に用いる関節位置許容範囲情報や関節間角度については、人体モデル記憶部１０４から引き続き取得して整合性を評価する。また、人体モデル推定部１２０６から取得した関節位置許容範囲情報を用いるようにした後でも、整合性評価部１２０３から出力される関節位置情報が関節位置記憶部１２０５に記憶されるようにしてもよい。これにより、人体モデル推定部１２０６で関節位置許容範囲情報を逐次推定するようにしてもよい。
【０１７１】
また、整合性を評価する際には、人体モデル推定部１２０６において推定した関節位置許容範囲情報を用いて、関節位置の評価は式（２）を用いて評価値を算出してもよい。また、関節間距離の比率の評価については式（１６）及び式（１７）を用いて評価値を算出してもよい。この時、一定範囲ｄf、ｒfは任意の値でもよいし、学習時に使用した学習データの関節位置情報の座標１４０３の最大値、最小値、平均値、標準偏差等から求めてもよい。
【０１７２】
さらに、整合性評価部１２０３は、人体モデル推定部１２０６で推定した関節位置許容範囲情報と人体モデル記憶部１０４に記憶されている関節位置許容範囲情報とを比較して、どちらの関節位置許容範囲情報を使用するかを判定してもよい。この判定では、例えば、人体モデル推定部１２０６で推定した関節位置許容範囲情報が人体モデル記憶部１０４に記憶されている関節位置許容範囲情報の範囲内に収まっているかどうかを判定する。なお、判定方法についてはこれに限定するものではない。そして、人体モデル推定部１２０６で推定した関節位置許容範囲情報が十分に学習されているものと判定した場合には、人体モデル推定部１２０６の関節位置許容範囲情報を使用するよう切り替えてもよい。
【０１７３】
さらに、前述した実施形態のように人体モデル記憶部１０４の関節位置許容範囲情報を用いて、並行して関節間角度及び関節の重複の整合性や距離画像との整合性の評価を併せて行ってもよい。姿勢を推定する処理全体が終了した後は、人体モデル推定部１２０６で推定した関節位置許容範囲情報を破棄することができる。以上のように、整合性評価部１２０３から取得した関節位置情報をもとに学習して関節位置許容範囲情報を推定することにより、個人の体型に併せた関節位置許容範囲情報を用いて姿勢を推定することが可能となる。
【０１７４】
＜整合性評価の高速化＞
前述した例では、全ての関節の組み合わせに対して評価を行うため、処理に多くの時間が掛ってしまう。そのため、第１または第７の実施形態と同様の方法により、処理を高速化してもよい。本実施形態では、関節位置許容範囲情報を人体モデル推定部１２０６から取得する点以外は、第１または第７の実施形態と同様の方法で整合性を評価する。これにより、個人の体型を反映した人体モデルを用いることができ、より高精度に姿勢を推定することができる。
【０１７５】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１７６】
１０１  距離画像入力部
１０２  関節位置候補算出部
１０３  整合性評価部
１０４  人体モデル記憶部
【図１】
2015167008.tif 000023
【図２】
2015167008.tif 000024
【図３】
2015167008.tif 000025
【図４】
2015167008.tif 000026
【図５】
2015167008.tif 000027
【図６】
2015167008.tif 000028
【図７】
2015167008.tif 000029
【図８】
2015167008.tif 000030
【図９】
2015167008.tif 000031
【図１０】
2015167008.tif 000032
【図１１】
2015167008.tif 000033
【図１２】
2015167008.tif 000034
【図１３】
2015167008.tif 000035
【図１４】
2015167008.tif 000036