(57)【特許請求の範囲】
【請求項１】
物体の有関節(articulated)身体部分の姿勢をモデル化するための方法を実行するように少なくとも１つのプロセッサーをプログラムするためのコンピューター可読ソフトウェアがその上に具体化される、コンピューター可読記憶デバイスであって、前記方法が、
１つまたは複数のフレーム内において前記有関節身体部分の深度(depth)ピクセルを獲得するステップと、
前記物体の前記有関節身体部分を識別するために、前記１つまたは複数のフレームの前記深度ピクセルを処理するステップと、
モデルにアクセスするステップであって、前記モデルが、前記物体の前記有関節身体部分に対応する有関節身体部分を含む、ステップと、
初期マッチ(initial match)を提供するために、前記モデルの前記有関節身体部分を前記物体の前記識別された有関節身体部分にマッチさせるステップと、
前記初期マッチにおいて距離制約(distance constraints)が前記モデルの前記有関節身体部分によって違反された(violated)程度(extent)を評価する(evaluating)ステップであって、前記距離制約が、前記モデルの前記有関節身体部分の間の距離に課される制約を含む、ステップと、
前記距離制約が違反された程度に基づいて、前記モデルの前記有関節身体部分の少なくとも１つについての長さを調整するステップを含む、前記距離制約を満たそうとする試みにおいて前記モデルを調整するステップと
を含む、コンピューター可読記憶デバイスであって、
実行される前記方法が、
前記モデルの深度ピクセルを提供するために、前記モデルをラスター化するステップと、
少なくとも１つの比較平面内(comparison plane)において前記モデルの前記深度ピクセルとオーバーラップしていない、前記１つまたは複数のフレームの非オーバーラップ深度ピクセルを、前記１つまたは複数のフレームの前記深度ピクセルの中から識別するために、前記モデルの前記深度ピクセルを前記１つまたは複数のフレームの前記深度ピクセルと比較するステップと、
前記モデルの前記有関節身体部分の前記少なくとも１つについての寸法を調整することによって、前記モデルを前記１つまたは複数のフレームの前記非オーバーラップ深度ピクセルにより密接にマッチさせるために、前記比較ステップに基づいて前記モデルを調整するステップとをさらに含み、
前記比較ステップに基づいて前記モデルを調整する前記ステップが、前記モデルの前記有関節身体部分の前記少なくとも１つの横側に(lateral)隣接する、前記１つまたは複数のフレームの非オーバーラップ深度ピクセルの数に従って、前記モデルの前記有関節身体部分の前記少なくとも１つについての幅を増やすステップを含む、
コンピューター可読記憶デバイス。
【請求項２】
物体の有関節(articulated)身体部分の姿勢をモデル化するための方法を実行するように少なくとも１つのプロセッサーをプログラムするためのコンピューター可読ソフトウェアがその上に具体化される、コンピューター可読記憶デバイスであって、前記方法が、
１つまたは複数のフレーム内において前記有関節身体部分の深度(depth)ピクセルを獲得するステップと、
前記物体の前記有関節身体部分を識別するために、前記１つまたは複数のフレームの前記深度ピクセルを処理するステップと、
モデルにアクセスするステップであって、前記モデルが、前記物体の前記有関節身体部分に対応する有関節身体部分を含む、ステップと、
初期マッチ(initial match)を提供するために、前記モデルの前記有関節身体部分を前記物体の前記識別された有関節身体部分にマッチさせるステップと、
前記初期マッチにおいて距離制約(distance constraints)が前記モデルの前記有関節身体部分によって違反された(violated)程度(extent)を評価する(evaluating)ステップであって、前記距離制約が、前記モデルの前記有関節身体部分の間の距離に課される制約を含む、ステップと、
前記距離制約が違反された程度に基づいて、前記モデルの前記有関節身体部分の少なくとも１つについての長さを調整するステップを含む、前記距離制約を満たそうとする試みにおいて前記モデルを調整するステップと
を含む、コンピューター可読記憶デバイスであって、
前記有関節身体部分が、手の手のひらおよび指を含み、実行される前記方法が、
前記モデルにおいて前記モデルの少なくとも２つの隣接する指によって衝突制約(collision constraints)が違反される程度を評価するステップと、
前記モデルの前記少なくとも２つの隣接する指の少なくとも１つによって前記衝突制約が違反される前記程度に基づいて、前記モデルの前記少なくとも２つの隣接する指の前記少なくとも１つについての寸法を調整するステップを含む、前記衝突制約を満たそうとする試みにおいて前記モデルを調整するステップとをさらに含み、
前記衝突制約を満たそうとする前記試みにおいて前記モデルを調整する前記ステップが、前記モデルの前記少なくとも２つの隣接する指の前記少なくとも１つによって前記衝突制約が違反される前記程度に基づいて、前記モデルの前記少なくとも２つの隣接する指の前記少なくとも１つについての幅を減らすステップを含む、
コンピューター可読記憶デバイス。
【請求項３】
物体の有関節(articulated)身体部分の姿勢をモデル化するための方法を実行するように少なくとも１つのプロセッサーをプログラムするためのコンピューター可読ソフトウェアがその上に具体化される、コンピューター可読記憶デバイスであって、前記方法が、
１つまたは複数のフレーム内において前記有関節身体部分の深度(depth)ピクセルを獲得するステップと、
前記物体の前記有関節身体部分を識別するために、前記１つまたは複数のフレームの前記深度ピクセルを処理するステップと、
モデルにアクセスするステップであって、前記モデルが、前記物体の前記有関節身体部分に対応する有関節身体部分を含む、ステップと、
初期マッチ(initial match)を提供するために、前記モデルの前記有関節身体部分を前記物体の前記識別された有関節身体部分にマッチさせるステップと、
前記初期マッチにおいて距離制約(distance constraints)が前記モデルの前記有関節身体部分によって違反された(violated)程度(extent)を評価する(evaluating)ステップであって、前記距離制約が、前記モデルの前記有関節身体部分の間の距離に課される制約を含む、ステップと、
前記距離制約が違反された程度に基づいて、前記モデルの前記有関節身体部分の少なくとも１つについての長さを調整するステップを含む、前記距離制約を満たそうとする試みにおいて前記モデルを調整するステップと
を含む、コンピューター可読記憶デバイスであって、
実行される前記方法が、
前記モデルの深度ピクセルを提供するために、前記モデルをラスター化(rasterizing)するステップと、
少なくとも１つの比較平面内において前記１つまたは複数のフレームの前記深度ピクセルとオーバーラップしていない、前記モデルの非オーバーラップ深度ピクセルを、前記１つまたは複数のフレームの前記深度ピクセルの中から識別するために、前記モデルの前記深度ピクセルを前記１つまたは複数のフレームの前記深度ピクセルと比較するステップと、
前記モデルの前記有関節身体部分の前記少なくとも１つについての寸法を調整することによって、前記モデルを前記１つまたは複数のフレームの前記非オーバーラップ深度ピクセルにより密接にマッチさせるために、前記比較ステップに基づいて前記モデルを調整するステップとをさらに含み、
前記比較ステップに基づいて前記モデルを調整する前記ステップが、前記モデルの前記有関節身体部分の少なくとも１つの前記少なくとも１つの横側に隣接する、前記モデルの非オーバーラップ深度ピクセルの数に従って、前記モデルの前記有関節身体部分の前記少なくとも１つについての幅を減らすステップを含む、
コンピューター可読記憶デバイス。
【請求項４】
ユーザーの手の姿勢をモデル化するためのプロセッサー実施方法であって、
１つまたは複数のフレーム内において前記手の深度ピクセルを獲得するプロセッサー実施ステップと、
前記手の有関節部分を識別するために、前記１つまたは複数のフレームの前記深度ピクセルを処理するプロセッサー実施ステップと、
前記手の前記有関節部分のモデルにアクセスするプロセッサー実施ステップであって、
前記モデルの前記手の前記有関節部分が、指セグメントを含む、手のひらおよび指を含む、プロセッサー実施ステップと、
初期マッチを提供するために、前記モデルの前記手の前記有関節部分を前記１つまたは複数のフレームの前記深度ピクセルからなる前記手の前記識別された有関節部分にマッチさせるプロセッサー実施ステップと、
前記初期マッチにおいて距離制約が前記指の少なくとも１つによって違反された程度を評価するプロセッサー実施ステップであって、前記距離制約が、前記指の前記少なくとも１つについての指セグメントの間の距離に課される制約を含む、プロセッサー実施ステップと、
前記モデルの深度ピクセルを提供するために、前記モデルをラスター化するプロセッサー実施ステップと、
少なくとも１つの比較平面内において前記モデルの前記指の前記少なくとも１つについての前記深度ピクセルとオーバーラップしていない、前記１つまたは複数のフレームの非オーバーラップ深度ピクセルを、前記１つまたは複数のフレームの前記深度ピクセルの中から識別するために、前記指の前記少なくとも１つについての前記深度ピクセルを前記１つまたは複数のフレームの前記深度ピクセルと比較するプロセッサー実施ステップと、
（ａ）前記距離制約が前記指の前記少なくとも１つによって違反された程度に基づいて、前記モデルの前記指の少なくとも１つについての少なくとも１つの指セグメントの長さを調整することを含む、前記距離制約を満たそうとする試みにおいて、および（ｂ）前記モデルの前記指の前記少なくとも１つについての前記指セグメントの前記少なくとも１つについての幅を増やすことによって、前記モデルを前記１つまたは複数のフレームの前記非オーバーラップ深度ピクセルにより密接にマッチさせるために、前記比較ステップに基づいて、前記モデルを調整するプロセッサー実施ステップと
を含むプロセッサー実施方法。
【請求項５】
前記少なくとも１つの比較平面内において前記１つまたは複数のフレームの前記深度ピクセルとオーバーラップしていない、前記モデルの前記手の前記有関節部分の前記少なくとも１つについての非オーバーラップ深度ピクセルを、前記１つまたは複数のフレームの前記深度ピクセルの中から識別するために、前記指の前記少なくとも１つ以外の、前記手の前記有関節部分の少なくとも１つについての前記深度ピクセルを前記１つまたは複数のフレームの前記深度ピクセルと比較するステップと、
前記幅を減らすことによって、前記モデルを前記１つまたは複数のフレームの前記深度ピクセルにより密接にマッチさせるために、前記比較ステップに基づいて前記モデルを調整するステップと
をさらに含む、請求項４に記載のプロセッサー実施方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明の一実施例は、例えば、全自動動的有関節モデル較正に関する。
【背景技術】
【０００２】
[0001]撮像システムは、物理空間内の人間または他の対象などの有関節物体（ａｒｔｉｃｕｌａｔｅｄ  ｏｂｊｅｃｔ）の位置、姿勢、および／または動きに関するデータを獲得し、そのデータをコンピューティングシステム内のアプリケーションへの入力として使用することができる。軍事、娯楽、スポーツ、および医療目的など、多くの用途が可能である。例えば、物体の姿勢および／または運動を使用して、アニメーションのキャラクターまたはアバターを制御すること、ゲームに参加すること、および画面上のコマンドのメニューから選択を行うことなどができる。姿勢は、深度ピクセル（ｄｅｐｔｈ  ｐｉｘｅｌ）からなるフレーム内などにおける、ある時点の物体の配置または形状を表すことができ、一方、物体の運動は、深度ピクセルからなる複数のフレーム内などにおける、一連の姿勢によって表すことができる。撮像システムは、カメラを使用して視野内における物体の存在を検出する光学系を含むことができる。しかし、より高い忠実度で物体を撮像するためには、さらなる改良が必要とされる。特に、手などの有関節身体部分（ａｒｔｉｃｕｌａｔｅｄ  ｂｏｄｙ  ｐｏｒｔｉｏｎ）を高度な忠実度で撮像できることが望ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本願発明の一実施例は、例えば、全自動動的有関節モデル較正に関する。
【課題を解決するための手段】
【０００４】
[0002]ユーザーの手など有関節身体部分を改善された忠実度で撮像するための、プロセッサー実施方法、撮像システム、および有形なコンピューター可読記憶デバイスが提供される。例えば、ユーザーは、ハンドジェスチャーを行って、メニューを操作すること、ブラウジングもしくはショッピングエクスペリエンスにおいて対話すること、プレーするゲームを選択すること、または友人にメッセージを送信するなど通信機能にアクセスすることができる。ユーザーは、手を使用して、カーソルを制御し画面上のメニューから項目を選択すること、または３Ｄ仮想世界においてアバターの動きを制御することができる。一般に、手の位置および姿勢を検出し、撮像システム内のアプリケーションへの制御入力として使用することができる。
【０００５】
[0003]撮像システムの能力を高めて、有関節身体部分を正確に識別するために、有関節身体部分のモデルが提供される。モデルを深度センサーから獲得された対応する深度ピクセルにマッチさせて、初期マッチを提供する。その後、マッチングプロセスは、距離制約（ｄｉｓｔａｎｃｅ  ｃｏｎｓｔｒａｉｎｔ）と、衝突制約（ｃｏｌｌｉｓｉｏｎ  ｃｏｎｓｔｒａｉｎｔ）と、角度制約（ａｎｇｌｅ  ｃｏｎｓｔｒａｉｎｔ）と、ラスター化モデル（ｒａｓｔｅｒｉｚｅｄ  ｍｏｄｅｌ）を使用するピクセル比較とを使用して改善される。
【０００６】
[0004]一実施形態では、（ユーザー／人、動物、ロボットなど）物体の有関節身体部分の姿勢をモデル化するための方法を実行するように少なくとも１つのプロセッサーをプログラムするためのコンピューター可読ソフトウェアがその上に具体化される、コンピューター可読記憶デバイスが提供される。方法は、有関節身体部分の深度ピクセルを獲得するステップを含む。深度ピクセルは、例えば１つまたは複数のフレーム内において、深度センサーを使用して獲得することができる。深度ピクセルは、センサーデータである。方法は、有関節身体部分を識別するために、１つまたは複数のフレームの深度ピクセルを処理するステップをさらに含む。方法は、モデルにアクセスするステップであって、モデルが、物体の有関節身体部分に対応する有関節身体部分を含む、ステップをさらに含む。物体の識別された有関節身体部分にモデルの有関節身体部分をマッチさせて、初期マッチを提供する。１つの可能な手法では、このマッチングプロセスは、モデルの各有関節身体部分の代表的なアトラクトポイント（ａｔｔｒａｃｔ  ｐｏｉｎｔ）を、１つまたは複数のフレームの深度ピクセルのそれぞれの重心（ｃｅｎｔｒｏｉｄ）にマッチさせる。
【０００７】
[0005]方法は、初期マッチにおいて距離制約がモデルの有関節身体部分によって違反された程度を評価するステップであって、距離制約が、モデルの有関節身体部分の間の距離に課される制約を含む、ステップをさらに含む。モデルは、距離制約を満たそうとする試みにおいて調整され、それには、距離制約が違反された程度に基づいて、モデルの有関節身体部分の少なくとも１つについての長さを調整することが含まれる。一例として、有関節身体部分の長さを増やすこと、または減らすことができる。
【０００８】
[0006]衝突制約は、モデルの少なくとも２つの隣接する指セグメントが、例えば互いに平行といった指定された相対位置にあると判定された場合など、モデルが指定された条件を満たす場合に実施することができる。モデルは、モデルの少なくとも２つの隣接する指セグメントの幅を減らすことなどによって、衝突制約を満たそうとする試みにおいて調整することができる。
【０００９】
[0007]ピクセル比較は、１つまたは複数のフレームの非オーバーラップ深度ピクセル（ｎｏｎ−ｏｖｅｒｌａｐｐｉｎｇ  ｄｅｐｔｈ  ｐｉｘｅｌ）および手の有関節部分の少なくとも１つについての非オーバーラップ深度ピクセルを識別するために、手の有関節部分の少なくとも１つについての深度ピクセルを１つまたは複数のフレームの深度ピクセルと比較することを含むことができる。モデルは、モデルを１つまたは複数のフレームの深度ピクセルにより密接にマッチさせるために、モデルの有関節身体部分の少なくとも１つについての寸法を減らすこと、および／または増やすことなどによって、比較ステップに基づいて調整することができる。
【００１０】
[0008]上述の要約は、本明細書において以下でさらに説明される概念のうちのいくつかを選んで簡潔な形で紹介するために提供された。上述の要約は、特許請求される本発明の主要な特徴または必須の特徴を識別することを意図しておらず、特許請求される本発明の範囲を限定するために使用することも意図していない。
【００１１】
[0009]図面では、同様の番号が付された要素は互いに一致する。
【図面の簡単な説明】
【００１２】
【図１】[0010]撮像システムの例示的な一実施形態を示す図である。
【図２】[0011]図１の撮像システムの例示的なブロック図である。
【図３】[0012]図１の撮像システムにおいて使用できるコンピューティング環境の例示的なブロック図である。
【図４】[0013]図１の撮像システムにおいて使用できるコンピューティング環境の別の例示的なブロック図である。
【図５】[0014]関節とアトラクトポイントとを含む、ユーザーの手のモデルを示す図である。
【図６】[0015]撮像システムにおいて改善された忠実度で有関節身体部分の姿勢を検出するための方法を示す図である。
【図７Ａ】[0016]図６のステップ７００、７２０、および７５０のさらなる詳細を示す図である。
【図７Ｂ】[0017]図６のステップ７６０のさらなる詳細を示す図である。
【図８Ａ】[0018]ユーザーの手の深度ピクセルを含む、深度ピクセルからなるフレームを示す図である。
【図８Ｂ】[0019]背景ピクセルを除去した、図８Ａのユーザーの手の深度ピクセルを示す図である。
【図９Ａ】[0020]図８Ｂのユーザーの手の深度ピクセルからなる末端部指セグメントおよび末端部親指セグメントについての、図７Ａの見本ステップ７１２からの確率値を示す図である。
【図９Ｂ】[0021]図８Ｂのユーザーの手の深度ピクセルからなる中間部指セグメントおよび基部親指セグメントについての、図７Ａのステップ７２１において生成される重心を示す図である。
【図９Ｃ】[0022]図８Ｂのユーザーの手の深度ピクセルからなる基部指セグメントについての、図７Ａのステップ７２１において生成される重心を示す図である。
【図９Ｄ】[0023]図８Ｂのユーザーの手の深度ピクセルからなる手のひらについての、図７Ａのステップ７２１において生成される重心を示す図である。
【図９Ｅ】[0024]図８Ｂのユーザーの手の深度ピクセルからなる手首についての、図７Ａのステップ７２１において生成される重心を示す図である。
【図１０】[0025]図７Ａのステップ７２１において、ユーザーの手のテストデータから生成された重心を示す図である。
【図１１】[0026]重心対アトラクトポイントマッチング（ｃｅｎｔｒｏｉｄ−ｔｏ−ａｔｔｒａｃｔ  ｐｏｉｎｔ  ｍａｔｃｈｉｎｇ）についての、図７Ａのステップ７３４の詳細を示す図である。
【図１２Ａ】[0027]重心へのアトラクトポイントの剛体変換についての、図７Ａのステップ７３６の詳細を示す図である。
【図１２Ｂ】[0028]アトラクトポイントを重心のより近くに移動させるための、図７Ａのステップ７５２の詳細を示す図である。
【図１２Ｃ】[0029]モデルをラスター化して、モデルの深度ピクセルを提供するための、図７Ｂのステップ７６４の詳細を示す図である。
【図１２Ｄ】[0030]親指エリアについて、モデルの深度ピクセルをセンサーの深度ピクセルと比較するための、図７Ｂのステップ７６６〜７７２の詳細を示す図である。
【図１２Ｅ】[0031]図１２Ｄと一致する、ピクセルベースの調整ベクトル（ａｄｊｕｓｔｍｅｎｔ  ｖｅｃｔｏｒ）に基づいたモデルの関節の調整を示す、図７Ｂのステップ７７８の詳細を示す図である。
【図１２Ｆ】[0032]図１２Ｅにおいて使用されるピクセルベースの調整ベクトルを示す図である。
【図１２Ｇ】[0033]図１２Ｅと一致する、モデルの更新を示す、図７Ｂのステップ７９２の詳細を示す図である。
【図１３】[0034]図１３Ａは比較平面（ｃｏｍｐａｒｉｓｏｎ  ｐｌａｎｅ）が深度センサーの深度軸を横断する、モデルの深度ピクセルをセンサーの深度ピクセルと比較するための、図７Ｂのステップ７６８、７７０、および７７２のさらなる詳細を示す図である。 [0035]図１３Ｂは図１３Ａの比較平面１３１０のさらなる詳細を示す図である。
【図１４】[0036]距離制約、衝突制約、およびピクセル比較を使用して、撮像システムにおいて改善された忠実度で有関節身体部分の姿勢を検出するための方法を示す図である。
【図１５】[0037]図１４の方法とともに使用するための、ユーザーの手の深度ピクセル一例を示す図である。
【図１６Ａ１】[0038]距離制約が実施されず、モデルが望ましいものよりも小さい場合の、図１５の深度ピクセルに対する図５のモデルのマッチングを示す図である。
【図１６Ａ２】[0039]親関節および子関節が示された、図１６Ａ１の代替を示す図である。
【図１６Ｂ１】人差し指についての図１６Ａ１の画像の詳細を示す図である。
【図１６Ｂ２】[0040]親関節および子関節が示された、図１６Ｂ１の代替を示す図である。
【図１６Ｃ】[0041]距離制約を実施した後の、図１６Ｂ１のモデルに対する調整を示す図である。
【図１６Ｄ】[0042]ラスター化および深度センサーの深度ピクセルとの比較の後の、図１６Ｃのモデルを示す図である。
【図１６Ｅ】[0043]ピクセル比較に基づいた、図１６Ｄのモデルに対する調整を示す図である。
【図１７Ａ】[0044]距離制約が実施されず、モデルが望ましいものよりも大きい場合の、図１５の深度ピクセルに対する図５のモデルのマッチングの別の例を示す図である。
【図１７Ｂ】[0045]親関節および子関節が示された、図１７Ａの代替を示す図である。
【図１８】[0046]図１８Ａは衝突を示す、図５のモデルの２つの隣接する指を示す図である。 [0047]図１８Ｂは衝突制約を実施した後の、図１８Ａの２つの隣接する指を示す図である。
【発明を実施するための形態】
【００１３】
[0048]本明細書で提供される技法は、人間対コンピューターの様々な対話タスクのための入力のソースとして消費できる提案を生成するために、確率情報および制約を用いて、自由度の高い有関節物体の状態（姿勢および／または形状）の推定をリアルタイムに提供する。有関節物体は、たいていは６自由度を有する多くの関節を有する３Ｄ形状物体として知ることができる。状態は、知られた有関節物体のすべての部分の、並進、方向、スケール、および他の形状記述情報である。
【００１４】
[0049]全身トラッキングといったより限定的なケースのためのこの問題のソリューションは、手足および頭などの身体の特徴を識別するには十分であるが、より精緻なレベルの詳細が望まれる場合には一般に不十分である。例えば、ユーザーの手を検出する場合、ピクセル空間内でユーザーが手を素早く動かすことができるせいで、程度の低いフレーム対フレームのコヒーレンスしか得られないことがある。ユーザーが深度センサーに近い場合など、ユーザーの手が視野の大部分を満たす場合は、特にそうである。さらに、全身トラッキングと比較して、手は一般に、自己遮蔽に起因するより大きな曖昧性を有し、例えば指など、見掛けが似た部分を多く有する。しかし、本明細書で提供されるソリューションは、全身トラッキングにも姿勢推定にも同様に適している。
【００１５】
[0050]いくつかのケースでは、トポロジーが一定の有関節モデルが使用される。しかし、変化する寸法をモデルの各有関節部分が有することが有利であり得る。このケースでは、モデルのすべての部分の寸法を動的に良好に推定し、リアルタイムに誤差を補正するために寸法を調整することが、モデルフィッティング（ｍｏｄｅｌ  ｆｉｔｔｉｎｇ）などのタスクには有益である。有関節姿勢推定方法は、直接測定を通して、またはユーザーがいくつかの事前に定められた較正姿勢を取る前処理ステップにおいて計算されて、モデルサイズパラメータがあらかじめ分かっていることを前提にすることができる。しかし、そのような較正プロセスはユーザーには不便であり得るので、それを避けるのが望ましい。本明細書で提供されるソリューションは、リアルタイムに有関節モデルのすべての部分の寸法を動的に較正し、調整する。これは、有関節モデルの各部分の寸法に関する情報の複数のソースを組み合わせ、重み付けを行うことによって行われる。提案されるソリューションは、ユーザー入力、事前較正ステップ、またはユーザーが簡単な姿勢を取ることを必要としない。
【００１６】
[0051]ある程度の連続的な期間にわたって異なるソースから獲得した情報に重み付けを行い、組み合わせることによって、既知の有関節モデルを正しい寸法に動的に調整することができる。これは、静的初期化ステップとして、またはより柔軟な有関節物体に対処するための、もしくはともに同じ既知のタイプに属する異なる有関節物体のモデル化を切り換えるための継続調整ステップとして、行うことができる。
【００１７】
[0052]ソリューションの特徴は、（１）距離制約違反量を使用して、有関節部分の長さを推定すること、（２）衝突制約違反量を使用して、有関節部分幅の過大評価を見つけること、（３）モデルフィッティングからのピクセル分類を使用して、有関節部分の幅を推定すること、および（４）剛体３Ｄ点群変換（ｒｉｇｉｄ  ３Ｄ  ｐｏｉｎｔ  ｃｌｏｕｄ  ｔｒａｎｓｆｏｒｍａｔｉｏｎ）を使用して、１Ｄから３Ｄスケールを使用する有関節モデルの全体サイズを推定することを含む。
【００１８】
[0053]図１は、ユーザー８がアプリケーションと対話する、撮像システム１０の例示的な一実施形態を示している。これは、ユーザーの自宅内などにおける、撮像システムの現実世界配置を示している。撮像システム１０は、ディスプレー１９６と、深度カメラシステム２０と、コンピューティング環境または装置１２とを含む。深度カメラシステム２０は、画像カメラコンポーネント２２または深度センサーを含むことができ、画像カメラコンポーネント２２は、赤外（ＩＲ）光放射器２４、赤外光カメラ２６、および赤緑青（ＲＧＢ）カメラ２８を有する。ユーザー８は、人またはプレーヤーとも呼ばれ、深度センサーの視野６内に立つ。ライン２および４は、視野６の境界線を示す。この例では、深度カメラシステム２０およびコンピューティング環境１２が、ディスプレー１９６上のアバター１９７がユーザー８の動きをトラッキングする、アプリケーションを提供する。例えば、アバターは、ユーザーが腕を上げたときに、腕を上げることができる。ユーザーは、手でジェスチャーを行って、制御入力をアプリケーションに提供することもできる。アバター１９７は、３Ｄ仮想世界内の道路１９８上に立っている。深度カメラシステム２０の焦点距離に沿って例えば水平に伸びるｚ軸と、垂直に伸びるｙ軸と、（ｚ軸を横断して）横方向に水平に伸びるｘ軸とを含む、デカルト世界座標系を定義することができる。図面のパースペクティブは、単純化として、ディスプレー１９６が、ｙ軸方向に垂直に広がり、ｚ軸が、ｙ軸およびｘ軸に直交し、ユーザー８が立つ地面に平行して、深度カメラシステムから手前に伸びるように変更されていることに留意されたい。
【００１９】
[0054]一般に、撮像システム１０は、人ターゲットを認識し、解析し、および／またはトラッキングするために使用される。コンピューティング環境１２は、コンピューター、またはゲームシステムもしくはコンソールなどの他、アプリケーションを実行するためのハードウェアコンポーネント、および／またはソフトウェアコンポーネントも含むことができる。
【００２０】
[0055]深度カメラシステム２０は、片手または両手の姿勢、ジェスチャー、および／または動きを含む、ユーザーによって実行される姿勢、ジェスチャー、および／または動きをキャプチャーし、解析し、トラッキングして、アバターもしくは画面上のキャラクターを動かし、またはユーザーインターフェース（ＵＩ）内においてメニュー項目を選択するなどの、１つまたは複数の制御またはアクションをアプリケーション内において実行できるように、ユーザー８など１人または複数人の人を視覚的にモニタリングするために使用されるカメラを含むことができる。手の姿勢は、深度ピクセルからなるフレーム内などにおける、ある時点での、ユーザーの手の配置に相当し、ジェスチャーは、深度ピクセルからなる複数のフレーム内などにおける、一連の姿勢に相当する。複数のユーザーを同様にモニタリングすることができる。
【００２１】
[0056]撮像システム１０は、例えば、テレビ、モニター、もしくは高解像度テレビ（ＨＤＴＶ）などの、または視覚および聴覚出力をユーザーに提供する壁面もしくは他の面上への投影のことさえある、ディスプレー１９６などの視聴覚デバイスに接続することができる。聴覚出力は、別個のデバイスを介して提供することもできる。ディスプレーを駆動するため、コンピューティング環境１２は、アプリケーションに関連する視聴覚信号を提供する、グラフィックスカードなどのビデオアダプター、および／またはサウンドカードなどのオーディオアダプターを含むことができる。ディスプレー１９６は、例えば、Ｓビデオケーブル、同軸ケーブル、ＨＤＭＩ（登録商標）ケーブル、ＤＶＩケーブル、またはＶＧＡケーブルなどを介して、コンピューティング環境１２に接続することができる。
【００２２】
[0057]ユーザーの姿勢、ジェスチャー、および／または動きが、キャプチャーされ、アバターもしくは画面上のキャラクターを動かすために使用されるように、および／またはコンピューティング環境１２によって実行されるアプリケーションへの入力制御として解釈されるように、深度カメラシステム２０を使用して、ユーザー８をトラッキングすることができる。
【００２３】
[0058]ユーザー８のいくつかの動きは、アバターの制御以外のアクションに対応することができる制御として解釈することができる。例えば、一実施形態では、プレーヤーは、姿勢および／または動きを使用して、ゲームを終了、停止、またはセーブすること、レベルを選択すること、高得点を見ること、および友人と通信することなどができる。プレーヤーは、姿勢および／または動きを使用して、メインユーザーインターフェースからゲームもしくは他のアプリケーションを選択すること、またはそれとは別に選択肢のメニューを操作することができる。したがって、１つまたは複数のアプリケーションと対話するために、ユーザー８のあらゆる姿勢および／または動きを、任意の適切な方法で利用可能とすること、使用すること、および解析することができる。
【００２４】
[0059]撮像システム１０はさらに、ゲームならびに娯楽およびレジャーを目的とする他のアプリケーションの分野の外にある、オペレーティングシステムおよび／またはアプリケーションの制御入力として、ターゲットの姿勢および／または動きを解釈するために使用することができる。例えば、実際に、オペレーティングシステムおよび／またはアプリケーションの制御可能な側面はいずれも、ユーザー８の姿勢および／または動きによって制御することができる。
【００２５】
[0060]図２は、図１ａの撮像システム１０の例示的なブロック図である。深度カメラシステム２０は、深度ピクセル値を含むことができる深度画像を含む深度情報を有するビデオを、例えば、飛行時間（ｔｉｍｅ−ｏｆ−ｆｌｉｇｈｔ）、構造化照明（ｓｔｒｕｃｔｕｒｅｄ  ｌｉｇｈｔ）、またはステレオ画像（ｓｔｅｒｅｏ  ｉｍａｇｅ）などを含む、任意の適切な技法を介して、キャプチャーするように構成することができる。深度カメラシステム２０は、深度情報を「Ｚレイヤ」に、すなわち、深度カメラからその視線に沿って伸びるＺ軸に直交できるレイヤに組織することができる。
【００２６】
[0061]深度カメラシステム２０は、物理空間内のシーンの深度画像をキャプチャーする深度カメラなどの、画像カメラコンポーネント２２を含むことができる。深度画像は、キャプチャーされたシーンの２次元（２Ｄ）ピクセル領域を含むことができ、２Ｄピクセル領域内の各ピクセルは、画像カメラコンポーネント２２からの直線距離を表す、関連する深度値を有する。
【００２７】
[0062]画像カメラコンポーネント２２は、シーンの深度画像をキャプチャーするために使用できる、赤外（ＩＲ）光放射器２４と、赤外光カメラ２６と、赤緑青（ＲＧＢ）カメラ２８とを含むことができる。赤外光放射器２４および赤外光カメラ２６の組み合わせによって、３Ｄカメラが形成される。例えば、飛行時間解析では、ＩＲ光放射器２４が、物理空間に赤外光を放射し、赤外光カメラ２６が、物理空間内の１つまたは複数のターゲットおよび物体の表面からの後方散乱光を検出する。いくつかの実施形態では、出射光パルスと対応する入射光パルスの間の時間が測定され、深度カメラシステム２０から物理空間内のターゲットまたは物体上の特定の位置までの物理距離を決定するために使用されるように、パルス赤外光を使用することができる。出射光波の位相を入射光波の位相と比較して、位相シフトを決定することができる。その後、位相シフトを使用して、深度カメラシステムからターゲットまたは物体上の特定の位置までの物理距離を決定することができる。
【００２８】
[0063]例えば散乱光パルス撮像（ｓｈｕｔｔｅｒｅｄ  ｌｉｇｈｔ  ｐｕｌｓｅ  ｉｍａｇｉｎｇ）を含む、様々な技法を介して、光の反射ビームの強度を経時的に解析することによって、深度カメラシステム２０からターゲットまたは物体上の特定の位置までの物理距離を間接的に決定するために、飛行時間解析を使用することもできる。
【００２９】
[0064]別の例示的な実施形態では、深度カメラシステム２０は、構造化照明を使用して、深度情報をキャプチャーすることができる。そのような解析では、パターン化された光（すなわち、グリッドパターンまたはストライプパターンなど既知のパターンで表示される光）を、例えばＩＲ光放射器２４を介して、シーン上に投影することができる。シーン内の１つまたは複数のターゲットまたは物体の表面に当たると、それに応じて、パターンが変形されることがある。パターンのそのような変形は、例えば赤外光カメラ２６および／またはＲＧＢカメラ２８によって、キャプチャーすることができ、その後、深度カメラシステムからターゲットまたは物体上の特定の位置までの物理距離を決定するために解析することができる。
【００３０】
[0065]深度カメラシステム２０は、深度情報を生成するために分解できる視覚的ステレオデータを獲得するために、シーンを異なる角度から見ることができる２つ以上の物理的に離れたカメラを含むことができる。
【００３１】
[0066]深度カメラシステム２０は、音波を受け取り、電気信号に変換する、例えばトランスデューサーまたはセンサーを含む、マイクロフォン３０をさらに含むことができる。加えて、コンピューティング環境１２によって実行されるアプリケーションを制御するために、マイクロフォン３０を使用して、人によって提供される音などのオーディオ信号を受け取ることができる。オーディオ信号は、話された言葉、口笛、叫び、および他の発声などの、人の発声音の他、手を叩く、または足を踏み鳴らすなどの、非発声音も含むことができる。
【００３２】
[0067]深度カメラシステム２０は、画像カメラコンポーネント２２と通信するプロセッサー３２を含むことができる。プロセッサー３２は、例えば、深度画像を受け取るため、深度画像に基づいてボクセルからなるグリッドを生成するため、ボクセルからなるグリッド内に含まれる背景を除去して、人ターゲットに関連する１つもしくは複数のボクセルを分離するため、分離された人ターゲットの１つもしくは複数の四肢の位置もしくは場所を決定するため、１つもしくは複数の四肢の位置もしくは場所に基づいてモデルを調整するための命令、または以下でより詳細に説明される他の任意の適切な命令を含む命令を実行できる、標準化されたプロセッサー、専用プロセッサー、またはマイクロプロセッサーなどを含むことができる。
【００３３】
[0068]深度カメラシステム２０は、プロセッサー３２によって実行される命令を記憶できる他、３ＤカメラもしくはＲＧＢカメラによってキャプチャーされた画像もしくは画像のフレーム、または他の任意の適切な情報もしくは画像なども記憶できる、メモリーコンポーネント３４をさらに含むことができる。例示的な一実施形態によれば、メモリーコンポーネント３４は、ランダムアクセスメモリー（ＲＡＭ）、リードオンリーメモリー（ＲＯＭ）、キャッシュ、フラッシュメモリー、ハードディスク、または他の任意の適切な有形なコンピューター可読記憶コンポーネントを含むことができる。メモリーコンポーネント３４は、バス２１を介して画像キャプチャーコンポーネント２２およびプロセッサー３２と通信する、別個のコンポーネントとすることができる。別の実施形態によれば、メモリーコンポーネント３４は、プロセッサー３２および／または画像キャプチャーコンポーネント２２内に組み込むことができる。
【００３４】
[0069]深度カメラシステム２０は、通信リンク３６を介してコンピューティング環境１２と通信することができる。通信リンク３６は、有線および／または無線接続とすることができる。一実施形態によれば、コンピューティング環境１２は、深度カメラシステム２０の視野内にある物理空間からいつ画像データをキャプチャーすべきかを知らせるクロック信号を、通信リンク３６を介して深度カメラシステム２０に提供することができる。
【００３５】
[0070]加えて、深度カメラシステム２０は、例えば３Ｄカメラ２６および／もしくはＲＧＢカメラ２８によってキャプチャーされた深度情報および画像、ならびに／または深度カメラシステム２０によって生成できるスケルタルモデル（ｓｋｅｌｅｔａｌ  ｍｏｄｅｌ）を、通信リンク３６を介してコンピューティング環境１２に提供することができる。その後、コンピューティング環境１２は、モデル、深度情報、およびキャプチャーされた画像を使用して、アプリケーションを制御することができる。例えば、図２に示されるように、コンピューティング環境１２は、（ユーザーが姿勢を取った、または動いたときに）モデルによって実行され得るジェスチャー／姿勢に関する情報を各々が有する、ジェスチャー／姿勢フィルターの集まりなどの、ジェスチャー／姿勢ライブラリ１９０を含むことができる。例えば、様々な手の姿勢および／またはジェスチャーのためのジェスチャー／姿勢フィルターを提供することができる。手の例示的な姿勢は、「ストップ」姿勢における手のひらを前に向けて手を上げること、および数量を示すために１本または複数本の指を立てることなどを含む。手の例示的なジェスチャーは、手をスワイプする（ｓｗｉｐｅ）こと、または振り立てる（ｆｌｉｎｇ）ことを含む。検出された姿勢または運動を各フィルターと比較することによって、人によって実行された特定の姿勢またはジェスチャーを識別することができる。
【００３６】
[0071]深度カメラシステム２０によってキャプチャーされてモデルの形式を取るデータは、アプリケーションへの様々な制御入力に関連付けられた１つまたは複数の特定の姿勢または動きを、（スケルタルモデルによって表される）ユーザーがいつ実行したかを識別するために、ジェスチャー／姿勢ライブラリ１９０内のジェスチャー／姿勢フィルターと比較することができる。
【００３７】
[0072]コンピューティング環境は、メモリー１９４内に記憶された命令を実行して、オーディオ−ビデオ出力信号を表示デバイス１９６に提供するための、および本明細書で説明される他の機能を達成するための、プロセッサー１９２も含むことができる。
【００３８】
[0073]メモリー３４は、本明細書で説明されるようなユーザーの手または他の有関節身体部分の姿勢をモデル化する方法を実行するために、少なくとも１つのプロセッサーをプログラミングするための、コンピューター可読ソフトウェアがその上に具体化される、有形なコンピューター可読記憶デバイスとすることができる。また、プロセッサー３２は、ユーザーの姿勢をモデル化するためのプロセッサー実施方法を可能にする、１つまたは複数のプロセッサーとすることができ、方法は、本明細書で説明されるプロセッサー実施ステップを含む。
【００３９】
[0074]図３は、図１の撮像システムにおいて使用できるコンピューティング環境の例示的なブロック図を示している。コンピューティング環境は、１つまたは複数のジェスチャーまたは他の動きを解釈し、それに応じて、ディスプレー上の視覚空間を更新するために使用することができる。上で示されたコンピューティング環境１２などのコンピューティング環境は、ゲームコンソールなどの、マルチメディアコンソール１００を含むことができる。マルチメディアコンソール１００は、レベル１キャッシュ１０２、レベル２キャッシュ１０４、およびフラッシュＲＯＭ（リードオンリーメモリー）１０６を有する、中央処理装置（ＣＰＵ）１０１を有する。レベル１キャッシュ１０２およびレベル２キャッシュ１０４は、データを一時的に記憶し、その結果、メモリーアクセスサイクルの回数を減らし、それによって、処理スピードおよびスループットを改善する。２つ以上のコアを、したがって、追加のレベル１キャッシュ１０２およびレベル２キャッシュ１０４有する、ＣＰＵ１０１を提供することができる。フラッシュＲＯＭなどのメモリー１０６は、マルチメディアコンソール１００に電源が入れられたときに、ブートプロセスの初期フェーズ中にロードされる、実行可能コードを記憶することができる。
【００４０】
[0075]グラフィックス処理ユニット（ＧＰＵ）１０８およびビデオエンコーダー／ビデオコーデック（コーダー／デコーダー）１１４は、高速および高解像度グラフィックス処理のためのビデオ処理パイプラインを形成する。データは、バスを介してグラフィックス処理ユニット１０８からビデオエンコーダー／ビデオコーデック１１４に搬送される。ビデオ処理パイプラインは、データを、テレビまたは他のディスプレーに送るために、Ａ／Ｖ（オーディオ／ビデオ）ポート１４０に出力する。ＲＡＭ（ランダムアクセスメモリー）などの様々なタイプのメモリー１１２へのプロセッサーアクセスを容易にするために、メモリーコントローラー１１０が、ＧＰＵ１０８に接続される。
【００４１】
[0076]マルチメディアコンソール１００は、好ましくはモジュール１１８上に実装される、Ｉ／Ｏコントローラー１２０、システム管理コントローラー１２２、オーディオ処理ユニット１２３、ネットワークインターフェース１２４、第１のＵＳＢホストコントローラー１２６、第２のＵＳＢコントローラー１２８、および前面パネルＩ／Ｏサブアセンブリー１３０を含む。ＵＳＢコントローラー１２６、１２８は、周辺機器コントローラー１４２（１）〜１４２（２）、無線アダプター１４８、および外部メモリーデバイス１４６（例えば、フラッシュメモリー、外部ＣＤ／ＤＶＤ  ＲＯＭドライブ、着脱可能媒体など）に対するホストとして機能する。ネットワークインターフェース（ＮＷ  ＩＦ）１２４および／または無線アダプター１４８は、ネットワーク（例えば、インターネット、ホームネットワークなど）へのアクセスを提供し、イーサネット（登録商標）カード、モデム、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール、およびケーブルモデムなどを含む、多種多様な様々な有線または無線アダプターコンポーネントのいずれかとすることができる。
【００４２】
[0077]ブートプロセス中にロードされるアプリケーションデータを記憶するために、
システムメモリー１４３が提供される。媒体ドライブ１４４が提供され、媒体ドライブ１４４は、ＤＶＤ／ＣＤドライブ、ハードドライブ、または他の着脱可能媒体ドライブを含むことができる。媒体ドライブ１４４は、マルチメディアコンソール１００に内蔵すること、または外付けすることができる。アプリケーションデータは、実行、再生などのために、マルチメディアコンソール１００によって、媒体ドライブ１４４を介してアクセスすることができる。媒体ドライブ１４４は、シリアルＡＴＡバスまたは他の高速接続などのバスを介して、Ｉ／Ｏコントローラー１２０に接続される。
【００４３】
[0078]システム管理コントローラー１２２は、マルチメディアコンソール１００の利用可能性の保証に関する様々なサービス機能を提供する。オーディオ処理ユニット１２３およびオーディオコーデック１３２は、高忠実度およびステレオ処理を行う、対応するオーディオ処理パイプラインを形成する。オーディオデータは、通信リンクを介して、オーディオ処理ユニット１２３とオーディオコーデック１３２の間で搬送される。オーディオ処理パイプラインは、データを、オーディオ機能を有する外部オーディオプレーヤーまたはデバイスによる再生のために、Ａ／Ｖポート１４０に出力する。
【００４４】
[0079]前面パネルＩ／Ｏサブアセンブリー１３０は、電源ボタン１５０および排出ボタン１５２の機能の他、マルチメディアコンソール１００の外面上に露出する任意のＬＥＤ（発光ダイオード）または他のインジケーターをサポートする。システム電源モジュール１３６は、マルチメディアコンソール１００のコンポーネントに電力を提供する。ファン１３８は、マルチメディアコンソール１００内の回路を冷却する。
【００４５】
[0080]ＣＰＵ１０１、ＧＰＵ１０８、メモリーコントローラー１１０、およびマルチメディアコンソール１００内の他の様々なコンポーネントは、様々なバスアーキテクチャのいずれかを使用する、シリアルおよびパラレルバス、メモリーバス、周辺バス、ならびにプロセッサーまたはローカルバスを含む、１つまたは複数のバスを介して相互接続される。
【００４６】
[0081]マルチメディアコンソール１００に電源が入れられたとき、アプリケーションデータを、システムメモリー１４３からメモリー１１２および／またはキャッシュ１０２、１０４にロードし、ＣＰＵ１０１上で実行することができる。アプリケーションは、マルチメディアコンソール１００上で利用可能な異なる媒体タイプに移動したときにも一貫したユーザーエクスペリエンスを提供する、グラフィカルユーザーインターフェースを提示することができる。動作中、媒体ドライブ１４４内に含まれるアプリケーションおよび／または他のメディアを、媒体ドライブ１４４から起動または再生して、マルチメディアコンソール１００に追加の機能を提供することができる。
【００４７】
[0082]マルチメディアコンソール１００は、システムをテレビまたは他のディスプレーに単純に接続することによって、スタンドアロンシステムとして動作させることができる。このスタンドアロンモードでは、マルチメディアコンソール１００は、１人または複数人のユーザーが、システムと対話すること、映画を観ること、または音楽を聴くことを可能にする。しかし、ネットワークインターフェース１２４または無線アダプター１４８を介して利用可能になるブロードバンド接続を組み込むことによって、マルチメディアコンソール１００はさらに、より大規模なネットワークコミュニティーへの参加者として動作させることができる。
【００４８】
[0083]マルチメディアコンソール１００に電源が入れられたとき、指定された量のハードウェアリソースが、マルチメディアコンソールオペレーティングシステムによるシステム使用のために予約される。これらのリソースは、メモリー（例えば１６ＭＢ）、ＣＰＵおよびＧＰＵサイクル（例えば５％）、ネットワーク帯域幅（例えば８ｋｂｓ）などの予約を含むことができる。これらのリソースはシステムブート時間に予約されるので、予約されたリソースは、アプリケーションの見地からは存在していない。
【００４９】
[0084]特に、メモリー予約は、起動カーネル、並列システムアプリケーションおよびドライバーを含むのに十分な大きさであることが好ましい。ＣＰＵ予約は、予約されたＣＰＵ使用がシステムアプリケーションによって使用されない場合は、アイドルスレッドが任意の未使用サイクルを消費するように、好ましくは一定である。
【００５０】
[0085]マルチメディアコンソール１００がブートされ、システムリソースが予約された後、システム機能を提供するために、並列システムアプリケーションが実行される。システム機能は、上で説明した予約されたシステムリソース内で実行される、１組のシステムアプリケーション内にカプセル化される。オペレーティングシステムカーネルは、ゲームアプリケーションスレッドに対してシステムアプリケーションスレッドであるスレッドを識別する。システムアプリケーションは、アプリケーションからシステムリソースが一貫した見え方をするように、好ましくは所定の時間および間隔でＣＰＵ１０１上において動作するようにスケジュールされる。スケジューリングは、コンソール上で動作しているゲームアプリケーションが被るキャッシュ中断（ｃａｃｈｅ  ｄｉｓｒｕｐｔｉｏｎ）を最低限に抑えるためである。
【００５１】
[0086]並列システムアプリケーションがオーディオを必要とする場合、時間に対して鋭敏であるため、ゲームアプリケーションとは非同期にオーディオ処理がスケジュールされる。（以下で説明される）マルチメディアコンソールアプリケーションマネージャーは、システムアプリケーションがアクティブである場合、ゲームアプリケーションのオーディオレベルを抑制する（例えば、消音、減衰）。
【００５２】
[0087]入力デバイス（例えばコントローラー１４２（１）、１４２（２））は、ゲームアプリケーションおよびシステムアプリケーションによって共用される。入力デバイスは、予約リソースではないが、システムアプリケーションとゲームアプリケーションの間で切り換えられて、各々がデバイスを占有する（ｈａｖｅ  ａ  ｆｏｃｕｓ  ｏｆ  ｔｈｅ  ｄｅｖｉｃｅ）ようにすべきである。アプリケーションマネージャーは、好ましくは、ゲームアプリケーションの知識を知ることなく、入力ストリームの切り換えを制御し、ドライバーが占有の切り換えに関する状態情報を維持する。コンソール１００は、カメラ２６および２８を含む、図２の深度カメラシステム２０から、追加の入力を受け取ることができる。
【００５３】
[0088]図４は、図１の撮像システムにおいて使用できるコンピューティング環境の別の例示的なブロック図を示している。
[0089]撮像システムでは、コンピューティング環境は、１つまたは複数のジェスチャーまたは姿勢を解釈し、それに応じて、ディスプレー上の視覚空間を更新するために使用することができる。コンピューティング環境２２０は、コンピューター２４１を含み、コンピューター２４１は、一般に様々な有形なコンピューター可読記憶媒体またはデバイスを含む。これは、コンピューター２４１によってアクセスできる任意の利用可能な媒体とすることができ、揮発性および不揮発性媒体、着脱可能および着脱不能媒体をともに含む。システムメモリー２２２は、リードオンリーメモリー（ＲＯＭ）２２３およびランダムアクセスメモリー（ＲＡＭ）２６０など、揮発性および／または不揮発性メモリーの形態を取るコンピューター記憶媒体を含む。基本入出力システム２２４（ＢＩＯＳ）は、スタートアップ中などにコンピューター２４１内の要素間における情報の転送を助ける基本ルーチンを含み、一般にＲＯＭ２２３内に記憶される。ＲＡＭ２６０は、処理ユニット２５９から直ちにアクセス可能な、および／または処理ユニット２５９によって現在操作されている、データおよび／またはプログラムモジュールを一般に含む。グラフィックスインターフェース２３１は、ＧＰＵ２２９と通信する。限定することなく、例を挙げると、図４は、オペレーティングシステム２２５、アプリケーションプログラム２２６、他のプログラムモジュール２２７、およびプログラムデータ２２８を示している。
【００５４】
[0090]コンピューター２４１は、例えば、着脱不能な不揮発性の磁気媒体から読み取り、それに書き込む、ハードディスクドライブ２３８、着脱可能な不揮発性の磁気ディスク２５４から読み取り、それに書き込む、磁気ディスクドライブ２３９、およびＣＤ  ＲＯＭまたは他の光媒体などの着脱可能な不揮発性の光ディスク２５３から読み取り、それに書き込む、光ディスクドライブ２４０など、他の着脱可能／着脱不能、揮発性／不揮発性のコンピューター記憶媒体も含むことができる。例示的な動作環境において使用できる、他の着脱可能／着脱不能、揮発性／不揮発性の有形なコンピューター可読記憶媒体またはデバイスは、磁気テープカセット、フラッシュメモリーカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、およびソリッドステートＲＯＭなどを含むが、それらに限定されない。ハードディスクドライブ２３８は、一般に、インターフェース２３４などの着脱不能メモリーインターフェースを介して、システムバス２２１に接続され、磁気ディスクドライブ２３９および光ディスクドライブ２４０は、一般に、インターフェース２３５などの着脱可能メモリーインターフェースを介して、システムバス２２１に接続される。
【００５５】
[0091]上で説明され、図４に示される、ドライブおよび関連するコンピューター記憶媒体は、コンピューター２４１のために、コンピューター可読命令、データ構造、プログラムモジュール、および他のデータの記憶を可能にする。例えば、ハードディスクドライブ２３８は、オペレーティングシステム２５８、アプリケーションプログラム２５７、他のプログラムモジュール２５６、およびプログラムデータ２５５を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム２２５、アプリケーションプログラム２２６、他のプログラムモジュール２２７、およびプログラムデータ２２８と同じであることも、または異なることもできることに留意されたい。オペレーティングシステム２５８、アプリケーションプログラム２５７、他のプログラムモジュール２５６、およびプログラムデータ２５５には、少なくとも、それらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザーは、キーボード２５１、およびマウス、トラックボール、またはタッチパッドと一般には呼ばれるポインティングデバイス２５２などの、入力デバイスを介して、コンピューター２４１にコマンドおよび情報を入力することができる。他の入力デバイス（図示されず）は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、またはスキャナーなどを含むことができる。これらおよび他の入力デバイスは、しばしばシステムバスに結合されるユーザー入力インターフェース２３６を介して、処理ユニット２５９に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの、他のインターフェースおよびバス構造によって接続されることもある。カメラ２６および２８を含む、図２の深度カメラシステム２０は、コンソール１００のための追加の入力デバイスを定義することができる。モニター２４２または他のタイプのディスプレーも、ビデオインターフェース２３２などのインターフェースを介して、システムバス２２１に接続される。モニターに加えて、コンピューターは、出力周辺インターフェース２３３を介して接続できる、スピーカー２４４およびプリンター２４３などの、他の周辺出力デバイスも含むことができる。
【００５６】
[0092]コンピューター２４１は、リモートコンピューター２４６などの１つまたは複数のリモートコンピューターへの論理接続を使用して、ネットワーク環境において動作することができる。リモートコンピューター２４６は、パーソナルコンピューター、サーバー、ルーター、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができ、一般に、コンピューター２４１に関連して上で説明された要素の多くまたはすべてを含むが、図４ではメモリー記憶デバイス２４７だけが示されている。論理接続は、ローカルエリアネットワーク（ＬＡＮ）２４５およびワイドエリアネットワーク（ＷＡＮ）２４９を含むが、他のネットワークも含むことができる。そのようなネットワーク環境は、オフィス、企業規模のコンピューターネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００５７】
[0093]ＬＡＮネットワーク環境において使用される場合、コンピューター２４１は、ネットワークインターフェースまたはアダプター２３７を介して、ＬＡＮ２４５に接続される。ＷＡＮネットワーク環境において使用される場合、コンピューター２４１は、インターネットなどのＷＡＮ２４９を介する通信を確立するためのモデム２５０または他の手段を含む。モデム２５０は、内蔵または外付けとすることができ、ユーザー入力インターフェース２３６または他の適切なメカニズムを介して、システムバス２２１に接続することができる。ネットワーク環境では、コンピューター２４１に関連して示されたプログラムモジュールまたはその一部は、リモートメモリー記憶デバイス内に記憶することができる。限定することなく、例を挙げると、図４は、メモリーデバイス２４７上に存在するものとして、リモートアプリケーションプログラム２４８を示している。示されるネットワーク接続は例示的なものであり、コンピューター間において通信リンクを確立する他の手段も使用できることが理解されよう。
【００５８】
[0094]コンピューティング環境は、本明細書で説明されるようなユーザーの手または他の有関節身体部分の姿勢をモデル化する方法を実行するために、少なくとも１つのプロセッサーをプログラミングするための、コンピューター可読ソフトウェアがその上に具体化される、有形なコンピューター可読記憶デバイスを含むことができる。有形なコンピューター可読記憶デバイスは、例えば、コンポーネント２２２、２３４、２３５、２３０、２５３、および２５４の１つまたは複数を含むことができる。さらに、コンピューティング環境の１つまたは複数のプロセッサーは、ユーザーの手または他の有関節身体部分の姿勢をモデル化するためのプロセッサー実施方法を可能にすることができ、方法は、本明細書で説明されるプロセッサー実施ステップを含む。プロセッサーは、例えば、コンポーネント２２９および２５９の１つまたは複数を含むことができる。
【００５９】
[0095]図５は、（菱形によって示される）関節と、（四角形によって示される）アトラクトポイントとを含む、ユーザーの手のモデルを示している。姿勢が検出されるべき所定の有関節身体部分に対するモデルを提供することができる。１つの手法では、手領域のモデルが提供される。モデル５００は、腕５０４と、手のひら５０２と、指５１０、５２０、５３０、５４０と、親指５５０とを含むことができる。指は、末端部セグメント（ｄｉｓｔａｌ  ｓｅｇｍｅｎｔ）５１２、５２２、５３２、５４２と、中間部セグメント（ｍｉｄｄｌｅ  ｓｅｇｍｅｎｔ）５１４、５２４、５３４、５４４と、基部セグメント（ｐｒｏｘｉｍａｌ  ｓｅｇｍｅｎｔ）５１６、５２６、５３６、５４６とを含む。親指は、末端部セグメント５５２と、基部セグメント５５４とを含む。モデルの指セグメントおよび親指セグメントは、人体の指骨に対応する。腕／手首と手のひらの間の関節５０３、末端部親指部分と基部親指部分の間の関節５６０、および基部親指部分と手のひらの間の関節５６４など、隣接する身体部分の間には関節が設けられる。これらの関節は、定められた範囲の動きを行う、人体内の関節に一般に対応する。この動きは、主として角度的なものであるが、同じく並進的なものでもあり得る。指先（末端部指セグメントの先端および末端部親指セグメントの先端）などにおける追加のポイントは、末端部指セグメントの位置を定義するために使用することができる。これらの先端ポイントは、人体骨格の関節に対応しないが、便宜的に、それらも「関節」と呼ばれる。末端部親指セグメントにおける関節５５６が、一例である。したがって、関節５５６など、いくつかの関節は、人体骨格における関節に対応しないことがあり、関節５６０、５６４など、いくつかの関節は、人体骨格における関節に対応する。身体部分の方向は、身体部分の少なくとも２つの関節の位置によって定めることができる。例えば、指セグメントなどの細長い身体部分の場合、その身体部分の対向端に関節が存在することがある。
【００６０】
[0096]さらに、各身体部分に対して、１つまたは複数の代表的なアトラクトポイントを指定することができる。例えば、指５３０の末端部指セグメント、指５４０の末端部指セグメント、末端部親指部分５５２、基部親指部分５５４、手のひら５０２、および腕５０４に対して、それぞれ、例示的な代表的なアトラクトポイント５３１、５４１、５５８、５６２、５０１、および５０５が提供される。例えば、手のひらなど、相対的に大きい、および／または相対的により複雑な範囲の動きを行う、身体部分に対しては、複数のアトラクトポイントを同様に使用することができる。指５４０の中間部および基部指セグメントに対して、それぞれ、アトラクトポイント５４３および５４５が提供される。
【００６１】
[0097]モデルの身体部分の１つまたは複数が、アトラクトポイントを有さないことも可能である。
[0098]一般に、この指および他の指では、小さな四角形が、代表的なアトラクトポイントを表す。代表的なアトラクトポイントは、モデルの身体部分を代表するポイントとすることができる。「アトラクトポイント」という用語は、マッチングプロセスにおいて、アトラクトポイントが深度センサーデータの方へ移動される、または引き付けられる（ａｔｔｒａｃｔｅｄ）ことを示している。１つの手法では、代表的なアトラクトポイントは、身体部分の中心点または重心に存在する。重心は、身体部分の内部または身体部分の表面に存在することができる。表面は、深度軸に沿って、または深度カメラに向かう視線に沿って、深度カメラの方を向くことができる。重心は、身体部分の中心点であると見なすことができる。
【００６２】
[0099]図７Ａのステップ７３４に関連して以下で説明される、重要度の軸（ａｘｉｓ  ｏｆ  ｉｍｐｏｒｔａｎｃｅ）５０７は、重心対アトラクトポイントマッチングのために使用することができる。
【００６３】
[00100]モデルは、様々な身体部分の許容可能な範囲の動きを示すことができる。各身体部分は、隣接する身体部分に対して、許容可能な角度範囲の動きを行うことができる。例えば、各指の基部セグメントは、手のひらに対して、許容可能な角度範囲の動きを行うことができ、各指の中間部セグメントは、指の基部セグメントに対して、許容可能な角度範囲の動きを行うことができるなどである。これらは、角度制約によって定義することができる。身体部分のいくつかの相対的な並進運動も許容されることがある。異なる身体部分が衝突できないこと、例えば、全体的または部分的に、同じ時間に同じ位置に存在できないことを示す、衝突制約を提供することができる。
【００６４】
[00101]モデルは、身体部分が一般に独立しており、自由に動けるように定義することができるが、互いに隣接していると思われる身体部分が実際に隣接している配置を得るのに有利な距離制約を設定することができる。隣接性は、隣接する身体部分の関節が実質的に同じ位置にあることを含むことができる。この手法では、各身体部分は、その先端に、隣接する身体部分の先端における関節と実質的に一致する、関節を有することができる。一例として、末端部親指部分と基部親指部分の間の関節５６０は、基部親指部分５５４の末端にある１つの関節と、末端部親指部分５５２の基端にある１つの関節とを表すことができる。末端部親指部分と基部親指部分が互いに離れている場合に、距離制約違反の一例が生じる。
【００６５】
[00102]別の手法では、例えば、末端部親指部分と基部親指部分の間に１つの関節が存在し、距離制約は、その関節と親関節の間の距離である。モデルのこの手法では、メッシュが、子関節に達するほど十分に長くはないとしても、子関節の方を指して親関節に配置される。親関節または子関節は、それぞれ、親身体部分または子身体部分に関連付けることができる。１つの可能な手法では、子身体部分は、手のひらから伸びる指など、より大きな身体部分から伸びるより小さな身体部分とすることができる。または、子身体部分は、腕から指先に向かう方向など、指定された方向に別の身体部分から伸びる身体部分とすることができる。例えば、基部親指部分５５４は、末端部親指部分５５２の親とすることができる。
【００６６】
[00103]身体部分のモデルは、所望のレベルの詳細さを有することができる。例えば、手のひらを単一エンティティとしてモデル化する代わりに、中手骨および関節をモデル化することなどによって、さらに詳細に手のひらをモデル化することができる。モデルは、長方形、立方体、楕円体、および球体など、個別の体積／形状を含むことができる。これらの体積は、所望のレベルの粒度を提供するために、サイズおよび形状を変えることができる。代替的または追加的に、適切にリギング（ｒｉｇ）およびスキニング（ｓｋｉｎ）が行われた連続的な面を形成するメッシュによって、モデルを表すことができる。リギングおよびスキニングとは、スケルトンを３Ｄメッシュ内に配置し、スケルトンを動かした場合にスムーズに変形する身体部分を生成するために、スケルタルセグメントをメッシュの対応する部分にマッピングすることである。モデルの複雑さは、所望のリアリズムの程度および利用可能な計算リソースなどの要因を考慮すべきである。
【００６７】
[00104]さらに、有関節身体部分の一例として人間の手について説明したが、その概念は、既知の範囲の動きを行う物体の他の有関節身体部分に拡張することができる。物体は、人もしくは動物、またはロボットもしくは他の無生物物体などの、生物／物体を含むことができる。１つまたは複数のそのような物体を同時にトラッキングすることができる。さらに、アプリケーションの部品として深度センサーが使用される場合、深度センサーによって撮像される人は、アプリケーションの能動的なユーザー／参加者、または受動的な見物人とすることができる。
【００６８】
[00105]図６は、撮像システムにおいて改善された忠実度で有関節身体部分の姿勢を検出するための方法を示している。ステップ６００は、先に言及した深度カメラシステムからなど、深度センサーからユーザーの深度ピクセルを獲得するステップを含む。例えば、これは、深度ピクセルからなるフレームとすることができる。ステップ７００は、図７Ａのステップ７０２〜ステップ７１４に関連してさらに説明されるような、プリマッチング処理を実行するステップを含む。ステップ７２０は、図７Ａのステップ７２１〜ステップ７３６に関連してさらに説明されるような、重心を使用してマッチングを実行するステップを含む。ステップ７５０は、図７Ａのステップ７５２〜ステップ７５６に関連してさらに説明されるような、重心を使用してマッチングを改善するステップを含む。ステップ７６０は、図７Ｂに関連してさらに説明されるような、ラスター化モデルを使用してマッチングを改善するステップを含む。１つの手法では、ステップ７００、７２０、７５０、および７６０は、モデルの身体部分の相対的な比率を変化させない。
【００６９】
[00106]図７Ａは、図６のステップ７００、７２０、および７５０のさらなる詳細を示している。図７Ａおよび図７Ｂでは、（７０２から７０４などの）短い破線は、データの入力を表し、（７０４から７０６などの）長い破線は、データの出力を表し、（７０４から７０８などの）実線は、コードもしくはソフトウェアフローまたは実行シーケンスを表す。ステップ７０２〜ステップ７１４は、プリマッチング処理を実行するための図７Ａのステップ７００に対応する。
【００７０】
[00107]背景除去ステップ７０４は、（図８Ａのフレーム８００など）深度フレームデータ７０２を受け取る。深度フレームは、深度センサーからの深度ピクセルを含むことができる。出力は、例えば、（図８Ｂのフレーム８１０など）ＢＧＲ（色順序が青−緑−赤であるピクセル）深度フレーム７０６とすることができる。セグメンテーションステップ７０８は、ＢＧＲ深度フレームを処理して、両手が存在する場合に、ピクセルが右手に属するか、それとも左手に属するかを識別するセグメンテーションマップ７１０を提供する。この目的のために、様々な発見的問題解決法を使用することができる。見本（ｅｘｅｍｐｌａｒ）ステップ７１２は、機械学習プロセスを使用して、ＢＧＲ深度フレームを処理し、確率マップ７１４を提供する。機械学習プロセスは、前もってトレーニングされている。具体的には、各深度ピクセルに対して、その深度ピクセルが身体部分の１つの一部である確率を決定することができる。例えば、Ｐｒ１は、深度ピクセルが末端部親指部分の一部である確率とすることができ、Ｐｒ２は、深度ピクセルが基部親指部分の一部である確率とすることができ、Ｐｒ３は、深度ピクセルが手のひらの一部である確率とすることができるなどである。各ピクセルについて、その確率の合計は１である。したがって、確率マップは、各深度ピクセルに対して１組の確率を含むことができ、１つの確率がモデルの各身体部分に対応する。
【００７１】
[00108]ステップ７２１〜ステップ７３６は、図７Ａのステップ７２０に対応する。ステップ７２１は、確率マップに基づいて、各身体部分に１つの重心を生成し、重心データ７２２を提供する。重心データは、身体部分の各々について、ｘ、ｙ、ｚ座標における３Ｄ位置の形式を取ることができる。３Ｄ位置は、深度ピクセルと一致することもあり、または一致しないこともある。各身体部分の重心は、モデルにおける身体部分の代表的なアトラクトポイントに類似した、身体部分の代表的な位置である。図９Ａ〜図９Ｅおよび図１０は、例示的な重心を示している。ステップ７２４は、重心セットを生成し、合併して、重心セットデータ７２６を提供する。重心セットは、同じモデル化身体領域の一部であると判定された、重心の集まりである。例えば、１つのセット７２８は、一方の手についての重心を含むことができ、別のセット７３０は、他方の手についての重心を含むことができる。この時点では、重心セットが、右手に関連するのか、それとも左手に関連するのかは分かっていない。ステップ７３２は、重心セット７２８、７３０を入力として使用して、またセグメンテーションマップを使用して、重心セット対腕マッチング（ｃｅｎｔｒｏｉｄ  ｓｅｔ−ｔｏ−ａｒｍ  ｍａｔｃｈｉｎｇ）を実行する。セグメンテーションマップは、深度マップのどの部分が左手で、どの部分が右手であるかを示す。このステップは、どの重心セットがどちらの腕に関連するかを示す。重心セットが一方の腕からどれだけ近く、他方の腕からどれだけ近いかなど、様々な要因を考慮することができる。一方の腕により近い重心セットは、その腕に関連している可能性が高い。このステップは、入力として、（右腕７４０および左腕７４２のデータを含む）先行フレームモデル７３８を、すなわち、直前のフレームを含む１つまたは複数の先行フレームから決定されたモデルの状態を使用することもできる。
【００７２】
[00109]ステップ７３２は、重心とアトラクトポイントのマッチングタイプの間の距離を使用して計算されたスコアに基づいた、重心セットとトラッキングされる有関節モデルとの間の２部マッチング（ｂｉｐａｒｔｉｔｅ  ｍａｔｃｈｉｎｇ）と、確率に基づいた、重心の信頼度尺度（ｃｏｎｆｉｄｅｎｃｅ  ｍｅａｓｕｒｅ）とを含むことができる。
【００７３】
[00110]ステップ７３４は、重心対アトラクトポイントマッチングを実行する。図１１が、さらなる詳細を提供する。重心セット７２８、７３０およびモデルの代表的なアトラクトポイント７４４（図５を参照）を入力として提供することができる。代表的なアトラクトポイントは、各身体部分について、深度センサーデータのマッチング重心と一致するように理想的に作成された、有関節モデル内のポイントである。ステップ７３４は、様々な要因を使用して計算されたマッチスコアを使用して、重心セット内のすべての重心とモデルのすべてのアトラクトポイントとの間の１つまたは複数の最良マッチを見つけることを含むことができる。
【００７４】
[00111]１つの要因は、各マッチした重心とアトラクトポイントの間の距離に関し、その距離は、例えば、重心とアトラクトポイントとを接続するベクトルの大きさによって決定することができる。アトラクトポイントにより近い重心には、アトラクトポイントからより遠い重心よりも、より高いスコアを割り当てることができ、より高いスコアは、適切なマッチである可能性がより高いことに関連する。
【００７５】
[00112]別の要因は、重要度の軸に沿った重心の順序付けに関する。例えば、手のモデルの場合、重要度の軸は、手のひらと指の基部セグメントとの間の関節に沿って伸び、例えば指５１０、５２０、５３０、５４０などの指の（小指の付根から人差し指の付根に向かう）予想される順序を示すことができる。図５の例示的な重要度の軸５０７を参照されたい。例えば、重心をこの軸に直交する方向に動かして、重心が軸上のどこに落ちるかを決定することによって、重心をこの軸上に投影することができる。点の直線上への投影は、閉形式で解析的に計算することができる。その後、軸に沿った重心の順序を決定することができる。おそらく指を交差させている場合を除いて、一般に、指は予想される順序を取る。重要度の軸に沿って予想される順序を取る重心には、より高いスコアを割り当てることができ、より高いスコアは、適切なマッチである可能性がより高いことに関連する。重要度の軸に沿って予想される順序を取らない重心には、より低いスコアを割り当てることができ、より低いスコアは、適切なマッチである可能性がより低いことに関連する。重要度の軸を別の方向に取ることができ、２つ以上の重要度の軸を同様に使用することもできる。
【００７６】
[00113]別の要因は、隣接する重心または身体部分との接続性に関する。例えば、指の末端部セグメントの重心は、別の指のセグメントの重心ではなく、同じ指の中間部セグメントの重心に連結するピクセル経路（ｐｉｘｅｌ  ｐａｔｈ）内にあることが予想される。隣接する身体部分の重心に連結する経路内にある重心には、より高いスコアを割り当てることができ、より高いスコアは、適切なマッチである可能性がより高いことに関連する。隣接する身体部分の重心に連結する経路内にない重心には、より低いスコアを割り当てることができ、より低いスコアは、適切なマッチである可能性がより低いことに関連する。この要因は、比喩的に深度マップを一直線に歩いて、ピクセルデータ内に何らかの不連続が存在するかどうかを決定することによって、評価することができる。この要因は、ノイズおよび他のエッジケースに対してより頑健になるための、経路がどれだけ直線からそれ得るかについての制約を有する、重心の間の深度マップに沿った経路探索などの、より複雑な方法を使用して、評価することもできる。例えば、指の末端部セグメントから同じ指の中間部セグメントまで歩こうと試みたときに、ピクセルデータ内にギャップが検出された場合、これは、マッチが誤りである可能性が高いことを示す。すなわち、指セグメントの一方または両方が、正確に識別されていない。例えば、各指について、指の末端部と中間部の重心の間に接続を見つけることによって、接続性を評価することができる。
【００７７】
[00114]別の要因は、モデルの身体部分の間の衝突チェックに関する。衝突をもたらさない重心対アトラクトポイントマッチには、より高いスコアを割り当てることができ、より高いスコアは、適切なマッチである可能性がより高いことに関連し、一方、異なる身体部分が同時に同じ位置に存在する、衝突をもたらす重心対アトラクトポイントマッチには、より低いスコアを割り当てることができ、より低いスコアは、適切なマッチである可能性がより低いことに関連する。
【００７８】
[00115]重心とアトラクトポイントの間の最良マッチは、これらまたは他の要因の１つまたは複数の何らかの組み合わせに基づくことができる。異なる要因には、例えばテスト結果から決定された相対的な重要度に基づいて、異なる重みを与えることができる。
【００７９】
[00116]ステップ７３６は、重心へのアトラクトポイントの剛体変換を実行する。一例として図１２Ａを参照されたい。剛体変換は、モデルの並進、回転、およびスケーリングの１つまたは複数を含むことができる。このステップは、アトラクトポイントの最適３Ｄ点群変換の並進、回転、およびスケーリングの計算と、すべてのアトラクトポイントに対する変換の適用とを含むことができる。並進は、フレームまたは座標系に対するモデルの移動を含むことができる。座標系は、直交するｘ、ｙ、ｚ軸（図１）などの、任意の軸を含むことができる。変換を表すために、オイラー角（Ｅｕｌｅｒ  ａｎｇｌｅ）を使用することができる。回転は、軸の１つまたは複数の周りのモデルの回転を含むことができる。スケーリングは、身体部分の相対的な方向または比率を変化させることなく、モデルの全体サイズを変化させる。１つの手法では、全体としての剛体変換は、身体部分の相対的な方向を変化させない。身体部分の相対的な方向は、子身体部分とその親身体部分の間の局所変換として定義することができる。１つの可能な手法では、子身体部分は、手のひらから伸びる指など、より大きな身体部分から伸びるより小さな身体部分とすることができる。立方体の剛体変換の一例は、３Ｄ空間内で１つの位置から別の位置に動かされた、より大きなまたはより小さな立方体をもたらすことができる。剛体変換中に身体部分の相対的な方向を維持する一例は、剛体変換の前および後のどちらにおいても、第３の指の長さの４分の３の第１の指を有し、また第３の指に対して特定の角度で伸びる第１の指を有することである。
【００８０】
[00117]剛体変換の例示的な実施は、アトラクトポイントと重心の間の剛体変換推定を使用して、モデルのグローバルスケーリングを計算する。２つの対応するポイントセットの間の剛体変換（回転、並進、およびすべての次元における一様スケーリング）の例示的な閉形式計算は、参照により本明細書に組み込まれる、Ｈｏｒｎ，Ｂ．Ｋ．Ｐ．、「Ｃｌｏｓｅｄ−ｆｏｒｍ  ｓｏｌｕｔｉｏｎ  ｏｆ  ａｂｓｏｌｕｔｅ  ｏｒｉｅｎｔａｔｉｏｎ  ｕｓｉｎｇ  ｕｎｉｔ  ｑｕａｔｅｒｎｉｏｎｓ（単位四元数を使用する絶対的な方向の閉形式解法）」、Ｊｏｕｒｎａｌ  ｏｆ  ｔｈｅ  Ｏｐｔｉｃａｌ  Ｓｏｃｉｅｔｙ  ｏｆ  Ａｍｅｒｉｃａ、４（４）、６２９〜６４２（１９８７）において説明されている。Ｈｏｒｎは、次のように述べている。「２つの座標系における多数の点の座標の測定値のペアを使用して両系の間の関係を見出すことは、写真測量法における古典的な課題である。それは、実体写真測量およびロボット工学において用途を見出す。私はここで、３つ以上の点についての最小２乗問題に対する閉形式解法を提示する。現在、様々な経験的な方法、グラフィカルな方法、および数値反復法が使用されている。解の導出は、回転を表す単位四元数の使用によって簡略化される。私は、この問題に対する解法が有すべき対称性を強調する。最良の並進オフセットは、一方の系における座標の重心と他方の系における座標の回転およびスケーリングが施された重心との間の差である。最良のスケールは、２つの系における座標の、それぞれの重心からの２乗平均平方根偏差（ｒｏｏｔ−ｍｅａｎ−ｓｑｕａｒｅ  ｄｅｖｉａｔｉｏｎ）の比に等しい。これらの正確な結果は、選択された数個の点の測定に基づいた近似法よりも好ましい。最良の回転を表す単位四元数は、対称４×４行列の最大の正固有値に関連する固有ベクトルである。この行列の要素は、点の対応する座標の積の和の結合（ｃｏｍｂｉｎａｔｉｏｎｓ  ｏｆ  ｓｕｍｓ  ｏｆ  ｐｒｏｄｕｃｔｓ）である」。
【００８１】
[00118]剛体変換の別の例示的な実施は、Ａ．Ｂａｌａｎ、「Ｒｅｓｔｒｉｃｔｅｄ  Ａｆｆｉｎｅ  Ｒｅｇｉｓｔｒａｔｉｏｎ  ｏｆ  ３Ｄ  Ｐｏｉｎｔ  Ｃｌｏｕｄｓ（３Ｄ点群の制限付きアフィンレジストレーション）」、ｈｔｔｐ：／／ｐｒｉｏｒａｒｔｄａｔａｂａｓｅ．ｃｏｍ／ＩＰＣＯＭ／０００２０７６２３、２０１１年６月７日において説明されている。この実施は、重心とアトラクションポイント（ａｔｔｒａｃｔｉｏｎ  ｐｏｉｎｔ）の間の剛体変換を計算し、１つの重要な特徴は、モデルのｘ軸、ｙ軸、およびｚ軸に沿った異なるスケーリングパラメータを推定できることである。それは、回転、並進、および異なる次元（幅、高さ、長さ）ごとに独立した引き伸ばしを行う引き伸ばしによって、センサー観測に合わせて、物体の幾何学的モデルのレジストレーションを行う問題に対処する。この問題は、物体トラッキングおよびサイズ推定のためのモデルフィッティングにおいて用途を有する。形状は、モデルとセンサー観測との間でペアごとにマッチさせられる、３Ｄ表面点の集まりとして表される。それは、対応するセンサー測定点までの距離を最小化する、モデル点の制限付きアフィン変換（ａｆｆｉｎｅ  ｔｒａｎｓｆｏｒｍａｔｉｏｎ）を計算する、反復的な解法を説明している。
【００８２】
[00119]ステップ７５２〜ステップ７５６は、図７Ａのステップ７５０に対応する。ステップ７５２、７５４、および７５６は、重心対アトラクトポイント磁力プロセス（ｍａｇｎｅｔｉｓｍ  ｐｒｏｃｅｓｓ）の一部と見なすことができる。ステップ７５２は、アトラクトポイントと重心のマッチングペアについて、アトラクトポイントを重心のより近くに移動させることを含む。例えば、アトラクトポイントと重心のマッチングペアが、モデルの基部親指部分５５４のアトラクトポイント５６２と深度センサーデータの重心９１６、またはモデルの末端部親指部分５５２のアトラクトポイント５５８と深度センサーデータの重心９０４を含むことができる、図１２Ａおよび図１２Ｂを参照されたい。
【００８３】
[00120]ステップ７５２は、ステップ７３６から獲得された変換された代表的なアトラクトポイントのどれが、重心の対応する１つからそれぞれの閾値距離よりも遠いかを決定すること、および重心の対応する１つからそれぞれの閾値距離よりも遠い、変換された代表的なアトラクトポイントを、重心の対応する１つからそれぞれの閾値距離よりも近くなるように調整することを含むことができる。１つの手法では、それぞれの閾値距離は、各代表的なアトラクトポイントに固有の調整された距離とすることができる。または、それぞれの閾値距離は、異なる代表的なアトラクトポイントに共通とすることができる。
【００８４】
[00121]ステップ７５４は、アトラクトポイントの移動に基づいて、モデルの関節を動かすことを含む。アトラクトポイントの移動は、モデルの１つまたは複数の関節の動きと一致するので、ステップ７５２および７５４は、一緒に実行することができる。１つまたは複数のアトラクトポイントの移動によって、関節の動きに影響を及ぼすことができる。関節の動きは、動きの３Ｄ空間内における方向および大きさを定義するベクトルまたは力によって定義することができる。ステップ７５４への入力は、関節データ７４６であり、それは、３Ｄ空間内のモデルの各関節の位置を定義することができる。判断ステップ７５６において、例えば次の身体部分など、アトラクトポイントの次のペアが存在する場合、ステップ７５２および７５４が繰り返される。判断ステップ７５６が偽である場合、プロセスは、継続ポイント「Ｅ」において図７Ｂに引き継がれる。モデルの連続面を表すメッシュデータ７４８も、関節データ７４６に基づいて提供することができる。
【００８５】
[00122]次に説明される図７Ｂでは、継続ポイント「Ａ」によって示されるように、確率マップが使用され、継続ポイント「Ｂ」によって示されるように、ＢＧＲ深度フレームが使用され、継続ポイント「Ｃ」によって示されるように、関節データ７４６が使用され、継続ポイント「Ｄ」によって示されるように、メッシュデータ７４８が使用される。
【００８６】
[00123]図７Ｂは、図６のステップ７６０のさらなる詳細を示している。先に図７Ａにおいて作成された重心対アトラクトポイントマッチが、反復によって改善される。１つの手法では、反復は、深度センサーデータの重心を使用せず、モデルのラスター化から獲得された深度ピクセルを使用する。モデルの関節など、モデルに適用される調整ベクトルを決定するために、モデルの深度ピクセルが、深度センサーの深度ピクセルと比較される。新しい状態のモデルは、次の反復においてラスター化され、そのプロセスが、停止基準が満たされるまで繰り返される。
【００８７】
[00124]ステップ７６２が、反復を開始する。ステップ７６４は、入力として、確率マップ、ＢＧＲ深度フレーム、および関節データを受け取り、モデルをラスター化して、モデルの深度ピクセルを提供する。例えば、モデルのメッシュ面を、３次元（３−Ｄ）方法でラスター化することができる。１つの手法では、モデルの深度ピクセルは、ｘ−ｙ平面内のデータを提供する２Ｄバッファーと、ｚ軸沿いの深度データを提供するｚ軸バッファーとにおいて提供される。モデルの深度ピクセルは、３Ｄ空間内の点である。ラスター化は、深度センサーの深度ピクセルと同じまたは異なる任意の方向に行われ、必ずしもｘ軸およびｙ軸に沿う必要はないことに留意されたい。さらに、ラスター化は、深度センサーの深度ピクセルと同じ解像度、またはそれよりも細かいもしくは粗い解像度を有することができる。手のモデルをラスター化することによって獲得されるピクセルの一例については、図１２Ｃのピクセル１２２０を参照されたい。
【００８８】
[00125]ステップ７６６は、比較平面内において、モデルの深度ピクセルを深度センサーの深度ピクセルと比較する。図１３Ａおよび図１３Ｂに例示される１つの手法では、平面は、深度軸を横断／直交するｘ−ｙ平面である。別の手法では、平面は、深度センサーの局所的な視線を横断し、深度軸の横断からは僅かにずれている。ピクセルは、比較平面を横断する方向に比較平面に投影され、またはすでに比較平面に存在する。１つの手法では、比較平面は、ｚ＞０と深度カメラに最も近いモデルのピクセルの深度との間のどこかに存在することができる。ピクセルの３つのカテゴリーを定義することができる。カテゴリーの２つは、深度センサーの深度ピクセルについてのものであり（ステップ７６８および７７０）、カテゴリーの１つは、モデルの深度ピクセルについてのものである（ステップ７７２）。
【００８９】
[00126]具体的には、ステップ７６８は、モデルの深度ピクセルとオーバーラップする深度センサーのオーバーラップ深度ピクセルを識別する。「オーバーラップ」という用語は、比較平面内において、ピクセルが、少なくとも部分的に、同じ領域を占有することを指す。図１２Ｄのピクセル１２３０が一例である。ピクセルをオーバーラップと分類するのに十分な、ピクセル間の最小度のオーバーラップを定義することができる。これらは、モデルが存在する場所に近似的に存在する、深度センサーの深度ピクセルであり（言い換えると、モデルは、この深度センサーデータが存在する場所に存在し）、モデルがこの深度センサーデータと良好に一致していることを示している。
【００９０】
[00127]ステップ７７０は、モデルの深度ピクセルとオーバーラップしない深度センサーの非オーバーラップ深度ピクセルを識別する。図１２Ｄのピクセル１２４０が一例である。これらは、モデルが存在しない場所に近似的に存在する、深度センサーの深度ピクセルであり（言い換えると、モデルは、この深度センサーデータが存在する場所に存在せず）、この深度センサーデータとより良好に一致するようにモデルを調整すべきことを示している。
【００９１】
[00128]ステップ７７２は、深度センサーの深度ピクセルとオーバーラップしないモデルの非オーバーラップ深度ピクセルを識別する。図１２Ｄのピクセル１２２０が一例である。これらは、深度センサーデータが存在しない場所に近似的に存在する、モデルの深度ピクセルであり（言い換えると、モデルは、深度センサーデータが存在しない場所に存在し）、深度センサーデータとより良好に一致するようにモデルを調整すべきことを示している。
【００９２】
[00129]比較に基づいて、ステップ７７４は、データ７７６として記憶されるピクセルベースの調整ベクトルを決定する。モデルをピクセルの方に引く／調整する傾向にある３Ｄ調整ベクトルを計算することができる。３つのピクセルタイプの各々に基づいて、調整ベクトルを生成し、その後、合算して、関節のための全体的な調整ベクトルを獲得することができる。ピクセルベースの調整ベクトルには、それらがステップ７６８、ステップ７７０、またはステップ７７２のいずれからのものかに基づいて、異なる重みを割り当てることができる。例えば、深度センサーの特性およびアプリケーションの要求に応じて、調整の１つにより重い重みを与えることが望ましいことがある。例えば、横方向解像度が最大の関心事である場合、ステップ７７０および／またはステップ７７２の調整により重い重みを与えることができる。深度解像度が最大の関心事である場合、ステップ７６８の調整により重い重みを与えることができる。
【００９３】
[00130]ピクセルの３つのタイプの各々について、調整ベクトルは、調整するのに最適な関節であるとして識別されたモデルの関節を調整することができる。この最適な関節は、必ずしもピクセルに最も近い関節である必要はない。最適な関節は、ピクセルからの関節までの距離に基づいて、モデルの異なる関節のスコアを計算することによって、識別することができる。ピクセルにより近い関節は、より高いスコアを有し、選択される確率がより高い。ピクセルからより遠い関節は、より低いスコアを有し、選択される確率がより低い。
【００９４】
[00131]１つの手法では、深度センサーの非オーバーラップまたはオーバーラップ深度ピクセルの場合、スコアは、確率マップからのピクセルに関連する確率（例えば、先に説明したＰｒ１、Ｐｒ２、Ｐｒ３、．．．）に基づくこともできる。ピクセルが相対的に高い確率で関連する身体部分と同じ身体部分に関連する関節は、より高いスコアを有し、選択される確率がより高い。スコアは、関連の確率に比例して高くなることができる。ピクセルが相対的に高い確率で関連する身体部分と異なる身体部分に関連する関節は、より低いスコアを有し、選択される確率がより低い。
【００９５】
[00132]図１３Ａの調整ベクトル１３２０は、深度センサーの非オーバーラップ深度ピクセルの例示的な調整ベクトルである。ベクトルは、関節ｊ１から深度センサーの非オーバーラップ深度ピクセルｐ３に向かう方向に伸びる。深度センサーのオーバーラップ深度ピクセルの場合、調整ベクトルは、深度センサーの非オーバーラップ深度ピクセルの場合と同じ方法で決定することができる。
【００９６】
[00133]調整ベクトルは、身体部分の動きの方向に依存する成分を有する。例えば、身体部分がｚ方向において深度センサーから主に遠ざかるように動かされる場合、調整ベクトルは、ｚ方向において最も大きい成分を有する。身体部分がｘ−ｙ平面内において主に動かされる場合、調整ベクトルは、ｘ−ｙ平面内において１つまたは複数の最も大きい成分を有する。
【００９７】
[00134]１つの手法では、調整ベクトルは、最良マッチ関節からピクセルに向かって伸びる。図１３Ａの調整ベクトル１３２８が一例である。ベクトルは、関節ｊ１から深度センサーのオーバーラップ深度ピクセルｐ２に向かう方向に伸びる。この例では、同じ関節ｊ１が最良マッチ関節であると見なされるが、異なる最良マッチ関節が、深度センサーの非オーバーラップ深度ピクセル、および深度センサーのオーバーラップ深度ピクセルと関連することができる。別の手法では、調整ベクトルは、モデルのオーバーラップされる深度ピクセルから深度センサーのオーバーラップ深度ピクセルに向かって伸びる。例えば、図１３Ａの調整ベクトル１３２６は、モデルのオーバーラップ深度ピクセルｐ１から深度センサーのオーバーラップ深度ピクセルｐ２に向かう方向に、基本的には深度軸に沿って伸びる。このケースでは、ベクトル１３２６は、関節ｊ１に作用するベクトル１３３０まで並進させることができる。
【００９８】
[00135]１つの手法では、最良マッチングアトラクトポイントの並進には中間ステップが存在し、それは、そのアトラクトポイントによって影響を受けるすべての関節を並進させる。ピクセルのベクトル／デルタを、ある調整／調節された力で、関節に適用することができる。関節に影響を与える多くのピクセルは、あまりにも大きなデルタをもたらすことがあるので、関節にすべてのデルタを完全に適用すると、その関節を飛び去らせる可能性があり、通常は、デルタの平均が役に立つ。
【００９９】
[00136]１つの手法では、ベクトル１３２６とベクトル１３３０は、同じ方向にあり、同じ大きさを有する。しかし、通常はピクセルよりもはるかに少数の関節しか存在しないので、このようなことはめったにない。そのため、２つのオーバーラップピクセルと関節が単一の直線内に揃うことは、一般的ではない。調整ベクトルは、例えば、ベクトル１３２８とベクトル１３３０の間の補間に基づくこともできる。
【０１００】
[00137]１つの手法では、調整ベクトルは、モデルを引かない。代わりに、調整ベクトルは、アトラクトポイントを引き、今度は、アトラクトポイントが、影響を受ける関節を引く。その後、関節上のモデルが最も意味をなす場所に、モデルが配置される。例えば、基部指セグメントは、手のひらと指を接続する関節のところに基部があり、基部指セグメントが中間部指セグメントの関節の方を向くように、配置することができる。
【０１０１】
[00138]オーバーラップするカメラ深度ピクセルとモデル深度ピクセルの間の調整ベクトルに対して、そのベクトルを使用して動かすのに適切な関節を見つけ、その関節への並進を累積し、その後、それを平均することができる。これは、ｚ方向調整だけを含むことができる。別のケースでは、深度ピクセルと関節の間に調整ベクトルが存在し、それも累積して、平均することができる。これは、ｘ、ｙ、およびｚ方向調整を含むことができる。これらの調整は、必要に応じて組み合わせることができる。
【０１０２】
[00139]したがって、深度センサーの非オーバーラップ深度ピクセルおよびモデルの非オーバーラップ深度ピクセルに対して、選択された関節をそれがあるべき場所に動かすために、ピクセルが寄与する必要がある力または調整を計算することができる。
【０１０３】
[00140]深度センサーのオーバーラップ深度ピクセルに対して、深度センサーの非オーバーラップ深度ピクセルおよびモデルの非オーバーラップ深度ピクセルと同様に、ピクセルから関節までの距離から計算されるスコアに基づいて、動かすのに最良の関節を見つけることによって、調整ベクトルを決定することができる。モデルの非オーバーラップ深度ピクセルがオーバーラップされる位置に関節を動かす傾向にある調整を計算して、次の反復において、それらが、深度センサーのオーバーラップ深度ピクセルになるようにすることもできる。しかし、この計算は、モデルのすべての非オーバーラップ深度ピクセルにわたって最適化され、それは、関節における対立調整（ｃｏｎｆｌｉｃｔｉｎｇ  ａｄｊｕｓｔｍｅｎｔ）を課すことができる。例えば、モデルの腕は、センサーデータによって示される腕の幅よりも広いことがある。この場合、最適な解決策は、身体部分の少なくとも１つとしての腕の外周の周りのモデルの非オーバーラップ深度ピクセルの数を等しくする傾向をもつことができる。
【０１０４】
[00141]１つの手法では、調整ベクトルは、モデルの非オーバーラップ深度ピクセルからセンサーデータの最も近い深度ピクセルに向かって伸びる。図１３Ａの調整ベクトル１３２２は、ピクセルｐ２がモデルの非オーバーラップ深度ピクセルｐ４に最も近いことを仮定した、一例である。ベクトルは、ｐ４からｐ２に向かう方向に伸びる。別の手法では、調整ベクトルは、センサーデータの最も近い深度ピクセルの平面１３１２に向かってなど、ｐ４から深度軸に沿って伸び、ｐ４と平面１３１２の間の距離に基づいた大きさを有する。図１３Ａの調整ベクトル１３２４が、一例である。ｊ１が動かすのに最良の関節であると仮定される場合、ベクトル１３２２またはベクトル１３２４は、関節ｊ１に作用するベクトル（図示されず）まで並進させることができる。
【０１０５】
[00142]図７Ｂにおいて、ステップ７７８は、説明したように、調整ベクトルを関節に適用する。このステップへの入力は、関節データ７４６である。図１２Ｅおよび図１２Ｆが、一例を提供する。その後、ステップ７８０における衝突制約、ステップ７８２における距離制約、およびステップ７８４における角度制約など、１つまたは複数の制約を、先に説明したように適用することができる。ステップ７８６は、制約ベースの調整ベクトルを決定し、対応する制約ベースの調整ベクトルデータ７８８を提供する。制約ベースの調整ベクトルには、タイプに基づいて、異なる重みを割り当てることができる。例えば、衝突制約は、より高い重みを受け取ることができ、距離制約は、次に高い重みを受け取ることができ、角度制約は、次に高い重みを受け取ることができる。
【０１０６】
[00143]ステップ７９０は、制約ベースの調整ベクトルをモデルの関節に適用する。このステップへの入力は、関節データ７４６である。判断ステップ７９１は、例えば、一定の数のパスが実行されたとき、または関節の動きが一定の閾値を下回ったときといった、停止基準が満たされているかどうかを判定する。判断ステップ７９１が偽である場合、ステップ７８０〜ステップ７９０が繰り返される。判断ステップ７９１が真である場合、ステップ７９２に進む。したがって、すべての制約を同時に最も良く満たすように、ステップ７８０〜ステップ７９０において適用される制約を複数回反復することができる。
【０１０７】
[00144]ステップ７９２は、ステップ７８０〜ステップ７９０の調整に基づいて、モデルメッシュを更新する。判断ステップ７９４は、停止基準が満たされているかどうかを判定する。例えば、停止基準は、（ａ）最大許容回数の反復が実行されたときに反復が停止するなど、実行された反復の回数、（ｂ）調整ベクトルの大きさが十分に小さく、閾値を下回ったときに反復が停止するなど、調整ベクトルの大きさに基づいた収束基準、（ｃ）最大許容回数のＣＰＵサイクルが消費されたときに反復が停止するなど、実行された計算の量に基づいた基準のうちの１つまたは複数に基づくことができる。判断ステップ７９４において停止基準が満たされない場合、次の反復がステップ７９６において実行され、ステップ７６２に進む。モデルは先行する反復からの調整された状態にあるので、モデルに対してステップ７６４のラスター化が実行される。図１２Ｇが、モデルの調整された状態の一例を提供する。判断ステップ７９４が真である場合、反復がステップ７９８において終了する。この時点で、モデルは、最適に調整されており、先に説明した姿勢またはジェスチャー推定ライブラリなど、より高いレベルのプロセス／アプリケーションによって使用することができる。１つの手法では、モデルは、深度データの各フレームに対して最適に調整され、制御入力としてアプリケーションに提供される。
【０１０８】
[00145]一度に１つまたは複数の深度フレームを処理できることに留意されたい。バッチ処理モードが、一度に複数の深度フレームを処理し、複数のフレームからの情報を一緒に使用することを可能にする。最初に各フレームに対して調整ベクトルを決定することができ、その後、平均された調整ベクトルがフレームのバッチに適用されるように、調整ベクトルをフレームのバッチにわたって平均すること、または他の方法で組み合わせることができる。
【０１０９】
[00146]１つの手法では、図７Ｂは、モデルの身体部分の変換（回転および並進）を変更するが、相対的な比率は変更しない。別の手法では、相対的な比率が変更される。
[00147]図８Ａは、ユーザーの手の深度ピクセルを含む、深度ピクセルからなるフレーム８００を示している。フレームは、図７Ａの深度フレームデータ７０２として使用することができる。フレームは、ユーザーの片手もしくは両手、または複数のユーザーの１つもしくは複数の手を含むことができる。１人または複数人のユーザーの他の身体部分も、同様に含むことができる。基本的に、フレームは、深度センサーの視野内の物体を含む。
【０１１０】
[00148]図８Ｂは、背景ピクセルを除去した、図８Ａのユーザーの手の深度ピクセル８１０である。説明したように、図７Ａの背景除去ステップ７０４は、（図８Ａのフレーム８００など）深度フレームデータ７０２を受け取り、背景ピクセルを除去する。
【０１１１】
[00149]図９Ａは、図８Ｂのユーザーの手の深度ピクセルからなる末端部指セグメントおよび末端部親指セグメントについての、図７Ａの見本ステップ７１２からの確率値を示している。これは、確率値の２Ｄにおける簡略化グラフィカル表示である。言及したように、各ピクセルは、モデルの各身体部分に対して、ピクセルがその身体部分の一部である尤度を示す異なる確率値（Ｐｒ１、Ｐｒ２、Ｐｒ３、．．．）を有する。この図は、５つの身体部分についての結果を一緒に示している。太い実線によって輪郭が描かれた影なしピクセルの各エリアは、その局所的身体部分の一部である確率が最も高いピクセルを表す。点パターンを有するピクセルは、その局所的身体部分の一部である確率がより低く、斜線パターンを有するピクセルは、その局所的身体部分の一部である確率が最も低い。さらに、各三角形は、身体部分の深度ピクセルの重心を表す。身体部分は、第１の指または小指９３０と、第２の指９３２と、第３の指９３４と、第４の指または人差し指９３６と、親指９３８とを含む。
【０１１２】
[00150]例えば、第３の指９３４の場合、エリア９１０内のピクセルは、末端部指セグメントに割り当てられ、関連する重心９１２が決定される。第４の指９３６の場合、エリア９０６内のピクセルは、末端部指セグメントに割り当てられ、関連する重心９０８が決定される。親指９３８の場合、エリア９０２内のピクセルは、末端部親指セグメントに割り当てられ、関連する重心９０４が決定される。
【０１１３】
[00151]図９Ａ〜図９Ｅでは、影なしピクセル、点パターンピクセル、および斜線パターンピクセルが、一貫して使用される。
[00152]図９Ｂは、図８Ｂのユーザーの手の深度ピクセルからなる中間部指セグメントおよび基部親指セグメントについての、図７Ａのステップ７２１において生成される重心を示している。例えば、親指の場合、エリア９１４内のピクセルは、基部親指セグメントに割り当てられ、基部親指セグメントの重心９１６が決定される。
【０１１４】
[00153]図９Ｃは、図８Ｂのユーザーの手の深度ピクセルからなる基部指セグメントについての、図７Ａのステップ７２１において生成される重心を示している。
[00154]図９Ｄは、図８Ｂのユーザーの手の深度ピクセルからなる手のひら９４０についての、図７Ａのステップ７２１において生成される重心を示している。
【０１１５】
[00155]図９Ｅは、図８Ｂのユーザーの手の深度ピクセルからなる腕９４２についての、図７Ａのステップ７２１において生成される重心を示している。
[00156]図１０は、図７Ａのステップ７２１において、ユーザーの手のテストデータから生成された重心を示している。テストデータは、一般にノイズを示す。各画像において、より暗い領域は、より高い確率に対応する。さらに、四角形は、重心を表す。例えば、画像１０００は、末端部指および親指セグメントについてのものである。暗い領域が、重心の四角形アイコンによって部分的に覆われている。画像１００２は、中間部指セグメントについてのものであり、画像１００４は、基部指セグメントについてのものであり、画像１００６は、基部親指セグメントについてのものであり、画像１００８は、手のひらについてのものであり、画像１０１０は、前腕の下部についてのものであり、画像１０１２は、前腕の上部についてのものである。
【０１１６】
[00157]図１１は、重心対アトラクトポイントマッチングについての、図７Ａのステップ７３４の詳細を示している。言及したように、各三角形は、太い実線で輪郭が描かれたそれぞれの身体部分の重心を表す。モデル５００に加えて、深度センサーからのピクセルデータ９００が示されている。一例として、末端部指セグメント９１０を表すピクセルの場合、重心９１２は、モデル５００の対応する末端部指セグメント５３２のアトラクトポイント５３１にマッチさせられる。同様に、末端部指セグメント９０６を表すピクセルの場合、重心９０８は、モデル５００の対応する末端部指セグメント５４２のアトラクトポイント５４１にマッチさせられる。末端部親指セグメント９０２を表すピクセルの場合、重心９０４は、モデル５００の対応する末端部親指セグメント５５２のアトラクトポイント５５８にマッチさせられる。基部親指セグメント９１４を表すピクセルの場合、重心９１６は、モデル５００の対応する基部親指セグメント５５４のアトラクトポイント５６２にマッチさせられる。腕９１８を表すピクセルの場合、重心９２０は、モデル５００の対応する腕５０４のアトラクトポイント５０５にマッチさせられる。
【０１１７】
[00158]各重心は、それぞれのアトラクトポイントにマッチさせることができる。場合によっては、必ずしもすべての重心を識別すること、および／またはそれぞれのアトラクトポイントにマッチさせることができず、その場合は、モデルは、利用可能な情報に基づいて調整される。利用可能な情報が不十分である場合、モデルを調整しないという決定を、フレームごとに下すことができる。
【０１１８】
[00159]図１２Ａは、重心へのアトラクトポイントの剛体変換についての、図７Ａのステップ７３６の詳細を示している。モデル１２００は、すべてのアトラクトポイントについて、深度ピクセルデータの重心に対するモデルのアトラクトポイントの最良マッチを提供するために変換される。この例では、ピクセルデータに対するモデルのマッチは、親指を除いて、かなり良好である。特に、親指の基部セグメントのアトラクトポイント５６２は、関連する重心９１６からいくぶん離れて配置されており、親指の末端部セグメントのアトラクトポイント５５８は、関連する重心９０４からより大きく離れて配置されている。
【０１１９】
[00160]図１２Ｂは、アトラクトポイントを重心のより近くに移動させるための、図７Ａのステップ７５２の詳細を示している。ここでは、アトラクトポイント５６２を関連する重心９１６のより近くに移動させ、アトラクトポイント５５８を関連する重心９０４のより近くに移動させるように、モデル１２１０が改善される。
【０１２０】
[00161]図１２Ｃは、モデルをラスター化して、モデルの深度ピクセル１２２０を提供するための、図７Ｂのステップ７６４の詳細を示している。これらのピクセルは、比較平面内などにおいては、末端部セグメントのピクセル９００の上に見られる。モデルのピクセルは、影なしであり、一方、末端部セグメントのピクセル９００は、斜線パターンを有する。基部親指セグメント５５４についてのモデルのピクセルの上よりも下に、深度センサーのピクセルがより多く存在するので、基部親指セグメントの位置は最適ではない。また、末端部親指セグメント５５２についてのモデルのピクセルの下よりも上に、深度センサーのピクセルがより多く存在するので、末端部親指セグメントの位置も最適ではない。同様に、腕および手のひらの外周の周り、左側よりも右側に、深度センサーのピクセルがより多く存在するので、腕５０４および手のひら５０２の位置も最適ではない。ラスター化を使用する改善は、モデルと深度センサーとのピクセルデータを比較することを可能にすることによって、これらの非最適な状態を識別することができる。
【０１２１】
[00162]図１２Ｄは、親指エリアについて、モデルの深度ピクセルをセンサーの深度ピクセルと比較するための、図７Ｂのステップ７６６〜７７２の詳細を示している。細部を示すために、図１２Ｃの親指エリアを独立させている。しかし、モデルのすべての身体部分について、比較を実行することができる。影なしのピクセルからなるエリア１２３０は、ステップ７６８の深度センサーのオーバーラップ深度ピクセルを表す。斜線パターンを有するピクセルからなるエリア１２４０は、ステップ７７０の深度センサーの非オーバーラップ深度ピクセルを表す。点パターンを有するピクセルからなるエリア１２２０は、ステップ７７２のモデルの非オーバーラップ深度ピクセルを表す。
【０１２２】
[00163]図１２Ｅは、図１２Ｄと一致する、ピクセルベースの調整ベクトルに基づいたモデルの関節の調整を示す、図７Ｂのステップ７７８の詳細を示している。関節位置５６４、５６０、および５５６が、それぞれ、位置１２６２、１２５８、および１２５４に調整される。結果として、アトラクトポイントも、同様に、位置５６２および５５８から、それぞれ、位置１２６０および１２５６に調整される。
【０１２３】
[00164]図１２Ｆは、図１２Ｅにおいて使用されるピクセルベースの調整ベクトルを示している。関節位置５６４、５６０、および５５６を、それぞれ、位置１２６２、１２５８、および１２５４に調整するために、それぞれ、調整ベクトル１２７８、１２７４、および１２７０が使用される。調整ベクトルは、３Ｄとすることができるが、この例では簡潔にするために、２Ｄとして示されている。
【０１２４】
[00165]図１２Ｇは、図１２Ｅと一致する、モデルの更新を示す、図７Ｂのステップ７９２の詳細を示している。図１２Ｅでは、モデルの末端部親指セグメント５５２が、セグメント１２５０になるように調整され、モデルの基部親指セグメント５５２が、セグメント１２５２になるように調整される。この場合、親指は、手のひらに対しておおよそ下方に移動させられるとともに、回転させられる。これは、深度センサーの深度ピクセルとより緊密にマッチする、モデルの新しい状態である。
【０１２５】
[00166]図１３Ａは、比較平面１３１０が深度センサー１３００の深度軸１３０２を横断または直交する、モデルの深度ピクセルをセンサーの深度ピクセルと比較するための、図７Ｂのステップ７６８、７７０、および７７２のさらなる詳細を示している。軸１３０４、１３０６、および１３０８も、（表記「｜｜」によって示されるように）深度軸１３０２と平行である。比較平面１３１０は、ラスター化モデルの２つの例示的なピクセルｐ１およびｐ４を含み、一方、平面１３１２は、深度センサーからの２つの例示的なピクセルｐ２およびｐ３を含む。１つの手法では、比較平面１３１０および１２１２は、ｘ軸およびｙ軸に平行に広がり、したがって、深度軸１３０２を横断／直交する。別の手法では、比較平面１３１０および１２１２は、ｘ軸およびｙ軸から僅かにずれており、深度軸１３０２に対して角度αをなして伸びる、深度カメラからの視線１３０５を横断する。
【０１２６】
[00167]ｐ２は、例えば軸１３０６に沿って、ｐ１とオーバーラップするので、深度センサーのオーバーラップ深度ピクセルである（図７Ｂ、ステップ７６８）。ｐ１も、モデルの対応するオーバーラップ深度ピクセルと考えることができる。ｊ１は、モデルの例示的な関節である。１つの手法では、調整ベクトル１３２８が、最良マッチ関節ｊ１からｐ２に向かう方向に伸びる。別の手法では、調整ベクトル１３２６が、ｐ１からｐ２に向かう方向に伸びる。さらに、ベクトル１３２６は、関節ｊ１に作用するベクトル１３３０まで並進させることができる。
【０１２７】
[00168]ｐ３は、例えば軸１３０８に沿って、モデルのピクセルとオーバーラップしないので、深度センサーの非オーバーラップ深度ピクセルである（図７Ｂ、ステップ７７０）。図７Ｂのステップ７７８に関連して先に説明したように、ｐ３についての例示的な調整ベクトル１３２０は、関節ｊ１からｐ３に向かう方向に伸びる。
【０１２８】
[00169]ｐ４は、例えば軸１３０４に沿って、深度センサーデータのピクセルとオーバーラップしないので、モデルの非オーバーラップ深度ピクセルである（図７Ｂ、ステップ７７２）。対応する調整ベクトル１３２２は、ｐ４から、この例ではｐ２であると仮定される、センサーデータの最も近い深度ピクセルに向かって伸びる。別の手法では、ｐ４についての調整ベクトル１３２４は、平面１３１２のセンサーデータの最も近い深度ピクセルなどに向かって、ｐ４から深度軸１３０２／１３０４に沿って伸びる。ベクトル１３２２またはベクトル１３２４は、ｊ１がｐ４のために動かすのに最良な関節であると仮定した場合には、関節ｊ１に作用するベクトル（図示されす）まで並進させることができる。
【０１２９】
[00170]図１３Ｂは、図１３Ａの比較平面１３１０のさらなる詳細を示している。ｐ１およびｐ２は、オーバーラップピクセルであり、深度センサーのｐ３は、モデルのピクセルとオーバーラップしておらず、モデルのｐ４は、深度センサーのピクセルとオーバーラップしていない。｜｜ｘおよび｜｜ｙは、それぞれ、ｘ軸およびｙ軸と平行な軸である。
【０１３０】
[00171]図１４は、距離制約、衝突制約、およびピクセル比較を使用して、撮像システムにおいて改善された忠実度で有関節身体部分の姿勢を検出するための方法を示している。図１４の方法は、図７Ａおよび図７Ｂの方法と併せて実行することができる。方法は、一般に、初期姿勢推定を獲得するステップと、それに続いて、距離制約、衝突制約、角度制約、およびラスター化モデルを使用するピクセル比較のうちの１つまたは複数に基づいて、姿勢推定を改善するステップとを含む。１つの手法では、初期姿勢推定は、図７Ａの方法によって提供することができる。１つの手法では、ラスター化モデルを使用するピクセル比較は、図７Ｂの方法のステップ７６２〜ステップ７９０によって提供することができる。姿勢推定の改善は、全体的または部分的に、順次的または並列的に実行することができる。
【０１３１】
[00172]その中に多数の区別可能な特徴点を有する既知のトポロジーを有する有関節モデルのパラメトリック幾何モデル（例えばメッシュ）を有することを仮定することができる。特徴検出器は、モデル内の点に対応する深度センサーデータから（関節および他の参照など）できるだけ多くの区別可能な特徴点を見つける。既知の有関節モデルのメッシュは、較正され、動的に調整される。この方法は、これを達成するために、有関節モデルの寸法についてのローカルおよびグローバル情報の複数のソースを組み合わせ、それらに重み付けを行う。
【０１３２】
[00173]ステップ１４００は、例えば、図６のステップ６００と同様に、深度センサーからユーザーの深度ピクセルを獲得するステップを含む。ステップ１４０２は、例えば、図６のステップ７００と同様に、深度センサーの深度ピクセルに対するモデルの初期マッチを決定するステップを含む。図６のステップ７５０も、同様に含むことができる。これは、先に説明したような、いくつかのタイプの代表的なアトラクトポイント対重心マッチング、または他の任意の技法を含むことができる。さらに、図７Ａのステップ７３６に関連して説明したような変換を使用することができる。これは、例えば、３Ｄスケールを用いる３Ｄ点群の剛体変換など、３Ｄ点群の制約付きアフィンレジストレーションを含むことができる。モデルと深度センサー観測との間の特徴点対応を与えると、単一のスケーリングまたは各次元（長さ、幅、および高さ）で別々のスケーリングを用いて、最良の剛体変換を計算することによって、有関節物体の各身体部分のための個別のスケーリングパラメータ、またはすべての身体部分のためのグローバルなスケーリングパラメータを直ちに（おそらくは先行フレームにおいて推定された身体比率を考慮して）計算することができる。
【０１３３】
[00174]ステップ１４０４は、距離制約を使用して、モデルの初期マッチを改善する。ステップ１４０６は、各有関節身体部分について距離制約が違反された程度を決定するステップを含む。ステップ１４０４およびステップ１４０６に関する例は、図１６Ａ１〜図１６Ｃおよび図１７Ａに関連して提供される。
【０１３４】
[00175]ステップ１４０８は、衝突制約を使用して、モデルの初期マッチを改善する。ステップ１４１０は、衝突制約を実施することを決定するステップを含む。例えば、衝突制約の実施をもたらす特定の姿勢にモデルがあると決定された場合に、この決定を下すことができる。一例は、モデルの少なくとも２つの隣接する指セグメントが、例えば互いに実質的に平行など、特定の相対的な位置にあると決定された場合である。この条件は、例えば、数度の閾値角度よりも小さい角度をなして伸びる２つの隣接する指セグメントの縦軸によって、検出することができる。ステップ１４１２は、各有関節身体部分について衝突制約が違反された程度を決定するステップを含む。ステップ１４０８〜ステップ１４１２に関する例は、図１８Ａおよび図１８Ｂに関連して提供される。
【０１３５】
[00176]ステップ１４１４は、ラスター化モデルを使用してマッチングを改善する。ステップ１４１６は、例えば、図７Ｂのステップ７６４と同様に、モデルをラスター化して、モデルの深度ピクセルを提供する。ステップ１４１８は、例えば、図７Ｂのステップ７６６と同様に、比較平面内において、モデルの深度ピクセルを深度センサーの深度ピクセルと比較する。ステップ１４２０は、例えば、図７Ｂのステップ７７０と同様に、モデルの深度ピクセルとオーバーラップしない、深度センサーの非オーバーラップ深度ピクセルを識別する。ステップ１４２２は、例えば、図７Ｂのステップ７７２と同様に、深度センサーの深度ピクセルとオーバーラップしない、モデルの非オーバーラップ深度ピクセルを識別する。ステップ１４１４〜ステップ１４２２に関する例は、図１６Ｄおよび図１６Ｅに関連して提供される。
【０１３６】
[00177]ステップ１４２４は、様々な制約を満たそうと試みて、モデルを調整する。判断ステップ１４２６において、停止基準が満たされている場合、プロセスは、ステップ１４２８において停止する。判断ステップ１４２６が偽の場合、プロセスの別の反復が実行される。停止基準が満たされるまで、１つまたは複数の反復において、方法のステップのいずれかを反復的に実行することができる。一般に、すべての制約を適度に満たすために、複数の反復が使用される。さらに、モデル調整は、各制約についてのすべての利用可能な情報に基づくことができる。ステップ１４２６における調整は、各制約の寄与を組み合わせ、重み付けを行うことができる。代替として、例えば、ステップ１４０６、１４１２、１４２０、および１４２２の各々の後、別々に各制約に基づいて、モデルを調整することもできる。
【０１３７】
[00178]距離制約を満たそうと試みるモデルの調整は、例えば、指もしくは親指セグメントまたは手のひらもしくは手首の長さまたは幅を増やしまたは減らすことによって、有関節身体部分の少なくとも１つについての寸法を調整することを含むことができる。衝突制約を満たそうと試みるモデルの調整は、例えば、指もしくは親指セグメントまたは手のひらもしくは手首の長さまたは幅を減らすことによって、衝突に係わる有関節身体部分の少なくとも１つについての寸法を調整することを含むことができる。場合によっては、処理時間もしくは他の限界、または他の制約のために、必ずしもすべての制約を完全に満たすことはできず、その場合は、衝突制約を満たすために、最善の努力が行われる。
【０１３８】
[00179]深度センサーの非オーバーラップ深度ピクセルに基づいたモデルの調整は、深度センサーの非オーバーラップ深度ピクセルの方向に、モデル部分の寸法（例えば、高さ、幅）を増やすことを含むことができる。与えられた方向に寸法を増やす程度は、例えば、与えられた方向におけるオーバーラップピクセルの数に基づくなど、オーバーラップの程度に比例することができる。モデルの非オーバーラップ深度ピクセルに基づいたモデルの調整は、深度センサーの非オーバーラップ深度ピクセルから離れる方向にモデル部分の寸法を減らすことを含むことができる。最適な解決策は、モデルの非オーバーラップ深度ピクセルに隣接する、身体部分の外周の周りのモデルの非オーバーラップ深度ピクセルの数を等しくする傾向をもつことができる。与えられた方向に寸法を減らす程度は、例えば、与えられた方向におけるオーバーラップピクセルの数に基づくなど、オーバーラップの程度に比例することができる。
【０１３９】
[00180]図１５は、図１４の方法とともに使用するための、ユーザーの手の深度ピクセル１５００の一例を示している。この例は、図１６Ａ１〜図１６Ｅおよび図１７Ａにおいて使用される。
【０１４０】
[00181]図１６Ａ１は、距離制約が実施されず、モデルが望ましいものよりも小さい場合の、図１５の深度ピクセルに対する図５のモデルのマッチングを示している。このマッチングは、深度センサーデータのそれぞれの部分に最適にマッチさせるために、モデルの各部分が、隣接部分に取り付けられることなく、独立して浮かんでいることを可能にすることを含むことができる。先に説明したように、深度センサーデータの異なる部分は、例えば確率マップを使用して（図７Ａ）、それぞれの身体部分に関連付けることができる。その後、モデルの各身体部分は、距離制約を考慮することなく、深度センサーデータの同じ部分に対して最適に配置される。１つの可能な手法では、モデルの部分の代表的なアトラクトポイントを、深度センサーデータの同じ部分の重心にマッチさせる。しかし、任意のマッチング技法を使用することができる。
【０１４１】
[00182]距離制約は、モデルの部分の間の距離、およびモデルの部分の相対的な配置に関する。例えば、距離制約は、指セグメントが端部と端部とを接して配置され、指セグメントの一方の端部が隣接する指セグメントの近接端から伸びることを要求することができる。さらに、深度センサーは、基部指セグメントが手のひらの指定された関節から伸びることを要求することができる。別の距離制約は、手のひらが手首から伸びることを要求することができる。身体部分の関節の位置に基づいて、距離制約が違反されたかどうか、および違反の程度を決定することができる。この図および他の図では、例示的な関節が、菱形によって表されている。１つの手法では、距離制約は、モデルの１つの部分の関節がモデルの隣接する部分の関節と実質的に（例えば閾値距離以内で）一致することを要求する。例えば、モデル部分５１６の下部の関節は、手のひらの関連する最も左の関節と一致すべきであり、モデル部分５１６の上部の関節は、身体部分５１４の下部の関節と一致すべきであり、モデル部分５１４６の上部の関節は、身体部分５１２の下部の関節と一致すべきである。関節の間のギャップは、距離制約の違反を表す。より大きなギャップまたは距離は、違反の程度がより大きいことを表す。
【０１４２】
[00183]この例でも、モデルは、深度ピクセル１５００からなる手の表現と比較して、全体的により小さい。
[00184]距離制約は、関節などモデル内の特徴点の間の直線によって表すことができる。各直線は、圧縮または伸張状態にあると見なすことができる。センサーが検出したものよりもモデルが小さい場合、関節を互いに引き離そうとする傾向にある張力が存在する。センサーが検出したものよりもモデルが大きい場合、関節を互いの方に押しやろうとする傾向にある圧縮力が存在する。モデルを調整するために、有関節モデルの各部分に関連する個々の張力および／または圧縮力情報が使用される。
【０１４３】
[00185]図１６Ａ２は、親関節および子関節が示された、図１６Ａ１の代替である。別の手法では、例えば、末端部親指部分と基部親指部分の間に１つの関節５６０が存在し、距離制約は、関節５６０と関節５６４などの親関節との間の距離である。関節５６４の親関節は、関節５０３とすることができる。例えば、関節５６０は、末端部親指セグメント５５２の基部端に存在することができ、関節５６４は、基部親指セグメント５５４の基部端に存在することができる。モデルのこの手法では、メッシュが、子関節に達するほど十分に長くはないとしても、子関節の方を指して親関節に配置される。親または子関節は、それぞれ、親または子身体部分に関連付けることができる。１つの可能な手法では、子身体部分は、手のひらから伸びる指など、より大きな身体部分から伸びるより小さな身体部分とすることができる。または、子身体部分は、腕から指先の方向など、指定された方向に別の身体部分から伸びる身体部分とすることができる。例えば、基部親指部分５５４は、末端部親指部分５５２の親とすることができる。同様に、基部指セグメント５４６の基部端の関節５５３は、基部指セグメントと手のひら５０２の間にあり、手のひら５０２の関節５０３から距離ｄにある、スケルタル関節を表す。中間部指セグメント５４４の基部端の関節５５１は、中間部指セグメント５４４と基部指セグメント５４６の間にあるスケルタル関節を表す。末端部指セグメント５４２の基部端の関節５４９は、末端部指セグメント５４２と中間部指セグメント５４４の間にあるスケルタル関節を表す。
【０１４４】
[00186]図１６Ｂ１は、人差し指についての図１６Ａ１の画像の詳細を示している。人差し指５４０では、深度センサーのピクセルは、太い実線によって示されるように、末端部指セグメントピクセル領域１６２０と、中間部指セグメントピクセル領域１６３０と、基部指セグメントピクセル領域１６４０とにグループ化される。指の末端部、中間部、および基部モデル部分は、それぞれ、５４２、５４４、および５４６である。モデル部分５４２は、上部関節（菱形５４７）と、下部関節５４９と、（ピクセル領域１６２０の重心である三角形１６２２に揃えられる）代表的なアトラクトポイント５４１と、幅ｗｄｍ（幅、末端部、モデル）と、高さｈｄｍ（高さ、末端部、モデル）と、下にあるピクセル領域の左端からの間隔ｄｌ（末端部、左）と、下にあるピクセル領域の右端からの間隔ｄｒ（末端部、右）とを含む。末端部指セグメントに割り当てられた下にあるピクセル領域は、幅ｗｄおよび高さＨＤＰ（高さ、末端部、ピクセル）を有する。
【０１４５】
[00187]モデル部分５４４は、上部関節１６３２と、下部関節５５１と、（ピクセル領域１６２０の重心である三角形１６３４に揃えられる）代表的なアトラクトポイント５４３と、幅ｗｍｍ（幅、中間部、モデル）と、高さｈｍｍ（高さ、中間部、モデル）と、下にあるピクセル領域の左端からの間隔ｍｌ（中間部、左）と、下にあるピクセル領域の右端からの間隔ｍｒ（中間部、右）とを含む。中間部指セグメントに割り当てられた下にあるピクセル領域は、幅ｗｄおよび高さＨＭＰ（高さ、中間部、ピクセル）を有する。
【０１４６】
[00188]モデル部分５４６は、上部関節１６４２と、下部関節５５３と、（ピクセル領域１６４０の重心である三角形１６４４に揃えられる）代表的なアトラクトポイント５４５と、幅ｗｐｍ（幅、基部、モデル）と、高さｈｐｍ（高さ、基部、モデル）と、下にあるピクセル領域の左端からの間隔ｐｌ（基部、左）と、下にあるピクセル領域の右端からの間隔ｐｒ（基部、右）とを含む。基部指セグメントに割り当てられた下にあるピクセル領域は、幅ｗｄおよび高さＨＰＰを有する。
【０１４７】
[00189]手のひら５０２は、モデル部分５４６の基部端がそこから伸びる、関節１６５０を有する。
[00190]寸法は、モデルの大域座標系において定義することができ、または各身体部分は、独自の座標系を有することができる。高さおよび幅などの用語は、任意の方向の寸法を表すことができる。
【０１４８】
[00191]関節５４９と関節５４４の間の距離ｍｄ（中間部から末端部）は、制約が、距離がゼロであること、またはゼロではないが一定の許容値よりも小さいことである場合、違反された距離制約を表す。制約が身体部分５４２および５４４の両方によって違反されたと言うことができる。関節５５１と関節１６４２の間の距離ｐｍ（基部から中間部）は、今回は身体部分５４４および５４６によって違反された、別の距離制約を表す。関節５５３と関節１６５０の間の距離ｐｐ（基部から基部）は、今回は身体部分５４６および５０２によって違反された、別の距離制約を表す。関節の間の距離制約は、３Ｄ距離とすることができることに留意されたい。本例は、簡潔にするため、２Ｄである。
【０１４９】
[00192]距離ｄｔ（末端部から上端）は、ピクセル領域１６２０の上端からの関節５４７の隔たりである。図１６Ｄおよび図１６Ｅを参照されたい。
[00193]この例では、次に説明するように、指の方向に伸ばすことによって、モデル部分を調整すべきである。
【０１５０】
[00194]図１６Ｂ２は、親関節および子関節が示された、図１６Ｂ１の代替を示す図である。この場合、距離制約は、（ａ）ｈｄｍ、（ｂ）ｈｍｍ＋ｍｄ、（ｃ）ｈｐｍ＋ｐｍ、および（ｄ）ｄによって表すことができる。この場合、関節１６３２、１６４２、および１６５０は使用されない。距離ｄは、他の距離とともにスケーリングすべきでなく、したがって、断線によって示されている。角度制約などの他の制約も、関節５０３と関節５５３の間の直線などに適用することができる。
【０１５１】
[00195]図１６Ｃは、距離制約を実施した後の、図１６Ｂ１のモデルに対する調整を示している。指セグメントがＨＤＰ＋ＨＭＰ＋ＨＰＰの全長を有するように、各指セグメントの長さを伸ばして、距離制約を実施することができる。この長さは、直線である軸に沿うことができ、または３Ｄにおいてはカーブすることができる。距離制約を実施した結果は、関節５４９と関節１６３２、関節５５１と関節１６４２、および関節５５３と関節１６５０が、実質的に（許容範囲内で）一致することである。身体部分５４２の長さは、ｈｄｍからｈｄｍ’に増やされ、身体部分５４４の長さは、ｈｍｍからｈｍｍ’に増やされ、身体部分５４６の長さは、ｈｐｍからｈｐｍ’に増やされる。モデル調整の結果として、重心および代表的なアトラクトポイントの相対的な位置は移動できる。１つの手法では、各身体部分は、長さが増やされる隣接する他の身体部分と比べた自らの長さに基づいて、また身体部分の間の距離に基づいて、長さが増やされる。他の例では、指のすべてのセグメントのうちの一部が、寸法を調整される。他の例では、手の他の部分が、寸法を調整される。他の例では、モデルは、手以外の別の身体部分についての、またはその挙動をモデル化できる別の有関節物体についてのものである。
【０１５２】
[00196]親関節および子関節が使用される場合も（例えば図１６Ｂ２）、同様の結果が達成される。
[00197]図１６Ｄは、ラスター化および深度センサーの深度ピクセルとの比較の後の、図１６Ｃのモデルを示している。モデル部分５４２、５４４、および５４６は、ピクセル領域として示されている。モデルのピクセルとオーバーラップしない深度センサーの深度ピクセルを識別することができる。具体的には、領域１６５０、１６５１、および１６５２内の深度ピクセルは、モデル部分５４２に対して非オーバーラップであり、領域１６６０および１６６２内の深度ピクセルは、モデル部分５４４に対して非オーバーラップであり、領域１６７０および１６７２内の深度ピクセルは、モデル部分５４６に対して非オーバーラップである。非オーバーラップピクセルは、点ボックスに囲われ、点パターンで示されている。この比較は、モデルの指セグメントが狭すぎることを示している。モデル部分５４２は、左に量ｄｌだけ、右に量ｄｒだけ、広げることができる。モデル部分５４４は、左に量ｍｌだけ、右に量ｍｒだけ、広げることができる。モデル部分５４６は、左に量ｐｌだけ、右に量ｐｒだけ、広げることができる。モデル部分５４２の上端のオーバーラップｄｔに関して、これは、モデル部分５４２の長さのみをｄｔだけ増やすことによって、または指のモデル部分の各々についての長さを増やすことによって、対処することができる。一般に、モデルを調整する距離は、長さメトリックまたはピクセルの数によって表すことができる。
【０１５３】
[00198]この例では、各モデル部分の右側および左側に一定のオーバーラップが存在する。モデル部分の外周に沿ってオーバーラップが変化する場合、オーバーラップに対して最も良く一致するように、モデル部分を調整することができる。１つの手法では、平均オーバーラップが決定され、モデル部分を調整するために使用される。
【０１５４】
[00199]図１６Ｅは、ピクセル比較に基づいた、図１６Ｄのモデルに対する調整を示している。この例では、モデル部分５４２の上端のオーバーラップｄｔは、指のモデル部分の各々についての長さを増やすことによって対処されている。身体部分５４２の長さは、ｈｄｍ’からｈｄｍ”に増やされ、身体部分５４４の長さは、ｈｍｍ’からｈｍｍ”に増やされ、身体部分５４６の長さは、ｈｐｍ’からｈｐｍ”に増やされる。同様に、モデル部分に隣接する横方向の非オーバーラップピクセルのため、身体部分５４２の幅は、ｗｄｍからｗｄｍ’に増やされ、身体部分５４４の幅は、ｗｍｍからｗｍｍ’に増やされ、身体部分５４６の幅は、ｗｐｍからｗｐｍ’に増やされる。
【０１５５】
[00200]親関節および子関節が使用される場合も（例えば図１６Ｂ２）、同様の結果が達成される。
[00201]図１７Ａは、距離制約が実施されず、モデルが望ましいものよりも大きい場合の、図１５の深度ピクセルに対する図５のモデルのマッチングの別の例を示している。モデルのピクセルは、明瞭にするために示されていない。
【０１５６】
[00202]深度センサーのピクセルとオーバーラップしないモデルの深度ピクセルを識別することができる。具体的には、領域１７５０および１７５２内の深度ピクセルは、モデル部分５４２に対して非オーバーラップであり、領域１７６０および１７６２内の深度ピクセルは、モデル部分５４４に対して非オーバーラップであり、領域１７７０および１７７２内の深度ピクセルは、モデル部分５４６に対して非オーバーラップである。非オーバーラップピクセルは、点ボックスに囲われ、点パターンで示されている。この比較は、指セグメントが広すぎることを示している。モデル部分５４２は、左に量ｄｌだけ、右に量ｄｒだけ、狭めることができる。モデル部分５４４は、左に量ｍｌだけ、右に量ｍｒだけ、狭めることができる。モデル部分５４６は、左に量ｐｌだけ、右に量ｐｒだけ、狭めることができる。
【０１５７】
[00203]この例では、各モデル部分の右側および左側に一定または一様のオーバーラップが存在する。モデル部分の外周に沿ってオーバーラップが変化する場合、オーバーラップに対して最も良く一致するように、モデル部分を調整することができる。１つの手法では、平均オーバーラップが決定され、モデル部分を調整するために使用される。
【０１５８】
[00204]与えられたモデル部分は、１つまたは複数のフレームにおいて、反対の調整を施され得ることに留意されたい。同様に、隣接するモデル部分は、１つまたは複数のフレームにおいて、反対の調整を施され得る。例えば、指セグメントは、１つのフレームでは、幅を広げられ、別のフレームでは、幅を狭められ得る。これは、例えば、調整の反復性、ノイズ、深度センサーの解像度、ユーザーの動き、計算限界、および他の要因によって引き起こされることがある。モデル部分は、例えば、反対または対立する距離制約調整、衝突制約調整、および／またはピクセル比較調整のせいで、１つのフレームにおいても、反対または対立する調整を施され得る。
【０１５９】
[00205]距離制約は、（ａ）ｍｄ、（ｂ）ｐｍ、（ｃ）ｐｐ’によって表すことができる。
[00206]図１７Ｂは、親関節および子関節が示された、図１７Ａの代替を示している。この場合、距離制約は、（ａ）ｈｄｍ、（ｂ）ｈｍｍ−ｍｄ、（ｃ）ｈｐｍ−ｐｍ−ｐｐ’、および（ｄ）ｄ’によって表すことができる。この場合、関節１６３２、１６４２、および１６５０は使用されない。距離ｄ’は、他の距離とともにスケーリングすべきでなく、したがって、断線によって示されている。
【０１６０】
[00207]図１８Ａは、衝突を示す、図５のモデルの２つの隣接する指を示している。衝突制約は、モデルの異なる部分が同時に同じ位置に存在することを回避することである。例えば、この例は、モデルの隣接する指５３０および５４０を示しており、指の影つき部分１８２０が、同一場所に配置されている。この簡略化された例では、指５３０のモデル部分５３２、５３４、および５３６は、幅ｗｄｍ１を有し、指５４０のモデル部分５４２、５４４、および５４６は、幅ｗｄｍ２を有する。距離ｐｄ（浸食深さ（ｐｅｎｅｔｒａｔｉｏｎ  ｄｅｐｔｈ））は、例えば衝突制約の違反の程度など、衝突の程度を表す。中心縦軸が、各モデル部分内に、例えば、軸１８００、１８０２、および１８０４が、それぞれ、モデル部分５３２、５３４、および５３６内に、また軸１８１０、１８１２、および１８１４が、それぞれ、モデル部分５４２、５４４、および５４６内に伸びている。
【０１６１】
[00208]軸１８３０は、指５４０の外縁に沿って伸びる、指５３０の浸食軸であると見なすことができ、軸１８３２は、指５３０の外縁に沿って伸びる、指５４０の浸食軸であると見なすことができる。この場合、ｐｄは、浸食軸１８３０と浸食軸１８３２の間の距離である。
【０１６２】
[00209]図１８Ｂは、衝突制約を実施した後の、図１８Ａの２つの隣接する指を示している。衝突制約を満たすため、指５３０および５４０の一方または両方が調整される。ことによると、１つの解決策は、指どうしをより遠くに引き離すことである。しかし、距離制約が、手のひら内の指定された関節から指が伸びることを要求することがあり、そのため、この解決策は、好ましくない。別の解決策は、指の一方のみの幅を減らすことであるが、これも、最適である可能性は高くない。最適な解決策は、一般に、衝突する指または他の身体部分の両方の幅を減らすことである。１つの手法では、指５３０および５４０は、衝突を防止するのに十分な、例えば同じパーセンテージなど、同じ比率だけ幅を減らすことができる。この場合、指５３０の幅は、ｗｄｍ１からｗｄｍ１’に減らされ、指５４０の幅は、ｗｄｍ２からｗｄｍ２’に減らされる。
【０１６３】
[00210]モデルが衝突制約の実施に特に適した姿勢にあると判断された場合に、衝突制約を実施する決定を下すことができる。したがって、衝突制約は、姿勢が適しているがどうかに応じて、フレームに対して実施することができる。１つの可能な手法では、姿勢が適していない場合、そのフレームに対して衝突制約は実施されない。
【０１６４】
[00211]１つの手法では、初期モデルの改善は、距離制約を満たそうとする試みにおいてモデルを調整することと、その後、衝突制約を実施することを決定することとを含む。衝突制約を実施することを決定したことに応じて、初期マッチにおいて、モデルの指セグメントなどの少なくとも２つの隣接するモデル部分によって衝突制約が違反された程度に関する評価を行うことができる。モデルは、モデルの少なくとも２つの隣接する指セグメントの幅を減らすことによって、モデルの少なくとも２つの隣接する指セグメントによって衝突制約が違反された程度に基づいて、衝突制約を満たそうとする試みにおいてモデルを調整することができる。衝突制約を実施することの決定は、モデルの少なくとも２つの隣接する指セグメントが指定された相対的な位置にあることを決定することを含むことができる。１つの手法では、モデルの少なくとも２つの隣接する指セグメントは、モデルの少なくとも２つの隣接する指セグメントのそれぞれの縦軸が、図１８Ａにおけるように、指定された角度閾値内にあり、実質的に平行である場合に、指定された相対的な位置にある。この角度閾値は、例えば、軸１８３０と軸１８３２の間の角度とすることができる。モデルの少なくとも２つの隣接する指セグメントによって衝突制約が違反された程度は、それぞれの縦軸の間の距離に基づくことができる。
【０１６５】
[00212]この例では、２つの隣接する指または指セグメントが、実質的に平行で、著しく衝突している場合、これは、指の幅が太すぎであり、減らすべきであることを示している。１つの手法では、各指セグメントは、円筒としてモデル化され、その場合、円筒の長さ軸が平行であるかどうかを判定することができる。
【０１６６】
[00213]本明細書の技術の上述の詳細な説明は、例示および説明の目的で提示された。それは、網羅的であること、または開示された形通りのものに技術を限定することを意図していない。上述の教示に照らして、多くの変更および変形が可能である。説明された実施形態は、技術の原理およびその実際的な適用を最も良く説明し、それによって、様々な実施形態において、企図される特定の用途に適するように様々な変更を施して、当業者が技術を最も良く利用することを可能にするように選択された。技術の範囲は、本明細書に添付された特許請求の範囲によって確定されることが意図されている。
【図１】
0005981990.tif 000002
【図２】
0005981990.tif 000003
【図３】
0005981990.tif 000004
【図４】
0005981990.tif 000005
【図５】
0005981990.tif 000006
【図６】
0005981990.tif 000007
【図７Ａ】
0005981990.tif 000008
【図７Ｂ】
0005981990.tif 000009
【図８Ａ】
0005981990.tif 000010
【図８Ｂ】
0005981990.tif 000011
【図９Ａ】
0005981990.tif 000012
【図９Ｂ】
0005981990.tif 000013
【図９Ｃ】
0005981990.tif 000014
【図９Ｄ】
0005981990.tif 000015
【図９Ｅ】
0005981990.tif 000016
【図１０】
0005981990.tif 000017
【図１１】
0005981990.tif 000018
【図１２Ａ】
0005981990.tif 000019
【図１２Ｂ】
0005981990.tif 000020
【図１２Ｃ】
0005981990.tif 000021
【図１２Ｄ】
0005981990.tif 000022
【図１２Ｅ】
0005981990.tif 000023
【図１２Ｆ】
0005981990.tif 000024
【図１２Ｇ】
0005981990.tif 000025
【図１３Ａ】
0005981990.tif 000026
【図１３Ｂ】
0005981990.tif 000027
【図１４】
0005981990.tif 000028
【図１５】
0005981990.tif 000029
【図１６Ａ１】
0005981990.tif 000030
【図１６Ａ２】
0005981990.tif 000031
【図１６Ｂ１】
0005981990.tif 000032
【図１６Ｂ２】
0005981990.tif 000033
【図１６Ｃ】
0005981990.tif 000034
【図１６Ｄ】
0005981990.tif 000035
【図１６Ｅ】
0005981990.tif 000036
【図１７Ａ】
0005981990.tif 000037
【図１７Ｂ】
0005981990.tif 000038
【図１８Ａ】
0005981990.tif 000039
【図１８Ｂ】
0005981990.tif 000040