視覚的目標追跡
目標を追跡する方法は、ソースから目標の観察された奥行き画像を受け取ること、及び目標のポーズをとらせたモデルを得ることを含む。モデルは合成された奥行き画像へとラスタライズされ、モデルの姿勢は、観察された奥行き画像と合成された奥行き画像の間との間の差に少なくとも部分的に基づいて調節される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、視覚的目標追跡に関する。
【背景技術】
【0002】
[0001]多くのコンピューターゲーム及び他のコンピュータービジョンアプリケーションは、ユーザーがゲームキャラクター又はアプリケーションの他の側面を操作することを可能にするために複雑な制御を利用する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
そのような制御は学習するのが難しく、このため、多くのゲーム又は他のアプリケーションに対する障壁となり得る。さらに、そのような制御は、それらが使用される実際のゲームの動作又は他のアプリケーションの動作とは非常に異なっていることがある。例えば、ゲームキャラクターに野球のバットをスイングさせるゲームコントロールは野球のバットをスイングする実際の動きに全く似ていないことがある。
【課題を解決するための手段】
【0004】
[0002]この概要は詳細な説明においてさらに以下に記載される概念のうちの選択されたものを単純化された形式で紹介するために提供される。この概要は、特許請求された主題の重要な特徴又は不可欠な特徴を識別するようには意図されず、特許請求された主題の範囲を限定するために使用されるようにも意図されない。さらに、特許請求された主題は、本開示の任意の部分において指摘される任意の又はすべての不利益を解決する実施に限定されない。
【0005】
[0003]視覚的な目標追跡に関連する様々な実施例が本明細書において説明される。開示される1つの実施例は、ソースから目標についての観察された奥行き画像を受け取って当該目標のポーズをとらせたモデルを得ることによって、目標を追跡することを含む。ポーズをとらせたモデルは、合成された奥行き画像へとラスタライズされる。その後、モデルの姿勢は、観察された奥行き画像と合成された奥行き画像の間との差に少なくとも部分的に基づいて調節される。
【図面の簡単な説明】
【0006】
【図1A】[0004]ボクシングゲームをするゲームプレーヤーを追跡する例示的な目標認識、分析、及び追跡システムの実施例を示す。
【図1B】[0005]追跡され、プレーヤーのアバターにゲーム空間でパンチを繰り出させるゲームコントロールとして解釈されるパンチを繰り出す図1Aのゲームプレーヤーを示す。
【図2】[0006]本開示の実施例によるコンピューティングシステムを概略的に示す。
【図3】[0007]人間の目標を表すのに使用される例示的な人体モデルを示す。
【図4】[0008]人間の目標を表すのに使用される例示的な骨格モデルの実質的に正面の図を示す。
【図5】[0009]人間の目標を表すのに使用される例示的な骨格モデルの斜めの図を示す。
【図6】[0010]人間の目標を表すのに使用される例示的なメッシュモデルを示す。
【図7】[0011]目標を視覚的に追跡する例示的な方法のフロー図を示す。
【図8】[0012]例示的な観察された奥行き画像を示す。
【図9】[0013]例示的な合成された奥行き画像を示す。
【図10】[0014]合成された奥行き画像を構成する画素のうちの幾つかを概略的に示す。
【図11A】[0015]モデルの力受信位置に対して加えられる力を概略的に示す。
【図11B】[0016]図11Aのモデルの力受信位置に力を加えた結果を概略的に示す。
【図12A】[0017]図11Aのモデルからレンダリングされるプレーヤーのアバターを示す。
【図12B】[0018]図11Bのモデルからレンダリングされるプレーヤーのアバターを示す。
【発明を実施するための形態】
【0007】
[0019]本開示は、目標認識、分析及び追跡に関する。特に、1つ以上の目標についての奥行き(depth)情報を得るための奥行きカメラ又は他のソースの使用が開示される。その後、以下に詳細に記載されるように、そのような奥行き情報は、効率的に且つ正確に1つ以上の目標をモデル化し追跡するために使用され得る。目標が他の手法を使用して分析することが困難であると考えられる姿勢へと動く場合(例えば、2つ以上の目標が部分的に互いに重なり及び/又は互いに塞ぐ場合;目標の一部が同じ目標の別の一部を自分で塞ぐ場合、目標がその局所的な外観(例えば、彼又は彼女の頭に触れる人間)を変更する場合など)でさえ、本明細書において記載される目標認識、分析、及び追跡は、1つ以上の目標を比較的速いフレームレートで一貫して追跡することができるロバストなプラットフォームを提供する。
【0008】
[0020]図1Aは、目標認識、分析及び追跡システム10の限定的でない例を示す。特に、図1Aは、様々な異なるゲームをし、1つ以上の異なる媒体(メディア)タイプをプレーし、及び/又はゲームではないアプリケーションを制御もしくは操作するために使用され得るコンピューターゲームシステム12を示す。図1Aはまた、ゲームプレーヤー18などのゲームプレーヤーに対してゲーム映像を提示するために使用され得る高解像度テレビの形式のディスプレイ14、又はHDTV16、を示す。さらに、図1Aは、ゲームプレーヤー18などの1人以上のゲームプレーヤーを視覚的に監視するために使用され得る、奥行きカメラ20の形式の取込み(キャプチャー)装置を示す。図1Aに示される例は限定的なものではない。図2に関して下記に述べられるように、様々な異なる種類の目標認識、分析及び追跡システムは本開示の範囲から逸脱することなく使用することができる。
【0009】
[0021]目標認識、分析及び追跡システムは、ゲームプレーヤー18などの1つ以上の目標を認識し、分析し及び/又は追跡するために使用され得る。図1Aは、ゲームプレーヤー18が、ゲームプレーヤー18の動作がゲームシステム12によって実行されるゲームに影響を及ぼすのに使用することができる制御としてゲームシステム12によって解釈され得るように、奥行きカメラ20を使用して追跡されるシナリオを示す。換言すれば、ゲームプレーヤー18は、ゲームを制御するために自分の動きを使用してもよい。ゲームプレーヤー18の動作は実質的に任意の種類のゲームコントロールとして解釈されてもよい。
【0010】
[0022]図1Aに示された例示的なシナリオは、ゲームシステム12によって実行されるボクシングゲームをするゲームプレーヤー18を示す。ゲームシステムは、ゲームプレーヤー18に対してボクシングの対戦相手22を視覚的に提示するためにHDTV16を使用する。さらに、ゲームシステムは、ゲームプレーヤー18が自分の動作によって制御するプレーヤーのアバター24を視覚的に提示するためにHDTV16を使用する。図1Bに示されるように、ゲームプレーヤー18は、プレーヤーのアバター24がゲーム空間でパンチを繰り出すための命令として、物理的空間においてパンチを繰り出すことができる。ゲームシステム12及び奥行きカメラ20は、プレーヤーのアバター24にゲーム空間でパンチを繰り出させるゲームコントロールとしてパンチを解釈することができるように、物理的空間におけるゲームプレーヤー18のパンチを認識し分析するために使用することができる。例えば、図1Bは、物理的空間においてパンチを繰り出すゲームプレーヤー18に応答してボクシングの対戦相手22を打つパンチを繰り出すプレーヤーのアバター24を視覚的に提示するHDTV16を示す。
【0011】
[0023]ゲームプレーヤー18による他の動作は、軽く叩き、擦り抜け、すり足で動き、ブロックし、ジャブで突き、又は様々な異なるパワーのパンチを繰り出すための制御などの他の制御として解釈されてもよい。さらに、幾つかの動作は、プレーヤーのアバター24の制御以外の目的に役立つ制御へと解釈されてもよい。例えば、プレーヤーは、ゲームを終了し、中止し又はセーブし、レベルを選択し、ハイスコアを見て、友達と通信したりするための動きを使用してもよい。
【0012】
[0024]幾つかの実施例において、目標は人間及び物を含んでもよい。そのような実施例において、例えば、コンピューターゲームのプレーヤーは物を保持していてもよく、その結果、プレーヤー及び物の動きはコンピューターゲームのパラメーターを調節及び/又は制御するのに利用される。例えば、ラケットを保持するプレーヤーの動きは、電子スポーツゲームでのスクリーン上のラケットの制御のために追跡され利用されてもよい。別の例において、物を保持するプレーヤーの動きは、電子戦闘ゲームでのスクリーン上の武器の制御のために追跡され利用されてもよい。
【0013】
[0025]目標認識、分析及び追跡システムは、ゲームの世界の外にあるオペレーティングシステム及び/又はアプリケーション制御として目標の動作を解釈するために使用され得る。オペレーティングシステム及び/又は図1A及び1Bに示されるボクシングゲームなどのアプリケーションの実質的に任意の制御可能な態様は、ゲームプレーヤー18などの目標の動作によって制御されてもよい。示されたボクシングのシナリオは、例として提供されるが、いかなるようにも限定的なものであるようには意図されていない。対照的に、示されたシナリオは、一般的な概念を示すように意図され、それは本開示の範囲から逸脱することなく、様々な異なるアプリケーションに適用されてもよい。
【0014】
[0026]本明細書において記載された方法及び処理は、様々な異なる種類のコンピューティングシステムに関係してもよい。図1A及び1Bは、限定的でない例をゲームシステム12、HDTV16及び奥行きカメラ20の形で示す。別のより一般的な例として、図2は、本明細書において記載された目標認識、追跡及び分析方法並びに処理の1つ以上を実行し得るコンピューティングシステム40を概略的に示す。コンピューティングシステム40は、とりわけ、ゲーム機、パーソナルコンピューティングゲームシステム、軍事追跡及び/又は標的システム、並びに緑スクリーン(green screen)又はモーションキャプチャー機能を提供する特徴取得(character acquisition)システムを含むがこれらに限定されない、様々な異なる形式をとってもよい。
【0015】
[0027]コンピューティングシステム40は、論理サブシステム42、データ保持サブシステム44、表示サブシステム46及び/又は取込み(キャプチャー)装置48を含んでもよい。コンピューティングシステムは、任意に、図2に示されないコンポーネントを含んでもよく、及び/又は図2に示される幾つかのコンポーネントはコンピューティングシステムへ統合されない周辺コンポーネントであってもよい。
【0016】
[0028]論理サブシステム42は、1つ以上の命令を実行するように構成された1つ以上の物理的装置を含んでもよい。例えば、論理サブシステムは、1つ以上のプログラム、ルーチン、オブジェクト、コンポーネント、データ構造又は他の論理的な構成の一部である1つ以上の命令を実行するように構成されてもよい。そのような命令は、タスクを実行し、データ型を実施し、1つ以上の装置の状態を変換し、又はそうでなければ所望の結果に達するために実施されてもよい。論理サブシステムは、ソフトウェア命令を実行するように構成される1つ以上のプロセッサーを含んでもよい。さらに又は代替的に、論理サブシステムは、ハードウェア又はファームウェア命令を実行するように構成された1つ以上のハードウェア又はファームウェア論理機械(logic machines)を含んでもよい。論理サブシステムは、任意に、幾つかの実施例においては遠隔に配置され得る2つ以上の装置にわたって分散される個々のコンポーネントを含んでもよい。
【0017】
[0029]データ保持サブシステム44は、本明細書において記載される方法及び処理を実施するために論理サブシステムによって実行可能なデータ及び/又は命令を保持するように構成された1つ以上の物理的装置を含んでもよい。そのような方法及び処理が実施される場合、データ保持サブシステム44の状態は(例えば、異なるデータを保持するように)変換されてもよい。データ保持サブシステム44は、取り外し可能な媒体及び/又は内蔵型の装置を含んでもよい。データ保持サブシステム44は、とりわけ、光メモリー装置、半導体記憶装置(例えば、RAM、EEPROM、フラッシュなど)及び/又は磁気メモリー装置を含んでもよい。データ保持サブシステム44は、次の特性の1つ以上を備えた装置を含んでもよい:揮発性、不揮発性、動的、静的、読み取り/書き込み、読み出し専用、ランダムアクセス、シーケンシャルアクセス、アドレス可能な位置、アドレス可能なファイル、及びアドレス可能なコンテンツ。幾つかの実施例において、論理サブシステム42及びデータ保持サブシステム44は、チップ上の特定用途向け集積回路又はシステムなどの1つ以上の共通の装置へ統合されてもよい。
【0018】
[0030]図2はまた、データ保持サブシステムの態様をコンピューター読み取り可能な取り外し可能な媒体50の形で示し、それは、本明細書において記載される方法及び処理を実施するために実行可能なデータ及び/又は命令を格納及び/又は転送するために使用され得る。
【0019】
[0031]表示サブシステム46はデータ保持サブシステム44によって保持されたデータの視覚的な表現を提示するために使用され得る。本明細書に記載される方法及び処理はデータ保持サブシステムによって保持されたデータを変更し、従ってデータ保持サブシステムの状態を変換するので、表示サブシステム46の状態は基本的なデータの変化を視覚的に表すために同様に変換されてもよい。限定的でない例として、本明細書において記載される目標認識、追跡及び分析は、物理的空間中のゲームプレーヤーの動作に応答してゲーム空間における姿勢を変更するゲームキャラクターの形式で表示サブシステム46を介して反映されてもよい。表示サブシステム46は、実質的に任意の種類の技術を利用する1つ以上のディスプレイ装置を含んでもよい。そのようなディスプレイ装置は、論理サブシステム42及び/又はデータ保持サブシステム44とともに、共有の筐体内に組み合わされてもよく、又は、図1A及び1Bに示されるように、そのようなディスプレイ装置は周辺ディスプレイ装置であってもよい。
【0020】
[0032]コンピューティングシステム40は、1つ以上の目標の奥行き画像(depth images)を得るように構成された取込み装置48をさらに含む。取込み装置48は、任意の適切な技術(例えば、飛行時間、構造化された光、立体画像など)を介して奥行き情報を備えた動画を取り込むように構成されてもよい。そのため、取込み装置48は、奥行きカメラ、ビデオカメラ、ステレオカメラ及び/又は他の適切な取込み装置を含んでもよい。
【0021】
[0033]例えば、飛行時間の分析において、取込み装置48は、目標へ赤外光を放射し、次に、目標の表面からの後方散乱された光を検出するためにセンサーを使用してもよい。ある場合には、パルス赤外光が使用されてもよく、出ていく光パルスと対応する入ってくる光パルスとの間の時間が測定され、取込み装置から目標における特定の位置までの物理的な距離を決定するために使用され得る。ある場合には、出ていく光波の位相が、位相シフトを決定するために、入ってくる光波の位相と比較されてもよく、位相シフトは取込み装置から目標における特定の位置までの物理的な距離を決定するために使用され得る。
【0022】
[0034]別の例において、飛行時間の分析は、シャッターされた(shuttered)光パルスイメージングなどの技術によって、時間にわたって反射された光ビームの強度を分析することにより、取込み装置から目標における特定の位置までの物理的な距離を間接的に決定するために使用され得る。
【0023】
[0035]別の例において、構造化された光分析は、奥行き情報を取得するために取込み装置48によって利用されてもよい。そのような分析では、パターン化された(patterned)光(すなわち、グリッドパターン又はストライプパターンなどの既知のパターンとして表示された光)が、目標上に投影されてもよい。目標の表面に当たると、パターンは、応答して変形されてもよく、パターンのこの変形は、取込み装置から目標における特定の位置までの物理的な距離を決定するために考慮されてもよい。
【0024】
[0036]別の例において、取込み装置は、視覚的なステレオデータを得るために、異なる角度から目標を見る2つ以上の物理的に分離されたカメラを含んでもよい。そのような場合、視覚的なステレオデータは奥行き画像を生成するために解像(resolve)されてもよい。
【0025】
[0037]他の実施例において、取込み装置48は、奥行き値を測定及び/又は計算するために他の技術を利用してもよい。また、取込み装置48は、「Z層」、すなわち、そのライン・オブ・サイトに沿って奥行きカメラからビューアーに及ぶZ軸に対して垂直な層へと、計算された奥行き情報を組織化してもよい。
【0026】
[0038]幾つかの実施例において、2つ以上の異なるカメラが統合された取込み装置に組み込まれてもよい。例えば、奥行きカメラ及びビデオカメラ(例えば、RGBビデオカメラ)は、共通の取込み装置に組み込まれてもよい。幾つかの実施例において、2つ以上の別個の取込み装置が協調的に使用され得る。例えば、奥行きカメラ及び別個のビデオカメラが使用され得る。ビデオカメラが使用される場合、それは、目標追跡データ、目標追跡、画像捕捉、顔認識、指(又は他の小さな特徴)の高精度な追跡、光センシング及び/又は他の機能についての誤り訂正のための確認データを提供するために使用され得る。
【0027】
[0039]少なくともある目標分析及び追跡動作が1つ以上の取込み装置の論理機械によって実行され得ることが理解されるべきである。取込み装置は、1つ以上の目標分析及び/又は追跡機能を実行するように構成された1つ以上の搭載された演算処理装置を含んでもよい。取込み装置は、そのような搭載された処理論理回路を更新することを容易にするためにファームウェアを含んでもよい。
【0028】
[0040]コンピューティングシステム40は、任意に、制御装置52及び制御装置54などの1つ以上の入力装置を含んでもよい。入力装置はコンピューティングシステムの動作を制御するのに使用されてもよい。ゲームのコンテキストにおいては、制御装置52及び/又は制御装置54などの入力装置は、本明細書において記載された目標認識、追跡及び分析方法及び手続によって制御されない態様のゲームを制御するために使用することができる。幾つかの実施例において、制御装置52及び/又は制御装置54などの入力装置は、加速度計、ジャイロスコープ、赤外線目標/センサーシステムなどのうち1つ以上を含んでもよく、それは、物理的空間において制御装置の動きを測定するために使用され得る。幾つかの実施例において、コンピューティングシステムは、任意に、入力グローブ、キーボード、マウス、トラックパッド、トラックボール、タッチスクリーン、ボタン、スイッチ、ダイヤル、及び/又は他の入力装置を含んでいてもよく及び/又は利用してもよい。理解されるように、目標認識、追跡及び分析は、ゲームの制御装置などの入力装置によって従来制御されていた、ゲームの態様、又は他のアプリケーションを制御又は増大するために使用され得る。幾つかの実施例においては、本明細書において記載された目標追跡はユーザー入力の他の形式に対する完全な置換として使用することができる一方、他の実施例において、そのような目標追跡はユーザー入力の1つ以上の他の形式を補足するために使用することができる。
【0029】
[0041]コンピューティングシステム40は本明細書において記載された目標追跡方法を行うように構成されてもよい。しかし、そのような目標追跡を実行し得る装置の限定的でない例としてコンピューティングシステム40が提供されることが理解されるべきである。他の装置は本開示の範囲内にある。
【0030】
[0042]コンピューティングシステム40、又は別の適切な装置は、モデルによって各目標を表すように構成されてもよい。より詳細に以下に記載されるように、そのようなモデルから導出される情報は、奥行きカメラなどの取込み装置から得られた情報と比較することができ、その結果、モデルの基本的な比率(proportion)又は形状のほか、その現在の姿勢を、モデル化された目標をより正確に表すために調節することができる。モデルは、1つ以上の多角形のメッシュによって、1組の数学的な原始関数(mathematical primitives)によって、及び/又はモデル化された目標についての他の適切な機械表現によって表されてもよい。
【0031】
[0043]図3は、例示的な人体モデル(body model)70の限定的でない視覚的な表現を示す。人体モデル70は、モデル化された目標(例えば、図1A及び1Bからのゲームプレーヤー18)の機械表現である。人体モデルは、ゲーム又は他のアプリケーション/オペレーティングシステムの言語でモデル化された目標を集合的に定義する1組の変数を含む、1つ以上のデータ構造を含んでもよい。
【0032】
[0044]目標のモデルは本開示の範囲から逸脱することなく様々に構成することができる。幾つかの例において、モデルは、固定した及び/又は変形可能な形状、もしくは体の一部(body parts)を含む3次元モデルとして目標を表す、1つ以上のデータ構造を含んでもよい。各々の体の一部(body part)は数学的な原始関数として見なされてもよく、その例は、球体、異方的に拡大縮小された(anisotropically-scaled)球体、円筒、異方性の円筒、滑らかな円筒、箱、面取りされた(beveled)箱、プリズムなどを含むがこれらに限定されない。
【0033】
[0045]例えば、図3の人体モデル70は体の一部bpl−bpl4を含み、その各々は、モデル化された目標の異なる一部を表す。各々の体の一部は3次元の形状である。例えば、bp3はモデル化された目標の左手を表す直角プリズムであり、bp5はモデル化された目標の左上腕を表す八角形のプリズムである。人体モデル70は、人体モデルが任意の数の体の一部を含んでもよいという点で例示的なものであり、体の一部の各々は、モデル化された目標の対応する部分についての任意の機械が理解できる表現であってもよい。
【0034】
[0046]2つ以上の体の一部を含むモデルはまた、1つ以上の関節(接合部、ジョイント、joints)を含んでもよい。各関節は、1つ以上の体の一部が1つ以上の他の体の一部に対して移動することを可能にしてもよい。例えば、人間の目標(human target)を表すモデルは複数の固定の及び/又は変形可能な体の部分を含んでもよく、幾つかの体の一部は、人間の目標の対応する解剖学的な体の一部を表してもよい。さらに、モデルの各々の体の一部は、隣接した骨の交点に位置する関節とともに、1つ以上の構造部材(structural members)(すなわち、「骨」)を含んでもよい。幾つかの骨が人間の目標における身体構造上の(解剖学的な)骨に対応してもよく及び/又は幾つかの骨が人間の目標における対応する身体構造上の骨を有していなくてもよいことが理解されるべきである。
【0035】
[0047]骨及び関節は集合的に骨格モデルを構築してもよく、それはモデルの構成要素であってもよい。骨格モデルは、各々の体の一部及び隣接した骨格部材間の関節についての1つ以上の骨格部材を含んでもよい。例示的な骨格モデル80及び例示的な骨格モデル82は図4及び5にそれぞれ示される。図4は関節jl乃至j33とともに、正面から見たときの骨格モデル80を示す。図5は、関節j1乃至j33とともに、斜めの視界から見たときの骨格モデル82を示す。骨格モデル82は、回転関節(roll joints)j34乃至j47をさらに含み、各回転関節は軸のロール角(roll angles)を追跡するために利用されてもよい。例えば、軸のロール角はその親リム(手足、limb)及び/又は胴(トルソー)に対するリムの回転方向を定義するために使用され得る。例えば、骨格モデルが腕の軸回転を示している場合、回転関節j40は、関連する手首が指している(例えば、表向きの手のひら)方向を示すために使用され得る。したがって、以下に述べられるように、関節は力を受けて骨格モデルを調節することができるが、回転関節は、その代わりに、軸のロール角を追跡するために構築されて利用されてもよい。より一般的には、その親リム及び/又はトルソーに対するリムの方向を調べることによって、軸のロール角が決定されてもよい。例えば、下肢(lower leg)を調べる場合、関連する太股(upper leg)及び腰に対する下肢の方向は、軸のロール角を決定するために調べられてもよい。
【0036】
[0048]上述のように、幾つかのモデルは、モデル化された目標の機械表現として役立つ骨格及び/又は体の一部を含んでもよい。幾つかの実施例において、モデルは代替的に又はさらにワイヤーフレームメッシュを含んでもよく、それは、固定の多角形のメッシュ、1つ以上の変形可能なメッシュ又はそれら2つの任意の組み合わせについての階層を含んでもよい。限定的でない例として、図6は、人体モデルの形状を定義するメッシュにおいて配置された複数の三角形(例えば、三角形92)を含むモデル90を示す。そのようなメッシュは個々の多角形のエッジにおいて曲げ限界を含んでもよい。メッシュが使用される場合、集合的にメッシュを構成する三角形及び/又は他の多角形の数は、品質と計算コストとの間の所望のバランスを達成するように選択することができる。より多くの三角形がより高品質及び/又はより正確なモデルを提供し得る一方、より少ない三角形はそれほど計算上の要求が厳しくない。多角形のメッシュを含む人体モデルは骨格を含む必要はないが、幾つかの実施例においてはそうであってもよい。
【0037】
[0049]上述の体の一部のモデル、骨格モデル及び多角形のメッシュは、モデル化された目標の機械表現として使用され得るモデルの限定的でない例示的なタイプである。他のモデルもまた本開示の範囲内にある。例えば、幾つかのモデルは、パッチ、不均一な有理B−スプライン(non-uniform rational B-splines)、細分割(subdivision)表面又は他の高次(高位、high-order)の表面を含んでもよい。モデルはまた、モデル化された目標の衣類、髪及び/又は他の側面をより正確に表すために表面のテクスチャー及び/又は他の情報を含んでもよい。モデルは、任意に、現在の姿勢、1つ以上の過去の姿勢、及び/又はモデルの物理特性に関連する情報を含んでもよい。ポーズをとらせることができ、その後合成された奥行き画像へとラスタライズすることができる(又は、そうでなければ、合成された奥行き画像へとレンダリングされるか又は合成された奥行き画像によって表現される)任意のモデルは、本明細書において記載された目標認識、分析及び追跡に適合することが理解されるべきである。
【0038】
[0050]上に言及されるように、モデルは、図1A及び1Bのゲームプレーヤー18などの目標の表現として役立つ。目標が物理的空間において動くとき、図1A及び1Bの奥行きカメラ20などの取込み装置からの情報は、それがより正確に目標を表すように、モデルの姿勢及び/又は基本的なサイズ/形状を調節するために使用することができる。特に、物理的空間中の目標の姿勢により密接にに対応する姿勢へとモデルを調節するために、1つ以上の力が、モデルの1つ以上の力受信面(force-receiving aspects)に加えられてもよい。使用されているモデルの種類によって、力は、関節、体の一部の重心、三角形の頂点又はモデルの他の適切な力受信面に加えられてもよい。さらに、幾つかの実施例において、力の方向及び/又は大きさを決定する場合、2つ以上の異なる計算が使用され得る。より詳細に以下に記載されるように、取込み装置によって取り出されるような目標の観察される画像と、モデルのラスタライズされた(すなわち、合成された)画像との間の差は、異なる姿勢へと体を調節するために、モデルに加えられる力を決定するために使用され得る。
【0039】
[0051]図7は、モデル(例えば、図3の人体モデル70)を使用して目標を追跡する、例示的な方法100のフロー図を示す。幾つかの実施例において、目標は人間であってもよく、人間は追跡されている2つ以上の目標のうちの1つであってもよい。そのため、幾つかの実施例において、コンピューティングシステム上でなされているコンピューターゲームとインタラクトする1人以上のプレーヤーを追跡するために、方法100は、コンピューティングシステム(例えば、図1に示されるゲームシステム12及び/又は図2に示されるコンピューティングシステム40)によって実行されてもよい。上述のように、プレーヤーの追跡は、コンピューターゲームのパラメーターを調節及び/又は制御するリアルタイムのユーザー・インターフェースとしてそれらのプレーヤーの物理的動作が作用することを可能にする。例えば、プレーヤーの追跡される動きは、電子ロールプレイングゲーム中のスクリーン上のキャラクター又はアバターを移動させるために使用され得る。別の例において、プレーヤーの追跡される動きは、電子レーシングゲームでのスクリーン上の車両を制御するために使用され得る。さらに別の例において、プレーヤーの追跡される動きは、仮想環境における物の構築又は構成を制御するために使用され得る。
【0040】
[0052]102において、方法100はソースから目標についての観察された奥行き画像を受け取ることを含む。幾つかの実施例において、ソースは、飛行時間の分析、構造化された光分析、立体映像分析又は他の適切な技術などの適切な技術によって目標に関する奥行き情報を得るように構成された奥行きカメラであってもよい。観察された奥行き画像は複数の観察された画素を含んでもよく、各々の観察された画素は観察された奥行き値を有する。観察された奥行き値は、ソースから見られるような目標についての奥行き情報を含む。図8は、例示的な観察された奥行き画像140の視覚的な表現を示す。示されるように、観察される奥行き画像140は、腕を挙げて立っている人(例えば、ゲームプレーヤー18)についての例示的な観察された姿勢をとらえる。
【0041】
[0053]図7の104に示されるように、観察された奥行き画像を受け取ると、方法100は、任意に、観察された奥行き画像をより低い処理解像度へとダウンサンプリングすることを含んでもよい。より低い処理解像度へのダウンサンプリングは、観察された奥行き画像が、より少ない計算オーバーヘッドでより容易に利用され及び/又はより迅速に処理されることを可能にしてもよい。
【0042】
[0054]106に示されるように、観察された奥行き画像を受け取ると、方法100は、任意に、観察された奥行き画像からプレーヤーでない背景要素を取り除くことを含んでもよい。そのような背景要素の除去は、観察された奥行き画像の様々な領域を背景領域へと及び目標の画像によって占められた領域へと分離することを含んでもよい。背景領域は、1つ以上の後の処理ステップ中にそれらを無視することができるように、画像から除去することができ、又は識別することができる。実質的に、任意の背景除去技術を使用することができ、追跡から(及び以前のフレームから)の情報は、任意に、背景除去の品質を支援し改善するために使用することができる。
【0043】
[0055]108に示されるように、観察された奥行き画像を受け取ると、方法100は、任意に、観察された奥行き画像から、1つ以上の高分散奥行き値及び/又は雑音のある奥行き値を取り除くこと及び/又はそれらを滑らかにすることを含んでもよい。観察された奥行き画像におけるそのような高分散及び/又は雑音のある奥行き値は、画像取り込み処理中に生じるランダムな及び/又は系統的な誤差、取込み装置に起因する欠陥及び/又は収差(aberrations)などの多くの異なるソースに起因し得る。そのような高分散及び/又は雑音のある奥行き値は画像取り込み処理のアーティファクトであり得るので、画像についての任意の将来の分析においてこれらの値を含めることにより、結果が歪められ及び/又は計算が遅くなり得る。したがって、そのような値の除去により、将来の計算のためのよりよいデータの完全性が提供され得る。
【0044】
[0056]他の奥行き値もまたフィルタリングされてもよい。例えば、ステップ118に関して以下に述べる成長動作の正確さは、1つ以上の除去基準を満たす画素を選択的に除去することにより向上させることができる。例えば、奥行き値が、手と当該手が塞いでいるトルソーとの間の中間にある場合、この画素の除去は、後の処理ステップの間に成長動作が1つの体の一部から別のものへと飛び火するのを防ぐことができる。
【0045】
[0057]110に示されるように、方法100は、任意に、欠落した及び/又は除去された奥行き情報の一部を埋めること及び/又は再構築することを含んでもよい。そのような埋め戻し(backfilling)は、最も近い隣接値を平均化すること、フィルタリングすること及び/又は他の適切な方法によって遂行されてもよい。
【0046】
[0058]図7の112に示されるように、方法100は、モデル(例えば、図3の人体モデル70)を得ることを含んでもよい。上述のように、モデルは、目標の機械表現を提供するのに使用される、1つ以上の多角形のメッシュ、1つ以上の数学的な原始関数、1つ以上の高位の表面及び/又は他の特徴を含んでもよい。さらに、モデルは、コンピューティングシステム上に存在する1つ以上のデータ構造のインスタンスとして存在してもよい。
【0047】
[0059]方法100の幾つかの実施例において、モデルは以前の時間ステップから得られた、ポーズをとらせたモデルであってもよい。例えば、方法100が連続的に行われる場合、以前の時間ステップに対応する、方法100の以前の反復に起因するポーズをとらせたモデルが得られてもよい。
【0048】
[0060]幾つかの実施例において、姿勢は、奥行き画像を分析することができ、関心のある目標(例えば、人間)が位置している場所及び/又はそのような目標の姿勢を粗いレベルで識別することができる、1つ以上のアルゴリズムによって決定されてもよい。アルゴリズムは、最初の反復中又は当該アルゴリズムが以前の時間ステップ中に計算された姿勢よりも正確な姿勢を選択することができると考えられるときはいつでも、姿勢を選択するために使用することができる。
【0049】
[0061]幾つかの実施例において、モデルはデータベース及び/又は他のプログラムから得られてもよい。例えば、モデルは方法100の最初の反復中に利用可能でなくてもよく、その場合には、モデルは1つ以上のモデルを含むデータベースから得られてもよい。そのような場合、データベースからのモデルは、目標の姿勢に似ている姿勢を示すモデルを選択するように設計された探索アルゴリズムを使用して選択されてもよい。以前の時間ステップからのモデルがたとえ利用可能であっても、データベースからのモデルを使用してもよい。例えば、目標が所定のしきい値を越えて及び/又は他の基準に従って姿勢を変化させた場合、データベースからのモデルはある数のフレームの後に使用されてもよい。
【0050】
[0062]他の実施例において、モデル又はその一部は合成されてもよい。例えば、目標の身体中央部(body core)(トルソー、中間部及び腰)が変形可能な多角形のモデルによって表される場合、そのモデルは観察された奥行き画像の内容を使用して元々構築されてもよく、画像中の目標の輪郭(すなわち、シルエット)はX次元及びY次元においてメッシュを形作るために使用されてもよい。また、そのような手法では、観察された奥行き画像のその領域における観察された奥行き値は、目標の体の形状をよりよく表すために、モデルのXY方向のほかZ方向におけるメッシュを「形作る」のに使用されてもよい。
【0051】
[0063]方法100は、適切な手法を使用して、目標の上に現れるいかなる衣類も表すことをさらに含んでもよい。そのような適切な手法は、原始関数又は多角形のメッシュの形で補助的な形状(geometry)をモデルに加えることを含んでもよく、任意に、重力、衣服シミュレーションなどを反映するために姿勢に基づいて当該補助的な形状を調節することを含んでもよい。そのような手法はモデルを目標についてのより現実的な画像へと形作ることを容易にし得る。
【0052】
[0064]114に示されるように、方法100は、任意に、モデルに運動量(momentum)アルゴリズムを適用することを含んでもよい。目標の様々な部分の運動量が画像シーケンスの変化を予測するので、そのようなアルゴリズムはモデルの姿勢を得るのに役立つ。運動量アルゴリズムは、モデルを得るのを支援するために、複数の以前のフレームのうちの固定数のものにわたるモデルの関節又は交点の各々の軌道を使用してもよい。
【0053】
[0065]幾つかの実施例において、目標の異なる部分が時間フレーム(例えば、1秒のうちの1/30番目又は1/60番目)において制限された距離を移動できるという知識は、モデルを得る際に制約として使用することができる。そのような制約は、先のフレームが知られている場合にある姿勢を除外するために使用され得る。
【0054】
[0066]図7の116において、方法100はまた、モデルを合成された奥行き画像へとラスタライズすることを含んでもよい。ラスタライズすることにより、数学的な原始関数、多角形のメッシュ又は他のオブジェクトによって記述されたモデルが、複数の画素によって記述された、合成された奥行き画像へと変換されることが可能となる。
【0055】
[0067]ラスタライジングは1つ以上の異なる技術及び/又はアルゴリズムを使用して実行されてもよい。例えば、モデルをラスタライズすることは2次元の平面上にモデルの表現を投影することを含んでもよい。複数の体の一部の形状(例えば、図3の人体モデル70)を含むモデルの場合には、ラスタライジングは、2次元の平面上に一群の体の一部の形状を投影しラスタライズすることを含んでもよい。モデルが投影される2次元平面における各画素について、様々な異なる種類の情報が格納されてもよい。
【0056】
[0068]図9は、図3の人体モデル70に対応する例示的な合成された奥行き画像の視覚的な表現150を示す。図10は、同じ合成された奥行き画像の一部の画素行列160を示す。170に示されるように、合成された奥行き画像中の各々の合成された画素は合成された奥行き値を含んでもよい。ラスタライズ中に決定されるように、所与の合成された画素についての合成された奥行き値は、その合成された画素によって表されるモデルの対応する部分からの奥行き値であってもよい。換言すれば、前腕の体の一部(例えば、図3の前腕の体の一部bp4)の一部が2次元の平面上に投影される場合、対応する合成された画素(例えば、図10の合成された画素162)は、前腕の体の一部のその一部の奥行き値と等しい合成された奥行き値(例えば、図10の合成された奥行き値164)を与えられてもよい。示された例において、合成された画素162は、382cmの合成された奥行き値を有する。同様に、近隣の手の体の一部(例えば、図3の手の体の一部bp3)が2次元の平面上に投影される場合、対応する合成された画素(例えば、図10の合成された画素166)は、手の体の一部のその一部の奥行き値と等しい合成された奥行き値(例えば、図10の合成された奥行き値168)を与えられてもよい。示された例において、合成された画素166は383cmの合成された奥行き値を有する。上記のものが例として提供されることが理解されるべきである。合成された奥行き値は、任意の尺度(unit of measurement)で、又は無次元の数として保存されてもよい。
【0057】
[0069]170に示されるように、合成された奥行き画像中の各々の合成された画素は、ラスタライズ中に決定された元の体の一部のインデックスを含んでもよい。そのような元の体の一部のインデックスは、モデルの体の一部のうちのどれにその画素が対応するかを示してもよい。図10の示された例においては、合成された画素162は、bp4の元の体の一部のインデックスを有し、合成された画素166は、bp3の元の体の一部のインデックスを有する。幾つかの実施例において、合成された画素が目標の体の一部に対応しない場合(例えば、合成された画素が背景画素である場合)、合成された画素の元の体の一部のインデックスはゼロ(nil)であってもよい。幾つかの実施例において、体の一部に対応しない合成された画素は異なる種類のインデックスを与えられてもよい。
【0058】
[0070]170に示されるように、合成された奥行き画像中の各々の合成された画素は、ラスタライズ中に決定された元のプレーヤーのインデックスを含んでもよく、当該元のプレーヤーのインデックスは目標に対応する。例えば、2つの目標がある場合、第1の目標に対応する合成された画素は第1のプレーヤーインデックスを有し、第2の目標に対応する合成された画素は第2のプレーヤーインデックスを有する。示された例において、画素行列160はたった1つの目標に対応し、したがって、合成された画素162はPlの元のプレーヤーインデックスを有し、合成された画素166はP1の元のプレーヤーインデックスを有する。他の種類のインデックス方式は本開示の範囲から逸脱することなく使用され得る。
【0059】
[0071]170に示されるように、合成された奥行き画像中の各々の合成された画素は画素アドレスを含んでもよい。画素アドレスは、他の画素に対する画素の位置を定義してもよい。示された例において、合成された画素162は[5,7]の画素アドレスを有し、合成された画素166は[4,8]の画素アドレスを有する。他のアドレス指定スキームが本開示の範囲から逸脱することなく使用され得ることが理解されるべきである。
【0060】
[0072]170に示されるように、各々の合成された画素は、任意に、他の種類の情報を含んでもよく、それらのうちのいくらかはラスタライズの後に得られてもよい。例えば、各々の合成された画素は更新された体の一部のインデックスを含んでもよく、それは、以下に記載されるように、ラスタライズ中に実行されるスナップ動作の一部として決定されてもよい。各々の合成された画素は更新されたプレーヤーインデックスを含んでもよく、それはラスタライズ中に実行されるスナップ動作の一部として決定されてもよい。各々の合成された画素は更新された体の一部のインデックスを含んでもよく、それは以下に記載されるように成長/固定動作(grow/fix operation)の一部として得られてもよい。各々の合成された画素は更新されたプレーヤーインデックスを含んでもよく、それは上述のように成長/固定動作の一部として得られてもよい。
【0061】
[0073]上に提供される例示的な種類の画素情報は限定的なものではない。様々な異なる種類の情報が各画素の一部として格納されてもよい。そのような情報は共通データ構造の一部として格納することができ、又は異なる種類の情報が、(例えば、画素アドレスを介して)特定の画素位置にマッピングすることができる異なるデータ構造に格納されてもよい。例として、プレーヤーインデックス及び/又はラスタライズ中のスナップ動作の一部として得られる体の一部のインデックスが、ラスタライズマップ及び/又はスナップマップに格納されてもよい一方、以下に記載されるように、ラスタライズの後に成長/固定動作の一部として得られるプレーヤーインデックス及び/又は体の一部のインデックスが成長マップ(grow map)に格納されてもよい。各画素に割り当てられてもよい他の種類の画素情報についての限定的でない例は、関節のインデックス、骨のインデックス、交点(頂点)のインデックス、三角形のインデックス、重心のインデックスなどを含むがこれらに限定されない。
【0062】
[0074]118において、図7の方法100は、任意に、体の一部のインデックス及び/又はプレーヤーインデックスをスナップし及び/又は成長させることを含んでもよい。換言すれば、モデル化された目標により密接に対応させようとして、幾つかの画素の体の一部のインデックス及び/又はプレーヤーインデックスが変更されるように、合成された奥行き画像は増大されてもよい。
【0063】
[0075]上述のラスタライズを行う際に、1つ以上のZバッファー及び/又は体の一部/プレーヤーインデックスマップが構築されてもよい。限定的でない例として、そのようなバッファー/マップの第1のバージョンは、ビューアー(例えば、奥行きカメラ)に最も近い表面が選択され、その表面に関連付けられる体の一部のインデックス及び/又はプレーヤーインデックスが対応する画素に書き込まれるZテストを行うことにより構築されてもよい。このマップはラスタライズマップ又は元の合成された奥行きマップと呼ばれてもよい。そのようなバッファー/マップの第2のバージョンは、その画素における観察された奥行き値に最も近い表面が選択され、その表面に関連付けられる体の一部のインデックス及び/又はプレーヤーインデックスが対応する画素に書き込まれるZテストを行うことにより構築されてもよい。これはスナップマップと呼ばれてもよい。そのようなテストは、合成された奥行き値と所定のしきい値を越える観察された奥行き値との間のZ距離を拒絶するように制約されてもよい。幾つかの実施例において、2つ以上のZバッファー及び/又は2つ以上の体の部分/プレーヤーインデックスマップが保持され、したがって、上述のテストの2つ以上が実行されることを可能にしてもよい。
【0064】
[0076]バッファー/マップの第3のバージョンは、体の一部/プレーヤーインデックスマップを成長させること及び/又は修正することにより構築されてもよい。これは成長マップと呼ばれてもよい。上述のスナップマップのコピーから始めて、値は所定のZ距離内の任意の「未知の」値にわたって成長させられてもよく、その結果、目標によって占められるがまだ人体モデルによって占められていない空間は、適切な体の一部/プレーヤーインデックスで満たされてもよい。そのような手法はよりよい一致が識別される場合に既知の値を上回ることをさらに含んでもよい。
【0065】
[0077]成長マップは、異なる体の部分/プレーヤーインデックスを備えた近隣の画素を有する画素を検出するためにスナップマップの合成された画素にわたるパスから開始してもよい。これらは「エッジ」画素、すなわち、値が任意に伝播され得るフロンティア、であると考えられてもよい。上に紹介されるように、画素値を成長させることは「未知の」又は「既知の」画素へと成長させることを含んでもよい。「未知の」画素については、例えば、体の一部/プレーヤーインデックス値は、1つのシナリオにおいて、以前に0であったものでもよいが、今はゼロでない近隣の画素を有していてもよい。そのような場合、4つの直接隣接する画素が調べられてもよく、関心のある画素の観察された奥行き値により密接に類似する観察された奥行き値を有する隣接する画素が選択され、当該関心のある画素に割り当てられてもよい。「既知の」画素の場合には、その隣接する画素のうちの1つが、その画素の合成された奥行き値よりも、関心のある画素の観察された奥行き値とより密接に一致する、ラスタライズ中に書き込まれた奥行き値を有する場合、既知のゼロでない体の一部/プレーヤーインデックス値を備えた画素が取って代わられる可能性がある。
【0066】
[0078]さらに、効率性のために、合成された画素の体の一部/プレーヤーインデックス値の更新は、後のパス上で再考される(revisited)べき画素のキューにその隣接する4つの画素を加えることを含んでもよい。そのため、値は、すべての画素にわたって全体のパスを行うことなく、フロンティアに沿って伝播され続けてもよい。別の最適化として、関心のある目標によって占められない他のブロックを無視することができるように、関心のある目標によって占められた画素の異なるNxNブロック(例えば、画素の16x16ブロック)を追跡することができる。そのような最適化は様々な形式でのラスタライズの後の目標分析中のどの時点において適用されてもよい。
【0067】
[0079]しかし、成長動作が様々な異なる形式をとってもよいことに留意すべきである。例えば、同様の値の領域を識別するために様々な塗りつぶし(flood-fills)が最初に行われてもよく、次に、どの領域がどの体の一部に属するかが決定されてもよい。さらに、任意の体の一部/プレーヤーインデックスオブジェクト(例えば、図3の左前腕の体の一部bp4)が成長できる画素数は、どれだけの画素をそのようなオブジェクトが占めると予想されるかということ(例えば、所与のその形状、距離及び角度)と、スナップマップ中のどれだけの画素がその体の一部/プレーヤーインデックスを割り当てられたかということとの対比に基づいて制限されてもよい。さらに、前述の手法は、ある姿勢について、成長が正確となり得るように、ある体の一部の成長に偏るように利点又は欠点を加えることを含んでもよい。
【0068】
[0080]体の一部からの画素の分布が1つの奥行きでグループ化され、同じ体の一部からの画素の別の分布が別の奥行きでグループ化される場合、向上したスナップ調節をスナップマップに対して行うことができ、その結果、ギャップがこれらの2つの分布の間に存在する。例えば、トルソーの前で及びそのトルソーの近くで揺れる腕は、トルソーへと「波及」し得る。そのような場合は、実際にそれらがトルソー画素であるべき場合に、それらが腕の画素であることを示す体の一部のインデックスを備えたトルソー画素のグループを生み出してもよい。前腕における合成された奥行き値の分布を調べることによって、腕画素のうちの幾つかが1つの奥行きでグループ化されてもよく、残りは別の奥行きでグループ化されてもよいことが決定され得る。奥行き値のこれらの2つのグループ間のギャップは、腕画素と、トルソー画素であるべきものとの間の飛躍(jump)を示す。したがって、そのようなギャップの識別に応答して、その後、スピルオーバー(spillover)はスピルオーバー画素にトルソーの体の一部のインデックスを割り当てることにより改善され得る。別の例として、向上したスナップ調節は、背景上に腕のあるオブジェクトの場合において有用になり得る。この場合、ヒストグラムは、関心のある画素(すなわち、腕に属すると考えられる画素)の観察された奥行きにおけるギャップを識別するために使用することができる。そのようなギャップに基づいて、画素の1つ以上のグループは、腕に適切に属するものとして識別することができ、及び/又は他のグループは、背景画素として拒絶することができる。ヒストグラムは、絶対的な奥行き、奥行きの誤り(合成された奥行き−観察された奥行き)などの様々な基準に基づいてもよい。向上したスナップ調節は、任意の成長動作の前に、ラスタライズ中にインラインで実行され得る。
【0069】
[0081]120において、図7の方法100は、任意に、上述の3つの処理段階における、観察された奥行き画像、合成された奥行き画像及び体の一部/プレーヤーインデックスマップから高さマップを作成することを含んでもよい。以後記載されるように、モデルに対して行われるべき調節の方向を決定する場合、そのような高さマップの勾配及び/又はそのような高さマップの不鮮明なバージョンが利用されてもよい。しかし、高さマップは最適化にすぎず、代替的に又はさらに、すべての方向における探索が、調節が適用されてもよい最も近い関節及び/又はそのような調節が行われるべき方向を識別するために実行されてもよい。高さマップが使用される場合、それは、以下に述べられる画素クラス決定の前、その後、又はそれと並行して作成されてもよい。使用される場合、高さマップは、プレーヤーの実際の体を低い高度に設定し、背景要素を高い高度に設定するように設計される。その後、流域式(watershed-style)の技術が、背景からプレーヤーにおける最も近い点を見つけるべく高さマップにおける「下り坂(downhill)」をたどるため、又はその逆を行う(すなわち、所与のプレーヤー画素に最も近い背景画素を見つけるために高さマップにおける「上り坂(uphill)」を探す)ために使用することができる。
【0070】
[0082]合成された奥行き画像及び観察された奥行き画像は同一でなくてもよく、したがって、合成された奥行き画像は、観察された奥行き画像とより密接に一致し、したがってより正確に目標を表すことができるように、調節及び/又は修正を使用することができる。モデルに対して最初に調節を行い(例えば、モデルの姿勢を変化させ)、次に、合成された奥行き画像の新バージョンへと当該調整されたモデルを合成することにより、合成された奥行き画像に対して調節を行うことができることが理解されるべきである。
【0071】
[0083]多くの異なる手法が合成された奥行き画像を修正するためにとられてもよい。1つの手法では、2つ以上の異なるモデルが2つ以上の合成された奥行き画像を生み出すために得られてラスタライズされてもよい。その後、各々の合成された奥行き画像は、比較基準の所定の組によって、観察された奥行き画像と比較されてもよい。観察された奥行き画像との最も密接な一致を示す合成された奥行き画像が選択されてもよく、この処理はモデルを改善するために任意に繰り返されてもよい。使用される場合、この処理は、プレイヤーの体の種類及び/又は寸法と一致するように人体モデルを改良するのに特に役立ち得る。
【0072】
[0084]別の手法では、混合された合成された奥行き画像を生み出すために、2つ以上の合成された奥行き画像は、補間又は外挿によって混合されてもよい。さらに別の手法では、混合技術及びパラメーターが混合された合成された奥行き画像にわたって変化するような方法で、2つ以上の合成された奥行き画像が混合されてもよい。例えば、第1の合成された奥行き画像が1つの領域の中で観察された奥行き画像によく一致し、第2の合成された奥行き画像が第2の領域の中でよく一致する場合、混合された合成された奥行き画像中の選択された姿勢は、第1の領域において第1の合成された奥行き画像を作成するのに使用される姿勢、及び第2の領域において第2の合成された奥行き画像を作成するのに使用される姿勢に類似する混合物であってもよい。
【0073】
[0085]さらに別の手法において、図7における122に示されるように、合成された奥行き画像は観察された奥行き画像と比較されてもよい。合成された奥行き画像の各々の合成された画素は比較の結果に基づいて分類されてもよい。そのような分類は各画素についての画素ケース(pixel cases)を決定するものとして参照されてもよい。合成された奥行き画像(例えば、図3の人体モデル70)を作成するために使用されるモデルは、決定された画素ケースに従って系統的に調節されてもよい。特に、力ベクトル(大きさ及び方向)は、決定された画素ケースに基づいて各画素において計算されてもよく、モデルの種類に依存して、計算された力ベクトルは、最も近い関節、体の一部の重心、体の一部上の点、三角形の頂点又は合成された奥行き画像を生成するのに使用されるモデルの別の所定の力受信位置(force-receiving location)に印加することができる。幾つかの実施例において、所与の画素に起因する力は、モデル上の2つ以上の力受信位置間に分散させることができる。
【0074】
[0086]1つ以上の画素ケースが1つ以上の要因に基づいて各合成された画素について選択されてもよく、1つ以上の要因は、その合成された画素についての観察された奥行き値と合成された奥行き値との間との差;その合成された画素についての元の体の一部のインデックス、(スナップ)体の一部のインデックス及び/もしくは(成長)体/部分インデックスの間の差;並びに/又はその合成された画素についての元のプレーヤーインデックス、(スナップ)プレーヤーインデックス及び/もしくは(成長)プレーヤーインデックスの間の差を含むが、これらに限定されない。
【0075】
[0087]図7の124に示されるように、画素ケースの決定は、改良−z(refine-z)画素ケースを選択することを含んでもよい。観察された奥行き画像の観察された画素の(又は観察された画素の領域における)観察された奥行き値が、合成された奥行き画像中の合成された奥行き値と一致しないが、両方の画像中の同じ物に属しそうなくらい十分に近く、体の一部のインデックスが一致する(又は、ある場合には、近隣の体の一部又は領域に対応する)場合、改良−z(refine-z)の画素ケースが選択されてもよい。その合成された画素についての観察された奥行き値と合成された奥行き値との間の差が所定の範囲内にある場合、及び、オプションとして、その合成された画素の(成長)体の一部のインデックスが磁気力を受け取るために設計されていない体の一部に対応する場合、改良−zの画素ケースは合成された画素について選択されてもよい。改良−z画素ケースは、正確な位置へモデルを移動させるためにモデルに対して力を及ぼし得る、計算された力ベクトルに対応する。計算された力ベクトルは、画像面に垂直なZ軸に沿って、モデルの側面(例えば、対応する体の一部の面)に垂直なベクトルに沿って、及び/又は近くの観察された画素に垂直なベクトルに沿って印加されてもよい。力ベクトルの大きさは、より大きな力に対応するより大きな差がある場合、観察され合成された奥行き値における差に基づく。力が加えられる力受信位置は、関心のある画素に対して最も近い適格な力受信位置(例えば、最も近いトルソー関節)であるように選択することができ、又は、力は、最も近い力受信位置の重み付けされた混合の間に分散させることができる。最も近い力受信位置が選択されてもよいが、ある場合には、バイアスの印加が有用になり得る。例えば、画素が太股を半ばまで下ったところに位置し、股関節が膝より動きやすくない(又は機敏でない)ことが認められた場合、腰ではなく膝に作用するように中央の脚の画素に対して関節の力を偏らせることが有用となり得る。
【0076】
[0088]どの力受信位置が関心のある画素に最も近いかについての決定は、上述のバイアスの有無にかかわらず、強引な(強力な、brute-force)探索によって見つけることができる。探索を早めるために、探索された力受信位置の組は、この画素の体の一部のインデックスに関連付けられる体の一部の上、又はその体の一部の近くのものだけに制限されてもよい。これらの探索を早めるのを助けるために、姿勢が変更されるごとに、BSP(二分空間分割、binary space partitioning)木が設定されてもよい。体上の各領域、又は体の一部のインデックスに対応する各々の体の一部は、それ自身のBSP木を与えられてもよい。そうならば、バイアスは、各々の体の一部に対して異なるように適用することができ、それはさらに、適切な力受信位置の賢明な選択を可能にする。
【0077】
[0089]図7の126に示されるように、画素ケースの決定は磁気画素ケースを選択することを含んでもよい。(成長)マップにおいて調べられる合成された画素が体の一部(例えば、図3の腕、すなわちbp3、bp4、bp5、bp7、bp8、及びbp9)の所定のサブセット(部分集合)に対応する場合、磁気画素ケースが利用されてもよい。腕が例として提供されるが、脚又は全身などの他の体の一部が、オプションとして、幾つかのシナリオにおいて、磁気画素ケースに関連付けられてもよい。同様に、幾つかのシナリオでは、腕は磁気画素ケースに関連付けられなくてもよい。
【0078】
[0090]磁気ケースについてマークされた画素は領域(regions)へとグループ化されてもよく、各領域は特定の体の一部(この例においては、左上腕、左下腕、左手など)に関連付けられる。画素がどの領域に属するかはその体の一部のインデックスから決定することができ、また、より正確なテストは画素の位置を人体モデル中又は人体モデル上の様々な点(しかし、画素の体の一部のインデックスによって示される体の一部には限定されない)と比較することにより(成長動作において導入される可能性のある誤りを低減するために)行うことができる。例えば、左の腕のどこかの画素について、画素がどの骨セグメント(肩から肘、肘から手首、又は手首から手先)に属する可能性が最も高いかを決定するために、様々な基準を使用することができる。これらの骨セグメントの各々は「領域」と考えられてもよい。
【0079】
[0091]これらの磁気領域の各々について、領域に属する画素の重心が計算されてもよい。これらの重心はオーソドックスなもの(すべての寄与する画素が等しく重み付けされる)、又は偏った(biased)もののいずれであってもよく、幾つかの画素は他のものより大きな重みを持っていてもよい。例えば、上腕については、3つの重心が追跡されてもよい:1)偏りのない重心;2)肩により近い場合に寄与する画素がより重く重み付けされる「近い(near)」重心;及び3)肘により近い場合に寄与する画素がより重く重み付けされる「遠い(far)」重心。これらの重み付けは線形であってもよいし(例えば、2X)、又は非線形であってもよいし(例えば、x2)、又は、いかなる曲線に従ってもよい。
【0080】
[0092]一旦これらの重心が計算されると、いくらかが部分的に塞がれても、関心のある体の一部の位置及び方向の計算のために様々な選択肢が利用可能である(そして、動的に選択することができる)。例えば、肘の新たな位置を決定しようとする場合、その領域の重心が十分に目に見えるものであれば(寄与する画素の重みの合計が所定のしきい値を超える場合)、その後、重心自体は肘にマークを付ける(推定(estimate)#1)。しかし、(おそらくは他のある物又は体の一部によって塞がれるために)肘の領域が目に見えない場合、以下の限定的でない例に述べられるように、肘の位置はそれでもしばしば決定することができる。上腕の遠い重心が目に見える場合、肘についての非常に可能性のある位置(推定#2)を得るために、上腕の長さだけ、この重心を通じて肩から投影を行うことができる。前腕の近い重心が目に見える場合、肘についての非常に可能性のある位置(推定#3)を得るために、前腕の長さだけ、この重心を通じて手首から投影を行うことができる。
【0081】
[0093]3つの可能性のある評価のうちの1つの選択を行うことができ、又は、3つの可能性のある評価の間で混合を行って、より高い可視性、信頼性、画素数又は任意の数の他の基準を有するその推定に対して優先順位(又はより高い重み)を与えてもよい。最後に、この例において、単一の力ベクトルが肘の位置においてモデルに印加されてもよい;しかし、それを構築するために多くの画素が使用されたということを表すために、(他の画素ケースに起因するが同じ力受信位置に作用する画素力ベクトルが蓄積される場合)より重く重み付けされてもよい。印加される場合、対応するモデルが観察画像中に示される目標とよりよく一致するように、計算された力ベクトルはモデルを移動させてもよい。磁気画素ケースの利点は、腕などの非常に機敏な体の一部とよく連携するその能力である。
【0082】
[0094]幾つかの実施例において、定義された関節又は体の一部のないモデルが磁気画素ケースのみを使用して調節されてもよい。
[0095]図7の128及び130に示されるように、画素ケースの決定は引き込み画素ケース(pull pixel case)及び/又は押し出し画素ケース(push pixel case)を選択することを含んでもよい。これらの画素ケースはシルエットで呼び出されてもよく、合成され観察された奥行き値は同じ画素アドレスにおいてひどく一致しないかもしれない。元のプレーヤーインデックスが(成長)プレーヤーインデックスと一致しない場合、引き込み画素ケース及び押し出し画素ケースを使用することができることが注目される。押し対引きの決定は以下のとおりである。合成された奥行き画像がその同じ画素アドレスにおける観察された奥行き画像の奥行き値より大きい(遠い)奥行き値を含む場合、モデルは成長画像に見られる本当のシルエットに向かって引くことができる。反対に、元の合成された画像が観察された奥行き画像中の奥行き値より小さい(より近い)奥行き値を含む場合、次に、プレーヤーがもはや占めていない空間から(及び成長した画像中の現実のシルエットに向かって)モデルを押し出すことができる。いずれにせよ、これらの画素又は画素領域のうちの各々について、シルエットの不一致を修正するために、2次元又は3次元の計算された力ベクトルがモデルに及ぼされてもよく、観察された奥行き画像中の目標の位置により正確に一致する位置へと人体モデルの一部を押し出したり引き込んだりする。そのような押し出し及び/又は引き込みの方向は多くは主にXY平面にあるが、幾つかのシナリオにおいてはZコンポーネントを力に加えることができる。
【0083】
[0096]引き込む場合又は押し出す場合について適切な力ベクトルを生成するために、(引き込みの場合については)合成された奥行き画像中のプレーヤーのシルエット上、又は(押し出しの場合については)観察された奥行き画像中のプレーヤーのシルエット上の、最も近い点は、最初に見つけられてもよい。この点は、次の基準を満たす(所望のシルエット上の)最も近い点に対して強引で徹底的な2D探索を行うことにより、各ソース画素について(又はソース画素の各グループについて)見つけることができる。引き込み画素ケースにおいては、(ソース画素又は領域における)成長したマップにおけるプレーヤーインデックスと一致する、(探索位置における)元のマップにおけるプレーヤーインデックスを備えた最も近い画素が見つかる。押し出し画素ケースにおいては、(ソース画素又は領域における)元のマップにおけるプレーヤーインデックスと一致する、(探索位置における)成長したマップにおけるプレーヤーインデックスを備えた最も近い画素が見つかる。
【0084】
[0097]しかし、強引な探索は非常に計算コストがかかり(expensive)得るし、最適化は計算上のコストを低減するために使用することができる。この点をより効率的に見つけるための1つの限定的でない例示的な最適化は、上述の高さマップの勾配又はその不鮮明なバージョンに従うこと、及び勾配の方向に画素をまっすぐに単に調べることである。この高さマップでは、プレーヤーインデックスは元の及び成長したプレーヤーインデックスマップの両方において同じである場合、高さ値は低く、(両方のマップ中の)プレーヤーインデックスが0である場合、高さ値は高い。勾配は、所与の画素において、ベクトルとして定義することができ、この高さマップにおける「下り坂」を指す。その後、上述のように、引き込み画素及び押し出し画素の両方は、それらがそれぞれの停止条件に達するまで、この勾配(下り坂)に沿って探索することができる。この探索動作のための他の基本的な最適化は、画素をスキップすること、半分の間隔を使用すること、又は傾斜に基づいた(slope-based)手法を使用すること;探索が進行するとともに間隔をおいて勾配をリサンプリングすること;及び、停止基準が一旦満たされると、(直接的には勾配に沿わずに)よりよい/より近い一致を近くでチェックすることを含む。
【0085】
[0098]関心のあるシルエット上の最も近い点を見つけるためにたとえどんな技術が使用されても、移動された距離(ソース画素とシルエット画素との間の距離)、Dlは、モデルを押すか又は引く力ベクトルの大きさ(長さ)、D2を計算するために使用され得る。幾つかの実施例において、D2は、線形に又は非線形に、Dlに関連してもよい(例えば、D2=2×D1又はD2=D12)。1つの限定的でない例として、次の式を使用することができる:D2=(Dl−0.5画素)×2。例えば、2つの奥行き画像中のシルエット間に5画素のギャップがある場合、このギャップ中の各画素は小さな「探索」を行って力ベクトルを生成してもよい。現実のシルエットの近くの画素はシルエットに達するためにわずか1画素だけ探索してもよく、したがって、それらの画素における力の大きさは(1―0.5)×2=1である。現実のシルエットから遠い画素は、5つの画素だけ探索してもよく、したがって、力の大きさは(5―0.5)×2=9である。一般に、現実のシルエットに最も近い画素から最も遠い画素へ行くと、探索距離はDl={1、2、3、4、5}であり、生成される力の大きさはD2={1、3、5、7、9}である。この場合のD2の平均は、望まれるように、5であり―結果として生じる力ベクトルの平均の大きさは(各力受信位置の近くの)シルエットの間の距離と等しく、それは、モデルを適切な場所に入れるためにモデルを移動させることができる距離である。
【0086】
[0099]その後、最終的な力ベクトルは、各ソース画素について、方向及び大きさ(すなわち、長さ)をもって構築されてもよい。引き込み画素については、方向はシルエット画素からソース画素までのベクトルによって決定される;押し出し画素については、それは反対のベクトルである。この力ベクトルの長さはD2である。その結果、各画素において、力は、最も適格な(例えば、最も近い)力受信位置に加えられてもよい(又は幾つかの間で分散されてもよい)し、これらの力は、人体モデルの適切な局所的な動作を生成するために、各力受信位置において平均化することができる。
【0087】
[00100]図7の132及び134に示されるように、画素ケースの決定は自分で塞ぐ押し出し画素及び/又は引き出し画素ケースを選択することを含む。前述の押し出し画素及び引き込み画素ケースにおいては、背景又は別の目標に対する前景の中で体の一部が移動していてもよいが、自分で塞ぐ押し出し画素及び引き込み画素ケースは、体の一部が同じ目標の別の体の一部の前にある(例えば、別の脚の前の1つの脚、トルソーの前の腕など)シナリオを考慮する。画素の(スナップ)プレーヤーインデックスがその対応する(成長)プレーヤーインデックスと一致するが、(スナップ)体の一部のインデックスがその対応する(成長)体の一部のインデックスと一致しない場合、これらのケースは識別されてもよい。そのような場合、(シルエットを見つけるための)探索方向は幾つかの方法で導出されてもよい。限定的でない例として、強引(強力)な2D探索が行われてもよい;勾配が1D探索をガイドすることができるように「閉塞(occlusion)」高さマップの第2の組がこの場合に適合してもよい;又は、方向は、最も近い骨格部材上の最も近い点に向かって設定されてもよい。そうでなければ、これらの2つのケースの詳細は、標準的な押し出し及び引き込みケースに類似する。
【0088】
[00101]合成された画素の(成長)体パーティインデックスが磁気力を受け取るために設計されていない体の一部に対応する場合、押し出し画素ケース、引き込み画素ケース、自分で塞ぐ押し出し画素ケース及び/又は自分で塞ぐ引き込み画素ケースは、当該合成された画素に対して選択されてもよい。
【0089】
[00102]幾つかのシナリオでは、単一の画素が1つ以上の画素ケースに関与してもよいことが理解されるべきである。限定的でない例として、画素は、自分で塞ぐ押し出し画素力及び改良−z画素力の両方に関与してもよく、自分で塞ぐ押し出し画素の力は塞いでいる体の一部上の力受信位置に印加され、改良−z画素の力は塞がれている体の一部上の力受信位置に印加される。
【0090】
[00103]図7の136に示されるように、画素ケースの決定は合成された画素に対して画素ケースを選択しないことを含んでもよい。しばしば、力ベクトルは、合成された奥行き画像のすべての合成された画素に対して計算される必要はない。例えば、合成された奥行き画像中に示される人体モデルから遠ざかっている合成された画素、及び観察された奥行き画像中に示される目標から遠ざかっている観察された画素(すなわち、背景画素)は、いかなる力受信位置又は体の一部にも影響を及ぼさなくてもよい。幾つかのシナリオにおいては必要となる場合があるが、そのような画素について画素ケースを決定する必要はない。別の例として、観察された奥行き値とその合成された画素の合成された奥行き値との差は、所定のしきい値より小さいこともあり得る(例えば、モデルが観察された画像と既に一致する)。そのため、幾つかのシナリオにおいては必要である場合があるが、そのような画素について画素ケースを決定する必要はない。
【0091】
[00104]以下に与えられる表は、上述の画素ケースと図5の骨格モデル82に示された関節との間の例示的な関係を詳述する。画素ケース1−7は、テーブル中で以下のように略記される:1−引き込み(正常)、2−引き込み(閉塞)、3−押し出し(正常)、4−押し出し(閉塞)、5−改良−Z、6−磁性の引き出し、及び7−閉塞(動作なし)。「力を受けるか?」の列における「Yes(はい)」の入力は、その行の関節が力ベクトルから力を受け取り得ることを示す。画素ケース列の「X」の入力は、その行の関節がその列の画素ケースに対応する力ベクトルから力を受け取り得ることを示す。次のテーブルは例として提供されるものであることが理解されるべきである。限定的であると考えるべきではない。モデルと画素ケースとの間の他の関係は本開示の範囲から逸脱することなく確立され得る。
【0092】
【表1−1】
【0093】
【表1−2】
【0094】
[00105]140において、図7の方法100は、画素ケースが決定された各合成された画素について、その合成された画素について選択された画素ケースに基づいて力ベクトルを計算することを含む。上述のように、各画素ケースは、力ベクトルの大きさ、方向及び/又は力受信位置を選択するための異なるアルゴリズム及び/又は方法論に対応する。力ベクトルは、世界空間(world space)、画面空間(前Z分割(pre-Z-divide))、投影空間(後Z分割(post-Z-divide))、モデル空間などの、任意の座標空間において計算され及び/又は蓄積されてもよい。
【0095】
[00106]142において、方法100は、モデルの1つ以上の力受信位置へ各計算された力ベクトルをマッピングすることを含む。マッピングは、「最も良く一致する」力受信位置へ計算された力ベクトルをマッピングすることを含んでもよい。モデルについての最も一致する力受信位置の選択は、対応する画素について選択された画素ケースに依存する。例えば、最も一致する力受信位置は、最も近い関節、交点(頂点)又は重心であってもよい。幾つかの実施例において、モーメント(すなわち、回転力)がモデルに印加されてもよい。
【0096】
[00107]一般に、変換はモデルの力受信位置に作用する同様の方向を備えた力に起因してもよく、回転はモデルの力受信位置に作用する異なる方向の力に起因してもよい。変形可能な物については、力ベクトルのコンポーネントのうちの幾つかは、その変形範囲内でモデルを変形するために使用され得るし、力ベクトルの残りのコンポーネントはモデルを変換し及び/又は回転させるために使用され得る。
【0097】
[00108]幾つかの実施例において、力ベクトルは、最も一致する固定の又は変形可能な物、サブオブジェクト及び/又はオブジェクトの多角形の組にマッピングされてもよい。したがって、力ベクトルのうちの幾つかはモデルを変形するために使用されてもよく、力ベクトルの残りのコンポーネントはモデルの固定の移動(translation)を行うために使用されてもよい。そのような技術は「壊れた(broken)」モデル(例えば、本体から腕が切り離され得る)に帰着してもよい。より詳細に以下に議論されるように、その後、調整(rectification)ステップは、移動を回転に変換し及び/又は低エネルギーのパスに沿って体の一部を元通りに接続するために制約を適用するために使用され得る。
【0098】
[00109]図11A及び11Bは、示された例、骨格モデル180において、モデルに力ベクトルを加える、非常に単純化された例を示す。単純化のために、2つの力ベクトルだけがこの示された例において示される。そのような力ベクトルはそれぞれ、画素ケースの決定及び2つ以上の異なる画素の力ベクトルの計算の結果に起因する2つ以上の異なる力ベクトルの合計の結果であってもよい。しばしば、モデルは多くの異なる力ベクトルによって調節され、その各々は、画素ケースの決定及び多くの異なる画素の力ベクトルの計算に起因する多くの異なる力ベクトルの合計である。
【0099】
[00110]図11Aは骨格モデル180を示し、観察された奥行き画像とより密接に一致するように骨格モデル180の1つの腕を真っすぐにする目的で、力ベクトル182は関節j18(すなわち、肘)に加えられることになっており、力ベクトル184は関節j20(すなわち、手首)に加えられることになっている。図11Bは力が加えられた後の骨格モデル180を示す。図11Bは、加えられた力がどのようにモデルの姿勢を調節するかを示す。図11Bに示されるように、骨格部材の長さが維持(保存)されてもよい。さらに示されるように、関節j2の位置は、腕を真っすぐにする人間の場合について予想されるように、骨格モデルの肩に残る。換言すれば、力が加えられた後、骨格モデルは損傷を受けない(完全な)ままである。力を加える場合に骨格モデルの完全性を維持することは、より詳細に後に議論されるように、適用される1つ以上の制約に起因する。様々な異なる制約は異なる可能なモデルタイプの完全性を維持するために強化する(enforce)ことができる。
【0100】
[00111]144において、図7の方法100は、1つ以上の制約を満たす姿勢へとモデルを修正することを任意に含む。上述のように、モデルの力受信位置に対して計算された力ベクトルを収集してマッピングした後、計算された力ベクトルは、その後、モデルに加えられてもよい。制約なしで実行される場合、これは、モデルを「壊し」て、体の一部を、目標の実際の体についての無効な構成へと、不釣り合いに伸ばし及び/又は移動させる。その後、様々な機能の繰り返しが、「近くの」適法な構成へと新たなモデル位置を「緩和する」ために使用され得る。モデルを修正する各反復中、姿勢の組を1つ以上の目標の1つ以上の実際の体によって物理的に表現できるものに制限するために、制約が姿勢に対してなだらかに及び/又は徐々に適用されてもよい。他の実施例において、そのような修正するステップは、反復しない方法で行われてもよい。
【0101】
[00112]幾つかの実施例において、制約は、後に記載されるように、次のものの1つ以上を含んでもよい:骨格部材の長さの制約、関節の角度の制約、多角形エッジの角度の制約及び衝突テスト。
【0102】
[00113]骨格モデルが使用される例として、骨格部材(すなわち、骨)の長さの制約を適用することができる。検出することができる力ベクトル(すなわち、関節及び/又は体の一部が目に見えていて塞がれていない位置における力ベクトル)は、骨格モデルの骨格部材のネットワークに沿って伝播されてもよい。骨格部材の長さの制約を適用することによって、一旦すべての骨格部材が許容可能な長さとなったならば、伝播された力は「落ち着く(settle in)」。幾つかの実施例において、骨格部材の長さの1つ以上は所定範囲内で可変となることが可能である。例えば、トルソーの側面を構成する骨格部材の長さは、変形可能な中間部をシミュレートするために可変であってもよい。別の例として、上腕を構成する骨格部材の長さは、複雑な肩ソケット(shoulder socket)をシミュレートするために可変であってもよい。
【0103】
[00114]骨格モデルは、目標に基づいて各骨格部材の長さを計算することにより、さらに又は代替的に、抑制されてもよく、その結果、これらの長さは調整中に制約として使用され得る。例えば、所望の骨の長さは人体モデルから知られ;現在の骨の長さ(すなわち、新たな関節の位置の間の距離)と所望の骨の長さとの間の差を推定することができる。モデルは所望の長さと現在の長さとの間のいかなる誤りも低減させるように調節することができる。より重要であると見なされるある関節及び/又は骨のほか、他のものより現在より可視である関節又は体の一部に対して、優先順位が与えられてもよい。さらに、大きさの高い変化が大きさの低い変化よりも優先順位を与えられてもよい。
【0104】
[00115]骨の長さの制約のより正確な適用を可能にするために、関節の可視性及び/又は確かさは、X、Y及びZ次元において別々に追跡されてもよい。例えば、骨が左肩に対して胸を接続し、胸の関節のZ位置が高い信頼性を有し(すなわち、多くの改良−z画素が当該関節に対応する)及び肩のY位置が高い信頼性を有する(多くの押し出し/引き込み画素が当該関節に対応する)場合、骨の長さにおけるいかなる誤りも、Y方向の肩の動き又はZ方向の胸の動きを部分的に又は完全に制限しながら修正することができる。
【0105】
[00116]幾つかの実施例において、調整前の関節位置は調整後の関節位置と比較されてもよい。一貫した調節の組がすべてのフレームにおいて骨格モデルに対してなされていると決定される場合、方法100は、骨格モデル及び/又は人体モデルの「向上した改良(progressive refinement)」を行うためにこの情報を使用してもよい。例えば、調整の前後に関節位置を比較することによって、各フレームにおいて肩が調整中により大きく押し開かれていると決定され得る。そのような一貫した調節は、骨格モデルの肩が表現されている目標より小さく、従って、肩幅が、これについて修正するために、調整中に各フレームで調節されていることを示唆する。そのような場合、骨格モデルの肩幅を増加させるような向上した改良が、目標によりよく一致するよう骨格モデル及び/又は人体モデルを修正するためになされてもよい。
【0106】
[00117]関節の角度の制約については、あるリム及び体の一部は、隣接した体の一部に対する動きについてのその範囲に制限されてもよい。さらに、この動きの範囲は隣接した体の一部の方向に基づいて変化してもよい。したがって、関節の角度の制約を適用することは、リムセグメントが、親リム及び/又は体の一部の方向を前提として、可能な構成に制約されることを可能にしてもよい。例えば、下肢は、前方ではなく後方に(膝において)曲がるように構成することができる。不正な角度が検出される場合、問題となっている体の一部及び/又はそれらの親(又は、メッシュモデルの場合、問題となっている三角形及びそれらの隣接のもの)は、所定の可能性の範囲内に姿勢を維持するために調節され、したがって、許容できないと見なされる姿勢へとモデルが崩壊する場合を回避する助けとなる。極端な角度の違反のある場合には、姿勢は逆であると認識されてもよい、すなわち、胸として追跡されるものが実際にはプレーヤーの背中であり;左手が実際には右手である;などと認識されてもよい。そのような不可能な角度がはっきり目に見える(及び十分にひどい)場合、これは、姿勢がプレーヤーの体に対して逆にマッピングされたことを意味すると解釈することができ、姿勢は正確に目標をモデル化するために反転させることができる。
【0107】
[00118]衝突テストはモデルがそれ自体に浸透するのを防ぐために適用されてもよい。例えば、衝突テストは、前腕/手の任意の部分がトルソーに浸透するのを防いだり、又は前腕/手が互いに浸透するのを防いだりしてもよい。他の例において、衝突テストは、脚が他方の脚に浸透するのを防いてもよい。幾つかの実施例において、同様のシナリオがモデル間で生じるのを防ぐために、衝突テストは2人以上のプレーヤーのモデルに適用されてもよい。幾つかの実施例において、衝突テストは人体モデル及び/又は骨格モデルに適用されてもよい。幾つかの実施例において、衝突テストはメッシュモデルのある多角形に適用されてもよい。
【0108】
[00119]衝突テストは任意の適切な方法で適用されてもよい。1つの手法は1つの「容積(volumetric)ラインセグメントと別のものとの衝突を調べ、ここで容積ラインセグメントは3Dの中で外に伸びる半径を備えたラインセグメントであってもよい。そのような衝突テストの一例は前腕対別の前腕を調べることであってもよい。幾つかの実施例において、容積ラインセグメントはセグメントの各端部において異なる半径を有していてもよい。
【0109】
[00120]別の手法は、容積ラインセグメント対ポーズをつけられた多角形の物の衝突を調べる。そのような衝突テストの一例は、前腕対トルソーを調べることであってもよい。幾つかの実施例において、ポーズをつけられた多角形の物は変形された多角形の物であってもよい。
【0110】
[00121]幾つかの実施例において、目標の異なる部分が時間フレーム(例えば、1秒のうちの1/30番目又は1/60番目)において制限された距離を移動することができるという知識は、制約として使用することができる。そのような制約は、モデルの画素受信位置への力の印加に起因するある姿勢を除外するために使用され得る。
【0111】
[00122]145に示されるように、モデルが調節され任意に制約された後、処理は、新たな合成された奥行き画像へのモデルの新たなラスタライズを始めるために元に戻ることができ、当該新たな合成された奥行き画像は、モデルに対してさらなる調節を行うことができるように、その後、観察された奥行き画像と比較されてもよい。このように、モデルはモデル化された目標をより密接に表すために次第に調節することができる。実質的に任意の数の反復がフレームごとに達成されてもよい。より多くの反復はより正確な結果を達成し得るが、より多くの反復はまたより多くの計算オーバーヘッドを要求し得る。フレーム当たり2つ又は3つの反復が多くのシナリオにおいて適切であると考えられるが、幾つかの実施例においては1つの反復で十分であるかもしれない。
【0112】
[00123]146において、図7の方法100は、図11Bに示される変化などのモデルに対する変化に応答してスクリーン上のキャラクター(例えば、図12Aのプレーヤーのアバター190)の視覚的な外観を変更することを任意に含む。例えば、ゲーム機(例えば、図1A及び1Bのゲームシステム12)でコンピューターゲームをするユーザーは、本明細書において記載されるようなゲーム機によって追跡されてもよい。特に、骨格モデル(例えば、図11Aの骨格モデル180)を含む人体モデル(例えば、図3の人体モデル70)は、目標のゲームプレーヤーをモデル化するために使用されてもよく、人体モデルはスクリーン上のプレーヤーのアバターをレンダリングするために使用されてもよい。ゲームプレーヤーが1つの腕を真っすぐにすると、ゲーム機は、この動きを追跡し、次に追跡された動きに応じて、図11Bに描かれるようにモデル180を調節する。上述のように、ゲーム機はまた、1つ以上の制約を適用してもよい。そのような調節を行い、そのような制約を適用する際、図12Bに示されるように、ゲーム機は調整されたプレーヤーのアバター192を表示してもよい。これもまた図1Aの例として示され、ここで、プレーヤーのアバター24は、現実空間でパンチを繰り出すゲームプレーヤー18に応答して、ボクシングの対戦相手22をパンチするように示される。
【0113】
[00124]上述のように、視覚的な目標認識は、スクリーン上のキャラクター又はアバターの視覚的な外観の変更以外の目的のために行うことができる。そのため、すべての実施例においてスクリーン上のキャラクター又はアバターの視覚的な外観を変更する必要はない。上述のように、目標追跡は実質的に制限のない異なる目的に使用することができ、それらの多くはスクリーン上のキャラクターを変化させることに帰着しない。目標追跡及び/又はモデルの姿勢は、調節されると、ゲームなどのアプリケーションの任意の要素に実質的に影響するようにパラメーターとして使用することができる。
【0114】
[00125]147に示されるように、上述の処理は、後のフレームに対して繰り返すことができる。
[00126]本明細書において記載される構成及び/又は手法が本来例示的なものであり、多数の変更が可能であるので、これらの特定の実施例又は例が限定的な意味で考慮されるべきでないことが理解されるべきである。本明細書において記載された特定のルーチン又は方法は、任意の数の処理戦略のうちの1つ以上を表してもよい。そのため、示された様々な動作は、示されたシーケンスで、他のシーケンスで、並列に、又は省略された幾つかの場合において、行われてもよい。同様に、上述の処理の順序は変更されてもよい。
【0115】
[00127]本開示の主題は、本明細書に開示された様々な処理、システム及び構成、並びに他の特徴、機能、動作、及び/又は特性のほか、それらの任意の又はすべての均等物のすべての新規な自明でない組み合わせ及びサブコンビネーションを含む。
【技術分野】
【0001】
本発明は、視覚的目標追跡に関する。
【背景技術】
【0002】
[0001]多くのコンピューターゲーム及び他のコンピュータービジョンアプリケーションは、ユーザーがゲームキャラクター又はアプリケーションの他の側面を操作することを可能にするために複雑な制御を利用する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
そのような制御は学習するのが難しく、このため、多くのゲーム又は他のアプリケーションに対する障壁となり得る。さらに、そのような制御は、それらが使用される実際のゲームの動作又は他のアプリケーションの動作とは非常に異なっていることがある。例えば、ゲームキャラクターに野球のバットをスイングさせるゲームコントロールは野球のバットをスイングする実際の動きに全く似ていないことがある。
【課題を解決するための手段】
【0004】
[0002]この概要は詳細な説明においてさらに以下に記載される概念のうちの選択されたものを単純化された形式で紹介するために提供される。この概要は、特許請求された主題の重要な特徴又は不可欠な特徴を識別するようには意図されず、特許請求された主題の範囲を限定するために使用されるようにも意図されない。さらに、特許請求された主題は、本開示の任意の部分において指摘される任意の又はすべての不利益を解決する実施に限定されない。
【0005】
[0003]視覚的な目標追跡に関連する様々な実施例が本明細書において説明される。開示される1つの実施例は、ソースから目標についての観察された奥行き画像を受け取って当該目標のポーズをとらせたモデルを得ることによって、目標を追跡することを含む。ポーズをとらせたモデルは、合成された奥行き画像へとラスタライズされる。その後、モデルの姿勢は、観察された奥行き画像と合成された奥行き画像の間との差に少なくとも部分的に基づいて調節される。
【図面の簡単な説明】
【0006】
【図1A】[0004]ボクシングゲームをするゲームプレーヤーを追跡する例示的な目標認識、分析、及び追跡システムの実施例を示す。
【図1B】[0005]追跡され、プレーヤーのアバターにゲーム空間でパンチを繰り出させるゲームコントロールとして解釈されるパンチを繰り出す図1Aのゲームプレーヤーを示す。
【図2】[0006]本開示の実施例によるコンピューティングシステムを概略的に示す。
【図3】[0007]人間の目標を表すのに使用される例示的な人体モデルを示す。
【図4】[0008]人間の目標を表すのに使用される例示的な骨格モデルの実質的に正面の図を示す。
【図5】[0009]人間の目標を表すのに使用される例示的な骨格モデルの斜めの図を示す。
【図6】[0010]人間の目標を表すのに使用される例示的なメッシュモデルを示す。
【図7】[0011]目標を視覚的に追跡する例示的な方法のフロー図を示す。
【図8】[0012]例示的な観察された奥行き画像を示す。
【図9】[0013]例示的な合成された奥行き画像を示す。
【図10】[0014]合成された奥行き画像を構成する画素のうちの幾つかを概略的に示す。
【図11A】[0015]モデルの力受信位置に対して加えられる力を概略的に示す。
【図11B】[0016]図11Aのモデルの力受信位置に力を加えた結果を概略的に示す。
【図12A】[0017]図11Aのモデルからレンダリングされるプレーヤーのアバターを示す。
【図12B】[0018]図11Bのモデルからレンダリングされるプレーヤーのアバターを示す。
【発明を実施するための形態】
【0007】
[0019]本開示は、目標認識、分析及び追跡に関する。特に、1つ以上の目標についての奥行き(depth)情報を得るための奥行きカメラ又は他のソースの使用が開示される。その後、以下に詳細に記載されるように、そのような奥行き情報は、効率的に且つ正確に1つ以上の目標をモデル化し追跡するために使用され得る。目標が他の手法を使用して分析することが困難であると考えられる姿勢へと動く場合(例えば、2つ以上の目標が部分的に互いに重なり及び/又は互いに塞ぐ場合;目標の一部が同じ目標の別の一部を自分で塞ぐ場合、目標がその局所的な外観(例えば、彼又は彼女の頭に触れる人間)を変更する場合など)でさえ、本明細書において記載される目標認識、分析、及び追跡は、1つ以上の目標を比較的速いフレームレートで一貫して追跡することができるロバストなプラットフォームを提供する。
【0008】
[0020]図1Aは、目標認識、分析及び追跡システム10の限定的でない例を示す。特に、図1Aは、様々な異なるゲームをし、1つ以上の異なる媒体(メディア)タイプをプレーし、及び/又はゲームではないアプリケーションを制御もしくは操作するために使用され得るコンピューターゲームシステム12を示す。図1Aはまた、ゲームプレーヤー18などのゲームプレーヤーに対してゲーム映像を提示するために使用され得る高解像度テレビの形式のディスプレイ14、又はHDTV16、を示す。さらに、図1Aは、ゲームプレーヤー18などの1人以上のゲームプレーヤーを視覚的に監視するために使用され得る、奥行きカメラ20の形式の取込み(キャプチャー)装置を示す。図1Aに示される例は限定的なものではない。図2に関して下記に述べられるように、様々な異なる種類の目標認識、分析及び追跡システムは本開示の範囲から逸脱することなく使用することができる。
【0009】
[0021]目標認識、分析及び追跡システムは、ゲームプレーヤー18などの1つ以上の目標を認識し、分析し及び/又は追跡するために使用され得る。図1Aは、ゲームプレーヤー18が、ゲームプレーヤー18の動作がゲームシステム12によって実行されるゲームに影響を及ぼすのに使用することができる制御としてゲームシステム12によって解釈され得るように、奥行きカメラ20を使用して追跡されるシナリオを示す。換言すれば、ゲームプレーヤー18は、ゲームを制御するために自分の動きを使用してもよい。ゲームプレーヤー18の動作は実質的に任意の種類のゲームコントロールとして解釈されてもよい。
【0010】
[0022]図1Aに示された例示的なシナリオは、ゲームシステム12によって実行されるボクシングゲームをするゲームプレーヤー18を示す。ゲームシステムは、ゲームプレーヤー18に対してボクシングの対戦相手22を視覚的に提示するためにHDTV16を使用する。さらに、ゲームシステムは、ゲームプレーヤー18が自分の動作によって制御するプレーヤーのアバター24を視覚的に提示するためにHDTV16を使用する。図1Bに示されるように、ゲームプレーヤー18は、プレーヤーのアバター24がゲーム空間でパンチを繰り出すための命令として、物理的空間においてパンチを繰り出すことができる。ゲームシステム12及び奥行きカメラ20は、プレーヤーのアバター24にゲーム空間でパンチを繰り出させるゲームコントロールとしてパンチを解釈することができるように、物理的空間におけるゲームプレーヤー18のパンチを認識し分析するために使用することができる。例えば、図1Bは、物理的空間においてパンチを繰り出すゲームプレーヤー18に応答してボクシングの対戦相手22を打つパンチを繰り出すプレーヤーのアバター24を視覚的に提示するHDTV16を示す。
【0011】
[0023]ゲームプレーヤー18による他の動作は、軽く叩き、擦り抜け、すり足で動き、ブロックし、ジャブで突き、又は様々な異なるパワーのパンチを繰り出すための制御などの他の制御として解釈されてもよい。さらに、幾つかの動作は、プレーヤーのアバター24の制御以外の目的に役立つ制御へと解釈されてもよい。例えば、プレーヤーは、ゲームを終了し、中止し又はセーブし、レベルを選択し、ハイスコアを見て、友達と通信したりするための動きを使用してもよい。
【0012】
[0024]幾つかの実施例において、目標は人間及び物を含んでもよい。そのような実施例において、例えば、コンピューターゲームのプレーヤーは物を保持していてもよく、その結果、プレーヤー及び物の動きはコンピューターゲームのパラメーターを調節及び/又は制御するのに利用される。例えば、ラケットを保持するプレーヤーの動きは、電子スポーツゲームでのスクリーン上のラケットの制御のために追跡され利用されてもよい。別の例において、物を保持するプレーヤーの動きは、電子戦闘ゲームでのスクリーン上の武器の制御のために追跡され利用されてもよい。
【0013】
[0025]目標認識、分析及び追跡システムは、ゲームの世界の外にあるオペレーティングシステム及び/又はアプリケーション制御として目標の動作を解釈するために使用され得る。オペレーティングシステム及び/又は図1A及び1Bに示されるボクシングゲームなどのアプリケーションの実質的に任意の制御可能な態様は、ゲームプレーヤー18などの目標の動作によって制御されてもよい。示されたボクシングのシナリオは、例として提供されるが、いかなるようにも限定的なものであるようには意図されていない。対照的に、示されたシナリオは、一般的な概念を示すように意図され、それは本開示の範囲から逸脱することなく、様々な異なるアプリケーションに適用されてもよい。
【0014】
[0026]本明細書において記載された方法及び処理は、様々な異なる種類のコンピューティングシステムに関係してもよい。図1A及び1Bは、限定的でない例をゲームシステム12、HDTV16及び奥行きカメラ20の形で示す。別のより一般的な例として、図2は、本明細書において記載された目標認識、追跡及び分析方法並びに処理の1つ以上を実行し得るコンピューティングシステム40を概略的に示す。コンピューティングシステム40は、とりわけ、ゲーム機、パーソナルコンピューティングゲームシステム、軍事追跡及び/又は標的システム、並びに緑スクリーン(green screen)又はモーションキャプチャー機能を提供する特徴取得(character acquisition)システムを含むがこれらに限定されない、様々な異なる形式をとってもよい。
【0015】
[0027]コンピューティングシステム40は、論理サブシステム42、データ保持サブシステム44、表示サブシステム46及び/又は取込み(キャプチャー)装置48を含んでもよい。コンピューティングシステムは、任意に、図2に示されないコンポーネントを含んでもよく、及び/又は図2に示される幾つかのコンポーネントはコンピューティングシステムへ統合されない周辺コンポーネントであってもよい。
【0016】
[0028]論理サブシステム42は、1つ以上の命令を実行するように構成された1つ以上の物理的装置を含んでもよい。例えば、論理サブシステムは、1つ以上のプログラム、ルーチン、オブジェクト、コンポーネント、データ構造又は他の論理的な構成の一部である1つ以上の命令を実行するように構成されてもよい。そのような命令は、タスクを実行し、データ型を実施し、1つ以上の装置の状態を変換し、又はそうでなければ所望の結果に達するために実施されてもよい。論理サブシステムは、ソフトウェア命令を実行するように構成される1つ以上のプロセッサーを含んでもよい。さらに又は代替的に、論理サブシステムは、ハードウェア又はファームウェア命令を実行するように構成された1つ以上のハードウェア又はファームウェア論理機械(logic machines)を含んでもよい。論理サブシステムは、任意に、幾つかの実施例においては遠隔に配置され得る2つ以上の装置にわたって分散される個々のコンポーネントを含んでもよい。
【0017】
[0029]データ保持サブシステム44は、本明細書において記載される方法及び処理を実施するために論理サブシステムによって実行可能なデータ及び/又は命令を保持するように構成された1つ以上の物理的装置を含んでもよい。そのような方法及び処理が実施される場合、データ保持サブシステム44の状態は(例えば、異なるデータを保持するように)変換されてもよい。データ保持サブシステム44は、取り外し可能な媒体及び/又は内蔵型の装置を含んでもよい。データ保持サブシステム44は、とりわけ、光メモリー装置、半導体記憶装置(例えば、RAM、EEPROM、フラッシュなど)及び/又は磁気メモリー装置を含んでもよい。データ保持サブシステム44は、次の特性の1つ以上を備えた装置を含んでもよい:揮発性、不揮発性、動的、静的、読み取り/書き込み、読み出し専用、ランダムアクセス、シーケンシャルアクセス、アドレス可能な位置、アドレス可能なファイル、及びアドレス可能なコンテンツ。幾つかの実施例において、論理サブシステム42及びデータ保持サブシステム44は、チップ上の特定用途向け集積回路又はシステムなどの1つ以上の共通の装置へ統合されてもよい。
【0018】
[0030]図2はまた、データ保持サブシステムの態様をコンピューター読み取り可能な取り外し可能な媒体50の形で示し、それは、本明細書において記載される方法及び処理を実施するために実行可能なデータ及び/又は命令を格納及び/又は転送するために使用され得る。
【0019】
[0031]表示サブシステム46はデータ保持サブシステム44によって保持されたデータの視覚的な表現を提示するために使用され得る。本明細書に記載される方法及び処理はデータ保持サブシステムによって保持されたデータを変更し、従ってデータ保持サブシステムの状態を変換するので、表示サブシステム46の状態は基本的なデータの変化を視覚的に表すために同様に変換されてもよい。限定的でない例として、本明細書において記載される目標認識、追跡及び分析は、物理的空間中のゲームプレーヤーの動作に応答してゲーム空間における姿勢を変更するゲームキャラクターの形式で表示サブシステム46を介して反映されてもよい。表示サブシステム46は、実質的に任意の種類の技術を利用する1つ以上のディスプレイ装置を含んでもよい。そのようなディスプレイ装置は、論理サブシステム42及び/又はデータ保持サブシステム44とともに、共有の筐体内に組み合わされてもよく、又は、図1A及び1Bに示されるように、そのようなディスプレイ装置は周辺ディスプレイ装置であってもよい。
【0020】
[0032]コンピューティングシステム40は、1つ以上の目標の奥行き画像(depth images)を得るように構成された取込み装置48をさらに含む。取込み装置48は、任意の適切な技術(例えば、飛行時間、構造化された光、立体画像など)を介して奥行き情報を備えた動画を取り込むように構成されてもよい。そのため、取込み装置48は、奥行きカメラ、ビデオカメラ、ステレオカメラ及び/又は他の適切な取込み装置を含んでもよい。
【0021】
[0033]例えば、飛行時間の分析において、取込み装置48は、目標へ赤外光を放射し、次に、目標の表面からの後方散乱された光を検出するためにセンサーを使用してもよい。ある場合には、パルス赤外光が使用されてもよく、出ていく光パルスと対応する入ってくる光パルスとの間の時間が測定され、取込み装置から目標における特定の位置までの物理的な距離を決定するために使用され得る。ある場合には、出ていく光波の位相が、位相シフトを決定するために、入ってくる光波の位相と比較されてもよく、位相シフトは取込み装置から目標における特定の位置までの物理的な距離を決定するために使用され得る。
【0022】
[0034]別の例において、飛行時間の分析は、シャッターされた(shuttered)光パルスイメージングなどの技術によって、時間にわたって反射された光ビームの強度を分析することにより、取込み装置から目標における特定の位置までの物理的な距離を間接的に決定するために使用され得る。
【0023】
[0035]別の例において、構造化された光分析は、奥行き情報を取得するために取込み装置48によって利用されてもよい。そのような分析では、パターン化された(patterned)光(すなわち、グリッドパターン又はストライプパターンなどの既知のパターンとして表示された光)が、目標上に投影されてもよい。目標の表面に当たると、パターンは、応答して変形されてもよく、パターンのこの変形は、取込み装置から目標における特定の位置までの物理的な距離を決定するために考慮されてもよい。
【0024】
[0036]別の例において、取込み装置は、視覚的なステレオデータを得るために、異なる角度から目標を見る2つ以上の物理的に分離されたカメラを含んでもよい。そのような場合、視覚的なステレオデータは奥行き画像を生成するために解像(resolve)されてもよい。
【0025】
[0037]他の実施例において、取込み装置48は、奥行き値を測定及び/又は計算するために他の技術を利用してもよい。また、取込み装置48は、「Z層」、すなわち、そのライン・オブ・サイトに沿って奥行きカメラからビューアーに及ぶZ軸に対して垂直な層へと、計算された奥行き情報を組織化してもよい。
【0026】
[0038]幾つかの実施例において、2つ以上の異なるカメラが統合された取込み装置に組み込まれてもよい。例えば、奥行きカメラ及びビデオカメラ(例えば、RGBビデオカメラ)は、共通の取込み装置に組み込まれてもよい。幾つかの実施例において、2つ以上の別個の取込み装置が協調的に使用され得る。例えば、奥行きカメラ及び別個のビデオカメラが使用され得る。ビデオカメラが使用される場合、それは、目標追跡データ、目標追跡、画像捕捉、顔認識、指(又は他の小さな特徴)の高精度な追跡、光センシング及び/又は他の機能についての誤り訂正のための確認データを提供するために使用され得る。
【0027】
[0039]少なくともある目標分析及び追跡動作が1つ以上の取込み装置の論理機械によって実行され得ることが理解されるべきである。取込み装置は、1つ以上の目標分析及び/又は追跡機能を実行するように構成された1つ以上の搭載された演算処理装置を含んでもよい。取込み装置は、そのような搭載された処理論理回路を更新することを容易にするためにファームウェアを含んでもよい。
【0028】
[0040]コンピューティングシステム40は、任意に、制御装置52及び制御装置54などの1つ以上の入力装置を含んでもよい。入力装置はコンピューティングシステムの動作を制御するのに使用されてもよい。ゲームのコンテキストにおいては、制御装置52及び/又は制御装置54などの入力装置は、本明細書において記載された目標認識、追跡及び分析方法及び手続によって制御されない態様のゲームを制御するために使用することができる。幾つかの実施例において、制御装置52及び/又は制御装置54などの入力装置は、加速度計、ジャイロスコープ、赤外線目標/センサーシステムなどのうち1つ以上を含んでもよく、それは、物理的空間において制御装置の動きを測定するために使用され得る。幾つかの実施例において、コンピューティングシステムは、任意に、入力グローブ、キーボード、マウス、トラックパッド、トラックボール、タッチスクリーン、ボタン、スイッチ、ダイヤル、及び/又は他の入力装置を含んでいてもよく及び/又は利用してもよい。理解されるように、目標認識、追跡及び分析は、ゲームの制御装置などの入力装置によって従来制御されていた、ゲームの態様、又は他のアプリケーションを制御又は増大するために使用され得る。幾つかの実施例においては、本明細書において記載された目標追跡はユーザー入力の他の形式に対する完全な置換として使用することができる一方、他の実施例において、そのような目標追跡はユーザー入力の1つ以上の他の形式を補足するために使用することができる。
【0029】
[0041]コンピューティングシステム40は本明細書において記載された目標追跡方法を行うように構成されてもよい。しかし、そのような目標追跡を実行し得る装置の限定的でない例としてコンピューティングシステム40が提供されることが理解されるべきである。他の装置は本開示の範囲内にある。
【0030】
[0042]コンピューティングシステム40、又は別の適切な装置は、モデルによって各目標を表すように構成されてもよい。より詳細に以下に記載されるように、そのようなモデルから導出される情報は、奥行きカメラなどの取込み装置から得られた情報と比較することができ、その結果、モデルの基本的な比率(proportion)又は形状のほか、その現在の姿勢を、モデル化された目標をより正確に表すために調節することができる。モデルは、1つ以上の多角形のメッシュによって、1組の数学的な原始関数(mathematical primitives)によって、及び/又はモデル化された目標についての他の適切な機械表現によって表されてもよい。
【0031】
[0043]図3は、例示的な人体モデル(body model)70の限定的でない視覚的な表現を示す。人体モデル70は、モデル化された目標(例えば、図1A及び1Bからのゲームプレーヤー18)の機械表現である。人体モデルは、ゲーム又は他のアプリケーション/オペレーティングシステムの言語でモデル化された目標を集合的に定義する1組の変数を含む、1つ以上のデータ構造を含んでもよい。
【0032】
[0044]目標のモデルは本開示の範囲から逸脱することなく様々に構成することができる。幾つかの例において、モデルは、固定した及び/又は変形可能な形状、もしくは体の一部(body parts)を含む3次元モデルとして目標を表す、1つ以上のデータ構造を含んでもよい。各々の体の一部(body part)は数学的な原始関数として見なされてもよく、その例は、球体、異方的に拡大縮小された(anisotropically-scaled)球体、円筒、異方性の円筒、滑らかな円筒、箱、面取りされた(beveled)箱、プリズムなどを含むがこれらに限定されない。
【0033】
[0045]例えば、図3の人体モデル70は体の一部bpl−bpl4を含み、その各々は、モデル化された目標の異なる一部を表す。各々の体の一部は3次元の形状である。例えば、bp3はモデル化された目標の左手を表す直角プリズムであり、bp5はモデル化された目標の左上腕を表す八角形のプリズムである。人体モデル70は、人体モデルが任意の数の体の一部を含んでもよいという点で例示的なものであり、体の一部の各々は、モデル化された目標の対応する部分についての任意の機械が理解できる表現であってもよい。
【0034】
[0046]2つ以上の体の一部を含むモデルはまた、1つ以上の関節(接合部、ジョイント、joints)を含んでもよい。各関節は、1つ以上の体の一部が1つ以上の他の体の一部に対して移動することを可能にしてもよい。例えば、人間の目標(human target)を表すモデルは複数の固定の及び/又は変形可能な体の部分を含んでもよく、幾つかの体の一部は、人間の目標の対応する解剖学的な体の一部を表してもよい。さらに、モデルの各々の体の一部は、隣接した骨の交点に位置する関節とともに、1つ以上の構造部材(structural members)(すなわち、「骨」)を含んでもよい。幾つかの骨が人間の目標における身体構造上の(解剖学的な)骨に対応してもよく及び/又は幾つかの骨が人間の目標における対応する身体構造上の骨を有していなくてもよいことが理解されるべきである。
【0035】
[0047]骨及び関節は集合的に骨格モデルを構築してもよく、それはモデルの構成要素であってもよい。骨格モデルは、各々の体の一部及び隣接した骨格部材間の関節についての1つ以上の骨格部材を含んでもよい。例示的な骨格モデル80及び例示的な骨格モデル82は図4及び5にそれぞれ示される。図4は関節jl乃至j33とともに、正面から見たときの骨格モデル80を示す。図5は、関節j1乃至j33とともに、斜めの視界から見たときの骨格モデル82を示す。骨格モデル82は、回転関節(roll joints)j34乃至j47をさらに含み、各回転関節は軸のロール角(roll angles)を追跡するために利用されてもよい。例えば、軸のロール角はその親リム(手足、limb)及び/又は胴(トルソー)に対するリムの回転方向を定義するために使用され得る。例えば、骨格モデルが腕の軸回転を示している場合、回転関節j40は、関連する手首が指している(例えば、表向きの手のひら)方向を示すために使用され得る。したがって、以下に述べられるように、関節は力を受けて骨格モデルを調節することができるが、回転関節は、その代わりに、軸のロール角を追跡するために構築されて利用されてもよい。より一般的には、その親リム及び/又はトルソーに対するリムの方向を調べることによって、軸のロール角が決定されてもよい。例えば、下肢(lower leg)を調べる場合、関連する太股(upper leg)及び腰に対する下肢の方向は、軸のロール角を決定するために調べられてもよい。
【0036】
[0048]上述のように、幾つかのモデルは、モデル化された目標の機械表現として役立つ骨格及び/又は体の一部を含んでもよい。幾つかの実施例において、モデルは代替的に又はさらにワイヤーフレームメッシュを含んでもよく、それは、固定の多角形のメッシュ、1つ以上の変形可能なメッシュ又はそれら2つの任意の組み合わせについての階層を含んでもよい。限定的でない例として、図6は、人体モデルの形状を定義するメッシュにおいて配置された複数の三角形(例えば、三角形92)を含むモデル90を示す。そのようなメッシュは個々の多角形のエッジにおいて曲げ限界を含んでもよい。メッシュが使用される場合、集合的にメッシュを構成する三角形及び/又は他の多角形の数は、品質と計算コストとの間の所望のバランスを達成するように選択することができる。より多くの三角形がより高品質及び/又はより正確なモデルを提供し得る一方、より少ない三角形はそれほど計算上の要求が厳しくない。多角形のメッシュを含む人体モデルは骨格を含む必要はないが、幾つかの実施例においてはそうであってもよい。
【0037】
[0049]上述の体の一部のモデル、骨格モデル及び多角形のメッシュは、モデル化された目標の機械表現として使用され得るモデルの限定的でない例示的なタイプである。他のモデルもまた本開示の範囲内にある。例えば、幾つかのモデルは、パッチ、不均一な有理B−スプライン(non-uniform rational B-splines)、細分割(subdivision)表面又は他の高次(高位、high-order)の表面を含んでもよい。モデルはまた、モデル化された目標の衣類、髪及び/又は他の側面をより正確に表すために表面のテクスチャー及び/又は他の情報を含んでもよい。モデルは、任意に、現在の姿勢、1つ以上の過去の姿勢、及び/又はモデルの物理特性に関連する情報を含んでもよい。ポーズをとらせることができ、その後合成された奥行き画像へとラスタライズすることができる(又は、そうでなければ、合成された奥行き画像へとレンダリングされるか又は合成された奥行き画像によって表現される)任意のモデルは、本明細書において記載された目標認識、分析及び追跡に適合することが理解されるべきである。
【0038】
[0050]上に言及されるように、モデルは、図1A及び1Bのゲームプレーヤー18などの目標の表現として役立つ。目標が物理的空間において動くとき、図1A及び1Bの奥行きカメラ20などの取込み装置からの情報は、それがより正確に目標を表すように、モデルの姿勢及び/又は基本的なサイズ/形状を調節するために使用することができる。特に、物理的空間中の目標の姿勢により密接にに対応する姿勢へとモデルを調節するために、1つ以上の力が、モデルの1つ以上の力受信面(force-receiving aspects)に加えられてもよい。使用されているモデルの種類によって、力は、関節、体の一部の重心、三角形の頂点又はモデルの他の適切な力受信面に加えられてもよい。さらに、幾つかの実施例において、力の方向及び/又は大きさを決定する場合、2つ以上の異なる計算が使用され得る。より詳細に以下に記載されるように、取込み装置によって取り出されるような目標の観察される画像と、モデルのラスタライズされた(すなわち、合成された)画像との間の差は、異なる姿勢へと体を調節するために、モデルに加えられる力を決定するために使用され得る。
【0039】
[0051]図7は、モデル(例えば、図3の人体モデル70)を使用して目標を追跡する、例示的な方法100のフロー図を示す。幾つかの実施例において、目標は人間であってもよく、人間は追跡されている2つ以上の目標のうちの1つであってもよい。そのため、幾つかの実施例において、コンピューティングシステム上でなされているコンピューターゲームとインタラクトする1人以上のプレーヤーを追跡するために、方法100は、コンピューティングシステム(例えば、図1に示されるゲームシステム12及び/又は図2に示されるコンピューティングシステム40)によって実行されてもよい。上述のように、プレーヤーの追跡は、コンピューターゲームのパラメーターを調節及び/又は制御するリアルタイムのユーザー・インターフェースとしてそれらのプレーヤーの物理的動作が作用することを可能にする。例えば、プレーヤーの追跡される動きは、電子ロールプレイングゲーム中のスクリーン上のキャラクター又はアバターを移動させるために使用され得る。別の例において、プレーヤーの追跡される動きは、電子レーシングゲームでのスクリーン上の車両を制御するために使用され得る。さらに別の例において、プレーヤーの追跡される動きは、仮想環境における物の構築又は構成を制御するために使用され得る。
【0040】
[0052]102において、方法100はソースから目標についての観察された奥行き画像を受け取ることを含む。幾つかの実施例において、ソースは、飛行時間の分析、構造化された光分析、立体映像分析又は他の適切な技術などの適切な技術によって目標に関する奥行き情報を得るように構成された奥行きカメラであってもよい。観察された奥行き画像は複数の観察された画素を含んでもよく、各々の観察された画素は観察された奥行き値を有する。観察された奥行き値は、ソースから見られるような目標についての奥行き情報を含む。図8は、例示的な観察された奥行き画像140の視覚的な表現を示す。示されるように、観察される奥行き画像140は、腕を挙げて立っている人(例えば、ゲームプレーヤー18)についての例示的な観察された姿勢をとらえる。
【0041】
[0053]図7の104に示されるように、観察された奥行き画像を受け取ると、方法100は、任意に、観察された奥行き画像をより低い処理解像度へとダウンサンプリングすることを含んでもよい。より低い処理解像度へのダウンサンプリングは、観察された奥行き画像が、より少ない計算オーバーヘッドでより容易に利用され及び/又はより迅速に処理されることを可能にしてもよい。
【0042】
[0054]106に示されるように、観察された奥行き画像を受け取ると、方法100は、任意に、観察された奥行き画像からプレーヤーでない背景要素を取り除くことを含んでもよい。そのような背景要素の除去は、観察された奥行き画像の様々な領域を背景領域へと及び目標の画像によって占められた領域へと分離することを含んでもよい。背景領域は、1つ以上の後の処理ステップ中にそれらを無視することができるように、画像から除去することができ、又は識別することができる。実質的に、任意の背景除去技術を使用することができ、追跡から(及び以前のフレームから)の情報は、任意に、背景除去の品質を支援し改善するために使用することができる。
【0043】
[0055]108に示されるように、観察された奥行き画像を受け取ると、方法100は、任意に、観察された奥行き画像から、1つ以上の高分散奥行き値及び/又は雑音のある奥行き値を取り除くこと及び/又はそれらを滑らかにすることを含んでもよい。観察された奥行き画像におけるそのような高分散及び/又は雑音のある奥行き値は、画像取り込み処理中に生じるランダムな及び/又は系統的な誤差、取込み装置に起因する欠陥及び/又は収差(aberrations)などの多くの異なるソースに起因し得る。そのような高分散及び/又は雑音のある奥行き値は画像取り込み処理のアーティファクトであり得るので、画像についての任意の将来の分析においてこれらの値を含めることにより、結果が歪められ及び/又は計算が遅くなり得る。したがって、そのような値の除去により、将来の計算のためのよりよいデータの完全性が提供され得る。
【0044】
[0056]他の奥行き値もまたフィルタリングされてもよい。例えば、ステップ118に関して以下に述べる成長動作の正確さは、1つ以上の除去基準を満たす画素を選択的に除去することにより向上させることができる。例えば、奥行き値が、手と当該手が塞いでいるトルソーとの間の中間にある場合、この画素の除去は、後の処理ステップの間に成長動作が1つの体の一部から別のものへと飛び火するのを防ぐことができる。
【0045】
[0057]110に示されるように、方法100は、任意に、欠落した及び/又は除去された奥行き情報の一部を埋めること及び/又は再構築することを含んでもよい。そのような埋め戻し(backfilling)は、最も近い隣接値を平均化すること、フィルタリングすること及び/又は他の適切な方法によって遂行されてもよい。
【0046】
[0058]図7の112に示されるように、方法100は、モデル(例えば、図3の人体モデル70)を得ることを含んでもよい。上述のように、モデルは、目標の機械表現を提供するのに使用される、1つ以上の多角形のメッシュ、1つ以上の数学的な原始関数、1つ以上の高位の表面及び/又は他の特徴を含んでもよい。さらに、モデルは、コンピューティングシステム上に存在する1つ以上のデータ構造のインスタンスとして存在してもよい。
【0047】
[0059]方法100の幾つかの実施例において、モデルは以前の時間ステップから得られた、ポーズをとらせたモデルであってもよい。例えば、方法100が連続的に行われる場合、以前の時間ステップに対応する、方法100の以前の反復に起因するポーズをとらせたモデルが得られてもよい。
【0048】
[0060]幾つかの実施例において、姿勢は、奥行き画像を分析することができ、関心のある目標(例えば、人間)が位置している場所及び/又はそのような目標の姿勢を粗いレベルで識別することができる、1つ以上のアルゴリズムによって決定されてもよい。アルゴリズムは、最初の反復中又は当該アルゴリズムが以前の時間ステップ中に計算された姿勢よりも正確な姿勢を選択することができると考えられるときはいつでも、姿勢を選択するために使用することができる。
【0049】
[0061]幾つかの実施例において、モデルはデータベース及び/又は他のプログラムから得られてもよい。例えば、モデルは方法100の最初の反復中に利用可能でなくてもよく、その場合には、モデルは1つ以上のモデルを含むデータベースから得られてもよい。そのような場合、データベースからのモデルは、目標の姿勢に似ている姿勢を示すモデルを選択するように設計された探索アルゴリズムを使用して選択されてもよい。以前の時間ステップからのモデルがたとえ利用可能であっても、データベースからのモデルを使用してもよい。例えば、目標が所定のしきい値を越えて及び/又は他の基準に従って姿勢を変化させた場合、データベースからのモデルはある数のフレームの後に使用されてもよい。
【0050】
[0062]他の実施例において、モデル又はその一部は合成されてもよい。例えば、目標の身体中央部(body core)(トルソー、中間部及び腰)が変形可能な多角形のモデルによって表される場合、そのモデルは観察された奥行き画像の内容を使用して元々構築されてもよく、画像中の目標の輪郭(すなわち、シルエット)はX次元及びY次元においてメッシュを形作るために使用されてもよい。また、そのような手法では、観察された奥行き画像のその領域における観察された奥行き値は、目標の体の形状をよりよく表すために、モデルのXY方向のほかZ方向におけるメッシュを「形作る」のに使用されてもよい。
【0051】
[0063]方法100は、適切な手法を使用して、目標の上に現れるいかなる衣類も表すことをさらに含んでもよい。そのような適切な手法は、原始関数又は多角形のメッシュの形で補助的な形状(geometry)をモデルに加えることを含んでもよく、任意に、重力、衣服シミュレーションなどを反映するために姿勢に基づいて当該補助的な形状を調節することを含んでもよい。そのような手法はモデルを目標についてのより現実的な画像へと形作ることを容易にし得る。
【0052】
[0064]114に示されるように、方法100は、任意に、モデルに運動量(momentum)アルゴリズムを適用することを含んでもよい。目標の様々な部分の運動量が画像シーケンスの変化を予測するので、そのようなアルゴリズムはモデルの姿勢を得るのに役立つ。運動量アルゴリズムは、モデルを得るのを支援するために、複数の以前のフレームのうちの固定数のものにわたるモデルの関節又は交点の各々の軌道を使用してもよい。
【0053】
[0065]幾つかの実施例において、目標の異なる部分が時間フレーム(例えば、1秒のうちの1/30番目又は1/60番目)において制限された距離を移動できるという知識は、モデルを得る際に制約として使用することができる。そのような制約は、先のフレームが知られている場合にある姿勢を除外するために使用され得る。
【0054】
[0066]図7の116において、方法100はまた、モデルを合成された奥行き画像へとラスタライズすることを含んでもよい。ラスタライズすることにより、数学的な原始関数、多角形のメッシュ又は他のオブジェクトによって記述されたモデルが、複数の画素によって記述された、合成された奥行き画像へと変換されることが可能となる。
【0055】
[0067]ラスタライジングは1つ以上の異なる技術及び/又はアルゴリズムを使用して実行されてもよい。例えば、モデルをラスタライズすることは2次元の平面上にモデルの表現を投影することを含んでもよい。複数の体の一部の形状(例えば、図3の人体モデル70)を含むモデルの場合には、ラスタライジングは、2次元の平面上に一群の体の一部の形状を投影しラスタライズすることを含んでもよい。モデルが投影される2次元平面における各画素について、様々な異なる種類の情報が格納されてもよい。
【0056】
[0068]図9は、図3の人体モデル70に対応する例示的な合成された奥行き画像の視覚的な表現150を示す。図10は、同じ合成された奥行き画像の一部の画素行列160を示す。170に示されるように、合成された奥行き画像中の各々の合成された画素は合成された奥行き値を含んでもよい。ラスタライズ中に決定されるように、所与の合成された画素についての合成された奥行き値は、その合成された画素によって表されるモデルの対応する部分からの奥行き値であってもよい。換言すれば、前腕の体の一部(例えば、図3の前腕の体の一部bp4)の一部が2次元の平面上に投影される場合、対応する合成された画素(例えば、図10の合成された画素162)は、前腕の体の一部のその一部の奥行き値と等しい合成された奥行き値(例えば、図10の合成された奥行き値164)を与えられてもよい。示された例において、合成された画素162は、382cmの合成された奥行き値を有する。同様に、近隣の手の体の一部(例えば、図3の手の体の一部bp3)が2次元の平面上に投影される場合、対応する合成された画素(例えば、図10の合成された画素166)は、手の体の一部のその一部の奥行き値と等しい合成された奥行き値(例えば、図10の合成された奥行き値168)を与えられてもよい。示された例において、合成された画素166は383cmの合成された奥行き値を有する。上記のものが例として提供されることが理解されるべきである。合成された奥行き値は、任意の尺度(unit of measurement)で、又は無次元の数として保存されてもよい。
【0057】
[0069]170に示されるように、合成された奥行き画像中の各々の合成された画素は、ラスタライズ中に決定された元の体の一部のインデックスを含んでもよい。そのような元の体の一部のインデックスは、モデルの体の一部のうちのどれにその画素が対応するかを示してもよい。図10の示された例においては、合成された画素162は、bp4の元の体の一部のインデックスを有し、合成された画素166は、bp3の元の体の一部のインデックスを有する。幾つかの実施例において、合成された画素が目標の体の一部に対応しない場合(例えば、合成された画素が背景画素である場合)、合成された画素の元の体の一部のインデックスはゼロ(nil)であってもよい。幾つかの実施例において、体の一部に対応しない合成された画素は異なる種類のインデックスを与えられてもよい。
【0058】
[0070]170に示されるように、合成された奥行き画像中の各々の合成された画素は、ラスタライズ中に決定された元のプレーヤーのインデックスを含んでもよく、当該元のプレーヤーのインデックスは目標に対応する。例えば、2つの目標がある場合、第1の目標に対応する合成された画素は第1のプレーヤーインデックスを有し、第2の目標に対応する合成された画素は第2のプレーヤーインデックスを有する。示された例において、画素行列160はたった1つの目標に対応し、したがって、合成された画素162はPlの元のプレーヤーインデックスを有し、合成された画素166はP1の元のプレーヤーインデックスを有する。他の種類のインデックス方式は本開示の範囲から逸脱することなく使用され得る。
【0059】
[0071]170に示されるように、合成された奥行き画像中の各々の合成された画素は画素アドレスを含んでもよい。画素アドレスは、他の画素に対する画素の位置を定義してもよい。示された例において、合成された画素162は[5,7]の画素アドレスを有し、合成された画素166は[4,8]の画素アドレスを有する。他のアドレス指定スキームが本開示の範囲から逸脱することなく使用され得ることが理解されるべきである。
【0060】
[0072]170に示されるように、各々の合成された画素は、任意に、他の種類の情報を含んでもよく、それらのうちのいくらかはラスタライズの後に得られてもよい。例えば、各々の合成された画素は更新された体の一部のインデックスを含んでもよく、それは、以下に記載されるように、ラスタライズ中に実行されるスナップ動作の一部として決定されてもよい。各々の合成された画素は更新されたプレーヤーインデックスを含んでもよく、それはラスタライズ中に実行されるスナップ動作の一部として決定されてもよい。各々の合成された画素は更新された体の一部のインデックスを含んでもよく、それは以下に記載されるように成長/固定動作(grow/fix operation)の一部として得られてもよい。各々の合成された画素は更新されたプレーヤーインデックスを含んでもよく、それは上述のように成長/固定動作の一部として得られてもよい。
【0061】
[0073]上に提供される例示的な種類の画素情報は限定的なものではない。様々な異なる種類の情報が各画素の一部として格納されてもよい。そのような情報は共通データ構造の一部として格納することができ、又は異なる種類の情報が、(例えば、画素アドレスを介して)特定の画素位置にマッピングすることができる異なるデータ構造に格納されてもよい。例として、プレーヤーインデックス及び/又はラスタライズ中のスナップ動作の一部として得られる体の一部のインデックスが、ラスタライズマップ及び/又はスナップマップに格納されてもよい一方、以下に記載されるように、ラスタライズの後に成長/固定動作の一部として得られるプレーヤーインデックス及び/又は体の一部のインデックスが成長マップ(grow map)に格納されてもよい。各画素に割り当てられてもよい他の種類の画素情報についての限定的でない例は、関節のインデックス、骨のインデックス、交点(頂点)のインデックス、三角形のインデックス、重心のインデックスなどを含むがこれらに限定されない。
【0062】
[0074]118において、図7の方法100は、任意に、体の一部のインデックス及び/又はプレーヤーインデックスをスナップし及び/又は成長させることを含んでもよい。換言すれば、モデル化された目標により密接に対応させようとして、幾つかの画素の体の一部のインデックス及び/又はプレーヤーインデックスが変更されるように、合成された奥行き画像は増大されてもよい。
【0063】
[0075]上述のラスタライズを行う際に、1つ以上のZバッファー及び/又は体の一部/プレーヤーインデックスマップが構築されてもよい。限定的でない例として、そのようなバッファー/マップの第1のバージョンは、ビューアー(例えば、奥行きカメラ)に最も近い表面が選択され、その表面に関連付けられる体の一部のインデックス及び/又はプレーヤーインデックスが対応する画素に書き込まれるZテストを行うことにより構築されてもよい。このマップはラスタライズマップ又は元の合成された奥行きマップと呼ばれてもよい。そのようなバッファー/マップの第2のバージョンは、その画素における観察された奥行き値に最も近い表面が選択され、その表面に関連付けられる体の一部のインデックス及び/又はプレーヤーインデックスが対応する画素に書き込まれるZテストを行うことにより構築されてもよい。これはスナップマップと呼ばれてもよい。そのようなテストは、合成された奥行き値と所定のしきい値を越える観察された奥行き値との間のZ距離を拒絶するように制約されてもよい。幾つかの実施例において、2つ以上のZバッファー及び/又は2つ以上の体の部分/プレーヤーインデックスマップが保持され、したがって、上述のテストの2つ以上が実行されることを可能にしてもよい。
【0064】
[0076]バッファー/マップの第3のバージョンは、体の一部/プレーヤーインデックスマップを成長させること及び/又は修正することにより構築されてもよい。これは成長マップと呼ばれてもよい。上述のスナップマップのコピーから始めて、値は所定のZ距離内の任意の「未知の」値にわたって成長させられてもよく、その結果、目標によって占められるがまだ人体モデルによって占められていない空間は、適切な体の一部/プレーヤーインデックスで満たされてもよい。そのような手法はよりよい一致が識別される場合に既知の値を上回ることをさらに含んでもよい。
【0065】
[0077]成長マップは、異なる体の部分/プレーヤーインデックスを備えた近隣の画素を有する画素を検出するためにスナップマップの合成された画素にわたるパスから開始してもよい。これらは「エッジ」画素、すなわち、値が任意に伝播され得るフロンティア、であると考えられてもよい。上に紹介されるように、画素値を成長させることは「未知の」又は「既知の」画素へと成長させることを含んでもよい。「未知の」画素については、例えば、体の一部/プレーヤーインデックス値は、1つのシナリオにおいて、以前に0であったものでもよいが、今はゼロでない近隣の画素を有していてもよい。そのような場合、4つの直接隣接する画素が調べられてもよく、関心のある画素の観察された奥行き値により密接に類似する観察された奥行き値を有する隣接する画素が選択され、当該関心のある画素に割り当てられてもよい。「既知の」画素の場合には、その隣接する画素のうちの1つが、その画素の合成された奥行き値よりも、関心のある画素の観察された奥行き値とより密接に一致する、ラスタライズ中に書き込まれた奥行き値を有する場合、既知のゼロでない体の一部/プレーヤーインデックス値を備えた画素が取って代わられる可能性がある。
【0066】
[0078]さらに、効率性のために、合成された画素の体の一部/プレーヤーインデックス値の更新は、後のパス上で再考される(revisited)べき画素のキューにその隣接する4つの画素を加えることを含んでもよい。そのため、値は、すべての画素にわたって全体のパスを行うことなく、フロンティアに沿って伝播され続けてもよい。別の最適化として、関心のある目標によって占められない他のブロックを無視することができるように、関心のある目標によって占められた画素の異なるNxNブロック(例えば、画素の16x16ブロック)を追跡することができる。そのような最適化は様々な形式でのラスタライズの後の目標分析中のどの時点において適用されてもよい。
【0067】
[0079]しかし、成長動作が様々な異なる形式をとってもよいことに留意すべきである。例えば、同様の値の領域を識別するために様々な塗りつぶし(flood-fills)が最初に行われてもよく、次に、どの領域がどの体の一部に属するかが決定されてもよい。さらに、任意の体の一部/プレーヤーインデックスオブジェクト(例えば、図3の左前腕の体の一部bp4)が成長できる画素数は、どれだけの画素をそのようなオブジェクトが占めると予想されるかということ(例えば、所与のその形状、距離及び角度)と、スナップマップ中のどれだけの画素がその体の一部/プレーヤーインデックスを割り当てられたかということとの対比に基づいて制限されてもよい。さらに、前述の手法は、ある姿勢について、成長が正確となり得るように、ある体の一部の成長に偏るように利点又は欠点を加えることを含んでもよい。
【0068】
[0080]体の一部からの画素の分布が1つの奥行きでグループ化され、同じ体の一部からの画素の別の分布が別の奥行きでグループ化される場合、向上したスナップ調節をスナップマップに対して行うことができ、その結果、ギャップがこれらの2つの分布の間に存在する。例えば、トルソーの前で及びそのトルソーの近くで揺れる腕は、トルソーへと「波及」し得る。そのような場合は、実際にそれらがトルソー画素であるべき場合に、それらが腕の画素であることを示す体の一部のインデックスを備えたトルソー画素のグループを生み出してもよい。前腕における合成された奥行き値の分布を調べることによって、腕画素のうちの幾つかが1つの奥行きでグループ化されてもよく、残りは別の奥行きでグループ化されてもよいことが決定され得る。奥行き値のこれらの2つのグループ間のギャップは、腕画素と、トルソー画素であるべきものとの間の飛躍(jump)を示す。したがって、そのようなギャップの識別に応答して、その後、スピルオーバー(spillover)はスピルオーバー画素にトルソーの体の一部のインデックスを割り当てることにより改善され得る。別の例として、向上したスナップ調節は、背景上に腕のあるオブジェクトの場合において有用になり得る。この場合、ヒストグラムは、関心のある画素(すなわち、腕に属すると考えられる画素)の観察された奥行きにおけるギャップを識別するために使用することができる。そのようなギャップに基づいて、画素の1つ以上のグループは、腕に適切に属するものとして識別することができ、及び/又は他のグループは、背景画素として拒絶することができる。ヒストグラムは、絶対的な奥行き、奥行きの誤り(合成された奥行き−観察された奥行き)などの様々な基準に基づいてもよい。向上したスナップ調節は、任意の成長動作の前に、ラスタライズ中にインラインで実行され得る。
【0069】
[0081]120において、図7の方法100は、任意に、上述の3つの処理段階における、観察された奥行き画像、合成された奥行き画像及び体の一部/プレーヤーインデックスマップから高さマップを作成することを含んでもよい。以後記載されるように、モデルに対して行われるべき調節の方向を決定する場合、そのような高さマップの勾配及び/又はそのような高さマップの不鮮明なバージョンが利用されてもよい。しかし、高さマップは最適化にすぎず、代替的に又はさらに、すべての方向における探索が、調節が適用されてもよい最も近い関節及び/又はそのような調節が行われるべき方向を識別するために実行されてもよい。高さマップが使用される場合、それは、以下に述べられる画素クラス決定の前、その後、又はそれと並行して作成されてもよい。使用される場合、高さマップは、プレーヤーの実際の体を低い高度に設定し、背景要素を高い高度に設定するように設計される。その後、流域式(watershed-style)の技術が、背景からプレーヤーにおける最も近い点を見つけるべく高さマップにおける「下り坂(downhill)」をたどるため、又はその逆を行う(すなわち、所与のプレーヤー画素に最も近い背景画素を見つけるために高さマップにおける「上り坂(uphill)」を探す)ために使用することができる。
【0070】
[0082]合成された奥行き画像及び観察された奥行き画像は同一でなくてもよく、したがって、合成された奥行き画像は、観察された奥行き画像とより密接に一致し、したがってより正確に目標を表すことができるように、調節及び/又は修正を使用することができる。モデルに対して最初に調節を行い(例えば、モデルの姿勢を変化させ)、次に、合成された奥行き画像の新バージョンへと当該調整されたモデルを合成することにより、合成された奥行き画像に対して調節を行うことができることが理解されるべきである。
【0071】
[0083]多くの異なる手法が合成された奥行き画像を修正するためにとられてもよい。1つの手法では、2つ以上の異なるモデルが2つ以上の合成された奥行き画像を生み出すために得られてラスタライズされてもよい。その後、各々の合成された奥行き画像は、比較基準の所定の組によって、観察された奥行き画像と比較されてもよい。観察された奥行き画像との最も密接な一致を示す合成された奥行き画像が選択されてもよく、この処理はモデルを改善するために任意に繰り返されてもよい。使用される場合、この処理は、プレイヤーの体の種類及び/又は寸法と一致するように人体モデルを改良するのに特に役立ち得る。
【0072】
[0084]別の手法では、混合された合成された奥行き画像を生み出すために、2つ以上の合成された奥行き画像は、補間又は外挿によって混合されてもよい。さらに別の手法では、混合技術及びパラメーターが混合された合成された奥行き画像にわたって変化するような方法で、2つ以上の合成された奥行き画像が混合されてもよい。例えば、第1の合成された奥行き画像が1つの領域の中で観察された奥行き画像によく一致し、第2の合成された奥行き画像が第2の領域の中でよく一致する場合、混合された合成された奥行き画像中の選択された姿勢は、第1の領域において第1の合成された奥行き画像を作成するのに使用される姿勢、及び第2の領域において第2の合成された奥行き画像を作成するのに使用される姿勢に類似する混合物であってもよい。
【0073】
[0085]さらに別の手法において、図7における122に示されるように、合成された奥行き画像は観察された奥行き画像と比較されてもよい。合成された奥行き画像の各々の合成された画素は比較の結果に基づいて分類されてもよい。そのような分類は各画素についての画素ケース(pixel cases)を決定するものとして参照されてもよい。合成された奥行き画像(例えば、図3の人体モデル70)を作成するために使用されるモデルは、決定された画素ケースに従って系統的に調節されてもよい。特に、力ベクトル(大きさ及び方向)は、決定された画素ケースに基づいて各画素において計算されてもよく、モデルの種類に依存して、計算された力ベクトルは、最も近い関節、体の一部の重心、体の一部上の点、三角形の頂点又は合成された奥行き画像を生成するのに使用されるモデルの別の所定の力受信位置(force-receiving location)に印加することができる。幾つかの実施例において、所与の画素に起因する力は、モデル上の2つ以上の力受信位置間に分散させることができる。
【0074】
[0086]1つ以上の画素ケースが1つ以上の要因に基づいて各合成された画素について選択されてもよく、1つ以上の要因は、その合成された画素についての観察された奥行き値と合成された奥行き値との間との差;その合成された画素についての元の体の一部のインデックス、(スナップ)体の一部のインデックス及び/もしくは(成長)体/部分インデックスの間の差;並びに/又はその合成された画素についての元のプレーヤーインデックス、(スナップ)プレーヤーインデックス及び/もしくは(成長)プレーヤーインデックスの間の差を含むが、これらに限定されない。
【0075】
[0087]図7の124に示されるように、画素ケースの決定は、改良−z(refine-z)画素ケースを選択することを含んでもよい。観察された奥行き画像の観察された画素の(又は観察された画素の領域における)観察された奥行き値が、合成された奥行き画像中の合成された奥行き値と一致しないが、両方の画像中の同じ物に属しそうなくらい十分に近く、体の一部のインデックスが一致する(又は、ある場合には、近隣の体の一部又は領域に対応する)場合、改良−z(refine-z)の画素ケースが選択されてもよい。その合成された画素についての観察された奥行き値と合成された奥行き値との間の差が所定の範囲内にある場合、及び、オプションとして、その合成された画素の(成長)体の一部のインデックスが磁気力を受け取るために設計されていない体の一部に対応する場合、改良−zの画素ケースは合成された画素について選択されてもよい。改良−z画素ケースは、正確な位置へモデルを移動させるためにモデルに対して力を及ぼし得る、計算された力ベクトルに対応する。計算された力ベクトルは、画像面に垂直なZ軸に沿って、モデルの側面(例えば、対応する体の一部の面)に垂直なベクトルに沿って、及び/又は近くの観察された画素に垂直なベクトルに沿って印加されてもよい。力ベクトルの大きさは、より大きな力に対応するより大きな差がある場合、観察され合成された奥行き値における差に基づく。力が加えられる力受信位置は、関心のある画素に対して最も近い適格な力受信位置(例えば、最も近いトルソー関節)であるように選択することができ、又は、力は、最も近い力受信位置の重み付けされた混合の間に分散させることができる。最も近い力受信位置が選択されてもよいが、ある場合には、バイアスの印加が有用になり得る。例えば、画素が太股を半ばまで下ったところに位置し、股関節が膝より動きやすくない(又は機敏でない)ことが認められた場合、腰ではなく膝に作用するように中央の脚の画素に対して関節の力を偏らせることが有用となり得る。
【0076】
[0088]どの力受信位置が関心のある画素に最も近いかについての決定は、上述のバイアスの有無にかかわらず、強引な(強力な、brute-force)探索によって見つけることができる。探索を早めるために、探索された力受信位置の組は、この画素の体の一部のインデックスに関連付けられる体の一部の上、又はその体の一部の近くのものだけに制限されてもよい。これらの探索を早めるのを助けるために、姿勢が変更されるごとに、BSP(二分空間分割、binary space partitioning)木が設定されてもよい。体上の各領域、又は体の一部のインデックスに対応する各々の体の一部は、それ自身のBSP木を与えられてもよい。そうならば、バイアスは、各々の体の一部に対して異なるように適用することができ、それはさらに、適切な力受信位置の賢明な選択を可能にする。
【0077】
[0089]図7の126に示されるように、画素ケースの決定は磁気画素ケースを選択することを含んでもよい。(成長)マップにおいて調べられる合成された画素が体の一部(例えば、図3の腕、すなわちbp3、bp4、bp5、bp7、bp8、及びbp9)の所定のサブセット(部分集合)に対応する場合、磁気画素ケースが利用されてもよい。腕が例として提供されるが、脚又は全身などの他の体の一部が、オプションとして、幾つかのシナリオにおいて、磁気画素ケースに関連付けられてもよい。同様に、幾つかのシナリオでは、腕は磁気画素ケースに関連付けられなくてもよい。
【0078】
[0090]磁気ケースについてマークされた画素は領域(regions)へとグループ化されてもよく、各領域は特定の体の一部(この例においては、左上腕、左下腕、左手など)に関連付けられる。画素がどの領域に属するかはその体の一部のインデックスから決定することができ、また、より正確なテストは画素の位置を人体モデル中又は人体モデル上の様々な点(しかし、画素の体の一部のインデックスによって示される体の一部には限定されない)と比較することにより(成長動作において導入される可能性のある誤りを低減するために)行うことができる。例えば、左の腕のどこかの画素について、画素がどの骨セグメント(肩から肘、肘から手首、又は手首から手先)に属する可能性が最も高いかを決定するために、様々な基準を使用することができる。これらの骨セグメントの各々は「領域」と考えられてもよい。
【0079】
[0091]これらの磁気領域の各々について、領域に属する画素の重心が計算されてもよい。これらの重心はオーソドックスなもの(すべての寄与する画素が等しく重み付けされる)、又は偏った(biased)もののいずれであってもよく、幾つかの画素は他のものより大きな重みを持っていてもよい。例えば、上腕については、3つの重心が追跡されてもよい:1)偏りのない重心;2)肩により近い場合に寄与する画素がより重く重み付けされる「近い(near)」重心;及び3)肘により近い場合に寄与する画素がより重く重み付けされる「遠い(far)」重心。これらの重み付けは線形であってもよいし(例えば、2X)、又は非線形であってもよいし(例えば、x2)、又は、いかなる曲線に従ってもよい。
【0080】
[0092]一旦これらの重心が計算されると、いくらかが部分的に塞がれても、関心のある体の一部の位置及び方向の計算のために様々な選択肢が利用可能である(そして、動的に選択することができる)。例えば、肘の新たな位置を決定しようとする場合、その領域の重心が十分に目に見えるものであれば(寄与する画素の重みの合計が所定のしきい値を超える場合)、その後、重心自体は肘にマークを付ける(推定(estimate)#1)。しかし、(おそらくは他のある物又は体の一部によって塞がれるために)肘の領域が目に見えない場合、以下の限定的でない例に述べられるように、肘の位置はそれでもしばしば決定することができる。上腕の遠い重心が目に見える場合、肘についての非常に可能性のある位置(推定#2)を得るために、上腕の長さだけ、この重心を通じて肩から投影を行うことができる。前腕の近い重心が目に見える場合、肘についての非常に可能性のある位置(推定#3)を得るために、前腕の長さだけ、この重心を通じて手首から投影を行うことができる。
【0081】
[0093]3つの可能性のある評価のうちの1つの選択を行うことができ、又は、3つの可能性のある評価の間で混合を行って、より高い可視性、信頼性、画素数又は任意の数の他の基準を有するその推定に対して優先順位(又はより高い重み)を与えてもよい。最後に、この例において、単一の力ベクトルが肘の位置においてモデルに印加されてもよい;しかし、それを構築するために多くの画素が使用されたということを表すために、(他の画素ケースに起因するが同じ力受信位置に作用する画素力ベクトルが蓄積される場合)より重く重み付けされてもよい。印加される場合、対応するモデルが観察画像中に示される目標とよりよく一致するように、計算された力ベクトルはモデルを移動させてもよい。磁気画素ケースの利点は、腕などの非常に機敏な体の一部とよく連携するその能力である。
【0082】
[0094]幾つかの実施例において、定義された関節又は体の一部のないモデルが磁気画素ケースのみを使用して調節されてもよい。
[0095]図7の128及び130に示されるように、画素ケースの決定は引き込み画素ケース(pull pixel case)及び/又は押し出し画素ケース(push pixel case)を選択することを含んでもよい。これらの画素ケースはシルエットで呼び出されてもよく、合成され観察された奥行き値は同じ画素アドレスにおいてひどく一致しないかもしれない。元のプレーヤーインデックスが(成長)プレーヤーインデックスと一致しない場合、引き込み画素ケース及び押し出し画素ケースを使用することができることが注目される。押し対引きの決定は以下のとおりである。合成された奥行き画像がその同じ画素アドレスにおける観察された奥行き画像の奥行き値より大きい(遠い)奥行き値を含む場合、モデルは成長画像に見られる本当のシルエットに向かって引くことができる。反対に、元の合成された画像が観察された奥行き画像中の奥行き値より小さい(より近い)奥行き値を含む場合、次に、プレーヤーがもはや占めていない空間から(及び成長した画像中の現実のシルエットに向かって)モデルを押し出すことができる。いずれにせよ、これらの画素又は画素領域のうちの各々について、シルエットの不一致を修正するために、2次元又は3次元の計算された力ベクトルがモデルに及ぼされてもよく、観察された奥行き画像中の目標の位置により正確に一致する位置へと人体モデルの一部を押し出したり引き込んだりする。そのような押し出し及び/又は引き込みの方向は多くは主にXY平面にあるが、幾つかのシナリオにおいてはZコンポーネントを力に加えることができる。
【0083】
[0096]引き込む場合又は押し出す場合について適切な力ベクトルを生成するために、(引き込みの場合については)合成された奥行き画像中のプレーヤーのシルエット上、又は(押し出しの場合については)観察された奥行き画像中のプレーヤーのシルエット上の、最も近い点は、最初に見つけられてもよい。この点は、次の基準を満たす(所望のシルエット上の)最も近い点に対して強引で徹底的な2D探索を行うことにより、各ソース画素について(又はソース画素の各グループについて)見つけることができる。引き込み画素ケースにおいては、(ソース画素又は領域における)成長したマップにおけるプレーヤーインデックスと一致する、(探索位置における)元のマップにおけるプレーヤーインデックスを備えた最も近い画素が見つかる。押し出し画素ケースにおいては、(ソース画素又は領域における)元のマップにおけるプレーヤーインデックスと一致する、(探索位置における)成長したマップにおけるプレーヤーインデックスを備えた最も近い画素が見つかる。
【0084】
[0097]しかし、強引な探索は非常に計算コストがかかり(expensive)得るし、最適化は計算上のコストを低減するために使用することができる。この点をより効率的に見つけるための1つの限定的でない例示的な最適化は、上述の高さマップの勾配又はその不鮮明なバージョンに従うこと、及び勾配の方向に画素をまっすぐに単に調べることである。この高さマップでは、プレーヤーインデックスは元の及び成長したプレーヤーインデックスマップの両方において同じである場合、高さ値は低く、(両方のマップ中の)プレーヤーインデックスが0である場合、高さ値は高い。勾配は、所与の画素において、ベクトルとして定義することができ、この高さマップにおける「下り坂」を指す。その後、上述のように、引き込み画素及び押し出し画素の両方は、それらがそれぞれの停止条件に達するまで、この勾配(下り坂)に沿って探索することができる。この探索動作のための他の基本的な最適化は、画素をスキップすること、半分の間隔を使用すること、又は傾斜に基づいた(slope-based)手法を使用すること;探索が進行するとともに間隔をおいて勾配をリサンプリングすること;及び、停止基準が一旦満たされると、(直接的には勾配に沿わずに)よりよい/より近い一致を近くでチェックすることを含む。
【0085】
[0098]関心のあるシルエット上の最も近い点を見つけるためにたとえどんな技術が使用されても、移動された距離(ソース画素とシルエット画素との間の距離)、Dlは、モデルを押すか又は引く力ベクトルの大きさ(長さ)、D2を計算するために使用され得る。幾つかの実施例において、D2は、線形に又は非線形に、Dlに関連してもよい(例えば、D2=2×D1又はD2=D12)。1つの限定的でない例として、次の式を使用することができる:D2=(Dl−0.5画素)×2。例えば、2つの奥行き画像中のシルエット間に5画素のギャップがある場合、このギャップ中の各画素は小さな「探索」を行って力ベクトルを生成してもよい。現実のシルエットの近くの画素はシルエットに達するためにわずか1画素だけ探索してもよく、したがって、それらの画素における力の大きさは(1―0.5)×2=1である。現実のシルエットから遠い画素は、5つの画素だけ探索してもよく、したがって、力の大きさは(5―0.5)×2=9である。一般に、現実のシルエットに最も近い画素から最も遠い画素へ行くと、探索距離はDl={1、2、3、4、5}であり、生成される力の大きさはD2={1、3、5、7、9}である。この場合のD2の平均は、望まれるように、5であり―結果として生じる力ベクトルの平均の大きさは(各力受信位置の近くの)シルエットの間の距離と等しく、それは、モデルを適切な場所に入れるためにモデルを移動させることができる距離である。
【0086】
[0099]その後、最終的な力ベクトルは、各ソース画素について、方向及び大きさ(すなわち、長さ)をもって構築されてもよい。引き込み画素については、方向はシルエット画素からソース画素までのベクトルによって決定される;押し出し画素については、それは反対のベクトルである。この力ベクトルの長さはD2である。その結果、各画素において、力は、最も適格な(例えば、最も近い)力受信位置に加えられてもよい(又は幾つかの間で分散されてもよい)し、これらの力は、人体モデルの適切な局所的な動作を生成するために、各力受信位置において平均化することができる。
【0087】
[00100]図7の132及び134に示されるように、画素ケースの決定は自分で塞ぐ押し出し画素及び/又は引き出し画素ケースを選択することを含む。前述の押し出し画素及び引き込み画素ケースにおいては、背景又は別の目標に対する前景の中で体の一部が移動していてもよいが、自分で塞ぐ押し出し画素及び引き込み画素ケースは、体の一部が同じ目標の別の体の一部の前にある(例えば、別の脚の前の1つの脚、トルソーの前の腕など)シナリオを考慮する。画素の(スナップ)プレーヤーインデックスがその対応する(成長)プレーヤーインデックスと一致するが、(スナップ)体の一部のインデックスがその対応する(成長)体の一部のインデックスと一致しない場合、これらのケースは識別されてもよい。そのような場合、(シルエットを見つけるための)探索方向は幾つかの方法で導出されてもよい。限定的でない例として、強引(強力)な2D探索が行われてもよい;勾配が1D探索をガイドすることができるように「閉塞(occlusion)」高さマップの第2の組がこの場合に適合してもよい;又は、方向は、最も近い骨格部材上の最も近い点に向かって設定されてもよい。そうでなければ、これらの2つのケースの詳細は、標準的な押し出し及び引き込みケースに類似する。
【0088】
[00101]合成された画素の(成長)体パーティインデックスが磁気力を受け取るために設計されていない体の一部に対応する場合、押し出し画素ケース、引き込み画素ケース、自分で塞ぐ押し出し画素ケース及び/又は自分で塞ぐ引き込み画素ケースは、当該合成された画素に対して選択されてもよい。
【0089】
[00102]幾つかのシナリオでは、単一の画素が1つ以上の画素ケースに関与してもよいことが理解されるべきである。限定的でない例として、画素は、自分で塞ぐ押し出し画素力及び改良−z画素力の両方に関与してもよく、自分で塞ぐ押し出し画素の力は塞いでいる体の一部上の力受信位置に印加され、改良−z画素の力は塞がれている体の一部上の力受信位置に印加される。
【0090】
[00103]図7の136に示されるように、画素ケースの決定は合成された画素に対して画素ケースを選択しないことを含んでもよい。しばしば、力ベクトルは、合成された奥行き画像のすべての合成された画素に対して計算される必要はない。例えば、合成された奥行き画像中に示される人体モデルから遠ざかっている合成された画素、及び観察された奥行き画像中に示される目標から遠ざかっている観察された画素(すなわち、背景画素)は、いかなる力受信位置又は体の一部にも影響を及ぼさなくてもよい。幾つかのシナリオにおいては必要となる場合があるが、そのような画素について画素ケースを決定する必要はない。別の例として、観察された奥行き値とその合成された画素の合成された奥行き値との差は、所定のしきい値より小さいこともあり得る(例えば、モデルが観察された画像と既に一致する)。そのため、幾つかのシナリオにおいては必要である場合があるが、そのような画素について画素ケースを決定する必要はない。
【0091】
[00104]以下に与えられる表は、上述の画素ケースと図5の骨格モデル82に示された関節との間の例示的な関係を詳述する。画素ケース1−7は、テーブル中で以下のように略記される:1−引き込み(正常)、2−引き込み(閉塞)、3−押し出し(正常)、4−押し出し(閉塞)、5−改良−Z、6−磁性の引き出し、及び7−閉塞(動作なし)。「力を受けるか?」の列における「Yes(はい)」の入力は、その行の関節が力ベクトルから力を受け取り得ることを示す。画素ケース列の「X」の入力は、その行の関節がその列の画素ケースに対応する力ベクトルから力を受け取り得ることを示す。次のテーブルは例として提供されるものであることが理解されるべきである。限定的であると考えるべきではない。モデルと画素ケースとの間の他の関係は本開示の範囲から逸脱することなく確立され得る。
【0092】
【表1−1】
【0093】
【表1−2】
【0094】
[00105]140において、図7の方法100は、画素ケースが決定された各合成された画素について、その合成された画素について選択された画素ケースに基づいて力ベクトルを計算することを含む。上述のように、各画素ケースは、力ベクトルの大きさ、方向及び/又は力受信位置を選択するための異なるアルゴリズム及び/又は方法論に対応する。力ベクトルは、世界空間(world space)、画面空間(前Z分割(pre-Z-divide))、投影空間(後Z分割(post-Z-divide))、モデル空間などの、任意の座標空間において計算され及び/又は蓄積されてもよい。
【0095】
[00106]142において、方法100は、モデルの1つ以上の力受信位置へ各計算された力ベクトルをマッピングすることを含む。マッピングは、「最も良く一致する」力受信位置へ計算された力ベクトルをマッピングすることを含んでもよい。モデルについての最も一致する力受信位置の選択は、対応する画素について選択された画素ケースに依存する。例えば、最も一致する力受信位置は、最も近い関節、交点(頂点)又は重心であってもよい。幾つかの実施例において、モーメント(すなわち、回転力)がモデルに印加されてもよい。
【0096】
[00107]一般に、変換はモデルの力受信位置に作用する同様の方向を備えた力に起因してもよく、回転はモデルの力受信位置に作用する異なる方向の力に起因してもよい。変形可能な物については、力ベクトルのコンポーネントのうちの幾つかは、その変形範囲内でモデルを変形するために使用され得るし、力ベクトルの残りのコンポーネントはモデルを変換し及び/又は回転させるために使用され得る。
【0097】
[00108]幾つかの実施例において、力ベクトルは、最も一致する固定の又は変形可能な物、サブオブジェクト及び/又はオブジェクトの多角形の組にマッピングされてもよい。したがって、力ベクトルのうちの幾つかはモデルを変形するために使用されてもよく、力ベクトルの残りのコンポーネントはモデルの固定の移動(translation)を行うために使用されてもよい。そのような技術は「壊れた(broken)」モデル(例えば、本体から腕が切り離され得る)に帰着してもよい。より詳細に以下に議論されるように、その後、調整(rectification)ステップは、移動を回転に変換し及び/又は低エネルギーのパスに沿って体の一部を元通りに接続するために制約を適用するために使用され得る。
【0098】
[00109]図11A及び11Bは、示された例、骨格モデル180において、モデルに力ベクトルを加える、非常に単純化された例を示す。単純化のために、2つの力ベクトルだけがこの示された例において示される。そのような力ベクトルはそれぞれ、画素ケースの決定及び2つ以上の異なる画素の力ベクトルの計算の結果に起因する2つ以上の異なる力ベクトルの合計の結果であってもよい。しばしば、モデルは多くの異なる力ベクトルによって調節され、その各々は、画素ケースの決定及び多くの異なる画素の力ベクトルの計算に起因する多くの異なる力ベクトルの合計である。
【0099】
[00110]図11Aは骨格モデル180を示し、観察された奥行き画像とより密接に一致するように骨格モデル180の1つの腕を真っすぐにする目的で、力ベクトル182は関節j18(すなわち、肘)に加えられることになっており、力ベクトル184は関節j20(すなわち、手首)に加えられることになっている。図11Bは力が加えられた後の骨格モデル180を示す。図11Bは、加えられた力がどのようにモデルの姿勢を調節するかを示す。図11Bに示されるように、骨格部材の長さが維持(保存)されてもよい。さらに示されるように、関節j2の位置は、腕を真っすぐにする人間の場合について予想されるように、骨格モデルの肩に残る。換言すれば、力が加えられた後、骨格モデルは損傷を受けない(完全な)ままである。力を加える場合に骨格モデルの完全性を維持することは、より詳細に後に議論されるように、適用される1つ以上の制約に起因する。様々な異なる制約は異なる可能なモデルタイプの完全性を維持するために強化する(enforce)ことができる。
【0100】
[00111]144において、図7の方法100は、1つ以上の制約を満たす姿勢へとモデルを修正することを任意に含む。上述のように、モデルの力受信位置に対して計算された力ベクトルを収集してマッピングした後、計算された力ベクトルは、その後、モデルに加えられてもよい。制約なしで実行される場合、これは、モデルを「壊し」て、体の一部を、目標の実際の体についての無効な構成へと、不釣り合いに伸ばし及び/又は移動させる。その後、様々な機能の繰り返しが、「近くの」適法な構成へと新たなモデル位置を「緩和する」ために使用され得る。モデルを修正する各反復中、姿勢の組を1つ以上の目標の1つ以上の実際の体によって物理的に表現できるものに制限するために、制約が姿勢に対してなだらかに及び/又は徐々に適用されてもよい。他の実施例において、そのような修正するステップは、反復しない方法で行われてもよい。
【0101】
[00112]幾つかの実施例において、制約は、後に記載されるように、次のものの1つ以上を含んでもよい:骨格部材の長さの制約、関節の角度の制約、多角形エッジの角度の制約及び衝突テスト。
【0102】
[00113]骨格モデルが使用される例として、骨格部材(すなわち、骨)の長さの制約を適用することができる。検出することができる力ベクトル(すなわち、関節及び/又は体の一部が目に見えていて塞がれていない位置における力ベクトル)は、骨格モデルの骨格部材のネットワークに沿って伝播されてもよい。骨格部材の長さの制約を適用することによって、一旦すべての骨格部材が許容可能な長さとなったならば、伝播された力は「落ち着く(settle in)」。幾つかの実施例において、骨格部材の長さの1つ以上は所定範囲内で可変となることが可能である。例えば、トルソーの側面を構成する骨格部材の長さは、変形可能な中間部をシミュレートするために可変であってもよい。別の例として、上腕を構成する骨格部材の長さは、複雑な肩ソケット(shoulder socket)をシミュレートするために可変であってもよい。
【0103】
[00114]骨格モデルは、目標に基づいて各骨格部材の長さを計算することにより、さらに又は代替的に、抑制されてもよく、その結果、これらの長さは調整中に制約として使用され得る。例えば、所望の骨の長さは人体モデルから知られ;現在の骨の長さ(すなわち、新たな関節の位置の間の距離)と所望の骨の長さとの間の差を推定することができる。モデルは所望の長さと現在の長さとの間のいかなる誤りも低減させるように調節することができる。より重要であると見なされるある関節及び/又は骨のほか、他のものより現在より可視である関節又は体の一部に対して、優先順位が与えられてもよい。さらに、大きさの高い変化が大きさの低い変化よりも優先順位を与えられてもよい。
【0104】
[00115]骨の長さの制約のより正確な適用を可能にするために、関節の可視性及び/又は確かさは、X、Y及びZ次元において別々に追跡されてもよい。例えば、骨が左肩に対して胸を接続し、胸の関節のZ位置が高い信頼性を有し(すなわち、多くの改良−z画素が当該関節に対応する)及び肩のY位置が高い信頼性を有する(多くの押し出し/引き込み画素が当該関節に対応する)場合、骨の長さにおけるいかなる誤りも、Y方向の肩の動き又はZ方向の胸の動きを部分的に又は完全に制限しながら修正することができる。
【0105】
[00116]幾つかの実施例において、調整前の関節位置は調整後の関節位置と比較されてもよい。一貫した調節の組がすべてのフレームにおいて骨格モデルに対してなされていると決定される場合、方法100は、骨格モデル及び/又は人体モデルの「向上した改良(progressive refinement)」を行うためにこの情報を使用してもよい。例えば、調整の前後に関節位置を比較することによって、各フレームにおいて肩が調整中により大きく押し開かれていると決定され得る。そのような一貫した調節は、骨格モデルの肩が表現されている目標より小さく、従って、肩幅が、これについて修正するために、調整中に各フレームで調節されていることを示唆する。そのような場合、骨格モデルの肩幅を増加させるような向上した改良が、目標によりよく一致するよう骨格モデル及び/又は人体モデルを修正するためになされてもよい。
【0106】
[00117]関節の角度の制約については、あるリム及び体の一部は、隣接した体の一部に対する動きについてのその範囲に制限されてもよい。さらに、この動きの範囲は隣接した体の一部の方向に基づいて変化してもよい。したがって、関節の角度の制約を適用することは、リムセグメントが、親リム及び/又は体の一部の方向を前提として、可能な構成に制約されることを可能にしてもよい。例えば、下肢は、前方ではなく後方に(膝において)曲がるように構成することができる。不正な角度が検出される場合、問題となっている体の一部及び/又はそれらの親(又は、メッシュモデルの場合、問題となっている三角形及びそれらの隣接のもの)は、所定の可能性の範囲内に姿勢を維持するために調節され、したがって、許容できないと見なされる姿勢へとモデルが崩壊する場合を回避する助けとなる。極端な角度の違反のある場合には、姿勢は逆であると認識されてもよい、すなわち、胸として追跡されるものが実際にはプレーヤーの背中であり;左手が実際には右手である;などと認識されてもよい。そのような不可能な角度がはっきり目に見える(及び十分にひどい)場合、これは、姿勢がプレーヤーの体に対して逆にマッピングされたことを意味すると解釈することができ、姿勢は正確に目標をモデル化するために反転させることができる。
【0107】
[00118]衝突テストはモデルがそれ自体に浸透するのを防ぐために適用されてもよい。例えば、衝突テストは、前腕/手の任意の部分がトルソーに浸透するのを防いだり、又は前腕/手が互いに浸透するのを防いだりしてもよい。他の例において、衝突テストは、脚が他方の脚に浸透するのを防いてもよい。幾つかの実施例において、同様のシナリオがモデル間で生じるのを防ぐために、衝突テストは2人以上のプレーヤーのモデルに適用されてもよい。幾つかの実施例において、衝突テストは人体モデル及び/又は骨格モデルに適用されてもよい。幾つかの実施例において、衝突テストはメッシュモデルのある多角形に適用されてもよい。
【0108】
[00119]衝突テストは任意の適切な方法で適用されてもよい。1つの手法は1つの「容積(volumetric)ラインセグメントと別のものとの衝突を調べ、ここで容積ラインセグメントは3Dの中で外に伸びる半径を備えたラインセグメントであってもよい。そのような衝突テストの一例は前腕対別の前腕を調べることであってもよい。幾つかの実施例において、容積ラインセグメントはセグメントの各端部において異なる半径を有していてもよい。
【0109】
[00120]別の手法は、容積ラインセグメント対ポーズをつけられた多角形の物の衝突を調べる。そのような衝突テストの一例は、前腕対トルソーを調べることであってもよい。幾つかの実施例において、ポーズをつけられた多角形の物は変形された多角形の物であってもよい。
【0110】
[00121]幾つかの実施例において、目標の異なる部分が時間フレーム(例えば、1秒のうちの1/30番目又は1/60番目)において制限された距離を移動することができるという知識は、制約として使用することができる。そのような制約は、モデルの画素受信位置への力の印加に起因するある姿勢を除外するために使用され得る。
【0111】
[00122]145に示されるように、モデルが調節され任意に制約された後、処理は、新たな合成された奥行き画像へのモデルの新たなラスタライズを始めるために元に戻ることができ、当該新たな合成された奥行き画像は、モデルに対してさらなる調節を行うことができるように、その後、観察された奥行き画像と比較されてもよい。このように、モデルはモデル化された目標をより密接に表すために次第に調節することができる。実質的に任意の数の反復がフレームごとに達成されてもよい。より多くの反復はより正確な結果を達成し得るが、より多くの反復はまたより多くの計算オーバーヘッドを要求し得る。フレーム当たり2つ又は3つの反復が多くのシナリオにおいて適切であると考えられるが、幾つかの実施例においては1つの反復で十分であるかもしれない。
【0112】
[00123]146において、図7の方法100は、図11Bに示される変化などのモデルに対する変化に応答してスクリーン上のキャラクター(例えば、図12Aのプレーヤーのアバター190)の視覚的な外観を変更することを任意に含む。例えば、ゲーム機(例えば、図1A及び1Bのゲームシステム12)でコンピューターゲームをするユーザーは、本明細書において記載されるようなゲーム機によって追跡されてもよい。特に、骨格モデル(例えば、図11Aの骨格モデル180)を含む人体モデル(例えば、図3の人体モデル70)は、目標のゲームプレーヤーをモデル化するために使用されてもよく、人体モデルはスクリーン上のプレーヤーのアバターをレンダリングするために使用されてもよい。ゲームプレーヤーが1つの腕を真っすぐにすると、ゲーム機は、この動きを追跡し、次に追跡された動きに応じて、図11Bに描かれるようにモデル180を調節する。上述のように、ゲーム機はまた、1つ以上の制約を適用してもよい。そのような調節を行い、そのような制約を適用する際、図12Bに示されるように、ゲーム機は調整されたプレーヤーのアバター192を表示してもよい。これもまた図1Aの例として示され、ここで、プレーヤーのアバター24は、現実空間でパンチを繰り出すゲームプレーヤー18に応答して、ボクシングの対戦相手22をパンチするように示される。
【0113】
[00124]上述のように、視覚的な目標認識は、スクリーン上のキャラクター又はアバターの視覚的な外観の変更以外の目的のために行うことができる。そのため、すべての実施例においてスクリーン上のキャラクター又はアバターの視覚的な外観を変更する必要はない。上述のように、目標追跡は実質的に制限のない異なる目的に使用することができ、それらの多くはスクリーン上のキャラクターを変化させることに帰着しない。目標追跡及び/又はモデルの姿勢は、調節されると、ゲームなどのアプリケーションの任意の要素に実質的に影響するようにパラメーターとして使用することができる。
【0114】
[00125]147に示されるように、上述の処理は、後のフレームに対して繰り返すことができる。
[00126]本明細書において記載される構成及び/又は手法が本来例示的なものであり、多数の変更が可能であるので、これらの特定の実施例又は例が限定的な意味で考慮されるべきでないことが理解されるべきである。本明細書において記載された特定のルーチン又は方法は、任意の数の処理戦略のうちの1つ以上を表してもよい。そのため、示された様々な動作は、示されたシーケンスで、他のシーケンスで、並列に、又は省略された幾つかの場合において、行われてもよい。同様に、上述の処理の順序は変更されてもよい。
【0115】
[00127]本開示の主題は、本明細書に開示された様々な処理、システム及び構成、並びに他の特徴、機能、動作、及び/又は特性のほか、それらの任意の又はすべての均等物のすべての新規な自明でない組み合わせ及びサブコンビネーションを含む。
【特許請求の範囲】
【請求項1】
目標を追跡する方法であって、
ソース(20)から目標(18)の観察された奥行き画像(140)を受け取るステップ(102)と、
姿勢を有する前記目標のモデル(70)を得るステップ(112)と、
前記モデルを合成された奥行き画像(150)へとラスタライズするステップ(116)と、
前記観察された奥行き画像と前記合成された奥行き画像との間の差に少なくとも部分的に基づいて、前記モデルの姿勢を調節するステップ(142)と
を含む方法。
【請求項2】
前記観察された奥行き画像は複数の観察された画素を含み、1つ以上の観察された画素は、前記ソースとその観察された画素に対応する前記目標の一部との間の差を示す観察された奥行き値を含む請求項6に記載の方法。
【請求項3】
前記ソースが奥行きカメラを含む請求項1に記載の方法。
【請求項4】
前記ソースがステレオカメラを含む請求項1に記載の方法。
【請求項5】
前記モデルが、複数の関節によって調節可能に接続された複数の体の部分を含む請求項1に記載の方法。
【請求項6】
前記モデルが、複数の関節によって調節可能に接続された複数の骨格部材を含む請求項1に記載の方法。
【請求項7】
前記モデルが、多角形の端において調節可能に接続された複数の多角形を含むワイヤーフレームメッシュを含む請求項1に記載の方法。
【請求項8】
前記合成された奥行き画像が複数の合成された画素を含み、1つ以上の合成された画素は、前記ソースとその合成された画素により表される前記目標の一部との間の差を示す合成された奥行き値を含む請求項1に記載の方法。
【請求項9】
前記合成された奥行き画像が複数の合成された画素を含み、1つ以上の合成された画素は、その合成された画素が対応する前記目標の一部を示す体の一部のインデックスを含む請求項1に記載の方法。
【請求項10】
前記合成された奥行き画像が複数の合成された画素を含み、各合成された画素は、その合成された画素が対応する目標を示す目標インデックスを含む請求項1に記載の方法。
【請求項11】
前記モデルの姿勢を調節するステップは、観察された画素の観察された奥行き値と対応する合成された画素の合成された奥行き値との間の差に基づく請求項1に記載の方法。
【請求項12】
前記モデルの姿勢を調節するステップは、対応する合成された画素と異なる、観察された画素の体の一部のインデックスにさらに基づく請求項1に記載の方法。
【請求項13】
前記モデルの姿勢を調節するステップは、前記モデルの力受信位置に1つ以上の力を加えるステップ及びそのような力に応答して前記モデルが移動することを可能にするステップを含む請求項1に記載の方法。
【請求項14】
前記モデルの姿勢を調節するステップは、1つ以上の制約に従って前記モデルを修正するステップを含む請求項1に記載の方法。
【請求項15】
奥行き情報を得るように構成されたソース(48)と、
前記ソースに動作可能に接続された論理サブシステム(42)と、
前記ソースから目標の観察された奥行き画像を受け取り(102)、
姿勢を有する前記目標のモデルを取得し(112)、
前記モデルを合成された奥行き画像へとラスタライズし(116)、
前記観察された奥行き画像と前記合成された奥行き画像との間の差に少なくとも部分的に基づいて、前記モデルの姿勢を調節する(142)
ための、前記論理サブシステムによって実行可能な命令を保持するデータ保持サブシステム(44)と
を具備するコンピューティングシステム。
【請求項1】
目標を追跡する方法であって、
ソース(20)から目標(18)の観察された奥行き画像(140)を受け取るステップ(102)と、
姿勢を有する前記目標のモデル(70)を得るステップ(112)と、
前記モデルを合成された奥行き画像(150)へとラスタライズするステップ(116)と、
前記観察された奥行き画像と前記合成された奥行き画像との間の差に少なくとも部分的に基づいて、前記モデルの姿勢を調節するステップ(142)と
を含む方法。
【請求項2】
前記観察された奥行き画像は複数の観察された画素を含み、1つ以上の観察された画素は、前記ソースとその観察された画素に対応する前記目標の一部との間の差を示す観察された奥行き値を含む請求項6に記載の方法。
【請求項3】
前記ソースが奥行きカメラを含む請求項1に記載の方法。
【請求項4】
前記ソースがステレオカメラを含む請求項1に記載の方法。
【請求項5】
前記モデルが、複数の関節によって調節可能に接続された複数の体の部分を含む請求項1に記載の方法。
【請求項6】
前記モデルが、複数の関節によって調節可能に接続された複数の骨格部材を含む請求項1に記載の方法。
【請求項7】
前記モデルが、多角形の端において調節可能に接続された複数の多角形を含むワイヤーフレームメッシュを含む請求項1に記載の方法。
【請求項8】
前記合成された奥行き画像が複数の合成された画素を含み、1つ以上の合成された画素は、前記ソースとその合成された画素により表される前記目標の一部との間の差を示す合成された奥行き値を含む請求項1に記載の方法。
【請求項9】
前記合成された奥行き画像が複数の合成された画素を含み、1つ以上の合成された画素は、その合成された画素が対応する前記目標の一部を示す体の一部のインデックスを含む請求項1に記載の方法。
【請求項10】
前記合成された奥行き画像が複数の合成された画素を含み、各合成された画素は、その合成された画素が対応する目標を示す目標インデックスを含む請求項1に記載の方法。
【請求項11】
前記モデルの姿勢を調節するステップは、観察された画素の観察された奥行き値と対応する合成された画素の合成された奥行き値との間の差に基づく請求項1に記載の方法。
【請求項12】
前記モデルの姿勢を調節するステップは、対応する合成された画素と異なる、観察された画素の体の一部のインデックスにさらに基づく請求項1に記載の方法。
【請求項13】
前記モデルの姿勢を調節するステップは、前記モデルの力受信位置に1つ以上の力を加えるステップ及びそのような力に応答して前記モデルが移動することを可能にするステップを含む請求項1に記載の方法。
【請求項14】
前記モデルの姿勢を調節するステップは、1つ以上の制約に従って前記モデルを修正するステップを含む請求項1に記載の方法。
【請求項15】
奥行き情報を得るように構成されたソース(48)と、
前記ソースに動作可能に接続された論理サブシステム(42)と、
前記ソースから目標の観察された奥行き画像を受け取り(102)、
姿勢を有する前記目標のモデルを取得し(112)、
前記モデルを合成された奥行き画像へとラスタライズし(116)、
前記観察された奥行き画像と前記合成された奥行き画像との間の差に少なくとも部分的に基づいて、前記モデルの姿勢を調節する(142)
ための、前記論理サブシステムによって実行可能な命令を保持するデータ保持サブシステム(44)と
を具備するコンピューティングシステム。
【図1A】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11A】
【図11B】
【図12A】
【図12B】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11A】
【図11B】
【図12A】
【図12B】
【公表番号】特表2012−516504(P2012−516504A)
【公表日】平成24年7月19日(2012.7.19)
【国際特許分類】
【出願番号】特願2011−548016(P2011−548016)
【出願日】平成22年1月12日(2010.1.12)
【国際出願番号】PCT/US2010/020791
【国際公開番号】WO2010/088032
【国際公開日】平成22年8月5日(2010.8.5)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公表日】平成24年7月19日(2012.7.19)
【国際特許分類】
【出願日】平成22年1月12日(2010.1.12)
【国際出願番号】PCT/US2010/020791
【国際公開番号】WO2010/088032
【国際公開日】平成22年8月5日(2010.8.5)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]