(57)【要約】【課題】  手以外の物体を含む距離データから手の姿勢を正しく認識する。【解決手段】  手認識装置は、測定対象までの距離を示す距離データを受信し、距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割し、複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定し、手腕部領域内の距離データと手モデルとに基づいて、手の位置と姿勢を検出する。【選択図】  図１
2019096119.tif 000002
【特許請求の範囲】
【請求項１】
測定対象までの距離を示す距離データを受信し、
距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割し、
前記複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定し、
前記手腕部領域内の距離データと前記手モデルとに基づいて、手の位置と姿勢を検出する
ことを特徴とする手認識方法。
【請求項２】
請求項１に記載の手認識方法において、
前記特定の大きさは、測定対象の手までの距離に左右されずに、手および腕を含む大きさに予め決定される
ことを特徴とする手認識方法。
【請求項３】
請求項１または請求項２に記載の手認識方法において、
前記腕モデルは、腕を円筒形に抽象化したモデルであり、腕の部分の長さと手の部分に対する角度とを示すパラメータを含む
ことを特徴とする手認識方法。
【請求項４】
請求項１ないし請求項３のいずれか１項に記載の手認識方法において、
前記複数の部分領域毎に、前記手モデルと前記腕モデルとを組み合わせた手腕モデルの位置および姿勢と、部分領域内の距離データで表される物体の形状との差異の程度を示す第１コストを、前記手腕モデルの位置と姿勢を変更して算出し、算出した複数の第１コストのうち、最小の第１コストを示す前記手腕モデルの位置と姿勢を第１基準位置姿勢に決定する第１処理を実行し、さらに、前記手腕モデルの位置と姿勢を前記第１基準位置姿勢を基準にして変更して第１コストを算出し、算出した複数の第１コストのうち、最小の第１コストを前記部分領域の第１コストに決定する第２処理を実行し、
前記第２処理により決定した前記複数の部分領域のそれぞれの第１コストのうち、最小の第１コストを示す部分領域を、前記手腕部領域と推定する
ことを特徴とする手認識方法。
【請求項５】
請求項４に記載の手認識方法において、
前記手腕モデルの位置および姿勢と、前記手腕部領域内の距離データで表される物体の形状との差異の程度を示す第１コストを、前記手腕モデルの位置と姿勢を変更して算出し、算出した複数の第１コストのうち、最小の第１コストを示す前記手腕モデルの位置と姿勢を第２基準位置姿勢に決定する第３処理を実行し、さらに、前記手モデルの位置と姿勢を前記第２基準位置姿勢を基準にして変更して、前記手モデルの位置および姿勢と、前記手腕部領域内の距離データで表される物体の形状との差異の程度を示す第２コストを算出し、算出した複数の第２コストのうち、最小の第２コストを示す前記手モデルの位置と姿勢を手の位置と姿勢に決定する第４処理を実行する
ことを特徴とする手認識方法。
【請求項６】
請求項５に記載の手認識方法において、
第２コストが予め設定される閾値以下になるまで、前記第４処理を繰り返す
ことを特徴とする手認識方法。
【請求項７】
請求項１ないし請求項６のいずれか１項に記載の手認識方法において、
前記手腕部領域内の距離データと前記手モデルと前記腕モデルとに基づいて、手の位置と姿勢の他に、腕の位置と姿勢を検出する
ことを特徴とする手認識方法。
【請求項８】
測定対象までの距離を示す距離データを受信し、
距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割し、
前記複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定し、
前記手腕部領域内の距離データと前記手モデルとに基づいて、手の位置と姿勢を検出する
処理をコンピュータに実行させるための手認識プログラム。
【請求項９】
測定対象までの距離を示す距離データを受信するデータ受信部と、
距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割する領域分割部と、
前記複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定する推定部と、
前記手腕部領域内の距離データと前記手モデルとに基づいて、手の位置と姿勢を検出する検出部と
を有することを特徴とする手認識装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、手認識方法、手認識プログラムおよび手認識装置に関する。
【背景技術】
【０００２】
制御対象の機器をユーザのジェスチャーに応じて制御する情報入力装置が提案されている（例えば、特許文献１参照）。例えば、情報入力装置は、ユーザと制御対象の機器とを含む環境を観測する観測装置により取得される画像からユーザの手先の部位を識別する。そして、情報入力装置は、識別した手先の部位と手の形状毎に予め準備された標準的な手の３次元モデルとの間で形状の識別を行い、手先の形状、位置および姿勢を認識し、認識結果に基づいて機器を制御する。
【０００３】
また、画像から切り出した所定の大きさの領域に手の特徴が存在するかを検出する処理を、切り出す領域の位置等を変更して画像全体に対して実行することにより、手の位置および大きさ等を認識する手認識技術が提案されている（例えば、非特許文献１参照）。
【０００４】
また、手のモデルの姿勢を変更しながら、距離を測定する距離センサから得られる距離データが示す形状に最も近い手のモデルの姿勢を探索する手認識技術が提案されている（例えば、非特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２０５９８３号公報
【非特許文献】
【０００６】
【非特許文献１】Wei Fan, Li Chen, Wei Liu, Yuan He, Jun Sun and Shutao Li, “Monocular Vision Based Relative Depth Estimation for Hand Gesture Recognition”, MVA2013 IAPR International Conference on Machine Vision Applications, May 20-23, 2013, Kyoto, JAPAN, pp.234-237
【非特許文献２】Chen Qian, Xiao Sun, Yichen Wei, Xiaoou Tang and Jian Sun, “Realtime and Robust Hand Tracking from Depth”, IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014, pp.1106-1113
【発明の概要】
【発明が解決しようとする課題】
【０００７】
画像内の手の大きさは、例えば、カメラから手までの位置が変化することにより変化する。このため、画像から切り出した所定の大きさの領域に手の特徴が存在するかを検出する方法では、手の特徴を検出する精度の低下を抑制するために、切り出す領域の位置の他に切り出す領域の大きさも変更して画像全体を探索する。この場合、画像から切り出す領域の大きさを変化させずに画像全体を探索する場合に比べて、探索の処理量が増加する。
【０００８】
また、手のモデルの姿勢を変更しながら、距離データが示す形状に最も近い手のモデルの姿勢を探索する方法では、手のモデルに含まれる複数の点のうち、距離データが示す複数の点の各々に対応する点が手のモデルの姿勢毎に検出される。そして、距離データが示す複数の点と手のモデルに含まれる複数の点とにおいて互いに対応する点の距離が算出され、互いに対応する点の距離の合計を最小にするように、手のモデルの形状（手の姿勢）が最適化される。ここで、手の観測に距離センサが用いられる場合、手の実際の大きさは距離データに基づいて算出可能であるが、観測される手の大きさは、手の状態によって変化し、例えば、手を開いた状態と握った状態とで異なる。このため、例えば、手を開いた状態とほぼ同じ大きさの物体が存在する場合、握った状態の手を含む領域が検出されずに、握った状態の手と異なる物体を含む領域が手を含む領域として誤って検出されるおそれがある。
【０００９】
１つの側面では、本発明は、手以外の物体を含む距離データから手の姿勢を正しく認識することを目的とする。
【課題を解決するための手段】
【００１０】
１つの実施態様では、手認識装置は、測定対象までの距離を示す距離データを受信し、距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割し、複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定し、手腕部領域内の距離データと手モデルとに基づいて、手の位置と姿勢を検出する。
【発明の効果】
【００１１】
１つの側面では、本発明は、手以外の物体を含む距離データから手の姿勢を正しく認識することができる。
【図面の簡単な説明】
【００１２】
【図１】手認識方法、手認識プログラムおよび手認識装置の一実施形態を示す図である。
【図２】図１に示した手認識装置の動作の一例を示す図である。
【図３】手認識方法、手認識プログラムおよび手認識装置の別の実施形態を示す図である。
【図４】手モデルと腕モデルのパラメータの一例を示す図である。
【図５】コストの計算方法の一例を示す図である。
【図６】図３に示した手認識装置の動作の一例を示す図である。
【図７】図６に示した分割処理の一例を示す図である。
【図８】図６に示したコスト算出処理の一例を示す図である。
【図９】図６に示した姿勢推定処理の一例を示す図である。
【図１０】手認識方法、手認識プログラムおよび手認識装置の別の実施形態を示す図である。
【図１１】図１０に示した手認識装置の動作の一例を示す図である。
【図１２】図１１に示した姿勢推定処理の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、実施形態について、図面を用いて説明する。
【００１４】
図１は、手認識方法、手認識プログラムおよび手認識装置の一実施形態を示す。図１に示す手認識装置１０は、例えば、人物の手の動き等の人物の行動を分析して物品等の販売促進または作業の効率化等をはかるシステムにセンサ２０とともに含まれる。センサ２０は、例えば、人物等の測定対象との距離を測定する距離センサ等である。手認識装置１０は、所定の位置（例えば、センサ２０の位置）から人物等の測定対象までの距離を示す距離データＤＤＴをセンサ２０から受信する。そして、手認識装置１０は、手の位置および姿勢等を距離データＤＤＴに基づいて認識し、認識結果を出力する。以下では、手等の位置と姿勢は、位置姿勢とも称される。図１に示すかぎ括弧内には、手認識装置１０による手認識方法の概要を示す。図１では、手認識装置１０の動作を、図１のかぎ括弧内に示す手認識方法の概要と合わせて説明する。
【００１５】
手認識装置１０は、例えば、コンピュータ等の情報処理装置により実現され、ＣＰＵ（Central Processing Unit）等のプロセッサ１００と、距離データＤＤＴをセンサ２０から受信するデータ受信部２００と、メモリ３００とを有する。プロセッサ１００、データ受信部２００およびメモリ３００は、バスＢＵＳに接続される。
【００１６】
例えば、プロセッサ１００は、メモリ３００に格納される手認識プログラムを実行し、手認識装置１０の動作を制御する。なお、手認識プログラムは、手認識装置１０の記憶装置のうちのメモリ３００以外の記憶装置に格納されてもよく、手認識装置１０の外部の記憶装置に格納されてもよい。また、手認識プログラムは、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＵＳＢ（Universal Serial Bus）メモリ等のコンピュータにより読み取り可能な記録媒体ＲＥＣに格納されてもよい。この場合、記録媒体ＲＥＣに格納された手認識プログラムは、手認識装置１０に設けられる図示しない入出力インタフェースを介して記録媒体ＲＥＣからメモリ３００等に転送される。なお、手認識プログラムは、記録媒体ＲＥＣから図示しないハードディスクに転送された後、ハードディスクからメモリ３００に転送されてもよい。
【００１７】
プロセッサ１００は、例えば、メモリ３００に格納される手認識プログラムを実行することにより、領域分割部４００、推定部５００および検出部６００の機能を実現する。すなわち、手認識装置１０は、データ受信部２００、領域分割部４００、推定部５００および検出部６００を有する。なお、領域分割部４００、推定部５００および検出部６００は、ハードウェアのみで実現されてもよい。
【００１８】
領域分割部４００は、センサ２０から出力される距離データＤＤＴを、データ受信部２００を介して受ける。そして、領域分割部４００は、距離データＤＤＴで表される３次元の領域を、特定の大きさの複数の部分領域ＳＥＧＲ（ＳＥＧＲｉ、ＳＥＧＲｊ）に分割する。図１に示す例では、領域分割部４００は、センサ２０の位置等の所定の位置から対象物までの距離と画素値とが対応付けられた画素を含む距離画像ＤＩＭＧ（ＤＩＭＧａ、ＤＩＭＧｂ）を、複数の部分領域ＳＥＧＲ（ＳＥＧＲｉ、ＳＥＧＲｊ）に分割する。距離画像ＤＩＭＧは、距離データＤＤＴで表される３次元の領域の一例である。なお、距離データＤＤＴで表される３次元の領域は、距離画像ＤＩＭＧに限定されない。
【００１９】
距離画像ＤＩＭＧａは、手を開いている状態の人物までの距離を測定したセンサ２０の距離データＤＤＴから生成される。また、距離画像ＤＩＭＧｂは、手を握っている状態の人物までの距離を測定したセンサ２０の距離データＤＤＴから生成される。距離画像ＤＩＭＧの濃い網掛け部分は、薄い網掛け部分より、センサ２０に近い対象物を示す。また、距離画像ＤＩＭＧａの部分領域ＳＥＧＲｊ内に示す破線の矩形および距離画像ＤＩＭＧｂの部分領域ＳＥＧＲｉ内に示す破線の矩形は、手を握っている状態を基準にした部分領域の大きさを示す。手を握っている状態を基準にした大きさの部分領域（図１に示す破線の矩形）で距離画像ＤＩＭＧａを分割すると、開いた手の一部が部分領域からはみ出すため、後述する推定部５００による推定等の精度が低下するおそれがある。このため、手認識装置１０では、部分領域ＳＥＧＲの大きさ（特定の大きさ）は、測定対象の人物の手の状態に拘わらず、成人男性の標準的な手を広げた場合の大きさを基準にして予め決定される。なお、手の観測に距離センサ等のセンサ２０が用いられる場合、センサ２０から測定対象の手までの距離に左右されずに、手の実際の大きさを距離データＤＤＴに基づいて算出可能である。すなわち、部分領域ＳＥＧＲは、センサ２０から測定対象の手までの距離に左右されずに、手および腕を含む特定の大きさに予め決定される。したがって、手を握っている状態の距離画像ＤＩＭＧｂでは、手の部分の他に腕の部分も部分領域ＳＥＧＲｉに含まれる。このため、後述する推定部５００および検出部６００では、人物の手をモデル化した手モデルに加えて、腕をモデル化した腕モデルも使用される。
【００２０】
領域分割部４００は、距離データＤＤＴで表される３次元の領域を分割した複数の部分領域ＳＥＧＲを示す情報（例えば、部分領域ＳＥＧＲ毎に対応付けた距離データＤＤＴ）を、推定部５００に転送する。なお、各部分領域ＳＥＧＲは、他の部分領域ＳＥＧＲと重複する部分を含んでもよい。
【００２１】
推定部５００は、複数の部分領域ＳＥＧＲのうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手モデルおよび腕モデルを用いて推定する。図１に示す例では、手モデルは、手を複数の球を用いて抽象化したモデルであり、指の関節の折れ曲がりの角度等を示すパラメータを含む。また、腕モデルは、腕を円筒形に抽象化したモデルであり、腕の部分の長さおよび手の部分に対する角度等を示すパラメータを含む。以下では、手モデルと腕モデルとを組み合わせたモデルは、手腕モデルとも称される。
【００２２】
例えば、推定部５００は、距離画像ＤＩＭＧを分割した複数の部分領域ＳＥＧＲ毎に、部分領域ＳＥＧＲ内の物体の形状と手腕モデルの位置姿勢との差異の程度を示す第１コストを手腕モデルの位置姿勢を変更しながら算出する。そして、推定部５００は、手腕モデルの位置姿勢を変更しながら算出した複数の第１コストのうち、最小の第１コストを部分領域ＳＥＧＲの第１コストに決定する。なお、第１コストおよび後述する第２コストは、比較対象の２つの差異が大きくなるほど増加する。第１コスト等の計算方法の一例は、図５で説明する。手腕モデルの位置姿勢を変更する回数は、例えば、実験またはシミュレーション等に基づいて予め設定される。なお、手腕モデルの位置姿勢は、例えば、乱数を使用してランダムに変更されてもよい。
【００２３】
また、推定部５００は、距離画像ＤＩＭＧを分割した複数の部分領域ＳＥＧＲのうち、第１コストが最小の部分領域ＳＥＧＲを、手腕部領域と推定する。手腕部領域は、手を含む部分領域ＳＥＧＲである。すなわち、推定部５００は、手腕部領域を推定することにより、手を含む部分領域ＳＥＧＲを推定する。
【００２４】
例えば、推定部５００は、距離画像ＤＩＭＧａの複数の部分領域ＳＥＧＲのうちの部分領域ＳＥＧＲｊを、手腕部領域と推定する。同様に、推定部５００は、距離画像ＤＩＭＧｂの複数の部分領域ＳＥＧＲのうちの部分領域ＳＥＧＲｉを、手腕部領域と推定する。そして、推定部５００は、手腕部領域（手腕部を含むと推定した部分領域ＳＥＧＲ）を示す手腕部領域情報と、手腕部領域の手腕モデルの位置姿勢を示す手腕部姿勢情報とを、検出部６００に転送する。
【００２５】
検出部６００は、推定部５００から受ける手腕部領域情報で示される手腕部領域内の距離データＤＤＴと手モデルとに基づいて、手の位置と姿勢を検出する。例えば、検出部６００は、手腕部領域内の物体の形状と手モデルの位置姿勢との差異の程度を示す第２コストを、手モデルの位置姿勢を変更しながら算出する。そして、検出部６００は、手モデルの位置姿勢を変更しながら算出した複数の第２コストのうちの最小の第２コストに対応する手モデルの位置姿勢を、手の位置と姿勢に決定する。この場合、検出部６００は、推定部５００から受ける手腕部姿勢情報で示される手腕モデルの位置姿勢を基準にして手モデルの位置姿勢をランダムに変更することにより、手モデルの位置姿勢の特定を効率よく実行できる。なお、手モデルの位置姿勢の変更は、例えば、実験またはシミュレーション等に基づいて予め設定された回数だけ繰り返されてもよいし、第２コストが予め設定された閾値以下になるまで繰り返されてもよい。
【００２６】
検出部６００は、探索範囲が推定部５００により推定された部分領域ＳＥＧＲ（手腕部領域）に絞られるため、距離画像ＤＩＭＧ全体を探索する場合に比べて、少ない計算量で手の位置姿勢を詳細に特定できる。検出部６００は、例えば、人物の手の動き等の人物の行動を分析して物品等の販売促進または作業の効率化等をはかるシステムに、手の位置と姿勢を示す情報を転送する。
【００２７】
このように、手認識装置１０は、予め設定された部分領域ＳＥＧＲの大きさを測定対象の人物の手の状態に応じて変更することなく、手腕部を含む手腕部領域を推定する。これにより、手認識装置１０は、測定対象の人物の手の状態に応じて部分領域ＳＥＧＲの大きさを変更して、手を含む部分領域ＳＥＧＲを推定する方法に比べて、手を含む部分領域ＳＥＧＲを推定する場合の処理量を低減できる。
【００２８】
また、手認識装置１０は、手モデルと腕モデルとを用いて、手腕部を含む手腕部領域を推定する。このため、手認識装置１０は、手腕部領域の推定に腕モデルを用いない場合に比べて、手腕部領域の推定精度が低下することを抑制できる。例えば、手認識装置１０は、距離画像ＤＩＭＧｂにおいて、手を開いた状態とほぼ同じ大きさの物体ＯＢＪを含む部分領域ＳＥＧＲを、手を含む部分領域ＳＥＧＲとして誤って推定することを低減できる。
【００２９】
図２は、図１に示した手認識装置１０の動作の一例を示す。図２に示す動作は、手認識方法の一例である。また、図２に示す動作をコンピュータ等の手認識装置１０に実行させるためのプログラムは、手認識プログラムの一例である。図１で説明した処理については、詳細な説明を省略する。
【００３０】
ステップＳ１０では、データ受信部２００は、センサ２０から距離データＤＤＴを受信する。
【００３１】
次に、ステップＳ２０では、領域分割部４００は、ステップＳ１０で受信された距離データＤＤＴで表される３次元の領域（例えば、距離画像ＤＩＭＧ）を、特定の大きさの複数の部分領域ＳＥＧＲに分割する。
【００３２】
次に、ステップＳ３０では、推定部５００は、複数の部分領域ＳＥＧＲのうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定する。
【００３３】
次に、ステップＳ４０では、検出部６００は、複数の部分領域ＳＥＧＲのうちの手腕部領域（ステップＳ３０で推定された部分領域ＳＥＧＲ）から手の位置と姿勢を検出する。例えば、検出部６００は、ステップＳ３０で推定された手腕部領域内の距離データＤＤＴと手モデルとに基づいて、手の位置と姿勢を検出する。これにより、手認識装置１０の動作は、終了する。
【００３４】
以上、図１および図２に示す実施形態では、手認識装置１０は、距離データＤＤＴで表される３次元の領域を分割した複数の部分領域ＳＥＧＲのうち、手および腕の部分である手腕部を含む手腕部領域を、手モデルと腕モデルとを用いて推定する。これにより、手認識装置１０は、３次元の領域を分割する場合の部分領域の大きさのパターンを手の状態の数に応じて増加させることなく、手を含む部分領域ＳＥＧＲを推定できる。例えば、３次元の領域を分割する場合の部分領域の大きさのパターンが手を開いている状態を基準にした１パターンの場合、手を握った状態では、手の部分と腕の部分の両方が部分領域ＳＥＧＲに含まれる。このため、手を含む部分領域ＳＥＧＲの推定に腕モデルを用いない場合、手を握った状態では、手を開いた状態に比べて、手を含む部分領域ＳＥＧＲの推定精度が低下する。
【００３５】
これに対し、手認識装置１０は、手腕部領域を手モデルと腕モデルとを用いて推定するため、測定対象の人物が手を握った状態でも、手を含む部分領域ＳＥＧＲの推定精度が低下することを抑制できる。例えば、図１で説明したように、手認識装置１０は、距離画像ＤＩＭＧｂにおいて、手を開いた状態とほぼ同じ大きさの物体ＯＢＪを含む部分領域ＳＥＧＲを、手を含む部分領域ＳＥＧＲとして誤って推定することを低減できる。すなわち、図１および図２に示す実施形態では、手以外の物体ＯＢＪを含む距離データＤＤＴから手の姿勢を正しく認識することができる。
【００３６】
図３は、手認識方法、手認識プログラムおよび手認識装置の別の実施形態を示す。図１から図２で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図３に示す手認識装置１２は、例えば、人物の手の動き等の人物の行動を分析して物品等の販売促進または作業の効率化等をはかるシステムにセンサ２０とともに含まれる。手認識装置１２は、人物の手の位置および姿勢等をセンサ２０から受信する距離データＤＤＴに基づいて認識し、認識結果を出力する。
【００３７】
手認識装置１２は、図１に示したプロセッサ１００の代わりにプロセッサ１０２を有することを除いて、図１に示した手認識装置１０と同一または同様である。例えば、手認識装置１２は、コンピュータ等の情報処理装置により実現され、プロセッサ１０２、データ受信部２００、メモリ３００を有する。プロセッサ１０２、データ受信部２００およびメモリ３００は、バスＢＵＳに接続される。
【００３８】
プロセッサ１０２は、例えば、メモリ３００に格納される手認識プログラムを実行し、手認識装置１２の動作を制御する。なお、手認識プログラムは、手認識装置１２の記憶装置のうちのメモリ３００以外の記憶装置に格納されてもよく、手認識装置１２の外部の記憶装置に格納されてもよい。また、手認識プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、ＵＳＢメモリ等のコンピュータにより読み取り可能な記録媒体ＲＥＣに格納されてもよい。この場合、記録媒体ＲＥＣに格納された手認識プログラムは、手認識装置１２に設けられる図示しない入出力インタフェースを介して記録媒体ＲＥＣからメモリ３００等に転送される。なお、手認識プログラムは、記録媒体ＲＥＣから図示しないハードディスクに転送された後、ハードディスクからメモリ３００に転送されてもよい。
【００３９】
プロセッサ１０２は、例えば、メモリ３００に格納される手認識プログラムを実行することにより、領域分割部４０２、推定部５０２および検出部６０２の機能を実現する。すなわち、手認識装置１２は、データ受信部２００、領域分割部４０２、推定部５０２および検出部６０２を有する。なお、領域分割部４０２、推定部５０２および検出部６０２は、ハードウェアのみで実現されてもよい。
【００４０】
領域分割部４０２は、図１に示した領域分割部４００と同一または同様である。例えば、領域分割部４０２は、センサ２０から出力される距離データＤＤＴを、データ受信部２００を介して受け、距離データＤＤＴで表される３次元の領域を、特定の大きさの複数の部分領域ＳＥＧＲに分割する。領域分割部４０２は、データ保持部４１０、近傍点検出部４２０および領域拡張部４３０を有する。データ保持部４１０は、センサ２０から出力される距離データＤＤＴを保持する。近傍点検出部４２０は、例えば、データ保持部４１０に保持されている距離データＤＤＴのうち、センサ２０に最も近い点を示す距離データＤＤＴを検出し、検出した距離データＤＤＴで示される位置等を領域拡張部４３０に通知する。領域拡張部４３０は、近傍点検出部４２０により検出された点の近傍の距離データＤＤＴをデータ保持部４１０から所定の数だけ取得する。そして、領域拡張部４３０は、データ保持部４１０から取得した所定の数の距離データＤＤＴおよび近傍点検出部４２０により検出された距離データＤＤＴを、同じ部分領域ＳＥＧＲに含まれる距離データＤＤＴとして、推定部５０２に転送する。また、領域拡張部４３０は、推定部５０２に転送した距離データＤＤＴを、データ保持部４１０から削除する。
【００４１】
これにより、データ保持部４１０は、センサ２０から出力される距離データＤＤＴのうち、推定部５０２に転送された距離データＤＤＴを除いた距離データＤＤＴを保持する。そして、近傍点検出部４２０は、センサ２０から出力される距離データＤＤＴのうち、推定部５０２に転送された距離データＤＤＴを除いて、センサ２０に最も近い点を示す距離データＤＤＴを検出する。領域拡張部４３０は、近傍点検出部４２０により検出された点の近傍の距離データＤＤＴをデータ保持部４１０から所定の数だけ取得し、取得した距離データＤＤＴ等を、推定部５０２に転送するとともにデータ保持部４１０から削除する。この一連の処理を繰り返すことにより、距離データＤＤＴで表される３次元の領域は、複数の部分領域ＳＥＧＲに分割される。
【００４２】
推定部５０２は、図１に示した推定部５００と同一または同様である。例えば、推定部５０２は、複数の部分領域ＳＥＧＲのうち、手腕部を含む手腕部領域を手モデルおよび腕モデルを用いて推定する。そして、推定部５０２は、手腕部領域（手腕部を含むと推定した部分領域ＳＥＧＲ）を示す手腕部領域情報等を、検出部６０２に転送する。
【００４３】
例えば、推定部５０２は、データ保持部５１０、手姿勢決定部５２０、腕姿勢決定部５３０、コスト算出部５４０および最小コスト領域保持部５５０を有する。
【００４４】
データ保持部５１０は、例えば、領域分割部４０２の領域拡張部４３０から受ける距離データＤＤＴ等を部分領域ＳＥＧＲに対応付けて保持する。
【００４５】
手姿勢決定部５２０は、例えば、手モデルの位置姿勢をランダムに決定し、決定した手モデルの位置姿勢をコスト算出部５４０に通知し、手モデルの位置姿勢のうち、手首の位置（図４に示す黒丸の位置）を腕姿勢決定部５３０に通知する。
【００４６】
腕姿勢決定部５３０は、例えば、手姿勢決定部５２０から通知された手首の位置を用いて腕モデルの位置姿勢をランダムに決定し、決定した腕モデルの位置姿勢をコスト算出部５４０に通知する。
【００４７】
コスト算出部５４０は、手姿勢決定部５２０で決定された手モデルの位置姿勢および腕姿勢決定部５３０で決定された腕モデルの位置姿勢で示される手腕モデルの位置姿勢と、部分領域ＳＥＧＲ内の物体の形状との差異の程度を示す第１コストを算出する。そして、コスト算出部５４０は、手姿勢決定部５２０および腕姿勢決定部５３０により手腕モデルの位置姿勢が変更される度に算出した第１コストに基づいて、手腕モデルの基準位置姿勢を決定する。また、コスト算出部５４０は、手腕モデルの基準位置姿勢を手姿勢決定部５２０および腕姿勢決定部５３０にフィードバックする。コスト算出部５４０により決定された基準位置姿勢は、第１基準位置姿勢の一例である。また、後述するコスト算出部６４０により決定された基準位置姿勢は、第２基準位置姿勢の一例である。以下では、コスト算出部５４０により決定された基準位置姿勢は、第１基準位置姿勢とも称され、コスト算出部６４０により決定された基準位置姿勢は、第２基準位置姿勢とも称される。
【００４８】
なお、コスト算出部５４０から手腕モデルの第１基準位置姿勢がフィードバックされた手姿勢決定部５２０および腕姿勢決定部５３０は、第１基準位置姿勢を基準にして手腕モデルの位置姿勢をランダムに変更する。そして、コスト算出部５４０は、手腕モデルの位置姿勢が第１基準位置姿勢を基準にしてランダムに変更される度に第１コストを算出し、算出した複数の第１コストのうち、最小の第１コストを部分領域ＳＥＧＲの第１コストに決定する。また、コスト算出部５４０は、複数の部分領域ＳＥＧＲのうち、第１コストが最小の部分領域ＳＥＧＲを、手腕部領域と推定する。そして、コスト算出部５４０は、推定した手腕部領域内の距離データＤＤＴ等を最小コスト領域保持部５５０に出力する。最小コスト領域保持部５５０は、手腕部領域内の距離データＤＤＴ等を保持し、保持した距離データＤＤＴ等を検出部６０２に出力する。すなわち、最小コスト領域保持部５５０は、手腕部領域内の距離データＤＤＴを検出部６０２に転送する。
【００４９】
このように、各部分領域ＳＥＧＲの第１コストは、手腕モデルの位置姿勢を変更しながら算出される。なお、各部分領域ＳＥＧＲの第１コストを算出するコスト算出処理の詳細は、図８で説明する。
【００５０】
検出部６０２は、図１に示した検出部６００と同一または同様である。例えば、検出部６０２は、推定部５０２から受ける手腕部領域内の距離データＤＤＴと手モデルとに基づいて、手の位置と姿勢を検出する。そして、検出部６０２は、検出した手の位置と姿勢を示す情報を出力する。例えば、検出部６０２は、データ保持部６１０、手姿勢決定部６２０、腕姿勢決定部６３０およびコスト算出部６４０を有する。
【００５１】
データ保持部６１０は、推定部５０２の最小コスト領域保持部５５０から受ける手腕部領域内の距離データＤＤＴ等を保持する。
【００５２】
手姿勢決定部６２０は、手姿勢決定部５２０と同様である。なお、手姿勢決定部６２０は、コスト算出部６４０で算出された第２コストのうち、最小の第２コストを示す手モデルの位置姿勢を手の位置と姿勢と認識し、認識結果を出力する。第２コストは、図１で説明したように、手腕部領域内の物体の形状と手モデルの位置姿勢との差異の程度を示すコストである。
【００５３】
腕姿勢決定部６３０は、手腕部の第２基準位置姿勢を基準にして腕モデルの位置姿勢をランダムに変更する処理が省かれることを除いて、腕姿勢決定部５３０と同様である。
【００５４】
コスト算出部６４０は、手腕部の第２基準位置姿勢を決定した後に第１コストの代わりに第２コストを算出することを除いて、コスト算出部５４０と同様である。なお、コスト算出部６４０は、コスト算出部５４０による第１基準位置姿勢を決定する処理と同様の処理を実行することにより、第２基準位置姿勢を決定する。手姿勢決定部６２０、腕姿勢決定部６３０およびコスト算出部６４０により実行される処理（手の位置姿勢を検出する姿勢推定処理）の詳細は、図９で説明する。
【００５５】
なお、手認識装置１２の構成は、図３に示す例に限定されない。例えば、腕姿勢決定部６３０は、検出部６０２から省かれてもよい。この場合、手姿勢決定部６２０は、推定部５０２が手腕部領域を決定した際の手腕部の位置姿勢を基準にして、手モデルの位置姿勢をランダムに変更してもよい。
【００５６】
図４は、手モデルと腕モデルのパラメータの一例を示す。手モデルは、手を複数の球ｓを用いて抽象化したモデルであり、指の関節の折れ曲がりの角度等を示すパラメータを含む。また、腕モデルは、腕を円筒形に抽象化したモデルであり、腕の部分の長さＬ等を示すパラメータを含む。
【００５７】
手モデルの位置姿勢のパラメータは、各指の第１関節および第２関節のそれぞれの折れ曲がりを示す自由度１のパラメータ（２×１×５＝１０次元）と、各指の第３関節の折れ曲がりと回転とを示す自由度２のパラメータ（１×２×５＝１０次元）とを含む。さらに、手モデルの位置姿勢のパラメータは、手首の３次元位置と３次元回転とを示す自由度６（６×１＝６次元）のパラメータと手の大きさＳＺを示す１次元パラメータとを含む。すなわち、手モデルの位置姿勢は、２７（＝１０＋１０＋６＋１）次元パラメータで表される。また、腕モデルの位置姿勢のパラメータは、腕の方向を示す３次元パラメータと、腕の半径ｒを示す１次元パラメータと、腕の部分の長さＬを示す１次元パラメータとを含む。すなわち、腕モデルの位置姿勢は、５（＝３＋１＋１）次元パラメータで表される。したがって、手腕モデルの位置姿勢は、３２（＝２７＋５）次元パラメータで表される。
【００５８】
図５は、コストの計算方法の一例を示す。腕のコストＣａは、部分領域ＳＥＧＲ内の３次元点ｐ（距離データＤＤＴが示す３次元位置）を変数とするコスト関数ｆ（ｐ）を用いて算出される。コスト関数ｆ（ｐ）は、３次元点ｐと手首の位置ｏと腕の方向ベクトルｖとの関係に応じて、式（１）、式（２）および式（３）のいずれかで表される。方向ベクトルｖは、腕の方向を示す３次元パラメータ（ｖｘ，ｖｙ，ｖｚ）であり、手の部分に対する角度を示すパラメータの一例である。−ｖ・（ｐ−ｏ）＞０の場合、コスト関数ｆ（ｐ）は、式（１）で表され、−ｖ・（ｐ−（ｏ＋ｖ））＞０の場合、コスト関数ｆ（ｐ）は、式（２）で表される。また、−ｖ・（ｐ−ｏ）＞０と−ｖ・（ｐ−（ｏ＋ｖ））＞０とのいずれでもない場合、コスト関数ｆ（ｐ）は、式（３）で表される。なお、各式の符号・は、ベクトルの内積を示す。
【００５９】
ｆ（ｐ）＝０                      ・・・（１）
ｆ（ｐ）＝ｖ・（ｐ−（ｏ＋ｖ））  ・・・（２）
ｆ（ｐ）＝（ｖ×ｐ）／｜ｖ｜      ・・・（３）
そして、腕のコストＣａは、コスト関数ｆ（ｐ）を用いて、式（４）で表される。
【００６０】
Ｃａ＝Σｆ（ｐ）                  ・・・（４）
手のコストＣｈは、３次元点ｐと、手モデルの抽象化に用いる球ｓとを変数とするコスト関数Ｄ（ｐ，ｓ）を用いて算出される。コスト関数Ｄ（ｐ，ｓ）は、３次元点ｐと手首の位置ｏと腕の方向ベクトルｖとの関係に応じて、式（５）および式（６）のいずれかで表される。−ｖ・（ｐ−ｏ）＞０の場合、コスト関数Ｄ（ｐ，ｓ）は、式（５）で表され、−ｖ・（ｐ−ｏ）≦０の場合、コスト関数Ｄ（ｐ，ｓ）は、式（６）で表される。
【００６１】
Ｄ（ｐ，ｓ）＝ａｂｓ（||ｐ−ｃ||−ｒ１）  ・・・（５）
Ｄ（ｐ，ｓ）＝０                          ・・・（６）
式（５）の符号ａｂｓは、絶対値を示し、||ｐ−ｃ||は、（ｐ−ｃ）のノルム（図５の例では、（ｐ−ｃ）の大きさ）を示す。また、符号ｃは、手モデルの抽象化に用いた複数の球ｓのうち、３次元点ｐに最も近い球ｓの中心の３次元座標を示し、符号ｒ１は、球ｓの半径を示す。
【００６２】
また、手のコストＣｈは、コスト関数Ｄ（ｐ，ｓ）を用いて、式（７）で表され、手腕部のコストＣｈａは、式（８）で表される。
【００６３】
Ｃｈ＝Σ（Ｄ（ｐ，ｓ）＾２）              ・・・（７）
Ｃｈａ＝Ｃｈ＋Ｃａ                        ・・・（８）
なお、式（７）の符号＾は、べき乗を示す。手のコストＣｈは、第２コストの一例であり、手腕部のコストＣｈａは、第１コストの一例である。
【００６４】
２７次元のパラメータで表される手の位置姿勢、３２次元のパラメータで表される手腕部の位置姿勢等を、コスト最小化問題として通常の最急降下法等で解く事は困難である。このため、手認識装置１２は、例えば、手の位置姿勢の１つを２７次元空間内の１つの粒子と解釈して、群粒子最適化（ＰＳＯ：Particle Swarm Optimization）、粒子フィルタ（Particle Filter）等のモンテカルロ法をベースとした手法で最適化して解く。
【００６５】
図６は、図３に示した手認識装置１２の動作の一例を示す。図６に示す動作は、手認識方法の一例である。また、図６に示す動作をコンピュータ等の手認識装置１２に実行させるためのプログラムは、手認識プログラムの一例である。
【００６６】
ステップＳ１００では、データ受信部２００は、センサ２０から３次元点群を受信する。なお、３次元点群は、センサ２０により測定された距離データＤＤＴで示される点の集まりである。以下、距離データＤＤＴは、単に、点とも称される。
【００６７】
次に、ステップＳ２００では、領域分割部４０２は、ステップＳ１００で受信された３次元点群（距離データＤＤＴで表される３次元の領域）を複数の部分領域ＳＥＧＲに分割する分割処理を実行する。分割処理の詳細は、図７で説明する。分割処理が実行された後、手認識装置１２の動作は、ステップＳ３００に移る。
【００６８】
ステップＳ３００では、推定部５０２（より詳細には、例えば、推定部５０２のコスト算出部５４０）は、３次元点群を分割した複数の部分領域ＳＥＧＲのうち、コストの算出対象の部分領域ＳＥＧＲを選択する。
【００６９】
次に、ステップＳ４００では、推定部５０２は、ステップＳ３００で選択した部分領域ＳＥＧＲのコストを算出するコスト算出処理を実行する。コスト算出処理は、推定部５０２の手姿勢決定部５２０、腕姿勢決定部５３０およびコスト算出部５４０により実行される。コスト算出処理の詳細は、図８で説明する。コスト算出処理が実行された後、手認識装置１２の動作は、ステップＳ５００に移る。
【００７０】
ステップＳ５００では、推定部５０２は、全ての部分領域ＳＥＧＲ（３次元点群を分割した複数の部分領域ＳＥＧＲの全て）のコストを算出したか否かを判定する。推定部５０２は、全ての部分領域ＳＥＧＲのコストを算出した場合、動作をステップＳ６００に移す。一方、推定部５０２は、３次元点群を分割した複数の部分領域ＳＥＧＲのうちに、コストを算出していない部分領域ＳＥＧＲが存在する場合、動作をステップＳ３００に戻す。これにより、ステップＳ３００において、コストが算出されていない部分領域ＳＥＧＲからコストの算出対象の部分領域ＳＥＧＲが選択される。
【００７１】
ステップＳ６００では、推定部５０２は、複数の部分領域ＳＥＧＲのコストのうち、最小のコストを示す部分領域ＳＥＧＲを、手腕部領域として選択する。
【００７２】
次に、ステップＳ７００では、検出部６０２は、ステップＳ６００で選択された手腕部領域内の手の位置姿勢を推定する姿勢推定処理を実行する。なお、姿勢推定処理の詳細は、図９で説明する。姿勢推定処理を実行することにより、手の位置と姿勢が検出される。これにより、手認識装置１２の動作は、終了する。
【００７３】
図７は、図６に示した分割処理（ステップＳ２００）の一例を示す。なお、図７は、領域分割部４０２の動作の一例である。ステップＳ２１０の処理は、図６に示したステップＳ１００の処理が実行された後、実行される。
【００７４】
ステップＳ２１０では、領域分割部４０２は、データ保持部４１０に保持された全ての距離データＤＤＴに、値０のラベルＬＢ（ＬＢ＝０）を付与し、変数ｉを０に初期化（ｉ＝０）する。
【００７５】
次に、ステップＳ２２０では、領域分割部４０２は、変数ｉの値をインクリメント（ｉ＝ｉ＋１）し、変数ｊを０に初期化（ｊ＝０）する。
【００７６】
次に、ステップＳ２３０では、近傍点検出部４２０は、値０のラベルＬＢ（ＬＢ＝０）が付与された距離データＤＤＴ（３次元点群）のうち、最も値が小さい点Ｘ、すなわち、センサ２０に最も近い点Ｘを特定し、点Ｘに値ｉのラベルＬＢ（ＬＢ＝ｉ）を付与する。これにより、点ＸのラベルＬＢは、値０から値ｉに変更される。
【００７７】
次に、ステップＳ２４０では、領域拡張部４３０は、点Ｘの近傍のｎ個の距離データＤＤＴ（点Ｙ１、Ｙ２、・・・、Ｙｎ）を取得する。取得する数ｎは、例えば、実験またはシミュレーション等に基づいて予め設定される。
【００７８】
次に、ステップＳ２５０では、領域拡張部４３０は、変数ｊの値をインクリメント（ｊ＝ｊ＋１）する。
【００７９】
次に、ステップＳ２６０では、領域拡張部４３０は、点Ｘと点Ｙｊとの距離が予め決められた距離Ｔｄ以内か否か（｜Ｘ−Ｙｊ｜≦Ｔｄ？）を判定する。点Ｘと点Ｙｊとの距離が距離Ｔｄ以内の場合、領域分割部４０２の動作は、ステップＳ２７０に移る。一方、点Ｘと点Ｙｊとの距離が距離Ｔｄを超えている場合、領域分割部４０２の動作は、ステップＳ２８０に移る。
【００８０】
ステップＳ２７０では、領域拡張部４３０は、点Ｙｊに値ｉのラベルＬＢ（ＬＢ＝ｉ）を付与する。これにより、点ＹｊのラベルＬＢは、値０から値ｉに変更される。
【００８１】
次に、ステップＳ２８０では、領域分割部４０２は、変数ｊが値ｎと一致するか否か（ｊ＝ｎ？）を判定する。すなわち、領域分割部４０２は、変数ｊとステップＳ２４０で取得した距離データＤＤＴの数ｎとが一致するか否かを判定する。変数ｊが値ｎと一致する場合、すなわち、ステップＳ２４０で取得した全ての距離データＤＤＴに対してステップＳ２６０の処理（判定）が実行された場合、領域分割部４０２の動作は、ステップＳ２９０に移る。一方、変数ｊが値ｎと一致しない場合、すなわち、ステップＳ２４０で取得したｎ個の距離データＤＤＴのうちに、ステップＳ２６０の処理（判定）が実行されていない距離データＤＤＴが存在する場合、領域分割部４０２の動作は、ステップＳ２５０に移る。ステップＳ２５０からステップＳ２７０までの一連の処理を繰り返すことにより共通のラベルＬＢが付与された複数の距離データＤＤＴは、同じ部分領域ＳＥＧＲに含まれる。
【００８２】
ステップＳ２９０では、領域分割部４０２は、値０のラベルＬＢ（ＬＢ＝０）が付与された距離データＤＤＴの数が所定数以下か否かを判定する。領域分割部４０２は、値０のラベルＬＢ（ＬＢ＝０）が付与された距離データＤＤＴの数が所定数以下の場合、３次元点群を複数の部分領域ＳＥＧＲに分割する分割処理を終了する。分割処理の終了により、手認識装置１２の動作は、図６に示したステップＳ３００に移る。一方、領域分割部４０２は、値０のラベルＬＢ（ＬＢ＝０）が付与された距離データＤＤＴの数が所定数より多い場合、値０のラベルＬＢ（ＬＢ＝０）が付与された距離データＤＤＴを含む３次元点群を分割するために、動作をステップＳ２２０に移す。
【００８３】
なお、分割処理は、図７に示す例に限定されない。例えば、領域拡張部４３０は、ステップＳ２４０において、点Ｘとの距離が距離Ｔｄ以内の点Ｙを全て取得し、取得した点Ｙに値ｉのラベルＬＢ（ＬＢ＝ｉ）を付与してもよい。この場合、ステップＳ２５０、Ｓ２６０、Ｓ２７０、Ｓ２８０は、省かれてもよい。
【００８４】
図８は、図６に示したコスト算出処理（ステップＳ４００）の一例を示す。なお、図８は、推定部５０２の動作の一例である。ステップＳ４１０の処理は、図６に示したステップＳ３００の処理が実行された後、実行される。
【００８５】
ステップＳ４１０では、推定部５０２は、変数ｉを０に初期化（ｉ＝０）する。
【００８６】
次に、ステップＳ４１２では、推定部５０２は、変数ｉの値をインクリメント（ｉ＝ｉ＋１）する。
【００８７】
次に、ステップＳ４１４では、推定部５０２は、手腕部（手と腕の部分）の位置姿勢Ｐｆをランダムに決定する。例えば、手姿勢決定部５２０は、手モデルの位置姿勢をランダムに決定し、腕姿勢決定部５３０は、手姿勢決定部５２０により決定された手モデルの位置姿勢のうちの手首の位置（図４に示した黒丸の位置）を用いて腕モデルの位置姿勢をランダムに決定する。
【００８８】
次に、ステップＳ４１６では、推定部５０２は、手腕部のコストＣｈａ（＝Ｃｈ＋Ｃａ）を算出する。例えば、コスト算出部５４０は、図５で説明したように、コスト関数Ｄ（ｐ，ｓ）を用いて算出した手のコストＣｈと、コスト関数ｆ（ｐ）を用いて算出した腕のコストＣａとを加算して、手腕部のコストＣｈａを算出する。この場合、３次元点ｐは、図６に示したステップＳ３００で選択された部分領域ＳＥＧＲ内の距離データＤＤＴである。また、図５に示した各式に用いられる腕モデルの方向ベクトルｖ等は、ステップＳ４１４で決定された手腕部の位置姿勢Ｐｆに基づいて算出される。
【００８９】
次に、ステップＳ４１８では、推定部５０２は、最小のコストＣｈａの位置姿勢Ｐｆを保持する。例えば、変数ｉが１の場合、推定部５０２は、直前のステップＳ４１６で算出したコストＣｈａを示す位置姿勢Ｐｆを最小コスト領域保持部５５０に保持する。また、変数ｉが２以上の場合、推定部５０２は、直前のステップＳ４１６で算出したコストＣｈａと既に保持している位置姿勢ＰｆのコストＣｈａのうち、小さい方のコストＣｈａを示す位置姿勢Ｐｆを最小コスト領域保持部５５０に保持する。
【００９０】
次に、ステップＳ４２０では、推定部５０２は、変数ｉが所定値Ｍａと一致するか否かを判定する。所定値Ｍａは、例えば、実験またはシミュレーション等に基づいて予め設定される。変数ｉが所定値Ｍａと一致する場合、推定部５０２の動作は、ステップＳ４３０に移る。一方、変数ｉが所定値Ｍａと一致しない場合、推定部５０２の動作は、ステップＳ４１２に戻る。すなわち、推定部５０２は、手腕部の位置姿勢ＰｆをランダムにＭａ回変更して算出したコストＣｈａのうち、最小のコストＣｈａを示す位置姿勢Ｐｆを最小コスト領域保持部５５０に保持する。
【００９１】
ステップＳ４３０では、推定部５０２は、変数ｉを０に初期化（ｉ＝０）する。
【００９２】
次に、ステップＳ４３２では、推定部５０２は、変数ｉの値をインクリメント（ｉ＝ｉ＋１）する。
【００９３】
次に、ステップＳ４３４では、推定部５０２は、手腕部の位置姿勢Ｐｓを、位置姿勢Ｐｆを基準にランダムに変化させて決定する。例えば、手姿勢決定部５２０は、手モデルの位置姿勢を、ステップＳ４１８で保持した位置姿勢Ｐｆを基準にしてランダムに変化させて決定する。また、腕姿勢決定部５３０は、腕モデルの位置姿勢を、位置姿勢Ｐｆを基準にしてランダムに変化させて決定する。なお、腕モデルの位置姿勢を決定する場合、手姿勢決定部５２０により決定された手モデルの位置姿勢のうちの手首の位置が用いられる。
【００９４】
次に、ステップＳ４３６では、推定部５０２は、ステップＳ４１６と同様の計算方法により、手腕部のコストＣｈａ（＝Ｃｈ＋Ｃａ）を算出する。なお、ステップＳ４３６では、図５に示した各式に用いられる腕モデルの方向ベクトルｖ等は、ステップＳ４３４で決定された手腕部の位置姿勢Ｐｓに基づいて算出される。
【００９５】
次に、ステップＳ４３８では、推定部５０２は、最小のコストＣｈａの位置姿勢Ｐｓを保持する。例えば、変数ｉが１の場合、推定部５０２は、直前のステップＳ４３６で算出したコストＣｈａを示す位置姿勢Ｐｓを最小コスト領域保持部５５０に保持する。また、変数ｉが２以上の場合、推定部５０２は、直前のステップＳ４３６で算出したコストＣｈａと既に保持している位置姿勢ＰｓのコストＣｈａのうち、小さい方のコストＣｈａを示す位置姿勢Ｐｓを最小コスト領域保持部５５０に保持する。
【００９６】
次に、ステップＳ４４０では、推定部５０２は、変数ｉが所定値Ｍａと一致するか否かを判定する。変数ｉが所定値Ｍａと一致する場合、推定部５０２の動作は、ステップＳ４５０に移る。一方、変数ｉが所定値Ｍａと一致しない場合、推定部５０２の動作は、ステップＳ４３２に戻る。すなわち、推定部５０２は、手腕部の位置姿勢Ｐｓを位置姿勢Ｐｆを基準にしてランダムにＭａ回変更して算出したコストＣｈａのうち、最小のコストＣｈａを示す位置姿勢Ｐｓを最小コスト領域保持部５５０に保持する。なお、所定値Ｍａは、ステップＳ４２０とステップＳ４４０とで異なる値でもよい。
【００９７】
ステップＳ４５０では、推定部５０２は、最小のコストＣｈａを部分領域ＳＥＧＲのコストに決定する。例えば、推定部５０２は、ステップＳ４３８で最終的に保持した位置姿勢ＰｓのコストＣｈａを、図６に示したステップＳ３００で選択された部分領域ＳＥＧＲのコストに決定する。ステップＳ４５０の処理の終了により、コスト算出処理が終了し、推定部５０２の動作は、図６に示したステップＳ５００に移る。
【００９８】
ステップＳ４１０からステップＳ４２０までの一連の処理は、手腕モデルの位置と姿勢を変更して算出した複数の第１コストのうち、最小の第１コストを示す手腕モデルの位置と姿勢を第１基準位置姿勢に決定する第１処理の一例である。ステップＳ４３０からステップＳ４５０までの一連の処理は、手腕モデルの位置と姿勢を第１基準位置姿勢を基準にして変更して算出した複数の第１コストのうち、最小の第１コストを部分領域の第１コストに決定する第２処理の一例である。したがって、図６に示したステップＳ６００の処理は、第２処理により決定した複数の部分領域のそれぞれの第１コストのうち、最小の第１コストを示す部分領域を、手腕部領域と推定する処理の一例である。
【００９９】
なお、コスト算出処理は、図８に示す例に限定されない。例えば、ステップＳ４３０からステップＳ４４０までの一連の処理は、省かれてもよい。この場合、推定部５０２は、ステップＳ４１８で最終的に保持した位置姿勢ＰｆのコストＣｈａを、図６に示したステップＳ３００で選択された部分領域ＳＥＧＲのコストに決定する。
【０１００】
図９は、図６に示した姿勢推定処理（ステップＳ７００）の一例を示す。なお、図９は、検出部６０２の動作の一例である。図８に示した推定部５０２の動作と同様な動作については、詳細な説明を省略する。ステップＳ７１０の処理は、図６に示したステップＳ６００の処理が実行された後、実行される。
【０１０１】
ステップＳ７１０では、検出部６０２は、変数ｉを０に初期化（ｉ＝０）する。
【０１０２】
次に、ステップＳ７１２では、検出部６０２は、変数ｉの値をインクリメント（ｉ＝ｉ＋１）する。
【０１０３】
次に、ステップＳ７１４では、検出部６０２は、手腕部（手と腕の部分）の位置姿勢Ｐｆをランダムに決定する。例えば、手姿勢決定部６２０は、手モデルの位置姿勢をランダムに決定し、腕姿勢決定部６３０は、手姿勢決定部６２０により決定された手モデルの位置姿勢のうちの手首の位置（図４に示した黒丸の位置）を用いて腕モデルの位置姿勢をランダムに決定する。
【０１０４】
次に、ステップＳ７１６では、検出部６０２は、手腕部のコストＣｈａ（＝Ｃｈ＋Ｃａ）を算出する。例えば、コスト算出部６４０は、図５で説明したように、コスト関数Ｄ（ｐ，ｓ）を用いて算出した手のコストＣｈと、コスト関数ｆ（ｐ）を用いて算出した腕のコストＣａとを加算して、手腕部のコストＣｈａを算出する。この場合、３次元点ｐは、図６に示したステップＳ６００で選択された手腕部領域内の距離データＤＤＴである。また、図５に示した各式に用いられる腕モデルの方向ベクトルｖ等は、ステップＳ７１４で決定された手腕部の位置姿勢Ｐｆに基づいて算出される。
【０１０５】
次に、ステップＳ７１８では、検出部６０２は、最小のコストＣｈａの位置姿勢Ｐｆを保持する。例えば、変数ｉが１の場合、検出部６０２は、直前のステップＳ７１６で算出したコストＣｈａを示す位置姿勢Ｐｆを保持する。また、変数ｉが２以上の場合、検出部６０２は、直前のステップＳ４１６で算出したコストＣｈａと既に保持している位置姿勢ＰｆのコストＣｈａのうち、小さい方のコストＣｈａを示す位置姿勢Ｐｆを保持する。
【０１０６】
次に、ステップＳ７２０では、検出部６０２は、変数ｉが所定値Ｍｂと一致するか否かを判定する。所定値Ｍｂは、例えば、推定部５０２の動作に用いられる所定値Ｍａより大きい値であり、実験またはシミュレーション等に基づいて予め設定される。変数ｉが所定値Ｍｂと一致する場合、検出部６０２の動作は、ステップＳ７３０に移る。一方、変数ｉが所定値Ｍｂと一致しない場合、検出部６０２の動作は、ステップＳ７１２に戻る。すなわち、検出部６０２は、手腕部の位置姿勢ＰｆをランダムにＭｂ回変更して算出したコストＣｈａのうち、最小のコストＣｈａを示す位置姿勢Ｐｆを保持する。
【０１０７】
ステップＳ７３０では、検出部６０２は、変数ｉを０に初期化（ｉ＝０）する。
【０１０８】
次に、ステップＳ７３２では、検出部６０２は、変数ｉの値をインクリメント（ｉ＝ｉ＋１）する。
【０１０９】
次に、ステップＳ７３４では、検出部６０２は、手の位置姿勢Ｐｈを、位置姿勢Ｐｆを基準にランダムに変化させて決定する。例えば、手姿勢決定部６２０は、手モデルの位置姿勢を、ステップＳ７１８で保持した位置姿勢Ｐｆを基準にしてランダムに変化させて決定する。
【０１１０】
次に、ステップＳ７３６では、検出部６０２は、手のコストＣｈを算出する。例えば、コスト算出部６４０は、図５で説明したように、コスト関数Ｄ（ｐ，ｓ）を用いて手のコストＣｈを算出する。この場合、３次元点ｐは、図６に示したステップＳ６００で選択された手腕部領域内の距離データＤＤＴである。また、図５に示したコスト関数Ｄ（ｐ，ｓ）に用いられる手モデルの球ｓの中心の３次元座標ｃ等は、ステップＳ７３４で決定された手の位置姿勢Ｐｈに基づいて算出される。
【０１１１】
次に、ステップＳ７３８では、検出部６０２は、最小のコストＣｈの位置姿勢Ｐｈを保持する。例えば、変数ｉが１の場合、検出部６０２は、直前のステップＳ７３６で算出したコストＣｈを示す位置姿勢Ｐｈを保持する。また、変数ｉが２以上の場合、検出部６０２は、直前のステップＳ７３６で算出したコストＣｈと既に保持している位置姿勢ＰｈのコストＣｈのうち、小さい方のコストＣｈを示す位置姿勢Ｐｈを保持する。
【０１１２】
次に、ステップＳ７４０では、検出部６０２は、変数ｉが所定値Ｍｂと一致するか否かを判定する。変数ｉが所定値Ｍｂと一致する場合、検出部６０２の動作は、ステップＳ７４２に移る。一方、変数ｉが所定値Ｍｂと一致しない場合、検出部６０２の動作は、ステップＳ７３２に戻る。すなわち、検出部６０２は、手の位置姿勢Ｐｈを位置姿勢Ｐｆを基準にしてランダムにＭｂ回変更して算出したコストＣｈのうち、最小のコストＣｈを示す位置姿勢Ｐｈを保持する。なお、所定値Ｍｂは、ステップＳ７２０とステップＳ７４０とで異なる値でもよい。
【０１１３】
ステップＳ７４２では、検出部６０２は、最小のコストＣｈが予め設定される閾値Ｔｃｈ以下か否かを判定する。すなわち、検出部６０２は、ステップＳ７３８で最終的に保持した位置姿勢ＰｈのコストＣｈが閾値Ｔｃｈ以下か否かを判定する。最小のコストＣｈが閾値Ｔｃｈ以下の場合、検出部６０２の動作は、ステップＳ７５０に移る。一方、最小のコストＣｈが閾値Ｔｃｈより大きい場合、検出部６０２の動作は、ステップＳ７３０に戻る。すなわち、検出部６０２は、手のコストＣｈが閾値Ｔｃｈ以下になるまで、ステップＳ７３２からステップＳ７４０までの一連の処理を繰り返す。
【０１１４】
ステップＳ７５０では、検出部６０２は、最小のコストＣｈの位置姿勢Ｐｈを手の位置姿勢に決定する。すなわち、検出部６０２は、ステップＳ７３８で最終的に保持した位置姿勢Ｐｈを、センサ２０で測定された人物の手の位置姿勢に決定する。例えば、検出部６０２は、人物の手の動き等の人物の行動を分析して物品等の販売促進または作業の効率化等をはかるシステムに、ステップＳ７３８で最終的に保持した位置姿勢Ｐｈを示す情報を転送する。ステップＳ７５０の処理の終了により、姿勢推定処理が終了し、手認識装置１２の動作が終了する。
【０１１５】
ステップＳ７１０からステップＳ７２０までの一連の処理は、手腕モデルの位置および姿勢を変更して算出した複数の第１コストのうち、最小の第１コストを示す手腕モデルの位置と姿勢を第２基準位置姿勢に決定する第３処理の一例である。ステップＳ７３０からステップＳ７５０までの一連の処理は、手モデルの位置と姿勢を第２基準位置姿勢を基準にして変更して算出した複数の第２コストのうち、最小の第２コストを示す手モデルの位置と姿勢を手の位置と姿勢に決定する第４処理の一例である。
【０１１６】
なお、姿勢推定処理は、図９に示す例に限定されない。例えば、ステップＳ７１０からステップＳ７２０までの一連の処理は、省かれてもよい。この場合、ステップＳ７３４において、検出部６０２は、例えば、図６に示したステップＳ６００で選択された手腕部領域における手腕部の位置姿勢を基準にして、手モデルの位置姿勢をランダムに変化させて決定してもよい。
【０１１７】
以上、図３から図９に示す実施形態においても、図１および図２に示した実施形態と同様の効果を得ることができる。例えば、手認識装置１２は、距離データＤＤＴの集合である３次元点群を分割した複数の部分領域ＳＥＧＲのうち、手および腕の部分である手腕部を含む手腕部領域を、手モデルと腕モデルとを用いて推定する。これにより、手認識装置１２は、３次元点群を分割する場合の部分領域の大きさを手の状態に応じて変更することなく、手を含む部分領域ＳＥＧＲを推定できる。例えば、部分領域ＳＥＧＲの大きさを手の状態（手を握った状態、手を開いた状態）に応じて変更しない場合で、かつ、部分領域ＳＥＧＲの推定に腕モデルを用いない場合、手の状態によって、手を含む部分領域ＳＥＧＲの推定精度が低下する。これに対し、手認識装置１２は、手モデルと腕モデルとを用いて手を含む部分領域ＳＥＧＲを推定するため、手を含む部分領域ＳＥＧＲの推定精度が手の状態によって低下することを抑制できる。例えば、手認識装置１２は、手以外の物体ＯＢＪを含む部分領域ＳＥＧＲを、手を含む部分領域ＳＥＧＲと誤って推定することを抑制できる。手を含む部分領域ＳＥＧＲから手の姿勢を検出するため、手を含む部分領域ＳＥＧＲの推定精度が低下することを抑制することにより、手の姿勢を正しく認識することができる。すなわち、図３から図９に示す実施形態においても、手以外の物体ＯＢＪを含む距離データＤＤＴから手の姿勢を正しく認識することができる。
【０１１８】
図１０は、手認識方法、手認識プログラムおよび手認識装置の別の実施形態を示す。図１から図９で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図１０に示す手認識装置１４は、例えば、人物の手の動き等の人物の行動を分析して物品等の販売促進または作業の効率化等をはかるシステムにセンサ２０とともに含まれる。手認識装置１４は、人物の手の位置および姿勢等をセンサ２０から受信する距離データＤＤＴに基づいて認識し、認識結果を出力する。
【０１１９】
手認識装置１４は、図３に示したプロセッサ１０２の代わりにプロセッサ１０４を有することを除いて、図３に示した手認識装置１２と同一または同様である。例えば、手認識装置１４は、コンピュータ等の情報処理装置により実現され、プロセッサ１０４、データ受信部２００、メモリ３００を有する。プロセッサ１０４、データ受信部２００およびメモリ３００は、バスＢＵＳに接続される。
【０１２０】
プロセッサ１０４は、例えば、メモリ３００に格納される手認識プログラムを実行し、手認識装置１４の動作を制御する。なお、手認識プログラムは、手認識装置１４の記憶装置のうちのメモリ３００以外の記憶装置に格納されてもよく、手認識装置１４の外部の記憶装置に格納されてもよい。また、手認識プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、ＵＳＢメモリ等のコンピュータにより読み取り可能な記録媒体ＲＥＣに格納されてもよい。この場合、記録媒体ＲＥＣに格納された手認識プログラムは、手認識装置１４に設けられる図示しない入出力インタフェースを介して記録媒体ＲＥＣからメモリ３００等に転送される。なお、手認識プログラムは、記録媒体ＲＥＣから図示しないハードディスクに転送された後、ハードディスクからメモリ３００に転送されてもよい。
【０１２１】
プロセッサ１０４は、例えば、メモリ３００に格納される手認識プログラムを実行することにより、領域分割部４０２、推定部５０２および検出部６０４の機能を実現する。すなわち、手認識装置１４は、データ受信部２００、領域分割部４０２、推定部５０２および検出部６０４を有する。なお、領域分割部４０２、推定部５０２および検出部６０４は、ハードウェアのみで実現されてもよい。
【０１２２】
領域分割部４０２および推定部５０２は、図３に示した領域分割部４０２および推定部５０２と同一または同様である。
【０１２３】
検出部６０４は、図３に示した腕姿勢決定部６３０の代わりに腕姿勢決定部６３２を有することを除いて、図３に示した検出部６０２と同一または同様である。例えば、検出部６０４は、データ保持部６１０、手姿勢決定部６２０、腕姿勢決定部６３２およびコスト算出部６４０を有する。腕姿勢決定部６３２は、腕の位置と姿勢の認識結果を出力することを除いて、図３に示した腕姿勢決定部６３０と同一または同様である。すなわち、検出部６０４は、手の位置と姿勢の認識結果と腕の位置と姿勢の認識結果とを出力する。
【０１２４】
なお、手認識装置１４の構成は、図１０に示す例に限定されない。例えば、手姿勢決定部６２０、腕姿勢決定部６３０およびコスト算出部６４０が省かれ、手姿勢決定部５２０、腕姿勢決定部５３０およびコスト算出部５４０が推定部５０２と検出部６０４とで兼用されてもよい。
【０１２５】
図１１は、図１０に示した手認識装置１４の動作の一例を示す。図１１に示す動作は、手認識方法の一例である。また、図１１に示す動作をコンピュータ等の手認識装置１４に実行させるためのプログラムは、手認識プログラムの一例である。図６で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図１１に示す動作は、図６に示したステップＳ７００の姿勢推定処理の代わりにステップＳ７０２の姿勢推定処理が実行されることを除いて、図６に示した動作と同一または同様である。ステップＳ７０２の姿勢推定処理は、手の位置と姿勢の他に腕の位置と姿勢を検出することを除いて、図６に示したステップＳ７００の姿勢推定処理と同一または同様である。ステップＳ７０２の姿勢推定処理は、ステップＳ６００の処理が実行された後、実行される。
【０１２６】
ステップＳ７０２では、検出部６０４は、ステップＳ６００で選択された手腕部領域内の手腕部の位置姿勢を推定する姿勢推定処理を実行する。なお、姿勢推定処理の詳細は、図１２で説明する。姿勢推定処理を実行することにより、手の位置と姿勢の他に、腕の位置と姿勢が検出される。これにより、手認識装置１４の動作は、終了する。
【０１２７】
図１２は、図１１に示した姿勢推定処理（ステップＳ７０２）の一例を示す。なお、図１２は、検出部６０４の動作の一例である。図９で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図１２に示す動作では、図９に示したステップＳ７３４、Ｓ７３６、Ｓ７３８、Ｓ７４２、Ｓ７５０の各々の処理の代わりに、ステップＳ７３４ａ、Ｓ７３６ａ、Ｓ７３８ａ、Ｓ７４２ａ、Ｓ７５０ａの各々の処理が実行される。図１２に示すその他の動作は、図６に示した動作と同一または同様である。ステップＳ７３４ａの処理は、ステップＳ７３２の処理が実行された後、実行される。
【０１２８】
ステップＳ７３４ａでは、検出部６０４は、手腕部の位置姿勢Ｐｓを、位置姿勢Ｐｆを基準にランダムに変化させて決定する。例えば、手姿勢決定部６２０は、手モデルの位置姿勢を、ステップＳ７１８で保持した位置姿勢Ｐｆを基準にしてランダムに変化させて決定する。また、腕姿勢決定部６３０は、腕モデルの位置姿勢を、位置姿勢Ｐｆを基準にしてランダムに変化させて決定する。なお、腕モデルの位置姿勢を決定する場合、手姿勢決定部６２０により決定された手モデルの位置姿勢のうちの手首の位置が用いられる。
【０１２９】
次に、ステップＳ７３６ａでは、検出部６０４は、手腕部のコストＣｈａ（＝Ｃｈ＋Ｃａ）を算出する。例えば、コスト算出部６４０は、図５で説明したように、コスト関数Ｄ（ｐ，ｓ）を用いて算出した手のコストＣｈと、コスト関数ｆ（ｐ）を用いて算出した腕のコストＣａとを加算して、手腕部のコストＣｈａを算出する。この場合、３次元点ｐは、図１１に示したステップＳ６００で選択された手腕部領域内の距離データＤＤＴである。また、図５に示した各式に用いられる腕モデルの方向ベクトルｖ等は、ステップＳ７３４ａで決定された手腕部の位置姿勢Ｐｓに基づいて算出される。
【０１３０】
次に、ステップＳ７３８ａでは、検出部６０４は、最小のコストＣｈａの位置姿勢Ｐｓを保持する。例えば、変数ｉが１の場合、検出部６０４は、直前のステップＳ７３６ａで算出したコストＣｈａを示す位置姿勢Ｐｓを保持する。また、変数ｉが２以上の場合、検出部６０４は、直前のステップＳ７３６ａで算出したコストＣｈａと既に保持している位置姿勢ＰｓのコストＣｈａのうち、小さい方のコストＣｈａを示す位置姿勢Ｐｓを保持する。
【０１３１】
次に、ステップＳ７４０では、検出部６０４は、変数ｉが所定値Ｍｂと一致するか否かを判定する。変数ｉが所定値Ｍｂと一致する場合、検出部６０４の動作は、ステップＳ７４２ａに移る。一方、変数ｉが所定値Ｍｂと一致しない場合、検出部６０４の動作は、ステップＳ７３２に戻る。
【０１３２】
ステップＳ７４２ａでは、検出部６０４は、最小のコストＣｈａが予め設定される閾値Ｔｃｈａ以下か否かを判定する。すなわち、検出部６０４は、ステップＳ７３８ａで最終的に保持した位置姿勢ＰｓのコストＣｈａが閾値Ｔｃｈａ以下か否かを判定する。最小のコストＣｈａが閾値Ｔｃｈａ以下の場合、検出部６０４の動作は、ステップＳ７５０ａに移る。一方、最小のコストＣｈａが閾値Ｔｃｈａより大きい場合、検出部６０４の動作は、ステップＳ７３０に戻る。すなわち、検出部６０４は、手腕部のコストＣｈａが閾値Ｔｃｈａ以下になるまで、ステップＳ７３２からステップＳ７４０ａまでの一連の処理を繰り返す。
【０１３３】
ステップＳ７５０ａでは、検出部６０４は、最小のコストＣｈａの位置姿勢Ｐｓを手腕部の位置姿勢に決定する。すなわち、検出部６０４は、ステップＳ７３８ａで最終的に保持した位置姿勢Ｐｓを、センサ２０で測定された人物の手と腕の位置姿勢に決定する。例えば、検出部６０４は、人物の手の動き等の人物の行動を分析して物品等の販売促進または作業の効率化等をはかるシステムに、ステップＳ７３８ａで最終的に保持した位置姿勢Ｐｓを示す情報を転送する。ステップＳ７５０ａの処理の終了により、姿勢推定処理が終了し、手認識装置１４の動作が終了する。
【０１３４】
このように、検出部６０４は、手腕部領域内の距離データＤＤＴと手モデルと腕モデルとに基づいて、手の位置と姿勢の他に、腕の位置と姿勢を検出する。
【０１３５】
なお、姿勢推定処理は、図１２に示す例に限定されない。例えば、検出部６０４は、ステップＳ７４２ａにおいて、最小のコストＣｈａにおけるコストＣｈが予め設定される閾値Ｔｃｈ以下か否かを判定してもよい。
【０１３６】
以上、図１０から図１２に示す実施形態においても、図３から図９に示した実施形態と同様の効果を得ることができる。例えば、手認識装置１４は、手以外の物体ＯＢＪを含む部分領域ＳＥＧＲを、手を含む部分領域ＳＥＧＲと誤って推定することを抑制でき、手の姿勢を正しく認識することができる。すなわち、図１０から図１２に示す実施形態においても、手以外の物体ＯＢＪを含む距離データＤＤＴから手の姿勢を正しく認識することができる。
【０１３７】
さらに、手認識装置１４は、手腕部領域内の距離データＤＤＴと手モデルと腕モデルとに基づいて、手の位置と姿勢の他に、腕の位置と姿勢を検出する。これにより、例えば、人物のジェスチャーに応じて機器等が制御される場合、制御に対応付けるジェスチャーのバリエーションを増加させることができる。
【０１３８】
以上の実施形態において説明した発明を整理して、付記として以下の通り開示する。
（付記１）
測定対象までの距離を示す距離データを受信し、
距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割し、
前記複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定し、
前記手腕部領域内の距離データと前記手モデルとに基づいて、手の位置と姿勢を検出する
ことを特徴とする手認識方法。
（付記２）
付記１に記載の手認識方法において、
前記特定の大きさは、測定対象の手までの距離に左右されずに、手および腕を含む大きさに予め決定される
ことを特徴とする手認識方法。
（付記３）
付記１または付記２に記載の手認識方法において、
前記腕モデルは、腕を円筒形に抽象化したモデルであり、腕の部分の長さと手の部分に対する角度とを示すパラメータを含む
ことを特徴とする手認識方法。
（付記４）
付記１ないし付記３のいずれか１項に記載の手認識方法において、
前記複数の部分領域毎に、前記手モデルと前記腕モデルとを組み合わせた手腕モデルの位置および姿勢と、部分領域内の距離データで表される物体の形状との差異の程度を示す第１コストを、前記手腕モデルの位置と姿勢を変更して算出し、算出した複数の第１コストのうち、最小の第１コストを示す前記手腕モデルの位置と姿勢を第１基準位置姿勢に決定する第１処理を実行し、さらに、前記手腕モデルの位置と姿勢を前記第１基準位置姿勢を基準にして変更して第１コストを算出し、算出した複数の第１コストのうち、最小の第１コストを前記部分領域の第１コストに決定する第２処理を実行し、
前記第２処理により決定した前記複数の部分領域のそれぞれの第１コストのうち、最小の第１コストを示す部分領域を、前記手腕部領域と推定する
ことを特徴とする手認識方法。
（付記５）
付記４に記載の手認識方法において、
前記手腕モデルの位置および姿勢と、前記手腕部領域内の距離データで表される物体の形状との差異の程度を示す第１コストを、前記手腕モデルの位置と姿勢を変更して算出し、算出した複数の第１コストのうち、最小の第１コストを示す前記手腕モデルの位置と姿勢を第２基準位置姿勢に決定する第３処理を実行し、さらに、前記手モデルの位置と姿勢を前記第２基準位置姿勢を基準にして変更して、前記手モデルの位置および姿勢と、前記手腕部領域内の距離データで表される物体の形状との差異の程度を示す第２コストを算出し、算出した複数の第２コストのうち、最小の第２コストを示す前記手モデルの位置と姿勢を手の位置と姿勢に決定する第４処理を実行する
ことを特徴とする手認識方法。
（付記６）
付記１ないし付記３のいずれか１項に記載の手認識方法において、
前記複数の部分領域毎に、前記手モデルと前記腕モデルとを組み合わせた手腕モデルの位置および姿勢と、部分領域内の距離データで表される物体の形状との差異の程度を示す第１コストを、前記手腕モデルの位置と姿勢を変更して算出し、算出した複数の第１コストのうち、最小の第１コストを示す前記手腕モデルの位置と姿勢を第１基準位置姿勢に決定するとともに、最小の第１コストを前記部分領域の第１コストに決定する第１処理を実行し、
前記第１処理により決定した前記複数の部分領域のそれぞれの第１コストのうち、最小の第１コストを示す部分領域を、前記手腕部領域と推定し、
前記手モデルの位置および姿勢と、前記手腕部領域内の距離データで表される物体の形状との差異の程度を示す第２コストを、前記手モデルの位置と姿勢を前記手腕部領域における前記第１基準位置姿勢を基準にして変更して算出し、算出した複数の第２コストのうち、最小の第２コストを示す前記手モデルの位置と姿勢を手の位置と姿勢に決定する第４処理を実行する
ことを特徴とする手認識方法。
（付記７）
付記５または付記６に記載の手認識方法において、
第２コストが予め設定される閾値以下になるまで、前記第４処理を繰り返す
ことを特徴とする手認識方法。
（付記８）
付記１ないし付記７のいずれか１項に記載の手認識方法において、
前記手腕部領域内の距離データと前記手モデルと前記腕モデルとに基づいて、手の位置と姿勢の他に、腕の位置と姿勢を検出する
ことを特徴とする手認識方法。
（付記９）
測定対象までの距離を示す距離データを受信し、
距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割し、
前記複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定し、
前記手腕部領域内の距離データと前記手モデルとに基づいて、手の位置と姿勢を検出する
処理をコンピュータに実行させるための手認識プログラム。
（付記１０）
測定対象までの距離を示す距離データを受信するデータ受信部と、
距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割する領域分割部と、
前記複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定する推定部と、
前記手腕部領域内の距離データと前記手モデルとに基づいて、手の位置と姿勢を検出する検出部と
を有することを特徴とする手認識装置。
（付記１１）
測定対象までの距離を示す距離データを受信し、
距離データで表される３次元の領域を、特定の大きさの複数の部分領域に分割し、
前記複数の部分領域のうち、人物の手および腕の部分である手腕部を含む手腕部領域を、手をモデル化した手モデルと腕をモデル化した腕モデルとを用いて推定し、
前記手腕部領域内の距離データと前記手モデルとに基づいて、手の位置と姿勢を検出する
処理をコンピュータに実行させるための手認識プログラムを記録した記録媒体。
【０１３９】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１４０】
１０、１２、１４‥手認識装置；２０‥センサ；１００、１０２、１０４‥プロセッサ；２００‥データ受信部；３００‥メモリ；４００、４０２‥領域分割部；４１０、５１０、６１０‥データ保持部；４２０‥近傍点検出部；４３０‥領域拡張部；５００、５０２‥推定部；５２０、６２０‥手姿勢決定部；５３０、６３０、６３２‥腕姿勢決定部；５４０、６４０‥コスト算出部；５５０‥最小コスト領域保持部；６００、６０２、６０４‥検出部；ＲＥＣ‥記録媒体
【図１】
2019096119.tif 000003
【図２】
2019096119.tif 000004
【図３】
2019096119.tif 000005
【図４】
2019096119.tif 000006
【図５】
2019096119.tif 000007
【図６】
2019096119.tif 000008
【図７】
2019096119.tif 000009
【図８】
2019096119.tif 000010
【図９】
2019096119.tif 000011
【図１０】
2019096119.tif 000012
【図１１】
2019096119.tif 000013
【図１２】
2019096119.tif 000014