JP5806615B2 - データ空間の主要次元をナビゲートするための制御システム - Google Patents

データ空間の主要次元をナビゲートするための制御システム Download PDF

Info

Publication number
JP5806615B2
JP5806615B2 JP2011526203A JP2011526203A JP5806615B2 JP 5806615 B2 JP5806615 B2 JP 5806615B2 JP 2011526203 A JP2011526203 A JP 2011526203A JP 2011526203 A JP2011526203 A JP 2011526203A JP 5806615 B2 JP5806615 B2 JP 5806615B2
Authority
JP
Japan
Prior art keywords
data
gesture
space
display
detecting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011526203A
Other languages
English (en)
Other versions
JP2012502364A (ja
Inventor
アンダーコフラー,ジョン・エス
クラマー,クウィンドラ・エイチ
Original Assignee
オブロング・インダストリーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/417,252 external-priority patent/US9075441B2/en
Priority claimed from US12/487,623 external-priority patent/US20090278915A1/en
Application filed by オブロング・インダストリーズ・インコーポレーテッド filed Critical オブロング・インダストリーズ・インコーポレーテッド
Publication of JP2012502364A publication Critical patent/JP2012502364A/ja
Application granted granted Critical
Publication of JP5806615B2 publication Critical patent/JP5806615B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/0304Detection arrangements using opto-electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
  • Image Processing (AREA)

Description

関連出願
本特許出願は、2006年2月8日に出願した米国(US)特許出願第11/350,697号の一部継続出願である。
本願は、2008年4月24日に出願したUS特許出願第12/109,263号の一部継続出願である。
本願は、2009年4月2日に出願したUS特許出願第12/417,252号の一部継続出願である。
本願は、2009年6月18日に出願したUS特許出願第12/487,623号の一部継続出願である。
本願は、2008年9月3日に出願したUS特許出願第61/093,852号の優先権を主張する。
発明の分野
本発明は、一般的には、コンピュータ・システムの分野に関し、特に、グラフィカル空間または他のデータ表現空間を通じて線形推移(linear verging)または追跡運動を制御するために、人間の操作者の手の線形空間運動、または同質の次元活動(analogously dimensional activity)の実行を可能にするシステムおよび方法に関するものである。
従来技術
ユーザがコマンドを入力しコンピュータ・システムと相互作用する際、ディスプレイ上にあるウィンドウにおいてデータまたは画像を操作したり、あるいはマウス、キーボード、ジョイスティック、クロス・キー等のような入力デバイスを用いて、ウィンドウと関連のあるメニューまたは関連のあるプログラムから動作を選択することがある。また、このような入力デバイスは、位置変換デバイスとして動作することもでき、カーソルのようなグラフィカルな画面上ポインタを位置付けるために用いることができる。カーソルは、例えば、リバイズすべきキャラクタを示すように、あるいはデータを入力すべきまたは動作を実行すべき位置を示すように機能する。カーソルは、ある形態または外観では、コンピュータ・ディスプレイ上に現れるのが通例である。ユーザが入力デバイスを操作すると、その結果、カーソルの対応する移動が生ずる。つまり、例えば、マウスまたは他の入力デバイスを動かすと、同じ方向にカーソルが移動することになる。
しかしながら、これら従来の入力デバイスは、単なるデバイスに過ぎないことが多い。ユーザは、有線マウスまたはワイヤレス・マウスあるいは他の入力デバイスを有し、そのデバイスを用いて、選択、位置変換、活性化、およびその他の入力機能を管理しなければならない。これらの物理的デバイスの使用は、自然でないまたは直観的でないことが多い。別の欠点は、異なる機能を実行できるように入力デバイスのコンテキストを変更するためには、一定のステップを一通り実行しなければならないことである。
引用による包含
本明細書において述べる各特許、特許出願、および/または刊行物は、本願において引用することにより、個々の特許、特許出願、および/または刊行物の各々が具体的にそして個々に、引用することにより本願に含まれることを示した場合と同程度にその全体が本願にも含まれるものとする。
図1は、一実施形態の下における、ジェスチャ制御システムのブロック図である。 図2は、一実施形態の下において、ジェスチャ制御システムを用いてデータ空間をナビゲートする場合のフロー図である。 図3は、一実施形態の下において、ディスプレイ上にレンダリングされたデータ・フレームの例である。 図4は、一実施形態の下において、一方側に押し返す場面を示し、本体が解放位置にある操作者の手であり、掌が前方方向に面している(z−軸に沿って)(例えば、操作者の前にある表示画面に向かって)。 図5(図5a、図5b、図5c、および図5dを纏めて)は、一実施形態の下における、デッド・ゾーンにおいてデッド・ゾーン閾値の点までの本体プッシュバック・ジェスチャを示すグリフ(glyph)の一例である。 図6(図6a、図6b、図6c、および図6dを纏めて)は、一実施形態の下における、デッド・ゾーンにおいてデッド・ゾーン閾値の点を超えた本体プッシュバック・ジェスチャ(z−軸に沿って、ディスプレイに向かって、そして操作者から離れるように)を示すグリフの一例である。 図7は、一実施形態の下における、対応するプッシュバックによって得られるデータ・フレームの第1の相対的なz−軸変位の一例である。 図8は、一実施形態の下における、対応するプッシュバックによって得られるデータ・フレームの第2の相対的なz−軸変位の一例である。 図9は、一実施形態の下において、本体の横方向運動から得られるデータ・フレームの横方向x−軸変位の一例である。 図10は、一実施形態の下において、テーブル・ライク表示面(図示せず)上に本体を水平に保持した、物理的場面の一例である。 図11は、一実施形態の下において、プッシュバック・システムを係合した際に、異なる視感度で徐々に現れる、現行のレイヤ(例えば、現行のデータ・フレーム)に隣接するレイヤ(例えば、データ・フレーム)の一例である。 図12は、一実施形態の下におけるスタックの上方変換の一例であり、直前の現行レイヤ(例えば、直前の現行データ・フレーム)が徐々に透明になり(この例では見えなくなる)、一方直前の現行レイヤに隣接するレイヤ(例えば、隣接するデータ・フレーム)が、現在の現行レイヤとして見えてくる。 図13は、一実施形態の下におけるマーキング・タグの図である。 図14は、実施形態におけるジェスチャ・ボキャブラリ(gesture vocabulary)におけるポーズの図である。 図15は、実施形態におけるジェスチャ・ボキャブラリにおける方位の図である。 図16は、一実施形態におけるジェスチャ・ボキャブラリにおける2つの手の組み合わせの図である。 図17は、一実施形態におけるジェスチャ・ボキャブラリにおける方位配合の図である。 図18は、一実施形態におけるシステム動作のフロー図である。 図19(図19−1および図19−2を纏めて)は、一実施形態におけるコマンドの一例である。 図19(図19−1および図19−2を纏めて)は、一実施形態におけるコマンドの一例である。 図20は、一実施形態の下において、拡張した被写体深度において三次元情報を抽出するジェスチャ・ベース制御システムのブロック図である。 図21は、一実施形態の下において、ジェスチャ・ベース制御システムにおいて用いられる波頭コーディング撮像システムのブロック図である。 図22は、一実施形態の下において、2つの波頭コーディング・カメラを含む波頭コーディング撮像システムを用いて、拡張した被写体深度において三次元情報を抽出するジェスチャ・ベース制御システムのブロック図である。 図23は、一実施形態の下において、拡張した被写体深度において抽出された三次元情報を用いるジェスチャ・ベース制御のフロー図である。 図24は、一実施形態の下において、ジェスチャ・ベース制御システムにおいて用いられる波頭コーディング設計プロセスのブロック図である。 図25は、一実施形態の下において、スロークス(slawx)、プロテイン(protein)、およびプール(pool)を用いたデータ表現を含む処理環境のブロック図である。 図26は、一実施形態の下における、プロテインのブロック図である。 図27は、一実施形態の下における、デスクリップ(descrip)のブロック図である。 図28は、一実施形態の下における、インジェスト(ingest)のブロック図である。 図29は、一実施形態の下におけるスロー(slaw)のブロック図である。 図30Aは、一実施形態の下において、プールの中にあるプロテインのブロック図である。 図30B(図30B−1および図30B−2を纏めて)は、一実施形態の下における、スロー・ヘッダ・フォーマットを示す。 図30B(図30B−1および図30B−2を纏めて)は、一実施形態の下における、スロー・ヘッダ・フォーマットを示す。 図30Cは、一実施形態の下においてプロテインを用いる際のフロー図である。 図30Dは、一実施形態の下において、プロテインを組み立てるまたは発生する際のフロー図である。 図31は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。 図32は、多数のデバイスと、これらのデバイスの1つ以上で走る多数のプログラムとを含む処理環境のブロック図であり、一実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。 図33は、多数のデバイスと、これらのデバイスの1つ以上で走る多数のプログラムを含む処理環境のブロック図であり、一代替実施形態の下において、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。 図34は、多数の入力デバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、別の代替実施形態の下において、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。 図35は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする。 図36は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする。 図37は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、追加の代替実施形態の下において、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いることにより、当該プロセス・プールにおいて生成し配置された状態情報の特性に影響を及ぼすまたは制御することができる。
空間動作環境(SOE)のためのシステムおよび方法について説明する。SOEは、ジェスチャ・ベース制御システムを含み、空間ユーザ・インターフェース(SUI)または空間インターフェース(SI)と呼ぶこともできる。SOEのデータ空間全域においてナビゲートするためのシステムおよび方法について説明する。ナビゲーションは、検出器を通じて受信したジェスチャ・データから本体のジェスチャを検出することを含む。このジェスチャ・データは、ある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データである。検出は、ジェスチャ・データを用いてジェスチャを識別することを含む。ナビゲーションは、ジェスチャをジェスチャ信号に変換すること、およびジェスチャ信号に応答して、データ空間全域でナビゲートすることを含む。データ空間は、物理的空間において表されるデータ・セットを構成するデータ表現空間である。
以下の説明では、SOEの完全な理解を更に深めるために、多数の特徴について説明する。SOEは、これらの具体的な詳細がなくても実用化できることは明白である。その他の場合、周知の機構については、詳細に説明していない。
空間動作環境(SOE)
図1は、一実施形態の下におけるSOEのブロック図である。ユーザは、彼の手101および102を、カメラ104A〜104Dのアレイの視野に置く。これらのカメラは、指ならびに手101および102の位置、方位、および移動を検出し、出力信号をプリプロセッサ105に発生する。プリプロセッサ105は、カメラ出力をジェスチャ信号に変換し、このジェスチャ信号をシステムのコンピュータ演算装置107に供給する。コンピュータ107は、入力情報を用いて、1つ以上の画面上カーソルを制御するコマンドを発生し、ビデオ出力をディスプレイ103に供給する。
このシステムでは、一人のユーザの手を入力として示すが、SOE100は、多数のユーザを用いても実施することができる。加えて、手の代わりにまたは手に加えて、本システムはユーザの身体の任意の1つ以上の部分を追跡することができ、その部分とは、頭部、足、脚部、腕、肘、膝等を含む。
図示の実施形態では、4台のカメラまたはセンサを用いて、ユーザの手101および102の位置、方位、および移動を検出する。SOEの範囲や主旨から逸脱することなく、SOE100はこれらよりも多いカメラ(例えば、6台のカメラ、8台のカメラ等)または少ないカメラ(例えば、2台のカメラ)とでも用いることができることは言うまでもない。加えて、実施形態例では、カメラまたはセンサは対称的に配置されているが、SOE100にはこのような対称性の要件はない。ユーザの手の位置、方位、および移動を許容するのであれば、カメラまたはセンサは、いずれの数および位置付けでも、SOE100において用いることができる。
一実施形態では、用いられるカメラは、グレー・スケール画像を取り込むことができるモーション・キャプチャ・カメラである。一実施形態では、用いられるカメラは、Vicon MX40カメラのような、Vicon社が製造するカメラである。このカメラは、カメラ内部処理を含み、毎秒1000フレームの画像取り込みが可能である。モーション・キャプチャ・カメラは、マーカを検出し位置を突き止めることができる。
一実施形態のSOEのカメラまたはセンサは、種々の形態をなすことができる。一実施形態では、2つ以上の小型カメラを用い、これらを互いに結合してステレオ映像システムを形成する。このステレオ映像システムは、少なくとも、その視野内にあるオブジェクトについての三次元データ点クラウド(data point cloud)を発生する。データ・セットにおける点の分解深度精度(resolved depth accuracy)は、カメラ基準線からの距離を含む多数の要因にしたがって変化するが、約1ミリメートル(mm)である。
ステレオ・センサ・セットによって点クラウドが発生されたとすると、SOEのコンポーネントは、手および/または指の位置を抽出し、次いでこれらから量子化した手のポーズならびに連続手および指方位ベクトルを再現することができる。この再現に用いられる手法は、初期入力が、集計−タグ付きデータ(aggregate-tagged data)ではなく、未構造化点クラウド(unstructured point clouds)であることを除いて、以下で説明する方法と実質的に同様である。手および指の表現は、本システムのインタラクティブ・モードを実施するメカニズムに利用可能となる。
実施形態は、ステレオ結合カメラのセットを多数用いるか、または1台よりも多いカメラを扱うために画素データを処理する修正相関アルゴリズムを用いる。カメラの台数が増加すると、例えば、視野を広げることができ、手の部分の遮蔽(occlusion)によって生ずる問題を減らすことができ、および/または点クラウド・データの精度を高めることができる。
記載している実施形態では、カメラは光学的検出に用いられるセンサである。他の実施形態では、カメラまたは他の検出器は、電磁、静磁気、RFID、またはその他の任意の適した種類の検出に用いることができる。
プリプロセッサ105は、三次元空間点再現および骨格点ラベリングを発生するために用いられる。ジェスチャ変換器106は、3D空間情報およびマーカ・モーション情報をコマンド言語に変換するために用いられる。コマンド言語は、コンピュータ・プロセッサによって解釈され、ディスプレイ上におけるカーソルの位置、形状、および動作(action)を更新することができる。SOE100の代替実施形態では、プリプロセッサ105およびジェスチャ変換器106を組み合わせて1つのデバイスにすることもできる。
コンピュータ107は、Apple社、Dell社、または任意のその他の適した製造業者によって製造されるような、任意の汎用コンピュータとすればよい。コンピュータ107は、アプリケーションを実行し、表示出力を供給する。カーソル情報は、他の場合にはマウスまたはその他の先行技術の入力デバイスから得られるが、ここではジェスチャ・システムから得られる。
データ空間のナビゲーション
一実施形態のSOEは、グラフィカル空間または他のデータ表現空間全域における線形推移または追跡運動を制御するために、「プッシュバック」(pushback)、即ち、人間の操作者の手の線形空間運動、または同質の次元活動の実行を可能にする。SOE、およびそれによって確立される計算および認識の連携は、スケールのレベルをナビゲートする、主に線形な「深度次元」を横断する、あるいは、最も一般的には、量子化されたまたは「抑止された」(detented)パラメータ空間にアクセスするための、基本的な構造化された方法を提供する。また、SOEは、操作者が意図的に追加コンテキストを取得することができる有効な手段、空間的、概念的、または計算的のいずれであっても、近傍(vicinities)および近隣(neighborhoods)を理解するための素早い技法を提供する。
ある種の実施形態では、プッシュバック技法は、従前の入力デバイス(例えば、マウス、トラックボール、一体化したスライダ、またはノブ)を用いることができ、または操作者自身の身体(person)から外部のタグ付きオブジェクトまたは追跡対象オブジェクトに依存することができる(例えば、器具を取り付けられた連鎖のリンク(instrumented kinematic linkages)、静磁気的に追跡される「入力レンガ」(input bricks))。別の代替実施形態では、プッシュバックの実施は、制御システム全体として十分であればよい。
一実施形態のSOEは、それよりも大きな空間相互作用システムの一部であり、その中に統合されている。このシステムは、コンピュータの制御のための慣習的なマウス主体グラフィカル・ユーザ・インターフェース(「WIMP」UI)方法に取って代わり、代わりに、(a)1つ以上のタイプのオブジェクト(例えば、人間の手、人間の手の上にあるオブジェクト、静止オブジェクト等)を追跡することができる物理的センサ、(b)検知された手の徐々に進展する位置、方位、およびポーズを分析して、一連のジェスチャ・イベントにする手段、(c)このような空間的イベントおよびジェスチャ・イベントを表すための記述的方式、(d)このようなイベントを制御プログラムにそしてその内部に配信するフレームワーク、(e)ジェスチャ・イベントのストリームによってエンコードされた人間の意思(コマンド)を、イベント・ストリーム自体およびイベント解釈の用途特定結果双方のグラフィカル、聴覚的、およびその他の表示様式描写(display-modal depiction)と同期させる方法を備えている。これらの全てについて、以下で詳しく説明する。このような実施形態では、プッシュバック・システムは、追加の空間およびジェスチャ入力−および−インターフェース技法と統合される。
図2は、一実施形態の下においてデータ空間をナビゲートする際のフロー図である。ナビゲーションは、検出器202を通じて受信したジェスチャ・データから、本体のジェスチャを検出することを含む。ジェスチャ・データは、ある時点および物理的空間における本体の瞬時的状態の絶対三次元位置データである。検出は、ジェスチャ・データ204を用いてジェスチャを識別することを含む。ナビゲーションは、ジェスチャをジェスチャ信号206に変換すること、そしてジェスチャ信号208に応答してデータ空間全体をナビゲートすることを含む。このデータ空間は、物理的空間において表されるデータ・セットを含むデータ表現空間である。
一実施形態の全体的な往復レイテンシ(round-trip latency)(センサに対する手の動き→ポーズ分析→プッシュバック解釈システム→ディスプレイ・デバイスへのコンピュータ・グラフィクスのレンダリング→操作者の視覚系)が低く抑えられているとき(例えば、実施形態が約15ミリ秒のレイテンシを呈する)、そして、システムの他のパラメータが適正に調整されているとき、プッシュバック相互作用の知覚的結果(perceptual consequence)は、物理的因果関係(causality)の格別な感覚となる。SOEは、ばね装填構造に対抗して押すことの物理的に反響する比喩(physically resonant metaphor)を文字どおりに解釈する(literalize)。知覚される因果関係は、非常に有効なフィードバックとなる。プッシュバック・システムによって供給される他のもっと抽象的なグラフィカル・フィードバック様式と共に、そして操作者の移動の解釈におけるある程度の自由度の意図的な抑制によって、このようなフィードバックは、総体的および精細な人間動力活動(human motor activity)双方の、制御メカニズムとしての、安定した、信頼性のある、そして繰り返し可能な使用を可能にする。
SOEのコンテキストを評価する際、多くのデータ・セットは本質的に空間的である。これらは、リテラル物理空間(literal physical space)内における現象、イベント、測定、観察、または構造を表す。より抽象的な他のデータ・セット、またはリテラルであるが非空間的情報をエンコードする他のデータ・セットについては、表現(視覚的、聴覚的、または他の表示様式を伴う)を用意することが望ましいことが多い。その基本的態様の一部は、1つのスカラー値パラメータによって制御され、そのパラメータを空間的次元と関連付けることも有益であることが多い。プッシュバック・メカニズムによる操作から利点が得られるのは、この1つのスカラー・パラメータの操作である。これについては、以下で詳しく説明する。
更に、表現は、それらのパラメータに、小さな複数の離散値だけを許可することもできる。実際には、離散値は1つのこともあり、それに対してデータ・セットは最適に見なされる。このような場合、「抑止されたパラメータ」、即ち、パラメータが明示的に「抑止された空間」の表現空間の一次元にマッピングされているか否か伝えることが有用である。本明細書における「抑止された」(detented)という用語の使用は、パラメータの好ましい量子化だけでなく、ラチェットの視野触覚的感覚(visuo-haptic sensation)、磁気整合メカニズム、ジョグ−シャトル・ホイール、および意図的な機械的抑止を有する他の豊かなこの世のデバイス(worldly devices)を呼び起こすことを意図している。
このようなパラメータの自明であるが極めて重要な例には、限定ではなく、(1)コンピュータ・グラフィクス環境における、データ・セットのレンダリング可能な表現からの合成カメラの距離、(2)データが元のデータ・セットからサンプリングされ、レンダリング可能な形態に変換される密度、(3)サンプルが時間可変データ・セットから引き出され、レンダリング可能な表現に変換される時間的インデックスが含まれる。これらは、普遍的な手法であり、無数のドメイン特定パラメータ化も存在する。
SOEのプッシュバックは、一般に、データ・セットのパラメータ−制御軸を、物理的空間におけるローカルに関連のある「深度次元」と整合させ、深度次元に沿った構造化実世界運動(real-world motion)が制御軸に沿ったデータ−空間変換を実行することを可能にする。その結果、パラメータ空間をナビゲートする非常に効率的な手段が得られる。以下に、SOEにおいて実施した場合のプッシュバックの代表的な実施形態の詳細な説明が続く。
プッシュバックの一例では、操作者は、テキストおよび画像を含む1つの「データ・フレーム」が現れる大きな壁ディスプレイの前において、十分な距離のところに立つ。グラフィカル・データ・エレメントは、静的でも動的でもよい。図3は、一実施形態の下においてディスプレイ300上にレンダリングされたデータ・フレーム310の一例である。この例のデータ・フレーム310は画像を含むが、そのように限定されるではない。データ・フレーム310は、それ自体は二次元構造であるが、三次元コンピュータ・グラフィクス・レンダリング環境内に存在する。その基礎となる座標系は、部屋、ならびにディスプレイ300および操作者を含む、その内容物を記述するのに都合がよい実世界座標と一致するように配置されている。
操作者の手は、センサによって追跡され、センサは、彼女の指の位置および方位、ならびに恐らくは手の塊全体の位置および方位を、高い正確度および高い時間率(temporal rate)で解明する。システムは、各手の「ポーズ」、即ち、指の互いに対する、そして手の塊に対する幾何学的配置を特徴付けるために、得られた空間データを分析する。この実施形態例で追跡するオブジェクトは、人間の手(1つまたは複数である)が、代替実施形態では多くの他のオブジェクトも入力デバイスとして追跡することができる。図4は、一実施形態の下において、一方側に押し返す場面を示し、本体400が解放位置にある操作者の手であり、掌が前方方向に面している(z−軸に沿って)(例えば、操作者の前にある表示画面に向かって)。この説明に限って言えば、壁ディスプレイ(図示せず)は、xおよびy次元を占めるように置かれ、zは操作者とディスプレイとの間における次元を記述する。このプッシュバック実施形態と関連のあるジェスチャ相互作用空間410は、定数zの面で突き合わされた2つの空間を備えている。ディスプレイから遠い(即ち、操作者に近い)抑止間隔空間(detented interval space)を「デッド・ゾーン」412と呼び、近い方の半空間を「アクティブ・ゾーン」414と呼ぶ。デッド・ゾーン412は、逆方向(操作者に向かい、ディスプレイから離れる方向)に不定に広がるが、前方には有限距離だけ広がり、デッド・ゾーン閾値413にて終端となる。アクティブ・ゾーン414は、デッド・ゾーン閾値413からディスプレイまで前方に広がる。ディスプレイ上にレンダリングされるデータ・フレーム(1つまたは複数)は、アクティブ・ゾーン414における本体の移動によって、相互作用的に制御される、即ち、「押し戻される」(402)。
データ・フレームは、ディスプレイのサイズおよびアスペクト比と正確に一致するサイズおよびアスペクト比で構成され、その中心および法線ベクトルがディスプレイのこれら物理的属性と一致するように位置付けおよび方位が決められるが、実施形態はそのように限定されるのではない。シーン(scene)をレンダリングするために用いられる仮想カメラは、ディスプレイから直接前方に、大まかに操作者の距離に配置されている。このコンテキストでは、レンダリングされたフレームは、したがって、正確にディスプレイを満たすことになる。
可視フレームの左右には、論理的に多数の追加の共面データ・フレームが配置されている。これらの共面データ・フレームは均一に離間され、適度のギャップがそれに直接隣接するものから互いに分離する(以下で説明する図6、図7、および図8を参照)。これらは、コンピュータ・グラフィクス・レンダリング・ジェオメトリの物理的/仮想レンダリング境界の外側にあるので、これらの横方向に変位した隣接データ・フレームは初期状態では見えない。データ空間は、その幾何学的構造が与えられれば、z−方向において1つの自然な抑止部を、そして複数のx−抑止部を有することは理解されよう。
操作者は、彼女の左手を軽く握ったポーズで保持して、彼女の肩まで持ち上げる。次いで、彼女は指を開いて、これらが上方を指し示し、親指が右側を指し示し、彼女の掌が画面に面するようにする(以下で詳細に説明するジェスチャ記述言語では、このポーズ遷移は、[^^^^>:x^から||||-:x^]というように表現される)。本システムは、新たなポーズを検出すると、プッシュバック相互作用を誘起し、そのポーズが最初に入力されたところである手の絶対三空間位置を直ちに記録する。この位置は、「原点」として用いられ、以降の手の運動は、この原点からの相対的オフセットとして報告される。
直ちに、2つの同心円状の、部分的に透明なグリフ(glyph)がフレームの中心に(つまり、ディスプレイの中心に)重畳される。図5は、一実施形態の下において、デッド・ゾーンにおける本体プッシュバック・ジェスチャをデッド・ゾーン閾値の点まで示すグリフ501/502の例である。第2グリフ502が第1グリフ501よりも小さいのは(図5a参照)、操作者の手がデッド・ゾーン内に存在し、それを貫通するプッシュバック動作が「未だ」加わっていないことを示す。操作者が彼女の手を前方に(デッド・ゾーン閾値およびディスプレイに向かって)移動させると、第2グリフ502が徐々に大きくなる(図5b、図5c、および図5dを連続して参照のこと)。操作者の手がデッド・ゾーン閾値に来る地点で、第2グリフ502のサイズは第1グリフ501と同等になる(図5d参照)。この例のグリフ501/502は、操作者の手がその開始位置から、デッド・ゾーンをアクティブ・ゾーンから分離するデッド・ゾーン閾値に向かって進行する際における、グリフの同心円エレメントの進展を示す。グリフ502の内部にある「歯状」部分は、手が閾値に近づくにつれて大きくなり、手が閾値の位置に達したときに、内側グリフ502および(静止)外側グリフ501の半径が、正確に一致するように配置されている。
第2グリフ502は、操作者が彼女の手をデッド・ゾーン閾値から遠離るように、そしてディスプレイから遠離るように移動させると、第1グリフ501の内側でサイズが小さくなるが、常に第1グリフ501と同心状にあり、ディスプレイの中心に位置することに変わりはない(図5d、図5c、図5b、および図5aを連続して参照のこと)。極めて重要なのは、操作者の手の運動のz−成分のみがグリフのスケーリングにマッピングされており、手の運動の副次的なx−およびy−成分は何の寄与もなさないことである。
操作者の手がデッド・ゾーンの閾値を順方向に横断し、アクティブ・ゾーンに入ると、プッシュバック・メカニズムが関与する(engage)。手の相対的なz−位置(閾値から測定する)は、スケーリング関数の対象となり(subject)、その結果得られる値は、データ・フレームおよびその横方向の近隣のz−軸変位を行うために用いられるので、そのフレームのレンダリング画像はディスプレイから後退するように見え、そして近隣データ・フレームも見えてきて、表示空間の縁から「埋まっていく」。合成カメラの一定角度範囲(constant angular subtent)は、平面がカメラから離れるように移動するに連れて、フレームが位置する平面のより多くを幾何学的に「取り込む」。z−変位は連続的に更新されるので、操作者は、彼女の手をディスプレイに向けて押し込んだり、彼女自身に向かって引いたりすると、彼女の動きに直接応答して、横方向に後退および近接するフレームの集合体(collection)を知覚する。
図7は、一実施形態の下における、対応するプッシュバックから得られるデータ・フレーム703の第1の相対的z−軸変位の一例である。先に説明したように、レンダリングされたデータ・フレーム703の画像は、ディスプレイ700から後退するように見え、隣接するデータ・フレーム702/704が見えるようになり、ディスプレイ空間の縁から「埋まっていく」。隣接するデータ・フレーム702/704は、多数の追加の共面データ・フレームを含み、可視フレームの左右に論理的に配置され、均一に離間され、適度なギャップが各々をその直接隣接するものから分離する。図8は、一実施形態の下において、対応するプッシュバックから生ずるデータ・フレーム703の第2の相対的z−軸変位の一例である。第1の相対的z−軸変位について検討し、そのプッシング(pushing)から操作者の手の更なるプッシング(z−軸に沿ってディスプレイに向かい操作者から離れる更なるプッシング)の結果、第1の相対的z−軸変位が生じたと仮定すると、レンダリングされたフレーム703の画像は、更にディスプレイ700から後退するように見えるので、追加の隣接データ・フレーム701/705が見えるようになり、更に表示空間の縁から「埋まっていく」。
一方、対をなす同心円状グリフは、ここでフィードバックの変更を示す。操作者の手はアクティブ・ゾーン内にあり、第2グリフ502は、スケーリングに基づく反応から、回転反応に切り替わり、手の閾値からの物理的なz−軸オフセットが、正の(平面内)角度オフセットにマッピングされる。図6は、一実施形態の下において、グリフ501/502がデッド・ゾーン閾値の点を超えた、デッド・ゾーンにおける本体のプッシュバック・ジェスチャ(z−軸に沿って、ディスプレイに向かって、そして操作者から遠離る)例である。この例のグリフ501/502は、一旦操作者の手がデッド・ゾーン閾値を交差した際における、即ち、プッシュバック・メカニズムが能動的に関与するときのグリフの進展を示す。つまり、操作者の手のディスプレイに向かう移動およびディスプレイから離れる移動が、第2グリフ502の時計回りおよび反時計回り方向の回転によって視覚的に示され(第1グリフは、以前と同様、静止基準状態を示す)、グリフの「歯状」エレメント520が、手の閾値からのオフセットの線形関数として回転し、線形運動を回転表現に変える。
したがって、この例では、z−軸に沿ったディスプレイに向かう手の移動の追加の第1増分が、第2グリフ502の増分時計回り方向回転510によって視覚的に示され(第1グリフは、以前と同様、静止基準状態を示す)、グリフの「歯状」エレメント520は、手の閾値からのオフセットの線形関数に対応する第1の量だけ回転する。z−軸に沿ったディスプレイに向かう手の移動の追加の第2増分は、第2グリフ502の増分時計回り方向回転512によって視覚的に示され(第1グリフは、以前と同様、静止基準状態を示す)、グリフの「歯状」エレメント520は、手の閾値からのオフセットの線形関数に対応する第2の量だけ回転する。更に、z−軸に沿ったディスプレイに向かう手の移動の第3の増分は、第2グリフ502の増分時計回り方向回転514によって視覚的に示され(第1グリフは、以前と同様、静止基準状態を示す)、グリフの「歯状」エレメント520は、手の閾値からのオフセットの線形関数に対応する第3の量だけ回転する。
この見本とした用途では、操作者の手がアクティブ・ゾーン内にあるとき、副次的な次元感度が関与する。手の横方向(x−軸)運動が、この場合も可能なスケーリング関数によって、水平フレーム・シーケンスのx−変位にマッピングされる。スケーリング関数が正である場合、その効果は操作者の手の位置的「追従」(positional following)の1つであり、操作者はフレームを左右にスライドさせていることを知覚する。図9は、一実施形態の下において、本体の横方向運動から生ずるデータ・フレームの横方向x−軸変位の一例である。横方向の本体移動によって生ずる横方向データ・フレーム運動のこの例では、データ・フレームは左から右にスライドし、特定のデータ・フレーム701/702が、表示空間700の左縁を通ってビューから消えるまたは部分的に消えていき、一方追加のデータ・フレーム705が表示空間700の右縁から埋まっていくようになっている。
最後に、操作者が彼女の手の掌を前方に向けたポーズを終了させると(例えば、手を閉じて拳を作ることによって)、プッシュバック相互作用が終了し、フレームの集合体は素早くその元のz−抑制(即ち、ディスプレイと同一平面上)に戻される。同時に、フレーム集合体は、1つのフレームのディスプレイとのx−一致を達成するために、横方向に調節させられる。終了するフレーム、つまり、「ディスプレイの中心に来る」フレームは、プッシュバック終了の時点において同心円状グリフの中心に最も近かった、即ち、最も近いx−抑止点(nearest x-detent)にあった、いずれかのフレームである。ここでは、グリフ構造は、選択レティクルとして第2の機能を果たすように見えるが、実施形態はそのように限定されるのではない。フレーム集合体のz−およびx−位置は、通例、「ばね装填戻り」(spring-loaded return)の視覚的感覚を与えるために、短い時間感覚でそれらの最終的なディスプレイ−一致値まで進行することが許される。
この例において配備されるプッシュバック・システムは、(1)直接視覚視線−−深度次元−−に沿って総計したデータ・セットを可変的に変位させることによって、認識的に貴重な「近隣コンテキスト」を取得することによって、視野に入れるデータ・セットを増やす(データ・セットのいずれの所与の部分についても、その角度範囲を縮小することと交換に)、(2)横方向に配列されたデータ・セットをその自然水平次元に沿って可変的に変位させることによって、近隣コンテンツを取得し、データのいずれの所与の区間についてもその角度範囲を維持するが、馴染みのある「スクローリング」という感覚で、古いデータの見える範囲(visibility)を新しいデータのそれと交換する、(3)素早く次元的に制約されたナビゲーションによって、データ・セットの離散化エレメントを選択するための効率的な制御様式を提供する。
一実施形態のプッシュバックの他の例では、操作者がウェスト・レベル・ディスプレイ・デバイスの直ぐ隣に起立する。ディスプレイ・デバイスのアクティブ面は、床面と平行な水平面にある。ここでは、座標系は、以前の例のそれと矛盾しないように設定される。表示面はx−z面内にあるので、表面に対して法線を表すy−軸は、物理的重力ベクトルに対して反対に位置合わせされる。
図10は、一実施形態の下において、本体1000をテーブル状表示面(図示せず)の上で水平に保持した、物理的場面の一例を示す。この例では、本体1000は操作者の手であるが、実施形態はそのように限定されるのではない。プッシュバック相互作用は両面型であるので、上側デッド・ゾーン閾位値1013Uおよび下側デッド・ゾーン閾値1013Lがある。加えて、プッシュバック操作によってアクセスされる線形空間には、離散空間抑止点1015U(例えば、「第1抑止点」、「第2抑止点」、「第3抑止点」、「第4抑止点」)が上側アクティブ・ゾーン1014Uの中に設けられており、離散空間抑止点1015L(例えば、「第1抑止点」、「第2抑止点」、「第3抑止点」、「第4抑止点」)が下側アクティブ・ゾーン1014Lの中に設けられている。一実施形態の相互作用空間は、上側デッド・ゾーン1012Uおよび下側デッド・ゾーン1012Lを備えている比較的小さなデッド・ゾーンが、プッシュバックが関与する垂直(y−軸)位置を中心に配され、アクティブ・ゾーン1014Uがこのデッド・ゾーンの上となり、アクティブ・ゾーン1014Lがこのデッド・ゾーンの下になるように構成されている。
操作者は、データ・セットの一例を用いて作業しており、このデータ・セットは離散平行面(以下で説明する図10参照)のスタックに分析されており、これらの離散平行面がデータ・フレームとなる。このデータ・セットは、このようにして、それが表す物理的現実の自然な結末(例えば、断層写真走査からの離散スライス、三次元集積回路の多数のレイヤ等)として構成することができ、またはこれは、データ(例えば、多数のスペクトル帯域において取得した衛星画像、10年毎のデータが別個のレイヤに入っている、地理的に組織された人口調査データ等)を分離および離散化するように論理的または有益であるので、そのように構成することができる。更に、データの視覚表現は、静的であってもよく、または動的エレメントを含んでもよい。
プッシュバック機能が関与していない間隔では、1つのレイヤが「現行」と見なされ、表示によって視覚的に目立って表され、物理的にディスプレイと一致すると知覚される。現行のレイヤの上および下にあるレイヤは、この例では、視覚的に一目瞭然ではない(その存在を示すためにこじんまりした図象が用いられているが)。
操作者は、ディスプレイ上で彼の閉じた右手を広げる。手を広げると、指が前方に広がり、親指が左に広がり、掌は下方を指し示し(遷移:[^^^^>:vxから||||-:vx])、このときにプッシュバック・システムが関与する。短い間隔(例えば、200ミリ秒)の間、現行のレイヤに隣接するある数のレイヤが、異なる視感度で現れる。各々は、ぼやけフィルタおよび透明性で、上下に合成される。その「程度」(severities)はそれぞれのレイヤの現行レイヤからの通常距離(ordinal distance)に依存する。
図11は、一実施形態の下において、プッシュバック・システムが関与すると、現行のレイヤ1101(例えば、データ・フレーム1101)に隣接するレイヤ1102(例えば、データ・フレーム1102)が、異なる視感度で、徐々に現れる例を示す。この例では、スタックが多数のデータ・フレーム1101〜110X(Xは、データ・フレームのデータ・セットに相応しいのであれば、いずれの数でもよく、この例では、スタックがデータ・フレーム1101、1102、1103、1104、および1105を備えるように、Xは5となっている)を備えており、プッシュバック・システムを用いてこれらの間であちこちに移動する(traverse)ことができる。
同時に、以前の例から馴染みのある同心円状フィードバック・グリフが現れる。この場合、小さなデッド・ゾーンが、プッシュバックが関与する垂直(y−軸)位置を中心として配置され、アクティブ・ゾーンがデッド・ゾーンの上下双方に来るように、相互作用が構成されている。この配置によって、元のレイヤに「帰り着く」際において補助が与えられる。この場合、グリフは、連続レイヤに対する接近指示(directed proximity)を示す追加の単純なグラフィックによって作成される。
操作者の手がデッド・ゾーン内に残っている間、レイヤ・スタックの変位は発生しない。グリフは、直前の例における場合と同じ「予備的」行動を表し、手がゾーンのいずれかの境界に近づくに連れて、内側のグリフが大きくなる(勿論、ここでは、行動は両面で対称的である。内側のグリフは、手の開始y−位置では最小スケールにあり、手が上または下に動いても、外側のグリフと一致する方向に大きくなる)。
操作者の手がデッド・ゾーンの上平面を超えて上方に移動すると、内側のグリフは外側のグリフと重なり合い、以前と同様に、その方向に手が更に移動すると、内側グリフの反時計回り方向の回転運動が生ずる。同時に、レイヤ・スタックは「上方に平行移動」し始める。これらのレイヤの位置、元の現行レイヤの上にあるレイヤほど透明性が高くぼやけており、元の現行レイヤ自体はますます透過して行きそして一層ぼやけていく。その下にあるレイヤは、はっきりと見えてきてぼやけが少なくなる方向に移動する。
図12は、一実施形態の下において、以前の現行レイヤ1101(例えば、データ・フレーム1101)(図示せず、図11参照)が透明度を増して行き、この直前の現行レイヤ1101に隣接するレイヤ1102(例えば、データ・フレーム1102)が現在の現行レイヤとして見ることができるようになる、スタックの上方平行移動の一例である。加えて、スタックが上方に平行移動するに連れて、現在の現行レイヤ1102に隣接するレイヤ1103(例えば、データ・フレーム1103)が、異なる視感度で徐々に現れてくる。前述のように、スタックは、多数のデータ・フレーム1101〜110X(Xは、データ・フレームのデータ・セットに相応しいのであれば、いずれの数でもよく、この例では、スタックがデータ・フレーム1101、1102、1103、1104、および1105を備えるように、Xは5となっている)を備えており、プッシュバック・システムを用いてこれらの間であちこちに移動することができる。
レイヤ・スタックは、実世界距離(即ち、操作者の手のその初期位置からの変位を、通常座標(room coordinates)において測定したもの)と連続するレイヤ間における「論理的」距離との間におけるマッピングによって構成されている。レイヤ・スタックの平行移動は、勿論、近接度グラフィクスの瞬時的出現のように、このマッピングの結果である。一方、これは、表示面と現行レイヤとの間において(当初は)大きくなる距離を示す。また、これは、表示面が現在現行レイヤの下にあることも示す。
手の運動は続き、レイヤ・スタックは最終的に、現行のレイヤおよびその次の下にあるレイヤが正に表示面を跨る(即ち、表示面から等距離となる)位置を通過する。この地点を丁度通過するときに、近接度グラフィクスが変化して、表示面が今や現行のレイヤよりも高いことを示す。このとき、「現行レイヤ・ステータス」は既に次に低いレイヤに割り当てられている。一般に、現行のレイヤは、常に物理的表示面に最も近いレイヤであり、操作者がプッシュバック・システムを解除したときに、「選択される」レイヤである。
操作者が彼の手を上げ続けると、連続する各レイヤが表示面に向けて送られ、徐々に良く見えるようになり(resolved)、表示面との一時的な一致を得て、次いで次に低いレイヤを優先して、再び透明になりぼやけていく。操作者が彼の手の運動方向を逆にして、それを下げると、プロセスが逆になり、内側のグリフが時計回り方向に回転する。手が最終的にデッド・ゾーンを通過すると、元の現行レイヤが正確に表示面とy−一直線になり(y-alignment)、スタックが停止する。次いで、スタックのy−進行が再開し、元の現行レイヤの上にある平面に連続的に焦点を合わせる。操作者の総合的な知覚は、彼が彼の手を用いて、レイヤのスタックを押し下げそして引き上げているという、強くそして単純なものである。
最後に、操作者が彼の手を閉じて(または、それ以外でそのポーズを変化させる)ことによってプッシュバックを解除すると、システムは、スタックを、表示面と一直線にy−軸方向に抑止するように(detented y-axis alignment)「急に変化させ」、プッシュバックを終了したときに表示面に最も近かったレイヤを、現行レイヤとする。この位置合わせ(positional alignment)の短い間隔の間、他の全てのレイヤは、完全な透明状態に徐々に戻り、フィードバック・グリフは滑らかに消失する。
この例のデータ・セット(ここでは、レイヤ)の離散化したエレメントは、主要プッシュバック(深度)軸に沿って分散される。以前では、これらのエレメント(データ・フレーム)は同じ平面にあり、深度軸に対して直交する次元に沿って横方向に配列されていた。この現在の配列は、透明技法の配備と共に、データが重畳されることが多く、あるレイヤは他のレイヤを通して見られることを意味する。しかしながら、この例における操作者は、(1)近隣コンテキスト(現行レイヤの上および下にあるレイヤの内容はなにか)を素早く得る装置(facility)、および(2)データ・セットにおける平行積層エレメント間で効率的に選択し切り換える装置も享受する。操作者が(1)のみを意図する場合、デッド・ゾーンを設けることによって、操作者は元来選択されたレイヤに確実に戻ることができる。操作全体にわたって、2つの平行移動次元( translational dimensions)の抑制によって、速度および精度が可能になる(殆どの人間にとって、横方向にドリフトを生じることなく手を垂直に平行移動させることは比較的難しいが、前述したような様式は、このような横方向変位を単純に全て無視する)。
尚、ある種の目的のために、デッド・ゾーンが無限に広がるようにプッシュバック入力空間を構成することが好都合である場合もあることを注記しておく。そして、プッシュバックが関与すると直ぐに、そのアクティブなメカニズムも投入される。本明細書において紹介する第2の例では、これは、本来の現行レイヤは、一旦プッシュバック操作が開始されたなら、他のいずれとも同じように扱われることを意味する。経験的に、デッド・ゾーンの直線的な広がりは、操作者の好みの問題である。
この第2の例において説明した様式は、二次元(投影式または放射式のいずれでも構わない)および三次元(自動ステレオ式で、空中画像生成式(aerial-image-producing)等であろうとなかろうと構わない)デバイス双方を含む多種多様のディスプレイにわたって関連がある。後者、即ち、3Dの高品質な実施態様の場合、媒体のある種の特性が、プッシュバックの基礎となる知覚メカニズムを広く補助することができる。例えば、パララックス、光学被写体深度、および視覚的適応(ocular accommodation)現象の組み合わせは、多数のレイヤを同時に捕らえることを可能とし、表示面から多いレイヤを激しく褪せさせたりぼけさせる(または実際には一緒に除外する)必要性を解消する。更に、これらの様式は、ディスプレイの方位に関係なく適用される。これは、例におけるように、主に水平とするとよく、または壁上の目の高さに取り付けても同様に有用であると考えられる。
この第2の例の場面に対する拡張では、2つの手による操作の有用性を示す。ある種の用途では、レイヤ・スタック全体の平行移動、または個々のレイヤの横方向(即ち、xおよびz方向)の平行移動が必要となることがある。一実施形態では、操作者の他の、即ち、プッシュバックではない、手がこの変換を、例えば、ある様式によって行うことができる。この様式では、手を表示面に近接させると、データ・セットのレイヤの内1つを「滑らせる」(slide around)ことができるので、そのオフセットx−z位置が手のそれを追従するようになる。
操作者は、一般に、横方向平行移動およびプッシュバック操作を同時に着手することを、便利であり容易に御し易い(tractable)と考えることができる。連続ドメイン操作を一方の手に割り当て、離散型作業を他方の手に割り当てることにより、認識負荷(cognitive load)を最適化するように作用することができると提案することは、恐らく全面的に無意味なことではない。
データ・セットに対して自然な視覚的側面がないSOEの下においてプッシュバックの更に別の例について検討することは有用である。代表的なのは、複数のオーディオ・チャネルを監視し、集合体の中から間欠的に1つを選択する問題である。プッシュバック・システムを適用すると、聴覚的出力には備えているが視覚出力には備えていない環境において、このようなタスクを可能にする。この様式は、直前の例のそれと非常に似ている。
操作者は、起立または着座して、1つのオーディオ・チャネルを聞いている。概念的に、このオーディオは、「聴覚面」と呼ばれる垂直面に存在し、この面には、幾何学的に、彼女の耳が含まれる。追加のオーディオ・チャネルは、この聴覚面に平行な追加の面内に存在するが、z−軸に沿って前方または後方に変位されている。
彼女の手を開いて、彼女の前9インチのところに保持し、掌を前方に向けて、プッシュバック・システムを投入する。数個の近接する面におけるオーディオが、差別的に徐々に現れ、各々の音量は、現行チャネルの面からのその元の距離に逆に依存する。実際には、2つまたは4つの追加チャネルを聴取可能にすることは、知覚的に非現実的である。同時に、「オーディオ・グリフ」が徐々に現れて、近接度フィードバックを与える。初期状態では、操作者の手がデッド・ゾーン内に保持されているが、グリフは辛うじて聞くことができる2音調の和音である(初期状態では、調和している)。
操作者が彼女の手を前方または後方に、デッド・ゾーンを通過するように移動させると、オーディオ・チャネルの音量は一定のままであるが、グリフの音量が増大する。手がデッド・ゾーンの前または後ろの閾値と交差すると、グリフはその「アクティブな」音量に到達する(未だ現行チャネルの音量に従う)。
一旦操作者の手が、例えば、前方方向に、アクティブ・ゾーンを通過して移動始めると、オーディオ・チャネルに期待される効果が得られる。現行のチャネル面が聴覚面から更に遠離るように押され、その音量が徐々に減少する(そして、これらのチャネルの音量はなおも更に先に進む(forward))。一方、「背後の」(dorsal)チャネル面の音量は、それが聴覚面に近づくに連れて、増大する。
一方、オーディオ・グリフはモードを切り換えている。手の前方への繰り出しには、トーンの1つの周波数上昇が伴い、「中点」において、聴覚面が1つのオーディオ・チャネル面および次のオーディオ・チャネル面に二等分すると、トーンが正確な1/5を形成する(数学的に、これは三全音 間隔(triton interval)であるべきであるが、これを避けるべき理由がふんだんにある)。可変トーンの周波数は、手が更に前方に移動し続けるにしたがって、最終的に操作者が次のオーディオ面に「到達」するまで、上昇し続ける。次のオーディオ面に到達した時点で、トーンは正確に1オクターブに広がる。
種々のチャネルの視聴が続き、操作者は彼女の手を前後に平行移動させて、各々に順番にアクセスする。最後に、1つを選択するためには、単に彼女の手を閉じて、プッシュバック・セッションを終了させ、オーディオ面の集合体を整列状態(alignment)に「素早く変化させる」(spring)。他の(選択されなかった)チャネルは、グリフと同様に、徐々に消えて行き聞こえなくなる。
この例は、プッシュバック用途の異種を例示したのであり、同じ機能がこの場合も得られる。即ち、近隣コンテキストへのアクセス、および離散化したデータ・エレメント(ここでは、個々のオーディオ・ストリーム)の迅速な選択である。この場面は、聴覚フィードバック・メカニズム、特に、操作者が選択を行える程に目標チャネルに「十分近づいている」か否かについての情報を操作者に提供するために、信頼性のある人間のある種の周波数間隔を認識する容量を利用するメカニズムに取って代わる。これは、特に、「可聴」信号が間欠的に現れるのみである音声チャネルにおいて重要である。オーディオ・フィードバック・グリフの連続性によって、それが存在したままとなり、チャネル自体が無音になっていても識別可能であり続ける。
尚、本例におけるSOEが空間化オーディオ(spatialized audio)を含む場合、前方距離(forward distance)に後退するそして背後から近づく(またはその逆)連続オーディオ・レイヤの知覚を大幅に改善することができることを注記しておく。更に、操作者の位置において選択されたオーディオ面を一層文字どおりに(literally)「定位」する機会(opportunity)が、操作者の前にある後続レイヤおよび背後にある以前のレイヤと共に、有用に活用可能となる。
オーディオ・グリフの他のインスタンス化も可能であり、実際に、スペクトル分布を含む、種々のチャネル内容の特質が、どの種のグリフが最も明確に認識できるかを決定付ける傾向がある。一例として、他のオーディオ・グリフ・フォーマットが一定の音量を維持するが、周期的なクリックを用い、クリック間の間隔が聴覚面と最も近いオーディオ・チャネル面との近接性に比例する。最後に、ある種の状況の下では、そして操作者の鋭さに応じて、フィードバック・グリフが全くないオーディオ・プッシュバックを用いることが可能である。
プッシュバック・メカニズムを参照して、データ・セットの表現において空間抑止点の数および密度が非常に大きくなる方向に増大するにつれて、空間およびそのパラメータ化が事実上連続になる。即ち、非抑止(non-detented)となる。しかしながら、このような極限においてもプッシュバックは有効であり続ける。これは、部分的に、プッシュバックの各呼び出し前におけるデータ・セットの「初期状態」を、一時的抑止として扱うことができ、単純にデッド・ゾーンとして理解できるからである。
このような非抑止プッシュバックの用途は、無限に(または少なくとも実質的に)ズーム可能な図の考えと関連付けて見出すことができる。ズーム機能のプッシュバック制御は、オフセット手位置(offset hand position)をアフィン・スケール値(affine scale value)と関連付けるので、操作者は彼の手を前方または後方にズームの減少または増大(それぞれ)の度合いだけプッシュ(push)する。しかしながら、位置のズーム・パラメータへの直接マッピングによって、制御の手をデッド・ゾーンに戻しても、ズーム値をその初期状態に戻せることを保証するので、元の事前プッシュバック・ズーム状態(pre-pushback zoom state)は常に容易にアクセス可能である。
以上の例において説明した各場面では、プッシュバック・システムの突出した態様、およびSOE下におけるその使用についての説明を行った。更に、本明細書において記載した操作の各々は、効率および正確度のために、特定の種類の知覚フィードバックが人間の移動を案内することを可能にすることによって、1秒以下で高精度にそして総合的に着手する(undertake)ことができることは言うまでもない。また、他のときには、操作者は数十秒の間1つの連続プッシュバック「セッション」に留まっていることを有用と思う。調査の目標やコンテキスト取得の目標は、更に長い間隔にわたるプッシュバックによって十分に果たされる。
以上で説明した例は、物理的入力(ジェスチャ)空間の表現空間への線形マッピングを採用した。実空間においてA単位だけ制御手(control hand)を平行移動させると、A平行移動が行われた実空間の位置には係わらず、常に、表現空間におけるB単位[prime]だけの平行移動が得られる。しかしながら、他のマッピングも可能である。即ち、殆どの人間の操作者によって享受される精細モータ制御(fine motor control)によって、非線形マッピングの使用が可能となり、その場合、例えば、アクティブ閾値から遠く離れた差動ジェスチャ変換は、閾値付近におけるジェスチャ変換よりも、パラメータ化された次元に沿って大きな変位に変換することができる。
マーカ・タグ
SOEまたは一実施形態は、ユーザの1つ以上の指においてマーカ・タグの使用を想定し、本システムがユーザの手を突き止め、ユーザが左または右のどちらの手を見ているのか特定し、どの指が見えるか特定することができるようにする。これによって、本システムは、ユーザの手の位置、方位、および移動を検出することが可能になる。この情報によって、本システムは多数のジェスチャを認識することが可能となり、これらのジェスチャは、ユーザによってコマンドとして用いることが可能になる。
一実施形態では、マーカ・タグは基板(本実施形態では、人の手の上の種々の位置に装着するのに適している)と、基板の表面上に一意識別パターンで配列された離散マーカとを備えている物理的タグである。
マーカおよび連携する外部検知システムは、それらの三空間位置の高精度、正確、ならびに迅速および連続的捕獲が可能である任意のドメイン(光学、電磁、静磁気ドメイン等)において動作することができる。マーカ自体は、能動的(例えば、構造化した電磁パルスを放出することによって)、または受動的(例えば、本実施形態におけるように光学的に逆反射型とすることによって)のいずれでも動作することができる。
各捕獲フレームにおいて、検出システムは、器具を備え付けた作業空間立体(カメラまたはその他の検出器の可視範囲内)において現在タグからの全てのマーカを含む三空間位置を再現した、粒団状「クラウド」を受ける。各タグ上のマーカは、十分に多数であり、一意のパターンに配列されているので、検出システムは以下のタスクを行うことができる。(1)再現した各マーカ位置を、1つのタグを形成する点の1つのみの副集合体に割り当てるセグメント化、(2)セグメント化した点の各副集合体を特定のタグとして識別するラベリング、(3)識別したタグの三空間位置を再現する位置突き止め、および(4)識別したタグの三空間方位を再現する方位決定(orientation)。タスク(1)および(2)は、マーカ・パターンの具体的な本質によって可能となる。これについては、図2の一実施形態において以下で説明し例示する。
一実施形態では、タグ上のマーカは、規則的な格子位置の部分集合に装着されている。この基礎となる格子は、本実施形態のように、従来からのデカルト型であってもよいし、代わりに、他の何らかの規則的平面碁盤目状(例えば、三角形/六角形タイリング配列)であってもよい。格子のスケールおよび空間は、隣接する格子位置が混乱する可能性がないように、マーカ検知システムの既知の空間分解能に関して確定する。全てのタグについてのマーカ・パターンの選択は、次の制約を満たさなければならない。タグのパターンは、回転、平行移動、または鏡像のいずれの組み合わせによる他のいずれのタグ・パターンとも一致してはならない。更に、ある指定した数のコンポーネント・マーカの損失(または遮蔽(occlusion)が許容されるように、多数のマーカおよびその配列を選択するとよい。いずれの任意の変換後であっても、損なったモジュール(compromised module)を他のいずれとも混同させることが起こりそうにないようにしなければならない。
図13は、一実施形態の下におけるマーキング・タグの図である。多数のタグ1301A〜1301E(左手)および1302A〜1302E(右手)が示されている。各タグは、矩形であり、本実施形態では、5×7の格子アレイで構成されている。矩形形状が選択されたのは、タグの方位を決定し易いため、そして鏡面複製(mirror duplicate)の可能性を低減するためである。図示の実施形態では、各手の指毎にタグがある。実施形態によっては、手毎に1つ、2つ、3つ、または4つのタグを用いることが適当である場合もある。各タグは、異なるグレー・スケールまたは色調の境界を有する。この境界の内部には、3×5格子アレイがある。マーカ(図13の黒いドットで表す)は、情報を提供するために、この格子のある点に配置されている。
各パターンを「共通」および「一意」のサブパターンにセグメント化することにより、タグのマーカ・パターンにおいて、認定情報(qualifying information)をエンコードすることができる。例えば、本実施形態は、2つの可能な「境界パターン」、矩形境界線(boundary)を中心としたマーカの分布を指定する。つまり、タグの「ファミリー」を確立する。このため、左手を意図したタグは、タグ1301A〜1301Eにおいて示されるような同じ境界パターンを全て用いることができ、一方右手の指に取り付けられているタグには、タグ1302A〜1302Eに示すように異なるパターンを割り当てることができる。タグの全ての方位において、左パターンを右パターンから区別できるように、このサブパターンを選択する。図示した例では、左手パターンは、各角に1つのマーカ、そして角格子位置から2番目に1つのマーカを含む。右手パターンは、2つの角のみにマーカを有し、角でない格子位置に2つのマーカを有する。このパターンを検査することによって、4つのマーカの内いずれか3つが見ることができる限り、左手パターンを右手パターンから明確に区別することができることが明らかとなった。一実施形態では、境界の色または色調も、利き手(handedness)のインディケータとして用いることができる。
各タグは、勿論、一意の内部パターンを採用し続けなければならず、マーカはそのファミリーの共通境界以内に分散されている。図示の実施形態では、内部格子アレイにおける2つのマーカが、10本の指の各々を一意に特定するのに十分であり、指の回転または方位による複製が生じないことが分かる。マーカの1つが遮蔽されたとしても、タグのパターンおよび利き手の組み合わせから、一意の識別子が得られる。
本実施形態では、格子の位置は、各逆反射マーカをその意図する位置に装着する(手作業の)タスクに対する補助として、視覚的に剛性基板上に存在する。これらの格子および意図するマーカ位置は、カラー・インクジェット・プリンタによって基板上にそっくりそのまま印刷される。ここでは、基板はシート状の(初期状態では)可撓性の「収縮フィルム」である。各モジュールがこのシートから切り離され、炉で焼成される。この熱処理の間に、各モジュールには正確で繰り返し可能な収縮が起こる。この手順に続く短い間隔において、冷却するタグには、例えば、指の長手方向曲線にしたがって、僅かに形状を付けることができる。その後、基板は適度に剛性となり、マーカを、指示された格子点に装着することができる。
一実施形態では、マーカ自体は、接着剤または何らかのその他のしかるべき手段によって基板に装着された小さな反射球体のように、三次元である。このマーカが三次元であることは、二次元マーカ上における検出および位置突き止めに役立つことができる。しかしながら、いずれも、本明細書に記載するSOEの主旨や範囲から逸脱することなく用いることができる。
現在では、タグはベルクロ(Velcro)またはその他のしかるべき手段によって、操作者が身に付けている手袋に装着されるか、あるいは、柔らかな両面テープを用いて操作者の指に直接装着される。第3実施形態では、剛性基板を全くなしで済ませ、操作者の指および手に直接個々のマーカを装着するまたは「描く」することができる。
ジェスチャ・ボキャブラリ
SOEは、手のポーズ、方位、手の組み合わせ、および方位の配合(orientation blends)で構成されるジェスチャ・ボキャブラリ(gesture vocabulary)を想定する。SOEのジェスチャ・ボキャブラリにおいてポーズおよびジェスチャを立案および伝達するために、表記言語(notation language)も実施する。ジェスチャ・ボキャブラリとは、力学的連結の瞬時的な「ポーズ状態」を簡潔な文字形態で表すシステムである。対象となる連結は、生物(例えば、人の手、または人の身体全体、あるいはバッタの足、あるいはキツネザルの関節脊柱)であってもよく、あるいは代わりに非生物であってもよい(例えば、ロボットのアーム)。いずれの場合でも、この連結は、単純(脊柱)でもまたは分岐(手)でもよい。SOEのジェスチャ・ボキャブラリ・システムは、いずれの特定的な連結についても、一定長のストリングを確立する。こうして、ストリングの「キャラクタ位置」を占める特定のASCIIキャラクタの集合体が、連結の瞬時的状態、即ち、「ポーズ」の一意の記述となる。
手のポーズ
図14は、SOEを用いたジェスチャ・ボキャブラリの一実施形態における手のポーズを示す。SOEは、1本の手における5本の指の各々を用いることを仮定する。これらの指には、p−小指、r−薬指、m−中指、i−人差し指、およびt−親指とコーディングする。指および親指の多数のポーズを、一実施形態のジェスチャ・ボキャブラリにおいて定義し例示する。ジェスチャ・ボキャブラリ・ストリングは、連結(この場合指)の表現可能な自由度毎に1つのキャラクタ位置を確定する。更に、このような各自由度は、離散化(または「量子化」)されていることが分かるので、その最大運動範囲は、当該ストリング位置における有限数の標準的ASCIIキャラクタの内の1つの割り当てによって表現することができる。これらの自由度は、本体特定の原点および座標系(手の裏、バッタの身体の中心、ロボット・アームの底辺等)に関して表現される。したがって、連結の位置および方位を「全体的に」更に大域的な座標系において表現するために、少数の追加のジェスチャ・ボキャブラリ・キャラクタ位置が用いられる。
多数のポーズが定義されており、ASCIIキャラクタを用いて識別されている。これらのポーズの一部は、親指およびそれ以外の指の間で分けられている。この実施形態におけるSOEは、ASCIIキャラクタ自体がポーズを示唆するようなコーディングを用いる。しかしながら、示唆的であろうがなかろうが、ポーズを表すには、いずれのキャラクタでも用いることができる。加えて、本発明では、表記ストリングにASCIIキャラクタを用いる必要性はない。本発明の範囲や主旨から逸脱することなく、適したシンボル、数値、またはその他の表現であればいずれでも用いることができる。例えば、望ましければ、表記は指毎に2ビットを用いることもでき、あるいは所望に応じて、他の何らかの数のビットを用いることもできる。
巻き込んだ指(curled finger)は、キャラクタ「^」によって表され、一方巻き込んだ親指は「>」で表される。真っ直ぐな指または上を向いた親指は、「l」によって示され、角度をなす場合は「\」または「/」で示される。「−」は、真っ直ぐに横を向いた親指を表し、「x」は平面内に向いた親指を表す。
これら個々の指および親指の記述を用いると、確固不動の数(robust number)の手のポーズを、本発明の方式を用いて、定義し記述することができる。各ポーズは、5つのキャラクタによって表され、その順序は、前述したように、p−r−m−i−tとなる。手を平らにして地面に平行に保持する場合、「lllll」で表される。握り拳は「^^^^>」によって表される。「OK」の合図は、「lll^>」によって表される。
キャラクタ・ストリングは、示唆的キャラクタを用いる場合、単純な「人間可読性」(human readabiity)の機会を与える。各自由度を記述する1組の可能なキャラクタは、総じて、素早い認識および明白な類似性に着目して選択することができる。例えば、垂直線(「|」)は、連結エレメントが「直線状」であることを意味するように思われ、エル(「L」)は、90度の屈曲を意味することもでき、曲折アクセント記号(「^」)は、鋭角の屈曲を示すことができる。先に注記したように、所望に応じて、いずれのキャラクタまたはコーディングでも用いることができる。
本明細書に記載するようなジェスチャ・ボキャブラリ・ストリングを採用するシステムはいずれも、ストリング比較の高い計算効率の恩恵を享受する。指定されたいずれのポーズについても、その識別または検索は、文字どおり、所望のポーズ・ストリングと瞬時的な実際のストリングとの間における「ストリングの比較」(例えば、UNIX(登録商標)の「strcmp()」関数)となる。更に、「ワイルドカード・キャラクタ」の使用によって、プログラマやシステム設計者には、もっと見慣れた効率(efficiency)および有効性(efficacy)が得られる。自由度の瞬時状態が一致とは関わりがない場合、疑問符(「?」)として指定することができ、追加のワイルドカードの意味を割り当てることができる。
方位
指および親指のポーズに加えて、手の方位が情報を表すことができる。大域空間(global-space)方位を記述するキャラクタも、透過的に選択することができる。キャラクタ「<」、「>」、「^」、および「v」は、方位キャラクタ位置において遭遇した場合、左、右、上、および下の考えを示すために用いることができる。図15は、一実施形態の下における、ジェスチャ・ボキャブラリにおける方位の図である。本発明の一実施形態では、2つのキャラクタ位置が、最初に手の平の方向を指定し、次いで指の方向を指定する(指が真っ直ぐになっている場合、指の実際の屈曲には関係なく)。これら2つの位置に可能なキャラクタは、方位の「本体中心」観念(body-centric notion)を表現し、「−」、「+」、「x」、「*」、「^」、および「v」は、中間、横方向、前方(順方向、本体から離れる側)、後方(逆方向、本体から離れる側)、頭上(上方)、および後端(下方)を記述する。
本発明の表記方式および実施形態では、キャラクタを示す5本指のポーズに続いて、コロン、次いで完全なコマンド・ポーズを定義するために2つの方位キャラクタがある。一実施形態では、開始位置は「xyz」ポーズと呼ばれ、親指は真っ直ぐ上を指し示し、人差し指は前方を指し示し、中指は人差し指に対して垂直であり、右手によってこのポーズが作られる場合、左を指し示す。これは、ストリング「^^xl−:−x」によって表される。
「XYZ−手」は、視覚的に提示された三次元構造の最大6自由度のナビゲーションを可能にするために、人の手の幾何学的形状を利用する技法である。この技法は操作者の手の全体的(bulk)平行移動および回転のみに依存し、したがってその指は原則として、いずれの所望のポーズに保持することができるが、本実施形態は、人差し指が本体から離れる方向を指し、親指が天井を指し、中指が左−右を指す、静止構成(static configuration)を優先する。つまり、これら3本の指は、三空間座標系、つまり、「XYZ−手」の3本の相互に直交する軸を記述する(大まかであるが、明白な歴然とした趣旨がある)。
次いで、XYZ−手ナビゲーションは、操作者の身体の前において所定の「中立位置」に保持された、前述のようなポーズの手、指に進む。三空間オブジェクト(またはカメラ)の三平行移動および三回転自由度へのアクセス(access)は以下の自然な方法で行われる。手の右−左移動(身体の自然座標系に対して)により、計算的コンテキストのx−軸に沿った移動が生じ、手の上下移動により、被制御コンテキストのy−軸に沿った移動が生じ、前後の手の移動(操作者の身体に向かう方向/から離れる方向)によって、このコンテキストにおけるz−軸運動が生ずる。同様に、人差し指を中心とする操作者の手の回転により、計算的コンテキストの方位の「転動」(roll)変化が生じ、操作者の手の中指および親指をそれぞれ中心とする回転によって、「縦方向」および「横方向」変化が類似的に生ずる。
尚、「計算的コンテキスト」は、本明細書では、XYZ−手方法によって制御される全体に言及するために用いられており、合成三空間オブジェクトまたはカメラのいずれかを示唆するように思われるが、この技法は実世界オブジェクトの種々の自由度を制御するため、例えば、しかるべき回転アクチュエータを装備したビデオまたはモーション・ピクチャ・カメラのパン/ティルト/ロール制御にも等しく有用であることは言うまでもないことを注記しておく。更に、XYZ−手の姿勢によって得られる物理的自由度は、仮想ドメインであっても、ありのままにマッピングされ難い場合もある。本実施形態では、XYZ−手は、大きな全景的表示画像に対してナビゲーション的アクセスを提供するためにも用いられるので、操作者の手の左−右および上−下の運動が、画像を中心とする予期された左−右または上−下「パンニング」に繋がるが、操作者の手の前−後運動は「ズーミング」制御にマッピングする。
あらゆる場合において、手の運動と誘発される計算的平行移動/回転との間の結合は、直接的(即ち、操作者の手の位置的または回転オフセットが、一対一で、何らかの線形または非線形関数によって、計算的コンテキストにおけるオブジェクトまたはカメラの位置的または回転オフセットにマッピングする)、または間接的(即ち、操作者の手の位置的または回転オフセットが、一対一で、何らかの線形または非線形関数によって、計算的コンテキストにおける位置/方位の第1導関数またはより上位の導関数にマッピングし、実行中の積分が、計算的コンテキストの実際のゼロ次位置/方位における被静的変化を生み出す)のいずれかであることができる。この後者の制御手段は、自動車の「アクセル・ペダル」の使用に類似しており、ペダルの一定のオフセットによって、ほぼ一定の車速が得られる。
実世界のXYZ−手の局所的六自由度座標原点としての役割を果たす「中立位置」は、(1)空間における絶対位置および方位として(例えば、密閉室に対する)、(2)操作者の全体的な位置および「方向」(heading)には関係なく、操作者自身に対する固定位置および方位(例えば、身体の前方8インチ、顎の下10インチ、横方向に肩の平面と一直線状)として、あるいは(3)操作者の故意の二次的行動によって、対話的に(例えば、操作者の「別の」手によって演じられるジェスチャ・コマンドを用いて。前記コマンドは、XYZ−手の現在の位置および方位が今後平行移動および回転の原点として用いられるべきことを示す)確立することができる。
更に、XYZ−手の中立位置の周囲に「抑止」(detent)領域(または「デッド・ゾーン」)を設けて、この立体空間における移動が被制御コンテキストにおける移動にマッピングしないようにすると便利である。
他のポーズも含むことができる。
[lllll:vx]は、手を平らにして(親指が他の指と平行)、手のひらが下を向き、指が前方に突き出している。
[lllll:x^]は、手を平らにして、手のひらが前を向き、指が天井を向いている。
[lllll:-x]は、手を平らにして、手のひらが身体の中心に向いており(左手の場合は右、右手の場合は左)、指が前方に突き出している。
[^^^^-:-x]は、手を1つにして親指を合わしている(親指は天井を向いている)。
[^^^|-:-x]は、銃を前方に構える真似である。
二手組み合わせ
一実施形態のSOEは、1つの手のコマンドおよびポーズだけでなく、2つの手によるコマンドおよびポーズも想定している。図16は、一実施形態の下における、SOEのジェスチャ・ボキャブラリにおける二手組み合わせおよ対応する表記の例を示す。第1の例の表記を検討すると、「完全停止」とは2つの拳を閉じていることを示す。「スナップショット」の例では、各手の親指および人差し指が広げられ、親指が互いに向き合って、ゴール・ポストの形状の枠を定めている。「舵およびスロットル開始位置」は、指および親指が上を向いており、手のひらが画面に面している。
方位配合(Orientation Blends)
図17は、一実施形態の下における方位配合の一例を示す。図示の例では、配合は、指ポーズ・ストリングの後ろにある括弧の中に囲まれた方位表記の対によって表されている。例えば、第1コマンドは、全て真っ直ぐに伸ばした指の位置を示す。方位コマンドの第1対により、手のひらをディスプレイに向かって平らにして、第2対によって、手を画面に向けて45度縦に回転させる。この例では、配合の対を示したが、SOEではいずれの数の配合でも考えられる。
コマンドの例
図19は、SOEと共に用いることができる、多数の可能なコマンドを示す。本明細書における論述の一部は、ディスプレイ上におけるカーソルの制御についてであったが、SOEはその行動に限定されるのではない。実際に、SOEは、画面上における全てのデータおよびデータの一部、更にはディスプレイの状態を操作する際に、様々に応用することができる。例えば、ビデオ・メディアの再生中に、これらのコマンドをビデオ制御に代わって用いることができる。これらのコマンドは、一時停止、早送り、巻き戻しなどを行うために用いることができる。加えて、画像のズーム・インおよびズーム・アウトを行うため、画像の方位を変化させるため、いずれかの方向にパンニングするため等に実施することができる。また、SOEは、開く、閉じる、保存する等のような、メニュー・コマンドの代わりに用いることもできる。言い換えると、想像することができるいずれのコマンドまたは活動でも、手のジェスチャによって実施することができる。
動作
図18は、一実施形態におけるSOEの動作を示すフロー図である。ステップ1801において、検出システムはマーカおよびタグを検出する。判断ブロック1802において、タグおよびマーカが検出されたか否か判断を行う。検出されていない場合、システムはステップ1801に戻る。ステップ1802においてタグおよびマーカが検出された場合、システムはステップ1803に進む。ステップ1803において、システムは、検出されたタグおよびマーカから、手、指、およびポーズを識別する。ステップ1804において、システムは、ポーズの方位を識別する。ステップ1805において、システムは、検出された1つまたは双方の手の三次元空間位置を識別する。(ステップ1803、1804、および1805の内いずれでも、または全てを1つの動作として組み合わせてもよいことに注意されたい)。
ステップ1806において、以上の情報を、前述したジェスチャ表記に変換する。判断ブロック1807において、ポーズが有効か否か判断を行う。これは、発生した表記ストリングを用いた単純なストリング比較によって行うことができる。ポーズが有効でない場合、システムはステップ1801に戻る。ポーズが有効である場合、ステップ1808において、システムは表記および位置情報をコンピュータに送る。ステップ1809において、コンピュータは、ジェスチャに応答して、取るべきしかるべき行為を決定し、ステップ1810においてそれに応じてディスプレイを更新する。
SOEの一実施形態では、ステップ1801〜1805をカメラ内蔵プロセッサによって実行する。他の実施形態では、望ましければ、この処理をシステム・コンピュータによって実行することもできる。
解析および変換
本システムは、基礎となるシステムによって再現された低レベルのジェスチャの流れを「解析」および「変換」し、これら解析し変換したジェスチャを、コマンドまたはイベント・データの流れに変換することができる。このデータは、広範囲のコンピュータ・アプリケーションおよびシステムを制御するために用いることができる。これらの技法およびアルゴリズムは、これらの技法を実現するエンジン、およびエンジンの能力を利用するコンピュータ・アプリケーションを構築するプラットフォームの双方を提供するコンピュータ・コードから成るシステムにおいて具体化することができる。
一実施形態は、コンピュータ・インターフェースにおいて、人の手の豊富なジェスチャの使用を可能にすることを中心に据えるが、他の身体部分によって行われるジェスチャ(限定ではなく、腕、胴体、脚部、および頭部を含む)や、手ではない種々の器具によって行われるジェスチャを認識することもできる。これらの器具は、静止および連結式(articulating)双方であり、限定ではないが、キャリパ、コンパス、可撓性曲線近似器(curve approximator)、および種々の形状のポインティング・デバイスが含まれる。マーカおよびタグは、操作者によって所望に応じて携行および使用することができる品目および器具に被着することができる。
本明細書において記載するシステムは、認識し反応することができるジェスチャの範囲が豊富なジェスチャ・システムを構築することを可能にしつつ、同時にアプリケーションへの容易な統合にも備えた、多数の改革を組み込む。
一実施形態では、ジェスチャ解析および変換システムは、以下のものを備えている。
1)様々な異なる集計レベルにおいて、ジェスチャを指定する(コンピュータ・プログラムにおいて用いるためのエンコード)緻密かつ効率的な方法。
a.1本の手の「ポーズ」(手の部分の外形および互いに対する方位)。三次元空間における1つの手の方位および位置。
b.2つの手の組み合わせ。いずれかの手がポーズ、位置、または双方を考慮に入れる。
c.多数の人物の組み合わせ。本システムは2つよりも多い手を追跡することができ、したがって、一人よりも多い事物が協同して(ゲーム・アプリケーションの場合には競合して)目標システムを制御することができる。
d.ポーズが連続して組み合わされる順次ジェスチャ。これらを「動画」ジェスチャと呼ぶ。
e.操作者が空間内の形状を追跡する「書記素」ジェスチャ(grapheme gesture)。
2)所与のアプリケーション・コンテキストに関連があるものの上で、各カテゴリから特定のジェスチャを登録するプログラム技法。
3)登録されているジェスチャを識別することができ、これらのジェスチャをカプセル化するイベントを関連するアプリケーション・コンテキストに配信することができるように、ジェスチャの流れを解析するアルゴリズム。
指定システム(1)は、構成エレメント(1a)から(1f)と共に、本明細書に記載するシステムのジェスチャ解析および変換能力を利用するための基礎を提供する。
1本の手の「ポーズ」は、
i)手の指と甲との間の相対的方位、
ii)少数の離散状態への量子化、
のストリングとして表される。
相対的接合方位を用いることにより、本明細書に記載するシステムは、手のサイズおよび外形形状が異なることに伴う問題を回避することができる。このシステムでは、「操作者較正」を必要としない。加えて、ポーズをストリングまたは相対的方位の集合体として指定することにより、ポーズ表現を更に別のフィルタおよび指定と組み合わせることによって、一層複雑なジェスチャ指定(specification)を容易に作成することが可能になる。
ポーズ指定に少数の離散状態を用いることによって、ポーズを簡潔に指定することができ、更に種々の基礎となる追跡技術(例えば、カメラを用いた受動的光学追跡、点灯ドットおよびカメラを用いた能動的光学追跡、電磁場追跡等)を用いて、精度の高いポーズ認識を確実に行うことができる。
各カテゴリ(1a)から(1f)におけるジェスチャは、部分的に(または最小限に)指定することができるので、重大でないデータは無視される。例えば、2本の指の位置が明確であり他の指の位置は重要でないジェスチャは、2本の関連のある指の動作位置が与えられ、同じストリング内において、「ワイルド・カード」または包括的「無視」インディケータが他の指に対して掲示されている1つの指定によって表すことができる。
本明細書において記載するジェスチャ認識のための改革の全ては、限定ではなく、多層指定技法、相対的方位の使用、データの量子化、および各レベルにおける部分的または最小指定の許容を含み、手のジェスチャの指定を超えて、他の身体部分や「製造した」ツールおよびオブジェクトを用いたジェスチャの指定に一般化する。
「ジェスチャを登録する」プログラム技法(2)は、どのジェスチャをエンジンが実行システムの他の部分に入手可能にすべきか定めることをプログラマに可能にする、定められた1組のアプリケーション・プログラミング・インターフェース・コールによって構成されている。
これらのAPIルーチンは、アプリケーション設定時に用いることができ、実行アプリケーションの寿命の間用いることができる静止インターフェース定義を作成する。また、これらは、実行中にも用いることができ、インターフェース特性を動作中に変更することができる。このリアル・タイムでのインターフェース変更により、
i)複雑なコンテキストおよび条件付き制御状態を構築すること、
ii)動的にヒステリシスを制御環境に追加すること、および
iii)ユーザが実行システム自体のインターフェース・ボキャブラリを変更または拡張することができるアプリケーションを作成すること、
が可能となる。
ジェスチャの流れを解析するアルゴリズム(3)は、(1)におけるように指定され(2)におけるように登録されたジェスチャを、入来する低レベルのジェスチャ・データと比較する。登録されているジェスチャに対する一致が認識された場合、一致したジェスチャを表すイベント・データが積層され実行アプリケーションに配信される。
このシステムの設計においては、効率的なリアル・タイムでの照合が望まれ、指定されたジェスチャは、できるだけ素早く処理される可能性のツリーとして扱われる。
加えて、指定されたジェスチャを認識するために内部で使用されている原始的比較演算子は、アプリケーション・プログラマが用いるためにも露出されるので、アプリケーション・コンテキスト内部からでも、より多くの比較(例えば、複雑なジェスチャまたは複合ジェスチャにおける柔軟な状態の検査)を行うことができる。
認識「ロッキング」セマンティクス(recognition locking semantics)は、本明細書に記載するシステムの改革の1つである。これらのセマンティクスは、登録API(2)(および、より狭い範囲で、指定ボキャブラリ(1)内に埋め込まれる)によって暗示される(imply)。登録APIコールは、
i)「エントリ」状態通知部および「連続」状態通知部、ならびに
ii)ジェスチャ優先度指定部
を含む。
ジェスチャが認識されている場合、その「連続」状態は、同じまたは低い優先度のジェスチャの全ての「エントリ」状態よりも優先される。このエントリ状態と連続状態との間の区別は、認められるシステム使用可能性に大きくプラスになる。
本明細書において記載するシステムは、実世界のデータ・エラーおよび不確実性をものともせずに、ロバストな動作のためのアルゴリズムを含む。低レベル追跡システムからのデータは不完全である場合もある(光学追跡におけるマーカの遮蔽、ネットワーク・ドロップアウト、処理の遅れ等を含む、種々の理由による)。
欠損データは、解析システムによって印が付けられ、その欠損データの量およびコンテキストに応じて、「最後に分かっていた」状態または「最もあり得る」状態のいずれかに組み込まれる。
特定のジェスチャ・コンポーネント(例えば、特定の関節の方位)についての状態が見つからないが、その特定のコンポーネントの「最後に分かっていた」状態を、物理的に可能であると分析することができる場合、本システムはこの最後に分かっていた状態をそのリアル・タイム照合において用いる。
逆に、最後に分かっていた状態が、物理的に不可能であると分析された場合、本システムはそのコンポーネントにとって「最良のジェスチャ範囲」に後退し、この合成データをそのリアル・タイム照合において用いる。
本明細書において記載する指定および解析システムは、「利き手不可知論」をサポートするように注意深く設計されているので、多数の手のジェスチャについて、いずれの手でもポーズの要件を満たすことができる。
拡張被写体深度において抽出した三次元情報を用いるジェスチャ・ベース制御
図20は、一実施形態の下において、拡張被写体深度において三次元情報を抽出する撮像システムを含むジェスチャ・ベース制御システム2000のブロック図である。ユーザは、彼の手101および102をカメラ2004A〜2004Dのアレイの視野に置く。アレイ2004A〜2004Dの内少なくとも2台のカメラが、波頭コーディング・カメラとなり、その各々は、以下で詳細に説明するように、波頭コーディングマスク(ここでは、「光学非球面エレメント」または「光学エレメント」とも呼ぶ)を含む波頭コーディング撮像システムのエレメントを備えている。ユーザの手および/または指は、先に述べたマーカ・タグを含んでいてもいなくてもよい。
カメラ2004A〜2004Dは、指ならびに手101および102の位置、方位、移動を含む、指ならびに手101および102の画像を検出するまたは取り込み、出力信号をプリプロセッサ2005に発生する。プリプロセッサ2005は、以下で説明する波頭コーディングディジタル信号処理2008を含むこと、またはこれに結合することができる。あるいは、波頭コーディングディジタル信号処理は、システム2000の1つ以上の他のコンポーネントに含めること、結合すること、これらの間で分散することもできる。波頭コーディングディジタル信号処理2008は、撮像システムの被写体深度を大きく拡大するように構成されている。
プリプロセッサ2005は、カメラ出力をジェスチャ信号に変換し、このジェスチャ信号をシステムのコンピュータ演算装置2007に供給する。このようにする際に、プリプロセッサ2005は三次元空間点再現および骨格点ラベリングを発生する。ジェスチャ変換器2006は、3D空間情報およびマーカ・モーション情報をコマンド言語に変換し、このコマンド言語は、コンピュータ・プロセッサによって、ディスプレイ上の位置、形状、および動作を更新するために解釈することができる。コンピュータ2007は、この入力情報を用いて、1つ以上の画面上カーソルを制御するコマンドを発生し、ビデオ出力をディスプレイ2003に供給する。
代替実施形態のプリプロセッサ2005、ジェスチャ変換器2006、およびコンピュータ2007の内1つ以上を組み合わせて1つのデバイスにすることができる。システム構成には関係なく、プリプロセッサ2005、ジェスチャ変換器2006、およびコンピュータ2007の各々の機能および/または有用性(functionality)は、そして本明細書の他のところに記載されている通りである。
更に、この例は、ユーザの手101および102の位置、方位、および移動を検出するために用いられる4台のカメラを示すが、本実施形態はそのように限定されるのではない。このシステム構成は、システムまたはワークステーションの構成に合わせて適宜2台以上のカメラを含むことができる。加えて、実施形態例ではカメラは対称的に配置されているが、このような対称性の要件はない。つまり、ユーザの手の位置、方位、および移動を可能にするのであればどのような位置付けでも、少なくとも2台のカメラを以後用いればよい。
本システムでは、一人のユーザの手を入力として示すが、本システムは、いずれの数の多数のユーザの手でも追跡することができる。加えて、手の代わりにまたは手に加えて、本システムは、頭部、足、脚部、腕、肘、膝等を含む、ユーザの身体であればいずれの1つまたは複数の部分でも追跡することができる。更に、本システムはいずれの数の生物オブジェクト(object)または非生物オブジェクトでも追跡することができ、身体の部分の追跡に限定されるのではない。
特に、操作者の手(または同等に追跡される器具)に故意にまたは潜在的に近接するように光センサを配置するジェスチャ分析システムでは、このように理解されるエレメントは、通例、操作者の運動の自然なシーケンス全体にわたって、相対的距離規模(distance magnitude)の数桁(order)または多数桁の範囲を取る。このような距離の範囲を横断するイベントを一貫して焦点を解明して記録することは、従前の光学撮像システムの容量を超えている。しかしながら、これらの中距離幾何学(medium-distance geometries)は、巨視的デバイスおよび製品の設計に限って言えば、オブジェクトまたは操作者追跡のコンテキストでは望ましいことが多い。つまり、予期される操作者の活動範囲において局所的なコントラストまたは突出する特徴の安定性を確保する技法(従前の光学素子は、その目的には適していない)を提供することには価値がある。
本明細書におけるシステムにおいて用いられるような拡張被写体深度における三次元情報の抽出を記載する際、ある場面における1点までの距離は、同時に取り込んだ2つ以上の画像におけるその位置から推定することができる。この点の三次元(3D)位置は、撮像装置間の3D関係が分かっていれば、基本的幾何学的関係から計算することができる。ステレオ相関またはステレオ深度計算と呼ばれることが多い、多数の画像から空間的位置を計算する際の課題は、1つの画像における地点のマッピングを他方の画像におけるそのマッピングと自動的かつ高精度に関連付けることである。これは、殆どの場合、1つの画像から1つ以上の他の画像に画像の特徴を相関付けることによって行われている。しかしながら、全てのステレオ照合方法における基礎的な前提は、画像内に何らかの識別可能な局所的コントラストまたは特徴があって、その地点を別の画像におけるその位置に一致させられなければならないということである。したがって、焦点ずれ(misfocus)のために画像に何の局所的コントラストや特徴もない場合に問題が生ずる。ステレオ照合は、焦点が合っていない画像の領域においては高精度の結果が得られない。
画像の被写体深度を拡張する従来の手段は、カメラのレンズの瞳の直径を縮小することであった(「ストッピング・ダウン」(stopping down))。しかしながら、2つの副作用によって、この技法の有用性が損なわれる。第1に、撮像システムの感度が、瞳直径率の二乗分の1に低下する。第2に、最大空間周波数応答が、瞳直径率分の1に低下し、画像における分解能およびコントラストに制限が生ずる。つまり、従来の撮像システムでは、被写体深度、露出時間、および全体的なコントラストの間にはトレードオフがある。多重カメラ測距システムの場合、正味の影響は、立体深度精度(stereoscopic depth accuracy)と作業範囲との間における妥協となる。
レンズを停止させずに被写体深度を増大させる代わりの手法は、カメラ・レンズの瞳に、指定した処方の位相マスク(phase mask)を導入することである。適正に選択した位相関数によって、センサ上で取り込んだ画像の後続の電子処理によって、拡張した被写体深度を再現することができる。この技法は、波頭コーディングとして知られており、一般に、被写体深度、カメラのダイナミック・レンジ、および信号対ノイズ比の間のトレードオフを提供する。波頭コーディングは、特定の用途に合わせてカメラのパラメータを最適化することを可能にする。非常に高いダイナミック・レンジを必要とせず、本明細書において記載するジェスチャ認識のように、照明がユーザ制御下にある用途であれば、波頭コーディングから利益を得て、規定の立体空間において高精度を達成することができる。
前述のように、一実施形態のシステムは、複数の波頭コーディング・カメラからの出力を処理し、これらを用いて場面内部にて選択したオブジェクトの距離および位置を決定する。波頭コーディングによって得られる拡張被写体深度は、ジェスチャ認識、およびその他の多種多様なタスク主体撮像作業多数の用途において用いることができ、その性能を大幅に向上させることができる。最少で2つのカメラが必要になるが、本実施形態において用いることができるカメラ数に上限はない。場面抽出は、2つ以上のカメラによる距離抽出に用いられる複数の処理技法(相関のような)の内いずれでも含むことができる。本明細書において記載する実施形態は、全ての波頭コーディング位相関数、処理後に拡張被写体深度が得られる、それらの対応するデコーディング・カーネルを含む。
波頭コーディング撮像システムにおいて用いるような波頭コーディングは、一般化した非球面光学素子およびディジタル信号処理を用いて、撮像システムの性能を大幅に向上させる、および/またはコストを低減することができる一般的な技法である。採用する非球面光学素子の形式によって、焦点ずれに関する収差に非常に不感応な光学撮像特性が得られる。光学素子からは鋭く明確な画像が直接得られないが、サンプリングした画像にディジタル信号処理を適用すると、鋭く明確な最終画像が得られる。この画像も焦点ずれに関する収差には不感応である。
波頭コーディングは、撮像性能を大幅に向上させつつ、撮像システムのサイズ、重量、およびコストを低減するために用いられる。波頭コーディングは、非回転対称非球面光学エレメントおよびディジタル信号処理を基本的な態様で組み合わせて、撮像システムの被写体深度を大幅に拡張する。波頭コーディングを用いると、撮像システムの被写体深度または焦点深度は、例えば、所与のアパーチャ・サイズ即ちF/#に対して、従来の撮像システムと比較して10倍以上増大させることができる。一実施形態の波頭コーディング光学エレメントは、位相面であり、したがって光を吸収せず、露出または照明要件が高くなることもない。このような拡張被写体深度の挙動(performance)は、ストップ・ダウン・アパーチャによって必然的に発生するような、光学パワーの劇的な損失なしでは従前の撮像技法では不可能である。また、被写体深度/焦点深度の増大によって、撮像システムは、レンズ・エレメントを追加するかまたはレンズの複雑度を高めることによってこれまで制御していた焦点ずれに関する収差を制御することによって、物理的に安価となり、小型化、または軽量化が可能となる。波頭コーディングによって制御することができる焦点ずれに関する収差には、色収差、ペッツヴァル湾曲、非点主査、球面収差、および温度に関する焦点ずれが含まれる。
波頭コーディングは、混成撮像手法として、光学素子および電子素子を組み合わせて、被写体深度を増大させ、光学エレメントの数、製造許容度、および全体的なシステム・コストを低減する。図21は、一実施形態の下において、ジェスチャ・ベース制御システムに用いられる波頭コーディング撮像システム2100のブロック図である。波頭コーディング撮像システム2100の光学セクション2101は、従来の光学システムまたはカメラであり、アパーチャ・ストップの近くに波頭コーディング光学エレメント2102を配置することによって変更されている。コーディング光学エレメントを追加することによって、焦点ずれに不感応な、特殊化された明確なぼけまたは点拡散機能を有する画像が得られる。サンプリングされた画像にディジタル処理2103を適用することによって、焦点ずれの影響に非常に不感応な鮮明で明確な画像2104が得られる。
図22は、一実施形態の下において、2つの波頭コーディング・カメラを含む波頭コーディング撮像システムを用いて、拡張被写体深度において三次元情報を抽出するジェスチャ・ベース制御システム2200のブロック図である。システム2200は、先に図21を参照して述べたように、少なくとも2台の波頭コーディング・カメラ2201および2202を含む。プロセッサが、波頭コーディング・カメラ2201および2202の出力を受けるように、そしてカメラ出力に対してデータ処理を実行するように結合されている。データ処理は、ディコンボリューション2220および距離抽出2230、その他を含み、拡張焦点範囲マップ2240を発生する。
波頭コーディング・システム2200では、このシステムの光学部分(例えば、波頭コーディング・カメラ2201および2202)が、得られた画像を「コーディング」して中間画像2210を生成する。波頭コーディング・エレメント(例えば、図21のエレメント2102)は、いずれの画像においても全ての点をわざとぼかすので、中間画像2210は焦点ずれのように見える。このような中間画像2210において、被写体深度内にあるほぼ全てのオブジェクトがぼやけているが、これらは同一にぼやけている。対照的に、従前の光学素子は、通例、場面における各オブジェクトまでの距離に依存する可変ぼけ関数を有する画像を形成する。
中間波頭コーディング画像2210から鮮明で明確な画像を生成するために、電子素子(例えば、波頭コーディングディジタル信号処理)を用いて、システム依存画像ぼけを除去することによって、ぼけた中間画像を処理即ち「デコード」する(2220および2230)。ソフトウェアまたは特殊化したハードウェア解決策によって、リアル・タイムでディジタル・フィルタリングを実行することができる。
一実施形態のシステム光学素子は、従来のコンポーネントを含み、図21を参照して先に説明したように、波頭コーディング機能を実行する少なくとも1つの追加光学エレメントがある。このエレメントは、けられを最少に抑えるために、光路内に、通例システムのアパーチャ・ストップの近くに置かれる。検出した画像に対して実行する信号処理は、光学素子、波頭コーディング・エレメント、およびディジタル検出器の一次特性によって異なる。
一般的な波頭コーディング・エレメントは、非回転対称で滑らかであるが、屈折面を用いることもできる。このエレメントは、別個のコンポーネントとすることができ、または一般化した非球面の追加によって、従前のレンズ・エレメント上に一体化することもできる。全てのコーディング・エレメントは、軸上光線を除いて、従前の幾何学的焦点に向かって進行する光がなくなるように、光の方向を変える。実際、光軸に沿って2本の光線が同じ点に向かって進行することはない。本システムは、いずれの画像面においても明確な画像を形成しない。
波頭コーディング撮像システムの光学部分の主な効果は、脱焦、球面収差、非点収差、または場の湾曲というような、焦点に関する収差に対して、得られる画像を不感応にすることである。中間のぼやけた画像は、脱焦収差を構成するオブジェクトまたは撮像システムの変化に対して不感応または不変である。システム分析の視点からは、波頭コーディング・システムの変調伝達関数(MTF)および点拡散関数(PSF)は、脱焦に対して不変である。
波頭コーディング・システムからの中間画像のMTFが脱焦に対して殆ど変化を示さないが、このようなMTFは、焦点を合わせる(in-focus)従前のシステムと比較すると、パワーを低減させている。アポディゼーションを用いないので、全光学パワーが保存される。明確な画像を形成するために、ディジタル・フィルタリングまたは画像再生プロセスを用いる。これらの最終的MTFは、脱焦に対して非常に不感応である。つまり、本波頭コーディング撮像システムは、非常に大きな被写体深度を有することになる。同様に、波頭コーディング・システムからの中間PSFは、従前のシステムのPSFとは異なるが、これらは焦点ずれの変化に対して殆ど変化しない。
再度図21を参照すると、特殊目的の光学非球面エレメントが、従来の撮像システムのアパーチャ・ストップまたはその近くに置かれて、波頭コーディング撮像システムを形成する。この光学エレメントは、得られるPSFおよび光学伝達関数(OTF)がある範囲の焦点ずれおよび焦点ずれに関する収差に不感応となるように、撮像システムを変更する。しかしながら、PSFおよびOTFは、高品質の合焦撮像システム(in-focus imaging system)によって得られるものとは同一ではない。撮像システムを焦点ずれ収差に不感応にするプロセスにより、特殊化された明確なぼけのある画像が得られ、このぼけは、波頭コーディングディジタル信号処理によって除去される。
従来の撮像システムからのPSFは、例えば、焦点ずれによって劇的に変化するが、一方波頭コーディング撮像システムからのPSFは、焦点ずれに対して目に付く変化を殆ど何も示さない。焦点ずれのある従前の撮像システムに適用して焦点ずれのぼけを除去するディジタル処理は、画像の異なる区域にある焦点ずれの量に応じた処理を用いる。多くの状況において、焦点ずれの量は未知であり、計算するのは困難である。加えて、焦点ずれのある従前の撮像システムのMTFは、ゼロまたはヌルを含む可能性が高く、このためにディジタル処理の難しさが増大する。対照的に、波頭コーディング・システムからの焦点ずれのあるPSFの一定の性質は、ディジタル処理の焦点ずれに対する依存性を解消するために必要なものである。電荷結合デバイス(CCD)または最近の金属酸化物半導体(CMOS)−検出画像に適用されるディジタル処理は、焦点ずれや実際に撮像される場面には依存しない。加えて、波頭コーディング撮像システムのMTFは、合焦および脱焦双方とも、ゼロまたはヌルを含まず、高品質の最終画像を可能にする。
被写体深度を拡張するための波頭コーディングは、従前の方法(即ち、アパーチャのストップ・ダウン)が一般に受け入れられない撮像用途に、価値をつけ加えることができる。照明レベル、露出時間、または空間分解能に対する制約によって、以前の光学方法の用途が狭められることが多い。波頭コーディングを用いることによって、露出時間を犠牲にしたり、大量の照明を必要とすることなく、焦点ずれに関する問題を低減することができる用途がある。
波頭コーディング撮像システムは、前述のように、従来とは異なる光学設計、および得られた画像のディジタル信号処理を備えている。用いられる信号処理は、特定の光学システムによって異なる。波頭コーディング光学素子は、用いられる信号処理の種類および量によって異なる。光学素子および信号処理は密接に結合されているので、設計においてシステムの光学コンポーネントおよびディジタル・コンポーネントが合体して最適化されれば、システムから最高の性能を期待するのは当然である。光学コンポーネントは、焦点ずれの影響に対する光学素子の変化または感度を最少に抑え、効率的な信号処理を可能にするように構成されている。ディジタル・コンポーネントは、アルゴリズムの複雑さ、処理時間、および画像ノイズに対するディジタル処理の影響を最少に抑えるように設計されている。
図23は、一実施形態の下において、拡張被写体深度から抽出した三次元情報を用いるジェスチャ・ベース制御のフロー図である。一実施形態のジェスチャ・ベース制御は、撮像システムによって本体を撮像すること2302を含む。撮像2302は、本体の波頭コーディング画像を発生することを含む。一実施形態のジェスチャ・ベース制御は、本体のジェスチャを自動的に検出すること2304を含む。ジェスチャは、本体の瞬時的状態を含む。検出2304は、1時点においてジェスチャのジェスチャ・データを集計することを含む。ジェスチャ・データは、撮像システムの被写体深度内における本体の焦点解明データを備えている。一実施形態のジェスチャ・ベース制御は、ジェスチャをジェスチャ信号に変換すること2306を含む。一実施形態のジェスチャ・ベース制御は、ジェスチャ信号に応答して、コンピュータに結合されているコンポーネントを制御すること2308を含む。
一実施形態の波頭コーディングのための基本ルーチンは、典型的な球面および非球面ならびに一般の波頭コーディング表面形態を透して光線を追跡する光線追跡プログラムを含むことができる。光線追跡プログラムは、射出瞳(exit pupil)を計算し、所与の1組の光学およびディジタル・メリット関数またはオペランドを最適化するために用いられる。図24は、一実施形態の下において、ジェスチャ・ベース制御システムにおいて用いられる波頭コーディング設計プロセス2400のブロック図である。この設計の出力は、限定ではなく、以下のように、従前の光学表面、材料、厚さ、および間隔、波頭コーディング表面のパラメータ、ならびにディジタル・フィルタ係数を含む。
これより、一般的な光学/ディジタル設計ループについて説明する。光線追跡プログラム2402は、光学表面を通過する光線を追跡して、射出瞳の光路差(OPD)2404を計算し、所与の1組の光学およびディジタル・メリット関数またはオペランドを最適化する。光線追跡プログラム2402への入力には、光学表面、厚さ、および動作条件(波長、視野、温度範囲、サンプル・オブジェクト画像等)その他が含まれる。OTFを計算または発生し(2406)、検出器の幾何学的形状に関する画素OTFを追加する(2408)。サンプリングされたOTFおよびPSFを計算する(2410)。サンプリングしたPSFに基づいて、選択した処理アルゴリズムに合ったディジタル・フィルタ係数を発生する(2412)。処理は継続し、温度変化、エリアシング等による、サンプリングしたPSFおよびMTFの焦点を通過する際の視野角や色の変化を最小に抑えることに基づく、フィルタの評価点数(例えば、波頭コーディングオペランド)、処理量、処理形態、処理に関する画像ノイズ、ディジタル・フィルタ・ノイズ利得等のようなディジタル処理パラメータを形成する。最適化ルーチンによって波頭コーディングオペランドを従前の光学オペランド(サイデル波頭収差、RMS波頭誤差等)と組み合わせて、光学表面を変更する。動作は、従前の光線追跡による射出瞳光路差(OPD)の発生(2402)に戻る。
理論的に計算した波頭コーディング表面形態は、光学最適化の開始点として用いられる。矩形に分離可能な表面形態の1つの一般的なファミリーが、正規化座標において次のように示される。
Figure 0005806615
指数パラメータαは、焦点ずれの範囲におけるMTFの高さを制御し、パラメータβは、焦点ずれに対する感度を制御する。一般に、パラメータβを増大させると、焦点ずれに対する感度は低下し、一方MTFの高さが減少し、結果的に得られるPSFの長さは増大する。
中間画像を再生し最終画像を生成するために用いられるフィルタリング・プロセスは、計算上の負担を強いる可能性がある。画像再生に必要とされるフィルタ・カーネルのサイズは、光学システムおよびコーディングプロセスによって導入される被写体深度の拡張(enhancement)に応じて、70×70係数程にもなる場合がある。一般に、被写体深度の拡張が大きい程、フィルタ・カーネルも大きくなり、ノイズによる不利益またはノイズ利得も大きくなる。更に、画像における角画素が波頭コーディングによってぼやけるので、角画素をフィルタリングする必要がある。つまり、大きな画像程、小さな画像よりも多くの計算が必要となる可能性がある。画素が数千万に近い画像サイズでは、実用的で経済的なシステムのために、効率的な計算解決策が用いられる。矩形に分離可能なフィルタ近似のような計算の実施態様が、カーネルの寸法を縮小するのに役立つことができる。例えば、用いられる波頭コーディング・エレメントは、次のように記述される、矩形に分離可能な立方体位相形態を有することができる。
Figure 0005806615
ぼけを除去するためにぼやけた画像をフィルタリングすると、空間周波数として増幅および位相ずれが必ず生ずる。この増幅は、最終画像において信号だけでなくノイズも増大させる。非常に大きな被写体深度の拡張では、例えば、10倍以上では、波頭コーディング・システムにおけるノイズ利得は、4倍または5倍になる可能性がある。2から4倍のもっと穏やかな被写体深度拡張では、ノイズ利得は2倍以下であるのが通例である。
相関付けられていないガウス・ノイズ(殆どの画像にとって正しい仮定)については、ノイズ利得はフィルタ係数のRMS値となる。適した小さなノイズ−利得値が得られない程に大きな被写体深度拡張を有するシステムでは、ディジタル・フィルタの分解能または空間帯域幅を減少させると、ノイズ利得を低減することができる。また、最終画像におけるコントラストを低下させても、ノイズ増大の全体的な影響を低減することができる。特殊化した非線形フィルタが、波頭コーディング画像においてノイズを除去するための最良の解決策である。
一実施形態においてMTFおよびPSFを形成するために用いられる波頭コーディング光学エレメントは矩形に分離可能であるので、用いられる信号処理も矩形に分離可能であることができる。矩形に分離可能な処理は、必要な計算数を1桁以上減少させることができる。ディジタル・フィルタリングは空間畳み込みによって実行されるという事実により、一実施形態の計算方法は、フィルタ係数によってデータを倍率調整するための一連の乗算と、倍率調整した全てのデータ値を一緒にカーネル全体に跨って加算するための加算とを備えている。このような計算の基礎的単位は、多重蓄積演算(multiply-accumulate operation)である。大きな被写体深度増大に対する典型的な2−D波頭コーディング・フィルタ・カーネルは、30×30係数となることもある。このフィルタの矩形分離可能バージョンは、30係数長の行フィルタと、30係数高の列フィルタとを含み、合計60の係数を含む。波頭コーディング・エレメントは設計上矩形に分離可能とすることができるが、これらはそのように限定されるのではなく、大きく常軌を逸したシステムは分離不可能なフィルタリングを用いてもよい。
光学撮像技法を電子フィルタリングと組み合わせることによって、波頭コーディング技術は、広範囲の撮像システムの性能を向上させることができる。高性能撮像システムにおける性能利得(performance gain)は、光集合または空間分解能を犠牲にすることなく、非常に大きな被写体深度を含むことができる。低コストの撮像システムにおける性能利得は、従前に必要としたよりも少ない物理的コンポーネントによる、高い画像品質を含むことができる。
仮想/ディスプレイおよび物理空間の一致
前述のように、一実施形態のSOEは、三空間入力を検出し、表現し、解釈するシステムおよび方法を含む。SOEのコンテキストでは、システムの実施形態は、複数の空間追跡データ源からの低レベル・データを処理し、これら意味的に相関がない空間時間データを分析し、1組の動的に構成設定可能な暗示的および明示的ジェスチャ記述にしたがって、高レベルのジェスチャ・イベントを発生する。生成されるイベントは、インタラクティブ・システムによる消費に適しており、実施形態は、これらのコンシューマ(consumer)へのイベント分散を制御および実行する1つ以上のメカニズムを設ける。更に、実施形態は、そのイベントのコンシューマに、任意の参照空間および意味フレーム間でジェスチャ・イベントを変換する装置を提供する。
本システムは、1つ以上のディスプレイ・デバイス(「画面」)上に描かれた仮想空間を、当該システムの一人または複数の操作者によって占められる物理空間と一致するものとして扱う環境を提供することができる。このような環境の一実施形態についてここで説明する。この現実施形態は、固定位置に3つのプロジェクタ駆動画面を含み、1つのデスクトップ・コンピュータによって駆動され、本明細書に記載したジェスチャ・ボキャブラリおよびインターフェース・システムを用いて制御される。しかしながら、記載する技法は、いかなる数の画面でもサポートすること、これらの画面は移動可能であってもよいこと(固定ではなく)、画面は多くの独立したコンピュータによって同時に駆動してもよいこと、そしてシステム全体はいずれの入力デバイスまたは技法によっても制御できることを注記しておく。
本開示において記載するインターフェース・システムは、物理空間における画面の寸法、方位、および位置を決定する手段を有していなければならない。この情報を仮定して、本システムは、これらの画面が配置されている(そして、本システムの操作者が占める)物理空間を、本システム上で実行しているコンピュータ・アプリケーションの仮想空間への投影として動的にマッピングすることができる。この自動マッピングの一部として、本システムは、システムによってホストされているアプリケーションの必要性に応じて、種々の方法で2つの空間の規模、角度、深さ、寸法、およびその他の空間特性も変換する。
この物理空間と仮想空間との間における連続変換によって、既存のアプリケーション・プラットフォームでは達成が困難である、または既存のプラットフォーム上で実行するアプリケーション毎に1つ1つ実装しなければならない多数のインターフェース技法の一貫性があり普及する使用が可能となる。これらの技法は、(限定ではないが)以下を含む。
1)「リテラル・ポインティング」(literal pointing)の広く行き渡る自然なインターフェース技法としての使用。ジェスチャ・インターフェース環境において手を用いるか、あるいは物理的ポインティング・ツールまたはデバイスを用いる。
2)画面の移動または再位置決めに対する自動補償。
3)操作者の位置に応じて変化するグラフィクス・レンダリング。例えば、深度の知覚を高めるためにパララックス・シフトをシミュレーションする。
4)実世界位置、方位、状態等を考慮に入れた、画面上表示への物理的オブジェクトの含入。例えば、大きく不透明な画面の前に立っている操作者は、アプリケーションのグラフィクスと、画面の背後にある(そして、恐らく移動しているか、または方位を変えている)スケール・モデル(scale model)の真の位置の表現との双方を見ることができる。
リテラル・ポインティングは、マウスに基づくウィンドーイング・インターフェースや殆どのその他の現在のシステムにおいて用いられている絶対ポインティングとは異なることを注記するのは重要である。これらのシステムでは、操作者は仮想ポインタと物理ポインティング・デバイスとの間の変換を管理することを学習しなければならず、更にこれら2つの間で経験的知識に基づいてマッピングしなければならない。
対照的に、本開示において記載するシステムでは、アプリケーションまたはユーザの観点のいずれからでも、仮想空間と物理空間との間に差がないので(仮想空間の方が数学的操作がし易いことを除く)、操作者に経験的知識に基づく変換は必要とされない。
本明細書において記載する実施形態によって提供されるリテラル・ポインティングに最も近い類似性は、接触感応画面(例えば、多くのATM機械上で見られる)である。接触感応画面は、画面上の二次元表示空間と画面表面の二次元入力空間との間に1対1のマッピングを規定する。同様に、本明細書において記載するシステムは、1つ以上の画面上に表示される仮想空間と、操作者によって占められる物理空間との間に柔軟なマッピング(1対1のマッピングも可能であるが、その必要性はない)を規定する。この類似性の有益さ(usefulness of the analogy)にも拘わらず、この「マッピング手法」の三次元、任意に大きなアーキテクチャ環境、および多数の画面への拡張は重要である。
本明細書において記載するコンポーネントに加えて、本システムは、環境の物理空間と各画面上の表示空間との間に連続的なシステム・レベルのマッピング(恐らく回転、平行移動、倍率調整、またはその他の幾何学的変換によって変更される)を実現するアルゴリズムも実装することができる。
レンダリング・スタックは、計算オブジェクトおよびマッピングを取り込み、仮想空間のグラフィカル表現を出力する。
入力イベント処理スタックは、制御システムからイベント・データを取り込み(現実施形態では、システムおよびマウス入力からのジェスチャ・データおよびポインティング・データの双方)、入力イベントからの空間データを仮想空間における座標にマッピングする。次いで、変換されたイベントは、実行中のアプリケーションに配信される。
「グルー・レイヤ」は、システムが、ローカル・エリア・ネットワークにある数台のコンピュータに跨って実行するアプリケーションをホストすることを可能にする。
空間連続入力システムの実施形態について説明する。ここでは、以下で詳しく説明するが、このシステムは、サブシステム「スロークス」、「プロテイン」、および「プール」を備えている、「プラズマ」と呼ばれるシステムを含む、ネットワーク系データ表現、移行、および交換を備えている。プールおよびプロテインは、プロセス間でまたはプロセスを跨いで共有すべきデータをカプセル化するために、本明細書において説明する方法およびシステムのコンポーネントである。また、これらのメカニズムは、プロテインおよびプールの他に、スロークス(「スロー」(slaw)の複数形)も含む。一般に、スロークスは、プロセス間交換についての最も低いレベルのデータ定義を規定し、プロテインは、中間レベルの構造を規定し、照会(querying)およびフィルタリングを担い(hook for)、プールは、高レベルの編成およびアクセス・セマンティクスを規定する。スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、スロークスをペイロードとして用いて、データ・カプセル化および輸送方式を規定する。プールは、ローカル・プロセッサ間での、リモートまたは分散プロセス間にあるネットワークを跨いだ、そしてより長期(例えば、ディスク上等における)記憶を通じた、プロセス内におけるプロテインの構造化されているが柔軟な集計、順序付け、フィルタリング、および分散を規定する。
本明細書に記載する実施形態の構成および実施態様は、様々な構造(construct)を含み、これらが一緒になって多数の能力を可能にする。例えば、本明細書において記載する実施形態は、前述のように大多数のプロセス間における効率的な交換に備えている。また、本明細書において記載する実施形態は、柔軟なデータ「タイピング」(typing)および構造にも備えているので、広範囲にわたる多様な種類のデータおよび使用をサポートする。更に、本明細書において記載する実施形態は、データ交換のための柔軟なメカニズム(例えば、ローカル・メモリ、ディスク、ネットワーク等)を含み、これらは全て実質的に同様のアプリケーション・プログラミング・インターフェース(API)によって駆動される。更に、本明細書において記載する実施形態は、異なるプログラミング言語で書かれたプロセス間におけるデータ交換を可能にする。加えて、本明細書において記載する実施形態は、データ・キャッシュおよび集計状態の自動的な保守を可能にする。
図25は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ表現を含む処理環境のブロック図である。本明細書において紹介する実施形態の主要な構造には、スロークス(「スロー」(slaw)の複数形)、プロテイン、およびプールが含まれる。本明細書において記載する場合、スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、本明細書において詳細に説明するように、データ・カプセル化および輸送方式を規定し、一実施形態のプロテインのペイロードはスロークスを含む。プールは、本明細書において記載する場合、プロテインの構造化されているが柔軟な集計、順序付け、フィルタ処理、および分散を規定する。プールは、プロテインのための、プロセス内部における、ローカル・プロセッサ間での、リモートまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」(例えば、ディスク上)記憶による、データへのアクセスを与える。
図26は、一実施形態の下におけるプロテインのブロック図である。プロテインは、長さヘッダ、ディスクリップ(descrip)、およびインジェスト(ingest)を含む。以下で詳細に説明するが、ディスクリップおよびインジェストの各々は、スローまたはスロークスを含む。
図27は、一実施形態の下におけるディスクリップのブロック図である。以下で詳細に説明するが、ディスクリップは、オフセット、長さ、およびスロークスを含む。
図28は、一実施形態の下におけるインジェストのブロック図である。以下で詳細に説明するが、インジェストは、オフセット、長さ、およびスローを含む。
図29は、一実施形態の下におけるスローのブロック図である。以下で詳細に説明するが、スローは、タイプ・ヘッダ、およびタイプ特定データを含む。
図30Aは、一実施形態の下における、プールの中にあるプロテインのブロック図である。プロテインは、長さヘッダ(「プロテイン長さ」)、ディスクリップ・オフセット、インジェスト・オフセット、ディスクリップ、およびインジェストを含む。ディスクリップは、オフセット、長さ、およびスローを含む。インジェストは、オフセット、長さ、およびスローを含む。
プロテインは、本明細書において記載する場合、プロセッサ間で共有する、あるいはバスまたはネットワークまたはその他の処理構造を跨いで移動する必要があるデータをカプセル化するメカニズムのことである。一例として、プロテインは、ユーザ・インターフェース・イベントに対応するまたは関連するデータを含むデータの輸送および操作のための改良メカニズムを提供する。具体的には、一実施形態のユーザ・インターフェース・イベントは、先に説明したジェスチャ・インターフェースのそれを含む。更に別の例として、プロテインは、限定ではく、グラフィクス・データまたはイベント、および状態情報等その他多数を含むデータの輸送および操作のための改良メカニズムを提供する。プロテインは、構造化レコード・フォーマット、およびレコードを操作するための1組の関連方法である。本明細書において用いる場合、レコードの操作は、データを構造に入力すること、構造からデータを取り出すこと、およびデータのフォーマットおよび存在を問い合わせることを含む。プロテインは、種々のコンピュータ言語で書かれたコードを通じて用いられるように構成されている。また、プロテインは、本明細書において記載するような、プールの基本的構築ブロックとなるように構成されている。更に、プロテインは、それらが含むデータを不変のまま維持しつつ、プロセッサ間そしてネットワークを跨いで自然に移動できるように構成されている。
従来のデータ輸送メカニズムとは対照的に、プロテインにはタイプが決められていない。タイプは決められていないが、プロテインは、「タイプ状」機能を実装することに加えて、強力で柔軟性のあるパターン照合装置(facility)を備えている。また、本明細書に記載するように構成されているプロテインは、本質的に多点型でもある(しかし、二点間形態も、多点伝送の部分集合として容易に実現される)。加えて、プロテインはメモリ内、ディスク上、およびワイヤ(ネットワーク)上フォーマット間で異なることがない「ユニバーサル」レコード・フォーマットを定義する(即ち、実行する任意の最適化の種類だけが異なる)。
図26および図30Aを参照すると、一実施形態のプロテインは、バイトの線形シーケンスである。これらのバイトの中には、ディスクリップ・リストと、1組のキー値対がカプセル化されている。キー値対をインジェストと呼ぶ。ディスクリップ・リストは、綿密(elaborate)であるが効率的にフィルタ可能なプロテイン毎のイベント記述を任意に含む。インジェストは、1組のキー値対(key value pair)を含み、これらがプロテインの実際の内容を構成する。
プロテインのキー値対との関わり、ならびにネットワークに都合がよい(network-friendly)多点データ相互交換に関する中核的観念の一部は、「タプル」の概念を特別に許可する(priviledge)もっと簡単なシステム(例えば、Linda、Jini)と共有される。プロテインは、タプル指向システムとは様々な面で大きく異なり、その相違には、標準的、最適化可能なパターン照合基盤を設けるためにディスクリップ・リストを用いることが含まれる。また、プロテインがタプル指向システムと異なるのは、種々の記憶および言語構造に適したレコード・フォーマットの厳格な仕様、そしてそのレコード・フォーマットに対する「インターフェース」の色々な特定的な実施態様である。
プロテインの説明に戻って、プロテインの最初の4バイトまたは8バイトは、プロテインの長さを指定する。一実施形態では、長さは16バイトの倍数でなければならない。この16バイトの粒度により、バイト整合およびバス整合効率が現在のハードウェアでも達成可能であることを確保する。本来「4ワード整合」型でないプロテインには、任意のバイトを詰めこんで、その長さが16バイトの倍数となるようにする。
プロテインの長さ部分は、次のフォーマットを有する。ビッグ・エンディアン・フォーマット(big-endian format)で長さを指定する32ビット。その下位4ビットはマクロ・レベルのプロテイン構造特性を示すフラグとして機能する。プロテインの長さが2^32バイトよりも大きい場合、その次に来る更に別の32ビット。
一実施形態における16バイト整合条件は、最初の4バイトの最下位ビットがフラグとして利用可能であることを意味する。そして、このため、最下位の3ビット・フラグは、プロテインの長さが最初の4バイトで表現できるのか、または8バイト必要なのかを示し、プロテインがビッグ・エンディアンまたはリトル・エンディアンの内どちらのバイト順序付けを用いるのかを示し、更に、プロテインが標準的構造または非標準的構造のどちらを採用するのかをそれぞれ示すが、プロテインはこのように限定されるのではない。4番目のフラグ・ビットは、今後の使用のために保存されている。
8バイト長フラグ・ビットがセットされている場合、プロテインの長さを計算するには、次の4バイトを読み取り、これらをビッグ・エンディアン、8バイト整数の上位バイトとして用いる(4バイトは既に読み取られ、下位部分を供給する)。リトル・エンディアン・フラグがセットされている場合、プロテインの中にある全ての二進数値データをリトル・エンディアンとして解釈する(それ以外の場合は、ビッグ・エンディアン)。非標準フラグ・ビットがセットされている場合、プロテインの残りの部分は、以下で説明する標準構造に従わない。
非標準プロテイン構造については、プロテインおよびプールを用いるシステム・プログラマには、非標準プロテイン・フォーマットを記述しこれに同期するための種々の方法が利用可能であること、そしてこれらの方法は、空間または計算サイクルが制限されているときに有用となることができることを除いて、ここではこれ以上論じない。例えば、一実施形態では、最短のプロテインは16バイトである。標準フォーマットのプロテインは、実際のペイロード・データをこれらの16バイトにはめ込むことは全くできない(その一番大きい部分は既に、プロテインのコンポーネント・パーツの位置を記述することが任されている)。しかし、非標準フォーマット・プロテインは、その16バイトの内12バイトをデータに用いることができると考えられる。2つのアプリケーションがプロテインを交換すると、これらが発信するいずれの16バイト長プロテインでも常に12バイトを含み、これらは、例えば、リアル・タイム・アナログ/ディジタル変換器からの12個の8ビット・センサ値を表すことを相互に決定することができる。
長さヘッダの直後には、プロテインの標準構造では、更に2つの可変長整数値が現れる。これらの数値は、それぞれ、ディスクリップ・リストにおける最初のエレメント、および最初のキー値対(インジェスト)に対するオフセットを指定する。これらのオフセットは、本明細書では、それぞれディスクリップ・オフセットおよびインジェスト・オフセットとも呼ぶ。これらの数値の各クアッド(quad)のバイト順序は、プロテイン・エンディアンネス・フラグ・ビット(protein endianness flag bit)によって指定される。各々について、最初の4バイトの最上位ビットは数値が4または8バイト幅のどちらであるかを決定する。最上位ビット(msb)がセットされている場合、最初の4バイトは二重ワード(8バイト)数値の最上位バイトとなる。ここでは、これを「オフセット・フォーム」と呼ぶ。ディスクリップおよび対を指し示す別個のオフセットを用いることにより、ディスクリップおよび対を異なるコード・パスによって扱うことが可能となり、例えば、ディスクリップ・パターン照合およびプロテイン・アセンブリに関する個々の最適化を行うことができるようになる。また、これら2つのオフセットがプロテインの先頭にあるため、様々な有用な最適化に対処できる。
殆どのプロテインは8バイト長またはポインタを必要とする程大きくないので、一般に長さ(とフラグ)および2つのオフセット数値は、プロテインの最初の3バイトを占めるに過ぎない。多くのハードウェアまたはシステム・アーキテクチャでは、最初のバイトを超えるある数のバイトのフェッチ即ちリードは、「自由」である(例えば、16バイトは、セル・プロセッサ(Cell processor)の主要バスを介して引き込むには、1バイトと全く同じ数のクロック・サイクルを要する。)
多くの場合、プロテイン内部において実施態様特定またはコンテキスト特定のキャッシング(caching)またはメタデータを許容することは有用である。オフセットの使用により、プロテインの先頭付近に、任意のサイズの「孔(whole)」を作成し、その中にこのようなメタデータを割り込ませることができる。8バイトのメタデータを利用することができる実施態様では、多くのシステム・アーキテクチャ上でこれらのバイトを、長さヘッダをフェッチする毎に1つのプロテインに対して自由に得ることができる。
ディスクリップ・オフセットは、プロテインの先頭と最初のディスクリップ・エントリとの間のバイト数を指定する。各ディスクリップ・エントリは、次のディスクリップ・エントリまでのオフセット(勿論、オフセット・フォームで)を備えており、その後に可変幅の長さフィールド(これもオフセット・フォーマットで)が続き、更にその後にスローが続く。これ以上ディスクリップがない場合、オフセットは、規則上、0の4バイトとなる。それ以外の場合、オフセットは、当該ディスクリップ・エントリの開始と次との間のバイト数を指定する。長さフィールドは、バイト単位で、スローの長さを指定する。
殆どのプロテインでは、各ディスクリップは、スロー・ストリング様式でフォーマットしたストリングであり、4バイトの長さ/タイプヘッダを有し、最上位ビットがセットされ、下位30ビットだけが長さを指定するために用いられ、その後に、ヘッダが指示する数のデータ・バイトが続く。通常通り、長さヘッダはそのエンディアンネスをプロテインから取り込む。バイトは、UTF−8キャラクタをエンコードすると仮定する(したがって、キャラクタ数は必ずしもバイト数と同じではないことを注記しておく)。
インジェスト・オフセットは、プロテインの先頭と最初のインジェスト・エントリとの間のバイト数を指定する。各インジェスト・エントリは、次のインジェスト・エントリまでのオフセット(オフセット・フォームで)を備えており、その後にこの場合も長さフィールドおよびスローが続く。インジェスト・オフセットは、次のディスクリップ・エントリの代わりに次のインジェスト・エントリを指し示すことを除いて、ディスクリップ・オフセットと機能的には同一である。
殆どのプロテインでは、各インジェストは、スロー・コンス・タイプ(slaw cons type)であり、二値リストを備えている。このリストは通常キー/値対として用いられる。スロー・コンス・レコードは、最上位から2番目のビットがセットされており、下位30ビットだけが長さを指定するために用いられる4バイトの長さ/タイプ・ヘッダと、4バイトの値(2番目)エレメントの先頭までのオフセットと、前述の4バイトのキー・エレメント長と、キー・エレメントに対するスロー・レコードと、4バイト長の値エレメントと、最後に前述の値エレメントに対するスロー・レコードとを備えている。
一般に、コンス・キーはスロー・ストリングである。数個のプロテインおよびスロー・コンス長ならびにオフセット・フィールドを跨いでデータを複製することにより、工夫(refinement)および最適化の一層多くの機会が得られる。
前述のように、類型に分けたデータをプロテイン内部に埋め込むために一実施形態において用いられる構造は、タグ付きのバイト・シーケンス指定および抽象化(abstraction)であり、「スロー」と呼ばれる(複数形は「slawx」となる)。スローは、類型に分けた(恐らくは、集計)データの一片を表すバイトの線形シーケンスであり、プログラミング言語特定APIと関連付けられている。APIは、スロークスを作成し、修正し、メモリ空間、記憶媒体、およびマシンの間で移動させることができる。スロー・タイプ方式(slaw type scheme)は、拡張可能でできるだけ軽量であり、あらゆるプログラミング言語からでも用いることができる共通基盤となることを意図している。
効率的な、大規模プロセス間通信メカニズムを構築することの要望が、スロー・コンフィギュレーションの原動力(driver)である。従来のプログラミング言語は、精巧なデータ構造およびタイプ機能を備えており、プロセス特定のメモリ・レイアウトでは申し分なく動作するが、データをプロセッサ間で移動させたり、ディスク上に格納することが必要となると、これらのデータ表現はいつでも決まって分解する。スロー・アーキテクチャは、第1に、プロセス間通信に対する、非常に効率的で、マルチ・プラットフォームに都合がよい低レベル・データ・モデルである。
しかし、更に一層重要なのは、スロークスが、プロテインと共に、今後の計算機ハードウェア(マイクロプロセッサ、メモリ・コントローラ、ディスク・コントローラ)の開発に影響を及ぼし、それを可能にするように構成されていることである。例えば、広く一般に入手可能なマイクロプロセッサの命令セットに、多少の具体的な追加を行うことにより、スロークスが、殆どのプログラミング言語において用いられている方式と同様に、単一プロセス、メモリ内データ・レイアウトに対しても効率的となることが可能になる。
各スローは、可変長のタイプ・ヘッダと、その後に続くタイプ特定データ・レイアウトとを備えている。例えば、C、C++、およびRubyにおけるスロー機能を全てサポートする実施形態の一例では、タイプは、各言語からアクセス可能なシステム・ヘッダ・ファイルにおいて定義されているユニバーサル整数(universal integer)によって示される。更に精巧化し柔軟性を高めたタイプ解明機能(type resolution functionality)、例えば、ユニバーサル・オブジェクトIDおよびネットワーク参照による間接的類型決定も可能である。
一実施形態のスロー・コンフィギュレーションは、スロー・レコードを、例えば、RubyおよびC++双方から言語に優しい様式でオブジェクトとして用いることを可能にする。C++コンパイラ外部の1組のユーティリティが、スロー・バイト・レイアウトの健全性をチェックし、個々のスロー・タイプに特定的なヘッダ・ファイルおよびマクロを作成し、Rubyに対するバインディング(binding)を自動的に発生する。その結果、正しく構成したスロー・タイプは、1つのプロセスの中から用いた場合でも、非常に効率的となる。プロセスのアクセス可能なメモリのいずれの場所におけるいずれのスローでも、コピーや「非直列化」ステップがなくても、アドレスすることができる。
一実施形態のスロー機能は、以下の内1つ以上を実行するAPI機能を含む。具体的なタイプの新たなスローを作成する。ディスク上またはメモリ内におけるバイトからのスローへの言語特定参照を作成または構築する。タイプに特定の様式でスロー内にデータを埋め込む。スローのサイズを問い合わせる。スロー内部からデータを引き出す。スローのクローンを作成する。そして、スロー内部にある全てのデータのエンディアンネスおよびその他のフォーマット属性を変換する。スローのあらゆる種(species)が以上の挙動を実施する。
図30Bは、一実施形態の下におけるスロー・ヘッダーのフォーマットを示す。以下にスローの詳細な説明を行う。
各スローの内部構造は、タイプ解明、カプセル化データへのアクセス、および当該スロー・インスタンスについてのサイズ情報の各々を最適化する。一実施形態では、1組のスロー・タイプ全体は、設計上、最小限の全てが揃っており、スロー・ストリング、スロー・コンス(即ち、ダイアッド(dyad))、スロー・リスト、およびスロー数値オブジェクトを含む。スロー数値オブジェクト自体は、半ダース程度の基本的な属性の組み合わせ(permutation)として理解される、広範な1組の個別数値タイプを表す。いずれのスローでも、その他の基本的プロパティはそのサイズである。一実施形態では、スロークスは、4の倍数に量子化したバイト長を有し、これらの4バイト・ワードを、ここでは「クアッド」と呼ぶ。一般に、このようなクアッドに基づくサイズ決定により、スロークスを最新のコンピュータ・ハードウェア・アーキテクチャのコンフィギュレーションと正確に整合させる。
一実施形態では、各スローの最初の4バイトは、ヘッダ構造を備えている。ヘッダ構造は、タイプ記述およびその他のメタ情報をエンコードし、特定的なタイプの意味を特定のビット・パターンに帰属させる(ascribe)。例えば、スロー・ヘッダの最初の(最上位)ビットは、そのスローのサイズ(クアッド・ワード単位の長さ)が最初の4バイトのタイプ・ヘッダに従うか否か指定するために用いることができる。このビットがセットされている場合、スローのサイズが当該スローの次の4バイト(例えば、バイト5から8まで)に明示的に記録されていることが分かる。スローのサイズが、4バイトでは表現できないような場合(即ち、サイズが2の32乗以上である場合)、スローの最初の4バイトの次の最上位ビットもセットする。これは、スローが8バイト(4バイトではなく)長を有することを意味する。その場合、検査プロセスが、序数バイト(ordinal byte)5から12までに格納されているスローの長さを発見する。他方で、スロー・タイプの数値が小さいことは、多くの場合、完全に指定した類型ビット・パターンが、4バイトのスロー・ヘッダにおける多くのビットを「未使用のまま残してある」ことを意味し、そのような場合、これらのビットは、スローの長さをエンコードするために用いてもよく、そうしなければ必要となるはずのバイト(5から8まで)を取っておくことができる。
例えば、一実施形態では、スロー・ヘッダの最上位ビット(「長さ従属」フラグ)をセットしないままにしておき、次のビットをセットして、そのスローが「微小コンス」であることを示し、この場合、スローの長さ(クアッド単位)を残りの30ビットにエンコードする。同様に、「微小ストリング」は、ヘッダにおけるパターン001によって印され、スロー・ストリングの長さを表すために、29ビットが残され、ヘッダにおける最初の0001が「微小リスト」を記述する。これは、28ビットの利用可能長表現ビットのために、サイズが2から28クアッドまでのスロー・リストとすることができる。「最大ストリング」(あるいはコンスまたはリスト)は、ヘッダに異なるビット・シグネーチャを有し、ヘッダの最上位ビットは必ずセットされる。何故なら、スロー長はバイト5から8(または、極端な場合には12)において別個にエンコードされるからである。尚、プラズマ実施態様は、スローの組立時に、これらの構造の「微小」バージョンまたは「最大」バージョンのどちらを採用すべきか「決定する」(決定は、最終的なサイズが利用可能な微小ビットに「納まるか」否かに基づく)が、最大−対−微小の詳細は、プラズマ実施態様のユーザには隠されている。ユーザは、スロー・ストリング、またはスロー・コンス、またはスロー・リストを用いていることしか知らないし、そのことしか気に留めない。
一実施形態では、数値スロークスは、最初のヘッダ・パターン00001によって示される。後続のヘッダ・ビットは、任意の順列に組み合わせることができる1組の直交プロパティを表すために用いられる。一実施形態では、数値が(1)浮動小数点、(2)複素数、(3)符号なし、(4)「広い」、(5)「太くて短い」(stumpy)であるか否かを示すために、5つのこのようなキャラクタ・ビットを用いるが、これらに限定されるのではない((4)「広い」および(5)「太くて短い」の順序を変えて、8、16、32、および64ビット数表現を示す)。2つの追加ビット(例えば、(7)および(8))は、カプセル化した数値データが、2−、3−、または4−エレメント・ベクトルであることを示す(双方のビットが0の場合、数値が「1−エレメント・ベクトル」(即ち、スカラー)であることを示唆する)。この実施形態では、4番目のヘッダ・バイトの8ビットを用いて、カプセル化した数値データのサイズを(クアッド単位ではなく、バイト単位で)エンコードする。このサイズのエンコード処理は、1から256までの間のいずれのサイズでも表すことができるように、1だけずらされる。最後に、2つのキャラクタ・ビット(例えば、(9)および(10))を用いて、数値データが個々の数値エンティティの配列をエンコードすることを示す。数値エンティティの各々は、キャラクタ・ビット(1)から(8)までによって記述されるタイプのものである。アレイの場合、個々の数値エンティティには、各々、追加のヘッダが添付されず、1つのヘッダおよび恐らくは、明示的なスロー・サイズ情報に続く連続データとしてパックされる。
この実施形態では、単純かつ効率的なスローの複製(バイト毎のコピーとして実施することができる)、および非常に単純で効率的なスローの比較が可能となる(この実施形態では、連続と見なされる構成バイトの各々に1対1の一致がある場合に限って、2つのスロークスは同一となる)。後者のプロパティは、例えば、プロテイン・アーキテクチャの効率的な実現には重要である。その重要なそして波及する(pervasive)特徴は、プロテインのディスクリップ・リスト全体を検索できること、または「リスト上で照合」できることである。
更に、本明細書における実施形態は、集計スロー形態(例えば、スロー・コンスおよびスロー・リスト)を簡単かつ効率的に作成することを可能にする。例えば、一実施形態では、スロー・コンスを、いずれのタイプでもよく、これら自体集計を含む、2つの成分スロークスから次のように構築する。(a)各成分スローのサイズを問い合わせ、(b)2つの成分スロークスのサイズ、およびヘッダ・プラス・サイズ構造に必要な1、2、または3クアッドの和に等しいサイズのメモリを割り当て、(c)最初の4、8、または12バイトにスロー・ヘッダ(およびサイズ情報)を記録し、次いで(d)成分スロークスのバイトを順番に、直後に続くメモリにコピーする。重要なのは、このような組立ルーチンは、2つの成分スロークスのタイプについて何も知る必要がなく、それらのサイズ(そして、バイトのシーケンスとしてのアクセス可能性)だけが問題であることである。同じプロセスは、スロー・リストの作成にも関与する。スロー・リストは、(恐らくは)異質なタイプの任意の多くのサブ・スロークス(sub-slawx)の順序付けしたカプセル化である。
メモリにおける連続バイトとしてのスロー・システムの基本的フォーマットの更に別の成果が、「横断」活動(traversal activities)と関連して得られる。反復使用パターンが、例えば、スロー・リストに格納されている個々のスロークスへの順次アクセスを用いる。プロテイン構造内部におけるディスクリップおよびインジェストを表す個々のスロークスも同様に横断しなければならない。このような操作は、驚く程単純かつ効率的な方法で遂行される。つまり、スロー・リストにおける次のスローに「進み」、現在のスローの長さをそのメモリ位置に追加し、結果的に得られたメモリ位置が、次のスローのヘッダと同一となる。このような簡素さが可能なのは、スローおよびプロテインの設計が「間接」を避けるからである。つまり、ポインタがなく、データは単純にその全体が本来の場所に存在する。
スロー比較の時点までに、プラズマ・システムの完全な実施態様は、異なるオペレーティング・システム、CPU、およびハードウェア・アーキテクチャに跨ってそしてこれらの間において、異なり互換性のないデータ表現方式の存在を承認しなければならない。このような相違の主要なものには、バイト順序付け方針(例えば、リトル−エンディアン対ビッグ−エンディアン)および浮動小数点表現が含まれ、その他の相違も存在する。プラズマ仕様では、スロークスによってカプセル化したデータが解釈可能である(interprable)(即ち、スローを検査している元のアーキテクチャまたはプラットフォームのネーティブ・フォーマットで現れなければならない)。この要件は、一方、プラズマ・システム自体がデータ・フォーマット変換の責任を負うことを意味する。しかしながら、仕様では、スローが、それを検査するかもしれない実行中のプロセスに対して「完全に可視」になる前に変換を行うことしか規定していない。したがって、どの時点でこのようなフォーマットc変換を実行するかを選択するのは、個々の実施態様次第となる。2つのしかるべき手法があり、それは、(1)個々のスローがパックされていたプロテインから「引き出す」際に、または(2)プロテインが入っていたプールからそのプロテインを抽出する際に、当該プロテインの中にあるスロー全てについて同時に、スロー・データ・ペイロードをローカル・アーキテクチャのデータ・フォーマットに準拠させることである。尚、変換規定は、ハードウェア補助実施態様の可能性も考慮することを注記しておく。例えば、明示的プラズマ能力によって構築したネットワーキング・チップセットは、受信システムの既知の特性に基づいて、インテリジェントにそして「送信の時点」にフォーマット変換を実行することを選択することができる。あるいは、送信のプロセスがデータ・ペイロードを基軸フォーマットに変換することもでき、受信プロセスは、対称的に基軸フォーマットから「ローカル」フォーマットに変換する。別の実施形態では、「メタル」において(at the metal)フォーマット変換を実行する。これが意味するのは、データは、ローカル・メモリの中であっても、常に基軸フォーマットで格納されており、データをメモリから引き出し隣接するCPUのレジスタに入れるときに、メモリ・コントローラ・ハードウェア自体が変換を実行する。
一実施形態の最小(そして読み取り専用)プロテインの実施態様は、プロテインを利用する1つ以上のアプリケーションまたはプログラミング言語における動作または挙動を含む。図30Cは、一実施形態の下でプロテインを用いるためのフロー図3050である。動作を開始すると、3052においてプロテインの長さをバイト単位で問い合わせる。3054において、ディスクリップ・エントリの数を問い合わせる。3056において、インジェストの数を問い合わせる。3058において、インデックス番号によってディスクリップ・エントリを引き出す。3060において、インデックス番号によってインジェストを引き出す。
また、本明細書において記載する実施形態は、プロテインを作成してデータを充填させる基本的な方法、プログラマによって共通のタスクを容易に行えるようにするヘルパ方法、および最適化を遂行するためのフック(hook)も定める。図30Dは、一実施形態の下においてプロテインを作成する、即ち、発生するためのフロー図3070である。動作は、3072における新たなプロテインの作成から開始する。3074において、一連のディスクリップ・エントリを添付する。また、3076においてインジェストも添付する。3078において、一致するディスクリップの存在を問い合わせ、3080において、一致するインジェスト・キーの存在を問い合わせる。インジェスト・キーが得られたなら、3082において、インジェスト値を引き出す。3084において、ディスクリップ全体でパターン照合を実行する。3086において、プロテインの先頭付近に、非構造化メタデータを埋め込む。
前述のように、スロークスはプロセス間交換のための低レベルのデータ定義を規定し、プロテインは問い合わせおよびフィルタ処理のために中間レベルの構造およびフックを規定し、プールは高レベルの編成およびアクセス・セマンティックスについて規定する。プールは、プロテインのためのレポジトリであり、線形シーケンシング(linear sequencing)および状態キャッシング(state caching)に備えている。また、プールは、多数のプログラムまたは多数の異なる種類のアプリケーションによるマルチ・プロセス・アクセスにも備えている。更に、プールは、1組の共通な、最適化可能なフィルタ処理およびパターン照合挙動にも備えている。
一実施形態のプールは、数万ものプロテインを収容することができ、状態を維持するように機能することができるので、個々のプロセスはマルチ・プロセス・プログラム・コードに共通する厄介なブックキーピングの多くの負担を軽減することができる。プールは、利用可能な過去のプロテインの大きなバッファを維持または保持し、プラトニック・プール(Platonic pool)は明示的に無限であるので、関与するプロセスは、プールにおいて意のままに逆方向および順方向の双方に走査することができる。バッファのサイズは、実施態様に左右されるが、勿論、慣例的な仕様では、プロテインをプールの中に数時間または数日保持できることが多い。
本明細書において記載するプール使用の最も慣例的な様式では、既存のプロセス間通信フレームワークが採用する機械論的(mechanistic)二点間手法とは対照的に、生物的比喩に従う。プロテインという名称は、生物的発想を暗示する。生物組織における化学的蛋白質が、多数の細胞因子(cellular agent)によるパターン照合およびフィルタ処理に利用可能であるのと同様に、プールの中にあるデータ・プロテインは、多数の計算プロセスによる柔軟な問い合わせおよびパターン照合に利用可能である。
2つの付加的な抽象化が生物的比喩に同調し(lean)、「ハンドラ」の使用およびゴルジ・フレームワーク(Golgi framework)を含む。プールに関与するプロセスは、一般に、多数のハンドラを作成する。ハンドラは、比較的小さい1群のコードであり、照合条件をハンドル挙動と関連付ける。1つ以上のハンドラをプールに類別することにより、プロセスは、状態をカプセル化し新たなプロテインに反応する、柔軟なコール・バック・トリガ(call-back trigger)を設定する。
数個のプールに関与するプロセスは、一般に、抽象的ゴルジ・クラスから継承する。ゴルジ・フレームワークは、多数のプールおよびハンドラを管理するための多くの有用なルーチンを提供する。また、ゴルジ・クラスは、親−子関係もカプセル化し、プールを用いないローカル・プロテイン交換のためのメカニズムを提供する。
一実施形態の下で提供するプールAPIは、種々の方法でプールを実現し、システム特定の目標、ならびに所与のハードウェアおよびネットワーク・アーキテクチャの利用可能な処理能力双方を考慮に入れるように構成されている。プールが依存する2つの基礎的なシステムの常設機構(provision)は、記憶装置およびプロセス間通信手段である。本明細書において記載する、現存する(extant)システムは、共有メモリ、仮想メモリ、および記憶装置用ディスク、ならびにプロセス間通信のためのIPCクエリおよびTCP/IPソケットの柔軟な組み合わせを用いる。
一実施形態のプールの機能には、限定ではなく、以下が含まれる。プールに関与する。プロテインをプールの中に入れる。次の未見プロテインをプールから引き出す。プール内の内容(例えば、プロテイン)を逆回しまたは早送りする。加えて、プールの機能には、限定ではなく、以下も含むことができる。プロセスに対するストリーミング・プール・コール・バックを設定する。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインを選択的に引き出す。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインについて逆方向および順方向に走査する。
前述のプロテインは、他のアプリケーションとプロテイン・データ・コンテンツを共有する方法として、プールに供給される。図31は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。この環境例は、前述のようにスロークス、プロテイン、およびプールの使用によりデータを共有する3つのデバイス(例えば、デバイスX、デバイスY、およびデバイスZ、ここでは纏めて「デバイス」と呼ぶ)を含む。これらのデバイスの各々は、3つのプール(例えば、プール1、プール2、プール3)に結合されている。プール1は、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン(例えば、プロテインX1、プロテインZ2、プロテインY2、プロテインX4、プロテインY4)を含む(例えば、プロテインZ2は、デバイスZによってプール1に転送または提供された等)。プール2は、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン(例えば、プロテインZ4、プロテインY3、プロテインZ1、プロテインX3)を含む(例えば、プロテインY3は、デバイスYによってプール2に転送または提供された等)。プール3は、それぞれのデバイスから当該プールに供給または転送された多数のプロテイン(例えば、プロテインY1、プロテインZ3、プロテインX2)を含む(例えば、プロテインX2は、デバイスXによってプール3に転送または提供された等)。前述の例では、3つのプール間に結合または接続されている3つのデバイスが含まれるが、あらゆる数のデバイスを、あらゆる数のプール間に如何様にでもまたはいずれの組み合わせでも結合または接続することができ、いずれのプールも、あらゆる数または組み合わせのデバイスから提供されるあらゆる数のプロテインを含むことができる。この例のプロテインおよびプールについては、図25から図30までを参照しながら先に説明した。
図32は、多数のデバイスと、これらのデバイスの1つ以上で走る多数のプログラムを含む処理環境のブロック図であり、一実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス(例えば、デバイスA、B等)およびこれらのデバイス上で走る多数のプログラム(例えば、appsAA-AX、appsBA-BX等)を備えている双方向処理システムが、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
この例では、各デバイス(例えば、デバイスA、B等)は、それぞれのデバイス上で走っているプログラム(例えば、appsAA-AX、appsBA-BX等)が発生したまたは出力された離散生データ(raw data)を、プラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入する。例えば、プログラムAXはデータまたは出力を発生し、この出力をデバイスAに供給する。一方、デバイスAはこの生データをプロテイン(例えば、プロテイン1A、プロテイン2A等)に変換し、これらのプロテインをプールに貯入する。別の例として、プログラムBCがデータを発生し、このデータをデバイスBに供給する。一方、デバイスBはこのデータをプロテイン(例えば、プロテイン1B、プロテイン2B等)に変換し、これらのプロテインをプールに貯入する。
各プロテインは、アプリケーションが発生し、プログラム自体についての情報を特定するデータまたは出力を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップは出力イベントまたは行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード(例えば、インジェスト)は、プログラム・イベントについての1組の有用な状態情報全体を搬送する。
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プールにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走っているあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することができる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマ(consumer)を多重化し、デバイスを一人で制御できるように、または数人(例えば、プラズマ・ベースの入力フレームワークは、多くの同時ユーザをサポートする)で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに見えるようになることである。
一例として、デバイスCは1つ以上のプロテイン(例えば、プロテイン1A、2A等)をプールから抽出することができる。プロテインの抽出に続いて、デバイスCは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出したプロテインのデータを、プロテイン・データが対応する処理イベントにおいて用いることができる。別の例として、デバイスBは、プールから1つ以上のプロテイン(例えば、プロテイン1C、プロテイン2A等)を抽出することができる。プロテインの抽出に続いて、デバイスBは、プロテイン・データが対応する処理イベントにおいて、プロテインのデータを用いることができる。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
図33は、多数のデバイスと、これらのデバイスの1つ以上で走る多数のプログラムを含む処理環境のブロック図であり、一代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス(例えば、デバイスAおよびBにそれぞれ結合されているデバイスXおよびY)および1つ以上のコンピュータ(例えば、デバイスA、デバイスB等)上で走る多数のプログラム(例えば、appsAA-AX、appsBA-BX等)を備えている双方向処理システムが、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
この例では、各デバイス(例えば、デバイスAおよびBにそれぞれ結合されているデバイスXおよびY)は、デバイス・ハードウェア(例えば、デバイスX、デバイスA、デバイスY、デバイスB等)が発生した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス(例えば、デバイスA、デバイスB等)上にホストされている1つ以上のプログラムの下で、またはこれらと連携して動作するように管理および/または結合されている。例えば、デバイスA上にホストされているアプリケーションABと連携して動作するデバイスXは、生データを発生し、この離散生データをプロテイン(例えば、プロテイン1A、プロテイン2A等)に変換し、これらのプロテインをプールに貯入する。別の例として、デバイスA上にホストされているアプリケーションATと連携して動作するデバイスXが、離散生データをプロテイン(例えば、プロテイン1A、プロテイン2Aなど)に変換し、これらのプロテインをプールに貯入する。更に別の例として、デバイスC上にホストされているアプリケーションCDと連携して動作するデバイスZは、生データを発生し、この離散生データをプロテイン(例えば、プロテイン1C、プロテイン2C等)に変換し、これらのプロテインをプールに貯入する。
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード(例えば、インジェスト)は、デバイス・イベントについての1組の有用な状態情報全体を搬送する。
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プールにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走っているあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することができる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人(例えば、プラズマ・ベースの入力フレームワークは、多くの同時ユーザをサポートする)で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに順に見えるようになることである。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
図34は、多数の入力デバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、別の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、双方向処理システムは、多数の入力デバイス(例えば、入力デバイスA、B、BA、およびBB等)を備えており、1つ以上のコンピュータ(例えば、デバイスA、デバイスB等)上で走る多数のプログラム(図示せず)を備えており、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
この例では、各入力デバイス(例えば、入力デバイスA、B、BA、およびBB等)は、入力デバイス・ハードウェアが発生した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス(例えば、デバイスA、デバイスB等)上にホストしたソフトウェア・ドライバ・プログラムによって管理される。例えば、入力デバイスAは生データを発生し、この生データをデバイスAに供給する。一方、デバイスAは離散生データをプロテイン(例えば、プロテイン1A、プロテイン2A等)に変換し、これらのプロテインをプールに貯入する。別の例として、入力デバイスBBは生データを発生し、この生データをデバイスBに供給する。一方、デバイスBは離散生データをプロテイン(例えば、プロテイン1B、プロテイン3B等)に変換し、これらのプロテインをプールに貯入する。
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード(例えば、インジェスト)は、デバイス・イベントについての1組の有用な状態情報全体を搬送する。
例示のために、ここに、このようなシステムにおける2つの典型的なイベントに対するプロテインを示す。ここでは、プロテインはテキストとして表すが、実際の実施態様では、これらのプロテインの構成部分は、類別されたデータ・バンドル(例えば、スロー)である。g-speak "one finger click" pose(「指1本によるクリック」のポーズ)(関連出願に記載されている)を記述するプロテインは、次の通りである。
Figure 0005806615
別の例として、マウスのクリックを記述するプロテインは次の通りである。
Figure 0005806615
以上のプロテインの見本のいずれかまたは双方は、そのコードの特定の部分を走らせるホスト・デバイスの関与プログラム(participating program)を生ずる可能性もある。これらのプログラムは、一般的なセマンティック・レベルに関係する場合がある。全ての内最も一般的なのは「point」であり、更に具体的な対は「engage, one」である。また、これらは、正確なデバイス:「one-finger-engage」または正に1つの集計オブジェクト(aggregate object)「hand-id-23」のみによってもっともらしく発生されるイベントを求めている場合もある。
前述のように、プロテインは、プログラムやデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが用いるために、プールにおいて利用可能である。したがって、あらゆる数のコンピュータ上で走るあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出する。これらのデバイスは、プロテインをプールから抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、入力イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人(例えば、プラズマ・ベースの入力フレームワークは、多くの同時ユーザをサポートする)で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに順に見えるようになることである。
プロテイン使用の一例として、デバイスCは1つ以上のプロテイン(例えば、プロテイン1B等)をプールから抽出することができる。プロテイン抽出に続いて、デバイスCは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出したプロテインのデータを、当該プロテイン・データが対応する入力デバイスCAおよびCCの入力イベントを処理する際に用いることができる。別の例として、デバイスAは、1つ以上のプロテイン(例えば、プロテイン1B等)をプールから抽出することができる。プロテインの抽出に続いて、デバイスAは、プロテイン・データが対応する入力デバイスAの入力イベントを処理する際に、当該プロテインのデータを用いることができる。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
本明細書において記載するシステムの実施形態に用いられる入力デバイスの例には、ジェスチャ入力センサ、キーボード、マウス、消費者電子機器において用いられるような赤外線リモコン装置、およびタスク指向有体媒体オブジェクト(task-oriented tangible media object)、その他にも数多く含まれる。
図35は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする。このシステムは、多数の実行中のプログラム(例えば、グラフィクスA〜E)および1つ以上のディスプレイ・デバイス(図示せず)を備えているシステムの一例に過ぎず、プログラムの一部または全部のグラフィック出力が、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いて、調整しながら他のプログラムにも利用可能とし、実行中のプログラムが、これらのデバイスによって発生したグラフィック・イベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
コンピュータ・プログラムが、別のプログラムによって発生したグラフィクスを表示することが有用な場合は多い。広く知れ渡っている様々な例には、テレビ会議アプリケーション、ネットワークを用いたスライドショーおよびデモ・プログラム、ならびにウィンドウ・マネージャが含まれる。この構成の下では、プールは、ビデオ、ネットワーク・アプリケーション共有、およびウィンドウ管理をカプセル化したフレームワークを一般化して実施するためにプラズマ・ライブラリとして用いられ、プログラマは、このようなプログラムの現バージョンでは一般には入手できない多数の特徴に追加することが可能になる。
プラズマ合成環境において走るプログラム(例えば、グラフィクスA〜E)は、プールへの結合および/または接続を通じて、調整プールに関与する。各プログラムは、種々の種類のグラフィック・ソースの可用性を示すために、そのプールにプロテインを貯入する。また、グラフィックスを表示するために利用可能なプログラムも、それらの表示処理能力、セキュリティおよびユーザ・プロファイル、ならびに物理的位置およびネットワーク位置を示すために、プロテインを貯入する。
また、グラフィクス・データをプールを通じて送信することもでき、あるいは表示プログラムに、他の種類(例えば、RTSPストリーム)のネットワーク・リソースを指し示させることもできる。「グラフィクス・データ」という用語は、本明細書において用いる場合、広義の連続体(broad continuum)に沿って存在する種々の異なる表現のことを指し、グラフィクス・データの例には、文字で表現される例(例えば、「画像」、または画素のブロック)、手順的例(例えば、典型的なopenGLパイプラインを下って行くような一連の「描画」指令)、および記述的例(例えば、幾何学的変形、クリッピング、および合成動作によって他のグラフィック構造を組み合わせる命令)が含まれるが、これらに限定されるのではない。
ローカル・マシン上では、グラフィクス・データは、プラットフォーム特定の表示ドライバ最適化を通じて配信することもできる。プールを通してグラフィクスを送信しない場合でも、多くの場合、周期的な画面キャプチャは、調整プールに格納されるので、より内部(esoteric)のソースに直接アクセスできないクライアントであっても、万一のときのグラフィクス(fall-back graphics)を表示することもできる。
本明細書において記載するシステムの利点の1つは、殆どのメッセージ伝達フレームワークおよびネットワーク・プロトコルとは異なり、プールがデータの大量のバッファを維持することである。したがって、プログラムはプールの中に逆戻りして、アクセスおよび使用パターン(調整プールの場合)を見たり、以前のグラフィクス・フレーム(グラフィクス・プールの場合)を抽出することができる。
図36は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする。このシステムは、多数のデバイス(例えば、デバイスA、デバイスB等)上に多数の実行プログラム(例えば、プログラムP−A、プログラムP−B等)を備えており、一部のプログラムがプールを用いてまたはプールを通じて他のプログラムの内部状態にアクセスするシステムの一例に過ぎない。
殆どの双方向処理コンピュータ・システムは、多くのプログラムを備えており、これらは、1台のマシンまたは多数のマシン上で互いに一緒に走り、ネットワークを跨いで双方向処理を行う。実行時データが各プロセス内部に隠されアクセスするのが困難なので、マルチ・プログラム・システムは、構成設定、分析、およびデバッグするのが難しい。本明細書において記載する一実施形態の一般化したフレームワークおよびプラズマ構造は、実行中のプログラムがプールを通じてそれらのデータの多くを利用可能にするので、他のプログラムがそれらの状態を検査することができる。このフレームワークによって、従来のデバッガよりも柔軟なデバッギング・ツール、精巧なシステム保守ツール、および1つまたは複数のプログラムが通過した一連の状態を、人の操作者に詳細に分析させるように構成された可視化ハーネスを可能にする。
図36を参照すると、このフレームワークにおいて走るプログラム(例えば、プログラムP−A、プログラムP−B等)は、プログラムの起動時にプロセス・プールを発生または作成する。このプールは、システム・アルマナックに登録され、セキュリティおよびアクセス制御が適用される。更に特定すると、各デバイス(例えば、デバイスA、B等)が、それぞれのデバイス上で走るプログラム(例えば、プログラムP−A、プログラムP−B等)が発生または出力した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールの中に貯入する。例えば、プログラムP−Aは、データまたは出力を発生し、この出力をデバイスAに供給する。一方、デバイスAは、この生データをプロテイン(例えば、プロテイン1A、プロテイン2A、プロテイン3A等)に変換し、これらのプロテインをプールの中に貯入する。別の例として、プログラムP−Bはデータを発生し、このデータをデバイスBに供給する。一方、デバイスBは、データをプロテイン(例えば、プロテイン1B〜4B等)に変換し、これらのプロテインをプールの中に貯入する。
プログラムの寿命の期間中、十分なアクセス許可を有する別のプログラムがプールに接続し(attach)、プログラムが貯入したプロテインを読み取ることもできる。これは、基本的な検査様式を表し、概念的に「一方向」即ち「読み取り専用」の提案(proposition)である。プログラムP−Aに関与するエンティティが、そのプロセス・プールの中にP−Aによって貯入されたステータス情報の流れを検査する。例えば、デバイスCの下で走る検査プログラムまたはアプリケーションが1つ以上のプロテイン(例えば、プロテイン1A、プロテイン2A等)をプールから抽出することができる。プロテインの抽出に続いて、デバイスCは、ディスクリップのスローおよびプロテインのインジェストから引き出した即ち読み出したプロテインのデータを用いて、プログラムP−Aの内部状態にアクセスし、これを解釈し、検査することができる。
しかし、プラズマ・システムは単に効率的なステートフル(stateful)伝送方式であるだけでなく、全方向メッセージング環境であることを思い起こすと、様々な追加モードがプログラム対プログラムの状態検査をサポートする。許可された検査プログラムは、それ自体でプロテインをプログラムPのプロセス・プールに貯入して、生成してそのプロセス・プールの中に入れた状態情報の特性に影響を及ぼし、これらの特性を制御することができる(結局、プログラムPはプロセス・プールに書き込むだけでなく、そこから読み取りも行う)。
図37は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されている処理環境のブロック図であり、追加の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、当該プロセス・プールにおいて生成し配置された状態情報の特性に影響を及ぼすまたは制御することができる。このシステム例では、デバイスCの検査プログラムは、例えば、プログラム(例えば、プログラムP−A、プログラムP−B等)が、1回だけまたは特定の期間にわたって、通常よりも多い状態をプールにダンプすることを要求することができる。または、デバッグ通信の次の「レベル」を予示しておくと、関与するプログラムは、プログラム(例えば、プログラムP−A、プログラムP−B等)が、デバッグ・プールを通じた双方向処理が個々に可能でありそのために利用可能な、その実行時間環境において残存するオブジェクトを一覧に纏めたプロテインを放出(emit)することを要求することができる。このように通知すると、関与するプログラムはプログラムの実行時においてオブジェクトの中の個々に「アドレス」し、特定のオブジェクトだけが専有し応答するプロセス・プールにプロテインを入れることができる。関与するプログラムは、例えば、オブジェクトが、その成分変数全ての瞬時値を記述した報告プロテインを放出することを要求することもあり得る。それよりも更に重要なのは、関与するプログラムが、他のプロテインを通じて、オブジェクトにその挙動またはその変数の値を変更するように指令できることである。
更に具体的には、この例では、デバイスCの検査アプリケーションが、プールの中に、オブジェクト・リスト(例えば、「要求−オブジェクト・リスト」)の要求を(プロテインの形態で)入れて、次いでこのプールに結合されている各デバイス(例えば、デバイスA、デバイスB等)が抽出する。要求に応答して、各デバイス(例えば、デバイスA、デバイスB等)がプールの中に、その実行時環境において残存する、デバッグ・プールを通じて個々に検査することができそのために利用可能なオブジェクトを一覧に纏めたプロテイン(例えば、プロテイン1A、プロテイン1B等)を入れる。
このようにデバイスからのリストを通じて通知され、オブジェクトのリストに応答して、デバイスCの検査アプリケーションは、プログラム実行中におけるオブジェクトの中の個々にアドレスし、特定のオブジェクトのみが専有し応答するプロセス・プールにプロテインを入れる。デバイスCの検査アプリケーションは、例えば、要求プロテイン(例えば、プロテイン「要求報告P−A−O」、「要求報告P−B−O」)を、オブジェクト(例えば、それぞれ、オブジェクトP−A−O、オブジェクトP−B−O)が、その成分変数の全ての瞬時値を記述する報告プロテイン(例えば、プロテイン2A、プロテイン2B等)を放出するプールに入れる。各オブジェクト(例えば、オブジェクトP−A−O、オブジェクトP−B−O)は、その要求(例えば、それぞれ、プロテイン「要求報告P−A−O」、「要求報告P−B−O」)を抽出し、それに応答して、要求された報告(例えば、それぞれ、プロテイン2A、プロテイン2B)を含むプールにプロテインを入れる。次いで、デバイスCは種々の報告プロテイン(例えば、プロテイン2A、プロテイン2B等)を抽出し、適宜報告の内容に合わせて続く処理行為を実行する。
このように、プラズマを相互交換媒体として用いると、デバッグ処理、プロセス制御、ならびにプログラム対プログラムの通信および調整の間にある区別を究極的に解消し易くなる。
このため、一般化したプラズマ・フレームワークは、疎結合の様式で可視化および分析プログラムを設計することを可能にする。例えば、メモリ・アクセス・パターンを表示する可視化ツールは、基本的なメモリ・リードおよびライトをプールに出力するいずれのプログラムとでも合わせて用いることができる。分析を受けるプログラムは、可視化ツールの存在や設計を知る必要がなく、その逆も成り立つ。
以上のようにプールを用いると、システム性能に不当に影響を及ぼすことはない。例えば、実施形態は、毎秒数十万個のプロテインをプールに貯入することを考慮しているので、比較的冗漫なデータ出力を可能にしても、殆どのプログラムの応答性や双方向処理特性を著しく阻害することはない。

