【文献】
O.Ben Henia,A Two-step Minimization Algorithm For Model-Based Hand Tracking,WSCG 2010 FULL Papers Proceedings,CZ,EUROGRAPHICS,2010年 2月 1日,P.189-196
【文献】
平川 幹和子,シルエット画像からの手形状認識,テレビジョン学会技術報告 Vol.20 No.27,日本,社団法人テレビジョン学会,1996年 5月21日,VIS 96-49 (May. 1996),P.15-20,ISSN 0386-4227
【文献】
島田 伸敬,三次元モデルを用いた二次元動画像からの手指姿勢の推定,電子情報通信学会技術研究報告 Vol.94 No.50,日本,社団法人電子情報通信学会,1994年 5月19日,PRU94-4 (1994-05),P.25-32
【文献】
中山 太一郎,Camera−Based OCRを組み合わせた投影型書類アノテーション,画像ラボ 2007.7,日本,日本工業出版株式会社,2007年 7月 1日,第18巻 第7号,P.60-63,ISSN 0915-6755
(58)【調査した分野】(Int.Cl.,DB名)
請求項1記載の方法であって、前記検知メカニズムを介してコマンドを受け取るアプリケーションを実行するステップと、前記ステップ(b)において特定した前記手の位置に基づいて、前記アプリケーションにおいて制御動作に作用させるステップとを更に含む、方法。
請求項1記載の方法であって、前記検知メカニズムを介してコマンドを受け取るゲーム・アプリケーションを実行するステップと、前記ステップ(b)において特定した前記手の位置に基づいて、前記ゲーム・アプリケーションにおいて動作に作用させるステップとを更に含む、方法。
1本以上の指を含むユーザーの手のモデルを生成するシステムであって、当該システムが、計算デバイスに動作可能に結合されている検知メカニズムを含み、当該システムが、
画像データおよび深度データの内少なくとも1つを含む受信データから、ユーザーの骨格の少なくとも一部を認識する骨格認識エンジンと、
身体の1つ以上の領域を、前記ユーザーの手を表す領域に区分する画像区分エンジンと、
1本以上の指を含む手と、該手の向きとを表すデータを抽出する記述子抽出エンジンと
を備えており、
前記記述子抽出エンジンが、前記手を表す領域にある画素を分析する複数のフィルターを適用し、前記複数のフィルターにおける各フィルターが、前記手の境界形状に基づいて前記手の位置および向きを判定し、前記記述子抽出エンジンが、前記手の位置および向きの最良の推定値に到達するために、各フィルターの結果を組み合わせる、システム。
請求項9記載のシステムにおいて、前記記述子抽出エンジンの前記複数のフィルターが、前記手の位置および向きを、前記受信したデータを取り込むデバイスに対するシルエットとして特定するように最適化された1つ以上のフィルターを含む、システム。
請求項9記載のシステムにおいて、前記記述子抽出エンジンの前記複数のフィルターが、前記受信したデータを取り込むデバイスに向かって、または該デバイスから離れて指し示されたときに、前記手の位置および向きを、特定するように最適化された1つ以上のフィルターを含む、システム。
請求項9記載のシステムにおいて、前記記述子抽出エンジンの前記複数のフィルターが、前記検知メカニズムに対するシルエットとして手を分析する分類エンジンを含み、前記分類エンジンが、前記ユーザーの手を表す領域内にある画素を選択し、各画素の周囲に所定のサイズのボックスを形成し、各ボックスが、前記シルエットの平面内に形成され、前記画像データが前景点と背景点との間で移行する、各ボックスとの交点を判定し、調べる画素毎に各ボックスの交点を分析することから、手および指を特定する、システム。
請求項12記載のシステムにおいて、2つの交点がボックス上で特定され、前記交点間の距離が手の平を表すには小さすぎるときに、前記分類エンジンが、指先を表す重心を特定する、システム。
請求項12記載のシステムにおいて、2つの交点がボックス上で特定され、前記交点間の距離が指先を表すには大きすぎるときに、前記分類エンジンが、手の平を表す重心を特定する、システム。
請求項12記載のシステムにおいて、所与の画素の周囲に形成された前記ボックスが、第1サイズを有する第1ボックスであり、前記分類エンジンが、更に、前記第1サイズよりも大きい第2サイズを有する第2ボックスを有する第2ボックスを前記所与の画素の周囲に形成して、前記手の指が相互にある場合の条件を検出する、システム。
【発明を実施するための形態】
【0009】
[0030] これより、
図1Aから
図19Bを参照しながら本技術の実施形態について説明する。
図1Aから
図19Bは、全般的に、NUIシステムにおける画像センサーによって取り込まれた、ユーザーの手および指のハンド・モデル(hand model)を含む、目標ユーザーのコンピューター・モデルを生成するパイプラインに関するものである。このコンピューター・モデルは、取り込まれた画像データの1フレーム毎に1回生成することができ、フレーム取り込みの間における、ユーザーの姿勢を含む、最良の位置推定値を表す。フレーム毎に生成したハンド・モデル(hand model)は、ゲーミング・アプリケーションまたはその他のアプリケーションによって、ユーザーのジェスチャーおよび制御行為(action)というような事項を判定するために用いることができる。また、ハンド・モデルをパイプラインにフィードバックし、今後のモデル判定に役立てることもできる。
【0010】
[0031] まず最初に、
図1Aから
図2を参照すると、本技術を実現するハードウェアは、目標認識、分析、および追跡システム10を含む。このシステム10は、ユーザー18のような人間の目標物を認識、分析、および/または追跡するために用いることができる。目標認識、分析、および対駅システム10の実施形態は、ゲーミング・アプリケーションまたはその他のアプリケーションを実行する計算環境12を含む。計算環境12は、ゲーミング・アプリケーションおよびゲーム以外のアプリケーションというようなアプリケーションを実行するために計算環境12を用いることができるように、ハードウェア・コンポーネントおよび/またはソフトウェア・コンポーネントを含むことができる。一実施形態では、計算環境12は、標準的なプロセッサー、特殊プロセッサー、マイクロプロセッサー等を含むことができ、このプロセッサーは、本明細書において説明するプロセスを実行するために、プロセッサー読み取り可能記憶デバイスに格納されている命令を実行することができる。
【0011】
[0032] 更に、システム10は、キャプチャー・デバイスによって検知された1人以上のユーザーおよび/またはオブジェクトに関する画像およびオーディオ・データを取り込むキャプチャー・デバイス20も含む。実施形態では、キャプチャー・デバイス20は、身体および手の動き(movement)および/またはジェスチャー、ならびに1人以上のユーザーの音声に関する情報を取り込むために用いることができ、この情報は、計算環境によって受け取られ、ゲーミング・アプリケーションまたはその他のアプリケーションの態様(aspects)をレンダリングする、これらと対話処理する、および/またはこれらを制御するために用いられる。計算環境12およびキャプチャー・デバイス20の例については、以下で更に詳しく説明する。
【0012】
[0033] 目標認識、分析、および追跡システム10の実施形態は、ディスプレイ14を有するオーディオ/ビジュアル(A/V)デバイス16に接続することができる。デバイス16は、例えば、テレビジョン、電話機、コンピューター用モニター、高品位テレビジョン(HDTV)等であってもよく、ゲームまたはアプリケーションの映像および/または音響をユーザーに供給することができる。例えば、計算環境12は、グラフィクス・カードのようなビデオ・アダプター、および/またはサウンド・カードのようなオーディオ・アダプターを含むことができ、これらのアダプターはゲームまたはその他のアプリケーションに関連するオーディオ/ビジュアル信号を供給することができる。A/Vデバイス16は、計算環境12からオーディオ/ビジュアル信号を受け取ることができ、次いでこのオーディオ/ビジュアル信号に関連するゲームまたはアプリケーションの映像および/または音響をユーザー18に出力することができる。一実施形態によれば、オーディオ/ビジュアル・デバイス16は、例えば、S−ビデオ・ケーブル、同軸ケーブル、HDMI(登録商標)ケーブル、DVIケーブル、VGAケーブル、コンポーネント・ビデオ・ケーブル等を通じて、計算環境12に接続することができる。
【0013】
[0034] 実施形態では、計算環境12、A/Vデバイス16、およびキャプチャー・デバイス20は、協働してアバターまたは画面上のキャラクタ19をディスプレイ14上にレンダリングすることができる。例えば、
図1Aは、サッカー・ゲーミング・アプリケーションをプレーしているユーザー18を示す。このユーザーの動きを追跡し、アバター19の動きをアニメ化する(animate)ために用いる。実施形態では、アバター19は実世界空間におけるユーザー18の動きを模擬するので、ユーザー18は、ディスプレイ14上においてアバター19の動き(movement)および行為(action)を制御する動きおよびジェスチャーを行うことができる。
【0014】
[0035] 先に説明したように、骨格マッピング・システムのような動き推定ルーチンは、例えば、ユーザーの手の動きというような、ユーザーの微妙なジェスチャーを検出する能力に欠けることがある。例えば、ユーザーが、
図1Bに示すように、彼または彼女の手によってユーザー・インターフェース21全体をスクロールして制御することによって、NUIシステム10と対話処理することを望む場合もあり得る。あるいは、ユーザーが、例えば、
図1Cにおいて23および25として示すように、彼女の手を開くおよび/または閉じることによって、種々のジェスチャーを行おうとする場合もあり得る。
【0015】
[0036] したがって、本明細書において以下で説明するシステムおよび方法は、ユーザーの手の状態を判定することを対象とする。例えば、手を閉じるおよび開く動作は、画面上にあるオブジェクト、例えば、オブジェクト27(
図1C)を選択する、係合する、または掴んで引きずるというようなイベントを誘起するために、このようなシステムによって用いることができる。これらの行為は、本技術以外では、コントローラーを用いるときであれば、ボタンを押すことに対応するであろう。このようなコントローラー不要の細かな対話処理は、手を振る行為やホバリングする(hovering)行為に基づく手法が直感的でなく煩わしい場合もあるので、その代わりに用いることができる。種々の他のジェスチャー、制御動作、およびアプリケーションも、本技術によって、手の動きを認識し追跡するために実施可能にすることができる。これらの一部について以下で更に詳しく説明する。以下で説明するようにユーザーの手の状態を判定することによって、ユーザーのシステムとの対話処理性を高めることができ、一層簡単で直感的なインターフェースをユーザーに提示することができる。
【0016】
[0037]
図1Aおよび
図1Bは、床、椅子、および植物というような静止した背景オブジェクト23を含む。これらは、キャプチャー・デバイス20によって捉えられる視野(FOV)内にあるオブジェクトであるが、フレーム毎に変化しない。図示する床、椅子、および植物に加えて、静止オブジェクトは、キャプチャー・デバイス20内にある撮像カメラによって捉えられるいずれのオブジェクトでもよい。この場面内にある追加の静止オブジェクトには、あらゆる壁、天井、窓、ドア、壁の飾り等を含むことができる。
【0017】
[0038] システム10およびそのコンポーネントに適した例が、以下の同時係属中の特許出願において見いだせる。これらの特許出願の全ては、ここで引用したことによって、具体的に本願にも包含するものとする。2009年5月29日に出願され"Environment and/or Target Segmentation"(環境および/または目標物区分)と題する米国特許出願第12/475,094号、2009年7月29日に出願され"Auto Generating a Visual Representation"(視覚表現の自動生成)と題する米国特許出願第12/511,850号、2009年5月29日に出願され"Gesture Tool"(ジェスチャー・ツール)と題する米国特許出願第12/474,655号、2009年10月21日に出願され"Pose Tracking Pipeline"(姿勢追跡パイプライン)と題する米国特許出願第12/603,437号、2009年5月29日に出願され"Device for Identifying and Tracking Multiple Humans Over Time"(ときの経過と共に複数の人間を識別および追跡するデバイス)と題する米国特許出願第12/475,308号、2009年10月7日に出願され"Human Tracking System"(人間追跡システム)と題する米国特許出願第12/575,388号、2009年4月13日に出願され"Gesture Recognizer System Architecture"(ジェスチャー認識システムのアーキテクチャー)と題する米国特許出願第12/422,661号、および2009年2月23日に出願され"Standard Gesture"(標準的なジェスチャー)と題する米国特許出願第12/391,150号。
【0018】
[0039]
図2は、目標認識、分析、および追跡システム10において用いることができるキャプチャー・デバイス20の一実施形態例を示す。一実施形態例では、キャプチャー・デバイス20は、例えば、飛行時間、構造化光、ステレオ画像等を含む、いずれかの適した技法によって、深度値を含む深度画像を有するビデオを取り込むように構成することができる。一実施形態によれば、キャプチャー・デバイス20は、計算した深度情報を「Zレイヤー」に編成することができる。即ち、深度カメラからその見通し線に沿って延びるZ軸に対して垂直であることができるレイヤーに編成することができる。XおよびY軸は、Z軸に対して垂直であると定義することができる。Y軸は垂直であり、X軸は水平であるとよい。X,Y,Z軸は、併せて、キャプチャー・デバイス20によって取り込まれる3−D実世界空間を定める。
【0019】
[0040]
図2に示すように、キャプチャー・デバイス20は、撮像カメラ・コンポーネント22を含むことができる。一実施形態によれば、撮像カメラ・コンポーネント22は、場面の深度画像を取り込むことができる深度カメラであるとよい。深度画像は、取り込んだ場面の二次元(2−D)画素エリアを含むことができ、この2−D画素エリアにおける各画素が、取り込まれた場面におけるオブジェクトの長さまたはオブジェクトのカメラからの距離というような深度値、例えば、センチメートル、ミリメートル等の単位で表すことができる。
【0020】
[0041]
図2に示すように、一実施形態例によれば、撮像カメラ・コンポーネント22は、IR発光素子24、三次元(3−D)カメラ26、およびRGBカメラ28を含むことができ、これらは場面の深度画像を取り込むために用いることができる。例えば、飛行時間分析では、キャプチャー・デバイス20のIR発光素子24は、場面に向けて赤外線光を放出することができ、次いでセンサー(図示せず)を用いて、その場面の中にある1つ以上の目標物およびオブジェクトの表面からの後方散乱光を、例えば、3Dカメラ26および/またはRGBカメラ28を用いて検出することができる。
【0021】
[0042] 実施形態の中には、パルス状赤外線光を用いて、出射光パルスと対応する入射光パルスとの間の時間を測定し、キャプチャー・デバイス20から場面内にある目標物またはオブジェクト上における特定の場所までの物理的距離を判定するために、この時間を用いることができるようにするとよい場合がある。加えて、他の実施形態例では、出射光波の位相を入射光波の位相と比較して、位相ずれを判定することもできる。次いで、位相ずれを用いて、キャプチャー・デバイス20から目標物またはオブジェクト上の特定の場所までの物理的距離を判定することができる。
【0022】
[0043] 他の実施形態例によれば、飛行時間分析を用いて、例えば、散乱光パルス撮像(shuttered light pulse imaging)を含む種々の技法によって、経時的な光の反射ビームの強度を分析することにより、キャプチャー・デバイス20から目標物またはオブジェクト上の特定の場所までの物理的距離を間接的に判定することもできる。
【0023】
[0044] 他の一実施形態例では、キャプチャー・デバイス20は、構造化光を用いて深度情報を取り込むことができる。このような分析では、パターン光(即ち、格子パターン、縞模様パターンのような既知のパターンとして表示される光)を、例えば、IR発光素子24によって場面に向けて投射する。場面における1つ以上の目標物またはオブジェクトの表面に衝突したときに、パターンが、それに応答して、変形することができる。このようなパターンの変形を、例えば、3Dカメラ26および/またはRGBカメラ28によって取り込むことができ、次いで分析して、キャプチャー・デバイス20から目標物またはオブジェクト上における特定の場所までの物理的距離を判定することができる。
【0024】
[0045] 他の実施形態によれば、キャプチャー・デバイス20は、2つ以上の物理的に分離されたカメラを含むことができ、これらが異なる角度から1つの場面を捕らえて、視覚的な立体像を得て、これを解明することによって深度情報を生成することができる。他の実施形態例では、キャプチャー・デバイス20は、ポイント・クラウド・データ(point cloud data)および目標ディジタル化技法を使用して、ユーザーの特徴を検出することもできる。更に他の実施形態では、例えば、x,y,z軸を検出することができる超音波システムのような、他のセンサー・システムも用いることができる。
【0025】
[0046] 更に、キャプチャー・デバイス20は、マイクロフォン30を含むこともできる。マイクロフォン30は、音響を受けて電気信号に変換する変換器またはセンサーを含むことができる。一実施形態によれば、マイクロフォン30は、目標認識、分析、および追跡システム10においてキャプチャー・デバイス20と計算環境12との間におけるフィードバックを減らすために使用することができる。加えて、マイクロフォン30は、計算環境12によって実行することができる、ゲーム・アプリケーション、ゲーム以外のアプリケーション等のようなアプリケーションを制御するために、ユーザーが供給することもできるオーディオ信号を受け取るために用いることもできる。
【0026】
[0047] 一実施形態例では、キャプチャー・デバイス20は、更に、撮像カメラ・コンポーネント22と動作可能に通信することができるプロセッサー32も含むことができる。プロセッサー32は、命令を実行することができる標準的なプロセッサー、特殊プロセッサー、マイクロプロセッサー等を含むことができる。これらの命令には、深度画像を受け取り、この深度画像に適した目標物が含まれ得るか否か判定を行い、適した目標物をその目標物の骨格表現またはモデルに変換する命令、またはあらゆる他の適した命令を含むことができる。
【0027】
[0048] 更に、キャプチャー・デバイス20は、メモリー・コンポーネント34も含むことができる。メモリー・コンポーネント34は、プロセッサー32が実行することができる命令、3−DカメラまたはRGBカメラが取り込んだ画像または画像のフレーム、あるいは他のいずれかの適した情報、画像等を格納することができる。一実施形態例によれば、メモリー・コンポーネント34は、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)、キャッシュ、フラッシュ・メモリー、ハード・ディスク、または他のいずれかの適した記憶コンポーネントを含むことができる。
図2に示すように、一実施形態では、メモリー・コンポーネント34は、撮像カメラ・コンポーネント22およびプロセッサー32と通信可能な別個のコンポーネントであってもよい。他の実施形態によれば、メモリー・コンポーネント34をプロセッサー32および/または撮像カメラ・コンポーネント22に統合してもよい。
【0028】
[0049]
図2に示すように、キャプチャー・デバイス20は、通信リンク36を介して計算環境12と通信することができる。通信リンク36は、例えば、USB接続、Firewire接続、イーサネット(登録商標)・ケーブル接続等のような有線接続、および/またはワイヤレス802.11b,g,a,n接続のいずれかのようなワイヤレス接続であってもよい。一実施形態によれば、計算環境12は、クロックをキャプチャー・デバイス20に通信リンク36を介して供給することができ、このクロックは、例えば、いつ場面を取り込むべきか判断するために用いることができる。
【0029】
[0050] 加えて、キャプチャー・デバイス20は、例えば、3−Dカメラ26および/またはRGBカメラ28によって取り込まれた深度情報および画像も供給することができる。これらのデバイスの補助によって、本技術にしたがって、部分的な骨格モデルを作り出し、結果的に得られたデータを計算環境12に通信リンク36を介して供給する。
【0030】
[0051] 更に、計算環境12は、以下に説明するようにジェスチャーを認識するジェスチャー認識エンジン190も含むことができる。本システムによれば、計算環境12は、更に、骨格認識エンジン192、画像区分エンジン194、記述子抽出エンジン196、および分類エンジン198も含むことができる。これらのソフトウェア・エンジンの各々について、以下に更に詳しく説明する。
【0031】
[0052]
図3は、骨格認識エンジン192によって生成された身体モデル例の非限定的な視覚表現を示す。身体モデル70は、モデル化した目標物(例えば、
図1Aおよび
図1Bからのユーザー18)の機械表現である。この身体モデルは、ゲームまたは他のアプリケーション/オペレーティング・システムの言語で、モデル化した目標物を集合的に定義する1組の変数を含む1つ以上のデータ構造を含むことができる。
【0032】
[0053] 目標物のモデルは、本開示の範囲から逸脱することなく、様々に構成することができる。例の中には、モデルが、剛性(rigid)形状および/または変形可能形状を含む三次元モデル、または身体部分として目標物を表す1つ以上のデータ構造を含むとよい場合もある。各身体部分は、数学的原線として特徴付けることができ、その例には、異方的に拡縮された球体(anisotropically-scaled sphere)、円筒、異方性円筒、滑らかな円筒、箱形、面取された箱形(beveled box)、角柱等が含まれるが、これらに限定されるのではない。
【0033】
[0054] 例えば、
図3の身体モデル70は、身体部分bp1からbp14までを含み、その各々が、モデル化された目標物の異なる部分を表す。各身体部分は、三次元形状である。例えば、bp3は、モデル化された目標物の左手を表す矩形角柱であり、bp5は、モデル化された目標物の左上腕を表す八画柱である。1つの身体モデルがいずれの数の身体部分でも含んでもよく、その各々が、モデル化された目標物の対応する部分のいずれの機械理解可能な表現であってもよいことから、身体モデル70は例示である。
【0034】
[0055] 2つ以上の身体部分を含むモデルは、1つ以上の関節も含むことができる。各関節は、1つ以上の身体部分が1つ以上の他の身体部分に対して動かせるようにすることができる。例えば、人間の目標物を表すモデルは、複数の剛性の身体部分および/または変形可能な身体部分を含むことができ、一部の身体部分は、この人間の目標物の対応する解剖学的な身体部分を表すことができる。更に、モデルの各身体部分は、1つ以上の構造的部材(即ち、「骨」または骨格要素)を含むことができ、関節は隣接する骨の交点に位置する。尚、一部の骨には人間の目標物における解剖学的な骨に対応すると考えられるものがあること、および/または骨の一部は人間の目標物において対応する解剖学的な骨を有さないと考えられるものがあることが理解されて然るべきである。
【0035】
[0056] 骨および関節は、集合的にスケルトン・モデルを構成することができ、このスケルトン・モデルが他のモデルの構成要素となることもある。実施形態の中には、骨格モデルが、
図3のモデル70のような、他のタイプのモデルの代わりに用いられてもよい場合もある。このスケルトン・モデルは、身体部分毎に1つ以上のスケルトン部材と、隣接するスケルトン部材間に関節とを含む。三次元スケルトン・モデルの例、スケルトン・モデル80およびスケルトン・モデル82を、それぞれ、
図4および
図5に示す。
図4は、前方から見たスケルトン・モデル80を示し、関節j1〜j33までを有する。
図5は、歪んだ視点から見たときのスケルトン・モデル82を示し、同様に関節j1〜j33までがある。本開示の主旨から逸脱することなく、骨格モデルは、これらよりも多い関節または少ない関節を含むのでもよい。以下で説明する本発明の更に他の実施形態は、31個の関節を有する骨格モデルを用いて動作する。
【0036】
[0057] 以上で説明した身体部分モデルおよび骨格モデルは、モデル化された目標物の機械表現として用いることができるタイプのモデルの非限定的な例である。他のモデルも、本開示の範囲に該当するものとする。例えば、モデルがポリゴン・メッシュ、パッチ、非均一有理B−スプライン(non-uniform rational B-spline)、再分割表面(subdivision surface)、または他の高次表面を含むのでもよい。また、モデルは、より精度高く衣服、髪、および/またはモデル化された目標物の他の態様を表すために、表面模様および/または他の情報も含むこともできる。任意に、モデルは、現在の姿勢、1つ以上の過去の姿勢、および/またはモデルの物理的特性に関する情報を含んでもよい。尚、姿勢を取ることができる種々の異なるモデルが、本明細書において説明した目標認識、分析、および追跡システムと調和することは、理解されてしかるべきである。
【0037】
[0058] キャプチャー・デバイス20のFOV内にいる1人以上のユーザーの骨格モデルを生成するソフトウェア・パイプラインは周知である。このようなシステムの1つが、2010年9月7日に出願され、"System For Fast, Probabilistic Skeletal Tracking"(高速確率的骨格追跡システム)と題する米国特許出願第12/876,418号に開示されている。この出願をここで引用したことにより、その内容全体が本願に包含するものとする。ある一定条件の下では、例えば、ユーザーがキャプチャー・デバイス20に十分近接しており、ユーザーの手の少なくとも1つが他の背景ノイズから区別可能である場合、ソフトウェア・パイプラインは、更に、FVO内にいる1人以上のユーザーの手および/または指のハンド・モデルを生成することができる場合もある。
【0038】
[0059]
図6は、ユーザーの手および/または指を認識し追跡するソフトウェア・パイプラインのフローチャートである。ステップ200において、このパイプラインはキャプチャー・デバイス20から深度画像を受け取る。ユーザーの一部の深度画像を
図7において302で示す。この深度画像における各画素は、例えば
図7に示すような、中間階調(gray-scale gradient)による深度情報を含む。例えば、302において、黒くなっているユーザーの左手によって示されるように、ユーザーの左手の方がキャプチャー・デバイス20の近くにある。キャプチャー・デバイスまたは深度カメラは、観察中の場面におけるユーザーの画像を取り込む。以下で説明するように、ユーザーの深度画像は、ユーザーの領域の距離情報、ユーザーの倍率(scale)情報、湾曲、およびユーザーの骨格情報を判定するために用いることができる。
【0039】
[0060] ステップ204において、このパイプラインの骨格認識エンジン192は、ステップ200において得られた深度画像から仮想骨格を得るために、先に説明したようにユーザーの骨格モデルを推定する。例えば、
図7には、302に示ユーザーのす深度画像から推定した、仮想骨格304が示されている。
【0040】
[0061] ステップ208において、このパイプラインは、当該パイプラインの画像区分エンジン194によって、ユーザーの一方または両方の手を区分する。例の中には、画像区分エンジン194が、付加的に、手に加えて、身体の1つ以上の領域も区分するとよい場合もある。ユーザーの手を区分するステップは、手に対応する深度画像の領域を特定することを含む。この特定は、ステップ204において得られた骨格情報に少なくとも部分的に基づく。
図7は、推定したスケルトン304に基づいて、ユーザーの深度画像を、異なる陰影が付けられた領域で示すような、異なる領域306に区分する例を示す。
図7は、上にあげたユーザーの右手に対応する手の領域308の位置を特定する(localize)過程を示す。
【0041】
[0062] 手または身体領域は、種々の方法で区分するまたは位置を特定することができ、以上で説明した骨格推定において特定した関節から選択したものに基づくこともできる。一例として、深度画像における手の検出および位置特定は、推定した骨格からの推定した手首の関節および/または手先の関節(hand tip joint)に基づくことができる。例えば、実施形態の中には、手の関節周囲の深度画像の組織分布的な検索を用いて、深度画像における手の区分を実行し、深度画像における近隣の極値を指先の候補として突き止めるとよい場合もある。次いで、画像区分エンジン194は、推定した骨格から決定される身体サイズ(body size)の倍率、および境界識別のための深度不連続性を考慮に入れることによって、手の残り部分を区分する。
【0042】
[0063] 他の例として、ユーザーの手に対応する深度画像の領域を特定するために、フラッド・フィル(flood-fill)手法を採用することもできる。フラッド・フィル手法では、開始点および開始方向から深度画像を検索することができる。例えば、開始点は手首の関節としてもよく、開始方向は肘から手首の関節に向かう方向としてもよい。深度画像における近隣画素について、肘から離れ手先に向かう点を優先するための方法として、開始方向への投射に基づいて繰り返し採点しつつ、深度画像におけるユーザーの手の境界または極値を特定するために深度不連続というような深度一貫性制約を用いることができる。例の中には、固定値に基づいて開始方向の正および負双方の方向における深度マップ検索を制限するために閾値距離値を用いること、あるいは、例えば、ユーザーの推定サイズに基づいて閾値距離値を増減(scale)できる場合もある。
【0043】
[0064] 更に他の例として、骨格関節(例えば、手首または手先の関節)に基づいて位置付けられた境界球体(bounding sphere)または他の適した境界形状を用いて、深度画像における深度不連続までの全ての画素を含ませることもできる。例えば、深度不連続を特定するために、境界球体上でウィンドウを滑らすこともでき、この深度不連続は、深度画像の手の領域における境界を確定するために用いることができる。
【0044】
[0065] また、境界形状方法は、手の平の中心の回りに境界形状を置くために用いることもでき、境界形状は繰り返し特定することができる。このような繰り返し境界決定方法の一例が、"Kinext Developer Summit at GDC 2011: Kinext for XBOX 360"と題し、添付資料1として本明細書に添付されている、 David Tuftによる紹介、およびK. Abe, H. Saito, S. Ozawaによる"3D drawing system via hand motion recognition from cameras"(カメラからの手の動き認識による3D描画システム)(IEEE International Conference on Systems, Man, and Cybernetics, vol. 2, 2000)と題する刊行物において開示されている。この刊行物は、ここで引用したことにより、その内容全体が本願にも包含するものとする。
【0045】
[0066] 一般に、このような方法は、モデルから画素を選別する(cull)ために、数回の繰り返しパスを必要とする。各パスにおいて、この方法は球体の外側にある画素、または手を中心とする他の形状の外側にある画素を選別する。次に、この方法は手の先端から遠すぎる画素を選別する(腕のベクトルに沿って)。次いで、この方法はエッジ検出ステップを実行して、手の境界のエッジを検出し、接続されていない孤立点(islands)を取り除く。
図8のフローチャートにこのような方法からのステップ例を示す。ステップ224において、骨格認識エンジン192からの手関節データによって与えられる手の中心の回りに、境界形状を生成する。境界形状は、手全体を包囲できるくらいに十分に大きく、三次元である。ステップ226において、境界形状の外側にある画素を選別する。
【0046】
[0067] 尚、深度画像において、ユーザーの手が彼または彼女の身体に、またはユーザーの2つめの手に近接しており、これら他の身体部分からのデータが初期状態において区分された画像に含まれるということが起こる場合がある。区分画像における異なる重心を区別するために、接続成分区別(connected component labeling)を実行することもできる。重心は、手であることの可能性が最も高いが、そのサイズおよび手関節の位置に基づいて、重心を選択する。選択されなかった重心を選別すればよい。ステップ230において、添えられている腕(attached arm)からのベクトルに沿って手の先端から離れすぎている画素も選別してもよい。
【0047】
[0068] 骨格認識エンジン192からの骨格データはノイズが多い場合もあるので、手の中心を特定するために、手についてのデータを更に純化する。これは、画像を繰り返し用いて、各画素から手のシルエットのエッジまでの距離を測定することによって行うことができる。画像区分エンジン194は、次に、加重平均を計算して最大/最小距離を求めることができる。即ち、ステップ232において、区分された手の画像における画素毎に、手のシルエットのエッジまでのxおよびy軸に沿った最大距離を特定し、手のシルエットのエッジまでのxおよびy軸に沿った最小距離を特定する。エッジまでの距離を重みとして取り込み、次いで、測定した全ての画素にわたって、最小と判定された距離の加重平均を計算し、画像内における手の位置の中心らしき点を求める(ステップ234)。新たな中心を用いて、直前の繰り返しからの掌の中心の変化が何らかの許容度以内になるまで、本プロセスを反復的に繰り返すことができる。
【0048】
[0069] 手法の中には、手の領域の区分を、ユーザーが手を外側または上に、あるいは胴体の前に上げたときに実行するとよい場合もある。このようにすると、手の領域を身体から一層容易に区別できるので、深度画像における手の領域の特定が更に明確になると考えられる。ユーザーの手が手の平をキャプチャー・デバイス20に向けているときは、手の画像が特に明確になり、その時点において、この手の特徴をシルエットとして検出することができる。特徴にノイズが多い場合があるが、手のシルエットを得ることによって、例えば、指間の隙間を検出し、手の全体的な形状を見て、種々の異なる手法を用いてそれをマッピングすることに基づいて、手が何をしているのか、何らかの判断を伝えること(informed decision)が可能になる。これらの隙間およびその他の特徴を検出することにより、特定の指の認識、およびその指が指しているところの概略的な方向を認識することができる。
【0049】
[0070] 尚、以上で説明した例および区分例は、例示の目的に限って紹介したのであって、本開示の範囲を限定することは意図していないことは言うまでもない。一般に、いずれの手または身体部分区分方法でも、単独でまたは互いに組み合わせて、および/または以上で説明した方法例の内1つと組み合わせて用いることもできる。
【0050】
[0071]
図7のパイプラインを続けると、ステップ210では、領域、例えば、ステップ208において特定した手に対応する深度画像の領域に対する形状記述子を引き出す動作を含む。ステップ210のおける形状記述子は、記述子抽出エンジン196によって抽出され、手の領域を分類するために用いられるのに適した手の領域の表現であれば、いずれでもよい。実施形態の中には、形状記述子が、手の領域の形状をコード化または記述するために用いられるベクトルあるいは1組の数値とするとよい場合もある。
【0051】
[0072] 記述子抽出エンジン196は、形状記述子を抽出するために、ステップ210において種々のフィルターの内いずれでも用いることができる。1つのフィルターは、画素分類フィルター(image classifier)と呼ぶことができ、これより
図9のフローチャート、
図10の判断ツリー、および
図11から
図14の例示を参照しながら説明する。ステップ240において、区分画像の前景において1つの画素を選択する。これらは、ユーザーの手の一部であると少なくとも名目上(nominally)考えられる画素である。選択した画素の周囲において、選択した画素が中心に来る、既定サイズのボックスを取り込む。実施形態では、このボックスのサイズは、正規化した指の幅の1.5倍に選択するとよい。「正規化した指」とは、骨格モデルのサイズおよびキャプチャー・デバイス20からユーザーまでの検出距離に基づいて正規化したサイズに既に調節されているユーザーの指のことである。手の一部であると名目上考えられる画素毎に、次のステップを連続的に実行する。
【0052】
[0073] ステップ242において、画素分類フィルターは、ボックスのエッジがいくつ交差しているか判断する。交点とは、画像が前景(手の上)から背景(手の上ではない)に移行するところである。例えば、
図11Aは、指276、この指上において選択された画素278、およびこの画素の周囲にある半径rの前述のボックス280を示す。このボックスは、1つのエッジに沿って2点で、即ち、点281aおよび281bにおいて交差する。点281a,281bは、画像が前景(指)から背景に移行するところである。画素278がそれぞれのボックス280のエッジとの交点を2つ以上有する場合、以下で説明するように、手の重心を定める目的のために、画素278全てを指先(あるいは、以下で説明するように、拳または腕の一部)と見なすこととする。
【0053】
[0074] ステップ246において、画素分類フィルターは、これらの交点が同じエッジにあるのか、または異なるエッジにあるのか判断する。
図11Bに示すように、指は、同じエッジに沿うのではなく、2本の隣接するエッジに沿ってボックス280と交差することもある。この情報は、以下で説明するように、指を指し示している方向を判定するために、用いられる。
【0054】
[0075] 指先とは異なり、画素がそのボックス280と4つの点で交差するときは、以下で説明するように手の重心を定める目的のために、この画素を指と見なす。例えば、
図12は、選択された画素278が指先から十分に離れており、ボックスとの4つの交点281a、281b、281c、および281dがある例を示す。
【0055】
[0076]
図9のフローチャートのステップ242、および
図10の判断ツリーの264において、画素分類フィルターは、ボックス280のエッジの内いくつと交差しているかチェックする。交差しているエッジがない場合、265において、選択した画素はユーザーの手の平の内部にあると見なされる。即ち、ボックス280のサイズは、画素が指または指先の中にある場合には少なくとも2本のエッジと交差するように選択されているので、画素が手の上にあり交差するエッジがない場合、この画素は手の平の中にあると見なされる。2本のエッジと交差している場合、以下で説明するように、フィルターは266に進み、交差していないエッジの角がソリッド(solid)か(手の上)またはエンプティ(empty)か(背景)かをチェックする。267において、4本のエッジが交差している場合、以上で説明したようにこれを指と見なす。268においてボックス280のエッジが6回交差している場合、これは無効の読み取りと見なし、破棄する(ステップ250)。
【0056】
[0077] 再度266に戻り、2本のエッジが交差している場合、指先である可能性があるが、隣接する2本の指の間の空間である可能性もある。したがって、画素分類フィルターは、交差していないエッジの角をチェックする(ステップ248)。交差していないエッジの角がソリッドである場合、これは、ボックスがこれらの角において手の上にあり、交点は隣接する指の間にある谷を定めることを意味する。逆に、交差していないエッジの角がエンプティである場合(266に関連する図において示すように)、これは、ボックスがこれらの角において背景画素上にあり、交点が手の一部を定めることを意味する。
【0057】
[0078] 角がエンプティである場合、画素分類フィルターは、269において、交差点間における、コード長(chord length)と呼ばれる距離が指の最大幅未満であるか否かチェックする(ステップ252)。即ち、2つの交点がある場合、
図11Aに示すように指先である可能性がある。しかしながら、この画素は、
図13に示すように、腕の一部、または拳のような、手の一部である可能性もある。その場合、コード長282は、指の最大幅よりも大きい可能性がある。その場合、271(
図10)において、ボックス280が調べられている画素278は、腕または拳の上にあると言う。
【0058】
[0079] 指先または指を特定することに加えて、二点または四点交差が、指先/指が指し示している方向を明示することもできる。例えば、
図11Aにおいて、指の最大幅未満の2つの交点があったので、画素278は指先の中にあると判断された。しかしながら、このような交差を仮定すると、指先が指し示している方向について、推論を引き出すことができる。同じことは、
図12に示す指についても言える。
図11Aは、真上を指し示す指276を示す。しかし、指先276は、他の上向きの方向を指し示している可能性もある。指先276における点278付近にある他の点からの情報を用いると、この方向について更に推論を引き出すことができる。
【0059】
[0080]
図11Bは、二点交差を示し、指/指先が指し示している方向について追加の推論が得られる。即ち、共有する角までの距離の比率から、方向を推論することもできる。言い換えると、点281aおよび281b間のコード長は、三角形の斜辺を定める。この三角形は、点281a,281b間にある辺、および共有する角も含む。指は斜辺に対して垂直な方向を指し示していると推論することができる。
【0060】
[0081] 尚、1つの手で、2本の指が一緒になっていること、または3本の指が一緒になっていること、または4本の指が一緒になっていることも起こる場合がある。このため、手の中にある画素毎にボックス280を用いて以上のステップを実行した後、2本の指を合わせた最大幅よりも多少大きなボックス280を用いて、本プロセスを繰り返し、次いで3本の指を合わせた最大幅よりも多少大きなボックス280を用いて、本プロセスを再度繰り返す等とするとよい。
【0061】
[0082] 一旦画素分類フィルター・データが集められたなら、画素分類フィルターは次にステップ258(
図9)においてデータからハンド・モデルを構築することを試みる。例えば、指先である領域というような、小さな特定領域、即ち、重心、ならびに手の平である領域、および手区分ステップからの手の平の中心の着想(idea)がある。次いで、分類エンジン198は、指先とは分類されなかったが、これらが4点で交差したという事実によって指であると分類された指の重心を調べる。指または指先領域について、方向方位(directional orientation)も特定されている。指の重心が指先の重心と一直線状になっており、これらが互いに正しい相対位置にある場合、本アルゴリズムは、これらの重心が同じ指に属するとして、これらの重心を接続する。
【0062】
[0083] 次に、骨格のサイズおよび、指がどの位大きいと考えられるかに基づいて、指領域の向きを用いて、その指の拳があると考えられる所に投影する。また、決定したハンド・モデルを確認するためには、指の間で特定されたいずれの谷のサイズ、位置、および向きも用いることができる。次に、投影した拳の位置を手の平に接続する。完了したときに、画素分類エンジンは、骨格ハンド・モデル284を決定する。その例を2つ、
図14に示す。このモデルは、「指先、手および指を接続する拳、および手の平までの中心骨(center bone)に関する手追跡セグメントの縮小骨格モデル」と呼ぶこともでき、手の平の重心に接続された拳の重心に接続された指の重心に接続された指先の重心を含む。また、指先、指、拳、および/または手の平の重心位置の決定した位置を検証するまたは論じ合うために、更には手の一部を形成しないと判定されるかもしれない重心データを破棄するために、既知の手の外形および既知の腕位置からのこの手の位置に関するデータを用いることができる。
【0063】
[0084] 以上によって、手の1つ以上の部分がモデルから失われても、ハンド・モデルを構築できる。例えば、指が隠されていること、あるいはユーザーの身体または検出すべき他方の手に指が近すぎることもあり得る。または、ユーザーに指がない場合もある。画素分類フィルターは、それが検出した指および手の位置を用いて、ハンド・モデルを構築する。
【0064】
[0085] 画素分類フィルターに加えてまたはその代わりに実行することができる他のフィルターがあってもよく、湾曲分析フィルターと呼ぶことができるものがある。このフィルターは、区分された手のシルエットの境界に沿った湾曲に照準をあて、指を区別する試みにおいてピークおよび谷を判定する。
図15におけるフローチャートを参照すると、ステップ286において、第1画素から開始して、周囲にある8つの画素を調べて、どれが手の上における次の画素であるか判定を行う。このために、その画素と次の画素との間の接続性(connectivity)について、0から7までの値を各画素に割り当てる。手のシルエットの周囲に、一連のこれらの数値を並べる(build)と、手の境界が得られる。ステップ288において、これらの値を、角度および手の回りの輪郭に変換すると、
図16に示すような、手の輪郭およびピークのグラフを得ることができる。手の輪郭およびピークを生成するためのこれらのステップについては、例えば、F. Leymarie, M.D. Levineによる"Curvature morphology"(湾曲形態), Computer Vision and Robotics Laboratory, McGill University, Montreal, Quebec, Canada, 1988と題する論文において記載されている。この論文をここで引用したことにより、その内容全体を本願に包含するものとする。
【0065】
[0086] ステップ289において、手のシルエット周囲にあるピークを特定し、ピークの種々の特徴に関して各々を分析する。ピークは、開始点、ピーク、および終点によって定めることができる。これら3つの点は、以下で説明するように、三角形を形成することができる。調べるとよいピークの種々の特徴には、例えば、次の事項が含まれる。
【0066】
・ピークの幅
・所与のピークの最大高さ
・ピーク内における湾曲サンプルの平均高さ
・ピーク形状比(最大高さ/平均高さ)
・ピークの面積
・手からピークまでの距離
・肘から手への方向(x,y,z)
・ピーク方向および腕の方向のクロス積(腕の方向とピーク方向との間の角度がどれ位小さいか)
・ピーク開始点と最大点との間のベクトル、および最大点と終点との間のベクトルのクロス積
[0087] ステップ290において、例えば、サポート・ベクトル・マシン(support vector machine)のような種々の機械学習技法によって、この情報を使い回し(run)、指および手を区別することができる。サポート・ベクトル・マシンは周知であり、例えば、C. Cortes and V. VapnikのSupport-Vector Networks, Machine Learning(サポート・ベクトル・マシン・ネットワーク、機械学習)と題する論文(20(3):273-297, September 1995)、およびVladimir N. VapnikのThe Nature of Statistical Learning Theory(統計学習理論の特徴)と題する論文 (Springer, New York, 1995) に記載されている。これらの論文をここで引用したことにより、それらの内容全体が本願にも含まれるものとする。実施形態では、隠れマルコフ・モデルを用いて、ノイズの多いデータをスムージングして、ノイズのない手およびフィルターの状態を維持することができる。
【0067】
[0088] 以上で説明したフィルターは、手のシルエットに関係するデータを調べることから、シルエット・フィルターと称することもできる。用いることができる更に他のフィルターに、ヒストグラム・フィルターがあり、深度データを用いてハンド・モデルを構築することから、深度フィルターと称する。このフィルターは、以上で説明したフィルターに加えて、またはその代わりに用いることができ、特に、ユーザーが彼または彼女の手を画像キャプチャー・デバイス20に向けて指し示すときに有用であると考えられる。
【0068】
[0089] ヒストグラム・フィルターでは、手の領域における距離のヒストグラムを構築することができる。例えば、このようなヒストグラムは15個のビンを含むことができ、各ビンは、手の領域において、最も近い点からカメラまでのZ−方向(深度)の距離、そのビンに関連付けられている一定の距離範囲以内である点の数を含む。例えば、このようなヒストグラムにおける第1のビンは、手の領域において、手の重心までの距離が0および0.40センチメートルの間である点の数を含むことができ、第2のビンは、手の領域において、手の重心までの距離が0.40および0.80センチメートルの間である点の数を含む等である。このようにして、手の形状をコード化するベクトルを構築することができる。更に、このようなベクトルは、例えば、推定した身体の大きさに基づいて正規化することもできる。
【0069】
[0090] 他の手法例では、手の領域における点から、推定したユーザーの骨格からの関節、骨区間(bone segment)、または手の平の面、例えば、肘関節、手首関節等までの距離および/または角度に基づいて、ヒストグラムを構築することもできる。
図17は、閉じた手および開いた手について判定したヒストグラムを示す2つのグラフを示す。
【0070】
[0091] 尚、形状記述子のフィルター例は、性質上例示であり、本開示の範囲を限定することは意図していないことは言うまでもない。一般に、手の領域に適した形状記述子であればいずれも、単独で、あるいは互いに組み合わせて、および/または以上で説明した方法例の内1つと組み合わせて用いることもできる。例えば、以上で説明したヒストグラムまたはベクトルのような形状記述子は、もっと大きなベクトルと混合すること、照合する(match)こと、組み合わせること、および/または連結すること等が可能である。これによって、個々にこれらを見ても特定できなかった新たなパターンの特定が可能になると考えられる。これらのフィルターは、履歴フレーム・データの使用により増強することもできる。履歴フレーム・データは、例えば、特定した指が、以前のフレームにおいて特定したその指から逸脱し過ぎているか否か示すことができる。
【0071】
[0092]
図18は、以上で説明した種々のフィルターの結果を組み合わせるスーパーバイザー・フィルター(supervisor filter)を示す。例えば、手および指のモデルを生成するためには、画素分類フィルターを用いることができる。更に、画素分類フィルター、湾曲分析フィルター、深度ヒストグラム・フィルター、および
図19に示されていない他の可能なハンド・フィルターを、以上で説明したように処理し、更に、例えば、時間的整合性フィルターリング(例えば、ロー・パス・フィルター)およびスムージング技法によって処理して、手および指の位置を求めることができる。前述のように、本明細書において説明した種々のフィルターで用いたシルエットは、その手のサイズおよびセンサー距離が、カメラからのユーザーの距離および分析した骨格から推論される手のサイズの知識によって影響を受けない(invariant)ように、拡縮する(scale)こともできる。
【0072】
[0093] 開いた手または閉じた手の状態に加えて、本技術は、例えば、1本以上の指によって特定の方向を指し示すというような、特定の指の向きを識別するためにも用いることができる。また、本技術は、x,y,zデカルト空間内において種々の角度に向けられた種々の手の位置を識別するためにも用いることができる。
【0073】
[0094] 実施形態では、ステップ216(
図6)における手および指の位置の推定の精度を高めるために、種々の分類後フィルターリング・ステップを採用するとよい。例えば、時間的整合性フィルターリング・ステップを、連続する深度画像フレーム間において予測した手および指の位置に適用して、予測をスムージングし、例えば、偽りの手の動き、センサーのノイズ、または場合によって起こり得る分類の誤りによる時間的ジッタリング(temporal jittering)を低減することができる。即ち、キャプチャー・デバイスまたはセンサーからの複数の深度画像に基づく複数の手および指の位置を推定し、手および指の位置を推定するための複数の推定値の時間的フィルターリングを実行することができる。
【0074】
[0095] ステップ220において、
図6のパイプラインは、推定した手の状態に基づいて、フレーム毎に応答を出力することができる。例えば、計算システム10のコンソール12のような、計算システムのコンソールにコマンドを出力することができる。他の例として、ディスプレイ・デバイス16のようなディスプレイ・デバイスに、応答を出力することもできる。このように、推定した手の状態を含む、推定したユーザーの動きを、システム10のコンソール12へのコマンドに変換することができるので、ユーザーは、前述のように、システムと対話処理することができる。更に、以上で説明した方法およびプロセスは、ユーザーの身体のいずれの部分、例えば、口、目等についても推定値を決定するために実装することができる。例えば、以上で説明した方法を用いて、ユーザーの身体部分の姿勢を推定することもできる。
【0075】
[0096] 本技術は、例えば、
図1Aから
図1Cに示したようなNUIシステムとの多種多様な対話処理を可能にする。 広い範囲の自然な対話処理があり、手/指の動きに基づくもの、または大きな身体の動きおよびきめ細かい手の制御の双方を組み合わせるものもあり、これらは、新たに認識するジェスチャー、一層深く没頭する体験、および非常におもしろいゲームを創作するには望ましい。これらの使用および対話処理は、以下のことを含むが、これらに限定されるのではない。
【0076】
・高忠実度カーソル位置を与える。ユーザーが指し示す指を認識し、正確に追跡することによって、NUIシステムは、画面上においてカーソルを位置付けることに関して、ユーザーがどこを指し示しているのか、精度高く判断することができる(
図1B)。
【0077】
・指が指す方向の推定(aiming)。一般に、ユーザーの1本または複数本の指の正確な認識および追跡は、NUIシステムおよびゲーミング・アプリケーション、またはNUIシステム上で実行する他のアプリケーションの制御およびそれとの対話処理を改良する種々の方法のいずれにおいても用いることができる。種々の手の構成の認識は、例えば、限定ではないが、指で数えること、親指を上に向けること、親指を下に向けること、「OK」の合図、角の手真似(人差し指および小指を上に向ける)、「くつろいでいる」ことの手真似、スター・トレック(登録商標)の「長寿と繁栄を」の合図、1本の指を立てること、およびその他というような、ジェスチャーの認識に用いることができる。これらの各々は、ユーザー・インターフェースの対話処理を進めるために用いることもできる。
【0078】
・仮想ボタン(触覚フィードバックによる)−個々の指を精度高く認識し追跡することによって、アプリケーションが種々の仮想ボタンを使用するが可能になり、更にNUI体験を改良することができる。
【0079】
・親指および指の制御−親指の向きを解釈し、他の指から親指を信頼性高く検出することによって、手はコントローラーの役割を果たすことができる。親指の向きがコントローラーの向きを決め(drive)、親指を手に押し付けることは、ボタン押下と認識される。
【0080】
・選択するための挟む仕草(pinching)−個々の指を正確に認識し追跡することによって、アプリケーションは親指と他の指との間で挟む動きを用いて、何らかの制御機能またはアプリケーションのメトリック(metric)に作用させることが可能になる。
【0081】
・1本/多数本の指の方向−個々の指を正確に認識し追跡することによって、アプリケーションは指の相対的な位置を制御メトリックとして用いること、または他の何らかのアプリケーション・メトリックを得ることが可能になる。
【0082】
・筆記、描画、スカルプト− 個々の指を正確に認識し追跡することによって、アプリケーションはユーザーがペンまたは絵筆を掴んでいることを解釈し、個々の指が動くときにこのペンまたは絵筆がどのように動くのか解釈することが可能になる。このような動きの認識により、ユーザーは、文字、筆記体、スカルプト(sculpt)を形成すること、および/または画像を描くことが可能になる。
【0083】
・タイプ入力−個々の指を正確に認識し追跡することによって、アプリケーションはタイプ入力の動きを行うことが可能になり、このタイプ入力の動きは、NUIシステムまたはアプリケーションによって仮想キーボード上のキー・ストロークとして解釈され、画面上でキャラクタまたは単語をタイプ入力すること、あるいは制御情報またはアプリケーション情報をNUIシステムまたはアプリケーションに提供することが可能になる。
【0084】
・手の回転の追跡−個々の指を正確に認識し追跡することによって、アプリケーションは手の回転を正確に特定することが可能になる。
・操る(puppeteering)−指の骨格をパペティア・アニメーション制御システムにマッピングする。あるいは、指の骨格のマッピングは、実在の糸に繋がれた実在の操り人形を操作するのと同じ形態で、仮想オブジェクトを直接操作するためにも用いることができる。
【0085】
・ノブまたは組み合わせ錠を回す−個々の指を正確に認識し追跡することによって、ユーザーは仮想ノブを選択して捻ること、または仮想組み合わせ錠を開錠することが可能になる。このような組み合わせ錠は、安全を確保したネットワークまたは格納されているリソースへのアクセスを提供または拒否するために用いることもできる。
【0086】
・銃を撃つ−指および手の検出を、銃のコントローラーとして用いる。人差し指が照準を決定し、親指の押下を、射撃を示すボタンとして用いる。
・はじく(flicking)ジェスチャー−空中で指をはじくジェスチャーを検出し、仮想対話処理に用いる。
【0087】
・手の平を開くジェスチャー−開いた手の平を用いてマップ・ビュー(map view)を表示することは、本人(first person)と第三者の視点の間における様式変化(modal change)を意味する。仮想空間にわたってスクロールしナビゲートするには、開いた手の平の上で人差し指を用いることができる(マウス、またはタッチ・スクリーン上の指と同様)。
【0088】
・脚部制御−人差し指および中指を用いて(手を下に向けたまま)、キャラクタの脚部を制御し、走る動作、飛ぶ動作、および蹴る動作をシミュレートする。このジェスチャーは、手の平を開くジェスチャーと組み合わせると、全身相互作用(full body interaction)とユーザー・インターフェースとの間の様式変化、またはナビゲーションを意味することができる。例えば、アクション・アドベンチャー・ゲームにおいて、プレーヤは、戦闘を開始するために全身制御を用い、次いで手の平を開くジェスチャーを用いて、マップ・ビューに切り替え、人差し指および中指を用いて、陸地を横断する走行をシミュレートすることができる。
【0089】
[0097] その他の指および手の相互作用も考えられる。
[0098]
図19Aは、目標認識、分析、および追跡システムにおいてユーザーの1つ以上の位置および動きを解釈するために用いることができる計算環境の一実施形態例を示す。
図1Aから
図2に関して先に説明した計算環境12のような計算環境は、ゲーミング・コンソールのような、マルチメディア・コンソール600であってもよい。
図19Aに示すように、マルチメディア・コンソール600は、レベル1キャッシュ602、レベル2キャッシュ604、およびフラッシュROM606を有する中央演算装置(CPU)601を有する。レベル1キャッシュ602およびレベル2キャッシュ604は、一時的にデータを格納し、こうしてメモリー・アクセス・サイクルの回数を減らすことによって、処理速度およびスループットを向上させる。CPU601は、1つよりも多いコア、つまり、追加のレベル1およびレベル2キャッシュ602および604を有するものを設けてもよい。フラッシュROM606は、実行可能コードを格納することができる。実行可能コードは、マルチメディア・コンソール600に電源を入れたときに、ブート・プロセスの初期段階の間にロードされる。
【0090】
[0099] グラフィクス処理ユニット(GPU)608およびビデオ・エンコーダー/ビデオ・コデック(コーダ/デコーダ)614は、高速および高解像度グラフィクス処理のためのビデオ処理パイプラインを形成する。データは、GPU608からビデオ・エンコーダー/ビデオ・コデック614にバスを通じて搬送される。このビデオ処理パイプラインは、テレビジョンまたは他のディスプレイへの送信のためにデータをA/V(オーディオ/ビデオ)ポート640に出力する。メモリー・コントローラー610は、限定ではないが、RAMのような種々のタイプのメモリー612にプロセッサーがアクセスし易くするために、GPU608に接続されている。
【0091】
[00100] マルチメディア・コンソール600は、I/Oコントローラー620、システム管理コントローラー622、オーディオ処理ユニット623、ネットワーク・インターフェース・コントローラー624、第1のUSBホスト・コントローラー626、第2のUSBコントローラー628、およびフロント・パネルI/Oサブアセンブリ630を含む。これらは、好ましくは、モジュール618上に実装されている。USBコントローラー626および628は、周辺コントローラー642(1)〜642(2)、ワイヤレス・アダプター648、および外部メモリー・デバイス646(例えば、フラッシュ・メモリー、外部CD/DVD ROMドライブ、リムーバブル媒体等)のためのホストとしての役割を果たす。ネットワーク・インターフェース624および/またはワイヤレス・アダプター648は、ネットワーク(例えば、インターネット、家庭内ネットワーク等)へのアクセスを与え、イーサネット(登録商標)・カード、モデム、Bluetoothモジュール、ケーブル・モデム等を含む広範囲にわたる種々の有線またはワイヤレス・アダプター・コンポーネントの内いずれでもよい。
【0092】
[00101] システム・メモリー643は、ブート・プロセスの間にロードされるアプリケーション・データを格納するために設けられている。メディア・ドライブ644が設けられており、DVD/CDドライブ、ハード・ドライブ、またはその他のリムーバブル・メディア・ドライブを備えることができる。メディア・ドライブ644は、マルチメディア・コンソール600の内部にあっても外部にあってもよい。アプリケーション・データには、マルチメディア・コンソール600が実行、再生等のために、メディア・ドライブ644を介してアクセスすることができる。メディア・ドライブ644は、シリアルATAバスまたはその他の高速接続(例えば、IEEE1394)のようなバスを介して、I/Oコントローラー620に接続されている。
【0093】
[00102] システム管理コントローラー622は、メディア・コンソール600が利用可能であることを確保することに関する種々のサービス機能を提供する。オーディオ処理ユニット623およびオーディオ・コデック632は、高忠実度およびステレオ処理を行う、対応のオーディオ処理パイプラインを形成する。オーディオ・データは、通信リンクを介して、オーディオ処理ユニット623とオーディオ・コデック632との間で搬送される。オーディオ処理パイプラインは、外部オーディオ・プレーヤーまたはオーディオ処理能力を有するデバイスによる再生のために、データをA/Vポート640に出力する。
【0094】
[00103] フロント・パネルI/Oサブアセンブリ630は、電力ボタン650およびイジェクト・ボタン652の機能をサポートするだけでなく、あらゆるLED(発光ダイオード)またはマルチメディア・コンソール600の外面上に表出されているその他のインディケーターもサポートする。システム電源モジュール636は、マルチメディア・コンソール600のコンポーネントに電力を供給する。ファン638は、マルチメディア・コンソール600内部にある回路を冷却する。
【0095】
[00104] CPU601、GPU608、メモリー・コントローラー610、およびマルチメディア・コンソール600内部にある種々のその他のコンポーネントは、1系統以上のバスを介して相互接続されている。これらのバスには、シリアルおよびパラレル・バス、メモリー・バス、周辺バス、ならびに種々のバス・アーキテクチャの内いずれかを用いるプロセッサー・バスまたはローカル・バスが含まれる。一例として、このようなアーキテクチャーは、ペリフェラル・コンポーネント相互接続(PCI)バス、PCI-Expressバス等を含むことができる。
【0096】
[00105] マルチメディア・コンソール600に電源を入れると、システム・メモリー643からメモリー612および/またはキャッシュ602、604にアプリケーション・データがロードされ、CPU601において実行することができる。アプリケーションは、グラフィカル・ユーザー・インターフェースを提示することができる。このグラフィカル・ユーザー・インターフェースは、マルチメディア・コンソール600において利用可能な異なるタイプのメディアにナビゲートするときに、一貫性のあるユーザー体験を提供する。動作において、アプリケーションおよび/またはメディア・ドライブ644内に収容されている他のメディアをメディア・ドライブ644から起動または再生して、マルチメディア・コンソール600に追加の機能を設けることもできる。
【0097】
[00106] マルチメディア・コンソール600は、単にシステムをテレビジョンまたはその他のディスプレイに接続することによって、単体システムとして動作させることができる。この単体モードでは、マルチメディア・コンソール600は、1人以上のユーザーがシステムと対話処理を行い、ムービーを見ること、または音楽を聞くことを可能にする。しかしながら、ネットワーク・インターフェース624またはワイヤレス・アダプター648によって利用可能となるブロードバンド接続機能を統合することにより、マルチメディア・コンソール600を更に大きなネットワーク・コミュニティにおける関与個体(participant)として動作させることもできる。
【0098】
[00107] マルチメディア・コンソール600に電源を入れると、マルチメディア・コンソールのオペレーティング・システムによって、設定されている量のハードウェア・リソースがシステムの使用のために確保される。これらのリソースは、メモリー(例えば、16MB)、CPUおよびGPUサイクル(例えば、5%)、ネットワーク接続帯域幅(例えば、8kbs)等の確保を含むことができる。これらのリソースは、システムのブート時に確保されるので、確保されたリソースは、アプリケーションの視点からは存在しない。
【0099】
[00108] 特に、メモリーの確保は、起動カーネル、コンカレント・システム・アプリケーション、およびドライバーを収容できる程に十分大きいことが好ましい。確保されたCPU使用量(usage)がシステム・アプリケーションによって用いられない場合、アイドルのスレッドがいずれかの未使用サイクルを消費するように、CPUの確保は一定であることが好ましい。
【0100】
[00109] GPUの確保に関して、GPU割り込みを用いてポップアップをオーバーレイにレンダリングするコードをスケジューリングすることによって、システム・アプリケーション(例えば、ポップアップ)が生成する軽量メッセージ(lightweight message)を表示する。オーバーレイに用いられるメモリー量は、オーバーレイのエリア・サイズによって異なり、オーバーレイは画面の解像度に合わせて倍率調整する(scale)ことが好ましい。コンカレント・システム・アプリケーションによってフル・ユーザー・インターフェースが用いられる場合、アプリケーションの解像度とは独立した解像度を用いることが好ましい。周波数を変更してTVの同期を取り直す必要性をなくすように、この解像度を設定するためにスケーラー(scaler)を用いるとよい。
【0101】
[00110] マルチメディア・コンソール600がブートして、システム・リソースが確保された後、コンカレント・システム・アプリケーションが実行してシステム機能を提供する。システム機能は、前述の確保したシステム・リソースの内部で実行する1組のシステム・アプリケーションの中にカプセル化されている。オペレーティング・システム・カーネルは、システム・アプリケーション・スレッドと、ゲーミング・アプリケーション・スレッドとの間でスレッドを識別する。一貫したシステム・リソース・ビューをアプリケーションに提供するために、システム・アプリケーションは、所定の時点および間隔でCPU601において実行するようにスケジューリングされていることが好ましい。このスケジューリングは、コンソール上で実行しているゲーミング・アプリケーションに対するキャッシュ破壊(disruption)を最少に抑えるためにある。
【0102】
[00111] コンカレント・システム・アプリケーションがオーディオを必要とする場合、時間に敏感であるため、ゲーミング・アプリケーションには非同期にオーディオ処理をスケジューリングする。マルチメディア・コンソール・アプリケーション・マネージャー(以下で説明する)は、システム・アプリケーションがアクティブのとき、ゲーミング・アプリケーションのオーディオ・レベル(例えば、無音化、減衰)を制御する。
【0103】
[00112] 入力デバイス(例えば、コントローラー642(1)および642(2))は、ゲーミング・アプリケーションおよびシステム・アプリケーションによって共有される。入力デバイスは、確保されるリソースではないが、各々がデバイスのフォーカス(focus)を有するように、システム・アプリケーションとゲーミング・アプリケーションとの間で切り換えられる。アプリケーション・マネージャーは、ゲーミング・アプリケーションの知識を用いずに入力ストリームの切換を制御し、ドライバーはフォーカス・スイッチ(focus switches)に関する状態情報を維持する。カメラ26、28およびキャプチャー・システム20は、コンソール600の追加の入力デバイスを定めることができる。
【0104】
[00113]
図19Bは、目標認識、分析、および追跡システムにおいて1つ以上の位置および動き(motion)を解釈するために用いられる、計算環境720の他の実施形態例を示す。計算環境720は、
図1Aから
図2に示した計算環境12であってもよい。計算システム環境720は、適した計算環境の一例に過ぎず、本明細書において開示される主題の使用範囲または機能に関して、いかなる限定を示唆する意図もない。また、計算環境720が、本明細書において例示されるいずれの1つのコンポーネントまたはコンポーネントの組み合わせに関して何らかの依存性または要件を有するように解釈してはならない。実施形態によっては、図示する種々の計算エレメントが、本開示の特定の態様をインスタンス化するように構成されている回路を含むこともあり得る。例えば、本開示において用いられる回路という用語は、ファームウェアまたはスイッチによって機能(1つまたは複数)を実行するように構成されている特殊ハードウェア・コンポーネントを含むことができる。別の実施形態例では、回路という用語は、機能(1つまたは複数)を実行するために動作可能なロジックを具体化するソフトウェア命令によって構成される汎用演算装置、メモリー等を含むことができる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、実装者(implementer)は、ロジックを具体化するソース・コードを書くことができ、ソース・コードを機械読み取り可能コードにコンパイルすることができ、この機械読み取り可能コードを汎用演算装置によって処理することができる。技術的現状では、ハードウェア、ソフトウェア、またはハードウェア/ソフトウェアの組み合わせの間には殆ど差がないというところまで発展していることを当業者は認めることができるので、特定の機能を実行するためにハードウェアまたはソフトウェアのどちらを選択するかということは、実装者に委ねられた設計選択事項である。更に具体的には、ソフトウェア・プロセスを等価のハードウェア構造に変換することができ、更にハードウェア構造自体を等価のソフトウェア・プロセスに変換することができることを、当業者は認めることができる。つまり、ハードウェアの実施態様およびソフトウェアの実施態様のどちらを選択するかということは、実装者に委ねられた設計選択事項の1つである。
【0105】
[00114]
図19Bにおいて、計算環境720は、コンピューター741を含む。コンピューター741は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター741がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。システム・メモリー722は、リード・オンリー・メモリー(ROM)723およびランダム・アクセス・メモリー(RAM)760のような揮発性および/または不揮発性メモリーの形態で、コンピューター記憶媒体を含む。基本入出力システム724(BIOS)は、起動中のように、コンピューター741内のエレメント間におけるデータ転送を補助する基本的なルーチンを含み、通例ROM723内に格納されている。RAM760は、通例、演算装置759が直ちにアクセス可能であるデータおよび/またはプログラム・モジュール、または現在これによって処理されているデータおよび/またはプログラム・モジュールを収容する。一例として、そして限定ではなく、
図19Bは、オペレーティング・システム725、アプリケーション・プログラム726、その他のプログラム・モジュール727、およびプログラム・データ728を示す。更に、
図19Bは、グラフィクス・プロセッサー・ユニット(GPU)729も含む。グラフィクス・プロセッサー・ユニット729は、高速および高解像度グラフィクス処理および格納のために、付随するビデオ・メモリー730を有する。GPU729は、グラフィクス・インターフェース731を介して、システム・バス721に接続することができる。
【0106】
[00115] また、コンピューター741は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例にすぎないが、
図19Bは、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ738、リムーバブル不揮発性磁気ディスク754からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ739、ならびにCD ROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク753からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ740を示す。動作環境の一例において使用可能なその他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ738は、通例、インターフェース734のような非リムーバブル・メモリー・インターフェースを介してシステム・バス721に接続され、磁気ディスク・ドライブ739および光ディスク・ドライブ740は、通例、インターフェース735のようなリムーバブル・メモリー・インターフェースによって、システム・バス721に接続する。
【0107】
[00116] 先に論じ
図19Bに示したドライブおよびそれらと関連のあるコンピューター記憶媒体は、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、およびコンピューター741のその他のデータを格納する。
図19Bでは、例えば、ハード・ディスク・ドライブ738は、オペレーティング・システム758、アプリケーション・プログラム757、他のプログラム・モジュール756、およびプログラム・データ755を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム725、アプリケーション・プログラム726、他のプログラム・モジュール727、およびプログラム・データ728と同じでも異なっていても可能であることを注記しておく。オペレーティング・システム758、アプリケーション・プログラム757、他のプログラム・モジュール756、およびプログラム・データ755は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザーは、キーボード751、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス752のような入力デバイスによって、コマンドおよび情報をコンピューター741に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザー入力インターフェース736を介して、演算装置759に接続されている。ユーザー入力インターフェース736は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)によって接続することも可能である。カメラ26,28およびキャプチャー・デバイス20は、コンソール700の追加入力デバイスを定めることができる。モニター742またはその他のタイプの表示装置も、ビデオ・インターフェース732のようなインターフェースを介して、システム・バス721に接続されている。モニターに加えて、コンピューターは、スピーカー744およびプリンター743のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース733を介して接続することができる。
【0108】
[00117] コンピューター741は、リモート・コンピューター746のような1つ以上のリモート・コンピューターへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピューター746は、パーソナル・コンピューター、サーバー、ルータ、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピューター741に関して先に説明したエレメントの多くまたは全てを含むが、
図19Bにはメモリー記憶装置747のみを示す。
図19Bに示す論理接続は、ローカル・エリア・ネットワーク(LAN)745およびワイド・エリア・ネットワーク(WAN)749を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネットおよびインターネットにおいては一般的である。
【0109】
[00118] LANネットワーク環境で用いる場合、コンピューター741は、ネットワーク・インターフェースまたはアダプター737を介してLAN745に接続する。WANネットワーク環境で用いる場合、コンピューター741は、通例、モデム750、またはインターネットのようなWAN749を通じて通信を設定するその他の手段を含む。モデム750は、内蔵でも外付けでもよく、ユーザー入力インターフェース736またはその他の適切な機構を介してシステム・バス721に接続することができる。ネットワーク環境では、コンピューター741に関係付けて図示したプログラム・モジュール、またはその一部は、リモート・メモリー記憶装置に格納することもできる。一例として、そして限定ではなく、
図19Bは、リモート・アプリケーション・プログラム748がメモリー・デバイス747に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを設定する他の手段も使用可能であることは認められよう。
【0110】
[00119] 以上の本発明のシステムについての詳細な説明を例示および説明の目的で提示した。これは、網羅的であることも、開示された技術を開示された形態そのものに限定することを意図するのではない。多くの変更や変形が、以上の教示に照らして、可能である。記載した実施形態は、本技術の原理およびその実用的な用途を最良に説明し、それによって当業者が本技術を種々の実施形態において、そして個々の考えられる使用に適するような種々の変更と共に、最良に利用することを可能にするために選択されたのである。本発明のシステムの範囲は、本明細書に添付されている特許請求の範囲によって定義されることを意図している。