(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスにデータを入力するためのシステムであって、
ユーザの指を収める画像のシーケンスを捕捉するためのカメラと、
複数の仮想キーを備え、それぞれの仮想キーが複数の仮想センサを有し、それぞれの仮想センサは対応する仮想キー内に隣接しているピクセルの領域を備えており、ここにおいて複数の前記仮想キーは互いに異なる仮想センサレイアウトを有する仮想キーボードと、
前記仮想キーボードと結合された前記シーケンスのそれぞれの画像を表示するためのディスプレイと、ここにおいて、前記仮想キーボードに関係する表示された画像における前記指の位置は、前記ユーザの指が前記カメラに関係して動くにつれて変化する、
前記仮想キーボードに関係する前記画像のシーケンスにおける前記ユーザの指の動きを検出し、
前記検出された動きに基づき、前記複数の仮想キーの少なくとも１つの内の作動仮想センサのシーケンスを識別し、ここにおいて前記ユーザの指の前記動きが、前記作動仮想センサに対応する隣接しているピクセルの前記領域内のピクセルのしきい値の数を超えて検出されたとき仮想センサは作動させられる、および
作動仮想センサの前記シーケンスのそれぞれの作動仮想センサに関係している地理的および時間的な情報の両方を備える仮想センサ作動データを収集するように構成される動画特徴抽出モジュールと、
有効なキー入力および排除されたキー入力の１つとしてユーザのジェスチャを認識して、前記コンピューティングデバイスにデータを入力するために、仮想センサ作動の前記シーケンスを使用するためのジェスチャパターン適合モジュールと、を備えるシステム。
【請求項２】
前記ディスプレイが、前記仮想キーボードを、前記シーケンスにおける前記画像のそれぞれにオーバーレイし、前記仮想キーボードが少なくとも部分的に透明である、請求項１に記載のシステム。
【請求項３】
前記システムが、前記ジェスチャが認識されるとき、視覚フィードバック、音声フィードバック、および振動性フィードバックのうち少なくとも１つを提供するように構成される、請求項１に記載のシステム。
【請求項４】
ジェスチャの終点を検出するためのジェスチャ終点検出モジュールをさらに備える、請求項１に記載のシステム。
【請求項５】
前記ジェスチャパターン適合モジュールが、前記ジェスチャを認識するために、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較するように構成される、請求項４に記載のシステム。
【請求項６】
前記ジェスチャパターン適合モジュールが、前記ジェスチャの終点が検出された後に、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較するように構成される、請求項４に記載のシステム。
【請求項７】
前記ジェスチャパターン適合モジュールが、動的時間伸縮を使用して、前記センサ作動データを、前記複数のジェスチャ認識テンプレートのそれぞれに合わせるように構成される、請求項５に記載のシステム。
【請求項８】
前記センサ作動データを使用して動き条件を検出するための、ならびに前記動き条件がしきい値より上であるとき、前記ジェスチャパターン適合モジュールが、前記ジェスチャを認識することから防ぐための誤警報排除モジュールをさらに備える、請求項１に記載のシステム。
【請求項９】
前記誤警報排除モジュールが、前記動き条件が前記しきい値より上であるとき、視覚フィードバック、音声フィードバック、および振動性フィードバックのうちの少なくとも１つを提供するように構成される、請求項８に記載のシステム。
【請求項１０】
仮想キーボードを使用して、電子デバイスにデータを入力するための方法であって、
ユーザの指を収める画像のシーケンスを受け取ることと、
前記シーケンスのそれぞれの画像についての結合された画像を生成することと、前記結合された画像は、前記ユーザの指および仮想キーボードを収めており、前記仮想キーボードは、複数の仮想キーを備え、それぞれの仮想キーが複数の仮想センサを有し、それぞれの仮想センサは対応する仮想キー内に隣接しているピクセルの領域を備えており、ここにおいて複数の前記仮想キーは互いに異なる仮想センサレイアウトを有し、
前記仮想センサに関係する前記画像のシーケンスにおける前記指の動きを検出することと、
前記検出された動きに基づき、前記複数の仮想キーの少なくとも１つの内の作動仮想センサのシーケンスを識別することと、ここにおいて前記ユーザの指の前記動きが、前記作動仮想センサに対応する前記複数のピクセルの内のピクセルのしきい値の数を超えて検出されたとき仮想センサは作動させられる、
作動仮想センサの前記シーケンスのそれぞれの作動仮想センサに関係している地理的および時間的な情報の両方を備えるセンサ作動データを生成することと、
前記電子デバイスにデータを入力するために、仮想センサ作動の前記シーケンスを使用して、有効なキー入力および排除されたキー入力の１つとしてジェスチャを認識することとを備える、方法。
【請求項１１】
前記結合された画像を、ディスプレイ上に表示することをさらに備える、請求項１０に記載の方法。
【請求項１２】
前記結合された画像を表示することが、前記画像のシーケンスにオーバーレイされた前記仮想キーボードを表示することを備え、前記仮想キーボードは少なくとも部分的に透明である、請求項１１に記載の方法。
【請求項１３】
前記ジェスチャを認識した後、少なくとも１つの仮想キーをハイライトすることをさらに備える、請求項１１に記載の方法。
【請求項１４】
前記ジェスチャを認識することが、少なくとも１つの候補ジェスチャを識別するために、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較することを備える、請求項１０に記載の方法。
【請求項１５】
前記検出された動きを使用して、ジェスチャの終点を検出することをさらに備える、請求項１４に記載の方法。
【請求項１６】
動的時間伸縮を使用して、前記センサ作動データを、それぞれのジェスチャ認識テンプレートと合わせることをさらに備える、請求項１５に記載の方法。
【請求項１７】
信頼ファクタを、それぞれの候補ジェスチャに割り当てることをさらに備える、請求項１４に記載の方法。
【請求項１８】
前記ジェスチャを認識することが、最も大きい信頼ファクタを有する前記少なくとも１つの候補ジェスチャから、ジェスチャを選択することを備える、請求項１７に記載の方法。
【請求項１９】
前記センサ作動データを使用して動き条件を決定することと、前記動き条件がしきい値より上であるとき、前記少なくとも１つの候補ジェスチャのうちの１つまたは複数が、認識されたジェスチャであることを防ぐことをさらに備える、請求項１４に記載の方法。
【請求項２０】
コンピューティングデバイスにデータを入力するためのシステムであって、
ユーザの指を収める画像のシーケンスを捕捉するための手段と、
仮想キーボードと結合された前記シーケンスのぞれぞれの画像を表示するための手段と、前記仮想キーボードは、複数の仮想キーを備え、それぞれの仮想キーが複数の仮想センサを有し、それぞれの仮想センサは対応する仮想キー内に隣接しているピクセルの領域を備えており、ここにおいて複数の前記仮想キーは互いに異なる仮想センサレイアウトを有し、ここにおいて、前記仮想キーボードに関係する表示された画像における前記指の位置は、前記ユーザの指がカメラに関係して動くにつれて変化する、
前記仮想センサに関係する前記画像のシーケンスにおける前記ユーザの指の動きを検出するための手段と、前記検出された動きに基づき、前記複数の仮想キーの少なくとも１つの内の作動仮想センサのシーケンスを識別するための手段と、ここにおいて前記ユーザの指の前記動きが、前記作動仮想センサに対応する前記複数のピクセルの内のピクセルのしきい値の数を超えて検出されたとき仮想センサは作動させられる、
作動仮想センサの前記シーケンスのそれぞれの作動仮想センサに関係している地理的および時間的な情報の両方を備えるセンサ作動データを生成する手段と、
前記コンピューティングデバイスにデータを入力するために、仮想センサ作動データの前記シーケンスを使用して、有効なキー入力および排除されたキー入力の１つとしてユーザのジェスチャを認識するための手段と、を備える、システム。
【請求項２１】
前記表示するための手段が、前記仮想キーボードを、前記シーケンスにおける前記画像のそれぞれにオーバーレイし、前記仮想キーボードが少なくとも部分的に透明である、請求項２０に記載のシステム。
【請求項２２】
前記システムが、前記ジェスチャが認識されるとき、視覚フィードバック、音声フィードバック、および振動性フィードバックのうちの少なくとも１つを提供するように構成される、請求項２０に記載のシステム。
【請求項２３】
ジェスチャの終点を検出するための手段をさらに備える、請求項２０に記載のシステム。
【請求項２４】
前記ユーザのジェスチャを認識するための手段が、前記ジェスチャを認識するために、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較するように構成される、請求項２３に記載のシステム。
【請求項２５】
前記ユーザのジェスチャを認識するための手段が、前記ジェスチャの終点が検出された後に、前記センサ作動データを、前記複数のジェスチャ認識テンプレートのそれぞれと比較するように構成される、請求項２４に記載のシステム。
【請求項２６】
前記ユーザのジェスチャを認識するための手段が、動的時間伸縮を使用して、前記センサ作動データを、前記複数のジェスチャ認識テンプレートのそれぞれに合わせるように構成される、請求項２４に記載のシステム。
【請求項２７】
前記動き条件がしきい値より上であるとき、前記ユーザのジェスチャを認識するための手段が、前記ジェスチャを認識することから防ぐための手段をさらに備える、請求項２０に記載のシステム。
【請求項２８】
実行されるときに、仮想キーボードを使用して電子デバイスにデータを入力するという方法を行う命令を備える、非一時的なコンピュータ可読記憶媒体であって、前記方法が、  ユーザの指を収める画像のシーケンスを受け取ることと、
前記シーケンスのそれぞれの画像についての結合された画像を生成することと、前記結合された画像は、前記ユーザの指および仮想キーボードを収めており、前記仮想キーボードは、複数の仮想キーを備え、それぞれの仮想キーが複数の仮想センサを有し、それぞれの仮想センサは対応する仮想キー内に隣接しているピクセルの領域を備えており、ここにおいて複数の前記仮想キーは互いに異なる仮想センサレイアウトを有し、
前記仮想センサに関係する前記画像のシーケンスにおける前記指の動きを検出することと、
前記検出された動きに基づき、前記複数の仮想キーの少なくとも１つの内の作動仮想センサのシーケンスを識別することと、ここにおいて前記ユーザの指の前記動きが、前記作動仮想センサに対応する前記複数のピクセルの内のピクセルのしきい値の数を超えて検出されたとき仮想センサは作動させられる、
作動仮想センサの前記シーケンスのそれぞれの作動仮想センサに関係している地理的および時間的な情報の両方を備えるセンサ作動データを生成することと、
前記電子デバイスにデータを入力するために、仮想センサ作動の前記シーケンスを使用して、有効なキー入力および排除されたキー入力の１つとしてジェスチャを認識することとを備える、非一時的なコンピュータ可読記憶媒体。
【請求項２９】
前記方法が、前記結合された画像を、ディスプレイ上に表示することをさらに備える、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３０】
前記結合された画像を表示することが、前記画像のシーケンスにオーバーレイされた前記仮想キーボードを表示することを備え、前記仮想キーボードは少なくとも部分的に透明である、請求項２９に記載のコンピュータ可読記憶媒体。
【請求項３１】
前記方法が、前記ジェスチャを認識した後、少なくとも１つの仮想キーをハイライトすることをさらに備える、請求項３０に記載のコンピュータ可読記憶媒体。
【請求項３２】
前記ジェスチャを認識することが、少なくとも１つの候補ジェスチャを識別するために、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較することを備える、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３３】
前記方法が、前記検出された動きを使用して、ジェスチャの終点を検出することをさらに備える、請求項３２に記載のコンピュータ可読記憶媒体。
【請求項３４】
前記方法が、動的時間伸縮を使用して、前記センサ作動データを、それぞれのジェスチャ認識テンプレートと合わせることをさらに備える、請求項３３に記載のコンピュータ可読記憶媒体。
【請求項３５】
前記方法が、信頼ファクタをそれぞれの候補ジェスチャに割り当てることをさらに備える、請求項３４に記載のコンピュータ可読記憶媒体。
【請求項３６】
前記ジェスチャを認識することが、最も大きい信頼ファクタを有する前記少なくとも１つの候補ジェスチャから、ジェスチャを選択することを備える、請求項３５に記載のコンピュータ可読記憶媒体。
【請求項３７】
前記方法が、前記センサ作動データを使用して動き条件を決定することと、前記動き条件がしきい値より上であるとき、前記少なくとも１つの候補ジェスチャのうちの１つまたは複数が、認識されたジェスチャであることを防ぐことをさらに備える、請求項３６に記載のコンピュータ可読記憶媒体。
【請求項３８】
前記ユーザの指の動きは、大きさを有する動きベクトルに変換される、請求項１に記載のシステム。
【請求項３９】
前記少なくとも１つの作動仮想センサは、前記動きベクトルの前記大きさがしきい値より上であるときに作動させられる、請求項３８に記載のシステム。
【請求項４０】
仮想センサは、前記ユーザの指が前記仮想センサ上の実質的に静止した位置にあるときに作動されない、請求項３９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本開示は、仮想キーボードに関する。より具体的には、本開示は、コンピュータシステムにデータを入力するために、電子ディスプレイ上にキーボードの画像を提示し、表示されたキーボードに関してのユーザの指の位置を検出するためのデジタルカメラを使用することに関する。
【関連技術の説明】
【０００２】
[0002]  パーソナルコンピュータおよび携帯電話を含む電子デバイスは、ユーザから入力を受け取るためのキーボードまたはキーパッドを有することができる。キーボードは、ボタンまたはキーの配置を含み、自動交換（mechanical switching）デバイスを使用して動作することができる。代わりとして、キーボードは電子デバイスのディスプレイ上に表示される仮想キーボードであることができ、ユーザはディスプレイのタッチセンシティブ表面（touch-sensitive surface）に接触することにより入力を提供することができる。
【０００３】
[0003]  携帯電話のような、ある電子デバイスは、比較的小さいディスプレイを有することができる。ある事例では、ユーザがディスプレイスクリーンに触ることにより文字をタイプする、または他のコマンドを入力することは難しい。例えば、ユーザの指は１つよりも多い仮想キーをカバーし、それによりタイプミスの可能性を増加させることがある。さらに、入力の間、ユーザの手はディスプレイの一部をブロックし、それによりディスプレイに提示された情報をブロックしてユーザが適切なキーが選択されているかどうかを判断するのを難しくすることがある。
【発明の概要】
【０００４】
[0004]  本開示のシステム、方法、およびデバイスはそれぞれ、いくつかの革新的な様態を有し、これらのうちの何れも、ここに開示される所望の属性を単独で担うものではない。
【０００５】
[0005]  １つの様態では、コンピューティングデバイスにデータを入力するためのシステムが提供される。システムは、ユーザの指を収める画像のシーケンスを捕捉するためのカメラ、仮想キーボードと結合されたシーケンスのそれぞれの画像を表示するためのディスプレイ、および仮想キーボードに関係する画像のシーケンスにおけるユーザの指の動きを検出するように構成される動画特徴抽出モジュール（video feature extraction module）を含む。仮想キーボードに関係して表示された画像における指の位置は、ユーザの指がカメラに関係して動くにつれて変化し、および仮想キーボードは複数の仮想キーを含み、それぞれの仮想キーが複数の仮想センサを有する。動画特徴抽出モジュールは、検出された動きを使用して、仮想センサのセンサ作動データ（sensor actuation data）を捕捉する。システムはさらに、ユーザのジェスチャを認識し、コンピューティングデバイスにデータを入力するようにセンサ作動データを使用するための、ジェスチャパターン適合モジュール（gesture pattern matching module）を含む。
【０００６】
[0006]  別の様態では、仮想キーボードを使用して電子デバイスにデータを入力するための方法が提供される。方法は、ユーザの指を収める画像のシーケンスを受け取ること、シーケンスのそれぞれの画像について結合された画像を生成すること、ここにおいて、結合された画像は、ユーザの指および仮想キーボードを収める、および仮想キーボードに関係する画像のシーケンスにおける指の動きを検出することを含む。仮想キーボードは複数の仮想キーを有し、それぞれの仮想キーが複数の仮想センサを有する。方法はさらに、検出された動きのピクセル領域を仮想センサのピクセル領域と比較することによりセンサ作動データを生成すること、および電子デバイスにデータを入力するためにセンサ作動データを使用してジェスチャを認識することを含む。
【０００７】
[0007]  別の様態では、コンピューティングデバイスにデータを入力するためのシステムが提供される。システムは、ユーザの指を収めた画像のシーケンスを捕捉するための手段、仮想キーボードと結合されたシーケンスのそれぞれの画像を表示するための手段、および仮想キーボードに関係する画像のシーケンスにおけるユーザの指の動きを検出するための手段を含む。仮想キーボードに関係して表示された画像における指の位置は、ユーザの指がカメラに関係して動くにつれて変化し、および仮想キーボードは複数の仮想キーを含み、それぞれの仮想キーが複数の仮想センサを有する。動きを検出するための手段は、検出された動きを使用して、仮想センサのセンサ作動データを捕捉する。システムはさらに、コンピューティングデバイスにデータを入力するためにセンサ作動データを使用してユーザのジェスチャを認識するための手段を含む。
【０００８】
[0008]  別の様態では、非一時的なコンピュータ可読記憶媒体は、実行されるときに、仮想キーボードを使用して電子デバイスにデータを入力するという方法を行う命令を含む。方法は、ユーザの指を収める画像のシーケンスを受け取ること、シーケンスのそれぞれの画像について結合された画像を生成すること、ここにおいて、結合された画像は、ユーザの指および仮想キーボードを収める、および仮想キーボードに関係する画像のシーケンスにおける指の動きを検出することを含む。仮想キーボードは複数の仮想キーを有し、それぞれの仮想キーが複数の仮想センサを有する。方法はさらに、検出された動きのピクセル領域を仮想センサのピクセル領域と比較することによりセンサ作動データを生成すること、および電子デバイスにデータを入力するためにセンサ作動データを使用してジェスチャを認識することを含む。
【０００９】
[0009]  本明細書で説明される主題の１つまたは複数のインプリメンテーションの詳細は、添付図面および以下の説明で記述される。他の特徴、様態、および利点は、その説明、図面、および特許請求の範囲から明らかになるだろう。以下の図面の相対的な寸法は原寸通りに描かれていない場合があることに留意されたい。
【図面の簡単な説明】
【００１０】
【図１】１つの実施形態にしたがった、サーバおよび接続されたデバイスを有するネットワークの概略図。
【図２】仮想キーボードを有するユーザデバイスの１つの実施形態の概略図。
【図３】ユーザの手の動きを捕捉するカメラの概略図。
【図４】１つの実施形態にしたがった、ユーザの手の画像にオーバーレイされた仮想キーボードの画像を例示する図。
【図５】仮想キーに対する仮想センサレイアウト（virtual sensor layout）の３つの例の概略図。
【図６】ユーザの手の画像にオーバーレイされた図５の仮想キーの概略図。
【図７】仮想キーボードを提供する方法の１つの実施形態のフローの図。
【図８Ａ】１つの実施形態にしたがった、仮想キーボードの一部の図。
【図８Ｂ】図８Ａの仮想キーボードの一部をわたる手または指の動きの８つの方向を検出するための、８つのジェスチャ認識テンプレートの例を例示する図。
【図８Ｃ】別の実施形態にしたがった、仮想キーボードの一部を例示する図。
【図８Ｄ】図８Ｃの仮想キーボードの一部をわたるジェスチャを検出するための、ジェスチャ認識テンプレートの例を例示する図。
【図９】ジェスチャを認識する方法の１つの実施形態のフローの図。
【００１１】
[0022]  様々な図面における同様の参照番号および呼称は、同様の要素を指し示す。
【詳細な説明】
【００１２】
[0023]  ある実施形態の以下の詳細な説明は、本発明の具体的な実施形態の様々な説明を提示する。しかしながら、本発明は請求項により定義およびカバーされるように、多数の異なる方法で実現されることができる。この説明では、参照が同様の参照数字が同一のまたは機能的に類似した要素を指し示す図に対してなされる。
【００１３】
[0024]  本発明の実施形態は、仮想キーボードを制御するためのシステムおよび方法に関する。ここに説明される仮想キーボードは、ユーザデバイスへの入力を提供するために使用されることができる。例えば、ユーザデバイスが携帯電話である実施形態では、ユーザは仮想キーボードを使用して、電話番号をダイヤルし、テキストメッセージにおいてタイプし、および／または制御コマンドを入力することができる。この実施形態では、ユーザデバイスはカメラ、ディスプレイ、およびプロセッサを含む。カメラはユーザの画像を捕捉することができ、プロセッサは捕捉された画像に仮想キーボードの画像をオーバーレイすることができる。仮想キーボードを動作させるために、ユーザは、空中で自分の指または手を使用して、指でタイプする動きのようなジェスチャをすることができ、ディスプレイの表面に触る必要はない。
【００１４】
[0025]  ある実施形態では、仮想キーボードは複数の仮想キーを含み、それぞれの仮想キーが複数の仮想センサを有する。ユーザの手および／または指の動きは、仮想センサに関係して決定および測定されることができ、センサデータのシーケンスは、様々なユーザのジェスチャと関連した一連のジェスチャ認識テンプレートに対して解析されることができる。１つの実施形態では、動的時間伸縮（ＤＴＷ：Dynamic Time Warping）が、可変速度（varying speed）のユーザのジェスチャを適合させるために用いられる。
【００１５】
[0026]  本発明は、数多くの他の汎用または特定用途のコンピューティングシステムの環境または構成で動作可能である。本発明を用いた使用に適している周知のコンピューティングシステム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド（hand-held）型またはラップトップ型のデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、任意の上記のシステムまたはデバイスを含む分散型コンピュータ環境などに限定されないが含む。
【００１６】
[0027]  ここで使用されるように、命令は、システムで情報を処理するための、コンピュータでインプリメントされる（computer-implemented）ステップを指す。命令はソフトウェア、ファームウェア、またはハードウェアでインプリメントされ、システムのコンポーネントにより試みられる（undertaken）プログラムされたステップのいずれのタイプも含むことができる。
【００１７】
[0028]  ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）は、システムを備えるコンピュータおよびコンピューティングデバイスが接続される、インターネットへのアクセスを含む、共同のコンピューティングネットワーク（a corporate computing network）でありうる。１つの実施形態では、ＬＡＮは、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）の業界標準に準拠する。
【００１８】
[0029]  ここで使用されるように、媒体は、画像、サウンド、動画、またはシステムの中に入れられるあらゆる他のマルチメディアタイプのデータを指す。
【００１９】
[0030]  マイクロプロセッサは、Ｐｅｎｔｉｕｍ（登録商標）プロセッサ、Ｉｔａｎｉｕｍ（登録商標）プロセッサ、またはＡＬＰＨＡ（登録商標）プロセッサのような、あらゆる従来の汎用単一チップのマイクロプロセッサ、または汎用マルチチップのマイクロプロセッサでありうる。加えて、マイクロプロセッサは、デジタル信号プロセッサ（ＤＳＰ）、またはグラフィックプロセッサのような、あらゆる従来の特定用途マイクロプロセッサでありうる。
【００２０】
[0031]  システムは、以下で詳しく論じられるように、様々なモジュールから成り立っている。当業者により認識されることができるように、モジュールのそれぞれが様々なサブルーチン、手順、定義づけ命令文（definitional statements）、およびマクロを備える。モジュールのそれぞれは通常、単一の実行可能なプログラムに別々にコンパイル（compiled）およびリンクされる。そのため、モジュールのそれぞれの以下の説明は、好ましいシステムの機能を説明するために、便宜上、使用される。これにより、モジュールのそれぞれにより経験される（undergone）プロセスは、他のモジュールのうちの１つに任意に再分配され、単一のモジュールに一緒に結合され、または、例えば共有可能な動的リンクライブラリで利用可能にされうる。
【００２１】
[0032]  システムは、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、またはＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）のような様々なオペレーティングシステムに接続して使用されうる。加えて、システムは、Ｃ、Ｃ＋＋、ＢＡＳＩＣ、Ｐａｓｃａｌ、Ｐｅｒｌ、またはＪａｖａ（登録商標）のような、従来のプログラミング言語を含む、あらゆる適したプログラミング言語で書かれうる。
【００２２】
[0033]  ウェブブラウザのユーザインターフェースを備えるウェブブラウザは、（テキストまたはグラフィックの情報のような）情報を、ユーザに表示するために使用されうる。ウェブブラウザは、ネットワーク経由で受け取られる情報を表示することができる視覚ディスプレイのあらゆるタイプを備えうる。ウェブブラウザの例は、ＭｉｃｒｏｓｏｆｔのＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒブラウザ、ＡｐｐｌｅのＳａｆａｒｉブラウザ、ＭｏｚｉｌｌａのＦｉｒｅｆｏｘブラウザ、ＰａｌｍＳｏｕｒｃｅのＷｅｂ  Ｂｒｏｗｓｅｒ、ＧｏｏｇｌｅのＣｈｒｏｍｅブラウザ、またはネットワークで通信することができる、任意の他のブラウジングソフトウェアまたは他のアプリケーションソフトウェア（any other browsing or other application software）を含む。ある実施形態では、ウェブブラウザは仮想キーボードインターフェースを含むことができる。
【００２３】
[0034]  ここに開示される本発明の実施形態は、ソフトウェア、ファームウェア、ハードウェア、あるいはこれらのあらゆる組み合わせを作り出すために、標準的なプログラミングまたはエンジニアリングの技法を使用する方法、装置、または製造品として、インプリメントされうる。ここで使用されるように「製造品」という用語は、光学式記憶デバイス、および揮発性または非揮発性メモリデバイスのような、ハードウェアまたはコンピュータ可読媒体でインプリメントされるコードまたは論理を指す。そのようなハードウェアは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：field programmable gate array）、特定用途向け集積回路（ＡＳＩＣ：application-specific integrated circuits）、複合プログラム可能論理デバイス（ＣＰＬＤ：complex programmable logic device）、プログラム可能論理アレイ（ＰＬＡ：programmable logic array）、マイクロプロセッサ、または他の類似の処理デバイスに限定されないが含みうる。
【００２４】
ユーザデバイスの概要
[0035]  図１は、ネットワーク２の概略図である。例示されたネットワーク２は、それぞれがインターネット４で通信する、ユーザデバイス１０ａ、ユーザデバイス１０ｂ、およびサーバ８を含む。ユーザデバイス１０ａ、１０ｂ、およびサーバ８のみが例示されているけれども、ネットワーク２は追加のユーザデバイスおよびサーバを含むことができる。
【００２５】
[0036]  図１で示されるように、ユーザデバイス１０ａは携帯電話であり、ユーザデバイス１０ｂはパーソナルコンピュータである。しかしながら、ユーザデバイスは、ネットワークでの使用のためのあらゆる適した通信デバイスであることができる。ユーザデバイス１０ａ、１０ｂは、ここにさらに詳しく説明されることになるように、ディスプレイおよびカメラを含むことができ、仮想キーボードを使用して動作するように構成されることができる。ユーザは、仮想キーボードを使用して、ユーザデバイスに入力を提供することができる。入力は、例えば、テキスト、数字、記号、および／または制御コマンドを含むことができる。
【００２６】
[0037]  ユーザデバイスは、インターネット４を介して、他のデバイスに情報を送信し、および他のデバイスから情報を受け取るために使用されることができる。例えば、ユーザデバイス１０ａは、ユーザデバイス１０ｂおよび／またはサーバ８と通信することができる。通信される情報は、例えば、音声、データ、および／またはマルチメディアサービスを含むことができ、送信または受け取られる情報のすべての部分が、仮想キーボードから取得されることができる。加えて、仮想キーボードは、インターネット４を用いたユーザデバイスの通信を制御するのを助けるために、ユーザにより使用されることができる。例えば、ユーザは、仮想キーボードを使用して、インターネットをナビゲートするために制御コマンドを提供することができる。加えて、ウェブブラウザは、仮想キーボードのインターフェースを含むことができ、ユーザは仮想キーボードに入力を提供することにより、サーバ８からマルチメディアを要求することができる。ユーザデバイスは、インターネット４の他に、例えば、セルラーネットワークを含むネットワークを介して通信するためにもまた使用されることができる。
【００２７】
[0038]  ユーザデバイスは、様々な規格を使用して通信することができる。例えば、あるユーザデバイスは、ＩＥＥＥ  １６．１１（ａ）、（ｂ）、または（ｇ）を含むＩＥＥＥ  １６．１１規格、あるいはＩＥＥＥ８０２．１１ａ、ｂ、ｇまたはｎを含むＩＥＥＥ  ８０２．１１規格にしたがって通信することができる。いくつかの実施形態では、ユーザデバイスは、ＢＬＵＥＴＯＯＴＨ（登録商標）規格にしたがって、ＲＦ信号を送信および受け取るためのアンテナを含むことができる。ユーザデバイスが携帯電話であるときのような、あるユーザデバイスでは、ユーザデバイスは、符号分割多元接続（ＣＤＭＡ）、周波数分割多元接続（ＦＤＭＡ）、時分割多元接続（ＴＤＭＡ）、グローバル移動体通信システム（ＧＳＭ（登録商標））、ＧＳＭ／汎用パケット無線システム（ＧＰＲＳ）、エンハンストデータＧＳＭ環境（ＥＤＧＥ：Enhanced Data GSM Environment）、地上基盤無線（ＴＥＴＲＡ：Terrestrial Trunked Radio）、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ（登録商標））、エボリューションデータオプティマイズド（ＥＶ−ＤＯ：Evolution Data Optimized）、１ｘＥＶ−ＤＯ、ＥＶ−ＤＯ  Ｒｅｖ  Ａ、ＥＶ−ＤＯ  Ｒｅｖ  Ｂ、高速パケットアクセス（ＨＳＰＡ）、高速ダウンリンクパケットアクセス（ＨＳＤＰＡ）、高速アップリンクパケットアクセス（ＨＳＵＰＡ）、発展型高速パケットアクセス（ＨＳＰＡ＋）、ロングタームエボリューション（ＬＴＥ）、ＡＭＰＳ、または３Ｇあるいは４Ｇの技術を利用するシステムのような、無線ネットワーク内で通信するために使用される他の既知信号を受け取るように設計されたアンテナを使用して、通信することができる。
【００２８】
[0039]  図２は、仮想キーボードを有するユーザデバイス１０の１つの実施形態の概略図である。ユーザデバイス１０は、カメラ１２、スピーカ１４、ディスプレイ１６、動画処理モジュール１８、特徴抽出モジュール２０、メモリ２１、ジェスチャ終点検出モジュール（gesture endpoint detection module）２２、ジェスチャパターン適合モジュール２４、誤警報排除モジュール（false alarm rejection module）３０、および音声処理モジュール３２を含む。ユーザデバイス１０は、例えば、携帯電話またはパーソナルコンピュータであることができる。しかしながら、ユーザデバイス１０、またはこれのわずかに変形したもの（slight variation）の同じコンポーネントはまた、テレビおよびポータブルメディアプレーヤのような他のタイプのデバイスの実例にもなる。
【００２９】
[0040]  様々なモジュールは、ハードウェアおよび／またはソフトウェアの様々な組み合わせでインプリメントされることができる。例えば、動画処理モジュール１８、特徴抽出モジュール２０、ジェスチャ終点検出モジュール２２、ジェスチャパターン適合モジュール２４、誤警報排除モジュール３０、および／または音声処理モジュール３２は、１つまたは複数のプロセッサを使用して実行するように構成されたコンピュータ可読記憶媒体に記憶された命令としてインプリメントされることができる。モジュールのインプリメンテーションに関する追加の詳細は、後に以下で詳しく説明されることになる。
【００３０】
[0041]  カメラ１２は様々なカメラタイプであることができる。例えば、カメラ１２は、固定焦点レンズを有するカメラを含む、携帯電話の前面に取り付けられたカメラであることができる。代わりとして、カメラ１２は、ポートを介してコンピュータと通信するウェブカメラであることができる。カメラ１２は、相補型金属酸化膜半導体（ＣＭＯＳ）センサ、または電荷結合素子（ＣＣＤ）センサのような画像センサを含むことができる。以下で詳しく説明されることになるように、ユーザデバイス１０は、例えば、約３０ｆｐｓというフレームレートのような、比較的低いフレームレートを有するカメラを含む、比較的簡素なカメラ１２を使用して、仮想キーボードを提供することができる。これにより、ユーザデバイス１０は、ユーザデバイス１０が比較的高速のカメラ、または、ズーム、赤外線、深度感知（depth-aware）、および／またはステレオの能力を有するカメラを含まないときでも、仮想キーボードを提供することができる。１つの実施形態では、カメラ１２は、約２０ｆｐｓから約１２０ｆｐｓまでの間に及ぶフレームレートを有する携帯電話のための、前面に取り付けられたカメラである。
【００３１】
[0042]  図２を引き続き参照すると、ユーザデバイス１０は、スピーカ１４を含む。スピーカ１４は、電子信号をサウンドにコンバートするための変換器（transducer）を含むことができる。加えて、スピーカ１４は、受け取られた電子信号の大きさを高めるための増幅器、および／または信号のノイズを低減させるためのフィルタを含むことができる。単一のスピーカ１４のみが図２で例示されるけれども、強調（enhanced）された音声能力を提供するために、多数のスピーカが用いられることができる。
【００３２】
[0043]  ディスプレイ１６は、プラズマ、電子発光、有機発光ダイオード（ＯＬＥＤ）、液晶ディスプレイ（ＬＣＤ）、および／または干渉変調デバイス（ＩＭＯＤ）の技術を利用するフラットパネルディスプレイを含む、様々なディスプレイのいずれでもあることができる。しかしながら、ある実施形態では、ディスプレイ１２は、ブラウン管（ＣＲＴ）または他のチューブデバイス（tube device)のような、フラットパネルではないディスプレイであることができる。仮想キーボードは、ユーザがディスプレイの表面に物理的に触ることなく、ユーザデバイス１２に入力を提供することを許可するけれども、ある実施形態では、ディスプレイはタッチスクリーンのディスプレイであることができ、ここに説明される仮想キーボードは、補助入力デバイスとして用いられることができる。
【００３３】
[0044]  メモリ２１は、例えば、ＲＡＭメモリ、フラッシュメモリ、レジスタ、ハードディスク、取り外し可能なディスクまたはカード、および／または当技術分野で既知のあらゆる他の形態の記憶媒体を含む、多種多様な記憶媒体のいずれでもあることができる。メモリ２１は、後に以下で説明されることになるように、画像データ３３、仮想キーボードおよびセンサレイアウトデータ３４、センサ作動データ３５、およびジェスチャ認識テンプレート３６を含むことができる。あるインプリメンテーションでは、メモリ２１は、例えば、動画処理モジュール１８、特徴抽出モジュール２０、ジェスチャ終点検出モジュール２２、ジェスチャパターン適合モジュール２４、誤警報排除モジュール３０、および／または音声処理モジュール３２を含む、ユーザデバイス１０のうちの１つまたは複数のモジュールに関連付けられた機能（ the functionality associated with one or more module）の全てまたは一部を行うための命令を含むことができる。
【００３４】
[0045]  図２で示されるように、動画処理モジュール１８は、カメラ１２と通信することができ、カメラ１２により捕捉された画像のシーケンスを受け取ることができる。動画処理モジュール１８は、例えば、色信号処理、アナログデジタル変換、および／またはガンマ補正を含む、様々な機能を受け取られた画像上で行うことができる。動画処理モジュール１８は、カメラ１２から、ユーザの手または指を収めた画像のシーケンスを受け取ることができ、動画処理モジュール１８は、鏡像を生成するためにそれぞれの画像を反転させるように構成されることができる。動画処理モジュール１８は、他のモジュールにと同様に、動画特徴抽出モジュール２０に、反転された、および／または反転されていない画像を提供することができる。データは、画像データ２１として、メモリ２１に記憶されることができる。
【００３５】
[0046]  動画処理モジュール１８は、結合された画像を形成するために、処理された、または処理されていない画像を仮想キーボードの画像と結合することができる。例えば、ユーザの手または指の反転された画像は、少なくとも部分的に透明である仮想キーボードの画像にオーバーレイされることができる。結合された画像は、以下で詳しく説明されることになるように、視覚フィードバックを含むように強調されることができ、ディスプレイ１６に提供されることができる。以下で説明されることになるように、仮想キーボードの画像と結合されたユーザの手または指の反転された画像を表示することは、ユーザが仮想キーボードを使用してデータおよび／またはコマンドを入力するのを助けることができる。
【００３６】
[0047]  動画特徴抽出モジュール２０は、動画処理モジュール１８、および／またはメモリ２１から画像のシーケンスを受け取ることができ、動きのエリアを決定するために、画像のシーケンスを処理することができる。例えば、動画特徴抽出モジュール２０は、受け取られたフレームを、直前のフレームのような、捕捉されたシーケンスにおいて前の方の（earlier）フレームと比較することができ、フレーム間の差異の画像を計算することができる。差異の画像は、フィルタリングされた差異の画像を作り出すために、例えば、しきい値より下の差異を除去することによる、などを含むあらゆる適した方法でフィルタリングされることができる。フィルタリングされた、および／またはフィルタリングされていない差異の画像は、メモリ２１に画像データ３３として記憶されることができる。
【００３７】
[0048]  図２を引き続き参照すると、動画特徴抽出モジュール２０は、１つまたは複数の仮想キーの作動を決定するために、フィルタリングされた差異の画像を、メモリ２１に記憶される仮想キーボードおよび仮想センサレイアウト３４と比較することができる。例えば、仮想キーボードは、画像の中に対応するピクセルのロケーションを有しうる複数の仮想センサを含むことができる。ユーザの手または指の動きは、仮想センサの作動を決定するために、仮想センサのロケーションに関係して比較されることができる。例えば、動きの中の変化が、特定の仮想センサに対応する特定のピクセル座標で検出されるとき、仮想センサはその時間インスタンスで（at that time instance）作動することができる。当業者が理解することになるように、仮想センサ情報のセンサの作動は、仮想キーボードをわたるユーザの手または指の動きに関係している地理的および時間的な情報の両方を捕捉する。仮想センサ作動は、メモリ２１に記憶されることができるセンサ作動データ３５を形成するために、時間をかけて収集されることができる。例えば、仮想センサ作動は、約１フレームから約３０フレームまでの間に及ぶ多くのフレーム上に記憶されることができる。
【００３８】
[0049]  ジェスチャ終点検出モジュール２２は、ジェスチャの終点を決定するために、特徴抽出モジュール２０により生成された差異の画像のシーケンスを解析することができる。例えば、ジェスチャ終点検出モジュール２２は、比較的高い動きを収めた１つまたは複数のフレームのシーケンスの後に検出された、比較的低い動きを有する１つまたは複数のフレームの場所を探し出すように構成されることができる。ジェスチャの終点が検出したと決定すると、ジェスチャ終点検出モジュール２２は、ジェスチャの終点を収めたフレームのロケーション、またはジェスチャの終結に対応するセンサ作動データ３５における位置のような、ジェスチャの終点のロケーションをジェスチャパターン適合モジュール２４に通信することができる。
【００３９】
[0050]  図２を引き続き参照すると、ジェスチャパターン適合モジュール２４は、ジェスチャの終点のロケーションを、ジェスチャ終点検出モジュール２２から受け取ることができる。ジェスチャパターン適合モジュール２４は、メモリ２１と通信することができ、センサ作動のシーケンスが１つまたは複数のジェスチャ認識テンプレート３６を適合させるかどうかを決定するために、ジェスチャの終点およびセンサ作動データ３５を使用することができる。例えば、入力されたジェスチャ作動シーケンスは、認識されたジェスチャが生じたかどうかを決定するために、それぞれのジェスチャ認識テンプレートに対して比較され、認識されたジェスチャに対応する１つのまたは複数の作動キーを決定することができる。一実施形態では、ジェスチャパターン適合モジュール２４は、可変速度のジェスチャを適合させるのを助けるために、動的時間伸縮（ＤＴＷ）を用いる。
【００４０】
[0051]  ジェスチャを認識すると、および／または認識プロセスの間に、ジェスチャパターン適合モジュール２４は、検出情報を誤警報排除モジュール３０に提供することができる。誤警報排除モジュール３０は、デバイス１０の動き条件が、しきい値より上かどうかを決定することができる。例えば、誤警報排除モジュール３０は、グローバル動き条件（global motion condition）を決定するために、ジェスチャに関連した１つまたは複数のフレームをわたる作動仮想センサの総数が、しきい値を超えるかどうかを決定することができる。加えて、誤警報排除モジュール３０は、ローカル動き条件（local motion condition）を決定するために、作動キーの地理的な近傍にある作動センサの数を解析することができる。グローバルおよびローカル動き条件は、ユーザのジェスチャが間違って認識されたという十分な可能性があるかどうかを決定するために使用されることができる。誤警報排除モジュール３０は、グローバル動き条件およびローカル動き条件を決定するために、センサ作動データ３５を解析するように構成されることができるけれども、ある実施形態では、誤警報排除モジュール３０は、メモリ２１に記憶される画像データ３３のような、画像データを解析することにより、誤警報を決定することもまたできる。
【００４１】
[0052]  誤警報排除モジュール３０は、ユーザにフィードバックを提供するのを助けるために、動画処理モジュール１８、および／または音声処理モジュール３２と通信することができる。例えば、検出されたジェスチャが有効であると決定すると、誤警報排除モジュール３０は、スピーカ１４を使用して、仮想キーが作動したことを指し示すサウンドを始めるために、音声処理モジュール３２と連係することができる。同様に、誤警報排除モジュール３０は、色で仮想キーの境界を強調することなどにより、仮想キーが作動していることを視覚フィードバックに提供するために、動画処理モジュール１８と連係することができる。誤警報排除モジュール３０が、ジェスチャパターン適合２４により認識されたジェスチャが誤りであるという、許容できないほど高いリスクを有すると決定するとき、誤警報排除モジュールは、ジェスチャが認識されなかったことを指し示す、視覚および／または音声フィードバックを、ユーザに提供するために、音声処理モジュール３２、および／または動画処理モジュール１８と通信することができる。
【００４２】
[0053]  ユーザデバイス１０は、あるモジュールを含むように例示されているけれども、ある実施形態では、ユーザデバイス１０は、より多くの、またはより少ないモジュールを含むことができる。例えば、ユーザデバイス１０は、別個の音声処理モジュール３２を含む必要はなく、および／またはユーザデバイス１０は、振動性フィードバックをユーザに提供するための振動モジュールを含むことができる。加えて、ユーザデバイス１０は、ユーザデバイス１０が、図１のネットワーク２のようなネットワーク上で通信できるように、ネットワークインターフェースモジュールを含むことができる。ネットワークインターフェースモジュールは、無線周波数信号を送信および受け取るために使用されるアンテナおよびトランシーバと通信することができる。
【００４３】
[0054]  ユーザデバイス１０は、例えば、射出成形および／または真空成型を含む、様々な製造プロセスのいずれからも形成される筐体に設置されることができる。筐体は、プラスチック、鉄、ガラス、ゴム、および／またはセラミックに限定されないが含む、あらゆる適した材料から組み立てられることができる。筐体は、異なる色の他の取り外し可能な部分と交換でき、およびロゴ、写真、または記号を収めることができる、取り外し可能な部分を含むことができる。さらに、ユーザデバイス１０は、例えば、ニッケルカドミウム電池、またはリチウムイオン電池のような再充電可能な電池、または太陽電池を含む、エネルギー貯蓄デバイスを含むことができる。ある実施形態では、ユーザデバイス１０は、壁のコンセントから電力を受け取ることができる。
【００４４】
[0055]  図３は、ユーザの手の動きを捕捉するカメラ１２の概略図である。カメラ１２は、カメラセンサ４２およびカメラレンズ４４を含み、カメラ１２は、ユーザの手４６の、手でタイプする行為を捕捉するように位置付けられている。指先のロケーション４７のような、手４６の先端の動きは、現実世界では三次元の座標（Ｘ、Ｙ、Ｚ)を有し、ここにおいてＺはカメラレンズから指先のロケーション４７までの距離を表す。
【００４５】
[0056]  カメラレンズ４４は、ユーザの手の画像を受け取り、カメラセンサ４２にその画像の焦点を合わすことができる。カメラレンズ４４は、焦点距離Ｆを有することができる。カメラセンサ４２は、例えば、光の強度に対応する離散的信号に受け取られる光を変換するように構成される、CCDまたはCMOSセンサ（CMOS sensor configured to convert light received into discrete signals corresponding to the intensity of the light.）であることができる。カメラセンサ４２およびカメラレンズ４４は、画像距離Ｓ分だけ分離されることができる。
【００４６】
[0057]  カメラセンサ４２の表面上にある指先のロケーション４７の投影画像は、以下の式１で表わされることができる座標（ｘ，ｙ）を有し、ここにおいて、Ｘ、Ｙ、Ｚ、ｘ、ｙ、およびＳは上記で定義されたとおりであり、ならびにＣは、三次元空間での指先の奥行（Ｚ）の変化により生じる、二次元空間にある投影画像における水平（ｘ）、および垂直（ｙ）の変化の程度に関係している定数である。
【００４７】
式１
【数１】
0005788588.tif 000002
【００４８】
[0058]  比較的薄いカメラレンズ４４を用いる実施形態では、焦点距離Ｆの反比例は、物体距離Ｚおよび画像距離Ｓの反比例の合計に等しい。この関係性は、以下の式２を使用して述べられることができる。
【００４９】
式２
【数２】
0005788588.tif 000003
【００５０】
[0059]  式２は、画像距離Ｓの点から再配置され、以下の式３をもたらすように結合されることができる。
【００５１】
式３
【数３】
0005788588.tif 000004
【００５２】
[0060]  式３は、以下の式４をもたらすように、時間に関して区別されることができる。
【００５３】
式４
【数４】
0005788588.tif 000005
【００５４】
[0061]  当業者が理解することになるように、式４が、指先のロケーション４７での動きの点から、カメラセンサ４２上の、投影された指先の画像の動きを推定するために使用されることができる。
【００５５】
[0062]  式４で示されるように、固定焦点距離レンズを有する携帯電話のカメラのような、比較的簡単なカメラでも、空中のユーザの手の動きを検出することができる。したがって、以下でさらに詳しく説明されることになるように、ある実施形態では、ユーザデバイス１０は、ユーザデバイス１０が、ズーム、赤外線、深度感知（depth-aware）、またはステレオの機能を有するカメラを含まないときでも、仮想キーボードを提供することができる。
【００５６】
[0063]  図４は、一実施形態に従って、ユーザの手の画像にオーバーレイされる仮想キーボードの画像を例示する。画像５０は、ユーザの手を収めた画像５２にオーバーレイされる仮想キーボード５４の画像を含む。画像５０は、上記で説明されたように、動画処理モジュール１８により生成され、ディスプレイ上に表示されることができる。
【００５７】
[0064]  ユーザの手を収めた画像５２は、ユーザの手の鏡像を作り出すために反転されている。仮想キーボード５４の画像は半透明であり、そのため、下にあるユーザの手の画像５４が、ユーザに部分的に見えることを許可する。図４で示されるように、仮想キー５６は、ユーザの作動に応えて強調されている。仮想キーの強調は、キーの色、ハイライト、形状、明度、またはキーの他の様態を変化させることを含むことができる。したがって、キーの強調は、ユーザに、仮想キーがキー入力（keystroke)により起動されているという視覚インジケータを提供する。それに加えて、図４で例示されないけれども、１つまたは複数のキーは、比較的高い程度のローカルおよび／またはグローバル動きを収める画像で検出されたキー入力または他のジェスチャのような、誤警報に応えて選択的に彩飾される（illuminated）ことができる。例えば、誤警報モジュール３０は、有効なキー入力が検出されるとき、第１の色で１つまたは複数の仮想キーを彩飾し、および、誤警報が検出されるとき、第２の色で１つまたは複数の仮想キーを彩飾するように構成されることができる。
【００５８】
[0065]  図４は、ユーザが仮想キーボードと相互動作するのを助けるために、キー入力の履歴５５がユーザに対して表示されことができることもまた示す。キー入力の履歴５５は、スクリーンの上部のような、スクリーンのあらゆる適した部分上に表示されることができる。例示されるように、キー入力の履歴５５は、ダイヤルされた番号のシーケンスを指し示す。しかしながら、キー入力の履歴５５は、例えば、文字、記号、および／またはコマンドを含む、ユーザ入力のあらゆるシーケンスを表示するように修正されることができる。
【００５９】
[0066]  図４では、１つの仮想キーボード５４のみが例示されるけれども、複数の仮想キーボードがスクリーン上に表示されることができる。複数の仮想キーボードをスクリーン上に提供することは、異なるアプリケーションのために様々な形状およびサイズのキーボードを設計する際に、高い柔軟性を提供する。
【００６０】
[0067]  図５は、仮想キーに対する仮想センサレイアウトの３つの例の概略図である。仮想キーボードは、複数の仮想センサ６４をそれぞれが有する複数の仮想キーを含みうる。例えば、図５は、キー「１」に対応する第１の仮想キー６２ａ、文字「Ａ」に対応する第２の仮想キー６２ｂ、および、記号「＃」に対応する第３の仮想キー６２ｃを例示する。
【００６１】
[0068]  それぞれの仮想キーは、同じ数のセンサ、および同じセンサアレイレイアウト（sensor array layout）を有することができる。しかしながら、それぞれの仮想キーは、同じ数のセンサ、または同じレイアウトを有する必要はない。例えば、仮想センサ６４の構成は、第１、第２、および第３の仮想キー６２ａ−６２ｃの間で異なる。第１の仮想キー６２ａは、アレイの中に配置される９つの仮想センサを含み、第２の仮想キー６２ｂは、円周の周りに配置される６つの仮想センサを含み、および第３の仮想キー６２は、キーの対角線および右端に沿って配置される５つの仮想センサを含む。ある実施形態では、英数字のキーは類似した仮想センサアレイレイアウトを有するが、スペースバーのキーのような、１つまたは複数のキーは、より多い数の仮想センサおよび異なる仮想センサレイアウトを有することができる。
【００６２】
[0069]  それぞれの仮想センサ６４は、画像の中の隣接しているピクセルの領域に対応することができる。例えば、それぞれの仮想センサ６４は、約１０ピクセルから約１０，０００ピクセルまでの間に及ぶ多くのピクセルを含むことができる。それぞれの仮想センサ６４は、実質的に六角形であるエリアを有するように例示されるが、それぞれの仮想センサは、矩形または正方形である形状を含む、様々な形状に限定限定されないが、有することができる。
【００６３】
[0070]  仮想センサ６４は、仮想キーボードがユーザに対して表示されるときに、表示される必要はない。それよりもむしろ、仮想センサ６４は、仮想キーボードのピクセル領域に関連することができるが表示されず、ユーザの手または指のジェスチャを決定する際、システムにより使用されることができる。例えば、仮想センサ６４上のユーザの手または指の動きは、仮想センサを引き起こすことができる。１つの実施形態では、ユーザの手または指の動きが、仮想センサの任意のピクセル上で検出されるとき、仮想センサは作動するように決定される。別の実施形態では、ユーザの手または指の動きが、約２０％から約１００％までの間の仮想センサのピクセル上で検出されるとき、仮想センサは作動するように決定される。
【００６４】
[0071]  仮想センサ作動の状態は、それぞれのフレームに対して記憶され、複数のフレームをわたる仮想センサ作動のパターンは取得されることができる。複数のフレーム上の仮想センサ作動のシーケンスは、ジェスチャを認識するために使用されることができる。例えば、図２のジェスチャパターン適合モジュール２４のようなジェスチャパターン適合モジュールは、認識されたジェスチャの存在を決定するために、仮想センサ作動のシーケンスを、１つまたは複数のジェスチャ認識テンプレートに対して比較することができる。仮想センサ作動のシーケンスを使用してパターン適合を用いることは、フレーム全体を適合させる手法に関係する計算時間を減少させることができ、動的時間伸縮（ＤＴＷ）のような、多種多様な速度のジェスチャに関するジェスチャ適合を提供することができる適合アルゴリズムのアプリケーションを許可することができる。ジェスチャパターン適合の追加の詳細は、図７−９を参照して、後に以下で説明されることになる。
【００６５】
[0072]  図６は、ユーザの手の画像にオーバーレイされた図５の仮想キーの概略図である。
【００６６】
[0073]  図６で示されるように、手の画像６８は、ユーザの指の画像６９を含む。指の画像６９は、仮想キー６２ａ上に置かれる。先に説明したように、ユーザが手または指を動かすとき、差異の画像または動きベクトルが決定されることができる。動きベクトルは、仮想キーボードに関係して追跡され、しきい値を越える大きさを有する動きベクトルは、対応するピクセルのロケーションで仮想センサを作動することができる。これにより、１つまたは複数の仮想センサ上の、実質的に静止した位置に置かれたユーザの指は、結果として仮想センサが作動することにならないだろう。しかしながら、ユーザの指を十分な速さで動かすと、１つまたは複数の仮想センサが作動することができる。仮想センサ作動の履歴は記憶され、仮想センサ作動の履歴は、ユーザのジェスチャを決定するために、１つまたは複数のジェスチャ認識テンプレートに対して適合されることができる。
【００６７】
[0074]  仮想センサを用いることにより、ユーザの手の動きについての地理的および時間的な情報の両方が取得されることができる。情報は、ユーザの動きの方向を指し示すことができる。ジェスチャ認識の追加の詳細は、図７−９を参照して以下で説明されることになる。
【００６８】
[0075]  図７は１つの実施形態にしたがって仮想キーボードを提供する方法７０のフローチャートである。全ての例示されたブロックが要求されるわけではなく、この方法は、本発明の趣旨および範囲から逸脱することなく修正されることができると、理解されるだろう。
【００６９】
[0076]  図２のユーザデバイス１０のようなユーザデバイスの点から描写される方法７０は、ブロック７１で開始する。次のブロック７２では、ユーザデバイスは指または手の画像のシーケンスを捕捉する。例えば、ユーザデバイスのカメラは、ユーザの手または指を収める画像のシーケンスを捕捉することができる。画像は、色信号処理、Ａ／Ｄ変換、および／またはガンマ補正のために処理され、および画像は反転されることができる。
【００７０】
[0077]  次のブロック７４では、ユーザデバイスは仮想キーボードの画像をそれぞれの指または手の画像と結合する。例えば、仮想キーボードの画像は、ブロック７２で取得され、および反転された画像にオーバーレイされることができる。仮想キーボードの画像は、表示されるとき、下にあるユーザの手または指の画像が、少なくとも部分的に見えることを許可するために、少なくとも部分的に透明であることがある。
【００７１】
[0078]  次のブロック７５では、結合された画像は、ディスプレイ上に表示される。仮想キーボードおよびユーザの手または指の両方を有する結合された画像を提供することは、ユーザが仮想キーボードと相互動作するのを助けることができる。ブロック７２に関して上記で説明されたように、仮想キーボードシステムの有用性を向上させるために、ユーザの手の画像は、ユーザに対して表示される前に反転されることができる。
【００７２】
[0079]  方法７０は、ユーザデバイスが、仮想キーボードの仮想センサに関係する指または手の画像の中の動きを検出するブロック７６に続く。例えば、ユーザデバイスは、１つまたは複数の差異の画像を生成するために、シーケンシャルな画像の間の差異を計算することなどにより、動きのエリアを決定するようにブロック７２で捕捉された画像のシーケンスを処理することができる。差異の画像は、フィルタリングされた差異の画像を作り出すために、しきい値より下の差異を除去することによる、などのようなあらゆる適した方法でフィルタリングされることができる。
【００７３】
[0080]  次のブロック７７では、検出された動きはセンサ作動データを決定するために使用される。例えば、動きを収めたフィルタリングされた差異の画像のピクセル領域は、仮想センサのピクセル領域と比較され、十分な動きを有する仮想センサは作動するように決定されることができる。例えば、仮想センサは複数のピクセルを占有し、２０％以上の仮想センサのピクセルをわたる検出された動きは、センサが作動していることを指し示すことができる。仮想センサ作動データは、複数のフレーム上で蓄積されることができる。
【００７４】
[0081]  仮想キーボードを提供する方法７０は、ジェスチャがセンサ作動データを使用して認識されるブロック８０に続く。例えば、ユーザデバイスは、ジェスチャが検出されたかどうかを決定するために、センサ作動データを１つまたは複数のジェスチャ認識テンプレートと比較することができる。ジェスチャ認識テンプレートにおける追加の詳細は、図８Ｂに関して以下で見つけられることができる。ジェスチャ適合のプロセスは、結果として、異なるユーザのジェスチャ、および／または異なる仮想キーを含みうる候補の手のジェスチャのリストになることができる。あるインプリメンテーションでは、ジェスチャパターン認識８０は、それぞれの候補の手のジェスチャに対する信頼ファクタを生成し、認識されたジェスチャを決定するために信頼ファクタ（confidence factors）を使用することができる。ブロック８０の１つのインプリメンテーションにおける更なる詳細は、図９を参照して以下で説明される。
【００７５】
[0082]  図７の方法８４は、視覚、音声、および／または振動性フィードバックのような、触覚フィードバックがユーザに出力されるブロック８４に続く。例えば、キー入力を認識するとき、作動を指し示すサウンドが生成され、および／またはキーをハイライトすることなどにより、キーがディスプレイ上で視覚的に強調されることができる。加えて、ジェスチャがブロック８０で認識されるが、許容できない誤りのリスクを有するように決定されたとき、視覚、音声、および／または振動性フィードバックは、そのジェスチャが認識されなかったと指し示すために使用されることができる。例えば、異なる色のハイライトがユーザに提供されることができ、および／または排除されたキー入力を指し示すサウンドが生成されることができる。
【００７６】
[0083]  図８Ａは、１つの実施形態にしたがった、仮想キーボードの一部である。仮想キーボードの一部は、９つの仮想キー９１ａ−９１ｉを含み、それぞれの仮想キーは、７つの仮想センサ６４を含む。実例となる目的のために、それぞれの仮想キー９１ａ−９１ｉに対する仮想センサ６４は、ＡからＧまでの文字でラベルをつけられている。
【００７７】
[0084]  キー９１ａ−９１ｉのためのセンサ作動データは、先に説明されたように、複数のフレームをわたり記憶されることができる。センサ作動データは、キー９１ａ−９１ｉのセンサが、所与の時間のインスタンスで、または所与のフレームで作動されたかどうかを指し示す情報を含むことができる。例えば、センサ作動データが１０つのフレームのために記憶される実施形態では、１０つのフレームのそれぞれのための９つのキーのそれぞれに対する７つの作動に対応する、６３０のセンサ作動が記録されることができる。
【００７８】
[0085]  図８Ｂは、図８Ａの仮想キーボードの一部をわたる手または指の動きの８つの方向を検出するための、８つのジェスチャ認識テンプレート１００ａ−１００ｈの例を例示する。それぞれのジェスチャ認識テンプレートは、１（「one」）が作動を指示し、０（「zero」）が作動なしを指示する、０および１のアレイを含む。ジェスチャ認識テンプレートの行は、（図８Ａで例示されるセンサのロケーションに対応する）特定のセンサのロケーションを表し、テンプレートの列は、ある期間をわたるフレームの経過を表す。
【００７９】
[0086]  ジェスチャ認識テンプレート１００ａ−１００ｈは、図８Ａのキー９１ａ−９１ｉのいずれかをわたる、８つの方向のいずれかにおける動きを検出するために使用されることができる。例えば、ジェスチャ認識テンプレート１００ａは、センサＦおよびＧの項目で１を、残りの項目で０を有する第１列、センサＣ、Ｄ、およびＥの項目で１を、残りの項目で０を有する第２列、ならびに、センサＡおよびＢの項目で１を、残りの項目で０を有する第３列を含む。例示されたジェスチャ認識テンプレートの列が時間的経過で配置されるため、センサＦおよびＧの作動は、その後センサＣ、Ｄ、およびＥの作動が続き、次にセンサＡおよびＢの作動がそれに続いて、仮想キーをわたる手または指の上方への移動を指し示すことができる。キー９１ａ−９１ｉのそれぞれのためのセンサ作動データに対するジェスチャ認識テンプレート１００ａを解析することにより、キー９１ａ−９１ｉのうちの１つまたは複数をわたるユーザの手または指の上方への動きが検出されることができる。同様に、ジェスチャ認識テンプレート１００ｂ−１００ｈは、キー９１ａ−９１ｉのうちの１つまたは複数をわたる他の方向における動きを決定するために使用されることができる。
【００８０】
[0087]  図８Ｂで示されるように、全てのジェスチャ認識テンプレートが同じサイズである必要はない。むしろ、あるジェスチャ認識テンプレートは、より長い継続時間のパターンに関連することができる。
【００８１】
[0088]  手および／または動きの速度は、ユーザの間で一致しないこともある。加えて、カメラのフレームレートは様々なアプリケーションで異なることもあり、結果として所与の期間に関連して、より多い、またはより少ないフレームをもたらす。したがって、ジェスチャ認識テンプレートを使用するジェスチャ認識は、可変速度のフレームシーケンスをわたり行われることができる。例えば、動的時間伸縮（ＤＴＷ）は、適合を決定するために、センサ作動情報のシーケンスとジェスチャ認識テンプレートに収められたシーケンスとの間で適用されることができる。ＤＴＷを使用することは、シーケンスが、それらの類似性の測定を決定するために、時間の次元で非直線的に伸縮されることができるのを許可する。
【００８２】
[0089]  ジェスチャ認識テンプレート１００ａ−１００ｈは、ジェスチャを認識するために、単一のキーをわたるセンサデータを使用するように構成される。しかしながら、ジェスチャ認識テンプレートはより一層複雑であることがあり、および１つまたは複数の追加のキーの全てまたは一部をわたるセンサデータを含むことができる。例えば、図８Ｃは、別の実施形態にしたがった仮想キーボードの一部を例示して、図８Ｄは、図８Ｃの仮想キーボードの一部をわたるジェスチャを検出するためのジェスチャ認識テンプレート１０１の例を例示する。ジェスチャ認識テンプレート１０１は、複数のキーをわたるセンサに関連したセンサ作動情報を含み、および、例えば、キーをわたる上方への動きを検出するために使用されることができる。複数のキーをわたるセンサ情報を使用してジェスチャ認識テンプレートを提供することは、例えば、ジェスチャ認識の精度を向上させることを含む、多くの利点を提供することができる。１つのインプリメンテーションでは、ジェスチャ認識テンプレートは、例えば、約１８のキーのような、約２つのキーから約２５のキーまでの間に及ぶ多くのキーからのセンサに関連する。
【００８３】
[0090]  ジェスチャ認識テンプレートは、ユーザの手または指の方向のほかに、多種多様なジェスチャを認識するように構成されることができる。例えば、ジェスチャ認識テンプレートは、タイプするジェスチャ、ホールドアンドドラッグする（hold and drag）ジェスチャ、指差す（pointing）ジェスチャ、および／またはあらゆる他の適したジェスチャを認識するために提供されることができる。ジェスチャ認識テンプレートは、多種多様なユーザをわたり収集されたユーザのデータに基づいて生成され、および、隠れマルコフモデルのような、統計モデルを使用してインプリメントされることができる。しかしながら、あるインプリメンテーションでは、トレーニングプログラムが、ユーザ特有のジェスチャ認識テンプレートを生成、および／またはリファイン（refine）するのを助けるために、用いられることができる。
【００８４】
[0091]  あるインプリメンテーションでは、テンプレートは、ジェスチャが認識されるようにセンサ作動データを完璧に適合させる必要はない。むしろ、候補ジェスチャのリストが生成され、および、信頼ファクタはそれぞれの候補ジェスチャのために計算されることができる。あるインプリメンテーションでは、最も高い信頼ファクタを有するジェスチャは、認識されたジェスチャとみなされることができる。例えば、ｉのジェスチャテンプレートおよびｊの仮想キーを有する１つのインプリメンテーションでは、ジェスチャパターン適合の信頼ファクタは、ｉのジェスチャおよびｊのキーのそれぞれのために算出されることができ、最も高いパターン適合の信頼ファクタを有するキーおよびジェスチャテンプレートの特定の組み合わせは、認識されたキーおよびジェスチャでありうる。
【００８５】
[0092]  図９は、図７からジェスチャを認識するブロック８０のプロセスにおける方法の１つの実施形態のフローの図である。例示されたブロックの全てが要求されるわけではなく、この方法が本発明の趣旨および範囲から逸脱することなく修正されることができることは、理解されるだろう。
【００８６】
[0093]  図２のユーザデバイス１０のようなユーザデバイスの点から描写される方法８０は、ブロック１２１で開始する。次のブロック１２２では、ジェスチャの終点が検出される。例えば、ユーザデバイスは、フレームが比較的低いレベルの動きを有する場合にジェスチャの終点が存在することを決定することができ、および、比較的高いレベルの動きを収めた１つまたは複数のフレームの後に位置付けられる。
【００８７】
[0094]  次のブロック１２４では、動的時間伸縮（ＤＴＷ）が、センサ作動データを複数のジェスチャ認識テンプレートのそれぞれと合わせるために使用される。ブロック１２２で検出された終点は、ＤＴＷ処理に関連した計算負荷を減少させるために使用されることができる。先に説明されたように、それぞれのジェスチャ認識テンプレートは、認識可能なジェスチャに対応するセンサ作動のシーケンスを含むことができ、およびセンサ作動データは、仮想キーボードとのユーザの相互動作に基づいて決定された、仮想センサ作動のシーケンスを表すことができる。ジェスチャに関連したフレームの数が、ユーザの手および／またはユーザの動き速度、ならびに／あるいはカメラのフレームレートのような、様々なファクタに基づいて変わることができるため、ジェスチャ認識テンプレートおよびセンサ作動データは、異なるレートまたは速度で変化するパターンに対応することができる。これにより、ＤＴＷを用いることは、１つまたは複数のジェスチャ認識テンプレートをセンサ作動データと合わせるのを助けることができ、そのため、ジェスチャ適合を容易にする。
【００８８】
[0095]  方法８０は、１つまたは複数の候補ジェスチャおよび対応する信頼ファクタが、センサ作動データを使用して、決定されるブロック１２６に続く。例えば、それぞれのジェスチャ認識テンプレートは、シーケンス間の時間的バリエーションを明らかにするためにＤＴＷを使用した後、センサ作動データと比較されることができる。それぞれのジェスチャ認識テンプレートと、センサ作動データとの比較は、結果として１つまたは複数の潜在的なジェスチャの適合になることができる。それぞれの潜在的なジェスチャの適合は、ジェスチャ認識テンプレートとセンサ作動データとの類似性に基づいて、信頼ファクタを割り当てられることができ、しきい値の信頼レベルを超える潜在的なジェスチャの適合のような、十分な信頼ファクタの潜在的なジェスチャの適合は、候補ジェスチャであると決定されることができる。候補ジェスチャ、およびそれぞれのジェスチャ認識テンプレートを使用して決定された対応する信頼ファクタは、候補ジェスチャのリストおよび信頼ファクタを集合的に形成することができる。
【００８９】
[0096]  次のブロック１２８では、偽陽性（false positive）が除去される。例えば、偽陽性を除去することは、ジェスチャに関連した１つまたは複数のフレームをわたる作動仮想センサの総数がしきい値を超えるかどうかを決定すること、および／または、認識されたジェスチャが間違って認識されているという十分な可能性があるかどうかを決定するために、作動キーの地理的近傍にある作動センサの数を解析することを含むことができる。偽陽性の除去は、グローバル動き条件、ローカル動き条件、ならびに／あるいは１つまたは複数の信頼ファクタを使用する、候補ジェスチャのリストからの１つまたは複数の候補ジェスチャの除去を含むことができる。最も高い信頼ファクタを有し、および偽陽性であるとして除去されていない候補ジェスチャは、認識されたジェスチャであると決定されることができる。方法は、１３０で終了する。
【００９０】
[0097]  ここに開示されたインプリメンテーションと関連付けて説明される様々な実例となる論理、論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組み合わせとしてインプリメントされうる。ハードウェアおよびソフトウェアの互換性は、概して機能の点から説明され、様々な実例となるコンポーネント、ブロック、モジュール、回路、および上記で説明されたステップで例示されている。このような機能がインプリメントされているのが、ハードウェアであるかソフトウェアであるかは、特定のアプリケーションおよびシステム全体に課せられた設計制約に依存する。
【００９１】
［0098］  ここに開示された態様に関連付けて説明された様々な実例となる論理、論理ブロック、モジュール、および回路をインプリメントするために使用されるハードウェアならびにデータ処理装置は、汎用単一チップのプロセッサまたは汎用マルチチップのプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいは他のプログラマブル論理デバイス、離散ゲートまたはトランジスタ論理、離散ハードウェアコンポーネント、またはここに説明された機能を実行するために設計された、それらのあらゆる組み合せでインプリメントまたは行われうる。汎用プロセッサは、マイクロプロセッサ、または、あらゆる従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシン（state machine）でありうる。プロセッサはまた、例えば、ＤＳＰおよびマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと連結した１つまたは複数のマイクロプロセッサ、またはあらゆる他のそのような構成、などのコンピューティングデバイスの組み合わせとしてもまたインプリメントされうる。いくつかのインプリメンテーションでは、特定のステップおよび方法は、所与の機能に特有である回路により行われうる。
【００９２】
[0099]  １つまたは複数の例示的な様態では、説明された機能は、本明細書で開示される構造、およびこれらの構造的均等物を含む、ハードウェア、デジタル電子回路、コンピュータソフトウェア、ファームウェアまたはこれらのあらゆる組み合わせでインプリメントされうる。本明細書で説明される主題のインプリメンテーションはまた、データ処理装置による実行のための、またはデータ処理装置の動作を制御するためのコンピュータ記憶媒体で符号化される、１つまたは複数のコンピュータプログラム、つまりコンピュータプログラムの命令の１つまたは複数のモジュール、としてインプリメントされることができる。
【００９３】
[0100]  ソフトウェアでインプリメントされるとき、機能は、コンピュータ可読媒体上の１つまたは複数の命令あるいはコードとして、記憶または送信されうる。ここに開示される方法またはアルゴリズムのステップは、コンピュータ可読媒体上に属しうるプロセッサ実行可能なソフトウェアモジュールでインプリメントされうる。コンピュータ可読媒体は、１つの場所から別の場所へコンピュータプログラムを転送するために有効にされうるあらゆる媒体を含むコンピュータ記憶媒体および通信媒体の両方を含む。記憶媒体は、コンピュータによりアクセスされうるあらゆる利用可能な媒体でありうる。限定ではなく例として、そのようなコンピュータ可読媒体は、命令またはデータ構造の形態で所望のプログラムコードを記憶するために使用され、コンピュータによりアクセスされうる、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭ、または他の光ディスク記憶デバイス、磁気ディスク記憶デバイス、または他の磁気記憶デバイス、あるいはあらゆる他の媒体を含みうる。また、任意の接続手段が、コンピュータ可読媒体と適切に名づけられることができる。ここで使用されるようなディスク（ｄｉｓｋ）およびディスク（ｄｉｓｃ）は、コンパクトディスク（ＣＤ）、レーザディスク（登録商標）、光ディスク、デジタルバーサタイルディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、およびブルーレイ（登録商標）ディスクを含み、通例、ディスク（ｄｉｓｋ）は、データを磁気的に再生する一方で、ディスク（ｄｉｓｃ）はデータをレーザで光学的に再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれうる、機械可読媒体およびコンピュータ可読媒体上で、１つの、またはいずれかの組み合わせの、またはセットのコードおよび命令として存在しうる。
【００９４】
［0101］  本開示で説明されるインプリメンテーションへの様々な変更は、当業者にとって容易に明らかであり、および、ここで定義される一般的な原理は、本開示の趣旨または範囲から逸脱することなく他のインプリメンテーションに適用されうる。これにより、本開示は、ここに示されるインプリメンテーションに限定されるように意図されないが、ここに開示される請求項、原理、および新規な特徴と一致する最も広い範囲を与えられることとなる。「例示的」という言葉は、ここでは、「例、事例、または実例としての役割を果たす」という排他的に意味するように使用される。「例示的な」ものとして、ここに説明されるいずれのインプリメンテーションも、他のインプリメンテーションに対して、必ずしも、好ましいまたは利点があるものと解釈されるものではない。
【００９５】
[0102]  別個のインプリメンテーションのコンテキストにおいて本明細書で説明される、ある特徴もまた、単一のインプリメンテーションで組み合わせてインプリメントされることができる。反対に、単一のインプリメンテーションのコンテキストにおいて説明される様々な特徴もまた、複数のインプリメンテーションで別個に、またはあらゆる適したサブコンビネーションでインプリメントされることができる。さらに、特徴はある組み合わせで作用するように上記で説明され、および最初からそのように主張されうるけれども、主張される組み合わせからの１つまたは複数の特徴は、いくつかの場合では、その組み合わせから削除され、主張される組み合わせは、サブコンビネーション、またはサブコンビネーションのバリエーションを対象としうる。
【００９６】
[0103]  同様に、動作は、特定の順序で図面に描写される一方で、このことが、所望の結果を達成するために、そのような動作が示された特定の順序で、またはシーケンシャルな順序で行われ、あるいは、全ての例示された動作が行われることを要求するように理解されるべきではない。ある環境では、マルチタスクおよび平行処理は利点があることがありうる。さらに、上記で説明されるインプリメンテーションにおける様々なシステムコンポーネントの分離が、全てのインプリメンテーションの中でそのような分離を要求するように理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品に共に一体化され、または複数のソフトウェア製品にパッケージされることができると理解されるべきである。加えて、他のインプリメンテーションは、以下の請求項の範囲内である。いくつかの場合では、請求項に記載されるアクションは、異なる順序で行われることができ、それでもなお所望の結果を達成することができる。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[Ｃ１]
コンピューティングデバイスにデータを入力するためのシステムであって、
ユーザの指を収める画像のシーケンスを捕捉するためのカメラと、
仮想キーボードと結合された前記シーケンスのそれぞれの画像を表示するためのディスプレイと、ここにおいて、前記仮想キーボードに関係する表示された画像における前記指の位置は、前記ユーザの指が前記カメラに関係して動くにつれて変化する、
前記仮想キーボードに関係する前記画像のシーケンスにおける前記ユーザの指の動きを検出するように構成される動画特徴抽出モジュールと、ここにおいて、前記仮想キーボードは複数の仮想キーを備え、それぞれの仮想キーが複数の仮想センサを有し、前記動画特徴抽出モジュールは、検出された動きを使用して前記仮想センサのセンサ作動データを捕捉する、
ユーザのジェスチャを認識して、前記コンピューティングデバイスにデータを入力するために、前記センサ作動データを使用するためのジェスチャパターン適合モジュールと、を備えるシステム。
[Ｃ２]
前記ディスプレイが、前記仮想キーボードを、前記シーケンスにおける前記画像のそれぞれにオーバーレイし、前記仮想キーボードが少なくとも部分的に透明である、Ｃ１に記載のシステム。
[Ｃ３]
前記システムが、前記ジェスチャが認識されるとき、視覚フィードバック、音声フィードバック、および振動性フィードバックのうち少なくとも１つを提供するように構成される、Ｃ１に記載のシステム。
[Ｃ４]
ジェスチャの終点を検出するためのジェスチャ終点検出モジュールをさらに備える、Ｃ１に記載のシステム。
[Ｃ５]
前記ジェスチャパターン適合モジュールが、前記ジェスチャを認識するために、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較するように構成される、Ｃ４に記載のシステム。
[Ｃ６]
前記ジェスチャパターン適合モジュールが、前記ジェスチャの終点が検出された後に、前記センサ作動データを、前記複数のジェスチャ認識テンプレートのそれぞれと比較するように構成される、Ｃ４に記載のシステム。
[Ｃ７]
前記ジェスチャパターン適合モジュールが、動的時間伸縮を使用して、前記センサ作動データを、前記複数のジェスチャ認識テンプレートのそれぞれに合わせるように構成される、Ｃ５に記載のシステム。
[Ｃ８]
前記センサ作動データを使用して動き条件を検出するための、ならびに前記動き条件がしきい値より上であるとき、前記ジェスチャパターン適合モジュールが、前記ジェスチャを認識することから防ぐための誤警報排除モジュールをさらに備える、Ｃ１に記載のシステム。
[Ｃ９]
前記誤警報排除モジュールが、前記動き条件が前記しきい値より上であるとき、視覚フィードバック、音声フィードバック、および振動性フィードバックのうちの少なくとも１つを提供するように構成される、Ｃ８に記載のシステム。
[Ｃ１０]
前記ジェスチャがキー入力である、Ｃ１に記載のシステム。
[Ｃ１１]
仮想キーボードを使用して、電子デバイスにデータを入力するための方法であって、
ユーザの指を収める画像のシーケンスを受け取ることと、
前記シーケンスのそれぞれの画像についての結合された画像を生成することと、前記結合された画像は、前記ユーザの指および仮想キーボードを収めている、
前記仮想キーボードに関係する前記画像のシーケンスにおける前記指の動きを検出することと、前記仮想キーボードは複数の仮想キーを有し、それぞれの仮想キーが複数の仮想センサを有する、
検出された動きのピクセル領域を、前記仮想センサのピクセル領域と比較することにより、センサ作動データを生成することと、
前記電子デバイスにデータを入力するために、前記センサ作動データを使用して、ジェスチャを認識することと
を備える、方法。
[Ｃ１２]
前記結合された画像を、ディスプレイ上に表示することをさらに備える、Ｃ１１に記載の方法。
[Ｃ１３]
前記結合された画像を表示することが、前記画像のシーケンスにオーバーレイされた前記仮想キーボードを表示することを備え、前記仮想キーボードは少なくとも部分的に透明である、Ｃ１２に記載の方法。
[Ｃ１４]
前記ジェスチャを認識した後、少なくとも１つの仮想キーをハイライトすることをさらに備える、Ｃ１２に記載の方法。
[Ｃ１５]
前記ジェスチャを認識することが、少なくとも１つの候補ジェスチャを識別するために、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較することを備える、Ｃ１１に記載の方法。
[Ｃ１６]
前記検出された動きを使用して、ジェスチャの終点を検出することをさらに備える、Ｃ１５に記載の方法。
[Ｃ１７]
動的時間伸縮を使用して、前記センサ作動データを、それぞれのジェスチャ認識テンプレートと合わせることをさらに備える、Ｃ１６に記載の方法。
[Ｃ１８]
信頼ファクタを、それぞれの候補ジェスチャに割り当てることをさらに備える、Ｃ１５に記載の方法。
[Ｃ１９]
前記ジェスチャを認識することが、最も大きい信頼ファクタを有する前記少なくとも１つの候補ジェスチャから、ジェスチャを選択することを備える、Ｃ１８に記載の方法。
[Ｃ２０]
前記センサ作動データを使用して動き条件を決定することと、前記動き条件がしきい値より上であるとき、前記少なくとも１つの候補ジェスチャのうちの１つまたは複数が、認識されたジェスチャであることを防ぐことをさらに備える、Ｃ１５に記載の方法。
[Ｃ２１]
コンピューティングデバイスにデータを入力するためのシステムであって、
ユーザの指を収める画像のシーケンスを捕捉するための手段と、
仮想キーボードと結合された前記シーケンスのぞれぞれの画像を表示するための手段と、ここにおいて、前記仮想キーボードに関係する表示された画像における前記指の位置は、前記ユーザの指が前記カメラに関係して動くにつれて変化する、
前記仮想キーボードに関係する前記画像のシーケンスにおける前記ユーザの指の動きを検出するための手段と、ここにおいて、前記仮想キーボードは複数の仮想キーを備え、それぞれの仮想キーが複数の仮想センサを有し、動きを検出するための手段は、検出された動きを使用して前記仮想センサのセンサ作動データを捕捉する、
前記コンピューティングデバイスにデータを入力するために、前記センサ作動データを使用して、ユーザのジェスチャを認識するための手段と、
を備える、システム。
[Ｃ２２]
前記表示するための手段が、前記仮想キーボードを、前記シーケンスにおける前記画像のそれぞれにオーバーレイし、前記仮想キーボードが少なくとも部分的に透明である、Ｃ２１に記載のシステム。
[Ｃ２３]
前記システムが、前記ジェスチャが認識されるとき、視覚フィードバック、音声フィードバック、および振動性フィードバックのうちの少なくとも１つを提供するように構成される、Ｃ２１に記載のシステム。
[Ｃ２４]
ジェスチャの終点を検出するための手段をさらに備える、Ｃ２１に記載のシステム。
[Ｃ２５]
前記ユーザのジェスチャを認識するための手段が、前記ジェスチャを認識するために、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較するように構成される、Ｃ２４に記載のシステム。
[Ｃ２６]
前記ユーザのジェスチャを認識するための手段が、前記ジェスチャの終点が検出された後に、前記センサ作動データを、前記複数のジェスチャ認識テンプレートのそれぞれと比較するように構成される、Ｃ２５に記載のシステム。
[Ｃ２７]
前記ユーザのジェスチャを認識するための手段が、動的時間伸縮を使用して、前記センサ作動データを、前記複数のジェスチャ認識テンプレートのそれぞれに合わせるように構成される、Ｃ２５に記載のシステム。
[Ｃ２８]
前記動き条件がしきい値より上であるとき、前記ジェスチャパターン適合モジュールが、前記ジェスチャを認識することから防ぐための手段をさらに備える、Ｃ２１に記載のシステム。
[Ｃ２９]
実行されるときに、仮想キーボードを使用して電子デバイスにデータを入力するという方法を行う命令を備える、非一時的なコンピュータ可読記憶媒体であって、前記方法が、
ユーザの指を収める画像のシーケンスを受け取ることと、
前記シーケンスのそれぞれの画像についての結合された画像を生成することと、前記結合された画像は、前記ユーザの指および仮想キーボードを収めている、
前記仮想キーボードに関係する前記画像のシーケンスにおける前記指の動きを検出することと、前記仮想キーボードは複数の仮想キーを有し、それぞれの仮想キーが複数の仮想センサを有する、
検出された動きのピクセル領域を、前記仮想センサのピクセル領域と比較することにより、センサ作動データを生成することと、
前記電子デバイスにデータを入力するために、前記センサ作動データを使用して、ジェスチャを認識することと
を備える、非一時的なコンピュータ可読記憶媒体。
[Ｃ３０]
前記方法が、前記結合された画像を、ディスプレイ上に表示することをさらに備える、Ｃ２９に記載のコンピュータ可読記憶媒体。
[Ｃ３１]
前記結合された画像を表示することが、前記画像のシーケンスにオーバーレイされた前記仮想キーボードを表示することを備え、前記仮想キーボードは少なくとも部分的に透明である、Ｃ３０に記載のコンピュータ可読記憶媒体。
[Ｃ３２]
前記方法が、前記ジェスチャを認識した後、少なくとも１つの仮想キーをハイライトすることをさらに備える、Ｃ３１に記載のコンピュータ可読記憶媒体。
[Ｃ３３]
前記ジェスチャを認識することが、少なくとも１つの候補ジェスチャを識別するために、前記センサ作動データを、複数のジェスチャ認識テンプレートのそれぞれと比較することを備える、Ｃ２９に記載のコンピュータ可読記憶媒体。
[Ｃ３４]
前記方法が、前記検出された動きを使用して、ジェスチャの終点を検出することをさらに備える、Ｃ３３に記載のコンピュータ可読記憶媒体。
[Ｃ３５]
前記方法が、動的時間伸縮を使用して、前記センサ作動データを、それぞれのジェスチャ認識テンプレートと合わせることをさらに備える、Ｃ３４に記載のコンピュータ可読記憶媒体。
[Ｃ３６]
前記方法が、信頼ファクタをそれぞれの候補ジェスチャに割り当てることをさらに備える、Ｃ３５に記載のコンピュータ可読記憶媒体。
[Ｃ３７]
前記ジェスチャを認識することが、最も大きい信頼ファクタを有する前記少なくとも１つの候補ジェスチャから、ジェスチャを選択することを備える、Ｃ３６に記載のコンピュータ可読記憶媒体。
[Ｃ３８]
前記方法が、前記センサ作動データを使用して動き条件を決定することと、前記動き条件がしきい値より上であるとき、前記少なくとも１つの候補ジェスチャのうちの１つまたは複数が、認識されたジェスチャであることを防ぐことをさらに備える、Ｃ３７に記載のコンピュータ可読記憶媒体。
【図１】
0005788588.tif 000006
【図２】
0005788588.tif 000007
【図３】
0005788588.tif 000008
【図４】
0005788588.tif 000009
【図５】
0005788588.tif 000010
【図６】
0005788588.tif 000011
【図７】
0005788588.tif 000012
【図８Ａ】
0005788588.tif 000013
【図８Ｂ】
0005788588.tif 000014
【図８Ｃ】
0005788588.tif 000015
【図８Ｄ】
0005788588.tif 000016
【図９】
0005788588.tif 000017