(57)【特許請求の範囲】
【請求項１】
人が腕を挿入して操作を行う空間を撮像した入力画像を取得する画像取得手段と、
前記入力画像のうち前記人の腕が被写体として写る領域から、前記人の手の指先に相当する指示点を検出する検出手段と、
前記入力画像のうち前記人の手が被写体として写る領域の、前記指先とは異なる位置に、前記人の腕の位置の基準となる基準点の位置を決定する基準決定手段と、
前記指先が、前記空間に含まれる所定の面に対してのタッチ状態が非タッチ状態に遷移した場合、同一期間に前記画像取得手段によって取得された複数の前記入力画像から、前記検出手段によって検出される前記指先に相当する位置の移動と、前記基準決定手段によって決定される前記基準点の位置の移動とを使って、所定のタッチ操作が入力されたかを判定する操作認識手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記所定の操作とは、フリックであって、
前記操作認識手段は、前記遷移の前の前記指先の移動スピードが所定のスピードより速く、かつ、
前記同一期間における前記検出手段が検出する前記指先に相当する位置の移動と、前記基準決定手段によって決定される前記基準点の位置の移動が類似しないとみなされる場合に、フリックが入力されたと判定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記所定の操作とは、タップであって、
前記操作認識手段は、前記遷移の前に前記指先が前記所定の面に対してタッチ状態にあった時間の長さと前記タッチ状態にある間の前記指先の移動距離が所定のタップ条件を満たし、かつ、
前記同一期間における前記検出手段が検出する前記指先に相当する位置の移動と、前記基準決定手段によって決定される前記基準点の位置の移動が類似するとみなされる場合に、タップが入力されたと判定する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記操作認識手段は、前記遷移の前に前記指先が前記所定の面に対してタッチ状態にあった時間の長さと前記タッチ状態にある間の前記指先の移動距離によって所定のタップ条件が満たされた場合に、
前記同一期間に取得された前記複数の前記入力画像から、前記検出手段によって検出される前記指先に相当する位置の移動と、前記基準決定手段によって決定される前記基準点の位置の移動とを使って、前記所定の操作として、タップが入力されたか、あるいはフリックが入力されたかを判定する
ことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記所定のタップ条件とは、少なくとも、前記遷移の前に前記指先が前記所定の面に対してタッチ状態にあった間の前記指先の移動距離が所定の距離の閾値より小さいという条件である
ことを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記所定のタップ条件とは、前記遷移の前に前記指先が前記所定の面に対してタッチ状態にあった時間の長さが所定の時間の閾値より短く、かつ、
前記遷移の前に前記指先が前記所定の面に対してタッチ状態にあった間の前記指先の移動距離が所定の距離の閾値より小さいという条件である
ことを特徴とする請求項３又は４に記載の情報処理装置。
【請求項７】
前記操作認識手段は、
前記同一期間における前記検出手段が検出する前記指先に相当する位置の移動と、前記基準決定手段によって決定される前記基準点の位置の移動が類似するとみなされる場合、タップが入力されたと判定し、
前記同一期間における前記検出手段が検出する前記指先に相当する位置の移動と、前記基準決定手段によって決定される前記基準点の位置の移動が類似しないとみなされる場合、フリックが入力されたと判定する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項８】
前記操作認識手段は、前記同一期間における前記検出手段が検出する前記指先に相当する位置の移動を表す第１ベクトルと、前記基準決定手段によって決定される前記基準点の位置の移動を表す第２ベクトルの類似度を使って、前記所定のタッチ操作が入力されたかを判定する
ことを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記第１ベクトル及び前記第２ベクトルは、少なくとも前記所定の面に平行な方向の成分を含むことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記第１ベクトル及び前記第２ベクトルは、前記所定の面に平行な方向の成分と、前記所定の面に垂直な方向の成分とを含むことを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
前記操作認識手段は、さらに、前記第１ベクトルの、前記所定の面に平行な方向の成分と、前記所定の面に垂直な方向の成分の大小関係に基づいて、前記所定の操作として、タップが入力されたか、あるいはフリックが入力されたかを判定する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１２】
前記操作認識手段は、前記第１ベクトルの、前記所定の面に平行な方向の成分が、前記所定の面に垂直な方向の成分よりも大きい場合、フリックが入力されたと判定する
ことを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記操作認識手段は、さらに、前記指先が前記所定の面に最も近づいてから前記非タッチ状態に遷移するまでの、前記指先の移動軌跡の形状に基づいて、前記所定の操作として、タップが入力されたか、あるいはフリックが入力されたかを判定する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１４】
前記操作認識手段は、前記指先が前記所定の面に最も近づいてから前記非タッチ状態に遷移するまでの、前記指先の移動軌跡の形状が、前記所定の面に近づく方向に凸を描く場合、フリックが入力されたと判定する
ことを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記基準決定手段は、前記入力画像のうち前記人の腕が被写体として写る領域の輪郭の情報を使って、前記人の甲の中心を前記基準点として決定する
ことを特徴とする請求項１乃至１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記操作認識手段は、前記所定の面と前記検出手段によって検出される指先の位置との間の距離が、所定の距離を上回ったことを、前記タッチ状態から前記非タッチ状態への遷移として検出する
ことを特徴とする請求項１乃至１５のいずれか１項に記載の情報処理装置。
【請求項１７】
前記入力画像は、上方から前記所定の面を見下ろす画角で設置された距離画像センサが撮像した距離画像である
ことを特徴とする請求項１乃至１６のいずれか１項に記載の情報処理装置。
【請求項１８】
画像取得手段により、人が腕を挿入して操作を行う空間を撮像した入力画像を取得する画像取得工程と、
検出手段により、前記取得された入力画像のうち前記人の腕が被写体として写る領域から、前記人の手の指先に相当する指示点を検出する検出工程と、
基準決定手段により、前記取得された入力画像のうち前記人の手が被写体として写る領域の、前記指先とは異なる位置に、前記人の手の位置を表す基準点の位置を決定する基準決定工程と、
前記指先が、前記空間に含まれる所定の面に対してのタッチ状態が非タッチ状態に遷移した場合、操作認識手段により、同一期間に取得された複数の前記入力画像から検出される前記指先に相当する位置の移動と前記基準点の位置の移動とを使って、所定のタッチ操作が入力されたかを判定する操作認識工程と、
有することを特徴とする情報処理装置の制御方法。
【請求項１９】
コンピュータを、
人が腕を挿入して操作を行う空間を撮像した入力画像を取得する画像取得手段と、
前記入力画像のうち前記人の腕が被写体として写る領域から、前記人の手の指先に相当する指示点を検出する検出手段と、
前記入力画像のうち前記人の手が被写体として写る領域の、前記指先とは異なる位置に、前記人の手の位置を表す基準点の位置を決定する基準決定手段と、
前記指先が、前記空間に含まれる所定の面に対してのタッチ状態が非タッチ状態に遷移した場合、同一期間に前記画像取得手段によって取得された複数の前記入力画像から、前記検出手段によって検出される前記指先に相当する位置の移動と、前記基準決定手段によって決定される前記基準点の位置の移動とを使って、所定のタッチ操作が入力されたかを判定する操作認識手段とを備える情報処理装置として機能させるプログラム。
【請求項２０】
請求項１９に記載されたプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認識対象とタッチ対象面の近接状態に基づいてタッチ操作を認識する技術に関する。
【背景技術】
【０００２】
近年、プロジェクタ表示を行うユーザーインターフェース（以下、ＵＩ）が開発されている。上述のＵＩでは、テーブルや壁、あるいは文書や物体にボタン等のタッチ操作可能なユーザーインターフェース部品（以下、ＵＩ部品）を投影し、ＵＩ部品をユーザがタッチ操作する。上述のＵＩは持ち運びが可能であり、かつ物理媒体と電子媒体を組み合わせたリッチなインタラクションが可能になるといった利点がある。このような場面においては、ステレオカメラや距離画像センサ等で撮像する距離画像を用い、対象面と、操作に用いられる所定の物体の一部（例えばユーザの手のうち指先）との間の距離を取得し、その大きさに基づいて両者の接触を検出することが多い。具体的には、対象面と、ユーザの指先との間の距離に所定の閾値を設ける。そして、当該距離が閾値より小さければ、対象面がタッチされている状態を示す「タッチ状態」、閾値より大きければ対象面がタッチされていない状態を示す「非タッチ状態」であるという判定を行う。なお、上記２種類の判定には異なる閾値が利用されてもよい。物体を動かしてタッチ状態から非タッチ状態に遷移させる動作のことを、リリースといい、非タッチ状態はリリース状態と言われることもある。
【０００３】
ステレオカメラや距離画像センサ等を用いるタッチ操作の認識においても、タッチパネルを用いる認識と同様に、タッチからリリースに至るまでの時間やその間の指示点の軌跡に基づき、タップやフリックといったタッチ操作の指示内容を認識することが多い。なおタップとは、１点をタッチして、移動させることなくすぐにリリースする操作である。またフリックは、対象面上を払う（あるいは弾く）ように高速に移動させながらリリースする操作である。またピンチとは、２点を指示した状態で指示点間の距離を拡大あるいは縮小させる操作である。多種のタッチ操作を認識可能とするためには、それらを精度よく区別して認識することが必要となる。
【０００４】
特許文献１は、タッチパネルから指等の物体がリリースされるときのスピードが設定された閾値より速い場合に、フリックを認識することが開示される。特許文献２では、２本指によるフリックとピンチ操作を区別するために、タッチパネルに接触している間の２点の間隔の変化だけでなく、２点の移動方向を成分に分けて比較することが開示される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１２８８３０号公報
【特許文献２】特開２０１４−１３０３８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
距離画像を使ってタッチ対象面に対する距離の大きさでタッチ／非タッチの認識を行うシステムの場合、閾値によっては、実際には物体がタッチ対象面に接触していなくても、ある程度近接している間はタッチ状態が検出される。従って、ユーザが触覚や視覚を使って認知した情報に従い「指を、タッチ対象面から離してから動かした」つもりであっても、システムは「タッチ状態の間に、指が動かされた」と認識する場合がある。また、距離画像から距離や位置情報を取得する処理においては、誤差が発生することもある。誤差の大きさや発生するタイミングによっては、ユーザの意図に反して、タッチ状態と非タッチ状態間の遷移が検出される。これらの要因によれば、ユーザはタップを入力しただけのつもりであっても、装置にはフリックとして認識されるなど、ユーザから見れば装置の誤動作と捉えられ兼ねない状況が発生し得る。特に、タップやフリックのように非タッチ状態に遷移した後で操作種別が確定する操作は、非タッチ状態に遷移した後の移動とタッチ中の移動と認識されてしまうことで、混同されやすい。特許文献１及び２では、直接的にタッチ対象面と物体の接触を検知するセンサ機能を有さないシステムで生じやすい、このような課題について、何ら考慮されていない。
【０００７】
本発明は上記課題を鑑みたものであり、物体と対象面の近接状態に基づいてタッチ操作を認識する場合でも、タッチ状態から非タッチ状態への状態遷移後に操作種別が確定する操作の認識精度を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記課題を解決するため、人が腕を挿入して操作を行う空間を撮像した入力画像を取得する画像取得手段と、前記入力画像のうち前記人の腕が被写体として写る領域から、前記人の手の指先に相当する指示点を検出する検出手段と、前記入力画像のうち前記人の手が被写体として写る領域の、前記指先とは異なる位置に、前記人の腕の位置の基準となる基準点の位置を決定する基準決定手段と、前記指先が、前記空間に含まれる所定の面に対してのタッチ状態が非タッチ状態に遷移した場合、同一期間に前記画像取得手段によって取得された複数の前記入力画像から、前記検出手段によって検出される前記指先に相当する位置の移動と、前記基準決定手段によって決定される前記基準点の位置の移動とを使って、所定のタッチ操作が入力されたかを判定する操作認識手段と、を備える。
【発明の効果】
【０００９】
本発明によれば、物体と対象面の近接状態に基づいてタッチ操作を認識する場合でも、タッチ状態から非タッチ状態への状態遷移後に操作種別が確定する操作の認識精度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置を利用したテーブルトップシステムの外観と構成の一例を示す図
【図２】タッチ認識処理の流れの一例を示すフローチャート
【図３】リリース後に確定する操作の認識処理の流れの一例を示すフローチャート
【図４】タップ仮認識処理及びフリック仮認識処理の一例を示すフローチャート
【図５】第１の実施形態におけるタップｏｒフリック選択処理の一例を示すフローチャート
【図６】フリックあるいはタップが入力されるときのユーザの腕と指の状態の具体例を示す図
【図７】タップとフリックが入力される場合の指先の軌跡と第１ベクトルの大きさを示す図
【図８】タップとフリックが入力される場合に観測される離散的な指先軌跡と軌跡がなす角度を示す図
【図９】変形例におけるタップｏｒフリック選択処理の一例を示すフローチャート
【図１０】入力に対するタッチ認識処理の各ステップでの判定結果と最終的な認識結果を示した図
【図１１】第１の実施形態及び変形例におけるアプリケーションの一例を示す図
【発明を実施するための形態】
【００１１】
以下に、図面を参照して本発明の実施形態を詳細に説明する。なお、以下で説明する実施形態は、本発明を具体的に実施した場合の一例を示すものであり、これに限るものではない。
【００１２】
＜第１の実施形態＞
タッチ状態から非タッチ状態への状態遷移後に操作種別が確定する操作のうち、タップとは、一般的にはタッチ入力の対象面となる所定の面上の１点を指定するために入力されることが多い操作種別である。多くの場合、タップを認識するために満たされるべき条件（以下、タップ条件）は、物体が対象面に対してタッチ状態になってから、対象面に沿う方向の移動をしないまま、リリースされることである。さらにタップ条件には、タッチからリリースまでが、極短い時間の間に検出されることが加わることもある。この場合、時間に関する条件を満たすために、タップを行うための指先の動きのスピードは比較的速いものになることが想定される。一方、タッチ状態から非タッチ状態への状態遷移後に操作種別が確定する操作のうち、フリックとは、一般的には、対象面に沿ったある方向を指定するために入力されることが多い操作種別である。さらにフリックでは、リリース直前の指先の移動スピードに基づくフリックスピードが指定される場合がある。多くの場合、フリックを認識するために満たされるべき条件（以下、フリック条件）は、物体と対象面がタッチ状態から非タッチ状態に遷移する直前に、物体が、所定のスピードを越えるスピードで、物体が対象面に沿う方向に移動することである。なおフリック条件には、物体と対象面がタッチ状態である間の指先の移動に関する条件は含まれないことも多い。つまり、フリックは、タップのように対象面に沿う方向の移動をしない状態で入力されることもあれば、指先がタッチ状態において対象面に沿う方向にある程度移動した後で入力されることもある。
【００１３】
図１１は、フリックとタップを利用するアプリケーションの一例を表す。図１１（Ａ）は、フリックでサムネイルをスライドする様子を示している。このアプリケーションでは、複数のサムネイルが表示されている表示面がタッチ対象面となり、１つサムネイルが表示されている範囲内をタップで指定することで、そのサムネイルを選択することができる。また、サムネタッチ状態を維持したまま指先を対象面に沿って動かすムーブという種類のタッチ操作によって、また、１つサムネイル列状でフリックをすることで、所定位置に表示させるサムネイルを１つずつ進めることができる。なお図１１（Ａ）において、実線で輪郭が描かれた腕は、ユーザの腕の最新の位置を、点線で輪郭が描かれた腕は、移動前に遡った過去（１フレーム前）におけるユーザの腕の位置を表す。
【００１４】
図１１（Ａ）の場合、初期状態では、対象面にサムネイル１、２、３が表示されている。そして、ムーブによりサムネイルが途中までスライドし、続いてフリックが入力されたことによって、初期状態から１つずつサムネイルの表示位置が進んだことで、フリック後にはサムネイル２、３、４の２つが表示されている。図１１（Ａ）では、フリックが行われるとき、腕自体はほとんど動かず、人差指だけが素早く動かされている。このように、タッチ操作で移動させる対象（サムネイル）が小さかったり、対象を移動させたい距離が短かったりするような場合にフリックが入力される場合の傾向として、このように、腕よりも指を多く動かすような動きがなされること多い。
【００１５】
ユーザがタップやフリックを行う状況は、多岐に渡る。例えば、タップの場合、指定したい点の真上からほぼ垂直にタッチ対象面上に下ろし、そのまま垂直に上げる方法もあるが、一方で、手を連続的に動かしている途中でタップを行うことも考えられる。後者のような状況では、リリースの直後の指先の移動が、タッチ対象面に平行な方向の成分を有する。ここで、タッチ状態から非タッチ状態への遷移が検出されるのが、ユーザが認識しているタイミングより遅れていれば、システムは、非タッチ状態に遷移する前に指先がタッチ対象面に沿う方向に移動をしたと認識することになる。その移動スピードがフリック条件を満たす場合、ユーザがタップを意図していたにも関わらず、フリックの入力が認識されてしまうことになる。図１１（Ａ）に示したように、フリックが入力される場合は、指先タッチ対象面に沿う方向へ移動する移動距離に比較すると、腕自体の同じ方向への移動は鈍いあるいは移動しない場合もある。一方、タップが入力される場合、タップ条件でタッチからリリースまでの間に対象面に沿う方向への移動がないことが求められる。従って、ユーザが意識的に指をスライドさせないようにするため、タップ前後に腕自体の動きがあったとしても、指先は腕に対してあまり動かないという傾向がある。そこで本実施形態では、タッチ状態から非タッチ状態への状態遷移後に操作種別が確定する操作として、タップとフリックを例に挙げ、これらの認識精度を向上させるため、リリース前後の指先の移動に加えて、腕の移動に関して検知する情報を利用する。具体的には、腕自体の移動距離を取得するために、ユーザの手のうち指以外の部分に基準点を定め、フリックあるいはタップが入力されたか判定する際に、リリースが検出される前の同一期間での指先に移動と基準点の移動の関係を利用する。ただし、タップとフリックは一例である。本実施形態は、非タッチ状態に遷移した後で操作種別が確定する操作を区別する認識する場合に適用可能である。
【００１６】
図１（Ａ）は、本実施形態で説明する情報処理装置１００を設置したテーブルトップインタフェースシステムの外観の一例を示している。情報処理装置１００は、プロジェクタの投影光照射部１０５から投影光を照射することにより、テーブル上や壁面など、任意の平面を対象面として設定できる。図１に示すテーブルトップインタフェースシステムの場合は、情報処理装置１００をタッチ対象面１０１となるテーブル上に設置し、テーブル面上に表示画像を投影する。ここで円形画像２は、プロジェクタによってテーブル面上に投影されたＵＩ部品である。以下では、プロジェクタによってテーブル面上に投影されるＵＩ部品や写真のサムネイルなどの各種画像を総称して表示アイテムという。
【００１７】
また、受光部１０６は、赤外パターン投影方式の距離画像センサが得る距離画像の視点を示す。本実施形態では、受光部１０６は、対象面に対して上方から見下ろす画角で撮像する位置に設置される。従って、距離画像センサ１１５によって得られた距離画像の各画素には、受光部１０６から被写体までの距離が反映される。なお、距離画像の取得方法は、一例として環境光やテーブル面の表示の影響が小さい赤外パターン投影方式を基に説明するが、用途に応じて視差方式や赤外光反射時間方式（Ｔｉｍｅ−ｏｆ−Ｆｌｉｇｈｔ方式）などを利用することも可能である。ここで操作領域１０４のうち、プロジェクタによる投影が可能な範囲と、距離画像センサ１１５の視野範囲は一致しているものとし、以下では、当該範囲を操作領域１０４という。
【００１８】
本実施形態では、ユーザが腕１０３を使って、テーブルトップシステムに対して、タッチ操作や空間ジェスチャ操作を入力する。タッチ操作が入力されるタッチ対象面１０１は、操作領域１０４が定義されたテーブル面上となる。距離画像センサ１１５は、テーブル面を含む空間を画角に収めるように設置され、ユーザは腕１０３をこの空間に挿入した状態で操作を行う。ただし、本実施形態は、タッチ対象面１０１がテーブル面（鉛直上に向けられた面）である場合だけでなく、例えば壁面や平面でない物体の表面であったり、仮想的な面であったりする場合にも適用可能である。タッチ操作や空間ジェスチャ操作では、例えば、タッチ対象面１０１に投影された表示アイテムを操作対象として動かすことなどが可能となる。なお、本実施形態では、図１に示されるように操作領域１０４に対して平行な二次元平面にｘ軸とｙ軸、操作領域１０４に直交する高さ方向にｚ軸を設定し三次元位置情報を座標値として扱う。従って、本実施形態において、タッチ対象面に沿う方向、あるいはタッチ対象面に平行な方向というとき、それはｘｙ平面上で定義される方向を言う。ただし、対象面が平面でない場合やユーザと対象面との位置関係によっては、座標軸は必ずしも対象面に平行あるいは直交の関係でなくてもよい。その場合も、ｚ軸は認識対象と対象面との近接関係（両者の間の距離の大きさの程度）を検出する方向に設定され、ｚ軸と交わる方向にｘ軸とｙ軸とが設定される。
【００１９】
なお以下では、ユーザがタッチ操作の入力に用いる操作体として、ユーザ自身の腕１０３を使う場合を例に挙げて説明する。ただし、本実施形態は、指の代わりに手で握ったスタイラスでタッチ操作が入力される場合や、人体ではなくロボットアームを使う場合など、操作体のうちタッチ入力に使用される部分（突起部）が、操作体自体とは独立して可動するような場合に適用可能である。
【００２０】
図１（Ｂ）は、本実施形態における情報処理装置１００のハードウェア構成の一例を示すブロック図である。同図において、ＣＰＵ１１０は、バス１１３を介して接続する各デバイスを統括的に制御する。オペレーティングシステム（ＯＳ）をはじめ、後述するフローチャートに示されるような本発明に係る各処理プログラム、デバイスドライバ等はＲＯＭ１１２に記憶されており、ＲＡＭ１１１に一時記憶され、ＣＰＵ１１０によって適宜実行される。ＲＡＭ１１１は、高速にアクセス可能なＣＰＵ１１０の主メモリ、ワークエリア等の一時記憶領域として用いられる。ここでＯＳおよび各処理プログラム等は外部の記憶装置１１６に記憶されていてもよく、その場合は電源投入時に必要な情報がＲＡＭ１１１に適宜読み込まれる。また、ディスプレイＩ／Ｆ１１４は、情報処理装置１００内部で生成される表示アイテム（表示画像）をプロジェクタ１１８が処理可能な信号に変換する。入出力Ｉ／Ｆ１１４は、距離画像センサ１１５から距離情報を取得し、情報処理装置１００が処理可能な情報に変換するとともに、記憶装置１１６と情報処理装置１００間で相互にデータの変換を行う。
【００２１】
本実施形態では、情報処理装置１００で投影するデジタルデータは記憶装置１１６に格納されているものとする。記憶装置１１６としては、ディスクデバイスやフラッシュメモリ、ネットワークやＵＳＢなどの各種の入出力Ｉ／Ｆ１１４を介して接続される記憶装置１１６を使用する。本実施形態において、距離画像センサ１１５は、操作領域１０４上の情報を取得するために用いられる撮像部である。距離画像センサ１１５によって取得された画像は入力画像としてＲＡＭ１１１で一時保存され、ＣＰＵ１１０によって適宜処理され、破棄されるが、適宜必要なデータは記憶装置１１６に蓄積しても構わない。
【００２２】
図１（Ｃ）は、本実施形態における情報処理装置１００の機能構成の一例を示すブロック図である。情報処理装置１００は、画像取得部１２０、操作体取得部１２１、指示点検出部１２２、基準決定部１２３、操作認識部１２４、出力制御部１２５を含んで構成される。これらの各機能部は、ＣＰＵ１１０が、ＲＯＭ１１２に格納されたプログラムをＲＡＭ１１１に展開し、後述する各フローチャートに従った処理を実行することで実現されている。また例えば、ＣＰＵ１１０を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すればよい。画像取得部１２０は、情報処理装置１００のユーザが、自らの腕を挿入して操作を行うタッチ対象面１０１上の空間を、距離画像センサ１１５が撮像したことで得られた画像を、入力画像として取得する。本実施形態における入力画像は、各ピクセルの画素値に距離画像センサ１１５から被写体までの距離が反映された距離画像である。操作体取得部１２１は、画像取得部１２０が取得した入力画像のうち、操作体であるユーザの腕が被写体として写る腕領域を抽出する。本実施形態では、抽出された腕領域を、操作体として追跡していく。指示点検出部１２２は、操作体取得部１２１が抽出した腕領域から、ユーザの手のうち指先に相当する位置を、指示点として検出する。なお、指の代わりにスタイラスなどが用いられている場合、その先端が指先に相当するものとして指示点として検出される。本実施形態では、入力画像の多数のピクセルのうち、１点の座標が指示点の位置として検出されるとする。基準決定部１２３は、腕領域の中で、指示点検出部１２２が検出する指先とは異なる位置に、操作体である腕の位置の基準として扱われる基準点を決定する。例えば、手の甲の中心や手首の中心に相当する１点の座標を求める。操作認識部１２４は、指示点検出部１２２が検出する指示点の位置やその移動に関する方向やスピードなどが辞書に所定の条件を満たすかに基づいて、情報処理装置１００に入力される所定のタッチ操作を認識する。その際、指先が、タッチ対象面に対してタッチ状態から非タッチ状態に遷移した場合、それまでの所定の期間における指示点の移動と、同じ期間での基準点の移動とを使って、リリース後に入力の有無が確定する所定のタッチ操作が入力されたかを判定する。出力制御部１２５は、操作認識部１２４によって認識された操作に対応する各種出力を制御する。例えば、タッチ対象面１０１に投影させるための画像を生成してプロジェクタ１１８に対して出力する。各機能部は、ＲＡＭ１１１、ＲＯＭ１１２あるいは、記憶装置１１６を処理中のデータや情報を保持する保持部として利用する。
【００２３】
この他、手ぶり等の空間ジェスチャ動作を認識するジェスチャ認識部など、情報処理装置１００の使用目的やアプリケーションに応じた機能部を構成することができる。
【００２４】
次に、図２に示すタッチ認識処理のフローチャートを用いて、情報処理装置１００が行うタッチ認識処理を詳細に説明する。本実施形態では、距離画像センサ１１５によって撮影された距離画像が情報処理装置１００に入力されたことに応じて図２のフローチャートの処理が開始される。また本実施形態では、図２のフローチャートの処理が、距離画像センサ１１５から距離画像が入力される毎に繰り返される。従って処理が繰り返される周期は、距離画像センサ１１５の撮像映像のフレームレートに一致する。
【００２５】
ステップＳ１００において、画像取得部１２０は距離画像センサ１１５によって撮像された距離画像を、入力画像として一定時間毎に取得し、ＲＡＭ１１１に随時保持する。距離画像センサ１１５によって撮像された距離画像の画素値は距離画像センサ１１５までの距離を表している。
【００２６】
ステップＳ１０１において、操作体取得部１２１は、画像取得部１２０によって取得された距離画像から操作体である人の腕が写る領域（腕領域）を抽出する。そして、抽出した腕領域の輪郭を示す位置情報を取得し、ＲＡＭ１１１にその情報を保持する。ここで人の腕とは、人の肩から指先にかけての部位の全てを指し、撮像画像のうち、人の腕に該当する部分が一部写る領域が、腕領域である。また本実施形態において手とは、腕のうち、手首から先の全てを差す。手には、５指、掌、甲といった部位が含まれる。操作体取得部１２１の実際の処理としては、取得した距離画像の各画素が示すｚ方向の座標値に対して閾値処理を行うことで、テーブルよりも高さが高い座標値を持ち、かつ画像端と接触する領域を、腕領域として抽出する。ただし、腕領域の抽出方法はこれに限られず、例えば別途撮像された操作領域１０４のＲＧＢ画像における肌色領域に対応する部分を抽出する等してもよい。また、本実施形態の操作体取得部１２１は、腕領域が抽出された入力画像に微分フィルタを適用することに基づいて、輪郭線の座標を取得する。さらに、操作体取得部１２１は腕領域と画像端が接触するピクセルの平均位置（以下、侵入位置）を取得し、これをＲＡＭ１１１に保持する。
【００２７】
ステップＳ１０２において、基準決定部１２３は、操作体取得部１２１によって取得された腕領域のうち、指先ではない位置に、基準点を決定する。基準点は、腕自体の位置を表す座標を得るために決定するものである。本実施形態では、腕領域のうち、手の甲部分の中心に相当する点を特定し、その位置を基準点と決定する。手の甲の中心を特定する方法としては、例えば、腕領域内の各ピクセルについて、侵入位置として取得したピクセルからの距離と腕領域の輪郭線までの最短距離の積を求め、それが最大となるピクセルの位置を算出する。ただしこの方法は一例であり、別の方法を用いてもよい。基準決定部１２３は基準点の三次元位置を取得し、ＲＡＭ１１１にその情報を保持する。距離画像における基準点のピクセルは、距離画像センサ１１５から見た、手の甲の中心の表面部分までの距離を表している。なお、図１（Ａ）のテーブルトップインタフェースシステムでは、上方から入力画像を撮像するため、基準点は「手の甲部分の中心」と表現しているが、撮像系の設定の仕方によっては、同じ位置を「掌の中心」と表現する方が自然な場合もある。例えば、透明度を有するタッチ対象面を、下方から撮像した入力画像を得る構成の場合は、距離画像に撮像されるのは腕の掌側の表面になる。このように手の部位の呼称は適宜選択されればよい。
【００２８】
本実施形態では、距離画像中での、基準点として決定されたピクセルの位置及び画素値に、キャリブレーションパラメータを反映させた計算処理により、図１（Ａ）に示されている（ｘ、ｙ、ｚ）座標に変換する。そして変換結果を、腕全体としての位置を表す基準点の３次元位置情報として取得する。なお、本実施形態では腕領域の基準点として手の甲の中心を求める例を説明したが、基準点は、腕全体の位置を得るための基準として扱える位置情報であれば、甲の中心に限られない。例えば手首の中心を求めてもよい。
【００２９】
ステップＳ１０３において、指示点検出部１２２は、操作体取得部１２１によって取得された腕領域から、操作体が示す位置を表す指示点として、指先に相当するピクセルを特定する。例えば、腕領域の中で侵入位置からのユークリッド距離が最大となる点を指先として検出する。ただしこの検出方法は一例であり、別の方法を用いてもよい。さらに指示点検出部１２２は、ステップＳ１０２と同様の方法で、指先に相当するピクセルの、画像上の位置と画素値とから、指先の三次元位置情報を取得し、ＲＡＭ１１１にその座標情報を保持する。ここで、指先のｚ座標は、対象面と指先との間の距離を表している。言い換えれば、指先に相当するピクセルのｚ座標は、対象面１０１からの、指先の高さを表す。以後、ステップＳ１０３で取得される指示点のｚ座標を、指先高さと呼ぶ。本実施形態では指先高さの尺度として三次元空間上のユークリッド距離（ｍｍ）を用いるが、別の距離尺度を用いてもよい。
【００３０】
ステップＳ１０４からステップＳ１０６において、操作認識部１２４は指先がタッチ状態か非タッチ状態かを判定する。なお、情報処理装置１００の初期状態は非タッチ状態である。まず、ステップＳ１０４において、操作認識部１２４は、取得されている指先高さが、所定のタッチ閾値以下か判定する。タッチ閾値は、ユーザの指先がタッチ対象面にタッチしているとみなすことができるタッチ状態を検出するための所定の高さの値である。本実施形態では、距離画像センサ１１５の検出誤差や、画素値に基づいてｚ座標を算出する計算に生じる誤差を考慮した上で、適切な値が事前に設定されている。例えば、情報処理装置１００の設計時、あるいは設置時など、アプリケーションに対する操作が開始されるより前に設定されるとする。指先高さが所定のタッチ閾値以下の場合（ステップＳ１０４でＹＥＳ）、ステップＳ１０７に進む。指先高さが所定のタッチ閾値以下ではない場合（ステップＳ１０４でＮＯ）、ステップＳ１０５に進む。
【００３１】
ステップＳ１０５において、操作認識部１２４は、取得されている指先高さが、所定のリリース閾値以下か判定する。リリース閾値は、ユーザの指先がタッチ入力を終えたとみなすことができる非タッチ状態を検出するための所定の高さの値である。本実施形態では、リリース閾値もタッチ閾値と同様に、距離画像センサ１１５の検出誤差や、画素値に基づいてｚ座標を算出する計算に生じる誤差を考慮した上で、適切な値が事前に設定されている。指先高さが所定のリリース閾値以下の場合（ステップＳ１０５でＹＥＳ）、ステップＳ１０６に進む。指先高さが所定のリリース閾値以下ではない場合（ステップＳ１０５でＮＯ）、ステップＳ１１３に進む。なお、ステップＳ１０４及びステップＳ１０５の閾値処理において、指先高さが各閾値と一致する場合をいずれの判定結果にするかは閾値の定め方と同様、システムの構成や環境に合わせて適宜選択されればよい。本実施形態では、少なくとも、指先高さがタッチ閾値より小さい場合をタッチ状態、指先高さがリリース閾値より大きい場合を非タッチ状態として定義し、指先高さがリリース閾値を上回ったことに応じて、タッチ状態から非タッチ状態への遷移を検出する。
【００３２】
ステップＳ１０６において、操作認識部１２４は、指先が前フレームまでの処理の結果として、既にタッチ状態に遷移しているかを判定する。本実施形態では、後述するステップＳ１０７あるいはステップＳ１１３で、最後に遷移した状態を示す情報がＲＡＭ１１１に保持される。操作認識部１２４は、ＲＡＭ１１１を参照することで、ステップＳ１０６の判定を行う。既にタッチ状態である場合（ステップＳ１０６でＹＥＳ）、ステップＳ１０８へ進む。タッチ状態ではない場合（ステップＳ１０６でＮＯ）、現フレームの入力画像を対象とした図２のフローチャートの処理を終了する。本実施形態では、タッチ状態ではない場合とは、非タッチ状態である場合に相当する。情報処理装置１００が起動された直後など、タッチ状態への遷移が検出されておらず、ＲＡＭ１１１に状態遷移の結果が保持されていない場合、ステップＳ１０６の判定結果は常にＮＯとなる。従って、ステップＳ１０６でＮＯの判定がなされる場合とは、非タッチ状態への遷移がなされている後であるか、あるいは、未だタッチ入力が行われていない初期状態である場合であるため、この時点ではタッチ操作の認識を行う必要が生じていないと言える。
【００３３】
ステップＳ１０７からステップＳ１１２までの処理は、指先がタッチ対象面に対するタッチ状態にある場合に行われる処理である。ステップＳ１０７で、操作認識部１２４は、指先の状態を、タッチ状態に遷移させ、ＲＡＭ１１１にそれを示す情報を保持する。ステップＳ１０８で、操作認識部１２４は現在時刻をタッチ時刻としてＲＡＭ１１１に保持する。本実施形態では、タッチ開始時刻は、次に非タッチ状態への遷移が検出されるまでの各フレームで取得され、ＲＡＭ１１１に蓄積される。ステップＳ１０９で、操作認識部１２４は、現フレームで決定された基準点の位置を表す座標情報を、最新の基準点の位置としてＲＡＭ１１１に保持する。そして、現フレームから検出された指先（指示点）の位置を表す座標情報を、最新の指示点としてＲＡＭ１１１に保持する。タッチ位置は、次に非タッチ状態への遷移が検出されるまでの各フレームで取得され、ＲＡＭ１１１に蓄積される
ステップＳ１１０からステップＳ１１２において、操作認識部１２４はムーブを認識する。ムーブは、タッチ状態のまま指先をタッチ対象面に沿って移動させるのに従い、表示アイテムを移動させる指示の入力等に用いられる。ムーブは、ドラッグと呼ばれることもある。ステップＳ１１０では、操作認識部１２４は、タッチ状態での指示点の移動距離を取得する。ここで取得する移動距離とは、タッチ対象面に平行な方向、すなわちｘｙ平面上での移動距離である。本実施形態では、操作認識部１２４は、ＲＡＭ１１１に保持されている指示点の位置情報を参照して、前フレームと現フレームでの指示点の位置のｘ座標及びｙ座標から、２点間の距離を取得する。取得された距離が、フレーム間での指示点の移動距離である。
【００３４】
ステップＳ１１１では、操作認識部１２４が、取得した移動距離が所定のムーブ閾値以上かを判定する。取得した移動距離が所定のムーブ閾値以上であれば（ステップＳ１１１でＹＥＳ）、ステップＳ１１２に進む。取得した移動距離が所定のムーブ閾値以上でなければ（ステップＳ１１１でＮＯ）、現フレームを対象とする図２のフローチャートの処理を終了する。ムーブ閾値は、指示点の位置の検出誤差を考慮した上で、ユーザが意図的に指先を移動したとみなせるだけの距離が予め設定される。ムーブ閾値は、タップ条件に含まれる距離の閾値と同一であってもよく、タップ閾値より大きい距離としてもよいが、少なくとも、ムーブが一度でも認識された場合は、タップ条件は満たされないように設定される必要がある。ムーブとタップは排他的な関係にある操作種別だからである。なお、本実施形態において、ステップＳ１１０で取得する距離を、ｘｙ平面上での距離とするのは、ムーブ自体がタッチ状態のままタッチ対象面上に指を沿わせる操作であり、ｚ方向の移動量が操作としての意味を持たないからである。タッチ閾値が十分小さく設定できる環境では、ムーブが行われたときにフレーム間でｚ座標に生じる差分は、微小となるため、移動距離の計算にｚ座標を考慮しても判定結果に影響することは少ない。しかしながら、通常、タッチ閾値は高さの検出誤差を吸収するだけの大きさをもつように設定される。従って、本実施形態では、ムーブの有無の判定に、ｚ軸方向の移動の影響が反映されないように、移動距離を算出する方向を限定する。
【００３５】
ステップＳ１１２において、操作認識部１２４は、ムーブが入力されたことを認識し、出力制御部１２５など、入力操作に対する応答に関わる各機能部に通知する。例えば、ムーブイベントを発行する。出力制御部１２５は、アプリケーションの規定に従い、ムーブイベントに応じて出力すべき情報をＲＯＭ１１２や記憶装置１１６から取得し、プロジェクタ１１８などの出力デバイスに出力させる。ステップＳ１１２の処理が完了したら、現フレームを対象とする図２のフローチャートの処理を終了する。
【００３６】
一方、ステップＳ１１３からステップＳ１１７は、指先が非タッチ状態であると判定された場合に実行される処理である。ステップＳ１１３において、操作認識部１２４は指先の状態を、非タッチ状態に遷移させ、ＲＡＭ１１１にそれを示す情報を保持する。本実施形態では、タッチ状態から非タッチ状態への遷移が検出されたことで、リリースの動作を認識する。ステップＳ１１４において、操作認識部１２４は現在時刻をリリース時刻としてＲＡＭ１１１に保持する。リリース時刻は、常に最新の情報のみがＲＡＭ１１１で保持される。ステップＳ１１５において、操作認識部１２４は、現フレームから検出された基準点の位置を表す座標情報を、リリース時の基準点の位置としてＲＡＭ１１１に保持する。そして現フレームから検出された指先（指示点）の位置を表す座標情報を、リリース時の基準点の位置情報としてＲＡＭ１１１に保持する。リリース時の基準点及び指示点の位置情報常に最新の情報のみが保持される。
【００３７】
ステップＳ１１６において、操作認識部１２４は、リリース後に確定する操作の認識処理を行う。本実施形態では、リリース後に確定する操作の認識処理において、タップとフリックの有無を判定する。ステップＳ１１６の処理が完了すると、タップとフリックのいずれかが認識される、あるいは、いずれでもないことが確定する。なお、本実施形態の場合、タップとフリックのいずれも認識されない場合とは、タッチ状態の間にムーブが入力された後で、フリックすることなくリリースが行われた場合である。ステップＳ１１６の処理の詳細な内容は後述する。ステップＳ１１７で、操作認識部１２４は、ＲＡＭ１１１に保持されている、タッチ開始時刻、タッチ状態で検出された指示点と基準点の位置情報、及びムーブの有無を表す情報をクリアする。以上が、図２のフローチャートの処理である。
【００３８】
次に、図４のフローチャートを用いて、本実施形態のステップＳ１１６で実行される、リリース後に確定する操作の認識処理について説明する。本実施形態において、リリース後、すなわち非タッチ状態への遷移後に確定するタッチ操作はタップとフリックの二種類である。上述した通り、タップは、タッチ開始後、所定の時間（通常は数フレーム分などの短い時間）の間に、指先がリリースされたことと、タッチからリリースまでの間に、所定のタッチ対象面に沿う方向に移動が生じていないことを条件に認識される操作である。また、フリックは、リリース直前に対象面に沿う方向に高速な移動がなされたことを条件に認識される操作である。このように、タップとフリックはどちらもリリースがどのような条件下で行われたかが、認識条件に含まれる。さらに、これらの２つは排他的な関係にあり、同時に入力されることはない。つまり、タップが入力されたことが確定した時点で、フリックが入力された可能性はないとみなすことができ、一方で、フリックが入力されたことが確定した時点で、タップが入力された可能性はないとみなすことができる。
【００３９】
ステップＳ２００において、操作認識部１２４は、非タッチ状態への遷移が検出するまでの特定期間における指示点の移動を表す第１ベクトルを取得し、ＲＡＭ１１１に保持する。本実施形態では、第１ベクトルの取得方法として、まずタッチ状態にある間に検出した指先の位置情報のうち、最もｚ座標が小さいときの位置を表す座標情報を、指示点の最下点位置として取得する。そして、ステップＳ１１５で保持されたリリース時の指示点の三次元座標と、指示点の最下点位置の三次元座標との差をとることで、３次元空間での第１ベクトルを取得することができる。ただしこの方法は一例であり、別の方法を用いてもよい。例えば、第１ベクトルはｘｙ座標で定義された２次元のベクトルとして求めても構わない。
【００４０】
ステップＳ２０１において、操作認識部１２４は、非タッチ状態への遷移が検出するまでの特定期間における、基準点の移動を表す第２ベクトルを取得し、ＲＡＭ１１１に保持する。なお、第１ベクトルと第２ベクトルは、同一期間での指示点と基準点の移動を表すベクトルである。本実施形態では、第２ベクトルの取得方法として、まず指示点の最下点位置が検出されたのと同じフレームにおいて取得された、基準点の位置を表す座標情報を、基準点の最下点位置として取得する。そして、ステップＳ１１５で保持されたリリース時の指示点の三次元座標と、と基準点の最下点位置の三次元座標との差をとることで３次元空間での第２ベクトルを取得することができる。ただしこれは一例であり、別の方法を用いてもよい。例えば、第２ベクトルはｘｙ座標で定義された２次元のベクトルとして求めても構わない。
【００４１】
ステップＳ２０２において、操作認識部１２４はタップ仮認識処理を行う。ここで、図４（Ａ）のフローチャートを用いて、タップ仮認識処理の内容を説明する。まず、ステップＳ３００において、操作認識部１２４は、リリース中の対象面に沿う方向の移動距離を取得する。本実施形態ではまず、操作認識部１２４は、ステップＳ２００の処理でＲＡＭ１１１に保持された指示点の最下点位置の座標情報と、最下点位置が検出されたときのフレームに対応するタッチ時刻もＲＡＭ１１１から取得する。そして、操作認識部１２４は、取得した指示点の最下点位置の情報と、ステップＳ１１５でＲＡＭ１１１に保持されたリリース時の指示点の位置情報に基づいて、この間の指示点のタッチ対象面に沿う方向への移動距離を取得する。具体的には、それぞれの３次元座秒情報のうち、ｘｙ成分のみを用いて移動距離を算出する。なお、ここで求める移動距離が、第１ベクトルの大きさと一致するとみなせる環境であれば、ステップＳ３０１で操作認識部１２４は、ＲＡＭ１１１から第１ベクトルの大きさ情報を取得するとしてもよい。また、第１ベクトルをｘｙ平面に投影し、その大きさを取得してもよい。
【００４２】
ステップＳ３０１では、操作認識部１２４が、取得した移動距離がタップ距離閾値より小さいかを判定する。タップ距離閾値は、タップ条件のうち、物体が対象面に対してタッチ状態になってから非タッチ状態までにタッチ対象面に沿う方向の移動がなされていないことを判定するための設けられる距離の閾値である。従って、タップ距離閾値としては、位置情報の検出誤差を吸収した上で、ユーザが意図的に指を物体が対象面に沿う方向に移動させてはいないとみなすために適切な距離の値が設定される必要がある。ただし本実施形態では、ユーザが指先をタッチ対象面に垂直な方向に下ろして直上に上げるという理想的な入力を行う場合だけでなく、腕自体を動かしている途中でタップを入力するような場合にもタップを認識するためタップ距離閾値に余裕を持たせる。従来であれば、タップ距離閾値に余裕を持たせて大きく設定した場合、フリック入力との混同が発生し易くなるが、本実施形態では、後述するタップｏｒフリック選択処理により、そのような場合にも認識精度を低下させないように処理する。取得した移動距離が、タップ距離閾値より小さいと判定される場合（ステップＳ３０１でＹＥＳ）、処理はステップＳ３０２に移行する。取得した移動距離がタップ距離閾値より小さいと判定されない場合（ステップＳ３０１でＮＯ）、処理はステップＳ３０４へ移行する。
【００４３】
ステップＳ３０２において、操作認識部１２４は、タッチ状態であった時間がタップ時間閾値より短いかを判定する。本実施形態では、タッチ状態であった時間として、ステップＳ３００で取得した指示点の最下点位置が検出されたときのタッチ時刻と、ステップＳ１１４で保持されたリリース時刻の差を取得した上で、タップ時間閾値より短いかを判定する。ただし、非タッチ状態からタッチ状態への遷移が検出された時刻を基準に、タッチ状態であった時間を計算することもできる。ここでタップ時間閾値とは、タップ条件のうち、タッチからリリースまでの時間に関する閾値である。例えば、１秒といった時間が設定される。ただし、タップ条件に時間に関する条件が含まれない場合、ステップＳ３０２は省略されてもよい。ただし、タップ時間閾値として短い時間が設定されている場合に、タップとフリックの混同がより発生しやすい傾向がある。本実施形態では、後述するそのような場合にも認識精度を低下させないように処理することができる。タッチ状態であった時間がタップ時間閾値より短いと判定される場合（ステップＳ３０２でＹＥＳ）、ステップＳ３０３に進む。タッチ状態であった時間がタップ時間閾値より短いと判定されない場合（ステップＳ３０２でＮＯ）、ステップＳ３０４に進む。
【００４４】
ステップＳ３０３において、操作認識部１２４は、タップフラグを「ＯＮ」に設定し、ＲＡＭ１１１に保持し、タップ仮認識処理を終了する。タップフラグの初期値は「ＯＦＦ」であるとする。本実施形態では、タップフラグが「ＯＦＦ」である場合は、タップは入力されていないと一意にみなすことができる場合である。ステップＳ３０４において、操作認識部１２４は、タップフラグを「ＯＦＦ」に設定してＲＡＭ１１１に保持し、タップ仮認識処理を終了する。
【００４５】
図３のフローチャートの処理に戻り、ステップＳ２０３においては、操作認識部１２４が、フリック仮認識処理を行う。ここで、図４（Ｂ）のフローチャートを用いて、フリック仮認識処理の内容を説明する。ステップＳ４００において、操作認識部１２４は、指示点のリリーススピードを取得する。ここで取得されるリリーススピードとは、タッチ状態から非タッチ状態への遷移が検出するまでの所定の時間の間における、指示点のタッチ対象面に沿う方向の移動スピードである。本実施形態では、非タッチ状態への遷移が検出される前のフレームで検出されていた指示点のｘｙ座標と、ステップＳ１１５で保持したリリース時の指示点のｘｙ座標との差分と、フレームレートとから、指示点のリリーススピードを取得する。ただし、別の方法を用いてもよい。例えば、非タッチ状態への遷移が検出される前のフレームで検出されていた指示点のｘｙ座標と、ステップＳ１１５で保持したリリース時の指示点のｘｙ座標との差分とを用いて、指示点の1フレームあたりの移動距離をリリーススピードとして取得してもよい。
【００４６】
ステップＳ４０１において、操作認識部１２４は、取得した指示点のフリックスピードが、フリック条件となる所定のスピードを表すフリック閾値以上かを判定する。取得したフリックスピードが、フリック閾値以上であると判定された場合（ステップＳ４０１でＹＥＳ）、ステップＳ４０２に進む。取得したフリックスピードが、フリック閾値以上であると判定されない場合（ステップＳ４０１でＮＯ）、ステップＳ４０３に移行する。なお、フリック条件は、ｘ方向のリリーススピードとｙ方向のリリーススピードのそれぞれに対して設けられてもよい。
【００４７】
ステップＳ４０２において、操作認識部１２４はフリックフラグを「ＯＮ」に設定し、ＲＡＭ１１１に保持し、フリック仮認識処理を終了する。フリックフラグの初期値は「ＯＦＦ」であるとする。本実施形態では、フリックフラグが「ＯＦＦ」である場合は、フリックは入力されていないと一意にみなすことができる場合である。ステップＳ４０３において、操作認識部１２４はフリックフラグを「ＯＦＦ」に設定し、ＲＡＭ１１１に保持し、フリック仮認識処理を終了する。
【００４８】
図３のフローチャートに戻り、ステップＳ２０４において、操作認識部１２４はタップフラグが「ＯＮ」かつフリックフラグが「ＯＦＦ」かを判定する。判定結果がＹＥＳである場合はステップＳ２０５に進む。判定結果がＮＯの場合、ステップＳ２０６へ移行する。ステップＳ２０５において、操作認識部１２４は、タップが入力されたと判定する。従って、タップを認識したことを、出力制御部１２５など、入力操作に対する応答に関わる各機能部に通知する。例えば、タップイベントを発行する。出力制御部１２５は、アプリケーションの規定に従い、ムーブイベントに応じて出力すべき情報をＲＯＭ１１２や記憶装置１１６から取得し、プロジェクタ１１８などの出力デバイスに出力させる。ステップＳ２０５の処理が完了したら、図３のフローチャートの処理を終了し、上述したステップＳ１１７に進む。
【００４９】
ステップＳ２０６では、操作認識部１２４は、フリックフラグが「ＯＮ」かつタップフラグが「ＯＦＦ」かを判定する。判定結果がＹＥＳである場合はステップＳ２０７へ、判定結果がＮＯである場合はステップＳ２０８へ移行する。ステップＳ２０７において、操作認識部１２４は、フリックが入力されたと判定する。従って、フリックを認識したことを、出力制御部１２５など、入力操作に対する応答に関わる各機能部に通知する。例えば、フリックイベントを発行する。出力制御部１２５は、アプリケーションの規定に従い、ムーブイベントに応じて出力すべき情報をＲＯＭ１１２や記憶装置１１６から取得し、プロジェクタ１１８などの出力デバイスに出力させる。ステップＳ２０５の処理が完了したら、図３のフローチャートの処理を終了し、上述したステップＳ１１７に進む。
【００５０】
ステップＳ２０８では、操作認識部１２４は、タップフラグとフリックフラグの両方が「ＯＮ」かを判定する。判定結果がＹＥＳである場合、ステップＳ２０９に進む。判定結果がＮＯである場合、図３のフローチャートの処理を終了し、上述したステップＳ１１７に進む。なお、ステップＳ２０８でＮＯと判定される場合は、すなわち、タップとフリックの両方が入力されていない場合である。本実施形態においては、タッチ状態の間にムーブが入力された後で、フリックすることなくリリースが行われた場合がこれに相当する。
【００５１】
ステップＳ２０９で、操作認識部１２４はタップｏｒフリック選択処理を行い、図３のフローチャートの処理を終了する。タップｏｒフリック選択処理とは、タップとフリックの両方について、入力された可能性があると仮認識されている状態で、より尤もらしい方の操作を選択する処理である。
【００５２】
次に図５のフローチャートを参照して、タップｏｒフリック選択処理の内容を説明する。まず、ステップＳ５００において、操作認識部１２４は、ステップＳ２００で取得した第１ベクトルとステップＳ２０１で取得した第２ベクトルについて、タッチ対象面に平行な方向の成分（ｘｙ成分）が類似するとみなされるかを判定する。本実施形態では、第１ベクトルと第２ベクトルのｘｙ成分の類似度を取得し、ベクトルの類似度に関する第１閾値との比較処理によって判定を行う。本実施形態では、ベクトルの類似度として、ベクトルの内積を用いる。従って、類似度は０に近いほどベクトルが垂直に近いことになる。従って、第１閾値は、内積の値の値が設定される。操作認識部１２４は、類似度がベクトルの類似度に関する第１閾値以上である場合に、２つのベクトルが類似するとみなされると判定する。２つのベクトルが類似するとみなされる場合（ステップＳ５００でＹＥＳ）、ステップＳ５０１に進む。２つのベクトルが類似するとみなされない場合（ステップＳ５００でＮＯ）、ステップＳ５０２に進む。
【００５３】
ステップＳ５０１において、操作認識部１２４は、ステップＳ２０７と同じように、フリックを認識し、タップｏｒフリック選択処理を終了する。
【００５４】
ステップＳ５０２において、操作認識部１２４は、ステップＳ２０５と同じように、タップを認識し、タップｏｒフリック認識処理を終了する。以上が、本実施形態で実行される、一連のタッチ認識処理である。なお、本実施形態では、指示点として検出した指先の移動、及び基準点の移動を表す情報として、ベクトルを用いる例を説明した。しかしながら、移動を表す情報は、ベクトル形式に限定されない。例えば、ベクトルの大きさと方向に相当する、移動距離や移動方向のそれぞれを用いてもよい。
【００５５】
次に、図６（Ａ）〜（Ｄ）を用いて、フリックあるいはタップが入力されるときのユーザの腕と指の状態の具体例を説明する。図６（Ａ）〜（Ｄ）はタッチ操作中のユーザの腕を、距離画像センサ１１５の位置から見た様子を図示している。破線の腕輪郭２０２はタッチ最下点時の腕領域、実線の腕輪郭２００はリリース時の腕領域を示している。また、破線の円２０３はタッチ最下点時の基準点、実線の円２０１はリリース時の基準点を示している。実線の矢印は第１ベクトル、二重線の矢印は第２ベクトルを示している。ただし、タッチ最下点時とリリース時で移動がない場合には、タッチ最下点時の腕輪郭２０２、基準点２０３、第１ベクトル、第２ベクトルは図示していない。また、図６（Ａ）〜（Ｄ）の全てにおいて、タッチ最下点のタッチ時刻とリリース時刻の差はタップ時間閾値未満より小さい。
【００５６】
図６（Ａ）は、ユーザがタップを入力している様子を表す。この場合、腕自体には、ｘｙ平面方向の移動がほとんど生じないことが多い。第１ベクトルと第２ベクトルは大きさがほぼ０であるため図示していない。タッチからリリースまで指先のｘｙ座標はほぼ動かないため、タップ認識処理でタップフラグが「ＯＮ」、フリック認識処理でフリックフラグが「ＯＦＦ」にセットされ、最終的にはタップが認識される。
【００５７】
図６（Ｂ）は、ユーザが、腕自体はあまり動かさずに、指先を高速に移動させることでフリックを行った様子を表す。ただし、指がタッチ状態であったの短時間には、ｘｙ平面方向の移動はなされていないとする。これにより、第１ベクトルは図示しているが、第２ベクトルの大きさはほぼ０であるため図示していない。タップ認識処理ではタップフラグが「ＯＮ」にセットされる。そしてリリースの瞬間に指先がｘｙ方向に素早く移動しリリース時指先ｘｙ移動速度が大きいため、フリック認識処理ではフリックフラグが「ＯＮ」にセットされる。最終的にタップｏｒフリック選択処理では第１ベクトルと第２ベクトルの類似度が小さいため、フリックが認識される。
【００５８】
図６（Ｃ）は、ユーザが腕を静止させることなくｘｙ平面方向に移動させている途中で、タップ操作が入力される様子を表す。タップ認識処理ではタップフラグが「ＯＮ」にセットされる。フリック認識処理では、リリース時の指先ｘｙ移動速度が大きいためフリックフラグが「ＯＮ」にセットされる。図示しているように第１ベクトルと第２ベクトルはほぼ平行であるため類似度は高くなる。そのため、最終的にタップｏｒフリック選択処理では、タップが認識される。テーブルトップ型のデバイスにおいては、ユーザはタッチしてから体の方向へ腕を操作平面から引き抜きながらタップすることが多いが、本実施形態ではそのようなタップもロバストに認識できる。ただし、本実施形態ではタッチ後に腕を移動させる方向に制限はなく、タッチ後にどの方向に腕を動かしてもタップをロバストに認識することができる。
【００５９】
図６（Ｄ）は、ユーザが、腕全体を移動させている途中で、指先だけを高速に移動させることでフリックを入力する様子を表す。ただし、指がタッチ状態であったの短時間には、ｘｙ平面方向の移動はなされていないとする。これにより、タップ認識処理ではタップフラグが「ＯＮ」にセットされる。フリック認識処理では、リリース時指先ｘｙ移動速度が大きいためフリックフラグが「ＯＮ」にセットされる。図示しているようにフリック時に指先が動くため、第１ベクトルと第２ベクトルの類似度は低くなるため、類似するとみなされない。従って、最終的にタップｏｒフリック選択処理では、フリックが認識される。以上が、本実施形態において、情報処理装置１００に対して入力されたユーザ操作に応じて、タッチ操作を認識する処理である。このように本実施形態では、操作体として腕が利用される場合に、タッチ入力に利用される指先の移動と、腕自体の位置を表す基準点の移動の類似度に応じて、フリックとタップの認識精度を向上させる。例えば、距離画像センサの画像取得間隔が長く、かつ取得した画像にノイズが含まれる場合には、指先の情報のみを用いても指先の軌跡が似ている操作を区別することは難しい。図６の例ではあ、指先のタッチ対象面に平行な方向の移動軌跡のみを用いただけでは、図６（Ｂ）に示す腕を動かさないフリック操作と図６（Ｃ）に示す腕を動かすタップ操作を区別することは難しい。そこで本実施形態では指先に加え基準点の移動情報を考慮することで、タッチ操作の認識精度を向上させることができる。なお、本実施形態ではタッチ操作の認識をルールベースで行っているが、機械学習により学習した識別器を使う等してもよい。
【００６０】
＜変形例＞
ここで、第１の実施形態の変形例として、上述したタップｏｒフリック選択処理に、さらに別の指標に関する判定処理を加える例を示す。第１の実施形態では、指示点の移動を表す第１ベクトルと、基準点の移動を表す第２ベクトルのうち、タッチ対象面に平行な方向の成分のみを使って判定を行った。それに対し、変形例では、操作体の移動について三次元（ｘｙｚ）の情報を利用する。
【００６１】
第１の実施形態において参照した図１１（Ａ）のように、タッチ操作で移動させる対象が小さかったり、対象を移動させたい距離が短かったりするような場合には、フリックは、腕よりも指を多く動かす、つまり指関節を曲げることで入力されることも多い。しかしながら、比較的大きな表示オブジェクトに対しフリックを行う場合には、指関節を動かすことなく、腕全体を動かしてフリックを行う方が自然な場合がある。例えば、図１１（Ｂ）のように対象面に大きく表示される文書をフリックでページ送りする場合等がある。図１１（Ｂ）でも図１１（Ａ）と同様、実線で輪郭が描かれた腕は、ユーザの腕の最新の位置を、点線で輪郭が描かれた腕は、移動前に遡った過去（１フレーム前）におけるユーザの腕の位置を表す。図１１（Ｂ）では初期状態で１ページ目が表示されている。そしてムーブにより文書が途中までページがスライド移動された後、フリックが入力されることで、次ページへの以降が完了した状態が速やかに表示される。図１１（Ｂ）では、指関節を動かすことなく腕全体を大きく動かすことで、フリックが入力されている。変形例によれば、このような腕の動きによってフリックの入力された場合でも、指示点と基準点のｚ軸方向の移動について考慮することで、タップとフリックの認識精度を向上させることができる。
【００６２】
以下では、指関節を曲げる動きが伴うフリックを「指フリック」、指関節の動きが伴わない腕を動かして行うフリックを「腕フリック」と定義して説明する。なお、腕フリックを距離画像センサから見た概略図は、図６（Ｃ）の腕を動かすタップとほぼ同一になり、第１の実施形態と同じ方法で取得した第１ベクトル、と第２ベクトルのうち、ｘｙ方向の成分は類似度が高くなってしまう。しかし、指先の微細な軌跡は腕を動かすタップとは異なる。
【００６３】
変形例における、システムの外観、ハードウェア構成、及び機能構成は、第１の実施形態の図１に示したものに準じる。ただし、変形例の操作認識部１２４は、第１の実施形態とはタップｏｒフリック選択処理において、さらに後述する複数の処理を実行する。
【００６４】
変形例の情報処理装置１００も、第１の実施形態と同様、図２のフローチャートに従ってタッチ認識処理を実行する。ただし、ステップＳ２０９では、図９のフローチャートに示されるタップｏｒフリック認識処理を実行する。図９のフローチャートの処理が、第１の実施形態におけるタップｏｒフリック選択処理（図５のフローチャート）と異なるのは、リリースに至るまでの指先の移動について、ｚ成分を用いている点である。以下、図９のフローチャートを参照して、変形例におけるタップｏｒフリック認識処理の内容を説明するが、図５のフローチャートと内容が共通する処理には同じステップ番号を付与し、詳細な説明は省略するとする。変形例の場合、第１ベクトルと第２ベクトルの操作面方向成分が類似しているとみなされた場合（ステップＳ５００でＹＥＳ）、処理はステップＳ６００に進む。また、第１ベクトルと第２ベクトルの操作面方向成分が類似するとみなされない場合（ステップＳ５００でＮＯ）は、第１の実施形態と同様、ステップ５０１に進み、フリックが認識される。
【００６５】
ステップＳ６００において、操作認識部１２４は、第１ベクトルのｘｙ成分の大きさとｚ成分の大きさの差の絶対値を、ベクトルの成分の大きさに関する第２閾値を比較する。第１ベクトルのｘｙ成分の大きさとｚ成分の大きさの差の絶対値が第２閾値より小さいと判定される場合（ステップＳ６００でＹＥＳ）、ステップＳ６０２へ移行する。第１ベクトルのｘｙ成分の大きさとｚ成分の大きさの差が第２閾値より小さいと判定されない場合（ステップＳ６００でＮＯ）、ステップＳ６０１へ移行する。
【００６６】
ステップＳ６００の処理は、第１ベクトルのｘｙ成分（対象面に平行な成分）とｚ成分（対象面に垂直な成分）の大小関係を使うことで、第１ベクトルのみによるフリックとタップの区別が可能かを判定するための処理である。第１ベクトルによるフリックとタップの区別の考え方は、図７（Ａ）を参照して後述する。ステップＳ６００で、判定可能であればステップＳ６０１で、指先移動ベクトルのｚ成分とｘｙ成分の大きさを用いたタップとフリックの判定に移行する。第１ベクトルのみによるフリックとタップの区別ができない（ステップＳ６００でＮＯ）と判定される場合には、ステップＳ６０２において、タッチ状態での指示点の軌跡の形状を使ったタップとフリックの区別を行う。タッチ状態での指示点の軌跡の形状を利用する場合の考え方は、図７（Ｂ）を参照して後述する。
【００６７】
ステップＳ６０１で、操作認識部１２４は第１ベクトルのｚ成分の絶対値とｘｙ成分の絶対値の大きさを比較する。詳細は後述する。ｘｙ成分のほうが大きい場合にはフリックの認識が確定し、ステップＳ５０１へ移行する。ｚ成分のほうが大きい場合にはタップの認識が確定しステップＳ５０２へ移行する。
【００６８】
ステップＳ６０２で、操作認識部１２４は指先のタッチ後移動軌跡の形状が、タッチ対象面に近づく側（本実施形態のテーブルトップシステムの場合は下側）に凸を描く形状かを判定する。タッチ後移動軌跡が、タッチ対象面に近づく側に凸を描く形状であればフリックの認識を確定し、ステップＳ５０１に移行する。タッチ後移動軌跡が上に凸であればタップに認識を確定し、ステップＳ５０２に移行する。
【００６９】
図７を用いて、ステップＳ６００及びステップＳ６０１で行う第１ベクトルのｚ成分の絶対値とｘｙ成分の絶対値の大きさを比較するという処理の詳細を説明する。図７は様々なタッチ操作を操作平面に水平な方向から示した図である。点線はタッチ閾値、破線はリリース閾値を示している。実線の細い矢印はリリースまでの指先の軌跡を示している。指先の軌跡は実際には図７のように連続的に観測されるわけではなく、距離画像の取得間隔に応じて離散的に取得される。黒い矢印は第１ベクトルのｚ成分、白抜きの矢印はｘｙ成分を示している。図７（Ａ）は腕が動かないタップ、図７（Ｂ）は腕が動かない指フリック、図７（Ｃ）はタッチ後に腕が動くタップ、図７（Ｄ）はタッチ後に腕が動くフリック、図７（Ｅ）は腕フリックの様子を示している。図７において、ユーザがタップを意図して入力している場合（Ａ、Ｃ）では、タッチ状態での最下点からリリースに至るまでの移動を表すベクトルのうち、ｘｙ成分とｚ成分の大きさに差異が生じ、かつ、ｚ成分の方がｘｙ成分よりも大きい場合が多い。これには、タップ条件に、指示点がｘｙ方向にはほぼ移動しないことが含まれるため、ユーザが速いタイミングで指先を上昇させようとする傾向が反映されている。これに対し、ユーザがフリックを意図して入力している場合（Ｂ、Ｄ、Ｅ）では、タッチ状態での最下点からリリースに至るまでの移動を表すベクトルのうち、ｘｙ成分とｚ成分の大きさに差異が生じ、かつ、ｘｙ成分の方がｚ成分よりも大きい場合が多い。フリック条件には、リリースの直前に指示点がｘｙ方向に高速移動することが含まれるためである。そこで変形例では、上述したように、第１ベクトルのｘｙ成分とｚ成分の大きさを比較し、いずれかの方が大きいと判定できるだけの差がある場合には、ｚ成分の方が大きければタップ、ｘｙ成分の方が大きければフリックと判定する。このように処理することで、図７の場合では、図７（Ａ）では第１ベクトルのｚ成分とｘｙ成分の大きさに十分に差があり、かつ、ｚ成分がｘｙ成分より大きいと判定され、タップが認識される。そして、図７（Ｄ）（Ｅ）では、のｚ成分とｘｙ成分の大きさに十分に差があり、ｘｙ成分がｚ成分より大きいと判定され、フリックが認識される。図７（Ｂ）（Ｃ）では、第１ベクトルのｚ成分とｘｙ成分の大きさに十分な差がないため、第１ベクトルの情報のみでは、タップとフリックを区別しきれないとみなされることになる。
【００７０】
次に、図８を用いて、ステップＳ６０２で行われるタッチ後軌跡の凹凸判定について詳細に説明する。図８（Ａ）〜（Ｅ）は、図７（Ａ）〜（Ｅ）と同様に、タッチ操作を操作平面に水平な方向から示した図である。点線はタッチ閾値、破線はリリース閾値を示している。図８にも図７と同様の符号「ＯＦＦ」っており、図８（Ａ）は腕が動かないタップ、図８（Ｂ）は腕が動かない指フリック、図８（Ｃ）はタッチ後に腕が動くタップ、図８（Ｄ）はタッチ後に腕が動く指フリック、図８（Ｅ）は腕フリックの様子を示している。
【００７１】
白抜きの円は、離散的に取得された指先の観測点を表している。対象面に近いほうからそれぞれ、最下点、最下点とリリース位置の中点、リリース位置を表している。中点を中心とした扇形は三点がなす角度を示している。
【００７２】
図８において、ユーザがフリックを意図して入力している場合（Ｂ、Ｄ、Ｅ）では、タッチ状態での最下点からリリースに至るとき、指先がまずタッチ対象面に平行な方向への移動をしてから上昇している。その結果、タッチ状態での最下点からリリースに至るまでの移動軌跡の形状は、タッチ対象面に近づく方向である下方向に膨らんでいる。変形例では、この状態を、移動形状がタッチ対象面に近づく側に凸を描くという。一方で、ユーザがタップを意図して入力している場合（Ａ、Ｃ）では、タッチ状態での最下点からリリースに至るときに、タッチ対象面に平行な方向には動かないまま上昇する動きが優先される。その結果、移動軌跡の形状は、フリックの場合とは逆に、タッチ対象面に離れる方向である上方向に膨らんでいる。この現象は、第１ベクトルのｘｙ成分とｚ成分の大きさが略同じである場合にも生じやすい。ステップＳ６０２では、上述した三点がなす角度が１８０°以上である場合を、下に凸を描く場合、１８０°より小さい場合を、下に凸を描かない（上に凸）を描く場合と判定すると定義する。これに従い、図８で示す具体例で、上に凸と判定されるのは、図８（Ａ）、（Ｃ）であり、下に凸と判定されるのは、図８（Ｂ）、（Ｄ）、（Ｅ）である。
【００７３】
図１０の表は、図７及び図８の（Ａ）〜（Ｅ）のタッチ操作が、図３及び図９のフローチャートの各ステップでどのように認識・判定されるかをまとめたものである。認識・判定できた場合は○、判定できない場合は×、判定が行われない場合は−を示している。
【００７４】
腕が動かないタップ（Ａ）では、ステップＳ２０２でタップフラグが「ＯＮ」、ステップＳ２０３でフリックフラグが「ＯＦＦ」にセットされる。タップフラグのみが「ＯＮ」なのでタップｏｒフリック選択処理が行われることなく、タップが認識される。
【００７５】
腕が動かない指フリック（Ｂ）では、ステップＳ２０２及びステップＳ２０３で、タップフラグ及びフリックフラグが「ＯＮ」にセットされ、ステップＳ２０９のタップｏｒフリック選択処理が行われる。ステップＳ６００の指先と基準点の移動ベクトルによる判定では、図６（Ｂ）に示すように第１ベクトルと第２ベクトルの類似度が低いため、フリックの認識が確定する。
【００７６】
タッチ後に腕が動くタップ（Ｃ）では、ステップＳ２０２及びステップＳ２０３で、タップフラグ及びフリックフラグが「ＯＮ」にセットされ、ステップＳ２０９のタップｏｒフリック選択処理が行われる。まず、ステップＳ６００の指先と基準点の移動ベクトルによる判定では、図６（Ｃ）に示すように第１ベクトルと第２ベクトルの類似度が高いため、認識は確定せず、ステップＳ６００へ移行する。ステップＳ６００では図７（Ｃ）に示すように、ｚ成分とｘｙ成分がほぼ等しいため、ステップＳ６０２へ移行する。ステップＳ６０２では図８（Ｃ）に示すように、三点がなす角度が１８０度より小さいであり、上に凸であるため、タップの認識が確定する。
【００７７】
タッチ後に腕が動く指フリック（Ｄ）では、ステップＳ２０２及びステップＳ２０３で、タップフラグ及びフリックフラグが「ＯＮ」にセットされ、ステップＳ２０７のタップｏｒフリック選択処理が行われる。ステップＳ６００の指先と基準点の移動ベクトルによる判定では、図６（Ｄ）に示すように第１ベクトルと第２ベクトルの類似度が低いため、フリックの認識が確定する。
【００７８】
腕フリック（Ｅ）では、ステップＳ２０２及びステップＳ２０３で、タップフラグ及びフリックフラグが「ＯＮ」にセットされ、ステップＳ２０９のタップｏｒフリック選択処理が行われる。まず、ステップＳ６００の指先と基準点の移動ベクトルによる判定では、図６（Ｃ）に示すように第１ベクトルと第２ベクトルの類似度が高いため、認識は確定せず、ステップＳ６００へ移行する。ステップＳ６００及びステップＳ６０１では図７（Ｅ）に示すように、ｚ成分よりｘｙ成分のほうが大きいため、フリックの認識が確定する。
【００７９】
以上が、変形例において、情報処理装置１００に対して入力されたユーザ操作に応じて、タッチ操作を認識する処理である。
【００８０】
変形例によれば、フリックに指関節の動きが伴わない場合のように、第１の実施形態で、指示点の移動と基準点の移動が類似してしまう場合でも、フリックとタップの認識精度を向上させることができる。なお、変形例でも、タッチ操作の認識をルールベースで行っているが、機械学習により学習した識別器を使う等してもよい。
【００８１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８２】
１２０  画像取得部
１２１  操作体取得部
１２２  指示点検出部
１２３  操作認識部
１２４  保持部
【図１】
0006579866.tif 000002
【図２】
0006579866.tif 000003
【図３】
0006579866.tif 000004
【図４】
0006579866.tif 000005
【図５】
0006579866.tif 000006
【図６】
0006579866.tif 000007
【図７】
0006579866.tif 000008
【図８】
0006579866.tif 000009
【図９】
0006579866.tif 000010
【図１０】
0006579866.tif 000011
【図１１】
0006579866.tif 000012