(57)【特許請求の範囲】
【請求項１】
データ・セットを含むデータ空間全域においてナビゲートする方法であって、
検出器を通じて受信したジェスチャ・データから物理的空間における本体のジェスチャを検出するステップであって、前記ジェスチャ・データが、ある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、当該検出するステップが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別することを含む、ステップと、
前記ジェスチャをジェスチャ信号に変換するステップと、
パラメータにより制御可能である前記データ・セットの特性に基づいて、前記データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定するステップであって、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間である、ステップと、
前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成される複数のデータ・フレームを含めるように前記データ空間の視覚表現を生成するステップであって、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成される、ステップと、
前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップとを含む、方法。
【請求項２】
請求項１記載の方法であって、前記データ・セットのパラメータ−制御軸を、前記物理的空間の１次元と位置合わせするステップを含む、方法。
【請求項３】
請求項２記載の方法において、前記次元が深さ次元である、方法。
【請求項４】
請求項２記載の方法において、前記次元が水平次元である、方法。
【請求項５】
請求項２記載の方法において、前記次元が垂直次元である、方法。
【請求項６】
請求項２記載の方法において、前記次元が横方向次元である、方法。
【請求項７】
請求項２記載の方法において、前記ナビゲートするステップが、前記パラメータ−制御軸に沿ってデータ空間変換を行うために、前記次元に沿った運動を含む、方法。
【請求項８】
請求項２記載の方法において、前記ナビゲートするステップが、前記データ空間の量子化パラメータ空間にナビゲートすることを含む、方法。
【請求項９】
請求項１記載の方法において、前記検出するステップが、前記本体の進展する位置を検出することを含む、方法。
【請求項１０】
請求項１記載の方法において、前記検出するステップが、前記本体の進展する方位を検出することを含む、方法。
【請求項１１】
請求項１記載の方法において、前記検出するステップが、前記本体の進展するポーズを検出することを含み、前記ポーズが、前記本体の一部分の前記本体の少なくとも１つの他の部分に対する幾何学的配置である、方法。
【請求項１２】
請求項１記載の方法において、前記検出するステップが、前記本体の進展する運動を検出することを含む、方法。
【請求項１３】
請求項１記載の方法において、前記検出するステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも１つを検出することを含む、方法。
【請求項１４】
請求項１記載の方法であって、前記ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを含む、方法。
【請求項１５】
請求項１４記載の方法であって、前記ジェスチャを識別するステップを含む、方法。
【請求項１６】
請求項１５記載の方法において、前記ジェスチャを識別する前記ステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも１つを識別することを含む、方法。
【請求項１７】
請求項１５記載の方法であって、前記ジェスチャ・イベントのシーケンスにおける前記ジェスチャ・イベントの表現を発生するステップを含む、方法。
【請求項１８】
請求項１７記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間に結合されている少なくとも１つの制御コンポーネントに配信するステップを含む、方法。
【請求項１９】
請求項１８記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間のグラフィカル描写と同期させるステップを含む、方法。
【請求項２０】
請求項１９記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを含む、方法。
【請求項２１】
請求項１８記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間の聴覚描写と同期させるステップを含む、方法。
【請求項２２】
請求項２１記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを含む、方法。
【請求項２３】
請求項１記載の方法において、前記データ・セットが空間情報を表す、方法。
【請求項２４】
請求項２３記載の方法において、前記データ・セットが、現象、イベント、測定、観察、および構造の内少なくとも１つの空間情報を表す、方法。
【請求項２５】
請求項１記載の方法において、前記データ・セットが非空間情報を表す、方法。
【請求項２６】
請求項１記載の方法において、前記ジェスチャが線形空間運動を含む、方法。
【請求項２７】
請求項１記載の方法において、前記ナビゲートするステップが、前記データ空間を通過する線形推移を含む、方法。
【請求項２８】
請求項１記載の方法であって、
前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームに前記データ・セットをレンダリングするステップと、
各データ・フレームを可視フレームとしてディスプレイ上に表示するステップと、
を含む、方法。
【請求項２９】
請求項２８記載の方法において、前記データ・フレームのサイズおよびアスペクト比が、前記ディスプレイのサイズおよびアスペクト比と一致する、方法。
【請求項３０】
請求項２８記載の方法において、前記データ・フレームの中心および法線ベクトルが、前記ディスプレイの中心および法線ベクトルと一致する、方法。
【請求項３１】
請求項２８記載の方法において、前記データ・フレームの位置および方位が、前記ディスプレイの位置および方位と一致する、方法。
【請求項３２】
請求項２８記載の方法において、各データ・フレームが、前記データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む、方法。
【請求項３３】
請求項３２記載の方法において、前記グラフィカル・データ・エレメントが静的エレメントである、方法。
【請求項３４】
請求項３２記載の方法において、前記グラフィカル・データ・エレメントが動的エレメントである、方法。
【請求項３５】
請求項２８記載の方法において、前記データ・フレームが二次元構造である、方法。
【請求項３６】
請求項３５記載の方法において、前記データ・フレームが、前記本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する、方法。
【請求項３７】
請求項２８記載の方法において、前記データ空間全域においてナビゲートするステップが、前記複数のデータ・フレーム全域においてナビゲートすることを含む、方法。
【請求項３８】
請求項２８記載の方法であって、
前記本体の第１ポーズを検出するステップと、
前記第１ポーズの検出に応答して、プッシュバック相互作用を活性化するステップと、を含む、方法。
【請求項３９】
請求項３８記載の方法であって、
前記第１ポーズを入力する第１位置を記録するステップであって、前記第１位置が三空間の手の位置である、ステップと、
前記第１位置を原点として設定するステップであって、続いて検出される本体位置を、前記原点に対する相対的オフセットとして報告する、ステップと、
を含む、方法。
【請求項４０】
請求項３９記載の方法であって、前記本体の移動を検出することによって、ジェスチャを検出するステップを含む、方法。
【請求項４１】
請求項４０記載の方法において、前記検出するステップが、前記本体の第１移動を検出することを含み、前記第１移動が、前記ディスプレイに向かい軸に沿った移動であり、前記軸が、前記ディスプレイの目視面に対して垂直な軸として定められる、方法。
【請求項４２】
請求項４１記載の方法において、前記ナビゲートするステップが、前記本体の第１移動に応答して、前記複数のデータ・フレームを前記軸に沿って変位させることを含み、前記データ・フレームが位置する平面において見える部分が多くなり、前記ディスプレイ上にレンダリングされる第１可視フレームが、前記ディスプレイから後退するように見え、第１データ・フレームに隣接するデータ・フレームが可視となる、方法。
【請求項４３】
請求項４１記載の方法において、前記ナビゲートするステップが、前記本体の第１移動に応答して、前記複数のデータ・フレームを前記軸に沿って現在のデータ・フレームから変位させることを含み、データ・フレームが下方に平行移動し、前記現在のデータ・フレームが、前記ディスプレイ上に現在レンダリングされているデータ・フレームである、方法。
【請求項４４】
請求項４３記載の方法において、各データ・フレームの外観が前記変位に応答して変化し、前記現在のデータ・フレームの下に位置するデータ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームの上に位置するデータ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになる、方法。
【請求項４５】
請求項４１記載の方法において、前記検出するステップが、前記本体の第２移動を検出することを含み、前記第２移動が、前記ディスプレイから離れる方向への前記軸に沿った移動である、方法。
【請求項４６】
請求項４５記載の方法において、前記ナビゲートするステップが、前記本体の第２移動に応答して、前記複数のデータ・フレームを前記軸に沿って変位させることを含み、前記データ・フレームが位置する平面において見える部分が少なくなり、前記ディスプレイ上にレンダリングされた第１可視フレームが、前記ディスプレイから推移するように見え、第１データ・フレームに隣接するデータ・フレームが見え難くなる、方法。
【請求項４７】
請求項４５記載の方法において、前記ナビゲートするステップが、前記本体の第２移動に応答して、前記複数のデータ・フレームを、前記軸に沿って現在のデータ・フレームから変位させることを含み、データ・フレームが上方に平行移動し、前記現在のデータ・フレームが、前記ディスプレイ上に現在レンダリングされているデータ・フレームである、方法。
【請求項４８】
請求項４７記載の方法において、各データ・フレームの外観が前記変位に応答して変化し、前記現在のデータ・フレームの上に位置するデータ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し初め、前記現在のデータ・フレームの下に位置するデータ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、そして見えるようになり始める、方法。
【請求項４９】
請求項４０記載の方法において、前記検出するステップが、前記本体の第３移動を検出することを含み、前記第３移動が、前記ディスプレイの目視面に対して平行な平面における移動である、方法。
【請求項５０】
請求項４９記載の方法において、前記ナビゲートするステップが、前記本体の第３移動に応答して、前記複数のデータ・フレームを前記第３移動に対応する方向に変位させることを含む、方法。
【請求項５１】
請求項５０記載の方法において、前記ディスプレイ上にレンダリングされている現在のデータ・フレームが前記方向にスライドするように見え、前記現在のデータ・フレームに隣接するデータ・フレームが、前記方向とは逆の前記ディスプレイの側から見えてくるようにスライドし、前記現在のデータ・フレームが、前記ディスプレイ上に現在レンダリングされているデータ・フレームである、方法。
【請求項５２】
請求項４０記載の方法において、前記ナビゲートするステップが、前記本体の移動に直接応答して、前記複数のデータ・フレームの変位を連続的に更新することを含む、方法。
【請求項５３】
請求項５２記載の方法であって、
前記本体の第２ポーズを検出するステップと、
前記第２ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、前記終了が、前記複数のデータ・フレームの内１つのデータ・フレームを、前記ディスプレイと同一平面上に表示することを含む、ステップと、
を含む、方法。
【請求項５４】
請求項４０記載の方法であって、ジェスチャの間における前記本体の変位の物理的距離と、ナビゲーションの間において前記データ空間の中にある連続点間の論理距離との間でマッピングするステップを備えており、該マッピングするステップが、前記データ空間における前記複数のデータ・フレームの相対的変位、および各離散データ・フレームの外観の内少なくとも１つを制御する、方法。
【請求項５５】
請求項４０記載の方法であって、アクティブ・ゾーンとデッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、前記アクティブ・ゾーンが前記ディスプレイに隣接しており、前記デッド・ゾーンが前記アクティブ・ゾーンに隣接している、方法。
【請求項５６】
請求項５５記載の方法において、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップが、前記ジェスチャがアクティブ領域において検出されたときに、当該ジェスチャに応答して活性化される、方法。
【請求項５７】
請求項５５記載の方法であって、前記ディスプレイ上にフィードバック・インディケータをレンダリングするステップを含む、方法。
【請求項５８】
請求項５７記載の方法において、前記フィードバック・インディケータが、前記本体が前記アクティブ・ゾーンおよび前記デッド・ゾーンの内１つにあることを示すフィードバックを表示する、方法。
【請求項５９】
請求項５７記載の方法において、前記フィードバック・インディケータが、前記本体の前記原点からの物理的オフセットを示すフィードバックを表示する、方法。
【請求項６０】
請求項１記載の方法において、前記検出するステップが、前記本体の位置を検出すること、前記本体の方位を検出すること、および前記本体の運動を検出することの内少なくとも１つを含む、方法。
【請求項６１】
請求項１記載の方法であって、前記ジェスチャを識別するステップを備えており、該識別するステップが、前記本体の一部のポーズおよび方位を識別することを含む、方法。
【請求項６２】
請求項１記載の方法において、前記検出するステップが、前記本体の第１組の付加物および第２組の付加物の内少なくとも１つを検出することを含む、方法。
【請求項６３】
請求項１記載の方法において、前記検出するステップが、前記本体に結合されている少なくとも１つのタグの位置を動的に検出することを含む、方法。
【請求項６４】
請求項６３記載の方法において、前記検出するステップが、前記本体に結合されている１組のタグの位置を検出することを含む、方法。
【請求項６５】
請求項６４記載の方法において、前記１組のタグの各タグはパターンを含み、前記１組のタグの各タグの各パターンは、前記複数のタグの内いずれの残りのタグのいずれのパターンとも異なる、方法。
【請求項６６】
請求項１記載の方法において、前記検出するステップが、前記本体上にあるマーカを動的に検出し位置を突き止めることを含む、方法。
【請求項６７】
請求項６６記載の方法において、前記検出するステップが、前記本体に結合されている１組のマーカの位置を検出することを含む、方法。
【請求項６８】
請求項６６記載の方法において、前記１組のマーカが、前記本体上に複数のパターンを形成する、方法。
【請求項６９】
請求項６６記載の方法において、前記検出するステップが、前記本体の複数の付加物の位置を、当該付加物の各々に結合されている１組のマーカを用いて、検出することを含む、方法。
【請求項７０】
請求項１記載の方法において、前記変換するステップが、前記ジェスチャの情報をジェスチャ表記に変換することを含む、方法。
【請求項７１】
請求項７０記載の方法において、前記ジェスチャ表記が、ジェスチャ・ボキャブラリを表し、前記ジェスチャ信号が前記ジェスチャ・ボキャブラリの通信を含む、方法。
【請求項７２】
請求項７１記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の力学的連結の瞬時的ポーズ状態をテキスト・フォームで表す、方法。
【請求項７３】
請求項７１記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の力学的
連結の方位をテキスト・フォームで表す、方法。
【請求項７４】
請求項７１記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の力学的連結の方位の組み合わせを、テキスト・フォーム表す、方法。
【請求項７５】
請求項７１記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の力学的連結の状態を表す、キャラクタのストリングを含む、方法。
【請求項７６】
請求項７５記載の方法において、前記力学的連結が、前記本体の少なくとも１つの第１付加物である、方法。
【請求項７７】
請求項７６記載の方法であって、前記ストリングにおける各位置を第２付加物に割り当てるステップを備えており、該第２付加物が前記第１付加物に接続されている、方法。
【請求項７８】
請求項７７記載の方法であって、複数のキャラクタにおけるキャラクタを、前記第２付加物の複数の位置の各々に割り当てるステップを含む、方法。
【請求項７９】
請求項７８記載の方法において、前記複数の位置が、座標原点に対して確定される、方法。
【請求項８０】
請求項７９記載の方法であって、空間における絶対位置および方位、前記本体の全体的位置および方位とは無関係な前記本体に対する固定位置および方位から成る１群から選択した位置を用いて、ならびに前記本体の動作に応答して対話的に前記座標原点を確定するステップを含む、方法。
【請求項８１】
請求項７８記載の方法であって、前記複数のキャラクタにおけるキャラクタを、前記第１付加物の複数の方位の各々に割り当てるステップを含む、方法。
【請求項８２】
請求項７６記載の方法において、前記検出するステップが、前記本体の外挿補間位置が仮想空間と交差するときを検出することを含み、前記仮想空間が、コンピュータに結合されているディスプレイ・デバイス上に描画された空間を含む、方法。
【請求項８３】
請求項８２記載の方法であって、前記外挿補間位置が前記仮想空間と交差するときに、前記仮想空間において仮想オブジェクトを制御するステップを含む、方法。
【請求項８４】
請求項８３記載の方法において、前記制御するステップが、前記仮想空間における前記外挿補間位置に応答して、前記仮想空間における仮想オブジェクトの位置を制御することを含む、方法。
【請求項８５】
請求項８３記載の方法において、前記制御するステップが、前記ジェスチャに応答して前記仮想空間における仮想オブジェクトの姿勢を制御することを含む、方法。
【請求項８６】
請求項１記載の方法であって、仮想空間と物理空間との間で一致を得るために、前記検出および制御のスケーリングを制御するステップを備えており、前記仮想空間が、ディスプレイ上に描画された空間を含み、前記物理空間が、前記本体によって占められる空間を含む、方法。
【請求項８７】
請求項８６記載の方法であって、前記物理空間における少なくとも１つの物理オブジェクトの移動に応答して、前記仮想空間において少なくとも１つの仮想オブジェクトを制御するステップを含む、方法。
【請求項８８】
請求項１記載の方法であって、撮像システムによって前記本体を撮像するステップを含む、方法。
【請求項８９】
請求項８８記載の方法において、前記撮像するステップが、前記本体の波頭コード化画像を発生することを含む、方法。
【請求項９０】
請求項８９記載の方法において、前記ジェスチャ・データが、前記撮像システムの被写体深度内における前記本体の焦点解明データを含む、方法。
【請求項９１】
請求項９０記載の方法であって、前記撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを含む、方法。
【請求項９２】
請求項９１記載の方法において、前記中間画像がぼやけている、方法。
【請求項９３】
請求項９１記載の方法において、前記中間画像が、脱焦収差を含む、前記本体または前記撮像システムの複数の光検出器の内少なくとも１つの変化に対して不感応である、方法。
【請求項９４】
請求項９０記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明範囲データを含む、方法。
【請求項９５】
請求項９４記載の方法において、前記被写体深度内における前記本体の前記焦点解明範囲データが、前記撮像システムの出力から導出される、方法。
【請求項９６】
請求項９０記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明位置データを含む、方法。
【請求項９７】
請求項９６記載の方法において、前記被写体深度内における前記本体の前記焦点解明位置データが、前記撮像システムの出力から導出される、方法。
【請求項９８】
請求項８８記載の方法において、前記撮像システムが複数の検出器を備えている、方法。
【請求項９９】
請求項９８記載の方法において、前記検出器の内少なくとも２つが、波頭コード化光学エレメントを備えている波頭コード化カメラである、方法。
【請求項１００】
請求項９８記載の方法において、光検出器の内少なくとも２つが、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである、方法。
【請求項１０１】
請求項８８記載の方法であって、前記本体と前記撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数を発生するステップを含む、方法。
【請求項１０２】
請求項８８記載の方法であって、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを含む、方法。
【請求項１０３】
システムであって、
物理的空間において本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、
該検出器に結合されているプロセッサであって、前記ジェスチャ・データから自動的に
ジェスチャを検出する、プロセッサと
を備えており、
前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、
前記プロセッサが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別し、
前記プロセッサが、前記ジェスチャをジェスチャ信号に変換し、
前記プロセッサが、パラメータにより制御可能であるデータ・セットの特性に基づいて、データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定し、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間であり、
前記プロセッサが、前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成される複数のデータ・フレームを含めるように前記データ空間の視覚表現を生成し、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成され、
前記プロセッサが、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲーションを制御する、システム。
【請求項１０４】
データ・セットを含むデータ空間全域においてナビゲートする方法であって、
検出器を通じて受け取られたジェスチャ・データから物理的空間における本体のジェスチャを検出するステップであって、前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、当該検出するステップが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別することを含む、ステップと、
前記ジェスチャをジェスチャ信号に変換するステップと、
パラメータにより制御可能である前記データ・セットの特性に基づいて、前記データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定するステップであって、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間である、ステップと、
前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成される複数のデータ・フレームを含めるように前記データ空間の視覚表現を生成するステップであって、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成される、ステップと、
前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップと、
前記データ空間の複数の領域のグラフィカル描写である複数の共面データ・フレームにおいて前記データ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップであって、前記複数のデータ・フレームが前記複数の共面データ・フレームを含む、ステップと
を含む、方法。
【請求項１０５】
請求項１０４記載の方法であって、
前記本体の第１ポーズを検出するステップと、
前記第１ポーズの検出に応答して、プッシュバック相互作用を活性化するステップと、を含む、方法。
【請求項１０６】
請求項１０５記載の方法であって、
前記第１ポーズを入力する第１位置を記録するステップであって、前記第１位置が三空間の手の位置である、ステップと、
前記第１位置を原点として設定するステップであって、続いて検出される本体位置を、前記原点に対する相対的オフセットとして報告する、ステップと、
を含む、方法。
【請求項１０７】
請求項１０６記載の方法において、前記検出するステップが、前記本体の前方移動を検出することを含み、前記前方移動がｚ−軸に沿った前記ディスプレイに向かう移動であり、前記ｚ−軸が前記ディスプレイの目視面に対して垂直な軸として定められる、方法。
【請求項１０８】
請求項１０７記載の方法において、前記ナビゲートするステップが、前記本体の前方移動に応答して、前記複数のデータ・フレームを前記Ｚ−軸に沿って変位させることを含み、前記データ・フレームが位置する平面において見える部分がより多くなり、前記ディスプレイ上にレンダリングされる第１可視フレームが、前記ディスプレイから後退するように見え、第１データ・フレームに隣接するデータ・フレームが可視となる、方法。
【請求項１０９】
請求項１０８記載の方法において、前記検出するステップが、前記本体の後方移動を検出することを含み、前記後方移動がｚ−軸に沿った前記ディスプレイから離れる移動である、方法。
【請求項１１０】
請求項１０９記載の方法において、前記ナビゲートするステップが、前記本体の後方移動に応答して、前記複数のデータ・フレームを前記Ｚ−軸に沿って変位させることを含み、前記データ・フレームが位置する平面において見える部分が少なくなり、前記ディスプレイ上にレンダリングされた第１可視フレームが、前記ディスプレイから推移するように見え、第１データ・フレームに隣接するデータ・フレームがより見え難くなる、方法。
【請求項１１１】
請求項１１０記載の方法であって、前記本体の前記ｚ−軸に沿った移動に直接応答して、前記複数のデータ・フレームの前記ｚ−軸に沿った変位を連続的に更新するステップを含む、方法。
【請求項１１２】
請求項１１１記載の方法であって、
前記本体の第２ポーズを検出するステップと、
前記第２ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、前記終了が、前記複数のデータ・フレームの内１つのデータ・フレームを、前記ディスプレイと同一平面上に表示することを含む、ステップと、
を含む、方法。
【請求項１１３】
請求項１０６記載の方法において、前記検出するステップが、前記本体の右横方向移動を検出することを含み、前記右横方向移動がｘ−軸に沿った移動であり、前記ｘ−軸が、前記ディスプレイの目視面に対して平行な平面内に位置する、方法。
【請求項１１４】
請求項１１３記載の方法において、前記ナビゲートするステップが、前記本体の右横方向移動に応答して、前記複数のデータ・フレームを前記ｘ−軸に沿って右に変位させることを含み、前記ディスプレイ上にレンダリングされた第１可視フレームが、前記ディスプレイから当該ディスプレイの右側に向かってスライドするように見え、第１データ・フレームに隣接するデータ・フレームがスライドして前記ディスプレイの左側から見えるようになる、方法。
【請求項１１５】
請求項１１４記載の方法において、前記検出するステップが、前記本体の左横方向移動を検出することを含み、前記左横方向移動が前記ｘ−軸に沿った移動である、方法。
【請求項１１６】
請求項１１５記載の方法において、前記ナビゲートするステップが、前記本体の左横方
向移動に応答して、前記複数のデータ・フレームを前記ｘ−軸に沿って左に変位させることを含み、前記ディスプレイ上にレンダリングされた第１可視フレームが、前記ディスプレイから当該ディスプレイの左側に向かってスライドするように見え、第１データ・フレームに隣接するデータ・フレームがスライドして前記ディスプレイの右側から見えるようになる、方法。
【請求項１１７】
請求項１１６記載の方法であって、前記本体の前記ｘ−軸に沿った移動に直接応答して、前記複数のデータ・フレームの前記ｘ−軸に沿った変位を連続的に更新するステップを含む、方法。
【請求項１１８】
請求項１１７記載の方法であって、
前記本体の第２ポーズを検出するステップと、
前記第２ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、前記終了が、前記複数のデータ・フレームの内１つのデータ・フレームを、前記ディスプレイと同一平面上に表示することを含む、ステップと、
を含む、方法。
【請求項１１９】
請求項１０６記載の方法において、前記データ空間が、平面内に配置された複数の仮想抑止点を含む、方法。
【請求項１２０】
請求項１１９記載の方法において、各仮想抑止点が各データ・フレームに対応する、方法。
【請求項１２１】
請求項１０６記載の方法であって、アクティブ・ゾーンとデッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、前記アクティブ・ゾーンが前記ディスプレイに隣接しており、前記デッド・ゾーンが前記アクティブ・ゾーンに隣接している、方法。
【請求項１２２】
請求項１２１記載の方法において、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップが、前記ジェスチャがアクティブ領域において検出されたときに、当該ジェスチャに応答して活性化される、方法。
【請求項１２３】
請求項１２１記載の方法であって、前記ディスプレイ上にレンダリングされるフィードバック・インディケータを含む、方法。
【請求項１２４】
請求項１２３記載の方法において、前記フィードバック・インディケータが、前記本体が前記アクティブ・ゾーンおよび前記デッド・ゾーンの内１つにあることを示すフィードバックを表示する、方法。
【請求項１２５】
請求項１２３記載の方法において、前記フィードバック・インディケータが、前記本体の前記原点からの物理的オフセットを示すフィードバックを表示する、方法。
【請求項１２６】
請求項１０４記載の方法であって、前記データ・セットのパラメータ−制御軸を、前記物理的空間の１次元と位置合わせするステップを含む、方法。
【請求項１２７】
請求項１２６記載の方法において、前記次元が深さ次元である、方法。
【請求項１２８】
請求項１２６記載の方法において、前記次元が水平次元である、方法。
【請求項１２９】
請求項１２６記載の方法において、前記次元が垂直次元である、方法。
【請求項１３０】
請求項１２６記載の方法において、前記次元が横方向次元である、方法。
【請求項１３１】
請求項１２６記載の方法において、前記ナビゲートするステップが、前記パラメータ−制御軸に沿ってデータ空間変換を行うために、前記次元に沿った運動を含む、方法。
【請求項１３２】
請求項１２６記載の方法において、前記ナビゲートするステップが、前記データ空間の量子化パラメータ空間にナビゲートすることを含む、方法。
【請求項１３３】
請求項１０４記載の方法において、前記検出するステップが、前記本体の進展する位置を検出することを含む、方法。
【請求項１３４】
請求項１０４記載の方法において、前記検出するステップが、前記本体の進展する方位を検出することを含む、方法。
【請求項１３５】
請求項１０４記載の方法において、前記検出するステップが、前記本体の進展するポーズを検出することを含み、前記ポーズが、前記本体の一部分の前記本体の少なくとも１つの他の部分に対する幾何学的配置である、方法。
【請求項１３６】
請求項１０４記載の方法において、前記検出するステップが、前記本体の進展する運動を検出することを含む、方法。
【請求項１３７】
請求項１０４記載の方法において、前記検出するステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも１つを検出することを含む、方法。
【請求項１３８】
請求項１０４記載の方法であって、前記ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを含む、方法。
【請求項１３９】
請求項１３８記載の方法であって、前記ジェスチャを識別するステップを含む、方法。
【請求項１４０】
請求項１３９記載の方法において、前記ジェスチャを識別する前記ステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも１つを識別することを含む、方法。
【請求項１４１】
請求項１３９記載の方法であって、前記ジェスチャ・イベントのシーケンスにおける前記ジェスチャ・イベントの表現を発生するステップを含む、方法。
【請求項１４２】
請求項１４１記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間に結合されている少なくとも１つの制御コンポーネントに配信するステップを含む、方法。
【請求項１４３】
請求項１４２記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間のグラフィカル描写と同期させるステップを含む、方法。
【請求項１４４】
請求項１４３記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを含む、方法。
【請求項１４５】
請求項１４２記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間の聴覚描写と同期させるステップを含む、方法。
【請求項１４６】
請求項１４５記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを含む、方法。
【請求項１４７】
請求項１０４記載の方法において、前記データ・セットが空間情報を表す、方法。
【請求項１４８】
請求項１４７記載の方法において、前記データ・セットが、現象、イベント、測定、観察、および構造の内少なくとも１つの空間情報を表す、方法。
【請求項１４９】
請求項１０４記載の方法において、前記データ・セットが非空間情報を表す、方法。
【請求項１５０】
請求項１０４記載の方法において、前記ジェスチャが線形空間運動を含む、方法。
【請求項１５１】
請求項１０４記載の方法において、前記ナビゲートするステップが、前記データ空間を通過する線形推移を含む、方法。
【請求項１５２】
請求項１０４記載の方法であって、
前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームに前記データ・セットをレンダリングするステップと、
各データ・フレームを可視フレームとしてディスプレイ上に表示するステップと、
を含む、方法。
【請求項１５３】
請求項１５２記載の方法において、前記データ・フレームのサイズおよびアスペクト比が、前記ディスプレイのサイズおよびアスペクト比と一致する、方法。
【請求項１５４】
請求項１５２記載の方法において、前記データ・フレームの中心および法線ベクトルが、前記ディスプレイの中心および法線ベクトルと一致する、方法。
【請求項１５５】
請求項１５２記載の方法において、前記データ・フレームの位置および方位が、前記ディスプレイの位置および方位と一致する、方法。
【請求項１５６】
請求項１５２記載の方法において、各データ・フレームが、前記データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む、方法。
【請求項１５７】
請求項１５６記載の方法において、前記グラフィカル・データ・エレメントが静的エレメントである、方法。
【請求項１５８】
請求項１５６記載の方法において、前記グラフィカル・データ・エレメントが動的エレメントである、方法。
【請求項１５９】
請求項１５２記載の方法において、前記データ・フレームが二次元構造である、方法。
【請求項１６０】
請求項１５９記載の方法において、前記データ・フレームが、前記本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する、方法。
【請求項１６１】
請求項１５２記載の方法において、前記データ空間全域においてナビゲートするステップが、前記複数のデータ・フレーム全域においてナビゲートすることを含む、方法。
【請求項１６２】
請求項１０４記載の方法であって、前記ジェスチャを識別するステップを備えており、
該識別するステップが、前記本体の一部のポーズおよび方位を識別することを含む、方法。
【請求項１６３】
請求項１０４記載の方法において、前記検出するステップが、前記本体の第１組の付加物および第２組の付加物の内少なくとも１つを検出することを含む、方法。
【請求項１６４】
請求項１０４記載の方法において、前記検出するステップが、少なくとも１つのタグの位置を動的に検出することを含む、方法。
【請求項１６５】
請求項１０４記載の方法において、前記検出するステップが、前記本体上にあるマーカを動的に検出し位置を突き止めることを含む、方法。
【請求項１６６】
請求項１０４記載の方法において、前記変換するステップが、前記ジェスチャの情報をジェスチャ表記に変換することを含む、方法。
【請求項１６７】
請求項１６６記載の方法において、前記ジェスチャ表記が、ジェスチャ・ボキャブラリを表し、前記ジェスチャ信号が前記ジェスチャ・ボキャブラリの通信を含む、方法。
【請求項１６８】
請求項１６７記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の瞬時的ポーズ状態をテキスト・フォームで表す、方法。
【請求項１６９】
請求項１６７記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の方位をテキスト・フォームで表す、方法。
【請求項１７０】
請求項１６７記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の方位の組み合わせを、テキスト・フォームで表す、方法。
【請求項１７１】
請求項１６７記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の状態を表す、キャラクタのストリングを含む、方法。
【請求項１７２】
請求項１０４記載の方法において、前記検出するステップが、前記本体の外挿補間位置が仮想空間と交差するときを検出することを含み、前記仮想空間が、前記ディスプレイ上に描画された空間を含む、方法。
【請求項１７３】
請求項１７２記載の方法であって、前記外挿補間位置が前記仮想空間と交差するときに、前記仮想空間において仮想オブジェクトを制御するステップを含む、方法。
【請求項１７４】
請求項１７３記載の方法であって、前記仮想空間における前記外挿補間位置に応答して、前記仮想空間における仮想オブジェクトの位置を制御するステップを含む、方法。
【請求項１７５】
請求項１０４記載の方法であって、仮想空間と物理空間との間で一致を得るために、前記検出およびナビゲーションのスケーリングを制御するステップを備えており、前記仮想空間が、前記ディスプレイ上に描画された空間を含み、前記物理空間が、前記本体によって占められる空間を含む、方法。
【請求項１７６】
請求項１０４記載の方法であって、撮像システムによって前記本体を撮像するステップを含む、方法。
【請求項１７７】
請求項１７６記載の方法において、前記撮像するステップが、前記本体の波頭コード化画像を発生することを含む、方法。
【請求項１７８】
請求項１７７記載の方法において、前記ジェスチャ・データが、前記撮像システムの被写体深度内における前記本体の焦点解明データを含む、方法。
【請求項１７９】
請求項１７８記載の方法であって、前記撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを含む、方法。
【請求項１８０】
請求項１７９記載の方法において、前記中間画像がぼやけている、方法。
【請求項１８１】
請求項１７９記載の方法において、前記中間画像が、脱焦収差を含む、前記本体と前記撮像システムの複数の光検出器との内少なくとも１つの変化に対して不感応である、方法。
【請求項１８２】
請求項１７８記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明範囲データを含む、方法。
【請求項１８３】
請求項１８２記載の方法において、前記被写体深度内における前記本体の前記焦点解明範囲データが、前記撮像システムの出力から導出される、方法。
【請求項１８４】
請求項１７８記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明位置データを含む、方法。
【請求項１８５】
請求項１８４記載の方法において、前記被写体深度内における前記本体の前記焦点解明位置データが、前記撮像システムの出力から導出される、方法。
【請求項１８６】
請求項１７６記載の方法において、前記撮像システムが複数の検出器を含む、方法。
【請求項１８７】
請求項１８６記載の方法において、前記検出器の内少なくとも２つが、波頭コード化光学エレメントを備えている波頭コード化カメラである、方法。
【請求項１８８】
請求項１８６記載の方法において、光検出器の内少なくとも２つが、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである、方法。
【請求項１８９】
請求項１７６記載の方法であって、前記本体と前記撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数を発生するステップを含む、方法。
【請求項１９０】
請求項１７６記載の方法であって、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを含む、方法。
【請求項１９１】
システムであって、
物理的空間において本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、
前記検出器に結合されているプロセッサであって、前記ジェスチャ・データから自動的にジェスチャを検出する、プロセッサと、
を備えており、
前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、
前記プロセッサが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別し、
前記プロセッサが、前記ジェスチャをジェスチャ信号に変換し、
前記プロセッサが、パラメータにより制御可能であるデータ・セットの特性に基づいて、データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定し、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間であり、
前記プロセッサが、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲーションを制御すると共に、前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成される複数のデータ・フレームを含めるように前記データ空間の視覚表現を生成し、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成され、
前記プロセッサが、前記データ空間の複数の領域のグラフィカル描写である複数の共面データ・フレームにおいて前記データ・セットをレンダリングすると共に、各データ・フレームを可視フレームとしてディスプレイ上に表示し、前記複数のデータ・フレームが前記複数の共面データ・フレームを含む、システム。
【請求項１９２】
データ・セットを含むデータ空間全域においてナビゲートする方法であって、
検出器を通じて受け取られたジェスチャ・データから物理的空間における本体のジェスチャを検出するステップであって、前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、当該検出するステップが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別することを含む、ステップと、
前記ジェスチャをジェスチャ信号に変換するステップと、
パラメータにより制御可能である前記データ・セットの特性に基づいて、前記データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定するステップであって、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間である、ステップと、
前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップと、
前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにおいて前記データ・セットをレンダリングすると共に、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップであって、前記複数のデータ・フレームが、前記データ空間の複数の平面に配置された離散データ・フレームのスタックを構成し、各データ・フレームが前記複数の平面の内別々の平面に位置し、前記複数のデータ・フレームの各データ・フレームを含める前記データ空間の視覚表現が、前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成され、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成される、ステップと
を含む、方法。
【請求項１９３】
請求項１９２記載の方法であって、
前記本体の第１ポーズを検出するステップと、
前記第１ポーズの検出に応答して、プッシュバック相互作用を活性化するステップと、を含む、方法。
【請求項１９４】
請求項１９３記載の方法であって、
前記第１ポーズを入力する第１位置を記録するステップであって、前記第１位置が三空間の手の位置である、ステップと、
前記第１位置を原点として設定するステップであって、続いて検出される本体位置を、前記原点に対する相対的オフセットとして報告する、ステップと、
を含む、方法。
【請求項１９５】
請求項１９４記載の方法において、前記検出するステップが、前記本体の上方移動を検
出することを含み、前記上方移動がｙ−軸に沿って前記ディスプレイから外側に向かう移動であり、前記ｙ−軸が前記ディスプレイの目視面に対して垂直な軸として定められる、方法。
【請求項１９６】
請求項１９５記載の方法において、前記ナビゲートするステップが、前記本体の上方移動に応答して、前記複数のデータ・フレームを現在のデータ・フレームから前記ｙ−軸に沿って変位させることを含み、前記スタックの離散データ・フレームが上方に平行移動し、前記現在のデータ・フレームが、前記ディスプレイ上に現在レンダリングされている離散データ・フレームである、方法。
【請求項１９７】
請求項１９６記載の方法において、各離散データ・フレームの外観が前記変位に応答して変化し、前記現在のデータ・フレームの上に位置する前記スタックの離散データ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し始め、前記現在のデータ・フレームの下に位置する前記スタックの離散データ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになり始める、方法。
【請求項１９８】
請求項１９７記載の方法であって、ジェスチャの間における前記本体の変位の物理的距離と、前記スタックの連続離散データ・フレーム間の論理距離との間でマッピングするステップを備えており、このマッピングが、前記ｙ−軸に沿った前記複数のデータ・フレームの変位、および各離散データ・フレームの外観を制御する、方法。
【請求項１９９】
請求項１９８記載の方法において、前記検出するステップが、前記本体の下方移動を検出することを含み、前記下方移動がｙ−軸に沿って記ディスプレイに向かう移動である、方法。
【請求項２００】
請求項１９９記載の方法において、前記ナビゲートするステップが、前記本体の下方移動に応答して、前記複数のデータ・フレームを現在のデータ・フレームから前記ｙ−軸に沿って変位させることを含み、前記スタックの離散データ・フレームが下方に平行移動する、方法。
【請求項２０１】
請求項２００記載の方法において、各離散データ・フレームの外観が前記変位に応答して変化し、前記現在のデータ・フレームの下に位置する前記スタックの離散データ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し始め、前記現在のデータ・フレームの上に位置する前記スタックの離散データ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになる、方法。
【請求項２０２】
請求項２０１記載の方法であって、ジェスチャの間における前記本体の変位の物理的距離と、前記スタックの連続離散データ・フレーム間の論理距離との間でマッピングするステップを備えており、該マッピングが、前記ｙ−軸に沿った前記複数のデータ・フレームの変位、および各離散データ・フレームの外観を制御する、方法。
【請求項２０３】
請求項２０２記載の方法であって、前記本体の前記ｙ−軸に沿った移動に直接応答して、前記複数のデータ・フレームの前記ｙ−軸に沿った変位を連続的に更新するステップを含む、方法。
【請求項２０４】
請求項２０３記載の方法であって、
前記本体の第２ポーズを検出するステップと、
前記第２ポーズの検出に応答して、プッシュバック相互作用を終了するステップであっ
て、前記終了が、前記複数のデータ・フレームの内１つのデータ・フレームを、前記ディスプレイと同一平面上に表示することを含む、ステップと、
を含む、方法。
【請求項２０５】
請求項１９２記載の方法において、前記データ空間が、複数の仮想抑止点を備えている、方法。
【請求項２０６】
請求項２０５記載の方法において、各仮想抑止点が前記複数の平面の各平面に対応する、方法。
【請求項２０７】
請求項１９２記載の方法であって、第１アクティブ・ゾーンと、第２アクティブ・ゾーンと、デッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、前記第１アクティブ・ゾーンが前記ディスプレイに隣接しており、前記デッド・ゾーンが前記第１アクティブ・ゾーンに隣接しており、前記第２アクティブ・ゾーンが前記デッド・ゾーンに隣接している、方法。
【請求項２０８】
請求項２０７記載の方法において、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップが、前記ジェスチャが前記第１アクティブ・ゾーンおよび前記第２アクティブ・ゾーンの内１つにおいて検出されたときに、前記ジェスチャに応答して活性化される、方法。
【請求項２０９】
請求項２０７記載の方法であって、前記ディスプレイ上にレンダリングされるフィードバック・インディケータを含む、方法。
【請求項２１０】
請求項２０９記載の方法において、前記フィードバック・インディケータが、前記本体が前記第１アクティブ・ゾーン、前記第２アクティブ・ゾーン、および前記デッド・ゾーンの内１つにあることを示すフィードバックを表示する、方法。
【請求項２１１】
請求項２０９記載の方法において、前記フィードバック・インディケータが、前記本体の原点からの物理的オフセットを示すフィードバックを表示する、方法。
【請求項２１２】
請求項１９２記載の方法であって、前記データ・セットのパラメータ−制御軸を、前記物理的空間の１次元と位置合わせするステップを含む、方法。
【請求項２１３】
請求項２１２記載の方法において、前記次元が深さ次元である、方法。
【請求項２１４】
請求項２１２記載の方法において、前記次元が水平次元である、方法。
【請求項２１５】
請求項２１２記載の方法において、前記次元が垂直次元である、方法。
【請求項２１６】
請求項２１２記載の方法において、前記次元が横方向次元である、方法。
【請求項２１７】
請求項２１２記載の方法において、前記ナビゲートするステップが、前記パラメータ−制御軸に沿ってデータ空間変換を行うために、前記次元に沿った運動を含む、方法。
【請求項２１８】
請求項２１２記載の方法において、前記ナビゲートするステップが、前記データ空間の量子化パラメータ空間にナビゲートすることを含む、方法。
【請求項２１９】
請求項１９２記載の方法において、前記検出するステップが、前記本体の進展する位置を検出することを含む、方法。
【請求項２２０】
請求項１９２記載の方法において、前記検出するステップが、前記本体の進展する方位を検出することを含む、方法。
【請求項２２１】
請求項１９２記載の方法において、前記検出するステップが、前記本体の進展するポーズを検出することを含み、前記ポーズが、前記本体の一部分の前記本体の少なくとも１つの他の部分に対する幾何学的配置である、方法。
【請求項２２２】
請求項１９２記載の方法において、前記検出するステップが、前記本体の進展する運動を検出することを含む、方法。
【請求項２２３】
請求項１９２記載の方法において、前記検出するステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも１つを検出することを含む、方法。
【請求項２２４】
請求項１９２記載の方法であって、前記ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを含む、方法。
【請求項２２５】
請求項２２４記載の方法であって、前記ジェスチャを識別するステップを含む、方法。
【請求項２２６】
請求項２２５記載の方法において、前記ジェスチャを識別する前記ステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも１つを識別することを含む、方法。
【請求項２２７】
請求項２２５記載の方法であって、前記ジェスチャ・イベントのシーケンスにおける前記ジェスチャ・イベントの表現を発生するステップを含む、方法。
【請求項２２８】
請求項２２７記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間に結合されている少なくとも１つの制御コンポーネントに配信するステップを含む、方法。
【請求項２２９】
請求項２２８記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間のグラフィカル描写と同期させるステップを含む、方法。
【請求項２３０】
請求項２２９記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを含む、方法。
【請求項２３１】
請求項２２８記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間の聴覚描写と同期させるステップを含む、方法。
【請求項２３２】
請求項２３１記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを含む、方法。
【請求項２３３】
請求項１９２記載の方法において、前記データ・セットが空間情報を表す、方法。
【請求項２３４】
請求項２３３記載の方法において、前記データ・セットが、現象、イベント、測定、観察、および構造の内少なくとも１つの空間情報を表す、方法。
【請求項２３５】
請求項１９２記載の方法において、前記データ・セットが非空間情報を表す、方法。
【請求項２３６】
請求項１９２記載の方法において、前記ジェスチャが線形空間運動を含む、方法。
【請求項２３７】
請求項１９２記載の方法において、前記ナビゲートするステップが、前記データ空間を通過する線形推移を含む、方法。
【請求項２３８】
請求項１９２記載の方法であって、
前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームに前記データ・セットをレンダリングするステップと、
各データ・フレームを可視フレームとしてディスプレイ上に表示するステップと、
を含む、方法。
【請求項２３９】
請求項２３８記載の方法において、前記データ・フレームのサイズおよびアスペクト比が、前記ディスプレイのサイズおよびアスペクト比と一致する、方法。
【請求項２４０】
請求項２３８記載の方法において、前記データ・フレームの中心および法線ベクトルが、前記ディスプレイの中心および法線ベクトルと一致する、方法。
【請求項２４１】
請求項２３８記載の方法において、前記データ・フレームの位置および方位が、前記ディスプレイの位置および方位と一致する、方法。
【請求項２４２】
請求項２３８記載の方法において、各データ・フレームが、前記データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む、方法。
【請求項２４３】
請求項２４２記載の方法において、前記グラフィカル・データ・エレメントが静的エレメントである、方法。
【請求項２４４】
請求項２４２記載のシステムにおいて、前記グラフィカル・データ・エレメントが動的エレメントである、方法。
【請求項２４５】
請求項２３８記載のシステムにおいて、前記データ・フレームが二次元構造である、方法。
【請求項２４６】
請求項２４５記載の方法において、前記データ・フレームが、前記本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する、方法。
【請求項２４７】
請求項２３８記載の方法において、前記データ空間全域においてナビゲートするステップが、前記複数のデータ・フレーム全域においてナビゲートすることを含む、方法。
【請求項２４８】
請求項１９２記載の方法であって、前記ジェスチャを識別するステップを備えており、この識別が、前記本体の一部のポーズおよび方位を識別することを含む、方法。
【請求項２４９】
請求項１９２記載の方法において、前記検出するステップが、前記本体の第１組の付加物および第２組の付加物の内少なくとも１つを検出することを含む、方法。
【請求項２５０】
請求項１９２記載の方法において、前記検出するステップが、少なくとも１つのタグの位置を動的に検出することを含む、方法。
【請求項２５１】
請求項１９２記載の方法において、前記検出するステップが、前記本体上にあるマーカを動的に検出し位置を突き止めることを含む、方法。
【請求項２５２】
請求項１９２記載の方法において、前記変換するステップが、前記ジェスチャの情報をジェスチャ表記に変換することを含む、方法。
【請求項２５３】
請求項２５２記載の方法において、前記ジェスチャ表記が、ジェスチャ・ボキャブラリを表し、前記ジェスチャ信号が前記ジェスチャ・ボキャブラリの通信を含む、方法。
【請求項２５４】
請求項２５３記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の瞬時的ポーズ状態をテキスト・フォームで表す、方法。
【請求項２５５】
請求項２５３記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の方位をテキスト・フォームで表す、方法。
【請求項２５６】
請求項２５３記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の方位の組み合わせを、テキスト・フォームで表す、方法。
【請求項２５７】
請求項２５３記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の状態を表すキャラクタのストリングを含む、方法。
【請求項２５８】
請求項１９２記載の方法において、前記検出するステップが、前記本体の外挿補間位置が仮想空間と交差するときを検出することを含み、前記仮想空間が、前記ディスプレイ上に描画された空間を含む、方法。
【請求項２５９】
請求項２５８記載の方法であって、前記外挿補間位置が仮想オブジェクトと交差するときに、前記仮想空間において仮想オブジェクトを制御するステップを含む、方法。
【請求項２６０】
請求項２５９記載の方法であって、前記仮想空間における前記外挿補間位置に応答して、前記仮想空間における前記仮想オブジェクトの位置制御するステップを含む、方法。
【請求項２６１】
請求項１９２記載の方法であって、仮想空間と物理空間との間で一致を得るために、前記検出およびナビゲーションのスケーリングを制御するステップを備えており、前記仮想空間が、前記ディスプレイ上に描画された空間を含み、前記物理空間が、前記本体によって占められる空間を含む、方法。
【請求項２６２】
請求項１９２記載の方法であって、撮像システムによって前記本体を撮像するステップを含む、方法。
【請求項２６３】
請求項２６２記載の方法において、前記撮像するステップが、前記本体の波頭コード化画像を発生することを含む、方法。
【請求項２６４】
請求項２６３記載の方法において、前記ジェスチャ・データが、前記撮像システムの被写体深度内における前記本体の焦点解明データを含む、方法。
【請求項２６５】
請求項２６４記載の方法であって、前記撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを含む、方法。
【請求項２６６】
請求項２６５記載の方法において、前記中間画像がぼやけている、方法。
【請求項２６７】
請求項２６５記載の方法において、前記中間画像が、脱焦収差を含む、前記本体と前記
撮像システムの複数の光検出器との内少なくとも１つの変化に対して不感応である、方法。
【請求項２６８】
請求項２６４記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明範囲データを含む、方法。
【請求項２６９】
請求項２６８記載の方法において、前記被写体深度内における前記本体の前記焦点解明範囲データが、前記撮像システムの出力から導出される、方法。
【請求項２７０】
請求項２６４記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明位置データを含む、方法。
【請求項２７１】
請求項２７０記載の方法において、前記被写体深度内における前記本体の前記焦点解明位置データが、前記撮像システムの出力から導出される、方法。
【請求項２７２】
請求項２６２記載の方法において、前記撮像システムが複数の検出器を備えている、方法。
【請求項２７３】
請求項２７２記載の方法において、前記検出器の内少なくとも２つが、波頭コード化光学エレメントを備えている波頭コード化カメラである、方法。
【請求項２７４】
請求項２７２記載の方法において、光検出器の内少なくとも２つが、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである、方法。
【請求項２７５】
請求項２６２記載の方法であって、前記本体と前記撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数を発生するステップを含む、方法。
【請求項２７６】
請求項２６２記載の方法であって、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを含む、方法。
【請求項２７７】
システムであって、
物理的空間において本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、
前記検出器に結合されているプロセッサであって、前記ジェスチャ・データから自動的にジェスチャを検出する、プロセッサと、
を備えており、
前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、
前記プロセッサが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別し、
前記プロセッサが、前記ジェスチャをジェスチャ信号に変換し、
前記プロセッサが、パラメータにより制御可能であるデータ・セットの特性に基づいて、データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定し、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間であり、
前記プロセッサが、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲーションを制御し、
前記プロセッサが、前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにおいて前記データ・セットをレンダリングすると共に、各データ・フレームを可視フレームとしてディスプレイ上に表示し、
前記複数のデータ・フレームが、前記データ空間の複数の平面に配置された離散データ
・フレームのスタックを備えており、各データ・フレームが前記複数の平面の内別々の平面に位置し、
前記プロセッサが、前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて、前記複数のデータ・フレームの各データ・フレームを含めるように前記データ空間の視覚表現を生成すると共に、前記各データ・フレームが、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本特許出願は、２００６年２月８日に出願した米国（ＵＳ）特許出願第１１／３５０，６９７号の一部継続出願である。
【０００２】
本願は、２００８年４月２４日に出願したＵＳ特許出願第１２／１０９，２６３号の一部継続出願である。
本願は、２００９年４月２日に出願したＵＳ特許出願第１２／４１７，２５２号の一部継続出願である。
【０００３】
本願は、２００９年６月１８日に出願したＵＳ特許出願第１２／４８７，６２３号の一部継続出願である。
本願は、２００８年９月３日に出願したＵＳ特許出願第６１／０９３，８５２号の優先権を主張する。
発明の分野
本発明は、一般的には、コンピュータ・システムの分野に関し、特に、グラフィカル空間または他のデータ表現空間を通じて線形推移(linear verging)または追跡運動を制御するために、人間の操作者の手の線形空間運動、または同質の次元活動(analogously dimensional activity)の実行を可能にするシステムおよび方法に関するものである。
【従来技術】
【０００４】
ユーザがコマンドを入力しコンピュータ・システムと相互作用する際、ディスプレイ上にあるウィンドウにおいてデータまたは画像を操作したり、あるいはマウス、キーボード、ジョイスティック、クロス・キー等のような入力デバイスを用いて、ウィンドウと関連のあるメニューまたは関連のあるプログラムから動作を選択することがある。また、このような入力デバイスは、位置変換デバイスとして動作することもでき、カーソルのようなグラフィカルな画面上ポインタを位置付けるために用いることができる。カーソルは、例えば、リバイズすべきキャラクタを示すように、あるいはデータを入力すべきまたは動作を実行すべき位置を示すように機能する。カーソルは、ある形態または外観では、コンピュータ・ディスプレイ上に現れるのが通例である。ユーザが入力デバイスを操作すると、その結果、カーソルの対応する移動が生ずる。つまり、例えば、マウスまたは他の入力デバイスを動かすと、同じ方向にカーソルが移動することになる。
【０００５】
しかしながら、これら従来の入力デバイスは、単なるデバイスに過ぎないことが多い。ユーザは、有線マウスまたはワイヤレス・マウスあるいは他の入力デバイスを有し、そのデバイスを用いて、選択、位置変換、活性化、およびその他の入力機能を管理しなければならない。これらの物理的デバイスの使用は、自然でないまたは直観的でないことが多い。別の欠点は、異なる機能を実行できるように入力デバイスのコンテキストを変更するためには、一定のステップを一通り実行しなければならないことである。
引用による包含
本明細書において述べる各特許、特許出願、および／または刊行物は、本願において引用することにより、個々の特許、特許出願、および／または刊行物の各々が具体的にそして個々に、引用することにより本願に含まれることを示した場合と同程度にその全体が本願にも含まれるものとする。
【図面の簡単な説明】
【０００６】
【図１】図１は、一実施形態の下における、ジェスチャ制御システムのブロック図である。
【図２】図２は、一実施形態の下において、ジェスチャ制御システムを用いてデータ空間をナビゲートする場合のフロー図である。
【図３】図３は、一実施形態の下において、ディスプレイ上にレンダリングされたデータ・フレームの例である。
【図４】図４は、一実施形態の下において、一方側に押し返す場面を示し、本体が解放位置にある操作者の手であり、掌が前方方向に面している（ｚ−軸に沿って）（例えば、操作者の前にある表示画面に向かって）。
【図５】図５（図５ａ、図５ｂ、図５ｃ、および図５ｄを纏めて）は、一実施形態の下における、デッド・ゾーンにおいてデッド・ゾーン閾値の点までの本体プッシュバック・ジェスチャを示すグリフ(glyph)の一例である。
【図６】図６（図６ａ、図６ｂ、図６ｃ、および図６ｄを纏めて）は、一実施形態の下における、デッド・ゾーンにおいてデッド・ゾーン閾値の点を超えた本体プッシュバック・ジェスチャ（ｚ−軸に沿って、ディスプレイに向かって、そして操作者から離れるように）を示すグリフの一例である。
【図７】図７は、一実施形態の下における、対応するプッシュバックによって得られるデータ・フレームの第１の相対的なｚ−軸変位の一例である。
【図８】図８は、一実施形態の下における、対応するプッシュバックによって得られるデータ・フレームの第２の相対的なｚ−軸変位の一例である。
【図９】図９は、一実施形態の下において、本体の横方向運動から得られるデータ・フレームの横方向ｘ−軸変位の一例である。
【図１０】図１０は、一実施形態の下において、テーブル・ライク表示面（図示せず）上に本体を水平に保持した、物理的場面の一例である。
【図１１】図１１は、一実施形態の下において、プッシュバック・システムを係合した際に、異なる視感度で徐々に現れる、現行のレイヤ（例えば、現行のデータ・フレーム）に隣接するレイヤ（例えば、データ・フレーム）の一例である。
【図１２】図１２は、一実施形態の下におけるスタックの上方変換の一例であり、直前の現行レイヤ（例えば、直前の現行データ・フレーム）が徐々に透明になり（この例では見えなくなる）、一方直前の現行レイヤに隣接するレイヤ（例えば、隣接するデータ・フレーム）が、現在の現行レイヤとして見えてくる。
【図１３】図１３は、一実施形態の下におけるマーキング・タグの図である。
【図１４】図１４は、実施形態におけるジェスチャ・ボキャブラリ(gesture vocabulary)におけるポーズの図である。
【図１５】図１５は、実施形態におけるジェスチャ・ボキャブラリにおける方位の図である。
【図１６】図１６は、一実施形態におけるジェスチャ・ボキャブラリにおける２つの手の組み合わせの図である。
【図１７】図１７は、一実施形態におけるジェスチャ・ボキャブラリにおける方位配合の図である。
【図１８】図１８は、一実施形態におけるシステム動作のフロー図である。
【図１９−１】図１９（図１９−１および図１９−２を纏めて）は、一実施形態におけるコマンドの一例である。
【図１９−２】図１９（図１９−１および図１９−２を纏めて）は、一実施形態におけるコマンドの一例である。
【図２０】図２０は、一実施形態の下において、拡張した被写体深度において三次元情報を抽出するジェスチャ・ベース制御システムのブロック図である。
【図２１】図２１は、一実施形態の下において、ジェスチャ・ベース制御システムにおいて用いられる波頭コーディング撮像システムのブロック図である。
【図２２】図２２は、一実施形態の下において、２つの波頭コーディング・カメラを含む波頭コーディング撮像システムを用いて、拡張した被写体深度において三次元情報を抽出するジェスチャ・ベース制御システムのブロック図である。
【図２３】図２３は、一実施形態の下において、拡張した被写体深度において抽出された三次元情報を用いるジェスチャ・ベース制御のフロー図である。
【図２４】図２４は、一実施形態の下において、ジェスチャ・ベース制御システムにおいて用いられる波頭コーディング設計プロセスのブロック図である。
【図２５】図２５は、一実施形態の下において、スロークス(slawx)、プロテイン(protein)、およびプール(pool)を用いたデータ表現を含む処理環境のブロック図である。
【図２６】図２６は、一実施形態の下における、プロテインのブロック図である。
【図２７】図２７は、一実施形態の下における、デスクリップ(descrip)のブロック図である。
【図２８】図２８は、一実施形態の下における、インジェスト(ingest)のブロック図である。
【図２９】図２９は、一実施形態の下におけるスロー(slaw)のブロック図である。
【図３０Ａ】図３０Ａは、一実施形態の下において、プールの中にあるプロテインのブロック図である。
【図３０Ｂ−１】図３０Ｂ（図３０Ｂ−１および図３０Ｂ−２を纏めて）は、一実施形態の下における、スロー・ヘッダ・フォーマットを示す。
【図３０Ｂ−２】図３０Ｂ（図３０Ｂ−１および図３０Ｂ−２を纏めて）は、一実施形態の下における、スロー・ヘッダ・フォーマットを示す。
【図３０Ｃ】図３０Ｃは、一実施形態の下においてプロテインを用いる際のフロー図である。
【図３０Ｄ】図３０Ｄは、一実施形態の下において、プロテインを組み立てるまたは発生する際のフロー図である。
【図３１】図３１は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。
【図３２】図３２は、多数のデバイスと、これらのデバイスの１つ以上で走る多数のプログラムとを含む処理環境のブロック図であり、一実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。
【図３３】図３３は、多数のデバイスと、これらのデバイスの１つ以上で走る多数のプログラムを含む処理環境のブロック図であり、一代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。
【図３４】図３４は、多数の入力デバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、別の代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。
【図３５】図３５は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする。
【図３６】図３６は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする。
【図３７】図３７は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、追加の代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、当該プロセス・プールにおいて生成し配置された状態情報の特性に影響を及ぼすまたは制御することができる。
【発明を実施するための形態】
【０００７】
空間動作環境（ＳＯＥ）のためのシステムおよび方法について説明する。ＳＯＥは、ジェスチャ・ベース制御システムを含み、空間ユーザ・インターフェース（ＳＵＩ）または空間インターフェース（ＳＩ）と呼ぶこともできる。ＳＯＥのデータ空間全域においてナビゲートするためのシステムおよび方法について説明する。ナビゲーションは、検出器を通じて受信したジェスチャ・データから本体のジェスチャを検出することを含む。このジェスチャ・データは、ある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データである。検出は、ジェスチャ・データを用いてジェスチャを識別することを含む。ナビゲーションは、ジェスチャをジェスチャ信号に変換すること、およびジェスチャ信号に応答して、データ空間全域でナビゲートすることを含む。データ空間は、物理的空間において表されるデータ・セットを構成するデータ表現空間である。
【０００８】
以下の説明では、ＳＯＥの完全な理解を更に深めるために、多数の特徴について説明する。ＳＯＥは、これらの具体的な詳細がなくても実用化できることは明白である。その他の場合、周知の機構については、詳細に説明していない。
空間動作環境（ＳＯＥ）
図１は、一実施形態の下におけるＳＯＥのブロック図である。ユーザは、彼の手１０１および１０２を、カメラ１０４Ａ〜１０４Ｄのアレイの視野に置く。これらのカメラは、指ならびに手１０１および１０２の位置、方位、および移動を検出し、出力信号をプリプロセッサ１０５に発生する。プリプロセッサ１０５は、カメラ出力をジェスチャ信号に変換し、このジェスチャ信号をシステムのコンピュータ演算装置１０７に供給する。コンピュータ１０７は、入力情報を用いて、１つ以上の画面上カーソルを制御するコマンドを発生し、ビデオ出力をディスプレイ１０３に供給する。
【０００９】
このシステムでは、一人のユーザの手を入力として示すが、ＳＯＥ１００は、多数のユーザを用いても実施することができる。加えて、手の代わりにまたは手に加えて、本システムはユーザの身体の任意の１つ以上の部分を追跡することができ、その部分とは、頭部、足、脚部、腕、肘、膝等を含む。
【００１０】
図示の実施形態では、４台のカメラまたはセンサを用いて、ユーザの手１０１および１０２の位置、方位、および移動を検出する。ＳＯＥの範囲や主旨から逸脱することなく、ＳＯＥ１００はこれらよりも多いカメラ（例えば、６台のカメラ、８台のカメラ等）または少ないカメラ（例えば、２台のカメラ）とでも用いることができることは言うまでもない。加えて、実施形態例では、カメラまたはセンサは対称的に配置されているが、ＳＯＥ１００にはこのような対称性の要件はない。ユーザの手の位置、方位、および移動を許容するのであれば、カメラまたはセンサは、いずれの数および位置付けでも、ＳＯＥ１００において用いることができる。
【００１１】
一実施形態では、用いられるカメラは、グレー・スケール画像を取り込むことができるモーション・キャプチャ・カメラである。一実施形態では、用いられるカメラは、Vicon MX40カメラのような、Vicon社が製造するカメラである。このカメラは、カメラ内部処理を含み、毎秒１０００フレームの画像取り込みが可能である。モーション・キャプチャ・カメラは、マーカを検出し位置を突き止めることができる。
【００１２】
一実施形態のＳＯＥのカメラまたはセンサは、種々の形態をなすことができる。一実施形態では、２つ以上の小型カメラを用い、これらを互いに結合してステレオ映像システムを形成する。このステレオ映像システムは、少なくとも、その視野内にあるオブジェクトについての三次元データ点クラウド(data point cloud)を発生する。データ・セットにおける点の分解深度精度(resolved depth accuracy)は、カメラ基準線からの距離を含む多数の要因にしたがって変化するが、約１ミリメートル（ｍｍ）である。
【００１３】
ステレオ・センサ・セットによって点クラウドが発生されたとすると、ＳＯＥのコンポーネントは、手および／または指の位置を抽出し、次いでこれらから量子化した手のポーズならびに連続手および指方位ベクトルを再現することができる。この再現に用いられる手法は、初期入力が、集計−タグ付きデータ(aggregate-tagged data)ではなく、未構造化点クラウド(unstructured point clouds)であることを除いて、以下で説明する方法と実質的に同様である。手および指の表現は、本システムのインタラクティブ・モードを実施するメカニズムに利用可能となる。
【００１４】
実施形態は、ステレオ結合カメラのセットを多数用いるか、または１台よりも多いカメラを扱うために画素データを処理する修正相関アルゴリズムを用いる。カメラの台数が増加すると、例えば、視野を広げることができ、手の部分の遮蔽(occlusion)によって生ずる問題を減らすことができ、および／または点クラウド・データの精度を高めることができる。
【００１５】
記載している実施形態では、カメラは光学的検出に用いられるセンサである。他の実施形態では、カメラまたは他の検出器は、電磁、静磁気、ＲＦＩＤ、またはその他の任意の適した種類の検出に用いることができる。
【００１６】
プリプロセッサ１０５は、三次元空間点再現および骨格点ラベリングを発生するために用いられる。ジェスチャ変換器１０６は、３Ｄ空間情報およびマーカ・モーション情報をコマンド言語に変換するために用いられる。コマンド言語は、コンピュータ・プロセッサによって解釈され、ディスプレイ上におけるカーソルの位置、形状、および動作(action)を更新することができる。ＳＯＥ１００の代替実施形態では、プリプロセッサ１０５およびジェスチャ変換器１０６を組み合わせて１つのデバイスにすることもできる。
【００１７】
コンピュータ１０７は、Apple社、Dell社、または任意のその他の適した製造業者によって製造されるような、任意の汎用コンピュータとすればよい。コンピュータ１０７は、アプリケーションを実行し、表示出力を供給する。カーソル情報は、他の場合にはマウスまたはその他の先行技術の入力デバイスから得られるが、ここではジェスチャ・システムから得られる。
データ空間のナビゲーション
一実施形態のＳＯＥは、グラフィカル空間または他のデータ表現空間全域における線形推移または追跡運動を制御するために、「プッシュバック」(pushback)、即ち、人間の操作者の手の線形空間運動、または同質の次元活動の実行を可能にする。ＳＯＥ、およびそれによって確立される計算および認識の連携は、スケールのレベルをナビゲートする、主に線形な「深度次元」を横断する、あるいは、最も一般的には、量子化されたまたは「抑止された」(detented)パラメータ空間にアクセスするための、基本的な構造化された方法を提供する。また、ＳＯＥは、操作者が意図的に追加コンテキストを取得することができる有効な手段、空間的、概念的、または計算的のいずれであっても、近傍(vicinities)および近隣(neighborhoods)を理解するための素早い技法を提供する。
【００１８】
ある種の実施形態では、プッシュバック技法は、従前の入力デバイス（例えば、マウス、トラックボール、一体化したスライダ、またはノブ）を用いることができ、または操作者自身の身体(person)から外部のタグ付きオブジェクトまたは追跡対象オブジェクトに依存することができる（例えば、器具を取り付けられた連鎖のリンク(instrumented kinematic linkages)、静磁気的に追跡される「入力レンガ」(input bricks)）。別の代替実施形態では、プッシュバックの実施は、制御システム全体として十分であればよい。
【００１９】
一実施形態のＳＯＥは、それよりも大きな空間相互作用システムの一部であり、その中に統合されている。このシステムは、コンピュータの制御のための慣習的なマウス主体グラフィカル・ユーザ・インターフェース（「ＷＩＭＰ」ＵＩ）方法に取って代わり、代わりに、（ａ）１つ以上のタイプのオブジェクト（例えば、人間の手、人間の手の上にあるオブジェクト、静止オブジェクト等）を追跡することができる物理的センサ、（ｂ）検知された手の徐々に進展する位置、方位、およびポーズを分析して、一連のジェスチャ・イベントにする手段、（ｃ）このような空間的イベントおよびジェスチャ・イベントを表すための記述的方式、（ｄ）このようなイベントを制御プログラムにそしてその内部に配信するフレームワーク、（ｅ）ジェスチャ・イベントのストリームによってエンコードされた人間の意思（コマンド）を、イベント・ストリーム自体およびイベント解釈の用途特定結果双方のグラフィカル、聴覚的、およびその他の表示様式描写(display-modal depiction)と同期させる方法を備えている。これらの全てについて、以下で詳しく説明する。このような実施形態では、プッシュバック・システムは、追加の空間およびジェスチャ入力−および−インターフェース技法と統合される。
【００２０】
図２は、一実施形態の下においてデータ空間をナビゲートする際のフロー図である。ナビゲーションは、検出器２０２を通じて受信したジェスチャ・データから、本体のジェスチャを検出することを含む。ジェスチャ・データは、ある時点および物理的空間における本体の瞬時的状態の絶対三次元位置データである。検出は、ジェスチャ・データ２０４を用いてジェスチャを識別することを含む。ナビゲーションは、ジェスチャをジェスチャ信号２０６に変換すること、そしてジェスチャ信号２０８に応答してデータ空間全体をナビゲートすることを含む。このデータ空間は、物理的空間において表されるデータ・セットを含むデータ表現空間である。
【００２１】
一実施形態の全体的な往復レイテンシ(round-trip latency)（センサに対する手の動き→ポーズ分析→プッシュバック解釈システム→ディスプレイ・デバイスへのコンピュータ・グラフィクスのレンダリング→操作者の視覚系）が低く抑えられているとき（例えば、実施形態が約１５ミリ秒のレイテンシを呈する）、そして、システムの他のパラメータが適正に調整されているとき、プッシュバック相互作用の知覚的結果(perceptual consequence)は、物理的因果関係(causality)の格別な感覚となる。ＳＯＥは、ばね装填構造に対抗して押すことの物理的に反響する比喩(physically resonant metaphor)を文字どおりに解釈する(literalize)。知覚される因果関係は、非常に有効なフィードバックとなる。プッシュバック・システムによって供給される他のもっと抽象的なグラフィカル・フィードバック様式と共に、そして操作者の移動の解釈におけるある程度の自由度の意図的な抑制によって、このようなフィードバックは、総体的および精細な人間動力活動(human motor activity)双方の、制御メカニズムとしての、安定した、信頼性のある、そして繰り返し可能な使用を可能にする。
【００２２】
ＳＯＥのコンテキストを評価する際、多くのデータ・セットは本質的に空間的である。これらは、リテラル物理空間(literal physical space)内における現象、イベント、測定、観察、または構造を表す。より抽象的な他のデータ・セット、またはリテラルであるが非空間的情報をエンコードする他のデータ・セットについては、表現（視覚的、聴覚的、または他の表示様式を伴う）を用意することが望ましいことが多い。その基本的態様の一部は、１つのスカラー値パラメータによって制御され、そのパラメータを空間的次元と関連付けることも有益であることが多い。プッシュバック・メカニズムによる操作から利点が得られるのは、この１つのスカラー・パラメータの操作である。これについては、以下で詳しく説明する。
【００２３】
更に、表現は、それらのパラメータに、小さな複数の離散値だけを許可することもできる。実際には、離散値は１つのこともあり、それに対してデータ・セットは最適に見なされる。このような場合、「抑止されたパラメータ」、即ち、パラメータが明示的に「抑止された空間」の表現空間の一次元にマッピングされているか否か伝えることが有用である。本明細書における「抑止された」(detented)という用語の使用は、パラメータの好ましい量子化だけでなく、ラチェットの視野触覚的感覚(visuo-haptic sensation)、磁気整合メカニズム、ジョグ−シャトル・ホイール、および意図的な機械的抑止を有する他の豊かなこの世のデバイス(worldly devices)を呼び起こすことを意図している。
【００２４】
このようなパラメータの自明であるが極めて重要な例には、限定ではなく、（１）コンピュータ・グラフィクス環境における、データ・セットのレンダリング可能な表現からの合成カメラの距離、（２）データが元のデータ・セットからサンプリングされ、レンダリング可能な形態に変換される密度、（３）サンプルが時間可変データ・セットから引き出され、レンダリング可能な表現に変換される時間的インデックスが含まれる。これらは、普遍的な手法であり、無数のドメイン特定パラメータ化も存在する。
【００２５】
ＳＯＥのプッシュバックは、一般に、データ・セットのパラメータ−制御軸を、物理的空間におけるローカルに関連のある「深度次元」と整合させ、深度次元に沿った構造化実世界運動(real-world motion)が制御軸に沿ったデータ−空間変換を実行することを可能にする。その結果、パラメータ空間をナビゲートする非常に効率的な手段が得られる。以下に、ＳＯＥにおいて実施した場合のプッシュバックの代表的な実施形態の詳細な説明が続く。
【００２６】
プッシュバックの一例では、操作者は、テキストおよび画像を含む１つの「データ・フレーム」が現れる大きな壁ディスプレイの前において、十分な距離のところに立つ。グラフィカル・データ・エレメントは、静的でも動的でもよい。図３は、一実施形態の下においてディスプレイ３００上にレンダリングされたデータ・フレーム３１０の一例である。この例のデータ・フレーム３１０は画像を含むが、そのように限定されるではない。データ・フレーム３１０は、それ自体は二次元構造であるが、三次元コンピュータ・グラフィクス・レンダリング環境内に存在する。その基礎となる座標系は、部屋、ならびにディスプレイ３００および操作者を含む、その内容物を記述するのに都合がよい実世界座標と一致するように配置されている。
【００２７】
操作者の手は、センサによって追跡され、センサは、彼女の指の位置および方位、ならびに恐らくは手の塊全体の位置および方位を、高い正確度および高い時間率(temporal rate)で解明する。システムは、各手の「ポーズ」、即ち、指の互いに対する、そして手の塊に対する幾何学的配置を特徴付けるために、得られた空間データを分析する。この実施形態例で追跡するオブジェクトは、人間の手（１つまたは複数である）が、代替実施形態では多くの他のオブジェクトも入力デバイスとして追跡することができる。図４は、一実施形態の下において、一方側に押し返す場面を示し、本体４００が解放位置にある操作者の手であり、掌が前方方向に面している（ｚ−軸に沿って）（例えば、操作者の前にある表示画面に向かって）。この説明に限って言えば、壁ディスプレイ（図示せず）は、ｘおよびｙ次元を占めるように置かれ、ｚは操作者とディスプレイとの間における次元を記述する。このプッシュバック実施形態と関連のあるジェスチャ相互作用空間４１０は、定数ｚの面で突き合わされた２つの空間を備えている。ディスプレイから遠い（即ち、操作者に近い）抑止間隔空間(detented interval space)を「デッド・ゾーン」４１２と呼び、近い方の半空間を「アクティブ・ゾーン」４１４と呼ぶ。デッド・ゾーン４１２は、逆方向（操作者に向かい、ディスプレイから離れる方向）に不定に広がるが、前方には有限距離だけ広がり、デッド・ゾーン閾値４１３にて終端となる。アクティブ・ゾーン４１４は、デッド・ゾーン閾値４１３からディスプレイまで前方に広がる。ディスプレイ上にレンダリングされるデータ・フレーム（１つまたは複数）は、アクティブ・ゾーン４１４における本体の移動によって、相互作用的に制御される、即ち、「押し戻される」（４０２）。
【００２８】
データ・フレームは、ディスプレイのサイズおよびアスペクト比と正確に一致するサイズおよびアスペクト比で構成され、その中心および法線ベクトルがディスプレイのこれら物理的属性と一致するように位置付けおよび方位が決められるが、実施形態はそのように限定されるのではない。シーン(scene)をレンダリングするために用いられる仮想カメラは、ディスプレイから直接前方に、大まかに操作者の距離に配置されている。このコンテキストでは、レンダリングされたフレームは、したがって、正確にディスプレイを満たすことになる。
【００２９】
可視フレームの左右には、論理的に多数の追加の共面データ・フレームが配置されている。これらの共面データ・フレームは均一に離間され、適度のギャップがそれに直接隣接するものから互いに分離する（以下で説明する図６、図７、および図８を参照）。これらは、コンピュータ・グラフィクス・レンダリング・ジェオメトリの物理的／仮想レンダリング境界の外側にあるので、これらの横方向に変位した隣接データ・フレームは初期状態では見えない。データ空間は、その幾何学的構造が与えられれば、ｚ−方向において１つの自然な抑止部を、そして複数のｘ−抑止部を有することは理解されよう。
【００３０】
操作者は、彼女の左手を軽く握ったポーズで保持して、彼女の肩まで持ち上げる。次いで、彼女は指を開いて、これらが上方を指し示し、親指が右側を指し示し、彼女の掌が画面に面するようにする（以下で詳細に説明するジェスチャ記述言語では、このポーズ遷移は、[^^^^>:x^から||||-:x^]というように表現される）。本システムは、新たなポーズを検出すると、プッシュバック相互作用を誘起し、そのポーズが最初に入力されたところである手の絶対三空間位置を直ちに記録する。この位置は、「原点」として用いられ、以降の手の運動は、この原点からの相対的オフセットとして報告される。
【００３１】
直ちに、２つの同心円状の、部分的に透明なグリフ(glyph)がフレームの中心に（つまり、ディスプレイの中心に）重畳される。図５は、一実施形態の下において、デッド・ゾーンにおける本体プッシュバック・ジェスチャをデッド・ゾーン閾値の点まで示すグリフ５０１／５０２の例である。第２グリフ５０２が第１グリフ５０１よりも小さいのは（図５ａ参照）、操作者の手がデッド・ゾーン内に存在し、それを貫通するプッシュバック動作が「未だ」加わっていないことを示す。操作者が彼女の手を前方に（デッド・ゾーン閾値およびディスプレイに向かって）移動させると、第２グリフ５０２が徐々に大きくなる（図５ｂ、図５ｃ、および図５ｄを連続して参照のこと）。操作者の手がデッド・ゾーン閾値に来る地点で、第２グリフ５０２のサイズは第１グリフ５０１と同等になる（図５ｄ参照）。この例のグリフ５０１／５０２は、操作者の手がその開始位置から、デッド・ゾーンをアクティブ・ゾーンから分離するデッド・ゾーン閾値に向かって進行する際における、グリフの同心円エレメントの進展を示す。グリフ５０２の内部にある「歯状」部分は、手が閾値に近づくにつれて大きくなり、手が閾値の位置に達したときに、内側グリフ５０２および（静止）外側グリフ５０１の半径が、正確に一致するように配置されている。
【００３２】
第２グリフ５０２は、操作者が彼女の手をデッド・ゾーン閾値から遠離るように、そしてディスプレイから遠離るように移動させると、第１グリフ５０１の内側でサイズが小さくなるが、常に第１グリフ５０１と同心状にあり、ディスプレイの中心に位置することに変わりはない（図５ｄ、図５ｃ、図５ｂ、および図５ａを連続して参照のこと）。極めて重要なのは、操作者の手の運動のｚ−成分のみがグリフのスケーリングにマッピングされており、手の運動の副次的なｘ−およびｙ−成分は何の寄与もなさないことである。
【００３３】
操作者の手がデッド・ゾーンの閾値を順方向に横断し、アクティブ・ゾーンに入ると、プッシュバック・メカニズムが関与する(engage)。手の相対的なｚ−位置（閾値から測定する）は、スケーリング関数の対象となり(subject)、その結果得られる値は、データ・フレームおよびその横方向の近隣のｚ−軸変位を行うために用いられるので、そのフレームのレンダリング画像はディスプレイから後退するように見え、そして近隣データ・フレームも見えてきて、表示空間の縁から「埋まっていく」。合成カメラの一定角度範囲(constant angular subtent)は、平面がカメラから離れるように移動するに連れて、フレームが位置する平面のより多くを幾何学的に「取り込む」。ｚ−変位は連続的に更新されるので、操作者は、彼女の手をディスプレイに向けて押し込んだり、彼女自身に向かって引いたりすると、彼女の動きに直接応答して、横方向に後退および近接するフレームの集合体(collection)を知覚する。
【００３４】
図７は、一実施形態の下における、対応するプッシュバックから得られるデータ・フレーム７０３の第１の相対的ｚ−軸変位の一例である。先に説明したように、レンダリングされたデータ・フレーム７０３の画像は、ディスプレイ７００から後退するように見え、隣接するデータ・フレーム７０２／７０４が見えるようになり、ディスプレイ空間の縁から「埋まっていく」。隣接するデータ・フレーム７０２／７０４は、多数の追加の共面データ・フレームを含み、可視フレームの左右に論理的に配置され、均一に離間され、適度なギャップが各々をその直接隣接するものから分離する。図８は、一実施形態の下において、対応するプッシュバックから生ずるデータ・フレーム７０３の第２の相対的ｚ−軸変位の一例である。第１の相対的ｚ−軸変位について検討し、そのプッシング(pushing)から操作者の手の更なるプッシング（ｚ−軸に沿ってディスプレイに向かい操作者から離れる更なるプッシング）の結果、第１の相対的ｚ−軸変位が生じたと仮定すると、レンダリングされたフレーム７０３の画像は、更にディスプレイ７００から後退するように見えるので、追加の隣接データ・フレーム７０１／７０５が見えるようになり、更に表示空間の縁から「埋まっていく」。
【００３５】
一方、対をなす同心円状グリフは、ここでフィードバックの変更を示す。操作者の手はアクティブ・ゾーン内にあり、第２グリフ５０２は、スケーリングに基づく反応から、回転反応に切り替わり、手の閾値からの物理的なｚ−軸オフセットが、正の（平面内）角度オフセットにマッピングされる。図６は、一実施形態の下において、グリフ５０１／５０２がデッド・ゾーン閾値の点を超えた、デッド・ゾーンにおける本体のプッシュバック・ジェスチャ（ｚ−軸に沿って、ディスプレイに向かって、そして操作者から遠離る）例である。この例のグリフ５０１／５０２は、一旦操作者の手がデッド・ゾーン閾値を交差した際における、即ち、プッシュバック・メカニズムが能動的に関与するときのグリフの進展を示す。つまり、操作者の手のディスプレイに向かう移動およびディスプレイから離れる移動が、第２グリフ５０２の時計回りおよび反時計回り方向の回転によって視覚的に示され（第１グリフは、以前と同様、静止基準状態を示す）、グリフの「歯状」エレメント５２０が、手の閾値からのオフセットの線形関数として回転し、線形運動を回転表現に変える。
【００３６】
したがって、この例では、ｚ−軸に沿ったディスプレイに向かう手の移動の追加の第１増分が、第２グリフ５０２の増分時計回り方向回転５１０によって視覚的に示され（第１グリフは、以前と同様、静止基準状態を示す）、グリフの「歯状」エレメント５２０は、手の閾値からのオフセットの線形関数に対応する第１の量だけ回転する。ｚ−軸に沿ったディスプレイに向かう手の移動の追加の第２増分は、第２グリフ５０２の増分時計回り方向回転５１２によって視覚的に示され（第１グリフは、以前と同様、静止基準状態を示す）、グリフの「歯状」エレメント５２０は、手の閾値からのオフセットの線形関数に対応する第２の量だけ回転する。更に、ｚ−軸に沿ったディスプレイに向かう手の移動の第３の増分は、第２グリフ５０２の増分時計回り方向回転５１４によって視覚的に示され（第１グリフは、以前と同様、静止基準状態を示す）、グリフの「歯状」エレメント５２０は、手の閾値からのオフセットの線形関数に対応する第３の量だけ回転する。
【００３７】
この見本とした用途では、操作者の手がアクティブ・ゾーン内にあるとき、副次的な次元感度が関与する。手の横方向（ｘ−軸）運動が、この場合も可能なスケーリング関数によって、水平フレーム・シーケンスのｘ−変位にマッピングされる。スケーリング関数が正である場合、その効果は操作者の手の位置的「追従」(positional following)の１つであり、操作者はフレームを左右にスライドさせていることを知覚する。図９は、一実施形態の下において、本体の横方向運動から生ずるデータ・フレームの横方向ｘ−軸変位の一例である。横方向の本体移動によって生ずる横方向データ・フレーム運動のこの例では、データ・フレームは左から右にスライドし、特定のデータ・フレーム７０１／７０２が、表示空間７００の左縁を通ってビューから消えるまたは部分的に消えていき、一方追加のデータ・フレーム７０５が表示空間７００の右縁から埋まっていくようになっている。
【００３８】
最後に、操作者が彼女の手の掌を前方に向けたポーズを終了させると（例えば、手を閉じて拳を作ることによって）、プッシュバック相互作用が終了し、フレームの集合体は素早くその元のｚ−抑制（即ち、ディスプレイと同一平面上）に戻される。同時に、フレーム集合体は、１つのフレームのディスプレイとのｘ−一致を達成するために、横方向に調節させられる。終了するフレーム、つまり、「ディスプレイの中心に来る」フレームは、プッシュバック終了の時点において同心円状グリフの中心に最も近かった、即ち、最も近いｘ−抑止点(nearest x-detent)にあった、いずれかのフレームである。ここでは、グリフ構造は、選択レティクルとして第２の機能を果たすように見えるが、実施形態はそのように限定されるのではない。フレーム集合体のｚ−およびｘ−位置は、通例、「ばね装填戻り」(spring-loaded return)の視覚的感覚を与えるために、短い時間感覚でそれらの最終的なディスプレイ−一致値まで進行することが許される。
【００３９】
この例において配備されるプッシュバック・システムは、（１）直接視覚視線−−深度次元−−に沿って総計したデータ・セットを可変的に変位させることによって、認識的に貴重な「近隣コンテキスト」を取得することによって、視野に入れるデータ・セットを増やす（データ・セットのいずれの所与の部分についても、その角度範囲を縮小することと交換に）、（２）横方向に配列されたデータ・セットをその自然水平次元に沿って可変的に変位させることによって、近隣コンテンツを取得し、データのいずれの所与の区間についてもその角度範囲を維持するが、馴染みのある「スクローリング」という感覚で、古いデータの見える範囲(visibility)を新しいデータのそれと交換する、（３）素早く次元的に制約されたナビゲーションによって、データ・セットの離散化エレメントを選択するための効率的な制御様式を提供する。
【００４０】
一実施形態のプッシュバックの他の例では、操作者がウェスト・レベル・ディスプレイ・デバイスの直ぐ隣に起立する。ディスプレイ・デバイスのアクティブ面は、床面と平行な水平面にある。ここでは、座標系は、以前の例のそれと矛盾しないように設定される。表示面はｘ−ｚ面内にあるので、表面に対して法線を表すｙ−軸は、物理的重力ベクトルに対して反対に位置合わせされる。
【００４１】
図１０は、一実施形態の下において、本体１０００をテーブル状表示面（図示せず）の上で水平に保持した、物理的場面の一例を示す。この例では、本体１０００は操作者の手であるが、実施形態はそのように限定されるのではない。プッシュバック相互作用は両面型であるので、上側デッド・ゾーン閾位値１０１３Ｕおよび下側デッド・ゾーン閾値１０１３Ｌがある。加えて、プッシュバック操作によってアクセスされる線形空間には、離散空間抑止点１０１５Ｕ（例えば、「第１抑止点」、「第２抑止点」、「第３抑止点」、「第４抑止点」）が上側アクティブ・ゾーン１０１４Ｕの中に設けられており、離散空間抑止点１０１５Ｌ（例えば、「第１抑止点」、「第２抑止点」、「第３抑止点」、「第４抑止点」）が下側アクティブ・ゾーン１０１４Ｌの中に設けられている。一実施形態の相互作用空間は、上側デッド・ゾーン１０１２Ｕおよび下側デッド・ゾーン１０１２Ｌを備えている比較的小さなデッド・ゾーンが、プッシュバックが関与する垂直（ｙ−軸）位置を中心に配され、アクティブ・ゾーン１０１４Ｕがこのデッド・ゾーンの上となり、アクティブ・ゾーン１０１４Ｌがこのデッド・ゾーンの下になるように構成されている。
【００４２】
操作者は、データ・セットの一例を用いて作業しており、このデータ・セットは離散平行面（以下で説明する図１０参照）のスタックに分析されており、これらの離散平行面がデータ・フレームとなる。このデータ・セットは、このようにして、それが表す物理的現実の自然な結末（例えば、断層写真走査からの離散スライス、三次元集積回路の多数のレイヤ等）として構成することができ、またはこれは、データ（例えば、多数のスペクトル帯域において取得した衛星画像、１０年毎のデータが別個のレイヤに入っている、地理的に組織された人口調査データ等）を分離および離散化するように論理的または有益であるので、そのように構成することができる。更に、データの視覚表現は、静的であってもよく、または動的エレメントを含んでもよい。
【００４３】
プッシュバック機能が関与していない間隔では、１つのレイヤが「現行」と見なされ、表示によって視覚的に目立って表され、物理的にディスプレイと一致すると知覚される。現行のレイヤの上および下にあるレイヤは、この例では、視覚的に一目瞭然ではない（その存在を示すためにこじんまりした図象が用いられているが）。
【００４４】
操作者は、ディスプレイ上で彼の閉じた右手を広げる。手を広げると、指が前方に広がり、親指が左に広がり、掌は下方を指し示し（遷移：[^^^^>:vxから||||-:vx]）、このときにプッシュバック・システムが関与する。短い間隔（例えば、２００ミリ秒）の間、現行のレイヤに隣接するある数のレイヤが、異なる視感度で現れる。各々は、ぼやけフィルタおよび透明性で、上下に合成される。その「程度」(severities)はそれぞれのレイヤの現行レイヤからの通常距離(ordinal distance)に依存する。
【００４５】
図１１は、一実施形態の下において、プッシュバック・システムが関与すると、現行のレイヤ１１０１（例えば、データ・フレーム１１０１）に隣接するレイヤ１１０２（例えば、データ・フレーム１１０２）が、異なる視感度で、徐々に現れる例を示す。この例では、スタックが多数のデータ・フレーム１１０１〜１１０Ｘ（Ｘは、データ・フレームのデータ・セットに相応しいのであれば、いずれの数でもよく、この例では、スタックがデータ・フレーム１１０１、１１０２、１１０３、１１０４、および１１０５を備えるように、Ｘは５となっている）を備えており、プッシュバック・システムを用いてこれらの間であちこちに移動する(traverse)ことができる。
【００４６】
同時に、以前の例から馴染みのある同心円状フィードバック・グリフが現れる。この場合、小さなデッド・ゾーンが、プッシュバックが関与する垂直（ｙ−軸）位置を中心として配置され、アクティブ・ゾーンがデッド・ゾーンの上下双方に来るように、相互作用が構成されている。この配置によって、元のレイヤに「帰り着く」際において補助が与えられる。この場合、グリフは、連続レイヤに対する接近指示(directed proximity)を示す追加の単純なグラフィックによって作成される。
【００４７】
操作者の手がデッド・ゾーン内に残っている間、レイヤ・スタックの変位は発生しない。グリフは、直前の例における場合と同じ「予備的」行動を表し、手がゾーンのいずれかの境界に近づくに連れて、内側のグリフが大きくなる（勿論、ここでは、行動は両面で対称的である。内側のグリフは、手の開始ｙ−位置では最小スケールにあり、手が上または下に動いても、外側のグリフと一致する方向に大きくなる）。
【００４８】
操作者の手がデッド・ゾーンの上平面を超えて上方に移動すると、内側のグリフは外側のグリフと重なり合い、以前と同様に、その方向に手が更に移動すると、内側グリフの反時計回り方向の回転運動が生ずる。同時に、レイヤ・スタックは「上方に平行移動」し始める。これらのレイヤの位置、元の現行レイヤの上にあるレイヤほど透明性が高くぼやけており、元の現行レイヤ自体はますます透過して行きそして一層ぼやけていく。その下にあるレイヤは、はっきりと見えてきてぼやけが少なくなる方向に移動する。
【００４９】
図１２は、一実施形態の下において、以前の現行レイヤ１１０１（例えば、データ・フレーム１１０１）（図示せず、図１１参照）が透明度を増して行き、この直前の現行レイヤ１１０１に隣接するレイヤ１１０２（例えば、データ・フレーム１１０２）が現在の現行レイヤとして見ることができるようになる、スタックの上方平行移動の一例である。加えて、スタックが上方に平行移動するに連れて、現在の現行レイヤ１１０２に隣接するレイヤ１１０３（例えば、データ・フレーム１１０３）が、異なる視感度で徐々に現れてくる。前述のように、スタックは、多数のデータ・フレーム１１０１〜１１０Ｘ（Ｘは、データ・フレームのデータ・セットに相応しいのであれば、いずれの数でもよく、この例では、スタックがデータ・フレーム１１０１、１１０２、１１０３、１１０４、および１１０５を備えるように、Ｘは５となっている）を備えており、プッシュバック・システムを用いてこれらの間であちこちに移動することができる。
【００５０】
レイヤ・スタックは、実世界距離（即ち、操作者の手のその初期位置からの変位を、通常座標(room coordinates)において測定したもの）と連続するレイヤ間における「論理的」距離との間におけるマッピングによって構成されている。レイヤ・スタックの平行移動は、勿論、近接度グラフィクスの瞬時的出現のように、このマッピングの結果である。一方、これは、表示面と現行レイヤとの間において（当初は）大きくなる距離を示す。また、これは、表示面が現在現行レイヤの下にあることも示す。
【００５１】
手の運動は続き、レイヤ・スタックは最終的に、現行のレイヤおよびその次の下にあるレイヤが正に表示面を跨る（即ち、表示面から等距離となる）位置を通過する。この地点を丁度通過するときに、近接度グラフィクスが変化して、表示面が今や現行のレイヤよりも高いことを示す。このとき、「現行レイヤ・ステータス」は既に次に低いレイヤに割り当てられている。一般に、現行のレイヤは、常に物理的表示面に最も近いレイヤであり、操作者がプッシュバック・システムを解除したときに、「選択される」レイヤである。
【００５２】
操作者が彼の手を上げ続けると、連続する各レイヤが表示面に向けて送られ、徐々に良く見えるようになり(resolved)、表示面との一時的な一致を得て、次いで次に低いレイヤを優先して、再び透明になりぼやけていく。操作者が彼の手の運動方向を逆にして、それを下げると、プロセスが逆になり、内側のグリフが時計回り方向に回転する。手が最終的にデッド・ゾーンを通過すると、元の現行レイヤが正確に表示面とｙ−一直線になり(y-alignment)、スタックが停止する。次いで、スタックのｙ−進行が再開し、元の現行レイヤの上にある平面に連続的に焦点を合わせる。操作者の総合的な知覚は、彼が彼の手を用いて、レイヤのスタックを押し下げそして引き上げているという、強くそして単純なものである。
【００５３】
最後に、操作者が彼の手を閉じて（または、それ以外でそのポーズを変化させる）ことによってプッシュバックを解除すると、システムは、スタックを、表示面と一直線にｙ−軸方向に抑止するように(detented y-axis alignment)「急に変化させ」、プッシュバックを終了したときに表示面に最も近かったレイヤを、現行レイヤとする。この位置合わせ(positional alignment)の短い間隔の間、他の全てのレイヤは、完全な透明状態に徐々に戻り、フィードバック・グリフは滑らかに消失する。
【００５４】
この例のデータ・セット（ここでは、レイヤ）の離散化したエレメントは、主要プッシュバック（深度）軸に沿って分散される。以前では、これらのエレメント（データ・フレーム）は同じ平面にあり、深度軸に対して直交する次元に沿って横方向に配列されていた。この現在の配列は、透明技法の配備と共に、データが重畳されることが多く、あるレイヤは他のレイヤを通して見られることを意味する。しかしながら、この例における操作者は、（１）近隣コンテキスト（現行レイヤの上および下にあるレイヤの内容はなにか）を素早く得る装置(facility)、および（２）データ・セットにおける平行積層エレメント間で効率的に選択し切り換える装置も享受する。操作者が（１）のみを意図する場合、デッド・ゾーンを設けることによって、操作者は元来選択されたレイヤに確実に戻ることができる。操作全体にわたって、２つの平行移動次元( translational dimensions)の抑制によって、速度および精度が可能になる（殆どの人間にとって、横方向にドリフトを生じることなく手を垂直に平行移動させることは比較的難しいが、前述したような様式は、このような横方向変位を単純に全て無視する）。
【００５５】
尚、ある種の目的のために、デッド・ゾーンが無限に広がるようにプッシュバック入力空間を構成することが好都合である場合もあることを注記しておく。そして、プッシュバックが関与すると直ぐに、そのアクティブなメカニズムも投入される。本明細書において紹介する第２の例では、これは、本来の現行レイヤは、一旦プッシュバック操作が開始されたなら、他のいずれとも同じように扱われることを意味する。経験的に、デッド・ゾーンの直線的な広がりは、操作者の好みの問題である。
【００５６】
この第２の例において説明した様式は、二次元（投影式または放射式のいずれでも構わない）および三次元（自動ステレオ式で、空中画像生成式(aerial-image-producing)等であろうとなかろうと構わない）デバイス双方を含む多種多様のディスプレイにわたって関連がある。後者、即ち、３Ｄの高品質な実施態様の場合、媒体のある種の特性が、プッシュバックの基礎となる知覚メカニズムを広く補助することができる。例えば、パララックス、光学被写体深度、および視覚的適応(ocular accommodation)現象の組み合わせは、多数のレイヤを同時に捕らえることを可能とし、表示面から多いレイヤを激しく褪せさせたりぼけさせる（または実際には一緒に除外する）必要性を解消する。更に、これらの様式は、ディスプレイの方位に関係なく適用される。これは、例におけるように、主に水平とするとよく、または壁上の目の高さに取り付けても同様に有用であると考えられる。
【００５７】
この第２の例の場面に対する拡張では、２つの手による操作の有用性を示す。ある種の用途では、レイヤ・スタック全体の平行移動、または個々のレイヤの横方向（即ち、ｘおよびｚ方向）の平行移動が必要となることがある。一実施形態では、操作者の他の、即ち、プッシュバックではない、手がこの変換を、例えば、ある様式によって行うことができる。この様式では、手を表示面に近接させると、データ・セットのレイヤの内１つを「滑らせる」(slide around)ことができるので、そのオフセットｘ−ｚ位置が手のそれを追従するようになる。
【００５８】
操作者は、一般に、横方向平行移動およびプッシュバック操作を同時に着手することを、便利であり容易に御し易い(tractable)と考えることができる。連続ドメイン操作を一方の手に割り当て、離散型作業を他方の手に割り当てることにより、認識負荷(cognitive load)を最適化するように作用することができると提案することは、恐らく全面的に無意味なことではない。
【００５９】
データ・セットに対して自然な視覚的側面がないＳＯＥの下においてプッシュバックの更に別の例について検討することは有用である。代表的なのは、複数のオーディオ・チャネルを監視し、集合体の中から間欠的に１つを選択する問題である。プッシュバック・システムを適用すると、聴覚的出力には備えているが視覚出力には備えていない環境において、このようなタスクを可能にする。この様式は、直前の例のそれと非常に似ている。
【００６０】
操作者は、起立または着座して、１つのオーディオ・チャネルを聞いている。概念的に、このオーディオは、「聴覚面」と呼ばれる垂直面に存在し、この面には、幾何学的に、彼女の耳が含まれる。追加のオーディオ・チャネルは、この聴覚面に平行な追加の面内に存在するが、ｚ−軸に沿って前方または後方に変位されている。
【００６１】
彼女の手を開いて、彼女の前９インチのところに保持し、掌を前方に向けて、プッシュバック・システムを投入する。数個の近接する面におけるオーディオが、差別的に徐々に現れ、各々の音量は、現行チャネルの面からのその元の距離に逆に依存する。実際には、２つまたは４つの追加チャネルを聴取可能にすることは、知覚的に非現実的である。同時に、「オーディオ・グリフ」が徐々に現れて、近接度フィードバックを与える。初期状態では、操作者の手がデッド・ゾーン内に保持されているが、グリフは辛うじて聞くことができる２音調の和音である（初期状態では、調和している）。
【００６２】
操作者が彼女の手を前方または後方に、デッド・ゾーンを通過するように移動させると、オーディオ・チャネルの音量は一定のままであるが、グリフの音量が増大する。手がデッド・ゾーンの前または後ろの閾値と交差すると、グリフはその「アクティブな」音量に到達する（未だ現行チャネルの音量に従う）。
【００６３】
一旦操作者の手が、例えば、前方方向に、アクティブ・ゾーンを通過して移動始めると、オーディオ・チャネルに期待される効果が得られる。現行のチャネル面が聴覚面から更に遠離るように押され、その音量が徐々に減少する（そして、これらのチャネルの音量はなおも更に先に進む(forward)）。一方、「背後の」(dorsal)チャネル面の音量は、それが聴覚面に近づくに連れて、増大する。
【００６４】
一方、オーディオ・グリフはモードを切り換えている。手の前方への繰り出しには、トーンの１つの周波数上昇が伴い、「中点」において、聴覚面が１つのオーディオ・チャネル面および次のオーディオ・チャネル面に二等分すると、トーンが正確な１／５を形成する（数学的に、これは三全音  間隔(triton interval)であるべきであるが、これを避けるべき理由がふんだんにある）。可変トーンの周波数は、手が更に前方に移動し続けるにしたがって、最終的に操作者が次のオーディオ面に「到達」するまで、上昇し続ける。次のオーディオ面に到達した時点で、トーンは正確に１オクターブに広がる。
【００６５】
種々のチャネルの視聴が続き、操作者は彼女の手を前後に平行移動させて、各々に順番にアクセスする。最後に、１つを選択するためには、単に彼女の手を閉じて、プッシュバック・セッションを終了させ、オーディオ面の集合体を整列状態(alignment)に「素早く変化させる」(spring)。他の（選択されなかった）チャネルは、グリフと同様に、徐々に消えて行き聞こえなくなる。
【００６６】
この例は、プッシュバック用途の異種を例示したのであり、同じ機能がこの場合も得られる。即ち、近隣コンテキストへのアクセス、および離散化したデータ・エレメント（ここでは、個々のオーディオ・ストリーム）の迅速な選択である。この場面は、聴覚フィードバック・メカニズム、特に、操作者が選択を行える程に目標チャネルに「十分近づいている」か否かについての情報を操作者に提供するために、信頼性のある人間のある種の周波数間隔を認識する容量を利用するメカニズムに取って代わる。これは、特に、「可聴」信号が間欠的に現れるのみである音声チャネルにおいて重要である。オーディオ・フィードバック・グリフの連続性によって、それが存在したままとなり、チャネル自体が無音になっていても識別可能であり続ける。
【００６７】
尚、本例におけるＳＯＥが空間化オーディオ(spatialized audio)を含む場合、前方距離(forward distance)に後退するそして背後から近づく（またはその逆）連続オーディオ・レイヤの知覚を大幅に改善することができることを注記しておく。更に、操作者の位置において選択されたオーディオ面を一層文字どおりに(literally)「定位」する機会(opportunity)が、操作者の前にある後続レイヤおよび背後にある以前のレイヤと共に、有用に活用可能となる。
【００６８】
オーディオ・グリフの他のインスタンス化も可能であり、実際に、スペクトル分布を含む、種々のチャネル内容の特質が、どの種のグリフが最も明確に認識できるかを決定付ける傾向がある。一例として、他のオーディオ・グリフ・フォーマットが一定の音量を維持するが、周期的なクリックを用い、クリック間の間隔が聴覚面と最も近いオーディオ・チャネル面との近接性に比例する。最後に、ある種の状況の下では、そして操作者の鋭さに応じて、フィードバック・グリフが全くないオーディオ・プッシュバックを用いることが可能である。
【００６９】
プッシュバック・メカニズムを参照して、データ・セットの表現において空間抑止点の数および密度が非常に大きくなる方向に増大するにつれて、空間およびそのパラメータ化が事実上連続になる。即ち、非抑止(non-detented)となる。しかしながら、このような極限においてもプッシュバックは有効であり続ける。これは、部分的に、プッシュバックの各呼び出し前におけるデータ・セットの「初期状態」を、一時的抑止として扱うことができ、単純にデッド・ゾーンとして理解できるからである。
【００７０】
このような非抑止プッシュバックの用途は、無限に（または少なくとも実質的に）ズーム可能な図の考えと関連付けて見出すことができる。ズーム機能のプッシュバック制御は、オフセット手位置(offset hand position)をアフィン・スケール値(affine scale value)と関連付けるので、操作者は彼の手を前方または後方にズームの減少または増大（それぞれ）の度合いだけプッシュ(push)する。しかしながら、位置のズーム・パラメータへの直接マッピングによって、制御の手をデッド・ゾーンに戻しても、ズーム値をその初期状態に戻せることを保証するので、元の事前プッシュバック・ズーム状態(pre-pushback zoom state)は常に容易にアクセス可能である。
【００７１】
以上の例において説明した各場面では、プッシュバック・システムの突出した態様、およびＳＯＥ下におけるその使用についての説明を行った。更に、本明細書において記載した操作の各々は、効率および正確度のために、特定の種類の知覚フィードバックが人間の移動を案内することを可能にすることによって、１秒以下で高精度にそして総合的に着手する(undertake)ことができることは言うまでもない。また、他のときには、操作者は数十秒の間１つの連続プッシュバック「セッション」に留まっていることを有用と思う。調査の目標やコンテキスト取得の目標は、更に長い間隔にわたるプッシュバックによって十分に果たされる。
【００７２】
以上で説明した例は、物理的入力（ジェスチャ）空間の表現空間への線形マッピングを採用した。実空間においてＡ単位だけ制御手(control hand)を平行移動させると、Ａ平行移動が行われた実空間の位置には係わらず、常に、表現空間におけるＢ単位［prime］だけの平行移動が得られる。しかしながら、他のマッピングも可能である。即ち、殆どの人間の操作者によって享受される精細モータ制御(fine motor control)によって、非線形マッピングの使用が可能となり、その場合、例えば、アクティブ閾値から遠く離れた差動ジェスチャ変換は、閾値付近におけるジェスチャ変換よりも、パラメータ化された次元に沿って大きな変位に変換することができる。
マーカ・タグ
ＳＯＥまたは一実施形態は、ユーザの１つ以上の指においてマーカ・タグの使用を想定し、本システムがユーザの手を突き止め、ユーザが左または右のどちらの手を見ているのか特定し、どの指が見えるか特定することができるようにする。これによって、本システムは、ユーザの手の位置、方位、および移動を検出することが可能になる。この情報によって、本システムは多数のジェスチャを認識することが可能となり、これらのジェスチャは、ユーザによってコマンドとして用いることが可能になる。
【００７３】
一実施形態では、マーカ・タグは基板（本実施形態では、人の手の上の種々の位置に装着するのに適している）と、基板の表面上に一意識別パターンで配列された離散マーカとを備えている物理的タグである。
【００７４】
マーカおよび連携する外部検知システムは、それらの三空間位置の高精度、正確、ならびに迅速および連続的捕獲が可能である任意のドメイン（光学、電磁、静磁気ドメイン等）において動作することができる。マーカ自体は、能動的（例えば、構造化した電磁パルスを放出することによって）、または受動的（例えば、本実施形態におけるように光学的に逆反射型とすることによって）のいずれでも動作することができる。
【００７５】
各捕獲フレームにおいて、検出システムは、器具を備え付けた作業空間立体（カメラまたはその他の検出器の可視範囲内）において現在タグからの全てのマーカを含む三空間位置を再現した、粒団状「クラウド」を受ける。各タグ上のマーカは、十分に多数であり、一意のパターンに配列されているので、検出システムは以下のタスクを行うことができる。（１）再現した各マーカ位置を、１つのタグを形成する点の１つのみの副集合体に割り当てるセグメント化、（２）セグメント化した点の各副集合体を特定のタグとして識別するラベリング、（３）識別したタグの三空間位置を再現する位置突き止め、および（４）識別したタグの三空間方位を再現する方位決定(orientation)。タスク（１）および（２）は、マーカ・パターンの具体的な本質によって可能となる。これについては、図２の一実施形態において以下で説明し例示する。
【００７６】
一実施形態では、タグ上のマーカは、規則的な格子位置の部分集合に装着されている。この基礎となる格子は、本実施形態のように、従来からのデカルト型であってもよいし、代わりに、他の何らかの規則的平面碁盤目状（例えば、三角形／六角形タイリング配列）であってもよい。格子のスケールおよび空間は、隣接する格子位置が混乱する可能性がないように、マーカ検知システムの既知の空間分解能に関して確定する。全てのタグについてのマーカ・パターンの選択は、次の制約を満たさなければならない。タグのパターンは、回転、平行移動、または鏡像のいずれの組み合わせによる他のいずれのタグ・パターンとも一致してはならない。更に、ある指定した数のコンポーネント・マーカの損失（または遮蔽(occlusion)が許容されるように、多数のマーカおよびその配列を選択するとよい。いずれの任意の変換後であっても、損なったモジュール(compromised module)を他のいずれとも混同させることが起こりそうにないようにしなければならない。
【００７７】
図１３は、一実施形態の下におけるマーキング・タグの図である。多数のタグ１３０１Ａ〜１３０１Ｅ（左手）および１３０２Ａ〜１３０２Ｅ（右手）が示されている。各タグは、矩形であり、本実施形態では、５×７の格子アレイで構成されている。矩形形状が選択されたのは、タグの方位を決定し易いため、そして鏡面複製(mirror duplicate)の可能性を低減するためである。図示の実施形態では、各手の指毎にタグがある。実施形態によっては、手毎に１つ、２つ、３つ、または４つのタグを用いることが適当である場合もある。各タグは、異なるグレー・スケールまたは色調の境界を有する。この境界の内部には、３×５格子アレイがある。マーカ（図１３の黒いドットで表す）は、情報を提供するために、この格子のある点に配置されている。
【００７８】
各パターンを「共通」および「一意」のサブパターンにセグメント化することにより、タグのマーカ・パターンにおいて、認定情報(qualifying information)をエンコードすることができる。例えば、本実施形態は、２つの可能な「境界パターン」、矩形境界線(boundary)を中心としたマーカの分布を指定する。つまり、タグの「ファミリー」を確立する。このため、左手を意図したタグは、タグ１３０１Ａ〜１３０１Ｅにおいて示されるような同じ境界パターンを全て用いることができ、一方右手の指に取り付けられているタグには、タグ１３０２Ａ〜１３０２Ｅに示すように異なるパターンを割り当てることができる。タグの全ての方位において、左パターンを右パターンから区別できるように、このサブパターンを選択する。図示した例では、左手パターンは、各角に１つのマーカ、そして角格子位置から２番目に１つのマーカを含む。右手パターンは、２つの角のみにマーカを有し、角でない格子位置に２つのマーカを有する。このパターンを検査することによって、４つのマーカの内いずれか３つが見ることができる限り、左手パターンを右手パターンから明確に区別することができることが明らかとなった。一実施形態では、境界の色または色調も、利き手(handedness)のインディケータとして用いることができる。
【００７９】
各タグは、勿論、一意の内部パターンを採用し続けなければならず、マーカはそのファミリーの共通境界以内に分散されている。図示の実施形態では、内部格子アレイにおける２つのマーカが、１０本の指の各々を一意に特定するのに十分であり、指の回転または方位による複製が生じないことが分かる。マーカの１つが遮蔽されたとしても、タグのパターンおよび利き手の組み合わせから、一意の識別子が得られる。
【００８０】
本実施形態では、格子の位置は、各逆反射マーカをその意図する位置に装着する（手作業の）タスクに対する補助として、視覚的に剛性基板上に存在する。これらの格子および意図するマーカ位置は、カラー・インクジェット・プリンタによって基板上にそっくりそのまま印刷される。ここでは、基板はシート状の（初期状態では）可撓性の「収縮フィルム」である。各モジュールがこのシートから切り離され、炉で焼成される。この熱処理の間に、各モジュールには正確で繰り返し可能な収縮が起こる。この手順に続く短い間隔において、冷却するタグには、例えば、指の長手方向曲線にしたがって、僅かに形状を付けることができる。その後、基板は適度に剛性となり、マーカを、指示された格子点に装着することができる。
【００８１】
一実施形態では、マーカ自体は、接着剤または何らかのその他のしかるべき手段によって基板に装着された小さな反射球体のように、三次元である。このマーカが三次元であることは、二次元マーカ上における検出および位置突き止めに役立つことができる。しかしながら、いずれも、本明細書に記載するＳＯＥの主旨や範囲から逸脱することなく用いることができる。
【００８２】
現在では、タグはベルクロ(Velcro)またはその他のしかるべき手段によって、操作者が身に付けている手袋に装着されるか、あるいは、柔らかな両面テープを用いて操作者の指に直接装着される。第３実施形態では、剛性基板を全くなしで済ませ、操作者の指および手に直接個々のマーカを装着するまたは「描く」することができる。
ジェスチャ・ボキャブラリ
ＳＯＥは、手のポーズ、方位、手の組み合わせ、および方位の配合(orientation blends)で構成されるジェスチャ・ボキャブラリ(gesture vocabulary)を想定する。ＳＯＥのジェスチャ・ボキャブラリにおいてポーズおよびジェスチャを立案および伝達するために、表記言語(notation language)も実施する。ジェスチャ・ボキャブラリとは、力学的連結の瞬時的な「ポーズ状態」を簡潔な文字形態で表すシステムである。対象となる連結は、生物（例えば、人の手、または人の身体全体、あるいはバッタの足、あるいはキツネザルの関節脊柱）であってもよく、あるいは代わりに非生物であってもよい（例えば、ロボットのアーム）。いずれの場合でも、この連結は、単純（脊柱）でもまたは分岐（手）でもよい。ＳＯＥのジェスチャ・ボキャブラリ・システムは、いずれの特定的な連結についても、一定長のストリングを確立する。こうして、ストリングの「キャラクタ位置」を占める特定のＡＳＣＩＩキャラクタの集合体が、連結の瞬時的状態、即ち、「ポーズ」の一意の記述となる。
手のポーズ
図１４は、ＳＯＥを用いたジェスチャ・ボキャブラリの一実施形態における手のポーズを示す。ＳＯＥは、１本の手における５本の指の各々を用いることを仮定する。これらの指には、ｐ−小指、ｒ−薬指、ｍ−中指、ｉ−人差し指、およびｔ−親指とコーディングする。指および親指の多数のポーズを、一実施形態のジェスチャ・ボキャブラリにおいて定義し例示する。ジェスチャ・ボキャブラリ・ストリングは、連結（この場合指）の表現可能な自由度毎に１つのキャラクタ位置を確定する。更に、このような各自由度は、離散化（または「量子化」）されていることが分かるので、その最大運動範囲は、当該ストリング位置における有限数の標準的ＡＳＣＩＩキャラクタの内の１つの割り当てによって表現することができる。これらの自由度は、本体特定の原点および座標系（手の裏、バッタの身体の中心、ロボット・アームの底辺等）に関して表現される。したがって、連結の位置および方位を「全体的に」更に大域的な座標系において表現するために、少数の追加のジェスチャ・ボキャブラリ・キャラクタ位置が用いられる。
【００８３】
多数のポーズが定義されており、ＡＳＣＩＩキャラクタを用いて識別されている。これらのポーズの一部は、親指およびそれ以外の指の間で分けられている。この実施形態におけるＳＯＥは、ＡＳＣＩＩキャラクタ自体がポーズを示唆するようなコーディングを用いる。しかしながら、示唆的であろうがなかろうが、ポーズを表すには、いずれのキャラクタでも用いることができる。加えて、本発明では、表記ストリングにＡＳＣＩＩキャラクタを用いる必要性はない。本発明の範囲や主旨から逸脱することなく、適したシンボル、数値、またはその他の表現であればいずれでも用いることができる。例えば、望ましければ、表記は指毎に２ビットを用いることもでき、あるいは所望に応じて、他の何らかの数のビットを用いることもできる。
【００８４】
巻き込んだ指(curled finger)は、キャラクタ「＾」によって表され、一方巻き込んだ親指は「＞」で表される。真っ直ぐな指または上を向いた親指は、「ｌ」によって示され、角度をなす場合は「＼」または「／」で示される。「−」は、真っ直ぐに横を向いた親指を表し、「ｘ」は平面内に向いた親指を表す。
【００８５】
これら個々の指および親指の記述を用いると、確固不動の数(robust number)の手のポーズを、本発明の方式を用いて、定義し記述することができる。各ポーズは、５つのキャラクタによって表され、その順序は、前述したように、ｐ−ｒ−ｍ−ｉ−ｔとなる。手を平らにして地面に平行に保持する場合、「ｌｌｌｌｌ」で表される。握り拳は「＾＾＾＾＞」によって表される。「ＯＫ」の合図は、「ｌｌｌ＾＞」によって表される。
【００８６】
キャラクタ・ストリングは、示唆的キャラクタを用いる場合、単純な「人間可読性」(human readabiity)の機会を与える。各自由度を記述する１組の可能なキャラクタは、総じて、素早い認識および明白な類似性に着目して選択することができる。例えば、垂直線（「｜」）は、連結エレメントが「直線状」であることを意味するように思われ、エル（「Ｌ」）は、９０度の屈曲を意味することもでき、曲折アクセント記号（「＾」）は、鋭角の屈曲を示すことができる。先に注記したように、所望に応じて、いずれのキャラクタまたはコーディングでも用いることができる。
【００８７】
本明細書に記載するようなジェスチャ・ボキャブラリ・ストリングを採用するシステムはいずれも、ストリング比較の高い計算効率の恩恵を享受する。指定されたいずれのポーズについても、その識別または検索は、文字どおり、所望のポーズ・ストリングと瞬時的な実際のストリングとの間における「ストリングの比較」（例えば、ＵＮＩＸ（登録商標）の「strcmp()」関数）となる。更に、「ワイルドカード・キャラクタ」の使用によって、プログラマやシステム設計者には、もっと見慣れた効率(efficiency)および有効性(efficacy)が得られる。自由度の瞬時状態が一致とは関わりがない場合、疑問符（「？」）として指定することができ、追加のワイルドカードの意味を割り当てることができる。
方位
指および親指のポーズに加えて、手の方位が情報を表すことができる。大域空間(global-space)方位を記述するキャラクタも、透過的に選択することができる。キャラクタ「＜」、「＞」、「＾」、および「ｖ」は、方位キャラクタ位置において遭遇した場合、左、右、上、および下の考えを示すために用いることができる。図１５は、一実施形態の下における、ジェスチャ・ボキャブラリにおける方位の図である。本発明の一実施形態では、２つのキャラクタ位置が、最初に手の平の方向を指定し、次いで指の方向を指定する（指が真っ直ぐになっている場合、指の実際の屈曲には関係なく）。これら２つの位置に可能なキャラクタは、方位の「本体中心」観念(body-centric notion)を表現し、「−」、「＋」、「ｘ」、「＊」、「＾」、および「ｖ」は、中間、横方向、前方（順方向、本体から離れる側）、後方（逆方向、本体から離れる側）、頭上（上方）、および後端（下方）を記述する。
【００８８】
本発明の表記方式および実施形態では、キャラクタを示す５本指のポーズに続いて、コロン、次いで完全なコマンド・ポーズを定義するために２つの方位キャラクタがある。一実施形態では、開始位置は「ｘｙｚ」ポーズと呼ばれ、親指は真っ直ぐ上を指し示し、人差し指は前方を指し示し、中指は人差し指に対して垂直であり、右手によってこのポーズが作られる場合、左を指し示す。これは、ストリング「＾＾ｘｌ−：−ｘ」によって表される。
【００８９】
「ＸＹＺ−手」は、視覚的に提示された三次元構造の最大６自由度のナビゲーションを可能にするために、人の手の幾何学的形状を利用する技法である。この技法は操作者の手の全体的(bulk)平行移動および回転のみに依存し、したがってその指は原則として、いずれの所望のポーズに保持することができるが、本実施形態は、人差し指が本体から離れる方向を指し、親指が天井を指し、中指が左−右を指す、静止構成(static configuration)を優先する。つまり、これら３本の指は、三空間座標系、つまり、「ＸＹＺ−手」の３本の相互に直交する軸を記述する（大まかであるが、明白な歴然とした趣旨がある）。
【００９０】
次いで、ＸＹＺ−手ナビゲーションは、操作者の身体の前において所定の「中立位置」に保持された、前述のようなポーズの手、指に進む。三空間オブジェクト（またはカメラ）の三平行移動および三回転自由度へのアクセス(access)は以下の自然な方法で行われる。手の右−左移動（身体の自然座標系に対して）により、計算的コンテキストのｘ−軸に沿った移動が生じ、手の上下移動により、被制御コンテキストのｙ−軸に沿った移動が生じ、前後の手の移動（操作者の身体に向かう方向／から離れる方向）によって、このコンテキストにおけるｚ−軸運動が生ずる。同様に、人差し指を中心とする操作者の手の回転により、計算的コンテキストの方位の「転動」(roll)変化が生じ、操作者の手の中指および親指をそれぞれ中心とする回転によって、「縦方向」および「横方向」変化が類似的に生ずる。
【００９１】
尚、「計算的コンテキスト」は、本明細書では、ＸＹＺ−手方法によって制御される全体に言及するために用いられており、合成三空間オブジェクトまたはカメラのいずれかを示唆するように思われるが、この技法は実世界オブジェクトの種々の自由度を制御するため、例えば、しかるべき回転アクチュエータを装備したビデオまたはモーション・ピクチャ・カメラのパン／ティルト／ロール制御にも等しく有用であることは言うまでもないことを注記しておく。更に、ＸＹＺ−手の姿勢によって得られる物理的自由度は、仮想ドメインであっても、ありのままにマッピングされ難い場合もある。本実施形態では、ＸＹＺ−手は、大きな全景的表示画像に対してナビゲーション的アクセスを提供するためにも用いられるので、操作者の手の左−右および上−下の運動が、画像を中心とする予期された左−右または上−下「パンニング」に繋がるが、操作者の手の前−後運動は「ズーミング」制御にマッピングする。
【００９２】
あらゆる場合において、手の運動と誘発される計算的平行移動／回転との間の結合は、直接的（即ち、操作者の手の位置的または回転オフセットが、一対一で、何らかの線形または非線形関数によって、計算的コンテキストにおけるオブジェクトまたはカメラの位置的または回転オフセットにマッピングする）、または間接的（即ち、操作者の手の位置的または回転オフセットが、一対一で、何らかの線形または非線形関数によって、計算的コンテキストにおける位置／方位の第１導関数またはより上位の導関数にマッピングし、実行中の積分が、計算的コンテキストの実際のゼロ次位置／方位における被静的変化を生み出す）のいずれかであることができる。この後者の制御手段は、自動車の「アクセル・ペダル」の使用に類似しており、ペダルの一定のオフセットによって、ほぼ一定の車速が得られる。
【００９３】
実世界のＸＹＺ−手の局所的六自由度座標原点としての役割を果たす「中立位置」は、（１）空間における絶対位置および方位として（例えば、密閉室に対する）、（２）操作者の全体的な位置および「方向」(heading)には関係なく、操作者自身に対する固定位置および方位（例えば、身体の前方８インチ、顎の下１０インチ、横方向に肩の平面と一直線状）として、あるいは（３）操作者の故意の二次的行動によって、対話的に（例えば、操作者の「別の」手によって演じられるジェスチャ・コマンドを用いて。前記コマンドは、ＸＹＺ−手の現在の位置および方位が今後平行移動および回転の原点として用いられるべきことを示す）確立することができる。
【００９４】
更に、ＸＹＺ−手の中立位置の周囲に「抑止」(detent)領域（または「デッド・ゾーン」）を設けて、この立体空間における移動が被制御コンテキストにおける移動にマッピングしないようにすると便利である。
【００９５】
他のポーズも含むことができる。
[lllll:vx]は、手を平らにして（親指が他の指と平行）、手のひらが下を向き、指が前方に突き出している。
【００９６】
[lllll:x^]は、手を平らにして、手のひらが前を向き、指が天井を向いている。
[lllll:-x]は、手を平らにして、手のひらが身体の中心に向いており（左手の場合は右、右手の場合は左）、指が前方に突き出している。
【００９７】
[^^^^-:-x]は、手を１つにして親指を合わしている（親指は天井を向いている）。
[^^^|-:-x]は、銃を前方に構える真似である。
二手組み合わせ
一実施形態のＳＯＥは、１つの手のコマンドおよびポーズだけでなく、２つの手によるコマンドおよびポーズも想定している。図１６は、一実施形態の下における、ＳＯＥのジェスチャ・ボキャブラリにおける二手組み合わせおよ対応する表記の例を示す。第１の例の表記を検討すると、「完全停止」とは２つの拳を閉じていることを示す。「スナップショット」の例では、各手の親指および人差し指が広げられ、親指が互いに向き合って、ゴール・ポストの形状の枠を定めている。「舵およびスロットル開始位置」は、指および親指が上を向いており、手のひらが画面に面している。
方位配合(Orientation Blends)
図１７は、一実施形態の下における方位配合の一例を示す。図示の例では、配合は、指ポーズ・ストリングの後ろにある括弧の中に囲まれた方位表記の対によって表されている。例えば、第１コマンドは、全て真っ直ぐに伸ばした指の位置を示す。方位コマンドの第１対により、手のひらをディスプレイに向かって平らにして、第２対によって、手を画面に向けて４５度縦に回転させる。この例では、配合の対を示したが、ＳＯＥではいずれの数の配合でも考えられる。
コマンドの例
図１９は、ＳＯＥと共に用いることができる、多数の可能なコマンドを示す。本明細書における論述の一部は、ディスプレイ上におけるカーソルの制御についてであったが、ＳＯＥはその行動に限定されるのではない。実際に、ＳＯＥは、画面上における全てのデータおよびデータの一部、更にはディスプレイの状態を操作する際に、様々に応用することができる。例えば、ビデオ・メディアの再生中に、これらのコマンドをビデオ制御に代わって用いることができる。これらのコマンドは、一時停止、早送り、巻き戻しなどを行うために用いることができる。加えて、画像のズーム・インおよびズーム・アウトを行うため、画像の方位を変化させるため、いずれかの方向にパンニングするため等に実施することができる。また、ＳＯＥは、開く、閉じる、保存する等のような、メニュー・コマンドの代わりに用いることもできる。言い換えると、想像することができるいずれのコマンドまたは活動でも、手のジェスチャによって実施することができる。
動作
図１８は、一実施形態におけるＳＯＥの動作を示すフロー図である。ステップ１８０１において、検出システムはマーカおよびタグを検出する。判断ブロック１８０２において、タグおよびマーカが検出されたか否か判断を行う。検出されていない場合、システムはステップ１８０１に戻る。ステップ１８０２においてタグおよびマーカが検出された場合、システムはステップ１８０３に進む。ステップ１８０３において、システムは、検出されたタグおよびマーカから、手、指、およびポーズを識別する。ステップ１８０４において、システムは、ポーズの方位を識別する。ステップ１８０５において、システムは、検出された１つまたは双方の手の三次元空間位置を識別する。（ステップ１８０３、１８０４、および１８０５の内いずれでも、または全てを１つの動作として組み合わせてもよいことに注意されたい）。
【００９８】
ステップ１８０６において、以上の情報を、前述したジェスチャ表記に変換する。判断ブロック１８０７において、ポーズが有効か否か判断を行う。これは、発生した表記ストリングを用いた単純なストリング比較によって行うことができる。ポーズが有効でない場合、システムはステップ１８０１に戻る。ポーズが有効である場合、ステップ１８０８において、システムは表記および位置情報をコンピュータに送る。ステップ１８０９において、コンピュータは、ジェスチャに応答して、取るべきしかるべき行為を決定し、ステップ１８１０においてそれに応じてディスプレイを更新する。
【００９９】
ＳＯＥの一実施形態では、ステップ１８０１〜１８０５をカメラ内蔵プロセッサによって実行する。他の実施形態では、望ましければ、この処理をシステム・コンピュータによって実行することもできる。
解析および変換
本システムは、基礎となるシステムによって再現された低レベルのジェスチャの流れを「解析」および「変換」し、これら解析し変換したジェスチャを、コマンドまたはイベント・データの流れに変換することができる。このデータは、広範囲のコンピュータ・アプリケーションおよびシステムを制御するために用いることができる。これらの技法およびアルゴリズムは、これらの技法を実現するエンジン、およびエンジンの能力を利用するコンピュータ・アプリケーションを構築するプラットフォームの双方を提供するコンピュータ・コードから成るシステムにおいて具体化することができる。
【０１００】
一実施形態は、コンピュータ・インターフェースにおいて、人の手の豊富なジェスチャの使用を可能にすることを中心に据えるが、他の身体部分によって行われるジェスチャ（限定ではなく、腕、胴体、脚部、および頭部を含む）や、手ではない種々の器具によって行われるジェスチャを認識することもできる。これらの器具は、静止および連結式(articulating)双方であり、限定ではないが、キャリパ、コンパス、可撓性曲線近似器(curve approximator)、および種々の形状のポインティング・デバイスが含まれる。マーカおよびタグは、操作者によって所望に応じて携行および使用することができる品目および器具に被着することができる。
【０１０１】
本明細書において記載するシステムは、認識し反応することができるジェスチャの範囲が豊富なジェスチャ・システムを構築することを可能にしつつ、同時にアプリケーションへの容易な統合にも備えた、多数の改革を組み込む。
【０１０２】
一実施形態では、ジェスチャ解析および変換システムは、以下のものを備えている。
１）様々な異なる集計レベルにおいて、ジェスチャを指定する（コンピュータ・プログラムにおいて用いるためのエンコード）緻密かつ効率的な方法。
【０１０３】
ａ．１本の手の「ポーズ」（手の部分の外形および互いに対する方位）。三次元空間における１つの手の方位および位置。
ｂ．２つの手の組み合わせ。いずれかの手がポーズ、位置、または双方を考慮に入れる。
【０１０４】
ｃ．多数の人物の組み合わせ。本システムは２つよりも多い手を追跡することができ、したがって、一人よりも多い事物が協同して（ゲーム・アプリケーションの場合には競合して）目標システムを制御することができる。
【０１０５】
ｄ．ポーズが連続して組み合わされる順次ジェスチャ。これらを「動画」ジェスチャと呼ぶ。
ｅ．操作者が空間内の形状を追跡する「書記素」ジェスチャ(grapheme gesture)。
【０１０６】
２）所与のアプリケーション・コンテキストに関連があるものの上で、各カテゴリから特定のジェスチャを登録するプログラム技法。
３）登録されているジェスチャを識別することができ、これらのジェスチャをカプセル化するイベントを関連するアプリケーション・コンテキストに配信することができるように、ジェスチャの流れを解析するアルゴリズム。
【０１０７】
指定システム（１）は、構成エレメント（１ａ）から（１ｆ）と共に、本明細書に記載するシステムのジェスチャ解析および変換能力を利用するための基礎を提供する。
１本の手の「ポーズ」は、
ｉ）手の指と甲との間の相対的方位、
ｉｉ）少数の離散状態への量子化、
のストリングとして表される。
【０１０８】
相対的接合方位を用いることにより、本明細書に記載するシステムは、手のサイズおよび外形形状が異なることに伴う問題を回避することができる。このシステムでは、「操作者較正」を必要としない。加えて、ポーズをストリングまたは相対的方位の集合体として指定することにより、ポーズ表現を更に別のフィルタおよび指定と組み合わせることによって、一層複雑なジェスチャ指定(specification)を容易に作成することが可能になる。
【０１０９】
ポーズ指定に少数の離散状態を用いることによって、ポーズを簡潔に指定することができ、更に種々の基礎となる追跡技術（例えば、カメラを用いた受動的光学追跡、点灯ドットおよびカメラを用いた能動的光学追跡、電磁場追跡等）を用いて、精度の高いポーズ認識を確実に行うことができる。
【０１１０】
各カテゴリ（１ａ）から（１ｆ）におけるジェスチャは、部分的に（または最小限に）指定することができるので、重大でないデータは無視される。例えば、２本の指の位置が明確であり他の指の位置は重要でないジェスチャは、２本の関連のある指の動作位置が与えられ、同じストリング内において、「ワイルド・カード」または包括的「無視」インディケータが他の指に対して掲示されている１つの指定によって表すことができる。
【０１１１】
本明細書において記載するジェスチャ認識のための改革の全ては、限定ではなく、多層指定技法、相対的方位の使用、データの量子化、および各レベルにおける部分的または最小指定の許容を含み、手のジェスチャの指定を超えて、他の身体部分や「製造した」ツールおよびオブジェクトを用いたジェスチャの指定に一般化する。
【０１１２】
「ジェスチャを登録する」プログラム技法（２）は、どのジェスチャをエンジンが実行システムの他の部分に入手可能にすべきか定めることをプログラマに可能にする、定められた１組のアプリケーション・プログラミング・インターフェース・コールによって構成されている。
【０１１３】
これらのＡＰＩルーチンは、アプリケーション設定時に用いることができ、実行アプリケーションの寿命の間用いることができる静止インターフェース定義を作成する。また、これらは、実行中にも用いることができ、インターフェース特性を動作中に変更することができる。このリアル・タイムでのインターフェース変更により、
ｉ）複雑なコンテキストおよび条件付き制御状態を構築すること、
ｉｉ）動的にヒステリシスを制御環境に追加すること、および
ｉｉｉ）ユーザが実行システム自体のインターフェース・ボキャブラリを変更または拡張することができるアプリケーションを作成すること、
が可能となる。
【０１１４】
ジェスチャの流れを解析するアルゴリズム（３）は、（１）におけるように指定され（２）におけるように登録されたジェスチャを、入来する低レベルのジェスチャ・データと比較する。登録されているジェスチャに対する一致が認識された場合、一致したジェスチャを表すイベント・データが積層され実行アプリケーションに配信される。
【０１１５】
このシステムの設計においては、効率的なリアル・タイムでの照合が望まれ、指定されたジェスチャは、できるだけ素早く処理される可能性のツリーとして扱われる。
加えて、指定されたジェスチャを認識するために内部で使用されている原始的比較演算子は、アプリケーション・プログラマが用いるためにも露出されるので、アプリケーション・コンテキスト内部からでも、より多くの比較（例えば、複雑なジェスチャまたは複合ジェスチャにおける柔軟な状態の検査）を行うことができる。
【０１１６】
認識「ロッキング」セマンティクス(recognition locking semantics)は、本明細書に記載するシステムの改革の１つである。これらのセマンティクスは、登録ＡＰＩ（２）（および、より狭い範囲で、指定ボキャブラリ（１）内に埋め込まれる）によって暗示される(imply)。登録ＡＰＩコールは、
ｉ）「エントリ」状態通知部および「連続」状態通知部、ならびに
ｉｉ）ジェスチャ優先度指定部
を含む。
【０１１７】
ジェスチャが認識されている場合、その「連続」状態は、同じまたは低い優先度のジェスチャの全ての「エントリ」状態よりも優先される。このエントリ状態と連続状態との間の区別は、認められるシステム使用可能性に大きくプラスになる。
【０１１８】
本明細書において記載するシステムは、実世界のデータ・エラーおよび不確実性をものともせずに、ロバストな動作のためのアルゴリズムを含む。低レベル追跡システムからのデータは不完全である場合もある（光学追跡におけるマーカの遮蔽、ネットワーク・ドロップアウト、処理の遅れ等を含む、種々の理由による）。
【０１１９】
欠損データは、解析システムによって印が付けられ、その欠損データの量およびコンテキストに応じて、「最後に分かっていた」状態または「最もあり得る」状態のいずれかに組み込まれる。
【０１２０】
特定のジェスチャ・コンポーネント（例えば、特定の関節の方位）についての状態が見つからないが、その特定のコンポーネントの「最後に分かっていた」状態を、物理的に可能であると分析することができる場合、本システムはこの最後に分かっていた状態をそのリアル・タイム照合において用いる。
【０１２１】
逆に、最後に分かっていた状態が、物理的に不可能であると分析された場合、本システムはそのコンポーネントにとって「最良のジェスチャ範囲」に後退し、この合成データをそのリアル・タイム照合において用いる。
【０１２２】
本明細書において記載する指定および解析システムは、「利き手不可知論」をサポートするように注意深く設計されているので、多数の手のジェスチャについて、いずれの手でもポーズの要件を満たすことができる。
拡張被写体深度において抽出した三次元情報を用いるジェスチャ・ベース制御
図２０は、一実施形態の下において、拡張被写体深度において三次元情報を抽出する撮像システムを含むジェスチャ・ベース制御システム２０００のブロック図である。ユーザは、彼の手１０１および１０２をカメラ２００４Ａ〜２００４Ｄのアレイの視野に置く。アレイ２００４Ａ〜２００４Ｄの内少なくとも２台のカメラが、波頭コーディング・カメラとなり、その各々は、以下で詳細に説明するように、波頭コーディングマスク（ここでは、「光学非球面エレメント」または「光学エレメント」とも呼ぶ）を含む波頭コーディング撮像システムのエレメントを備えている。ユーザの手および／または指は、先に述べたマーカ・タグを含んでいてもいなくてもよい。
【０１２３】
カメラ２００４Ａ〜２００４Ｄは、指ならびに手１０１および１０２の位置、方位、移動を含む、指ならびに手１０１および１０２の画像を検出するまたは取り込み、出力信号をプリプロセッサ２００５に発生する。プリプロセッサ２００５は、以下で説明する波頭コーディングディジタル信号処理２００８を含むこと、またはこれに結合することができる。あるいは、波頭コーディングディジタル信号処理は、システム２０００の１つ以上の他のコンポーネントに含めること、結合すること、これらの間で分散することもできる。波頭コーディングディジタル信号処理２００８は、撮像システムの被写体深度を大きく拡大するように構成されている。
【０１２４】
プリプロセッサ２００５は、カメラ出力をジェスチャ信号に変換し、このジェスチャ信号をシステムのコンピュータ演算装置２００７に供給する。このようにする際に、プリプロセッサ２００５は三次元空間点再現および骨格点ラベリングを発生する。ジェスチャ変換器２００６は、３Ｄ空間情報およびマーカ・モーション情報をコマンド言語に変換し、このコマンド言語は、コンピュータ・プロセッサによって、ディスプレイ上の位置、形状、および動作を更新するために解釈することができる。コンピュータ２００７は、この入力情報を用いて、１つ以上の画面上カーソルを制御するコマンドを発生し、ビデオ出力をディスプレイ２００３に供給する。
【０１２５】
代替実施形態のプリプロセッサ２００５、ジェスチャ変換器２００６、およびコンピュータ２００７の内１つ以上を組み合わせて１つのデバイスにすることができる。システム構成には関係なく、プリプロセッサ２００５、ジェスチャ変換器２００６、およびコンピュータ２００７の各々の機能および／または有用性(functionality)は、そして本明細書の他のところに記載されている通りである。
【０１２６】
更に、この例は、ユーザの手１０１および１０２の位置、方位、および移動を検出するために用いられる４台のカメラを示すが、本実施形態はそのように限定されるのではない。このシステム構成は、システムまたはワークステーションの構成に合わせて適宜２台以上のカメラを含むことができる。加えて、実施形態例ではカメラは対称的に配置されているが、このような対称性の要件はない。つまり、ユーザの手の位置、方位、および移動を可能にするのであればどのような位置付けでも、少なくとも２台のカメラを以後用いればよい。
【０１２７】
本システムでは、一人のユーザの手を入力として示すが、本システムは、いずれの数の多数のユーザの手でも追跡することができる。加えて、手の代わりにまたは手に加えて、本システムは、頭部、足、脚部、腕、肘、膝等を含む、ユーザの身体であればいずれの１つまたは複数の部分でも追跡することができる。更に、本システムはいずれの数の生物オブジェクト(object)または非生物オブジェクトでも追跡することができ、身体の部分の追跡に限定されるのではない。
【０１２８】
特に、操作者の手（または同等に追跡される器具）に故意にまたは潜在的に近接するように光センサを配置するジェスチャ分析システムでは、このように理解されるエレメントは、通例、操作者の運動の自然なシーケンス全体にわたって、相対的距離規模(distance magnitude)の数桁(order）または多数桁の範囲を取る。このような距離の範囲を横断するイベントを一貫して焦点を解明して記録することは、従前の光学撮像システムの容量を超えている。しかしながら、これらの中距離幾何学(medium-distance geometries)は、巨視的デバイスおよび製品の設計に限って言えば、オブジェクトまたは操作者追跡のコンテキストでは望ましいことが多い。つまり、予期される操作者の活動範囲において局所的なコントラストまたは突出する特徴の安定性を確保する技法（従前の光学素子は、その目的には適していない）を提供することには価値がある。
【０１２９】
本明細書におけるシステムにおいて用いられるような拡張被写体深度における三次元情報の抽出を記載する際、ある場面における１点までの距離は、同時に取り込んだ２つ以上の画像におけるその位置から推定することができる。この点の三次元（３Ｄ）位置は、撮像装置間の３Ｄ関係が分かっていれば、基本的幾何学的関係から計算することができる。ステレオ相関またはステレオ深度計算と呼ばれることが多い、多数の画像から空間的位置を計算する際の課題は、１つの画像における地点のマッピングを他方の画像におけるそのマッピングと自動的かつ高精度に関連付けることである。これは、殆どの場合、１つの画像から１つ以上の他の画像に画像の特徴を相関付けることによって行われている。しかしながら、全てのステレオ照合方法における基礎的な前提は、画像内に何らかの識別可能な局所的コントラストまたは特徴があって、その地点を別の画像におけるその位置に一致させられなければならないということである。したがって、焦点ずれ(misfocus)のために画像に何の局所的コントラストや特徴もない場合に問題が生ずる。ステレオ照合は、焦点が合っていない画像の領域においては高精度の結果が得られない。
【０１３０】
画像の被写体深度を拡張する従来の手段は、カメラのレンズの瞳の直径を縮小することであった（「ストッピング・ダウン」(stopping down)）。しかしながら、２つの副作用によって、この技法の有用性が損なわれる。第１に、撮像システムの感度が、瞳直径率の二乗分の１に低下する。第２に、最大空間周波数応答が、瞳直径率分の１に低下し、画像における分解能およびコントラストに制限が生ずる。つまり、従来の撮像システムでは、被写体深度、露出時間、および全体的なコントラストの間にはトレードオフがある。多重カメラ測距システムの場合、正味の影響は、立体深度精度(stereoscopic depth accuracy)と作業範囲との間における妥協となる。
【０１３１】
レンズを停止させずに被写体深度を増大させる代わりの手法は、カメラ・レンズの瞳に、指定した処方の位相マスク(phase mask)を導入することである。適正に選択した位相関数によって、センサ上で取り込んだ画像の後続の電子処理によって、拡張した被写体深度を再現することができる。この技法は、波頭コーディングとして知られており、一般に、被写体深度、カメラのダイナミック・レンジ、および信号対ノイズ比の間のトレードオフを提供する。波頭コーディングは、特定の用途に合わせてカメラのパラメータを最適化することを可能にする。非常に高いダイナミック・レンジを必要とせず、本明細書において記載するジェスチャ認識のように、照明がユーザ制御下にある用途であれば、波頭コーディングから利益を得て、規定の立体空間において高精度を達成することができる。
【０１３２】
前述のように、一実施形態のシステムは、複数の波頭コーディング・カメラからの出力を処理し、これらを用いて場面内部にて選択したオブジェクトの距離および位置を決定する。波頭コーディングによって得られる拡張被写体深度は、ジェスチャ認識、およびその他の多種多様なタスク主体撮像作業多数の用途において用いることができ、その性能を大幅に向上させることができる。最少で２つのカメラが必要になるが、本実施形態において用いることができるカメラ数に上限はない。場面抽出は、２つ以上のカメラによる距離抽出に用いられる複数の処理技法（相関のような）の内いずれでも含むことができる。本明細書において記載する実施形態は、全ての波頭コーディング位相関数、処理後に拡張被写体深度が得られる、それらの対応するデコーディング・カーネルを含む。
【０１３３】
波頭コーディング撮像システムにおいて用いるような波頭コーディングは、一般化した非球面光学素子およびディジタル信号処理を用いて、撮像システムの性能を大幅に向上させる、および／またはコストを低減することができる一般的な技法である。採用する非球面光学素子の形式によって、焦点ずれに関する収差に非常に不感応な光学撮像特性が得られる。光学素子からは鋭く明確な画像が直接得られないが、サンプリングした画像にディジタル信号処理を適用すると、鋭く明確な最終画像が得られる。この画像も焦点ずれに関する収差には不感応である。
【０１３４】
波頭コーディングは、撮像性能を大幅に向上させつつ、撮像システムのサイズ、重量、およびコストを低減するために用いられる。波頭コーディングは、非回転対称非球面光学エレメントおよびディジタル信号処理を基本的な態様で組み合わせて、撮像システムの被写体深度を大幅に拡張する。波頭コーディングを用いると、撮像システムの被写体深度または焦点深度は、例えば、所与のアパーチャ・サイズ即ちＦ／＃に対して、従来の撮像システムと比較して１０倍以上増大させることができる。一実施形態の波頭コーディング光学エレメントは、位相面であり、したがって光を吸収せず、露出または照明要件が高くなることもない。このような拡張被写体深度の挙動(performance)は、ストップ・ダウン・アパーチャによって必然的に発生するような、光学パワーの劇的な損失なしでは従前の撮像技法では不可能である。また、被写体深度／焦点深度の増大によって、撮像システムは、レンズ・エレメントを追加するかまたはレンズの複雑度を高めることによってこれまで制御していた焦点ずれに関する収差を制御することによって、物理的に安価となり、小型化、または軽量化が可能となる。波頭コーディングによって制御することができる焦点ずれに関する収差には、色収差、ペッツヴァル湾曲、非点主査、球面収差、および温度に関する焦点ずれが含まれる。
【０１３５】
波頭コーディングは、混成撮像手法として、光学素子および電子素子を組み合わせて、被写体深度を増大させ、光学エレメントの数、製造許容度、および全体的なシステム・コストを低減する。図２１は、一実施形態の下において、ジェスチャ・ベース制御システムに用いられる波頭コーディング撮像システム２１００のブロック図である。波頭コーディング撮像システム２１００の光学セクション２１０１は、従来の光学システムまたはカメラであり、アパーチャ・ストップの近くに波頭コーディング光学エレメント２１０２を配置することによって変更されている。コーディング光学エレメントを追加することによって、焦点ずれに不感応な、特殊化された明確なぼけまたは点拡散機能を有する画像が得られる。サンプリングされた画像にディジタル処理２１０３を適用することによって、焦点ずれの影響に非常に不感応な鮮明で明確な画像２１０４が得られる。
【０１３６】
図２２は、一実施形態の下において、２つの波頭コーディング・カメラを含む波頭コーディング撮像システムを用いて、拡張被写体深度において三次元情報を抽出するジェスチャ・ベース制御システム２２００のブロック図である。システム２２００は、先に図２１を参照して述べたように、少なくとも２台の波頭コーディング・カメラ２２０１および２２０２を含む。プロセッサが、波頭コーディング・カメラ２２０１および２２０２の出力を受けるように、そしてカメラ出力に対してデータ処理を実行するように結合されている。データ処理は、ディコンボリューション２２２０および距離抽出２２３０、その他を含み、拡張焦点範囲マップ２２４０を発生する。
【０１３７】
波頭コーディング・システム２２００では、このシステムの光学部分（例えば、波頭コーディング・カメラ２２０１および２２０２）が、得られた画像を「コーディング」して中間画像２２１０を生成する。波頭コーディング・エレメント（例えば、図２１のエレメント２１０２）は、いずれの画像においても全ての点をわざとぼかすので、中間画像２２１０は焦点ずれのように見える。このような中間画像２２１０において、被写体深度内にあるほぼ全てのオブジェクトがぼやけているが、これらは同一にぼやけている。対照的に、従前の光学素子は、通例、場面における各オブジェクトまでの距離に依存する可変ぼけ関数を有する画像を形成する。
【０１３８】
中間波頭コーディング画像２２１０から鮮明で明確な画像を生成するために、電子素子（例えば、波頭コーディングディジタル信号処理）を用いて、システム依存画像ぼけを除去することによって、ぼけた中間画像を処理即ち「デコード」する（２２２０および２２３０）。ソフトウェアまたは特殊化したハードウェア解決策によって、リアル・タイムでディジタル・フィルタリングを実行することができる。
【０１３９】
一実施形態のシステム光学素子は、従来のコンポーネントを含み、図２１を参照して先に説明したように、波頭コーディング機能を実行する少なくとも１つの追加光学エレメントがある。このエレメントは、けられを最少に抑えるために、光路内に、通例システムのアパーチャ・ストップの近くに置かれる。検出した画像に対して実行する信号処理は、光学素子、波頭コーディング・エレメント、およびディジタル検出器の一次特性によって異なる。
【０１４０】
一般的な波頭コーディング・エレメントは、非回転対称で滑らかであるが、屈折面を用いることもできる。このエレメントは、別個のコンポーネントとすることができ、または一般化した非球面の追加によって、従前のレンズ・エレメント上に一体化することもできる。全てのコーディング・エレメントは、軸上光線を除いて、従前の幾何学的焦点に向かって進行する光がなくなるように、光の方向を変える。実際、光軸に沿って２本の光線が同じ点に向かって進行することはない。本システムは、いずれの画像面においても明確な画像を形成しない。
【０１４１】
波頭コーディング撮像システムの光学部分の主な効果は、脱焦、球面収差、非点収差、または場の湾曲というような、焦点に関する収差に対して、得られる画像を不感応にすることである。中間のぼやけた画像は、脱焦収差を構成するオブジェクトまたは撮像システムの変化に対して不感応または不変である。システム分析の視点からは、波頭コーディング・システムの変調伝達関数（ＭＴＦ）および点拡散関数（ＰＳＦ）は、脱焦に対して不変である。
【０１４２】
波頭コーディング・システムからの中間画像のＭＴＦが脱焦に対して殆ど変化を示さないが、このようなＭＴＦは、焦点を合わせる(in-focus)従前のシステムと比較すると、パワーを低減させている。アポディゼーションを用いないので、全光学パワーが保存される。明確な画像を形成するために、ディジタル・フィルタリングまたは画像再生プロセスを用いる。これらの最終的ＭＴＦは、脱焦に対して非常に不感応である。つまり、本波頭コーディング撮像システムは、非常に大きな被写体深度を有することになる。同様に、波頭コーディング・システムからの中間ＰＳＦは、従前のシステムのＰＳＦとは異なるが、これらは焦点ずれの変化に対して殆ど変化しない。
【０１４３】
再度図２１を参照すると、特殊目的の光学非球面エレメントが、従来の撮像システムのアパーチャ・ストップまたはその近くに置かれて、波頭コーディング撮像システムを形成する。この光学エレメントは、得られるＰＳＦおよび光学伝達関数（ＯＴＦ）がある範囲の焦点ずれおよび焦点ずれに関する収差に不感応となるように、撮像システムを変更する。しかしながら、ＰＳＦおよびＯＴＦは、高品質の合焦撮像システム(in-focus imaging system)によって得られるものとは同一ではない。撮像システムを焦点ずれ収差に不感応にするプロセスにより、特殊化された明確なぼけのある画像が得られ、このぼけは、波頭コーディングディジタル信号処理によって除去される。
【０１４４】
従来の撮像システムからのＰＳＦは、例えば、焦点ずれによって劇的に変化するが、一方波頭コーディング撮像システムからのＰＳＦは、焦点ずれに対して目に付く変化を殆ど何も示さない。焦点ずれのある従前の撮像システムに適用して焦点ずれのぼけを除去するディジタル処理は、画像の異なる区域にある焦点ずれの量に応じた処理を用いる。多くの状況において、焦点ずれの量は未知であり、計算するのは困難である。加えて、焦点ずれのある従前の撮像システムのＭＴＦは、ゼロまたはヌルを含む可能性が高く、このためにディジタル処理の難しさが増大する。対照的に、波頭コーディング・システムからの焦点ずれのあるＰＳＦの一定の性質は、ディジタル処理の焦点ずれに対する依存性を解消するために必要なものである。電荷結合デバイス（ＣＣＤ）または最近の金属酸化物半導体（ＣＭＯＳ）−検出画像に適用されるディジタル処理は、焦点ずれや実際に撮像される場面には依存しない。加えて、波頭コーディング撮像システムのＭＴＦは、合焦および脱焦双方とも、ゼロまたはヌルを含まず、高品質の最終画像を可能にする。
【０１４５】
被写体深度を拡張するための波頭コーディングは、従前の方法（即ち、アパーチャのストップ・ダウン）が一般に受け入れられない撮像用途に、価値をつけ加えることができる。照明レベル、露出時間、または空間分解能に対する制約によって、以前の光学方法の用途が狭められることが多い。波頭コーディングを用いることによって、露出時間を犠牲にしたり、大量の照明を必要とすることなく、焦点ずれに関する問題を低減することができる用途がある。
【０１４６】
波頭コーディング撮像システムは、前述のように、従来とは異なる光学設計、および得られた画像のディジタル信号処理を備えている。用いられる信号処理は、特定の光学システムによって異なる。波頭コーディング光学素子は、用いられる信号処理の種類および量によって異なる。光学素子および信号処理は密接に結合されているので、設計においてシステムの光学コンポーネントおよびディジタル・コンポーネントが合体して最適化されれば、システムから最高の性能を期待するのは当然である。光学コンポーネントは、焦点ずれの影響に対する光学素子の変化または感度を最少に抑え、効率的な信号処理を可能にするように構成されている。ディジタル・コンポーネントは、アルゴリズムの複雑さ、処理時間、および画像ノイズに対するディジタル処理の影響を最少に抑えるように設計されている。
【０１４７】
図２３は、一実施形態の下において、拡張被写体深度から抽出した三次元情報を用いるジェスチャ・ベース制御のフロー図である。一実施形態のジェスチャ・ベース制御は、撮像システムによって本体を撮像すること２３０２を含む。撮像２３０２は、本体の波頭コーディング画像を発生することを含む。一実施形態のジェスチャ・ベース制御は、本体のジェスチャを自動的に検出すること２３０４を含む。ジェスチャは、本体の瞬時的状態を含む。検出２３０４は、１時点においてジェスチャのジェスチャ・データを集計することを含む。ジェスチャ・データは、撮像システムの被写体深度内における本体の焦点解明データを備えている。一実施形態のジェスチャ・ベース制御は、ジェスチャをジェスチャ信号に変換すること２３０６を含む。一実施形態のジェスチャ・ベース制御は、ジェスチャ信号に応答して、コンピュータに結合されているコンポーネントを制御すること２３０８を含む。
【０１４８】
一実施形態の波頭コーディングのための基本ルーチンは、典型的な球面および非球面ならびに一般の波頭コーディング表面形態を透して光線を追跡する光線追跡プログラムを含むことができる。光線追跡プログラムは、射出瞳(exit pupil)を計算し、所与の１組の光学およびディジタル・メリット関数またはオペランドを最適化するために用いられる。図２４は、一実施形態の下において、ジェスチャ・ベース制御システムにおいて用いられる波頭コーディング設計プロセス２４００のブロック図である。この設計の出力は、限定ではなく、以下のように、従前の光学表面、材料、厚さ、および間隔、波頭コーディング表面のパラメータ、ならびにディジタル・フィルタ係数を含む。
【０１４９】
これより、一般的な光学／ディジタル設計ループについて説明する。光線追跡プログラム２４０２は、光学表面を通過する光線を追跡して、射出瞳の光路差（ＯＰＤ）２４０４を計算し、所与の１組の光学およびディジタル・メリット関数またはオペランドを最適化する。光線追跡プログラム２４０２への入力には、光学表面、厚さ、および動作条件（波長、視野、温度範囲、サンプル・オブジェクト画像等）その他が含まれる。ＯＴＦを計算または発生し（２４０６）、検出器の幾何学的形状に関する画素ＯＴＦを追加する（２４０８）。サンプリングされたＯＴＦおよびＰＳＦを計算する（２４１０）。サンプリングしたＰＳＦに基づいて、選択した処理アルゴリズムに合ったディジタル・フィルタ係数を発生する（２４１２）。処理は継続し、温度変化、エリアシング等による、サンプリングしたＰＳＦおよびＭＴＦの焦点を通過する際の視野角や色の変化を最小に抑えることに基づく、フィルタの評価点数（例えば、波頭コーディングオペランド）、処理量、処理形態、処理に関する画像ノイズ、ディジタル・フィルタ・ノイズ利得等のようなディジタル処理パラメータを形成する。最適化ルーチンによって波頭コーディングオペランドを従前の光学オペランド（サイデル波頭収差、ＲＭＳ波頭誤差等）と組み合わせて、光学表面を変更する。動作は、従前の光線追跡による射出瞳光路差（ＯＰＤ）の発生（２４０２）に戻る。
【０１５０】
理論的に計算した波頭コーディング表面形態は、光学最適化の開始点として用いられる。矩形に分離可能な表面形態の１つの一般的なファミリーが、正規化座標において次のように示される。
【０１５１】
【数１】
0005806615.tif 000002
【０１５２】
指数パラメータαは、焦点ずれの範囲におけるＭＴＦの高さを制御し、パラメータβは、焦点ずれに対する感度を制御する。一般に、パラメータβを増大させると、焦点ずれに対する感度は低下し、一方ＭＴＦの高さが減少し、結果的に得られるＰＳＦの長さは増大する。
【０１５３】
中間画像を再生し最終画像を生成するために用いられるフィルタリング・プロセスは、計算上の負担を強いる可能性がある。画像再生に必要とされるフィルタ・カーネルのサイズは、光学システムおよびコーディングプロセスによって導入される被写体深度の拡張(enhancement)に応じて、７０×７０係数程にもなる場合がある。一般に、被写体深度の拡張が大きい程、フィルタ・カーネルも大きくなり、ノイズによる不利益またはノイズ利得も大きくなる。更に、画像における角画素が波頭コーディングによってぼやけるので、角画素をフィルタリングする必要がある。つまり、大きな画像程、小さな画像よりも多くの計算が必要となる可能性がある。画素が数千万に近い画像サイズでは、実用的で経済的なシステムのために、効率的な計算解決策が用いられる。矩形に分離可能なフィルタ近似のような計算の実施態様が、カーネルの寸法を縮小するのに役立つことができる。例えば、用いられる波頭コーディング・エレメントは、次のように記述される、矩形に分離可能な立方体位相形態を有することができる。
【０１５４】
【数２】
0005806615.tif 000003
ぼけを除去するためにぼやけた画像をフィルタリングすると、空間周波数として増幅および位相ずれが必ず生ずる。この増幅は、最終画像において信号だけでなくノイズも増大させる。非常に大きな被写体深度の拡張では、例えば、１０倍以上では、波頭コーディング・システムにおけるノイズ利得は、４倍または５倍になる可能性がある。２から４倍のもっと穏やかな被写体深度拡張では、ノイズ利得は２倍以下であるのが通例である。
【０１５５】
相関付けられていないガウス・ノイズ（殆どの画像にとって正しい仮定）については、ノイズ利得はフィルタ係数のＲＭＳ値となる。適した小さなノイズ−利得値が得られない程に大きな被写体深度拡張を有するシステムでは、ディジタル・フィルタの分解能または空間帯域幅を減少させると、ノイズ利得を低減することができる。また、最終画像におけるコントラストを低下させても、ノイズ増大の全体的な影響を低減することができる。特殊化した非線形フィルタが、波頭コーディング画像においてノイズを除去するための最良の解決策である。
【０１５６】
一実施形態においてＭＴＦおよびＰＳＦを形成するために用いられる波頭コーディング光学エレメントは矩形に分離可能であるので、用いられる信号処理も矩形に分離可能であることができる。矩形に分離可能な処理は、必要な計算数を１桁以上減少させることができる。ディジタル・フィルタリングは空間畳み込みによって実行されるという事実により、一実施形態の計算方法は、フィルタ係数によってデータを倍率調整するための一連の乗算と、倍率調整した全てのデータ値を一緒にカーネル全体に跨って加算するための加算とを備えている。このような計算の基礎的単位は、多重蓄積演算(multiply-accumulate operation)である。大きな被写体深度増大に対する典型的な２−Ｄ波頭コーディング・フィルタ・カーネルは、３０×３０係数となることもある。このフィルタの矩形分離可能バージョンは、３０係数長の行フィルタと、３０係数高の列フィルタとを含み、合計６０の係数を含む。波頭コーディング・エレメントは設計上矩形に分離可能とすることができるが、これらはそのように限定されるのではなく、大きく常軌を逸したシステムは分離不可能なフィルタリングを用いてもよい。
【０１５７】
光学撮像技法を電子フィルタリングと組み合わせることによって、波頭コーディング技術は、広範囲の撮像システムの性能を向上させることができる。高性能撮像システムにおける性能利得(performance gain)は、光集合または空間分解能を犠牲にすることなく、非常に大きな被写体深度を含むことができる。低コストの撮像システムにおける性能利得は、従前に必要としたよりも少ない物理的コンポーネントによる、高い画像品質を含むことができる。
仮想／ディスプレイおよび物理空間の一致
前述のように、一実施形態のＳＯＥは、三空間入力を検出し、表現し、解釈するシステムおよび方法を含む。ＳＯＥのコンテキストでは、システムの実施形態は、複数の空間追跡データ源からの低レベル・データを処理し、これら意味的に相関がない空間時間データを分析し、１組の動的に構成設定可能な暗示的および明示的ジェスチャ記述にしたがって、高レベルのジェスチャ・イベントを発生する。生成されるイベントは、インタラクティブ・システムによる消費に適しており、実施形態は、これらのコンシューマ(consumer)へのイベント分散を制御および実行する１つ以上のメカニズムを設ける。更に、実施形態は、そのイベントのコンシューマに、任意の参照空間および意味フレーム間でジェスチャ・イベントを変換する装置を提供する。
【０１５８】
本システムは、１つ以上のディスプレイ・デバイス（「画面」）上に描かれた仮想空間を、当該システムの一人または複数の操作者によって占められる物理空間と一致するものとして扱う環境を提供することができる。このような環境の一実施形態についてここで説明する。この現実施形態は、固定位置に３つのプロジェクタ駆動画面を含み、１つのデスクトップ・コンピュータによって駆動され、本明細書に記載したジェスチャ・ボキャブラリおよびインターフェース・システムを用いて制御される。しかしながら、記載する技法は、いかなる数の画面でもサポートすること、これらの画面は移動可能であってもよいこと（固定ではなく）、画面は多くの独立したコンピュータによって同時に駆動してもよいこと、そしてシステム全体はいずれの入力デバイスまたは技法によっても制御できることを注記しておく。
【０１５９】
本開示において記載するインターフェース・システムは、物理空間における画面の寸法、方位、および位置を決定する手段を有していなければならない。この情報を仮定して、本システムは、これらの画面が配置されている（そして、本システムの操作者が占める）物理空間を、本システム上で実行しているコンピュータ・アプリケーションの仮想空間への投影として動的にマッピングすることができる。この自動マッピングの一部として、本システムは、システムによってホストされているアプリケーションの必要性に応じて、種々の方法で２つの空間の規模、角度、深さ、寸法、およびその他の空間特性も変換する。
【０１６０】
この物理空間と仮想空間との間における連続変換によって、既存のアプリケーション・プラットフォームでは達成が困難である、または既存のプラットフォーム上で実行するアプリケーション毎に１つ１つ実装しなければならない多数のインターフェース技法の一貫性があり普及する使用が可能となる。これらの技法は、（限定ではないが）以下を含む。
【０１６１】
１）「リテラル・ポインティング」(literal pointing)の広く行き渡る自然なインターフェース技法としての使用。ジェスチャ・インターフェース環境において手を用いるか、あるいは物理的ポインティング・ツールまたはデバイスを用いる。
【０１６２】
２）画面の移動または再位置決めに対する自動補償。
３）操作者の位置に応じて変化するグラフィクス・レンダリング。例えば、深度の知覚を高めるためにパララックス・シフトをシミュレーションする。
【０１６３】
４）実世界位置、方位、状態等を考慮に入れた、画面上表示への物理的オブジェクトの含入。例えば、大きく不透明な画面の前に立っている操作者は、アプリケーションのグラフィクスと、画面の背後にある（そして、恐らく移動しているか、または方位を変えている）スケール・モデル(scale model)の真の位置の表現との双方を見ることができる。
【０１６４】
リテラル・ポインティングは、マウスに基づくウィンドーイング・インターフェースや殆どのその他の現在のシステムにおいて用いられている絶対ポインティングとは異なることを注記するのは重要である。これらのシステムでは、操作者は仮想ポインタと物理ポインティング・デバイスとの間の変換を管理することを学習しなければならず、更にこれら２つの間で経験的知識に基づいてマッピングしなければならない。
【０１６５】
対照的に、本開示において記載するシステムでは、アプリケーションまたはユーザの観点のいずれからでも、仮想空間と物理空間との間に差がないので（仮想空間の方が数学的操作がし易いことを除く）、操作者に経験的知識に基づく変換は必要とされない。
【０１６６】
本明細書において記載する実施形態によって提供されるリテラル・ポインティングに最も近い類似性は、接触感応画面（例えば、多くのＡＴＭ機械上で見られる）である。接触感応画面は、画面上の二次元表示空間と画面表面の二次元入力空間との間に１対１のマッピングを規定する。同様に、本明細書において記載するシステムは、１つ以上の画面上に表示される仮想空間と、操作者によって占められる物理空間との間に柔軟なマッピング（１対１のマッピングも可能であるが、その必要性はない）を規定する。この類似性の有益さ(usefulness of the analogy)にも拘わらず、この「マッピング手法」の三次元、任意に大きなアーキテクチャ環境、および多数の画面への拡張は重要である。
【０１６７】
本明細書において記載するコンポーネントに加えて、本システムは、環境の物理空間と各画面上の表示空間との間に連続的なシステム・レベルのマッピング（恐らく回転、平行移動、倍率調整、またはその他の幾何学的変換によって変更される）を実現するアルゴリズムも実装することができる。
【０１６８】
レンダリング・スタックは、計算オブジェクトおよびマッピングを取り込み、仮想空間のグラフィカル表現を出力する。
入力イベント処理スタックは、制御システムからイベント・データを取り込み（現実施形態では、システムおよびマウス入力からのジェスチャ・データおよびポインティング・データの双方）、入力イベントからの空間データを仮想空間における座標にマッピングする。次いで、変換されたイベントは、実行中のアプリケーションに配信される。
【０１６９】
「グルー・レイヤ」は、システムが、ローカル・エリア・ネットワークにある数台のコンピュータに跨って実行するアプリケーションをホストすることを可能にする。
空間連続入力システムの実施形態について説明する。ここでは、以下で詳しく説明するが、このシステムは、サブシステム「スロークス」、「プロテイン」、および「プール」を備えている、「プラズマ」と呼ばれるシステムを含む、ネットワーク系データ表現、移行、および交換を備えている。プールおよびプロテインは、プロセス間でまたはプロセスを跨いで共有すべきデータをカプセル化するために、本明細書において説明する方法およびシステムのコンポーネントである。また、これらのメカニズムは、プロテインおよびプールの他に、スロークス（「スロー」(slaw)の複数形）も含む。一般に、スロークスは、プロセス間交換についての最も低いレベルのデータ定義を規定し、プロテインは、中間レベルの構造を規定し、照会(querying)およびフィルタリングを担い(hook for)、プールは、高レベルの編成およびアクセス・セマンティクスを規定する。スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、スロークスをペイロードとして用いて、データ・カプセル化および輸送方式を規定する。プールは、ローカル・プロセッサ間での、リモートまたは分散プロセス間にあるネットワークを跨いだ、そしてより長期（例えば、ディスク上等における）記憶を通じた、プロセス内におけるプロテインの構造化されているが柔軟な集計、順序付け、フィルタリング、および分散を規定する。
【０１７０】
本明細書に記載する実施形態の構成および実施態様は、様々な構造(construct)を含み、これらが一緒になって多数の能力を可能にする。例えば、本明細書において記載する実施形態は、前述のように大多数のプロセス間における効率的な交換に備えている。また、本明細書において記載する実施形態は、柔軟なデータ「タイピング」(typing)および構造にも備えているので、広範囲にわたる多様な種類のデータおよび使用をサポートする。更に、本明細書において記載する実施形態は、データ交換のための柔軟なメカニズム（例えば、ローカル・メモリ、ディスク、ネットワーク等）を含み、これらは全て実質的に同様のアプリケーション・プログラミング・インターフェース（ＡＰＩ）によって駆動される。更に、本明細書において記載する実施形態は、異なるプログラミング言語で書かれたプロセス間におけるデータ交換を可能にする。加えて、本明細書において記載する実施形態は、データ・キャッシュおよび集計状態の自動的な保守を可能にする。
【０１７１】
図２５は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ表現を含む処理環境のブロック図である。本明細書において紹介する実施形態の主要な構造には、スロークス（「スロー」(slaw)の複数形）、プロテイン、およびプールが含まれる。本明細書において記載する場合、スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、本明細書において詳細に説明するように、データ・カプセル化および輸送方式を規定し、一実施形態のプロテインのペイロードはスロークスを含む。プールは、本明細書において記載する場合、プロテインの構造化されているが柔軟な集計、順序付け、フィルタ処理、および分散を規定する。プールは、プロテインのための、プロセス内部における、ローカル・プロセッサ間での、リモートまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」（例えば、ディスク上）記憶による、データへのアクセスを与える。
【０１７２】
図２６は、一実施形態の下におけるプロテインのブロック図である。プロテインは、長さヘッダ、ディスクリップ(descrip)、およびインジェスト(ingest)を含む。以下で詳細に説明するが、ディスクリップおよびインジェストの各々は、スローまたはスロークスを含む。
【０１７３】
図２７は、一実施形態の下におけるディスクリップのブロック図である。以下で詳細に説明するが、ディスクリップは、オフセット、長さ、およびスロークスを含む。
図２８は、一実施形態の下におけるインジェストのブロック図である。以下で詳細に説明するが、インジェストは、オフセット、長さ、およびスローを含む。
【０１７４】
図２９は、一実施形態の下におけるスローのブロック図である。以下で詳細に説明するが、スローは、タイプ・ヘッダ、およびタイプ特定データを含む。
図３０Ａは、一実施形態の下における、プールの中にあるプロテインのブロック図である。プロテインは、長さヘッダ（「プロテイン長さ」）、ディスクリップ・オフセット、インジェスト・オフセット、ディスクリップ、およびインジェストを含む。ディスクリップは、オフセット、長さ、およびスローを含む。インジェストは、オフセット、長さ、およびスローを含む。
【０１７５】
プロテインは、本明細書において記載する場合、プロセッサ間で共有する、あるいはバスまたはネットワークまたはその他の処理構造を跨いで移動する必要があるデータをカプセル化するメカニズムのことである。一例として、プロテインは、ユーザ・インターフェース・イベントに対応するまたは関連するデータを含むデータの輸送および操作のための改良メカニズムを提供する。具体的には、一実施形態のユーザ・インターフェース・イベントは、先に説明したジェスチャ・インターフェースのそれを含む。更に別の例として、プロテインは、限定ではく、グラフィクス・データまたはイベント、および状態情報等その他多数を含むデータの輸送および操作のための改良メカニズムを提供する。プロテインは、構造化レコード・フォーマット、およびレコードを操作するための１組の関連方法である。本明細書において用いる場合、レコードの操作は、データを構造に入力すること、構造からデータを取り出すこと、およびデータのフォーマットおよび存在を問い合わせることを含む。プロテインは、種々のコンピュータ言語で書かれたコードを通じて用いられるように構成されている。また、プロテインは、本明細書において記載するような、プールの基本的構築ブロックとなるように構成されている。更に、プロテインは、それらが含むデータを不変のまま維持しつつ、プロセッサ間そしてネットワークを跨いで自然に移動できるように構成されている。
【０１７６】
従来のデータ輸送メカニズムとは対照的に、プロテインにはタイプが決められていない。タイプは決められていないが、プロテインは、「タイプ状」機能を実装することに加えて、強力で柔軟性のあるパターン照合装置(facility)を備えている。また、本明細書に記載するように構成されているプロテインは、本質的に多点型でもある（しかし、二点間形態も、多点伝送の部分集合として容易に実現される）。加えて、プロテインはメモリ内、ディスク上、およびワイヤ（ネットワーク）上フォーマット間で異なることがない「ユニバーサル」レコード・フォーマットを定義する（即ち、実行する任意の最適化の種類だけが異なる）。
【０１７７】
図２６および図３０Ａを参照すると、一実施形態のプロテインは、バイトの線形シーケンスである。これらのバイトの中には、ディスクリップ・リストと、１組のキー値対がカプセル化されている。キー値対をインジェストと呼ぶ。ディスクリップ・リストは、綿密(elaborate)であるが効率的にフィルタ可能なプロテイン毎のイベント記述を任意に含む。インジェストは、１組のキー値対(key value pair)を含み、これらがプロテインの実際の内容を構成する。
【０１７８】
プロテインのキー値対との関わり、ならびにネットワークに都合がよい(network-friendly)多点データ相互交換に関する中核的観念の一部は、「タプル」の概念を特別に許可する(priviledge)もっと簡単なシステム（例えば、Linda、Jini）と共有される。プロテインは、タプル指向システムとは様々な面で大きく異なり、その相違には、標準的、最適化可能なパターン照合基盤を設けるためにディスクリップ・リストを用いることが含まれる。また、プロテインがタプル指向システムと異なるのは、種々の記憶および言語構造に適したレコード・フォーマットの厳格な仕様、そしてそのレコード・フォーマットに対する「インターフェース」の色々な特定的な実施態様である。
【０１７９】
プロテインの説明に戻って、プロテインの最初の４バイトまたは８バイトは、プロテインの長さを指定する。一実施形態では、長さは１６バイトの倍数でなければならない。この１６バイトの粒度により、バイト整合およびバス整合効率が現在のハードウェアでも達成可能であることを確保する。本来「４ワード整合」型でないプロテインには、任意のバイトを詰めこんで、その長さが１６バイトの倍数となるようにする。
【０１８０】
プロテインの長さ部分は、次のフォーマットを有する。ビッグ・エンディアン・フォーマット(big-endian format)で長さを指定する３２ビット。その下位４ビットはマクロ・レベルのプロテイン構造特性を示すフラグとして機能する。プロテインの長さが２＾３２バイトよりも大きい場合、その次に来る更に別の３２ビット。
【０１８１】
一実施形態における１６バイト整合条件は、最初の４バイトの最下位ビットがフラグとして利用可能であることを意味する。そして、このため、最下位の３ビット・フラグは、プロテインの長さが最初の４バイトで表現できるのか、または８バイト必要なのかを示し、プロテインがビッグ・エンディアンまたはリトル・エンディアンの内どちらのバイト順序付けを用いるのかを示し、更に、プロテインが標準的構造または非標準的構造のどちらを採用するのかをそれぞれ示すが、プロテインはこのように限定されるのではない。４番目のフラグ・ビットは、今後の使用のために保存されている。
【０１８２】
８バイト長フラグ・ビットがセットされている場合、プロテインの長さを計算するには、次の４バイトを読み取り、これらをビッグ・エンディアン、８バイト整数の上位バイトとして用いる（４バイトは既に読み取られ、下位部分を供給する）。リトル・エンディアン・フラグがセットされている場合、プロテインの中にある全ての二進数値データをリトル・エンディアンとして解釈する（それ以外の場合は、ビッグ・エンディアン）。非標準フラグ・ビットがセットされている場合、プロテインの残りの部分は、以下で説明する標準構造に従わない。
【０１８３】
非標準プロテイン構造については、プロテインおよびプールを用いるシステム・プログラマには、非標準プロテイン・フォーマットを記述しこれに同期するための種々の方法が利用可能であること、そしてこれらの方法は、空間または計算サイクルが制限されているときに有用となることができることを除いて、ここではこれ以上論じない。例えば、一実施形態では、最短のプロテインは１６バイトである。標準フォーマットのプロテインは、実際のペイロード・データをこれらの１６バイトにはめ込むことは全くできない（その一番大きい部分は既に、プロテインのコンポーネント・パーツの位置を記述することが任されている）。しかし、非標準フォーマット・プロテインは、その１６バイトの内１２バイトをデータに用いることができると考えられる。２つのアプリケーションがプロテインを交換すると、これらが発信するいずれの１６バイト長プロテインでも常に１２バイトを含み、これらは、例えば、リアル・タイム・アナログ／ディジタル変換器からの１２個の８ビット・センサ値を表すことを相互に決定することができる。
【０１８４】
長さヘッダの直後には、プロテインの標準構造では、更に２つの可変長整数値が現れる。これらの数値は、それぞれ、ディスクリップ・リストにおける最初のエレメント、および最初のキー値対（インジェスト）に対するオフセットを指定する。これらのオフセットは、本明細書では、それぞれディスクリップ・オフセットおよびインジェスト・オフセットとも呼ぶ。これらの数値の各クアッド(quad)のバイト順序は、プロテイン・エンディアンネス・フラグ・ビット(protein endianness flag bit)によって指定される。各々について、最初の４バイトの最上位ビットは数値が４または８バイト幅のどちらであるかを決定する。最上位ビット（ｍｓｂ）がセットされている場合、最初の４バイトは二重ワード（８バイト）数値の最上位バイトとなる。ここでは、これを「オフセット・フォーム」と呼ぶ。ディスクリップおよび対を指し示す別個のオフセットを用いることにより、ディスクリップおよび対を異なるコード・パスによって扱うことが可能となり、例えば、ディスクリップ・パターン照合およびプロテイン・アセンブリに関する個々の最適化を行うことができるようになる。また、これら２つのオフセットがプロテインの先頭にあるため、様々な有用な最適化に対処できる。
【０１８５】
殆どのプロテインは８バイト長またはポインタを必要とする程大きくないので、一般に長さ（とフラグ）および２つのオフセット数値は、プロテインの最初の３バイトを占めるに過ぎない。多くのハードウェアまたはシステム・アーキテクチャでは、最初のバイトを超えるある数のバイトのフェッチ即ちリードは、「自由」である（例えば、１６バイトは、セル・プロセッサ(Cell processor)の主要バスを介して引き込むには、１バイトと全く同じ数のクロック・サイクルを要する。）
多くの場合、プロテイン内部において実施態様特定またはコンテキスト特定のキャッシング(caching)またはメタデータを許容することは有用である。オフセットの使用により、プロテインの先頭付近に、任意のサイズの「孔(whole)」を作成し、その中にこのようなメタデータを割り込ませることができる。８バイトのメタデータを利用することができる実施態様では、多くのシステム・アーキテクチャ上でこれらのバイトを、長さヘッダをフェッチする毎に１つのプロテインに対して自由に得ることができる。
【０１８６】
ディスクリップ・オフセットは、プロテインの先頭と最初のディスクリップ・エントリとの間のバイト数を指定する。各ディスクリップ・エントリは、次のディスクリップ・エントリまでのオフセット（勿論、オフセット・フォームで）を備えており、その後に可変幅の長さフィールド（これもオフセット・フォーマットで）が続き、更にその後にスローが続く。これ以上ディスクリップがない場合、オフセットは、規則上、０の４バイトとなる。それ以外の場合、オフセットは、当該ディスクリップ・エントリの開始と次との間のバイト数を指定する。長さフィールドは、バイト単位で、スローの長さを指定する。
【０１８７】
殆どのプロテインでは、各ディスクリップは、スロー・ストリング様式でフォーマットしたストリングであり、４バイトの長さ／タイプヘッダを有し、最上位ビットがセットされ、下位３０ビットだけが長さを指定するために用いられ、その後に、ヘッダが指示する数のデータ・バイトが続く。通常通り、長さヘッダはそのエンディアンネスをプロテインから取り込む。バイトは、ＵＴＦ−８キャラクタをエンコードすると仮定する（したがって、キャラクタ数は必ずしもバイト数と同じではないことを注記しておく）。
【０１８８】
インジェスト・オフセットは、プロテインの先頭と最初のインジェスト・エントリとの間のバイト数を指定する。各インジェスト・エントリは、次のインジェスト・エントリまでのオフセット（オフセット・フォームで）を備えており、その後にこの場合も長さフィールドおよびスローが続く。インジェスト・オフセットは、次のディスクリップ・エントリの代わりに次のインジェスト・エントリを指し示すことを除いて、ディスクリップ・オフセットと機能的には同一である。
【０１８９】
殆どのプロテインでは、各インジェストは、スロー・コンス・タイプ(slaw cons type)であり、二値リストを備えている。このリストは通常キー／値対として用いられる。スロー・コンス・レコードは、最上位から２番目のビットがセットされており、下位３０ビットだけが長さを指定するために用いられる４バイトの長さ／タイプ・ヘッダと、４バイトの値（２番目）エレメントの先頭までのオフセットと、前述の４バイトのキー・エレメント長と、キー・エレメントに対するスロー・レコードと、４バイト長の値エレメントと、最後に前述の値エレメントに対するスロー・レコードとを備えている。
【０１９０】
一般に、コンス・キーはスロー・ストリングである。数個のプロテインおよびスロー・コンス長ならびにオフセット・フィールドを跨いでデータを複製することにより、工夫(refinement)および最適化の一層多くの機会が得られる。
【０１９１】
前述のように、類型に分けたデータをプロテイン内部に埋め込むために一実施形態において用いられる構造は、タグ付きのバイト・シーケンス指定および抽象化(abstraction)であり、「スロー」と呼ばれる（複数形は「slawx」となる）。スローは、類型に分けた（恐らくは、集計）データの一片を表すバイトの線形シーケンスであり、プログラミング言語特定ＡＰＩと関連付けられている。ＡＰＩは、スロークスを作成し、修正し、メモリ空間、記憶媒体、およびマシンの間で移動させることができる。スロー・タイプ方式(slaw type scheme)は、拡張可能でできるだけ軽量であり、あらゆるプログラミング言語からでも用いることができる共通基盤となることを意図している。
【０１９２】
効率的な、大規模プロセス間通信メカニズムを構築することの要望が、スロー・コンフィギュレーションの原動力(driver)である。従来のプログラミング言語は、精巧なデータ構造およびタイプ機能を備えており、プロセス特定のメモリ・レイアウトでは申し分なく動作するが、データをプロセッサ間で移動させたり、ディスク上に格納することが必要となると、これらのデータ表現はいつでも決まって分解する。スロー・アーキテクチャは、第１に、プロセス間通信に対する、非常に効率的で、マルチ・プラットフォームに都合がよい低レベル・データ・モデルである。
【０１９３】
しかし、更に一層重要なのは、スロークスが、プロテインと共に、今後の計算機ハードウェア（マイクロプロセッサ、メモリ・コントローラ、ディスク・コントローラ）の開発に影響を及ぼし、それを可能にするように構成されていることである。例えば、広く一般に入手可能なマイクロプロセッサの命令セットに、多少の具体的な追加を行うことにより、スロークスが、殆どのプログラミング言語において用いられている方式と同様に、単一プロセス、メモリ内データ・レイアウトに対しても効率的となることが可能になる。
【０１９４】
各スローは、可変長のタイプ・ヘッダと、その後に続くタイプ特定データ・レイアウトとを備えている。例えば、Ｃ、Ｃ＋＋、およびＲｕｂｙにおけるスロー機能を全てサポートする実施形態の一例では、タイプは、各言語からアクセス可能なシステム・ヘッダ・ファイルにおいて定義されているユニバーサル整数(universal integer)によって示される。更に精巧化し柔軟性を高めたタイプ解明機能(type resolution functionality)、例えば、ユニバーサル・オブジェクトＩＤおよびネットワーク参照による間接的類型決定も可能である。
【０１９５】
一実施形態のスロー・コンフィギュレーションは、スロー・レコードを、例えば、ＲｕｂｙおよびＣ＋＋双方から言語に優しい様式でオブジェクトとして用いることを可能にする。Ｃ＋＋コンパイラ外部の１組のユーティリティが、スロー・バイト・レイアウトの健全性をチェックし、個々のスロー・タイプに特定的なヘッダ・ファイルおよびマクロを作成し、Ｒｕｂｙに対するバインディング(binding)を自動的に発生する。その結果、正しく構成したスロー・タイプは、１つのプロセスの中から用いた場合でも、非常に効率的となる。プロセスのアクセス可能なメモリのいずれの場所におけるいずれのスローでも、コピーや「非直列化」ステップがなくても、アドレスすることができる。
【０１９６】
一実施形態のスロー機能は、以下の内１つ以上を実行するＡＰＩ機能を含む。具体的なタイプの新たなスローを作成する。ディスク上またはメモリ内におけるバイトからのスローへの言語特定参照を作成または構築する。タイプに特定の様式でスロー内にデータを埋め込む。スローのサイズを問い合わせる。スロー内部からデータを引き出す。スローのクローンを作成する。そして、スロー内部にある全てのデータのエンディアンネスおよびその他のフォーマット属性を変換する。スローのあらゆる種(species)が以上の挙動を実施する。
【０１９７】
図３０Ｂは、一実施形態の下におけるスロー・ヘッダーのフォーマットを示す。以下にスローの詳細な説明を行う。
各スローの内部構造は、タイプ解明、カプセル化データへのアクセス、および当該スロー・インスタンスについてのサイズ情報の各々を最適化する。一実施形態では、１組のスロー・タイプ全体は、設計上、最小限の全てが揃っており、スロー・ストリング、スロー・コンス（即ち、ダイアッド(dyad)）、スロー・リスト、およびスロー数値オブジェクトを含む。スロー数値オブジェクト自体は、半ダース程度の基本的な属性の組み合わせ(permutation)として理解される、広範な１組の個別数値タイプを表す。いずれのスローでも、その他の基本的プロパティはそのサイズである。一実施形態では、スロークスは、４の倍数に量子化したバイト長を有し、これらの４バイト・ワードを、ここでは「クアッド」と呼ぶ。一般に、このようなクアッドに基づくサイズ決定により、スロークスを最新のコンピュータ・ハードウェア・アーキテクチャのコンフィギュレーションと正確に整合させる。
【０１９８】
一実施形態では、各スローの最初の４バイトは、ヘッダ構造を備えている。ヘッダ構造は、タイプ記述およびその他のメタ情報をエンコードし、特定的なタイプの意味を特定のビット・パターンに帰属させる(ascribe)。例えば、スロー・ヘッダの最初の（最上位）ビットは、そのスローのサイズ（クアッド・ワード単位の長さ）が最初の４バイトのタイプ・ヘッダに従うか否か指定するために用いることができる。このビットがセットされている場合、スローのサイズが当該スローの次の４バイト（例えば、バイト５から８まで）に明示的に記録されていることが分かる。スローのサイズが、４バイトでは表現できないような場合（即ち、サイズが２の３２乗以上である場合）、スローの最初の４バイトの次の最上位ビットもセットする。これは、スローが８バイト（４バイトではなく）長を有することを意味する。その場合、検査プロセスが、序数バイト(ordinal byte)５から１２までに格納されているスローの長さを発見する。他方で、スロー・タイプの数値が小さいことは、多くの場合、完全に指定した類型ビット・パターンが、４バイトのスロー・ヘッダにおける多くのビットを「未使用のまま残してある」ことを意味し、そのような場合、これらのビットは、スローの長さをエンコードするために用いてもよく、そうしなければ必要となるはずのバイト（５から８まで）を取っておくことができる。
【０１９９】
例えば、一実施形態では、スロー・ヘッダの最上位ビット（「長さ従属」フラグ）をセットしないままにしておき、次のビットをセットして、そのスローが「微小コンス」であることを示し、この場合、スローの長さ（クアッド単位）を残りの３０ビットにエンコードする。同様に、「微小ストリング」は、ヘッダにおけるパターン００１によって印され、スロー・ストリングの長さを表すために、２９ビットが残され、ヘッダにおける最初の０００１が「微小リスト」を記述する。これは、２８ビットの利用可能長表現ビットのために、サイズが２から２８クアッドまでのスロー・リストとすることができる。「最大ストリング」（あるいはコンスまたはリスト）は、ヘッダに異なるビット・シグネーチャを有し、ヘッダの最上位ビットは必ずセットされる。何故なら、スロー長はバイト５から８（または、極端な場合には１２）において別個にエンコードされるからである。尚、プラズマ実施態様は、スローの組立時に、これらの構造の「微小」バージョンまたは「最大」バージョンのどちらを採用すべきか「決定する」（決定は、最終的なサイズが利用可能な微小ビットに「納まるか」否かに基づく）が、最大−対−微小の詳細は、プラズマ実施態様のユーザには隠されている。ユーザは、スロー・ストリング、またはスロー・コンス、またはスロー・リストを用いていることしか知らないし、そのことしか気に留めない。
【０２００】
一実施形態では、数値スロークスは、最初のヘッダ・パターン００００１によって示される。後続のヘッダ・ビットは、任意の順列に組み合わせることができる１組の直交プロパティを表すために用いられる。一実施形態では、数値が（１）浮動小数点、（２）複素数、（３）符号なし、（４）「広い」、（５）「太くて短い」(stumpy)であるか否かを示すために、５つのこのようなキャラクタ・ビットを用いるが、これらに限定されるのではない（（４）「広い」および（５）「太くて短い」の順序を変えて、８、１６、３２、および６４ビット数表現を示す）。２つの追加ビット（例えば、（７）および（８））は、カプセル化した数値データが、２−、３−、または４−エレメント・ベクトルであることを示す（双方のビットが０の場合、数値が「１−エレメント・ベクトル」（即ち、スカラー）であることを示唆する）。この実施形態では、４番目のヘッダ・バイトの８ビットを用いて、カプセル化した数値データのサイズを（クアッド単位ではなく、バイト単位で）エンコードする。このサイズのエンコード処理は、１から２５６までの間のいずれのサイズでも表すことができるように、１だけずらされる。最後に、２つのキャラクタ・ビット（例えば、（９）および（１０））を用いて、数値データが個々の数値エンティティの配列をエンコードすることを示す。数値エンティティの各々は、キャラクタ・ビット（１）から（８）までによって記述されるタイプのものである。アレイの場合、個々の数値エンティティには、各々、追加のヘッダが添付されず、１つのヘッダおよび恐らくは、明示的なスロー・サイズ情報に続く連続データとしてパックされる。  
【０２０１】
この実施形態では、単純かつ効率的なスローの複製（バイト毎のコピーとして実施することができる）、および非常に単純で効率的なスローの比較が可能となる（この実施形態では、連続と見なされる構成バイトの各々に１対１の一致がある場合に限って、２つのスロークスは同一となる）。後者のプロパティは、例えば、プロテイン・アーキテクチャの効率的な実現には重要である。その重要なそして波及する(pervasive)特徴は、プロテインのディスクリップ・リスト全体を検索できること、または「リスト上で照合」できることである。
【０２０２】
更に、本明細書における実施形態は、集計スロー形態（例えば、スロー・コンスおよびスロー・リスト）を簡単かつ効率的に作成することを可能にする。例えば、一実施形態では、スロー・コンスを、いずれのタイプでもよく、これら自体集計を含む、２つの成分スロークスから次のように構築する。（ａ）各成分スローのサイズを問い合わせ、（ｂ）２つの成分スロークスのサイズ、およびヘッダ・プラス・サイズ構造に必要な１、２、または３クアッドの和に等しいサイズのメモリを割り当て、（ｃ）最初の４、８、または１２バイトにスロー・ヘッダ（およびサイズ情報）を記録し、次いで（ｄ）成分スロークスのバイトを順番に、直後に続くメモリにコピーする。重要なのは、このような組立ルーチンは、２つの成分スロークスのタイプについて何も知る必要がなく、それらのサイズ（そして、バイトのシーケンスとしてのアクセス可能性）だけが問題であることである。同じプロセスは、スロー・リストの作成にも関与する。スロー・リストは、（恐らくは）異質なタイプの任意の多くのサブ・スロークス(sub-slawx)の順序付けしたカプセル化である。
【０２０３】
メモリにおける連続バイトとしてのスロー・システムの基本的フォーマットの更に別の成果が、「横断」活動(traversal activities)と関連して得られる。反復使用パターンが、例えば、スロー・リストに格納されている個々のスロークスへの順次アクセスを用いる。プロテイン構造内部におけるディスクリップおよびインジェストを表す個々のスロークスも同様に横断しなければならない。このような操作は、驚く程単純かつ効率的な方法で遂行される。つまり、スロー・リストにおける次のスローに「進み」、現在のスローの長さをそのメモリ位置に追加し、結果的に得られたメモリ位置が、次のスローのヘッダと同一となる。このような簡素さが可能なのは、スローおよびプロテインの設計が「間接」を避けるからである。つまり、ポインタがなく、データは単純にその全体が本来の場所に存在する。
【０２０４】
スロー比較の時点までに、プラズマ・システムの完全な実施態様は、異なるオペレーティング・システム、ＣＰＵ、およびハードウェア・アーキテクチャに跨ってそしてこれらの間において、異なり互換性のないデータ表現方式の存在を承認しなければならない。このような相違の主要なものには、バイト順序付け方針（例えば、リトル−エンディアン対ビッグ−エンディアン）および浮動小数点表現が含まれ、その他の相違も存在する。プラズマ仕様では、スロークスによってカプセル化したデータが解釈可能である(interprable)（即ち、スローを検査している元のアーキテクチャまたはプラットフォームのネーティブ・フォーマットで現れなければならない）。この要件は、一方、プラズマ・システム自体がデータ・フォーマット変換の責任を負うことを意味する。しかしながら、仕様では、スローが、それを検査するかもしれない実行中のプロセスに対して「完全に可視」になる前に変換を行うことしか規定していない。したがって、どの時点でこのようなフォーマットｃ変換を実行するかを選択するのは、個々の実施態様次第となる。２つのしかるべき手法があり、それは、（１）個々のスローがパックされていたプロテインから「引き出す」際に、または（２）プロテインが入っていたプールからそのプロテインを抽出する際に、当該プロテインの中にあるスロー全てについて同時に、スロー・データ・ペイロードをローカル・アーキテクチャのデータ・フォーマットに準拠させることである。尚、変換規定は、ハードウェア補助実施態様の可能性も考慮することを注記しておく。例えば、明示的プラズマ能力によって構築したネットワーキング・チップセットは、受信システムの既知の特性に基づいて、インテリジェントにそして「送信の時点」にフォーマット変換を実行することを選択することができる。あるいは、送信のプロセスがデータ・ペイロードを基軸フォーマットに変換することもでき、受信プロセスは、対称的に基軸フォーマットから「ローカル」フォーマットに変換する。別の実施形態では、「メタル」において(at the metal)フォーマット変換を実行する。これが意味するのは、データは、ローカル・メモリの中であっても、常に基軸フォーマットで格納されており、データをメモリから引き出し隣接するＣＰＵのレジスタに入れるときに、メモリ・コントローラ・ハードウェア自体が変換を実行する。
【０２０５】
一実施形態の最小（そして読み取り専用）プロテインの実施態様は、プロテインを利用する１つ以上のアプリケーションまたはプログラミング言語における動作または挙動を含む。図３０Ｃは、一実施形態の下でプロテインを用いるためのフロー図３０５０である。動作を開始すると、３０５２においてプロテインの長さをバイト単位で問い合わせる。３０５４において、ディスクリップ・エントリの数を問い合わせる。３０５６において、インジェストの数を問い合わせる。３０５８において、インデックス番号によってディスクリップ・エントリを引き出す。３０６０において、インデックス番号によってインジェストを引き出す。
【０２０６】
また、本明細書において記載する実施形態は、プロテインを作成してデータを充填させる基本的な方法、プログラマによって共通のタスクを容易に行えるようにするヘルパ方法、および最適化を遂行するためのフック(hook)も定める。図３０Ｄは、一実施形態の下においてプロテインを作成する、即ち、発生するためのフロー図３０７０である。動作は、３０７２における新たなプロテインの作成から開始する。３０７４において、一連のディスクリップ・エントリを添付する。また、３０７６においてインジェストも添付する。３０７８において、一致するディスクリップの存在を問い合わせ、３０８０において、一致するインジェスト・キーの存在を問い合わせる。インジェスト・キーが得られたなら、３０８２において、インジェスト値を引き出す。３０８４において、ディスクリップ全体でパターン照合を実行する。３０８６において、プロテインの先頭付近に、非構造化メタデータを埋め込む。
【０２０７】
前述のように、スロークスはプロセス間交換のための低レベルのデータ定義を規定し、プロテインは問い合わせおよびフィルタ処理のために中間レベルの構造およびフックを規定し、プールは高レベルの編成およびアクセス・セマンティックスについて規定する。プールは、プロテインのためのレポジトリであり、線形シーケンシング(linear sequencing)および状態キャッシング(state caching)に備えている。また、プールは、多数のプログラムまたは多数の異なる種類のアプリケーションによるマルチ・プロセス・アクセスにも備えている。更に、プールは、１組の共通な、最適化可能なフィルタ処理およびパターン照合挙動にも備えている。
【０２０８】
一実施形態のプールは、数万ものプロテインを収容することができ、状態を維持するように機能することができるので、個々のプロセスはマルチ・プロセス・プログラム・コードに共通する厄介なブックキーピングの多くの負担を軽減することができる。プールは、利用可能な過去のプロテインの大きなバッファを維持または保持し、プラトニック・プール(Platonic pool)は明示的に無限であるので、関与するプロセスは、プールにおいて意のままに逆方向および順方向の双方に走査することができる。バッファのサイズは、実施態様に左右されるが、勿論、慣例的な仕様では、プロテインをプールの中に数時間または数日保持できることが多い。
【０２０９】
本明細書において記載するプール使用の最も慣例的な様式では、既存のプロセス間通信フレームワークが採用する機械論的(mechanistic)二点間手法とは対照的に、生物的比喩に従う。プロテインという名称は、生物的発想を暗示する。生物組織における化学的蛋白質が、多数の細胞因子(cellular agent)によるパターン照合およびフィルタ処理に利用可能であるのと同様に、プールの中にあるデータ・プロテインは、多数の計算プロセスによる柔軟な問い合わせおよびパターン照合に利用可能である。
【０２１０】
２つの付加的な抽象化が生物的比喩に同調し(lean)、「ハンドラ」の使用およびゴルジ・フレームワーク(Golgi framework)を含む。プールに関与するプロセスは、一般に、多数のハンドラを作成する。ハンドラは、比較的小さい１群のコードであり、照合条件をハンドル挙動と関連付ける。１つ以上のハンドラをプールに類別することにより、プロセスは、状態をカプセル化し新たなプロテインに反応する、柔軟なコール・バック・トリガ(call-back trigger)を設定する。
【０２１１】
数個のプールに関与するプロセスは、一般に、抽象的ゴルジ・クラスから継承する。ゴルジ・フレームワークは、多数のプールおよびハンドラを管理するための多くの有用なルーチンを提供する。また、ゴルジ・クラスは、親−子関係もカプセル化し、プールを用いないローカル・プロテイン交換のためのメカニズムを提供する。
【０２１２】
一実施形態の下で提供するプールＡＰＩは、種々の方法でプールを実現し、システム特定の目標、ならびに所与のハードウェアおよびネットワーク・アーキテクチャの利用可能な処理能力双方を考慮に入れるように構成されている。プールが依存する２つの基礎的なシステムの常設機構(provision)は、記憶装置およびプロセス間通信手段である。本明細書において記載する、現存する(extant)システムは、共有メモリ、仮想メモリ、および記憶装置用ディスク、ならびにプロセス間通信のためのＩＰＣクエリおよびＴＣＰ／ＩＰソケットの柔軟な組み合わせを用いる。
【０２１３】
一実施形態のプールの機能には、限定ではなく、以下が含まれる。プールに関与する。プロテインをプールの中に入れる。次の未見プロテインをプールから引き出す。プール内の内容（例えば、プロテイン）を逆回しまたは早送りする。加えて、プールの機能には、限定ではなく、以下も含むことができる。プロセスに対するストリーミング・プール・コール・バックを設定する。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインを選択的に引き出す。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインについて逆方向および順方向に走査する。
【０２１４】
前述のプロテインは、他のアプリケーションとプロテイン・データ・コンテンツを共有する方法として、プールに供給される。図３１は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。この環境例は、前述のようにスロークス、プロテイン、およびプールの使用によりデータを共有する３つのデバイス（例えば、デバイスＸ、デバイスＹ、およびデバイスＺ、ここでは纏めて「デバイス」と呼ぶ）を含む。これらのデバイスの各々は、３つのプール（例えば、プール１、プール２、プール３）に結合されている。プール１は、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン（例えば、プロテインＸ１、プロテインＺ２、プロテインＹ２、プロテインＸ４、プロテインＹ４）を含む（例えば、プロテインＺ２は、デバイスＺによってプール１に転送または提供された等）。プール２は、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン（例えば、プロテインＺ４、プロテインＹ３、プロテインＺ１、プロテインＸ３）を含む（例えば、プロテインＹ３は、デバイスＹによってプール２に転送または提供された等）。プール３は、それぞれのデバイスから当該プールに供給または転送された多数のプロテイン（例えば、プロテインＹ１、プロテインＺ３、プロテインＸ２）を含む（例えば、プロテインＸ２は、デバイスＸによってプール３に転送または提供された等）。前述の例では、３つのプール間に結合または接続されている３つのデバイスが含まれるが、あらゆる数のデバイスを、あらゆる数のプール間に如何様にでもまたはいずれの組み合わせでも結合または接続することができ、いずれのプールも、あらゆる数または組み合わせのデバイスから提供されるあらゆる数のプロテインを含むことができる。この例のプロテインおよびプールについては、図２５から図３０までを参照しながら先に説明した。
【０２１５】
図３２は、多数のデバイスと、これらのデバイスの１つ以上で走る多数のプログラムを含む処理環境のブロック図であり、一実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス（例えば、デバイスＡ、Ｂ等）およびこれらのデバイス上で走る多数のプログラム（例えば、appsAA-AX、appsBA-BX等）を備えている双方向処理システムが、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
【０２１６】
この例では、各デバイス（例えば、デバイスＡ、Ｂ等）は、それぞれのデバイス上で走っているプログラム（例えば、appsAA-AX、appsBA-BX等）が発生したまたは出力された離散生データ(raw data)を、プラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入する。例えば、プログラムＡＸはデータまたは出力を発生し、この出力をデバイスＡに供給する。一方、デバイスＡはこの生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ等）に変換し、これらのプロテインをプールに貯入する。別の例として、プログラムＢＣがデータを発生し、このデータをデバイスＢに供給する。一方、デバイスＢはこのデータをプロテイン（例えば、プロテイン１Ｂ、プロテイン２Ｂ等）に変換し、これらのプロテインをプールに貯入する。
【０２１７】
各プロテインは、アプリケーションが発生し、プログラム自体についての情報を特定するデータまたは出力を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップは出力イベントまたは行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード（例えば、インジェスト）は、プログラム・イベントについての１組の有用な状態情報全体を搬送する。
【０２１８】
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プールにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走っているあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することができる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマ(consumer)を多重化し、デバイスを一人で制御できるように、または数人（例えば、プラズマ・ベースの入力フレームワークは、多くの同時ユーザをサポートする）で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに見えるようになることである。
【０２１９】
一例として、デバイスＣは１つ以上のプロテイン（例えば、プロテイン１Ａ、２Ａ等）をプールから抽出することができる。プロテインの抽出に続いて、デバイスＣは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出したプロテインのデータを、プロテイン・データが対応する処理イベントにおいて用いることができる。別の例として、デバイスＢは、プールから１つ以上のプロテイン（例えば、プロテイン１Ｃ、プロテイン２Ａ等）を抽出することができる。プロテインの抽出に続いて、デバイスＢは、プロテイン・データが対応する処理イベントにおいて、プロテインのデータを用いることができる。
【０２２０】
プールに結合または接続されているデバイスおよび／またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
【０２２１】
図３３は、多数のデバイスと、これらのデバイスの１つ以上で走る多数のプログラムを含む処理環境のブロック図であり、一代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス（例えば、デバイスＡおよびＢにそれぞれ結合されているデバイスＸおよびＹ）および１つ以上のコンピュータ（例えば、デバイスＡ、デバイスＢ等）上で走る多数のプログラム（例えば、appsAA-AX、appsBA-BX等）を備えている双方向処理システムが、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
【０２２２】
この例では、各デバイス（例えば、デバイスＡおよびＢにそれぞれ結合されているデバイスＸおよびＹ）は、デバイス・ハードウェア（例えば、デバイスＸ、デバイスＡ、デバイスＹ、デバイスＢ等）が発生した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス（例えば、デバイスＡ、デバイスＢ等）上にホストされている１つ以上のプログラムの下で、またはこれらと連携して動作するように管理および／または結合されている。例えば、デバイスＡ上にホストされているアプリケーションＡＢと連携して動作するデバイスＸは、生データを発生し、この離散生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ等）に変換し、これらのプロテインをプールに貯入する。別の例として、デバイスＡ上にホストされているアプリケーションＡＴと連携して動作するデバイスＸが、離散生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａなど）に変換し、これらのプロテインをプールに貯入する。更に別の例として、デバイスＣ上にホストされているアプリケーションＣＤと連携して動作するデバイスＺは、生データを発生し、この離散生データをプロテイン（例えば、プロテイン１Ｃ、プロテイン２Ｃ等）に変換し、これらのプロテインをプールに貯入する。
【０２２３】
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード（例えば、インジェスト）は、デバイス・イベントについての１組の有用な状態情報全体を搬送する。
【０２２４】
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プールにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走っているあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することができる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人（例えば、プラズマ・ベースの入力フレームワークは、多くの同時ユーザをサポートする）で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに順に見えるようになることである。
【０２２５】
プールに結合または接続されているデバイスおよび／またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
【０２２６】
図３４は、多数の入力デバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、別の代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、双方向処理システムは、多数の入力デバイス（例えば、入力デバイスＡ、Ｂ、ＢＡ、およびＢＢ等）を備えており、１つ以上のコンピュータ（例えば、デバイスＡ、デバイスＢ等）上で走る多数のプログラム（図示せず）を備えており、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
【０２２７】
この例では、各入力デバイス（例えば、入力デバイスＡ、Ｂ、ＢＡ、およびＢＢ等）は、入力デバイス・ハードウェアが発生した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス（例えば、デバイスＡ、デバイスＢ等）上にホストしたソフトウェア・ドライバ・プログラムによって管理される。例えば、入力デバイスＡは生データを発生し、この生データをデバイスＡに供給する。一方、デバイスＡは離散生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ等）に変換し、これらのプロテインをプールに貯入する。別の例として、入力デバイスＢＢは生データを発生し、この生データをデバイスＢに供給する。一方、デバイスＢは離散生データをプロテイン（例えば、プロテイン１Ｂ、プロテイン３Ｂ等）に変換し、これらのプロテインをプールに貯入する。
【０２２８】
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード（例えば、インジェスト）は、デバイス・イベントについての１組の有用な状態情報全体を搬送する。
【０２２９】
例示のために、ここに、このようなシステムにおける２つの典型的なイベントに対するプロテインを示す。ここでは、プロテインはテキストとして表すが、実際の実施態様では、これらのプロテインの構成部分は、類別されたデータ・バンドル（例えば、スロー）である。g-speak "one finger click" pose（「指１本によるクリック」のポーズ）（関連出願に記載されている）を記述するプロテインは、次の通りである。
【０２３０】
【表１】
0005806615.tif 000004
別の例として、マウスのクリックを記述するプロテインは次の通りである。
【０２３１】
【表２】
0005806615.tif 000005
以上のプロテインの見本のいずれかまたは双方は、そのコードの特定の部分を走らせるホスト・デバイスの関与プログラム(participating program)を生ずる可能性もある。これらのプログラムは、一般的なセマンティック・レベルに関係する場合がある。全ての内最も一般的なのは「point」であり、更に具体的な対は「engage, one」である。また、これらは、正確なデバイス：「one-finger-engage」または正に１つの集計オブジェクト(aggregate object)「hand-id-23」のみによってもっともらしく発生されるイベントを求めている場合もある。
【０２３２】
前述のように、プロテインは、プログラムやデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが用いるために、プールにおいて利用可能である。したがって、あらゆる数のコンピュータ上で走るあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出する。これらのデバイスは、プロテインをプールから抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、入力イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人（例えば、プラズマ・ベースの入力フレームワークは、多くの同時ユーザをサポートする）で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに順に見えるようになることである。
【０２３３】
プロテイン使用の一例として、デバイスＣは１つ以上のプロテイン（例えば、プロテイン１Ｂ等）をプールから抽出することができる。プロテイン抽出に続いて、デバイスＣは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出したプロテインのデータを、当該プロテイン・データが対応する入力デバイスＣＡおよびＣＣの入力イベントを処理する際に用いることができる。別の例として、デバイスＡは、１つ以上のプロテイン（例えば、プロテイン１Ｂ等）をプールから抽出することができる。プロテインの抽出に続いて、デバイスＡは、プロテイン・データが対応する入力デバイスＡの入力イベントを処理する際に、当該プロテインのデータを用いることができる。
【０２３４】
プールに結合または接続されているデバイスおよび／またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
【０２３５】
本明細書において記載するシステムの実施形態に用いられる入力デバイスの例には、ジェスチャ入力センサ、キーボード、マウス、消費者電子機器において用いられるような赤外線リモコン装置、およびタスク指向有体媒体オブジェクト(task-oriented tangible media object)、その他にも数多く含まれる。
【０２３６】
図３５は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする。このシステムは、多数の実行中のプログラム（例えば、グラフィクスＡ〜Ｅ）および１つ以上のディスプレイ・デバイス（図示せず）を備えているシステムの一例に過ぎず、プログラムの一部または全部のグラフィック出力が、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いて、調整しながら他のプログラムにも利用可能とし、実行中のプログラムが、これらのデバイスによって発生したグラフィック・イベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
【０２３７】
コンピュータ・プログラムが、別のプログラムによって発生したグラフィクスを表示することが有用な場合は多い。広く知れ渡っている様々な例には、テレビ会議アプリケーション、ネットワークを用いたスライドショーおよびデモ・プログラム、ならびにウィンドウ・マネージャが含まれる。この構成の下では、プールは、ビデオ、ネットワーク・アプリケーション共有、およびウィンドウ管理をカプセル化したフレームワークを一般化して実施するためにプラズマ・ライブラリとして用いられ、プログラマは、このようなプログラムの現バージョンでは一般には入手できない多数の特徴に追加することが可能になる。
【０２３８】
プラズマ合成環境において走るプログラム（例えば、グラフィクスＡ〜Ｅ）は、プールへの結合および／または接続を通じて、調整プールに関与する。各プログラムは、種々の種類のグラフィック・ソースの可用性を示すために、そのプールにプロテインを貯入する。また、グラフィックスを表示するために利用可能なプログラムも、それらの表示処理能力、セキュリティおよびユーザ・プロファイル、ならびに物理的位置およびネットワーク位置を示すために、プロテインを貯入する。
【０２３９】
また、グラフィクス・データをプールを通じて送信することもでき、あるいは表示プログラムに、他の種類（例えば、ＲＴＳＰストリーム）のネットワーク・リソースを指し示させることもできる。「グラフィクス・データ」という用語は、本明細書において用いる場合、広義の連続体(broad continuum)に沿って存在する種々の異なる表現のことを指し、グラフィクス・データの例には、文字で表現される例（例えば、「画像」、または画素のブロック）、手順的例（例えば、典型的なopenGLパイプラインを下って行くような一連の「描画」指令）、および記述的例（例えば、幾何学的変形、クリッピング、および合成動作によって他のグラフィック構造を組み合わせる命令）が含まれるが、これらに限定されるのではない。
【０２４０】
ローカル・マシン上では、グラフィクス・データは、プラットフォーム特定の表示ドライバ最適化を通じて配信することもできる。プールを通してグラフィクスを送信しない場合でも、多くの場合、周期的な画面キャプチャは、調整プールに格納されるので、より内部(esoteric)のソースに直接アクセスできないクライアントであっても、万一のときのグラフィクス(fall-back graphics)を表示することもできる。
【０２４１】
本明細書において記載するシステムの利点の１つは、殆どのメッセージ伝達フレームワークおよびネットワーク・プロトコルとは異なり、プールがデータの大量のバッファを維持することである。したがって、プログラムはプールの中に逆戻りして、アクセスおよび使用パターン（調整プールの場合）を見たり、以前のグラフィクス・フレーム（グラフィクス・プールの場合）を抽出することができる。
【０２４２】
図３６は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする。このシステムは、多数のデバイス（例えば、デバイスＡ、デバイスＢ等）上に多数の実行プログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）を備えており、一部のプログラムがプールを用いてまたはプールを通じて他のプログラムの内部状態にアクセスするシステムの一例に過ぎない。
【０２４３】
殆どの双方向処理コンピュータ・システムは、多くのプログラムを備えており、これらは、１台のマシンまたは多数のマシン上で互いに一緒に走り、ネットワークを跨いで双方向処理を行う。実行時データが各プロセス内部に隠されアクセスするのが困難なので、マルチ・プログラム・システムは、構成設定、分析、およびデバッグするのが難しい。本明細書において記載する一実施形態の一般化したフレームワークおよびプラズマ構造は、実行中のプログラムがプールを通じてそれらのデータの多くを利用可能にするので、他のプログラムがそれらの状態を検査することができる。このフレームワークによって、従来のデバッガよりも柔軟なデバッギング・ツール、精巧なシステム保守ツール、および１つまたは複数のプログラムが通過した一連の状態を、人の操作者に詳細に分析させるように構成された可視化ハーネスを可能にする。
【０２４４】
図３６を参照すると、このフレームワークにおいて走るプログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）は、プログラムの起動時にプロセス・プールを発生または作成する。このプールは、システム・アルマナックに登録され、セキュリティおよびアクセス制御が適用される。更に特定すると、各デバイス（例えば、デバイスＡ、Ｂ等）が、それぞれのデバイス上で走るプログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）が発生または出力した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールの中に貯入する。例えば、プログラムＰ−Ａは、データまたは出力を発生し、この出力をデバイスＡに供給する。一方、デバイスＡは、この生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ、プロテイン３Ａ等）に変換し、これらのプロテインをプールの中に貯入する。別の例として、プログラムＰ−Ｂはデータを発生し、このデータをデバイスＢに供給する。一方、デバイスＢは、データをプロテイン（例えば、プロテイン１Ｂ〜４Ｂ等）に変換し、これらのプロテインをプールの中に貯入する。
【０２４５】
プログラムの寿命の期間中、十分なアクセス許可を有する別のプログラムがプールに接続し(attach)、プログラムが貯入したプロテインを読み取ることもできる。これは、基本的な検査様式を表し、概念的に「一方向」即ち「読み取り専用」の提案(proposition)である。プログラムＰ−Ａに関与するエンティティが、そのプロセス・プールの中にＰ−Ａによって貯入されたステータス情報の流れを検査する。例えば、デバイスＣの下で走る検査プログラムまたはアプリケーションが１つ以上のプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ等）をプールから抽出することができる。プロテインの抽出に続いて、デバイスＣは、ディスクリップのスローおよびプロテインのインジェストから引き出した即ち読み出したプロテインのデータを用いて、プログラムＰ−Ａの内部状態にアクセスし、これを解釈し、検査することができる。
【０２４６】
しかし、プラズマ・システムは単に効率的なステートフル(stateful)伝送方式であるだけでなく、全方向メッセージング環境であることを思い起こすと、様々な追加モードがプログラム対プログラムの状態検査をサポートする。許可された検査プログラムは、それ自体でプロテインをプログラムＰのプロセス・プールに貯入して、生成してそのプロセス・プールの中に入れた状態情報の特性に影響を及ぼし、これらの特性を制御することができる（結局、プログラムＰはプロセス・プールに書き込むだけでなく、そこから読み取りも行う）。
【０２４７】
図３７は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、追加の代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、当該プロセス・プールにおいて生成し配置された状態情報の特性に影響を及ぼすまたは制御することができる。このシステム例では、デバイスＣの検査プログラムは、例えば、プログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）が、１回だけまたは特定の期間にわたって、通常よりも多い状態をプールにダンプすることを要求することができる。または、デバッグ通信の次の「レベル」を予示しておくと、関与するプログラムは、プログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）が、デバッグ・プールを通じた双方向処理が個々に可能でありそのために利用可能な、その実行時間環境において残存するオブジェクトを一覧に纏めたプロテインを放出(emit)することを要求することができる。このように通知すると、関与するプログラムはプログラムの実行時においてオブジェクトの中の個々に「アドレス」し、特定のオブジェクトだけが専有し応答するプロセス・プールにプロテインを入れることができる。関与するプログラムは、例えば、オブジェクトが、その成分変数全ての瞬時値を記述した報告プロテインを放出することを要求することもあり得る。それよりも更に重要なのは、関与するプログラムが、他のプロテインを通じて、オブジェクトにその挙動またはその変数の値を変更するように指令できることである。
【０２４８】
更に具体的には、この例では、デバイスＣの検査アプリケーションが、プールの中に、オブジェクト・リスト（例えば、「要求−オブジェクト・リスト」）の要求を（プロテインの形態で）入れて、次いでこのプールに結合されている各デバイス（例えば、デバイスＡ、デバイスＢ等）が抽出する。要求に応答して、各デバイス（例えば、デバイスＡ、デバイスＢ等）がプールの中に、その実行時環境において残存する、デバッグ・プールを通じて個々に検査することができそのために利用可能なオブジェクトを一覧に纏めたプロテイン（例えば、プロテイン１Ａ、プロテイン１Ｂ等）を入れる。
【０２４９】
このようにデバイスからのリストを通じて通知され、オブジェクトのリストに応答して、デバイスＣの検査アプリケーションは、プログラム実行中におけるオブジェクトの中の個々にアドレスし、特定のオブジェクトのみが専有し応答するプロセス・プールにプロテインを入れる。デバイスＣの検査アプリケーションは、例えば、要求プロテイン（例えば、プロテイン「要求報告Ｐ−Ａ−Ｏ」、「要求報告Ｐ−Ｂ−Ｏ」）を、オブジェクト（例えば、それぞれ、オブジェクトＰ−Ａ−Ｏ、オブジェクトＰ−Ｂ−Ｏ）が、その成分変数の全ての瞬時値を記述する報告プロテイン（例えば、プロテイン２Ａ、プロテイン２Ｂ等）を放出するプールに入れる。各オブジェクト（例えば、オブジェクトＰ−Ａ−Ｏ、オブジェクトＰ−Ｂ−Ｏ）は、その要求（例えば、それぞれ、プロテイン「要求報告Ｐ−Ａ−Ｏ」、「要求報告Ｐ−Ｂ−Ｏ」）を抽出し、それに応答して、要求された報告（例えば、それぞれ、プロテイン２Ａ、プロテイン２Ｂ）を含むプールにプロテインを入れる。次いで、デバイスＣは種々の報告プロテイン（例えば、プロテイン２Ａ、プロテイン２Ｂ等）を抽出し、適宜報告の内容に合わせて続く処理行為を実行する。
【０２５０】
このように、プラズマを相互交換媒体として用いると、デバッグ処理、プロセス制御、ならびにプログラム対プログラムの通信および調整の間にある区別を究極的に解消し易くなる。
【０２５１】
このため、一般化したプラズマ・フレームワークは、疎結合の様式で可視化および分析プログラムを設計することを可能にする。例えば、メモリ・アクセス・パターンを表示する可視化ツールは、基本的なメモリ・リードおよびライトをプールに出力するいずれのプログラムとでも合わせて用いることができる。分析を受けるプログラムは、可視化ツールの存在や設計を知る必要がなく、その逆も成り立つ。
【０２５２】
以上のようにプールを用いると、システム性能に不当に影響を及ぼすことはない。例えば、実施形態は、毎秒数十万個のプロテインをプールに貯入することを考慮しているので、比較的冗漫なデータ出力を可能にしても、殆どのプログラムの応答性や双方向処理特性を著しく阻害することはない。
【０２５３】
本明細書において記載した実施形態は、データ空間全域においてナビゲートする方法を含む。この方法は、検出器を通じて受信したジェスチャ・データから本体のジェスチャを検出するステップであって、ジェスチャ・データが、ある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、検出が、ジェスチャ・データのみを用いてジェスチャを識別することを含む、ステップと、ジェスチャをジェスチャ信号に変換するステップと、ジェスチャ信号に応答してデータ空間全域においてナビゲートするステップであって、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間である、ステップとを備えている。
【０２５４】
一実施形態の方法は、データ・セットのパラメータ−制御軸を、物理的空間の１次元と位置合わせするステップを備えている。
一実施形態の次元は、深さ次元である。
【０２５５】
一実施形態の次元は、水平次元である。
一実施形態の次元は、垂直次元である。
一実施形態の次元は、横方向次元である。
【０２５６】
一実施形態のナビゲートするステップは、パラメータ−制御軸に沿ってデータ空間変換を行うために、次元に沿った運動を含む。
一実施形態のナビゲートするステップは、データ空間の量子化パラメータ空間にナビゲートすることを含む。
【０２５７】
一実施形態の検出するステップは、本体の進展する位置を検出することを含む。
一実施形態の検出するステップは、本体の進展する方位を検出することを含む。
一実施形態の検出するステップは、本体の進展するポーズを検出することを含み、このポーズが、本体の一部分の本体の少なくとも１つの他の部分に対する幾何学的配置である。
【０２５８】
一実施形態の検出するステップは、本体の進展する運動を検出することを含む。
一実施形態の検出するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも１つを検出することを含む。
【０２５９】
一実施形態の方法は、ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを備えている。
一実施形態の方法は、ジェスチャを識別するステップを備えている。
【０２６０】
一実施形態のジェスチャを識別するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも１つを識別することを含む。
一実施形態の方法は、ジェスチャ・イベントのシーケンスにおけるジェスチャ・イベントの表現を発生するステップを備えている。
【０２６１】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間に結合されている少なくとも１つの制御コンポーネントに配信するステップを備えている、方法。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間のグラフィカル描写と同期させるステップを備えている。
【０２６２】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間の聴覚描写と同期させるステップを備えている。
【０２６３】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを備えている。
一実施形態のデータ・セットは、空間情報を表す。
【０２６４】
一実施形態のデータ・セットは、現象、イベント、測定、観察、および構造の内少なくとも１つの空間情報を表す。
一実施形態のデータ・セットは、非空間情報を表す。
【０２６５】
一実施形態のジェスチャは、線形空間運動を含む、方法。
一実施形態のナビゲートするステップは、データ空間を通過する線形推移(verging)を含む。
【０２６６】
一実施形態の方法は、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにデータ・セットをレンダリングするステップと、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップとを備えている。
【０２６７】
一実施形態のデータ・フレームのサイズおよびアスペクト比は、ディスプレイのサイズおよびアスペクト比と一致する。
一実施形態のデータ・フレームの中心および法線ベクトルが、ディスプレイの中心および法線ベクトルと一致する。
【０２６８】
一実施形態のデータ・フレームの位置および方位は、ディスプレイの位置および方位と一致する。
一実施形態の各データ・フレームは、データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む。
【０２６９】
一実施形態のグラフィカル・データ・エレメントは、静的エレメントである。
一実施形態のグラフィカル・データ・エレメントは、動的エレメントである。
一実施形態のデータ・フレームは、二次元構造である。
【０２７０】
一実施形態のデータ・フレームは、本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する。
一実施形態のデータ空間全域においてナビゲートするステップは、複数のデータ・フレーム全域においてナビゲートすることを含む。
【０２７１】
一実施形態の方法は、本体の第１ポーズを検出するステップと、第１ポーズの検出に応答して、プッシュバック相互作用を活性化するステップとを備えている。
一実施形態の方法は、第１ポーズを入力する第１位置を記録するステップであって、第１位置が三空間の手の位置である、ステップと、第１位置を原点として設定するステップであって、続いて検出される本体位置を、原点に対する相対的オフセットとして報告する、ステップとを備えている。
【０２７２】
一実施形態の方法は、本体の移動を検出することによって、ジェスチャを検出するステップを備えている。
一実施形態の検出するステップは、本体の第１移動を検出することを含み、第１移動が、ディスプレイに向かい軸に沿った移動であり、この軸がディスプレイの目視面に対して垂直な軸として定められる。
【０２７３】
一実施形態のナビゲートするステップは、本体の第１移動に応答して、複数のデータ・フレームを軸に沿って変位させることを含み、データ・フレームが位置する平面において見える部分が多くなり、ディスプレイ上にレンダリングされる第１可視フレームが、ディスプレイから後退するように見え、第１データ・フレームに隣接するデータ・フレームが可視となる。
【０２７４】
一実施形態のナビゲートするステップは、本体の第１移動に応答して、複数のデータ・フレームを軸に沿って現在のデータ・フレームから変位させることを含み、データ・フレームが下方に平行移動し、現在のデータ・フレームが、ディスプレイ上に現在レンダリングされているデータ・フレームである。
【０２７５】
一実施形態の各データ・フレームの外観は、変位に応答して変化し、現在のデータ・フレームの下に位置するデータ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し、現在のデータ・フレームの上に位置するデータ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになる。
【０２７６】
一実施形態の検出するステップが、本体の第２移動を検出することを含み、第２移動が、ディスプレイから遠離る方向への軸に沿った移動である。
一実施形態のナビゲートするステップは、本体の第２移動に応答して、複数のデータ・フレームを軸に沿って変位させることを含み、データ・フレームが位置する平面において見える部分が少なくなり、ディスプレイ上にレンダリングされた第１可視フレームが、ディスプレイから推移する(verge)ように見え、第１データ・フレームに隣接するデータ・フレームが見え難くなる。
【０２７７】
一実施形態のナビゲートするステップは、本体の第２移動に応答して、複数のデータ・フレームを、軸に沿って現在のデータ・フレームから変位させることを含み、データ・フレームが上方に平行移動し、現在のデータ・フレームが、ディスプレイ上に現在レンダリングされているデータ・フレームである。
【０２７８】
一実施形態の各データ・フレームの外観は、変位に応答して変化し、現在のデータ・フレームの上に位置するデータ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し初め、現在のデータ・フレームの下に位置するデータ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになり始める。
【０２７９】
一実施形態の検出するステップは、本体の第３移動を検出することを含み、第３移動が、ディスプレイの目視面に対して平行な平面における移動である。
一実施形態のナビゲートするステップは、本体の第３移動に応答して、複数のデータ・フレームを第３移動に対応する方向に変位させることを含む。
【０２８０】
一実施形態のディスプレイ上にレンダリングされている現在のデータ・フレームは、方向にスライドするように見え、現在のデータ・フレームに隣接するデータ・フレームは、方向とは逆のディスプレイの側から見えてくるようにスライドし、現在のデータ・フレームは、ディスプレイ上に現在レンダリングされているデータ・フレームである。
【０２８１】
一実施形態のナビゲートするステップは、本体の移動に直接応答して、複数のデータ・フレームの変位を連続的に更新することを含む。
一実施形態の方法は、本体の第２ポーズを検出するステップと、第２ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、この終了が、複数のデータ・フレームの内１つのデータ・フレームを、ディスプレイと同一平面上に表示することを含む、ステップとを備えている。
【０２８２】
一実施形態の方法は、ジェスチャの間における本体の変位の物理的距離と、ナビゲーションの間においてデータ空間の中にある連続点間の論理距離との間でマッピングするステップを備えており、このマッピングが、データ空間における複数のデータ・フレームの相対的変位、および各離散データ・フレームの外観の内少なくとも１つを制御する。
【０２８３】
一実施形態の方法は、アクティブ・ゾーンとデッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、アクティブ・ゾーンがディスプレイに隣接しており、デッド・ゾーンがアクティブ・ゾーンに隣接している。
【０２８４】
一実施形態のジェスチャ信号に応答してデータ空間全域においてナビゲートするステップが、ジェスチャがアクティブ領域において検出されたときに、当該ジェスチャに応答して活性化される。
【０２８５】
一実施形態の方法では、ディスプレイ上にフィードバック・インディケータをレンダリングするステップを備えている。
一実施形態のフィードバック・インディケータは、本体がアクティブ・ゾーンおよびデッド・ゾーンの内１つにあることを示すフィードバックを表示する。
【０２８６】
一実施形態のフィードバック・インディケータは、本体の原点からの物理的オフセットを示すフィードバックを表示する。
一実施形態の検出するステップは、本体の位置を検出すること、本体の方位を検出すること、および本体の運動を検出することの内少なくとも１つを含む。
【０２８７】
一実施形態の方法は、ジェスチャを識別するステップを備えており、この識別が、本体の一部のポーズおよび方位を識別することを含む。
一実施形態の検出するステップは、本体の第１組の付加物および第２組の付加物の内少なくとも１つを検出することを含む。
【０２８８】
一実施形態の検出するステップは、本体に結合されている少なくとも１つのタグの位置を動的に検出することを含む。
一実施形態の検出するステップは、本体の一部に結合されている１組のタグの位置を検出することを含む。
【０２８９】
一実施形態の１組のタグの各タグはパターンを含み、１組のタグの各タグの各パターンは、複数のタグの内いずれの残りのタグのいずれのパターンとも異なる。
一実施形態の検出するステップは、本体上にあるマーカを動的に検出し位置を突き止めることを含む。
【０２９０】
一実施形態の検出するステップは、本体に結合されている１組のマーカの位置を検出することを含む。
一実施形態の１組のマーカは、本体上に複数のパターンを形成する。
【０２９１】
一実施形態の検出するステップは、本体の複数の付加物の位置を、当該付加物の各々に結合されている１組のマーカを用いて、検出することを含む。
一実施形態の変換するステップは、ジェスチャの情報をジェスチャ表記に変換することを含む。
【０２９２】
一実施形態のジェスチャ表記は、ジェスチャ・ボキャブラリを表し、ジェスチャ信号がジェスチャ・ボキャブラリの通信を含む、方法。
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の瞬時的ポーズ状態をテキスト・フォームで表す。
【０２９３】
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の方位をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の方位の組み合わせを、テキスト・フォームで表す。
【０２９４】
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の状態を表す、キャラクタのストリングを含む。
一実施形態の力学的連結は、本体の少なくとも１つの第１付加物である。
【０２９５】
一実施形態の方法は、ストリングにおける各位置を第２付加物に割り当てるステップを備えており、この第２付加物が第１付加物に接続されている。
一実施形態の方法は、複数のキャラクタにおけるキャラクタを、第２付加物の複数の位置の各々に割り当てるステップを備えている。
【０２９６】
一実施形態の複数の位置は、座標原点に対して確定される。
一実施形態の方法は、空間における絶対位置および方位、本体の全体的位置および方位とは無関係な本体に対する固定位置および方位から成る１群から選択した位置を用いて、ならびに本体の動作に応答して対話的に座標原点を確定するステップを備えている。
【０２９７】
一実施形態の方法は、複数のキャラクタにおけるキャラクタを、第１付加物の複数の方位の各々に割り当てるステップを備えている。
一実施形態の検出するステップは、本体の外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間が、コンピュータに結合されているディスプレイ・デバイス上に描画された空間を含む。
【０２９８】
一実施形態の方法は、外挿補間位置が仮想空間と交差するときに、仮想空間において仮想オブジェクトを制御するステップを含む。
一実施形態の制御するステップは、仮想空間における外挿補間位置に応答して、仮想空間における仮想オブジェクトの位置を制御することを含む。
【０２９９】
一実施形態の制御するステップは、ジェスチャに応答して仮想空間における仮想オブジェクトの姿勢を制御することを含む。
一実施形態の方法は、仮想空間と物理空間との間で一致を得るために、検出および制御のスケーリングを制御するステップを備えており、仮想空間がディスプレイ上に描画された空間を含み、物理空間が本体によって占められる空間を含む。
【０３００】
一実施形態の方法は、物理空間における少なくとも１つの物理オブジェクトの移動に応答して、仮想空間において少なくとも１つの仮想オブジェクトを制御するステップを備えている。
【０３０１】
一実施形態の方法は、撮像システムによって本体を撮像するステップを備えている。
一実施形態の撮像するステップは、本体の波頭コード化画像を発生することを含む。
一実施形態のジェスチャ・データは、撮像システムの被写体深度内における本体の焦点解明データ(focus-resolved data)を含む。
【０３０２】
一実施形態の方法は、撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを備えている。
一実施形態の中間画像は、ぼやけている。
【０３０３】
一実施形態の中間画像は、脱焦収差を含む、本体または撮像システムの複数の光検出器の内少なくとも１つの変化に対して不感応である。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明範囲(range)データを含む。
【０３０４】
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明位置データを含む。
【０３０５】
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態の撮像システムが複数の検出器を備えている。
【０３０６】
一実施形態の検出器の内少なくとも２つは、波頭コード化光学エレメントを備えている波頭コード化カメラである。
一実施形態の光検出器の内少なくとも２つは、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである。
【０３０７】
一実施形態の方法は、本体と撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数(point spread function)を発生するステップを備えている。
一実施形態の方法は、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを備えている。
【０３０８】
本明細書に記載した実施形態は、システムを含む。このシステムは、本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、検出器に結合されているプロセッサであって、ジェスチャ・データから自動的にジェスチャを検出する、プロセッサとを備えており、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、プロセッサが、ジェスチャ・データのみを用いてジェスチャを識別し、プロセッサが、ジェスチャをジェスチャ信号に変換し、プロセッサが、ジェスチャ信号に応答してデータ空間全域においてナビゲーションを制御し、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間である。
【０３０９】
本明細書に記載した実施形態は、データ空間全域においてナビゲートする方法を含む。この方法は、受信機を通じて受け取られたジェスチャ・データから本体のジェスチャを検出するステップであって、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、検出が、ジェスチャ・データのみを用いてジェスチャを識別することを含む、ステップと、ジェスチャをジェスチャ信号に変換するステップと、ジェスチャ信号に応答してデータ空間全域においてナビゲートするステップであって、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間である、ステップと、データ空間の複数の領域のグラフィカル描写である複数の共面データ・フレームにおいてデータ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップとを備えている。
【０３１０】
一実施形態の方法は、本体の第１ポーズを検出するステップを備えている。一実施形態の方法は、第１ポーズの検出に応答して、プッシュバック相互作用を活性化するステップを備えている。
【０３１１】
一実施形態の方法は、第１ポーズを入力する第１位置を記録するステップを備えており、第１位置が三空間の手の位置となる。一実施形態の方法は、第１位置を原点として設定するステップを備えており、続いて検出される本体位置を、原点に対する相対的オフセットとして報告する。
【０３１２】
一実施形態の検出するステップは、本体の前方移動を検出することを含み、前方移動がｚ−軸に沿ったディスプレイに向かう移動であり、ｚ−軸がディスプレイの目視面に対して垂直な軸として定められる。
【０３１３】
一実施形態のナビゲートするステップは、本体の前方移動に応答して、複数のデータ・フレームを軸に沿って変位させることを含み、データ・フレームが位置する平面において見える部分が多くなり、ディスプレイ上にレンダリングされる第１可視フレームが、ディスプレイから後退するように見え、第１データ・フレームに隣接するデータ・フレームが可視となる。
【０３１４】
一実施形態の検出するステップは、本体の後方移動を検出することを含み、後方移動がｚ−軸に沿ったディスプレイから離れる移動である。
一実施形態のナビゲートするステップは、本体の後方移動に応答して、複数のデータ・フレームをＺ−軸に沿って変位させることを含み、データ・フレームが位置する平面において見える部分が少なくなり、ディスプレイ上にレンダリングされた第１可視フレームが、ディスプレイから推移する(verge)ように見え、第１データ・フレームに隣接するデータ・フレームが見え難くなる。
【０３１５】
一実施形態の方法は、本体のｚ−軸に沿った移動に直接応答して、複数のデータ・フレームのｚ−軸に沿った変位を連続的に更新するステップを備えている。
一実施形態の方法は、本体の第２ポーズを検出するステップと、第２ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、この終了が、複数のデータ・フレームの内１つのデータ・フレームを、ディスプレイと同一平面上に表示することを含む、ステップとを備えている。
【０３１６】
一実施形態の検出するステップは、本体の右横方向移動を検出することを含み、右横方向移動がｘ−軸に沿った移動であり、ｘ−軸が、ディスプレイの目視面に対して平行な平面内に位置する。
【０３１７】
一実施形態のナビゲートするステップは、本体の右横方向移動に応答して、複数のデータ・フレームをｘ−軸に沿って右に変位させることを含み、ディスプレイ上にレンダリングされた第１可視フレームが、ディスプレイから当該ディスプレイの右側に向かってスライドするように見え、第１データ・フレームに隣接するデータ・フレームがスライドしてディスプレイの左側から見えるようになる。
【０３１８】
一実施形態の検出するステップは、本体の左横方向移動を検出することを含み、左横方向移動がｘ−軸に沿った移動である。
一実施形態のナビゲートするステップは、本体の左横方向移動に応答して、複数のデータ・フレームをｘ−軸に沿って左に変位させることを含み、ディスプレイ上にレンダリングされた第１可視フレームが、ディスプレイから当該ディスプレイの左側に向かってスライドするように見え、第１データ・フレームに隣接するデータ・フレームがスライドしてディスプレイの右側から見えるようになる。
【０３１９】
一実施形態の方法は、本体のｘ−軸に沿った移動に直接応答して、複数のデータ・フレームのｘ−軸に沿った変位を連続的に更新するステップを備えている。
一実施形態の方法は、本体の第２ポーズを検出するステップを備えている。一実施形態の方法は、第２ポーズの検出に応答して、プッシュバック相互作用を終了するステップを備えており、終了が、複数のデータ・フレームの内１つのデータ・フレームを、ディスプレイと同一平面上に表示することを含む。
【０３２０】
一実施形態のデータ空間は、平面内に配置された複数の仮想抑止点を備えている。
一実施形態の各仮想抑止点は、各データ・フレームに対応する。
一実施形態の方法は、アクティブ・ゾーンとデッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、アクティブ・ゾーンがディスプレイに隣接しており、デッド・ゾーンがアクティブ・ゾーンに隣接している。
【０３２１】
一実施形態のジェスチャ信号に応答してデータ空間全域においてナビゲートするステップは、ジェスチャがアクティブ領域において検出されたときに、当該ジェスチャに応答して活性化される。
【０３２２】
一実施形態の方法は、ディスプレイ上にフィードバック・インディケータをレンダリングするステップを備えている。
一実施形態のフィードバック・インディケータは、本体がアクティブ・ゾーンおよびデッド・ゾーンの内１つにあることを示すフィードバックを表示する。
【０３２３】
一実施形態のフィードバック・インディケータは、本体の原点からの物理的オフセットを示すフィードバックを表示する。
一実施形態の方法は、データ・セットのパラメータ−制御軸を、物理的空間の１次元と位置合わせするステップを備えている。
【０３２４】
一実施形態の次元は、深さ次元である。
一実施形態の次元は、水平次元である。
一実施形態の次元は、垂直次元である。
【０３２５】
一実施形態の次元は、横方向次元である。
一実施形態のナビゲートするステップは、パラメータ−制御軸に沿ってデータ空間変換を行うために、次元に沿った運動を含む。
【０３２６】
一実施形態のナビゲートするステップは、データ空間の量子化パラメータ空間にナビゲートすることを含む。
一実施形態の検出するステップは、本体の進展する位置を検出することを含む。
【０３２７】
一実施形態の検出するステップは、本体の進展する方位を検出することを含む。
一実施形態の検出するステップは、本体の進展するポーズを検出することを含み、このポーズが、本体の一部分の本体の少なくとも１つの他の部分に対する幾何学的配置である。
【０３２８】
一実施形態の検出するステップは、本体の進展する運動を検出することを含む。
一実施形態の検出するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも１つを検出することを含む。
【０３２９】
一実施形態の方法は、ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを備えている。
一実施形態の方法は、ジェスチャを識別するステップを備えている。
【０３３０】
一実施形態のジェスチャを識別するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも１つを識別することを含む。
一実施形態の方法は、ジェスチャ・イベントのシーケンスにおけるジェスチャ・イベントの表現を発生するステップを備えている。
【０３３１】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間に結合されている少なくとも１つの制御コンポーネントに配信するステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間のグラフィカル描写と同期させるステップを備えている。
【０３３２】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間の聴覚描写と同期させるステップを備えている。
【０３３３】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを備えている。
一実施形態のデータ・セットは、空間情報を表す。
【０３３４】
一実施形態のデータ・セットは、現象、イベント、測定、観察、および構造の内少なくとも１つの空間情報を表す。
一実施形態のデータ・セットは、非空間情報を表す。
【０３３５】
一実施形態のジェスチャは、線形空間運動を含む。
一実施形態のナビゲートするステップは、データ空間を通過する線形推移(verging)を含む。
【０３３６】
一実施形態の方法は、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにデータ・セットをレンダリングするステップを備えている。一実施形態の方法は、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップを備えている。
【０３３７】
一実施形態のデータ・フレームのサイズおよびアスペクト比は、ディスプレイのサイズおよびアスペクト比と一致する。
一実施形態のデータ・フレームの中心および法線ベクトルは、ディスプレイの中心および法線ベクトルと一致する。
【０３３８】
一実施形態のデータ・フレームの位置および方位は、ディスプレイの位置および方位と一致する。
一実施形態の各データ・フレームは、データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む。
【０３３９】
一実施形態のグラフィカル・データ・エレメントは、静的エレメントである。
一実施形態のグラフィカル・データ・エレメントは、動的エレメントである。
一実施形態のデータ・フレームは、二次元構造である。
【０３４０】
一実施形態のデータ・フレームは、本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する。
一実施形態のデータ空間全域においてナビゲートするステップは、複数のデータ・フレーム全域においてナビゲートすることを含む。
【０３４１】
一実施形態の方法は、ジェスチャを識別するステップを備えており、この識別が、本体の一部のポーズおよび方位を識別することを含む。
一実施形態の検出するステップは、本体の第１組の付加物および第２組の付加物の内少なくとも１つを検出することを含む。
【０３４２】
一実施形態の検出するステップは、少なくとも１つのタグの位置を動的に検出することを含む。
一実施形態の検出するステップは、本体上にあるマーカを動的に検出し位置を突き止めることを含む。
【０３４３】
一実施形態の変換するステップは、ジェスチャの情報をジェスチャ表記に変換することを含む。
一実施形態のジェスチャ表記は、ジェスチャ・ボキャブラリを表し、ジェスチャ信号がジェスチャ・ボキャブラリの通信を含む。
【０３４４】
一実施形態のジェスチャ・ボキャブラリは、本体の瞬時的ポーズ状態をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の方位をテキスト・フォームで表す。
【０３４５】
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の方位の組み合わせを、テキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の状態を表す、キャラクタのストリングを含む。
【０３４６】
検出するステップは、本体の外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間が、ディスプレイ・デバイス上に描画された空間を含む。
一実施形態の方法は、外挿補間位置が仮想空間と交差するときに、仮想空間において仮想オブジェクトを制御するステップを含む。
【０３４７】
一実施形態の方法は、仮想空間における外挿補間位置に応答して、仮想空間における仮想オブジェクトの位置を制御するステップを備えている。
一実施形態の方法は、仮想空間と物理空間との間で一致を得るために、検出およびナビゲーションのスケーリングを制御するステップを備えており、仮想空間が、ディスプレイ上に描画された空間を含み、物理空間が、本体によって占められる空間を含む。
【０３４８】
一実施形態の方法は、撮像システムによって本体を撮像するステップを備えている。
一実施形態の撮像するステップは、本体の波頭コード化画像を発生することを含む。
一実施形態のジェスチャ・データは、撮像システムの被写体深度内における本体の焦点解明データ(focus-resolved data)を含む。
【０３４９】
一実施形態の方法は、撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを備えている。
一実施形態の中間画像は、ぼやけている。
【０３５０】
一実施形態の中間画像は、脱焦収差を含む、本体または撮像システムの複数の光検出器の内少なくとも１つの変化に対して不感応である。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明範囲(range)データを含む。
【０３５１】
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明位置データを含む。
【０３５２】
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態の撮像システムは、複数の検出器を備えている。
【０３５３】
一実施形態の検出器の内少なくとも２つは、波頭コード化光学エレメントを備えている波頭コード化カメラである。
一実施形態の光検出器の内少なくとも２つは、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである。
【０３５４】
一実施形態の方法は、本体と撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数(point spread function)を発生するステップを備えている。
一実施形態の方法は、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを備えている。
【０３５５】
本明細書において記載した実施形態は、システムを含む。このシステムは、本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、検出器に結合されているプロセッサであって、ジェスチャ・データから自動的にジェスチャを検出する、プロセッサとを備えており、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、プロセッサが、ジェスチャ・データのみを用いてジェスチャを識別し、プロセッサが、ジェスチャをジェスチャ信号に変換し、プロセッサが、ジェスチャ信号に応答してデータ空間全域においてナビゲーションを制御し、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間であり、プロセッサが、データ空間の複数の領域のグラフィカル描写である複数の共面データ・フレームにおいてデータ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示する。
【０３５６】
本明細書に記載した実施形態は、データ空間全域においてナビゲートする方法を含む。この方法は、受信機を通じて受け取られたジェスチャ・データから本体のジェスチャを検出するステップであって、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、検出が、ジェスチャ・データのみを用いてジェスチャを識別することを含む、ステップと、ジェスチャをジェスチャ信号に変換するステップと、ジェスチャ信号に応答してデータ空間全域においてナビゲートするステップであって、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間である、ステップと、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにおいてデータ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップであって、複数のデータ・フレームが、データ空間の複数の平面に配置された離散データ・フレームのタスクを構成し(comprise)、各データ・フレームが複数の平面の内別々の平面に位置する、ステップとを備えている。
【０３５７】
一実施形態の方法は、本体の第１ポーズを検出するステップを備えている。一実施形態の方法は、第１ポーズの検出に応答して、プッシュバック相互作用を活性化するステップを備えている。
【０３５８】
一実施形態の方法は、第１ポーズを入力する第１位置を記録するステップを備えており、第１位置が三空間の手の位置である。一実施形態の方法は、第１位置を原点として設定するステップを備えており、続いて検出される本体位置を、原点に対する相対的オフセットとして報告する。
【０３５９】
一実施形態の検出するステップは、本体の上方移動を検出することを含み、前方移動がｙ−軸に沿ってディスプレイから外側に向かう移動であり、ｙ−軸がディスプレイの目視面に対して垂直な軸として定められる。
【０３６０】
一実施形態のナビゲートするステップは、本体の上方移動に応答して、複数のデータ・フレームを現在のデータ・フレームからｙ−軸に沿って変位させることを含み、スタックの離散データ・フレームが上方に平行移動し、現在のデータ・フレームが、ディスプレイ上に現在レンダリングされている離散データ・フレームである。
【０３６１】
一実施形態の各離散データ・フレームの外観は、変位に応答して変化し、現在のデータ・フレームの上に位置するスタックの離散データ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し始め、現在のデータ・フレームの下に位置するスタックの離散データ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになり始める。
【０３６２】
一実施形態の方法は、ジェスチャの間における本体の変位の物理的距離と、スタックの連続離散データ・フレーム間の論理距離との間でマッピングするステップを備えており、このマッピングが、ｙ−軸に沿った複数のデータ・フレームの変位、および各離散データ・フレームの外観を制御する。
【０３６３】
一実施形態の検出するステップは、本体の下方移動を検出することを含み、下方移動がｙ−軸に沿って記ディスプレイに向かう移動である。
一実施形態のナビゲートするステップは、本体の下方移動に応答して、複数のデータ・フレームを現在のデータ・フレームからｙ−軸に沿って変位させることを含み、スタックの離散データ・フレームが下方に平行移動する。
【０３６４】
一実施形態の各離散データ・フレームの外観は、変位に応答して変化し、現在のデータ・フレームの下に位置するスタックの離散データ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し始め、現在のデータ・フレームの上に位置するスタックの離散データ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになる。
【０３６５】
一実施形態の方法は、ジェスチャの間における本体の変位の物理的距離と、スタックの連続離散データ・フレーム間の論理距離との間でマッピングするステップを備えており、このマッピングが、ｙ−軸に沿った複数のデータ・フレームの変位、および各離散データ・フレームの外観を制御する。
【０３６６】
一実施形態の方法は、本体のｙ−軸に沿った移動に直接応答して、複数のデータ・フレームのｙ−軸に沿った変位を連続的に更新するステップを備えている。
一実施形態の方法は、本体の第２ポーズを検出するステップを備えている。一実施形態の方法は、第２ポーズの検出に応答して、プッシュバック相互作用を終了するステップを備えており、この終了が、複数のデータ・フレームの内１つのデータ・フレームを、ディスプレイと同一平面上に表示することを含む。
【０３６７】
一実施形態のデータ空間は、複数の仮想抑止点を備えている。
一実施形態の各仮想抑止点は、複数の平面の各平面に対応する。
一実施形態の方法は、第１アクティブ・ゾーンと、第２アクティブ・ゾーンと、デッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、第１アクティブ・ゾーンがディスプレイに隣接しており、デッド・ゾーンが第１アクティブ・ゾーンに隣接しており、第２アクティブ・ゾーンがデッド・ゾーンに隣接している。
【０３６８】
一実施形態のジェスチャ信号に応答してデータ空間全域においてナビゲートするステップは、ジェスチャが第１アクティブ・ゾーンおよび第２アクティブ・ゾーンの内１つにおいて検出されたときに、ジェスチャに応答して活性化される。
【０３６９】
一実施形態の方法は、ディスプレイ上にフィードバック・インディケータをレンダリングするステップを備えている。
一実施形態のフィードバック・インディケータは、本体が第１アクティブ・ゾーン、第２アクティブ・ゾーン、およびデッド・ゾーンの内１つにあることを示すフィードバックを表示する。
【０３７０】
一実施形態のフィードバック・インディケータは、本体の原点からの物理的オフセットを示すフィードバックを表示する。
一実施形態の方法は、データ・セットのパラメータ−制御軸を、物理的空間の１次元と位置合わせするステップを備えている。
【０３７１】
一実施形態の次元は、深さ次元である。
一実施形態の次元は、水平次元である。
一実施形態の次元は、垂直次元である。
【０３７２】
一実施形態の次元は、横方向次元である。
一実施形態のナビゲートするステップは、パラメータ−制御軸に沿ってデータ空間変換を行うために、次元に沿った運動を含む。
【０３７３】
一実施形態のナビゲートするステップは、データ空間の量子化パラメータ空間にナビゲートすることを含む。
一実施形態の検出するステップは、本体の進展する位置を検出することを含む。
【０３７４】
一実施形態の検出するステップは、本体の進展する方位を検出することを含む。
一実施形態の検出するステップは、本体の進展するポーズを検出することを含み、このポーズは、本体の一部分の本体の少なくとも１つの他の部分に対する幾何学的配置である。
【０３７５】
一実施形態の検出するステップは、本体の進展する運動を検出することを含む。
一実施形態の検出するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも１つを検出することを含む。
【０３７６】
一実施形態の方法は、ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを備えている。
一実施形態の方法は、ジェスチャを識別するステップを備えている。
【０３７７】
一実施形態のジェスチャを識別するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも１つを識別することを含む。
一実施形態の方法は、ジェスチャ・イベントのシーケンスにおけるジェスチャ・イベントの表現を発生するステップを備えている。
【０３７８】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間に結合されている少なくとも１つの制御コンポーネントに配信するステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間のグラフィカル描写と同期させるステップを備えている。
【０３７９】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間の聴覚描写と同期させるステップを備えている。
【０３８０】
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを備えている。
一実施形態のデータ・セットは、空間情報を表す。
【０３８１】
一実施形態のデータ・セットは、現象、イベント、測定、観察、および構造の内少なくとも１つの空間情報を表す。
一実施形態のデータ・セットは、非空間情報を表す。
【０３８２】
一実施形態のジェスチャは、線形空間運動を含む。
一実施形態のナビゲートするステップは、データ空間を通過する線形推移(verging)を含む。
【０３８３】
一実施形態の方法は、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにデータ・セットをレンダリングするステップを備えている。一実施形態の方法は、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップとを備えている。
【０３８４】
一実施形態のデータ・フレームのサイズおよびアスペクト比は、ディスプレイのサイズおよびアスペクト比と一致する。
一実施形態のデータ・フレームの中心および法線ベクトルは、ディスプレイの中心および法線ベクトルと一致する。
【０３８５】
一実施形態のデータ・フレームの位置および方位は、ディスプレイの位置および方位と一致する。
一実施形態の各データ・フレームは、データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む。
【０３８６】
一実施形態のグラフィカル・データ・エレメントは、静的エレメントである。
一実施形態のグラフィカル・データ・エレメントは、動的エレメントである。
一実施形態のデータ・フレームは、二次元構造である。
【０３８７】
一実施形態のデータ・フレームは、本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する。
一実施形態のデータ空間全域においてナビゲートするステップは、複数のデータ・フレーム全域においてナビゲートすることを含む。
【０３８８】
一実施形態の方法は、ジェスチャを識別するステップを備えており、この識別が、本体の一部のポーズおよび方位を識別することを含む。
一実施形態の検出するステップは、本体の第１組の付加物および第２組の付加物の内少なくとも１つを検出することを含む。
【０３８９】
一実施形態の検出するステップは、少なくとも１つのタグの位置を動的に検出することを含む。
一実施形態の検出するステップは、本体上にあるマーカを動的に検出し位置を突き止めることを含む。
【０３９０】
一実施形態の変換するステップは、ジェスチャの情報をジェスチャ表記に変換することを含む。
一実施形態のジェスチャ表記は、ジェスチャ・ボキャブラリを表し、ジェスチャ信号がジェスチャ・ボキャブラリの通信を含む。
【０３９１】
一実施形態のジェスチャ・ボキャブラリは、本体の瞬時的ポーズ状態をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の方位をテキスト・フォームで表す。
【０３９２】
一実施形態のジェスチャ・ボキャブラリは、本体の方位の組み合わせを、テキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の状態を表すキャラクタのストリングを含む。
【０３９３】
一実施形態の検出するステップは、本体の外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間は、ディスプレイ上に描画された空間を含む。
一実施形態の方法は、外挿補間位置が仮想空間と交差するときに、仮想空間において仮想オブジェクトを制御するステップを備えている。
【０３９４】
一実施形態の方法は、仮想空間における外挿補間位置に応答して、仮想空間における仮想オブジェクトの位置を制御するステップを備えている。
一実施形態の方法は、仮想空間と物理空間との間で一致を得るために、検出およびナビゲーションのスケーリングを制御するステップを備えており、仮想空間が、ディスプレイ上に描画された空間を含み、物理空間が、本体によって占められる空間を含む。
【０３９５】
一実施形態の方法は、撮像システムによって本体を撮像するステップを備えている。
一実施形態の撮像するステップは、本体の波頭コード化画像を発生することを含む。
一実施形態のジェスチャ・データは、撮像システムの被写体深度内における本体の焦点解明データ(focus-resolved data)を含む。
【０３９６】
一実施形態の方法は、撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを備えている。
一実施形態の中間画像は、ぼやけている。
【０３９７】
一実施形態の中間画像は、脱焦収差を含む、本体または撮像システムの複数の光検出器の内少なくとも１つの変化に対して不感応である。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明範囲(range)データを含む。
【０３９８】
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明位置データを含む。
【０３９９】
一実施形態の被写体深度内における本体の焦点解明位置データは、撮像システムの出力から導出される。
一実施形態の撮像システムは、複数の検出器を備えている。
【０４００】
一実施形態の検出器の内少なくとも２つは、波頭コード化光学エレメントを備えている波頭コード化カメラである。
一実施形態の光検出器の内少なくとも２つは、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである。
【０４０１】
一実施形態の方法は、本体と撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数(point spread function)を発生するステップを備えている。
一実施形態の方法は、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを備えている。
【０４０２】
本明細書において記載した実施形態は、システムを含む。このシステムは、本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、検出器に結合されているプロセッサであって、ジェスチャ・データから自動的にジェスチャを検出する、プロセッサとを備えており、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、プロセッサが、ジェスチャ・データのみを用いてジェスチャを識別し、プロセッサが、ジェスチャをジェスチャ信号に変換し、プロセッサが、ジェスチャ信号に応答してデータ空間全域においてナビゲーションを制御し、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間であり、プロセッサが、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにおいてデータ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示し、複数のデータ・フレームが、データ空間の複数の平面に配置された離散データ・フレームのスタックを備えており、各データ・フレームが複数の平面の内別々の平面に位置する。
【０４０３】
本明細書において記載したＳＯＥは、処理システムを含む、および／または処理システムの下で実行する、および／または処理システムと連動して実行する。処理システムは、当技術分野では周知のように、互いに動作するプロセッサ主体デバイスまたは計算デバイスのあらゆる集合体、あるいは処理システムまたはデバイスのコンポーネントを含む。例えば、処理システムは、携帯用コンピュータ、通信ネットワークにおいて動作する携帯用通信デバイス、および／またはネットワーク・サーバの１つ以上を含むことができる。携帯用コンピュータは、パーソナル・コンピュータ、セルラ電話機、パーソナル・ディジタル・アシスタント、携帯用計算デバイス、および携帯用通信デバイスの中から選択した多数のデバイスおよび／またはデバイスの組み合わせのいずれとすることもできるが、そのように限定されるのではない。処理システムは、それよりも大きなコンピュータ・システムの中にあるコンポーネントを含むことができる。
【０４０４】
一実施形態の処理システムは、少なくとも１つのプロセッサと、少なくとも１つのメモリ・デバイスまたはサブシステムとを含む。また、処理システムは、少なくとも１つのデータベースを含むか、またはこれに結合することができる。「プロセッサ」という用語は、本明細書において一般に用いる場合、１つ以上の中央演算装置（ＣＰＵ）、ディジタル信号プロセッサ（ＤＳＰ）、特定用途集積回路（ＡＳＩＣ）等のような、あらゆる論理演算装置を指す。プロセッサおよびメモリは、１つのチップ上にモノリシックに集積することができ、多数のチップまたはホスト・システムのコンポーネント間で分散することができ、および／またはアルゴリズムの何らかの組み合わせによって提供することができる。本明細書において記載した方法は、ソフトウェア・アルゴリズム（１つまたは複数）、プログラム、ファームウェア、ハードウェア、コンポーネント、回路の１つ以上で、いずれの組み合わせでも実現することができる。
【０４０５】
本明細書において記載したシステムおよび方法を具体化するシステム・コンポーネントは、一緒に配置すること、または別個の位置に配置することができる。したがって、本明細書において記載したシステムおよび方法を具現化するシステム・コンポーネントは、単一のシステム、多数のシステム、および／または地理的に離れたシステムのコンポーネントとすることができる。また、これらのコンポーネントは、単一のシステム、多数のシステム、および／または地理的に離れたシステムのサブコンポーネントまたはサブシステムとすることもできる。これらのコンポーネントは、ホスト・システムの１つ以上のその他のコンポーネント、またはホスト・システムに結合されているシステムに結合することができる。
【０４０６】
通信経路は、システム・コンポーネントを結合し、コンポーネント間においてファイルを伝達または転送する媒体であればいずれでも含む。通信経路は、ワイヤレス接続、有線接続、混成ワイヤレス／有線接続を含む。また、通信経路は、ローカル・エリア・ネットワーク（ＬＡＮ）、都市エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、企業固有ネットワーク、事務所間またはバックエンド・ネットワーク、およびインターネットを含むネットワークへの結合または接続も含む。更に、通信経路は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびＣＤ−ＲＯＭディスクのような、リムーバブル固定媒体、ならびにフラッシュＲＡＭ、ユニバーサル・シリアル・バス（ＵＳＢ）接続、ＲＳ−２３２接続、電話回線、バス、および電子メール・メッセージを含む。
【０４０７】
文脈が特に明確に要求しない限り、説明全体を通じて、「備える」(comprise)、「備えている」(comprising)等の単語は、排他的または網羅的な意味とは逆に、包含的意味で解釈することとする。即ち、「含むがそれに限定されない」という意味である。また、単数または複数を用いる単語は、それぞれ、複数または単数も含むこととする。加えて、「ここでは」、「以下では」、「以上」、「以下」および同様の趣旨の単語は、本願のいずれかの特定部分ではなく、本願全体を指すこととする。「または」という単語が２つ以上の項目のリストに関して用いられる場合、その単語は以下の単語の解釈全てに及ぶこととする。リストにおける項目のいずれか、リストにおける項目全て、およびリストにおける項目のあらゆる組み合わせ。
【０４０８】
以上におけるＳＯＥの実施形態の説明は、網羅的であることも、記載したシステムおよび方法を、開示した形態そのものに限定することも意図していない。ＳＯＥの具体的な実施形態およびその例は、本明細書では例示の目的で記載したが、その他のシステムおよび方法の範囲内において、種々の同等な修正も可能であることは、当業者であれば認められよう。本明細書において提案したＳＯＥの教示は、前述のシステムおよび方法だけでなく、他の処理システムおよび方法にも適用することができる。
【０４０９】
以上で説明した種々の実施形態の要素および行為(act)を組み合わせて、更に別の実施形態を提案することができる。これらおよびその他の変更は、以上に詳細に記載した説明を参照すれば、ＳＯＥに対して行うことができる。
以上の実施形態のある種の態様が、以下にある種の請求項の形態で提示されるが、本発明者は、これら実施形態の種々の態様を、いかなる数の請求項の形態でも想定している。したがって、本発明者は、本願を出願した後に本実施形態の他の態様に対してこのような追加の請求項の形態を追求するために、追加の請求項を加える権利を保持することとする。
【図１】
0005806615.tif 000006
【図２】
0005806615.tif 000007
【図３】
0005806615.tif 000008
【図４】
0005806615.tif 000009
【図５ａ】
0005806615.tif 000010
【図５ｂ】
0005806615.tif 000011
【図５ｃ】
0005806615.tif 000012
【図５ｄ】
0005806615.tif 000013
【図６ａ】
0005806615.tif 000014
【図６ｂ】
0005806615.tif 000015
【図６ｃ】
0005806615.tif 000016
【図６ｄ】
0005806615.tif 000017
【図７】
0005806615.tif 000018
【図８】
0005806615.tif 000019
【図９】
0005806615.tif 000020
【図１０】
0005806615.tif 000021
【図１１】
0005806615.tif 000022
【図１２】
0005806615.tif 000023
【図１３】
0005806615.tif 000024
【図１４】
0005806615.tif 000025
【図１５】
0005806615.tif 000026
【図１６】
0005806615.tif 000027
【図１７】
0005806615.tif 000028
【図１８】
0005806615.tif 000029
【図１９−１】
0005806615.tif 000030
【図１９−２】
0005806615.tif 000031
【図２０】
0005806615.tif 000032
【図２１】
0005806615.tif 000033
【図２２】
0005806615.tif 000034
【図２３】
0005806615.tif 000035
【図２４】
0005806615.tif 000036
【図２５】
0005806615.tif 000037
【図２６】
0005806615.tif 000038
【図２７】
0005806615.tif 000039
【図２８】
0005806615.tif 000040
【図２９】
0005806615.tif 000041
【図３０Ａ】
0005806615.tif 000042
【図３０Ｂ−１】
0005806615.tif 000043
【図３０Ｂ−２】
0005806615.tif 000044
【図３０Ｃ】
0005806615.tif 000045
【図３０Ｄ】
0005806615.tif 000046
【図３１】
0005806615.tif 000047
【図３２】
0005806615.tif 000048
【図３３】
0005806615.tif 000049
【図３４】
0005806615.tif 000050
【図３５】
0005806615.tif 000051
【図３６】
0005806615.tif 000052
【図３７】
0005806615.tif 000053