(57)【特許請求の範囲】
【請求項１】
コンピュータによって実施される方法であって、
タッチセンサ式デバイスによってキャプチャされた複数のフレームを表すフレームデータを取得するステップと、
前記複数のフレームの各フレームにおける各々のブロブを定義するために前記フレームデータを解析するステップであって、前記ブロブはタッチイベントを示す、ステップと、
前記タッチイベントのための複数の特性セットを計算するステップであって、各特性セットは、前記複数のフレームの各フレームにおける前記各々のブロブのプロパティを指定する、ステップと、
前記複数のフレームのための前記複数の特性セットに基づいて、多数の非バイモーダルな分類スコアを提供するように構成されたマシン学習分類によって、前記タッチイベントのタイプを判定するステップであって、各非バイモーダルな分類スコアは、前記マシン学習分類における曖昧さレベルを示す、ステップとを備え、
前記マシン学習分類は、各非バイモーダルな分類スコアが、前記タッチイベントが各々のタイプである確率を表すことができるように、前記非バイモーダルな分類スコアを生成するように構成される、方法。
【請求項２】
前記非バイモーダルな分類スコアの各々が、前記複数の特性セットを入力として受け取るように構成されたマシン学習分類器によって生成される、請求項１に記載のコンピュータによって実施される方法。
【請求項３】
前記マシン学習分類器は、ランダム決定フォレスト分類器を備える、請求項２に記載のコンピュータによって実施される方法。
【請求項４】
前記タッチイベントのための前記複数のフレームにわたる前記ブロブのトラックを定義するステップと、
前記トラックのためのトラック特性セットを計算するステップとをさらに備え、
前記タイプを判定するステップは、前記トラック特性セットをマシン学習分類器へ適用するステップを備える、請求項１に記載のコンピュータによって実施される方法。
【請求項５】
前記複数の特性セットを計算するステップは、前記タッチイベントの前記タイプを判定する際に、前記複数の特性セットのマシン学習分類器への適用前に、前記複数の特性セットを示すデータを集約するステップを備える、請求項１に記載のコンピュータによって実施される方法。
【請求項６】
前記マシン学習分類は、ルックアップテーブルベースの分類を備える、請求項１に記載のコンピュータによって実施される方法。
【請求項７】
前記タイプを判定するステップは、前記複数のフレームの各々のフレームのための前記特性セットを、多数のルックアップテーブルへ適用するステップを備え、各ルックアップテーブルは、前記多数の非バイモーダルな分類スコアの各々の個々の非バイモーダルな分類スコアを提供する、請求項１に記載のコンピュータによって実施される方法。
【請求項８】
前記タイプを判定するステップは、前記各々のフレームのためのブロブ分類レーティングスコアを生成するために、前記各々のフレームのための前記個々の非バイモーダルな分類スコアの各々を組み合わせるステップを備える、請求項７に記載のコンピュータによって実施される方法。
【請求項９】
前記多数のルックアップテーブルは、前記タッチイベントが意図されたタッチである第１のレーティングを提供するように構成された第１のルックアップテーブルを備え、さらに、前記タッチイベントが意図されていないタッチである第２のレーティングを判定するための第２のルックアップテーブルを備え、
前記タイプを判定するステップは、前記各々のフレームのための前記ブロブ分類レーティングスコアを判定するために、前記第１のレーティングから前記第２のレーティングを減算するステップを備える、請求項８に記載のコンピュータによって実施される方法。
【請求項１０】
前記タイプを判定するステップは、前記タッチイベントのための累積的なマルチフレーム分類スコアを判定するために、前記ブロブ分類レーティングスコアを、前記複数のフレームにわたって集約するステップを備える、請求項８に記載のコンピュータによって実施される方法。
【請求項１１】
前記タイプを判定するステップは、
前記累積的なマルチフレーム分類スコアが、多数の分類しきい値のうちの１つをパスするか否かを判定するステップと、
パスしないのであれば、前記複数の特性セットのさらなる特性セットに関連して、前記特性セットを適用する動作、前記分類スコアを組み合わせる動作、および、前記レーティングスコアを集約する動作を繰り返すステップとを備える、請求項１０に記載のコンピュータによって実施される方法。
【請求項１２】
各特性セットは、各フレームにおける前記各々のブロブにおいて配置された画像パッチの外見を示すデータを備える、請求項１に記載のコンピュータによって実施される方法。
【請求項１３】
各特性セットは、各フレームにおける前記各々のブロブのための前記フレームデータにおける強度勾配を示すデータを備える、請求項１に記載のコンピュータによって実施される方法。
【請求項１４】
各特性セットは、各フレームにおける前記各々のブロブの円周の商または真円度の他のメトリックを示すデータを備える、請求項１に記載のコンピュータによって実施される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本開示のより完全な理解のために、以下の詳細説明および添付図面に対する参照がなされる。ここで、同一の符番は、図面において同一の要素を識別するために使用され得る。
【図面の簡単な説明】
【０００２】
【図１】[0002]一例によるタッチ分類のために構成されたシステムのブロック図である。
【図２】[0003]一例によるタッチ分類のためのコンピュータによって実施される方法のフロー図である。
【図３】[0004]一例による図２の方法の非バイモーダルなスコアリング手順のフロー図である。
【図４】[0005]別の例による図２の方法の非バイモーダルなスコアリング手順のフロー図である。
【図５】[0006]開示された方法およびシステム、または、その１つまたは複数の構成要素または態様の実施のための一例によるコンピューティング環境のブロック図である。
【発明を実施するための形態】
【０００３】
[0007]  開示されたシステムおよび方法は、様々な形式における実施形態に影響されやすいが、本開示は、例示的であることが意図され、本発明を本明細書で説明および例示された特定の実施形態へ限定することは意図されていないという理解の下、特定の実施形態が、図面において例示される（また、その後、説明される）。
【０００４】
[0008]  コンピューティングデバイスのタッチセンサ面におけるタッチイベントの分類のための方法、システム、およびコンピュータプログラム製品が提供される。意図的なタッチと意図的ではないタッチとを区別するために、マシン学習分類器が使用される。意図的ではないタッチイベントは、うっかりしてユーザの手のひらから、または他の形でタッチセンサ面に接触することによって生じ得る。他の意図的ではないタッチは、ハンドヘルドデバイスのベゼル上における親指または手の他の部分を含み得る。この区別は、意図的ではないそのようなイベントが、コンピューティングデバイスによって拒否または無視されることを可能にし得る。意図的ではないタッチイベントの拒否は、計画的な指またはスタイラス（またはペン）によるタッチのような意図的なタッチイベントの適切な認識と組み合わされて、コンピューティングデバイスとの向上されたユーザ体験を提供し得る。場合によっては、分類技術はまた、たとえば、指によるタッチイベントとペンによるタッチイベントとのように、異なるタイプの意図的なタッチをも区別し得る。この区別はまた、分類の信頼度または曖昧さレベルを示すデータを生成するステップを含み得る。
【０００５】
[0009]  分類技術は、スタイラスによるタッチまたはペンによるタッチのために構成されたタッチシステムによって提示される課題に対処し得る。たとえば、スタイラスまたは他のペン器具を用いてタッチセンサ面上にマークを加える過程において、ユーザは、面上に自分の手のひら（または手または手首の他の部分）をうっかりして載せ得る。コンピューティングデバイスは、その後、このうっかりした手のひらの接触を、正しい入力動作として誤って解釈し得る。これによって、コンピューティングデバイスによる潜在的に望まれない振る舞いを引き起こす。他の意図的ではないタッチは、ユーザが、面の他の部品に対して手（または、その同じ手に保持されたペンまたはスタイラス）を偶然に払ったり突くことを含み得る。分類技術によって対処され得るさらに別のスタイラス関連の課題は、しばしばスクリーンに接触している、スタイラスを保持していない指を正しく分類するステップを含む。問題をより困難にすることには、手のひらが、スクリーンの端部の近くにタッチした場合、手のひらのごくわずかな部分のみが、タッチセンサ面によって検出され得る。分類技術は、タッチセンサ面に接触している手のひらのエリアが減少しても、手のひらを正しく分類し得る。
【０００６】
[0010]  分類技術は、意図的なタッチと意図的ではないタッチとをリアルタイムで確実に区別する計算複雑さの少ない処理を提供し得る。この技術は、ユーザインターフェース応答に不適切な遅延をもたらすことなく、低い誤り率を達成し得る。フォールスポジティブ（意図的ではないタッチの入力）およびフォールスネガティブ（失敗した意図的なタッチ）が、マシン学習分類器の設定、および／または、この技術の他の態様によって回避される。マシン学習分類器は、（たとえば、多数の人々からの）タッチの各タイプについて収集されたセンサ像（または、フレームデータ）によって学習され得る。よって、分類技術は、ユーザインターフェース処理におけるレイテンシを最小化するための単純なアルゴリズムに必ずしも依存する必要はない。マシン学習分類は、確実な分類をリアルタイムで、すなわち、レイテンシ効果をもたらすことなく提供する。
【０００７】
[0011]  異なるメモリの量または利用可能な他のコンピューティングリソースを有するコンピューティングデバイスにおいて、精度の向上が実現され得る。異なるマシン学習分類器は、異なるリソースレベルを適応させるために使用され得る。たとえば、場合によっては、マシン学習分類器は、条件付き確率分布を提供するように構成されたランダム決定フォレスト（RDF）分類器として構成される。ＲＤＦ分類器は、数１０キロバイトのオーダのメモリ上に、ＲＤＦツリーデータ構造のストレージを含み得る。よって、ＲＤＦ実施は、（たとえば、中央処理ユニットまたはグラフィック処理ユニットのような）汎用プロセッサを用いて、オペレーティングシステムレベルのようなソフトウェアレベルで、タッチ分類が生じる場合において有用であり得る。
【０００８】
[0012]  分類技術はまた、メモリおよび他のコンピューティングリソースがより制約されるコンピューティング環境においても実施され得る。場合によっては、マシン学習分類は、１つまたは複数のルックアップテーブルとして実施される決定ツリー分類器によって提供される。ルックアップテーブルの、より小さな分類データ構造は、分類が、マイクロコントローラおよび他のリソース制約ハードウェアによって実施される場合に有用である。よって、分類技術は、広範囲のコンピューティングプラットフォームにおいて実施され得る。以下では、ＲＤＦおよびルックアップテーブルの例に関連して説明されるが、分類技術は、どの特定のタイプのマシン学習分類器にも限定されない。たとえば、ニューラルネットワーク、ファジーロジック、サポートベクトルマシン、およびロジスティック回帰分類器が使用され得る。
【０００９】
[0013]  分類技術は、分類の精度を向上するために、タッチイベントの多数のフレームにわたってタッチ情報を集約するように構成される。集約は、単一の画像またはフレームのみに基づいてタッチイベントを分類することを試みる際に生じ得る問題を回避する。たとえば、手のひらが、最初に面に接触する場合、または、手のひらが、面からほとんど取り除かれた場合に、手のひらは、意図的なタッチと類似して見え得る。何れかのポイントにおいて、手のひらのほんの小さな部分のみが検出され得る。場合によっては、集約は、多数のフレームにわたって分類スコアを集約するステップを含む。他の場合には、集約は、多数のフレームにわたってタッチのプロパティまたは特性を集約するステップを含む。さらに他の場合には、分類技術は、両方のタイプの集約の組合せを使用し得る。集約はまた、ユーザが電気的なフローティングの状態にある（たとえば、ユーザは、接地に対して良好な高周波数接続を有していない）ことによって、通常、手のひらが接触した広いエリアが、消える傾向にある場合のように、他の状況から生じるフォールスポジティブを回避することに役立ち得る。
【００１０】
[0014]  マシン学習分類器は、多数の非バイモーダルな分類スコアを提供するように構成される。各非バイモーダルな分類スコアは、マシン学習分類における曖昧さまたは信頼度のレベルを示す。分類スコアの性質は、たとえば、使用される分類器のタイプにしたがって変動し得る。たとえば、各分類スコアは、分類スコアが、確率値である（たとえば、０と１との間にある浮動小数点または他の非整数）という観点において非バイモーダルであり得る。（たとえば、タッチイベントの各タイプについて１のような）多数の確率値が提供され得る。他のタイプの分類スコアは、代わりに、整数を使用し得る。たとえば、分類スコアは、可能なスコアの範囲（たとえば、−９から＋９）にあるスコアレーティングであり得る。そのような場合には、最終的な、合成レーティングを判定するために、多数の非バイモーダルなスコアが結合（たとえば、総和）され得る。たとえば、多数のルックアップテーブルからの非バイモーダルなスコアが、各フレームのために結合され得る。これは、その後、タッチイベントに関連付けられたフレームのすべてにわたって集約され得る。他のタイプの非バイモーダルなスコアが使用され得る。たとえば、分類スコアの確率およびレーティングタイプは、混成分類アプローチを提供するために、可変範囲へ統合され得る。
【００１１】
[0015]  「指タッチ」という用語は、本明細書では、ユーザの手または他の身体部分を含む何れかの計画的すなわち意図的なタッチイベントを指すために使用される。たとえば、指タッチは、親指の側面が、タッチセンサ面に接触することを含み得る。これは、たとえば、２本の指ズームジェスチャの間に生じ得る。タッチは、直接的または間接的であり得る。たとえば、タッチは、手袋をはめた手で、または他の形で服を着た身体部分でなされ得る。
【００１２】
[0016]  「ペンタッチ」という用語は、ペン、スタイラス、または、タッチセンサ面とインタラクトするためにユーザによって保持されている他の物体を含む種々の異なる意図的なタッチを指すために使用される。コンピューティングデバイスは、パックと、ブラシまたはエアブラシのような専用ツールと、モバイルデバイスと、玩具と、他の物理的なアイコンまたは実体的な物体とを含む様々な別個のまたはタグ付けられた物理的な物体と使用するために構成され得る。
【００１３】
[0017]  「タッチ」という用語は、タッチセンサ面に関連付けられた入力センサによって検出されたタッチセンサ面との任意のインタラクションを指すために使用される。タッチは、直接的な物理的な接触を含まなくても必要としなくてもよい。インタラクションは、間接的であり得る。たとえば、タッチセンサ面は、近接センサと共に構成され得る。インタラクションは、電磁界のような様々な物理的なプロパティで検出され得る。よって、たとえば、指または手による接触、ペンまたはスタイラスによる接触、浮遊ベースの入力、タグ付けされた物体、および、入力面に接触して、または他の形で入力面に近接して配置された他の任意の物体を含むタッチの性質および／またはソースは、変動し得る。したがって、分類技術は、投影された容量、光、および／または、他の感知技術を含むジェスチャおよび浮遊タイプのタッチイベントに関連して有用であり得る。
【００１４】
[0018]  「手のひら」および「手のひらのタッチ」のような用語は、タッチセンサ面とのタッチまたは他のインタラクションとして解釈されるようにユーザによって意図されていない１つまたは複数の任意の身体部分を含む接触または他のタッチ面インタラクションを指すために使用される。身体部分は、手の指関節、指の側面、手首もしくは前腕、または他の身体部分のような、手のひらに加えた手の他の部分を含み得る。
【００１５】
[0019]  分類技術は、種々のハンドヘルドおよび他のコンピューティングデバイスを用いて有用であり得る。よって、タッチセンサ面と、タッチセッサ面とのインタラクションの性質とは、相応して変化し得る。よって、意図的なタッチは、ユーザの指先または指を含むことに限定されない。分類技術は、１つまたは複数のタッチセンサ面または領域（たとえば、タッチスクリーン、タッチセンサのベゼルまたは場合、浮遊タイプの入力の検出のためのセンサ、光タッチセンサ等）を有する任意のタッチセンサ式コンピューティングデバイスに関連して互換性があり有用である。タッチベースのコンピューティングデバイスの例は、限定されないが、コンピューティングデバイスに接続されたタッチセンサ式ディスプレイデバイス、タッチセンサ式電話デバイス、タッチセンサ式メディアプレーヤ、タッチセンサ式ｅリーダ、ノートブック、ネットブック、ブックレット（デュアルスクリーン）、または、タブレットタイプのコンピュータ、または、１つまたは複数のタッチセンサ面を有する他の任意のデバイスを含む。よって、タッチセンサ式コンピューティングデバイスのサイズおよび波形率は変動し得る。たとえば、タッチセンサ面のサイズは、ハンドヘルドまたはウェアラブルコンピューティングデバイスのディスプレイから、壁掛けディスプレイまたは他の大型フォーマットディスプレイスクリーンに及ぶことがある。しかしながら、タッチセンサ面は、ディスプレイまたはタッチスクリーンに関連付けられることも、関連付けられないことも、ディスプレイまたはタッチスクリーンを含むことも、含まないこともあり得る。たとえば、タッチセンサ面は、トラックパッドとして提供され得るか、または、たとえば、マイクロソフト社のＫｉｎｅｃｔデバイスを使用して実施され得るように、タッチ入力が検出される空間における平面として実現される仮想面であり得る。
【００１６】
[0020]  分類技術は、容量性タッチシステムに関連して説明される。本明細書では、容量性感知を参照しているにも関わらず、本明細書で説明されたタッチ分類技術は、任意の特定のタイプのタッチセンサに限定されない。あるいは、タッチセンサ面は、抵抗、音響、光、および／または、他のタイプのセンサを使用し得る。よって、タッチセンサ面は、代わりに、圧力、光、変位、熱、抵抗、および／または、他の物理的なパラメータにおける変化を検出し得る。タッチセンサ面がスタイラスまたはペンのような入力デバイスをどのように検出するかは変動し得る。たとえば、ペンは、パッシブおよび／またはアクティブであり得る。アクティブなペンは、タッチセンサ面によって検出された信号を放射または再送信し得る。パッシブなペンは、近接度検出の目的のためにタッチセンサ面の電磁界または他の特性と干渉するたとえばスタイラスの先端の中の磁石または他の物体または素材を含み得る。タッチセンサ技術の性質の他の態様は変動し得る。
【００１７】
[0021]  図１は、タッチ分類を実施するように構成されたタッチセンサ式デバイス１００を描写する。デバイス１００は、タッチシステム１０２およびタッチセンサ面１０４を含む。タッチセンサ面１０４は、タッチスクリーンまたは他のタッチセンサ式ディスプレイであり得る。任意の数のタッチセンサ面１０４が含まれ得る。この例では、デバイス１００はまた、プロセッサ１０６および１つまたは複数のメモリ１０８を含む。タッチシステム１０２は、タッチセンサ面１０４と、プロセッサ１０６およびメモリ１０８によってサポートされるオペレーティング環境との間のインターフェースまたは他の仲介として役立ち得る。プロセッサ１０６は、中央処理ユニット（CPU）、グラフィック処理ユニット（GPU）、または他の任意の専用プロセッサまたは処理ユニットのような汎用プロセッサであり得る。任意の数のそのようなプロセッサまたは処理ユニットが含まれ得る。
【００１８】
[0022]  タッチシステム１０２は、タッチセンサ面１０４において生じたタッチイベントを示すデータを提供するために、プロセッサ１０６および／またはメモリ１０８へ通信可能に結合され得る。タッチイベントデータは、タッチイベントの場所およびタイプを指定し得る。このデータはまた、タイプの割当における曖昧さレベルをも表し得る。追加の、より少ない、または代替の情報が、イベントタイプに関連してタッチシステム１０２によって提供され得る。たとえば、タッチイベントタイプは、タッチイベント識別コードを示すデータと共に提供され得る。タッチイベントの場所および／または他の情報は、タッチシステム１０２によって個別に提供され得る。
【００１９】
[0023]  図１の例では、タッチシステム１０２は、１つまたは複数のタッチセンサ１１０、ファームウェアおよび／またはドライバ１１２、プロセッサ１１４、および１つまたは複数のメモリ１１６を含む。プロセッサ１１４は、各メモリ１１６および／またはファームウェア／ドライバ１１２へ通信可能に結合される。プロセッサ１１４は、タッチセンサ面１０４を介してキャプチャされたフレームデータを取得するように構成される。フレームデータは、タッチセンサ面１０４を介してキャプチャされた複数のフレームを表す。各フレームのフレームデータは、面１０４においてタッチイベントが生じている範囲の画像をともに形成する値または画素の行列を含み得る。各画素の値は、センサ１１０が面１０４上の特定の場所において検出したタッチの量を示す。フレームデータは、タッチセンサ１１０の生の出力データを含み得るか、および／または、生の出力データの処理された表現を含み得る。
【００２０】
[0024]  フレームデータがプロセッサ１１４によってどのように取得されるかは変動し得る。たとえば、フレームデータは、ファームウェア／ドライバ１１２を介して受信され得、および／または、メモリ１１６にアクセスすることによって取得され得る。
【００２１】
[0025]  フレームデータは、その代わりに、または、それに加えて、プロセッサ１０６によって取得され得る。場合によっては、プロセッサ１０６は、タッチタイプ判定を実施する目的のためにフレームデータを取得する。そのような場合には、プロセッサ１１４は、センサ１１０を制御するように指示され得るか、および／または、判定のための１つまたは複数の前処理、または、準備における他のタスクを実施するように構成され得る。タッチ分類技術のフレームデータおよび他の態様の処理は、プロセッサ１０６とプロセッサ１１４との任意の組合せによって実施され得る。他の例では、デバイス１００は、フレームデータを取得し処理する目的のために、単一のプロセッサ（すなわち、プロセッサ１０６、プロセッサ１１４、または異なるプロセッサの何れか）を含む。
【００２２】
[0026]  デバイス１００におけるタッチシステムハードウェアの構成および配置は変動し得る。たとえば、各タッチセンサ１１０は、代わりに、タッチセンサ面１０４の構成要素として構成され得る。ファームウェア１１２を介して提供されるドライバおよび他の情報は、代わりに、メモリ１１６に記憶され得る。
【００２３】
[0027]  プロセッサ１１４は、メモリ１１６および／またはメモリ１０８に記憶された多くの命令セットを実行するように構成される。命令セットは、各々のソフトウェアモジュールとして整えられ得る。モジュールまたは他の命令セットは、任意の所望の範囲まで統合され得る。命令セットは、ブロブ定義命令１１８、特性計算命令１２０、およびマシン学習分類命令１２２を含む。ブロブ定義命令１１８は、フレームデータの多数のフレームにわたるタッチイベントのための、ブロブまたは接続された構成要素を定義するように指示され得る。各々のブロブは、タッチイベントが生じる各フレームにおいて定義され得る。特性計算命令１２０は、ブロブのプロパティまたは特性を計算するように指示され得る。各特性は、タッチイベントのタイプを識別することに役立ち得るブロブの態様を特徴付け得る。マシン学習分類命令１２２は、特性セットに基づいて、マシン学習分類によってタッチイベントのタイプを判定するように指示される。分類の出力は、多数の非バイモーダルな分類スコアを含む。これは、分類における曖昧さのレベルを識別する。その目的のために、特性セットがマシン学習分類器へ適用され、分類スコアが生成され得る。各命令セットは、以下の多数の例に関連して説明される。追加の命令、モジュール、または命令セットが含まれ得る。たとえば、マシン学習分類器の出力に基づいてタッチタイプを生成し、および／または、タッチタイプを示すデータをプロセッサ１０６またはデバイス１００の他の構成要素へ送信するための１つまたは複数の命令セットが含まれ得る。
【００２４】
[0028]  プロセッサ１１４は、タッチイベントのための複数のフレームの各フレームにおける各々のブロブを定義するために、ブロブ定義命令１１８を実行し、フレームデータを解析するように構成される。与えられたタッチイベントは、任意の数のフレームに及び得る。多数のフレームにわたるブロブの定義は、タッチイベントを分類する際に処理されるべき入力データを確立する。
【００２５】
[0029]  ブロブ定義命令１１８は、プロセッサ１１４に対して、解析のためのフレームデータを準備するために多くの事前処理動作を実行させ得る。たとえば、フレームデータ（たとえば、生のフレームデータ）は、解析（たとえば、ブロブ定義解析）前に、アップサンプルおよび／またはしきい値化され得る。フレームデータをアップサンプルするステップは、４ｘ、または、バイリニア補間による他のアップサンプリングレートを含み得る。バイキュービック、畳み込み、およびニアレストネイバー技術のような他のアップサンプル手順が使用され得る。他の手順が使用され得る。場合によっては、フレームデータは、アップサンプリング無しで、しきい値化無しで、または、アップサンプリング無しでしきい値化も無く解析される。たとえば、フレームデータは、ルックアップテーブル分類器が使用される場合によっては、アップサンプルされない。
【００２６】
[0030]  フレームデータをしきい値化するステップは、ノイズによるフレームデータ内の小さな変動を除去するように指示され得る。たとえば、しきい値未満の強度値を有するフレームデータにおけるすべての画素をゼロ値にリセットするために、あらかじめ決定された強度しきい値が使用される。ノイズを除去するために、追加のまたは代替のフィルタリング技術が使用され得る。フレームデータがアップサンプルされる場合には、しきい値化は、アップサンプリング後に実施される。
【００２７】
[0031]  フレームデータしきい値は、タッチシステム１０２によって使用される他のしきい値と異なり得る。たとえば、フレームデータしきい値は、タッチイベントを検出するためにタッチシステム１０２によって使用されるしきい値よりも低くなり得る。より低いしきい値は、面１０４との実際の接触の前および後に手のひらおよび／または他のタッチイベントを検出する際に有用であり得る。たとえば、接触の直前に（たとえば、手のひらが、面１０４に接近すると）手のひらを検出するステップは、手のひらのタッチを、意図されたタッチから区別する目的のために、１つまたは複数の追加のデータのフレームを提供し得る。場合によっては、しきい値は、タッチシステムしきい値の設定可能な、または、あらかじめ決定されたパーセンテージとして確立され得る。これは、タッチシステム１０２によって検出されたノイズのレベルに依存する可変しきい値であり得る。
【００２８】
[0032]  しきい値化は、あるいは、または、その代わりに、画素毎ベースでフレームデータの２進法表現を生成するように構成および指示され得る。各画素は、しきい値に対する画素の強度値に基づいて、「オン」または「オフ」の何れかである。フレームデータの２進法表現は、フレームデータにおけるブロブを定義するための処理を単純化するために使用され得る。
【００２９】
[0033]  ブロブは、どの「オン」画素（たとえば、非ゼロ強度を有する画素）が他の「オン」画素に隣接しているのかを判定するために、フレームデータを解析することによって、フレームデータにおいて定義される。そのような隣接した画素は、互いに接続されていると考慮される。接続されている画素のグループは、その後、フレーム画像における接続された構成要素またはブロブであると考慮される。各フレームは、多くのブロブを有し得る。それら各々は、個別に分類され得る。接続されている構成要素の解析が、フレーム内のすべてのブロブを検出するために、フレームデータセット全体にわたって実行される。ブロブ定義命令１１８は、それに関する将来の処理を追跡および指示する目的のために、各ブロブへ識別子を割り当てるようにプロセッサ１１４へ指示し得る。
【００３０】
[0034]  多くの場合において、各ブロブは、面１０４に接触している個別の物体に対応する。しかしながら、２つ以上のブロブが同じ物体によって誘導される場合がある。たとえば、手のひらのタッチ接触はしばしば、２つ以上の不連続なブロブへ分割される。他の場合には、単一のタッチブロブは、たとえば、互いに触れている指の指先のように、互いに非常に近接している複数の物体の結果である。よって、フレームデータの接続されている構成要素の解析はさらに、これら潜在的な複雑さに対処するために、フレームデータのさらなる処理を含み得る。たとえば、ブロブ定義命令１１８は、プロセッサ１１４に対して、ブロブ分割および／またはブロブ合併が保証されているか否かを判定するために、さらにフレームデータを解析させ得る。
【００３１】
[0035]  ブロブ分割解析では、各ブロブは、ブロブが、近い指に属する複数の指先の接触の結果であるか否かを判定するために解析され得る。この判定は、分類器を使用し得る。多数の指に対応すると認められたブロブは、解析のために個別のサブブロブへ分割される。一例では、各指先タッチの座標は、ブロブにおけるローカルな最大値（たとえば、８つすべての直接的な近隣以上の強度値を有する画素）の位置に基づいて判定される。指先は、ブロブにおける各強度ローカル最大値に配置されていると仮定され、ブロブは、オリジナルのブロブにおける各画素を、その場所（たとえば、ローカル最大値）が画素に最も近い指先に関連付けられたサブブロブへ割り当てることによってサブブロブへ分割される。
【００３２】
[0036]  所与のブロブが、実際に、多数の指先から生成されたか否かに関する決定は、分類器を使用して実現され得る。一例では、分類器は、１つまたは複数の決定ツリーによって実施される。しかし、様々な異なる分類器が使用され得る。分類器は、マシン学習されることも、されないこともあり得る。たとえば、分類器は、経験的または他のデータに基づいて手動で生成され得る。
【００３３】
[0037]  １つの典型的なブロブ分割手順では、所与のしきい値以上の強度を有するブロブにおけるすべてのローカル最大値の座標（サブ画素精度におけ得る）のリストが生成される。リストにおける最大値は、最短の探索（すなわち、リストにおけるすべてのローカル最大値にわたる最短経路）からなる可能な順序のうちの１つにおいてソートされる。しきい値は、指先に対応するローカル最大値によって達成される最小強度値として、学習データから見出される。
【００３４】
[0038]  分類器によって適用される特性は、ブロブのエリアと、ローカル最大値の数と、ソートされたグループにおける（すなわち、最短経路の順序における）連続的なローカル最大値間の距離と、ソートされたグループにおける連続したローカル最大値を接続する線に沿った強度におけるバリエーションとであり得るか、これらを含み得る。よって、分類器は、ローカル最大値と、強度がローカル最大値の間で降下する範囲との間の距離に応じて構成され得る。
【００３５】
[0039]  ブロブが多数の指先に対応すると認められるのであれば、ブロブは、個別のブロックへ分割される。各個別のブロックは、ローカル最大値の各々に関連付けられる。そのような各ブロブは、オリジナルのブロブからの画素のサブセットによって形成されるか、このサブセットを含む。オリジナルのブロブにおける画素は、より近い（または最も近い）ローカル最大値を有する新たなブロブの各々に関連付けられる。
【００３６】
[0040]  ブロブ分割は、タッチ分類におけるより多くの複雑さを含む場合において実施され得る。たとえば、ブロブ分割は、ランダム決定フォレスト分類器がタッチ分類のために使用される場合において実施され得る。他の場合には、ルックアップテーブルおよび他の低リソース分類器がタッチ分類のために使用されるいくつかの場合を含むブロブ分割は実施されない。それでもやはり、ブロブ分割は、これらの場合のうちの何れかにおいて実施されることも、実施されないこともあり得る。
【００３７】
[0041]  ブロブ分割が実施されない場合には、ブロブ定義命令１１８は、プロセッサ１１４に対して、各ブロブ内のローカル最大値を識別して記憶するように指示し得る。識別された各最大値を用いて、後続するフレームにおける各ブロブにおける変化（たとえば、各ブロブ内で発見されたローカル最大値）が追跡され得る。たとえば、指先が別々に広げられた場合、ブロブが、２つの個別のブロブになるのであれば、２つの個別のブロブの個別の分類をサポートするために、ローカル最大値が使用され得る。最大値の場所は、それに加えて、または、その代わりに、タッチイベントを、タッチシステム１０２の他の部分によって検出された潜在的なタッチに相関付けるために使用され得る。たとえば、ファームウェア１１２、メモリ１１６、および／または、別のメモリは、分類無しでタッチイベントを検出するように指示された命令を含み得る。
【００３８】
[0042]  代わりの、または、追加のブロブ定義手順として、ブロブマージが実施され得る。ブロブマージでは、接近して間隔をおかれたブロブがともにマージされ、単一のブロブが生成される。マージは、後に処理され分類されるブロブの数を最小化するために実施され得る。したがって、マージは、ルックアップテーブルおよび別の低リソース分類プラットフォームにおいて実施され得る。マージはまた、近い指のタッチを、対応する手のひらとマージするために有用であり得る。ブロブがともにマージされる距離は、設定可能であり得る。一例では、この距離は、２画像画素である。これは、いくつかのタッチシステムにおいて約９ｍｍに対応し得る。
【００３９】
[0043]  場合によっては、ブロブ定義命令１１８はまた、プロセッサ１１４に対して、ブロブをトラックへ割り当てるように指示する命令をも含み得る。「トラック」という用語は、（たとえば、物体が面１０４と接触している間に）一連の連続したフレームにわたって特定の物体によって生成されるブロブ（および基幹をなすフレームデータ）の集合を指すために使用される。トラック割当および定義は、何れかのブロブ分割またはマージの後に実施され得る。トラックの定義によって、多数のフレームにわたってブロブが被る動きおよび他の変化が追跡されるようになる。ブロブを特定のトラックへ割り当てることによって、各々のフレームにおけるブロブは、同じタッチイベントの一部として互いに関連付けられ得る。たとえば、連続したフレームにおけるブロブの数は、ユーザの指先が、スワイプジェスチャで面１０４にわたって移動するタッチイベントの一部として互いに関連付けられ得る。新たな各ブロブは、新たなトラックまたはアクティブなトラックの何れかへ割り当てられ得る。アクティブなトラックは、前のフレームに関して既に定義されたトラックである。
【００４０】
[0044]  いくつかの場合では、２つの部分のマッチングによって、または、各々のフレームにおけるブロブの他の解析によって、新たなブロブがアクティブなトラックへ割り当てられ得る。現在のフレームにおいて検出されたブロブを、前のフレームにおけるブロブに関連付けるために、様々なマッチング技術が使用され得る。２つの部分のマッチングにおいて適用されるコスト関数は、新たな各ブロブの位置と、前のトラックの軌跡から推定されるような各トラックの接触点の予想される位置との間の距離に基づき得る。連続した各フレームによって表されるブロブは、トラックが拡張されるか、または、削除されるかを判定する。
【００４１】
[0045]  アクティブなトラックと、関連付けられた属性とのリストは、タッチシステム１０２によって記憶される。図１の例では、リストは、データベース１２４に記憶される。データベース１２４は、メモリ１１６のうちの１つに記憶され得る。他のストレージ場所および／またはデータ構造が使用され得る。現在のブロブによって拡張されることができないトラックは、アクティブなトラックのリストから削除される。新たなアクティブなリストが、一致されることはないであろう各ブロブのリストへ追加されるか、あるいは他の形で既存のアクティブなトラックへ関連付けられ得る。ブロブ定義命令１１８は、ブロブを、トラックＩＤ番号のようなトラック識別子によってトラックに関連付けるように構成され得る。
【００４２】
[0046]  ブロブ定義命令１１８は、トラックが完了した場合、ブロブ特性計算命令１２０へ制御を渡し得る。トラックは、少なくともあらかじめ決定されたフレームの数を拡張された場合、完了していると考えられる。たとえば、フレームの数は、３つのフレームであり得る。
【００４３】
[0047]  トラックへのブロブの割当は、マシン学習分類において適用されるべき特性がトラックの特性を含んでいる場合に有用であり得る。トラック特性は、ランダム決定フォレスト（RDF）分類器を含む例に関連して以下に説明されるように、個々のブロブの特性に加えて適用され得る。トラックはまた、トラック特性が分類において使用されないものを含む他の場合においても使用され得る。さらに他の場合には、ブロブは、トラックへ割り当てられない。たとえば、トラックは、ルックアップテーブルと、小さな特性セットを有する他の低リソース分類技術とにおいて使用されないことがあり得る。
【００４４】
[0048]  プロセッサ１１４は、各タッチイベントのための複数の特性セットを計算するために、特性計算命令１２０を実行するように構成される。各特性セットは、複数のフレームの各フレームにおける各々のブロブのプロパティを指定する。これらプロパティは、ブロブが定義されると、または、トラックが完了すると認められた場合のような後の時点において計算され得る。たとえば、ブロブ特性計算命令１２０は、プロセッサ１１４に対して、タッチイベントのタイプを判定する際にマシン学習分類器へ適用する前に特性セットデータを集約させるように構成され得る。他の場合には、将来の特性データセットの計算が実行中であれば、特定のブロブのための特性セットデータが、マシン学習分類器へ適用される。たとえば、第１のフレームのための特性セットデータのアプリケーションが、第２のフレームのための特性セットデータの計算と同時に分類器へ適用され得る。そのような同時処理は、特性データが各フレームについて個別に分類器へ適用される場合において有用であり得る。
【００４５】
[0049]  計算されるべきブロブプロパティは、変動し得る。ランダム決定フォレスト（RDF）分類器を含む一例では、以下のブロブプロパティの任意の組合せが、各ブロブについて計算され得る。（ｉ）エリア；重み付けられた質量中心（たとえば、Σ（ｘ，ｙ）∈Ｂｌｏｂ）（ｘ，ｙ）＊Ｉｎｔｅｎｓｉｔｙ（ｘ，ｙ））、（ｉｉ）最小、最大、および中間の強度、（ｉｉｉ）最小、最大、および中間の強度勾配の大きさ、（ｉｖ）境界、（ｖ）円周の商（すなわち、４＊ＰＩ＊エリア／境界＊２）のような真円度メトリック、（ｖｉ）重み付けられた質量中心から最も近い画像端までの距離、（ｖｉｉ）画像端におけるブロブ画素の平均強度（すなわち、画素は、画像における最初または最後の行または列に沿っている）、（ｖｉｉｉ）画像端における幅（すなわち、画像端におけるブロブ画素の数）、（ｉｘ）重み付けられた質量中心を中心とする（生またはしきい値化されたフレームデータからの）５×５の画像パッチの外観、および（ｘ）重み付けられた質量中心を中心とする（生またはしきい値化されたフレームデータからの）１７×１７の画像パッチの外観。画像パッチの外観は、パッチにおける各々の画素の強度値の解析によって定量化され得る。画像パッチ特性のサイズは変動し得る。画像パッチはまた、中央に置かれ、または他の形で、重み付けられた質量中心以外の位置におけるブロブに対して配置され得る。
【００４６】
[0050]  追加の、より少ない、または代替のプロパティが、ＲＤＦ分類器、および／または、他のタイプのマシン学習分類器のために計算され得る。たとえば、ルックアップテーブル分類器を含む一例では、以下の特性が各ブロブのために計算される。ブロブの高さ（たとえば、ブロブにおける最大画素強度値）、ブロブのエリア、および、ブロブのテクスチャ。テクスチャ特性は、ブロブ内の強度値における勾配を示し得る。たとえば、テクスチャは、ブロブ内の各画素と、ブロブのエリアの８倍によって除された８つの最も近い近隣との差分の絶対値の総和として計算され得る。手のひらによって生成されたブロブは、より平坦であるか、または、より平滑な内部を有する傾向にあり、よって、近くに間隔を置いて配置された多数の指タッチによって生成されたブロブよりもより低いテクスチャを有する。より少ない特性の計算は、計算命令１２０のコード間隔および処理時間を低減し得る。より少ない特性もまた、各ブロブの計算の結果を記憶する際に含まれるメモリの量を低減し得る。
【００４７】
[0051]  トラックを含む場合によっては、ブロブ特性計算命令１２０はまた、プロセッサ１１４に対して、タッチイベントのトラックのための１つまたは複数の特性を計算させ得る。トラック特性セットは、トラック内の各ブロブのための特性セットに加えて、トラックのために計算され得る。その例が上記にリストされている。トラック特性セットは、トラックが完了すると、計算され得る。
【００４８】
[0052]  トラック特性セットは、上記参照されたブロブ特性のうちの１つまたは複数の累積である特性を含み得る。ランダム決定フォレスト（RDF）分類器を含む一例では、あらかじめ決定された数のトラックのフレームにわたる以下のブロブ特性の最小値、最大値、および中央値が計算される。（ｉ）エリア、（ｉｉ）連続するフレーム間のエリアにおける変化、（ｉｉｉ）連続するフレーム間の位置における変化、（ｉｖ）円周の商、（ｖ）強度、（ｖｉ）強度勾配の大きさ、（ｖｉｉ）最も近い画像端までの距離、（ｖｉｉｉ）画像端におけるピクセルの平均強度、および（ｉｘ）画像端における幅。
【００４９】
[0053]トラック特性セットは、それに加えて、または、その代わりに、トラックの最初のＦ個のフレームのための個々のブロブのプロパティを対象とされた特性を含み得る。したがって、場合によっては、各フレームにおけるブロブプロパティの計算は、トラックのためのデータを収集する１つの方式であり得る。たとえば、以下の特性が、個々の各ブロブについて計算され得る。（ｉ）エリア、（ｉｉ）連続するフレーム間のエリアにおける変化、（ｉｉｉ）連続するフレーム間の位置における変化、（ｉｖ）円周の商または他の真円度メトリック、（ｖ）最小、最大、および中間の強度、（ｖｉ）最小、最大、および中間の強度勾配の大きさ、（ｖｉｉ）最も近い画像（またはフレーム）端までの距離、（ｖｉｉｉ）画像端におけるピクセルの平均強度、（ｉｘ）画像端における幅、（ｘ）重み付けられた質量中心を中心とする（生またはしきい値化されたフレームデータからの）５×５の画像パッチにおける画素の強度、（ｘｉ）重み付けられた質量中心を中心とする（生またはしきい値化されたフレームデータからの）１７×１７の画像パッチにおける画素の強度、（ｘｉｉ）５×５画像パッチからの画素のペア間の強度差、（ｘｉｉｉ）１７×１７画像パッチからの画素のペア間の強度差、（ｘｉｖ）１７×１７パッチにおける２つの同心輪間の最小強度差、たとえば、ｍｉｎ｛Ｉ（ｐ）：｜｜ｐ−ｃ｜｜＝ｒ＿１}−ｍａｘ｛Ｉ（ｐ）：｜｜ｐ−ｃ｜｜＝ｒ＿２｝、ここで、ｒ＿１＜ｒ＿２であり、Ｉは、画像強度行列であり、ｃは重み付けられた質量中心である。追加の、より少ない、または代替の特性が、トラックに関連して計算され得る。
【００５０】
[0054]  プロセッサ１１４は、タッチイベントのタイプまたは性質を判定するために、マシン学習分類命令１２２を実行するように構成される。このタイプは、マシン学習分類によって判定される。この分類は、複数のフレームのための複数の特性セットに基づいて、多数の非バイモーダルな分類スコアを提供するように構成される。非バイモーダルな各分類スコアは、マシン学習分類における曖昧さまたは信頼度のレベルを示す。たとえば、各分類スコアは、タッチイベントがあるタイプのものである確率であり得る。他の例では、分類スコアは、タッチイベントがあるタイプのものであるか否かを示す範囲またはスケールに沿った個々のレーティングである。個々のレーティングは、累積的なレーティングを判定するために、場合によって集約され得る。累積的なレーティングまたは他の分類スコアは、タッチイベントタイプを判定するために、以下に説明されたように、しきい値と比較され得る。
【００５１】
[0055]  タッチイベントが判定されると、分類命令１２２はまた、プロセッサ１１４に対して、タイプを示すデータをデバイス１００へ提供させるように構成され得る。図１の例では、プロセッサ１１４は、タイプデータをプロセッサ１０６へ提供し得る。タイプデータは、記憶されても、ホストデバイスの任意の構成要素へ提供されてもよい。タイプデータは、タッチイベントを示す他のデータと共に提供され得る。場合によっては、他のデータは、現在の（たとえば、最後の）フレームにおけるタッチイベントのトラックＩＤおよび座標を含む。他のデータは、他の場合には、タッチタイプと共に提供され得る。たとえば、タッチタイプは、タッチイベント座標と共に提供され得る。
【００５２】
[0056]  マシン学習分類命令１２２は、一度、または、分類毎に反復的に起動され得る。命令１２２がどのように起動されるかは、特性セットデータが計算される時に依存し得る。トラックデータが計算されるタッチイベントのために、プロセッサ１１４は、特性セットデータのすべてを、トラックのための単一の起動において集合的に、マシン学習分類器へ適用し得る。他の場合によっては、分類命令１２２は、特性セットデータが各フレームのために計算されると、反復的に実施される。たとえば、各ブロブのための特性セットデータが、マシン学習分類器へ個別に適用される。その後、以前に計算された特性セットデータがマシン学習分類器へ適用されている間、さらなる特性セットデータが計算され得る。
【００５３】
[0057]  マシン学習分類命令１２２は、プロセッサ１１４に対して、１つまたは複数の分類器データ構造１２６へアクセスさせ得る。分類器データ構造１２６は、メモリ１１６および／または別のメモリに記憶され得る。分類器データ構造１２６のフォーマットおよび他の特徴は、使用されるべきマシン学習分類器のタイプにしたがって変動し得る。デバイス１００は典型的には単一の分類器でのみ構成されるので、例示および説明の容易のために、分類データ構造の２つの例が図１に示されている。２つの典型的なデータ構造は、ランダム決定フォレスト（RDF）データ構造１２８およびルックアップテーブルデータ構造１３０である。特性セットデータは典型的には、１つのデータ構造のみにしか適用されないので、場合によっては、１つよりも多くの分類器が使用され得る。たとえば、複数の分類器の出力が、最終的な分類を判定するために比較または処理され得る。
【００５４】
[0058]  ＲＤＦ分類は、分類命令１２２によって使用され得る多くの区別分類技術のうちの１つである。区別分類器は、所与の入力のアレイに関するクラスのセットにわたるディスクリートな確率分布の形式の多数の非バイモーダルな分類スコアを生成するか、または返す。この例では、クラスは、たとえば、意図された指先のタッチ、容量性スタイラスまたは他のペンタッチ、および手のひらのような意図されていないタッチのような可能なタイプのタッチイベントと一致する。たとえば、典型的な出力は、｛０．４５、０．３２、０．２３｝、すなわち、タッチイベントが、意図された指先のタッチである４５％の可能性、タッチイベントが、ペンタッチである３２％の可能性、および、タッチイベントが、意図されていないタッチイベント（たとえば、手のひらによるタッチ）である２３％の可能性である。よって、各確率スコアは、タッチイベントが特定のタイプである確率を表す。追加の、より少ない、または代替のクラスが、他の場合において使用され得る。たとえば、２つのクラスだけが、意図されたタッチイベントと意図されていないタッチイベントとを区別する場合において使用され得る。
【００５５】
[0059]  区別分類器は、複数の特性データセットを入力として受け取るように構成され得る。よって、区別分類器に対する入力は、計算命令１２０にしたがって、タッチトラック（たとえば、最初の数フレームまたは、あらかじめ決定された別の数のフレーム）のために計算されたブロブおよびトラック特性データであり得る。トラックの例では、各トラックのための特性セットが、トラックが完了した時に分類器へ適用される。よって、分類器は、完了した各トラックのための確率分布出力を提供する。
【００５６】
[0060]  ＲＤＦデータ構造１２８は、ランダム化された決定ツリーＲＤＴ１、ＲＤＴ２、ＲＤＴ３、・・・ＲＤＴｎの集合を含み、ここで、ｎは、任意の数であり得る。一例では、データ構造は、２０のツリーを含む。各ツリーは、最大１１の決定高さを有する。ランダム決定フォレスト手順では、同じ入力アレイが、各ツリーに適用される。所与の入力に関するＲＤＦの出力は、所与の入力に関するツリーの各々の出力を平均することによって計算される。ツリーの数および高さは変動し得る。
【００５７】
[0061]  各ＲＤＴは、２進法決定ツリーであり、ここでは、各内部（すなわち、非リーフ）ノードは、関連付けられた「分割」２進法関数を有する。分割２進法関数が入力に適用された場合、この入力が、ツリーにおけるノードの次のレベルにおけるノードの右の子または左の子へ経路付けられるべきであれば、関数は、決定を返す。所与の入力Ｘに関するＲＤＴにおける分類処理は、ルートの関連付けられた分割関数を適用することによって、ツリーのルートノードにおいてＸを処理することによって開始し、分割関数の結果に対応する子ノードにおける入力の処理を反復的に継続する。結局、この処理は、リーフノードに達する。ここでは、ディスクリートな確率分布が、クラスのセットＣにわたって、処理出力として返される。
【００５８】
[0062]  ツリー内の分割関数は、特性の値と、しきい値との間の不等式比較、すなわち、ｆ＜τとして実施され得る。ここで、ｆは、特定の特性の値であり、τは、しきい値である。各ノードにおいて使用されるべき特定の特性およびしきい値は、学習処理中に学習される。
【００５９】
[0063]  学習中、各ノードにおいて、特性の各タイプの間隔のサンプリングから、最良の特性が選択される。特性間隔について、間隔サイズの平方根と同数のサンプルがサンプリングされた。
【００６０】
[0064]  図１の例では、３つすべての分類スコア（たとえば、指先、ペン、手のひら）を提供するために、単一のＲＤＦ構造１２８のみが図示され、使用される。しかし、場合によっては、分類スコアを提供するために、多数のＲＤＦ分類器が使用され得る。たとえば、各々がツリーの各々のセットを有する２つのＲＤＦ分類器が、３つの分類スコアを提供するために使用され得る。一例において、意図されたタッチと意図されていないタッチとを区別するために、１つのＲＤＦ分類器が使用され得る。その後、意図されたタッチに関連してペンのタッチと指先のタッチとを区別するために、他のＲＤＦ分類器が使用される。
【００６１】
[0065]  ＲＤＦ分類の出力は、場合によって調節され得る。たとえば、この調節は、新たに完了した多数のトラックを有するフレームを含む状況に対処し得る。フレームにおいて新たに完了したトラックのすべてのタッチタイプが分類された後、分類命令１２２は、プロセッサ１１４に対して、意図されていない（たとえば、手のひらの）タッチイベントとして分類されたトラックの近くのトラックのタイプを調節させ得る。第１のトラックのブロブの現在の場所が、意図されていないタッチとして分類された第２のトラックのブロブのしきい値内にあるのであれば、第１のトラックも同様に、意図されていないタッチとして分類される。これら近くのブロブは、しばしば、面１０４上に載っている手のひらを有する手からの指関節または指の意図されていないタッチによって生成されるので、そのような調節は有用であり得る。
【００６２】
[0066]  追加の、または、代替的なマシン学習分類器は、分類命令１２２によって使用され得る。たとえば、他のタイプの区別分類技術が使用され得る。いくつかの例では、マシン学習分類器は、ルックアップテーブル分類器である。ルックアップテーブルベースの分類は、プロセッサ１１４がマイクロコントローラである場合のように、制限された処理リソースおよび／またはメモリリソースしか有しているデバイスに関連して有用であり得る。ルックアップテーブルの使用は、分類のためのメモリフットプリントおよび処理時間を劇的に低減し得る。
【００６３】
[0067]  図１に図示された例では、ルックアップテーブルデータ構造１３０は、意図的なタッチイベントと意図的ではないタッチイベントとを区別するためのルックアップテーブルのペアを含む。特性セットデータは、各ルックアップテーブルへ適用される。各テーブルはその後、以下に説明されるように、各々の個々の非バイモーダルな分類スコアまたはレーティングを提供する。第１のルックアップテーブルは、タッチイベントが意図されたタッチであるか否かに関して、第１のレーティングを提供するように構成され得る。第２のルックアップテーブルは、タッチイベントが意図されていないタッチであるか否かに関して、第２のレーティングを提供するように構成され得る。各々のフレームのためのこれら個々のレーティングまたはスコアの各々は、その後、各々のフレームのためのフレーム分類レーティングスコアを生成するために組み合わされ得る。たとえば、さらにタッチイベントタイプを区別するために、追加のルックアップテーブルが提供され得る。他の場合には、データ構造１３０は、単一のルックアップテーブルのみを含む。
【００６４】
[0068]  このルックアップテーブルベースの分類例では、特性セットデータが、フレーム毎ベースで分類器へ適用される。たとえば、各々のフレームの特性セットデータが、データ構造１３０内の各ルックアップテーブルへ適用される。各テーブルはその後、以下に説明されるように、そのフレームの各々の個々の非バイモーダルな分類スコアまたはレーティングを提供する。その間にタッチイベントが存在するフレームに関するフレーム分類レーティングスコアはその後、タッチイベントのための累積的な、マルチフレーム分類スコアを判定するために集約（たとえば、総和）される。
【００６５】
[0069]  どのように分類レーティングまたはスコアが組み合わされ、その後、フレームにわたって集約されるかについて、１つのレーティングを別のレーティングから減算することによって個々のレーティングが組み合わされる例に関連して以下に説明される。個々のレーティングは、種々様々な他の方法で組み合わされ得る。たとえば、個々のレーティングまたはスコアは、この組合せが、加算演算、平均化演算、および／または、他の演算を含むように構成され得る。フレームにわたる分類スコアの集約はまた、以下に説明された総和演算以外の方法でも実施され得る。その後、分類命令１２２は、プロセッサ１１４に対して、累積的な、マルチフレーム分類スコアがしきい値をパスするか否かを判定させ得る。いくつかの例では、各々可能なタッチイベントタイプのうちの１つである、多数の分類しきい値が提供される。しきい値が越えられていないのであれば、曖昧さのレベルは、タッチイベントを確実に分類するために高すぎると認められ得る。その時点において、ブロブ定義命令１１８および計算命令１２０は、次のフレームのための特性セットデータを提供するために再び起動され得る。その後、新たな特性セットデータが、さらなるスコアリング、集約、およびしきい値化のために再びルックアップテーブルへ適用され得る。
【００６６】
[0070]  ルックアップテーブル分類器は、ブロブの特性を、ルックアップテーブルへのインデクスとして使用するように構成され得る。各ブロブのために計算された特性は、上記で説明したように、高さ、サイズ、およびテクスチャであり得る。追加の、より少ない、または代替の特性が含まれ得る。一例では、テーブル内の各エントリは、ブロブが特定のタッチイベントタイプ、すなわち、テーブルの関連付けられたクラスからなる可能性を示す２ビットレーティングである。３であるレーティングは、ブロブが、クラスのメンバである可能性が非常に高いことを示す。２であるレーティングは、ブロブが、クラスのメンバである可能性が幾分高いことを示す。１であるレーティングは、ブロブが、恐らくクラスのメンバであるが、可能性は非常に高い訳ではないことを示す。０であるレーティングは、ブロブが、クラスの一部ではない可能性が非常に高いことを示す。
【００６７】
[0071]  この例では、個々のブロブレーティングスコアは、１つは意図されたタッチ（たとえば、指またはペン）に関し、もう１つは意図されていないタッチ（たとえば、手のひら）に関する２つの分類テーブルから取得される。各ブロブは、特性セットデータを両テーブルへ適用することによって、両テーブルにおいてルックアップされる。フレーム特有のブロブ分類レーティング（すなわち、「ブロブ分類レーティング」）はその後、以下のように、１つを他から減算することによって、各々のテーブルから個々のレーティングを組み合わせることによって、ブロブについて計算され得る。
ブロブ分類レーティング＝指テーブルレーティング−手のひらテーブルレーティング
その結果、ブロブ分類レーティングは−３から＋３の範囲にある。ここで、正の値は、ブロブが、意図されたタッチである可能性がより高いことを示し、負の値は、ブロブが、意図されていないタッチである可能性がより高いことを示す。レーティングの絶対値は、レーティングにおける分類の確からしさまたは曖昧さレベルを示すインジケーションである。ブロブ分類レーティングは、タッチ画像における各ブロブについて計算される。
【００６８】
[0072]  特定のタッチイベントのためのブロブ分類レーティングは、その後、タッチイベントのための累積的なブロブレーティングを生成するために、多数のフレームにわたって累積または集約され得る。たとえば、ブロブが、最初の３フレームにおいて＋２、＋１、および＋２というブロブ分類レーティングを有するのであれば、累積的なブロブレーティングは＋５、すなわち、これら３つのブロブ分類レーティングの総和である。
【００６９】
[0073]  累積的なブロブレーティングはその後、タッチイベントタイプを判定するために使用される。累積的なレーティングは、１つまたは複数のしきい値と比較され得る。一例では、３つの可能な分類のうちの１つへの区別をサポートするために、２つのしきい値が使用される。手のひらしきい値以下の負のタッチレーティングは、手のひらタッチイベントとして分類される。指しきい値以上の正のタッチレーティングは、指／ペンタッチイベントとして分類される。他のすべてのタッチレーティングは、未知として分類される。手のひらおよび指のしきい値は、設定可能であるが、典型的な設定は、手のひらしきい値の場合−９であり、指しきい値の場合＋６である。
【００７０】
[0074]  累積的なブロブレーティングはまた、さらなるフレームデータを処理することが保証されているか否かを判定するために使用され得る。累積的なレーティングが、未知の範囲内にあるのであれば、別のブロブ分類レーティングを集約へ組み込むために、さらなるフレームデータが処理され得る。たとえば、接近している手のひらの最初の画像（またはフレーム）に、＋１であるブロブ分類レーティングが割り当てられる。これは、この手のひらに関する最初の画像であるので、累積的なレーティングもまた＋１である。次の画像では、ブロブ分類レーティングは再び＋１を割り当てられ得る。これで、累積的なレーティングは＋２である。次の画像では、手のひらのより多くがタッチダウンしているので、ブロブ分類レーティングは−２へ変化し、累積的なレーティングは０となる。次の３つの画像はその後、−３であるブロブ分類レーティングを割り当てられ、累積的なレーティングを−９となる。この時点において、タッチは、手のひらタッチイベントであると分類される。前のタッチのすべては、未知として分類されるであろう。最初の２つのタッチ画像が、手のひらよりも、わずかにより指に見えるにも関わらず、分類器は未だに、誤りのあるフォールスポジティブな分類無しで、正しい最終的な分類に達する。
【００７１】
[0075]  分類命令１２２は、プロセッサ１１４に対して、ブロブをタッチイベントに関連付けさせるように構成され得る。場合によっては、タッチイベントは、最初に、ファームウェア１１２によって、または、タッチシステム１０２の他の構成要素によって識別され得る。潜在的な各タッチイベントの場合、タッチイベントのバウンディングボックスが定義され、どのブロブがタッチイベントに関連付けられているのかを識別するために、現在のタッチ画像（またはフレームデータ）において見出された最大値のすべてと比較され得る。ほとんどのタッチ画像は、バウンディングボックス内の、すなわち、タッチイベントと一致する単一のブロブのみを有するであろう。多数のブロブが、バウンディングボックス内にある最大値を有するという可能性の低いイベントでは、タッチイベントの累積的なレーティングが、そのようなオーバラップしているブロブのための累積的なレーティングの平均として計算され得る。
【００７２】
[0076]  １つまたは複数のユニークな状況に対処するために、分類命令１２２はまた、多くの調節を、合成レーティングへ組み込み得る。各調節は、ルールまたは条件が満足されるか存在するかに基づいて組み込まれる。この調節は、手順へ著しい複雑さを追加することなく、ルックアップテーブルの分類容量を補足し得る。
【００７３】
[0077]  端部効果ルール。タッチスクリーンの端部からほとんど離れている手のひらは、その小さなサイズによって、意図されたタッチのように見える傾向を有し得る。これらの状況におけるパフォーマンスを向上するために、各ブロブにおける端部画素の数が追跡され得る。分類命令１２２は、端部画素の数がしきい値を越えるか否かを判定され得る。端部画素の数がしきい値を越えるのであれば、ブロブ分類レーティングスコアが調節される。一例では、端部画素の数としきい値との差分が、ブロブ分類レーティングスコアから減算される。この調節は、手のひらレーティングしきい値に対するこれらブロブのレーティングを歪ませる。単一の意図されたタッチによるブロブは、少ない数の端部画素を有する傾向があり、よって、調節ルールによって影響されない。面１０４の端部における手のひらによるブロブは、大きな数の端部画素を有する可能性がより高く、したがって、フォールスポジティブを最小化するために、手のひら分類に対して歪められる。端部における近くに間隔を置いて配置された多数の指によるブロブもまた、このルールによって手のひらレーティングへ向けて歪められ、フォールスネガティブになり得る一方、そのようなフォールスネガティブの割合は、端部の近傍のジェスチャが通常単一の指ジェスチャである限り、許容できるほど小さくなり得る。
【００７４】
[0078]  手のひら近接調節。スタイラスを用いて書いているユーザは、しばしば、２本の指と親指でスタイラスを握りながら、スクリーン上に自分の手のひらを載せる。手の他の２本の指は、面１０４の近くにあり、書いている間、しばしば、面１０４に接触する。この状況は、意図的なタッチに見え得るブロブを生成する。これらの状況におけるフォールスポジティブを最小化するために、ブロブ分類レーティングスコアは、ブロブのブロブエリアを、しきい値エリアによって除することによって計算される商を減算することによって調節され得る。この調節は、ブロブのエリアが、しきい値を上回っており、ブロブが、手のひらのように見える別のブロブに近い（たとえば、否定的なブロブレーティングである）場合になされ得る。この調節は、フォールスポジティブを最小化するために、手のひらに非常に近い指タッチを、手のひらレーティングへ向かって歪ませる傾向がある。この調節は、たとえ、スタイラスもまた手のひらに近い場合であっても、スタイラスタッチのみの分類に影響を与えないことがあり得る。なぜなら、スタイラスタッチは、しきい値未満のエリアを有するからである。
【００７５】
[0079]  非タッチ調節。ユーザが、タッチシステム接地への良好な高周波数接続を有していない（すなわち、ユーザが浮かんでいる）場合、大きなタッチエリアが、消える傾向に、または、反タッチ（すなわち、通常のタッチが肯定になるであろうタッチ画像における否定的なエリア）へ転ずる傾向にあり得る。この状況は、手のひらの通常大きなエリアのサイズが劇的に減少し、スタイラスを保持していない指のように、他の意図されていないタッチへの間隔が増加すると、フォールスポジティブに至り得る。これらの環境におけるフォールスポジティブを最小化するために、２つの調節が、分類レーティング手順へ組み込まれ得る。第１のルールは、タッチイベント累積レーティングが、手のひらしきい値を一旦パスすると、このブロブにオーバラップする次のフレームにおける任意のブロブもまた、手のひらレーティングを割り当てられる。この調節は、手のひらの一部が、経時的に消える傾向にあり得るので、浮いている状況におけるパフォーマンスを向上させ得る。手のひらはますます多く面に触れると、手のひらは、初期のタッチダウンの間に、普通に見える傾向にある（また、手のひらレーティングを与えられ得る）一方、手のひらの一部は、見えなくなる傾向にあり、残りの部分が、意図されたタッチであるように見え得る。しかしながら、残りの部分は、初期のフレームにおいて見える手のひらとオーバラップするので、残りの部分は未だに、手のひらレーティングを割り当てられる。
【００７６】
[0080]  浮いている状況におけるパフォーマンスを向上するために使用され得る第２のルールは、通常のブロブに加えて、反ブロブを追跡するステップを含む。反ブロブは、タッチ画像におけるピクセル値が、負のしきい値以下である画素の接続された構成要素として検出され得る。フレームデータにおいても定義される反ブロブを用いて、ブロブ分類レーティングスコアは、その後、各々のブロブが反ブロブをオーバラップするのであれば、ブロブ分類レーティングスコアから値を減算することによって調節され得る。この調節は、反ブロブが大きい（たとえば、反ブロブのサイズがしきい値を越える）それら状況に限定され得る。大きな反ブロブをオーバラップする通常のブロブはその後、それらのブロブ分類レーティングから値を減算することによって、手のひらレーティングに向かって歪められる。減算された値は、固定値、または、大きなブロブエリアについてより大きくなる値の何れかであり得る。大きな反ブロブのしきい値を、比較的大きいサイズ（たとえば、５０画素）に設定するステップは、対角線上に列になって、近くに間隔を置いて配置された多数の指を含む状況に関連した調節の誤りのあるアプリケーションを回避することに役立ち得る。
【００７７】
[0081]  マシン学習分類器は、スタイラス、指先タッチ、および意図されていない非指先タッチイベントを含む多くの画像シーケンスが受け取られる間に、オフラインデータ収集ステージを介して学習され得る。このシーケンスは、広範な可能なデバイス用途シナリオにおいて、および／または、多くの種々のユーザを含んで実施され得る。圧力、ジェスチャ、方位、および他のタッチイベント特徴における相違が提示され得る。意図されたタッチイベントのシーケンス（たとえば、指先タッチ、またはスタイラス、または非指先タッチの何れか）が、個別に収集され、これによって、タッチイベントのマニュアルラベリングを回避する。これらシーケンスにおいて計算された各トラックのための特性データセットは、学習例となる。
【００７８】
[0082]  ＲＤＦ例では、ＲＤＦ分類器は、データ構造の各ツリーを独立して学習することによって学習され得る。ツリーは、そのルートノードから始まって、一度に１つのノードを学習される。各ノードは、入力学習セットを使用して学習される。先ず、学習セットの全体が、ルートノードを学習するために使用される入力セットである。
【００７９】
[0083]  ノードｎのために入力学習セットＴが与えられ、ノードは、分割関数およびそのパラメータの空間をある回数（たとえば、分割関数およびそのパラメータの空間のサイズの平方根に一致する数）、サンプリングすることによって学習される。各サンプリングされた（パラメータ化された）分割関数について、可能なしきい値の数（たとえば、１００のしきい値）もサンプルされる。
【００８０】
[0084]  分割関数タイプｓｐｌｉｔＦ、分割関数パラメータ化θ、およびしきい値τからなる所与の分割組合せΣ＝（ｓｐｌｉｔＦ，θ，τ）について、各入力ｘ∈Ｔは、しきい値τ以下または以上であるｓｐｌｉｔＦ＿θ（ｘ）の値にしたがって分割される。
【００８１】
[0085]  学習手順は、すべてのサンプルされた分割組合せにわたるノードの入力セットＴにおけるすべての要素の分割に対する最大情報ゲインを達成する分割組合せを識別する。ゲインが小さすぎるか、または、ノードｎが、あらかじめ選択された最大高さ（たとえば、１１）であれば、ノードが、リーフノードになるように設定され、そのリーフノードに関連付けられた各クラス（たとえば、指先タッチ、ペンまたはスタイラス、または手のひら）の確率が、ノードの入力セットＴにおけるサンプルの合計数に対するそのクラスのサンプルの数に比に設定される。一方、ゲインが十分高いか、または、ノードｎの高さが、あらかじめ選択された最大高さ未満であれば、最大ゲインを達成する分割組合せΣは、ノードｎへ関連付けられ、ノードの入力セットＴは、Σを使用して２つのサブセットＴ＿ＬおよびＴ＿Ｒへ分割され、ノードｎが、左の子と右の子である２つの子ノードを割り当てられる。各子ノードは、入力セットＴ＿ＬおよびＴ＿Ｒを各々使用して反復的に学習される。
【００８２】
[0086]  学習サンプルを収集するための類似のアプローチは、ルックアップテーブル分類器を学習する際に使用され得る。たとえば、タッチ画像のシーケンスは、自己ラベル付け方式で生成される。たとえば、各シーケンスは、１つのクラスのタッチ（たとえば、すべてが指、またはすべてが手のひら）のみを含む。ブロブおよび対応する特性データはその後、タッチ画像から抽出され、学習サンプルとして使用されるべき学習手順へ渡される。
【００８３】
[0087]  １つのルックアップテーブル学習の例では、学習サンプルが、高さ特性にしたがって、多く（たとえば、８つ）のバケットへグループ化され得る。たとえば、タッチ画像における任意の画素の最大高さが約１６００であるタッチシステムでは、０乃至１９９の高さのサンプルが、バケット０に割り当てられ、２００乃至３９９の高さのサンプルが、バケット１に割り当てられるという具合である。分類器の生成を向上させるために、サンプルのわずかな「スミヤリング」も実施され得る。たとえば、高さ２１０のサンプルは、バケット０とバケット１の両方へ割り当てられ得る。スミヤリングの量は、設定可能であり、変動し得るが、一例では、グループ境界の１０％内のサンプルが、両グループへ割り当てられる。エリアおよびテクスチャ特性の最小値および最大値がその後、各高さグループ内のすべてのサンプルのために判定される。スミヤリングはまた、この時点において適用されるので、最小値および最大値が、少量（たとえば、１０％）、増加／減少して調節される。サンプルがその後、（上記で判定されたように、エリア特性に関してスミヤリングされた最小値／最大値の間で均等に拡散された）エリア特性にしたがって多く（たとえば、１６）のセットへ分割される。これらエリアバケット内のサンプルはその後、さらに、（以前のように均等に拡散されスミヤリングされた）テクスチャ特性にしたがって、多く（たとえば、１６）のバケットへ分割される。サンプルは、エリアおよびテクスチャによって分割されるので、サンプルが再び、約１０％、スミヤリングされ得る。サンプルがスミヤリングされる例では、スミヤリングされないサンプルに、スミヤリングされたサンプルよりも高い優先度が与えられ得る。スミヤリングされた各サンプルを、単一のサンプルとして考慮しながら、スミヤリングされていない各サンプルを複数（たとえば、９つ）のサンプルとしてカウントすることによって、より高い優先度が提供され得る。
【００８４】
[0088]  これら最終的なバケットの各々におけるサンプルの数が、その後、カウントされ得る。これらカウントは、その後、いくつかのしきい値と比較される。サンプルの数が、「非常に可能性の高い」しきい値以上であれば、そのバケットの分類器テーブル値は、最も高い分類スコア（たとえば、３）に設定される。サンプルの数が、「可能性の高い」しきい値以上であれば、テーブル値は、次に高いスコア（たとえば、２）に設定される。サンプルの数が、「可能な」しきい値以上であれば、テーブル値は、次に高いスコア（たとえば、１）に設定される。２ビットスコアリングの例では、テーブル値は、それ以外の場合、０に設定される。しきい値は、設定可能であり、使用されている学習サンプルの数で変動し得るが、一例では、非常に可能性の高い、可能性の高い、および可能なしきい値のために、９０、９、および１のしきい値が各々使用され得る。２ビットのスコアは、その後、グループ、セット、およびバケット分割にしたがって、テーブルに記憶される。よって、テーブルエントリはまた、エリアおよびテクスチャ特性のための最小値およびバケットサイズを反映する。高さ特性のための最小値およびバケットサイズが、０および２００において各々固定され得る。
【００８５】
[0089]  分類中、テーブル境界外の何れかの値が、以下の例外を伴って、デフォルトで、最低のレーティング（たとえば、０）を与えられる。１６００以上の高さを持つブロブが、１４００乃至１５９９個のバケットへまとめられる。指定された高さのバケットのための学習において見られる任意の手のひらエリアよりも大きなエリアを持つブロブが、１の手のひらレーティングを与えられる。これらの例外は、学習において見られなかった非常に大きなブロブのために、分類器が正しく一般化することに役立ち得る。
【００８６】
[0090]  図２は、タッチ分類のための典型的な方法２００を描写する。この方法は、コンピュータによって実施される。たとえば、図１に図示されるタッチセンサ式デバイス１００、および／または、別のタッチセンサ式デバイスのうちの１つまたは複数のコンピュータは、この方法またはその一部を実施するように構成され得る。各動作の実施は、タッチシステム１０２のプロセッサ、デバイス１００、および／または、別のプロセッサまたは処理システムによって実行される各々のコンピュータ読取可能な命令によって指示され得る。追加の、より少ない、または代替の動作が、この方法に含まれ得る。たとえば、方法２００は、機能を出力するように指示された動作を含まないことがあり得る。
【００８７】
[0091]  方法２００は、フレームデータをキャプチャすることに関連する１つまたは複数の動作で始まり得る。フレームデータがどのようにキャプチャされるかは、変動し得る。フレームデータは、異なるデバイスまたはプロセッサによって、および／または、方法２００を実施する同じプロセッサまたはデバイスによって実施される異なる方法に関連してキャプチャされ得る。
【００８８】
[0092]  図２の実施形態では、方法２００は、フレームデータが取得される動作２０２で始まる。フレームデータは、タッチセンサ式デバイスによってキャプチャされた複数のフレーム（または、タッチセンサ画像）を表す。フレームデータは、リアルタイムで処理するために、ファームウェア１１２（図１）のようなタッチシステム１０２のハードウェアまたは他の構成要素から直接的に受信され得る。あるいは、または、それに加えて、フレームデータは、以前にキャプチャされ記憶されたフレームデータであり得る。よって、フレームデータは、図１に関連して説明されたメモリ、すなわち、メモリ１０８、１１６、および／または、別のメモリのうちの１つのようなメモリにアクセスすることによって取得され得る。
【００８９】
[0093]  動作２０４では、フレームデータは、複数のフレームの各フレームにおける各々のブロブを定義するために処理される。ブロブは、タッチイベントを示す。ブロブは、同じフレームにおいて生じる多数のタッチイベントを区別するために、本明細書で説明されたように、複数のフレームにわたってトラックされ得るか、互いに関連付けられ得る。
【００９０】
[0094]  この解析は、動作２０６におけるフレームデータのアップサンプリング、動作２０８におけるフレームデータのしきい値化、動作２１０におけるブロブ分割、および／または、動作２１２におけるブロブ合成を含み得る。これら処理動作の各々は、上記で説明されたようにして実施され得る。方法２００は、これらの処理動作のうちの任意の１つまたは複数を含み得る。たとえば、いくつかのＲＤＦの例では、動作２１０のブロブ分割が実施されるが、動作２１２のブロブ合成は実施されない。逆に、いくつかのルックアップテーブルの例では、動作２１２のブロブ合成が実施されるが、動作２１０のブロブ分割は実施されない。
【００９１】
[0095]  いくつかの場合（たとえば、いくつかのRDFの例）では、複数のフレームにわたるブロブのトラックが定義されるか、または、そうでない場合には、動作２１４におけるタッチイベントのために、更新される。トラック定義は、ブロブ定義後に生じ得る。現在のフレームから抽出されたブロブデータは、前のフレームにおいて識別されたトラックを更新するために処理される。よって、動作２１４は、新たなトラックを定義し、アクティブなトラックを拡張し、および／または、アクティブなトラックを終了させる。アクティブなトラックは、上記で説明されたように、現在のフレームに存在するブロブを持つ追加のフレームを拡張されるか、または、ブロブの欠如により終了されるかの何れかである。アクティブなトラックを示すデータはまた、データストア２１６内に記憶される。動作２１４は、アクティブなトラックの処理に関連して図示されたように、データストア２１６にアクセスするステップを含み得る。
【００９２】
[0096]  他の場合（たとえば、いくつかのルックアップテーブルの例）では、特定のフレームのためのフレームデータが、後続するフレームのフレームデータから個別に取り扱われる。動作２０４は、単一のフレームのフレームデータの解析を対象とされ得る。その後、そのフレームデータは、後続するフレームのフレームデータの処理とは別のさらなる処理（たとえば、マシン学習分類器への特性セット計算および適用）のために準備される。
【００９３】
[0097]  動作２１８では、複数の特性セットが、タッチイベントのために計算される。各特性セットは、複数のフレームの各フレームにおける各々のブロブのプロパティを指定する。上記で説明されたように、動作２１８において計算されるプロパティまたは特性は変動し得る。特性またはプロパティの数はまた、分類器の複雑さに応じて変動し得る。図２に図示されるように、場合によっては、特性データセットは、アクティブなトラックデータが記憶されるデータストア２１６に記憶され得る。
【００９４】
[0098]  場合によっては（たとえば、RDFの例では）、動作２２０において、特性セットが、多数のフレームにわたって集約され、動作２２２において、トラック特性が計算され得る。たとえば、動作２２０および動作２２２は、トラックが定義されるか、および／または、タッチイベントの多数のフレームのためのフレームデータが既に別段利用可能である場合において実施され得る。集約は、タッチイベントのタイプを判定する際に、マシン学習分類器へ複数の特性セットを適用する前に生じる。
【００９５】
[0099]  特性セットデータは、マシン学習分類によって、タッチイベントのタイプを判定するために、動作２２４において適用される。この分類は、上記で説明されたように、複数のフレームのための複数の特性セットに基づいて、多数の非バイモーダルな分類スコアを提供するように構成される。非バイモーダルな各分類スコアは、マシン学習分類における曖昧さまたは信頼度のレベルを示す。場合によっては、データストア２１６は、分類をサポートするために、図示されたようにアクセスされ得る。
【００９６】
[00100]  トラック定義および拡張を含む場合には、動作２２４の分類のタイミングは、トラックが完了した（たとえば、トラックが３回拡張された）か否かに依存し得る。これらの場合には、ちょうど拡張されたアクティブなトラックが完了した場合、動作２２４において、そのタッチタイプが判定される。よって、動作２２４は、動作２０４および動作２１８のフレームデータ処理および特性セット計算と同時に独立して実施され得る。
【００９７】
[00101]  既に分類されているが、（たとえば、現在のフレームにおけるブロブによる拡張の結果として）現在のフレームにおいてアクティブなままである完了したトラックの処理は、前の分類に依存することも、しないこともあり得る。場合によっては、動作２２４は、前のフレームにおいて完了したトラックが、自分のタッチタイプを、トラックが拡張されたブロブへ自動的に渡すことができるように構成され得る。他の場合には、新たに集約された（すなわち、現在のフレームによって貢献されているデータを含む）特性セットデータが与えられ、動作２２４の分類が繰り返される。
【００９８】
[00102]  マシン学習分類は、動作２２６におけるマシン学習分類器への１つまたは複数の特性セットの適用を含み得る。場合によって（たとえば、いくつかのRDFの例）は、多数のフレームの特性セットデータが、分類器へ集合的に適用される。トラック特性データもまた、そのような場合において適用され得る。他の場合（たとえば、いくつかのルックアップテーブルの例）では、特性セットデータは、フレーム毎に分類器へ適用される。
【００９９】
[00103]  特性セットデータが分類器へ適用された後、１つまたは複数のしきい値が、動作２２８において、分類スコアへ適用され得る。しきい値は、タッチイベントタイプを判定するために、および／または、さらなるフレームデータの処理が保証されるか否か（たとえば、曖昧さレベルが、イベントタイプが知られるために高すぎるか否か）を判定するために適用され得る。
【０１００】
[00104]  方法２００は、出力を提供するように指示された１つまたは複数の手順を含み得る。図２の例では、タッチイベントタイプおよび位置座標を示す出力データが動作２３０において提供される。座標は、タッチイベントに関連付けられた多数のフレームにおける最後のブロブの位置を示し得る。追加の、または、その代りの出力データが提供され得る。たとえば、トラックＩＤが提供され得る。
【０１０１】
[00105]  場合によっては、図２に図示される方法動作のうちの１つまたは複数が、反復され得るか、または他の形で多数のフレームにわたる反復を含み得る。たとえば、ルックアップテーブルの例では、特性セットデータが、各フレームのために反復的にルックアップテーブル分類器へ適用される。そのような反復に関するさらなる詳細が、図４の例に関連して説明される。
【０１０２】
[00106]  方法の動作の順序は、図示された例から変動し得る。たとえば、場合によっては、これら動作は、たとえば、各到着フレームと関連した、パイプライン方式で実施される。これら動作は、異なるフレーム、ブロブ、および／または、トラックのフレームデータを処理している間、並行してすなわち同時に実施され得る。たとえば、動作２１８の特性セット計算は、動作２２４のマシン学習分類処理のいくつかと同時に実施され得る。
【０１０３】
[00107]  図３は、ランダム決定フォレスト（RDF）分類器を含む例に関連したタッチイベント判定動作２２４（図２）に関するさらなる詳細を図示する。この例では、タッチ分類手順は、多数のフレームのための集約された特性セットを取得する動作３０２において始まる。上記で説明されたように、タッチイベントのブロブが、十分な数のフレームについてトラックされる（すなわち、トラックが拡張され完了する）と、集約された特性セットが提供され得る。上記で説明されたように、集約された特性セットはまた、トラック特性データを含み得る。集約された特性セットは、その後、動作３０４において、ＲＤＦ分類器の各ランダム決定ツリーへ適用される。各ツリーの出力は、動作３０６において平均化され、多数の非バイモーダルな分類スコアが生成される。この場合には、各バイモーダルな分類スコアは、タッチイベントが各々のタイプである確率を表す。その後、タッチイベントタイプを判定するために、しきい値が、確率スコアへ適用され得る。１つまたは複数のしきい値が、各タッチイベントタイプのために指定され得る。たとえば、指、スタイラス、および手のひらのクラスの確率スコアが、各々、０．３より低い、０．６より高い、および０．２より低いのであれば、タッチイベントは、意図されたスタイラスタッチイベントとして分類され得る。タッチイベントタイプ、トラックＩＤ、および現在のフレームにおけるトラック（すなわち、ブロブ）の位置を示す出力が、その後、提供され得る。
【０１０４】
[00108]  図４は、ルックアップテーブル（LUT）分類器を含む例に関連したタッチイベント判定動作２２４（図２）に関するさらなる詳細を図示する。この例では、タッチ分類手順は、現在のフレームのための特性セットを取得する動作４０２において始まる。特性セットは、その後、動作４０４において、多数のルックアップテーブルへ適用される。各ルックアップテーブルは、個々の（すなわち、テーブル特有の）非バイモーダルな分類スコアを判定する。たとえば、多数のルックアップテーブルは、タッチイベントが意図されたタッチである第１のレーティング（たとえば、０乃至３）を提供するように構成された第１のルックアップテーブルと、タッチイベントが意図されていないタッチである第２のレーティング（たとえば、０乃至３）を判定するための第２のルックアップテーブルとを含み得る。個々の分類スコアはその後、動作４０６において組み合わされ、ブロブのためのフレーム特有の分類スコア（すなわち、ブロブ分類スコア）が計算される。たとえば、ブロブ分類スコアが−３から＋３の範囲になるように、第２のレーティングは、第１のレーティングから減算され得る。ここで、負の数は、意図されていないタッチをより示し、正の数は、意図されたタッチをより示す。
【０１０５】
[00109]  タッチイベントのためのフレーム特有のブロブ分類スコアが、動作４０８において集約される。集約は、現在のブロブ分類スコアを、初期のフレームのために以前に計算された任意のブロブ分類スコアと合計するステップを含み得る。よって、累積的な（すなわち、マルチフレーム）分類スコアが計算され得る。
【０１０６】
[00110]  決定ブロック４１０は、その後、タッチタイプ分類のために、しきい値が満足されるか否かを判定する。各々のしきい値は、各タッチイベントタイプのために提供され得る。たとえば、累積的なスコアが＋７を越えるのであれば、タッチイベントは、意図されたタッチとして分類される。累積的なスコアが−６未満であれば、タッチイベントは、意図されていないタッチとして分類される。何れかのしきい値が満足されるのであれば、制御は、動作４１２へ進み得る。ここでは、タッチイベントタイプが判定され、出力として提供される。何れのしきい値も満足されないのであれば、制御は、次のフレームのためのさらなるフレームデータと、さらなるフレームデータに関連した特性アプリケーション動作４０４、スコア組合せ動作４０６、およびスコア集約動作４０８の反復とを取得するために、動作４０２へ戻る。
【０１０７】
[00111]  図４の例では、いくつかの特定の環境に関連する分類スコアまたは分類を調節するために多くの動作が実施され得る。決定ブロック４１４は、手のひらタッチイベントであると認められたタッチイベントとオーバラップするブロブのための後続するフレームにおいて調節が生じるべきであるか否かを判定するために使用され得る。この例では、現在のタッチイベントが、手のひらタッチイベントとして分類されているのであれば、制御は、動作４１６へ移り、ここでは、フラグ、状態、または他の変数が、次のフレームにおける任意のオーバラップするブロブを、手のひらタッチイベントとして分類するように設定される。
【０１０８】
[00112]  他の調節は、分類スコアに対する調節として実施され得る。図４の例では、調節は、動作４０６においてブロブ分類スコアを計算することに関連して実施される。上記で説明したように、ブロブが十分に大きな反ブロブ（たとえば、５０画素よりも大きい）とオーバラップするのであれば、動作４１８における調節は、ブロブ分類スコアから値を減算することによって、反ブロブ環境に対処するように指示され得る。動作４２０における別の調節は、上記で説明したように、ブロブのブロブエリアをしきい値エリアによって除することによって計算された商を減算することによって、ブロブが手のひらタッチイベントに近い場合に対処するように指示され得る。動作４２２におけるさらに別の調節は、上記で説明したように、端部画素の数と、ブロブ分類レーティングスコアからのしきい値との差を減算することによって、端部効果を対象とされ得る。
【０１０９】
[00113]  図５を参照して示すように、典型的なコンピューティング環境５００は、上記で説明した方法および／またはシステムの１つまたは複数の態様または要素を実施するために使用され得る。コンピューティング環境５００は、タッチセンサ式デバイス１００（図１）またはその１つまたは複数の要素によって使用され得るか、タッチセンサ式デバイス１００（図１）またはその１つまたは複数の要素に組み込まれ得るか、または、タッチセンサ式デバイス１００（図１）またはその１つまたは複数の要素と一致し得る。たとえば、コンピューティング環境５００は、タッチシステム１０２（図１）、または、タッチシステム１０２と通信するホストデバイスまたはシステムを実施するために使用され得る。コンピューティング環境５００は、図２〜図４に関連して説明される動作の１つまたは複数を実施するために使用される汎用コンピュータシステムであり得る。コンピューティング環境５００は、限定されないが、パーソナルコンピュータ（PC）、サーバコンピュータ、タブレットおよび他のハンドヘルドコンピューティングデバイス、ラップトップまたはモバイルコンピュータ、モバイル電話のような通信デバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、オーディオまたはビデオメディアプレーヤ等を含む広範な種々のコンピューティングデバイスのうちの１つに一致し得る。
【０１１０】
[00114]  コンピューティング環境５００は、基本的な計算動作を可能にするために、十分な計算容量およびシステムメモリを有する。この例では、コンピューティング環境５００は、個別に、または、本明細書ではプロセッサとして集合的に称され得る１つまたは複数の処理ユニット５１０を含む。コンピューティング環境５００はまた、１つまたは複数のグラフィック処理ユニット（GPU）５１５を含み得る。プロセッサ５１０および／またはＧＰＵ５１５は、統合メモリを含み得るか、および／または、システムメモリ５２０と通信し得る。プロセッサ５１０および／またはＧＰＵ５１５は、デジタル信号プロセッサ（DSP）、超長命令語（VLIM）プロセッサ、または、他のマイクロコントローラのような特化されたマイクロプロセッサであり得るか、または、１つまたは複数の処理コアを有する汎用中央処理ユニット（CPU）であり得る。コンピューティング環境５００のプロセッサ５１０、ＧＰＵ５１５、システムメモリ５２０、および／または他の任意の構成要素は、パッケージ化され得るか、または他の形でシステムオンチップ（SoC）、特定用途向け集積回路（ASIC）、または他の集積回路またはシステムとして統合され得る。
【０１１１】
[00115]  コンピューティング環境５００はまた、たとえば、通信インターフェース５３０のような他の構成要素を含み得る。１つまたは複数のコンピュータ入力デバイス５４０（たとえば、ポインティングデバイス、キーボード、オーディオ入力デバイス、ビデオ入力デバイス、触覚型入力デバイス、ワイヤまたはワイヤレスのデータ送信を受信するためのデバイス等）が提供され得る。入力デバイス５４０は、トラックパッドのような１つまたは複数のタッチセンサ面を含み得る。タッチスクリーンまたはタッチセンサ式ディスプレイ５５５を含む様々な出力デバイス５５０もまた提供され得る。出力デバイス５５０は、種々の異なるオーディオ出力デバイス、ビデオ出力デバイス、および／または、ワイヤまたはワイヤレスのデータ送信を送信するためのデバイスを含み得る。
【０１１２】
[00116]  コンピューティング環境５００はまた、コンピュータ読取可能なまたはコンピュータ実行可能な命令、データ構造、プログラムモジュール、または他のデータのような情報の記憶のための様々なコンピュータ読取可能な媒体をも含み得る。コンピュータ読取可能な媒体は、記憶デバイス５６０を介してアクセス可能な利用可能な任意の媒体であってもよく、取外し式ストレージ５７０および／または非取外し式ストレージ５８０においてに関わらず、揮発性と不揮発性との両方の媒体を含む。
【０１１３】
[00117]  コンピュータ読取可能な媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュール、または他のデータのような情報の記憶のための任意の方法または技術において実施される揮発性および不揮発性、取外し式および非取外し式の両方の媒体を含み得る。コンピュータ記憶媒体は、限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（DVD）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または、所望の情報を記憶するために使用され得、コンピューティング環境５００の処理ユニットによってアクセスされ得る他の任意の媒体を含む。
【０１１４】
[00118]  本明細書で説明されたタッチイベント分類技術は、コンピューティング環境５００によって実行されるプログラムモジュールのようなコンピュータ実行可能な命令において実施され得る。プログラムモジュールは、特定のタスクを実行、または、特定の抽象的なデータタイプを実施するルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。本明細書で説明された技術はまた、タスクが１つまたは複数の遠隔処理デバイスによって実行される分散型コンピューティング環境において、または、１つまたは複数の通信ネットワークを通じてリンクされた１つまたは複数のデバイスのクラウド内で実現され得る。分散型コンピューティング環境では、プログラムモジュールは、媒体記憶デバイスを含むローカルおよび遠隔の両方のコンピュータ記憶媒体に配置され得る。
【０１１５】
[00119]  これら技術は、プロセッサを含み得るか、または、含まないこともあり得るハードウェア論理回路または構成要素として部分的にまたは全体的に実施され得る。ハードウェア論理構成要素は、フィールドプログラマブルゲートアレイ（FPGA）、特定用途向け集積回路（ASIC）、特定用途向け標準製品（ASSP）、システムオンチップシステム（SOC）、コンプレックスプログラマブル論理デバイス（CPLD）、および／または、他のハードウェア論理回路として構成され得る。
【０１１６】
[00120]  上記で説明された分類技術は、タッチセンサ式デバイスにおける計画的なタッチイベントと、意図されていないタッチイベントとを確実に区別し得る。タッチイベントが、意図的な指先タッチによるか、または意図されていない手のひらのタッチによるかを判定するために、マシン学習分類器が使用される。この分類器はまた、タッチイベントが、ペンまたはスタイラスの接触またはタッチであるかを判定し得る。いくつかの分類器（たとえば、RDF分類器）は、たとえば、オペレーティングシステムレベル、または、メモリ利用度に関する厳しい制約が示されていない他のレベルにおいて、ソフトウェア実施のために構成され得る。他の分類器は、タッチ処理システムにおいて現在使用されているマイクロコントローラのような、リソースが制限されたプラットフォームにおける実施のために構成され得る。そのような場合には、特性のセットがより限定されたルックアップテーブル分類器（たとえば、3Dルックアップテーブル分類器）が使用され得る。
【０１１７】
[00121]  場合によっては、タッチイベントのプロパティまたは特性が、分類器への適用前に複数のフレームにわたって計算および追跡される。タッチイベントのトラックが、あらかじめ決定されたフレーム数（たとえば、３）に達した後、特性セットは、タッチイベントのための多数の確率スコアを判定するために、分類器へ適用される。各確率スコアは、タッチイベントが特定のタイプである確率を示す非バイモーダルなスコアである。タッチタイプの判定は、その後、確率スコアに基づいて判定され得る。
【０１１８】
[00122]  他の場合は、経時的なタッチイベントのための情報のみならず、異なるタイプの分類スコアをも集約する異なるアプローチを含み得る。場合によっては、ルックアップテーブルアプローチは、各フレームのための非バイモーダルな分類スコアを生成するために使用される。分類スコアはその後、タッチイベントのための累積的なマルチフレーム分類スコアを判定するために、多数のフレームにわたって集約（たとえば、総和）され得る。
【０１１９】
[00123]  マシン学習分類器によって提供される分類スコアは、タッチが意図されている、または、意図されていない可能性を示す。分類スコアの非バイモーダルな性質によって、スコアはまた、分類器判定における曖昧さのレベルをも示すようになる。この判定は、フレーム境界にわたって取得された情報、よって、多数の時点からの情報に基づく。このように、たとえば、最初にタッチダウンした手のひらの初期のフレームは、後に、より多くの情報が利用可能になると強い「手のひら」分類になる弱い「タッチ」分類のように見え得る。よって、誤ったパフォーマンスが向上され得る。
【０１２０】
[00124]  分類スコアは、１つまたは複数のルールによって調節され得る。これらルールは、特性セットデータによって示される環境にしたがって適用または強化され得る。この環境は、フレームの端部におけるタッチイベント、手のひらの近くの指タッチ、および、「浮いている」ユーザによって引き起こされるタッチ画像の歪みを含み得る。この調節は、手のひらのタッチまたは他のタッチタイプに向かって、または、手のひらのタッチまたは他のタッチタッチから離れて、分類器結果を歪め得る。
【０１２１】
[00125]  本明細書で説明された技術は、他の多くの汎用または専用のコンピューティングシステム環境または構成で動作可能である。本明細書における技術と使用するために適切であり得る周知のコンピューティングシステム、環境、および／または、構成の例は、限定されないが、パーソナルコンピュータ、サーバコンピュータ（サーバクライアントアーキテクチャを含む）、ハンドヘルドまたはラップトップデバイス、モバイル電話またはデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、前述したシステムまたはデバイスの何れかを含む分散型コンピューティング環境等を含む。方法または処理ステップおよび機能のいくつかまたはすべては、ユーザによって操作されるクライアントまたはローカルデバイスと通信するネットワーク化されたまたは遠隔のプロセッサによって実行され得る。ローカルデバイスから遠隔デバイスへ機能をオフロードする潜在的な利点は、ローカルデバイスのコンピューティングリソースおよび電力リソースを節約することである。
【０１２２】
[00126]  本明細書における技術は、コンピュータによって実行されるプログラムモジュールのようなコンピュータ実行可能な命令の一般的なコンテキストで説明され得る。一般に、プログラムモジュールは、特定のタスクを実行する、または、特定の抽象的なデータタイプを実施するルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。本明細書における技術はまた、通信ネットワークを通じてリンクされる遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境においても実現され得る。分散型コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルと遠隔との両方のコンピュータ記憶媒体に配置され得る。
【０１２３】
[00127]  本発明は、例示的のみであることが意図され、本発明を限定することは意図されていない特定の例を参照して説明されている一方、本発明の精神および範囲から逸脱することなく、開示された実施形態に対して、変更、追加、および／または、削除がなされ得ることが当業者に明らかになるであろう。
【０１２４】
[00128]  前述した説明は、理解の明瞭性のみのために与えられ、本発明の範囲内の修正は、当業者に明らかとなり得るので、そこから不要な限定は理解されるべきではない。
【図１】
0006641306.tif 000002
【図２】
0006641306.tif 000003
【図３】
0006641306.tif 000004
【図４】
0006641306.tif 000005
【図５】
0006641306.tif 000006