(57)【特許請求の範囲】
【請求項１】
カラー画像に基づいて、２次元平面における第１の関節の第１の位置を推定するとともに、前記第１の関節と、部位を介して前記第１の関節に繋がっている第２の関節との前記２次元平面における第１の位置関係を推定する第１の推定部と、
前記第１の関節と前記第２の関節とのそれぞれの深度を示す深度画像に基づいて、前記２次元平面における前記第１の関節の第２の位置を推定するとともに、前記第１の関節と前記第２の関節との３次元空間における第２の位置関係を推定する第２の推定部と、
前記第１の推定部により推定された前記第１の位置と前記第１の位置関係、および前記第２の推定部により推定された前記第２の位置と前記第２の位置関係に基づいて、前記２次元平面における前記第１の関節の第３の位置と、前記３次元空間における前記部位の姿勢とを推定する第３の推定部と、
を備える情報処理装置。
【請求項２】
前記第１の関節に対する３次元空間における第１の関節と第２の関節との複数の位置関係に対応する複数のテンプレート情報を記憶する記憶部をさらに備え、
前記第２の推定部は、前記深度画像と前記複数のテンプレート情報とを用いてテンプレートマッチングを行うことにより前記第２の位置関係を推定することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第２の推定部は、前記第１の関節に対する３次元における前記第１の関節と前記第２の関節との複数の位置関係を示す情報をニューラルネットワークに学習させ、学習させた前記ニューラルネットワークに前記深度画像を入力することにより前記第２の位置関係を推定することを特徴とする請求項１記載の情報処理装置。
【請求項４】
情報処理装置が
カラー画像に基づいて、２次元平面における第１の関節の第１の位置を推定するとともに、前記第１の関節と、部位を介して前記第１の関節に繋がっている第２の関節との前記２次元平面における第１の位置関係を推定し、
前記第１の関節と前記第２の関節とのそれぞれの深度を示す深度画像に基づいて、前記２次元平面における前記第１の関節の第２の位置を推定するとともに、前記第１の関節と前記第２の関節との３次元空間における第２の位置関係を推定し、
前記第１の位置と前記第１の位置関係、および前記第２の位置と前記第２の位置関係に基づいて、前記２次元平面における前記第１の関節の第３の位置と、前記３次元空間における前記部位の姿勢とを推定する
処理を備える情報処理方法。
【請求項５】
コンピュータに
カラー画像に基づいて、２次元平面における第１の関節の第１の位置を推定するとともに、前記第１の関節と、部位を介して前記第１の関節に繋がっている第２の関節との前記２次元平面における第１の位置関係を推定し、
前記第１の関節と前記第２の関節とのそれぞれの深度を示す深度画像に基づいて、前記２次元平面における前記第１の関節の第２の位置を推定するとともに、前記第１の関節と前記第２の関節との３次元空間における第２の位置関係を推定し、
前記第１の位置と前記第１の位置関係、および前記第２の位置と前記第２の位置関係に基づいて、前記２次元平面における前記第１の関節の第３の位置と、前記３次元空間における前記部位の姿勢とを推定する
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
撮影画像を用いた人体の姿勢推定は、体操やダンス等の自動採点やスポーツ選手の動作解析などの利用が考えられる。【０００３】
計算コストを要し、誤認識を完全に回避できない対応点探索を行わずに物体の位置および姿勢の認識を行う技術が知られている（例えば、特許文献１参照）。また、特許文献２〜４、非特許文献１に記載の姿勢推定方法が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−６５３６８号公報
【特許文献２】特開２０１５−１６７００８号公報
【特許文献３】特開２０１１−２３８２２２号公報
【特許文献４】国際公開第２０１２／０４６３９２号
【非特許文献】
【０００５】
【非特許文献１】Wei Yang外３名,“End-to-End Learning of Deformable Mixture of Parts and Deep Convolutional Neural Networks for Human Pose Estimation”, CVPR2016
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の姿勢推定方法では、関節の奥行方向の位置について考慮していないため、奥行方向に対する手足等の姿勢が不明であり、人体の姿勢の正確な推定が難しいという問題がある。【０００７】
本発明は、関節の位置と当該関節に繋がっている部位の姿勢を推定することを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態の情報処理装置は、第１の推定部、第２の推定部、および第３の推定部を備える。【０００９】
前記第１の推定部は、カラー画像に基づいて、２次元平面における第１の関節の第１の位置を推定するとともに、前記第１の関節と、部位を介して前記第１の関節に繋がっている第２の関節との前記２次元平面における第１の位置関係を推定する。【００１０】
前記第２の推定部は、前記第１の関節と前記第２の関節とのそれぞれの深度を示す深度画像に基づいて、前記２次元平面における前記第１の関節の第２の位置を推定するとともに、前記第１の関節と前記第２の関節との３次元空間における第２の位置関係を推定する。【００１１】
前記第３の推定部は、前記第１の推定部により推定された前記第１の位置と前記第１の位置関係、および前記第２の推定部により推定された前記第２の位置と前記第２の位置関係に基づいて、前記２次元平面における前記第１の関節の第３の位置と、前記３次元空間における前記部位の姿勢を推定する。
【発明の効果】
【００１２】
実施の形態に係る情報処理装置によれば、関節の位置と当該関節に繋がっている部位の姿勢を推定することができる。
【図面の簡単な説明】
【００１３】
【図１】人体のモデル化について説明する図である。
【図２】推定された骨格を示す図である。
【図３】関節位置の確率分布を説明する図である。
【図４】実施の形態に係る姿勢推定装置の機能ブロック図である。
【図５】カラー画像の例である。
【図６】深度画像の例である。
【図７】入力画像の分割を示す図である。
【図８】関節タイプについて説明する図である。
【図９】２次元の関節タイプのパターンを示す図である。
【図１０】テンプレートを示す図である。
【図１１】関節認識部によるテンプレートマッチングの処理を示す図である。
【図１２】ＤＣＮＮの処理を示す図である。
【図１３】関節認識部によるＤＣＮＮの処理を示す図である。
【図１４】２次元に適合する関節相対位置スコア関数を示す図である。
【図１５】３次元の関節タイプを説明する図である。
【図１６】３次元の関節タイプのパターンを示す図である。
【図１７】各関節の各関節タイプの推定値を示す関節位置確率分布φDepthを示す図である。
【図１８】３次元に適合する関節相対位置スコア関数を示す図である。
【図１９】最大確率位置特定部の処理を説明する図である。
【図２０】実施の形態に係るmax-sum法を用いた姿勢推定処理のフローチャートである。
【図２１】実施の形態に係るmax-sum法を用いた姿勢推定処理を説明する図である。
【図２２】推定された関節タイプと関節に接続する部位の角度を示す図である。
【図２３】情報処理装置（コンピュータ）の構成図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら実施の形態について説明する。
図１は、人体のモデル化について説明する図である。
【００１５】
図１の左側に示す人体１００をモデル化する場合、図１の右側に示すように人体１００の複数の関節および頭や手足等の部位を「点」とし、「点」として表現される関節や部位を互いに繋ぐ肢体や胴などの部位を「辺」として表現する。
【００１６】
人体をモデル化した場合に「点」として表現される関節や部位は、例えば、頭（head）１、首(neck)２、左肩（shoulder_left）３、左肘(ebow_left)４、左手（hand_left）５、右肩（shoulder_right）６、右肘（elbow_right）７、右手（hand_right）８、脊柱_中(spine_mid)９、脊柱_付け根(spine_base)１０、左尻（hip_left）１１、右尻（hip_right）１２、左膝（knee_left）１３、左足（foot_left）１４、右膝（knee_right）１５、右足（foot_right）１６がある。以下、「点」として表現された頭や手足等の部位を関節に含まれるものとして表記する場合がある。
【００１７】
図２は、推定された骨格を示す図である。
従来の姿勢推定方法により、各関節の位置が推定され、図２に示すような骨格が推定されたとする。しかしながら、従来の姿勢推定方法では、奥行方向（Ｚ方向）の情報を持たないため、例えば、図２の右側に示すように右肘７や右手８が右肩６より手前に位置するか、真上に位置するか、または奥に位置するか分からない。そのため、姿勢の正確な推定が困難であるという問題がある。
【００１８】
図３は、関節位置の確率分布を説明する図である。
実施の形態の姿勢推定方法では、ある関節の位置の確率分布（関節位置確率分布）は、画像の領域ごとに当該関節が存在する確率を示したヒートマップで表すことができる。
【００１９】
例えば、図３の左側に示す頭（head）の位置に対するヒートマップでは、頭がその領域に存在する確率が高いほど当該領域の色は濃く表現されている。同様に、首や左肩等の他の関節の位置の確率分布もヒートマップで表すことができる。
【００２０】
図４は、実施の形態に係る姿勢推定装置の機能ブロック図である。
姿勢推定装置１０１は、カメラ１１１、深度カメラ１２１、関節認識部１３１，１４１、関節相対位置スコア算出部１５１，１６１、および最大確率位置特定部１７１を備える。
【００２１】
カメラ１１１は、所定の範囲を撮影し、被写体（例えば、人体）が写ったカラー画像２０１を生成し、関節認識部１３１に出力する。カメラ１１１により、例えば、図５に示すようなカラー画像２０１が撮影される。
【００２２】
深度カメラ１２１は、所定の範囲をカメラ１１１と同じタイミングで撮影し、深度カメラ１２１から被写体までの距離を画素値として示す深度画像２１１を生成し、関節認識部１４１に出力する。深度カメラ１２１により、例えば、図６に示すような深度画像２１１が撮影される。深度画像２１１において、深度カメラ１２１から被写体までの距離が遠いほど画素は白く（画素値は大きく）なり、深度カメラ１２１から被写体までの距離が近いほど画素は黒く（画素値は小さく）なる。
【００２３】
関節認識部１３１は、カラー画像２０１から２次元の関節タイプそれぞれの２次元平面の各領域における各関節の存在確率を示す関節位置確率分布φRGBを算出する。
【００２４】
関節認識部１４１は、深度画像２１１から３次元の関節タイプそれぞれの２次元平面の各領域における各関節の存在確率を示す各関節の関節位置確率分布φDepthを算出する。
【００２５】
関節相対位置スコア算出部１５１は、２次元の関節タイプそれぞれの各関節の２次元平面の各領域におけるスコア（関節相対位置スコアψRGB）を算出し、最大確率位置特定部１７１に出力する。尚、関節相対位置スコア算出部１５１は、無くてもよい。その場合、関節相対位置スコアψRGBを外部で予め算出して、姿勢推定装置１０１に入力して記憶部（不図示）に記憶しておき、最大確率位置特定部１７１が適宜読み出すようにしてもよい。
【００２６】
関節相対位置スコア算出部１６１は、３次元の関節タイプそれぞれの各関節の２次元平面の各領域におけるスコア（関節相対位置スコアψDepth）を算出し、最大確率位置特定部１７１に出力する。尚、関節相対位置スコア算出部１６１は、無くてもよい。その場合、関節相対位置スコアψDepthを外部で予め算出して、姿勢推定装置１０１に入力して記憶部（不図示）に記憶しておき、最大確率位置特定部１７１が適宜読み出すようにしてもよい。
【００２７】
最大確率位置特定部１７１は、関節相対位置スコアψRGB、関節位置確率分布φRGB、関節相対位置スコアψDepth、および関節位置確率分布φDepthに基づいて、各関節に対して最も可能性が高い関節の位置とタイプを特定し、各関節の特定した関節の位置とタイプを出力する。
【００２８】
次に関節認識部１３１に処理について説明する。
図７は、入力画像の分割を示す図である。
【００２９】
関節認識部１３１は、入力画像（カラー画像２０１）を横Ｍ画素、縦Ｍ画素の複数の画像（ブロック）に分割する。関節認識部１３１は、ブロックごとにテンプレートマッチングまたはDeep Convolutional Neural Network（ＤＣＮＮ）を用いて、当該ブロックに各関節タイプの各関節が存在する確率を算出する。
【００３０】
図８は、関節タイプについて説明する図である。
関節タイプとは、ある関節とその関節につながる身体パーツの繋がりの見え方で、その関節をタイプ分けしたものである。
【００３１】
例えば、図８の上側に示すように、手首と下腕の繋がりの見え方（下腕を介して繋がる肘との位置関係）によって、手首を８つのタイプにタイプ分けしている。
【００３２】
図８の下側に示すように、隣り合う関節のタイプを比較することで整合性が評価できる。隣り合う関節とは同じ部位により繋がっている関節のことを指す。
【００３３】
図９は、２次元の関節タイプのパターンを示す図である。
２次元の関節タイプは、詳細には、ある関節ｉと関節ｉに隣り合う関節ｊの画像上の相対位置（xij,yij）によって、関節ｉの写り方をＴ個のタイプに分けたものである。
【００３４】
関節ｉの座標を(xi,yi）、関節ｉの座標を(xj,yj）とすると、相対位置（xij,yij）は、（xij,yij）＝(xi-xj,yi-yj）である。
【００３５】
タイプ数Ｔおよびタイプの分け方（パターン）は、ユーザが決定する。例えば、Ｔ＝４の場合、図９の左側に示すようなパターン１、右側に示すようなパターン２のようなタイプ分けが用いられる。尚、図９に示す座標平面の横軸はxij、縦軸はyijである。
【００３６】
例えば、パターン１において、xijとyijが両方とも正であれば、関節iのタイプはタイプ１となる。パターン１において、xijが負であり、yijが正であれば、関節iのタイプはタイプ２となる。パターン１において、xijとyijが両方とも負であれば、関節iのタイプはタイプ３となる。パターン１において、xijが正であり、yijが負であれば、関節iのタイプはタイプ４となる。
【００３７】
図１０は、テンプレートを示す図である。
関節認識部１３１において、テンプレートマッチングを行う場合、ユーザは、１つの関節につき、関節タイプの数Ｔだけテンプレートを用意する。例えば、関節の数が１６であり、関節タイプの数が４である場合、ユーザは、各関節の各タイプに対する６４（＝１６×４）個のテンプレートを用意し、記憶部（負図示）等に予め記憶しておく。
【００３８】
図１１は、関節認識部によるテンプレートマッチングの処理を示す図である。
以下、関節認識部１３１によるテンプレートマッチングの処理を説明する。
【００３９】
関節認識部１３１は、入力画像（カラー画像２０１）を横Ｍ画素、縦Ｍ画素の複数の画像（ブロック）に分割する。関節認識部１３１は、分割したブロックを１枚ずつテンプレートマッチングを用いて処理する。
【００４０】
関節認識部１３１は、記憶部（不図示）に記憶された各関節の各タイプに対する複数のテンプレートを読み出し、入力されたブロックと複数のテンプレートを用いて、テンプレートマッチングを行い、当該ブロックの各関節および各タイプに対する推定値を算出する。算出された推定値は、関節位置確率分布φRGBに相当する。例えば、あるブロックが入力されると、当該ブロックに対する各関節のタイプごとの推定値が得られる。あるブロックが入力され、関節＝頭とタイプＴ＝１に対する推定値として０．６が得られたとすると、当該ブロックにタイプＴ＝１の頭が存在する確率が０．６であることを示す。以下、同様に他のブロックに対しても、推定値が算出される。
【００４１】
次にＤＣＮＮについて説明する。関節認識部１３１は、ＤＣＮＮを用いて推定値を算出してもよい。
【００４２】
図１２は、ＤＣＮＮの処理を示す図である。
ＤＣＮＮを用いる場合、関節認識部１３１は、ＤＣＮＮを構築する。ユーザは、教師データtnmを用意し、関節認識部１３１は、各関節と２次元の各関節タイプに対応した訓練データと教師データtnmとＤＣＮＮから出力される推定値znmを用いて学習を行い、ＤＣＮＮを重みｗ更新する。ｎ＝１〜Ｊ（Ｊは関節の数）、ｍ＝１〜Ｔ（Ｔは関節タイプの数）である。学習した重みｗは、記憶部（不図示）に記憶され、関節認識部１３１は、入力画像をＤＣＮＮを用いて処理するときに読み出して用いる。
【００４３】
関節認識部１３１は、入力画像を分割したブロックを２次元配列としてＤＣＮＮに入力し、ＤＣＮＮは出力として、当該ブロックが各関節の各タイプである確率znmを出力する。
【００４４】
図１３は、関節認識部によるＤＣＮＮの処理を示す図である。
関節認識部１３１は、入力画像（カラー画像２０１）を横Ｍ画素、縦Ｍ画素の複数の画像（ブロック）に分割する。関節認識部１３１は、分割したブロックを１枚ずつＤＣＮＮを用いて処理する。尚、ＤＣＮＮの重みｗの学習は終了しているものとする。
【００４５】
関節認識部１３１は、記憶部（不図示）に記憶された重みｗを読み出し、入力されたブロックと重みｗを用いて、ＤＣＮＮにより、当該ブロックの各関節および各タイプに対する推定値を算出する。算出された推定値は、関節位置確率分布φRGBに相当する。例えば、あるブロックが入力されると、当該ブロックに対する各関節のタイプごとの推定値が得られる。あるブロックが入力され、関節＝頭とタイプＴ＝１に対する推定値として０．６が得られたとすると、当該ブロックにタイプＴ＝１の頭が存在する確率が０．６であることを示す。以下、同様に他のブロックに対しても、推定値が算出される。
【００４６】
尚、上述の関節認識部１３１の推定値の算出方法は一例であり、テンプレートマッチングやＤＣＮＮに限られるものではない。
【００４７】
次に関節相対位置スコア算出部１５１が算出する関節相対位置スコアψRGBについて説明する。
【００４８】
図１４は、２次元に適合する関節相対位置スコア関数を示す図である。
ユーザは、関節i,jの相対位置がその関節タイプti,tjに適合していれば値が大きくなる関数（関節相対位置スコア関数）を定義し、関節相対位置スコア算出部１５１は、定義された関節相対位置スコア関数から２次元の関節タイプそれぞれの各関節の２次元平面の各領域における相対位置スコアψRGBを算出する。
【００４９】
関節相対位置スコア関数ψは、ψ（xi,yi,xj,yj,ti,tj）=ftitj(Δx,Δy)である。xi,yiは、関節iの座標であり、tiは関節iの２次元の関節タイプである。xj,yjは、関節jの座標であり、tｊは関節ｊの２次元の関節タイプである。ΔxとΔyは関節i,jの座標の差分であり、Δx=xi-xj,Δy=yi-yjである。
【００５０】
図１４の下側は、関節相対位置スコア関数ftitj(Δx,Δy)を示し、関節相対位置スコア関数ftitj(Δx,Δy)において最大となるΔx,Δyは、ti,tｊにより決まる。
【００５１】
図１５は、３次元の関節タイプを説明する図である。
以上の説明では、関節タイプは２次元における関節i,jの位置関係に基づいて決定され、関節認識部１３１や関節位置相対スコア算出部１５１で用いられているが、以下の説明では、x-y平面での位置関係に加え、z方向の深度を用いたタイプわけを行う。
【００５２】
x-y平面における関節の見え方（位置関係）だけでなく、y-z平面における関節の見え方も用いてタイプわけを行う。３次元の関節タイプは、関節認識部１４１や関節位置相対スコア算出部１６１で用いられる。
【００５３】
図１６は、３次元の関節タイプのパターンを示す図である。
３次元の関節タイプは、ある関節ｉと関節ｉに隣り合う関節ｊの画像上の相対位置（xij,yij,zij）によって、関節ｉの写り方をＴ’個のタイプに分けたものである。
【００５４】
関節ｉの座標を(xi,yi,zi）、関節ｊの座標を(xj,yj,zj）とすると、相対位置（xij,yij,zij）は、（xij,yij,zij）＝(xi-xj,yi-yj,zi-zj）である。
【００５５】
タイプ数Ｔ’およびタイプの分け方（パターン）は、ユーザが決定する。例えば、Ｔ’＝８の場合、図１６に示すパターンのようなタイプ分けが用いられる。
例えば、xijとyijとzijがすべて正であれば、関節iのタイプはタイプ１となる。
【００５６】
図１７は、各関節の各関節タイプの推定値を示す関節位置確率分布φDepthを示す図である。
関節認識部１４１は、カラー画像２０１の代わりに深度画像２１１を用いて、関節認識部１３１と同様にテンプレートマッチングやＤＣＮＮを用いて、推定値を算出し、関節位置確率分布φDepthを生成する。
【００５７】
また、関節認識部１４１は、図１６に示すような３次元の関節タイプを用いる。
関節認識部１４１において、テンプレートマッチングを行う場合、ユーザは、１つの関節につき、３次元の関節タイプの数Ｔ’だけテンプレートを用意する。ある関節のある関節タイプのテンプレートは、３次元の当該関節タイプに対応した当該関節を示す画像である。
【００５８】
関節認識部１４１は、入力画像（深度画像２１１）を横Ｍ画素、縦Ｍ画素の複数の画像（ブロック）に分割する。関節認識部１４１は、分割したブロックを１枚ずつテンプレートマッチングを用いて処理する。
【００５９】
関節認識部１４１は、記憶部（不図示）に記憶された各関節の各タイプに対する複数のテンプレートを読み出し、入力されたブロックと複数のテンプレートを用いて、テンプレートマッチングを行い、当該ブロックの各関節および各タイプに対する推定値を算出する。算出された推定値は、関節位置確率分布φDepthに相当する。
【００６０】
関節認識部１４１において、ＤＣＮＮを用いる場合、関節認識部１4１は、ＤＣＮＮを構築する。ユーザは、各関節と３次元の各関節タイプに対応する訓練データと教師データtnmを用意し、関節認識部１３１は、訓練データと教師データtnmとＤＣＮＮから出力される推定値znmを用いて学習を行い、ＤＣＮＮを重みｗ更新する。ｎ＝１〜Ｊ（Ｊは関節の数）、ｍ＝１〜Ｔ’（Ｔ’は３次元の関節タイプの数）である。学習した重みｗは、記憶部（不図示）に記憶され、関節認識部１３１は、入力画像をＤＣＮＮを用いて処理するときに読み出して用いる。
【００６１】
関節認識部１４１は、入力画像を分割したブロックを２次元配列としてＤＣＮＮに入力し、ＤＣＮＮは出力として、当該ブロックが各関節の各タイプである確率znmを出力する。
【００６２】
関節認識部１４１は、入力画像（深度画像２１１）を横Ｍ画素、縦Ｍ画素の複数の画像（ブロック）に分割する。関節認識部１４１は、分割したブロックを１枚ずつＤＣＮＮを用いて処理する。尚、ＤＣＮＮの重みｗの学習は終了しているものとする。
【００６３】
関節認識部１４１は、記憶部（不図示）に記憶された重みｗを読み出し、入力されたブロックと重みｗを用いて、ＤＣＮＮにより、当該ブロックの各関節および各タイプに対する推定値を算出する。算出された推定値は、関節位置確率分布φDepthに相当する。例えば、あるブロックが入力されると、当該ブロックに対する各関節のタイプごとの推定値が得られる。あるブロックが入力され、関節＝頭とタイプＴ’＝１に対する推定値として０．６が得られたとすると、当該ブロックにタイプＴ＝１の頭が存在する確率が０．６であることを示す。以下、同様に他のブロックに対しても、推定値が算出される。
【００６４】
次に関節相対位置スコア算出部１６１が算出する関節相対位置スコアψDepthについて説明する。
【００６５】
図１８は、３次元に適合する関節相対位置スコア関数を示す図である。
ユーザは、関節i,jの相対位置がその関節タイプti,tjに適合していれば値が大きくなる関数（関節相対位置スコア関数）を定義し、関節相対位置スコア算出部１５１は、定義された関節相対位置スコア関数から３次元の関節タイプそれぞれの２次元平面の各領域における相対位置スコアψDepthを算出する。
【００６６】
関節相対位置スコア関数ψDepthは、ψDepth（xi,yi,zi,xj,yj,zj,ti,tj）=ftitj(Δx,Δy,Δz)である。xi,yi,ziは、関節iの座標であり、tiは関節iの３次元の関節タイプである。xj,yj,zjは、関節jの座標であり、tｊは関節ｊの３次元の関節タイプである。ΔxとΔyとΔzは関節i,jの座標の差分であり、Δx=xi-xj,Δy=yi-yj,Δz=zi-zjである。
【００６７】
図１８の下側は、関節相対位置スコア関数ftitj(Δx,Δy,Δz)を示し、関節相対位置スコア関数ftitj(Δx,Δy,Δz)において最大となるΔx,Δy,Δzは、ti,tｊにより決まる。
【００６８】
図１９は、最大確率位置特定部の処理を説明する図である。
最大確率位置特定部１７１には、関節相対位置スコアψRGB、関節位置確率分布φRGB、関節相対位置スコアψDepth、および関節位置確率分布φDepthが入力される。最大確率位置特定部１７１は、関節相対位置スコアψRGB、関節位置確率分布φRGB、関節相対位置スコアψDepth、および関節位置確率分布φDepthを合計した、下式（１）のようなスコア関数Ｆを計算する。
【００６９】
【数１】
0006708260.tif 000002
【００７０】
スコア関数Ｆは、関節位置確率分布から任意の関節タイプと座標を選択したときに本来の関節がある確からしさを計算する関数である。φRGB,φDepth,ψRGB,ψDepthで、xi,xj,yi,yjは共通である。tiRGBとtiDepthは独立である。i∈jointsのiは関節を示し、i,j∈partは隣り合う関節の組み合わせを示す。
【００７１】
最大確率位置特定部１７１は、例えば、max-sum法、Expectation Maximization（ＥＭ）法、モンテカルロ法、またはGenetic Algorithm（ＧＡ）を用いて、スコア関数Ｆ（x,y,z,t）が最大となる位置を特定する。最大確率位置特定部１７１は、推定結果として、特定された各関節の位置座標と関節タイプを出力する。
【００７２】
次に最大確率位置の特定にmax-sum法を用いた場合の姿勢推定処理について説明する。
図２０は、実施の形態に係るmax-sum法を用いた姿勢推定処理のフローチャートである。
【００７３】
図２１は、実施の形態に係るmax-sum法を用いた姿勢推定処理を説明する図である。
ステップＳ５０１において、カメラ１１１は撮影を行ってカラー画像２０１を出力し、関節認識部１３１はカラー画像２０１を入力する。また、カメラ１２１は撮影を行って深度画像２１１を出力し、関節認識部１４１は深度画像２１１を入力する。
【００７４】
ステップＳ５０２において、関節認識部１３１は、カラー画像２０１を分割し、分割された各ブロックの各関節の２次元の各関節タイプの推定値を算出し、関節確率分布φRGBを作成し、最大確率位置特定部１７１に出力する。
【００７５】
ステップＳ５０３において、最大確率位置特定部１７１は、２次元の各関節タイプそれぞれの各関節の各座標（ブロック）の関節相対位置スコアψRGBを対応する関節確率分布φRGBに加算し、スコア分布SRGBを作成する。関節相対位置スコアψRGBは、関節相対位置スコア算出部１５１により予め算出されていても良いし、ステップＳ５０３において算出されてもよい。
【００７６】
ステップＳ５０４において、最大確率位置特定部１７１は、SRGBの各関節の各座標ごとに関節タイプ間の最大値を抜き出しSRGB_maxを作成する。このとき、SRGB_maxを作成するときにどの関節タイプから抜き出したかを記憶しておく。
【００７７】
ステップＳ５０５において、関節認識部１４１は、関節認識部１４１は、深度画像２１１を分割し、分割された各ブロックの各関節の各タイプの推定値を算出し、関節確率分布φDepthを作成し、最大確率位置特定部１７１に出力する。
【００７８】
ステップＳ５０６において、最大確率位置特定部１７１は、３次元の関節タイプそれぞれの各関節の各座標の関節相対位置スコアψDepthを対応する関節確率分布φDepthに加算し、スコア分布SDepthを作成する。関節相対位置スコアψDepthは、関節相対位置スコア算出部１６１により予め算出されていても良いし、ステップＳ５０６において算出されてもよい。
【００７９】
ステップＳ５０７において、最大確率位置特定部１７１は、スコア分布SDepthの各関節の座標ごとにタイプ間の最大値を抜き出し、スコア分布SDepth_maxを作成する。このとき、スコア分布SDepth_maxを作成するときにどの関節タイプから抜き出したかを記憶しておく。
【００８０】
ステップＳ５０８において、最大確率位置特定部１７１は、SRGB_max とSDepth_maxを加算し、スコア分布Ｓを作成する。
【００８１】
ステップＳ５０９において、最大確率位置特定部１７１は、スコア分布Ｓの最大となる各関節の座標を探索する。最大確率位置特定部１７１は、各関節において、推定値が最大である座標を見つける。
【００８２】
ステップＳ５１０において、最大確率位置特定部１７１は、各関節において、探索結果となる座標とその座標に対応する３次元の関節タイプを出力する。また、３次元の関節タイプそれぞれ対応したｘ−ｙ平面とｙ−ｚ平面におけるそれぞれの関節の角度を記憶部（不図示）に記憶しておき、最大確率位置特定部１７１は、探索結果となる関節座標に対応する関節タイプに対応する角度（関節に繋がっている部位の姿勢）を推定結果として出力してもよい。
【００８３】
図２２は、推定された関節タイプと関節に接続する部位の角度を示す図である。
例えば、姿勢推定方法により、右肘の関節タイプとしてｔ’＝１０が出力されたとする。上述のように関節タイプは、関節iと関節iと隣り合う関節ｊとの位置関係によりタイプ分けされている。よって、関節iの関節タイプが分かれば関節iと関節iと隣り合う関節ｊとの位置関係も分かり、関節iと関節ｊとをつなぐ部位の角度（姿勢）も分かる。したがって、例えば、右肘の関節タイプｔ’が推定されば、右肘と上腕を介して繋がる右肩との位置関係も分かるため、上腕の角度（姿勢）も分かる。また、右手の関節タイプが分かれば、右手と下腕を介して繋がる右肘との位置関係も分かるため、下腕の角度（姿勢）も分かり、上腕と下腕が成す角度（肘の角度）も分かる。
【００８４】
実施の形態に係る姿勢推定装置によれば、関節の位置と当該関節に繋がっている部位の姿勢を推定することができる。
【００８５】
図２３は、情報処理装置（コンピュータ）の構成図である。
実施の形態の姿勢推定装置１０１は、例えば、図２３に示すような情報処理装置（コンピュータ）７０１によって実現可能である。
【００８６】
情報処理装置７０１は、ＣＰＵ７０２、メモリ７０３、入力装置７０４、出力装置７０５、記憶部７０６、記録媒体駆動部７０７、及びネットワーク接続装置７０８を備え、それらはバス７０９により互いに接続されている。
【００８７】
ＣＰＵ７０２は、情報処理装置１全体を制御する中央処理装置である。ＣＰＵ７０２は、関節認識部１３１，１４１、関節相対位置スコア算出部１５１，１６１、および最大確率位置特定部１７１として動作する。
【００８８】
メモリ７０３は、プログラム実行の際に、記憶部７０６（あるいは可搬記録媒体７１０）に記憶されているプログラムあるいはデータを一時的に格納するRead Only Memory(ＲＯＭ)やRandom Access Memory(ＲＡＭ)等のメモリである。ＣＰＵ７０２は、メモリ３を利用してプログラムを実行することにより、上述した各種処理を実行する。
【００８９】
この場合、可搬記録媒体７１０等から読み出されたプログラムコード自体が実施の形態の機能を実現する。
【００９０】
入力装置７０４は、ユーザ又はオペレータからの指示や情報の入力、情報処理装置７０１で用いられるデータの取得等に用いられる。入力装置７０４は、例えば、キーボード、マウス、タッチパネル、カメラ、またはセンサ等である。入力装置７０４は、カメラ１１１および深度カメラ１２１に相当する。
【００９１】
出力装置７０５は、ユーザ又はオペレータへの問い合わせや処理結果を出力したり、ＣＰＵ７０２による制御により動作する装置である。出力装置７０５は、例えば、ディスプレイ、またはプリンタ等である。
【００９２】
記憶部７０６は、例えば、磁気ディスク装置、光ディスク装置、テープ装置等である。情報処理装置７０１は、記憶部７０６に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ７０３に読み出して使用する。
【００９３】
記録媒体駆動部７０７は、可搬記録媒体７１０を駆動し、その記録内容にアクセスする。可搬記録媒体としては、メモリカード、フレキシブルディスク、Compact Disk Read Only Memory(ＣＤ−ＲＯＭ)、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。ユーザは、この可搬記録媒体７１０に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ７０３に読み出して使用する。
【００９４】
ネットワーク接続装置７０８は、Local Area Network（ＬＡＮ）やWide Area Network（ＷＡＮ）等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インターフェースである。ネットワーク接続装置７０８は、通信ネットワークを介して接続された装置へデータの送信または通信ネットワークを介して接続された装置からデータを受信する。
【図１】
0006708260.tif 000003
【図２】
0006708260.tif 000004
【図３】
0006708260.tif 000005
【図４】
0006708260.tif 000006
【図５】
0006708260.tif 000007
【図６】
0006708260.tif 000008
【図７】
0006708260.tif 000009
【図８】
0006708260.tif 000010
【図９】
0006708260.tif 000011
【図１０】
0006708260.tif 000012
【図１１】
0006708260.tif 000013
【図１２】
0006708260.tif 000014
【図１３】
0006708260.tif 000015
【図１４】
0006708260.tif 000016
【図１５】
0006708260.tif 000017
【図１６】
0006708260.tif 000018
【図１７】
0006708260.tif 000019
【図１８】
0006708260.tif 000020
【図１９】
0006708260.tif 000021
【図２０】
0006708260.tif 000022
【図２１】
0006708260.tif 000023
【図２２】
0006708260.tif 000024
【図２３】
0006708260.tif 000025