本明細書において記載した実施形態は、データ空間全域においてナビゲートする方法を含む。この方法は、検出器を通じて受信したジェスチャ・データから本体のジェスチャを検出するステップであって、ジェスチャ・データが、ある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、検出が、ジェスチャ・データのみを用いてジェスチャを識別することを含む、ステップと、ジェスチャをジェスチャ信号に変換するステップと、ジェスチャ信号に応答してデータ空間全域においてナビゲートするステップであって、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間である、ステップとを備えている。
一実施形態の方法は、データ・セットのパラメータ−制御軸を、物理的空間の1次元と位置合わせするステップを備えている。
一実施形態の次元は、深さ次元である。
一実施形態の次元は、水平次元である。
一実施形態の次元は、垂直次元である。
一実施形態の次元は、横方向次元である。
一実施形態のナビゲートするステップは、パラメータ−制御軸に沿ってデータ空間変換を行うために、次元に沿った運動を含む。
一実施形態のナビゲートするステップは、データ空間の量子化パラメータ空間にナビゲートすることを含む。
一実施形態の検出するステップは、本体の進展する位置を検出することを含む。
一実施形態の検出するステップは、本体の進展する方位を検出することを含む。
一実施形態の検出するステップは、本体の進展するポーズを検出することを含み、このポーズが、本体の一部分の本体の少なくとも1つの他の部分に対する幾何学的配置である。
一実施形態の検出するステップは、本体の進展する運動を検出することを含む。
一実施形態の検出するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも1つを検出することを含む。
一実施形態の方法は、ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを備えている。
一実施形態の方法は、ジェスチャを識別するステップを備えている。
一実施形態のジェスチャを識別するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも1つを識別することを含む。
一実施形態の方法は、ジェスチャ・イベントのシーケンスにおけるジェスチャ・イベントの表現を発生するステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間に結合されている少なくとも1つの制御コンポーネントに配信するステップを備えている、方法。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間のグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間の聴覚描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを備えている。
一実施形態のデータ・セットは、空間情報を表す。
一実施形態のデータ・セットは、現象、イベント、測定、観察、および構造の内少なくとも1つの空間情報を表す。
一実施形態のデータ・セットは、非空間情報を表す。
一実施形態のジェスチャは、線形空間運動を含む、方法。
一実施形態のナビゲートするステップは、データ空間を通過する線形推移(verging)を含む。
一実施形態の方法は、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにデータ・セットをレンダリングするステップと、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップとを備えている。
一実施形態のデータ・フレームのサイズおよびアスペクト比は、ディスプレイのサイズおよびアスペクト比と一致する。
一実施形態のデータ・フレームの中心および法線ベクトルが、ディスプレイの中心および法線ベクトルと一致する。
一実施形態のデータ・フレームの位置および方位は、ディスプレイの位置および方位と一致する。
一実施形態の各データ・フレームは、データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む。
一実施形態のグラフィカル・データ・エレメントは、静的エレメントである。
一実施形態のグラフィカル・データ・エレメントは、動的エレメントである。
一実施形態のデータ・フレームは、二次元構造である。
一実施形態のデータ・フレームは、本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する。
一実施形態のデータ空間全域においてナビゲートするステップは、複数のデータ・フレーム全域においてナビゲートすることを含む。
一実施形態の方法は、本体の第1ポーズを検出するステップと、第1ポーズの検出に応答して、プッシュバック相互作用を活性化するステップとを備えている。
一実施形態の方法は、第1ポーズを入力する第1位置を記録するステップであって、第1位置が三空間の手の位置である、ステップと、第1位置を原点として設定するステップであって、続いて検出される本体位置を、原点に対する相対的オフセットとして報告する、ステップとを備えている。
一実施形態の方法は、本体の移動を検出することによって、ジェスチャを検出するステップを備えている。
一実施形態の検出するステップは、本体の第1移動を検出することを含み、第1移動が、ディスプレイに向かい軸に沿った移動であり、この軸がディスプレイの目視面に対して垂直な軸として定められる。
一実施形態のナビゲートするステップは、本体の第1移動に応答して、複数のデータ・フレームを軸に沿って変位させることを含み、データ・フレームが位置する平面において見える部分が多くなり、ディスプレイ上にレンダリングされる第1可視フレームが、ディスプレイから後退するように見え、第1データ・フレームに隣接するデータ・フレームが可視となる。
一実施形態のナビゲートするステップは、本体の第1移動に応答して、複数のデータ・フレームを軸に沿って現在のデータ・フレームから変位させることを含み、データ・フレームが下方に平行移動し、現在のデータ・フレームが、ディスプレイ上に現在レンダリングされているデータ・フレームである。
一実施形態の各データ・フレームの外観は、変位に応答して変化し、現在のデータ・フレームの下に位置するデータ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し、現在のデータ・フレームの上に位置するデータ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになる。
一実施形態の検出するステップが、本体の第2移動を検出することを含み、第2移動が、ディスプレイから遠離る方向への軸に沿った移動である。
一実施形態のナビゲートするステップは、本体の第2移動に応答して、複数のデータ・フレームを軸に沿って変位させることを含み、データ・フレームが位置する平面において見える部分が少なくなり、ディスプレイ上にレンダリングされた第1可視フレームが、ディスプレイから推移する(verge)ように見え、第1データ・フレームに隣接するデータ・フレームが見え難くなる。
一実施形態のナビゲートするステップは、本体の第2移動に応答して、複数のデータ・フレームを、軸に沿って現在のデータ・フレームから変位させることを含み、データ・フレームが上方に平行移動し、現在のデータ・フレームが、ディスプレイ上に現在レンダリングされているデータ・フレームである。
一実施形態の各データ・フレームの外観は、変位に応答して変化し、現在のデータ・フレームの上に位置するデータ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し初め、現在のデータ・フレームの下に位置するデータ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになり始める。
一実施形態の検出するステップは、本体の第3移動を検出することを含み、第3移動が、ディスプレイの目視面に対して平行な平面における移動である。
一実施形態のナビゲートするステップは、本体の第3移動に応答して、複数のデータ・フレームを第3移動に対応する方向に変位させることを含む。
一実施形態のディスプレイ上にレンダリングされている現在のデータ・フレームは、方向にスライドするように見え、現在のデータ・フレームに隣接するデータ・フレームは、方向とは逆のディスプレイの側から見えてくるようにスライドし、現在のデータ・フレームは、ディスプレイ上に現在レンダリングされているデータ・フレームである。
一実施形態のナビゲートするステップは、本体の移動に直接応答して、複数のデータ・フレームの変位を連続的に更新することを含む。
一実施形態の方法は、本体の第2ポーズを検出するステップと、第2ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、この終了が、複数のデータ・フレームの内1つのデータ・フレームを、ディスプレイと同一平面上に表示することを含む、ステップとを備えている。
一実施形態の方法は、ジェスチャの間における本体の変位の物理的距離と、ナビゲーションの間においてデータ空間の中にある連続点間の論理距離との間でマッピングするステップを備えており、このマッピングが、データ空間における複数のデータ・フレームの相対的変位、および各離散データ・フレームの外観の内少なくとも1つを制御する。
一実施形態の方法は、アクティブ・ゾーンとデッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、アクティブ・ゾーンがディスプレイに隣接しており、デッド・ゾーンがアクティブ・ゾーンに隣接している。
一実施形態のジェスチャ信号に応答してデータ空間全域においてナビゲートするステップが、ジェスチャがアクティブ領域において検出されたときに、当該ジェスチャに応答して活性化される。
一実施形態の方法では、ディスプレイ上にフィードバック・インディケータをレンダリングするステップを備えている。
一実施形態のフィードバック・インディケータは、本体がアクティブ・ゾーンおよびデッド・ゾーンの内1つにあることを示すフィードバックを表示する。
一実施形態のフィードバック・インディケータは、本体の原点からの物理的オフセットを示すフィードバックを表示する。
一実施形態の検出するステップは、本体の位置を検出すること、本体の方位を検出すること、および本体の運動を検出することの内少なくとも1つを含む。
一実施形態の方法は、ジェスチャを識別するステップを備えており、この識別が、本体の一部のポーズおよび方位を識別することを含む。
一実施形態の検出するステップは、本体の第1組の付加物および第2組の付加物の内少なくとも1つを検出することを含む。
一実施形態の検出するステップは、本体に結合されている少なくとも1つのタグの位置を動的に検出することを含む。
一実施形態の検出するステップは、本体の一部に結合されている1組のタグの位置を検出することを含む。
一実施形態の1組のタグの各タグはパターンを含み、1組のタグの各タグの各パターンは、複数のタグの内いずれの残りのタグのいずれのパターンとも異なる。
一実施形態の検出するステップは、本体上にあるマーカを動的に検出し位置を突き止めることを含む。
一実施形態の検出するステップは、本体に結合されている1組のマーカの位置を検出することを含む。
一実施形態の1組のマーカは、本体上に複数のパターンを形成する。
一実施形態の検出するステップは、本体の複数の付加物の位置を、当該付加物の各々に結合されている1組のマーカを用いて、検出することを含む。
一実施形態の変換するステップは、ジェスチャの情報をジェスチャ表記に変換することを含む。
一実施形態のジェスチャ表記は、ジェスチャ・ボキャブラリを表し、ジェスチャ信号がジェスチャ・ボキャブラリの通信を含む、方法。
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の瞬時的ポーズ状態をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の方位をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の方位の組み合わせを、テキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の状態を表す、キャラクタのストリングを含む。
一実施形態の力学的連結は、本体の少なくとも1つの第1付加物である。
一実施形態の方法は、ストリングにおける各位置を第2付加物に割り当てるステップを備えており、この第2付加物が第1付加物に接続されている。
一実施形態の方法は、複数のキャラクタにおけるキャラクタを、第2付加物の複数の位置の各々に割り当てるステップを備えている。
一実施形態の複数の位置は、座標原点に対して確定される。
一実施形態の方法は、空間における絶対位置および方位、本体の全体的位置および方位とは無関係な本体に対する固定位置および方位から成る1群から選択した位置を用いて、ならびに本体の動作に応答して対話的に座標原点を確定するステップを備えている。
一実施形態の方法は、複数のキャラクタにおけるキャラクタを、第1付加物の複数の方位の各々に割り当てるステップを備えている。
一実施形態の検出するステップは、本体の外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間が、コンピュータに結合されているディスプレイ・デバイス上に描画された空間を含む。
一実施形態の方法は、外挿補間位置が仮想空間と交差するときに、仮想空間において仮想オブジェクトを制御するステップを含む。
一実施形態の制御するステップは、仮想空間における外挿補間位置に応答して、仮想空間における仮想オブジェクトの位置を制御することを含む。
一実施形態の制御するステップは、ジェスチャに応答して仮想空間における仮想オブジェクトの姿勢を制御することを含む。
一実施形態の方法は、仮想空間と物理空間との間で一致を得るために、検出および制御のスケーリングを制御するステップを備えており、仮想空間がディスプレイ上に描画された空間を含み、物理空間が本体によって占められる空間を含む。
一実施形態の方法は、物理空間における少なくとも1つの物理オブジェクトの移動に応答して、仮想空間において少なくとも1つの仮想オブジェクトを制御するステップを備えている。
一実施形態の方法は、撮像システムによって本体を撮像するステップを備えている。
一実施形態の撮像するステップは、本体の波頭コード化画像を発生することを含む。
一実施形態のジェスチャ・データは、撮像システムの被写体深度内における本体の焦点解明データ(focus-resolved data)を含む。
一実施形態の方法は、撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを備えている。
一実施形態の中間画像は、ぼやけている。
一実施形態の中間画像は、脱焦収差を含む、本体または撮像システムの複数の光検出器の内少なくとも1つの変化に対して不感応である。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明範囲(range)データを含む。
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明位置データを含む。
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態の撮像システムが複数の検出器を備えている。
一実施形態の検出器の内少なくとも2つは、波頭コード化光学エレメントを備えている波頭コード化カメラである。
一実施形態の光検出器の内少なくとも2つは、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである。
一実施形態の方法は、本体と撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数(point spread function)を発生するステップを備えている。
一実施形態の方法は、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを備えている。
本明細書に記載した実施形態は、システムを含む。このシステムは、本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、検出器に結合されているプロセッサであって、ジェスチャ・データから自動的にジェスチャを検出する、プロセッサとを備えており、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、プロセッサが、ジェスチャ・データのみを用いてジェスチャを識別し、プロセッサが、ジェスチャをジェスチャ信号に変換し、プロセッサが、ジェスチャ信号に応答してデータ空間全域においてナビゲーションを制御し、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間である。
本明細書に記載した実施形態は、データ空間全域においてナビゲートする方法を含む。この方法は、受信機を通じて受け取られたジェスチャ・データから本体のジェスチャを検出するステップであって、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、検出が、ジェスチャ・データのみを用いてジェスチャを識別することを含む、ステップと、ジェスチャをジェスチャ信号に変換するステップと、ジェスチャ信号に応答してデータ空間全域においてナビゲートするステップであって、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間である、ステップと、データ空間の複数の領域のグラフィカル描写である複数の共面データ・フレームにおいてデータ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップとを備えている。
一実施形態の方法は、本体の第1ポーズを検出するステップを備えている。一実施形態の方法は、第1ポーズの検出に応答して、プッシュバック相互作用を活性化するステップを備えている。
一実施形態の方法は、第1ポーズを入力する第1位置を記録するステップを備えており、第1位置が三空間の手の位置となる。一実施形態の方法は、第1位置を原点として設定するステップを備えており、続いて検出される本体位置を、原点に対する相対的オフセットとして報告する。
一実施形態の検出するステップは、本体の前方移動を検出することを含み、前方移動がz−軸に沿ったディスプレイに向かう移動であり、z−軸がディスプレイの目視面に対して垂直な軸として定められる。
一実施形態のナビゲートするステップは、本体の前方移動に応答して、複数のデータ・フレームを軸に沿って変位させることを含み、データ・フレームが位置する平面において見える部分が多くなり、ディスプレイ上にレンダリングされる第1可視フレームが、ディスプレイから後退するように見え、第1データ・フレームに隣接するデータ・フレームが可視となる。
一実施形態の検出するステップは、本体の後方移動を検出することを含み、後方移動がz−軸に沿ったディスプレイから離れる移動である。
一実施形態のナビゲートするステップは、本体の後方移動に応答して、複数のデータ・フレームをZ−軸に沿って変位させることを含み、データ・フレームが位置する平面において見える部分が少なくなり、ディスプレイ上にレンダリングされた第1可視フレームが、ディスプレイから推移する(verge)ように見え、第1データ・フレームに隣接するデータ・フレームが見え難くなる。
一実施形態の方法は、本体のz−軸に沿った移動に直接応答して、複数のデータ・フレームのz−軸に沿った変位を連続的に更新するステップを備えている。
一実施形態の方法は、本体の第2ポーズを検出するステップと、第2ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、この終了が、複数のデータ・フレームの内1つのデータ・フレームを、ディスプレイと同一平面上に表示することを含む、ステップとを備えている。
一実施形態の検出するステップは、本体の右横方向移動を検出することを含み、右横方向移動がx−軸に沿った移動であり、x−軸が、ディスプレイの目視面に対して平行な平面内に位置する。
一実施形態のナビゲートするステップは、本体の右横方向移動に応答して、複数のデータ・フレームをx−軸に沿って右に変位させることを含み、ディスプレイ上にレンダリングされた第1可視フレームが、ディスプレイから当該ディスプレイの右側に向かってスライドするように見え、第1データ・フレームに隣接するデータ・フレームがスライドしてディスプレイの左側から見えるようになる。
一実施形態の検出するステップは、本体の左横方向移動を検出することを含み、左横方向移動がx−軸に沿った移動である。
一実施形態のナビゲートするステップは、本体の左横方向移動に応答して、複数のデータ・フレームをx−軸に沿って左に変位させることを含み、ディスプレイ上にレンダリングされた第1可視フレームが、ディスプレイから当該ディスプレイの左側に向かってスライドするように見え、第1データ・フレームに隣接するデータ・フレームがスライドしてディスプレイの右側から見えるようになる。
一実施形態の方法は、本体のx−軸に沿った移動に直接応答して、複数のデータ・フレームのx−軸に沿った変位を連続的に更新するステップを備えている。
一実施形態の方法は、本体の第2ポーズを検出するステップを備えている。一実施形態の方法は、第2ポーズの検出に応答して、プッシュバック相互作用を終了するステップを備えており、終了が、複数のデータ・フレームの内1つのデータ・フレームを、ディスプレイと同一平面上に表示することを含む。
一実施形態のデータ空間は、平面内に配置された複数の仮想抑止点を備えている。
一実施形態の各仮想抑止点は、各データ・フレームに対応する。
一実施形態の方法は、アクティブ・ゾーンとデッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、アクティブ・ゾーンがディスプレイに隣接しており、デッド・ゾーンがアクティブ・ゾーンに隣接している。
一実施形態のジェスチャ信号に応答してデータ空間全域においてナビゲートするステップは、ジェスチャがアクティブ領域において検出されたときに、当該ジェスチャに応答して活性化される。
一実施形態の方法は、ディスプレイ上にフィードバック・インディケータをレンダリングするステップを備えている。
一実施形態のフィードバック・インディケータは、本体がアクティブ・ゾーンおよびデッド・ゾーンの内1つにあることを示すフィードバックを表示する。
一実施形態のフィードバック・インディケータは、本体の原点からの物理的オフセットを示すフィードバックを表示する。
一実施形態の方法は、データ・セットのパラメータ−制御軸を、物理的空間の1次元と位置合わせするステップを備えている。
一実施形態の次元は、深さ次元である。
一実施形態の次元は、水平次元である。
一実施形態の次元は、垂直次元である。
一実施形態の次元は、横方向次元である。
一実施形態のナビゲートするステップは、パラメータ−制御軸に沿ってデータ空間変換を行うために、次元に沿った運動を含む。
一実施形態のナビゲートするステップは、データ空間の量子化パラメータ空間にナビゲートすることを含む。
一実施形態の検出するステップは、本体の進展する位置を検出することを含む。
一実施形態の検出するステップは、本体の進展する方位を検出することを含む。
一実施形態の検出するステップは、本体の進展するポーズを検出することを含み、このポーズが、本体の一部分の本体の少なくとも1つの他の部分に対する幾何学的配置である。
一実施形態の検出するステップは、本体の進展する運動を検出することを含む。
一実施形態の検出するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも1つを検出することを含む。
一実施形態の方法は、ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを備えている。
一実施形態の方法は、ジェスチャを識別するステップを備えている。
一実施形態のジェスチャを識別するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも1つを識別することを含む。
一実施形態の方法は、ジェスチャ・イベントのシーケンスにおけるジェスチャ・イベントの表現を発生するステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間に結合されている少なくとも1つの制御コンポーネントに配信するステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間のグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間の聴覚描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを備えている。
一実施形態のデータ・セットは、空間情報を表す。
一実施形態のデータ・セットは、現象、イベント、測定、観察、および構造の内少なくとも1つの空間情報を表す。
一実施形態のデータ・セットは、非空間情報を表す。
一実施形態のジェスチャは、線形空間運動を含む。
一実施形態のナビゲートするステップは、データ空間を通過する線形推移(verging)を含む。
一実施形態の方法は、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにデータ・セットをレンダリングするステップを備えている。一実施形態の方法は、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップを備えている。
一実施形態のデータ・フレームのサイズおよびアスペクト比は、ディスプレイのサイズおよびアスペクト比と一致する。
一実施形態のデータ・フレームの中心および法線ベクトルは、ディスプレイの中心および法線ベクトルと一致する。
一実施形態のデータ・フレームの位置および方位は、ディスプレイの位置および方位と一致する。
一実施形態の各データ・フレームは、データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む。
一実施形態のグラフィカル・データ・エレメントは、静的エレメントである。
一実施形態のグラフィカル・データ・エレメントは、動的エレメントである。
一実施形態のデータ・フレームは、二次元構造である。
一実施形態のデータ・フレームは、本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する。
一実施形態のデータ空間全域においてナビゲートするステップは、複数のデータ・フレーム全域においてナビゲートすることを含む。
一実施形態の方法は、ジェスチャを識別するステップを備えており、この識別が、本体の一部のポーズおよび方位を識別することを含む。
一実施形態の検出するステップは、本体の第1組の付加物および第2組の付加物の内少なくとも1つを検出することを含む。
一実施形態の検出するステップは、少なくとも1つのタグの位置を動的に検出することを含む。
一実施形態の検出するステップは、本体上にあるマーカを動的に検出し位置を突き止めることを含む。
一実施形態の変換するステップは、ジェスチャの情報をジェスチャ表記に変換することを含む。
一実施形態のジェスチャ表記は、ジェスチャ・ボキャブラリを表し、ジェスチャ信号がジェスチャ・ボキャブラリの通信を含む。
一実施形態のジェスチャ・ボキャブラリは、本体の瞬時的ポーズ状態をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の方位をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の力学的連結の方位の組み合わせを、テキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の状態を表す、キャラクタのストリングを含む。
検出するステップは、本体の外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間が、ディスプレイ・デバイス上に描画された空間を含む。
一実施形態の方法は、外挿補間位置が仮想空間と交差するときに、仮想空間において仮想オブジェクトを制御するステップを含む。
一実施形態の方法は、仮想空間における外挿補間位置に応答して、仮想空間における仮想オブジェクトの位置を制御するステップを備えている。
一実施形態の方法は、仮想空間と物理空間との間で一致を得るために、検出およびナビゲーションのスケーリングを制御するステップを備えており、仮想空間が、ディスプレイ上に描画された空間を含み、物理空間が、本体によって占められる空間を含む。
一実施形態の方法は、撮像システムによって本体を撮像するステップを備えている。
一実施形態の撮像するステップは、本体の波頭コード化画像を発生することを含む。
一実施形態のジェスチャ・データは、撮像システムの被写体深度内における本体の焦点解明データ(focus-resolved data)を含む。
一実施形態の方法は、撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを備えている。
一実施形態の中間画像は、ぼやけている。
一実施形態の中間画像は、脱焦収差を含む、本体または撮像システムの複数の光検出器の内少なくとも1つの変化に対して不感応である。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明範囲(range)データを含む。
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明位置データを含む。
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態の撮像システムは、複数の検出器を備えている。
一実施形態の検出器の内少なくとも2つは、波頭コード化光学エレメントを備えている波頭コード化カメラである。
一実施形態の光検出器の内少なくとも2つは、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである。
一実施形態の方法は、本体と撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数(point spread function)を発生するステップを備えている。
一実施形態の方法は、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを備えている。
本明細書において記載した実施形態は、システムを含む。このシステムは、本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、検出器に結合されているプロセッサであって、ジェスチャ・データから自動的にジェスチャを検出する、プロセッサとを備えており、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、プロセッサが、ジェスチャ・データのみを用いてジェスチャを識別し、プロセッサが、ジェスチャをジェスチャ信号に変換し、プロセッサが、ジェスチャ信号に応答してデータ空間全域においてナビゲーションを制御し、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間であり、プロセッサが、データ空間の複数の領域のグラフィカル描写である複数の共面データ・フレームにおいてデータ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示する。
本明細書に記載した実施形態は、データ空間全域においてナビゲートする方法を含む。この方法は、受信機を通じて受け取られたジェスチャ・データから本体のジェスチャを検出するステップであって、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、検出が、ジェスチャ・データのみを用いてジェスチャを識別することを含む、ステップと、ジェスチャをジェスチャ信号に変換するステップと、ジェスチャ信号に応答してデータ空間全域においてナビゲートするステップであって、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間である、ステップと、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにおいてデータ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップであって、複数のデータ・フレームが、データ空間の複数の平面に配置された離散データ・フレームのタスクを構成し(comprise)、各データ・フレームが複数の平面の内別々の平面に位置する、ステップとを備えている。
一実施形態の方法は、本体の第1ポーズを検出するステップを備えている。一実施形態の方法は、第1ポーズの検出に応答して、プッシュバック相互作用を活性化するステップを備えている。
一実施形態の方法は、第1ポーズを入力する第1位置を記録するステップを備えており、第1位置が三空間の手の位置である。一実施形態の方法は、第1位置を原点として設定するステップを備えており、続いて検出される本体位置を、原点に対する相対的オフセットとして報告する。
一実施形態の検出するステップは、本体の上方移動を検出することを含み、前方移動がy−軸に沿ってディスプレイから外側に向かう移動であり、y−軸がディスプレイの目視面に対して垂直な軸として定められる。
一実施形態のナビゲートするステップは、本体の上方移動に応答して、複数のデータ・フレームを現在のデータ・フレームからy−軸に沿って変位させることを含み、スタックの離散データ・フレームが上方に平行移動し、現在のデータ・フレームが、ディスプレイ上に現在レンダリングされている離散データ・フレームである。
一実施形態の各離散データ・フレームの外観は、変位に応答して変化し、現在のデータ・フレームの上に位置するスタックの離散データ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し始め、現在のデータ・フレームの下に位置するスタックの離散データ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになり始める。
一実施形態の方法は、ジェスチャの間における本体の変位の物理的距離と、スタックの連続離散データ・フレーム間の論理距離との間でマッピングするステップを備えており、このマッピングが、y−軸に沿った複数のデータ・フレームの変位、および各離散データ・フレームの外観を制御する。
一実施形態の検出するステップは、本体の下方移動を検出することを含み、下方移動がy−軸に沿って記ディスプレイに向かう移動である。
一実施形態のナビゲートするステップは、本体の下方移動に応答して、複数のデータ・フレームを現在のデータ・フレームからy−軸に沿って変位させることを含み、スタックの離散データ・フレームが下方に平行移動する。
一実施形態の各離散データ・フレームの外観は、変位に応答して変化し、現在のデータ・フレームの下に位置するスタックの離散データ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し始め、現在のデータ・フレームの上に位置するスタックの離散データ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになる。
一実施形態の方法は、ジェスチャの間における本体の変位の物理的距離と、スタックの連続離散データ・フレーム間の論理距離との間でマッピングするステップを備えており、このマッピングが、y−軸に沿った複数のデータ・フレームの変位、および各離散データ・フレームの外観を制御する。
一実施形態の方法は、本体のy−軸に沿った移動に直接応答して、複数のデータ・フレームのy−軸に沿った変位を連続的に更新するステップを備えている。
一実施形態の方法は、本体の第2ポーズを検出するステップを備えている。一実施形態の方法は、第2ポーズの検出に応答して、プッシュバック相互作用を終了するステップを備えており、この終了が、複数のデータ・フレームの内1つのデータ・フレームを、ディスプレイと同一平面上に表示することを含む。
一実施形態のデータ空間は、複数の仮想抑止点を備えている。
一実施形態の各仮想抑止点は、複数の平面の各平面に対応する。
一実施形態の方法は、第1アクティブ・ゾーンと、第2アクティブ・ゾーンと、デッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、第1アクティブ・ゾーンがディスプレイに隣接しており、デッド・ゾーンが第1アクティブ・ゾーンに隣接しており、第2アクティブ・ゾーンがデッド・ゾーンに隣接している。
一実施形態のジェスチャ信号に応答してデータ空間全域においてナビゲートするステップは、ジェスチャが第1アクティブ・ゾーンおよび第2アクティブ・ゾーンの内1つにおいて検出されたときに、ジェスチャに応答して活性化される。
一実施形態の方法は、ディスプレイ上にフィードバック・インディケータをレンダリングするステップを備えている。
一実施形態のフィードバック・インディケータは、本体が第1アクティブ・ゾーン、第2アクティブ・ゾーン、およびデッド・ゾーンの内1つにあることを示すフィードバックを表示する。
一実施形態のフィードバック・インディケータは、本体の原点からの物理的オフセットを示すフィードバックを表示する。
一実施形態の方法は、データ・セットのパラメータ−制御軸を、物理的空間の1次元と位置合わせするステップを備えている。
一実施形態の次元は、深さ次元である。
一実施形態の次元は、水平次元である。
一実施形態の次元は、垂直次元である。
一実施形態の次元は、横方向次元である。
一実施形態のナビゲートするステップは、パラメータ−制御軸に沿ってデータ空間変換を行うために、次元に沿った運動を含む。
一実施形態のナビゲートするステップは、データ空間の量子化パラメータ空間にナビゲートすることを含む。
一実施形態の検出するステップは、本体の進展する位置を検出することを含む。
一実施形態の検出するステップは、本体の進展する方位を検出することを含む。
一実施形態の検出するステップは、本体の進展するポーズを検出することを含み、このポーズは、本体の一部分の本体の少なくとも1つの他の部分に対する幾何学的配置である。
一実施形態の検出するステップは、本体の進展する運動を検出することを含む。
一実施形態の検出するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも1つを検出することを含む。
一実施形態の方法は、ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを備えている。
一実施形態の方法は、ジェスチャを識別するステップを備えている。
一実施形態のジェスチャを識別するステップは、本体の進展する位置、本体の方位、本体のポーズ、および本体の運動の内少なくとも1つを識別することを含む。
一実施形態の方法は、ジェスチャ・イベントのシーケンスにおけるジェスチャ・イベントの表現を発生するステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間に結合されている少なくとも1つの制御コンポーネントに配信するステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間のグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間の聴覚描写と同期させるステップを備えている。
一実施形態の方法は、ジェスチャ・イベントの表現を、データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを備えている。
一実施形態のデータ・セットは、空間情報を表す。
一実施形態のデータ・セットは、現象、イベント、測定、観察、および構造の内少なくとも1つの空間情報を表す。
一実施形態のデータ・セットは、非空間情報を表す。
一実施形態のジェスチャは、線形空間運動を含む。
一実施形態のナビゲートするステップは、データ空間を通過する線形推移(verging)を含む。
一実施形態の方法は、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにデータ・セットをレンダリングするステップを備えている。一実施形態の方法は、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップとを備えている。
一実施形態のデータ・フレームのサイズおよびアスペクト比は、ディスプレイのサイズおよびアスペクト比と一致する。
一実施形態のデータ・フレームの中心および法線ベクトルは、ディスプレイの中心および法線ベクトルと一致する。
一実施形態のデータ・フレームの位置および方位は、ディスプレイの位置および方位と一致する。
一実施形態の各データ・フレームは、データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む。
一実施形態のグラフィカル・データ・エレメントは、静的エレメントである。
一実施形態のグラフィカル・データ・エレメントは、動的エレメントである。
一実施形態のデータ・フレームは、二次元構造である。
一実施形態のデータ・フレームは、本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する。
一実施形態のデータ空間全域においてナビゲートするステップは、複数のデータ・フレーム全域においてナビゲートすることを含む。
一実施形態の方法は、ジェスチャを識別するステップを備えており、この識別が、本体の一部のポーズおよび方位を識別することを含む。
一実施形態の検出するステップは、本体の第1組の付加物および第2組の付加物の内少なくとも1つを検出することを含む。
一実施形態の検出するステップは、少なくとも1つのタグの位置を動的に検出することを含む。
一実施形態の検出するステップは、本体上にあるマーカを動的に検出し位置を突き止めることを含む。
一実施形態の変換するステップは、ジェスチャの情報をジェスチャ表記に変換することを含む。
一実施形態のジェスチャ表記は、ジェスチャ・ボキャブラリを表し、ジェスチャ信号がジェスチャ・ボキャブラリの通信を含む。
一実施形態のジェスチャ・ボキャブラリは、本体の瞬時的ポーズ状態をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の方位をテキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の方位の組み合わせを、テキスト・フォームで表す。
一実施形態のジェスチャ・ボキャブラリは、本体の状態を表すキャラクタのストリングを含む。
一実施形態の検出するステップは、本体の外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間は、ディスプレイ上に描画された空間を含む。
一実施形態の方法は、外挿補間位置が仮想空間と交差するときに、仮想空間において仮想オブジェクトを制御するステップを備えている。
一実施形態の方法は、仮想空間における外挿補間位置に応答して、仮想空間における仮想オブジェクトの位置を制御するステップを備えている。
一実施形態の方法は、仮想空間と物理空間との間で一致を得るために、検出およびナビゲーションのスケーリングを制御するステップを備えており、仮想空間が、ディスプレイ上に描画された空間を含み、物理空間が、本体によって占められる空間を含む。
一実施形態の方法は、撮像システムによって本体を撮像するステップを備えている。
一実施形態の撮像するステップは、本体の波頭コード化画像を発生することを含む。
一実施形態のジェスチャ・データは、撮像システムの被写体深度内における本体の焦点解明データ(focus-resolved data)を含む。
一実施形態の方法は、撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを備えている。
一実施形態の中間画像は、ぼやけている。
一実施形態の中間画像は、脱焦収差を含む、本体または撮像システムの複数の光検出器の内少なくとも1つの変化に対して不感応である。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明範囲(range)データを含む。
一実施形態の被写体深度内における本体の焦点解明範囲データは、撮像システムの出力から導出される。
一実施形態のジェスチャ・データは、被写体深度内における本体の焦点解明位置データを含む。
一実施形態の被写体深度内における本体の焦点解明位置データは、撮像システムの出力から導出される。
一実施形態の撮像システムは、複数の検出器を備えている。
一実施形態の検出器の内少なくとも2つは、波頭コード化光学エレメントを備えている波頭コード化カメラである。
一実施形態の光検出器の内少なくとも2つは、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである。
一実施形態の方法は、本体と撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数(point spread function)を発生するステップを備えている。
一実施形態の方法は、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを備えている。
本明細書において記載した実施形態は、システムを含む。このシステムは、本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、検出器に結合されているプロセッサであって、ジェスチャ・データから自動的にジェスチャを検出する、プロセッサとを備えており、ジェスチャ・データがある時点および物理的空間における本体の瞬時的状態の絶対三空間位置データであり、プロセッサが、ジェスチャ・データのみを用いてジェスチャを識別し、プロセッサが、ジェスチャをジェスチャ信号に変換し、プロセッサが、ジェスチャ信号に応答してデータ空間全域においてナビゲーションを制御し、データ空間が物理的空間において表されるデータ・セットを含むデータ表現空間であり、プロセッサが、データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにおいてデータ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示し、複数のデータ・フレームが、データ空間の複数の平面に配置された離散データ・フレームのスタックを備えており、各データ・フレームが複数の平面の内別々の平面に位置する。
本明細書において記載したSOEは、処理システムを含む、および/または処理システムの下で実行する、および/または処理システムと連動して実行する。処理システムは、当技術分野では周知のように、互いに動作するプロセッサ主体デバイスまたは計算デバイスのあらゆる集合体、あるいは処理システムまたはデバイスのコンポーネントを含む。例えば、処理システムは、携帯用コンピュータ、通信ネットワークにおいて動作する携帯用通信デバイス、および/またはネットワーク・サーバの1つ以上を含むことができる。携帯用コンピュータは、パーソナル・コンピュータ、セルラ電話機、パーソナル・ディジタル・アシスタント、携帯用計算デバイス、および携帯用通信デバイスの中から選択した多数のデバイスおよび/またはデバイスの組み合わせのいずれとすることもできるが、そのように限定されるのではない。処理システムは、それよりも大きなコンピュータ・システムの中にあるコンポーネントを含むことができる。
一実施形態の処理システムは、少なくとも1つのプロセッサと、少なくとも1つのメモリ・デバイスまたはサブシステムとを含む。また、処理システムは、少なくとも1つのデータベースを含むか、またはこれに結合することができる。「プロセッサ」という用語は、本明細書において一般に用いる場合、1つ以上の中央演算装置(CPU)、ディジタル信号プロセッサ(DSP)、特定用途集積回路(ASIC)等のような、あらゆる論理演算装置を指す。プロセッサおよびメモリは、1つのチップ上にモノリシックに集積することができ、多数のチップまたはホスト・システムのコンポーネント間で分散することができ、および/またはアルゴリズムの何らかの組み合わせによって提供することができる。本明細書において記載した方法は、ソフトウェア・アルゴリズム(1つまたは複数)、プログラム、ファームウェア、ハードウェア、コンポーネント、回路の1つ以上で、いずれの組み合わせでも実現することができる。
本明細書において記載したシステムおよび方法を具体化するシステム・コンポーネントは、一緒に配置すること、または別個の位置に配置することができる。したがって、本明細書において記載したシステムおよび方法を具現化するシステム・コンポーネントは、単一のシステム、多数のシステム、および/または地理的に離れたシステムのコンポーネントとすることができる。また、これらのコンポーネントは、単一のシステム、多数のシステム、および/または地理的に離れたシステムのサブコンポーネントまたはサブシステムとすることもできる。これらのコンポーネントは、ホスト・システムの1つ以上のその他のコンポーネント、またはホスト・システムに結合されているシステムに結合することができる。
通信経路は、システム・コンポーネントを結合し、コンポーネント間においてファイルを伝達または転送する媒体であればいずれでも含む。通信経路は、ワイヤレス接続、有線接続、混成ワイヤレス/有線接続を含む。また、通信経路は、ローカル・エリア・ネットワーク(LAN)、都市エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、企業固有ネットワーク、事務所間またはバックエンド・ネットワーク、およびインターネットを含むネットワークへの結合または接続も含む。更に、通信経路は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびCD−ROMディスクのような、リムーバブル固定媒体、ならびにフラッシュRAM、ユニバーサル・シリアル・バス(USB)接続、RS−232接続、電話回線、バス、および電子メール・メッセージを含む。
文脈が特に明確に要求しない限り、説明全体を通じて、「備える」(comprise)、「備えている」(comprising)等の単語は、排他的または網羅的な意味とは逆に、包含的意味で解釈することとする。即ち、「含むがそれに限定されない」という意味である。また、単数または複数を用いる単語は、それぞれ、複数または単数も含むこととする。加えて、「ここでは」、「以下では」、「以上」、「以下」および同様の趣旨の単語は、本願のいずれかの特定部分ではなく、本願全体を指すこととする。「または」という単語が2つ以上の項目のリストに関して用いられる場合、その単語は以下の単語の解釈全てに及ぶこととする。リストにおける項目のいずれか、リストにおける項目全て、およびリストにおける項目のあらゆる組み合わせ。
以上におけるSOEの実施形態の説明は、網羅的であることも、記載したシステムおよび方法を、開示した形態そのものに限定することも意図していない。SOEの具体的な実施形態およびその例は、本明細書では例示の目的で記載したが、その他のシステムおよび方法の範囲内において、種々の同等な修正も可能であることは、当業者であれば認められよう。本明細書において提案したSOEの教示は、前述のシステムおよび方法だけでなく、他の処理システムおよび方法にも適用することができる。
以上で説明した種々の実施形態の要素および行為(act)を組み合わせて、更に別の実施形態を提案することができる。これらおよびその他の変更は、以上に詳細に記載した説明を参照すれば、SOEに対して行うことができる。
以上の実施形態のある種の態様が、以下にある種の請求項の形態で提示されるが、本発明者は、これら実施形態の種々の態様を、いかなる数の請求項の形態でも想定している。したがって、本発明者は、本願を出願した後に本実施形態の他の態様に対してこのような追加の請求項の形態を追求するために、追加の請求項を加える権利を保持することとする。

