【文献】
Arasanathan Thayananthan,Template-based Pose Estimation and Tracking of 3D Hand Motion,Template-based Pose Estimation and Tracking of 3D Hand Motion,英国,UNIVERSITY OF CAMBRIDGE,2005年,P.1-154
【文献】
大野 敬弘,手形状認識によるセキュリティキー入力システムに関する研究,情報処理学会研究報告 Vol.2008 No.3,日本,社団法人 情報処理学会,2008年 1月17日,2008-CVIM-161,P.293-300,ISSN 0919-6072
(58)【調査した分野】(Int.Cl.,DB名)
請求項1記載の方法であって、更に、前記センサーを介してコマンドを受け取るアプリケーションを実行するステップと、前記ステップ(b)において特定した、前記手が開いているかまたは閉じているかに基づいて、前記アプリケーションにおいて制御動作に作用させるステップとを備えている、方法。
請求項1記載の方法であって、更に、前記センサーを介してコマンドを受け取るゲーム・アプリケーションを実行するステップと、前記ステップ(b)において特定した、前記手が開いているかまたは閉じているかに基づいて、前記ゲーム・アプリケーションにおいて動作に作用させるステップとを備えている、方法。
検出した手が開いているかまたは閉じているか判断するシステムであって、当該システムが、計算デバイスに動作可能に結合されている検知メカニズムを含み、当該システムが、
画像データおよび深度データの内少なくとも1つを含む受信データから、ユーザーの骨格の少なくとも一部を認識する骨格認識エンジンと、
前記骨格認識エンジンから受信した深度データを分析して、身体の1つ以上の領域を、前記ユーザーの手を表す領域に区分する画像区分エンジンと、
1本以上の指を含む手と、この手が開いているかまたは閉じているかとを表すデータを抽出する記述子抽出エンジンと
を備えており、
前記記述子抽出エンジンが、前記手を表す前記領域にある画素を分析するために複数のフィルターを適用し、前記複数のフィルターにおける各フィルターが、前記手の境界形状に基づいて前記手についての位置と開いている状態または閉じている状態とを判定し、前記記述子抽出エンジンが、前記手が開いているかまたは閉じているかについての最良の推定値に到達するために、各フィルターの結果を組み合わせる、システム。
請求項9記載のシステムにおいて、前記記述子抽出エンジンの前記複数のフィルターが、手であると想定した形状の周囲における輪郭不連続を測定する不連続フィルターを含み、前記輪郭不連続が所定の閾値よりも低いときに、前記不連続フィルターが、閉じている手を特定する、システム。
請求項9記載のシステムにおいて、前記記述子抽出エンジンの複数のフィルターが、前記検知メカニズムに向かう手の動きを検出し、前記手の指が開いているかまたは閉じているかを検出する自然グラブ・フィルターを含む、システム。
請求項11記載のシステムにおいて、前記自然グラブ・フィルターは、手と同一の腕の肘として特定される骨格の点から最も離れている、前記手の画素を特定することによって、前記手の指が部分的に開いているかまたは閉じているかを判断する、システム。
請求項9記載のシステムにおいて、前記記述子抽出エンジンの前記複数のフィルターが、更に、前記手の指が開いているかまたは閉じているかを判断する1つ以上のサブフィルターを含み、前記1つ以上のサブフィルターの内の第1サブフィルターは、円サブフィルターであり、前記手のシルエットが円に近いかを判断し、前記円サブフィルターは前記シルエットが円に近い場合に前記手が閉じていることを示す、システム。
請求項13記載のシステムにおいて、前記円サブフィルターは、前記手であると推定される質量の中心を特定し、前記質量の中心と前記肘から最も離れているものとして特定される画素との間の標準偏差を決定する、システム。
請求項13記載のシステムにおいて、前記1つ以上のサブフィルターの内の第2サブフィルターは、深度ジャンプを測定し、深度ジャンプの回数が或る所定の閾値未満である場合に、前記手が閉じていると推定する、システム。
請求項14記載のシステムにおいて、前記1つ以上のサブフィルターの内の第3サブフィルターは、パドル・サブフィルターであり、手が、広げられ且つ一緒である指を含むかどうかを判断し、前記パドル・サブフィルターが、ヒストグラムを用いて、指先の画素をビンに分類し、開き且つ閉じる手についてのモデルを用いて各ビンの画素数を調べ、前記手が開いているか閉じているかを推定する、システム。
請求項16記載のシステムにおいて、前記1つ以上のサブフィルターの各々についての結果および信頼性を組み合わせて、手が開いているか閉じているかを判断する、システム。
【発明を実施するための形態】
【0009】
[0032] これより、
図1Aから
図21Bを参照しながら本技術の実施形態について説明する。
図1Aから
図21Bは、全般的に、NUIシステムにおける画像センサーによって取り込まれた、ユーザーの手および指のハンド・モデル(hand model)を含む、目標ユーザーのコンピューター・モデルを生成するパイプラインに関する。このコンピューター・モデルは、取り込まれた画像データの1フレーム毎に1回生成することができ、フレーム取り込みの間における、ユーザーの姿勢を含む、最良の位置推定値を表す。フレーム毎に生成したハンド・モデル(hand model)は、ゲーミング・アプリケーションまたはその他のアプリケーションによって、ユーザーのジェスチャーおよび制御行為(action)というような事項を判定するために用いることができる。また、ハンド・モデルをパイプラインにフィードバックし、今後のモデル判定に役立てることもできる。
【0010】
[0033] 最初に
図1Aから
図2を参照すると、本技術を実現するハードウェアは、目標認識、分析、および追跡システム10を含む。このシステム10は、ユーザー18のような人間の目標物を認識、分析、および/または追跡するために用いることができる。目標認識、分析、および対駅システム10の実施形態は、ゲーミング・アプリケーションまたはその他のアプリケーションを実行する計算環境12を含む。計算環境12は、ゲーミング・アプリケーションおよびゲーム以外のアプリケーションというようなアプリケーションを実行するために計算環境12を用いることができるように、ハードウェア・コンポーネントおよび/またはソフトウェア・コンポーネントを含むことができる。一実施形態では、計算環境12は、標準的なプロセッサー、特殊プロセッサー、マイクロプロセッサー等を含むことができ、このプロセッサーは、本明細書において説明するプロセスを実行するために、プロセッサー読み取り可能記憶デバイスに格納されている命令を実行することができる。
【0011】
[0034] 更に、システム10は、キャプチャー・デバイスによって検知された1人以上のユーザーおよび/またはオブジェクトに関する画像およびオーディオ・データを取り込むキャプチャー・デバイス20も含む。実施形態では、キャプチャー・デバイス20は、身体および手の動き(movement)および/またはジェスチャー、ならびに1人以上のユーザーの音声に関する情報を取り込むために用いることができ、この情報は、計算環境によって受け取られ、ゲーミング・アプリケーションまたはその他のアプリケーションの態様(aspects)をレンダリングする、これらと対話処理する、および/またはこれらを制御するために用いられる。計算環境12およびキャプチャー・デバイス20の例については、以下で更に詳しく説明する。
【0012】
[0035] 目標認識、分析、および追跡システム10の実施形態は、ディスプレイ14を有するオーディオ/ビジュアル(A/V)デバイス16に接続することができる。デバイス16は、例えば、テレビジョン、電話機、コンピューター用モニター、高品位テレビジョン(HDTV)等であってもよく、ゲームまたはアプリケーションの映像および/または音響をユーザーに供給することができる。例えば、計算環境12は、グラフィクス・カードのようなビデオ・アダプター、および/またはサウンド・カードのようなオーディオ・アダプターを含むことができ、これらのアダプターはゲームまたはその他のアプリケーションに関連するオーディオ/ビジュアル信号を供給することができる。A/Vデバイス16は、計算環境12からオーディオ/ビジュアル信号を受け取ることができ、次いでこのオーディオ/ビジュアル信号に関連するゲームまたはアプリケーションの映像および/または音響をユーザー18に出力することができる。一実施形態によれば、オーディオ/ビジュアル・デバイス16は、例えば、S−ビデオ・ケーブル、同軸ケーブル、HDMI(登録商標)ケーブル、DVIケーブル、VGAケーブル、コンポーネント・ビデオ・ケーブル等を通じて、計算環境12に接続することができる。
【0013】
[0036] 実施形態では、計算環境12、A/Vデバイス16、およびキャプチャー・デバイス20は、協働してアバターまたは画面上のキャラクタ19をディスプレイ14上にレンダリングすることができる。例えば、
図1Aは、サッカー・ゲーミング・アプリケーションをプレーしているユーザー18を示す。このユーザーの動きを追跡し、アバター19の動きをアニメ化する(animate)ために用いる。実施形態では、アバター19は実世界空間におけるユーザー18の動きを模擬するので、ユーザー18は、ディスプレイ14上においてアバター19の動き(movement)および行為(action)を制御する動きおよびジェスチャーを行うことができる。
【0014】
[0037] 以上で説明したように、骨格マッピング・システムのような動き推定ルーチンは、例えば、ユーザーの手の動きというような、ユーザーの微妙なジェスチャーを検出する能力に欠けることがある。例えば、ユーザーが、
図1Bに示すように、彼または彼女の手によってユーザー・インターフェース21全体をスクロールし制御することによって、NUIシステム10と対話処理することを望む場合もあり得る。あるいは、ユーザーが、例えば、
図1Cにおいて23および25として示すように、彼女の手を開くおよび/または閉じることによって、種々のジェスチャーを行おうとすることもあり得る。
【0015】
[0038] したがって、本明細書において以下で説明するシステムおよび方法は、ユーザーの手の状態を判定することを対象とする。例えば、手を閉じるおよび開く動作は、画面上にあるオブジェクト、例えば、オブジェクト27(
図1C)を選択する、係合する、または掴んで引きずるというようなイベントを誘起するために、このようなシステムによって用いることができる。これらの行為は、本技術以外では、コントローラーを用いるときであれば、ボタンを押すことに対応するであろう。このようなコントローラー不要の細かな対話処理は、手を振る行為やホバリングする(hovering)行為に基づく手法が直感的でなく煩わしい場合もあるので、その代わりに用いることができる。種々の他のジェスチャー、制御動作、およびアプリケーションも、本技術によって、手の動きを認識し追跡するために実施可能にすることができる。これらの一部について以下で更に詳しく説明する。以下で説明するようにユーザーの手の状態を判定することによって、ユーザーのシステムとの対話処理のし易さを高めることができ、一層簡単で直感的なインターフェースをユーザーに提示することができる。
【0016】
[0039]
図1Aおよび
図1Bは、床、椅子、および植物というような静止した背景オブジェクト23を含む。これらは、キャプチャー・デバイス20によって捉えられる視野(FOV)内にあるオブジェクトであるが、フレーム毎に変化しない。図示する床、椅子、および植物に加えて、静止オブジェクトは、キャプチャー・デバイス20内にある撮像カメラによって捉えられるいずれのオブジェクトでもよい。この場面内にある追加の静止オブジェクトには、あらゆる壁、天井、窓、ドア、壁の飾り等を含むことができる。
【0017】
[0040] システム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】
[0041]
図2は、目標認識、分析、および追跡システム10において用いることができるキャプチャー・デバイス20の一実施形態例を示す。一実施形態例では、キャプチャー・デバイス20は、例えば、飛行時間、構造化光、ステレオ画像等を含む、いずれかの適した技法によって、深度値を含む深度画像を有するビデオを取り込むように構成することができる。一実施形態によれば、キャプチャー・デバイス20は、計算した深度情報を「Zレイヤー」に編成することができる。即ち、深度カメラからその見通し線に沿って延びるZ軸に対して垂直であることができるレイヤーに編成することができる。XおよびY軸は、Z軸に対して垂直であると定義することができる。Y軸は垂直であり、X軸は水平であるとよい。X、Y、およびZ軸は、併せて、キャプチャー・デバイス20によって取り込まれる3−D実世界空間を定める。
【0019】
[0042]
図2に示すように、キャプチャー・デバイス20は、撮像カメラ・コンポーネント22を含むことができる。一実施形態によれば、撮像カメラ・コンポーネント22は、場面の深度画像を取り込むことができる深度カメラであるとよい。深度画像は、取り込んだ場面の二次元(2−D)画素エリアを含むことができ、この2−D画素エリアにおける各画素が、取り込まれた場面におけるオブジェクトの長さまたはオブジェクトのカメラからの距離というような深度値、例えば、センチメートル、ミリメートル等の単位で表すことができる。
【0020】
[0043]
図2に示すように、一実施形態例によれば、撮像カメラ・コンポーネント22は、IR発光素子24、三次元(3−D)カメラ26、およびRGBカメラ28を含むことができ、これらは場面の深度画像を取り込むために用いることができる。例えば、飛行時間分析では、キャプチャー・デバイス20のIR発光素子24は、場面に向けて赤外線光を放出することができ、次いでセンサー(図示せず)を用いて、その場面の中にある1つ以上の目標物およびオブジェクトの表面からの後方散乱光を、例えば、3Dカメラ26および/またはRGBカメラ28を用いて検出することができる。
【0021】
[0044] 実施形態の中には、パルス状赤外線光を用いて、出射光パルスと対応する入射光パルスとの間の時間を測定し、キャプチャー・デバイス20から場面内にある目標物またはオブジェクト上における特定の場所までの物理的距離を判定するために、この時間を用いることができるようにするとよい場合がある。加えて、他の実施形態例では、出射光波の位相を入射光波の位相と比較して、位相ずれを判定することもできる。次いで、位相ずれを用いて、キャプチャー・デバイス20から目標物またはオブジェクト上の特定の場所までの物理的距離を判定することができる。
【0022】
[0045] 他の実施形態例によれば、飛行時間分析を用いて、例えば、散乱光パルス撮像(shuttered light pulse imaging)を含む種々の技法によって、経時的な光の反射ビームの強度を分析することにより、キャプチャー・デバイス20から目標物またはオブジェクト上の特定の場所までの物理的距離を間接的に判定することもできる。
【0023】
[0046] 他の一実施形態例では、キャプチャー・デバイス20は、構造化光を用いて深度情報を取り込むことができる。このような分析では、パターン光(即ち、格子パターン、縞模様パターンのような既知のパターンとして表示される光)を、例えば、IR発光素子24によって場面に向けて投射する。場面における1つ以上の目標物またはオブジェクトの表面に衝突したときに、パターンが、それに応答して、変形することができる。このようなパターンの変形を、例えば、3Dカメラ26および/またはRGBカメラ28によって取り込むことができ、次いで分析して、キャプチャー・デバイス20から目標物またはオブジェクト上における特定の場所までの物理的距離を判定することができる。
【0024】
[0047] 他の実施形態によれば、キャプチャー・デバイス20は、2つ以上の物理的に分離されたカメラを含むことができ、これらが異なる角度から1つの場面を捕らえて、視覚的な立体像を得て、これを解明することによって深度情報を生成することができる。他の実施形態例では、キャプチャー・デバイス20は、ポイント・クラウド・データ(point cloud data)および目標ディジタル化技法を使用して、ユーザーの特徴を検出することもできる。更に他の実施形態では、例えば、x,y,zを検出することができる超音波システムのような、他のセンサー・システムも用いることができる。
【0025】
[0048] 更に、キャプチャー・デバイス20は、マイクロフォン30を含むこともできる。マイクロフォン30は、音響を受けて電気信号に変換する変換器またはセンサーを含むことができる。一実施形態によれば、マイクロフォン30は、目標認識、分析、および追跡システム10においてキャプチャー・デバイス20と計算環境12との間におけるフィードバックを減らすために使用することができる。加えて、マイクロフォン30は、計算環境12によって実行することができる、ゲーム・アプリケーション、ゲーム以外のアプリケーション等のようなアプリケーションを制御するために、ユーザーが供給することもできるオーディオ信号を受け取るために用いることもできる。
【0026】
[0049] 一実施形態例では、キャプチャー・デバイス20は、更に、撮像カメラ・コンポーネント22と動作可能に通信することができるプロセッサー32も含むことができる。プロセッサー32は、命令を実行することができる標準的なプロセッサー、特殊プロセッサー、マイクロプロセッサー等を含むことができる。これらの命令には、深度画像を受け取り、この深度画像に適した目標物が含まれ得るか否か判定を行い、適した目標物をその目標物の骨格表現またはモデルに変換する命令、またはあらゆる他の適した命令を含むことができる。
【0027】
[0050] 更に、キャプチャー・デバイス20は、メモリー・コンポーネント34も含むことができる。メモリー・コンポーネント34は、プロセッサー32が実行することができる命令、3−DカメラまたはRGBカメラが取り込んだ画像または画像のフレーム、あるいは他のいずれかの適した情報、画像等を格納することができる。一実施形態例によれば、メモリー・コンポーネント34は、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)、キャッシュ、フラッシュ・メモリー、ハード・ディスク、または他のいずれかの適した記憶コンポーネントを含むことができる。
図2に示すように、一実施形態では、メモリー・コンポーネント34は、撮像カメラ・コンポーネント22およびプロセッサー32と通信可能な別個のコンポーネントであってもよい。他の実施形態によれば、メモリー・コンポーネント34をプロセッサー32および/または撮像カメラ・コンポーネント22に統合してもよい。
【0028】
[0051]
図2に示すように、キャプチャー・デバイス20は、通信リンク36を介して計算環境12と通信することができる。通信リンク36は、例えば、USB接続、Firewire接続、イーサネット(登録商標)・ケーブル接続等のような有線接続、および/またはワイヤレス802.11b,g,a,n接続のいずれかようなワイヤレス接続であってもよい。一実施形態によれば、計算環境12は、クロックをキャプチャー・デバイス20に通信リンク36を介して供給することができ、このクロックは、例えば、いつ場面を取り込むべきか判断するために用いることができる。
【0029】
[0052] 加えて、キャプチャー・デバイス20は、例えば、3−Dカメラ26および/またはRGBカメラ28によって取り込まれた深度情報および画像も供給することができる。これらのデバイスの補助によって、本技術にしたがって、部分的な骨格モデルを作り出し、結果的に得られたデータを計算環境12に通信リンク36を介して供給する。
【0030】
[0053] 更に、計算環境12は、以下に説明するようにジェスチャーを認識するジェスチャー認識エンジン90も含むことができる。本システムによれば、計算環境12は、更に、骨格認識エンジン192、画像区分エンジン194、記述子抽出エンジン196、および分類エンジン198も含むことができる。これらのソフトウェア・エンジンの各々について、以下に更に詳しく説明する。
【0031】
[0054]
図3は、骨格認識エンジン192によって生成された身体モデル例の非限定的な視覚表現を示す。身体モデル70は、モデル化した目標物(例えば、
図1Aおよび
図1Bからのユーザー18)の機械表現である。この身体モデルは、ゲームまたは他のアプリケーション/オペレーティング・システムの言語で、モデル化した目標物を集合的に定義する1組の変数を含む1つ以上のデータ構造を含むことができる。
【0032】
[0055] 目標物のモデルは、本開示の範囲から逸脱することなく、様々に構成することができる。例の中には、モデルが、剛性(rigid)形状および/または変形可能形状を含む三次元モデル、または身体部分として目標物を表す1つ以上のデータ構造を含むとよい場合もある。各身体部分は、数学的原線として特徴付けることができ、その例には、異方的に拡縮された球体(anisotropically-scaled sphere)、円筒、異方性円筒、滑らかな円筒、箱形、面取された箱形(beveled box)、角柱等が含まれるが、これらに限定されるのではない。
【0033】
[0056] 例えば、
図3の身体モデル70は、身体部分bp1からbp14までを含み、その各々が、モデル化された目標物の異なる部分を表す。各身体部分は、三次元形状である。例えば、bp3は、モデル化された目標物の左手を表す矩形角柱であり、bp5は、モデル化された目標物の左上腕を表す八画柱である。1つの身体モデルがいずれの数の身体部分でも含んでもよく、その各々が、モデル化された目標物の対応する部分のいずれの機械理解可能な表現であってもよいことから、 身体モデル70は例示である。
【0034】
[0057] 2つ以上の身体部分を含むモデルは、1つ以上の関節も含むことができる。各関節は、1つ以上の身体部分が1つ以上の他の身体部分に対して動かせるようにすることができる。例えば、人間の目標物を表すモデルは、複数の剛性の身体部分および/または変形可能な身体部分を含むことができ、一部の身体部分は、この人間の目標物の対応する解剖学的身体部分を表すことができる。更に、モデルの各身体部分は、1つ以上の構造的部材(即ち、「骨」または骨格要素)を含むことができ、関節は隣接する骨の交点に位置する。尚、一部の骨には人間の目標物における解剖学的な骨に対応すると考えられるものがあること、および/または骨の一部は人間の目標物において対応する解剖学的な骨を有さないと考えられるものがあることは理解されて然るべきである。
【0035】
[0058] 骨および関節は、集合的にスケルトン・モデルを構成することができ、このスケルトン・モデルが他のモデルの構成要素となることもある。実施形態の中には、骨格モデルが、
図3のモデル70のような、他のタイプのモデルの代わりに用いられてもよい場合もある。このスケルトン・モデルは、身体部分毎に1つ以上のスケルトン部材と、隣接するスケルトン部材間に関節とを含む。三次元スケルトン・モデルの例、スケルトン・モデル80およびスケルトン・モデル82を、それぞれ、
図4および
図5に示す。
図4は、前方から見たスケルトン・モデル80を示し、関節j1〜j33までを有する。
図5は、歪んだ視点から見たときのスケルトン・モデル82を示し、同様に関節j1〜j33までがある。本開示の主旨から逸脱することなく、骨格モデルは、これらよりも多い関節または少ない関節を含むのでもよい。以下で説明する本発明の更に他の実施形態は、31個の関節を有する骨格モデルを用いて動作する。
【0036】
[0059] 以上で説明した身体部分モデルおよび骨格モデルは、モデル化された目標物の機械表現として用いることができるタイプのモデルの非限定的な例である。他のモデルも、本開示の範囲に該当するものとする。例えば、モデルがポリゴン・メッシュ、パッチ、非均一有理B−スプライン(non-uniform rational B-spline)、再分割表面(subdivision surface)、または他の高次表面を含むのでもよい。また、モデルは、より精度高く衣服、髪、および/またはモデル化された目標物の他の態様を表すために、表面模様および/または他の情報も含むこともできる。任意に、モデルは、現在の姿勢、1つ以上の過去の姿勢、および/またはモデルの物理的特性に関する情報を含んでもよい。尚、姿勢を取ることができる種々の異なるモデルが、本明細書において説明した目標認識、分析、および追跡システムと調和することは、理解されて然るべきである。
【0037】
[0060] キャプチャー・デバイス20のFOV内にいる1人以上のユーザーの骨格モデルを生成するソフトウェア・パイプラインは周知である。このようなシステムの1つが、2010年9月7日に出願され、"System For Fast, Probabilistic Skeletal Tracking"(高速確率的骨格追跡システム)と題する米国特許出願第12/876,418号に開示されている。この出願をここで引用したことにより、その内容全体を本願に包含するものとする。ある一定条件の下では、例えば、ユーザーがキャプチャー・デバイス20に十分近接しており、ユーザーの手の少なくとも1つが他の背景ノイズから区別可能である場合、ソフトウェア・パイプラインは、更に、FVO内にいる1人以上のユーザーの手および/または指のハンド・モデルを生成することができる場合もある。
【0038】
[0061]
図6は、ユーザーの手および/または指を認識し追跡するソフトウェア・パイプラインのフローチャートである。ステップ200において、このパイプラインはキャプチャー・デバイス20から深度画像を受け取る。ユーザーの一部の深度画像を
図7において302で示す。この深度画像における各画素は、例えば
図7に示すような、中間階調(gray-scale gradient)による深度情報を含む。例えば、302において、黒くなっているユーザーの左手によって示されるように、ユーザーの左手の方がキャプチャー・デバイス20の近くにある。キャプチャー・デバイスまたは深度カメラは、観察中の場面におけるユーザーの画像を取り込む。以下で説明するように、ユーザーの深度画像は、ユーザーの領域の距離情報、ユーザーの倍率(scale)情報、湾曲、およびユーザーの骨格情報を判定するために用いることができる。
【0039】
[0062] ステップ204において、このパイプラインの骨格認識エンジン192は、ステップ200において得られた深度画像から仮想骨格を得るために、先に説明したようにユーザーの骨格モデルを推定する。例えば、
図7には、302に示ユーザーのす深度画像から推定した、仮想骨格304が示されている。
【0040】
[0063] ステップ208において、このパイプラインは、当該パイプラインの画像区分エンジン194によって、ユーザーの一方または両方の手を区分する。例の中には、画像区分エンジン194が、付加的に、手に加えて、身体の1つ以上の領域も区分するとよい場合もある。ユーザーの手を区分するステップは、手に対応する深度画像の領域を特定することを含む。この特定は、ステップ204において得られた骨格情報に少なくとも部分的に基づく。
図7は、推定したスケルトン304に基づいて、ユーザーの深度画像を、異なる陰影が付けられた領域で示すような、異なる領域306に区分する例を示す。
図7は、上にあげたユーザーの右手に対応する手の領域308の位置を特定する(localize)過程を示す。
【0041】
[0064] 手または身体領域は、種々の方法で区分するまたは位置を特定することができ、以上で説明した骨格推定において特定した関節から選択したものに基づくこともできる。一例として、深度画像における手の検出および位置特定は、推定した骨格からの推定した手首の関節および/または手先の関節(hand tip joint)に基づくことができる。例えば、実施形態の中には、手の関節周囲の深度画像の組織分布的な検索を用いて、深度画像における手の区分を実行し、深度画像における近隣の極値を指先の候補として突き止めるとよい場合もある。次いで、画像区分エンジン194は、推定した骨格から決定される身体サイズ(body size)の倍率、および境界識別のための深度不連続を考慮に入れることによって、手の残り部分を区分する。
【0042】
[0065] 他の例として、ユーザーの手に対応する深度画像の領域を特定するために、フラッド・フィル(flood-fill)手法を採用することもできる。フラッド・フィル手法では、開始点および開始方向から深度画像を検索することができる。例えば、開始点は手首の関節としてもよく、開始方向は肘から手首の関節に向かう方向としてもよい。深度画像における近隣画素について、肘から離れ手先に向かう点を優先するための方法として、開始方向への投射に基づいて繰り返し採点しつつ、深度画像におけるユーザーの手の境界または極値を特定するために深度不連続というような深度一貫性制約を用いることができる。例の中には、固定値に基づいて開始方向の正および負双方の方向における深度マップ検索を制限するために閾値距離値を用いること、あるいは、例えば、ユーザーの推定サイズに基づいて閾値距離値を増減(scale)できる場合もある。
【0043】
[0066] 更に他の例として、骨格関節(例えば、手首または手先の関節)に基づいて位置付けられた境界球体(bounding sphere)または他の適した境界形状を用いて、深度画像における深度不連続までの全ての画素を含ませることもできる。例えば、深度不連続を特定するために、境界球体上でウィンドウを滑らすこともでき、この深度不連続は、深度画像の手の領域における境界を確定するために用いることができる。
【0044】
[0067] また、境界形状方法は、手の平の中心の回りに境界形状を置くために用いることもでき、境界形状は繰り返し特定することができる。このような繰り返し境界決定方法の一例が、"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】
[0068] 一般に、このような方法は、モデルから画素を選別する(cull)ために、数回の繰り返しパスを必要とする。各パスにおいて、この方法は球体の外側にある画素、または手を中心とする他の形状の外側にある画素を選別する。次に、この方法は手の先端から遠すぎる画素を選別する(腕のベクトルに沿って)。次いで、この方法はエッジ検出ステップを実行して、手の境界のエッジを検出し、接続されていない孤立点(islands)を取り除く。
図8のフローチャートにこのような方法からのステップ例を示す。ステップ224において、骨格認識エンジン192からの手関節データによって与えられる手の中心の回りに、境界形状を生成する。境界形状は、手全体を包囲できるくらいに十分に大きく、三次元である。ステップ226において、境界形状の外側にある画素を選別する。
【0046】
[0069] 尚、深度画像において、ユーザーの手が彼または彼女の身体に、またはユーザーの2つめの手に近接しており、これら他の身体部分からのデータが初期状態において区分された画像に含まれるということが起こる場合がある。区分画像における異なる重心を区別するために、接続成分区別(connected component labeling)を実行することもできる。重心は、手であることの可能性が最も高いが、そのサイズおよび手関節の位置に基づいて、重心を選択する。選択されなかった重心を選別すればよい。ステップ230において、添えられている腕(attached arm)からのベクトルに沿って手の先端から離れすぎている画素も選別してもよい。
【0047】
[0070] 骨格認識エンジン192からの骨格データはノイズが多い場合もあるので、手の中心を特定するために、手についてのデータを更に純化する。これは、画像を繰り返し用いて、各画素から手のシルエットのエッジまでの距離を測定することによって行うことができる。画像区分エンジン194は、次に、加重平均を計算して最大/最小距離を求めることができる。即ち、ステップ232において、区分された手の画像における画素毎に、手のシルエットのエッジまでのxおよびy軸に沿った最大距離を特定し、手のシルエットのエッジまでのxおよびy軸に沿った最小距離を特定する。エッジまでの距離を重みとして取り込み、次いで、測定した全ての画素にわたって、最小と判定された距離の加重平均を計算し、画像内における手の位置の中心らしき点を求める(ステップ234)。新たな中心を用いて、直前の繰り返しからの掌の中心の変化が何らかの許容度以内になるまで、本プロセスを反復的に繰り返すことができる。
【0048】
[0071] 手法の中には、手の領域の区分を、ユーザーが手を外側または上に、あるいは胴体の前に上げたときに実行するとよい場合もある。このようにすると、手の領域を身体から一層容易に区別できるので、深度画像における手の領域の特定が更に明確になると考えられる。ユーザーの手が手の平をキャプチャー・デバイス20に向けているときは、手の画像が特に明確になり、その時点において、この手の特徴をシルエットとして検出することができる。特徴にノイズが多い場合があるが、手のシルエットを得ることによって、例えば、指間の隙間を検出し、手の全体的な形状を見て、種々の異なる手法を用いてそれをマッピングすることに基づいて、手が何をしているのか、何らかの判断を伝えること(informed decision)が可能になる。これらの隙間およびその他の特徴を検出することにより、特定の指の認識、およびその指が指しているところの概略的な方向を認識することができる。
【0049】
[0072] 尚、以上で説明した例および区分例は、例示の目的に限って紹介したのであって、本開示の範囲を限定することは意図していないことは言うまでもない。一般に、いずれの手または身体部分区分方法でも、単独でまたは互いに組み合わせて、および/または以上で説明した方法例の内1つと組み合わせて用いることもできる。
【0050】
[0073]
図7のパイプラインを続けると、ステップ210では、領域、例えば、ステップ208において特定した手に対応する深度画像の領域に対する形状記述子を引き出す動作を含む。ステップ210のおける形状記述子は、記述子抽出エンジン196によって抽出され、手の領域を分類するために用いられるのに適した手の領域の表現であれば、いずれでもよい。実施形態の中には、形状記述子が、手の領域の形状をコード化または記述するために用いられるベクトルあるいは1組の数値とするとよい場合もある。
【0051】
[0074] 記述子抽出エンジン196は、形状記述子を抽出するために、ステップ210において種々のフィルターの内いずれでも用いることができる。1つのフィルターは、画素分類フィルター(image classifier)と呼ぶことができ、これより
図9のフローチャート、
図10の判断ツリー、および
図11から
図14の例示を参照しながら説明する。ステップ240において、区分画像の前景において1つの画素を選択する。これらは、ユーザーの手の一部であると少なくとも名目上(nominally)考えられる画素である。選択した画素の周囲において、選択した画素が中心に来る、既定サイズのボックスを取り込む。実施形態では、このボックスのサイズは、正規化した指の幅の1.5倍に選択するとよい。「正規化した指」とは、骨格モデルのサイズおよびキャプチャー・デバイス20からユーザーまでの検出距離に基づいて正規化したサイズに既に調節されているユーザーの指のことである。手の一部であると名目上考えられる画素毎に、次のステップを連続的に実行する。
【0052】
[0075] ステップ242において、画素分類フィルターは、ボックスのエッジがいくつ交差しているか判断する。交点とは、画像が前景(手の上)から背景(手の上ではない)に移行するところである。例えば、
図11Aは、指276、この指上において選択された画素278、およびこの画素の周囲にある半径rの前述のボックス280を示す。このボックスは、1つのエッジに沿って2点で、即ち、点281aおよび281bにおいて交差する。点281a、281bは、画像が前景(指)から背景に移行するところである。画素278がそれぞれのボックス280のエッジとの交点を2つ以上有する場合、以下で説明するように、手の重心を定める目的のために、画素278全てを指先(あるいは、以下で説明するように、拳または腕の一部)と見なすこととする。
【0053】
[0076] ステップ246において、画素分類フィルターは、これらの交点が同じエッジにあるのか、または異なるエッジにあるのか判断する。
図11Bに示すように、指は、同じエッジに沿うのではなく、2本の隣接するエッジに沿ってボックス280と交差することもある。この情報は、以下で説明するように、指を指し示している方向を判定するために、用いられる。
【0054】
[0077] 指先とは異なり、画素がそのボックス280と4つの点で交差するときは、以下で説明するように手の重心を定める目的のために、この画素を指と見なす。例えば、
図12は、選択された画素278が指先から十分に離れており、ボックスとの4つの交点281a、281b、281c、および281dがある例を示す。
【0055】
[0078]
図9のフローチャートのステップ242、および
図10の判断ツリーの264において、画素分類フィルターは、ボックス280のエッジの内いくつと交差しているかチェックする。交差しているエッジがない場合、265において、選択した画素はユーザーの手の平の内部にあると見なされる。即ち、ボックス280のサイズは、画素が指または指先の中にある場合には少なくとも2本のエッジと交差するように選択されているので、画素が手の上にあり交差するエッジがない場合、この画素は手の平の中にあると見なされる。2本のエッジと交差している場合、以下で説明するように、フィルターは266に進み、交差していないエッジの角がソリッド(solid)か(手の上)またはエンプティ(empty)か(背景)かチェックする。267において、4本のエッジが交差している場合、以上で説明したようにこれを指と見なす。268においてボックス280のエッジが6回交差している場合、これは無効の読み取りと見なし、破棄する(ステップ250)。
【0056】
[0079] 再度266に戻り、2本のエッジが交差している場合、指先である可能性があるが、隣接する2本の指の間の空間である可能性もある。したがって、画素分類フィルターは、交差していないエッジの角をチェックする(ステップ248)。交差していないエッジの角がソリッドである場合、これは、ボックスがこれらの角において手の上にあり、交点は隣接する指の間にある谷を定めることを意味する。逆に、交差していないエッジの角がエンプティである場合(266に関連する図において示すように)、これは、ボックスがこれらの角において背景画素上にあり、交点が手の一部を定めることを意味する。
【0057】
[0080] 角がエンプティである場合、画素分類フィルターは、269において、交差点間における、コード長(chord length)と呼ばれる距離が指の最大幅未満であるか否かチェックする(ステップ252)。即ち、2つの交点がある場合、
図11Aに示すように指先である可能性がある。しかしながら、この画素は、
図13に示すように、腕の一部、または拳のような、手の一部である可能性もある。その場合、コード長282は、指の最大幅よりも大きい可能性がある。その場合、271(
図10)において、ボックス280が調べられている画素278は、腕または拳の上にあると言う。
【0058】
[0081] 指先または指を特定することに加えて、二点または四点交差が、指先/指が指し示している方向を明示することもできる。例えば、
図11Aにおいて、指の最大幅未満の2つの交点があったので、画素278は指先の中にあると判断された。しかしながら、このような交差を仮定すると、指先が指し示している方向について、推論を引き出すことができる。同じことは、
図12に示す指についても言える。
図11Aは、真上を指し示す指276を示す。しかし、指先276は、他の上向きの方向を指し示している可能性もある。指先276における点278付近にある他の点からの情報を用いると、この方向について更に推論を引き出すことができる。
【0059】
[0082]
図11Bは、二点交差を示し、指/指先が指し示している方向について追加の推論が得られる。即ち、共有する角までの距離の比率から、方向を推論することもできる。言い換えると、点281aおよび281b間のコード長は、三角形の斜辺を定める。この三角形は、点281a,281b間にある辺、および共有する角も含む。指は斜辺に対して垂直な方向を指し示していると推論することができる。
【0060】
[0083] 尚、1つの手で、2本の指が一緒になっていること、または3本の指が一緒になっていること、または4本の指が一緒になっていることも起こる場合がある。このため、手の中にある画素毎にボックス280を用いて以上のステップを実行した後、2本の指を合わせた最大幅よりも多少大きなボックス280を用いて、本プロセスを繰り返し、次いで3本の指を合わせた最大幅よりも多少大きなボックス280を用いて、本プロセスを再度繰り返す等とするとよい。
【0061】
[0084] 一旦画素分類フィルター・データが集められたなら、画素分類フィルターは次にステップ258(
図9)においてデータからハンド・モデルを構築することを試みる。例えば、指先である領域というような、小さな特定領域、即ち、重心、ならびに手の平である領域、および手区分ステップからの手の平の中心の着想(idea)がある。次いで、分類エンジン198は、指先とは分類されなかったが、これらが4点で交差したという事実によって指であると分類された指の重心を調べる。指または指先領域について、方向方位(directional orientation)も特定されている。指の重心が指先の重心と一直線状になっており、これらが互いに正しい相対位置にある場合、本アルゴリズムは、これらの重心が同じ指に属するとして、これらの重心を接続する。
【0062】
[0085] 次に、骨格のサイズと、指がどの位大きいと考えられるかとに基づいて、指領域の向きを用いて、その指の拳があると考えられる所に投影する。また、決定したハンド・モデルを確認するためには、指の間で特定されたいずれの谷のサイズ、位置、および向きも用いることができる。次に、投影した拳の位置を手の平に接続する。完了したときに、画素分類エンジンは、骨格ハンド・モデル284を決定する。その例を2つ、
図14に示す。このモデルは、「指先、手および指を接続する拳、および手の平までの中心骨(center bone)に関する手追跡セグメントの縮小骨格モデル」と呼ぶこともでき、手の平の重心に接続された拳の重心に接続された指の重心に接続された指先の重心を含む。また、指先、指、拳、および/または手の平の重心位置の決定した位置を検証するまたは論じ合うために、更には手の一部を形成しないと判定されるかもしれない重心データを破棄するために、既知の手の外形および既知の腕位置からのこの手の位置に関するデータを用いることができる。
【0063】
[0086] 以上によって、手の1つ以上の部分がモデルから失われても、ハンド・モデルを構築できる。例えば、指が隠されていること、あるいはユーザーの身体または検出すべき他方の手に指が近すぎることもあり得る。または、ユーザーに指がない場合もある。画素分類フィルターは、それが検出した指および手の位置を用いて、ハンド・モデルを構築する。
【0064】
[0087] 画素分類フィルターに加えてまたはその代わりに実行することができる他のフィルターがあってもよく、湾曲分析フィルターと呼ぶことができるものがある。このフィルターは、区分された手のシルエットの境界に沿った湾曲に照準をあて、指を区別する試みにおいてピークおよび谷を判定する。
図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】
[0088] ステップ289において、手のシルエット周囲にあるピークを特定し、ピークの種々の特徴に関して各々を分析する。ピークは、開始点、ピーク、および終点によって定めることができる。これら3つの点は、以下で説明するように、三角形を形成することができる。調べるとよいピークの種々の特徴には、例えば、次の事項が含まれる。
【0066】
・ピークの幅
・所与のピークの最大高さ
・ピーク内における湾曲サンプルの平均高さ
・ピーク形状比(最大高さ/平均高さ)
・ピークの面積
・手からピークまでの距離
・肘から手への方向(x、y、およびz)
・ピーク方向および腕の方向のクロス積(腕の方向とピーク方向との間の角度がどれ位小さいか)
・ピーク開始点と最大点との間のベクトル、および最大点と終点との間のベクトルのクロス積
[0089] ステップ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】
[0090] 以上で説明したフィルターは、手のシルエットに関係するデータを調べることから、シルエット・フィルターと呼ぶこともできる。用いることができる更に他のフィルターに、ヒストグラム・フィルターがあり、深度データを用いてハンド・モデルを構築することから、深度フィルターと呼ぶ。このフィルターは、以上で説明したフィルターに加えて、またはその代わりに用いることができ、特に、ユーザーが彼または彼女の手を画像キャプチャー・デバイス20に向けて指し示すときに有用であると考えられる。
【0068】
[0091] ヒストグラム・フィルターでは、手の領域における距離のヒストグラムを構築することができる。例えば、このようなヒストグラムは15個のビンを含むことができ、各ビンは、手の領域において、最も近い点からカメラまでのZ−方向(深度)の距離、そのビンに関連付けられている一定の距離範囲以内である点の数を含む。例えば、このようなヒストグラムにおける第1のビンは、手の領域において、手の重心までの距離が0および0.40センチメートルの間である点の数を含むことができ、第2のビンは、手の領域において、手の重心までの距離が0.40および0.80センチメートルの間である点の数を含む等である。このようにして、手の形状をコード化するベクトルを構築することができる。更に、このようなベクトルは、例えば、推定した身体の大きさに基づいて正規化することもできる。
【0069】
[0092] 一般に、ビン全体における分布を分析することによって、キャプチャー・デバイス20に向けて指し示している手が開いているかまたは閉じているか判断することができる。分布が前寄り(front heavy)である(最初の数個のビンが、最後の数個のビンと比較して、多数の画素を有する)、手は閉じていると推論することができる。分布が後ろ寄り(back heavy)である場合(最後の数個のビンが、最初の数個のビンと比較して、多数の画素を有する)、手は開いていて、キャプチャー・デバイス20に向けて指し示していると推論することができる。このように、開いた状態または閉じた状態は、ヒストグラムによって示される質量分布から推論することができる。あるいは、ヒストグラムは、学習して手の状態を自動的に予測するために、種々の機械学習分類技法(本明細書において説明した)によって、特徴として用いることができる。
【0070】
[0093] 他の手法例では、手の領域における点から、推定したユーザーの骨格からの関節、骨区間(bone segment)、または手の平の面、例えば、肘関節、手首関節等までの距離および/または角度に基づいて、ヒストグラムを構築することもできる。
図17は、閉じた手および開いた手について判定したヒストグラムを示す2つのグラフを示す。
【0071】
[0094] 更に他のフィルターに、フーリエ・フィルターがある。フーリエ記述子の構成は、例えば、手の領域における各画素から手の領域の周囲(perimeter)までの距離を、手の境界の放物線はめ込み(elliptical fitting)の半径に対してマッピングを行い、次いでこのマップに対してフーリエ変換を行うことによって、手の領域の輪郭をコード化することを含む。更に、このような記述子は、例えば、推定身体サイズに対して正規化することもできる。このような記述子は、変換、拡縮、および回転に対して不変であることもできる。
【0072】
[0095] 更に他のフィルターは、例えば、手の領域の輪郭の面積の手の領域の凸包(convex hull)に対する比率を判定することによって、手の領域の凸状部を判定することを含む。
【0073】
[0096] 以上のフィルターでは十分な情報が得られない場合に有用であり得る他のフィルターに、不連続フィルターと呼ばれるものがある。このようなフィルターは、認識をせず位置情報も提供しないが、画像が手であることを想定し、その手が開いているかまたは閉じているか識別する。不連続フィルターは、閉じたこぶしは比較的滑らかであり、開いた手の輪郭と比較すると、殆ど輪郭の不連続がないという事実に基づく。つまり、測定した輪郭の不連続が何らかの所定の閾値よりも低い場合、不連続フィルターは閉じた手を識別する。測定した輪郭の不連続が所定の閾値よりも高い場合、不連続フィルターは、開いた手を識別する。このような画像データの例を
図18に示す。
【0074】
[0097] 手の開いた状態/閉じた状態を検出する更に他のフィルターに、自然グラブ・フィルター(natural grab filter)と呼ばれるものがある。一般に、自然グラブ・フィルターは、ユーザーがキャプチャー・デバイス20に向けて腕を伸ばし、彼または彼女の手を開いて閉じる動きを検出する。手の平は、キャプチャー・デバイス20に面していてもいなくてもよい。自然グラブ・フィルターについて、
図19のフローチャートを参照しながら更に説明する。ステップ291において、別の区分を行う。この別の区分では、骨格認識エンジン192によって与えられた、下腕を記述する肘−手ベクトルを調べる。次いで、自然グラブ・フィルターは現在の手の区分を繰り返し、画素毎に、その画素が肘からどれ位離れているか算出する。肘から最も離れている画素のみを維持し、最も離れている画素を、ユーザーの特定の骨格サイズに基づいて、ウィンドウとして定める。一例として、大人では、肘から最も遠い点において開始すると、4インチのウィンドウとなる。このウィンドウは、子供、または、もっと小さい人に対しては変更することができる。
【0075】
[0098] この時点で、3つのサブフィルターの内1つ以上を実行する。第1のサブフィルターは、深度変化、即ち、ジャンプを測定する。ステップ292において、深度ジャンプ・サブフィルターは、新たに区分した手の画像において行および列の画素毎に繰り返す。この繰り返しは、全ての行に対して行い、次いで全ての列について行っても、その逆でもよい。このサブフィルターは、深度ジャンプの回数を数える。深度ジャンプと見なされるのは、画像における深度読み取り値において、1つの画素から次の画素までの大きなジャンプがあるときである。全ての行および列にわたって繰り返すと、このサブフィルターは、深度ジャンプがあった行および列の割合を求める。
【0076】
[0099] この割合に基づいて、深度ジャンプ・サブフィルターは、手が開いているかまたは閉じているかについて有理な推定を形成することができる。閉じた手は、開いた手よりも、深度ジャンプが遙かに少ない。何故なら、開いた手は、指の間にある空間によって深度ジャンプが生ずるからである(深度ジャンプは、カメラのデータ・ノイズというような他の理由でも生ずることがあり、例えば、開いた指という結果が得られる)。深度ジャンプ・サブフィルターの出力は割合なので、手のサイズの影響を受けない。この出力は、検査から確定される何らかの既定の閾値割合値に基づいて、バイナリ(開/閉)とすることができる。あるいはまたは加えて、この出力は信頼値(この割合がどれ位閾値に近いか)がある開/閉出力とすることができる。
【0077】
[00100] 第2のサブフィルターは、円サブフィルターと呼ぶこともできる。ステップ293において、円サブフィルターは、新たに区分した手の画像のシルエットをしらべて、このシルエットが全体的に円形か否か判断する。全体的に円形である場合、これは閉じた手を示す。手が開いている場合、いずれにしても区分画像は指またはカメラからの余分なノイズを含むので、円形ではなくなる。
【0078】
[00101] この判断を行う方法は、新たに区分した手の質量の中心を計算し、次いでこの画像のシルエットの半径の標準偏差を調べることである。閉じたこぶしは、円形に近く、シルエットの中心から縁までの異なる半径の標準偏差は比較的小さい。標準偏差は、円形ではないものに対しては高くなる。何故なら、ばらつきが多いからである。このように、標準偏差値に基づいて、円サブフィルターは、手が開いているかまたは閉じているかについて推定を出力する。また、このフィルターは、手が、キャプチャー・デバイスからの光線に対して垂直なシルエットの中にあるか、またはキャプチャー・デバイスを指し示しているかについても機能する。円サブフィルターの出力は、検査から確定される何らかの既定の敷地委標準偏差に基づいて、バイナリ(開/閉)とすることができる。あるいはまたは加えて、出力は信頼値(この標準偏差がどれ位閾値に近いか)がある開/閉出力とすることができる。
【0079】
[00102] 第3のサブフィルターは、パドル・サブフィルター(paddle sub-filter)と呼ぶこともできる。ステップ294において、パドル・サブフィルターは、ユーザーが彼らの手または彼らの指を広げている、したがって、手を開いているが、彼らの指は全て一緒であり、本質的にパドルを形成しているか否か調べる。パドル・サブフィルターは、指先から逆に肘までのビンを用いて、ヒストグラムを生成し、これらのビンの各々における画素数を調べる。次いで、これらのビンが大きくなりつつあるように見えるか否か、またはこれらが一定のままに留まり最終的に小さくなりつつあるか否か分析する。
【0080】
[00103] この考えは、手の指先を合わせてパドルのようにすると、指先では画素が少なくなり、手の中心に向かって画素が増大するということである。逆に、手を握ってこぶしにすると、こぶしがある上面には比較的多くの画素があり、手首および腕に向かって徐々に細くなる。つまり、パドル・サブフィルターのヒストグラムを用い、パドル状のときおよびこぶし状のときとわかる手の外形(configuration)を用いて、得られたビンを分析することにより、パドル・サブフィルターは、区分した手が開いているかまたは閉じているかについての推定を提示することができる。この場合も、パドル・サブフィルターの出力は、検査から確定した何らかの既定の閾値に基づいて、バイナリ(開/閉)にすることができる。あるいはまたは代わりに、 この出力は信頼値(どれ位閾値に近いか)がある開/閉出力とすることができる。
【0081】
[00104] ステップ295において、サブフィルターからの結果を組み合わせて、手が開いているかまたは閉じているかについての最終出力、即ち、推定を得る。ステップ295の組み合わせでは、判断ツリーを用いる。判断ツリーは、これらのフィルターの各々について、開いている手/閉じている手、および信頼値を確認し、これらを一緒に組み合わせて最終的な開/閉出力を得る。この判断ツリーは、各サブフィルターの長所を最大化し、短所を最小化するようにカスタム化することもできる。深度ジャンプ・サブフィルターは、最も信頼性があると考えられる。このため、深度ジャンプ・サブフィルターの出力が何らかの閾値よりも高い信頼度を有するとき、これを最終出力として採用するとよい。
【0082】
[00105] 円サブフィルターの結果は、2番目に信頼性が高いと考えられる。深度ジャンプ・サブフィルターの結果が閾値よりも高い信頼度を有していない場合、または深度ジャンプ・サブフィルターの出力と円サブフィルターの出力が一致しない場合、円サブフィルターの結果を、その信頼値と共に考慮するとよい。信頼値が高い場合、円サブフィルターの出力を最終出力として採用するとよい。
【0083】
[00106] パドル・サブフィルターの結果は、次に信頼性が高いと考えられる。深度ジャンプ・サブフィルターまたは円サブフィルターのいずれも信頼性のある結果を提供しない場合、パドル・フィルターの結果を考慮し、その信頼値が何らかの閾値よりも高い場合、最終出力として用いるとよい。
【0084】
[00107] 同じ判断ツリー型の分析は、前述した他のフィルターの結果を考慮するためにも用いることができる。一実施形態では、湾曲分析フィルターが何らかの所定の閾値よりも高い信頼度の出力を供給する場合、この結果を最終出力として採用するのでもよい。湾曲分析フィルターの信頼度が閾値よりも高くない場合、ヒストグラム・フィルターの信頼度を調べるとよい。何らかの所定の閾値よりも高い場合、その結果を最終出力として採用するとよい。ヒストグラム・フィルターの信頼度が閾値よりも高くない場合、自然グラブ・フィルターの信頼度を調べればよい。何らかの所定の閾値よりも高い場合、その結果を最終出力として採用するとよい。
【0085】
[00108] 以上で説明したフィルターは、異なるサイズの手に対して正規化すること、および/または不変にすることもできる。また、これらの異なるフィルターは、多数のプレーヤに、またはこのようなプレーヤ各々の一方または両方の手に拡張可能にしてもよい。
【0086】
[00109] 尚、形状記述子のフィルター例は、性質上例示であり、本開示の範囲を限定することは意図していないことは言うまでもない。一般に、手の領域に適した形状記述子であればいずれも、単独で、あるいは互いに組み合わせて、および/または以上で説明した方法例の内1つと組み合わせて用いることもできる。例えば、以上で説明したヒストグラムまたはベクトルのような形状記述子は、もっと大きなベクトルと混合すること、照合する(match)こと、組み合わせること、および/または連結すること等が可能である。これによって、個々にこれらを見ても特定できなかった新たなパターンの特定が可能になることもある。これらのフィルターは、履歴フレーム・データの使用により増強することもできる。履歴フレーム・データは、例えば、特定した指が、以前のフレームにおいて特定したその指から逸脱し過ぎているか否か示すことができる。
【0087】
[00110]
図6に示したパイプラインを続けると、以上で説明したフィルターからの情報を用いて、分類エンジン198(
図2)は、ステップ214において、手を分類することができる。例えば、ステップ210において抽出した形状記述子は、手の状態を推定するために格納されている訓練データに基づいて分類することができる。例えば、
図7の310において示すように、手が開いているまたは閉じていると分類することができる。例の中には、訓練データが、種々の手の状態の深度画像例を、標識付きで備えているとよい場合もある。訓練データは、実物であっても、合成して生成したのでもよく、異なる身体サイズおよび腕の向きで全身または上半身の3Dモデルを描き、更に動き取り込み(motion capture)に基づいて、曲げ方が異なる手の姿勢、または手描きの(hand-designed)手の姿勢を描くことできる。合成画像は、ノイズが多い実際の画像を模擬するために、劣化させることもできる。
【0088】
[00111] 例の中には、分類ステップ214において用いる訓練データが、所定の1組の手の例に基づくとよい場合もある。手の例は、代表的な手の状態に基づいて類別するかまたは標識を付けることができ、これらに対して、手の領域についての形状記述子を比較する。
【0089】
[00112] 例の中には、訓練データを分割するために種々のメタデータを用いるとよい場合もある。例えば、訓練データは、複数の手の状態の例を含むこともあり、例えば、手の側(例えば、左または右)、手の向き(例えば、下腕角または下腕の向き)、深度、および/またはユーザーの身体サイズの内1つ以上に基づいて分割することができる。これらの訓練用の手の例を別個の部分集合に分割すると、各区分内における手の形状の変異性(variability)を低減することができ、一層精度が高い総合的な手の状態の分類を行うことが可能になる。
【0090】
[00113] 加えて、例の中には、訓練データが特定のアプリケーションに限定的であるとよい場合もある。即ち、訓練データは、所与のアプリケーションにおいて予期される動作、例えば、ゲームにおいて予期される行動に応じて異なっていてもよい。更に、例の中には、訓練データがユーザーに限定的であるとよい場合もある。例えば、アプリケーションまたはゲームが訓練モジュールを含むのでもよく、ユーザーは1つ以上の訓練用の実習を行って訓練データを較正する。例えば、ユーザーが一連の手を開いた姿勢および手を閉じた姿勢を取り、後続のシステムとの対話処理の間にユーザーの手の状態を推定する際に用いられる訓練データ集合を作成することができる。
【0091】
[00114] ユーザーの手の分類は、訓練用の例に基づいて、種々の方法で行うことができる。例えば、種々の機械学習技法を分類において採用することができる。非限定的な例には、サポート・ベクトル・マシン訓練、回帰、最近傍法(nearest neighbor)、(非)教師なしクラスタリング((un)supervised clustering)等が含まれる。
【0092】
[00115]
図20は、以上で説明した種々のフィルターの結果を組み合わせるスーパーバイザー・フィルター(supervisor filter)を示す。例えば、湾曲分析フィルター、深度ヒストグラム・フィルター、不連続フィルター、
図20には示されていない他の開/閉フィルター、および腕の方向に関するデータを、例えば、サポート・ベクトル・マシンのような機械に供給することができる。更に、隠れマルコフ・モデルを用いてこの結果の精度を更に高めて、開いている手または閉じている手の指示を与えることができる。前述のように、本明細書において説明した種々のフィルターで用いたシルエットは、その手のサイズおよびセンサー距離が、カメラからのユーザーの距離および分析した骨格から推論される手のサイズの知識によって影響を受けない (invariant)ように、拡縮する(scale)こともできる。
【0093】
[00116] 先に論じたように、分類技法は、観察対象の手が様々な状態の内の1つである可能性を予測するために、種々の手の状態の深度画像例に標識を付けて用いることもできる。加えて、分類ステップの最中またはその後に、信頼度を分類に付加することもできる。例えば、訓練データに基づいて、あるいはシグモイド関数または他の適した誤差関数を分類ステップの出力に当てはめることによって、信頼度間隔を、推定した手の状態に割り当てることもできる。
【0094】
[00117] 手の状態を分類する単純な非限定的一例として、
図7の310に示すように、2つの可能な手の状態、開いている状態または閉じている状態があるとよい。この例では、訓練データは2つの標識付きの手の集合を含むことができる。第1の手の例の集合は、開いているまたはほぼ開いている手の状態を表し、第2の手の例の集合は、閉じているまたはほぼ閉じている手の状態を表す。このように、特定された手の領域に対して、形状記述子が抽出されたとすると、この特定された手の領域の抽出された形状記述子を、第1(開いた)および第2(閉じた)の手の集合における手の例と比較して、特定された手の領域が各集合に該当する可能性を判定することができる。次いで、高い方の可能性に基づいて、手の状態を推定することができる。
【0095】
[00118] 開いた手または閉じた手の状態に加えて、本技術は、例えば、1本以上の指によって特定の方向を指し示すというような、特定の指の向きを識別するためにも用いることができる。また、本技術は、x,y,zデカルト空間内において種々の角度に向けられた種々の手の位置を識別するためにも用いることができる。
【0096】
[00119] 例えば、
図7の310に示すように、特定された手の領域は、開いている可能性の方が高いと判定され、そのように分類される。加えて、例の中には、特定された手が特定の手の状態にあると判定された可能性を用いて、手の状態の推定に対する信頼度間隔を確定することもできる場合がある。
【0097】
[00120] 実施形態では、ステップ216(
図6)における手および指の位置の推定精度を高めるために、種々の分類後フィルタリング・ステップを採用するとよい。例えば、時間的整合性フィルタリング、例えば、ロー・パス・フィルター・ステップを、連続する深度画像フレーム間において予測した手および指の位置に適用して、予測をスムージングし、例えば、偽りの手の動き、センサーのノイズ、または場合によって起こり得る分類の誤りによる時間的ジッタリング(temporal jittering)を低減することができる。即ち、キャプチャー・デバイスまたはセンサーからの複数の深度画像に基づく複数の手および指の位置を推定し、手および指の位置を推定するための複数の推定値の時間的フィルタリングを実行することができる。更に、例の中には、アプリケーションによっては、他のアプリケーションよりも擬陽性に対して一層敏感である(一方向または他方に)こともあるので、分類結果を一方の状態または他方の状態に(例えば、開いた手または閉じた手に向けて)偏らせるとよい場合もある。
【0098】
[00121] ステップ220において、
図6のパイプラインは、推定した手の状態に基づいて、フレーム毎に応答を出力することができる。例えば、計算システム10のコンソール12のような、計算システムのコンソールにコマンドを出力することができる。他の例として、ディスプレイ・デバイス16のようなディスプレイ・デバイスに、応答を出力することもできる。このように、推定した手の状態を含む、推定したユーザーの動きを、システム10のコンソール12へのコマンドに変換することができるので、ユーザーは、前述のように、システムと対話処理することができる。更に、以上で説明した方法およびプロセスは、ユーザーの身体のいずれの部分、例えば、口、目等についても推定値を決定するために実装することができる。例えば、以上で説明した方法を用いて、ユーザーの身体の一部について姿勢を推定することもできる。
【0099】
[00122] 本技術は、例えば、
図1Aから
図1Cに示したようなNUIシステムとの多種多様な対話処理を可能にする。 広い範囲の自然な対話処理があり、手/指の動きに基づくもの、または大きな身体の動きおよびきめ細かい手の制御の双方を組み合わせるものもあり、これらは、新たに認識するジェスチャー、一層深く没頭する体験、および非常におもしろいゲームを創作するには望ましい。これらの使用および対話処理は、以下のことを含むが、これらに限定されるのではない。
【0100】
・掴む/放すという動きの手順(mechanics)−ユーザーの手が開いているかまたは閉じているか正確に判断することができると、NUIシステムまたはアプリケーションは、掴む動きまたは放す動きをするときを、正確に判断することができる。このため、例えば、ゲームにおいてユーザーがオブジェクトを投げているときに、NUIシステムまたはアプリケーションは、ユーザーが投げたオブジェクトを放そうとした正確な放出点(閉じた手から開いた手への移行)を判断することができる。他の例には、登ること、ぱちんこ、風船飛ばし、および仮想レバーを引くことが含まれるが、これらに限定されるのではない。
【0101】
・オブジェクトを引く−開いた手および閉じた手の検出を用いて、ロープ、レバー等の仮想オブジェクトを引く。
・開始/終了動作−手を開いてある行為を開始して継続し、手を閉じてそれを終了する。一例には、ゲームにおける消防ホースの使用が含まれる。手を開いてそれをオンに切り替え、手および腕の向きでホースを導き、手を閉じてそれをオフに切り替える。
【0102】
[00123] その他の指および手の相互作用も考えられる。
[00124]
図21Aは、目標認識、分析、および追跡システムにおいてユーザーの1つ以上の位置および動きを解釈するために用いることができる計算環境の一実施形態例を示す。
図1Aから
図2に関して先に説明した計算環境12のような計算環境は、ゲーミング・コンソールのような、マルチメディア・コンソール600であってもよい。
図21Aに示すように、マルチメディア・コンソール600は、レベル1キャッシュ602、レベル2キャッシュ604、およびフラッシュROM606を有する中央演算装置(CPU)601を有する。レベル1キャッシュ602およびレベル2キャッシュ604は、一時的にデータを格納し、こうしてメモリー・アクセス・サイクルの回数を減らすことによって、処理速度およびスループットを向上させる。CPU601は、1つよりも多いコア、つまり、追加のレベル1およびレベル2キャッシュ602および604を有するものを設けてもよい。フラッシュROM606は、実行可能コードを格納することができる。実行可能コードは、マルチメディア・コンソール600に電源を入れたときに、ブート・プロセスの初期段階の間にロードされる。
【0103】
[00125] グラフィクス処理ユニット(GPU)608およびビデオ・エンコーダー/ビデオ・コデック(コーダ/デコーダ)614は、高速および高解像度グラフィクス処理のためのビデオ処理パイプラインを形成する。データは、GPU608からビデオ・エンコーダー/ビデオ・コデック614にバスを通じて搬送される。このビデオ処理パイプラインは、テレビジョンまたは他のディスプレイへの送信のためにデータをA/V(オーディオ/ビデオ)ポート640に出力する。メモリー・コントローラー610は、限定ではないが、RAMのような種々のタイプのメモリー612にプロセッサーがアクセスし易くするために、GPU608に接続されている。
【0104】
[00126] マルチメディア・コンソール600は、I/Oコントローラー620、システム管理コントローラー622、オーディオ処理ユニット623、ネットワーク・インターフェース・コントローラー624、第1USBのホスト・コントローラー626、第2のUSBコントローラー628、およびフロント・パネルI/Oサブアセンブリ630を含む。これらは、好ましくは、モジュール618上に実装されている。USBコントローラー626および628は、周辺コントローラー642(1)〜642(2)、ワイヤレス・アダプター648、および外部メモリー・デバイス646(例えば、フラッシュ・メモリー、外部CD/DVD ROMドライブ、リムーバブル媒体等)のためのホストとしての役割を果たす。ネットワーク・インターフェース624および/またはワイヤレス・アダプター648は、ネットワーク(例えば、インターネット、家庭内ネットワーク等)へのアクセスを与え、イーサネット(登録商標)・カード、モデム、Bluetoothモジュール、ケーブル・モデム等を含む広範囲にわたる種々の有線またはワイヤレス・アダプター・コンポーネントの内いずれでもよい。
【0105】
[00127] システム・メモリー643は、ブート・プロセスの間にロードされるアプリケーション・データを格納するために設けられている。メディア・ドライブ644が設けられており、DVD/CDドライブ、ハード・ドライブ、またはその他のリムーバブル・メディア・ドライブを備えることができる。メディア・ドライブ644は、マルチメディア・コンソール600の内部にあっても外部にあってもよい。アプリケーション・データには、マルチメディア・コンソール600が実行、再生等のために、メディア・ドライブ644を介してアクセスすることができる。メディア・ドライブ644は、シリアルATAバスまたはその他の高速接続(例えば、IEEE1394)のようなバスを介して、I/Oコントローラー620に接続されている。
【0106】
[00128] システム管理コントローラー622は、メディア・コンソール600が利用可能であることを確保することに関する種々のサービス機能を提供する。オーディオ処理ユニット623およびオーディオ・コデック632は、高忠実度およびステレオ処理を行う、対応のオーディオ処理パイプラインを形成する。オーディオ・データは、通信リンクを介して、オーディオ処理ユニット623とオーディオ・コデック632との間で搬送される。オーディオ処理パイプラインは、外部オーディオ・プレーヤーまたはオーディオ処理能力を有するデバイスによる再生のために、データをA/Vポート640に出力する。
【0107】
[00129] フロント・パネルI/Oサブアセンブリ630は、電力ボタン650およびイジェクト・ボタン652の機能をサポートするだけでなく、あらゆるLED(発光ダイオード)またはマルチメディア・コンソール600の外面上に表出されているその他のインディケーターもサポートする。システム電源モジュール636は、マルチメディア・コンソール600のコンポーネントに電力を供給する。ファン638は、マルチメディア・コンソール600内部にある回路を冷却する。
【0108】
[00130] CPU601、GPU608、メモリー・コントローラー610、およびマルチメディア・コンソール600内部にある種々のその他のコンポーネントは、1系統以上のバスを介して相互接続されている。これらのバスには、シリアルおよびパラレル・バス、メモリー・バス、周辺バス、ならびに種々のバス・アーキテクチャの内いずれかを用いるプロセッサー・バスまたはローカル・バスが含まれる。一例として、このようなアーキテクチャーは、ペリフェラル・コンポーネント相互接続(PCI)バス、PCI-Expressバス等を含むことができる。
【0109】
[00131] マルチメディア・コンソール600に電源を入れると、システム・メモリー643からメモリー612および/またはキャッシュ602、604にアプリケーション・データがロードされ、CPU601において実行することができる。アプリケーションは、グラフィカル・ユーザー・インターフェースを提示することができる。このグラフィカル・ユーザー・インターフェースは、マルチメディア・コンソール600において利用可能な異なるタイプのメディアにナビゲートするときに、一貫性のあるユーザー体験を提供する。動作において、アプリケーションおよび/またはメディア・ドライブ644内に収容されている他のメディアをメディア・ドライブ644から起動または再生して、マルチメディア・コンソール600に追加の機能を設けることもできる。
【0110】
[00132] マルチメディア・コンソール600は、単にシステムをテレビジョンまたはその他のディスプレイに接続することによって、単体システムとして動作させることができる。この単体モードでは、マルチメディア・コンソール600は、1人以上のユーザーがシステムと対話処理を行い、ムービーを見ること、または音楽を聞くことを可能にする。しかしながら、ネットワーク・インターフェース624またはワイヤレス・アダプター648によって利用可能となるブロードバンド接続機能を統合することにより、マルチメディア・コンソール600を更に大きなネットワーク・コミュニティにおける関与個体(participant)として動作させることもできる。
【0111】
[00133] マルチメディア・コンソール600に電源を入れると、マルチメディア・コンソールのオペレーティング・システムによって、設定されている量のハードウェア・リソースがシステムの使用のために確保される。これらのリソースは、メモリー(例えば、16MB)、CPUおよびGPUサイクル(例えば、5%)、ネットワーク接続帯域幅(例えば、8kbs)等の確保を含むことができる。これらのリソースは、システムのブート時に確保されるので、確保されたリソースは、アプリケーションの視点からは存在しない。
【0112】
[00134] 特に、メモリーの確保は、起動カーネル、コンカレント・システム・アプリケーション、およびドライバーを収容できる程に十分大きいことが好ましい。確保されたCPU使用枠(usage)がシステム・アプリケーションによって用いられない場合、アイドルのスレッドがいずれかの未使用サイクルを消費するように、CPUの確保は一定であることが好ましい。
【0113】
[00135] GPUの確保に関して、GPU割り込みを用いてポップアップをオーバーレイにレンダリングするコードをスケジューリングすることによって、システム・アプリケーション(例えば、ポップアップ)が生成する軽量メッセージ(lightweight message)を表示する。オーバーレイに用いられるメモリー量は、オーバーレイのエリア・サイズによって異なり、オーバーレイは画面の解像度に合わせて倍率調整する(scale)ことが好ましい。コンカレント・システム・アプリケーションによってフル・ユーザー・インターフェースが用いられる場合、アプリケーションの解像度とは独立した解像度を用いることが好ましい。周波数を変更してTVの同期を取り直す必要性をなくすように、この解像度を設定するためにスケーラー(scaler)を用いるとよい。
【0114】
[00136] マルチメディア・コンソール600がブートして、システム・リソースが確保された後、コンカレント・システム・アプリケーションが実行してシステム機能を提供する。システム機能は、前述の確保したシステム・リソースの内部で実行する1組のシステム・アプリケーションの中にカプセル化されている。オペレーティング・システム・カーネルは、システム・アプリケーション・スレッドと、ゲーミング・アプリケーション・スレッドとの間でスレッドを識別する。一貫したシステム・リソース・ビューをアプリケーションに提供するために、システム・アプリケーションは、所定の時点および間隔でCPU601において実行するようにスケジューリングされていることが好ましい。このスケジューリングは、コンソール上で実行しているゲーミング・アプリケーションに対するキャッシュ破壊(disruption)を最少に抑えるためにある。
【0115】
[00137] コンカレント・システム・アプリケーションがオーディオを必要とする場合、時間に敏感であるため、ゲーミング・アプリケーションには非同期にオーディオ処理をスケジューリングする。マルチメディア・コンソール・アプリケーション・マネージャー(以下で説明する)は、システム・アプリケーションがアクティブのとき、ゲーミング・アプリケーションのオーディオ・レベル(例えば、無音化、減衰)を制御する。
【0116】
[00138] 入力デバイス(例えば、コントローラー642(1)および642(2))は、ゲーミング・アプリケーションおよびシステム・アプリケーションによって共有される。入力デバイスは、確保されるリソースではないが、各々がデバイスのフォーカス(focus)を有するように、システム・アプリケーションとゲーミング・アプリケーションとの間で切り換えられる。アプリケーション・マネージャーは、ゲーミング・アプリケーションの知識を用いずに入力ストリームの切換を制御し、ドライバーはフォーカス・スイッチ(focus switches)に関する状態情報を維持する。カメラ26、28およびキャプチャー・システム20は、コンソール600の追加の入力デバイスを定めることができる。
【0117】
[00139]
図21Bは、目標認識、分析、および追跡システムにおいて1つ以上の位置および動き(motion)を解釈するために用いられる、計算環境720の他の実施形態例を示す。計算環境720は、
図1Aから
図2に示した計算環境12であってもよい。計算システム環境720は、適した計算環境の一例に過ぎず、本明細書において開示される主題の使用範囲または機能に関して、いかなる限定を示唆する意図もない。また、計算環境720が、本明細書において例示されるいずれの1つのコンポーネントまたはコンポーネントの組み合わせに関して何らかの依存性または要件を有するように解釈してはならない。実施形態によっては、図示する種々の計算エレメントが、本開示の特定の態様をインスタンス化するように構成されている回路を含むこともあり得る。例えば、本開示において用いられる回路という用語は、ファームウェアまたはスイッチによって機能(1つまたは複数)を実行するように構成されている特殊ハードウェア・コンポーネントを含むことができる。別の実施形態例では、回路という用語は、機能(1つまたは複数)を実行するために動作可能なロジックを具体化するソフトウェア命令によって構成される汎用演算装置、メモリー等を含むことができる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、実装者(implementer)は、ロジックを具体化するソース・コードを書くことができ、ソース・コードを機械読み取り可能コードにコンパイルすることができ、この機械読み取り可能コードを汎用演算装置によって処理することができる。技術的現状では、ハードウェア、ソフトウェア、またはハードウェア/ソフトウェアの組み合わせの間には殆ど差がないというところまで発展していることを当業者は認めることができるので、特定の機能を実行するためにハードウェアまたはソフトウェアのどちらを選択するかということは、実装者に委ねられた設計選択事項である。更に具体的には、ソフトウェア・プロセスを等価のハードウェア構造に変換することができ、更にハードウェア構造自体を等価のソフトウェア・プロセスに変換することができることを、当業者は認めることができる。つまり、ハードウェアの実施態様およびソフトウェアの実施態様のどちらを選択するかということは、実装者に委ねられた設計選択事項の1つである。
【0118】
[00140]
図21Bにおいて、計算環境720は、コンピューター741を含む。コンピューター741は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター741がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。システム・メモリー722は、リード・オンリー・メモリー(ROM)723およびランダム・アクセス・メモリー(RAM)760のような揮発性および/または不揮発性メモリーの形態で、コンピューター記憶媒体を含む。基本入出力システム724(BIOS)は、起動中のように、コンピューター741内のエレメント間におけるデータ転送を補助する基本的なルーチンを含み、通例ROM723内に格納されている。RAM760は、通例、演算装置759が直ちにアクセス可能であるデータおよび/またはプログラム・モジュール、または現在これによって処理されているデータおよび/またはプログラム・モジュールを収容する。一例として、そして限定ではなく、
図21Bは、オペレーティング・システム725、アプリケーション・プログラム726、その他のプログラム・モジュール727、およびプログラム・データ728を示す。更に、
図21Bは、グラフィクス・プロセッサー・ユニット(GPU)729も含む。グラフィクス・プロセッサー・ユニット729は、高速および高解像度グラフィクス処理および格納のために、付随するビデオ・メモリー730を有する。GPU729は、グラフィクス・インターフェース731を介して、システム・バス721に接続することができる。
【0119】
[00141] また、コンピューター741は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例にすぎないが、
図21Bは、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ738、リムーバブル不揮発性磁気ディスク754からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ739、ならびにCD ROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク753からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ740を示す。動作環境の一例において使用可能なその他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ738は、通例、インターフェース734のような非リムーバブル・メモリー・インターフェースを介してシステム・バス721に接続され、磁気ディスク・ドライブ739および光ディスク・ドライブ740は、通例、インターフェース735のようなリムーバブル・メモリー・インターフェースによって、システム・バス721に接続する。
【0120】
[00142] 先に論じ
図21Bに示すドライブおよびそれらと関連のあるコンピューター記憶媒体は、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、およびコンピューター741のその他のデータを格納する。
図21Bでは、例えば、ハード・ディスク・ドライブ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を介して接続することができる。
【0121】
[00143] コンピューター741は、リモート・コンピューター746のような1つ以上のリモート・コンピューターへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピューター746は、パーソナル・コンピューター、サーバー、ルータ、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピューター741に関して先に説明したエレメントの多くまたは全てを含むが、
図21Bにはメモリー記憶装置747のみを示す。
図21Bに示す論理接続は、ローカル・エリア・ネットワーク(LAN)745およびワイド・エリア・ネットワーク(WAN)749を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネットおよびインターネットにおいては一般的である。
【0122】
[00144] LANネットワーク環境で用いる場合、コンピューター741は、ネットワーク・インターフェースまたはアダプター737を介してLAN745に接続する。WANネットワーク環境で用いる場合、コンピューター741は、通例、モデム750、またはインターネットのようなWAN749を通じて通信を設定するその他の手段を含む。モデム750は、内蔵でも外付けでもよく、ユーザー入力インターフェース736またはその他の適切な機構を介してシステム・バス721に接続することができる。ネットワーク環境では、コンピューター741に関係付けて図示したプログラム・モジュール、またはその一部は、リモート・メモリー記憶装置に格納することもできる。一例として、そして限定ではなく、
図21Bは、リモート・アプリケーション・プログラム748がメモリー・デバイス747に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを設定する他の手段も使用可能であることは認められよう。
【0123】
[00145] 以上の本発明のシステムについての詳細な説明は、例示および説明の目的で提示された。これは、網羅的であることも、開示された技術を開示された形態そのものに限定することを意図するのではない。多くの変更や変形が、以上の教示に照らして、可能である。記載した実施形態は、本技術の原理およびその実用的な用途を最良に説明し、それによって当業者が本技術を種々の実施形態において、そして個々の考えられる使用に適するような種々の変更と共に、最良に利用することを可能にするために選択されたのである。本発明のシステムの範囲は、本明細書に添付されている特許請求の範囲によって定義されることを意図している。