JP2015525381A - 相互ユーザ手追跡および形状認識ユーザ・インターフェース - Google Patents
相互ユーザ手追跡および形状認識ユーザ・インターフェース Download PDFInfo
- Publication number
- JP2015525381A JP2015525381A JP2015510510A JP2015510510A JP2015525381A JP 2015525381 A JP2015525381 A JP 2015525381A JP 2015510510 A JP2015510510 A JP 2015510510A JP 2015510510 A JP2015510510 A JP 2015510510A JP 2015525381 A JP2015525381 A JP 2015525381A
- Authority
- JP
- Japan
- Prior art keywords
- blob
- image
- hand
- depth
- data
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/107—Static hand or arm
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- User Interface Of Digital Computer (AREA)
- Image Analysis (AREA)
Abstract
実施形態は、手または物体追跡および形状認識を実行する視覚系インターフェースを含む。この視覚系インターフェースは、センサからデータを受信し、このデータは、センサによって検出された物体に対応する。このインターフェースは、データの各フレームから画像を生成し、これらの画像は多数の解像度を表す。このインターフェースは、画像におけるブロブを検出し、これらのブロブを物体のトラックと関連付けることによって、物体を追跡する。このインターフェースは、各ブロブを、多数の物体形状の内の1つに対応するものとして分類することによって物体のポーズを検出する。このインターフェースは、ポーズおよびトラックに応答して、ジェスチャ・インターフェースを制御する。【選択図】 図1B
Description
関連出願
本出願は、2012年5月4日に出願した米国特許出願第61/643,124号の優先権を主張する。
本出願は、2012年5月4日に出願した米国特許出願第61/643,124号の優先権を主張する。
本出願は、2012年6月4日に出願した米国特許出願第61/655,423号の優先権を主張する。
本願は、2012年10月8日に出願した米国特許出願第61/711,152号の一部継続出願である。
本願は、2012年10月26日に出願した米国特許出願第61/719,109号の一部継続出願である。
本願は、2012年11月2日に出願した米国特許出願第61/722,007号の一部継続出願である。
本願は、2012年11月2日に出願した米国特許出願第61/725,449号の一部継続出願である。
本願は、2013年3月15日に出願した米国特許出願第61/787,792号の一部継続出願である。
本願は、2013年3月14日に出願した米国特許出願第61/785,053号の一部継続出願である。
本願は、2013年3月15日に出願した米国特許出願第61/787,650号の一部継続出願である。
本願は、2012年12月31日に出願した米国特許出願第61/747,940号の一部継続出願である。
本願は、米国特許出願第12/572,689号、第12/572,698号、第13/850,837号、第12/417,252号、第12/487,623号、第12/553,845号、第12/553,902号、第12/553,929号、第12/557,464号、第12/579,340号、第13/759,472号、第12/579,372号、第12/773,605号、第12/773,667号、第12/789,129号、第12/789,262号、第12/789,302号、第13/430,509号、第13/430,626号、第13/532,527号、第13/532,605号、および第13/532,628号の一部継続出願である。
発明の分野
本明細書において説明する実施形態は、一般に、処理システムに関し、更に特定すれば、手追跡および形状認識処理システムに関する。
発明の分野
本明細書において説明する実施形態は、一般に、処理システムに関し、更に特定すれば、手追跡および形状認識処理システムに関する。
視覚系インターフェース(vision-based interface)では、カーソル制御、3Dナビゲーション、動的ジェスチャの認識、ならびに一貫性のあるフォーカスおよびユーザ識別というようなユーザ対話処理をサポートするために、手追跡(hand tracking)が使用されることが多い。
乱雑な視覚的にノイズが多い場面におけるロバストな追跡のために多くの精巧なアルゴリズムが開発されているが、長期間追跡および追跡初期化のための手検出は、困難な作業であり続けている。
引用による包含
本明細書において述べる各特許、特許出願、および/または刊行物は、本願において引用することにより、個々の特許、特許出願、および/または刊行物の各々が具体的にそして個々に、引用することにより本願に含まれることを示した場合と同程度にその全体が本願にも含まれるものとする。
引用による包含
本明細書において述べる各特許、特許出願、および/または刊行物は、本願において引用することにより、個々の特許、特許出願、および/または刊行物の各々が具体的にそして個々に、引用することにより本願に含まれることを示した場合と同程度にその全体が本願にも含まれるものとする。
本明細書において説明する実施形態は、広い1組の手形状を自動的に認識し、広範囲のユーザにわたってジェスチャを追跡および認識するときに高い正解率(high accuracy rates)を維持するジェスチャ・インターフェースを提供する。実施形態は、センサから受信されたデータを使用して、リアル・タイムの手検出および追跡を行う。本明細書において説明する手追跡および形状認識ジェスチャ・インターフェースは、空間動作環境(SOE)キオスク(「キオスク」または「SOEキオスク」とも呼ぶ)を可能にするか、またはその1コンポーネントであり、空間動作環境(SOE)およびそのジェスチャ・インターフェースは、信頼性があり、マーカレス・手追跡システム内において動作する。このSOEとマーカレス・ジェスチャ認識との組み合わせは、手形状の追跡および分類における新規性、ならびにSOEアプリケーションの設計、実行、および権限(purview)における進展(development)を組み込んだ機能性を提供する。
本明細書において引用した関連出願は、ジェスチャ・ベース制御のためのシステムおよび方法の説明を含み、実施形態には、マーカレス・ジェスチャ認識を提供するものもあり、更に他の実施形態では、1つまたは複数の手袋の形態としたユーザの手をある種の指標によって識別するものもある。SOEキオスク・システムは、マーカレス設定(markerless setting)を設け、この設定では、一例として、グローブレスで指標を使用しないシステム(gloveless, indicia-free system)においてジェスチャが追跡および検出され、普通でない指検出およびレイテンシを与える。SOEシステムは、少なくとも、ジェスチャ入力/出力、ネットワーク・ベースのデータ表現、移行(transit)、および相互交換、ならびに空間的に適合された表示メッシュを含む。見た目には(in scope)、SOEは、完全なアプリケーションおよび開発プラットフォームであるので、オペレーティング・システムに類似する。しかし、これは、従前の計算システムを超えて広がる、設計および機能を規定する展望(perspective) を想定する。
豊富な能力は、ジェスチャ・インターフェースを含み、ユーザがシステムと対話処理し、このシステムが手のポーズ、ジェスチャ、および動きを追跡し解釈する。
本明細書の説明および関連出願において詳しく記載されるように、SOEは実世界幾何属性(geometry)を規定して、このようなインターフェースおよび対話処理を可能にする。関連出願の全ては、引用したことによって本願に含まれるものとする。例えば、SOEは、空間的に一致する表示メッシュ(spatially conformed display mesh)を採用し、この表示メッシュは、「実世界」の広がりの中に、システムの視覚的、聴覚的、および触覚的表示が存在するように、物理空間および仮想空間を整列させる。その機能のこのエリア全体は、三次元幾何属性に関してSOEによって実現される。画素は、モニタ上の解像度に加えて、世界における位置を有する。何故なら、二次元モニタ自体がサイズおよび方位を有するからである。この方式では、実世界座標がプロパティを注釈する(annotate)。この記述的能力は、全てのSOE関与物(participant)をカバーする。例えば、ワンド(wand)および移動体ユニットのようなデバイスは、多数の実現される入力エレメントの1つとなることができる。
この空間の信頼できる観念がSOEに浸透する(pervade)。あらゆるレベルにおいて、これはその座標表記(coordinate notation)へのアクセスを与える。物体(物理的または仮想的の如何を問わない)の位置は幾何属性に関して表現できるので、物体(物理的または仮想的の如何を問わない)間の空間的関係を幾何属性に関して表現することができる。(この場合も、あらゆる種類の入力デバイスをこの関係のコンポーネントとして含ませることができる。)関連出願および本明細書における説明において記されるように、ユーザが画面上の物体を指し示すと、SOEは交点計算を解釈する。画面の物体は、ユーザの動作に応答して、反応する。ユーザがこの因果関係を知覚して応答すると、古いモードのコンピュータ対話処理に取って代わる。SOE内部では、グラフィクスがユーザと同じ室内にあることを理解して、ユーザは行動する。その結果、直接的な空間操作が得られる。この動的インターフェースでは、入力は古い方法の制約を超えて広がる。SOEは、三次元空間の全ボリュームを開放し、多様な入力エレメントを受け入れる。
この再着想された(reconceived)一層豊富な計算空間に、SOEは再結合(recombinant)ネットワーキング、相互作用可能性に対する新たな手法を導入する。関連出願および本明細書における説明は、SOEが、大規模なマルチプロセス相互動作を支える(sustain)プログラミング環境であると説明する。SOEは、「プラズマ」を含む。これは、少なくとも多数のプロセス間におけるデータの効率的な交換、柔軟なデータ「タイピング」(typing)、および構造を構成するので、広範囲で多様な種類のデータおよびその使用がサポートされ、全て実質的に同様なAPIによって駆動される、データ交換のための柔軟なメカニズム(例えば、ローカル・メモリ、ディスク、ネットワーク等)、異なるプログラム言語で書かれたプロセス間におけるデータ交換、ならびにデータ・キャッシングおよび集計状態の自動保守、その他数多くがサポートされるアーキテクチャである。技術スタック(technology stack)やオペレーティング・システムには関係なく、SOEは、旧来の表現を含む、外部データおよび動作を利用する。これは、iPhoneのような移動体ユニットを含むがこれらに限定されないデバイスからの比較的低レベル品質の空間データを統合することを含む。このようなデバイスは、「エッジ」ユニットとも呼ばれる。
先に述べたように、本明細書において説明するSOEキオスクは、自己完結型マーカレス設定内部においてSOEのロバストな手法を提供する。ユーザは、手袋、マーカ、またはこのような指標を全く使用せずに、SOEを「自由な」エージェントとして使用し(engage)、更に画面、カメラ、または発光体(emitter)の設置というような、空間の変更も必要としない。唯一必要なことは、手形状および他の入力エレメントを検出し、追跡し これらに応答するシステムに近接することである。本明細書において詳細に説明するように、本システムは、マーカレス追跡システムと組み合わせられた代表的センサを含み、予め指定された範囲内においてポーズの認識を行う(例えば、1メートルと3メートルの間等)。SOEキオスク・システムは、したがって、可搬性および設置に柔軟性を与えるが、実施形態はそのように限定されるのではない。
図1Aは、SOEキオスク・システムのブロック図である。一実施形態の下において、SOEキオスク・システムは、手追跡および形状認識を使用する視覚系インターフェースを設けるジェスチャ・インターフェース・コンポーネントまたはアプリケーションをホストするプロセッサ、ディスプレイ、およびセンサを含む。図1Bは、一実施形態の下における、SOEキオスクと操作者との間の関係を示す。一般的な用語「キオスク」は、本明細書において説明するマーカレス追跡および認識プロセスを使用する種々の設定および構成を包含する。これらの異なる設置は、例えば、センサおよび少なくとも1つのディスプレイに結合されたプロセッサ、ならびにこのプロセッサ上で実行して視覚パイプラインを統合するSOEを提供する追跡および認識コンポーネントまたはアプリケーションを含む。一実施形態のSOEキオスクは、ネットワーク能力を含み、ルータのような結合または接続されたデバイスによって提供されても、またはワイヤレスのようなアクセスによって使用されてもよい。
図2は、一実施形態の下において、手または物体追跡および形状認識20を実行するジェスチャまたは視覚系インターフェースの動作の流れ図である。この視覚系インターフェースは、センサ21からデータを受信し、このデータは、センサによって検知された物体に対応する。このインターフェースは、データ22の各フレームから画像を生成し、これらの画像は多数の解像度を表す。このインターフェースは、画像におけるブロブを検出し、ブロブを物体23の追跡と関連付けることによって、物体を追跡する。ブロブとは、あるプロパティ(例えば、明るさ、色、深度等)が一定であるかまたは既定の範囲の値以内で変化するディジタル画像の領域であり、ブロブにおける全ての点が、ある意味で、互いに同様であると考えることができる。このインターフェースは、各ブロブを多数の物体形状24の内の1つに対応するとして分類することによって、物体のポーズを検出する。このインターフェースは、ポーズおよび追跡25に応答して、ジェスチャ・インターフェースを制御する。
図3は、一実施形態の下において手または物体追跡および形状認識30を実行するための流れ図である。物体追跡および形状認識は、例えば、視覚系ジェスチャ・インターフェースにおいて使用されるが、そのように限定されるのではない。追跡および認識は、身体31の四肢のセンサ・データを受信することを含む。追跡および認識は、センサ・データから、第1解像度32を有する第1画像を生成することを含む。追跡および認識は、第1画像33においてブロブを検出することを含む。追跡および認識は、ブロブを四肢34の追跡と関連付けることを含む。追跡および認識は、センサ・データから、第2解像度35を有する第2画像を生成することを含む。追跡および認識は、第2画像を使用して、ブロブの各々を多数の手形状36の内の1つとして分類することを含む。
SOEキオスク・ハードウェア構成の実施形態例が以下に続くが、実施形態はこれらの構成例に限定されるのではない。一実施形態のSOEキオスクは、 Asus Xtion Proを有する27インチ・バージョンのApple iMacであり、iMacの上面にセンサが取り付けられる。Tenbaのケースは、iMac、センサ、ならびにキーボード、マウス、電力ケーブル、およびテーブル・タップ(power strip)を含むアクセサリを含む。
他の一実施形態例のSOEキオスクは、30インチ画面の比較的小さな形状係数のパーソナル・コンピュータ(PC)を含む携帯用ミニキオスクである。画面およびスタンドがプロセッサから離れているので、この設定は、横向き表示および縦向き表示の双方をサポートする。
追加の一実施形態例のSOEキオスクは、DVIまたはHDMI(登録商標)入力を受け入れる50インチの1920×1080テレビジョンまたはモニタであるディスプレイと、センサ(例えば、Asus Xtion Pro Live、Asus Xtion Pro、Microsoft Kinect、Windows(登録商標) 用Microsoft Kinect、Panasonic D-Imager、SoftKinetic DS311, Tyzx G3 EVS等)、ならびにクアッドコアCPUおよび NVIDIA NVS 420 GPUを実行する比較的小さな形状係数のPCを含むコンピュータまたはプロセスを含む。
前述のように、SOEキオスクの実施形態は、センサとしてMicrosoft Kinectを含むが、実施形態はそのように限定されるのではない。一実施形態のKinectセンサは、概略的に、カメラ、赤外線(IR)発光体、マイクロフォン、および加速度計を含む。更に具体的には、Kinectは、3チャネル・データを1280×960の解像度で格納するカラーVGAカメラ、またはRGBカメラを含む。また、IR発光体およびIR深度センサも含まれる。発光体は、赤外線ビームを放出し、深度センサは、センサから反射されるIRビームを読み取る。反射ビームは、物体とセンサとの間の距離を測定する深度情報に変換され、深度画像の取り込みを可能にする。
また、Kinectは、音を取り込むための4つのマイクロフォンを内蔵するマルチアレイ・マイクロフォンも含む。4つのマイクロフォンがあるので、オーディオを記録するだけでなく、音源の位置および音波(audio wave)の方向を発見することも可能である。更に、このセンサには、2G範囲用に構成された3軸加速度計が含まれ、ここでGは重力加速度を表す。加速度計は、Kinectの現在の方位を判定するために使用することができる。
低コストの深度カメラは、ロバストで遍在的な視覚系インターフェースの新たな好機を創造する。多くの研究は身体全体のポーズ指定および全体的な身体の動きの解釈を目標とするが、この作業(work)は、骨格を使用しない手の検出、追跡、および形状分類を調査する。本明細書において説明する実施形態は、広い1組の手形状を認識し、広い範囲のユーザにわたって高い正解率を維持する方法を開発することによって、豊富で信頼性のあるジェスチャ・インターフェースを提供する。
実施形態は、一例として、Microsoft Kinectからの深度データを使用して、リアル・タイムでの手の検出および追跡を行うが、このように限定されるのではない。16人のユーザから収集された8つの手の形状に対して、定量的な形状認識結果が提示され、信頼性および全体的なユーザ体験を高めるのに役立つ物理的構成およびインターフェース設計問題が提示される。
手追跡、ジェスチャ認識、および視覚系インターフェースは、コンピュータ視覚団体(computer vision community)内において長い歴史を有する(例えば、1980年に公開されたプット−ザット−ゼア・システム(put-that-there system)(例えば、 R. A. Bolt. Put-that-there: Voice and gesture at the graphics interface(プット−ザット−ゼア:グラフィクス・インターフェースにおける音声およびジェスチャ)、Conference on Computer Graphics and Interactive Techniques, 1980(「ボルト」)))。興味を持った読者には、更に広い分野をカバーする多くの研究論文の1つを勧める(例えば、A. Erol, G. Bebis, M. Nicolescu, R. Boyle, and X. Twomblyの Vision-based hand pose estimation: A review. Computer Vision and Image Understanding(視覚に基づく手のポーズ推定:考察、コンピュータ視覚および画像理解)、108:52-73, 2007 (「Erol et al.」); S. Mitra and T. Acharya. Gesture recognition。ある調査、IEEE Transactions on Systems, Man and Cybernetics -Part C, 37(3):311-324, 2007 (「Mitra et al.」)。 X. Zabulis, H. Baltzakis, and A. Argyros. Vision-based hand gesture recognition for human-computer interaction(人間−コンピュータ対話処理用視覚系手ジェスチャ認識)、The Universal Access Handbook, pages 34.1-34.30, 2009 (「Zabulis et al.」)。T. B. Moeslund and E. Granum、A survey of computer vision-based human motion capture(コンピュータ視覚に基づく人間モーション・キャプチャ)、Computer Vision and Image Understanding, 81 :231-268, 2001 (「Moeslund-1 et al.」)。T. B. Moeslund, A. Hilton, and V. Kruger、A survey of advances in vision-based human motion capture and analysis(視覚に基づく人間モーション・キャプチャおよび分析における発展の調査) Computer Vision and Image Understanding, 104:90-126, 2006 (「Moeslund-2 et al.」))。
Plagemann et al.の功績は、頭、手、および脚のような身体部分を深度画像から検出し分類する方法を紹介する(例えば、C. Plagemann, V. Ganapathi, D. Koller, and S. Thrun、 Real-time identification and localization of body parts from depth images(深度画像からの身体部分のリアル・タイム識別および定位)IEEE International Conference on Robotics and Automation (ICRA), 2010 (「Plagemann et al.」))。これらは、これらの身体部分を測地線極値と同等視し、深度画像において接続されたメッシュを突き止め、次いで直前の1組のポイントまでの即値線距離を最大化するメッシュ・ポイントを繰り返し発見することによって検出される。このプロセスは、メッシュの重心を使用するか、または2つの最も遠いポイントを突き止めることのいずれかによって、シードされる(seed)。本明細書において紹介する手法は、概念的には同様であるが、乱雑(clutter)を無視するために、予め指定された境界ボックスを必要としない。更に、Plagemann et al.は、極値を有効な頭、手、または脚と識別するために、学習されたクラシファイアを使用したが、本方法は、解像度を高めた深度センサを利用し、極値を様々な異なる手形状の内の1つとして認識する。
Shwarz et al.は、追加の身体部分を検出し、全身体の骨格をメッシュに当てはめることによって、Plagemann et al.の業績を拡大する(例えば、L. A. Schwarz, A. Mkhitaryan, D. Mateus, and N. Navab、Estimating human 3d pose from time-of-flight images based on geodesic distances and optical flow(測地線距離および光流に基づく飛行時間画像からの人間3Dポーズの推定)、 Automatic Face and Gesture Recognition, pages 700-706, 201 1 (「Shwarz et al.」))。また、これらは、自己隠蔽を補償するのに役立てるために、光流(optical flow)情報を組み込む。しかしながら、本願において紹介する実施形態に対する関係は、Shwarz et al.が測地線距離を計算するために全体的情報(global information)を利用するが、混乱場面において信頼性が低下する虞があり、これらは指の外形(finger configuration)を検出しようとも、全体的な手形状を認識しようともしないことから、Plagemann et al.に対するものと同様である。
Shotton et al.は、局在的近隣においてクエリ・ポイント(query point)と他のものとの間の距離について訓練されたランダム化判断フォーレスト(例えば、L. Breiman、Random forests(ランダム・フォーレスト)、Machine Learning, 45(l):5-32, 2001 (「Breiman」)を使用して深度ポイントを異なる身体部分として直接分類する方法を開発した(例えば、J. Shotton, A. Fitzgibbon, M. Cook, T. Sharp, M. Finocchio, R. Moore, A. Kipman, and A. Blake、Real-time human pose recognition in parts from a single depth image(1つの深度画像から部分的な人間ポーズのリアル・タイム認識)、 IEEE Conf on Computer Vision and Pattern Recognition, 2011 (「Shotton et al.」))。これらの目標は、より高いレベルの情報をリアル・タイム骨格追跡システムに提供することであり、したがってこれらは31通りの異なる身体部分を認識する。これは、単なる頭、手、および脚を遙かに超える。また、本明細書において説明する手法は、ランダム化判断フォーレストも使用する。何故なら、それらの分類オーバーヘッドが低く、そのモデルがマルチクラス問題を扱う本来的な能力を有するからである。本明細書において説明する実施形態は、様々な異なる手形状を認識するために、フォーレストを訓練するが、手以外の身体部分を検出しない。
本明細書において特筆するような視覚系インターフェースでは、カーソル制御、3Dナビゲーション、動的ジェスチャの認識、ならびに一貫したフォーカスおよびユーザ識別というようなユーザ対話処理をサポートするために、手追跡が使用されることが多い。多くの精巧なアルゴリズムが、混乱した視覚的にノイズが多い場面におけるロバストな追跡のために開発されている(例えば、J. Deutscher, A. Blake, and I. Reid、Articulated body motion capture by annealed particle filtering(アニール粒子フィルタリング(annealed particle filtering)による明瞭な身体モーション・キャプチャ)、Computer Vision and Pattern Recognition, pages 126-133, 2000 (「Deutscher et al.」)、A. Argyros and M. Lourakis、Vision-based interpretation of hand gestures for remote control of a computer mouse(コンピュータ・マウスの遠隔制御のための手ジェスチャの視覚に基づく解釈)、Computer Vision in HCI, pages 40-51, 2006. 1 (「Argyros et al.」))が、長期間の追跡および追跡初期化のための手検出は、困難な作業であり続けている。本明細書において説明する実施形態は、信頼性の高い、マーカレス手追跡システムを構築する。このシステムは、手形状、ポーズ、および動きに基づくジェスチャ・インターフェースの作成をサポートする。このようなインターフェースは、低レイテンシの手追跡および高精度の形状分類を必要とするが、併せて、適時なフィードバックおよびシームレスなユーザ体験にも対処する。
本明細書において説明する実施形態は、局所的セグメント化および手検出のために、1つのカメラからの深度情報を利用する。高精度の画素毎の深度データは、視覚的複雑さに大きく独立した方法で、前景/背景セグメント化の問題を著しく低減する。したがって、実施形態は、局所的なテキスチャおよび色というような二次的なプロパティではなく、人間の身体の3D構造に基づいて、身体部分検出器および追跡システムを構築する。二次的プロパティは、通例、異なるユーザおよび環境にわたって遙かに高い度合いのばらつきを呈する(Shotton et al., Plagemann et al.参照)。
実施形態は、視覚系ユーザ・インターフェースのための基礎として、マーカレス手追跡および手形状認識を行う。したがって、ユーザの身体全体を識別し追跡することは全く必要とせず、実際に、身体全体(または上半身全体であっても)が見えることを想定しない。代わりに、実施形態は、ユーザが着座しており机がユーザの腕の一部を隠すので、手が身体の残りに繋がっているのが観察できないというような、視認性が限定される場合のみに対処する状況を思い描く(envision)。このようなシナリオは、実世界環境では非常に自然に現れ、ユーザが彼らの肘を彼らの椅子の肘掛けに載せる場合もあり、または開いているラップトップというような机上の混乱によりカメラの視野の下部分が遮られる場合もある。
図4は、一実施形態の下における手追跡および形状認識において使用される8通りの手形状を示す。左または右端にあるポーズ名は、その手に特定的であり、一方「開」および「閉」は、親指が開いているか、または掌側に折り曲げられているかを指す。頭文字語「ofp」は、「ワン・フィンガ・ポイント」(one finger point)を表し、外側に延びた人差し指に対応する。
一実施形態の初期の1組の8通りのポーズは、比較的強い視覚的相違を維持しつつ、有用な対話処理の範囲を規定する。例えば、開いた手と拳の組み合わせは、カーソルを動かし、次いである物体を掴むまたは選択するために使用するのでもよい。同様に、掌を開いたポーズは、アクティブ化しもっと多くの情報を露出させ(空間でグラフィック表現を逆に「押す」ことによって)、次いで横方向の手の動きによってデータ全体をスクロールするために使用することができる。
他の1組の手形状は、もっと広いが、指の外形について遙かに精度高く完全な情報を必要とする。例えば、アメリカ手話法(ASL)指話伝達アルファベットは、26文字および0から9までの数字をカバーする、遙かに豊富な1組の手のポーズを含む。これらの手形状は、微妙な指の合図を利用するが、ユーザおよび視覚システム双方にとって、特に視覚システムにとって、区別することが困難である可能性がある。
一実施形態のジェスチャ集合は視覚的に別個であるように構成されるという事実にも拘わらず、各形状クラス内に、広い範囲のばらつきが見られた。図5は、同じ手形状カテゴリに対するユーザ間におけるばらつきを示すサンプル画像である。
もっと精度が高く解像度が高い深度センサがあれば、クラス内の相違の一部は低減されるであろうが、主要な原因は、人の手の間にある本質的なばらつき、そして1つ視点だけを使用することによって生ずる遠近感(perspective)および閉塞効果である。物理的な手のばらつきは、全体的なサイズ、指の幅、指の長さと掌のサイズの比率、関節の範囲、柔軟性、および指の制御において観察された。例えば、掌を開いたポーズでは、一部のユーザは自然に彼らの親指を広げるので、かれらの掌および人差し指に対してほぼ直角になったが、他のユーザは、彼らの親指を45度を超えて動かそうとしたときに、つらさを訴えた。同様に、ばらつきは、1回の対話処理の間にも見られた。例えば、ユーザが彼らの指同士をきつく結んだところから掌を開くジェスチャを開始して、次いでこのジェスチャが進むに連れて彼らの指を弛緩させると、開いた掌と開いた手との間の区別が曖昧になるかもしれない。
本明細書における実施形態の中心的な寄与は、手形状および運動(mechanics)における広いばらつきにも拘わらず、異なるユーザにわたって信頼性高く動作するリアル・タイム視覚インターフェースの設計および実施にある。一実施形態の手法は、効率的で、骨格を使用しない手検出および追跡アルゴリズムに基づく。このアルゴリズムは、フレーム毎の局在極点検出を高速手形状分類と組み合わせて使用し、本明細書における方法の定量的評価は、以前に見たことがないユーザについて97%よりも高い手形状認識率を与える。
本明細書における実施形態の検出および追跡は、ユーザの身体質量(body mass)の中心からの測地線距離に関して、手が極点に対応するという考えに基づく。この仮定は、例えば、ユーザが両手を腰に当てて立っているときには破られるが、このような身体のポーズは、インターフェースとの有効な対話処理を妨げ、したがってこれらの低レベルの偽陰性は、高レベルの偽陰性には対応しない。実施形態は、処理ボリュームを限定するための予め指定された境界ボックスを必要とすることなく、混乱に対してロバストであるようにするため、これらの実施形態の手法は、大域的な測地線距離を計算することを避け、それよりも簡素な局所的手法をとる。具体的には、極点の候補は、深度画像において局所的な指向性ピークを直接検出し、次いで空間的に接続された成分を潜在的な手として抽出することによって発見される。
実施形態のコア検出および追跡は、640×480の入力解像度を80×60にサブサンプリングした後に、深度フレーム毎に実行される。しかしながら、手形状分析は、本明細書において説明するように、それよりも高い解像度で実行される。ダウンサンプリングされた深度画像は、失われた深度データに対応するゼロ値を無視し、エッジを保存するロバストな手法を使用して計算される。深度読み取り値は本質的に場面における質量(mass)を表すので、異種の深度値の平均を取ることは避けるのが望ましい。さもないと、中間深度において「幻覚」の質量を生ずるであろう。
局所ピークは、80×60深度画像において、4つの直行方向(上、下、左、および右)のいずれかにおいて、それらの空間的隣接物よりも遠くまで延びる画素を求めることによって検出される。この経験則は、多くの偽陽性を犠牲にして、低い偽陰性率を与える。言い換えると、実施形態は実際の手を失いたくないが、多数の検出または他の物体を含んでもよい。何故なら、これらは後の段階で排除されるからである。
各ピーク画素は、最大の手のサイズによって結ばれた接続成分(「ブロブ」)のシード(seed)になる。最大の手のサイズは、300mmに、深度に依存する緩慢値(slack value)を加算したものが選ばれる。この緩慢値は予想深度誤差を表す。Microsoft Kinectでは、深度誤差は、2つの隣接する生のセンサ読み取り値によって表される物理距離に対応する(図7参照。図7は、隣接する生のセンサ読み取り値間のメートル単位の距離に基づく深度の関数として、推定最少深度曖昧さのプロットを示す)。言い換えると、緩慢値は、2000mmの距離における10mmの深度の差を求めることは、その深度における代表的な精度が25mmでしかないので、正当ではないという事実を考慮する。
一実施形態のアルゴリズムは、ブロブの境界から最も離れた画素を発見することによって、ブロブ毎に潜在的な手の中心を推定する。これは、距離変換を使用すると、効率的に計算することができる。次いで、更に、200mmの掌の半径を使用して、ブロブを間引き、前腕および他の身体部分を除外しつつ手の画素を含ませることを目標とする。最後に、同様の深度を有するブロブに隣接する画素として定められるブロブを「拡張する」(extend)深度画素の外境界を検索することによって、低レベル処理は終了する。一実施形態のアルゴリズムは、拡張画素を分析して、境界長に対して相対的に小さな領域を探し、非常に大きな拡張領域または接続されていない拡張領域を有するブロブを間引く。拡張領域は、有効な手のブロブにおいて手首に対応すると想定され、Plagemann et al.が測地線後戻りポイントを使用するのと全く同じように、方位を推定するために使用される( Plagemann et al.を参照のこと)。
次いで、ブロブは追跡モジュールに送られる。追跡モジュールは、現在のフレームにおけるブロブを既存のトラック(tracks)と関連付ける。各ブロブ/軌道対は、ブロブの重心とトラックの現在の速度によって制限される軌道との間の最少距離にしたがって、採点される。加えて、低レベルの曖昧さのために重複するブロブがあるかもしれず、したがって、追跡モジュールは暗黙の相互除外(implied mutual exclusion)を実施する。ブロブは、一致の全てにわたる総スコアを最小化することによって、全域的に最適な方法で、トラックと関連付けられる。過度に貧弱な一致を防止するために、250mmのスコア閾値が使用されるので、一部のブロブおよび/またはトラックは不一致になるものもあり得る。
主要なトラック拡張の後、残っている不一致ブロブがトラックと比較され、これらが空間的近傍内にある場合、二次ブロブとして追加される。このように、多数のブロブを1つのトラックと関連付けることができる。これは、1つの手が場合によっては様々な別個の成分として観察されることもあるからである。観察を分解する(disjoint)ことに至るシナリオは、ユーザが大きな輝く指輪をはめており、投射された構造化光のKinectの分析を妨げるときである。これらの場合、指輪がはまっている指を視覚的に手から分離させることができる。何故なら、指輪自体をカバーする深度データがないからである。指がないと、手の形状の解釈が完全に代わる可能性があるので、指ブロブをトラックと関連付けるには極めて重要になる。
次いで、追跡モジュールは、いずれかの残りのブロブを使用して、新たなトラックをシードし、対応する物体の視覚的証拠が全くないまま数フレーム進んだ古いトラックを間引く。
手形状認識に関して、ブロブ抽出および追跡に使用される80×60深度画像は、場合によっては、形状分析には十分な情報を提供しない。代わりに、手ポーズ認識は、320×240深度画像の、Quarter Video Graphics Array (QVGA) 表示解像度を利用する。QVGAモードは、画素単位で画像のサイズまたは解像度を記述する。一実施形態は、どのQVGA画素が各トラックに対応するかについて決定を行う。これらの画素は、その対応する80×60画素から小さな深度距離以内にある各QVGA画素において、接続成分検索をシードすることによって識別される。また、一実施形態のアルゴリズムは、QVGA画素を使用して手の中心を再度推定して、カーソル制御および他の連続的な位置に基づく対話処理のために、一層感度が高い3D位置推定値を供給する。
一実施形態は、各ブロブを8つのモデル化された手形状の内1つとして分類するために、ランダム化判断フォーレスト(Breimanを参照のこと)を使用する。各フォーレストは、判断ツリーの集合体(ensemble)であり、最終的な分類(またはクラス全体における分布)は、これらのツリー全てにわたる結果を併合することによって計算される。1つの判断ツリーはその訓練データを容易に重ね合わせることができるので、これらのツリーは、分散を増大させ複合誤差を減少させるためにランダム化される。
ランダム化は、次の2つの形態を取る。(1)訓練データ集合全体からブートストラップ・サンプルに対して各ツリーを学習させる。(2)ツリーにおけるノードは、ランダムに選択された少数の特徴に対して最適化する。ランダム化判断フォーレストは、リアル・タイム手形状分類に有用な様々な興味を引くプロパティを有する。即ち、これらは実行時に非常に高速であり、自動的に特徴選択を実行し、本質的にマルチクラス分類をサポートし、容易に並列化することができる。
一実施形態の方法は、3つの異なる種類の画像特徴を利用して、セグメント化された手のパッチを特徴付ける。集合Aは、ブロブ輪郭によってカバーされる画素のパーセンテージ、検出された指先の数、ブロブの重心から指先までの平均角度、および指先自体の平均角度というような、全体的な画像統計を含む。また、これは7つの独立Flusser-Sukモメント全ても含む(例えば、J. Flusser and T. Suk、Rotation moment invariants for recognition of symmetric objects(対称形物体の認識のための回転モーメント不変関係)、IEEE Transactions on Image Processing, 15:3784-3790, 2006 (「Flusser et al」))。
指先は、高い正の湾曲の領域を検索することによって、各ブロブの輪郭から検出される。湾曲は、しかるべきラップアラウンド(wrap-around)でサンプリングされた輪郭点Ciと、そのk個の隣接Ci−kおよびCi+kによって形成されたベクトル間の角度を見ることによって推定される。一実施形態のアルゴリズムは、2つのスケールにおける高い湾曲を使用し、ブロブの深度に依存してkの値を変調し、第1スケールに対してkが大まかに30mmになり、第2スケールに対してクエリ・ポイントから約50mmになるようにする。
特徴集合Bは、ブロブの境界ボックスをその全サイズで正規化したものにおいて可能な各矩形によってカバーされる画素の数で構成される。スケール不変(scale-invariance)を確保するために、各ブロブ画像は5×5格子にサブサンプリングされ、これが意味するのは、集合Bには225個の矩形があり、したがって225個の記述子があるということである((a)4つの矩形を示す集合B、および(b)格子セルの1対間における平均深度の差を示す集合Cを表す図8を参照のこと)。
特徴集合Cは、集合Bと同じ格子を使用するが、異なる矩形内における被覆範囲(coverage)を見る代わりに、個々のセルの対毎の平均深度間の差を含む。5×5格子上には25個のセルがあるので、集合Cには300個の記述子がある。特徴集合Dは、集合A、B、およびCからの特徴の全てを組み合わせ、合計536個の特徴が得られる。
本明細書において説明するように、ブロブ抽出アルゴリズムは、拡張画素を求めることによって、各ブロブの手首位置を推定しようとする。このような領域が発見されると、この拡張領域の重心をブロブの重心に接続するベクトルに基づいて方位を推定するために使用される。QVGA画像パッチをこの角度の逆数(inverse)だけ回転させることによって、多くのブロブは、いずれの記述子が計算される前でも、規準的方位(canonical orientation)を有するように変形することができる。このプロセスは、あるレベルの回転不変性を与えることによって、分類精度を高める。しかしながら、全てのブロブについて方位を推定することはできない。例えば、カメラに腕が直接向けられた場合、ブロブは拡張画素を全く有さない。これらの場合、記述子は、変形されないブロブ画像に対して計算される。
本明細書における実施形態を、リアル・タイム手追跡および形状認識について評価するために、16人の被験者(subject)からサンプル・ビデオが記録された(図6A、図6B、および図6C(纏めて図6)は、擬似カラー深度画像を、追跡結果601、追跡履歴602,および信頼度値を伴う認識結果(テキスト・レベル)と共に示す3つのサンプル・フレームを示す)。これらのビデオは、640×480の解像度で30Hzにおいて、Microsoft Kinectを使用して取り込まれた。Microsoft Kinectは、構造化光に基づく手法を使用して、画素毎の深度を推定する。各被験者は、図4に示した8つの手形状に対応する8つのビデオ・セグメントに寄与した。本明細書において説明するセグメント化および追跡アルゴリズムは、これらのビデオに対して実行され、後処理(post-process)を変更して、最も近いQVGAブロブ画像をディスクに保存した。つまり、訓練例は、オンライン・バージョンにおいて使用された同じアルゴリズムを使用して、これらのビデオから自動的に抽出された。唯一の手作業の介入は、少数の追跡誤差の除去であった。こうしなければ、訓練集合が汚染されたであろう。例えば、数個のビデオの先頭において、本システムは、ユーザの手を自動追跡する前に、ユーザの頭に対応するブロブを保存した。
手のポーズの内いくつかは、左手または右手のいずれかに特定的であり(例えば、掌が左向きに開く)、一方他のポーズは双方の手に対して非常に似通っている(例えば、Vサイン)。第2集合におけるポーズは、訓練データに2回含まれ、全く変形がない状態で1回、そして垂直軸を中心とした反射の後に1回である。ライブ・インタラクティブ・システムによる定性的実験によって、反射された例を含めると、認識性能に著しい改善に繋がることが発見された。
16人の被験者は、25才から40才までで身長が160cmから188cmまでの4人の女性および12人の男性を含んだ。反射バージョンを含むと、各人物は8通りの手のポーズにわたって、1,898および9,625の間の例に寄与し、合計で93,336個の標識付きの例が得られた。初期評価は、標準的なクロス検証を使用して、総合性能(generalization performance)を推定した。非常に低い誤差率が見出されたが、ライブ・システムを使用した新たなユーザが比較的貧弱な分類率に気付いた(saw)という体験は、 暗示された性能が信頼性高く予測するには至らなかった。
1つの解釈は、ランダム・パーティションが訓練集合および検査集合双方において各ユーザからのサンプルを含んでいたので、クロス検証が性能を過大評価していたということである。訓練例はビデオから抽出されたので、高度の時間相関があり、したがって検査パーティションは、総合性能を示さなかった。ユーザ間誤差(cross-user error)の有効な推定値によってもっと意味のある実験を行うために、1ユーザ抜き出し手法(leave-one-user-out approach)を代わりに使用するための切り替えが行われた。この評価方式の下では、モデルおよび特徴集合の各組み合わせが、15人の被験者からのデータに対して訓練され、結果的に得られたクラシファイア(classifier)を、見られなかった16番目の被験者について評価した。このプロセスは、繰り返す毎に異なる被験者からのデータを検査集合として使用して、16回繰り返した。
図9は、4つの特徴集合に対するランダム化判断フォーレスト(RF)およびサポート・ベクトル・マシン(SVM)クラシファイアについての手形状認識精度の比較を表す。ここで、特徴集合Aは全体的統計を使用し、特徴集合Bは異なる矩形において正規化占有率(occupancy rates)を使用し、特徴集合Cはポイント間の深度差を使用し、特徴集合Dは、集合A、B、およびCを組み合わせる。図9は、したがって、ランダム化判断フォーレスト(RF)およびサポート・ベクトル・マシン(SVM)モデルの双方に対する平均認識率を示す。SVMは、LIBSVMによって訓練され(例えば、C.C. Chang and C.J. Lin. LIBSVM: A library for support vector machines(サポート・ベクトル・マシンのためのライブラリ)、ACM Transactions on Intelligent Systems and Technology, 2:27: 1-27:27, 2011 (「Chang et al.」)、データの部分集合における小さな検索の結果に基づいて精度を最大化するように選択されたパラメータと共に、ラジアル基底関数カーネルを使用した。RFおよびSVMの双方は、本明細書において説明した4つの特徴集合によって検査された。
最良の結果は、特徴集合Dを使用したRFモデル(RF−D)によって達成された。この組み合わせによって、97.2%の平均ユーザ間正解率を、2.42の標準偏差で得られた。RF−Dの下における任意の被験者に対する最悪の性能は92.8%であり、6人の被験者は99%よりも高い正解率を見た。比較のために、SVMを使用した最良の性能は、特徴集合Bとによるものであり、95.6%の平均正解率、2.73の標準偏差、および89.0%の最悪事態が得られた。
図9に示すRF結果は、100本のツリーを有するフォーレストに基づく。各ツリーは、30の最大深度および間引きなしで学習された。各分割ノードにおいて、選択されたランダム特徴の数は、記述子の総数の二乗根に設定された。アンサンブル・クラシファイア(ensemble classifier)は、ランダム・ツリーの全てにわたって結果を併合することによって入力データを評価し、したがって、実行時間はツリーの本数に比例する。リアル・タイム・システムでは、特にレイテンシが問題になる場合、自然な質問は、フォーレストにおけるツリーの本数が減少するに連れて分類精度はどのように変化するかということである。図10は、ランダム化判断フォーレストにおいて異なる本数のツリーを使用した手形状認識精度の比較を示す。このグラフは、平均精度、および約95%の信頼度間隔(青い円、左側の軸)を示す±2σ線を、1つの例を分類するための平均時間(緑色の菱形、右側の軸)と共に示す。図10は、手形状分類問題について、認識精度は、30本のツリーに落ちるまでは安定であり、97.2%から96.9%に低下するだけであることを示す。20本のツリーでも、平均ユーザ間精度は、96.4%に低下するに過ぎないが、この点よりも低いと、性能は更に劇的に低下し始める。使用した検査機械上では、観察された平均分類速度は、100本のツリーでは例当たり93.3μ秒であったが、30本のツリーでは20.1に過ぎなかった。
正解率は高い程望ましいであろうが、一実施形態のインタラクティブ・システムを使用して作業したユーザの非公式な報告および観察の解釈は、97.2%の現在の正解率は、明確な(positive)ユーザ体験には十分であるということである。ほぼ3%の誤差率は、平均して、一実施形態のシステムは、大凡30フレーム毎にユーザのポーズを分類し損ねる可能性があることを意味するが、このような均一な分布は、実際には期待されない。何故なら、誤差は独立でありそうもないからである。誤差は凝集する(clump)だけでなく、これらの多くは、様々な重要な要因によって、実際の使用中に隠されることが考えられる。最初に、本ライブ・システムは、ランダムな短期間誤差を避けるために、時間的一貫性(temporal consistency)を使用することができる。十分なフィードバックがある場合、そして些細な行動変化だけが必要な場合、第2に、協働ユーザがシステムに適合する。そして第3に、混同し易い手のポーズの影響を最小限にするように、ユーザ・インターフェースを構成することができる。
インターフェースを適合させる格好の例が、掌を開いたポーズに基づくプッシュバック対話処理(pushback interaction)で生ずる。この対話処理の典型的な使用は、グラフィカル表現を更に画面内に押し戻す(push back)ことによって、ユーザが彼らの作業空間を一層多く見ることを可能にする。また、ユーザが、作業空間の異なるエリアにパンニングすること、または異なる物体(例えば、映画、画像、または商品)全体をスクロールすることができることもあり得る。スクロールは、比較的長い対話処理になるので、ユーザは彼らの指を弛緩させることが多いので、彼らの意図は変化しなくても、開いた掌(palm-open)が開いた手(open-hand)のように見え始める。一実施形態は、開いた手が他の状況では別個の解釈に繋がるのであっても、開いた手がプッシュバック(pushback)対話処理を混乱させるのを防止する単純な知覚微調整(tweak)を実装した。
本質的に、開いた掌だけがそれを開始することができるが、双方共対話処理を継続することを許される。更に、これらの間における移行ポーズに対応するために、分類信頼性が2つのポーズの間でプールされる。
また、インターフェースおよび作業空間に対する物理変化を伴う実験が行われた。例えば、深度カメラが主要画面の上の代わりに下に装着されたときに、ユーザ体験に顕著な改善が見られた。この差は、恐らく、ユーザが基本的な身体の運動(mechanics)および重力のために彼らの手を上げるよりは弛緩させて下げる傾向に由来するからである。カメラを底部に装着すると、手を多少曲げるかまたは下げることによって、手形状の映像がより良く得られるが、上部に装着したカメラからの映像は劣化する。同様に、大きな画面程それよりも遠くに立つユーザの自然な傾向を利用することができる。Kinectおよび多くの他の深度カメラは30〜80cmの範囲に最少検知距離を有するので、ユーザはできるだけ少ない明示的な備忘録および警告メッセージで、機能的距離(functional distance)を維持することを勧めることができる。一実施形態のインターフェースは、対話処理が検知平面またはカメラの視野のエッジに近づいたときに視覚的指示を与えるが、画面サイズのような暗黙の自然な合図の方が遙かに好ましい。
空間動作環境(SOE)
空間連続入力システムの実施形態について、本明細書では、空間動作環境(SOE)のコンテキストで説明する。一例として、図11は、一実施形態の下における、空間動作環境(SOE)のブロック図である。ユーザが、カメラのアレイ(例えば、1つ以上のカメラまたはセンサ104A〜104D)の視野150内に手101(または手101および102)を配置する。これらのカメラは、指ならびに手101および102の位置、方位、および移動を空間追跡データとして検出し、出力信号をプリプロセッサ105に生成する。プリプロセッサ105は、カメラ出力をジェスチャ信号に変換し、このジェスチャ信号をシステムのコンピュータ演算装置107に供給する。コンピュータ107は、入力情報を使用して、1つ以上の画面上カーソルを制御するコマンドを生成し、ビデオ出力をディスプレイ103に供給する。リアル・タイム視覚系手追跡システムを初期化するための、以上で詳細に説明したシステムおよび方法は、例えば、SOEおよび類似するシステムにおいて使用することができる。
空間連続入力システムの実施形態について、本明細書では、空間動作環境(SOE)のコンテキストで説明する。一例として、図11は、一実施形態の下における、空間動作環境(SOE)のブロック図である。ユーザが、カメラのアレイ(例えば、1つ以上のカメラまたはセンサ104A〜104D)の視野150内に手101(または手101および102)を配置する。これらのカメラは、指ならびに手101および102の位置、方位、および移動を空間追跡データとして検出し、出力信号をプリプロセッサ105に生成する。プリプロセッサ105は、カメラ出力をジェスチャ信号に変換し、このジェスチャ信号をシステムのコンピュータ演算装置107に供給する。コンピュータ107は、入力情報を使用して、1つ以上の画面上カーソルを制御するコマンドを生成し、ビデオ出力をディスプレイ103に供給する。リアル・タイム視覚系手追跡システムを初期化するための、以上で詳細に説明したシステムおよび方法は、例えば、SOEおよび類似するシステムにおいて使用することができる。
このシステムでは、一人のユーザの手を入力として示すが、SOE100は、多数のユーザを使用しても実現することができる。加えて、手の代わりにまたは手に加えて、本システムはユーザの身体の任意の1つ以上の部分を追跡することができ、その部分とは、頭部、足、脚部、腕、肘、膝等を含む。
SOEは、本明細書において説明した手または物体追跡および形状認識を実行する視覚系インターフェースを含むが、代替実施形態は、局在環境においてユーザの手の位置、方位、および動きを検出するためにある数のカメラを含むセンサまたはセンサを使用する。図示した実施形態例では、1つ以上のカメラまたはセンサが、視野150においてユーザの手101および102の位置、方位、および動きを検出するために使用される。尚、 SOEの範囲や主旨から逸脱することなく、SOE100がこれらよりも多いカメラ(例えば、6台のカメラ、8台のカメラ等)または少ないカメラ(例えば、2台のカメラ)とでも使用することができることは言うまでもない。加えて、実施形態例では、カメラまたはセンサは対称的に配置されるが、SOEにはこのような対称性の要件はない。ユーザの手の位置、方位、および移動を許容するのであれば、カメラまたはセンサは、いずれの数および位置付けでも、SOE100において使用することができる。
一実施形態では、使用されるカメラは、グレー・スケール画像を取り込むことができるモーション・キャプチャ・カメラである。一実施形態では、使用されるカメラは、Vicon MX40カメラのような、Vicon社が製造するカメラである。このカメラは、カメラ内部処理を含み、毎秒1000フレームの画像キャプチャが可能である。モーション・キャプチャ・カメラは、マーカを検出しその位置を突き止めることができる。
説明した実施形態では、カメラは光学的検出に使用されるセンサである。他の実施形態では、カメラまたは他の検出器は、電磁、静磁気、RFID、またはその他の任意の適した種類の検出に使用することができる。
プリプロセッサ105は、三次元空間点再現および骨格点ラベリングを生成するために使用される。ジェスチャ変換器106は、3D空間情報およびマーカ・モーション情報をコマンド言語に変換するために使用される。コマンド言語は、コンピュータ・プロセッサによって解釈され、ディスプレイ上におけるカーソルの位置、形状、および動作(action)を更新することができる。SOE100の代替実施形態では、プリプロセッサ105およびジェスチャ変換器106を統合して、または組み合わせて1つのデバイスにすることもできる。
コンピュータ107は、Apple社、Dell社、または任意のその他の適した製造業者によって製造されるような、任意の汎用コンピュータとすればよい。コンピュータ107は、アプリケーションを実行し、表示出力を供給する。カーソル情報は、他の場合にはマウスまたはその他の先行技術の入力デバイスから得られるが、ここではジェスチャ・システムから得られる。
マーカ・タグ
本明細書において説明した実施形態はマーカレス視覚系追跡システムを含むが、代替実施形態のSOEは、本システムがユーザの手を突き止め、それが左手または右手のどちらを見ているのか、そしてどの指が見えるのか識別することができるように、ユーザの1本以上の指におけるマーカ・タグの使用も想定する。これによって、本システムは、ユーザの手の位置、方位、および移動を検出することが可能になる。この情報によって、本システムは多数のジェスチャを認識することが可能となり、これらのジェスチャは、ユーザによってコマンドとして使用することが可能になる。
本明細書において説明した実施形態はマーカレス視覚系追跡システムを含むが、代替実施形態のSOEは、本システムがユーザの手を突き止め、それが左手または右手のどちらを見ているのか、そしてどの指が見えるのか識別することができるように、ユーザの1本以上の指におけるマーカ・タグの使用も想定する。これによって、本システムは、ユーザの手の位置、方位、および移動を検出することが可能になる。この情報によって、本システムは多数のジェスチャを認識することが可能となり、これらのジェスチャは、ユーザによってコマンドとして使用することが可能になる。
一実施形態におけるマーカ・タグは基板(本実施形態では、人の手の上の種々の位置に装着するのに適している)と、基板の表面上に一意識別パターンで配列された離散マーカとを含む物理的タグである。
マーカおよび関連付けられた外部検知システムは、それらの三空間位置の高精度、正確、ならびに迅速および連続的捕獲が可能である任意のドメイン(光学、電磁、静磁気ドメイン等)において動作することができる。マーカ自体は、能動的(例えば、構造化した電磁パルスを放出することによって)、または受動的(例えば、本実施形態におけるように光学的に逆反射型とすることによって)のいずれでも動作することができる。
各捕獲フレームにおいて、検出システムは、器具を備え付けた作業空間立体(カメラまたはその他の検出器の可視範囲内)において現在タグからの全てのマーカを含む三空間位置を再現した、粒団状「クラウド」を受ける。各タグ上のマーカは、十分に多数であり、一意のパターンに配列されているので、検出システムは以下のタスクを行うことができる。(1)再現した各マーカ位置を、1つのタグを形成する点の1つのみの副集合体に割り当てるセグメント化、(2)セグメント化した点の各副集合体を特定のタグとして識別するラベリング、(3)識別したタグの三空間位置を再現する位置突き止め、および(4)識別したタグの三空間方位を再現する方位決定(orientation)。タスク(1)および(2)は、マーカ・パターンの具体的な本質によって可能となる。これについては、図12の一実施形態において以下で説明し例示する。
一実施形態では、タグ上のマーカは、規則的な格子位置の部分集合に装着される。この基礎となる格子は、本実施形態のように、従来からのデカルト型であってもよいし、代わりに、他の何らかの規則的平面碁盤目状(例えば、三角形/六角形タイリング配列)であってもよい。格子のスケールおよび空間は、隣接する格子位置が混乱する可能性がないように、マーカ検知システムの既知の空間分解能に関して確定する。全てのタグについてのマーカ・パターンの選択は、次の制約を満たさなければならない。タグのパターンは、回転、平行移動、または鏡像(mirroring)のいずれの組み合わせによる他のいずれのタグ・パターンとも一致してはならない。更に、ある指定した数のコンポーネント・マーカの損失(または遮蔽(occlusion)が許容されるように、多数のマーカおよびその配列を選択するとよい。いずれの任意の変換後であっても、損なったモジュール(compromised module)を他のいずれとも混同させることが起こりそうにないようにしなければならない。
これより図12を参照すると、多数のタグ201A〜201E(左手)および202A〜202E(右手)が示されている。各タグは、矩形であり、本実施形態では、5×7の格子アレイで構成される。矩形形状が選択されたのは、タグの方位を決定し易いため、そして鏡面複製(mirror duplicate)の可能性を低減するためである。図示の実施形態では、各手の指毎にタグがある。実施形態によっては、手毎に1つ、2つ、3つ、または4つのタグを使用することが適当である場合もある。各タグは、異なるグレー・スケールまたは色調の境界を有する。この境界の内部には、3×5格子アレイがある。マーカ(図12の黒いドットで表す)は、情報を提供するために、この格子のある点に配置される。
各パターンを「共通」および「一意」のサブパターンにセグメント化することにより、タグのマーカ・パターンにおいて、認定情報(qualifying information)をエンコードすることができる。例えば、本実施形態は、2つの可能な「境界パターン」、矩形境界線(boundary)を中心としたマーカの分布を指定する。つまり、タグの「ファミリー」を確立する。このため、左手を意図したタグは、タグ201A〜201Eにおいて示されるような同じ境界パターンを全て使用することができ、一方右手の指に取り付けられているタグには、タグ202A〜202Eに示すように異なるパターンを割り当てることができる。タグの全ての方位において、左パターンを右パターンから区別できるように、このサブパターンを選択する。図示した例では、左手パターンは、各角に1つのマーカ、そして角格子位置から2番目に1つのマーカを含む。右手パターンは、2つの角のみにマーカを有し、角でない格子位置に2つのマーカを有する。このパターンを検査することによって、4つのマーカの内いずれか3つが見ることができる限り、左手パターンを右手パターンから明確に区別することができることが明らかとなった。一実施形態では、境界の色または色調も、利き手(handedness)のインディケータとして使用することができる。
各タグは、勿論、一意の内部パターンを採用し続けなければならず、マーカはそのファミリーの共通境界以内に分散される。図示の実施形態では、内部格子アレイにおける2つのマーカが、10本の指の各々を一意に特定するのに十分であり、指の回転または方位による複製が生じないことが分かる。マーカの1つが遮蔽されたとしても、タグのパターンおよび利き手の組み合わせから、一意の識別子が得られる。
本実施形態では、格子の位置は、各逆反射マーカをその意図する位置に装着する(手作業の)タスクに対する補助として、視覚的に剛性基板上に存在する。これらの格子および意図するマーカ位置は、カラー・インクジェット・プリンタによって基板上にそっくりそのまま印刷される。ここでは、基板はシート状の(初期状態では)可撓性の「収縮フィルム」である。各モジュールがこのシートから切り離され、炉で焼成される。この熱処理の間に、各モジュールには正確で繰り返し可能な収縮が起こる。この手順に続く短い間隔において、冷却するタグには、例えば、指の長手方向曲線にしたがって、僅かに形状を付けることができる。その後、基板は適度に剛性となり、マーカを、指示された格子点に装着することができる。
一実施形態では、マーカ自体は、接着剤または何らかのその他のしかるべき手段によって基板に装着された小さな反射球体のように、三次元である。このマーカが三次元であることは、二次元マーカ上における検出および位置突き止めに役立つことができる。しかしながら、いずれも、本明細書に記載するSOEの主旨や範囲から逸脱することなく使用することができる。
現在では、タグはベルクロ(Velcro(登録商標))またはその他のしかるべき手段によって、操作者が身に付けている手袋に装着されるか、あるいは、柔らかな両面テープを使用して操作者の指に直接装着される。第3実施形態では、剛性基板を全くなしで済ませ、操作者の指および手に直接個々のマーカを装着するまたは「描く」することができる。
ジェスチャ・ボキャブラリ
一実施形態のSOEは、手のポーズ、方位、手の組み合わせ、および方位の配合(orientation blends)を含むジェスチャ・ボキャブラリ(gesture vocabulary)を想定する。SOEのジェスチャ・ボキャブラリにおいてポーズおよびジェスチャを立案および伝達するために、表記言語(notation language)も実施する。ジェスチャ・ボキャブラリとは、力学的連結の瞬時的な「ポーズ状態」を簡潔な文字形態で表すシステムである。対象となる連結は、生物(例えば、人の手、または人の身体全体、あるいはバッタの足、あるいはキツネザルの関節脊柱)であってもよく、あるいは代わりに非生物であってもよい(例えば、ロボットのアーム)。
ジェスチャ・ボキャブラリ
一実施形態のSOEは、手のポーズ、方位、手の組み合わせ、および方位の配合(orientation blends)を含むジェスチャ・ボキャブラリ(gesture vocabulary)を想定する。SOEのジェスチャ・ボキャブラリにおいてポーズおよびジェスチャを立案および伝達するために、表記言語(notation language)も実施する。ジェスチャ・ボキャブラリとは、力学的連結の瞬時的な「ポーズ状態」を簡潔な文字形態で表すシステムである。対象となる連結は、生物(例えば、人の手、または人の身体全体、あるいはバッタの足、あるいはキツネザルの関節脊柱)であってもよく、あるいは代わりに非生物であってもよい(例えば、ロボットのアーム)。
いずれの場合でも、この連結は、単純(脊柱)でもまたは分岐(手)でもよい。SOEのジェスチャ・ボキャブラリ・システムは、いずれの特定的な連結についても、一定長のストリングを確立する。こうして、ストリングの「キャラクタ位置」を占める特定のASCIIキャラクタの集合体が、連結の瞬時的状態、即ち、「ポーズ」の一意の記述となる。
手のポーズ
図13は、SOEを使用したジェスチャ・ボキャブラリの一実施形態における手のポーズを示す。SOEは、1本の手における5本の指の各々を使用することを仮定する。これらの指には、p−小指、r−薬指、m−中指、i−人差し指、およびt−親指とコーディングする。図13には、指および親指の多数のポーズが、一実施形態のジェスチャ・ボキャブラリにおいて定義され例示される。ジェスチャ・ボキャブラリ・ストリングは、連結(この場合指)の表現可能な自由度毎に1つのキャラクタ位置を確定する。更に、このような各自由度は、離散化(または「量子化」)されることが分かるので、その最大運動範囲は、当該ストリング位置における有限数の標準的ASCIIキャラクタの内の1つの割り当てによって表現することができる。これらの自由度は、本体特定の原点および座標系(手の裏、バッタの身体の中心、ロボット・アームの底辺等)に関して表現される。したがって、連結の位置および方位を「全体的に」更に大域的な座標系において表現するために、少数の追加のジェスチャ・ボキャブラリ・キャラクタ位置が使用される。
図13は、SOEを使用したジェスチャ・ボキャブラリの一実施形態における手のポーズを示す。SOEは、1本の手における5本の指の各々を使用することを仮定する。これらの指には、p−小指、r−薬指、m−中指、i−人差し指、およびt−親指とコーディングする。図13には、指および親指の多数のポーズが、一実施形態のジェスチャ・ボキャブラリにおいて定義され例示される。ジェスチャ・ボキャブラリ・ストリングは、連結(この場合指)の表現可能な自由度毎に1つのキャラクタ位置を確定する。更に、このような各自由度は、離散化(または「量子化」)されることが分かるので、その最大運動範囲は、当該ストリング位置における有限数の標準的ASCIIキャラクタの内の1つの割り当てによって表現することができる。これらの自由度は、本体特定の原点および座標系(手の裏、バッタの身体の中心、ロボット・アームの底辺等)に関して表現される。したがって、連結の位置および方位を「全体的に」更に大域的な座標系において表現するために、少数の追加のジェスチャ・ボキャブラリ・キャラクタ位置が使用される。
引き続き図13を参照すると、多数のポーズが定義されており、ASCIIキャラクタを使用して識別される。これらのポーズの一部は、親指およびそれ以外の指の間で分けられている。この実施形態におけるSOEは、ASCIIキャラクタ自体がポーズを示唆するようなコーディングを使用する。しかしながら、示唆的であろうがなかろうが、ポーズを表すには、いずれのキャラクタでも使用することができる。加えて、本発明では、表記ストリングにASCIIキャラクタを使用する必要性はない。本発明の範囲や主旨から逸脱することなく、適したシンボル、数値、またはその他の表現であればいずれでも使用することができる。例えば、望ましければ、表記は指毎に2ビットを使用することもでき、あるいは所望に応じて、他の何らかの数のビットを使用することもできる。
巻き込んだ指(curled finger)は、キャラクタ「^」によって表され、一方巻き込んだ親指は「>」で表される。真っ直ぐな指または上を向いた親指は、「l」によって示され、角度をなす場合は「\」または「/」で示される。「−」は、真っ直ぐに横を向いた親指を表し、「x」は平面内に向いた親指を表す。
これら個々の指および親指の記述を使用すると、確固不動の数(robust number)の手のポーズを、本発明の方式を使用して、定義し記述することができる。各ポーズは、5つのキャラクタによって表され、その順序は、前述したように、p−r−m−i−tとなる。手を平らにして地面に平行に保持する場合、「lllll」で表される。握り拳は「^^^^>」によって表される。「OK」の合図は、「lll^>」によって表される。
キャラクタ・ストリングは、示唆的キャラクタを使用する場合、単純な「人間可読性」(human readability)の機会を与える。各自由度を記述する1組の可能なキャラクタは、総じて、素早い認識および明白な類似性に着目して選択することができる。例えば、垂直線(「|」)は、連結エレメントが「直線状」であることを意味するように思われ、エル(「L」)は、90度の屈曲を意味することもでき、曲折アクセント記号(「^」)は、鋭角の屈曲を示すことができる。先に注記したように、所望に応じて、いずれのキャラクタまたはコーディングでも使用することができる。
本明細書に記載するようなジェスチャ・ボキャブラリ・ストリングを採用するシステムはいずれも、ストリング比較の高い計算効率の恩恵を享受する。指定されたいずれのポーズについても、その識別または検索は、文字どおり、所望のポーズ・ストリングと瞬時的な実際のストリングとの間における「ストリングの比較」(例えば、UNIX(登録商標)の「stremp()」関数)となる。更に、「ワイルドカード・キャラクタ」の使用によって、プログラマやシステム設計者には、もっと見慣れた効率(efficiency)および有効性(efficacy)が得られる。自由度の瞬時状態が一致とは関わりがない場合、疑問符(「?」)として指定することができ、追加のワイルド・カードの意味を割り当てることができる。
方位
指および親指のポーズに加えて、手の方位が情報を表すことができる。大域空間(global-space)方位を記述するキャラクタも、透過的に選択することができる。キャラクタ「<」、「>」、「^」、および「v」は、方位キャラクタ位置において遭遇した場合、左、右、上、および下の考えを示すために使用することができる。図14は、手方位記述子、ならびにポーズおよび方位をコード化する例を示す。一実施形態では、2つのキャラクタ位置が、最初に手の平の方向を指定し、次いで指の方向を指定する(指が真っ直ぐになっている場合、指の実際の屈曲には関係なく)。これら2つの位置に可能なキャラクタは、方位の「本体中心」観念(body-centric notion)を表現し、「−」、「+」、「x」、「*」、「^」、および「v」は、中間、横方向、前方(順方向、本体から離れる側)、後方(逆方向、本体から離れる側)、頭上(上方)、および後端(下方)を記述する。
指および親指のポーズに加えて、手の方位が情報を表すことができる。大域空間(global-space)方位を記述するキャラクタも、透過的に選択することができる。キャラクタ「<」、「>」、「^」、および「v」は、方位キャラクタ位置において遭遇した場合、左、右、上、および下の考えを示すために使用することができる。図14は、手方位記述子、ならびにポーズおよび方位をコード化する例を示す。一実施形態では、2つのキャラクタ位置が、最初に手の平の方向を指定し、次いで指の方向を指定する(指が真っ直ぐになっている場合、指の実際の屈曲には関係なく)。これら2つの位置に可能なキャラクタは、方位の「本体中心」観念(body-centric notion)を表現し、「−」、「+」、「x」、「*」、「^」、および「v」は、中間、横方向、前方(順方向、本体から離れる側)、後方(逆方向、本体から離れる側)、頭上(上方)、および後端(下方)を記述する。
本発明の表記方式および実施形態では、キャラクタを示す5本指のポーズに続いて、コロン、次いで完全なコマンド・ポーズを定義するために2つの方位キャラクタがある。一実施形態では、開始位置は「xyz」ポーズと呼ばれ、親指は真っ直ぐ上を指し示し、人差し指は前方を指し示し、中指は人差し指に対して垂直であり、右手によってこのポーズが作られる場合、左を指し示す。これは、ストリング「^^xl−:−x」によって表される。
「XYZ−手」は、視覚的に提示された三次元構造の最大6自由度のナビゲーションを可能にするために、人の手の幾何学的形状を利用する技法である。この技法は操作者の手の全体的(bulk)平行移動および回転のみに依存し、したがってその指は原則として、いずれの所望のポーズに保持することができるが、本実施形態は、人差し指が本体から離れる方向を指し、親指が天井を指し、中指が左−右を指す、静止構成(static configuration)を優先する。つまり、これら3本の指は、三空間座標系の3本の相互に直交する軸、つまり、「XYZ−手」を記述する(大まかであるが、明白な歴然とした趣旨がある)。
次いで、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]は、銃を前方に構える真似である。
[lllll:vx]は、手を平らにして(親指が他の指と平行)、手のひらが下を向き、指が前方に突き出している。
[lllll:x^]は、手を平らにして、手のひらが前を向き、指が天井を向いている。
[lllll:-x]は、手を平らにして、手のひらが身体の中心に向いており(左手の場合は右、右手の場合は左)、指が前方に突き出している。
[^^^^-:-x]は、手を1つにして親指を合わしている(親指は天井を向いている)。
[^^^|-:-x]は、銃を前方に構える真似である。
2つの手の組み合わせ
一実施形態のSOEは、1つの手のコマンドおよびポーズだけでなく、2つの手によるコマンドおよびポーズも想定する。図15は、一実施形態の下における、SOEのジェスチャ・ボキャブラリにおける二手組み合わせおよび関連する表記の例を示す。第1の例の表記を検討すると、「完全停止」とは2つの拳を閉じていることを示す。「スナップショット」の例では、各手の親指および人差し指が広げられ、親指が互いに向き合って、ゴール・ポストの形状の枠を定めている。「舵およびスロットル開始位置」は、指および親指が上を向いており、手のひらが画面に面している。
一実施形態のSOEは、1つの手のコマンドおよびポーズだけでなく、2つの手によるコマンドおよびポーズも想定する。図15は、一実施形態の下における、SOEのジェスチャ・ボキャブラリにおける二手組み合わせおよび関連する表記の例を示す。第1の例の表記を検討すると、「完全停止」とは2つの拳を閉じていることを示す。「スナップショット」の例では、各手の親指および人差し指が広げられ、親指が互いに向き合って、ゴール・ポストの形状の枠を定めている。「舵およびスロットル開始位置」は、指および親指が上を向いており、手のひらが画面に面している。
方位配合
図16は、一実施形態の下における方位配合の一例を示す。図示の例では、配合は、指ポーズ・ストリングの後ろにある括弧の中に囲まれた方位表記の対によって表される。例えば、第1コマンドは、全て真っ直ぐに伸ばした指の位置を示す。方位コマンドの第1対により、手のひらをディスプレイに向かって平らにして、第2対によって、手を画面に向けて45度縦に回転させる。この例では、配合の対を示したが、SOEではいずれの数の配合でも考えられる。
図16は、一実施形態の下における方位配合の一例を示す。図示の例では、配合は、指ポーズ・ストリングの後ろにある括弧の中に囲まれた方位表記の対によって表される。例えば、第1コマンドは、全て真っ直ぐに伸ばした指の位置を示す。方位コマンドの第1対により、手のひらをディスプレイに向かって平らにして、第2対によって、手を画面に向けて45度縦に回転させる。この例では、配合の対を示したが、SOEではいずれの数の配合でも考えられる。
コマンド例
図18/1および図18/2は、SOEと共に使用することができる、多数の可能なコマンドを示す。本明細書における論述の一部は、ディスプレイ上におけるカーソルの制御についてであったが、SOEはその行動に限定されるのではない。実際に、SOEは、画面上における全てのデータおよびデータの一部、更にはディスプレイの状態を操作する際に、様々に応用することができる。例えば、ビデオ・メディアの再生中に、これらのコマンドをビデオ制御に代わって使用することができる。これらのコマンドは、一時停止、早送り、巻き戻しなどを行うために使用することができる。加えて、画像のズーム・インおよびズーム・アウトを行うため、画像の方位を変化させるため、いずれかの方向にパンニングするため等に実施することができる。また、SOEは、開く、閉じる、保存する等のような、メニュー・コマンドの代わりに使用することもできる。言い換えると、想像することができるいずれのコマンドまたは活動でも、手のジェスチャによって実施することができる。
図18/1および図18/2は、SOEと共に使用することができる、多数の可能なコマンドを示す。本明細書における論述の一部は、ディスプレイ上におけるカーソルの制御についてであったが、SOEはその行動に限定されるのではない。実際に、SOEは、画面上における全てのデータおよびデータの一部、更にはディスプレイの状態を操作する際に、様々に応用することができる。例えば、ビデオ・メディアの再生中に、これらのコマンドをビデオ制御に代わって使用することができる。これらのコマンドは、一時停止、早送り、巻き戻しなどを行うために使用することができる。加えて、画像のズーム・インおよびズーム・アウトを行うため、画像の方位を変化させるため、いずれかの方向にパンニングするため等に実施することができる。また、SOEは、開く、閉じる、保存する等のような、メニュー・コマンドの代わりに使用することもできる。言い換えると、想像することができるいずれのコマンドまたは活動でも、手のジェスチャによって実施することができる。
動作
図17は、一実施形態におけるSOEの動作を示す流れ図である。ステップ701において、検出システムはマーカおよびタグを検出する。判断ブロック702において、タグおよびマーカが検出されたか否か判断を行う。検出されていない場合、システムはステップ701に戻る。ステップ702においてタグおよびマーカが検出された場合、システムはステップ703に進む。ステップ703において、システムは、検出されたタグおよびマーカから、手、指、およびポーズを識別する。ステップ704において、システムは、ポーズの方位を識別する。ステップ705において、システムは、検出された1つまたは双方の手の三次元空間位置を識別する。(ステップ703、704、および705の内いずれでも、または全てを1つの動作として組み合わせてもよいことに注意されたい)。
図17は、一実施形態におけるSOEの動作を示す流れ図である。ステップ701において、検出システムはマーカおよびタグを検出する。判断ブロック702において、タグおよびマーカが検出されたか否か判断を行う。検出されていない場合、システムはステップ701に戻る。ステップ702においてタグおよびマーカが検出された場合、システムはステップ703に進む。ステップ703において、システムは、検出されたタグおよびマーカから、手、指、およびポーズを識別する。ステップ704において、システムは、ポーズの方位を識別する。ステップ705において、システムは、検出された1つまたは双方の手の三次元空間位置を識別する。(ステップ703、704、および705の内いずれでも、または全てを1つの動作として組み合わせてもよいことに注意されたい)。
ステップ706において、以上の情報を、前述したジェスチャ表記に変換する。判断ブロック707において、ポーズが有効か否か判断を行う。これは、生成した表記ストリングを使用した単純なストリング比較によって行うことができる。ポーズが有効でない場合、システムはステップ701に戻る。ポーズが有効である場合、ステップ708において、システムは表記および位置情報をコンピュータに送る。ステップ709において、コンピュータは、ジェスチャに応答して、取るべきしかるべき行為を決定し、ステップ710においてそれに応じてディスプレイを更新する。
SOEの一実施形態では、動作701〜705をカメラ内蔵プロセッサによって実行する。他の実施形態では、望ましければ、この処理をシステム・コンピュータによって実行することもできる。
解析および変換
本システムは、基礎となるシステムによって再現された低レベルのジェスチャの流れを「解析」および「変換」し、これら解析し変換したジェスチャを、コマンドまたはイベント・データの流れに変換することができる。このデータは、広範囲のコンピュータ・アプリケーションおよびシステムを制御するために使用することができる。これらの技法およびアルゴリズムは、これらの技法を実現するエンジン、およびエンジンの能力を利用するコンピュータ・アプリケーションを構築するプラットフォームの双方を提供するコンピュータ・コードから成るシステムにおいて具体化することができる。
解析および変換
本システムは、基礎となるシステムによって再現された低レベルのジェスチャの流れを「解析」および「変換」し、これら解析し変換したジェスチャを、コマンドまたはイベント・データの流れに変換することができる。このデータは、広範囲のコンピュータ・アプリケーションおよびシステムを制御するために使用することができる。これらの技法およびアルゴリズムは、これらの技法を実現するエンジン、およびエンジンの能力を利用するコンピュータ・アプリケーションを構築するプラットフォームの双方を提供するコンピュータ・コードから成るシステムにおいて具体化することができる。
一実施形態は、コンピュータ・インターフェースにおいて、人の手の豊富なジェスチャの使用を可能にすることを中心に据えるが、他の身体部分によって行われるジェスチャ(限定ではなく、腕、胴体、脚部、および頭部を含む)や、手ではない種々の器具によって行われるジェスチャを認識することもできる。これらの器具は、静止および連結式(articulating)双方であり、限定ではないが、キャリパ、コンパス、可撓性曲線近似器(curve approximator)、および種々の形状のポインティング・デバイスが含まれる。マーカおよびタグは、操作者によって所望に応じて携行および使用することができる品目および器具に被着することができる。
本明細書において記載するシステムは、認識し反応することができるジェスチャの範囲が豊富なジェスチャ・システムを構築することを可能にしつつ、同時にアプリケーションへの容易な統合にも備えた、多数の改革を組み込む。
一実施形態では、ジェスチャ解析および変換システムは、以下のものを備えている。
1)様々な異なる集計レベルにおいて、ジェスチャを指定する(コンピュータ・プログラムにおいて使用するためのエンコード)緻密かつ効率的な方法。
a.1本の手の「ポーズ」(手の部分の外形および互いに対する方位)。三次元空間における1つの手の方位および位置。
b.2つの手の組み合わせ。いずれかの手がポーズ、位置、または双方を考慮に入れる。
c.多数の人物の組み合わせ。本システムは2つよりも多い手を追跡することができ、したがって、一人よりも多い事物が協同して(ゲーム・アプリケーションの場合には競合して)目標システムを制御することができる。
d.ポーズが連続して組み合わされる順次ジェスチャ。これらを「動画」ジェスチャと呼ぶ。
e.操作者が空間内の形状を追跡する「書記素」ジェスチャ(grapheme gesture)。
b.2つの手の組み合わせ。いずれかの手がポーズ、位置、または双方を考慮に入れる。
c.多数の人物の組み合わせ。本システムは2つよりも多い手を追跡することができ、したがって、一人よりも多い事物が協同して(ゲーム・アプリケーションの場合には競合して)目標システムを制御することができる。
d.ポーズが連続して組み合わされる順次ジェスチャ。これらを「動画」ジェスチャと呼ぶ。
e.操作者が空間内の形状を追跡する「書記素」ジェスチャ(grapheme gesture)。
2)所与のアプリケーション・コンテキストに関連があるものの上で、各カテゴリから特定のジェスチャを登録するプログラム技法。
3)登録されたジェスチャを識別することができ、これらのジェスチャをカプセル化するイベントを関連するアプリケーション・コンテキストに配信することができるように、ジェスチャの流れを解析するアルゴリズム。
指定システム(1)は、構成エレメント(1a)から(1f)と共に、本明細書に記載するシステムのジェスチャ解析および変換能力を利用するための基礎を提供する。
1本の手の「ポーズ」は、
i)手の指と甲との間の相対的方位、
ii)少数の離散状態への量子化、
のストリングとして表される。
i)手の指と甲との間の相対的方位、
ii)少数の離散状態への量子化、
のストリングとして表される。
相対的接合方位を使用することにより、本明細書に記載するシステムは、手のサイズおよび外形形状が異なることに伴う問題を回避することができる。このシステムでは、「操作者較正」を必要としない。加えて、ポーズをストリングまたは相対的方位の集合体として指定することにより、ポーズ表現を更に別のフィルタおよび指定と組み合わせることによって、一層複雑なジェスチャ指定(specification)を容易に作成することが可能になる。
ポーズ指定に少数の離散状態を使用することによって、ポーズを簡潔に指定することができ、更に種々の基礎となる追跡技術(例えば、カメラを使用した受動的光学追跡、点灯ドットおよびカメラを使用した能動的光学追跡、電磁場追跡等)を使用して、精度の高いポーズ認識を確実に行うことができる。
各カテゴリ(1a)から(1f)におけるジェスチャは、部分的に(または最小限に)指定することができるので、重大でないデータは無視される。例えば、2本の指の位置が明確であり他の指の位置は重要でないジェスチャは、2本の関連のある指の動作位置が与えられ、同じストリング内において、「ワイルド・カード」または包括的「無視」インディケータが他の指に対して掲示された1つの指定によって表すことができる。
本明細書において記載するジェスチャ認識のための改革の全ては、限定ではなく、多層指定技法、相対的方位の使用、データの量子化、および各レベルにおける部分的または最小指定の許容を含み、手のジェスチャの指定を超えて、他の身体部分や「製造した」器具および物体を使用したジェスチャの指定に一般化する。
「ジェスチャを登録する」プログラム技法(2)は、どのジェスチャをエンジンが実行システムの他の部分に入手可能にすべきか定めることをプログラマに可能にする、定められた1組のアプリケーション・プログラミング・インターフェース・コールによって構成される。
これらのAPIルーチンは、アプリケーション設定時に使用することができ、実行アプリケーションの寿命の間使用することができる静止インターフェース定義を作成する。また、これらは、実行中にも使用することができ、インターフェース特性を動作中に変更することができる。このリアル・タイムでのインターフェース変更により、
i)複雑なコンテキストおよび条件付き制御状態を構築すること、
ii)動的にヒステリシスを制御環境に追加すること、および
iii)ユーザが実行システム自体のインターフェース・ボキャブラリを変更または拡張することができるアプリケーションを作成すること、
が可能となる。
i)複雑なコンテキストおよび条件付き制御状態を構築すること、
ii)動的にヒステリシスを制御環境に追加すること、および
iii)ユーザが実行システム自体のインターフェース・ボキャブラリを変更または拡張することができるアプリケーションを作成すること、
が可能となる。
ジェスチャの流れを解析するアルゴリズム(3)は、(1)におけるように指定され(2)におけるように登録されたジェスチャを、入来する低レベルのジェスチャ・データと比較する。登録されたジェスチャに対する一致が認識された場合、一致したジェスチャを表すイベント・データが積層され実行アプリケーションに配信される。
このシステムの設計においては、効率的なリアル・タイムでの照合が望まれ、指定されたジェスチャは、できるだけ素早く処理される可能性のツリーとして扱われる。
加えて、指定されたジェスチャを認識するために内部で使用される原始的比較演算子は、アプリケーション・プログラマが使用するためにも露出されるので、アプリケーション・コンテキスト内部からでも、より多くの比較(例えば、複雑なジェスチャまたは複合ジェスチャにおける柔軟な状態の検査)を行うことができる。
認識「ロッキング」セマンティクス(recognition locking semantics)は、本明細書に記載するシステムの改革の1つである。これらのセマンティクスは、登録API(2)(および、より狭い範囲で、指定ボキャブラリ(1)内に埋め込まれる)によって暗示される(imply)。登録APIコールは、
i)「エントリ」状態通知部および「連続」状態通知部、ならびに
ii)ジェスチャ優先度指定部
を含む。
i)「エントリ」状態通知部および「連続」状態通知部、ならびに
ii)ジェスチャ優先度指定部
を含む。
ジェスチャが認識された場合、その「連続」状態は、同じまたは低い優先度のジェスチャの全ての「エントリ」状態よりも優先される。このエントリ状態と連続状態との間の区別は、認められるシステム使用可能性に大きくプラスになる。
本明細書において記載するシステムは、実世界のデータ・エラーおよび不確実性をものともせずに、ロバストな動作のためのアルゴリズムを含む。低レベル追跡システムからのデータは不完全である場合もある(光学追跡におけるマーカの遮蔽、ネットワーク・ドロップアウト、処理の遅れ等を含む、種々の理由による)。
欠損データは、解析システムによって印が付けられ、その欠損データの量およびコンテキストに応じて、「最後に分かっていた」状態または「最もあり得る」状態のいずれかに組み込まれる。
特定のジェスチャ・コンポーネント(例えば、特定の関節の方位)についてのデータが見つからないが、その特定のコンポーネントの「最後に分かっていた」状態を、物理的に可能であると分析することができる場合、本システムはこの最後に分かっていた状態をそのリアル・タイム照合において使用する。
逆に、最後に分かっていた状態が、物理的に不可能であると分析された場合、本システムはそのコンポーネントにとって「最良のジェスチャ範囲」に後退し、この合成データをそのリアル・タイム照合において使用する。
本明細書において記載する指定および解析システムは、「利き手不可知論」をサポートするように注意深く設計されるので、多数の手のジェスチャについて、いずれの手でもポーズの要件を満たすことができる。
同時仮想/表示および物理空間
一実施形態のシステムは、1つ以上のディスプレイ・デバイス(「画面」)上に描かれた仮想空間を、当該システムの一人または複数の操作者によって占められる物理空間と一致するものとして扱う環境を提供することができる。このような環境の一実施形態についてここで説明する。この現実施形態は、固定位置に3つのプロジェクタ駆動画面を含み、1つのデスクトップ・コンピュータによって駆動され、本明細書に記載したジェスチャ・ボキャブラリおよびインターフェース・システムを使用して制御される。しかしながら、記載する技法は、いかなる数の画面でもサポートすること、これらの画面は移動可能であってもよいこと(固定ではなく)、画面は多くの独立したコンピュータによって同時に駆動してもよいこと、そしてシステム全体はいずれの入力デバイスまたは技法によっても制御できることを注記しておく。
同時仮想/表示および物理空間
一実施形態のシステムは、1つ以上のディスプレイ・デバイス(「画面」)上に描かれた仮想空間を、当該システムの一人または複数の操作者によって占められる物理空間と一致するものとして扱う環境を提供することができる。このような環境の一実施形態についてここで説明する。この現実施形態は、固定位置に3つのプロジェクタ駆動画面を含み、1つのデスクトップ・コンピュータによって駆動され、本明細書に記載したジェスチャ・ボキャブラリおよびインターフェース・システムを使用して制御される。しかしながら、記載する技法は、いかなる数の画面でもサポートすること、これらの画面は移動可能であってもよいこと(固定ではなく)、画面は多くの独立したコンピュータによって同時に駆動してもよいこと、そしてシステム全体はいずれの入力デバイスまたは技法によっても制御できることを注記しておく。
本開示において記載するインターフェース・システムは、物理空間における画面の寸法、方位、および位置を決定する手段を有していなければならない。この情報を仮定して、本システムは、これらの画面が配置される(そして、本システムの操作者が占める)物理空間を、本システム上で実行しているコンピュータ・アプリケーションの仮想空間への投影として動的にマッピングすることができる。この自動マッピングの一部として、本システムは、システムによってホストされるアプリケーションの必要性に応じて、種々の方法で2つの空間の規模、角度、深さ、寸法、およびその他の空間特性も変換する。
この物理空間と仮想空間との間における連続変換によって、既存のアプリケーション・プラットフォームでは達成が困難である、または既存のプラットフォーム上で実行するアプリケーション毎に1つ1つ実装しなければならない多数のインターフェース技法の一貫性があり普及する使用が可能となる。これらの技法は、(限定ではないが)以下を含む。
1)「リテラル・ポインティング」(literal pointing)の広く行き渡る自然なインターフェース技法としての使用。ジェスチャ・インターフェース環境において手を使用するか、あるいは物理的ポインティング・ツールまたはデバイスを使用する。
2)画面の移動または再位置決めに対する自動補償。
3)操作者の位置に応じて変化するグラフィクス・レンダリング。例えば、深度の知覚を高めるためにパララックス・シフトをシミュレーションする。
4)実世界位置、方位、状態等を考慮に入れた、画面上表示への物理的オブジェクトの含入。例えば、大きく不透明な画面の前に立っている操作者は、アプリケーションのグラフィクスと、画面の背後にある(そして、恐らく移動しているか、または方位を変えている)スケール・モデル(scale model)の真の位置の表現との双方を見ることができる。
2)画面の移動または再位置決めに対する自動補償。
3)操作者の位置に応じて変化するグラフィクス・レンダリング。例えば、深度の知覚を高めるためにパララックス・シフトをシミュレーションする。
4)実世界位置、方位、状態等を考慮に入れた、画面上表示への物理的オブジェクトの含入。例えば、大きく不透明な画面の前に立っている操作者は、アプリケーションのグラフィクスと、画面の背後にある(そして、恐らく移動しているか、または方位を変えている)スケール・モデル(scale model)の真の位置の表現との双方を見ることができる。
リテラル・ポインティングは、マウスに基づくウィンドーイング・インターフェースや殆どのその他の現在のシステムにおいて使用される絶対ポインティングとは異なることを注記するのは重要である。これらのシステムでは、操作者は仮想ポインタと物理ポインティング・デバイスとの間の変換を管理することを学習しなければならず、更にこれら2つの間で経験的知識に基づいてマッピングしなければならない。
対照的に、本開示において記載するシステムでは、アプリケーションまたはユーザの観点のいずれからでも、仮想空間と物理空間との間に差がないので(仮想空間の方が数学的操作がし易いことを除く)、操作者に経験的知識に基づく変換は必要とされない。
本明細書において記載する実施形態によって提供されるリテラル・ポインティングに最も近い類似性は、接触感応画面(例えば、多くのATM機械上で見られる)である。接触感応画面は、画面上の二次元表示空間と画面表面の二次元入力空間との間に1対1のマッピングを規定する。同様に、本明細書において記載するシステムは、1つ以上の画面上に表示される仮想空間と、操作者によって占められる物理空間との間に柔軟なマッピング(1対1のマッピングも可能であるが、その必要性はない)を規定する。この類似性の有益さ(usefulness of the analogy)にも拘わらず、この「マッピング手法」の三次元、任意に大きなアーキテクチャ環境、および多数の画面への拡張は重要である。
本明細書において記載するコンポーネントに加えて、本システムは、環境の物理空間と各画面上の表示空間との間に連続的なシステム・レベルのマッピング(恐らく回転、平行移動、倍率調整、またはその他の幾何学的変換によって変更される)を実現するアルゴリズムも実装することができる。
レンダリング・スタックは、計算オブジェクトおよびマッピングを取り込み、仮想空間のグラフィカル表現を出力する。
入力イベント処理スタックは、制御システムからイベント・データを取り込み(現実施形態では、システムおよびマウス入力からのジェスチャ・データおよびポインティング・データの双方)、入力イベントからの空間データを仮想空間における座標にマッピングする。次いで、変換されたイベントは、実行中のアプリケーションに配信される。
「グルー・レイヤ」は、システムが、ローカル・エリア・ネットワークにある数台のコンピュータに跨って実行するアプリケーションをホストすることを可能にする。
データ表現、移行、および交換
SOE即ち空間連続入力システムの実施形態について説明する。ここでは、以下で詳しく説明するが、このシステムは、サブシステム「スロークス」、「プロテイン」、および「プール」を構成する「プラズマ」と呼ばれるシステムを含む、ネットワーク系データ表現、移行、および交換を含む。プールおよびプロテインは、プロセス間でまたはプロセスを跨いで共有すべきデータをカプセル化するために、本明細書において説明する方法およびシステムのコンポーネントである。また、これらのメカニズムは、プロテインおよびプールの他に、スロークス(「スロー」(slaw)の複数形)も含む。一般に、スロークスは、プロセス間交換についての最も低いレベルのデータ定義を規定し、プロテインは、中間レベルの構造を規定し、照会(querying)およびフィルタリングを担い(hook for)、プールは、高レベルの編成およびアクセス・セマンティクスを規定する。スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、スロークスをペイロードとして使用して、データ・カプセル化および輸送方式を規定する。プールは、ローカル・プロセッサ間での、リモートまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」(例えば、ディスク上等における)記憶を通じた、プロセス内におけるプロテインの構造化されるが柔軟な集計、順序付け、フィルタリング、および分散を規定する。
SOE即ち空間連続入力システムの実施形態について説明する。ここでは、以下で詳しく説明するが、このシステムは、サブシステム「スロークス」、「プロテイン」、および「プール」を構成する「プラズマ」と呼ばれるシステムを含む、ネットワーク系データ表現、移行、および交換を含む。プールおよびプロテインは、プロセス間でまたはプロセスを跨いで共有すべきデータをカプセル化するために、本明細書において説明する方法およびシステムのコンポーネントである。また、これらのメカニズムは、プロテインおよびプールの他に、スロークス(「スロー」(slaw)の複数形)も含む。一般に、スロークスは、プロセス間交換についての最も低いレベルのデータ定義を規定し、プロテインは、中間レベルの構造を規定し、照会(querying)およびフィルタリングを担い(hook for)、プールは、高レベルの編成およびアクセス・セマンティクスを規定する。スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、スロークスをペイロードとして使用して、データ・カプセル化および輸送方式を規定する。プールは、ローカル・プロセッサ間での、リモートまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」(例えば、ディスク上等における)記憶を通じた、プロセス内におけるプロテインの構造化されるが柔軟な集計、順序付け、フィルタリング、および分散を規定する。
本明細書に記載する実施形態の構成および実施態様は、様々な構造(construct)を含み、これらが一緒になって多数の能力を可能にする。例えば、本明細書において記載する実施形態は、前述のように大多数のプロセス間における効率的な交換に備えている。また、本明細書において記載する実施形態は、柔軟なデータ「タイピング」(typing)および構造にも備えているので、広範囲にわたる多様な種類のデータおよび使用をサポートする。更に、本明細書において記載する実施形態は、データ交換のための柔軟なメカニズム(例えば、ローカル・メモリ、ディスク、ネットワーク等)を含み、これらは全て実質的に同様のアプリケーション・プログラミング・インターフェース(API)によって駆動される。更に、本明細書において記載する実施形態は、異なるプログラミング言語で書かれたプロセス間におけるデータ交換を可能にする。加えて、本明細書において記載する実施形態は、データ・キャッシュおよび集計状態の自動的な保守を可能にする。
図19は、一実施形態の下において、スロークス、プロテイン、およびプールを使用したデータ表現を含む処理環境のブロック図である。本明細書において紹介する実施形態の主要な構造には、スロークス(「スロー」(slaw)の複数形)、プロテイン、およびプールが含まれる。本明細書において記載する場合、スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、本明細書において詳細に説明するように、データ・カプセル化および輸送方式を規定し、一実施形態のプロテインのペイロードはスロークスを含む。プールは、本明細書において記載する場合、プロテインの構造化されるが柔軟な集計、順序付け、フィルタ処理、および分散を規定する。プールは、プロテインのための、プロセス内部における、ローカル・プロセッサ間での、リモートまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」(例えば、ディスク上)記憶による、データへのアクセスを与える。
図20は、一実施形態の下におけるプロテインのブロック図である。プロテインは、長さヘッダ、ディスクリップ(descrip)、およびインジェスト(ingest)を含む。以下で詳細に説明するが、ディスクリップおよびインジェストの各々は、スローまたはスロークスを含む。
図21は、一実施形態の下におけるディスクリップのブロック図である。以下で詳細に説明するが、ディスクリップは、オフセット、長さ、およびスロークスを含む。
図22は、一実施形態の下におけるインジェストのブロック図である。以下で詳細に説明するが、インジェストは、オフセット、長さ、およびスローを含む。
図23は、一実施形態の下におけるスローのブロック図である。以下で詳細に説明するが、スローは、タイプ・ヘッダ、およびタイプ特定データを含む。
図24Aは、一実施形態の下における、プールの中にあるプロテインのブロック図である。プロテインは、長さヘッダ(「プロテイン長」)、ディスクリップ・オフセット、インジェスト・オフセット、ディスクリップ、およびインジェストを含む。ディスクリップは、オフセット、長さ、およびスローを含む。インジェストは、オフセット、長さ、およびスローを含む。
プロテインは、本明細書において記載する場合、プロセッサ間で共有する、あるいはバスまたはネットワークまたはその他の処理構造を跨いで移動する必要があるデータをカプセル化するメカニズムのことである。一例として、プロテインは、ユーザ・インターフェース・イベントに対応するまたは関連するデータを含むデータの輸送および操作のための改良メカニズムを提供する。具体的には、一実施形態のユーザ・インターフェース・イベントは、先に説明したジェスチャ・インターフェースのそれを含む。更に別の例として、プロテインは、限定ではく、グラフィクス・データまたはイベント、および状態情報等その他多数を含むデータの輸送および操作のための改良メカニズムを提供する。プロテインは、構造化レコード・フォーマット、およびレコードを操作するための1組の関連方法である。本明細書において使用する場合、レコードの操作は、データを構造に入力すること、構造からデータを取り出すこと、およびデータのフォーマットおよび存在を問い合わせることを含む。プロテインは、種々のコンピュータ言語で書かれたコードを通じて使用されるように構成される。また、プロテインは、本明細書において記載するような、プールの基本的構築ブロックとなるように構成される。更に、プロテインは、それらが含むデータを不変のまま維持しつつ、プロセッサ間そしてネットワークを跨いで自然に移動できるように構成される。
従来のデータ輸送メカニズムとは対照的に、プロテインにはタイプが決められていない。タイプは決められていないが、プロテインは、「タイプ状」機能を実装することに加えて、強力で柔軟性のあるパターン照合装置(facility)を備えている。また、本明細書に記載するように構成されたプロテインは、本質的に多点型でもある(しかし、二点間形態も、多点伝送の部分集合として容易に実現される)。加えて、プロテインはメモリ内、ディスク上、およびワイヤ(ネットワーク)上フォーマット間で異なることがない「ユニバーサル」レコード・フォーマットを定義する(即ち、実行する任意の最適化の種類だけが異なる)。
図20および図24Aを参照すると、一実施形態のプロテインは、バイトの線形シーケンスである。これらのバイトの中には、ディスクリップ・リストと、1組のキー値対がカプセル化される。キー値対をインジェストと呼ぶ。ディスクリップ・リストは、綿密(elaborate)であるが効率的にフィルタ可能なプロテイン毎のイベント記述を任意に含む。インジェストは、1組のキー値対を含み、これらがプロテインの実際の内容を構成する。
プロテインのキー値対との関わり、ならびにネットワークに都合がよい(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)またはメタデータを許容することは有用である。オフセットの使用により、プロテインの先頭付近に、任意のサイズの「孔」を作成し、その中にこのようなメタデータを割り込ませることができる。8バイトのメタデータを利用することができる実施態様では、多くのシステム・アーキテクチャ上でこれらのバイトを、長さヘッダをフェッチする毎に1つのプロテインに対して自由に得ることができる。
多くの場合、プロテイン内部において実施態様特定またはコンテキスト特定のキャッシング(caching)またはメタデータを許容することは有用である。オフセットの使用により、プロテインの先頭付近に、任意のサイズの「孔」を作成し、その中にこのようなメタデータを割り込ませることができる。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)が以上の挙動を実施する。
図24B/1および図24B/2は、一実施形態の下におけるスロー・ヘッダのフォーマットを示す。以下にスローの詳細な説明を行う。
各スローの内部構造は、タイプ解明、カプセル化データへのアクセス、および当該スロー・インスタンスについてのサイズ情報の各々を最適化する。一実施形態では、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つ以上のアプリケーションまたはプログラミング言語における動作または挙動を含む。図24Cは、一実施形態の下でプロテインを使用するための流れ図650である。動作を開始すると、652においてプロテインの長さをバイト単位で問い合わせる。654において、ディスクリップ・エントリの数を問い合わせる。656において、インジェストの数を問い合わせる。658において、インデックス番号によってディスクリップ・エントリを引き出す。660において、インデックス番号によってインジェストを引き出す。
また、本明細書において記載する実施形態は、プロテインを作成してデータを充填させる基本的な方法、プログラマによって共通のタスクを容易に行えるようにするヘルパ方法、および最適化を遂行するためのフック(hook)も定める。図24Dは、一実施形態の下においてプロテインを作成する、即ち、生成するための流れ図670である。動作は、672における新たなプロテインの作成から開始する。674において、一連のディスクリップ・エントリを添付する。また、676においてインジェストも添付する。678において、一致するディスクリップの存在を問い合わせ、680において、一致するインジェスト・キーの存在を問い合わせる。インジェスト・キーが得られたなら、682において、インジェスト値を引き出す。684において、ディスクリップ全体でパターン照合を実行する。686において、プロテインの先頭付近に、非構造化メタデータを埋め込む。
前述のように、スロークスはプロセス間交換のための低レベルのデータ定義を規定し、プロテインは問い合わせおよびフィルタ処理のために中間レベルの構造およびフックを規定し、プールは高レベルの編成およびアクセス・セマンティックスについて規定する。プールは、プロテインのためのレポジトリであり、線形シーケンシング(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ソケットの柔軟な組み合わせを使用する。
一実施形態のプールの機能には、限定ではなく、以下が含まれる。プールに関与する。プロテインをプールの中に入れる。次の未見プロテインをプールから引き出す。プール内の内容(例えば、プロテイン)を逆回しまたは早送りする。加えて、プールの機能には、限定ではなく、以下も含むことができる。プロセスに対するストリーミング・プール・コール・バックを設定する。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインを選択的に引き出す。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインについて逆方向および順方向に走査する。
前述のプロテインは、他のアプリケーションとプロテイン・データ・コンテンツを共有する方法として、プールに供給される。図25は、一実施形態の下において、スロークス、プロテイン、およびプールを使用したデータ交換を含む処理環境のブロック図である。この環境例は、前述のようにスロークス、プロテイン、およびプールの使用によりデータを共有する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までを参照しながら先に説明した。
図26は、多数のデバイスと、これらのデバイスの1つ以上で走る多数のプログラムを含む処理環境のブロック図であり、一実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を使用することにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス(例えば、デバイスA、B等)およびこれらのデバイス上で走る多数のプログラム(例えば、appsAA-AX、appsBA-BX等)を備えている双方向処理システムが、プラズマ構造(例えば、プール、プロテイン、およびスロー)を使用して、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
この例では、各デバイス(例えば、デバイスA、B等)は、それぞれのデバイス上で走っているプログラム(例えば、appsAA-AX、appsBA-BX等)が生成したまたは出力された離散生データを、プラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入する。例えば、プログラム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)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されたイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
図27は、多数のデバイスと、これらのデバイスの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)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されたイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
図28は、多数の入力デバイスを含み、これらが当該デバイスの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本によるクリック」のポーズ)(関連出願に記載されている)を記述するプロテインは、次の通りである。
[Descrips: {point, engage, one, one-finger-engage, hand,
pilot-id-02, hand-id-23}
Ingests: {pilot-id => 02,
hand-id => 23,
pos => [0.0, 0.0, 0.0]
angle-axis => [0.0, 0.0, 0.0, 0.707]
grip => ..^||:vx
time => 184437103.29}]
別の例として、マウスのクリックを記述するプロテインは次の通りである。
pilot-id-02, hand-id-23}
Ingests: {pilot-id => 02,
hand-id => 23,
pos => [0.0, 0.0, 0.0]
angle-axis => [0.0, 0.0, 0.0, 0.707]
grip => ..^||:vx
time => 184437103.29}]
別の例として、マウスのクリックを記述するプロテインは次の通りである。
[Descrips: {point, click, one, mouse-click, button-one,
mouse-id-02 }
Ingests: {mouse-id =>23,
pos => [0.0, 0.0, 0.0]
time => 184437124.80}]
以上のプロテインの見本のいずれかまたは双方は、そのコードの特定の部分を走らせるホスト・デバイスの関与プログラム(participating program)を生ずる可能性もある。これらのプログラムは、一般的なセマンティック・レベルに関係する場合がある。全ての内最も一般的なのは「point」であり、更に具体的な対は「engage, one」である。また、これらは、正確なデバイス:「one-finger-engage」または正に1つの集計オブジェクト(aggregate object)「hand-id-23」のみによってもっともらしく発生されるイベントを求めている場合もある。
mouse-id-02 }
Ingests: {mouse-id =>23,
pos => [0.0, 0.0, 0.0]
time => 184437124.80}]
以上のプロテインの見本のいずれかまたは双方は、そのコードの特定の部分を走らせるホスト・デバイスの関与プログラム(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)、その他にも数多く含まれる。
図29は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合された処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を使用することにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする。このシステムは、多数の実行中のプログラム(例えば、グラフィクスA〜E)および1つ以上のディスプレイ・デバイス(図示せず)を備えているシステムの一例に過ぎず、プログラムの一部または全部のグラフィック出力が、プラズマ構造(例えば、プール、プロテイン、およびスロー)を使用して、調整しながら他のプログラムにも利用可能とし、実行中のプログラムが、これらのデバイスによって発生したグラフィック・イベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
コンピュータ・プログラムが、別のプログラムによって生成したグラフィクスを表示することが有用な場合は多い。広く知れ渡っている様々な例には、テレビ会議アプリケーション、ネットワークを使用したスライドショーおよびデモ・プログラム、ならびにウィンドウ・マネージャが含まれる。この構成の下では、プールは、ビデオ、ネットワーク・アプリケーション共有、およびウィンドウ管理をカプセル化したフレームワークを一般化して実施するためにプラズマ・ライブラリとして使用され、プログラマは、このようなプログラムの現バージョンでは一般には入手できない多数の特徴に追加することが可能になる。
プラズマ合成環境において走るプログラム(例えば、グラフィクスA〜E)は、プールへの結合および/または接続を通じて、調整プールに関与する。各プログラムは、種々の種類のグラフィック・ソースの可用性を示すために、そのプールにプロテインを貯入する。また、グラフィックスを表示するために利用可能なプログラムも、それらの表示処理能力、セキュリティおよびユーザ・プロファイル、ならびに物理的位置およびネットワーク位置を示すために、プロテインを貯入する。
また、グラフィクス・データをプールを通じて送信することもでき、あるいは表示プログラムに、他の種類(例えば、RTSPストリーム)のネットワーク・リソースを指し示させることもできる。「グラフィクス・データ」という用語は、本明細書において使用する場合、広義の連続体(broad continuum)に沿って存在する種々の異なる表現のことを指し、グラフィクス・データの例には、文字で表現される例(例えば、「画像」、または画素のブロック)、手順的例(例えば、典型的なopenGLパイプラインを下って行くような一連の「描画」指令)、および記述的例(例えば、幾何学的変形、クリッピング、および合成動作によって他のグラフィック構造を組み合わせる命令)が含まれるが、これらに限定されるのではない。
ローカル・マシン上では、グラフィクス・データは、プラットフォーム特定の表示ドライバ最適化を通じて配信することもできる。プールを通してグラフィクスを送信しない場合でも、多くの場合、周期的な画面キャプチャは、調整プールに格納されるので、より内部(esoteric)のソースに直接アクセスできないクライアントであっても、万一のときのグラフィクス(fall-back graphics)を表示することもできる。
本明細書において記載するシステムの利点の1つは、殆どのメッセージ伝達フレームワークおよびネットワーク・プロトコルとは異なり、プールがデータの大量のバッファを維持することである。したがって、プログラムはプールの中に逆戻りして、アクセスおよび使用パターン(調整プールの場合)を見たり、以前のグラフィクス・フレーム(グラフィクス・プールの場合)を抽出することができる。
図30は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合された処理環境のブロック図であり、更に別の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を使用することにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする。このシステムは、多数のデバイス(例えば、デバイスA、デバイスB等)上に多数の実行プログラム(例えば、プログラムP−A、プログラムP−B等)を備えており、一部のプログラムがプールを使用してまたはプールを通じて他のプログラムの内部状態にアクセスするシステムの一例に過ぎない。
殆どの双方向処理コンピュータ・システムは、多くのプログラムを備えており、これらは、1台のマシンまたは多数のマシン上で互いに一緒に走り、ネットワークを跨いで双方向処理を行う。実行時データが各プロセス内部に隠されアクセスするのが困難なので、マルチ・プログラム・システムは、構成設定、分析、およびデバッグするのが難しい。本明細書において記載する一実施形態の一般化したフレームワークおよびプラズマ構造は、実行中のプログラムがプールを通じてそれらのデータの多くを利用可能にするので、他のプログラムがそれらの状態を検査することができる。このフレームワークによって、従来のデバッガよりも柔軟なデバッギング・ツール、精巧なシステム保守ツール、および1つまたは複数のプログラムが通過した一連の状態を、人の操作者に詳細に分析させるように構成された可視化ハーネスを可能にする。
図30を参照すると、このフレームワークにおいて走るプログラム(例えば、プログラム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はプロセス・プールに書き込むだけでなく、そこから読み取りも行う)。
図31は、多数のデバイスを含み、これらが当該デバイスの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画像と、第2解像度を有する第2画像とを生成することを含む。
一実施形態のブロブの検出は、第1画像においてブロブを検出することを含む。
一実施形態のポーズの検出は、第2画像においてポーズを検出することを含む。
一実施形態の物体が人間の被験者の手であり、ポーズの検出および物体の追跡は、スケルトンを使用しない検出を含む。
この方法は、手が、人間の被験者の身体質量の中心からの測地線距離に関して極値に対応すると判定するステップを含む。
一実施形態のポーズの検出および物体の追跡は、フレーム毎の極値検出を含む。
一実施形態のポーズの検出は、検出された極値を人間の被験者の部分と照合することを含む。
この方法は、画像の第1深度画像において指向性ピークを検出することによって、極値候補を識別するステップを含む。
この方法は、潜在的な手を、極値候補に空間的に接続されたブロブとして識別するステップを含む。
この方法は、潜在的な手を、極値候補に空間的に接続されたブロブとして識別するステップを含む。
この方法は、処理ボリュームを制限するために予め指定された境界ボックスの使用を除外するステップを含む。
一実施形態のデータは、深度センサからのデータを含む。
この方法は、深度センサのデータを入力解像度から第1解像度にダウンサンプリングすることによって、第1深度画像を形成するステップを含む。
一実施形態の指向性ピークの検出は、複数の直交方向のいずれかにおいて、その空間的隣接画素よりも遠くに延びるピーク画素を識別するステップを含む。
一実施形態のブロブの検出は、各ピーク画素をブロブのシードとして指定し、最大の手のサイズによってブロブを拘束することを含む。
この方法は、最大の手のサイズを、サイズ値に、予想深度誤差を表す深度依存緩慢値を加えた値として確定するステップを含む。
一実施形態のサイズ値は、約300ミリメートル(mm)である。
一実施形態の深度誤差は、複数の隣接する生センサ読み取り値によって表される物理距離に対応する。
この方法は、ブロブ毎に、当該ブロブの境界から最も遠い画素を識別することによって、潜在的な手の中心を推定するステップを含む。
この方法は、掌の半径を使用して各ブロブを間引きするステップを含む。
一実施形態の間引きは手の画素を含み、人間の被験者の他の部分に対応する画素を除外する。
一実施形態の掌の半径は、約200mmである。
この方法は、一実施形態のブロブを拡張する拡張画素を識別するステップを含む。
この方法は、各ブロブの外側境界を探し、拡張画素を識別するステップを含む。
一実施形態の拡張画素は、ブロブの画素と同様の深度を有しブロブに隣接する画素を含む。
この方法は、拡張画素を分析して、境界長に対して小さな領域を求めるステップを含む。
この方法は、切断された拡張領域を有するブロブを間引くステップを含む。
一実施形態の有効な手のブロブにおいて、拡張領域は人間の被験者の手首に対応する。
一実施形態の物体の追跡は、第1画像におけるブロブを手の既存のトラックと照合することを含む。
この方法は、ブロブの重心と現在の速度によって拘束されるトラックの軌跡との間の最少距離にしたがって、各ブロブ/トラック対に採点するステップを含む。
この方法は、全ての一致にわたって総合スコアを最小化することによって、ブロブとトラックとの間における関連付けを最適化するステップを含む。
一実施形態の総合スコアの最小化は、スコア閾値を使用し、ブロブ/トラック対のスコアが閾値を超過するとき、少なくとも1つのブロブ/トラックが不一致である(unmatch)。
一実施形態のスコア閾値は、約250mmである。
この方法は、残りの不一致ブロブを既存のトラックと比較するステップを含む。
この方法は、不一致ブロブが既存のトラックに空間的に近接するとき、不一致ブロブを既存のトラックに二次一致ブロブとして追加するステップを含む。
一実施形態の複数のブロブは、1つのトラックに関連付けられる。
この方法は、新たなトラックをシードするために、任意の残りの不一致ブロブを使用するステップを含む。
この方法は、古いトラックを間引くために、任意の残りの不一致ブロブを使用するステップを含む。
一実施形態のポーズの検出は、画像の第2深度画像を使用して、手のトラックに対応する画素を識別することを含む。
この方法は、深度センサのデータを入力解像度から第2解像度にダウンサンプリングすることによって、第2深度画像を形成するステップを含む。
この方法は、第1深度画像の対応する画素からある深度距離以内にある各画素において、接続成分検索(connected component search)をシードすることによって、画素を識別するステップを含み、接続成分は、極値候補に空間的に接続された第1深度画像のブロブを含む。
この方法は、識別された画素を使用して、手の中心を再度推定するステップを含み、再推定は、相対的に更に高い感度を有する三次元位置推定値を与える。
この方法は、各ブロブを複数の物体形状の内1つとして分類するステップを含み、複数の物体形状が複数の手の形状を含む。
一実施形態の分類は、ランダム化判断フォーレストを使用する。
一実施形態の各判断フォーレストは、複数の判断ツリーを含み、各ブロブの最終的な分類は、複数の判断ツリーにわたる結果を併合することによって計算される。
一実施形態の複数の判断ツリーがランダム化される。
一実施形態の複数の手形状の1つとして分類するステップは、複数の画像特徴の集合の使用を含む。
一実施形態の第1画像特徴集合は、全体的画像統計を含む。
一実施形態の全体的画像統計は、ブロブ輪郭によってカバーされる画素のパーセンテージ、検出された指先の数、ブロブの重心から指先までの平均角度、および指先の平均角度の内少なくとも1つを含む。
この方法は、高い正の湾曲の領域を識別することによって、各ブロブの輪郭から指先を検出するステップを含む。
一実施形態の第2画像特徴集合は、その全サイズによって正規化されたブロブの境界ボックス内部において各格子によってカバーされる数の画素を含む。
この方法は、各ブロブを予め指定された格子サイズにサブサンプリングするステップを含む。
一実施形態の第3画像特徴集合は、ブロブの境界ボックス内部における各格子の個々のセルの各対に対する平均深度間の差を含む。
一実施形態の第4画像特徴集合は、第1画像特徴集合と、第2画像特徴集合と、第3画像特徴集合との組み合わせを含む。
拡張領域が識別されたときに、拡張領域の中心をブロブの重心に接続するベクトルに基づいて、一実施形態の手形状の方位を推定するステップを含む。
一実施形態のセンサは、深度センサを含む。
一実施形態の深度センサは、物体の成分とセンサとの間の距離のデータを出力する赤外線(IR)深度センサである。
一実施形態のセンサは、物体を赤外線光ビームで照明する赤外線(IR)発光体を含む。
一実施形態のセンサは、ビデオ・カメラを含む。
一実施形態のビデオ・カメラは、マルチチャネル・データを出力するカラー・カメラである。
本明細書において説明した実施形態は、身体の四肢のセンサ・データを受信するステップを含む方法を含む。この方法は、センサ・データから、第1解像度を有する第1画像を生成するステップを含む。この方法は、第1画像において複数のブロブを検出するステップを含む。この方法は、複数のブロブを四肢のトラックと関連付けるステップを含む。この方法は、センサ・データから第2解像度を有する第2画像を生成するステップを含む。この方法は、第2画像を使用して、複数のブロブの内各ブロブを複数の手形状の内1つとして分類するステップを含む。
本明細書において説明した実施形態は、身体の四肢のセンサ・データを受信するステップと、センサ・データから、第1解像度を有する第1画像を生成するステップと、第1画像において複数のブロブを検出するステップと、複数のブロブを四肢のトラックと関連付けるステップと、センサ・データから第2解像度を有する第2画像を生成するステップと、第2画像を使用して、複数のブロブの内各ブロブを複数の手形状の内1つとして分類するステップとを含む方法を含む。
本明細書において説明した実施形態は、センサに結合されたプロセッサ上で実行するジェスチャ・インターフェース・アプリケーションを含むシステムを含む。このジェスチャ・インターフェース・アプリケーションは、センサによって検出された物体に対応するデータをセンサから受信する。このジェスチャ・インターフェース・アプリケーションは、データの各フレームから画像を生成する。これらの画像は、複数の解像度を表す。このジェスチャ・インターフェース・アプリケーションは、画像においてブロブを検出し、ブロブを物体のトラックと関連付けることによって物体を追跡する。このジェスチャ・インターフェース・アプリケーションは、各ブロブを複数の物体形状の内の1つに対応するものとして分類することによって物体のポーズを検出する。このジェスチャ・インターフェース・アプリケーションは、ポーズおよびトラックに応答してジェスチャ信号を生成し、このジェスチャ信号によってインターフェース・システムに結合されたコンポーネントを制御する。
本明細書において説明した実施形態は、センサに結合されたプロセッサ上で実行するジェスチャ・インターフェース・アプリケーションを含むシステムを含み、このジェスチャ・インターフェース・アプリケーションが、センサによって検出された物体に対応するデータをセンサから受信し、データの各フレームから画像を生成し、画像が複数の解像度を表し、画像においてブロブを検出し、ブロブを物体のトラックと関連付けることによって物体を追跡し、各ブロブを複数の物体形状の内の1つに対応するものとして分類することによって物体のポーズを検出し、ポーズおよびトラックに応答してジェスチャ信号を生成し、ジェスチャ信号によってインターフェース・システムに結合されたコンポーネントを制御する。
一実施形態のポーズおよびトラックの検出は、物体の三次元構造に基づく。
一実施形態のポーズおよびトラックの検出は、リアル・タイム局所セグメント化と、センサの深度データを使用する物体検出とを含む。
一実施形態の画像の生成は、少なくとも、第1解像度を有する第1画像と、第2解像度を有する第2画像とを生成することを含む。
一実施形態のブロブの検出は、第1画像においてブロブを検出することを含む。
一実施形態のポーズの検出は、第2画像においてポーズを検出することを含む。
一実施形態の物体は、人間の被験者の手であり、ポーズの検出および物体の追跡は、スケルトンを使用しない検出を含む。
このシステムは、手が、人間の被験者の身体質量の中心からの測地線距離に関して極値に対応することを判定することを含む。
一実施形態のポーズの検出および物体の追跡は、フレーム毎の極値検出を含む。
一実施形態のポーズの検出は、検出された極値を人間の被験者の部分と照合することを含む。
このシステムは、画像の第1深度画像において指向性ピークを検出することによって、極値候補を識別することを含む。
このシステムは、潜在的な手を、極値候補に空間的に接続されたブロブとして識別することを含む。
このシステムは、処理ボリュームを制限するために予め指定された境界ボックスの使用を除外することを含む。
一実施形態のデータは、深度センサからのデータを含む。
このシステムは、深度センサのデータを入力解像度から第1解像度にダウンサンプリングすることによって、第1深度画像を形成することを含む。
一実施形態の指向性ピークの検出は、複数の直交方向のいずれかにおいて、その空間的隣接画素よりも遠くに延びるピーク画素を識別することを含む。
一実施形態のブロブの検出は、各ピーク画素をブロブのシードとして指定し、最大の手のサイズによってブロブを拘束することを含む。
このシステムは、最大の手のサイズを、サイズ値に、予想深度誤差を表す深度依存緩慢値を加えた値として確定することを含む。
一実施形態のサイズ値は、約300ミリメートル(mm)である。
一実施形態の深度誤差は、複数の隣接する生センサ読み取り値によって表される物理距離に対応する。
このシステムは、ブロブ毎に、当該ブロブの境界から最も遠い画素を識別することによって、潜在的な手の中心を推定することを含む。
このシステムは、掌の半径を使用して各ブロブを間引きすることを含む。
一実施形態の間引きは、手の画素を含み、人間の被験者の他の部分に対応する画素を除外する。
一実施形態の掌の半径は、約200mmである。
このシステムは、ブロブを拡張する拡張画素を識別することを含む。
このシステムは、各ブロブの外側境界を探し、拡張画素を識別すること。
一実施形態の拡張画素は、ブロブの画素と同様の深度を有する、ブロブに隣接する画素を含む。
このシステムは、拡張画素を分析して、境界長に対して小さな領域を求めることを含む。
このシステムは、切断された拡張領域を有するブロブを間引くことを含む。
有効な手のブロブにおいて、一実施形態の拡張領域は、人間の被験者の手首に対応する。
一実施形態の物体の追跡は、第1画像におけるブロブを、手の既存のトラックと照合することを含む。
このシステムは、ブロブの重心と現在の速度によって拘束されるトラックの軌跡との間の最少距離にしたがって、各ブロブ/トラック対に採点することを含む。
このシステムは、全ての一致(match)にわたって総合スコアを最小化することによって、ブロブとトラックとの間における関連付けを最適化することを含む。
一実施形態の総合スコアの最小化は、スコア閾値を使用し、ブロブ/トラック対のスコアが閾値を超過するとき、少なくとも1つのブロブ/トラックが不一致である。
一実施形態のスコア閾値は、約250mmである。
このシステムは、残りの不一致ブロブを既存のトラックと比較することを含む。
このシステムは、不一致ブロブが既存のトラックに空間的に近接するとき、不一致ブロブを既存のトラックに二次一致ブロブとして追加することを含む。
一実施形態の複数のブロブは、1つのトラックに関連付けられる。
このシステムは、新たなトラックをシードするために、任意の残りの不一致ブロブを使用することを含む。
このシステムは、古いトラックを間引くために、任意の残りの不一致ブロブを使用することを含む。
一実施形態のポーズの検出は、画像の第2深度画像を使用して、手のトラックに対応する画素を識別することを含む。
このシステムは、深度センサのデータを入力解像度から第2解像度にダウンサンプリングすることによって、第2深度画像を形成することを含む。
このシステムは、第1深度画像の対応する画素からある深度距離以内にある各画素において、接続成分検索(connected component search)をシードすることによって、画素を識別することを含み、接続成分は、極値候補に空間的に接続された第1深度画像のブロブを含む。
このシステムは、識別された画素を使用して、手の中心を再度推定することを含み、再推定は、相対的に更に高い感度を有する三次元位置推定値を与える。
このシステムは、各ブロブを複数の物体形状の内1つとして分類することを含み、複数の物体形状が複数の手の形状を含む。
一実施形態の分類は、ランダム化判断フォーレストを使用する。
一実施形態の各判断フォーレストは、複数の判断ツリーを含み、各ブロブの最終的な分類は、複数の判断ツリーにわたる結果を併合することによって計算される。
一実施形態の複数の判断ツリーは、ランダム化される。
一実施形態の複数の手形状の1つとして分類することは、複数の画像特徴の集合の使用を含む。
一実施形態の第1画像特徴集合は、全体的画像統計を含む。
一実施形態の全体的画像統計は、ブロブ輪郭によってカバーされる画素のパーセンテージ、検出された指先の数、ブロブの重心から指先までの平均角度、および指先の平均角度の内少なくとも1つを含む。
このシステムは、高い正の湾曲の領域を識別することによって、各ブロブの輪郭から指先を検出することを含む。
一実施形態の第2画像特徴集合は、その全サイズによって正規化されたブロブの境界ボックス内部において各格子によってカバーされる数の画素を含む。
このシステムは、各ブロブを予め指定された格子サイズにサブサンプリングすることを含む。
一実施形態の第3画像特徴集合は、ブロブの境界ボックス内部における各格子の個々のセルの各対に対する平均深度間の差を含む。
一実施形態の第4画像特徴集合は、第1画像特徴集合と、第2画像特徴集合と、第3画像特徴集合との組み合わせを含む。
このシステムは、拡張領域が識別されたときに、拡張領域の中心をブロブの重心に接続するベクトルに基づいて、手形状の方位を推定することを含む。
一実施形態のセンサは、深度センサを含む。
一実施形態の深度センサは、物体の成分とセンサとの間の距離のデータを出力する赤外線(IR)深度センサである。
一実施形態のセンサは、物体を赤外線光ビームで照明する赤外線(IR)発光体を含む。
一実施形態のセンサは、ビデオ・カメラを含む。
一実施形態のビデオ・カメラは、マルチチャネル・データを出力するカラー・カメラである。
本明細書において説明した実施形態は、センサに結合されたプロセッサ上で実行する検出および追跡アルゴリズムを含むシステムを含む。この検出および追跡アルゴリズムはジェスチャ・インターフェースに結合される。この検出および追跡アルゴリズムは、身体の四肢のセンサ・データを受信する。この検出および追跡アルゴリズムは、センサ・データから、第1解像度を有する第1画像を生成する。この検出および追跡アルゴリズムは、第1画像において複数のブロブを検出する。この検出および追跡アルゴリズムは、複数のブロブを四肢のトラックと関連付ける。この検出および追跡アルゴリズムは、センサ・データから第2解像度を有する第2画像を生成する。この検出および追跡アルゴリズムは、第2画像を使用して、複数のブロブの内各ブロブを複数の手形状の内1つとして分類する。
本明細書において説明した実施形態は、センサに結合されたプロセッサ上で実行する検出および追跡アルゴリズムを含むシステムを含み、検出および追跡アルゴリズムがジェスチャ・インターフェースに結合され、この検出および追跡アルゴリズムは、身体の四肢のセンサ・データを受信し、センサ・データから、第1解像度を有する第1画像を生成し、第1画像において複数のブロブを検出し、複数のブロブを四肢のトラックと関連付け、センサ・データから第2解像度を有する第2画像を生成し、第2画像を使用して、複数のブロブの内各ブロブを複数の手形状の内1つとして分類する。
本明細書において記載したシステムおよび方法は、処理システムを含む、および/または処理システムの下で実行する、および/または処理システムと連動して実行する。処理システムは、当技術分野では周知のように、互いに動作するプロセッサ・ベースのデバイスまたは計算デバイスのあらゆる集合体、あるいは処理システムまたはデバイスのコンポーネントを含む。例えば、処理システムは、携帯用コンピュータ、通信ネットワークにおいて動作する携帯用通信デバイス、および/またはネットワーク・サーバの1つ以上を含むことができる。携帯用コンピュータは、パーソナル・コンピュータ、セルラ電話機、パーソナル・ディジタル・アシスタント、携帯用計算デバイス、および携帯用通信デバイスの中から選択した多数のデバイスおよび/またはデバイスの組み合わせのいずれでも可能であるが、そのように限定されるのではない。処理システムは、それよりも大きなコンピュータ・システムの中にあるコンポーネントを含むことができる。
一実施形態の処理システムは、少なくとも1つのプロセッサと、少なくとも1つのメモリ・デバイスまたはサブシステムとを含む。また、処理システムは、少なくとも1つのデータベースを含むか、またはこれに結合することができる。「プロセッサ」という用語は、本明細書において一般に使用する場合、1つ以上の中央演算装置(CPU)、ディジタル信号プロセッサ(DSP)、特定用途集積回路(ASIC)等のような、あらゆる論理演算装置を指す。プロセッサおよびメモリは、1つのチップ上にモノリシックに集積することができ、多数のチップまたはホスト・システムのコンポーネント間で分散することができ、および/またはアルゴリズムの何らかの組み合わせによって提供することができる。本明細書において記載した方法は、ソフトウェア・アルゴリズム(1つまたは複数)、プログラム、ファームウェア、ハードウェア、コンポーネント、回路の1つ以上で、いずれの組み合わせでも実現することができる。
本明細書において記載したシステムおよび方法を具体化するシステム・コンポーネントは、一緒に配置すること、または別個の位置に配置することができる。したがって、本明細書において記載したシステムおよび方法を具現化するシステム・コンポーネントは、単一のシステム、多数のシステム、および/または地理的に離れたシステムのコンポーネントとすることができる。また、これらのコンポーネントは、単一のシステム、多数のシステム、および/または地理的に離れたシステムのサブコンポーネントまたはサブシステムとすることもできる。これらのコンポーネントは、ホスト・システムの1つ以上のその他のコンポーネント、またはホスト・システムに結合されたシステムに結合することができる。
通信経路は、システム・コンポーネントを結合し、コンポーネント間においてファイルを伝達または転送するあらゆる媒体を含む。通信経路は、ワイヤレス接続、有線接続、混成ワイヤレス/有線接続を含む。また、通信経路は、ローカル・エリア・ネットワーク(LAN)、都市エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、企業固有ネットワーク、事務所間またはバックエンド・ネットワーク、およびインターネットを含むネットワークへの結合または接続も含む。更に、通信経路は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびCD−ROMディスクのような、リムーバブル固定媒体、ならびにフラッシュRAM、ユニバーサル・シリアル・バス(USB)接続、RS−232接続、電話回線、バス、および電子メール・メッセージを含む。
文脈が特に明確に要求しない限り、説明全体を通じて、「備える」(comprise)、「備えている」(comprising)等の単語は、排他的または網羅的な意味とは逆に、包含的意味で解釈することとする。即ち、「含むがそれに限定されない」という意味である。また、単数または複数を使用する単語は、それぞれ、複数または単数も含むこととする。加えて、「ここでは」(herein)、「以下では」(hereunder)、「以上」(above)、「以下」(below)および同様の趣旨の単語は、本願のいずれかの特定部分ではなく、本願全体を指すこととする。「または」という単語が2つ以上の項目の羅列に関して使用される場合、その単語は以下の単語の解釈全てに及ぶこととする。羅列における項目のいずれか、羅列における項目全て、および羅列における項目のあらゆる組み合わせ。
以上における処理環境の実施形態の説明は、網羅的であることも、記載したシステムおよび方法を、開示した形態そのものに限定することも意図していない。具体的な実施形態およびその例は、本明細書では例示の目的で記載したが、その他のシステムおよび方法の範囲内において、種々の同等な変更も可能であることは、当業者であれば認められよう。本明細書において提案した教示は、前述のシステムおよび方法だけでなく、他の処理システムおよび方法にも適用することができる。
以上で説明した種々の実施形態の要素および動作(act)を組み合わせて、更に別の実施形態を提案することができる。これらおよびその他の変更は、以上に詳細に記載した説明を参照すれば、実施形態に対して行うことができる。
Claims (126)
- 方法であって、
センサによって検出された物体に対応するデータを前記センサから受信するステップと、
前記データの各フレームから画像を生成するステップであって、前記画像が複数の解像度を表す、ステップと、
前記画像においてブロブを検出し、前記ブロブを前記物体のトラックと関連付けることによって、前記物体を追跡するステップと、
各ブロブを複数の物体形状の内の1つに対応するものとして分類することによって、前記物体のポーズを検出するステップと、
前記ポーズおよびトラックに応答して、ジェスチャ・インターフェースを制御するステップと、
を含む、方法。 - 請求項1記載の方法において、前記ポーズおよびトラックの検出が、前記物体の三次元構造に基づく、方法。
- 請求項1記載の方法において、前記ポーズおよびトラックの検出が、リアル・タイム局所セグメント化と、前記センサの深度データを使用する物体検出とを含む、方法。
- 請求項1記載の方法において、前記画像の生成が、少なくとも、第1解像度を有する第1画像と、第2解像度を有する第2画像とを生成することを含む、方法。
- 請求項4記載の方法において、前記ブロブの検出が、前記第1画像において前記ブロブを検出することを含む、方法。
- 請求項5記載の方法において、前記ポーズの検出が、前記第2画像において前記ポーズを検出することを含む、方法。
- 請求項1記載の方法において、 前記物体が人間の被験者の手であり、前記ポーズの検出および前記物体の追跡が、スケルトンを使用しない検出を含む、方法。
- 請求項7記載の方法であって、前記手が、前記人間の被験者の身体質量の中心からの測地線距離に関して極値に対応する、方法。
- 請求項7記載の方法において、前記ポーズの検出および前記物体の追跡が、フレーム毎の極値検出を含む、方法。
- 請求項9記載の方法において、前記ポーズの検出が、前記検出された極値を前記人間の被験者の部分と照合することを含む、方法。
- 請求項9記載の方法であって、前記画像の第1深度画像において指向性ピークを検出することによって、極値候補を識別するステップを含む、方法。
- 請求項11記載の方法であって、潜在的な手を、前記極値候補に空間的に接続されたブロブとして識別するステップを含む、方法。
- 請求項12記載の方法であって、処理ボリュームを制限するために予め指定された境界ボックスの使用を除外するステップを含む、方法。
- 請求項11記載の方法において、前記データが深度センサからのデータを含む、方法。
- 請求項14記載の方法であって、前記深度センサのデータを入力解像度から第1解像度にダウンサンプリングすることによって、前記第1深度画像を形成するステップを含む、方法。
- 請求項11記載の方法において、前記指向性ピークの検出が、前記複数の直交方向のいずれかにおいて、その空間的隣接画素よりも遠くに延びるピーク画素を識別するステップを含む、方法。
- 請求項16記載の方法において、前記ブロブの検出が、各ピーク画素をブロブのシードとして指定し、最大の手のサイズによって前記ブロブを拘束することを含む、方法。
- 請求項17記載の方法であって、前記最大の手のサイズを、サイズ値に、予想深度誤差を表す深度依存緩慢値を加えた値として確定するステップを含む、方法。
- 請求項18記載の方法において、前記サイズ値が約300ミリメートル(mm)である、方法。
- 請求項18記載の方法において、前記深度誤差が、複数の隣接する生センサ読み取り値によって表される物理距離に対応する、方法。
- 請求項17記載の方法であって、ブロブ毎に、当該ブロブの境界から最も遠い画素を識別することによって、潜在的な手の中心を推定するステップを含む、方法。
- 請求項21記載の方法であって、掌の半径を使用して各ブロブを間引きするステップを含む、方法。
- 請求項22記載の方法において、前記間引きが、手の画素を含み、前記人間の被験者の他の部分に対応する画素を除外する、方法。
- 請求項22記載の方法において、前記掌の半径が約200mmである、方法。
- 請求項22記載の方法であって、前記ブロブを拡張する拡張画素を識別するステップを含む、方法。
- 請求項25記載の方法であって、各ブロブの外側境界を探し、拡張画素を識別するステップを含む、方法。
- 請求項25記載の方法において、前記拡張画素が、前記ブロブの画素と同様の深度を有する、前記ブロブに隣接する画素を含む、方法。
- 請求項25記載の方法であって、前記拡張画素を分析して、境界長に対して小さな領域を求めるステップを含む、方法。
- 請求項28記載の方法であって、切断された拡張領域を有するブロブを間引くステップを含む、方法。
- 請求項29記載の方法において、有効な手のブロブにおいて、前記拡張領域が前記人間の被験者の手首に対応する、方法。
- 請求項25記載の方法において、前記物体の追跡が、前記第1画像におけるブロブを、前記手の既存のトラックと照合することを含む、方法。
- 請求項31記載の方法であって、前記ブロブと現在の速度によって拘束される前記トラックの軌跡との間の最少距離にしたがって、各ブロブ/トラック対に採点するステップを含む、方法。
- 請求項32記載の方法であって、全ての一致にわたって総合スコアを最小化することによって、前記ブロブとトラックとの間における関連付けを最適化するステップを含む、方法。
- 請求項33記載の方法において、前記総合スコアの最小化が、スコア閾値を使用し、前記ブロブ/トラック対のスコアが前記閾値を超過するとき、少なくとも1つのブロブ/トラックが不一致である、方法。
- 請求項34記載の方法において、前記スコア閾値が約250mmである、方法。
- 請求項31記載の方法であって、残りの不一致ブロブを既存のトラックと比較するステップを含む、方法。
- 請求項36記載の方法であって、不一致ブロブが前記既存のトラックに空間的に近接するとき、前記不一致ブロブを既存のトラックに二次一致ブロブとして追加するステップを含む、方法。
- 請求項37記載の方法において、複数のブロブが1つのトラックに関連付けられる、方法。
- 請求項36記載の方法であって、新たなトラックをシードするために、任意の残りの不一致ブロブを使用するステップを含む、方法。
- 請求項36記載の方法であって、古いトラックを間引くために、任意の残りの不一致ブロブを使用するステップを含む、方法。
- 請求項36記載の方法において、前記ポーズの検出が、前記画像の第2深度画像を使用して、前記手のトラックに対応する画素を識別することを含む、方法。
- 請求項41記載の方法であって、前記深度センサのデータを入力解像度から第2解像度にダウンサンプリングすることによって、前記第2深度画像を形成するステップを含む、方法。
- 請求項41記載の方法であって、前記第1深度画像の対応する画素からある深度距離以内にある各画素において、接続成分検索(connected component search)をシードすることによって、前記画素を識別するステップを含み、前記接続成分が、極値候補に空間的に接続された前記第1深度画像のブロブを含む、方法。
- 請求項43記載の方法であって、前記識別された画素を使用して、前記手の中心を再度推定するステップを含み、前記再推定が、相対的に更に高い感度を有する三次元位置推定値を与える、方法。
- 請求項41記載の方法であって、各ブロブを前記複数の物体形状の内1つとして分類するステップを含み、前記複数の物体形状が複数の手の形状を含む、方法。
- 請求項45記載の方法において、前記分類が、ランダム化判断フォーレストを使用する、方法。
- 請求項46記載の方法において、各判断フォーレストが、複数の判断ツリーを含み、各ブロブの最終的な分類が、前記複数の判断ツリーにわたる結果を併合することによって計算される、方法。
- 請求項47記載の方法において、前記複数の判断ツリーがランダム化される、方法。
- 請求項45記載の方法において、前記複数の手形状の1つとして分類することが、複数の画像特徴の集合の使用を含む、方法。
- 請求項49記載の方法において、第1画像特徴集合が、全体的画像統計を含む、方法。
- 請求項50記載の方法において、前記全体的画像統計が、ブロブ輪郭によってカバーされる画素のパーセンテージ、検出された指先の数、ブロブの重心から前記指先までの平均角度、および前記指先の平均角度の内少なくとも1つを含む、方法。
- 請求項51記載の方法であって、高い正の湾曲の領域を識別することによって、各ブロブの輪郭から指先を検出するステップを含む、方法。
- 請求項50記載の方法において、第2画像特徴集合が、その全サイズによって正規化されたブロブの境界ボックス内部において各格子によってカバーされる数の画素を含む、方法。
- 請求項53記載の方法であって、各ブロブを予め指定された格子サイズにサブサンプリングするステップを含む、方法。
- 請求項53記載の方法において、第3画像特徴集合が、ブロブの境界ボックス内部における各格子の個々のセルの各対に対する平均深度間の差を含む、方法。
- 請求項55記載の方法において、第4画像特徴集合が、前記第1画像特徴集合と、前記第2画像特徴集合と、前記第3画像特徴集合との組み合わせを含む、方法。
- 請求項49記載の方法であって、拡張領域が識別されたときに、前記拡張領域の中心を前記ブロブの重心に接続するベクトルに基づいて、前記手形状の方位を推定するステップを含む、方法。
- 請求項1記載の方法において、前記センサが深度センサを含む、方法。
- 請求項58記載の方法において、前記深度センサが、前記物体の成分と前記センサとの間の距離のデータを出力する赤外線(IR)深度センサである、方法。
- 請求項59記載の方法において、前記センサが、前記物体を赤外線光ビームで照明する赤外線(IR)発光体を含む、方法。
- 請求項58記載の方法において、前記センサがビデオ・カメラを含む、方法。
- 請求項61記載の方法において、前記ビデオ・カメラが、マルチチャネル・データを出力するカラー・カメラである、方法。
- 方法であって、
身体の四肢のセンサ・データを受信するステップと、
前記センサ・データから、第1解像度を有する第1画像を生成するステップと、
前記第1画像において複数のブロブを検出するステップと、
前記複数のブロブを前記四肢のトラックと関連付けるステップと、
前記センサ・データから第2解像度を有する第2画像を生成するステップと、
前記第2画像を使用して、前記複数のブロブの内各ブロブを複数の手形状の内1つとして分類するステップと、
を含む、方法。 - センサに結合されたプロセッサ上で実行するジェスチャ・インターフェース・アプリケーションを含むシステムであって、前記ジェスチャ・インターフェース・アプリケーションが、前記センサによって検出された物体に対応するデータを前記センサから受信し、前記データの各フレームから画像を生成し、前記画像が複数の解像度を表し、前記画像においてブロブを検出し、前記ブロブを前記物体のトラックと関連付けることによって前記物体のポーズを検出し、各ブロブを複数の物体形状の内の1つに対応するものとして分類することによって前記物体のポーズを検出し、前記ポーズおよびトラックに応答してジェスチャ信号を生成し、前記ジェスチャ信号によって前記インターフェース・システムに結合されたコンポーネントを制御する、システム。
- 請求項64記載のシステムにおいて、前記ポーズおよびトラックの検出が、前記物体の三次元構造に基づく、システム。
- 請求項64記載のシステムにおいて、前記ポーズおよびトラックの検出が、リアル・タイム局所セグメント化と、前記センサの深度データを使用する物体検出とを含む、システム。
- 請求項64記載のシステムにおいて、前記画像の生成が、少なくとも、第1解像度を有する第1画像と、第2解像度を有する第2画像とを生成することを含む、システム。
- 請求項67記載のシステムにおいて、前記ブロブの検出が、前記第1画像において前記ブロブを検出することを含む、システム。
- 請求項68記載のシステムにおいて、前記ポーズの検出が、前記第2画像において前記ポーズを検出することを含む、システム。
- 請求項64記載のシステムにおいて、 前記物体が人間の被験者の手であり、前記ポーズの検出および前記物体の追跡が、スケルトンを使用しない検出を含む、システム。
- 請求項70記載のシステムであって、前記手が、前記人間の被験者の身体質量の中心からの測地線距離に関して極値に対応することを判定することを含む、システム。
- 請求項70記載のシステムにおいて、前記ポーズの検出および前記物体の追跡が、フレーム毎の極値検出を含む、システム。
- 請求項72記載のシステムにおいて、前記ポーズの検出が、前記検出された極値を前記人間の被験者の部分と照合することを含む、システム。
- 請求項72記載のシステムであって、前記画像の第1深度画像において指向性ピークを検出することによって、極値候補を識別することを含む、システム。
- 請求項74記載のシステムであって、潜在的な手を、前記極値候補に空間的に接続されたブロブとして識別することを含む、システム。
- 請求項75記載のシステムであって、処理ボリュームを制限するために予め指定された境界ボックスの使用を除外することを含む、システム。
- 請求項74記載のシステムにおいて、前記データが深度センサからのデータを含む、システム。
- 請求項77記載のシステムであって、前記深度センサのデータを入力解像度から第1解像度にダウンサンプリングすることによって、前記第1深度画像を形成することを含む、システム。
- 請求項74記載のシステムにおいて、前記指向性ピークの検出が、前記複数の直交方向のいずれかにおいて、その空間的隣接画素よりも遠くに延びるピーク画素を識別することを含む、システム。
- 請求項79記載のシステムにおいて、前記ブロブの検出が、各ピーク画素をブロブのシードとして指定し、最大の手のサイズによって前記ブロブを拘束することを含む、システム。
- 請求項80記載のシステムであって、前記最大の手のサイズを、サイズ値に、予想深度誤差を表す深度依存緩慢値を加えた値として確定することを含む、システム。
- 請求項81記載のシステムにおいて、前記サイズ値が約300ミリメートル(mm)である、システム。
- 請求項81記載のシステムにおいて、前記深度誤差が、複数の隣接する生センサ読み取り値によって表される物理距離に対応する、システム。
- 請求項80記載のシステムであって、ブロブ毎に、当該ブロブの境界から最も遠い画素を識別することによって、潜在的な手の中心を推定することを含む、システム。
- 請求項84記載のシステムであって、掌の半径を使用して各ブロブを間引きすることを含む、システム。
- 請求項85記載のシステムにおいて、前記間引きが、手の画素を含み、前記人間の被験者の他の部分に対応する画素を除外する、システム。
- 請求項85記載のシステムにおいて、前記掌の半径が約200mmである、システム。
- 請求項85記載のシステムであって、前記ブロブを拡張する拡張画素を識別することを含む、システム。
- 請求項88記載のシステムであって、各ブロブの外側境界を探し、前記拡張画素を識別することを含む、システム。
- 請求項88記載のシステムにおいて、前記拡張画素が、前記ブロブの画素と同様の深度を有する、前記ブロブに隣接する画素を含む、システム。
- 請求項88記載のシステムであって、 前記拡張画素を分析して、境界長に対して小さな領域を求めることを含む、システム。
- 請求項91記載のシステムであって、切断された拡張領域を有するブロブを間引くことを含む、システム。
- 請求項92記載のシステムにおいて、有効な手のブロブにおいて、前記拡張領域が前記人間の被験者の手首に対応する、システム。
- 請求項88記載のシステムにおいて、前記物体の追跡が、前記第1画像におけるブロブを、前記手の既存のトラックと照合することを含む、システム。
- 請求項94記載のシステムであって、前記ブロブと現在の速度によって拘束される前記トラックの軌跡との間の最少距離にしたがって、各ブロブ/トラック対に採点することを含む、システム。
- 請求項95記載のシステムであって、全ての一致にわたって総合スコアを最小化することによって、前記ブロブとトラックとの間における関連付けを最適化することを含む、システム。
- 請求項96記載のシステムにおいて、前記総合スコアの最小化が、スコア閾値を使用し、前記ブロブ/トラック対のスコアが前記閾値を超過するとき、少なくとも1つのブロブ/トラックが不一致である、システム。
- 請求項97記載のシステムにおいて、前記スコア閾値が約250mmである、システム。
- 請求項94記載のシステムであって、残りの不一致ブロブを既存のトラックと比較することを含む、システム。
- 請求項99記載のシステムであって、不一致ブロブが前記既存のトラックに空間的に近接するとき、前記不一致ブロブを既存のトラックに二次一致ブロブとして追加することを含む、システム。
- 請求項100記載のシステムにおいて、複数のブロブが1つのトラックに関連付けられる、システム。
- 請求項99記載のシステムであって、新たなトラックをシードするために、任意の残りの不一致ブロブを使用することを含む、システム。
- 請求項99記載のシステムであって、古いトラックを間引くために、任意の残りの不一致ブロブを使用することを含む、システム。
- 請求項99記載のシステムにおいて、前記ポーズの検出が、前記画像の第2深度画像を使用して、前記手のトラックに対応する画素を識別することを含む、システム。
- 請求項104記載のシステムであって、前記深度センサのデータを入力解像度から第2解像度にダウンサンプリングすることによって、前記第2深度画像を形成することを含む、システム。
- 請求項104記載のシステムであって、前記第1深度画像の対応する画素からある深度距離以内にある各画素において、接続成分検索(connected component search)をシードすることによって、前記画素を識別することを含み、前記接続成分が、極値候補に空間的に接続された前記第1深度画像のブロブを含む、システム。
- 請求項106記載のシステムであって、前記識別された画素を使用して、前記手の中心を再度推定することを含み、前記再推定が、相対的に更に高い感度を有する三次元位置推定値を与える、システム。
- 請求項104記載のシステムであって、各ブロブを前記複数の物体形象の内1つとして分類することを含み、前記複数の物体形状が複数の手の形状を含む、システム。
- 請求項108記載のシステムにおいて、前記分類が、ランダム化判断フォーレストを使用する、システム。
- 請求項109記載のシステムにおいて、各判断フォーレストが、複数の判断ツリーを含み、各ブロブの最終的な分類が、前記複数の判断ツリーにわたる結果を併合することによって計算される、システム。
- 請求項110記載のシステムにおいて、前記複数の判断ツリーがランダム化される、システム。
- 請求項108記載のシステムにおいて、前記複数の手形状の1つとして分類することが、複数の画像特徴の集合の使用を含む、システム。
- 請求項112記載のシステムにおいて、第1画像特徴集合が、全体的画像統計を含む、システム。
- 請求項113記載のシステムにおいて、前記全体的画像統計が、ブロブ輪郭によってカバーされる画素のパーセンテージ、検出された指先の数、ブロブの重心から前記指先までの平均角度、および前記指先の平均角度の内少なくとも1つを含む、システム。
- 請求項114記載のシステムであって、高い正の湾曲の領域を識別することによって、各ブロブの輪郭から指先を検出することを含む、システム。
- 請求項113記載のシステムにおいて、第2画像特徴集合が、その全サイズによって正規化されたブロブの境界ボックス内部において各格子によってカバーされる数の画素を含む、システム。
- 請求項116記載のシステムであって、各ブロブを予め指定された格子サイズにサブサンプリングすることを含む、システム。
- 請求項116記載のシステムにおいて、第3画像特徴集合が、ブロブの境界ボックス内部における各格子の個々のセルの各対に対する平均深度間の差を含む、システム。
- 請求項118記載のシステムにおいて、第4画像特徴集合が、前記第1画像特徴集合と、前記第2画像特徴集合と、前記第3画像特徴集合との組み合わせを含む、システム。
- 請求項112記載のシステムであって、拡張領域が識別されたときに、前記拡張領域の中心を前記ブロブの重心に接続するベクトルに基づいて、前記手形状の方位を推定することを含む、システム。
- 請求項64記載のシステムにおいて、前記センサが深度センサを含む、システム。
- 請求項121記載のシステムにおいて、前記深度センサが、前記物体の成分と前記センサとの間の距離のデータを出力する赤外線(IR)深度センサである、システム。
- 請求項122記載のシステムにおいて、前記センサが、前記物体を赤外線光ビームで照明する赤外線(IR)発光体を含む、システム。
- 請求項121記載のシステムにおいて、前記センサがビデオ・カメラを含む、システム。
- 請求項124記載のシステムにおいて、前記ビデオ・カメラが、マルチチャネル・データを出力するカラー・カメラである、システム。
- センサに結合されたプロセッサ上で実行する検出および追跡アルゴリズムを含むシステムであって、前記検出および追跡アルゴリズムがジェスチャ・インターフェースに結合され、前記検出および追跡アルゴリズムが、身体の四肢のセンサ・データを受信することと、前記センサ・データから、第1解像度を有する第1画像を生成することと、前記第1画像において複数のブロブを検出することと、前記複数のブロブを前記四肢のトラックと関連付けることと、前記センサ・データから第2解像度を有する第2画像を生成することと、前記第2画像を使用して、前記複数のブロブの内各ブロブを複数の手形状の内1つとして分類することとを含む、システム。
Applications Claiming Priority (31)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261643124P | 2012-05-04 | 2012-05-04 | |
US61/643,124 | 2012-05-04 | ||
US201261655423P | 2012-06-04 | 2012-06-04 | |
US61/655,423 | 2012-06-04 | ||
US13/532,527 | 2012-06-25 | ||
US13/532,605 US20130076616A1 (en) | 2008-04-24 | 2012-06-25 | Adaptive tracking system for spatial input devices |
US13/532,527 US8941589B2 (en) | 2008-04-24 | 2012-06-25 | Adaptive tracking system for spatial input devices |
US13/532,628 US8941590B2 (en) | 2008-04-24 | 2012-06-25 | Adaptive tracking system for spatial input devices |
US13/532,605 | 2012-06-25 | ||
US13/532,628 | 2012-06-25 | ||
US201261711152P | 2012-10-08 | 2012-10-08 | |
US61/711,152 | 2012-10-08 | ||
US201261719109P | 2012-10-26 | 2012-10-26 | |
US61/719,109 | 2012-10-26 | ||
US201261722007P | 2012-11-02 | 2012-11-02 | |
US61/722,007 | 2012-11-02 | ||
US201261725449P | 2012-11-12 | 2012-11-12 | |
US61/725,449 | 2012-11-12 | ||
US201261747940P | 2012-12-31 | 2012-12-31 | |
US61/747,940 | 2012-12-31 | ||
US13/759,472 | 2013-02-05 | ||
US13/759,472 US9495228B2 (en) | 2006-02-08 | 2013-02-05 | Multi-process interactive systems and methods |
US201361785053P | 2013-03-14 | 2013-03-14 | |
US61/785,053 | 2013-03-14 | ||
US201361787650P | 2013-03-15 | 2013-03-15 | |
US201361787792P | 2013-03-15 | 2013-03-15 | |
US61/787,650 | 2013-03-15 | ||
US61/787,792 | 2013-03-15 | ||
US13/850,837 US9804902B2 (en) | 2007-04-24 | 2013-03-26 | Proteins, pools, and slawx in processing environments |
US13/850,837 | 2013-03-26 | ||
PCT/US2013/039764 WO2013166513A2 (en) | 2012-05-04 | 2013-05-06 | Cross-user hand tracking and shape recognition user interface |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015525381A true JP2015525381A (ja) | 2015-09-03 |
Family
ID=52441470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015510510A Pending JP2015525381A (ja) | 2012-05-04 | 2013-05-06 | 相互ユーザ手追跡および形状認識ユーザ・インターフェース |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2845084A4 (ja) |
JP (1) | JP2015525381A (ja) |
WO (1) | WO2013166513A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017068317A (ja) * | 2015-09-28 | 2017-04-06 | 富士通株式会社 | 生成方法、判別方法、プログラム及び情報処理装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9558455B2 (en) | 2014-07-11 | 2017-01-31 | Microsoft Technology Licensing, Llc | Touch classification |
CN111143182B (zh) * | 2019-12-27 | 2023-12-05 | 绿盟科技集团股份有限公司 | 一种进程行为的分析方法、装置及存储介质 |
CN113949906A (zh) * | 2021-12-01 | 2022-01-18 | 深圳市佰慧智能科技有限公司 | 一种基于视频联网共享的视频预览回放系统及管理方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0905644A3 (en) * | 1997-09-26 | 2004-02-25 | Matsushita Electric Industrial Co., Ltd. | Hand gesture recognizing device |
DE602006017812D1 (de) * | 2005-03-17 | 2010-12-09 | British Telecomm | Verfahren zur verfolgung von objekten in einer videosequenz |
US8249334B2 (en) * | 2006-05-11 | 2012-08-21 | Primesense Ltd. | Modeling of humanoid forms from depth maps |
US8103109B2 (en) * | 2007-06-19 | 2012-01-24 | Microsoft Corporation | Recognizing hand poses and/or object classes |
US8564534B2 (en) * | 2009-10-07 | 2013-10-22 | Microsoft Corporation | Human tracking system |
US8818027B2 (en) * | 2010-04-01 | 2014-08-26 | Qualcomm Incorporated | Computing device interface |
US8750573B2 (en) * | 2010-08-02 | 2014-06-10 | Sony Corporation | Hand gesture detection |
US9213890B2 (en) * | 2010-09-17 | 2015-12-15 | Sony Corporation | Gesture recognition system for TV control |
-
2013
- 2013-05-06 WO PCT/US2013/039764 patent/WO2013166513A2/en active Application Filing
- 2013-05-06 JP JP2015510510A patent/JP2015525381A/ja active Pending
- 2013-05-06 EP EP13784768.7A patent/EP2845084A4/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017068317A (ja) * | 2015-09-28 | 2017-04-06 | 富士通株式会社 | 生成方法、判別方法、プログラム及び情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2013166513A3 (en) | 2014-01-09 |
WO2013166513A2 (en) | 2013-11-07 |
EP2845084A2 (en) | 2015-03-11 |
EP2845084A4 (en) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10521021B2 (en) | Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes | |
US20200241650A1 (en) | Operating environment comprising multiple client devices, multiple displays, multiple users, and gestural control | |
US8890813B2 (en) | Cross-user hand tracking and shape recognition user interface | |
US8896531B2 (en) | Fast fingertip detection for initializing a vision-based hand tracker | |
US9495013B2 (en) | Multi-modal gestural interface | |
EP2427857B1 (en) | Gesture-based control systems including the representation, manipulation, and exchange of data | |
US8681098B2 (en) | Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes | |
JP5805537B2 (ja) | マルチプロセス・インタラクティブ・システムおよび方法 | |
US8669939B2 (en) | Spatial, multi-modal control device for use with spatial operating system | |
US9823747B2 (en) | Spatial, multi-modal control device for use with spatial operating system | |
JP2018077882A (ja) | 複数クライアント装置およびディスプレイを有する動作環境のための方法、およびシステム | |
JP5806615B2 (ja) | データ空間の主要次元をナビゲートするための制御システム | |
US8665213B2 (en) | Spatial, multi-modal control device for use with spatial operating system | |
US20140035805A1 (en) | Spatial operating environment (soe) with markerless gestural control | |
US20150309581A1 (en) | Cross-user hand tracking and shape recognition user interface | |
JP2015525381A (ja) | 相互ユーザ手追跡および形状認識ユーザ・インターフェース | |
WO2014058909A2 (en) | Operating environment comprising multiple client devices, multiple displays, multiple users, and gestural control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160506 |