図面では、同じ記号表示を有する要素は同じまたは同様の機能を有する。
以下の説明では、具体的な詳細を記載して、いくつかの実施形態について説明する。しかし、開示される実施形態は、これらの具体的な詳細の一部または全部を伴わずに実施され得ることが、当業者には明らかであろう。提示される具体的な実施形態は、例示的であることが意図されており、限定的であることは意図されていない。当業者は、本明細書で具体的に説明してはいないが、本開示の趣旨および範囲内にある他の物を実現し得る。
ジェスチャーは、たとえば、ハンズフリー状況またはアイズフリー状況において役に立つ場合がある。そのような状況では、ユーザは、デバイスを直接見ることもなく、デバイスを保持することすらしない場合があり、実際にデバイスを見たりデバイスを手に取ったりする代わりに、ジェスチャーを使用している。さらに、ユーザはデバイスを見ることもなくデバイスを保持することもない場合があるので、ユーザは、デバイスがどの向きにあるかがわからない場合があり、ジェスチャーが、左から右へのスワイプなどの方向依存性がある場合、デバイスは、ユーザが考えるジェスチャーが、左から右に進んでいると認識することなく、デバイスの向きのために実際には上から下に進んでいると認識する場合があるので、その向きがわからない場合、達成するのが難しい場合がある。したがって、デバイスの向きに依存しないジェスチャーに基づいてデバイス動作を実行することが可能なシステムおよび方法の必要がある。
図1は、いくつかの実施形態に従った処理デバイス100を示す図である。処理デバイス100は、iPhone(商標)などのスマートフォンなどのモバイルデバイス、またはiOS(商標)オペレーティングシステム、Android(商標)オペレーティングシステム、BlackBerry(商標)オペレーティングシステム、Microsoft(登録商標)Windows(登録商標)Phoneオペレーティングシステム、Symbian(商標)OS、もしくはwebOS(商標)を実行している他のモバイルデバイス、またはオペレーティングシステムを実装していないモバイルデバイスであり得る。処理デバイス100はまた、iPad(商標)などのタブレットコンピュータまたは前述のオペレーティングシステムのうちの1つを実行している他のタブレットコンピュータであり得る。処理デバイス100はまた、PCもしくはラップトップもしくはネットブック、ケーブルもしくは衛星コンテンツプロバイダによって提供されるようなセットトップボックス(STB)、またはNintendo(登録商標)Wii(商標)、Microsoft(登録商標)Xbox 360(商標)、もしくはSony(登録商標)PlayStation(商標)3などのビデオゲームシステムコンソール、または他のビデオゲームシステムコンソールであり得る。処理デバイス100は、ヘッドマウントディスプレイ(HMD)または他のウェアラブルコンピューティングデバイスであり得る。いくつかの実施形態では、処理デバイス100は、自動車に、たとえば、自動車のエンターテインメントセンターもしくはコンソールに実装されるか、またはヘルスケアデバイスに含まれるか、もしくは実装される。いくつかの実施形態によれば、処理デバイス100は、ジェスチャーを検出し、検出されたジェスチャーに部分的に基づいて動作を実行するために構成されたハードウェアおよび/またはソフトウェアの任意の適切な組合せを使用して実装され得る。特に、処理デバイス100は、1つまたは複数のプロセッサを有する、ジェスチャーを検出し、検出されたジェスチャーに部分的に基づいて動作を実行するために1つまたは複数のプロセッサが実行するための非一時的機械可読媒体上に記憶された命令を読み取ることが可能なハードウェアおよび/またはソフトウェアの任意の適切な組合せを含み得る。いくつかの一般的な形態の機械可読媒体としては、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD-ROM、任意の他の光媒体、パンチカード、紙テープ、穴のパターンを有する任意の他の物理媒体、RAM、PROM、EPROM、FLASH-EPROM、任意の他のメモリチップもしくはカートリッジ、および/または1つもしくは複数のプロセッサもしくはコンピュータが読み取るように適合された任意の他の媒体が挙げられる。
処理デバイス100は、ネットワークとの通信用に構成されたネットワークインターフェース構成要素102を含み得る。いくつかの実施形態に従って、ネットワークインターフェース構成要素102は、同軸ケーブル、光ファイバーケーブル、デジタル加入者回線(DSL)モデム、公衆交換電話網(PSTN)モデム、イーサネット(登録商標)デバイス、および/または様々な他のタイプの有線ネットワーク通信デバイスとインターフェースをとるように構成され得る。ネットワークインターフェース構成要素102は、1つまたは複数のワイヤレストランシーバを含むこともでき、各ワイヤレストランシーバは、分離可能型または一体型の、Wi-Fi(商標)、3G、4G、HSDPA、LTE、RF、NFCなどの異なるワイヤレスネットワーキングプロトコルに従って情報を送信および受信することが可能なアンテナを含むことができる。いくつかの実施形態に従って、処理デバイス100は、処理デバイス100内の様々な構成要素を相互接続し、様々な構成要素間で情報を通信するためのシステムバス104を含む。いくつかの実施形態では、バス104は、システムオンチップ(SoC)で実装され、チップおよび/または1つもしくは複数のプロセッサのコアにある様々な要素または構成要素を接続する。構成要素は、1つまたは複数のプロセッサ、中央処理ユニット(CPU)、画像信号プロセッサ(ISP)、マイクロコントローラ、またはデジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、ならびにアナログおよび/もしくはデジタル音響信号プロセッサを含み得る音響信号プロセッサであり得る処理構成要素106を含み得る。構成要素は、ランダムアクセスメモリ(RAM)に対応し得るシステムメモリ構成要素108、読取り専用メモリ(ROM)に対応し得る内部メモリ構成要素110、および光メモリ、磁気メモリまたはソリッドステートメモリに対応し得る外部またはスタティックメモリ112を含むこともできる。いくつかの実施形態に従って、処理デバイス100は、ユーザに情報を表示するためのディスプレイ構成要素114を含むこともできる。ディスプレイ構成要素114は、液晶ディスプレイ(LCD)画面、有機発光ダイオード(OLED)画面(アクティブマトリックスAMOLED画面を含む)、LED画面、プラズマディスプレイ、またはブラウン管(CRT)ディスプレイであり得る。ディスプレイ構成要素114は、処理デバイス100と統合される場合があり、または処理デバイス100とは別個のもので、処理デバイス100に結合される場合がある。処理デバイス100は、ユーザが情報を入力し、ディスプレイ構成要素114に沿ってナビゲートすることを可能にする入力/ナビゲーション制御構成要素116を含むこともできる。入力/ナビゲーション制御構成要素116は、たとえば、キーボードもしくはキーパッド、物理的かもしくは仮想的かにかかわらず、マウス、トラックボール、または他のそのようなデバイス、またはタッチ感知スクリーン、たとえば、容量性センサーベースのタッチスクリーン、近接物体を検出するためにエッジ全体にわたってもしくはエッジに沿って分散する光検出器を有するスクリーン、および/または超音波感知能力を有するスクリーンを含み得る。
処理デバイス100は、いくつかの実施形態によれば、図1に示すよりも多くの、または少ない構成要素を含み得る。たとえば、処理デバイス100は、システムメモリ構成要素108、内部メモリ構成要素110、および外部メモリ構成要素112のうちのいずれか1つまたは2つを含み得る。その上、図1に示す構成要素は、図1における1つまたは複数の他の構成要素に直接結合される場合があり、システムバス104の必要がなくなる。一般に、図1に示す構成要素は、本明細書で開示する実施形態を実行することが可能な処理デバイス100における構成要素の例として示されている。ただし、処理デバイス100は、より多くの、またはより少ない構成要素を有してもなお、本明細書で開示するいくつかの実施形態を実行することが可能であり得る。
処理デバイス100は、デバイス100および/またはその周辺装置に関連するデータをキャプチャする他のセンサー118を含むこともできる。センサー118、限定はしないが、マイクロフォンまたは音響センサー、カメラ、光センサー、近接センサー、圧力センサー、磁力計などを含み得る。センサー118は、個別に、もしくはセンサーアレイなどとの組合せで、または任意の他の組合せで使用され得る。センサー118は、互いに依存して、または互いに独立して動作することが可能であり得る。
センサー118は、加速度計および/またはジャイロスコープなどの慣性センサーを含むこともできる。加速度計は、処理デバイス100の加速度を検出することができ、ジャイロスコープは、デバイス100の向きを検出することができる。いくつかの実施形態によれば、加速度計によって検出される加速度は、処理デバイス100の運動もしくは動き、および/または処理デバイス100の向きの変化を示す場合がある。たとえば、検出される加速度は、ユーザが処理デバイス100を手に取ること、または処理デバイス100を動かすことを示す場合がある。同様に、ジャイロスコープによって検出されるデバイス100の向きの変化も、ユーザが処理デバイス100を手に取ること、または処理デバイス100を動かすことを示す場合がある。いくつかの実施形態では、センサー118は、デバイス100に関する情報を検出し、メモリ108〜112のうちのいずれかに記憶された命令に従ってその情報を処理するための処理構成要素106にその情報を送る場合がある。処理構成要素106は、提供された情報に基づいて、デバイスが動いているもしくは動いてきたか、動かされてきたか、または異なる向きにあるかを決定することができる。
処理デバイス100は、ジェスチャー検出センサー122を含むこともできる。ジェスチャー検出センサー122は、ユーザによって行われたジェスチャーを検出することが可能な任意のセンサーであり得る。いくつかの実施形態によれば、ジェスチャー検出センサー122は、カメラ、超音波トランスデューサ、ライトパイプ影検出器、マイクロ電気機械システム(MEMS)デバイス、赤外線センサー、1つもしくは複数の光近接場センサー、および/またはコンピュータ撮像のために構成されたセンサー、および/または周辺光センサー、あるいはジェスチャーを検出するように構成された他のセンサーであり得る。いくつかの実施形態によれば、ジェスチャーは、ジェスチャー検出センサー122によって検出され得るタッチレスジェスチャーまたは相互作用である場合があり、ユーザによって行われるジェスチャーは、ユーザがジェスチャー検出センサー122にタッチする必要なしに検出され得る。タッチレスジェスチャーの例は、ユーザの手がジェスチャー検出センサー122を覆うカバージェスチャー、または手がジェスチャー検出センサー122に近接してジェスチャー検出センサー122上を通過する「スワイプ」ジェスチャーを含み得る。いくつかの実施形態では、ジェスチャー検出センサー122「上」とは、ジェスチャー検出センサー122の検出場内を通過する手、または制御物体、または他の物体を指す場合がある。すなわち、手または他の物体は、たとえば、いくつかの実施形態では、ジェスチャーがデバイスのスクリーンと同じデバイス側面上にあるかどうか、またはジェスチャーが地表面に対してデバイス上の垂直方向に離間しているかどうかにかかわらず、手または他の物体がジェスチャー検出センサー122によって検出され得る領域内で動いている場合、ジェスチャー検出センサー122上を通過しているものと見なされ得る。
タッチレスジェスチャーは、ユーザの手ではなく制御物体によって行うこともできる。いくつかの実施形態では、ジェスチャー検出センサー122は、超音波周波数に敏感なマイクロフォンを含み得る。ジェスチャー検出センサー122は、制御物体の位置を追跡するのに使用される超音波を放射する超音波トランスデューサを含むこともでき、タッチレスジェスチャーは、制御物体の位置を経時的に監視することによって決定され得る。カメラを使用してジェスチャーを検出する実施形態の場合、カメラは可視光カメラまたは深度感知カメラ、たとえばMicrosoft(登録商標)Xbox(商標)Kinect(商標)カメラであり得る。カメラはまた、赤外線(IR)光または紫外線(UV)光を検出するように構成され得る。ジェスチャー検出センサー122はまた、ステレオカメラ、飛行時間(ToF)カメラ、またはユーザによって行われるジェスチャーを検出することが可能な他のカメラであり得る。ジェスチャー検出センサー122はまた、いくつかの実施形態では、Nintendo(登録商標)Wii(商標)WiiMote(商標)、またはSony(登録商標)PlayStation(商標)Move(商標)であり得る。いくつかの実施形態では、ジェスチャー検出センサー122は、上記で説明した、ユーザによって行われるジェスチャーを検出するために組み合わせて動作する1つまたは複数のジェスチャー検出センサーを含み得る。
いくつかの実施形態では、ジェスチャー検出プロセスは、ジェスチャー検出センサー122と組み合わせて動作するメモリ108〜112に記憶された命令に基づいて処理構成要素106によって実施され得る。ジェスチャー検出プロセスは、画像統計量の急激な変化を検出するためにジェスチャー検出センサー122によってキャプチャされた一連の画像または他の情報を処理することによってジェスチャーを検出し得る。本明細書で開示する実施形態は、メモリ108〜112のうちのいずれかに含まれる命令に基づいて処理構成要素106によって実行されているものとして説明されるが、いくつかの実施形態では、ジェスチャー検出センサー122は、メモリ、およびジェスチャー検出センサー122によってキャプチャする画像を処理することが可能であり得る1つまたは複数のプロセッサを含み得る。
処理構成要素106は、動作時、各キャプチャ画像に関する画像統計量を計算し得る。画像統計量は、ヒストグラム、平均輝度、輝度の分散などであり得る。次いで、処理構成要素106は、現在の画像統計量を前の画像統計量と比較することができるが、前の画像統計量は、現在のキャプチャ画像の直前の時間に取得された1つまたは複数のキャプチャ画像の組の画像統計量の組合せとして計算され得る。いくつかの実施形態では、処理構成要素106は、絶対差、統計量の組の各々の絶対差の和、またはヒストグラムの各ビンの絶対差の和を計算することによって画像統計量を比較することができ、それらの結果は、周辺光またはデバイスの動きから生じた差を除外するためにしきい値と比較され得る。しきい値を超える差は、ジェスチャー検出センサー122を遮蔽するジェスチャーを示す画像統計量の急激な変化として分類され得る。これは、ジェスチャー検出センサー122を単独で、または処理構成要素106と組み合わせて使用してジェスチャーを検出する一方法にすぎない。いくつかの実施形態では、ジェスチャー検出センサー122は、制御物体の位置を追跡するために処理デバイス100から超音波が放射され、ジェスチャーを検出するために制御物体の位置を経時的に監視することができる、超音波ジェスチャー検出センサーであり得る。
処理デバイス100は、近接センサー124を含むこともできる。近接センサー124は、物体がデバイス100に接近するときを検出するように構成され得る。いくつかの実施形態によれば、物体は、ユーザの手、ユーザによって保持されたスタイラス、または、たとえばジェスチャー検出センサー122が検出することができるようにユーザがデバイス100上を通過することができる他のデバイスに相当し得る制御物体であり得る。その上、近接センサー124は、物体がデバイス100の約20〜50cm内に来るときを検出するように構成され得る。いくつかの実施形態に従えば、近接センサー124は、1つまたは複数の超音波近接センサーであり得る。近接センサー124は、物体がデバイスに近接するとき、物体によって生成された熱を検出する赤外線熱センサーなどの1つまたは複数の熱センサーを含むこともできる。近接センサー124は、物体が、センサー上のまたはさもなければセンサーに関連する電極によって生成された電界に入るとき、導通するまたは部分的に導通する物体の存在を検出し得る、1つまたは複数の電界近接センサーを含むこともできる。近接センサー124は、物体による光の遮蔽の結果、周辺光を減少させる物体によって物体の存在を検出することができる周辺光センサーを含むこともできる。
近接センサー124およびジェスチャー検出センサー122は、処理デバイス100と別個の構成要素として図1に示されている。しかしながら、単一の構成要素は、近接度およびジェスチャーを検出することが可能であり得る。いくつかの実施形態では、近接センサー124は、ジェスチャー検出センサー122の構成要素としてジェスチャー検出センサー122に統合され得る。すなわち、ジェスチャーを検出することが可能な同じデバイスは、近接度を検出することも可能であり得る。同様に、ジェスチャー検出センサー122は、近接度を検出することが可能な同じデバイスがジェスチャーを検出することもできるように、近接センサー124の構成要素として近接センサー124に統合され得る。
いくつかの実施形態によれば、ジェスチャー検出センサー122は、処理構成要素106がプロンプトまたはアラートを生成するまでアクティブでない場合があるが、プロンプトまたはアラートに応答して動作を実行するためにジェスチャーが使用され得る。あるいは、ジェスチャー検出センサー122は、近接センサー124がデバイス100に近接した物体を検出するまでアクティブでない場合がある。いくつかの実施形態では、物体は、ユーザの手などの制御物体であり得る。さらに、ジェスチャー検出センサー122は、画像データを含む、ジェスチャーの存在、不在、および方向に関して処理構成要素106によって分析され得るデータのフレームをキャプチャするように構成され得る。いくつかの実施形態では、ジェスチャー検出センサー122は、所望の検出精度および電力節約などのファクターに基づいて増減し得る所定数のフレーム/秒をキャプチャするように構成され得る。たとえば、より多くのフレーム/秒をキャプチャすれば、より高い精度がもたらされるが、電力はより急速に使い果たされ得る一方、より少ないフレーム/秒をキャプチャすれば、より低い精度がもたらされるが、電力はさほど急速には使い果たされない。さらに、処理構成要素106は、可変レートでフレームを分析するように構成される場合があり、この可変レートは、電力を犠牲にして精度を改善するために上昇し得るが、精度を犠牲にして電力節約を改善するために低下し得る。いくつかの実施形態では、処理構成要素106は、電力を節約するために8フレームごとに1フレームでジェスチャーを探すように構成され得るが、このレートは、精度または電力節約を改善するために上昇または低下し得る。その上、フレームは、ジェスチャー検出センサー122中のバッファに、またはメモリ108〜112のいずれかに記憶される場合があり、必要な場合、ジェスチャー検出の精度の向上のためにアクセスされ得る。すなわち、処理構成要素106は、8フレームごとに1フレームのみを分析するように構成されるが、他の7フレームはバッファまたはメモリに記憶され、ジェスチャーの存在および方向を決定するための精度の向上のために、または考えられるもしくは部分的な検出されたジェスチャーを解決するために、処理構成要素106によってアクセスされ得る。
いくつかの実施形態によれば、ジェスチャー検出センサー122は、動作を実行するために、またはジェスチャーに関連付けられたコマンドを実行するためにユーザによって行われるジェスチャーを検出するように構成され得る。たとえば、ユーザは、ジェスチャー検出センサー122によって検出され、動作またはコマンドを検出されたタッチレスジェスチャーとマッチングさせるために、処理構成要素106によってジェスチャーテーブル中の既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーと比較される、タッチレスジェスチャーを実行し得る。いくつかの実施形態では、ジェスチャーテーブルは、既知のジェスチャーおよびジェスチャーと対応するコマンドまたは動作を含み得る。ジェスチャーテーブル中の既知のジェスチャーは、アプリケーション開発者、デバイスメーカー、ユーザによって定義される場合があるか、または、オペレーティングシステムによって定義される場合がある。いくつかの実施形態では、予測されるジェスチャーは、処理構成要素106が検出することを予測するジェスチャーである。たとえば、処理構成要素106が動作を実行するためにユーザからの入力を要求するプロンプトを生成する場合、処理構成要素106は、認識されるときに動作を実行させる一定のジェスチャーを定義し得る。一例は、デバイス100上で横方向のタッチレスジェスチャーを行うようにユーザに要求するアラートであり得る。処理構成要素106は、動作を実行するためにジェスチャーが実行されることを予測することができ、そのジェスチャーが実行されない場合、処理構成要素106は、いかなる動作も行わない場合がある。
図2は、いくつかの実施形態に従った、タッチレスジェスチャーを使用してコンピューティングデバイスと相互作用する例を示す図である。図2に示すように、ジェスチャー検出センサー122は、デバイス100および/またはジェスチャー検出センサー122上を通過する制御物体202によって行われるタッチレスジェスチャーを検出するように構成され得る。上記で説明したように、デバイス100およびジェスチャー検出センサー122の上とは、いくつかの実施形態では、デバイス、センサー、および/または制御物体の向きにかかわらず、ジェスチャー検出センサー122の検出場内を指す場合がある。たとえば、いくつかの実施形態では、デバイス100上とは、デバイスの向きにかかわらず、地表面からデバイス100の反対側にある場合がある。いくつかのそのような実施形態では、ユーザは、デバイスがたとえば超音波または後面カメラを使用してタッチレスジェスチャーを検出することができる場合、デバイスのスクリーンが下方に向いていても(たとえば、スクリーンが机またはテーブル上で下向きになり、その結果、ジェスチャーがスクリーンよりもデバイスの後面により近いとき)、デバイス上のタッチレスジェスチャーを実行し得る。いくつかの実施形態では、デバイス100上とは、デバイス100にほぼ平行な平面であり得る。いくつかの実施形態では、制御物体202によって行われるジェスチャーは、ディスプレイ構成要素114上での表示のために処理構成要素106によって生成されたアラートまたはプロンプト204に応答して行われる運動またはジェスチャーであり得る。その上、アラートまたはプロンプト204は、アラートまたはプロンプト204に関連付けられた動作を実行するために使用され得る、いくつかの実施形態において予測されるジェスチャーの方向206を提供し得る。たとえば、図2に示すように、ユーザは、アラートまたはプロンプト204を閉じるためにバー205を方向206にスライドさせることが予測される。その上、処理構成要素は、方向206の左から右へのスワイプタッチレスジェスチャーを、アラートまたはプロンプト204を閉じるためにバー205を方向206に効果的にスライドさせることだと認識するように構成され得る。
コンピューティングデバイス100は、デバイス100の長さおよび幅に対応する直交座標系208を定義し得る。いくつかの実施形態では、処理構成要素106は、検出されたタッチレスジェスチャーの認識を容易にするために検出されたタッチレスジェスチャーとマッチングする既知のタッチレスジェスチャーを見出そうとして、ジェスチャー検出センサー122によって検出されたタッチレスジェスチャーを、メモリ108〜112に記憶されたジェスチャーテーブル中の複数の定義済みの既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーと比較するように構成され得る。いくつかの実施形態では、ジェスチャーテーブル中の定義済みの既知のタッチレスジェスチャーおよび予測されるタッチレスジェスチャーは、座標系208に対して定義される。いくつかの実施形態では、ジェスチャーテーブル中の定義済みの既知のタッチレスジェスチャーおよび/または予測されるタッチレスジェスチャーは、2次元ジェスチャーであり、その結果、ジェスチャー検出センサーは、デバイス100に平行な平面内の制御物体の2次元運動に関する情報をキャプチャする。
図2に示すように、処理構成要素106によって生成されるアラートまたはプロンプト204は、プロンプトを閉じるためのバー205の方向206へのスライドなどの、ユーザの一定の挙動または行為を促すか、または要求する場合がある。いくつかの実施形態では、ジェスチャー検出センサー122は、タッチレスジェスチャーを検出するように構成される場合があり、処理構成要素106は、検出されたタッチレスジェスチャーを、アラートまたはプロンプト204と相互作用するために使用され得る既知のまたは予測されるタッチレスジェスチャーと比較するように構成される場合がある。たとえば、アラートまたはプロンプト204と相互作用するのに必要な運動にほぼ相当するものと処理構成要素106によって決定される、ジェスチャー検出センサー122によって検出されたタッチレスジェスチャーは、アラートまたはプロンプト204と相互作用するのに使用され得る。ジェスチャー検出センサー122が制御物体202を用いた方向210へのタッチレスジェスチャーを検出する場合、処理構成要素106は、方向210へのタッチレスジェスチャーがアラートまたはプロンプト204と相互作用するための既知のまたは予測されるタッチレスジェスチャーにほぼ相当すると決定することができ、その結果、アラートまたはプロンプト204を閉じることができる。
しかしながら、いくつかの場合では、コンピューティングデバイス100は、ユーザに知られていない、および/またはユーザから見て斜めである可能性がある向きで、机またはテーブルなどの表面上に置かれている場合がある。処理構成要素106が実行されたタッチレスジェスチャーをジェスチャーテーブル中の既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーとマッチングしようとする座標系208をコンピューティングデバイス100の向きが定義する場合があるので、たとえば、ユーザは、デバイスの向きのために、すなわち最初にその向きを決定するためにデバイス100を検査し、次いでタッチレスジェスチャーを実行し、その向きによって決定された座標系208をマッチングさせないとタッチレスジェスチャーをうまく実行することが難しい場合がある。
たとえば、図3Aに示すように、制御物体202は、コンピューティングデバイス100上を方向302に通過される場合がある。ジェスチャー検出センサー122は、方向302への運動を感知することができ、処理構成要素106は、制御物体202の方向302を決定し、その運動またはジェスチャーがジェスチャーテーブル中の既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーに相当するかどうかを決定することができる。いくつかの実施形態では、処理構成要素106は、最初のジェスチャーポイント(xi,yi)から最終的なジェスチャーポイント(xf,yf)までの径路に基づいて制御物体202によって行われるタッチレスジェスチャーの方向を決定し得る。いくつかの実施形態では、制御物体202によって行われるタッチレスジェスチャーの方向302は、たとえば、ジェスチャーの方向を示す、最初のジェスチャーポイント(xi,yi)から最終的なジェスチャーポイント(xf,yf)までの径路を決定するために、ジェスチャー検出センサー122によってキャプチャされた一連の連続画像における動きを検出することによって決定され得る。処理構成要素106は、各キャプチャ画像を下位領域の組に分割し、領域統計量の組を形成するために各下位領域に関する領域統計量を計算することができる。いくつかの実施形態では、下位領域は、画像の列、画像の行、または画像の格子セグメントを含み得る。領域統計量は、画像統計量と同様に、ヒストグラム、平均輝度、輝度の分散などであり得る。いくつかの実施形態では、処理構成要素106は、統計量の最小の差をもたらす変位を決定することができる。変位の組の各変位に関して、現在の画像の領域の画像統計量と、前の画像の変位した領域の対応する統計量との間で、絶対差分和を計算することができ、最小絶対差の変位が選択される。次いで、選択された変位に基づいて、方向および速度が計算され得る。いくつかの実施形態では、処理構成要素106は、領域統計量の急激な変化を検出し、方向および速度を決定するために各領域の急激な変化の時刻を比較する場合がある。これは、ジェスチャー検出センサー122を単独で、または処理構成要素106と組み合わせて使用してジェスチャーの方向を検出する一方法にすぎない。いくつかの実施形態では、ジェスチャー検出センサー122は、制御物体の位置を追跡するために処理デバイス100から超音波が放射され、ジェスチャーの方向を検出するために制御物体の位置を経時的に監視することができる、超音波ジェスチャー検出センサーであり得る。
上記で説明したプロセスに加えて、制御物体202によって行われるタッチレスジェスチャーの方向302は、他の方法によって決定され得る。たとえば、処理構成要素106は、アラートまたはプロンプト204を閉じるために右スワイプなどの、一定の方向のジェスチャーを予測し、検出されたタッチレスジェスチャーの方向が、予測された方向とほぼ同じ方向で実行されたと仮定することができる。したがって、タッチレスジェスチャーがどの方向で検出されたかにかかわらず、デバイスは、検出されたジェスチャーがユーザに対して右スワイプとして実行されたと仮定することができる。仮定される方向は、任意の数の方法で設定または構成され得る。たとえば、仮定される方向は、事前設定され、ユーザ設定され、および/またはアクティブなアプリケーションに依存する場合がある。いくつかの実施形態では、検出されたスワイプは、水平入力と垂直入力とを区別するために使用される場合があり、たとえば、スワイプが左スワイプであったか、または右スワイプであったかは、決定されない場合がある。いくつかの実施形態では、制御物体202の特徴点は、制御物体202の向きを決定するために処理構成要素106によって処理される場合があり、その向きは、方向302を決定するために使用され得る。たとえば、画像または超音波データは、制御物体が手であるかどうかを決定するために、また(たとえば、手をモデルとマッチングさせ、手の骨格を決定し、および/または掌に対して指を検出することによって)手の方向を決定するために使用される場合がある。
図3Aに戻ると、決定された方向302は、アラートまたはプロンプト204を閉じるのに必要な方向206とマッチングしない場合があり、したがって、処理構成要素106は、アラートもしくはプロンプト204を閉じるための予測されるタッチレスジェスチャーに相当するタッチレスジェスチャー、または閉じることに相当する、ジェスチャーテーブル中の既知のタッチレスジェスチャーとしての方向302で制御物体202によって行われる運動だと認識しない場合がある。いくつかの実施形態では、方向302に制御物体202によって行われる運動は、ジェスチャーライブラリ中の異なる既知のタッチレスジェスチャーに相当するものとして処理構成要素106によって認識される場合があり、既知のタッチレスジェスチャーのマッチングに従って動作を実行する場合がある。しかしながら、実行された動作がアラートまたはプロンプト204を閉じない場合、ユーザは、アラートまたはプロンプト204を閉じようとして別のジェスチャーを行い、いくつかのシステムにおいて実行された動作をキャンセルしなければならないことさえある。
しかしながら、本明細書のいくつかの実施形態に従えば、処理構成要素106は、最初のジェスチャーポイント(xi,yi)から最終的なジェスチャーポイント(xf,yf)までの径路に基づいて制御物体202によって行われる運動の方向302を決定し、方向302に基づいて座標系208をx',y'の新規の直交座標系に変換することができる。図3Bに示すように、x',y'の新規の直交座標系304は、方向302に基づいて座標系208が座標系208のx軸からφある方位角だけ変換された。本明細書の実施形態によれば、いくつかの実施形態では、線形、回転、および/または他の変換が実行され得る。次いで、処理構成要素106は、ジェスチャーテーブル中の定義済みの既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーを、新規の座標系304に対して定義されるように変換し得る。
いくつかの実施形態では、処理構成要素106は、アプリケーションの設定またはデバイス100のオペレーティングシステムの設定に基づいて座標系208を座標系304に変換するように構成され得る。たとえば、実行されるとき、処理構成要素にアラートまたはプロンプト204を生成させるアプリケーションまたはソフトウェアは、第1の検出されたジェスチャー、または予測されるジェスチャーもしくはジェスチャールックアップテーブルに記憶されたジェスチャーにマッチングしない検出されたジェスチャーに基づいて座標系208を座標系304に変換する設定値または特徴点を有し得る。いくつかの実施形態では、アラートまたはプロンプト204は、座標系変換を可能にし得るが、他のアラート、プロンプト、またはディスプレイ構成要素114上に表示される他のコンテンツは、座標系変換を可能にしない。いくつかの実施形態では、ハンドポーズまたは異なる方向への制御物体202の運動であり得る最初のジェスチャーは、座標系変換を始動するか、または可能にするものとして解釈されるジェスチャーであり得る。その上、制御物体202が手である場合、制御物体202の運動が検出されるとき、一定のハンドポーズを検出することができ、ハンドポーズは、運動の方向302に基づいて座標系変換を始動するためのコマンドとして相関する場合がある。
座標系208が座標系304に変換された後、ユーザによって行われる1つまたは複数の後続のタッチレスジェスチャーは、処理構成要素106によって、新規の座標系304に従って定義される既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーにマッチングされ得る。処理構成要素106は、ディスプレイ構成要素114による表示のために処理構成要素が新規の座標系304においてジェスチャーを処理している表示または表現を生成するように構成され得る。いくつかの実施形態では、処理構成要素106は、再設定条件を満足するまで、新規の座標系304に変換された、ジェスチャーライブラリ中の既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーにマッチングさせることによって後続のタッチレスジェスチャーを処理し続けることができる。座標系を変換すること、および/または後続のジェスチャーを検出することは、座標系において上記で説明した変換のうちのいずれかを実行すること、後に検出されたジェスチャーに対して任意のそのような変換を実行すること、ほぼそのような回転もしくは向きを有するように既知のジェスチャーの組を使用すること、および/またはモデルの組を変換することを含み得る。たとえば、座標系は、上記で説明したように変換され得る。別の例として、検出されたジェスチャーは、方向302を使用して元のまたはデフォルトの座標系に変換される場合もある。さらに、いくつかの実施形態では、方向302に基づいてマッチングすべきジェスチャーの異なる組が存在する場合がある。いくつかの実施形態では、ルックアップテーブルは、様々なジェスチャーが方向302に基づいて異なる角度/方向でどのように見えるかを選択するために使用され得る。いくつかの実施形態では、ジェスチャーを認識するためのモデルは、回転され、もしくはさもなければ調整される場合があり、または、方向302に基づいて異なるモデルが使用される場合がある。本明細書で説明するヒストグラムを使用する実施形態では、異なるパターンは方向302に基づいて識別される場合があり、または、そのパターンは変換される場合がある。座標系を「変換する」および/または変換座標系に従ってジェスチャーを検出する、本明細書で説明するアプローチは、網羅的ではなく、他のアプローチが使用または実践され得る。
再設定条件は、満足されるとき、新規の座標系304を再び元の座標系208に変換することによって、変換座標系を再び元の座標系に再設定する条件であり得る。再設定条件は、ジェスチャー検出センサー122が所定の時間t内に第2のもしくは後続のジェスチャーを検出しないこと、および/または、時間tもしくは別の所定の時間内に認識されたまたは予測されたジェスチャーに相当しない運動もしくはジェスチャーを検出しないことを含み得る。再設定条件は、デバイス100の向きが変化すること、またはユーザがデバイス100を手に取ったことを示す場合がある、デバイス100の運動をセンサー118が検出することを含み得る。再設定条件は、ユーザがデバイス上のボタンを押すか、またはデバイス100の設定値を変更することによって、新規の座標系304を元の座標系208に手動で変換することを含み得る。いくつかの実施形態では、再設定条件は、図6Aおよび図6Bにさらに説明する、特定のジェスチャーまたはジェスチャーの組を含む。いくつかの実施形態では、再設定条件または再設定ジェスチャーは、新規の座標系304を異なる座標系に変換し得る。たとえば、座標系208は、デバイス100の「正規」座標系でない場合があり、再設定条件またはジェスチャーは、新規の座標系304をデバイス100の「正規」座標系に変換する場合がある。いくつかの実施形態では、いくつかの条件またはジェスチャーは、制御物体202によって行われる最初のジェスチャーを検出することが座標系208を座標系304に設定する方法と同様に、異なる座標系を設定するために使用され得る。
図3Aおよび図3Bは変換座標系に基づいてジェスチャーを解釈するものとして説明されてきたが、座標系は、いくつかの実施形態では、予測されるジェスチャーの方向にマッチングしない場合があるジェスチャーを行うことによって動作を実行するために、必ずしも変換される必要がない。たとえば、メモリ108〜112のうちのいずれかに記憶されたジェスチャールックアップテーブルは、いくつかの方向において行われるジェスチャーに相当するジェスチャーを有することができ、同じジェスチャーの各向きは、同じ動作またはコマンドに相関する場合がある。これについては、後で図5にさらに説明する。あるいは、処理構成要素106は、ジェスチャーをマッチングまたは検出し、検出されたジェスチャーをコマンドまたは動作に関連付けるための1つまたは複数のモデルを使用し得る。次いで、これら1つまたは複数のモデルは、決定された方向に基づいて変換され得る。
図4Aおよび図4Bは、いくつかの実施形態に従った、変換座標系に基づいて検出されたジェスチャーを処理する例を示す図である。図4Aに示すように、処理構成要素106は、ユーザがバー205を方向206にスライドさせることによってプロンプトまたはアラート204を閉じることができる、プロンプトまたはアラート204を生成することができる。その上、ユーザは、座標系208に対応する方向206にスワイプのタッチレスジェスチャーを行うことによってプロンプトまたはアラート204を閉じることができる。ユーザは、デバイス100の向きがわからない場合があるか、または方向206にタッチレスジェスチャーを行うことが難しくなるようにデバイス100に対して位置する場合がある。その結果、ユーザは、デバイス100上で方向404に制御物体402を通過することができる。いくつかの実施形態では、制御物体402は、ユーザの手、スタイラス、ペン、または動いているとき、ジェスチャー検出センサー122によって検出され、ジェスチャーとして処理構成要素106によって認識され得る他の物体に相当し得る。ジェスチャー検出センサー122は、デバイス100上の方向404への制御物体402の運動を検出することができ、次いで、処理構成要素106は、デバイス上の方向404への制御物体402の運動が既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーに相当するかどうかを決定することができる。
いくつかの実施形態では、処理構成要素106は、プロンプトまたはアラート204を閉じるための、方向206へのタッチレスジェスチャーを予測することができる。いくつかの実施形態では、方向206へのタッチレススワイプジェスチャーは、閉止用コマンドを実行することに相当する既知のタッチレスジェスチャーであり得る。しかしながら、デバイス100上の方向404への制御物体402の運動は、ジェスチャー検出センサー122によって検出され、方向206への予測されるタッチレスジェスチャー、またはジェスチャーテーブル中の方向206への既知のタッチレススワイプジェスチャーと比較され得る。デバイス100上の方向404への制御物体402の検出された運動が、方向206への予測されるタッチレスジェスチャーにも、ジェスチャーテーブル中の方向206への既知のタッチレススワイプジェスチャーにもマッチングしない場合があるため、処理構成要素106はマッチングを検出しない場合があり、ユーザは、アラートもプロンプト204も正常に閉じない場合がある。
しかしながら、図4Bに示すように、処理構成要素106は、座標系208を、検出された方向404に基づく変換座標系406に変換することができる。次いで、方向404への制御物体402の後続の運動は、ジェスチャー検出センサー122によって検出され、処理構成要素106によって、方向404に基づく新規の座標系406に変換された、方向206への予測されるタッチレスジェスチャー、またはジェスチャーテーブル中の方向206への既知のタッチレススワイプジェスチャーと比較され得る。その結果、方向404への制御物体402の運動は、処理構成要素106によって、プロンプトまたはアラート204を閉じるなどの動作を実行するために、方向206への予測されるタッチレスジェスチャー、または変換されたジェスチャーテーブル中の方向206への既知のタッチレススワイプジェスチャーにマッチングされ得る。これは図4Bに示され、ジェスチャー検出センサー122によって検出された制御物体402の運動は、処理構成要素106によって、バー205をスライドさせるための、方向206への予測されるタッチレスジェスチャー、または変換されたジェスチャーテーブル中の方向206への既知のタッチレススワイプジェスチャーにマッチングされ、その後、アラートまたはプロンプト204を閉じることができる。
図4Aおよび図4Bは、方向404への制御物体402の最初の運動は、処理構成要素106によって、方向206への予測されるタッチレスジェスチャーまたはジェスチャーテーブル中の方向206への既知のタッチレススワイプジェスチャーにマッチングされず、続いて、処理構成要素106が、後続のジェスチャーの検出のために座標系208を新規の座標系406に変換する例を示すが、いくつかの実施形態では、ユーザは、後続のジェスチャー検出のために座標系を設定するのに制御物体をデバイス100上の特定の方向に意図的に動かすことができる。たとえば、ユーザがデバイス100の向きに気付かない場合、ユーザは、1つまたは複数の後続のジェスチャーのために座標系208を方向404に基づく座標系406に変換するために、方向404への第1の意図的な運動を行うことができる。これは、ユーザがドライブ中で、デバイスの向きを決定する必要なしにデバイス100上で動作を実行したい場合に役に立つ場合がある。あるいは、ユーザが、ベッドの隣接するナイトスタンド上にデバイス100を有し、デバイス100によって生成されるアラームを閉じるか、または電話に出てスピーカーモードを有効にするように試みている場合。ユーザは、座標系を設定するために制御物体を用いて第1の動きを行うことができ、次いで、1つまたは複数の後続のジェスチャーは、第1の動きを用いてユーザによって設定された座標系に従って処理され得る。
いくつかの実施形態では、方向404は、制御物体402のポーズによって決定され得る。たとえば、制御物体402が、図4Aおよび図4Bに示すように、手である場合、ユーザは、ジェスチャー検出センサー122が手402の向きを検出することができるように、ジェスチャー検出センサー122上で手402のポーズをとることができる。手は、指、親指、および掌などの、所定の構成の目立つ特徴を有し得る物体であるので、処理構成要素106は、検出されたポーズに基づいて手402の向きを決定することが可能であり得る。次いで、処理構成要素106は、座標系208を手402の決定された向きに基づく座標系406に変換することが可能であり得る。手402は例示のために説明されてきたが、制御物体402の向きは、検出されたポーズに基づいて制御物体402の向きの決定を可能にし得る識別可能な特徴を有する任意の制御物体402に関して決定され得る。
図5は、いくつかの実施形態に従った、いくつかの向きにおける同じジェスチャーを示す図である。図5に示すように、デバイス100のジェスチャー検出センサー122は、ユーザの手502のジェスチャーまたはポーズを検出し、検出されたジェスチャーまたはポーズをコマンドまたは動作に相関させることが可能であり得る。いくつかの実施形態では、メモリ108〜112のうちのいずれかに記憶されたジェスチャールックアップテーブルは、多くの向きの同じジェスチャーを同じコマンドまたは動作に相関させることが可能であり得る。たとえば、図5に示すように、手502は、指さしジェスチャーなどのジェスチャーを行っている。図5にさらに示すように、手502は、(a)〜(g)に示す、いくつかの向きに向いている場合がある。いくつかの実施形態に従えば、処理構成要素106は、向きにかかわらず、同じコマンドまたは動作として、指摘ジェスチャーを解釈するように構成され得る。たとえば、指摘ジェスチャーは、アラートまたはプロンプト204を閉じるための左から右へのスワイプを実行するためのコマンドまたは動作に相関し得る。したがって、デバイスのユーザは、指摘ジェスチャーを行うことによってアラートまたはプロンプト204を閉じることが可能であり得る。
いくつかの実施形態では、ユーザがデバイス100の向きを知らない場合、処理構成要素106は、向き(a)〜(g)などの複数の向きへの同じジェスチャーを、アラートまたはプロンプト204を閉じるための左から右へのスワイプを実行するためのコマンドまたは動作に相関させることが可能であり得る。いくつかの実施形態では、メモリ108〜112のうちのいずれかに記憶されたジェスチャールックアップテーブルは、向き(a)〜(g)などの様々な向きへの同じジェスチャーがすべて、アラートまたはプロンプト204を閉じるための左から右へのスワイプを実行するなどの、同じ動作またはコマンドとして解釈されるテーブルを有し得る。他の実施形態では、処理構成要素106は、伸びた人差し指などの、ジェスチャー検出センサー122によって検出された手502の特徴に基づいて手502のポーズを決定することが可能であり、その向きとは無関係に、アラートまたはプロンプト204を閉じるための左から右へのスワイプを実行する動作またはコマンドとして検出されたポーズを相関させ得る。他の実施形態では、処理構成要素106は、手502の検出された特徴から決定された手502の向きに基づいて変換を実行することが可能であり、前に説明したジェスチャールックアップテーブル上で変換を実行し得る。さらに、いくつかの実施形態では、処理構成要素106は、手の検出された特徴から決定された手502の向きに基づいて動きの方向を決定することが可能であり得る。いくつかの実施形態では、処理構成要素は、最初のジェスチャーまたは検出されたジェスチャーを、ジェスチャー5(a)〜5(g)の各々と比較し、もしあれば、ジェスチャー5(a)〜5(g)のどれが最初のジェスチャーまたは検出されたジェスチャーにマッチングするかに基づいて後続のジェスチャーのための座標系を設定または変換することができる。
図6Aおよび図6Bは、いくつかの実施形態に従った、座標系を再設定するためにジェスチャーを実行する例を示す図である。上記で説明したように、再設定条件は、変換座標系を元の座標系に再設定するために検出され得るが、元の座標は、デバイス100の寸法と一直線になる座標系であり得る。いくつかの実施形態では、メモリ108〜112は、座標系を、デバイス100の寸法と一直線になる元の座標系または「正規」座標系に再設定するためのジェスチャーまたはポーズを含むジェスチャールックアップテーブルを含み得る。いくつかの実施形態では、ジェスチャーは、図6Aに示す、ほぼ円形のジェスチャーまたはその一部分である場合があり、手であり得る制御物体402は、ほぼ円形方向にまたはその一部分の方向に動く。しかしながら、任意のジェスチャーまたはポーズは、ジェスチャールックアップテーブル中の座標系を再設定するために割り当てられ得る。図6Bに示すように、ジェスチャーおよび/またはポーズを検出するための座標系は、元の座標系208に再設定された。いくつかの実施形態では、そのような円形のジェスチャーまたはその一部分は、座標系を別の向きに「回転する」ために使用され得る。いくつかの実施形態では、そのような「変更」は、円形のジェスチャーまたはその一部分が検出される任意の時刻に起こり得る。他の実施形態では、そのような「変更」は、再設定ジェスチャーが検出された後、円形のジェスチャーまたはその一部分が検出される場合にのみ起こり得る。
ユーザは、他の目的でジェスチャーの検出された方向によって座標系を設定することが可能である場合もある。たとえば、ユーザは、テキストの表示のために座標系を設定するのに第1の運動を行うことができる。図7Aおよび図7Bは、いくつかの実施形態に従った、変換座標系に基づいてテキストを表示する例を示す図である。図7Aに示すように、デバイス100は、通知、アラート、または電子メールメッセージ702などのメッセージを、ディスプレイ構成要素114上で座標系208によって決定された方向に表示することができる。ユーザがメッセージ702を認識するか、または読むことを難しくする、ユーザから見た向きにデバイス100がある場合、ユーザは、方向706に制御物体704を用いた動きを行うことができる。ジェスチャー検出センサー122は、動きを検出することができ、処理構成要素106は、動きの方向を決定し、方向706に基づいて座標系208を変換することができる。図7Bに示すように、処理構成要素106は、座標系208を、方向706に基づく新規の座標系708に変換した。次いで、ユーザは、ジェスチャー検出センサー122によって検出され、ディスプレイ構成要素114上の新規の座標系708によって決定された方向に表示されるコンテンツを表示するための既知のタッチレスジェスチャーにマッチングされ得る、方向706への制御物体704を用いた動きを行うことができる。次いで、メッセージ702は、ディスプレイ構成要素114上の新規の座標系708によって決定された方向に表示され得る。図7Aおよび図7Bは、デバイス100上の制御物体704の検出された動きの方向に基づく変換座標系にメッセージのテキストを表示することを示すが、ビデオ、グラフィックス、および他の特徴を変換座標系に表示することもできる。さらに、3次元コンテンツまたはホログラフィーコンテンツは、方向706に基づいてデバイス100のユーザに対して正しく向くように表示され得る。
いくつかの実施形態では、デバイスは、メッセージが受信された、視覚的、触覚的、または音響的な表示を最初に提供することができる。この表示は、チャイム、ビープ音、振動、明滅ライトまたはスクリーンなどであり得る。いくつかの実施形態では、メッセージ702は、ジェスチャー検出センサー122が手704の動きを検出した後だけ表示され得る。次いで、検出された動きの方向は、座標系208を708に変換することができ、後続のジェスチャーは、処理構成要素によって、メッセージ702上で実行されるべきコマンドまたは動作として相関し得る。様々な実施形態においてもたらされ得るいくつかのコマンドの例には、次のメッセージまたは前のメッセージに行くためにスワイプすること、スクロールまたはパンするために制御物体をスワイプまたは動かすこと、および/あるいは表示されたメッセージをフォルダーに挿入するかまたはメッセージをアーカイブもしくは削除するために制御物体を動かすことが含まれる。
図8は、いくつかの実施形態に従った、決定された方向に基づいて動作を実行するためのプロセスを示すフローチャートである。例示の目的で、図8は、図1、図2、図3A〜図3B、図4A〜図4B、図5、図6A〜図6B、および図7A〜図7Bのいずれかを参照しながら説明される。図8に示すプロセス800は、デバイス100の処理構成要素106における1つまたは複数のプロセッサが実行するためのコンピュータ可読命令において具現化され得る。いくつかの実施形態では、プロセス800は、メモリ108〜112のいずれかに記憶されたデバイス100のオペレーティングシステムによって実施され、処理構成要素106によって実行され得る。いくつかの実施形態では、プロセス800は、オペレーティングシステムにおけるバックグランドサービスとして実施され得る。図8に示すように、プロセス800は、デバイス上を動く制御物体が検出されるときに開始する(802)。いくつかの実施形態では、ジェスチャー検出センサー122は、方向302または404などの方向にデバイス100上を動く制御物体202または402などの制御物体を検出することができる。いくつかの実施形態では、制御物体は、ユーザの手、ユーザによって操作されるスタイラス、またはユーザがある方向に動かすことが可能であり得る他の物体に相当し得る。上記で説明したように、ジェスチャー検出センサー122は、制御物体が処理構成要素106によって処理するための径路に沿って動くとき、制御物体を表すデータフレームをキャプチャすることができる。次いで、処理構成要素106は、制御物体の動きの方向を決定することができる(804)。いくつかの実施形態では、処理構成要素106は、最初のジェスチャーポイント(xi,yi)から最終的なジェスチャーポイント(xf,yf)までの径路に基づいて制御物体の方向を決定するためにキャプチャされたデータフレームを分析することができる。いくつかの実施形態では、802および804は、別々ではなく、単一のステップに含まれる場合があり、方向は検出されたジェスチャーからわかる。たとえば、処理構成要素106は、図5に示すジェスチャー検出テーブルを使用して、手502の向きに基づいて座標系を決定することが可能である場合があり、したがって、座標系は、検出されたハンドポーズに基づいて決定され得る。あるいは、ジェスチャー検出のためにヒストグラムが使用される場合、ヒストグラムの分析は、ジェスチャーが実行されたことおよびジェスチャーの方向をもたらすことができる。
次いで、プロセス800は、デバイス上で実行されるジェスチャーを検出することができる(806)。いくつかの実施形態では、ジェスチャーは、デバイス上を動いた同じ制御物体によって行われ得る。いくつかの実施形態では、制御物体は、ユーザの手、ユーザによって操作されるスタイラス、またはユーザがジェスチャーを行うために動かすことが可能であり得る他の物体に相当し得る。ジェスチャーは、処理構成要素106によって処理するためにジェスチャー検出センサー122によって検出され得る。いくつかの実施形態では、ジェスチャーは、デバイス100上を動く制御物体を検出するセンサーと異なるセンサーによって検出され得る。たとえば、ジェスチャー検出センサー122は、各々が動きおよび/または方向を別個に検出し得る1つまたは複数のセンサーを含み得る。その上、近接センサー124は、デバイス上を動く制御物体を検出することが可能である場合があり、ジェスチャー検出センサー122は、デバイス上で実行されるジェスチャーを検出する場合がある。さらに、デバイス上の動きおよび/または検出されるジェスチャーの各々は、センサーの組合せによって実行され得る。次いで、処理構成要素106は、検出されたジェスチャーおよび決定された方向に基づいて動作を実行することができる(808)。いくつかの実施形態では、処理構成要素106は、ジェスチャーライブラリ中の既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーが変換座標系に変換されるように、デバイス100の座標系208を、決定された方向に基づく系304または406などの変換座標系に変換することができる。次いで、処理構成要素106は、検出されたタッチレスジェスチャーを、変換されたジェスチャーライブラリ中の変換された既知のタッチレスジェスチャーまたは変換された予測タッチレスジェスチャーにマッチングさせ、マッチングする変換されたタッチレスジェスチャーに基づいて動作を実行することができる。いくつかの実施形態では、処理構成要素106は、所定の時間期間の間、変換座標系に基づいて後続のタッチレスジェスチャーを処理する場合があり、その後、処理構成要素106は、元の座標系208に従って検出されたジェスチャーを処理する場合がある。
いくつかの実施形態では、検出されたタッチレスジェスチャーは、ハンドポーズである場合があり、ハンドポーズは、図5で説明したジェスチャールックアップテーブル中で定義された特定の動作に相当し、座標系を決定することおよび第2のジェスチャーを検出することは動作を実行するのに必要ではなく、検出されたハンドポーズジェスチャーに相当する動作は、ハンドポーズの向きにかかわらず検出され得る。いくつかの実施形態では、処理構成要素106は、所定の時間期間の間、変換座標系に基づいて後続のタッチレスジェスチャーを処理する場合があり、その後、処理構成要素106は、元の座標系208に従って検出されたジェスチャーを処理する場合がある。あるいは、処理構成要素106は、ユーザによる行為、もしくはデバイス100の向きの変化を示し得る118の加速度計によって検出されたデバイスの運動に基づいて、または最後に検出されたジェスチャーの後のタイムアウトの満了後、元の座標系208において後続のジェスチャーを処理することに戻る場合がある。
プロセス800は、図2A、図2B、図3A、図3B、図4Aおよび図4Bで示し本明細書で説明したように、プロンプトまたはアラート204を閉じるために使用され得る。いくつかの実施形態では、プロセス800は、他の動作を実行するために使用される場合もある。たとえば、ユーザは、リーダーアプリケーションなどの、ページを表示するアプリケーションをアクティブ化し得る特定の方向(804)にデバイス100上の制御物体(802)を動かすことができる。次いで、リーダーアプリケーション内のページをめくるための動作(808)に相関し得る、後続の検出されたジェスチャー(806)が検出され得る。あるいは、ユーザが音楽アプリケーションを使用している場合、ユーザは、アルバム、アルバムカバー、またはトラックリストを表示するために、特定の方向(804)にデバイス100上の制御物体(802)を動かすことができる。これらの特徴は、特定の方向に表示される場合もある。その上、アルバムを素早く移動する、トラック間を移動するなどのための動作に相関し得る、ユーザによって行われる後続のジェスチャーが検出され得る(806)。
図9は、いくつかの実施形態に従った、決定された座標系に基づいて動作を実行するためのプロセスを示すフローチャートである。例示の目的で、図9は、図1、図2、図3A〜図3B、図4A〜図4B、図5、図6A〜図6B、および図7A〜図7Bのいずれかを参照しながら説明される。図9に示すプロセス900は、デバイス100の処理構成要素106における1つまたは複数のプロセッサが実行するためのコンピュータ可読命令において具現化され得る。いくつかの実施形態では、プロセス900は、メモリ108〜112のいずれかに記憶されたデバイス100のオペレーティングシステムによって実施され、処理構成要素106によって実行され得る。いくつかの実施形態では、プロセス900は、オペレーティングシステムにおけるバックグランドサービスとして実施され得る。図9に示すように、プロセス900は、デバイスの近傍で第1のタッチレスジェスチャーが検出されるときに開始する(902)。いくつかの実施形態では、ジェスチャー検出センサー122は、方向302または404などの方向にデバイス100の近傍でジェスチャーを実行する制御物体202または402などの制御物体を検出することができる。いくつかの実施形態では、制御物体は、ユーザの手、ユーザによって操作されるスタイラス、またはユーザがある方向にジェスチャーすることが可能であり得る他の物体に相当し得る。ジェスチャーは、ハンドポーズである場合があり、方向は、手502のポーズの向きに相当する場合がある。上記で説明したように、ジェスチャー検出センサー122は、処理構成要素106によって処理するためにジェスチャーを行う制御物体を表すデータフレームをキャプチャすることができる。次いで、処理構成要素106は、検出された第1のタッチレスジェスチャーに基づいてジェスチャーの解釈のために座標系を決定することができる(904)。いくつかの実施形態では、座標系は、制御物体の方向から座標系の配列および/または向きを決定することによって決定され得る。いくつかの実施形態では、処理構成要素106は、最初のジェスチャーポイント(xi,yi)から最終的なジェスチャーポイント(xf,yf)までの径路に基づいて制御物体の方向を決定するためにキャプチャされたデータフレームを分析することができる。いくつかの実施形態では、902および904は、別々ではなく、単一のステップに含まれる場合があり、方向は検出されたジェスチャーからわかる。たとえば、処理構成要素は、図5に示すジェスチャー検出テーブルを使用して、手502の向きに基づいて座標系を決定することが可能である場合があり、したがって、座標系は、検出されたハンドポーズに基づいて決定され得る。あるいは、ジェスチャー検出のためにヒストグラムが使用される場合、ヒストグラムの分析は、ジェスチャーが実行されたことおよびジェスチャーの方向をもたらすことができる。902において検出されるジェスチャーは、たとえば、スワイプ、ハンドポーズ、「L」形、および矢印もしくは指摘されるブラケット、または様々な実施形態における他のジェスチャーであり得る。いくつかの実施形態では、特定のジェスチャーまたはジェスチャーの組は、902において検出および/または予測され得る。
図9に戻ると、次いで、プロセス900は、デバイス100の近傍で実行される第2のタッチレスジェスチャーを検出することができる(906)。いくつかの実施形態では、ジェスチャーは、デバイスの近傍で動いた同じ制御物体によって行われ得る。いくつかの実施形態では、制御物体は、ユーザの手、ユーザによって操作されるスタイラス、またはユーザがジェスチャーを行うために動かすことが可能であり得る他の物体に相当し得る。ジェスチャーは、処理構成要素106によって処理するためにジェスチャー検出センサー122によって検出され得る。いくつかの実施形態では、ジェスチャーは、902においてジェスチャーを検出するセンサーと異なるセンサーによって検出され得る。たとえば、ジェスチャー検出センサー122は、各々が動きおよび/または方向を別個に検出し得る1つまたは複数のセンサーを含み得る。その上、近接センサー124は、902においてジェスチャーを検出することが可能であり得る。次いで、処理構成要素106は、検出された第2のジェスチャーおよび決定された座標系に基づいて動作を実行することができる(908)。いくつかの実施形態では、処理構成要素106は、ジェスチャーライブラリ中の既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーが変換座標系に変換されるように、デバイス100の座標系208を、決定された方向に基づく系304または406などの変換座標系に変換することができる。次いで、処理構成要素106は、検出されたタッチレスジェスチャーを、変換されたジェスチャーライブラリ中の変換された既知のタッチレスジェスチャーまたは変換された予測タッチレスジェスチャーにマッチングさせ、マッチングする変換されたタッチレスジェスチャーに基づいて動作を実行することができる。
いくつかの実施形態では、検出されたタッチレスジェスチャーは、ハンドポーズである場合があり、ハンドポーズは、図5で説明したジェスチャールックアップテーブル中で定義された特定の動作に相当し、座標系を決定することおよび第2のジェスチャーを検出することは動作を実行するのに必要ではなく、検出されたハンドポーズジェスチャーに相当する動作は、ハンドポーズの向きにかかわらず検出され得る。いくつかの実施形態では、処理構成要素106は、所定の時間期間の間、変換座標系に基づいて後続のタッチレスジェスチャーを処理する場合があり、その後、処理構成要素106は、元の座標系208に従って検出されたジェスチャーを処理する場合がある。あるいは、処理構成要素106は、たとえば、ユーザによる行為、またはデバイス100の向きの変化を示し得る118の加速度計によって検出されたデバイスの運動、または最後に検出されたジェスチャーの後のタイムアウトの満了に基づいて、元の座標系208において後続のジェスチャーを処理することに戻る場合がある。
図10は、いくつかの実施形態に従った、検出されたタッチレスジェスチャーに基づいて動作を実行するためのプロセスを示すフローチャートである。例示の目的で、図10は、図1、図2、図3A〜図3B、図4A〜図4B、図5、図6A〜図6B、および図7A〜図7Bのいずれかを参照しながら説明される。図10に示すプロセス1000は、デバイス100の処理構成要素106における1つまたは複数のプロセッサが実行するためのコンピュータ可読命令において具現化され得る。いくつかの実施形態では、プロセス1000は、メモリ108〜112のいずれかに記憶されたデバイス100のオペレーティングシステムによって実施され、処理構成要素106によって実行され得る。いくつかの実施形態では、プロセス1000は、オペレーティングシステムにおけるバックグランドサービスとして実施され得る。図10に示すように、プロセス1000は、デバイス100上を通過する第1のジェスチャーがジェスチャー検出センサー122によって検出されるときに開始し得る(1002)。いくつかの実施形態では、ジェスチャーは、ユーザの手、ユーザによって操作されるスタイラス、またはユーザが動かすことが可能であり得る他の物体に相当し得る制御物体を使用してユーザによって行われ得る。上記で説明したように、ジェスチャー検出センサー122は、制御物体が処理構成要素106によって処理するための径路に沿って動くとき、制御物体を表すデータフレームをキャプチャすることができる。次いで、処理構成要素106は、第1のジェスチャーの方向を決定することができる(1004)。いくつかの実施形態では、処理構成要素106は、最初のジェスチャーポイント(xi,yi)から最終的なジェスチャーポイント(xf,yf)までの径路に基づいてジェスチャーの方向を決定するためにキャプチャされたデータフレームを分析することができる。
次いで、処理構成要素106は、検出されたジェスチャーを、既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーにマッチングしようとすることができる(1006)。いくつかの実施形態では、処理構成要素は、ユーザによって行われるタッチレスジェスチャーを決定するためにジェスチャー検出センサー122によってキャプチャされたデータフレームを分析し、次いで、検出されたタッチレスジェスチャーを、メモリ108〜112のいずれかに記憶されたジェスチャーライブラリ中の既知のタッチレスジェスチャーまたは予測されるタッチレスジェスチャーにマッチングしようとすることができる。処理構成要素106が、検出されたタッチレスジェスチャーを既知のまたは予測されるタッチレスジェスチャーにマッチングする場合、処理構成要素106は、マッチングするタッチレスジェスチャーに基づいて動作を実行することができる(1008)。マッチングが行われない場合、処理構成要素106は、デバイス100の座標系およびジェスチャーライブラリ中の既知のタッチレスジェスチャーまたは予測されるジェスチャーを、第1のタッチレスジェスチャーの検出方向に基づく新規の座標系に変換することができる(1010)。
次いで、処理構成要素106は、再設定条件を満足したかどうかの決定を行うことができる(1012)。いくつかの実施形態では、再設定条件は、満足されるとき、変換座標系を再び元の座標系208に変換することによって、変換座標系を再び元の座標系に再設定する条件であり得る。再設定条件は、ジェスチャー検出センサー122が、所定の時間tの後、第2のジェスチャーも後続のジェスチャーも検出しないことを含み得る。再設定条件は、デバイス100の向きが変化すること、またはユーザがデバイス100を手に取ったことを示す場合がある、デバイス100の運動を118の加速度計が検出することを含み得る。再設定条件は、ユーザがデバイス上のボタンを押すか、またはデバイス100の設定値を変更することによって、座標系を元の座標系208に手動で変換することを含み得る。再設定条件を満足する場合、処理構成要素106は、座標系を再び元の座標系208に変換することができる(1014)が、座標系は、別の検出されたタッチレスジェスチャーが既知のジェスチャーまたは予測されるジェスチャーにマッチングしないようになるまで、検出されたジェスチャーを処理するための座標系のままである場合がある。再設定条件を満足しない場合、処理構成要素106は、変換座標系に従って後続のタッチレスジェスチャーを処理することができる。
ジェスチャー検出センサー122は、デバイス上を通過する第2のタッチレスジェスチャーを検出することができる(1016)。次いで、処理構成要素106は、第2のタッチレスジェスチャーの方向を決定することができる(1018)。いくつかの実施形態では、処理構成要素106は、最初のジェスチャーポイントから最終的なジェスチャーポイントまでの径路に基づいて第2のタッチレスジェスチャーの方向を決定するためにキャプチャされたデータフレームを分析することができる。次いで、処理構成要素106は、検出されたタッチレスジェスチャーを、変換座標系に基づく、既知のタッチレスジェスチャーまたは予測されたタッチレスジェスチャーにマッチングさせ(1006)、変換座標系に従ってマッチングするタッチレスジェスチャーに基づいて動作を実行しようとすることができる(1008)。処理構成要素106は、マッチングするジェスチャーに基づいて動作が実行されるか、またはジェスチャーがこれ以上検出されなくなるまで、さらに1008〜1018を実行し得る。
本開示による、プログラムコードおよび/またはデータなどのソフトウェアは、非一時的機械可読媒体を含む1つまたは複数の機械可読媒体上に記憶され得る。本明細書で識別されるソフトウェアが、1つまたは複数の汎用または特定目的のコンピュータおよび/またはコンピュータシステム、ネットワーク化されること、および/またはその他の方式などを使用して実装されることが可能であることも企図されている。適用可能な場合に、本明細書で説明する様々なステップの順序が変更され、合成ステップに結合され、かつ/またはサブステップに分割されて、本明細書で説明する機能を提供することがある。
したがって、本明細書で説明する実施形態は、デバイスの向きにかかわらず、検出されたジェスチャーに基づいてデバイス動作を実行するためのシステムおよび方法を提供することができる。詳細には、本明細書で説明する実施形態は、第1のタッチレスジェスチャーに基づいてデバイスに関連付けられた座標系を変換し、次いで、変換座標系に従って1つまたは複数の後続のタッチレスジェスチャーを処理することができる。その結果、ユーザは、第1のタッチレスジェスチャーを用いて新規の向きを設定することによって、デバイスの向きにかかわらず、挙動または運動またはタッチレスコマンドを実行することが可能であり得る。上記で提供される例は、例にすぎず、限定的であることは意図されていない。当業者は、本開示の範囲内であることが意図されている、開示する実施形態と整合する他のシステムを容易に考案することができる。したがって、適用形態は以下の特許請求の範囲によってのみ限定される。