Claims (277)

  1. データ・セットを含むデータ空間全域においてナビゲートする方法であって、
    検出器を通じて受信したジェスチャ・データから物理的空間における本体のジェスチャを検出するステップであって、前記ジェスチャ・データが、ある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、当該検出するステップが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別することを含む、ステップと、
    前記ジェスチャをジェスチャ信号に変換するステップと、
    パラメータにより制御可能である前記データ・セットの特性に基づいて、前記データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定するステップであって、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間である、ステップと、
    前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成される複数のデータ・フレームを含めるように前記データ空間の視覚表現を生成するステップであって、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成される、ステップと、
    前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップとを含む、方法。
  2. 請求項1記載の方法であって、前記データ・セットのパラメータ−制御軸を、前記物理的空間の1次元と位置合わせするステップを含む、方法。
  3. 請求項2記載の方法において、前記次元が深さ次元である、方法。
  4. 請求項2記載の方法において、前記次元が水平次元である、方法。
  5. 請求項2記載の方法において、前記次元が垂直次元である、方法。
  6. 請求項2記載の方法において、前記次元が横方向次元である、方法。
  7. 請求項2記載の方法において、前記ナビゲートするステップが、前記パラメータ−制御軸に沿ってデータ空間変換を行うために、前記次元に沿った運動を含む、方法。
  8. 請求項2記載の方法において、前記ナビゲートするステップが、前記データ空間の量子化パラメータ空間にナビゲートすることを含む、方法。
  9. 請求項1記載の方法において、前記検出するステップが、前記本体の進展する位置を検出することを含む、方法。
  10. 請求項1記載の方法において、前記検出するステップが、前記本体の進展する方位を検出することを含む、方法。
  11. 請求項1記載の方法において、前記検出するステップが、前記本体の進展するポーズを検出することを含み、前記ポーズが、前記本体の一部分の前記本体の少なくとも1つの他の部分に対する幾何学的配置である、方法。
  12. 請求項1記載の方法において、前記検出するステップが、前記本体の進展する運動を検出することを含む、方法。
  13. 請求項1記載の方法において、前記検出するステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも1つを検出することを含む、方法。
  14. 請求項1記載の方法であって、前記ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを含む、方法。
  15. 請求項14記載の方法であって、前記ジェスチャを識別するステップを含む、方法。
  16. 請求項15記載の方法において、前記ジェスチャを識別する前記ステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも1つを識別することを含む、方法。
  17. 請求項15記載の方法であって、前記ジェスチャ・イベントのシーケンスにおける前記ジェスチャ・イベントの表現を発生するステップを含む、方法。
  18. 請求項17記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間に結合されている少なくとも1つの制御コンポーネントに配信するステップを含む、方法。
  19. 請求項18記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間のグラフィカル描写と同期させるステップを含む、方法。
  20. 請求項19記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを含む、方法。
  21. 請求項18記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間の聴覚描写と同期させるステップを含む、方法。
  22. 請求項21記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを含む、方法。
  23. 請求項1記載の方法において、前記データ・セットが空間情報を表す、方法。
  24. 請求項23記載の方法において、前記データ・セットが、現象、イベント、測定、観察、および構造の内少なくとも1つの空間情報を表す、方法。
  25. 請求項1記載の方法において、前記データ・セットが非空間情報を表す、方法。
  26. 請求項1記載の方法において、前記ジェスチャが線形空間運動を含む、方法。
  27. 請求項1記載の方法において、前記ナビゲートするステップが、前記データ空間を通過する線形推移を含む、方法。
  28. 請求項1記載の方法であって、
    前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームに前記データ・セットをレンダリングするステップと、
    各データ・フレームを可視フレームとしてディスプレイ上に表示するステップと、
    を含む、方法。
  29. 請求項28記載の方法において、前記データ・フレームのサイズおよびアスペクト比が、前記ディスプレイのサイズおよびアスペクト比と一致する、方法。
  30. 請求項28記載の方法において、前記データ・フレームの中心および法線ベクトルが、前記ディスプレイの中心および法線ベクトルと一致する、方法。
  31. 請求項28記載の方法において、前記データ・フレームの位置および方位が、前記ディスプレイの位置および方位と一致する、方法。
  32. 請求項28記載の方法において、各データ・フレームが、前記データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む、方法。
  33. 請求項32記載の方法において、前記グラフィカル・データ・エレメントが静的エレメントである、方法。
  34. 請求項32記載の方法において、前記グラフィカル・データ・エレメントが動的エレメントである、方法。
  35. 請求項28記載の方法において、前記データ・フレームが二次元構造である、方法。
  36. 請求項35記載の方法において、前記データ・フレームが、前記本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する、方法。
  37. 請求項28記載の方法において、前記データ空間全域においてナビゲートするステップが、前記複数のデータ・フレーム全域においてナビゲートすることを含む、方法。
  38. 請求項28記載の方法であって、
    前記本体の第1ポーズを検出するステップと、
    前記第1ポーズの検出に応答して、プッシュバック相互作用を活性化するステップと、を含む、方法。
  39. 請求項38記載の方法であって、
    前記第1ポーズを入力する第1位置を記録するステップであって、前記第1位置が三空間の手の位置である、ステップと、
    前記第1位置を原点として設定するステップであって、続いて検出される本体位置を、前記原点に対する相対的オフセットとして報告する、ステップと、
    を含む、方法。
  40. 請求項39記載の方法であって、前記本体の移動を検出することによって、ジェスチャを検出するステップを含む、方法。
  41. 請求項40記載の方法において、前記検出するステップが、前記本体の第1移動を検出することを含み、前記第1移動が、前記ディスプレイに向かい軸に沿った移動であり、前記軸が、前記ディスプレイの目視面に対して垂直な軸として定められる、方法。
  42. 請求項41記載の方法において、前記ナビゲートするステップが、前記本体の第1移動に応答して、前記複数のデータ・フレームを前記軸に沿って変位させることを含み、前記データ・フレームが位置する平面において見える部分が多くなり、前記ディスプレイ上にレンダリングされる第1可視フレームが、前記ディスプレイから後退するように見え、第1データ・フレームに隣接するデータ・フレームが可視となる、方法。
  43. 請求項41記載の方法において、前記ナビゲートするステップが、前記本体の第1移動に応答して、前記複数のデータ・フレームを前記軸に沿って現在のデータ・フレームから変位させることを含み、データ・フレームが下方に平行移動し、前記現在のデータ・フレームが、前記ディスプレイ上に現在レンダリングされているデータ・フレームである、方法。
  44. 請求項43記載の方法において、各データ・フレームの外観が前記変位に応答して変化し、前記現在のデータ・フレームの下に位置するデータ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームの上に位置するデータ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになる、方法。
  45. 請求項41記載の方法において、前記検出するステップが、前記本体の第2移動を検出することを含み、前記第2移動が、前記ディスプレイから離れる方向への前記軸に沿った移動である、方法。
  46. 請求項45記載の方法において、前記ナビゲートするステップが、前記本体の第2移動に応答して、前記複数のデータ・フレームを前記軸に沿って変位させることを含み、前記データ・フレームが位置する平面において見える部分が少なくなり、前記ディスプレイ上にレンダリングされた第1可視フレームが、前記ディスプレイから推移するように見え、第1データ・フレームに隣接するデータ・フレームが見え難くなる、方法。
  47. 請求項45記載の方法において、前記ナビゲートするステップが、前記本体の第2移動に応答して、前記複数のデータ・フレームを、前記軸に沿って現在のデータ・フレームから変位させることを含み、データ・フレームが上方に平行移動し、前記現在のデータ・フレームが、前記ディスプレイ上に現在レンダリングされているデータ・フレームである、方法。
  48. 請求項47記載の方法において、各データ・フレームの外観が前記変位に応答して変化し、前記現在のデータ・フレームの上に位置するデータ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し初め、前記現在のデータ・フレームの下に位置するデータ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、そして見えるようになり始める、方法。
  49. 請求項40記載の方法において、前記検出するステップが、前記本体の第3移動を検出することを含み、前記第3移動が、前記ディスプレイの目視面に対して平行な平面における移動である、方法。
  50. 請求項49記載の方法において、前記ナビゲートするステップが、前記本体の第3移動に応答して、前記複数のデータ・フレームを前記第3移動に対応する方向に変位させることを含む、方法。
  51. 請求項50記載の方法において、前記ディスプレイ上にレンダリングされている現在のデータ・フレームが前記方向にスライドするように見え、前記現在のデータ・フレームに隣接するデータ・フレームが、前記方向とは逆の前記ディスプレイの側から見えてくるようにスライドし、前記現在のデータ・フレームが、前記ディスプレイ上に現在レンダリングされているデータ・フレームである、方法。
  52. 請求項40記載の方法において、前記ナビゲートするステップが、前記本体の移動に直接応答して、前記複数のデータ・フレームの変位を連続的に更新することを含む、方法。
  53. 請求項52記載の方法であって、
    前記本体の第2ポーズを検出するステップと、
    前記第2ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、前記終了が、前記複数のデータ・フレームの内1つのデータ・フレームを、前記ディスプレイと同一平面上に表示することを含む、ステップと、
    を含む、方法。
  54. 請求項40記載の方法であって、ジェスチャの間における前記本体の変位の物理的距離と、ナビゲーションの間において前記データ空間の中にある連続点間の論理距離との間でマッピングするステップを備えており、該マッピングするステップが、前記データ空間における前記複数のデータ・フレームの相対的変位、および各離散データ・フレームの外観の内少なくとも1つを制御する、方法。
  55. 請求項40記載の方法であって、アクティブ・ゾーンとデッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、前記アクティブ・ゾーンが前記ディスプレイに隣接しており、前記デッド・ゾーンが前記アクティブ・ゾーンに隣接している、方法。
  56. 請求項55記載の方法において、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップが、前記ジェスチャがアクティブ領域において検出されたときに、当該ジェスチャに応答して活性化される、方法。
  57. 請求項55記載の方法であって、前記ディスプレイ上にフィードバック・インディケータをレンダリングするステップを含む、方法。
  58. 請求項57記載の方法において、前記フィードバック・インディケータが、前記本体が前記アクティブ・ゾーンおよび前記デッド・ゾーンの内1つにあることを示すフィードバックを表示する、方法。
  59. 請求項57記載の方法において、前記フィードバック・インディケータが、前記本体の前記原点からの物理的オフセットを示すフィードバックを表示する、方法。
  60. 請求項1記載の方法において、前記検出するステップが、前記本体の位置を検出すること、前記本体の方位を検出すること、および前記本体の運動を検出することの内少なくとも1つを含む、方法。
  61. 請求項1記載の方法であって、前記ジェスチャを識別するステップを備えており、該識別するステップが、前記本体の一部のポーズおよび方位を識別することを含む、方法。
  62. 請求項1記載の方法において、前記検出するステップが、前記本体の第1組の付加物および第2組の付加物の内少なくとも1つを検出することを含む、方法。
  63. 請求項1記載の方法において、前記検出するステップが、前記本体に結合されている少なくとも1つのタグの位置を動的に検出することを含む、方法。
  64. 請求項63記載の方法において、前記検出するステップが、前記本体に結合されている1組のタグの位置を検出することを含む、方法。
  65. 請求項64記載の方法において、前記1組のタグの各タグはパターンを含み、前記1組のタグの各タグの各パターンは、前記複数のタグの内いずれの残りのタグのいずれのパターンとも異なる、方法。
  66. 請求項1記載の方法において、前記検出するステップが、前記本体上にあるマーカを動的に検出し位置を突き止めることを含む、方法。
  67. 請求項66記載の方法において、前記検出するステップが、前記本体に結合されている1組のマーカの位置を検出することを含む、方法。
  68. 請求項66記載の方法において、前記1組のマーカが、前記本体上に複数のパターンを形成する、方法。
  69. 請求項66記載の方法において、前記検出するステップが、前記本体の複数の付加物の位置を、当該付加物の各々に結合されている1組のマーカを用いて、検出することを含む、方法。
  70. 請求項1記載の方法において、前記変換するステップが、前記ジェスチャの情報をジェスチャ表記に変換することを含む、方法。
  71. 請求項70記載の方法において、前記ジェスチャ表記が、ジェスチャ・ボキャブラリを表し、前記ジェスチャ信号が前記ジェスチャ・ボキャブラリの通信を含む、方法。
  72. 請求項71記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の力学的連結の瞬時的ポーズ状態をテキスト・フォームで表す、方法。
  73. 請求項71記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の力学的
    連結の方位をテキスト・フォームで表す、方法。
  74. 請求項71記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の力学的連結の方位の組み合わせを、テキスト・フォーム表す、方法。
  75. 請求項71記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の力学的連結の状態を表す、キャラクタのストリングを含む、方法。
  76. 請求項75記載の方法において、前記力学的連結が、前記本体の少なくとも1つの第1付加物である、方法。
  77. 請求項76記載の方法であって、前記ストリングにおける各位置を第2付加物に割り当てるステップを備えており、該第2付加物が前記第1付加物に接続されている、方法。
  78. 請求項77記載の方法であって、複数のキャラクタにおけるキャラクタを、前記第2付加物の複数の位置の各々に割り当てるステップを含む、方法。
  79. 請求項78記載の方法において、前記複数の位置が、座標原点に対して確定される、方法。
  80. 請求項79記載の方法であって、空間における絶対位置および方位、前記本体の全体的位置および方位とは無関係な前記本体に対する固定位置および方位から成る1群から選択した位置を用いて、ならびに前記本体の動作に応答して対話的に前記座標原点を確定するステップを含む、方法。
  81. 請求項78記載の方法であって、前記複数のキャラクタにおけるキャラクタを、前記第1付加物の複数の方位の各々に割り当てるステップを含む、方法。
  82. 請求項76記載の方法において、前記検出するステップが、前記本体の外挿補間位置が仮想空間と交差するときを検出することを含み、前記仮想空間が、コンピュータに結合されているディスプレイ・デバイス上に描画された空間を含む、方法。
  83. 請求項82記載の方法であって、前記外挿補間位置が前記仮想空間と交差するときに、前記仮想空間において仮想オブジェクトを制御するステップを含む、方法。
  84. 請求項83記載の方法において、前記制御するステップが、前記仮想空間における前記外挿補間位置に応答して、前記仮想空間における仮想オブジェクトの位置を制御することを含む、方法。
  85. 請求項83記載の方法において、前記制御するステップが、前記ジェスチャに応答して前記仮想空間における仮想オブジェクトの姿勢を制御することを含む、方法。
  86. 請求項1記載の方法であって、仮想空間と物理空間との間で一致を得るために、前記検出および制御のスケーリングを制御するステップを備えており、前記仮想空間が、ディスプレイ上に描画された空間を含み、前記物理空間が、前記本体によって占められる空間を含む、方法。
  87. 請求項86記載の方法であって、前記物理空間における少なくとも1つの物理オブジェクトの移動に応答して、前記仮想空間において少なくとも1つの仮想オブジェクトを制御するステップを含む、方法。
  88. 請求項1記載の方法であって、撮像システムによって前記本体を撮像するステップを含む、方法。
  89. 請求項88記載の方法において、前記撮像するステップが、前記本体の波頭コード化画像を発生することを含む、方法。
  90. 請求項89記載の方法において、前記ジェスチャ・データが、前記撮像システムの被写体深度内における前記本体の焦点解明データを含む、方法。
  91. 請求項90記載の方法であって、前記撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを含む、方法。
  92. 請求項91記載の方法において、前記中間画像がぼやけている、方法。
  93. 請求項91記載の方法において、前記中間画像が、脱焦収差を含む、前記本体または前記撮像システムの複数の光検出器の内少なくとも1つの変化に対して不感応である、方法。
  94. 請求項90記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明範囲データを含む、方法。
  95. 請求項94記載の方法において、前記被写体深度内における前記本体の前記焦点解明範囲データが、前記撮像システムの出力から導出される、方法。
  96. 請求項90記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明位置データを含む、方法。
  97. 請求項96記載の方法において、前記被写体深度内における前記本体の前記焦点解明位置データが、前記撮像システムの出力から導出される、方法。
  98. 請求項88記載の方法において、前記撮像システムが複数の検出器を備えている、方法。
  99. 請求項98記載の方法において、前記検出器の内少なくとも2つが、波頭コード化光学エレメントを備えている波頭コード化カメラである、方法。
  100. 請求項98記載の方法において、光検出器の内少なくとも2つが、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである、方法。
  101. 請求項88記載の方法であって、前記本体と前記撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数を発生するステップを含む、方法。
  102. 請求項88記載の方法であって、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを含む、方法。
  103. システムであって、
    物理的空間において本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、
    該検出器に結合されているプロセッサであって、前記ジェスチャ・データから自動的に
    ジェスチャを検出する、プロセッサと
    を備えており、
    前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、
    前記プロセッサが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別し、
    前記プロセッサが、前記ジェスチャをジェスチャ信号に変換し、
    前記プロセッサが、パラメータにより制御可能であるデータ・セットの特性に基づいて、データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定し、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間であり、
    前記プロセッサが、前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成される複数のデータ・フレームを含めるように前記データ空間の視覚表現を生成し、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成され、
    前記プロセッサが、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲーションを制御する、システム。
  104. データ・セットを含むデータ空間全域においてナビゲートする方法であって、
    検出器を通じて受け取られたジェスチャ・データから物理的空間における本体のジェスチャを検出するステップであって、前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、当該検出するステップが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別することを含む、ステップと、
    前記ジェスチャをジェスチャ信号に変換するステップと、
    パラメータにより制御可能である前記データ・セットの特性に基づいて、前記データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定するステップであって、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間である、ステップと、
    前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成される複数のデータ・フレームを含めるように前記データ空間の視覚表現を生成するステップであって、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成される、ステップと、
    前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップと、
    前記データ空間の複数の領域のグラフィカル描写である複数の共面データ・フレームにおいて前記データ・セットをレンダリングし、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップであって、前記複数のデータ・フレームが前記複数の共面データ・フレームを含む、ステップと
    を含む、方法。
  105. 請求項104記載の方法であって、
    前記本体の第1ポーズを検出するステップと、
    前記第1ポーズの検出に応答して、プッシュバック相互作用を活性化するステップと、を含む、方法。
  106. 請求項105記載の方法であって、
    前記第1ポーズを入力する第1位置を記録するステップであって、前記第1位置が三空間の手の位置である、ステップと、
    前記第1位置を原点として設定するステップであって、続いて検出される本体位置を、前記原点に対する相対的オフセットとして報告する、ステップと、
    を含む、方法。
  107. 請求項106記載の方法において、前記検出するステップが、前記本体の前方移動を検出することを含み、前記前方移動がz−軸に沿った前記ディスプレイに向かう移動であり、前記z−軸が前記ディスプレイの目視面に対して垂直な軸として定められる、方法。
  108. 請求項107記載の方法において、前記ナビゲートするステップが、前記本体の前方移動に応答して、前記複数のデータ・フレームを前記Z−軸に沿って変位させることを含み、前記データ・フレームが位置する平面において見える部分がより多くなり、前記ディスプレイ上にレンダリングされる第1可視フレームが、前記ディスプレイから後退するように見え、第1データ・フレームに隣接するデータ・フレームが可視となる、方法。
  109. 請求項108記載の方法において、前記検出するステップが、前記本体の後方移動を検出することを含み、前記後方移動がz−軸に沿った前記ディスプレイから離れる移動である、方法。
  110. 請求項109記載の方法において、前記ナビゲートするステップが、前記本体の後方移動に応答して、前記複数のデータ・フレームを前記Z−軸に沿って変位させることを含み、前記データ・フレームが位置する平面において見える部分が少なくなり、前記ディスプレイ上にレンダリングされた第1可視フレームが、前記ディスプレイから推移するように見え、第1データ・フレームに隣接するデータ・フレームがより見え難くなる、方法。
  111. 請求項110記載の方法であって、前記本体の前記z−軸に沿った移動に直接応答して、前記複数のデータ・フレームの前記z−軸に沿った変位を連続的に更新するステップを含む、方法。
  112. 請求項111記載の方法であって、
    前記本体の第2ポーズを検出するステップと、
    前記第2ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、前記終了が、前記複数のデータ・フレームの内1つのデータ・フレームを、前記ディスプレイと同一平面上に表示することを含む、ステップと、
    を含む、方法。
  113. 請求項106記載の方法において、前記検出するステップが、前記本体の右横方向移動を検出することを含み、前記右横方向移動がx−軸に沿った移動であり、前記x−軸が、前記ディスプレイの目視面に対して平行な平面内に位置する、方法。
  114. 請求項113記載の方法において、前記ナビゲートするステップが、前記本体の右横方向移動に応答して、前記複数のデータ・フレームを前記x−軸に沿って右に変位させることを含み、前記ディスプレイ上にレンダリングされた第1可視フレームが、前記ディスプレイから当該ディスプレイの右側に向かってスライドするように見え、第1データ・フレームに隣接するデータ・フレームがスライドして前記ディスプレイの左側から見えるようになる、方法。
  115. 請求項114記載の方法において、前記検出するステップが、前記本体の左横方向移動を検出することを含み、前記左横方向移動が前記x−軸に沿った移動である、方法。
  116. 請求項115記載の方法において、前記ナビゲートするステップが、前記本体の左横方
    向移動に応答して、前記複数のデータ・フレームを前記x−軸に沿って左に変位させることを含み、前記ディスプレイ上にレンダリングされた第1可視フレームが、前記ディスプレイから当該ディスプレイの左側に向かってスライドするように見え、第1データ・フレームに隣接するデータ・フレームがスライドして前記ディスプレイの右側から見えるようになる、方法。
  117. 請求項116記載の方法であって、前記本体の前記x−軸に沿った移動に直接応答して、前記複数のデータ・フレームの前記x−軸に沿った変位を連続的に更新するステップを含む、方法。
  118. 請求項117記載の方法であって、
    前記本体の第2ポーズを検出するステップと、
    前記第2ポーズの検出に応答して、プッシュバック相互作用を終了するステップであって、前記終了が、前記複数のデータ・フレームの内1つのデータ・フレームを、前記ディスプレイと同一平面上に表示することを含む、ステップと、
    を含む、方法。
  119. 請求項106記載の方法において、前記データ空間が、平面内に配置された複数の仮想抑止点を含む、方法。
  120. 請求項119記載の方法において、各仮想抑止点が各データ・フレームに対応する、方法。
  121. 請求項106記載の方法であって、アクティブ・ゾーンとデッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、前記アクティブ・ゾーンが前記ディスプレイに隣接しており、前記デッド・ゾーンが前記アクティブ・ゾーンに隣接している、方法。
  122. 請求項121記載の方法において、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップが、前記ジェスチャがアクティブ領域において検出されたときに、当該ジェスチャに応答して活性化される、方法。
  123. 請求項121記載の方法であって、前記ディスプレイ上にレンダリングされるフィードバック・インディケータを含む、方法。
  124. 請求項123記載の方法において、前記フィードバック・インディケータが、前記本体が前記アクティブ・ゾーンおよび前記デッド・ゾーンの内1つにあることを示すフィードバックを表示する、方法。
  125. 請求項123記載の方法において、前記フィードバック・インディケータが、前記本体の前記原点からの物理的オフセットを示すフィードバックを表示する、方法。
  126. 請求項104記載の方法であって、前記データ・セットのパラメータ−制御軸を、前記物理的空間の1次元と位置合わせするステップを含む、方法。
  127. 請求項126記載の方法において、前記次元が深さ次元である、方法。
  128. 請求項126記載の方法において、前記次元が水平次元である、方法。
  129. 請求項126記載の方法において、前記次元が垂直次元である、方法。
  130. 請求項126記載の方法において、前記次元が横方向次元である、方法。
  131. 請求項126記載の方法において、前記ナビゲートするステップが、前記パラメータ−制御軸に沿ってデータ空間変換を行うために、前記次元に沿った運動を含む、方法。
  132. 請求項126記載の方法において、前記ナビゲートするステップが、前記データ空間の量子化パラメータ空間にナビゲートすることを含む、方法。
  133. 請求項104記載の方法において、前記検出するステップが、前記本体の進展する位置を検出することを含む、方法。
  134. 請求項104記載の方法において、前記検出するステップが、前記本体の進展する方位を検出することを含む、方法。
  135. 請求項104記載の方法において、前記検出するステップが、前記本体の進展するポーズを検出することを含み、前記ポーズが、前記本体の一部分の前記本体の少なくとも1つの他の部分に対する幾何学的配置である、方法。
  136. 請求項104記載の方法において、前記検出するステップが、前記本体の進展する運動を検出することを含む、方法。
  137. 請求項104記載の方法において、前記検出するステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも1つを検出することを含む、方法。
  138. 請求項104記載の方法であって、前記ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを含む、方法。
  139. 請求項138記載の方法であって、前記ジェスチャを識別するステップを含む、方法。
  140. 請求項139記載の方法において、前記ジェスチャを識別する前記ステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも1つを識別することを含む、方法。
  141. 請求項139記載の方法であって、前記ジェスチャ・イベントのシーケンスにおける前記ジェスチャ・イベントの表現を発生するステップを含む、方法。
  142. 請求項141記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間に結合されている少なくとも1つの制御コンポーネントに配信するステップを含む、方法。
  143. 請求項142記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間のグラフィカル描写と同期させるステップを含む、方法。
  144. 請求項143記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを含む、方法。
  145. 請求項142記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間の聴覚描写と同期させるステップを含む、方法。
  146. 請求項145記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを含む、方法。
  147. 請求項104記載の方法において、前記データ・セットが空間情報を表す、方法。
  148. 請求項147記載の方法において、前記データ・セットが、現象、イベント、測定、観察、および構造の内少なくとも1つの空間情報を表す、方法。
  149. 請求項104記載の方法において、前記データ・セットが非空間情報を表す、方法。
  150. 請求項104記載の方法において、前記ジェスチャが線形空間運動を含む、方法。
  151. 請求項104記載の方法において、前記ナビゲートするステップが、前記データ空間を通過する線形推移を含む、方法。
  152. 請求項104記載の方法であって、
    前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームに前記データ・セットをレンダリングするステップと、
    各データ・フレームを可視フレームとしてディスプレイ上に表示するステップと、
    を含む、方法。
  153. 請求項152記載の方法において、前記データ・フレームのサイズおよびアスペクト比が、前記ディスプレイのサイズおよびアスペクト比と一致する、方法。
  154. 請求項152記載の方法において、前記データ・フレームの中心および法線ベクトルが、前記ディスプレイの中心および法線ベクトルと一致する、方法。
  155. 請求項152記載の方法において、前記データ・フレームの位置および方位が、前記ディスプレイの位置および方位と一致する、方法。
  156. 請求項152記載の方法において、各データ・フレームが、前記データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む、方法。
  157. 請求項156記載の方法において、前記グラフィカル・データ・エレメントが静的エレメントである、方法。
  158. 請求項156記載の方法において、前記グラフィカル・データ・エレメントが動的エレメントである、方法。
  159. 請求項152記載の方法において、前記データ・フレームが二次元構造である、方法。
  160. 請求項159記載の方法において、前記データ・フレームが、前記本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する、方法。
  161. 請求項152記載の方法において、前記データ空間全域においてナビゲートするステップが、前記複数のデータ・フレーム全域においてナビゲートすることを含む、方法。
  162. 請求項104記載の方法であって、前記ジェスチャを識別するステップを備えており、
    該識別するステップが、前記本体の一部のポーズおよび方位を識別することを含む、方法。
  163. 請求項104記載の方法において、前記検出するステップが、前記本体の第1組の付加物および第2組の付加物の内少なくとも1つを検出することを含む、方法。
  164. 請求項104記載の方法において、前記検出するステップが、少なくとも1つのタグの位置を動的に検出することを含む、方法。
  165. 請求項104記載の方法において、前記検出するステップが、前記本体上にあるマーカを動的に検出し位置を突き止めることを含む、方法。
  166. 請求項104記載の方法において、前記変換するステップが、前記ジェスチャの情報をジェスチャ表記に変換することを含む、方法。
  167. 請求項166記載の方法において、前記ジェスチャ表記が、ジェスチャ・ボキャブラリを表し、前記ジェスチャ信号が前記ジェスチャ・ボキャブラリの通信を含む、方法。
  168. 請求項167記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の瞬時的ポーズ状態をテキスト・フォームで表す、方法。
  169. 請求項167記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の方位をテキスト・フォームで表す、方法。
  170. 請求項167記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の方位の組み合わせを、テキスト・フォームで表す、方法。
  171. 請求項167記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の状態を表す、キャラクタのストリングを含む、方法。
  172. 請求項104記載の方法において、前記検出するステップが、前記本体の外挿補間位置が仮想空間と交差するときを検出することを含み、前記仮想空間が、前記ディスプレイ上に描画された空間を含む、方法。
  173. 請求項172記載の方法であって、前記外挿補間位置が前記仮想空間と交差するときに、前記仮想空間において仮想オブジェクトを制御するステップを含む、方法。
  174. 請求項173記載の方法であって、前記仮想空間における前記外挿補間位置に応答して、前記仮想空間における仮想オブジェクトの位置を制御するステップを含む、方法。
  175. 請求項104記載の方法であって、仮想空間と物理空間との間で一致を得るために、前記検出およびナビゲーションのスケーリングを制御するステップを備えており、前記仮想空間が、前記ディスプレイ上に描画された空間を含み、前記物理空間が、前記本体によって占められる空間を含む、方法。
  176. 請求項104記載の方法であって、撮像システムによって前記本体を撮像するステップを含む、方法。
  177. 請求項176記載の方法において、前記撮像するステップが、前記本体の波頭コード化画像を発生することを含む、方法。
  178. 請求項177記載の方法において、前記ジェスチャ・データが、前記撮像システムの被写体深度内における前記本体の焦点解明データを含む、方法。
  179. 請求項178記載の方法であって、前記撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを含む、方法。
  180. 請求項179記載の方法において、前記中間画像がぼやけている、方法。
  181. 請求項179記載の方法において、前記中間画像が、脱焦収差を含む、前記本体と前記撮像システムの複数の光検出器との内少なくとも1つの変化に対して不感応である、方法。
  182. 請求項178記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明範囲データを含む、方法。
  183. 請求項182記載の方法において、前記被写体深度内における前記本体の前記焦点解明範囲データが、前記撮像システムの出力から導出される、方法。
  184. 請求項178記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明位置データを含む、方法。
  185. 請求項184記載の方法において、前記被写体深度内における前記本体の前記焦点解明位置データが、前記撮像システムの出力から導出される、方法。
  186. 請求項176記載の方法において、前記撮像システムが複数の検出器を含む、方法。
  187. 請求項186記載の方法において、前記検出器の内少なくとも2つが、波頭コード化光学エレメントを備えている波頭コード化カメラである、方法。
  188. 請求項186記載の方法において、光検出器の内少なくとも2つが、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである、方法。
  189. 請求項176記載の方法であって、前記本体と前記撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数を発生するステップを含む、方法。
  190. 請求項176記載の方法であって、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを含む、方法。
  191. システムであって、
    物理的空間において本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、
    前記検出器に結合されているプロセッサであって、前記ジェスチャ・データから自動的にジェスチャを検出する、プロセッサと、
    を備えており、
    前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、
    前記プロセッサが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別し、
    前記プロセッサが、前記ジェスチャをジェスチャ信号に変換し、
    前記プロセッサが、パラメータにより制御可能であるデータ・セットの特性に基づいて、データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定し、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間であり、
    前記プロセッサが、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲーションを制御すると共に、前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成される複数のデータ・フレームを含めるように前記データ空間の視覚表現を生成し、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成され、
    前記プロセッサが、前記データ空間の複数の領域のグラフィカル描写である複数の共面データ・フレームにおいて前記データ・セットをレンダリングすると共に、各データ・フレームを可視フレームとしてディスプレイ上に表示し、前記複数のデータ・フレームが前記複数の共面データ・フレームを含む、システム。
  192. データ・セットを含むデータ空間全域においてナビゲートする方法であって、
    検出器を通じて受け取られたジェスチャ・データから物理的空間における本体のジェスチャを検出するステップであって、前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、当該検出するステップが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別することを含む、ステップと、
    前記ジェスチャをジェスチャ信号に変換するステップと、
    パラメータにより制御可能である前記データ・セットの特性に基づいて、前記データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定するステップであって、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間である、ステップと、
    前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップと、
    前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにおいて前記データ・セットをレンダリングすると共に、各データ・フレームを可視フレームとしてディスプレイ上に表示するステップであって、前記複数のデータ・フレームが、前記データ空間の複数の平面に配置された離散データ・フレームのスタックを構成し、各データ・フレームが前記複数の平面の内別々の平面に位置し、前記複数のデータ・フレームの各データ・フレームを含める前記データ空間の視覚表現が、前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて生成され、各データ・フレームは、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成される、ステップと
    を含む、方法。
  193. 請求項192記載の方法であって、
    前記本体の第1ポーズを検出するステップと、
    前記第1ポーズの検出に応答して、プッシュバック相互作用を活性化するステップと、を含む、方法。
  194. 請求項193記載の方法であって、
    前記第1ポーズを入力する第1位置を記録するステップであって、前記第1位置が三空間の手の位置である、ステップと、
    前記第1位置を原点として設定するステップであって、続いて検出される本体位置を、前記原点に対する相対的オフセットとして報告する、ステップと、
    を含む、方法。
  195. 請求項194記載の方法において、前記検出するステップが、前記本体の上方移動を検
    出することを含み、前記上方移動がy−軸に沿って前記ディスプレイから外側に向かう移動であり、前記y−軸が前記ディスプレイの目視面に対して垂直な軸として定められる、方法。
  196. 請求項195記載の方法において、前記ナビゲートするステップが、前記本体の上方移動に応答して、前記複数のデータ・フレームを現在のデータ・フレームから前記y−軸に沿って変位させることを含み、前記スタックの離散データ・フレームが上方に平行移動し、前記現在のデータ・フレームが、前記ディスプレイ上に現在レンダリングされている離散データ・フレームである、方法。
  197. 請求項196記載の方法において、各離散データ・フレームの外観が前記変位に応答して変化し、前記現在のデータ・フレームの上に位置する前記スタックの離散データ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し始め、前記現在のデータ・フレームの下に位置する前記スタックの離散データ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになり始める、方法。
  198. 請求項197記載の方法であって、ジェスチャの間における前記本体の変位の物理的距離と、前記スタックの連続離散データ・フレーム間の論理距離との間でマッピングするステップを備えており、このマッピングが、前記y−軸に沿った前記複数のデータ・フレームの変位、および各離散データ・フレームの外観を制御する、方法。
  199. 請求項198記載の方法において、前記検出するステップが、前記本体の下方移動を検出することを含み、前記下方移動がy−軸に沿って記ディスプレイに向かう移動である、方法。
  200. 請求項199記載の方法において、前記ナビゲートするステップが、前記本体の下方移動に応答して、前記複数のデータ・フレームを現在のデータ・フレームから前記y−軸に沿って変位させることを含み、前記スタックの離散データ・フレームが下方に平行移動する、方法。
  201. 請求項200記載の方法において、各離散データ・フレームの外観が前記変位に応答して変化し、前記現在のデータ・フレームの下に位置する前記スタックの離散データ・フレームが相対的に高い度合いの透明度およびぼやけを呈し、前記現在のデータ・フレームが可視から遷移してある度合いの透明度およびぼやけを呈し始め、前記現在のデータ・フレームの上に位置する前記スタックの離散データ・フレームが、相対的に低い度合いの透明度およびぼやけを呈し、見えるようになる、方法。
  202. 請求項201記載の方法であって、ジェスチャの間における前記本体の変位の物理的距離と、前記スタックの連続離散データ・フレーム間の論理距離との間でマッピングするステップを備えており、該マッピングが、前記y−軸に沿った前記複数のデータ・フレームの変位、および各離散データ・フレームの外観を制御する、方法。
  203. 請求項202記載の方法であって、前記本体の前記y−軸に沿った移動に直接応答して、前記複数のデータ・フレームの前記y−軸に沿った変位を連続的に更新するステップを含む、方法。
  204. 請求項203記載の方法であって、
    前記本体の第2ポーズを検出するステップと、
    前記第2ポーズの検出に応答して、プッシュバック相互作用を終了するステップであっ
    て、前記終了が、前記複数のデータ・フレームの内1つのデータ・フレームを、前記ディスプレイと同一平面上に表示することを含む、ステップと、
    を含む、方法。
  205. 請求項192記載の方法において、前記データ空間が、複数の仮想抑止点を備えている、方法。
  206. 請求項205記載の方法において、各仮想抑止点が前記複数の平面の各平面に対応する、方法。
  207. 請求項192記載の方法であって、第1アクティブ・ゾーンと、第2アクティブ・ゾーンと、デッド・ゾーンとを備えているジェスチャ相互作用空間を形成するステップを備えており、前記第1アクティブ・ゾーンが前記ディスプレイに隣接しており、前記デッド・ゾーンが前記第1アクティブ・ゾーンに隣接しており、前記第2アクティブ・ゾーンが前記デッド・ゾーンに隣接している、方法。
  208. 請求項207記載の方法において、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲートするステップが、前記ジェスチャが前記第1アクティブ・ゾーンおよび前記第2アクティブ・ゾーンの内1つにおいて検出されたときに、前記ジェスチャに応答して活性化される、方法。
  209. 請求項207記載の方法であって、前記ディスプレイ上にレンダリングされるフィードバック・インディケータを含む、方法。
  210. 請求項209記載の方法において、前記フィードバック・インディケータが、前記本体が前記第1アクティブ・ゾーン、前記第2アクティブ・ゾーン、および前記デッド・ゾーンの内1つにあることを示すフィードバックを表示する、方法。
  211. 請求項209記載の方法において、前記フィードバック・インディケータが、前記本体の原点からの物理的オフセットを示すフィードバックを表示する、方法。
  212. 請求項192記載の方法であって、前記データ・セットのパラメータ−制御軸を、前記物理的空間の1次元と位置合わせするステップを含む、方法。
  213. 請求項212記載の方法において、前記次元が深さ次元である、方法。
  214. 請求項212記載の方法において、前記次元が水平次元である、方法。
  215. 請求項212記載の方法において、前記次元が垂直次元である、方法。
  216. 請求項212記載の方法において、前記次元が横方向次元である、方法。
  217. 請求項212記載の方法において、前記ナビゲートするステップが、前記パラメータ−制御軸に沿ってデータ空間変換を行うために、前記次元に沿った運動を含む、方法。
  218. 請求項212記載の方法において、前記ナビゲートするステップが、前記データ空間の量子化パラメータ空間にナビゲートすることを含む、方法。
  219. 請求項192記載の方法において、前記検出するステップが、前記本体の進展する位置を検出することを含む、方法。
  220. 請求項192記載の方法において、前記検出するステップが、前記本体の進展する方位を検出することを含む、方法。
  221. 請求項192記載の方法において、前記検出するステップが、前記本体の進展するポーズを検出することを含み、前記ポーズが、前記本体の一部分の前記本体の少なくとも1つの他の部分に対する幾何学的配置である、方法。
  222. 請求項192記載の方法において、前記検出するステップが、前記本体の進展する運動を検出することを含む、方法。
  223. 請求項192記載の方法において、前記検出するステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも1つを検出することを含む、方法。
  224. 請求項192記載の方法であって、前記ジェスチャを分析して、ジェスチャ・イベントのシーケンスを得るステップを含む、方法。
  225. 請求項224記載の方法であって、前記ジェスチャを識別するステップを含む、方法。
  226. 請求項225記載の方法において、前記ジェスチャを識別する前記ステップが、前記本体の進展する位置、前記本体の方位、前記本体のポーズ、および前記本体の運動の内少なくとも1つを識別することを含む、方法。
  227. 請求項225記載の方法であって、前記ジェスチャ・イベントのシーケンスにおける前記ジェスチャ・イベントの表現を発生するステップを含む、方法。
  228. 請求項227記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間に結合されている少なくとも1つの制御コンポーネントに配信するステップを含む、方法。
  229. 請求項228記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間のグラフィカル描写と同期させるステップを含む、方法。
  230. 請求項229記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションのグラフィカル描写と同期させるステップを含む、方法。
  231. 請求項228記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間の聴覚描写と同期させるステップを含む、方法。
  232. 請求項231記載の方法であって、前記ジェスチャ・イベントの表現を、前記データ空間全域におけるナビゲーションの聴覚描写と同期させるステップを含む、方法。
  233. 請求項192記載の方法において、前記データ・セットが空間情報を表す、方法。
  234. 請求項233記載の方法において、前記データ・セットが、現象、イベント、測定、観察、および構造の内少なくとも1つの空間情報を表す、方法。
  235. 請求項192記載の方法において、前記データ・セットが非空間情報を表す、方法。
  236. 請求項192記載の方法において、前記ジェスチャが線形空間運動を含む、方法。
  237. 請求項192記載の方法において、前記ナビゲートするステップが、前記データ空間を通過する線形推移を含む、方法。
  238. 請求項192記載の方法であって、
    前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームに前記データ・セットをレンダリングするステップと、
    各データ・フレームを可視フレームとしてディスプレイ上に表示するステップと、
    を含む、方法。
  239. 請求項238記載の方法において、前記データ・フレームのサイズおよびアスペクト比が、前記ディスプレイのサイズおよびアスペクト比と一致する、方法。
  240. 請求項238記載の方法において、前記データ・フレームの中心および法線ベクトルが、前記ディスプレイの中心および法線ベクトルと一致する、方法。
  241. 請求項238記載の方法において、前記データ・フレームの位置および方位が、前記ディスプレイの位置および方位と一致する、方法。
  242. 請求項238記載の方法において、各データ・フレームが、前記データ・セットのエレメントを表すグラフィカル・データ・エレメントを含む、方法。
  243. 請求項242記載の方法において、前記グラフィカル・データ・エレメントが静的エレメントである、方法。
  244. 請求項242記載のシステムにおいて、前記グラフィカル・データ・エレメントが動的エレメントである、方法。
  245. 請求項238記載のシステムにおいて、前記データ・フレームが二次元構造である、方法。
  246. 請求項245記載の方法において、前記データ・フレームが、前記本体を含むローカル環境を記述する座標と一致する座標系を有する三次元グラフィクス・レンダリング環境内に存在する、方法。
  247. 請求項238記載の方法において、前記データ空間全域においてナビゲートするステップが、前記複数のデータ・フレーム全域においてナビゲートすることを含む、方法。
  248. 請求項192記載の方法であって、前記ジェスチャを識別するステップを備えており、この識別が、前記本体の一部のポーズおよび方位を識別することを含む、方法。
  249. 請求項192記載の方法において、前記検出するステップが、前記本体の第1組の付加物および第2組の付加物の内少なくとも1つを検出することを含む、方法。
  250. 請求項192記載の方法において、前記検出するステップが、少なくとも1つのタグの位置を動的に検出することを含む、方法。
  251. 請求項192記載の方法において、前記検出するステップが、前記本体上にあるマーカを動的に検出し位置を突き止めることを含む、方法。
  252. 請求項192記載の方法において、前記変換するステップが、前記ジェスチャの情報をジェスチャ表記に変換することを含む、方法。
  253. 請求項252記載の方法において、前記ジェスチャ表記が、ジェスチャ・ボキャブラリを表し、前記ジェスチャ信号が前記ジェスチャ・ボキャブラリの通信を含む、方法。
  254. 請求項253記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の瞬時的ポーズ状態をテキスト・フォームで表す、方法。
  255. 請求項253記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の方位をテキスト・フォームで表す、方法。
  256. 請求項253記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の方位の組み合わせを、テキスト・フォームで表す、方法。
  257. 請求項253記載の方法において、前記ジェスチャ・ボキャブラリが、前記本体の状態を表すキャラクタのストリングを含む、方法。
  258. 請求項192記載の方法において、前記検出するステップが、前記本体の外挿補間位置が仮想空間と交差するときを検出することを含み、前記仮想空間が、前記ディスプレイ上に描画された空間を含む、方法。
  259. 請求項258記載の方法であって、前記外挿補間位置が仮想オブジェクトと交差するときに、前記仮想空間において仮想オブジェクトを制御するステップを含む、方法。
  260. 請求項259記載の方法であって、前記仮想空間における前記外挿補間位置に応答して、前記仮想空間における前記仮想オブジェクトの位置制御するステップを含む、方法。
  261. 請求項192記載の方法であって、仮想空間と物理空間との間で一致を得るために、前記検出およびナビゲーションのスケーリングを制御するステップを備えており、前記仮想空間が、前記ディスプレイ上に描画された空間を含み、前記物理空間が、前記本体によって占められる空間を含む、方法。
  262. 請求項192記載の方法であって、撮像システムによって前記本体を撮像するステップを含む、方法。
  263. 請求項262記載の方法において、前記撮像するステップが、前記本体の波頭コード化画像を発生することを含む、方法。
  264. 請求項263記載の方法において、前記ジェスチャ・データが、前記撮像システムの被写体深度内における前記本体の焦点解明データを含む、方法。
  265. 請求項264記載の方法であって、前記撮像システムによって収集された画像をコード化することによって、中間画像を発生するステップを含む、方法。
  266. 請求項265記載の方法において、前記中間画像がぼやけている、方法。
  267. 請求項265記載の方法において、前記中間画像が、脱焦収差を含む、前記本体と前記
    撮像システムの複数の光検出器との内少なくとも1つの変化に対して不感応である、方法。
  268. 請求項264記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明範囲データを含む、方法。
  269. 請求項268記載の方法において、前記被写体深度内における前記本体の前記焦点解明範囲データが、前記撮像システムの出力から導出される、方法。
  270. 請求項264記載の方法において、前記ジェスチャ・データが、前記被写体深度内における前記本体の焦点解明位置データを含む、方法。
  271. 請求項270記載の方法において、前記被写体深度内における前記本体の前記焦点解明位置データが、前記撮像システムの出力から導出される、方法。
  272. 請求項262記載の方法において、前記撮像システムが複数の検出器を備えている、方法。
  273. 請求項272記載の方法において、前記検出器の内少なくとも2つが、波頭コード化光学エレメントを備えている波頭コード化カメラである、方法。
  274. 請求項272記載の方法において、光検出器の内少なくとも2つが、撮像の焦点深度を増大させる位相マスクを備えている波頭コード化カメラである、方法。
  275. 請求項262記載の方法であって、前記本体と前記撮像システムとの間の距離に対して不変である、変調伝達関数および点拡散関数を発生するステップを含む、方法。
  276. 請求項262記載の方法であって、脱焦に関して不変である変調伝達関数および点拡散関数を発生するステップを含む、方法。
  277. システムであって、
    物理的空間において本体によって行われるジェスチャを表すジェスチャ・データを受け取る検出器と、
    前記検出器に結合されているプロセッサであって、前記ジェスチャ・データから自動的にジェスチャを検出する、プロセッサと、
    を備えており、
    前記ジェスチャ・データがある時点および前記物理的空間における前記本体の瞬時的状態についての絶対三空間位置データであり、
    前記プロセッサが、前記ジェスチャ・データのみを用いて前記ジェスチャを識別し、
    前記プロセッサが、前記ジェスチャをジェスチャ信号に変換し、
    前記プロセッサが、パラメータにより制御可能であるデータ・セットの特性に基づいて、データ空間の空間的表現および該空間的表現における前記データ・セットの配置を決定し、前記データ空間が、前記物理的空間において表された前記データ・セットを有するデータ表現空間であり、
    前記プロセッサが、前記ジェスチャ信号に応答して前記データ空間全域においてナビゲーションを制御し、
    前記プロセッサが、前記データ空間の複数の領域のグラフィカル描写である複数のデータ・フレームにおいて前記データ・セットをレンダリングすると共に、各データ・フレームを可視フレームとしてディスプレイ上に表示し、
    前記複数のデータ・フレームが、前記データ空間の複数の平面に配置された離散データ
    ・フレームのスタックを備えており、各データ・フレームが前記複数の平面の内別々の平面に位置し、
    前記プロセッサが、前記データ空間の空間的表現と一致した座標系システムおよび前記物理的空間の座標系システムにおいて、前記複数のデータ・フレームの各データ・フレームを含めるように前記データ空間の視覚表現を生成すると共に、前記各データ・フレームが、前記データ空間が提示されるディスプレイに一致するサイズおよびアスペクト比を有して生成される、システム。
