(57)【特許請求の範囲】
【請求項１】
以下の処理を含むコンピュータ実行方法であって、
指の解剖学的モデルを使用して、電子デバイスと相互作用するユーザの手の画像から前記ユーザの手の指の方向を検出し、
前記検出した方向を制御入力にマッピングし、
そして、前記制御入力に基づいてアプリケーションを制御することを含み、
前記解剖学的モデルが、前記ユーザの手の画像から判定されるリンクされたセグメントとの比較のための情報を含む。
【請求項２】
請求項１に記載の方法であって、
前記電子デバイスと相互作用するユーザの手の画像から前記ユーザの手の指の位置を検出することをさらに含み、
前記制御入力は検出位置に基づいてマップされる。
【請求項３】
請求項２に記載の方法であって、
前記制御入力は、
前記指の検出位置及び検出方向に対応して仮想環境における位置及び方向を定め、
前記制御入力に基づいて前記アプリケーションを制御することには、
前記指の前記検出位置及び前記検出方向に対応して、前記仮想環境の仮想オブジェクトを、前記仮想環境での前記位置及び前記方向に動かすように制御し、
前記指の前記検出位置及び前記検出方向に対応して、前記仮想環境における前記位置及び前記方向で前記仮想オブジェクトの表示を描画することを含む。
【請求項４】
請求項１に記載の方法であって、
前記指の前記解剖学的モデルを使用して、前記電子デバイスと相互作用する前記ユーザの手の前記画像中の前記ユーザの手の前記指の方向を検出することには、
指先に対応する前記指の第１の部分を識別し、
前記指の付け根に対応する前記指の第２の部分を識別し、
前記指の前記第１の部分及び前記指の第２の部分との間のベクトルを算出し、
前記ベクトルに基づいて前記指の方向を決定することを含む。
【請求項５】
請求項１に記載の方法であって、
前記指の前記解剖学的モデルを使用して、電子デバイスと相互作用する前記ユーザの手の前記画像中の前記ユーザの手の前記指の方向を検出し、
前記指の画像を獲得し、
そして、前記画像のエッジを処理することを含む。
【請求項６】
請求項５に記載の方法であって、
前記指に対して実質的に垂直な方向を有するスキャンライン上の画像をセグメント化することを更に含む。
【請求項７】
請求項１に記載の方法であって、
前記指の輪郭を検出することをさらに含む。
【請求項８】
請求項７に記載の方法であって、
前記指の前記輪郭は、
前記画像における画像強度の勾配を算出し、
前記画像強度の勾配における少なくとも一つの極小値及び極大値を特定することを含む。
【請求項９】
請求項１に記載の方法であって、
前記指の前記解剖学的モデルを使用して、電子デバイスと相互作用する前記ユーザの手の画像から前記手の前記指の前記方向を検出することは、
前記指の皮膚のしわに対応する画像の領域を識別し、
前記画像内で前記指を検出する際の前記指の皮膚のしわに対応する、前記識別された領域を無視することを含む。
【請求項１０】
請求項１に記載の方法であって、
前記指の前記解剖学的モデルを使用して、前記電子デバイスと相互作用する前記ユーザの前記手の画像から前記ユーザの手の前記指の前記方向を検出することは、
オブジェクトの大きさ、前記オブジェクトの形状、及び前記オブジェクトが前記画像の境界と交差するどうかに基づいて、前記指として前記画像内で一のオブジェクトを選択することを含む。
【請求項１１】
請求項１に記載された方法であって、
前記解剖学的モデルを使用して、前記指の前記方向を検出することは、
前記指の前記解剖学的モデルを使用して、前記電子デバイスのディスプレイと平行に配置された前記指の方向を検出することを含み、
前記解剖学的モデルは、前記指の付け根から前記指の先端までのびる指のモデルである。
【請求項１２】
以下からなる装置であって、
指の解剖学的モデルを使用して、電子デバイスと相互作用するユーザの手の画像から前記ユーザの手の前記指の方向を検出するように構成された画像検出器と、
前記検出した方向を制御入力にマップして、前記制御入力に基づいてアプリケーションを制御するように構成されたプロセッサと、を備え、
前記解剖学的モデルが、前記ユーザの手の画像から判定されるリンクされたセグメントとの比較のための情報を含む。
【請求項１３】
請求項１２に記載の装置であって、
前記画像検出器は、携帯電話、携帯用のビデオゲーム・システム、携帯型音楽プレーヤ、パーソナル・データ・アシスタント、遠隔制御装置又はデジタル・カメラに配置される。
【請求項１４】
コンピュータ・プログラムを含むコンピュータ可読媒体であって、
前記コンピュータ・プログラムは、実行時に、コンピュータに以下の、
指の解剖学的モデルを使用して、電子デバイスと相互作用するユーザの手の画像における前記ユーザの手の指の方向を検出し、
検出方向を制御入力にマップし、
前記制御入力に基づいてアプリケーションを制御する処理を実行させる命令を含み、
前記解剖学的モデルが、前記ユーザの手の画像から判定されるリンクされたセグメントとの比較のための情報を含む。
【請求項１５】
以下を含むコンピュータ実行方法であって、
電子デバイスと相互作用するユーザの手の画像にアクセスし、
指の解剖学的モデルを使用して、オブジェクトの大きさ、前記オブジェクトの形状、及び前記オブジェクトが前記画像内の境界線と交差するか否かに基づいて、前記ユーザの手の指として前記画像のオブジェクトを識別し、
前記ユーザの手の指として前記画像内で識別された前記オブジェクトの位置を決定し、
検出位置を制御入力にマップし、
前記制御入力に基づいてアプリケーションを制御することを含み、
前記解剖学的モデルが、前記ユーザの手の画像から判定されるリンクされたセグメントとの比較のための情報を含む。
【請求項１６】
請求項１５に記載の方法であって、
前記ユーザの手の前記指として前記画像内の前記オブジェクトを識別することには、
指の解剖学的モデルに対応する細長い形状を有するオブジェクトに基づいて、前記ユーザの手の前記指として前記画像内の前記オブジェクトを識別することを含む。
【請求項１７】
請求項１５に記載の方法であって、
前記ユーザの手の前記指として、前記画像内の前記オブジェクトを識別することには、
前記指の解剖学的モデルに基づいて、前記電子デバイスのディスプレイと平行に置かれた前記ユーザの手の前記指として前記画像中の前記オブジェクトを識別することを含み、
前記解剖学的モデルは、前記指の付け根から前記指の先端まで延びる指のモデルを含む。
【請求項１８】
請求項１５に記載の方法であって、
前記検出位置を前記制御入力にマップすることは、前記検出位置を、表示領域における前記指の前記検出位置に対応する位置にマップすることを含み、
前記制御入力に基づいて前記アプリケーションを制御することは、表示されたインジケータを、前記指の前記検出位置に対応して前記表示領域内の位置に動かすことを含む。
【請求項１９】
請求項１５に記載の方法であって、
前記検出位置を前記制御入力にマップすることは、指の検出位置に対応する表示されたユーザ・インタフェースの位置で入力制御を識別して、識別された入力制御と関連した動作を決定することを含み、
前記入力制御に基づいてアプリケーションを制御することは、前記識別された入力制御と関連した動作を実行することを含む。
【請求項２０】
請求項１５に記載の方法であって、
前記ユーザの手の前記指として前記画像内で識別された前記オブジェクトの位置を決定することは、
前記画像における前記指の幅を決定し、
決定された前記幅に基づいて前記画像を取り込んだカメラに対する前記指の奥行き位置を推定し、
前記制御入力は、推定された前記奥行き位置に基づいてマップされる。
【請求項２１】
請求項１５に記載の方法であって、
前記ユーザの手の前記指として前記画像内で識別されたオブジェクトの位置を決定することは、
指先に対応する前記指の一部を検出し、
前記指先に対応する前記指の一部の中央位置として前記位置を決定することを含む。
【請求項２２】
請求項１５に記載の方法であって、
画像領域の境界が前記画像の境界から予想される指先の幅の少なくとも半分の距離で離れた位置であるように、前記画像の範囲内で画像領域を定めることをさらに含み、
前記指の前記位置は定められた画像領域の範囲内で検出される。
【請求項２３】
請求項２２に記載の方法であって、
前記指先の位置は、前記指先が画像領域の外で検出されるときに、前記画像領域の境界の位置にマップされる。
【請求項２４】
以下からなるデバイスであって、
電子デバイスと相互作用するユーザの手の画像を取り込むように構成されたカメラと、
前記電子デバイスと相互作用する前記ユーザの手の前記画像にアクセスし、指の解剖学的モデルを使用して、オブジェクトの大きさ、前記オブジェクトの形状、及び前記オブジェクトが前記画像の境界と交差するかどうかに基づいて、前記ユーザの手の指として前記画像のオブジェクトを識別し、前記ユーザの手の前記指として前記画像中に識別された前記オブジェクトの位置を決定し、検出位置を制御入力にマップし、前記制御入力に基づいてアプリケーションを制御するように構成されたプロセッサと、を備え、
前記解剖学的モデルが、前記ユーザの手の画像から判定されるリンクされたセグメントとの比較のための情報を含む。
【請求項２５】
コンピュータ・プログラムを含むコンピュータ可読媒体であって、
前記コンピュータ・プログラムは、実行時に、コンピュータに以下の、
電子デバイスと相互作用するユーザの手の画像にアクセスし、
指の解剖学的モデルを使用して、オブジェクトの大きさ、前記オブジェクトの形状、及び前記オブジェクトが前記画像の境界と交差するかどうかに基づいて、前記ユーザの手の指として前記画像のオブジェクトを識別し、
前記ユーザの手の前記指として前記画像において識別された前記オブジェクトの位置を決定し、
検出位置を制御入力にマップし、
前記制御入力に基づいてアプリケーションを制御する処理を実行させる命令を含み、
前記解剖学的モデルが、前記ユーザの手の画像から判定されるリンクされたセグメントとの比較のための情報を含む。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００７年５月４日に出願した米国の仮特許出願番号６０／９１６，０６３の利益を主張する。そして、それはその全体を本願明細書に参照することにより引用したものとする。
【０００２】
本開示は一般にユーザ入力に関する。そして、少なくとも一つの特定の装置はユーザ入力を提供するメカニズムとしてユーザの指先位置を検出するためにカメラを利用することを対象とする。
【背景技術】
【０００３】
携帯電話を含む携帯デバイスは、例えばキーパッド、ジョイスティック又はスクロール・ホイールのような、ユーザが入力するための一つ以上の機構を含むことができる。いくつかの携帯デバイスは光センサを使用するジョイスティック機能とそっくりに機能し、そして、いくつかの携帯デバイスは接触を検出するディスプレイ画面を含む。携帯デバイスのための入力メカニズムは、一般的に二次元の下に限られている。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示は一般にユーザ入力に関し、そして、少なくとも一つの特定の装置はユーザ入力を提供するメカニズムとしてユーザの指先位置を検出するためにカメラを利用する新規な方法を対象とする。
【０００５】
１つの一般の実現方法によれば、カメラは、ユーザ入力を提供する方法としてユーザの指のようなオブジェクトの位置及び／又は方向を検出するために用いられる。例えば、データをスクロールしたり、カーソルの位置を制御したり、ユーザの指の位置に基づいてビデオゲームを制御したりするためである。入力は、例えば、携帯電話、ビデオゲーム・システム、携帯型の音楽（ＭＰ３）プレーヤ、携帯型のビデオ・プレーヤ、個人データ・アシスタント（ＰＤＡ）、オーディオ／ビデオ機器遠隔制御装置及び消費者向けデジタル・カメラ、又は他のタイプのデバイスを含む携帯デバイスに提供される。携帯デバイスはカメラを含むことができるので、追加ハードウェアとしてユーザ入力を提供するシステムを実装しなくてもよい。
【０００６】
他の一般の実現方法によれば、方法は、指の解剖学的モデルを使用している電子デバイスと相互に作用しているユーザの手の画像内でユーザの手の指の方向を検出することを含む。その方法は、また、検出方向を制御入力にマップして、制御入力に基づいてアプリケーションを制御することを含む。
【０００７】
実現方法として、以下の機能の一つ以上を含むことができる。例えば、方法は、電子デバイスと相互に作用しているユーザの手の形の画像からユーザの手の指の位置を検出することを更に含むことができる。ここで、制御入力は検出位置に基づいてマップされてもよい。制御入力は、指の検出位置及び検出方向に対応して、仮想環境における位置及び方向を定めることができる。方法は、指の検出位置及び検出方向に対応して仮想環境でその位置と方向を動かすために、仮想環境における仮想オブジェクトを制御することを含むことができる。また、指の検出位置及び検出方向に対応して、仮想環境において、その位置と方向で仮想オブジェクトの画像を描画することを含むことができる。
【０００８】
指の解剖学的モデルを用いた電子デバイスと相互に作用しているユーザの手の画像内でユーザの手の指の方向を検出することは、指先に対応する指の第１の部分を識別し、指の付け根に対応する指の第２の部分を識別し、指の第１の部分及び指の第２の部分との間のベクトルを算出して、ベクトルに基づいて指の方向を決定することを含むことができる。方法は、指の画像を取得し、画像のエッジ処理をすることを含むことができる。さらに、方法は、指に対して略垂直の方向を有するスキャンラインの画像をセグメント化することを含むことができる。
【０００９】
いくつかの実現方法において、方法は、指の輪郭を検出することをさらに含むことができる。指の輪郭は、画像内での画像強度の勾配を算出して、画像強度の勾配のうち、少なくとも一つの極小値と極大値を識別することにより検出されうる。方法は、指の皮膚のしわに対応する画像領域を識別して、当該画像内で指を検出する際の指の皮膚のしわに対応する識別された画像領域を無視することを含むことができる。
【００１０】
いくつかの実施例において、方法は、オブジェクトの大きさ、オブジェクトの形状、また、オブジェクトが画像の境界と交差するか否かに基づいて、画像内のオブジェクトを指として選択することを含むことができる。方法は、指の解剖学的モデルを使用して、電子デバイスのディスプレイに平行な平面の方向に向けられた指の方向を検出することをさらに含むことができ、その解剖学的なモデルは、指の付け根から指の先端までのびている指のモデルである。
【００１１】
他の通常の実現方法によれば、デバイスは、指の解剖学的モデルを使用している電子デバイスと相互に作用しているユーザの手の画像内でユーザの手の指の方向を検出するように構成される画像検出器を含む。デバイスは、また、検出方向を制御入力にマップして、制御入力に基づいてアプリケーションを制御するように構成されるプロセッサを含む。画像検出器は、携帯電話、携帯型のビデオゲーム・システム、携帯型の音楽プレーヤ、個人データ・アシスタント、遠隔制御装置、又はデジタル・カメラに配置されていてもよい。
【００１２】
他の通常の実現方法によれば、コンピュータ可読媒体は、コンピュータ・プログラム製品を記憶する。コンピュータ・プログラム製品は、実行されるときに、コンピュータに演算を実行させるために動作する命令を含む。演算は、指の解剖学的モデルを使用している電子デバイスと相互に作用しているユーザの手の画像において、ユーザの手の指の方向を検出することを含む。演算は、また、検出方向を制御入力にマップして、制御入力に基づいてアプリケーションを制御することを含む。
【００１３】
他の通常の実現方法によって、方法は、電子デバイスと相互に作用しているユーザの手の画像にアクセスして、オブジェクトの大きさや、オブジェクトの形状、そしてオブジェクトが画像の境界と交差するかどうかに基づいて、ユーザの手の指として画像のオブジェクトを識別することを含む。方法は、また、画像内でユーザの手の指として識別されたオブジェクトの位置を決定し、検出位置を制御入力にマップし、制御入力に基づいてアプリケーションを制御することを含む。
【００１４】
実現方法は、以下の機能の一つ以上を含むことができる。例えば、方法は、指の解剖学的モデルに対応する細長い形状を有するオブジェクトに基づいて、ユーザの手の指として画像内のオブジェクトを識別することを含むことができる。方法は、さらに、電子デバイスのディスプレイに対して平行な平面に位置する指の解剖学的モデルに基づいて、ユーザの手の指として画像内のオブジェクトを識別することを含むことができる。解剖学的モデルは、指の付け根から指の先端までのびる指のモデルでもよい。
【００１５】
いくつかの実現方法において、方法は、表示領域における指の検出位置に対応する位置に検出位置をマップし、表示領域における指の検出位置に対応する位置に表示されたインジケータを動かすことを含むことができる。方法は、また、表示されたユーザ・インタフェースにおける指の検出位置に対応する位置で入力制御を識別し、識別された入力制御に関連する処理を決定することを含むことができる。制御入力に基づいてアプリケーションを制御することには、識別された入力制御を伴う処理を実行することを含むことができる。
【００１６】
いくつかの実施例において、方法は、画像の指の幅を決定し、決定された幅に基づいて画像を取り込んだカメラに関して指の奥行き位置を推定することを含むことができる。これらの実施例において、制御入力は、推定された奥行き位置に基づいてマップされうる。方法は、さらに、指先に対応する指の部分を検出して、指先に対応する指の部分の図心として位置を決定することを含むことができる。
【００１７】
方法は、画像領域の境界が予想された指先の幅の少なくとも半分の距離まで画像の境界線から離れるように、画像内の画像領域を定めることを含むことができる。そして、指の位置は定義済みの画像領域の中で検出されうる。指先位置は、指先が画像領域の外側に検出されるときに、画像領域の境界の位置にマップされうる。
【００１８】
他の通常の実施態様によれば、デバイスは、電子デバイスと相互に作用するユーザの手の画像を取り込むように構成されたカメラを含む。デバイスは、また、電子デバイスと相互に作用しているユーザの手の画像にアクセスして、オブジェクトの大きさやオブジェクトの形状、そして、オブジェクトが画像の境界と交差するか否かに基づいて、ユーザの手の画像として画像内のオブジェクトを識別するように構成されたプロセッサを含む。プロセッサは、ユーザの手の指として画像内で識別されたオブジェクトの位置を決定して、検出位置を制御入力にマップし、制御入力に基づいてアプリケーションを制御するようにさらに構成される。
【００１９】
他の通常の実施態様によれば、コンピュータで読取り可能な媒体は、コンピュータ・プログラム製品を記憶する。コンピュータ・プログラム製品は、実行時に、コンピュータに演算を実行させるために作動する命令を含む。演算処理には、電子デバイスと相互に作用しているユーザの手の画像にアクセスして、オブジェクトの大きさ、オブジェクトの形状、そして、オブジェクトが画像の境界と交差するか否かに基づいて、ユーザの手の指として、画像内のオブジェクトを識別することを含む。演算には、また、ユーザの手の指として画像内で識別されたオブジェクトの位置を決定して、検出位置を制御入力にマップして、制御入力に基づいてアプリケーションを制御することを含む。
【００２０】
一つ以上の実施態様の詳細は、添付図面及び下記の説明に示される。開示された以外の潜在的特徴及び効果は、記載及び図面から明らかである。
【図面の簡単な説明】
【００２１】
【図１】ユーザ入力を提供する方法として、ユーザの指先位置を検出する状況を示す図である。
【図２】携帯デバイスの例を示す図である。
【図３Ａ】携帯デバイスのディスプレイを認識しているユーザに向いているカメラを含む携帯デバイスの他の例を示した図である。
【図３Ｂ】携帯デバイスのディスプレイを認識しているユーザから反対に向いているカメラを含む携帯デバイスの他の例を示した図である。
【図４】ユーザがデバイスに入力するためのユーザの指の位置の例を示した図である。
【図５】指の検出位置及び／又は方向を制御入力にマップして、制御入力に基づいてアプリケーションを制御するプロセスを示すフローチャートである。
【図６】ユーザが入力する方法として、ユーザの指先位置を検出するカメラを利用するプロセスのフローチャートである。
【図７Ａ】指が画像の境界の下側から視界に入る例を示す図である。
【図７Ｂ】指がカメラの視界の中である角度を持って現れる例を示す図である。
【図８Ａ】スキャンラインに沿う画素の輝度の例を示す図である。
【図８Ｂ】エッジ検出過程で算出されたときの勾配の大きさの例を示す図である。
【図９Ａ】リンクされた部分の例を示す図である。
【図９Ｂ】指として識別された一組のリンクされた部分の例を示す図である。
【図９Ｃ】指の複数の部分を示すサブセットの例を示す図である。
【図９Ｄ】指の幅を測定する例を示す図である。
【図１０Ａ】カメラ画像の範囲内で定められた画像領域の例を示す図である。
【図１０Ｂ】指先位置が画像領域の外に位置する指の例を示す図である。
【図１１Ａ】画像領域を表示領域にマップした例を示す図である。
【図１１Ｂ】インジケータの位置が指の位置に直接相関する例を示す図である。
【図１２】ディスプレイ画面に表示されたアプリケーションのユーザ・インタフェースの例を示す図である。
【図１３Ａ】ディスプレイ画面に表示されたゲームの表示画像の例を示す図である。
【図１３Ｂ】一人称の視点を含む、指で操作するシューティングゲームの例を示す図である。
【図１３Ｃ】３人称の視点を含む、指で操作するシューティングゲームの例を示す図である。
【発明を実施するための形態】
【００２２】
各図面における同様の参照符号は、同様の各要素を指し示す。
１つの通常の実施態様によれば、カメラは、ユーザ入力を提供する方法としてのユーザの指先のようなオブジェクトの位置を検出するために用いられる。例えば、ユーザの指先位置を検出することで、データをスクロールしたり、カーソル位置を制御したり、ユーザの指先位置に基づいてビデオゲームを制御したりすることができる。指の方向のような追加情報をさらに検出するようにしてもよい。入力は携帯（又は他の）デバイスに提供され、携帯デバイスには、例えば、携帯電話、ビデオゲーム・システム、携帯型の音楽（ＭＰ３）プレーヤ、携帯型のビデオ・プレーヤ、個人データ・アシスタント（ＰＤＡ）、オーディオ／ビデオ機器遠隔制御装置、消費者向けデジタル・カメラ、又はその他のタイプのデバイスを含む。携帯デバイスはカメラを含むことができるので、ユーザによる入力を提供するシステムを実装するためにハードウェアを追加する必要はない。
【００２３】
図１は、ユーザが入力をする方法として、ユーザの指先位置を検出する状況を示す図である。携帯デバイス１０１（下でさらに詳細に説明する）は、携帯デバイス１０１で動いているアプリケーション又はオペレーティングシステムの出力を表示するディスプレイ１０３を含む。ユーザは、ユーザの指２０１を用いて携帯デバイス１０１にユーザ入力を行う。以下に示すように、アプリケーションは乱闘戦闘ゲームであり、そして、指の位置や方向を仮想オブジェクト（例えば剣）にあらわしてマップするようなユーザ入力の方法を用いてゲームを制御する。
【００２４】
例えば、ユーザの指２０１の動き１１１は、当該ゲーム内では、仮想オブジェクト１２０（例えば剣又は他の武器）の動き１１２としてマップされる。この例の場合には、ゲームでは、三次元のコンピュータ・グラフィック技術を使用して仮想オブジェクト１２０をあらわしている。それにより、仮想オブジェクト１２０は仮想ボリュームの中で位置及び方向を有する。画像領域又は３次元画像領域内での指の付け根の位置は、仮想ボリューム内で仮想オブジェクトの底部の位置にマップされ、そして、指の方向は仮想ボリューム内で仮想オブジェクトの方向としてマップされる。この点に関しては、仮想オブジェクト１２０の位置及び方向は、ユーザの指２０１が仮想オブジェクト１２０にマップするようにユーザの指２０１の位置及び方向に対応する。
【００２５】
このマッピングを使用して、ユーザは、例えば、ゲームで剣１２０を右側に振らせるユーザ入力をするために、指２０１を右側に振る。ユーザは、また、ユーザの指がディスプレイ１０３の最上部の縁部に対して垂直な方向を指しつつ、ディスプレイ１０３の前面となる平面に平行に指２０１を向けることができる。ユーザの指２０１をこのような方向にすることで、仮想環境において、剣１２０の先端がディスプレイ１０３の最上部の縁部に対して垂直な方向を指しつつ、ディスプレイ１０３の前面となる平面に平行に剣１２０があるように見えるようになる。ユーザが、その方向を維持しながら上方（すなわち、ディスプレイ１０３の最上部の縁部に対して垂直な方向）へ指２０１を動かす場合、ユーザ入力は、ユーザの指２０１に対応する形で、ゲームに対して画面上で剣１２０を上向きに突き立てるようになされる。
【００２６】
同様に、ユーザがその方向を維持しながら画面の方へ向かって指２０１を動かす場合、剣１２０は、ユーザの指２０１に対応する方向を維持し、仮想環境において、画面の内方向にナビゲートする。ユーザがその方向を維持しながら画面から離して指２０１を動かす場合、剣１２０は、ユーザの指２０１に対応する方向を維持し、仮想環境において、画面の外方向にナビゲートする。このように、ユーザの指２０１の位置の変化は、仮想環境における仮想オブジェクト（すなわち剣）１２０の位置の変化として描かれる。そして、それはディスプレイ１０３上での仮想オブジェクト１２０の画面の変化により示される。
【００２７】
いくつかの実施例において、ユーザは、仮想環境における剣１２０の方向を変えるために、ユーザの指２０１の方向を変えることができる。例えば、ユーザは、仮想環境内で剣１２０を傾けるために、指２０１を傾けることができる。剣１２０は、仮想環境において、ユーザが指２０１を傾けた度数に直接対応して又は比例して特定の度数に傾けることができる。このように、ユーザの指２０１の方向の変更は、仮想環境の仮想オブジェクト（すなわち剣）１２０の方向の変化として描かれる。そのことは、ディスプレイ１０３における仮想オブジェクト１２０の画像の変化により示される。
【００２８】
ユーザの指２０１の位置及び方向の変化は、両方とも仮想環境における剣１２０の位置及び方向の変化として描かれうる。この点に関しては、ユーザは、ユーザの指２０１の動き（例えば、画面に向かってユーザの指２０１の傾きや回転に対応するようなやり方）に応じて剣１２０を傾けたり回転させたりすることで、仮想環境内で、画面内のある方向に剣１２０が斬りつけるようにするために、指２０１を画面に向かって傾けたり回転させたりすることができる。ユーザは、また、画面で指２０１を指したり、画面に指２０１を指している間、画面に向かって指２０１を動かしたりすることができる。この動きは、剣１２０を画面内のある方向に斬りつけさせるようにすることができる。いくつかの実施例において、奥行きを検出するカメラ（例えば立体カメラ又は飛行時間型のカメラ）は、カメラからユーザの指２０１までの距離を検出するために用いられうる。
【００２９】
アプリケーション（すなわち乱闘戦闘ゲーム）では、ゲーム・プレーを制御するために、仮想環境内の他の仮想オブジェクトを有する仮想環境（例えば仮想ボリューム）の範囲内で、仮想オブジェクト１２０の位置及び方向を比較する。比較に基づいて、アプリケーション（すなわち乱闘戦闘ゲーム）は、仮想オブジェクト１２０が仮想ターゲットオブジェクト（例えば仮想キャラクタやその他の仮想武器、ターゲットなど）と交差するかどうか決定する。仮想ターゲットオブジェクトも、画面に描かれうる。仮想ターゲットオブジェクトを画面に表示することで、対応する方法で、仮想環境内で仮想オブジェクト１２０を動かすために、ユーザに、仮想ターゲットオブジェクトの方へ又は仮想ターゲットオブジェクトの所で指２０１を動かさせ、そして、そのようにして、仮想ターゲットオブジェクトと交差することになる。ユーザの指２０１の位置及び方向を仮想オブジェクト１２０の位置及び方向にマップすることで、ユーザに指２０１を使用して乱闘戦闘ゲームを操作させる。
【００３０】
図２を参照する。携帯デバイス１０１は、カメラ１０２と、画像表示をアプリケーションに提供するディスプレイ１０３（例えば液晶画面）と、を含む。携帯デバイス１０１は、また、ボタン１０４又はキーパッド１０５を含むことができる。内部プロセッサは、カメラ１０２、ボタン１０４及び／又はキーパッド１０５からの入力を受け付けて、入力に基づいて機能又は演算処理を実行して、ディスプレイ１０３上の画像を生成するように構成される。
【００３１】
カメラ１０２は、画像を取り込むデバイスである。例えば、カメラ１０２は、デジタル・カメラ、デジタル・ビデオ・カメラ又は画像を取り込む他のタイプのいかなるデバイスでもよい。デバイス１０１は、一つ以上のカメラを含むことができる。カメラ１０２は、アプリケーションと相互に作用している対象物の画像を取り込むことができる。例えば、カメラ１０２は、カメラ１０２の視界の中で物理的にアプリケーションと相互に作用しているユーザの指又は指先の画像を取り込むことができる。
【００３２】
カメラ１０２は指２０１を照らす発光体を含むことができる。その結果、カメラは周辺が暗い状態でも指を検出できる。発光体は赤外線を放射でき、そして、カメラ１０２は赤外線に感度があってもよい。あるいは、発光体は可視光（例えば白色灯）を出すことができ、そして、カメラ１０２は可視光に感度があってもよい。発光体の代わりに、周囲が暗い場合でも指２０１を検出できるように、ディスプレイ画面１０３は光を発することができる。
【００３３】
カメラ１０２は、また、奥行きを検出するカメラでもよい。例えば、カメラ１０２は、異なる視点から指２０１の画像を取る複数のセンサを含む立体カメラでもよい。カメラ１０２は各視点の画像を比較して奥行きを検出することができ、又は、デバイスは各視点の指２０１を検出して、指の位置を比較して奥行きを算出することができる。他の例では、カメラ１０２は、光のパルスを発する発光体や、光のパルスが検出された時を測定できるセンサを含む飛行時間型のカメラでもよい。飛行時間型のカメラは、光のパルスが検出された時を計測することで奥行きを検出できる。これにより、光によって、得られたパスの長さを計測する。
【００３４】
ディスプレイ１０３は、ユーザに、テキスト又は画像を含みうる表示画像を描画する。表示画面は、ゲームや他のアプリケーションがデバイス１０１上で実行するような、デバイス１０１の状態に関する情報を示したり、アプリケーションのための視覚的なインタフェースを提供する情報を示すことができる。ディスプレイ１０３は、また、デバイス１０１を作動するのに必要なオペレーティング・システム・プログラムと同様に、本実施態様におけるソフトウェアアプリケーションのためのユーザ・インタフェースを構成する図形や、画像、テキストを表示できる。
【００３５】
ボタン１０４は、ユーザが入力コマンドをデバイス１０１に入力するために使用できる入力制御ボタンである。ボタン１０４は、ディスプレイ１０３に描かれるインタフェースに基づいて変化することができ、又は変化することができない特定の機能に対応できる。ボタン１０４は、カメラ１０２に撮影された画像に取り込まれたユーザの指の動きに基づいて、ユーザがデバイス１０１に入力できるようにするための入力制御プログラムを起動するために用いられうる。例えば、ユーザの指の動きは、ボタン１０４が押下された時にユーザ入力としてマップされることができ、ボタン１０４が押下されないときには無視されてもよい。ボタン１０４を用いてユーザ入力プログラムの有効化を制御することで、ユーザの指の不注意な動き（例えば、ユーザが、ポケットやバッグからデバイス１０１を取り出すときなど）がユーザ入力としてマップされるのを防止できる。ボタン１０４がアクティブにされると、カメラ１０２を画像を取り込むように制御したり、プロセッサに、ユーザ入力にユーザの指をマッピングしたりするために他のプロセスを実行させるように制御できる。
【００３６】
デバイス１０１のユーザは、アプリケーションプログラムと同様にオペレーティング・システム・プログラムを作動、制御するためのコマンドやデータを入力するためにキーパッド１０５を使用する。キーパッド１０５は、ユーザがデバイス１０１に入力するために起動させることができる一群の一つ以上のボタン又は圧力で作動するスイッチを含む。キーパッド１０５を用いて、ユーザはデバイス１０１にテキストデータやユーザコマンドを入力できる。
【００３７】
プロセッサ（図示せず）は、ボタン１０４及びキーパッド１０５からの入力を受け付けることができ、また、ユーザの入力コマンドにユーザの指の動きをマップして、カメラ１０２により取り込まれた画像を分析できる。プロセッサは、ユーザ入力に基づいて機能又は演算を実行することができ、適切なときに、ユーザ入力に応答してディスプレイ１０３上の画面を生成できる。プロセッサは、携帯デバイス１０１で起動しているアプリケーションプログラム及びオペレーティングシステムを実行できる。携帯デバイス１０１は、マルチプロセッサ（又は他の制御回路）を含むことができ、また、アプリケーションプログラム、オペレーティングシステム及びユーザ入力プログラムを記憶し、また、アプリケーションプログラム、オペレーティングシステム及びユーザ入力プログラムにより用いられるデータを記憶するメモリ（又は他のコンピュータ読み取り可能な記憶媒体）を含むことができる。
【００３８】
デバイス１０１がモバイル機器として図２において、図示されるが、さらなる態様として、デバイス１０１はパーソナル・コンピュータ（ＰＣ）又はゲーム・システム、ラップトップ・コンピュータ、携帯コンピュータ、タブレット・コンピュータ、個人データ・アシスタント（「ＰＤＡ」）又は他のタイプの組込みシステム（例えばコンピュータキーボード又は遠隔制御装置）の構成を含むことができる。デバイス１０１は、また、携帯型の音楽プレーヤ（ポケベル又は他の通信装置）又はゲーム、通信及び／又はデータ構成のための手持ちサイズ又は持ち運びサイズの電子デバイスでもよい。
【００３９】
図３Ａを参照して、１つの通常の実施態様において、携帯デバイス１０１は、ユーザが携帯デバイス１０１の画面を認識できる向きに向いているカメラ１０２を含む。この実施態様においては、ユーザは、携帯デバイス１０１にユーザ入力をするために、指２０１をカメラ１０２の手前で少し離した状態で携帯デバイス１０１の上方にかざす。カメラ１０２は、カメラの視界が画面の前の領域をカバーするように位置決めされうる。ユーザは、また、ボタン１０４を操作するために、指２０２を使用する。
【００４０】
図３Ｂを参照して、他の通常の実施態様では、携帯デバイス１０１は、携帯デバイス１０１の画面をユーザが認識できる向きから見て外方に向くカメラ１０２を含む。この実施態様では、ユーザは、携帯デバイス１０１にユーザ入力をするために、カメラ１０２の後側に少し離した状態で、指２０１を携帯デバイス１０１の下側にかざす。以下に示すように、カメラ１０２の露出部は、携帯デバイス１０１の裏面にあり、ユーザの視界から隠されている。ユーザは、また、ボタン１０４を操作するために指２０２を使用する。図３Ａ及び３Ｂは、２つのカメラ構成例を示しているが、他の実施態様として、カメラは、携帯デバイスのいかなる表面又は側面に配置されていてもよい。
【００４１】
図３Ａ及び図３Ｂに示す実施態様において、ユーザは、カメラ１０２により撮像された領域内において、指２０１を動かして携帯デバイス１０１と相互に作用する。加えて、ユーザは、ボタン１０４又はキーパッド１０５のキーを押圧するために、親指２０２又は他の指を用いて、携帯デバイス１０１と相互に作用できる。
【００４２】
デバイスは、様々な方法で手に持たれ、及び／又は操作されうる。例えば、ユーザは、指をさすために第２の手の指を使用している間、第１の手でデバイスを持つことができる。他の例では、ユーザは、デバイスを手に持っている同じ手の指を使って指をさすことができる。さらに別の例では、デバイスを動かないように（例えば、テーブルにのせるなどして）することができ、ユーザはどんな指でも指をさすことができる。
【００４３】
図４は、ユーザ入力をデバイスに行うユーザの指２０１の位置の例を示す。例えば、指先４０１がカメラの視界４０２の中になるように、ユーザは指２０１をかざす。ユーザの指先４０１は、（より近い距離又は遠い距離でも使用できるにもかかわらず、）カメラ１０２から、２から１０センチメートル離れた位置であってもよい。カメラ１０２は写真やビデオをとるために一般的に用いられるタイプ及び構成のものでよく、そして、それが「焦点がずれている」場合でも、指２０１をユーザ入力に使用できる。特に、下記に詳しく述べる通り、プロセッサは、指２０１の画像をセグメント化してカメラ画像を分析する。プロセッサは、カメラ画像をセグメント化した後に、指先４０１の方向及び位置を算出する。
【００４４】
図５は、指の検出位置及び／又は方向を制御入力にマップして、制御入力に基づいてアプリケーションを制御するプロセス５００を示すフローチャートである。便宜上、図２から図４までに関して記載されている特定の構成要素は、プロセスを実行するものとして参照される。しかしながら、異なる構成要素がシステムの構造を定めるために用いられたり、又は、図２から図４に示された構成要素の中で機能が異なるように分類されたりする他の実施態様において、類似する方法論を適用できる。
【００４５】
デバイス１０１のプロセッサは、電子デバイス（５１０）と相互に作用しているユーザの手の画像内でユーザの手の指の位置及び／又は方向を検出する。例えば、プロセッサ２０５は、読み込まれた画像内でユーザの指を検出するために、一つ以上の読み込まれた画像を処理したり、分析したりできる。この例の場合には、プロセッサは、読み込まれた画像の特徴を、画像内での指の典型的な特徴（例えば指の解剖学的モデル）と比較して、指を検出できる。又は、読み込まれた画像内の動きを検出することによって、指を検出できる。プロセッサは、また、読み込まれた画像の肌色を分析して指を検出できる。又は、現在の画像と背景モデルとの違いを検出するために一つ以上の指を含む現在の画像を背景モデルと比較することで指を検出できる。プロセッサ２０５は、単一の画像の中で、又は、一組の複数画像において、指を検出するために、任意の技術を使用できる。
【００４６】
一つ以上の画像から指を検出した後に、プロセッサは、検出された指の位置及び／又は方向を決定するために、一つ以上の画像の部分を分析する。プロセッサは、カメラの視界の中で指が検出された領域に基づいて指の位置を決定することができ、カメラの視界の中での指の角度に基づいて指の方向を決定できる。プロセッサは、２次元又は３次元で指の位置を決定できる。指の位置が３次元で決定される場合には、プロセッサは、指の大きさに基づいてカメラから指までの距離を推定できる。又は、プロセッサは、ステレオ又は飛行時間型のカメラから取り込んだ、奥行き情報を含む画像を処理できる。同様に、プロセッサは、２次元空間又は３次元空間における指の方向を決定できる。指の位置及び方向を検出するには、プロセッサは、３次元空間において、検出された指の位置と方向を示すベクトルを計算できる。
【００４７】
プロセッサは、検出された位置及び／又は方向を制御入力にマップする（５２０）。プロセッサは、位置及び／又は方向を検出するときに描画された画像に基づいて、指の検出位置及び／又は方向を制御入力にマップすることができる。例えば、プロセッサは、指の位置及び／又は方向を、表示されたユーザ・インタフェースで描画されたアイテムの位置及び／又は方向と比較できる。この比較に基づいて、プロセッサは、指が検出された位置及び／又は方向を、表示されたインタフェース・コントロール（例えば指の位置及び／又は方向に対応して表示されたインタフェース・コントロール）を伴う特定のコマンド又は演算処理にマップすることができる。
【００４８】
プロセッサは、また、検出された位置及び／又は方向を、ユーザ・インタフェースで示されたオブジェクトの位置及び／又は方向にマップすることができる。例えば、プロセッサは、検出された位置及び／又は方向を、ユーザ・インタフェースで表示されるカーソル（例えばマウスカーソル）の位置及び／又は方向にマップすることができる。このように、ユーザの指の動きは、ユーザがカーソルを使用してアプリケーションを制御できるように、ユーザ・インタフェースのカーソルの動きにマップされうる。
【００４９】
プロセッサは、また、検出された位置及び／又は方向を仮想環境における仮想オブジェクトの位置及び／又は方向にマップすることができる。例えば、図１について上述したように、プロセッサは、仮想環境における仮想オブジェクトの位置及び／又は方向が、検出された位置及び／又は方向に対応するように、検知された位置及び／又は方向を仮想環境内の仮想オブジェクト（例えば乱闘戦闘ゲームの武器）の位置及び／又は方向にマップすることができる。
【００５０】
プロセッサは、さらに、検出された位置及び／又は方向により表現されたジェスチャに基づいて、検出された位置及び／又は方向を制御入力にマップすることができる。プロセッサは、ユーザが制御入力に関連したジェスチャを実行したかどうか決定するために、検出された指の動き（例えば位置及び／又は方向の変化）を分析できる。例えば、プロセッサは、検出された指の動きを一組の認識されたジェスチャと比較することができ、その比較に基づいて認識されたジェスチャの動作を検出することができ、その動作（例えば指の位置及び／又は方向）を認識されたジェスチャと関連する制御入力にマップすることができる。一例では、ユーザは、デバイス１０１をオフにするか、又はデバイス１０１をスリープ・モードにするような入力をするために、カメラの前で「Ｚ」の文字形に指を動かすことができる。
【００５１】
プロセッサは、制御入力に基づいて、アプリケーションを制御する（５３０）。例えば、プロセッサは、制御入力に対応するアプリケーションの演算又はコマンドを実行できる。プロセッサは、制御入力に基づいて表示されたインタフェース・コントロールを選択でき、又は制御入力に基づいて表示されたオブジェクト（例えばカーソルや仮想オブジェクト）を制御できる。制御入力は、データ処理アプリケーション、ゲーム、オペレーティングシステム、メディア・アプリケーション、デバイス制御アプリケーション、その他のタイプのいかなるアプリケーションのコマンド又は演算に関連するものであってよい。
【００５２】
図６は、ユーザ入力を提供する方法としてユーザの指先位置及び／又は方向を検出するために、カメラを利用するプロセス６００を示すフローチャートである。数字５１０に関して上述したように、プロセス６００は、画像に基づいて指の位置及び／又は方向を検出するときに用いられることが可能である。便宜上、図２から図４に関して記載されている特定の構成要素は、プロセスを実行する構成として参照される。しかしながら、異なる構成要素がシステムの構造を定めるために用いられたり、又は、図２から図４に示された構成要素の中で機能が異なるように分類されたりする他の実施態様において、類似する方法論が適用されうる。
【００５３】
携帯デバイス１０１のプロセッサはカメラ１０２からカメラ画像を得る（６１０）。そして、指の輪郭を検出するためにカメラ画像をエッジ処理する（６２０）。輪郭を使用して、プロセッサは、指を識別するために、カメラ画像をセグメント化する（６３０）。プロセッサは、識別された指に基づいて指の位置及び／又は方向を示している情報を算出する（６４０）。
【００５４】
いくつかの実施態様において、デバイス（例えばカメラ１０２）は、色チャンネルがパックされた（例えば、１６ビットのワードは５ビットの赤と、６ビットの緑、５ビットの青で構成される）色フォーマットの画像を取り込む。一実施態様において、カメラ画像を得ること（６１０）には、カメラ画像を後に続く処理にとってより効率的で処理しやすい色フォーマットに変換することを含む。例えば、プロセッサは、色フォーマットを８ビット・グレースケールや２４ビットＲＧＢカラーに変換できる。
【００５５】
他の実施態様では、カメラに対して指が近い位置にあるため、指は、ぼんやりしたように見える、したがって、画像の高周波成分は指に起因するものでなくてよい。この状態で、カメラ画像（６１０）を取得するには、画像にローパスフィルタを使用することをさらに含む。ローパスフィルタを使用することで、指に起因しているそれらより高い周波数成分を除去できる。そして、補助的エッジの程度や信号ノイズの影響を減らすことができる。
【００５６】
さらなる実施態様において、デバイス（例えばカメラ１０２）は、記載されたプロセスで要求されるものより高い解像度の画像を取り込む。これらの状況下で、カメラ画像を得る（６１０）と、画像をデシメーションすることを含むことができる。デシメーションの方法はビニングすることを含むことができ、それによって、間引きされたピクセル値は領域の中の複数のピクセル値の平均として算出される。複数の画素の領域の上のノイズ成分の平均が、領域の中の個々の画素のノイズ成分より低い傾向であるので、ビニング処理により、信号ノイズの影響を減らすことができる。サブ・サンプリングやデシメーションの他の方法を使用できる。
【００５７】
エッジ検出プロセス（６２０）は、指の回りの輪郭を検出する。エッジ検出プロセスは、各画素で画像強度の勾配を算出する。プロセッサは、エッジ検出プロセスでソーベル演算を使用できる。ソーベル演算は、勾配の水平及び垂直成分を決定するために、原画像で一対のカーネルをコンボリューションする。これらのカーネル計算は、下記の式１Ａ及び１Ｂに示される。
【数１】
0005453246.tif 000002
【００５８】
式１Ａ及び１Ｂにおいて、Ａはカメラ画像である。そして、Ｇｘ及びＧｙは水平及び垂直方向の勾配成分である。水平及び垂直成分は、結合される。結合された結果は、下記の式１Ｃに示すように、二乗成分の合計の平方根として算出される。
【数２】
0005453246.tif 000003
【００５９】
近似値はより効率的に使用されうる。近似値を使用することで、一般に携帯デバイスに採用されたプロセッサに必要な計算をさせることができる。近似において、結合された結果は、下記の式１Ｄに示すように、水平及び垂直成分の絶対値の合計として算出される。
【数３】
0005453246.tif 000004
【００６０】
加えて、水平及び垂直成分は、定義済みスカラａ及びｂと乗算されうる。スカラａは、スカラｂよりも大きくてもよく、また、大きくなくてもよい。いくつかの実施態様において、システムが皮膚のしわに対してよりも指の側面に対して感度が高いように、スカラａは、スカラｂより大きくてもよい。他のエッジ検出方法をソーベル演算の代わりに用いてもよい。
【００６１】
カメラに対して指が近い位置にある結果、指は、カメラ画像において、ぼんやりしたように見えることができる。指の輪郭を形成している勾配は、数ピクセルの幅にまたがっていてもよい。皮膚のしわ、表皮及び指の爪などのような指の特徴は、また、エッジを形成することもできるが、ぶれは、それらの勾配の程度を減少させうる。
【００６２】
セグメント化プロセス（６３０）の実施態様において、カメラ画像は、方向を有するスキャンラインにおいて、処理される。方向は指に対してほぼ垂直に選択され、その結果、各スキャンラインは指の横断面を表現する。方向は、所定の方向でもよく、又は所定の方向でなくてもよい。例えば、方向は、デバイス１０１のカメラ１０２の方向に基づいてもよく、ユーザがデバイスを持ちたい方向に基づいてもよい。
【００６３】
図７Ａは、指２０１が画像の下側境界線７０１から視界４０２に入る例を示した図であり、その結果、指の方向７０２がほぼ垂直であることを示す。この例の場合には、スキャンライン７０３は、画素が水平方向に並ぶ行として定義される。複数の平行なスキャンラインは、１ピクセル間隔で間隔を置いて定められている。
【００６４】
図７Ｂは、指２０１がカメラの視界４０２の中である角度をなす例を示す図である。この例の場合には、スキャンライン７０５は、指の方向７０４に対して垂直に定義される。複数の平行なスキャンラインが、１ピクセル間隔で間隔を置いて定められている。
【００６５】
スキャンラインの方向がある角度をなす例では、図７Ｂに示すように、プロセッサは、エッジ処理の前にカメラ画像を回転させる。回転処理では、回転対象のイメージバッファ内で、スキャンラインが画素の水平方向の行として現れるように、画像データを回転させる。回転対象のイメージバッファでは、スキャンライン上の画素は連続的なメモリ・アドレスを有することができる。その結果、変換されない。
【００６６】
スキャンライン方向がある角度をなす他の実施態様において、図７Ｂに示すように、スキャンラインの画素に対して勾配結果にアクセスするときに、セグメント化プロセスは変換を使用する。スキャンライン上の画素のメモリ・アドレスは、ピクセル値にアクセスされる時に算出されうる。変換は、画像を回転させるのに比べて計算効率がよくてもよく、またよくなくてもよい。
【００６７】
図８Ａは、スキャンライン（例えば図７Ａのスキャンライン７０３）に沿った画素の輝度の実施例を示す図であり、図８Ｂは、エッジ検出プロセスにより算出されるときの勾配の大きさの例を示す図である。指の両側のエッジが、８０１及び８０２の符号で示されている。カメラの近くに指がある結果、指はカメラ画像において、ぼんやりしたように見えることができる。そして、このことは、図８Ｂに示すように、エッジの傾きが段階的であることを示す。
【００６８】
カメラ画像をセグメント化するとき（６３０）には、プロセッサは、極大値を識別して、極大値の位置で、スキャンラインをセグメント化する。極大値は、領域内で最大値として識別され８０３として識別でき、極大値の中央であり、少なくとも８０４として識別される閾値によって、周囲の値より大きい値として識別される。スキャンライン・セグメントは、グラフデータ構造を形成するためにリンクされる。セグメントが重複する場合、セグメントは隣接するスキャンラインのセグメントにリンクされる。
【００６９】
図９Ａは、リンクされたセグメントの例を示す図である。ここで、水平方向の線はセグメントをあらわし、縦線はリンクをあらわす。この例の場合には、背景の特徴は、エッジを形成することもできる。リンクされたセグメントを含むグラフデータ構造を形成した後、グラフデータ構造は、取り除かれてもよい。一つの実施例において、指のまわりのエッジは不完全である。それによって、スキャンライン・セグメントは指の部分及び背景の部分を含む。（例えば、領域の大きさに相対的な）比較的少ないセグメントにリンクされているグラフのサブセット（例えば領域）は、サブセットを接続するそれらのセグメントを取り除くことによって、リンクから外れてもよい。
【００７０】
一組のリンクされたセグメントは、指として選択される。選択基準は、大きさ、形状、そして指が画像（例えば、図７Ａで示す画像の下側境界線７０１）に入ると思われるカメラ画像（又は回転画像）の境界の交点を含む。大きさの評価基準は、画素数を定義済みの範囲と比較する。形状の評価基準は、幅と高さの比率を定義済みの範囲と比較する。境界の交点の評価基準は、一組のリンクされたセグメントが、予め選択されたスキャンラインのセグメントを含むかどうかにより決定する。
【００７１】
選択基準は指の解剖学的モデルを表現でき、そして、指の解剖学的モデルを使って、リンクされたセグメントの一組が指であるかどうかを決定するために、リンクされたセグメントのセットを比較できる。解剖学的モデルは、指の典型的な大きさや典型的な形状などのように、カメラ画像における指の典型的な特性を定義する情報を含むことができる。解剖学的モデルにより定義された指の典型的形状は、指の付け根から指の先端まで延びる指の細長い形状を反映できる。解剖学的モデルは、また、例えば予想されたしわや予想された指紋の領域のような、皮膚の質感の特徴を含むことができる。指の解剖学的モデルは、すべての指を表現することができ、指の関節、指と手の接続部分、指の爪や皮膚の色などの特徴を含む。
【００７２】
解剖学的モデルは、さらに、デバイスと相互に作用する際にユーザが手に持った状態での指の位置に関連してもよい。例えば、デバイスの画面に平行に指を保持してデバイスと相互に作用する実施態様の場合、解剖学的モデルは、デバイスの画面に平行な平面に位置する指の解剖学的モデルを表現できる。デバイスと相互に作用する際に、ユーザによって指が保持されている状態で解剖学的モデルを正しい向きにすることは、デバイスと相互に作用しているユーザの指の画像内での指の検出を容易にすることができる。
【００７３】
いくつかの実施態様において、様々な特徴を有する複数の指の解剖学的モデルが使用されうる。例えば、異なる大きさを設定された解剖学的モデル（例えば大人用や子供用モデル）又は性別モデル（例えば男性用や女性用のモデル）は、一組のリンクされたセグメントが指であるかどうかを決定するために用いられうる。具体的には、複数の解剖学的モデルの各々は、合致することが分かるまで、又は、モデルのすべてが使用されて、リンクされたセグメントの一組は指でないと決定されるまで、リンクされたセグメントの一組と比較されうる。複数の解剖学的モデルを使用することにより、より多いユーザ数の指を検出できる。
【００７４】
デバイスと相互に作用するときに、ユーザはデバイスに対して異なる方向で彼らの指を保持できる。デバイスと相互に作用する際のユーザの指の方向が解剖学的モデルに適合しない場合、ユーザの指は適切に検出されなくてもよい。したがって、様々な方向の指の解剖学的モデルを使用することで、より広い方向の範囲で指の検出を容易にすることができる。リンクされたセグメントの一組を様々な方向を有する解剖学的モデルと比較することは、また、ユーザの指の方向を決定する際に使用されることができ、そして、それは制御入力にマップされることができる。
【００７５】
いくつかの装置において、指の登録プロセスは、特定のデバイスで特定の指を登録するために用いられうる。例えば、ユーザは、デバイスに情報を識別させて、一つ以上のユーザの指の画像を取り込むためにデバイスを制御できる。デバイスは、一つ以上の取り込んだ画像からユーザの指に対応する解剖学的モデルを生成して、ユーザを識別する情報に関連してユーザの指から生成された解剖学的モデルを記憶できる。ユーザがその後デバイスを使用して、識別情報（又は他の方法のデバイスにより識別された情報）を提供する際に、デバイスは、デバイスと相互に作用しているユーザの指の位置及び／又は方向を検出する際に、ユーザの指から生成された解剖学的モデルを使用する。特定のユーザの指から特別に生成した解剖学的モデルを使用することで、ユーザの指の検出を容易にすることができる。
【００７６】
図９Ｂは、指として識別され、リンクされたセグメントの一組の例を示す図である。エッジは、指の輪郭のすべての位置で検出されなくてもよい。例えば、９０１で示される指の輪郭の位置は、検出されたエッジを含まない。その結果、９０２で示されるセグメントは、取り除かれうる（例えば、破線により示される部分が取り除かれる）。エッジは、指の範囲内で検出される。例えば、９０３で示されるエッジは、指の関節で生じた皮膚によるものであり、９０４で示されるエッジは、指の爪や甘皮によるものである。リンクされたセグメントの経路にしたがって、これらの特徴を順に送る。
【００７７】
プロセッサは、リンクされたセグメントのうち選択された組から、指（６４０）の位置及び／又は方向の情報を算出する。一組（例えば、図９Ｂの９０５で示されるセグメント）の端に近いセグメントは、指先を表現しているサブセットとして選択される。一組（例えば、図９Ｂの９０６で示されるセグメント）の端に近いセグメントは、指の付け根を表現しているサブセットの一部として選択される。指先又は指の付け根を表現しているセグメントのサブセットは、最も遠いセグメントの所定数のスキャンライン内のセグメントを含む。
【００７８】
図９Ｃは、指の部分を表現しているサブセットの例を示す図である。一組のセグメントの端近くにあるセグメントのサブセットは、指先を表現するために選択される。例えば、サブセット９０７は、指先を表現する。一組の端の近くにあるセグメントは、指の付け根を表現しているサブセットの一部として選択される。例えば、サブセット９０８は、指の付け根を表現する。
【００７９】
プロセッサは、識別された指先部分（例えばサブセット）９０７の図心として、指先位置９０９を算出する。図心は、浮動小数点数精度又は浮動小数点の固定小数点シミュレーションを使用して算出されうる。プロセッサは、識別された指の根本部分（例えば、サブセット）９０８の図心として、基準位置９１０を算出する。図心は、浮動小数点数精度又は浮動小数点の固定小数点シミュレーションを使用して算出されうる。浮動小数点数精度又は浮動小数点の固定小数点シミュレーションによって、図心が算出され／カメラ画像よりも高い解像度で（又は、画像がデシメーションされて、デシメーションされたカメラ画像より高い解像度で）推定される。したがって、浮動小数点数精度又は浮動小数点の固定小数点シミュレーションを使用することは、エッジプロセス６２０とセグメント化プロセス６３０により低い解像度の画像を処理させることで、要求される処理能力を低くすることができる。要求される処理能力を低くすることは、一般的な携帯デバイスのプロセッサの性能にとって適切でありうる。
【００８０】
プロセッサは、基準位置９１０から指先位置９０９まで形成されるベクトルとして、指の方向９１１を算出する。他の実施態様において、プロセッサは、指の方向を決定するために、指のモーメント（例えば選択されたリンクされたセグメントの取り除かれた一組）を算出する。指の平均幅のような付加的な特徴は、任意に算出されうる。
【００８１】
図９Ｄを参照する。指の幅は、指先と指の付け根の近くで、指の方向９１１に対して垂直で計測される。指先の幅９１３は、指先位置と指の付け根の位置との間の指の方向ベクトルのポイントから計測される。例えば、指先の幅９１３は、指先から所定の距離に位置するポイント９１２で計測される。所定の距離は、指先の曲率を避けて、また、指の指の爪部分を避けて選ばれる。指のその部分の区分が正確でなくてもよいので、指の爪部分を避けることは有益でありうる。指の付け根の幅９１５は、指先位置と指の付け根の位置との間の指の方向ベクトルの位置から計測される。例えば、指の付け根の幅９１５は、画像の基部（例えば予め選択されたスキャンライン）から所定の距離に位置するポイント９１４で、計測される。
【００８２】
３次元の位置及び方向は、指の幅の測定値を使用して、任意に推定されうる。例えば、指先の幅９１３及び指の付け根の幅９１５は、指の奥行き寸法（例えばカメラからの距離）を推定するために、指の解剖学的モデルの対応する幅と比較されてもよい。指先の幅９１３は、カメラから指先の距離に依存している。計測された指先の幅は、距離に反比例してマップされうる。例えば、大きな指先の幅は短距離にマップされる。そして、小さな指先の幅は遠い距離にマップされる。算出された距離は、指先位置座標の成分として含まれる。同様に、指の付け根の幅９１５は、指の付け根の距離にマップされて、指の付け根の位置座標に含まれる。指の方向は指の付け根の位置から指先位置まで形成されるベクトルとして算出され、そして、マップされた指先のカメラからの距離と、座標のカメラ成分から、マップされた指の付け根の距離とを含む上述のセグメント化プロセスは、計算効率が最適化されることができ、一般的な携帯デバイスのプロセッサ性能にとって適切でありうる。
【００８３】
セグメンテーション（６３０）の他の実施態様において、カメラ画像は、流域変形を使用して処理される。エッジ（例えば勾配の大きさ）データは、極小値を識別するために解析される。領域は、極小ごとに定められる。各領域は、値以下の大きさを有する連結された画素を含むために拡大される。このプロセスは、領域のセットが画像のすべての画素を含むために拡大されるまで、値を増やすことを繰り返す。領域は、より大きな領域を形成するために組合せられることが可能である。上記に類似する基準（例えば指が画像に入ると思われるカメラ画像の境界を有する大きさ、形状及び交点）に基づいて、指として領域が選択される。指の位置及び方向の情報は、上記と同様に、選択された領域から算出される。
【００８４】
流域変形のさまざまな実施態様を使用できる。選択された流域変形の実施態様は、デバイスの処理能力に依存しうる。例えば、流域変形のより少ない計算集約型の実施態様が、限られた処理能力を有するデバイスのために使用されうる。加えて、画像を得ることは、流域変形を処理する必要条件を減らすため、画像（上記の通り）をデシメーションすることを含むことができる。
【００８５】
他の方法を、カメラ画像の処理に使用してもよい。例えば、コンデンセーション（Ｃｏｎｄｅｎｓａｔｉｏｎ）又は条件付き密度伝播（Ｃｏｎｄｉｔｉｏｎａｌ  Ｄｅｎｓｉｔｙ  Ｐｒｏｐａｇａｔｉｏｎ）プロセスを用いてもよい。コンデンセーション又は条件付き密度伝播プロセスは反復性である。例えば、コンデンセーション・プロセスは、公知の指のセグメンテーション・データによって、初期化されることができる。その後、コンデンセーション・プロセスは、指が移動するにつれて、連続的なビデオ・フレーム又はカメラ画像において、指のセグメンテーションを予測する。コンデンセーション・プロセスをそれぞれ反復して、選択、予測及び測定を実行する。この選択は、因数分解されたサンプリングを使用する評価のための潜在的状態のセットを生じさせる。この予測は、動的モデル使って、オブジェクトの状態がどのように変わるかを評価する。測定は、予測された状態を実際の画素データと比較する。コンデンセーション・プロセスは、特に、雑然とした背景において、オブジェクトを追跡するときのロバストでもよく、携帯デバイスに役立つものであってよい。なぜなら、ビデオ・フレームごとに繰返しの数や各繰返しにおいて、標本抽出されたピクセル数が携帯デバイスのプロセッサ性能にしたがって調整されることができるためである。カールマンフィルタリングは、カメラ画像を処理する際に使用される他のプロセスであってよい。
【００８６】
指先の位置座標空間は、ユーザの指動作とディスプレイ１０３との間の直観的なマッピングを提供するためにディスプレイ１０３に対応して変換される。カメラがユーザに向いている実施態様において、変換は、鏡変換を含む。この実施態様において、カメラは裏面から指を見て、ユーザは前側から指と画面を見る。そうすると、座標系を鏡像変換させることで、カメラ視点の指をユーザ視点の指及び画像に対応させることができる。スキャンライン方向がある角度をなす実施態様において、図７Ｂに示すように、変換は、スキャンラインの角度の方向を、逆の角度に回転させることを含む。カメラ１０２の方向がディスプレイ１０３の方向と異なる実施態様において、変換は、方向の違いを修正する。
【００８７】
図１０Ａを参照する。画像領域１００１は、カメラ画像１００２の範囲内で定義される。数字５１０に関して上述したように、プロセッサは、画像領域１００１を定義でき、画像に基づいて指の位置及び／又は方向を検出する際の画像領域１００１を処理できる。
【００８８】
指先の位置座標空間の変換が回転を含む実施態様において、画像領域１００１は、カメラ画像１００２と関連して回転する。領域の境界を含む画像領域１００１の中で、指先位置１００７があらゆる位置に移動できるように、画像領域１００１は定義される。例えば、距離１００３、１００４、１００５、及び１００６により示されるように、カメラ画像１００２の境界からの最小距離は予想される指先の幅の半分である。この実施例は、指先位置１００７が画像領域１００１内のあらゆる位置に移動できる画像領域１００１という結果となる。なぜなら、指先位置が指先の中央にあり、指先位置と指先のエッジとの間の指先の部分は、指先の幅のほぼ半分であるためである。加えて、指の選択基準が満たされるように、カメラ画像１００２の境界から指の付け根の画像領域１００１までの距離１００６が選択される。
【００８９】
図１０Ｂは、指先位置１００８が画像領域１００１の外にあるように、位置決めされた指の例を示す図である。この例の場合には、指先位置１００８は、画像領域１００１の境界に最も近い位置１００９にマップされる。
【００９０】
図１１Ａは、画像領域１００１をディスプレイ１０３の部分である表示領域１１０１にマップする例を示す図である。数字５２０に関して上述したように、画像領域１００１を表示領域１１０１にマップすることを、検出された位置及び／又は方向を制御入力にマップする際に使用されうる。表示領域１１０１は、ディスプレイ１０３全体又はディスプレイ１０３の一部を含むことができる。例えば、表示領域１１０１は、ステータス・バーを除く、ディスプレイ１０３の有効領域を含むことができる。画像領域１００１と関連する指先位置１００７は、表示領域１１０１と関連してインジケータ位置１１０２にマップされる。
【００９１】
図１１Ｂは、インジケータ位置１１０２が指の位置に直接関連する例を示す図である。ディスプレイに平行な指の位置にとって、指の位置とインジケータ位置との間に１対１の相関が存在する。指２０１の動き１１０３は、インジケータ位置１１０２の類似の動き１１０４にマップされる。例えば、ユーザが第１の指先位置に指を置いた場合、第１のインジケータ位置はその位置になる。ユーザが指を第２の指先位置の方へ動かす場合、第２のインジケータ位置はその位置になる。この例の場合には、第１の指先位置に戻るようにユーザが指を動かす場合、インジケータも第１のインジケータ位置に戻る。ユーザは、これがジョイスティックより直観的であるとわかることができる。例えば、インジケータ位置が間接的な方法であるジョイスティックの状態に関連があるように、ジョイスティックは速度をインジケータ位置に適用する。
【００９２】
他の実施態様において、画像領域は３次元の領域であり、そして、指先位置はカメラから算出された距離を表現する成分を含む。例えば、カメラから算出された距離を表現している成分は、上述のように指の幅の測定値を使用して算出される。指先位置が定義されたボリューム内であらゆる位置に移動できるように、３次元の画像領域が定義される。
【００９３】
一つの実施例において、指先は、カメラの近くにあり、そして、カメラは、画像に平行な指先の動きを撮像する限られたレンジを備えている（例えば、小さい動きでも、指先がカメラの視界の外側に行くことがある）。この例の場合には、領域の境界は、カメラからの距離の範囲を含んで定義され、そこではカメラの視界は、カメラが閾値以下で指先を撮像する領域を制限しない。
【００９４】
３次元画像領域は、３次元の表示領域にマップされる。３次元の表示領域は、仮想ボリュームの部分であって、３次元のコンピュータ・グラフィックを描画する技術を使用するディスプレイ１０３に描画される。
【００９５】
いくつかの構成において、３次元画像領域と関連する指先位置は、３次元の仮想ボリュームと関連するインジケータ位置にマップされる。インジケータ位置は、指の位置に、直接関連性を有する。指の位置とインジケータの位置の間には、１対１の相関が存在する。指の動きは、仮想ボリュームの中でインジケータ位置の類似の動きにマップされる。例えば、ユーザが第１の指先位置に指を置いた場合、仮想ボリュームでの第１のインジケータ位置はその位置となる。ユーザが指を第２の指先位置の方へ動かす場合、仮想ボリュームでの第２のインジケータ位置はその位置となる。この例の場合に、ユーザが第１の指先位置に戻るように指を動かすと、インジケータも仮想ボリューム内で、第１のインジケータ位置に戻る。第２のインジケータ位置は、仮想ボリューム内の高さ、幅及び奥行き寸法で第１のインジケータ位置とは異なってもよい。
【００９６】
図１２は、ディスプレイ画面１０３に表示されるアプリケーションのユーザ・インタフェースの実施例を表す。表示領域１１０１は図示され、そして、カーソル画像１２０２は指先位置に対応するインジケータ位置１１０２の標識として示されている。表示画像はスクリーン上のオブジェクトを示す。そして、オブジェクトには、アイコン１２０３、スクロールバー１２０４、メニュー１２０５、及びパーソナル・コンピュータ、携帯デバイス又は他のタイプのあらゆる電子デバイスと類似する外観及び機能を有するボタン（図示せず）を含む。制御機能に基づく位置標識は、パーソナル・コンピュータ上のマウスカーソルに類似している。
【００９７】
ユーザは、インジケータ位置がスクリーン上のオブジェクトの範囲内にあるようにその指先を位置決めし、ボタン１０４又はキーパッド１０５のキーをクリックすることにより、スクリーン上のオブジェクトを起動させる。ユーザは、インジケータ位置がスクリーン上のオブジェクトの範囲内にあるように指先を位置決めして、ボタン１０４又はキーパッド１０５のキーを押圧した状態のまま、インジケータ位置が動くように指を動かし、ボタン１０４又はキーパッド１０５のキーを放して、スクリーン上のオブジェクトをドラッグする。
【００９８】
他の実施態様において、ユーザは、そのようにインジケータ位置がスクリーン上のオブジェクトの範囲内にあるようにその指先を位置決めして、ジェスチャを実行することによって、スクリーン上のオブジェクトを起動させる。ジェスチャはカメラに対してより近い指先を動かすことでもよい。ここで、距離は、所定の制限時間より少ない時間の期間にわたって所定の閾値より大きい分まで減少する。指先の距離は、上記のように指先の幅を使用して算出される。ジェスチャのスタート時のインジケータ位置は、入力と決定するために使用される。なぜなら、ユーザは、ジェスチャを行いながらインジケータ位置を変えることもあり得るからである。
【００９９】
ジェスチャを検出するプロセスの実施態様は、バッファで算出された指先の距離（あるいは、指先の大きさ／幅）を記憶することを含む。データは円形配列のデータ構造で記憶され、それによって、新規なデータサンプルは最も古いデータサンプルと入れ替わる。指先の距離（又は大きさ／幅）のデータサンプルは、現在の指先の距離（又は大きさ／幅）と比較され、そして、指先距離（又は大きさ／幅）のデータサンプルが、定義済み閾値の距離を上回る距離であることにより、現在の指先の距離（又は大きさ／幅）より近いかどうかを決定する。
【０１００】
他の実施態様において、上述の技術は、ユーザが表示されたリストをスクロールさせることに適用される。例えば、リストは、複数のレベルを含む。そのリストが連絡先（例えば住所や電話番号）のリストである実施態様において、第１のレベルがアルファベット文字のリストを含み、第２のレベルが文字で編成された名前のリストを含み、そして、第３のレベルは、連絡先の情報を含む。そのリストが曲（例えば音楽）のリストである実施態様において、第１のレベルはアーティストのリストを含み、第２のレベルはアルバム（例えばアーティストにより創作されるアルバム）のリストを含み、第３のレベルは曲（例えばアルバムに含まれる曲）のリストを含み、そして、第４のレベルは曲を含む。
【０１０１】
そのリストが時間及び日付（例えばカレンダ）のリストである実施態様において、第１のレベルは、月のリストを含み、第２のレベルは日（例えば１ヵ月以内の日）のリストを含み、第３のレベルは時間（例えば１日以内の時間）を含み、そして第４のレベルは時間単位の情報（例えばアポイントメント）を含む。そのリストが時間及び日付（例えばカレンダ）のリストである他の実施態様において、第１のレベルは週のリストを含み、第２のレベルは日（例えば１週以内の日）のリストを含み、第３のレベルは時間（例えば１日以内の時間）を含み、そして第４のレベルは時間毎の情報（例えばアポイントメント）を含む。
【０１０２】
画像領域１００１内の指先位置１００７の水平成分は、リストのレベルの選択を制御する。画像領域１００１は、レベルに対応する多くの列に分けられる。アプリケーションは、指先位置が置かれている列にしたがって、情報を表示するために構成される。ユーザは、指先を左や右に移動させることによって、レベル間を切り替える。デバイスは、ユーザに対し、レベルの変更についてアニメーションを表示したり、ユーザに音を聞かせたりすることができる。
【０１０３】
レベルの中では、アイテムのリストが表示され、そこでは、アイテム・インジケータが列に配置される。アイテム・インジケータは、テキスト及び／又はアイコンを含むことができる。画像領域１００１の中の指先位置１００７は、アイテム・インジケータが並んだ境界にマップされて、アイテム・インジケータが並んだ範囲内でアイテム・インジケータの位置と比較される。指先位置に対応する位置のアイテム・インジケータは、それが選択されることを示すための描画がされる。例えば、アイテム・インジケータは交互に色分け（例えばハイライト）されて描画されることができ、又は、アイテム・インジケータは、アイテム・インジケータが指先位置に対応するときに大きなサイズで描画されうる。他のアイテム・インジケータは、より大きいサイズとなる余地を形成するために移動できる。デバイスは、また、ユーザに対して選択の変更を示すために音を出すことができる。
【０１０４】
いくつかの実施態様において、カメラから指先の距離は、リストのレベルの選択を制御する。距離の定義済み範囲は、多くのレベルに分けられている。アプリケーションは、カメラから指先の距離に対応するレベルにしたがって情報を示す。ユーザは、指をカメラに近づけたり、又はカメラから離したりして指先を動かすことによって、レベル間を切り替える。デバイスは、ユーザにレベルの変化を示すため、アニメーションを表示したり音を出したりすることができる。３次元の画像領域は定義されており、３次元の画像領域の距離成分は層に分けられる。
【０１０５】
レベル内では、アイテム・インジケータが配置される所で、アイテムのリストが表示される。アイテム・インジケータは、列、行、格子又は行及び列、又は任意の装置に配置されうる。アイテム・インジケータは、テキスト又はアイコンを含むことができる。画像領域１００１内での指先位置１００７は、アイテム・インジケータが並んだ境界にマップされて、アイテム・インジケータが並ぶ範囲内でアイテム・インジケータの位置と比較される。指先位置に対応する位置でのアイテム・インジケータは、それが選択されたことを示すために描画される。例えば、アイテム・インジケータは交互に色分け（例えばハイライト）されて描画されることができ、又は、アイテム・インジケータは、アイテム・インジケータが指先位置に対応するときに、より大きいサイズで描画されることができる。他のアイテム・インジケータは、より大きいサイズとなる余地を形成するために移動させることができる。デバイスは、また、ユーザに選択の変化を示すために、音を出すことができる。
【０１０６】
いくつかのアレンジにおいて、ユーザは、ユーザの指の方向を変えることによって、レベルを変える。ユーザは、ディスプレイ１０３に平行にユーザの指を回転させることでレベルを変える。ユーザは、ディスプレイ１０３に指を平行に置いて、９時の方向を指すように指を向けることによって、第１のレベルを選択できる。ユーザは、それから、１２時の方向において、ある方向を指すために指を回転させて第２のレベルを選択することができ、それから、３時の方向において、ある方向を指すために指を回転させて、第３のレベルを選択できる。
【０１０７】
さらに、いくつかの実施例で、ユーザは、ディスプレイ１０３での方向について、ユーザの指の方向又は角度を変えることによって、レベルを変える。これらの実施例において、ユーザは、ディスプレイ１０３の方へユーザの指を回転させることによって、レベルを変える。ユーザは、ユーザの指の方向を維持して、維持されている方向からユーザの指の方向を変えることによって、特定のレベル内でアイテムを選択する。
【０１０８】
画像領域が行及び列に分かれている、又は３次元画像領域が行、列及びレイヤに分かれている実施態様において、指先を含む部分が拡張されるように、その境界は動的に調整されうる。指先を含む部分を拡張することは、行又は列を切り替えようと試みている間、ユーザが不注意にレイヤを切り替える可能性を減らすことができる。又は行を切り替えようと試みている間に列を不注意に切り替える可能性を減らすことができる。
【０１０９】
図１３Ａを参照して、ゲームは、ディスプレイ１０３に表示される。指２０１の動き１３０１は、ゲームの内の動き１３０２にマップされる。この実施態様において、記載されている技術は、ユーザがシューティングゲームを操作できるようにするのに適している。例えば、指先位置は、ターゲティング機能にマップされる。指で操作するシューティングゲームの実施態様において、画像領域と関連する指先位置は、表示領域と関連して目標位置にマップされる。
【０１１０】
図１３Ｂは、一人称の視点を含む、指で操作するシューティングゲームの例を示す図である。表示領域１１０１が図示されており、そして、ターゲティング画像１３０３（例えば十字線）は指先位置に対応するインジケータ位置１１０２の標識として示される。ターゲット画像１３０４も、表示され、ユーザは、ターゲット画像１３０４の上にターゲティング画像１３０３を置くために、指を動かすことができる。
【０１１１】
ユーザは、シューティング機能を起動させるために、ボタン１０４を押すか、又はキーパッド１０５のキーを押すことができる。他の実施態様において、ユーザは、シューティング機能を起動させるために、ジェスチャを実行できる。ジェスチャは、上記の通りに実行されることができ、また、検出されることができる。
【０１１２】
指で操作するシューティングゲームは、図１３Ｂで図示したように、一人称の視点で、例えば、描画できる。ユーザは、仮想環境の範囲内で視界を変えることが可能である。インジケータの位置１１０２を表示領域１１０１の左側にあるサブ領域１３０５内で移動させるようにユーザが指を動かす場合、視界は左側にスクロールする（又は回転する）。インジケータ位置１１０２を表示領域１１０１の右側にあるサブ領域１３０６内で移動させるようにユーザが指を動かす場合、視界は右側にスクロールする（又は回転する）。同様に、インジケータ位置１１０２を表示領域１１０１の上部にあるサブ領域（図示せず）内で移動させるようにユーザが指を動かす場合、ゲームは上方にスクロールする（又は回転する）。また、インジケータ位置１１０２を表示領域１１０１の下部にあるサブ領域（図示せず）内で移動させるようにユーザが指を動かす場合、ゲームは下側にスクロールする（又は回転する）。カメラから指先の距離が定義済みの閾値より近くなるようにユーザが指を動かす場合、ゲームは前方向に動く（又はズームインする）。カメラから指先の距離が、さらに定義済みの閾値より遠ざかるようにユーザが指を動かす場合、ゲームは後方向に動く（又はズームアウトする）。
【０１１３】
他の実施態様において、一人称の視点で指で操作するシューティングゲームで、ユーザは、ボタン１０４、キーパッド１０５上のキー、方向パッド又はジョイスティックを押圧して、仮想環境内で視界を変える。
【０１１４】
更なる実施態様において、指で操作するシューティングゲームで、指の位置は、仮想環境内で視界を制御する。この実施態様において、ターゲティング画像は、自動機能によって、静止した状態でもよく、制御された状態でもよい。一つの実施例において、速度は、画像領域（又は３次元画像領域）内の中心位置に関連する画像領域（又は３次元画像領域）内の指先位置の位置の違いとして算出される。他の例では、速度は画像領域（又は３次元画像領域）の中で中央に置かれたサブ領域の境界上で最も近い部分と関連する画像領域（又は３次元画像領域）内の指先位置の位置の違いとして算出される。ここで、サブ領域は「デッド・ゾーン」を示す。速度の水平成分は、仮想環境の範囲内で視点に適用される。そうすると、仮想環境の視界は水平に回転する（又はスクロールする）。速度の垂直成分は、仮想環境の範囲内で視点に適用される。そうすると、仮想環境の視界は垂直に回転する（又はスクロールする）。速度の距離成分は、仮想環境の範囲内で視点に適用される。そうすると、仮想視点の位置は、軌跡（又はズームした）に見えている現在の前方向への軌跡に沿って仮想環境で表現される。
【０１１５】
図１３Ｃは、３人称視点を含む指で操作するシューティングゲームの実施例を示す図である。この例の場合には、プレーヤ画像１３０７は、ディスプレイ１０３に描画される。武器画像１３０８は、武器の軌跡１３０９がインジケータ位置１１０２に揃えられるような方向で描画される。ユーザが指を動かすにつれて、武器画像１３０８と武器の軌跡１３０９は、インジケータ位置１１０２に追従する。いくつかの構成において、武器の軌跡１３０９は、ユーザの指の方向を変えると武器の軌跡１３０９が変わるように、ユーザがユーザの指で指す方向に対応する。
【０１１６】
他の実施態様において、３人称視点を有する指で操作するシューティングゲームにおいて、ユーザは、ボタン１０４、キーパッド１０５上のキー、方向パッド又はジョイスティックを押圧して、プレーヤ画像を動かす。指で操作するシューティングゲームは、様々な形態をとることができる。ターゲット画像１３０４とプレーヤ画像１３０７は、例えば、宇宙船、車両、兵士、エイリアン、モンスター、漫画キャラクタ、ハンター及び獲物などを表現できる。
【０１１７】
他の実施態様において、ユーザ入力技術は、画面を通じてスクロールすることや、ズームすることを提供する。画像は、写真、地図又は他のタイプのいかなる画像も含むことができる。地図は、縮尺が描画される詳細度を決定して地図は表示されうる。例えば、「ズームアウトされた」地図は都市の位置を示し、そして、「ズームインされた」地図は個々の市街を示す。
【０１１８】
画像をズームする（例えば、縮尺を変える）プロセスは、画像の縮尺や「ズーム」をコントロールするためにカメラから指の距離を使用する。指がデバイスの上方に保持されるシステムの実施態様において、図３Ａに示すように、カメラに近い距離は、大きな縮尺（すなわち、ズームイン）に対応する。その一方で、カメラから離れた距離は小さな縮尺（すなわち、ズームアウト）に対応する。
【０１１９】
指がデバイスの下方に保持されるシステムの実施態様において、図３Ｂに示すように、カメラに近い距離は、小さな縮尺（すなわち、ズームアウト）に対応でき、その一方で、カメラから遠い距離は大きな縮尺（すなわち、ズームイン）に対応できる。他方で、カメラに近い距離は、大きな縮尺（すなわち、ズームイン）に対応でき、その一方で、カメラから遠い距離は小さな縮尺（すなわち、ズームアウト）に対応できる。ユーザは好ましい構成を選択することができ、その好ましい構成はユーザのために適用されうる。
【０１２０】
画像の縮尺又は「ズーム」をコントロールするためにカメラから指の距離をマップする実施態様において、３次元画像領域の距離成分は、画像の大きさ（又は「ズーム」）範囲にマップされる。３次元画像領域と関連する指先位置の距離成分は、画像の大きさ（又は「ズーム」）範囲と関連して、画像の大きさ（又は「ズーム」）にマップされる。
【０１２１】
他の実施態様において、画像をスクロールするプロセスは、画像をスクロールする（又は「左右に振る」）指位置を使用して達成される。画像領域１００１内の指先位置は、ディスプレイ１０３に描画される画像の表示領域の位置にマップされる。指を動かすと、ディスプレイ１０３に描画される画像の表示領域が動く。それによって、画像をスクロールしたり、左右に振ったりする。
【０１２２】
更なる実施態様において、画像をスクロールしたりズームしたりするプロセスは、画像領域１００１を画像内の範囲にマップする。その範囲は、画像内のスクロール可能な範囲がズーム・レベルに依存している範囲である。例えば、ユーザは、画像全体をスクロールするために画面に平行に指を動かす。そして、画像の所望の部分が画面の中央に位置すると、ユーザは「ズームイン」するために画面に垂直な方向に指を動かす。一旦「ズームイン」すると、ユーザは、画像の一部をスクロールするために画面に平行に指を動かす。小さな縮尺（すなわち、ズームアウト）のためには、スクロール可能な範囲が画像全体を含むように定義され、その結果、画像のすべての部分は画像をスクロールすることにより示される。大きな縮尺（すなわち、ズームイン）のためには、スクロール可能な範囲が画像の一部を含むように定義される。その結果、画像のズームされた部分は正確にスクロールされることができる。スクロール可能な範囲は、縮尺と直線的に比例していてもよい。
【０１２３】
他の実施態様において、ユーザ入力技術は、仮想環境内のナビゲートに提供される。仮想環境は、ゲームの一部であってよく、上述のゲーム・タイプに限られないものも含む。アプリケーション又はゲームは、コンピュータ・グラフィック技術を使用しているディスプレイに仮想環境を描画する。
【０１２４】
仮想環境内のナビゲーションは、仮想３次元空間内で動かすことができ、また、システムは、仮想３次元空間内で、ナビゲーションをコントロールするためにユーザ入力を提供する。例えば、速度は、画像領域（又は３次元画像領域）内での中央位置に対する画像領域（又は３次元画像領域）内の指先位置での位置の違いとして算出される。他の例では、速度は、画像領域（又は３次元画像領域）内で中央に置かれたサブ領域の境界に最も近い部分と関連する画像領域（又は３次元画像領域）内での指先位置の位置の違いとして算出される。ここで、サブ領域は「デッド・ゾーン」を表現する。速度を算出した後に、速度の水平成分は仮想環境内の視点に適用される。そうすると、仮想環境の視点は、水平方向に回転する（又はスクロールする）。速度の垂直成分は、仮想環境内の視点に適用される。そうすると、仮想環境の視点は垂直方向に回転する（又はスクロールする）。速度の距離成分は仮想環境内での視点に適用される。そうすると、仮想視点の位置は、軌跡（又はズームした）に見えている現在の前方向への軌跡に沿って仮想環境で表現される。
【０１２５】
他の実施態様において、ユーザ入力技術は、ユーザは仮想オブジェクトを置いたり、回転させることができるように提供される。この実施態様において、アプリケーション又はゲームは、コンピュータ・グラフィック技術を使用している画面に、仮想オブジェクトを描画する。例えば、ユーザは、画面に平行に指を動かすことによって、仮想オブジェクトを回転させる。この例の場合には、画像領域１００１は、回転の範囲にマップされ、そして、画像領域内の指先位置は回転の範囲内の角度にマップされる。他の実施例において、ユーザは、ディスプレイに垂直な方向に指を動かすことによって、「ズームイン」や「ズームアウト」を行う。この例の場合には、カメラからの指先の距離は、仮想オブジェクトの縮尺にマップされる。
【０１２６】
指の位置及び方向を追跡する方法は、上述のゲーム以外のアプリケーションやゲームにおいて、用いられることが可能である。加えて、ユーザ入力を提供する上述の技術は、カメラ又は他の撮像デバイスを含むいかなるデバイスにおいても使うことができる。
【０１２７】
実施態様は、例えば、プロセス、デバイス、又はプロセスを実行するためのデバイスを含むことができる。例えば、実施態様は、一以上のプロセスを実行するように構成される一以上のデバイスを含むことができる。デバイスは、例えば、別体の又は一体化したハードウェア、ファームウェア及びソフトウェアを含むことができる。デバイスは、特にその一つ以上の上述のプロセス又はバリエーションを実行するプログラムがされたものであるときには、例えば、コンピューティング装置又は他のコンピュータ、又は処理デバイスを含むことができる。このようなコンピューティング又は処理デバイスは、例えば、プロセッサ、集積回路、プログラマブル・ロジック・デバイス、パーソナル・コンピュータ、パーソナル携帯情報機器、ゲーム・デバイス、携帯電話、計算機及びソフトウェアアプリケーションを含むデバイスを含むことができる。
【０１２８】
実施態様は、また、一つ以上のプロセスを実行するための命令を有する一つ以上のコンピュータ読み取り可能なメディアを含むデバイスで例示されることができる。コンピュータ読み取り可能なメディアは、例えば、記憶デバイス、メモリ、及び命令をコード化又は送信されたフォーマットされた電磁波を含むことができる。読み込み可能なメディアは、また、例えば、ハードディスク、フラッシュメモリ、ランダムアクセスメモリ、読取り専用メモリ及びコンパクト・ディスケットのような、様々な非揮発性又は揮発性の記憶構造を含むことができる。命令は、例えば、ハードウェア、ファームウェア、ソフトウェア、そして電磁波に記憶されることができる。
【０１２９】
このように、コンピューティング装置は、上述の実施態様を実行するようにプログラムされたコンピューティング装置の実施態様を表現できる。そして、記憶デバイスは、上述の実施態様を実行するための命令を記憶しているコンピュータ読み取り可能なメディアを表現できる。
【０１３０】
多くの実施態様が記載されている。にもかかわらず、さまざまな修正が可能であることが理解されよう。したがって、他の実施態様は、以下の請求項の範囲内に含まれる。
【図１】
0005453246.tif 000005
【図２】
0005453246.tif 000006
【図３Ａ】
0005453246.tif 000007
【図３Ｂ】
0005453246.tif 000008
【図４】
0005453246.tif 000009
【図５】
0005453246.tif 000010
【図６】
0005453246.tif 000011
【図７Ａ】
0005453246.tif 000012
【図７Ｂ】
0005453246.tif 000013
【図８Ａ】
0005453246.tif 000014
【図８Ｂ】
0005453246.tif 000015
【図９Ａ】
0005453246.tif 000016
【図９Ｂ】
0005453246.tif 000017
【図９Ｃ】
0005453246.tif 000018
【図９Ｄ】
0005453246.tif 000019
【図１０Ａ】
0005453246.tif 000020
【図１０Ｂ】
0005453246.tif 000021
【図１１Ａ】
0005453246.tif 000022
【図１１Ｂ】
0005453246.tif 000023
【図１２】
0005453246.tif 000024
【図１３Ａ】
0005453246.tif 000025
【図１３Ｂ】
0005453246.tif 000026
【図１３Ｃ】
0005453246.tif 000027