(57)【要約】【課題】パーティクルを生成する乱数の発生範囲を適切に設定すること。【解決手段】姿勢推定装置１０は、画像を取得し、取得された第１の画像と、第１の画像よりも前に取得された第２の画像との差分に基づいて不一致度を算出し、不一致度から第１の画像が取得されたフレームで姿勢の推定対象とするモデルの可動部が可動すると推定される範囲を可動部ごとに設定し、可動部ごとに設定された範囲をモデルの各可動部の変化量を定める乱数の生成範囲として、モデルの姿勢の候補とするパーティクルを生成する生成部へ出力する処理を実行する。【選択図】図１
2018092273.tif 000002
【特許請求の範囲】
【請求項１】
画像を取得し、
取得された第１の画像と、前記第１の画像よりも前に取得された第２の画像との差分に基づいて不一致度を算出し、
前記不一致度から、前記第１の画像が取得されたフレームで姿勢の推定対象とするモデルの可動部が可動すると推定される範囲を前記可動部ごとに設定し、
前記可動部ごとに設定された範囲を前記モデルの各可動部の変化量を定める乱数の生成範囲として、前記モデルの姿勢の候補とするパーティクルを生成する生成部へ出力する、
処理をコンピュータが実行することを特徴とする姿勢推定方法。
【請求項２】
前記算出する処理は、前記第１の画像内で前記モデルに対応する第１の領域および前記第２の画像内で前記モデルに対応する第２の領域を前記第１の画像および前記第２の画像の対応点を用いて重ね合わせ、前記第１の領域および前記第２の領域が重なる第１の面積と、前記第１の領域および前記第２の領域が重ならない第２の面積とから前記不一致度を算出することを特徴とする請求項１に記載の姿勢推定方法。
【請求項３】
前記算出する処理は、前記第２の面積に対する前記第１の面積の割合を前記不一致度として算出することを特徴とする請求項２に記載の姿勢推定方法。
【請求項４】
前記取得する処理は、距離画像を取得し、
前記算出する処理は、第１の距離画像および第２の距離画像の間における距離の統計値を前記不一致度として算出することを特徴とする請求項１に記載の姿勢推定方法。
【請求項５】
画像を取得し、
取得された第１の画像と、前記第１の画像よりも前に取得された第２の画像との差分に基づいて不一致度を算出し、
前記不一致度から、前記第１の画像が取得されたフレームで姿勢の推定対象とするモデルの可動部が可動すると推定される範囲を前記可動部ごとに設定し、
前記可動部ごとに設定された範囲を前記モデルの各可動部の変化量を定める乱数の生成範囲として、前記モデルの姿勢の候補とするパーティクルを生成する生成部へ出力する、
処理をコンピュータに実行させることを特徴とする姿勢推定プログラム。
【請求項６】
画像を取得する取得部と、
取得された第１の画像と、前記第１の画像よりも前に取得された第２の画像との差分に基づいて不一致度を算出する算出部と、
前記不一致度から、前記第１の画像が取得されたフレームで姿勢の推定対象とするモデルの可動部が可動すると推定される範囲を前記可動部ごとに設定する設定部と、
前記可動部ごとに設定された範囲を前記モデルの各可動部の変化量を定める乱数の生成範囲として、前記モデルの姿勢の候補とするパーティクルを生成する生成部へ出力する出力制御部と、
を有することを特徴とする姿勢推定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、姿勢推定方法、姿勢推定プログラム及び姿勢推定装置に関する。
【背景技術】
【０００２】
形状が変化する物体の姿勢を推定する技術の一例として、進化的アルゴリズムの１つであるＰＳＯ（Particle  Swarm  Optimization）という技術が用いられる。例えば、手の姿勢が推定される場合、手の可動部である関節ごとに関節の位置および関節が可動する角度などのパラメータを持つモデルが定義される。このようなモデル化が行われる場合、手の姿勢の推定には、２６次元のパラメータの推定が行われることになる。
【０００３】
ここで、ＰＳＯでは、１時刻前に推定された姿勢に乱数を用いて算出された変化量を加算することにより現在の姿勢の候補をパーティクルとして生成する。例えば、手の姿勢が推定される場合、パーティクルの生成に用いる乱数の発生範囲は、関節が可動できる最大の範囲内に設定される。このように生成される複数のパーティクルと観測データとの誤差にしたがって各パーティクルの更新を繰り返し、評価が最高となるパーティクルが出力される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１１２２１１号公報
【特許文献２】国際公開第２００５／０４３４６６号
【特許文献３】国際公開第２００９／０９１０２９号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の技術では、パーティクルを生成する乱数の発生範囲を適切に設定することができない場合がある。
【０００６】
すなわち、観測データが取得される度に、各関節が当該関節の可動できる最大の範囲まで可動されるとは限らない。それにもかかわらず、上記の乱数の発生範囲を関節の可動最大範囲に固定して設定する場合、実際の姿勢の変化よりも過度に大きな範囲でパーティクルが生成されることになる。この場合、パーティクルの更新結果が現実の姿勢に収束しづらくなり、パーティクルの更新結果が現実の姿勢に収束するまでに多くの繰り返しが必要となる。さらに、パーティクルの更新を繰り返す途中で局所解に陥る可能性も高まり、現実の姿勢からかけ離れた姿勢が推定されてしまうこともある。
【０００７】
１つの側面では、本発明は、パーティクルを生成する乱数の発生範囲を適切に設定できる姿勢推定方法、姿勢推定プログラム及び姿勢推定装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
一態様の姿勢推定方法では、画像を取得し、取得された第１の画像と、前記第１の画像よりも前に取得された第２の画像との差分に基づいて不一致度を算出し、前記不一致度から、前記第１の画像が取得されたフレームで姿勢の推定対象とするモデルの可動部が可動すると推定される範囲を前記可動部ごとに設定し、前記可動部ごとに設定された範囲を前記モデルの各可動部の変化量を定める乱数の生成範囲として、前記モデルの姿勢の候補とするパーティクルを生成する生成部へ出力する、処理をコンピュータが実行する。
【発明の効果】
【０００９】
パーティクルを生成する乱数の発生範囲を適切に設定できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る姿勢推定装置の機能的構成を示すブロック図である。
【図２】図２は、モデルの一例を示す図である。
【図３】図３は、可動範囲の設定例を示す図である。
【図４】図４は、実施例１に係る姿勢推定処理の手順を示すフローチャートである。
【図５】図５は、乱数の発生範囲の一例を示す図である。
【図６】図６は、乱数の発生範囲の一例を示す図である。
【図７】図７は、不一致度算出の応用例を示す図である。
【図８】図８は、実施例１及び実施例２に係る姿勢推定プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して本願に係る姿勢推定方法、姿勢推定プログラム及び姿勢推定装置について説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１２】
図１は、実施例１に係る姿勢推定装置の機能的構成を示すブロック図である。図１に示す姿勢推定装置１０は、形状が変化する物体の姿勢を推定するものである。この姿勢の推定には、一例として、進化的アルゴリズムの１つであるＰＳＯが適用される。
【００１３】
［ＰＳＯ］
このＰＳＯでは、ｎ−１フレーム目で推定された姿勢からｎフレーム目の姿勢の候補、いわゆる姿勢の仮説を乱数を用いてパーティクルとして生成する。その上で、下記の式（１）および下記の式（２）にしたがってパーティクルが更新される。
【００１４】
【数１】
2018092273.tif 000003
【数２】
2018092273.tif 000004
【００１５】
式（１）は、ｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢の変化速度ｖを算出する式である。この式（１）には、３つの項が含まれる。すなわち、１項目には、固定の重み係数ｗと、ｋ回目の更新におけるｉ番目のパーティクルの姿勢の変化速度ｖとが含まれる。さらに、２項目には、固定の比率ｃ１と、乱数ｒ１と、ｋ回目の更新において１つのパーティクルの中で最適である姿勢ｘＰｂｅｓｔ，ｉと、ｋ回目の更新にけるｉ番目のパーティクルの姿勢ｘとが含まれる。ここで、ｋ回目の更新時における姿勢ｘＰｂｅｓｔ，ｉには、ｋ回目までに算出されたｉ番目のパーティクルの中でｎフレーム目の観測データとの間で求まる評価値が最大であるものが選択される。この２項目は、ｋ＋１回目の更新における変化速度ｖがｉ番目のパーティクル個体の最適状態を維持しようと機能する。さらに、３項目には、固定の比率ｃ２と、乱数ｒ２と、ｋ回目の更新において全てのパーティクルの中で最適である姿勢ｘＧｂｅｓｔ，ｉと、ｋ回目の更新にけるｉ番目のパーティクルの姿勢ｘとが含まれる。ここで、ｋ回目の更新時における姿勢ｘＧｂｅｓｔ，ｉには、ｋ回目に算出された全てのパーティクルの中でｎフレーム目の観測データとの間で求まる評価値が最大であるものが選択される。この３項目は、ｋ＋１回目の更新における変化速度ｖがｉ番目のパーティクル全体の最適状態へ向かうように機能する。なお、乱数ｒ１及び乱数ｒ２は、更新回数が小さいほどその発生範囲を広く設定し、更新回数が多くなるほどその発生範囲を小さく設定することにより、パーティクルを収束しやく制御することもできる。
【００１６】
式（２）は、ｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢ｘを算出する式である。この式（２）には、２つの項が含まれる。すなわち、１項目には、ｋ回目の更新にけるｉ番目のパーティクルの姿勢ｘが含まれる。さらに、２項目には、式（１）で求められる、ｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢の変化速度ｖが含まれる。
【００１７】
これら式（１）及び式（２）にしたがって変化速度ｖおよび姿勢ｘがパーティクルごとに更新される。その後、変化速度ｖおよび姿勢ｘの更新は、更新回数が所定の上限回数に達するか、あるいは姿勢ｘＧｂｅｓｔ，ｉの評価値が所定の閾値以上になるまで繰り返し行われる。
【００１８】
［モデルの一例］
図２は、モデルの一例を示す図である。図２には、手が手首、手首から先の関節および抹消部（指先）にモデル化された例が示されている。さらに、図２には、手首の関節のパラメータがグローバル座標系で表される一方で、その他の関節や抹消部は、１つ前の関節の座標系で表される場合が例示されている。さらに、図２に示すパラメータのうち「Ｘ」、「Ｙ」及び「Ｚ」は、３次元の直交座標を指し、「ｒ」「ｐ」「ｙ」は、Ｘ軸回りの角度、Ｙ軸回りの角度、Ｚ軸回りの角度を指す。なお、図２には、手のモデルを一例として示したが、形状が変化する他の物体のモデルにもＰＳＯによる姿勢推定を適用できる。
【００１９】
図２に示すように、手のモデルには、手首と、親指の関節１〜関節３および親指の指先と、人差し指の関節１〜関節３および人差し指の指先と、中指の関節１〜関節３および中指の指先と、薬指の関節１〜関節３および薬指の指先と、小指の関節１〜関節３および小指の指先とが含まれる。これらのうち、関節には、関節の位置と向きとがパラメータとして定義される一方で、指先には、位置がパラメータとして定義される。これらのパラメータのうち、図２に太字で示されたパラメータは、手の動きにより変化するパラメータであり、その他のパラメータは、個人の特性、すなわち身体的特徴により定まる固定のパラメータである。故に、手の姿勢を推定することは、図２に太字で示された２６個のパラメータを推定することと等価であると言える。
【００２０】
このように図２に示す手のモデルから手の姿勢を推定する場合、図２に太字で示されたパラメータを含むベクトルがパーティクルの姿勢ｘｉとして定義されると共に、この姿勢ｘｉが時間で微分されたものが変化速度ｖｉとして定義される。すなわち、ｉ番目のパーティクルの姿勢ｘｉは、下記の式（３）の通りに表されると共に、ｉ番目のパーティクルの変化速度ｖｉは、下記の式（４）の通りに表される。
【００２１】
【数３】
2018092273.tif 000005
【数４】
2018092273.tif 000006
【００２２】
［機能的構成］
図１に示すように、姿勢推定装置１０は、画像入力部１１と、画像保持部１２と、不一致度算出部１３と、可動範囲設定部１４と、パーティクル生成部１５と、第１の更新部１６と、第２の更新部１７と、出力部１８とを有する。
【００２３】
画像入力部１１は、画像を入力する処理部である。この画像入力部１１は、取得部の一例である。
【００２４】
一実施形態として、画像入力部１１は、図示しない距離画像センサ、例えばＩＲ（infrared）カメラ等を用いて、ＩＲカメラが赤外線の照射光が環境の対象物に反射して戻ってくるまでの時間を計測することにより距離画像（ｘ，ｙ，ｄ）を取得することができる。他の一例として、画像入力部１１は、映像を蓄積するハードディスクや光ディスクなどの補助記憶装置またはメモリカードやＵＳＢ（Universal  Serial  Bus）メモリなどのリムーバブルメディアから距離画像を取得することもできる。更なる一例として、画像入力部１１は、外部装置からネットワークを介して受信することによって距離画像を取得することもできる。このように姿勢推定装置１０が距離画像を取得する経路は、センサ、ネットワークや記録媒体などの任意の経路であってよく、特定の経路に限定されない。その後、画像入力部１１は、任意の経路を通じて取得された距離画像を画像保持部１２、不一致度算出部１３および第２の更新部１７へ入力する。
【００２５】
なお、ここでは、画像保持部１２、不一致度算出部１３および第２の更新部１７に距離画像が入力される場合を例示したが、画像保持部１２および不一致度算出部１３には、必ずしも距離画像が入力されずともよく、グレイスケールの画像が入力されることとしてもよいし、ＲＧＢ等のカラー画像が入力されることとしてもかまわない。
【００２６】
画像保持部１２は、画像を保持する記憶部である。
【００２７】
一実施形態として、画像保持部１２には、画像入力部１１から入力される距離画像が保持される。例えば、画像保持部１２は、画像入力部１１から入力される距離画像がｎフレームであるとしたとき、ｎフレームから所定数のフレームまで遡って距離画像を保持することができる。このとき、所定数のフレームよりも前のフレームの距離画像は、画像保持部１２から自動的に削除されることとしてもかまわない。このように距離画像が保存される他、画像保持部１２には、後述の不一致度算出部１３により距離画像から姿勢の推定対象とする物体の領域が切り出された部分画像がさらに保持される。
【００２８】
不一致度算出部１３は、姿勢の推定対象とする物体に対応する領域が画像のフレームの前後で不一致となる度合いを算出する処理部である。この不一致算出部１３は、算出部の一例である。
【００２９】
一実施形態として、不一致度算出部１３は、画像入力部１１によりｎフレーム目の距離画像が入力されると、当該ｎフレーム目の距離画像から手に対応する領域を抽出する。以下、距離画像のうち手に対応する領域のことを「手領域」と記載する場合がある。このような手領域を抽出する場合、不一致度算出部１３は、一例として、距離画像の中で距離の差が所定の閾値以上である画素をエッジとして検出することにより、物体の候補の輪郭を切り出す。そして、不一致度算出部１３は、先のように輪郭が切り出された物体の候補のうち、姿勢の推定対象である手のモデルの大きさから逸脱しない面積を持つ物体の候補を手領域として抽出する。
【００３０】
その上で、不一致度算出部１３は、ｎフレーム目の手領域と、画像保持部１２により保持されたｎ−１フレーム目の手領域とを比較することにより、不一致度を算出する。例えば、不一致度算出部１３は、ｎフレーム目の手領域と、ｎ−１フレーム目の手領域とを互いの重心や中心などの対応点が一致するように重ね合わせる。続いて、不一致度算出部１３は、ｎフレーム目の手領域とｎ−１フレーム目の手領域とが重ならない画素を計数すると共に、ｎフレーム目の手領域とｎ−１フレーム目の手領域とが重なる画素を計数する。これによって、ｎフレーム及びｎ−１フレームの間で手領域が重なる部分の面積ａと、ｎフレーム及びｎ−１フレームの間で手領域が重ならない部分の面積ｂとが求まる。その上で、不一致度算出部１３は、一例として、面積ｂを面積ａおよび面積ｂの和で除算する計算、すなわちｂ／（ａ＋ｂ）により、不一致度を算出する。
【００３１】
図３は、可動範囲の設定例を示す図である。図３には、ｎ−１フレーム目の手領域３０Ａがハッチング無しで示される一方で、ｎフレーム目の手領域３０Ｂがハッチング有りで示されている。これらｎ−１フレーム目の手領域３０Ａおよびｎフレーム目の手領域３０Ｂが重心等を対応点にして重ね合わされる。その後、ｎ−１フレーム目の手領域３０Ａおよびｎフレーム目の手領域３０Ｂが重ならない画素が計数されると共に、ｎ−１フレーム目の手領域３０Ａおよびｎフレーム目の手領域３０Ｂが重なる画素が計数される。これによって、ｎフレーム及びｎ−１フレームの間で手領域が重ならない部分の面積と、ｎフレーム及びｎ−１フレームの間で手領域が重なる部分の面積とが算出される。その後、ｎフレーム及びｎ−１フレームの間で手領域が重ならない部分の面積を、ｎフレーム及びｎ−１フレームの間で手領域が重なる部分の面積とｎフレーム及びｎ−１フレームの間で手領域が重ならない部分の面積との和で除算することにより、不一致度が１０％と求まる。
【００３２】
なお、ここでは、ｎフレーム目の手領域と、ｎ−１フレーム目の手領域とから不一致度を算出する場合を例示したが、ｎフレーム目の距離画像と、ｎ−１フレーム目の距離画像とから不一致度を算出することとしてもかまわない。この場合、一例として、ｎフレーム及びｎ−１フレームの間で、互いに対応する位置の画素が持つ画素値、例えばデプス値ｄの差が所定の範囲以内でない画素と、所定の範囲内である画素とを計数してこれらの割合を不一致度として算出することとすればよい。
【００３３】
可動範囲設定部１４は、モデルに含まれる可動部が可動すると推定される範囲を設定する処理部である。この可動範囲設定部１４は、設定部の一例である。以下では、可動部が可動すると推定される範囲のことを「可動範囲」と記載する一方で、可動部が可動できる最大の範囲のことを「可動域」と記載する場合がある。
【００３４】
一実施形態として、可動域設定部１４は、不一致度算出部１３により不一致度が算出される度に、当該不一致度と関節の可動域とから可動範囲を関節ごとに設定する。このような可動範囲の設定は、一例として、図２に太字で示されたパラメータを含む関節ごとに実施される。さらに、関節の可動域には、図２に太字で示されたパラメータを含む関節ごとに、一例として、姿勢の推定対象とする人物の手から実際に測定された測定値を参照することとしてもよいし、年代、男女、人種などのうち少なくとも１つの項目に対応付けられた統計値のうち姿勢の推定対象とする人物が該当する項目に対応付けられた統計値を参照することもできる。
【００３５】
ここで、可動範囲設定部１４は、不一致度が大きくなるにしたがって大きい可動範囲を設定する一方で、不一致度が小さくなるにしたがって小さい可動範囲を設定する。より具体的には、可動範囲設定部１４は、各関節に設定された可動域に不一致度算出部１３により算出された不一致度が乗算された乗算値を可動範囲として関節ごとに設定する。例えば、図３に示した通り、不一致度が１０％と算出された場合を想定する。この場合、可動域が９０°である関節の可動範囲を算出する場合、９０°×１０％の計算により、９°（±４．５°）が当該関節の可動範囲として設定される。このような関節の可動範囲をｎ−１フレーム目に推定された関節の角度に加算する変化量を定める乱数の発生範囲として用いることにより、乱数の発生範囲を関節の可動域から関節の可動範囲まで絞り込むことができる。
【００３６】
パーティクル生成部１５は、パーティクルを生成する処理部である。このパーティクル生成部１５は、生成部の一例である。
【００３７】
一実施形態として、パーティクル生成部１５は、可動範囲設定部１４により関節ごとに可動範囲が設定される度に、関節ごとに設定された可動範囲を乱数発生部１５ａによる乱数の発生範囲として乱数を関節ごとに発生させる。その上で、パーティクル生成部１５は、乱数発生部１５ａにより関節ごとに発生された乱数を各関節の変化量としてｎ−１フレーム目に推定された各関節の角度に加算することにより、パーティクルを生成する。このようなパーティクルの生成を繰り返すことにより、パーティクル生成部１５は、所定数のパーティクルを姿勢パラメータ情報１５ｂとして生成する。ここで、パーティクル生成部１５が生成するパーティクルの数は、一例として、プロセッサの性能や出力を要求する姿勢の推定精度が高くなるにつれて多く設定することができる。この他、姿勢の推定の所要期間が短くなるにつれて少ないパーティクルを生成することもできる。このように生成された姿勢パラメータ情報１５ｂが第１の更新部１６に出力される。
【００３８】
第１の更新部１６は、各パーティクルに関するパラメータを更新する処理部である。
【００３９】
一実施形態として、第１の更新部１６は、パーティクルごとに変化速度および姿勢を更新する。例えば、ｉ番目のパーティクルに関するｋ＋１回目の更新が行われる場合、第１の更新部１６は、上記の式（１）にしたがってｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢の変化速度ｖを算出する。すなわち、第１の更新部１６は、ｋ回目の更新時に算出されたｉ番目のパーティクルの変化速度ｖを式（１）の第１項に代入する。さらに、第１の更新部１６は、ｋ回目の更新時に第２の更新部１７により更新された、１つのパーティクルの中で最適である姿勢ｘＰｂｅｓｔ，ｉと、ｋ回目の更新時におけるｉ番目のパーティクルの姿勢ｘとを式（１）の第２項に代入する。さらに、第１の更新部１６は、ｋ回目の更新時に第２の更新部１７により更新された全てのパーティクルの中で最適である姿勢ｘＧｂｅｓｔ，ｉと、ｋ回目の更新にけるｉ番目のパーティクルの姿勢ｘとを式（１）の第３項に代入する。これにより、ｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢の変化速度ｖが算出される。
【００４０】
その上で、第１の更新部１６は、上記の式（２）にしたがってｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢ｘを算出する。すなわち、第１の更新部１６は、ｋ回目の更新にけるｉ番目のパーティクルの姿勢ｘを式（２）の第１項に代入すると共に、式（１）により求められた、ｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢の変化速度ｖを式（２）の第２項に代入する。これにより、ｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢ｘを算出することができる。
【００４１】
これら式（１）および式（２）の計算を全てのパーティクルに実行することにより、各パーティクルの変化速度および姿勢を更新できる。
【００４２】
第２の更新部１７は、最適値の更新を行う処理部である。
【００４３】
一実施形態として、第２の更新部１７は、第１の更新部１６によりパーティクルの変化速度および姿勢が更新された後、パーティクルごとの姿勢の最適値ｘＰｂｅｓｔ，ｉと、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉとを更新する。
【００４４】
例えば、第２の更新部１７は、ｋ＋１回目の更新で算出されたｉ番目のパーティクルと、画像入力部１２から観測データとして入力されるｎフレーム目の距離画像との誤差からｋ＋１回目の更新で算出されたｉ番目のパーティクルの評価値を算出する。その上で、第２の更新部１７は、更新回数が０回目からｋ＋１回目までの間に算出されたｉ番目のパーティクルの姿勢ｘのうち評価値が最高であるものをｋ＋１回目の更新におけるｉ番目のパーティクルの姿勢の最適値ｘＰｂｅｓｔ，ｉとして更新する。このような更新を全てのパーティクルに実施することにより、パーティクルごとに姿勢の最適値ｘＰｂｅｓｔ，ｉを更新する。さらに、第２の更新部１７は、ｋ＋１回目の更新で算出された全てのパーティクルの姿勢ｘのうち最大の評価値を有するパーティクルをｋ＋１回目の更新における全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉとして更新する。
【００４５】
このようにパーティクルごとの姿勢の最適値ｘＰｂｅｓｔ，ｉおよび全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉが行われた後、第２の更新部１７は、姿勢推定の終了条件を満たすか否かを判定する。例えば、第２の更新部１７は、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉの評価値が所定の閾値以上であるか否かを判定する。このとき、第２の更新部１７は、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉの評価値が閾値以上である場合、姿勢の推定を終了する。一方、第２の更新部１７は、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉの評価値が閾値以上でない場合、更新回数が所定の上限回数に達したか否かをさらに判定する。そして、第２の更新部１７は、更新回数が上限回数に達した場合、姿勢の推定を終了する。一方、第２の更新部１７は、更新回数が上限回数に達していない場合、各パーティクルの変化速度および姿勢の更新を第１の更新部１６に実行させる。
【００４６】
出力部１８は、姿勢の推定結果を出力する処理部である。
【００４７】
一実施形態として、出力部１８は、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉの評価値が閾値以上である場合、あるいは更新回数が上限回数に達した場合、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉを所定の出力先に出力する。このような出力先の一例として、手の動きやサインなどのジェスチャを認識するジェスチャ認識プログラムなどが挙げられる。このジェスチャ認識をＵＩに用いることにより、情報処理装置を始めとする各種の電子機器に対する指示操作の検出を実現することができる。この他、ティスプレイ等の表示部を出力先とすることとしてもかまわない。
【００４８】
なお、図１に示す画像入力部１１、不一致度算出部１３、可動範囲設定部１４、パーティクル生成部１５、第１の更新部１６、第２の更新部１７及び出力部１８などの機能部は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などのハードウェアプロセッサにより実装することができる。ここでは、プロセッサの一例として、ＣＰＵやＭＰＵを例示したが、汎用型および特化型を問わず、任意のプロセッサにより実装することができる。この他、上記の機能部は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによって実現されることとしてもかまわない。
【００４９】
また、図１に示す画像保持部１２、さらには、上記の機能部が使用するワークエリアには、一例として、各種の半導体メモリ素子、例えばＲＡＭ（Random  Access  Memory)やフラッシュメモリもしくはその記憶領域の一部を採用することができる。また、必ずしも主記憶装置が用いられずともよく、ＨＤＤ（Hard  Disk  Drive）、光ディスクやＳＳＤ（Solid  State  Drive）などの補助記憶装置を採用することとしてもかまわない。
【００５０】
［姿勢推定処理］
図４は、実施例１に係る姿勢推定処理の手順を示すフローチャートである。この処理は、画像入力部１１により距離画像が入力される度に繰り返し行われる。図４に示すように、画像入力部１１により距離画像が入力されると（ステップＳ１０１）、不一致度算出部１３は、ステップＳ１０１で入力されたｎフレーム目の距離画像から抽出された手領域と、画像保持部１２により保持されたｎ−１フレーム目の距離画像から抽出された手領域との不一致度を算出する（ステップＳ１０２）。
【００５１】
続いて、可動域設定部１４は、ステップＳ１０２で関節ごとに算出された不一致度と関節の可動域とから可動範囲を関節ごとに設定する（ステップＳ１０３）。その上で、パーティクル生成部１５は、ステップＳ１０３で関節ごとに設定された可動範囲を乱数発生部１５ａによる乱数の発生範囲として発生された乱数を各関節の変化量としてｎ−１フレーム目に推定された各関節の角度に加算する処理を繰り返すことにより、所定数のパーティクルを生成する（ステップＳ１０４）。
【００５２】
そして、第１の更新部１６は、上記の式（１）にしたがって姿勢の変化速度ｖｋをパーティクルごとに更新すると共に、上記の式（２）にしたがって姿勢ｘｋを更新する処理をパーティクルごとに行う（ステップＳ１０５）。その上で、第２の更新部１７は、パーティクルごとの姿勢の最適値ｘＰｂｅｓｔ，ｉと、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉとを更新する（ステップＳ１０６）。
【００５３】
そして、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉの評価値が閾値以上になるか、あるいは更新回数が上限回数に達するまで（ステップＳ１０７Ｎｏ）、上記のステップＳ１０５及びステップＳ１０６の処理が繰り返し行われる。
【００５４】
その後、全パーティクルの姿勢の最適値ｘＧｂｅｓｔ，ｉの評価値が閾値以上になった場合、あるいは更新回数が上限回数に達した場合（ステップＳ１０７Ｙｅｓ）、処理が終了される。
【００５５】
［効果の一側面］
上述してきたように、本実施例に係る姿勢推定装置１０は、入力される画像のフレーム間の差分から求めた不一致度と関節の可動域とから関節ごとに設定する可動範囲をＰＳＯにおける各関節の変化量を定める乱数の生成範囲として用いる。このため、乱数の発生範囲を関節の可動域から関節の可動範囲まで絞り込むことができる。それ故、実際の姿勢の変化よりも過度に大きな範囲でパーティクルが生成されるのを抑制できる。したがって、本実施例に係る姿勢推定装置１０によれば、パーティクルを生成する乱数の発生範囲を適切に設定できる。
【００５６】
例えば、不一致度が０．５と算出された場合、各関節の可動域の０．５倍にまで関節の可動範囲が絞り込まれる。このとき、関節の数が１０であるとしたとき、ｋ＝０の初期値としてとりうる姿勢の変化量の範囲は、乱数の発生範囲を関節の可動域とする場合に比べて、０．５１０（≒１／１０００）倍となる。そして、ＰＳＯでは、式（１）における「ｗ」や「ｃ」といったパラメータにより更新結果が収束する速度が決まるが、０．５１０（≒１／１０００）倍の範囲までパーティクルが収束するのに要する更新回数を１０回程度低減できる。さらに、４０回程度の更新回数でパーティクルが収束する場合、２５％の処理軽減、言い換えれば２５％の処理時間短縮が可能となる。
【００５７】
図５は、乱数の発生範囲の一例を示す図である。図５には、関節の可動域に対応する乱数の発生範囲Ｅ１と、不一致度にしたがって設定された関節の可動範囲に対応する乱数の発生範囲Ｅ２とされる場合とが示されている。このうち、乱数の発生範囲Ｅ１は、破線により示される一方で、乱数の発生範囲Ｅ２は、ハッチングにより示されている。図５に示すように、乱数の発生範囲Ｅ１は、前回の姿勢の推定結果から実際の姿勢への姿勢の変化に比べて乱数の発生範囲が広すぎる。この場合、パーティクルの更新結果が現実の姿勢に収束しづらくなり、パーティクルの更新結果が実際の姿勢に収束するまでの更新回数も増大する。一方、乱数の発生範囲Ｅ２は、乱数の発生範囲Ｅ１に比べて狭い範囲に絞り込まれる。このため、パーティクルの更新結果が現実の姿勢に収束し易くでき、パーティクルの更新結果が実際の姿勢に収束するまでの更新回数を低減できることがわかる。
【００５８】
図６は、乱数の発生範囲の一例を示す図である。図６にも、関節の可動域に対応する乱数の発生範囲Ｅ３と、不一致度にしたがって設定された関節の可動範囲に対応する乱数の発生範囲Ｅ４とが示されている。このうち、乱数の発生範囲Ｅ３は、破線により示される一方で、乱数の発生範囲Ｅ４は、ハッチングにより示されている。さらに、図６には、実際の姿勢に対応する最適解Ｂ１と、最適解以外にも局所的に優位となる５つの局所解Ｌ１〜Ｌ５が例示されている。このような局所解は、一側面として、姿勢の最適値の更新や繰り返しの適否の判定などを行うために用いる姿勢の評価値を算出する評価関数が高次元となることが一因となって発生する。
【００５９】
図６に示すように、乱数の発生範囲Ｅ３は、前回の姿勢の推定結果から実際の姿勢への姿勢の変化に比べて乱数の発生範囲が広すぎる。このような乱数の発生範囲Ｅ３には、最適解Ｂ１と共に５つの局所解Ｌ１〜Ｌ５が含まれる。一方、乱数の発生範囲Ｅ４は、乱数の発生範囲Ｅ３に比べて狭い範囲に絞り込まれる。このような乱数の発生範囲Ｅ４には、最適解Ｂ１と共に２つの局所解Ｌ４及びＬ５が含まれる。このように乱数の発生範囲Ｅ４が絞り込まれることにより、３つの局所解Ｌ１〜Ｌ３を回避できる。それ故、パーティクルの更新を繰り返す途中で局所解に陥る可能性を低減できる結果、姿勢の推定精度を向上させることができる。
【実施例２】
【００６０】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００６１】
［一致度の算出］
上記の実施例１では、可動範囲の設定に不一致度を用いる場合を例示したが、一致度を用いることとしてもかまわない。すなわち、ｎフレーム及びｎ−１フレームの間で手領域が重なる部分の面積ａを、ｎフレーム及びｎ−１フレームの間で手領域が重なる部分の面積ａとｎフレーム及びｎ−１フレームの間で手領域が重ならない部分の面積ｂとの和で除算することにより、一致度を算出することもできる。この場合、１（＝１００％）から一致度が減算された減算値を関節の可動域に乗算することにより、不一致度が関節の可動域に乗算される場合と同等の結果を得ることができる。
【００６２】
［可動範囲の設定の応用例］
上記の実施例１では、不一致度を関節の可動域に乗算することにより可動範囲を設定する場合を例示したが、例えば、関節の可動範囲の下限値を関節の可動域の３割とし、関節の可動範囲の上限値を７割とし、不一致度の値に応じて上限値および下限値に定まる区間を線形または非線形で算出することとしてもかまわない。
【００６３】
［不一致度の算出の応用例］
上記の姿勢推定装置１０は、ｎフレーム目の距離画像と、ｎ−１フレーム目の距離画像の間における距離の統計値、例えば平均値を不一致度として算出することもできる。これらｎフレーム目およびｎ−１フレーム目の各距離画像から、上記の実施例１と同様にして、手領域が抽出される。
【００６４】
図７は、不一致度算出の応用例を示す図である。図７には、ｎ−１フレーム目の手領域に含まれる点群Ｓ１〜Ｓ８と、ｎフレーム目の手領域に含まれる点群Ｕ１〜Ｕ８とが示されている。ここでは、手領域に含まれる点群として８つの点を抜粋して例示したが、これはあくまで模式図であり、この数値に限定されない。これら点群Ｓ１〜Ｓ８と点群Ｕ１〜Ｕ８は、ＩＣＰ（Iterative  Closest  Point）アルゴリズムにしたがって重ね合わされる。すなわち、ｎフレーム目の手領域に含まれる点ごとに、ｎ−１フレーム目の手領域に含まれる点のうちｎフレーム目の手領域に含まれる点が探索される。例えば、点Ｓ１には点Ｕ１、点Ｓ２には点Ｕ２、点Ｓ３には点Ｕ３、点Ｓ４には点Ｕ４、点Ｓ５には点Ｕ５、点Ｓ６には点Ｕ６、点Ｓ７には点Ｕ７、点Ｓ８には点Ｕ８が探索される。その後、ｎフレーム目の手領域に含まれる点ごとに、当該点と、当該点に対応するｎ−１フレーム目の手領域上の点との距離が算出される。図７の例で言えば、点Ｓ１および点Ｕ１の距離、点Ｓ２及び点Ｕ２の距離、点Ｓ３及び点Ｕ３の距離、点Ｓ４及び点Ｕ４の距離、点Ｓ５及び点Ｕ５の距離、点Ｓ６及び点Ｕ６の距離、点Ｓ７及び点Ｕ７の距離、点Ｓ８及び点Ｕ８の距離が算出される。これらの８つの距離の平均値が平均距離ｌとして算出される。この平均距離ｌを所定の閾値、例えば手領域が完全に重ならなくなる最小の移動距離などで除算することにより、最大値を１、言い換えれば１００％とし、平均距離ｌを正規化することにより、不一致度として用いることができる。
【００６５】
［分散および統合］
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されておらずともよい。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、画像入力部１１、不一致度算出部１３、可動範囲設定部１４、パーティクル生成部１５、第１の更新部１６、第２の更新部１７または出力部１８を姿勢推定装置１０の外部装置としてネットワーク経由で接続するようにしてもよい。また、画像入力部１１、不一致度算出部１３、可動範囲設定部１４、パーティクル生成部１５、第１の更新部１６、第２の更新部１７又は出力部１８を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の姿勢推定装１０置の機能を実現するようにしてもよい。また、画像保持部１２に記憶される情報の全部または一部を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の姿勢推定装置１０の機能を実現するようにしてもかまわない。
【００６６】
［姿勢推定プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図８を用いて、上記の実施例と同様の機能を有する姿勢推定プログラムを実行するコンピュータの一例について説明する。
【００６７】
図８は、実施例１及び実施例２に係る姿勢推定プログラムを実行するコンピュータのハードウェア構成例を示す図である。図８に示すように、コンピュータ１００は、操作部１１０ａと、スピーカ１１０ｂと、カメラ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ１７０と、ＲＡＭ１８０とを有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【００６８】
ＨＤＤ１７０には、図８に示すように、上記の実施例１で示した画像入力部１１、不一致度算出部１３、可動範囲設定部１４、パーティクル生成部１５、第１の更新部１６、第２の更新部１７及び出力部１８と同様の機能を発揮する姿勢推定プログラム１７０ａが記憶される。この姿勢推定プログラム１７０ａは、図１に示した画像入力部１１、不一致度算出部１３、可動範囲設定部１４、パーティクル生成部１５、第１の更新部１６、第２の更新部１７及び出力部１８の各構成要素と同様、統合又は分離してもかまわない。すなわち、ＨＤＤ１７０には、必ずしも上記の実施例１で示した全てのデータが格納されずともよく、処理に用いるデータがＨＤＤ１７０に格納されればよい。例えば、上記の機能部のうち画像入力部１１、不一致度算出部１３及び可動範囲設定部１４が発揮する機能、すなわち可動範囲を設定するまでの機能をモジュール化することもできる。
【００６９】
このような環境の下、ＣＰＵ１５０は、ＨＤＤ１７０から姿勢推定プログラム１７０ａを読み出した上でＲＡＭ１８０へ展開する。この結果、姿勢推定プログラム１７０ａは、図８に示すように、姿勢推定プロセス１８０ａとして機能する。この姿勢推定プロセス１８０ａは、ＲＡＭ１８０が有する記憶領域のうち姿勢推定プロセス１８０ａに割り当てられた領域にＨＤＤ１７０から読み出した各種データを展開し、この展開した各種データを用いて各種の処理を実行する。例えば、姿勢推定プロセス１８０ａが実行する処理の一例として、図４に示す処理などが含まれる。なお、ＣＰＵ１５０では、必ずしも上記の実施例１で示した全ての処理部が動作せずともよく、実行対象とする処理に対応する処理部が仮想的に実現されればよい。
【００７０】
なお、上記の姿勢推定プログラム１７０ａは、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶されておらずともかまわない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に姿勢推定プログラム１７０ａを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から姿勢推定プログラム１７０ａを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに姿勢推定プログラム１７０ａを記憶させておき、コンピュータ１００がこれらから姿勢推定プログラム１７０ａを取得して実行するようにしてもよい。
【符号の説明】
【００７１】
１０    姿勢推定装置
１１    画像入力部
１２    画像保持部
１３    不一致度算出部
１４    可動範囲設定部
１５    パーティクル生成部
１６    第１の更新部
１７    第２の更新部
１８    出力部
【図１】
2018092273.tif 000007
【図２】
2018092273.tif 000008
【図３】
2018092273.tif 000009
【図４】
2018092273.tif 000010
【図５】
2018092273.tif 000011
【図６】
2018092273.tif 000012
【図７】
2018092273.tif 000013
【図８】
2018092273.tif 000014