JP2011526203A 2008-09-03 2009-09-03 データ空間の主要次元をナビゲートするための制御システム Expired - Fee Related JP5806615B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US9385208P 2008-09-03 2008-09-03
US61/093,852 2008-09-03
US12/417,252 2009-04-02
US12/417,252 US9075441B2 (en) 2006-02-08 2009-04-02 Gesture based control using three-dimensional information extracted over an extended depth of field
US12/487,623 US20090278915A1 (en) 2006-02-08 2009-06-18 Gesture-Based Control System For Vehicle Interfaces
US12/487,623 2009-06-18
PCT/US2009/055930 WO2010028176A1 (en) 2008-09-03 2009-09-03 Control system for navigating a principal dimension of a data space

Publications (2)

Publication Number Publication Date
JP2012502364A JP2012502364A (ja) 2012-01-26
JP5806615B2 true JP5806615B2 (ja) 2015-11-10

Family

ID=41797486

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011526203A Expired - Fee Related JP5806615B2 (ja) 2008-09-03 2009-09-03 データ空間の主要次元をナビゲートするための制御システム

Country Status (6)

Country Link
EP (1) EP2338114B1 (ja)
JP (1) JP5806615B2 (ja)
KR (1) KR101616591B1 (ja)
CN (1) CN102177513B (ja)
ES (1) ES2623816T3 (ja)
WO (1) WO2010028176A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5627314B2 (ja) * 2010-06-24 2014-11-19 キヤノン株式会社 情報処理装置
JP5645530B2 (ja) * 2010-07-29 2014-12-24 キヤノン株式会社 情報処理装置及びその制御方法
US9952671B2 (en) * 2010-10-12 2018-04-24 Nokia Technologies Oy Method and apparatus for determining motion
US8610831B2 (en) 2010-10-12 2013-12-17 Nokia Corporation Method and apparatus for determining motion
CN102238390B (zh) * 2011-08-05 2013-03-20 中国科学院深圳先进技术研究院 基于图像库的视频和图像的编码解码方法与系统
WO2013103410A1 (en) 2012-01-05 2013-07-11 California Institute Of Technology Imaging surround systems for touch-free display control
WO2014107434A1 (en) 2013-01-02 2014-07-10 California Institute Of Technology Single-sensor system for extracting depth information from image blur
US9616350B2 (en) * 2014-05-21 2017-04-11 Universal City Studios Llc Enhanced interactivity in an amusement park environment using passive tracking elements
CN105589550A (zh) * 2014-10-21 2016-05-18 中兴通讯股份有限公司 信息发布方法、信息接收方法、装置及信息共享系统
CN105865327A (zh) * 2015-01-22 2016-08-17 成都飞机工业(集团)有限责任公司 基于变焦照片的相对位置的测量方法
DE102016216577A1 (de) * 2016-09-01 2018-03-01 Volkswagen Aktiengesellschaft Verfahren zur Interaktion mit Bildinhalten, die auf einer Anzeigevorrichtung in einem Fahrzeug dargestellt werden
CN108241164B (zh) * 2016-12-26 2021-09-14 千寻位置网络有限公司 卫星定位系统定位空窗期内轨迹记录方法及其装置
CA3064764A1 (en) 2017-05-24 2018-11-29 The Trustees Of Columbia University In The City Of New York Broadband achromatic flat optical components by dispersion-engineered dielectric metasurfaces
SG11202001717VA (en) 2017-08-31 2020-03-30 Metalenz Inc Transmissive metasurface lens integration
CN107754225A (zh) * 2017-11-01 2018-03-06 河海大学常州校区 一种智能健身教练系统
JP6730552B2 (ja) * 2018-05-14 2020-07-29 株式会社ユピテル 電子情報システム及びそのプログラム
EP4004608A4 (en) 2019-07-26 2023-08-30 Metalenz, Inc. APERTURE META-SURFACE AND HYBRID REFRACTIVE META-SURFACE IMAGING SYSTEMS
EP3985491A1 (en) * 2020-10-19 2022-04-20 ameria AG Control method for touchless gesture control
US11927769B2 (en) 2022-03-31 2024-03-12 Metalenz, Inc. Polarization sorting metasurface microlens array device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69315969T2 (de) * 1992-12-15 1998-07-30 Sun Microsystems Inc Darstellung von Informationen in einem Anzeigesystem mit transparenten Fenstern
JP2517531B2 (ja) * 1994-02-28 1996-07-24 株式会社エイ・ティ・アール通信システム研究所 ステレオ画像を用いた姿勢検出装置
JPH0863326A (ja) * 1994-08-22 1996-03-08 Hitachi Ltd 画像処理装置及び方法
US20020195548A1 (en) * 2001-06-06 2002-12-26 Dowski Edward Raymond Wavefront coding interference contrast imaging systems
JPH103544A (ja) * 1996-06-14 1998-01-06 Imeeji Joho Kagaku Kenkyusho ジェスチャ認識装置
AU2854500A (en) * 1999-01-20 2000-08-07 Karl B. Schmidt Methods and apparatus for providing feedback to a subject in connection with performing a task
SE0000850D0 (sv) * 2000-03-13 2000-03-13 Pink Solution Ab Recognition arrangement
WO2003025859A1 (fr) * 2001-09-17 2003-03-27 National Institute Of Advanced Industrial Science And Technology Dispositif d'interface
CN101118317B (zh) * 2002-02-27 2010-11-03 Cdm光学有限公司 波前编码成像系统的优化图像处理
JP2004213521A (ja) * 2003-01-08 2004-07-29 Canon Inc ペン入力情報処理方法
US7576725B2 (en) * 2004-10-19 2009-08-18 Microsoft Corporation Using clear-coded, see-through objects to manipulate virtual objects
US7446766B2 (en) * 2005-02-08 2008-11-04 Seegrid Corporation Multidimensional evidence grids and system and methods for applying same
CN101536494B (zh) * 2005-02-08 2017-04-26 奥布隆工业有限公司 用于基于姿势的控制系统的系统和方法
EP1926047A1 (en) * 2006-11-21 2008-05-28 STMicroelectronics (Research & Development) Limited Artefact Removal from Phase Encoded Images

Also Published As

Publication number Publication date
EP2338114A1 (en) 2011-06-29
KR20110058871A (ko) 2011-06-01
JP2012502364A (ja) 2012-01-26
WO2010028176A1 (en) 2010-03-11
EP2338114A4 (en) 2011-10-05
ES2623816T3 (es) 2017-07-12
CN102177513A (zh) 2011-09-07
KR101616591B1 (ko) 2016-04-28
CN102177513B (zh) 2015-12-02
EP2338114B1 (en) 2017-03-15

Similar Documents

Publication Publication Date Title
JP5806615B2 (ja) データ空間の主要次元をナビゲートするための制御システム
US10061392B2 (en) Control system for navigating a principal dimension of a data space
US9471148B2 (en) Control system for navigating a principal dimension of a data space
US8537112B2 (en) Control system for navigating a principal dimension of a data space
US8896531B2 (en) Fast fingertip detection for initializing a vision-based hand tracker
US9910497B2 (en) Gestural control of autonomous and semi-autonomous systems
JP5805537B2 (ja) マルチプロセス・インタラクティブ・システムおよび方法
JP5698733B2 (ja) 三空間入力の検出、表現、および解釈:自由空間、近接、および表面接触モードを組み込むジェスチャ連続体
JP5782431B2 (ja) 空間動作システムと共に用いるための空間マルチモード制御デバイス
US8669939B2 (en) Spatial, multi-modal control device for use with spatial operating system
US8665213B2 (en) Spatial, multi-modal control device for use with spatial operating system
US20150100593A1 (en) Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes
US20110025603A1 (en) Spatial, Multi-Modal Control Device For Use With Spatial Operating System
WO2010030822A1 (en) Gestural control of autonomous and semi-autonomous systems
JP2015525381A (ja) 相互ユーザ手追跡および形状認識ユーザ・インターフェース

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140219

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140516

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150115

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150410

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150715

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150806

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150904

R150 Certificate of patent or registration of utility model

Ref document number: 5806615

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees