(57)【特許請求の範囲】
【請求項１】
物体と所定の操作面の近接状態を表す情報を取得する取得手段と、
前記取得手段によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動スピードに基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定手段と、
前記取得手段によって取得された情報が前記設定手段によって設定された条件を満たしたことに応じて、前記物体が前記操作面からリリースされたことを判定する判定手段と、を備えることを特徴とする情報処理装置。
【請求項２】
前記設定手段は、前記物体の移動のスピードが、基準スピードより速い場合に設定される条件を、前記物体の移動スピードが前記基準スピードより遅い場合に設定される条件よりも厳しい条件とすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記設定手段は、前記物体の移動スピードが前記基準スピードを越えた後、再び前記基準スピードを下回った場合は、前記条件を緩和することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記条件とは、前記近接の程度の大きさの閾値であって、前記設定手段は、前記物体の移動のスピードが前記基準スピードより速い場合に設定される閾値、前記物体の移動のスピードが前記基準スピードより遅い場合に設定される閾値よりも大きく設定することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記設定手段は、前記条件の候補として予め記憶された複数の閾値から、前記物体が前記操作面に対してタッチ入力中であるとみなされる間の前記物体の移動スピードに対応づけられた閾値を取得し、前記条件として設定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記取得手段は、前記操作面と前記物体の間の距離を取得し、
前記設定手段は、前記条件として、前記操作面から物体までの距離の閾値を設定し、
前記判定手段は、前記操作面から物体までの距離が、前記設定手段によって設定された閾値を越えた場合に、前記物体が前記操作面からリリースされたと判定することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記判定手段はさらに、前記操作面と前記物体の間の距離が所定のタッチ閾値よりも小さい場合に、前記物体によって前記操作面がタッチされた状態であると判定する、前記所定のタッチ閾値は、前記設定手段によって設定される閾値とは独立した値であることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記判定手段は、前記操作面から物体までの距離が、前記設定手段によって設定された閾値を越えている状態が、所定の時間より長く継続された場合に、前記物体が前記操作面からリリースされたと判定することを特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記判定手段は、前記操作面と前記物体との間の距離が、前記設定手段によって設定された閾値を越えている状態が、前記物体が前記操作面にタッチしている時間の長さに対応して特定される時間の長さより長く継続された場合に、前記物体が前記操作面からリリースされたと判定することを特徴とする請求項６に記載の情報処理装置。
【請求項１０】
前記取得手段は、前記物体を含む空間を撮像することで得られる赤外画像を使って前記距離を表す情報を取得することを特徴とする請求項６に記載の情報処理装置。
【請求項１１】
前記取得手段は、前記物体を含む空間を撮像することで得られる距離画像を使って前記距離を表す情報を取得することを特徴とする請求項６に記載の情報処理装置。
【請求項１２】
前記判定手段によって前記物体が前記操作面からリリースされたと判定されたことに応じて、１タッチ入力の終了を認識する認識手段をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記１タッチ入力とは、前記物体が前記操作面にタッチしたとみなされる時点からリリースしたとみなされる時点までの前記物体の一続きの位置情報を指すことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
物体と所定の操作面の近接状態を表す情報を取得する取得工程と、
前記取得工程によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動スピードに基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定工程と、
前記取得工程によって取得された情報が前記設定工程によって設定された条件を満たしたことに応じて、前記物体が前記操作面からリリースされたことを判定する判定工程と、を備えることを特徴とする情報処理方法。
【請求項１５】
物体と所定の操作面の近接状態を表す情報を取得する取得手段と、
前記取得手段によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動の方向に基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定手段と、
前記取得手段によって取得された情報が前記設定手段によって設定された条件を満たす場合に、前記操作面にタッチしていた前記物体が前記操作面からリリースされたと判定する判定手段と、を備えることを特徴とする情報処理装置。
【請求項１６】
前記設定手段は、前記移動の方向が直前に移動したときの方向と同じとき、前記条件を緩めることを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
物体と所定の操作面の近接状態を表す情報を取得する取得手段と、
前記取得手段によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動距離の大きさに基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定手段と、
前記取得手段によって取得された情報が前記設定手段によって設定された条件を満たす場合に、前記操作面にタッチしていた前記物体が前記操作面からリリースされたと判定する判定手段と、を備えることを特徴とする情報処理装置。
【請求項１８】
物体と所定の操作面の近接状態を表す情報を取得する取得工程と、
前記取得工程によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動の方向に基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定工程と、
前記取得工程によって取得された情報が前記設定工程によって設定された条件を満たす場合に、前記操作面にタッチしていた前記物体が前記操作面からリリースされたと判定する判定工程と、を備えることを特徴とする情報処理方法。
【請求項１９】
物体と所定の操作面の近接状態を表す情報を取得する取得工程と、
前記取得工程によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動距離の大きさに基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定工程と、
前記取得工程によって取得された情報が前記設定工程によって設定された条件を満たす場合に、前記操作面にタッチしていた前記物体が前記操作面からリリースされたと判定する判定工程と、を備えることを特徴とする情報処理方法。
【請求項２０】
コンピュータを
物体と所定の操作面の近接状態を表す情報を取得する取得手段と、
前記取得手段によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動スピードに基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定手段と、
前記取得手段によって取得された情報が前記設定手段によって設定された条件を満たしたことに応じて、前記物体が前記操作面からリリースされたことを判定する判定手段と、
として機能させるためのプログラム。
【請求項２１】
コンピュータを
物体と所定の操作面の近接状態を表す情報を取得する取得手段と、
前記取得手段によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動の方向に基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定手段と、
前記取得手段によって取得された情報が前記設定手段によって設定された条件を満たす場合に、前記操作面にタッチしていた前記物体が前記操作面からリリースされたと判定する判定手段と、として機能させるためのプログラム。
【請求項２２】
コンピュータを
物体と所定の操作面の近接状態を表す情報を取得する取得手段と、
前記取得手段によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動距離の大きさに基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定手段と、
前記取得手段によって取得された情報が前記設定手段によって設定された条件を満たす場合に、前記操作面にタッチしていた前記物体が前記操作面からリリースされたと判定する判定手段と、として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認識対象とタッチ対象面の近接状態に基づいて、当該認識対象によって行われるタッチ操作を認識する技術に関する。
【背景技術】
【０００２】
近年、プロジェクションによってユーザインタフェース（以下、ＵＩ）を壁や机など任意の操作面に投影し、投影したＵＩに対してタッチ操作が行われる場面がある。また、ＡＲ（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）やＭＲ（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）といった環境において、物理的には存在しない操作面（仮想面）に対するタッチ操作が行われる場面がある。このような場面においては、ステレオカメラや距離画像センサ等を用い、操作面と、操作を行う指示体として認識すべき認識対象（例えばユーザの指先）との間の距離を取得し、その大きさに基づいて両者が接触しているか否かを判断することが多い。具体的には、操作面と、ユーザの指先との間の距離に所定の閾値を設ける。そして、当該距離が閾値より小さければ、操作面がタッチされている状態を示す「タッチ状態」、閾値より大きければ操作面がタッチされていない状態を示す「非タッチ状態（リリース状態）」であるという判定を行う。なお、２種類の判定には別別の閾値が利用されてもよい。ステレオカメラ、距離画像センサから取得・算出できる距離の分解能が低い場合、ステレオカメラや距離画像センサを用いたタッチ操作の判定は、操作面と指先との距離の検出誤差が生じる場合がある。従って、ユーザはタッチ操作を継続しているつもりであるにも関わらず、検出された距離が閾値を越え、リリースが誤検出されてしまう場合がある。
【０００３】
タッチパネルの表面に指で触れると生じる静電容量の変化量に閾値を設けてタッチとリリースを判定する静電容量方式のタッチパネルにおいても、静電容量の検出誤差により、ユーザの意図に沿わないリリースが検出され得る。特許文献１では、タッチとリリースを判定する基準（以下、タッチパネルの感度）をユーザ自身が設定する。従ってユーザは、意図に沿った操作が認識されない場合は、タッチパネルの感度を調整することで操作の“認識され易さ”を変更し、誤動作を抑制することが出来る。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１３３７２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の先行技術は、タッチとリリースを判定するタッチパネルの感度をユーザが逐次手動で設定する必要があった。
【０００６】
本発明は上記課題を鑑みたものであり、ユーザに設定作業を求めることなく、認識対象とタッチ対象面の近接状態に基づいて認識されるタッチ操作での、リリースの検出精度を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明に係る情報処理装置は、物体と所定の操作面の近接状態を表す情報を取得する取得手段と、前記取得手段によって取得された情報によって前記物体が前記操作面に対してタッチ入力中であるとみなされる間の、前記物体の移動スピードに基づいて、前記物体が前記操作面上からリリースされたかを判定するための前記近接状態と判断する条件を設定する設定手段と、前記取得手段によって取得された情報が前記設定手段によって設定された条件を満たしたことに応じて、前記物体が前記操作面からリリースされたことを判定する判定手段と、を備える。
【発明の効果】
【０００８】
本発明によれば、ユーザに設定作業を求めることなく、認識対象とタッチ対象面の近接状態に基づいて認識されるタッチ操作での、リリースの検出精度を向上させることが可能となる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置の使用例
【図２】情報処理装置のハードウェア構成及び機能構成の一例を示す図
【図３】情報処理装置のメイン処理を示すフローチャート
【図４】第１の実施形態における情報処理装置のメイン処理で実行されるタッチ判定処理を示すフローチャート
【図５】ユーザ操作に応じたリリース閾値の一例を示すテーブル
【図６】変形例１における情報処理装置のメイン処理で実行されるタッチ判定処理を示すフローチャート
【図７】リリース閾値の制御処理の流れの一例を示すフローチャート
【図８】変形例２における情報処理装置のメイン処理で実行されるタッチ判定処理を示すフローチャート
【図９】ユーザ操作の一例を示す図
【図１０】タッチ判定処理を示すフローチャート
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照して詳細に説明する。なお、以下で説明する実施形態は、本発明を具体的に実施した場合の一例を示すものであり、これに限るものではない。
【００１１】
＜第１の実施形態＞
本実施形態では、情報処理装置１００に対して入力された指示位置の変化に応じて、ユーザの指やスタイラス等、タッチ操作の入力に利用される操作体が、操作面上からリリースされたかを判定するための条件を、タッチ中の操作体の状態に応じて制御する。ステレオカメラや距離画像センサを利用する場合、操作面と指先との距離の検出誤差は、特にフリック操作（リリースの際に操作面を弾くように操作体を高速に動かす操作）のように指先を速く動かす操作で顕著に表れる傾向がある。そこで以下本実施形態では、ユーザが入力する操作として、フリック操作を行う場合を例に説明する。ただし、フリック操作は一例であって、本実施形態は、タッチとリリースが伴う様々な操作を認識する処理に適用可能である。フリックの認識処理の詳細は後述する。
【００１２】
図１は、本実施形態で説明する情報処理装置１００を設置したシステムの外観の一例を示している。情報処理装置１００は、プロジェクタ２０９の投影光照射部１０５から投影光を照射することにより、任意の平面を操作面として設定できる。図１の場合は、情報処理装置１００を操作面１０１上に設置し、テーブル面上に投影していることを示している。ここで、図１の１０２ａ〜ｄは、プロジェクタ２０９によってテーブル面上に投影された電子データやボタンなどのＵＩ部品（以下、まとめて表示アイテムと記載する）を示している。本実施形態では、ユーザが手指１０３を使って、表示アイテムに対してタッチ操作を行う場合について説明する。また本実施形態では操作面１０１に画像を投影する例を述べる。ただし、操作面１０１はテーブル以外でもよく、例えば壁面に投影光を照射して操作面として利用してもよく、また、表面は必ずしも平面でなくとも操作面とすることができる。また、赤外光発光部２０７によって発光される赤外光は、発光素子１０４から投影面に向けて照射され、ユーザの手指１０３等に反射し、赤外反射光として赤外カメラ２０８において撮像される。図１において、レンズ１０６は赤外カメラ２０８の撮像用レンズである。情報処理装置１００は、赤外カメラ２０８によって得られた赤外強度画像に対して各種画像処理することによって手指の三次元位置を計測した結果から手指とテーブル面の近接状態を判断し、テーブル面へのタッチ判定を行う。なお、本実施形態では、図１に示されるように操作面１０１に対して平行な二次元平面にｘ軸とｙ軸、操作面１０１に直交する高さ方向にｚ軸を設定し三次元位置情報を座標値として扱う。ただし、操作面が平面でない場合やユーザと操作面との位置関係によっては、必ずしも操作面に平行あるいは直交の関係の座標軸ではなくてもよい。その場合も、ｚ軸は認識対象と操作面との近接関係（両者の間の距離の大きさの程度）を検出する方向、ｚ軸と交わる方向にｘ軸とｙ軸とが設定される。
【００１３】
本実施形態では、ユーザが手指１０３を使ってタッチ操作を行い、表示アイテムに対して入力操作を行う場合について説明する。また本実施形態では操作面１０１に投影する例を述べるが、指の代わりにスタイラスペンなどを利用してもよく、投影面はテーブル以外でもよい。たとえば壁面やホワイトボードに画像を投影するシステムでも構わない。本実施形態では、赤外発光部と赤外カメラを利用して、手指の三次元位置を計測する方法について記載するが、これに限らない。たとえば、ステレオカメラや距離画像センサを利用して手指の三次元位置を計測することも可能である。また、本実施形態では、プロジェクタによって投影される投影面をタッチ操作面とするが、ヘッドマウントディスプレイを利用し、ＡＲやＭＲ空間上の仮想平面をタッチ操作面としても良い。
【００１４】
図２（ａ）は、本実施形態における情報処理装置１００のハードウェア構成図である。ＣＰＵ２００は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔであり、各種処理のための演算や論理判断などを行い、システムバス２０３に接続された各構成要素を制御する。この情報処理装置１００には、プログラムメモリとデータメモリを含むメモリが搭載されている。ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２は、プログラムメモリであって、後述するフローチャートに示す各種処理手順を含むＣＰＵ２００による制御のためのプログラムを格納する。テーブルを保持している。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０１は、ＣＰＵ２００の上記プログラムのワーク領域、エラー処理時のデータの退避領域、上記制御プログラムのロード領域などを有する。ここでＯＳおよび各処理プログラム等は図示されていない外部ストレージに記憶されていてもよく、その場合は電源投入時にＲＡＭ２０１に適宜読み込まれ、ＣＰＵ２００によって起動される。
【００１５】
また、ディスプレイＩ／Ｆ  ２０４は、情報処理装置１００内部で生成される表示画面の情報をプロジェクタ２０９が処理可能な信号に変換する。入力Ｉ／Ｆ  ２０５は、赤外カメラ２０８が生成する赤外画像を入力信号として受信し、情報処理装置１００が処理可能な情報に変換する。出力Ｉ／Ｆ  ２０６は、情報処理装置１００内部で生成される赤外発光命令を赤外光発光部２０７が処理可能な信号に変換する。本実施形態では、情報処理装置１００で投影するデジタルデータは図示されていない外部ストレージに格納されているものとする。外部ストレージとしては、ディスクデバイスやフラッシュメモリ、ネットワークやＵＳＢなどの各種Ｉ／Ｆを介して接続される記憶装置が考えられる。赤外カメラ２０８で生成された赤外画像データはＲＡＭ２０１で一時保存され、ＣＰＵ２００によって適宜処理され、破棄されるが、必要なデータは図示されていない外部ストレージに適宜蓄積しても構わない。以下、他図を用いて同じものを説明する場合には同一の符号を付し、その説明を省略する。
【００１６】
図２（ｂ）は、本実施形態における情報処理装置１００の機能ブロック図である。
情報処理装置１００は、画像取得部２１０、領域検出部２１１、位置特定部２１２、設定部２１３、判定部２１４、認識部２１５、表示制御部２１７、データ取得部２１６から構成される。これらの各機能部は、ＣＰＵ２００が、ＲＯＭ２０２に格納されたプログラムをＲＡＭ２０１に展開し、後述する各フローチャートに従った処理を実行することで実現されている。また例えば、上記のＣＰＵ２００を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すればよい。
【００１７】
情報処理装置１００は起動されると、赤外光発光部２０７からプロジェクタの投影方向と同じ方向に赤外光を常時照射する。プロジェクタの投影範囲にユーザの手指が入ると、赤外光は手指の表面で反射し、赤外カメラ２０８に赤外反射強度として撮像される。画像取得部２１０は、赤外カメラ２０８で撮像された赤外強度画像を取得し、ＲＡＭ２０１に随時保持する。保持された赤外強度画像は、情報処理装置１００の各機能ブロックにおいて順次処理される。
【００１８】
領域検出部２１１は、ＲＡＭ２０１に保持されている赤外強度画像を解析することによって、ユーザの手領域の検出を行う。また、検出した手領域をラベリングし、その結果をＲＡＭ２０１に保持する。詳細は後述する。位置特定部２１２は、領域検出部２１１によってラベリングされた手領域及び画像取得部２１０で取得した赤外強度画像の赤外反射強度の輝度に基づいて入力位置を表す３次元座標情報を特定し、その結果をＲＡＭ２０１に保持する。本実施形態では、入力位置として、指先が示す１点の座標を特定する。操作体として指ではなくスタイラスペンなどを用いる場合は、ペン先の示す１点を特定すればよい。
【００１９】
設定部２１３は、操作面にタッチしている間の操作体（ここではユーザの指先）の状態に基づいて、操作体が操作面上からリリースされたかを判定するために用いる、操作体と操作面との近接状態に関する条件を設定する。本実施形態では、操作面から操作体としての指先までの距離、すなわち操作面からの高さの閾値（以下、リリース閾値という）を条件として設定する。設定部２１３は、位置特定部２１２が特定した入力位置を追跡し、単位時間あたりの指先の移動距離を求めることによって指先の移動速度の大きさを取得する。そして、予め定められた基準に従って、複数のリリース閾値の候補の中から取得した移動速度に対応するリリース閾値を選択し、設定する。予め定められた基準として、本実施形態では、図５（ａ）に示すテーブルを参照する。詳細は後述する。
【００２０】
判定部２１４は、位置特定部２１２が特定した入力位置の３次元座標の情報、及び設定部２１３が設定した条件とから、操作体である指先が操作面からリリースされたことを判定する。本実施形態では、入力位置のｚ座標で示される操作面から指先までの距離が、リリース閾値より大きくなったことに応じて、指先が操作面上からリリースされたと判定される。さらに、本実施形態では、入力位置のｚ座標で示される操作面から指先までの距離が、タッチ閾値より小さくなったことに応じて、指先が操作面上をタッチしたと判定される。タッチ閾値とリリース閾値は同一の値を利用することも可能であるが、本実施形態にではそれぞれ独立した値であって、少なくとも初期値では、リリース閾値の方がタッチ閾値よりも大きいとする。これは、ｚ座標の検出誤差を考慮して、タッチの検出時は操作体が十分に操作面に近づいたことを判定し、リリースの検出時は、操作体が操作面から十分に離れたことを判定するためである。
【００２１】
認識部２１５は、判定部２１４による判定の結果、及び、入力位置のｘｙ座標の変化量が示す移動の状態に基づいてタッチ操作を認識する。例えば、判定部２１４によって、指先がリリースされたことが検出される直前の所定期間において、入力位置の移動速度が所定の速度よりも大きい場合に、フリック操作を認識する。フリック操作とは、操作面上を払うあるいは弾くように高速に動かしながら操作体をリリースする操作であって、一般的には表示画像を慣性移動させたり、ページ送りを実行させたりする指示コマンドの入力に割り当てられることが多い。このように認識されたタッチ操作を示すタッチイベント情報（タッチ、リリース、ムーブ、フリックなど）が表示制御部２１７など入力に応答する機能部やアプリケーションに通知される。詳細は後述する。これにより、検出される入力位置のＺ座標の小さなぶらつきにより、タッチとリリースの判定が繰り返されることを防止できる。
【００２２】
表示制御部２１７は、データ取得部２１６が外部ストレージから取得した電子データを使って表示画面を生成し、プロジェクタ２０９に画面を出力する。本実施形態では、図１のように表示画面には電子データが表示アイテム（１０２ａ〜１０２ｄ）として配置されている。また、表示制御部２１７は、判定部２１４から入力されるタッチイベント情報に応じて表示アイテムの表示や表示画面そのものを制御する。
【００２３】
本実施形態における情報処理装置１００の処理過程を図３、図４のフローチャート及び図９に示すユーザの操作例を参照して詳細に説明する。まず、図９（ａ）はユーザがフリックを行った時のｘｙ平面上の指の移動を表わしており、図９（ｂ）はｘｚ平面上の指の移動を表わしている。ｘｙ平面は操作面と平行な平面であり、ｚ軸は操作面に対して垂直方向の位置を表す。ここで、図９（ｂ）の９００は指先が操作面上にタッチしたかどうかを判定するタッチ閾値、９０１は指先が操作面からリリースしたかどうかを判定するリリース閾値とする。本実施形態では、操作面から指先までの距離がタッチ閾値より小さければ指先が操作面をタッチしているタッチ状態である、操作面から指先までの距離がリリース閾値を超えれば指先が操作面からリリースされているリリース状態であると特定される。なお、本実施形態では、タッチ閾値９００の初期値は「１５」、リリース閾値９０１の初期値は「２０」とする。
【００２４】
次に、図３を用いて本実施形態のメインフローについて説明する。まず、情報処理装置１００の電源がＯＮになると、ステップＳ３００において、データ取得部２１６は、外部ストレージからデータを取得する。そして、表示制御部２１７は取得したデータとＵＩ部品を配置した画面を生成し、プロジェクタ２０９へ出力する。その結果、図１のようにテーブル面上にはプロジェクタから投影された画面が表示される。
【００２５】
ステップＳ３０１において、情報処理装置１００は、プロジェクタの投影方向と同じ方向に赤外光を照射する。赤外光は情報処理装置１００に搭載されている赤外光発光部２０７から照射される。赤外光は情報処理装置１００の電源がＯＮの状態の間、常に照射されている。プロジェクタの投影範囲内にユーザの手指やその他の物体が入り込むと、赤外光はその表面で反射する。ここで、投影範囲内の全ての領域において適切に赤外光が反射するように、赤外照射範囲はキャリブレーションされているものとする。また、赤外反射光は、情報処理装置１００に搭載されている赤外カメラ２０８によって、赤外強度画像として撮像されるものとする。
【００２６】
ステップＳ３０２において、画像取得部２１０は、赤外カメラ２０８によって撮像された赤外強度画像を規定のフレーム間隔で取得し、フレーム毎にＲＡＭ２０１に保持する。本実施形態では、３０ミリ秒間隔でフレームを取得するものとする。ステップＳ３０３において、領域検出部２１１は、ＲＡＭ２０１に保持されている赤外強度画像を解析し、投影範囲内に物体が挿入されたかどうかの検出を行う。本実施形態では、赤外光の反射強度が物体によって異なる性質を利用し、何らかの物体が写り込んだ際の赤外強度画像と、テーブルのみが写っている赤外強度画像との差分（背景差分）処理を行うことによって、写り込んだ物体領域の検出を行う。本実施形態では、物体領域の検出に赤外カメラ２０８を用いたが、これは一例であり、これに限らない。たとえば、ステレオカメラや距離画像センサを利用し、肌色情報や手のモデル情報などを利用し、物体領域を検出しても良い。
ここで、物体が検出されなかった場合（ステップＳ３０３でＮＯ）、ステップＳ３０２に処理が戻り、物体が検出されるまでステップＳ３０２とステップＳ３０３の処理を繰り返す。
一方、物体が検出された場合（ステップＳ３０３でＹＥＳ）、ステップＳ３０４のタッチ判定処理に移行する。ステップＳ３０４では、タッチ操作の認識処理が実行される。ステップＳ３０４の詳細な内容は、図４のフローチャートを参照して後述する。
【００２７】
ステップＳ３０４のタッチ操作認識処理において、タッチ操作が検出されると、認識部２１５により、タッチ、リリース、ムーブ、フリックといった、タッチ操作を表すイベントが表示制御部２１７に通知される。ステップＳ３０５において、表示制御部２１７は、通知されたタッチイベントの種類に応じて、プロジェクタ２０９によって投影されている画面中の表示アイテムの表示や表示画面そのものを更新する。ステップＳ３０５の処理が終了すると、ステップＳ３０６において、情報処理装置１００は、電源がＯＦＦされたかどうかを判定する。電源がＯＦＦされていない場合（ステップＳ３０６でＮＯ）、ステップＳ３０２へ処理が移行し、新たな物体が検出される度に、前述した処理を繰り返す。一方、電源がＯＦＦされた場合（ステップＳ３０６でＹＥＳ）、情報処理装置１００は全ての処理を終了する。
【００２８】
続いて、図４のフローチャートを用いて、ステップＳ３０４のタッチ操作認識処理について詳細に説明する。
【００２９】
ステップＳ３０４の処理が開始されると、ステップＳ４００において、領域検出部２１１は、検出した物体領域が手領域なのか、それとも手以外の領域なのかを判定する。本実施形態では、検出された物体領域の大きさと縦横比を用い、簡単な手形状の認識を行うことによって手領域かどうかの判定を行う。検出した物体領域が手領域でなかった場合（ステップＳ４００でＮＯ）、タッチ操作認識処理は終了し、呼び出し元にリターンされ、前述したステップＳ３０５の処理に移行する。一方、検出した物体領域が手領域だった場合（ステップＳ４００でＹＥＳ）、ステップＳ４０１へ処理が移行する。この時、領域検出部２１１は、赤外強度画像のうち手領域に該当するピクセルに対してラベリングを行い、ラベリング後の赤外強度画像をＲＡＭ２０１に保持する。
【００３０】
ステップＳ４０１において、位置特定部２１２は、ラベリング情報に基づいて赤外強度画像中の手領域を特定し、さらにその手領域内において入力位置のｘ、ｙ座標を特定する。本実施形態では、「手領域と撮影範囲の境界線とが交わる位置を表す座標値の平均」を手指の侵入位置を示す座標と定義し、侵入位置から最も遠い手領域の点を入力位置（指先位置）のｘ、ｙ座標として特定する。そして、特定された入力位置のｘ、ｙ座標はＲＡＭ２０１に保持される。
【００３１】
ステップＳ４０２において、位置特定部２１２は、ＲＡＭ２０１に保持されている赤外強度画像と入力位置のｘ、ｙ座標から、入力位置に対応するピクセルの赤外強度を取得する。ここで、入力位置の１ピクセルの輝度のみの場合、輝度にバラつきが発生するため、本実施形態では、入力位置を含む規定のピクセル領域の輝度平均を入力位置の輝度として算出するものとする。算出した輝度情報はＲＡＭ２０１に保持する。
【００３２】
そして、ステップＳ４０３において、位置特定部２１２は、算出した指先の輝度情報を指先と赤外カメラ２０８間の垂直距離Ｌｆに変換する。本実施形態では、空間上での座標が既知である複数の点群の輝度を予め測定しておくことによって、任意の座標に位置する指先の輝度情報から垂直距離Ｌｆを算出する。また、赤外カメラ２０８から操作面１０１までの垂直距離Ｌｔも予め分かっているので、指先とテーブル間の垂直距離ｈＬ（高さ）は、ｈＬ＝Ｌｔ−Ｌｆで求められる。
【００３３】
たとえば、赤外カメラ２０８から操作面１０１までの垂直距離Ｌｔが１０００ｍｍ、指先と赤外カメラ２０８間の垂直距離Ｌｆが９８５ｍｍであった場合、指先とテーブルまでの距離は１５ｍｍとなる。ここで算出した１５ｍｍが入力位置のｚ軸上の座標情報を表わす。以上、ステップＳ４０３までの処理により、入力位置の３次元空間（ｘ、ｙ、ｚ）の座標情報を取得することができる。以降のフローでは、情報を用いてタッチ操作の判定を行う。以下では、ステップＳ３０２からステップＳ４０３までの一連のステップを「入力位置の特定処理」と名付け、以降の説明で利用する。
【００３４】
入力位置の特定処理後、ステップＳ４０４において、設定部２１３は、１ミリ秒あたりの指先のＸ、Ｙ空間上での移動速度を算出する。たとえば、フレームは３０ミリ秒間隔で取得しており、１フレームの間にＸ座標が３０ミリ、Ｙ座標が３０ミリ動いたとすると、１ミリ秒を単位時間とする移動速度は、
以下の式１のように求められる。
【００３５】
【数１】
0006452456.tif 000002
【００３６】
次に、ステップＳ４０５において、設定部２１３は、取得された指先の移動速度と、予め定められた基準に従ってリリース閾値を設定する。閾値の設定方法について図５を用いて詳細に説明する。図５（ａ）は、指先の移動速度に応じた複数の条件の候補の一例であって、段階的にレベル分けされる移動速度と、複数のリリース閾値の対応関係を表わすテーブルである。たとえば、ステップＳ４０４で算出した指先の移動速度が「０〜０．５」であった場合、リリース閾値を「２０」に設定する。同様に移動速度が「０．５〜１」の場合はリリース閾値を「３０」に、移動速度が「１〜２」の場合はリリース閾値を「４０」に、移動速度が「２」を超える場合は、設定部２１３は、リリース閾値を「５０」と設定する。従って、移動速度が「１．４」である場合、設定部２１３は、リリリース閾値を「４０」と設定する。このように本実施形態では、取得した移動速度がある所定の速度よりも大きい場合は、取得した移動速度が当該所定の速度より小さい場合よりも、大きなリリース閾値が設定される。つまり、移動速度が大きい方が、条件が厳しくなるように制御される。なお、このテーブルで設定したリリース閾値は一例であり、これに限らない。
【００３７】
ステップＳ４０６〜ステップＳ４１０において、判定部２１４は、指先が操作面にタッチしているタッチ状態であるか、操作面からリリースされているリリース状態であるかを判定する。なお、情報処理装置１００の初期状態はリリース状態である。
【００３８】
まず、ステップＳ４０６において、判定部２１４は、算出した指先とテーブル面との距離ｈＬを用いてタッチ判定を行う。具体的には、指先とテーブル面との距離ｈＬとタッチ閾値を比較する。距離ｈＬがタッチ閾値より小さいかあるいは一致する場合（ステップＳ４０６でＹＥＳ）、ステップＳ４０９へ移行し、タッチ状態に遷移する。一方、距離ｈＬがタッチ閾値を超えている場合（ステップＳ４０６でＮＯ）、ステップＳ４０７へ移行する。なお、距離ｈＬとタッチ閾値と一致する場合にいずれと判定するかは、タッチ閾値の値とともに任意に設定されればよい。
【００３９】
ステップＳ４０７において、判定部２１４は、距離ｈＬがリリース閾値以内であるかどうかでリリース判定を行う。リリース閾値を超えている場合（ステップＳ４０７でＮＯ）、ステップＳ４１０へ移行し、リリース状態に遷移する。リリース閾値より小さいかあるいは一致する場合（ステップＳ４０７でＹＥＳ）、ステップＳ４０８へ移行する。
【００４０】
ステップＳ４０８において、判定部２１４は、直前の判定の結果はタッチ状態であったか否かを判定する。タッチ状態であった場合（ステップＳ４０８でＹＥＳ）、ステップＳ４０９へ移行し、タッチ状態を持続する。タッチ状態でない場合（ステップＳ４０８でＮＯ）、リリース状態に遷移する。すなわち、操作体が操作面からリリースされたと判定する。
【００４１】
ステップＳ４１１において、認識部２１５は、ステップＳ４０６〜ステップＳ４１０で判定したタッチ／リリース状態及び、入力位置の特定処理で検出したｘ、ｙ座標に基づいてタッチ操作の判定を行う。これにより、タッチ、リリース、ムーブ、フリックなどのタッチイベントを生成し、表示制御部２１７に通知する。その後、ステップＳ３０５に移行し、表示制御部２１７は、タッチイベントに応じて投影画面の表示を更新する。その後、ステップＳ３０６において、情報処理装置１００の電源がＯＦＦでなければ、再びステップ３０２に戻り、入力位置の特定処理から処理が繰り返される。
【００４２】
以上が、本実施形態において、情報処理装置１００に対して入力されたユーザ操作に応じて、リリース閾値を制御する処理である。このように、本実施形態では、操作体が操作面にタッチしている間の移動速度に応じて、操作面がリリースされたことを判定するための条件を異ならせる。特に、移動速度が速い程、リリースされたことを判定するための条件は厳しく設定される。従って、本実施形態によれば、操作体が高速に動かされることで検出誤差の発生し易い状況においても、リリースの検出精度を向上させることが可能となる。それによってさらに、タッチ操作の認識精度を向上させることができる。
【００４３】
なお、本実施形態では指先の移動速度に応じてリリース閾値を動的に制御したが、リリース閾値を固定にし、閾値と比較するｚ座標などの算出方法を、操作面から操作体がリリースされたかを判定するため条件として制御してもよい。いずれの方法でも、リリース操作の“判定され易さ”を、ユーザに設定作業をさせることなく、変動させることが可能となる。また、リリース距離ｈＬがリリース閾値を越えたことに加えて、その状態（リリース状態）が所定の時間より長く継続された場合に、操作体が操作面からリリースされたと判定してもよい。その場合のフローチャートを図１０に示す。図４との違いは、ステップＳ４０４とステップＳ４０５の処理を行わないことである。また、リリース状態に遷移する直前にステップＳ１０００の処理を実行する。ステップＳ１０００において、判定部２１４は、リリースの閾値を超えている時間が所定時間経過しているかどうかを判定する。所定時間経過している場合（ステップＳ１０００でＹＥＳ）、ステップＳ４１０に移行し、リリース状態に遷移する。所定時間経過していない場合（ステップＳ１０００でＮＯ）、ステップＳ４０９に移行し、タッチ状態とする。また、リリース状態を判定する所定の時間の長さを、前記操作体が前記操作面にタッチしている時間の長さに対応して特定される可変の値としてもよい。
【００４４】
＜変形例１＞
第１の実施形態では、操作面にタッチしている間の操作体の移動における最高到達速度に基づいて、操作体が操作面上からリリースされたかを判定するため条件となるリリース閾値が設定される例であった。以下では変形例として、移動速度が予め定められた上限値を越えた後で減速し、上限値を下回った場合は、リリース速度を再設定する例を説明する。
【００４５】
ダブルタップやトリプルタップなど、タッチとリリースを複数回繰り返し入力するような場合を除いて、タッチ操作が終了して操作体がリリースされるときは、十分に大きく操作面から離されるので、リリース閾値が大きすぎて問題が生じる場合は少ない。ただし、タッチとリリースを複数回繰り返し入力するような場合は、動作を効率化するために、操作体を移動させる距離は短くなる傾向がある。従って、リリース閾値がデフォルト値より大きく設定されたままでは、タッチとリリースが繰り返されるような場合は、ユーザはリリースしたつもりなのにリリースしたとは認識されない場合が生じ得る。一方で、タッチとリリースが繰り返されるような操作は高速移動を続けながら入力されることは少ない。従って、変形例１では、操作体が減速して基準を下回った場合にはリリース閾値を再設定することによって、タッチとリリースが繰り返されるような場面でも、ユーザがリリースを意図したタイミングでリリースを検出し易くなる。このような変形により、更に多様なタッチ操作の入力において、リリース検出の精度を向上させることが可能となる。
【００４６】
変形例１における、システムの外観、ハードウェア構成は、第１の実施形態の図１、図２（ａ）と同様である。また、機能構成も設定部２１３を除いて第１の実施形態と同様であるため、異なる点のみを説明する。変形例１の設定部２１３は、第１の実施形態における処理に加えて、更に、指先の移動速度が上限値に達したかどうかを判定する。移動速度が上限値に達してから移動速度が落ちた場合、リリース閾値を初期値に設定するものである。設定したリリース閾値はＲＡＭ２０１に保持するものとする。詳細は後述する。
【００４７】
変形例１の情報処理装置も、第１の実施形態と同様、図３のフローチャートに従ってメイン処理を実行する。ただし、ステップＳ３０４のタッチ操作認識処理の内容が異なる。図６は、変形例１におけるタッチ判定処理を示すフローチャートである。ステップＳ４００〜ステップＳ４０４までは第１の実施形態と同様である。変形例１では、ステップＳ４０４で移動速度を算出した後、ステップＳ６００のリリース閾値の制御処理に以降する。
【００４８】
図７は、ステップＳ６００のリリース閾値の制御処理の流れの一例を示すフローチャートである。ステップＳ７０１において、設定部２１３は、移動速度が上限値を超えているかどうかを判定する。ここで、移動速度の上限値とは、たとえば図５（ａ）では「２」であり、移動速度が２を超えているかどうかを判定する。取得された移動速度が上限値を超えている場合（ステップＳ７０１でＹＥＳ）、ステップＳ７０２に以降する。ステップＳ７０２において、設定部２１３は、現在の入力状態が最大速度状態であることを示す情報を保持するため、「最大速度フラグ」を「ＴＲＵＥ」に設定し、ステップＳ７０３に以降する。ここで、「最大速度フラグ」とは、指先の移動速度が上限値を超えたかどうかの状態を表わしており、初期値は「ＦＡＬＳＥ」である。ステップＳ７０３において、設定部２１３は、リリース閾値に「５０」を設定し、呼び出し元にリターンされる。
【００４９】
一方、移動速度が上限値を超えていない場合（ステップＳ７０１でＮＯ）、ステップＳ７０４に以降する。ステップＳ７０４において、設定部２１３は、「最大速度フラグ」の値を参照して前回の移動速度が最大速度であったかどうかを判定する。「最大速度フラグ」が「ＴＲＵＥ」である場合（ステップＳ７０４でＹＥＳ）、ステップＳ７０５に移行する。ステップＳ７０５において、設定部２１３は、リリース閾値に初期値である「２０」を設定し、「最大速度フラグ」を「ＦＡＬＳＥ」にしてから呼び出し元にリターンされる。この処理により、リリース閾値を初期値にした為、減速後はリリースを判定する条件が緩和されるため、リリースが認識されやすくなる。
【００５０】
一方、最大速度フラグが「ＦＡＬＳＥ」である場合（ステップＳ７０４でＮＯ）、ステップＳ７０６に移行する。ステップＳ７０６において、設定部２１３は、第１の実施形態と同様に図４（ａ）に従って、指先の移動速度に応じたリリース閾値を設定し、呼び出し元にリターンされる。リターンされた後は、ステップＳ４０６の処理に移行し、その後の処理は、第１の実施形態と同様である。
【００５１】
なお、変形例１ではステップＳ７０５でリリース閾値を初期値に設定したが、これは一例であり、これに限らない。たとえば、初期値ではなく所定の値に設定しても良い。また、初期値に一度に戻すのではなく段階的に戻しても良い。つまり、第１の実施形態よりもリリース閾値を小さくすれば良い。変形例１によれば、移動速度が落ちた際は第１の実施形態よりも早くリリースの判定条件（リリース閾値）を緩和することで、リリースと認識されるタイミングが早くなる。これにより、ユーザが意図する操作の認識率を向上することが可能となる。
【００５２】
＜変形例２＞
第１の実施形態では、タッチ中の操作体の移動速度に基づいて、操作体が操作面上からリリースされたかを判定するため条件となるリリース閾値を設定した。ただし、本実施形態において、条件を変動させる根拠として利用できる操作体の状態は、移動速度に限らない。変形例２では、タッチ中の操作体の移動方向に基づいて、条件を変動させる。具体的には、タッチ中の操作体の移動方向が大きくが変わった場合に、リリース閾値を小さい値に設定する。つまり、条件を緩和して、リリースが認識されやすいように制御を行う。
【００５３】
タッチ操作で機器を操作する場合、異なる方向に向けたムーブ（タッチしながら操作体を操作面上で移動させる操作で、ここではリリース時にフリックを伴わないものを指す）操作を、繰り返し入力する場合がある。この場合にも、ユーザが意識しているか否かに関わらず、動作を効率化するため、操作体を移動させる距離が短くなる傾向があり、操作体を操作面から遠ざけながら次の入力のための移動が開始されることがある。ユーザは、Ｎ回目の入力を終了してから指先を移動させているつもりであっても、指先の高さはリリース閾値を越えておらず、意図に反したムーブ操作が認識される可能性がある。従って、変形例２では、操作体の移動方向が大きく変化した場合にはリリース閾値を小さく設定することによって、異なる方向に向けたムーブ操作が繰り返されるような場面でも、ユーザがリリースを意図したタイミングでリリースを検出し易くなる。このような変形により、更に多様なタッチ操作の入力において、リリース検出の精度を向上させることが可能となる。
【００５４】
変形例２における、システムの外観、ハードウェア構成は、第１の実施形態の図１、図２（ａ）と同様である。また、機能構成も設定部２１３を除いて第１の実施形態と同様であるため、異なる点のみを説明する。設定部２１３は、第１の実施形態では、指先の移動速度を検出したが、変形例１では、指先の移動方向を検出する。また、移動方向が変わった際は、リリース閾値を小さい値に設定し、設定したリリース閾値をＲＡＭ２０１に保持する。
【００５５】
変形例２の情報処理装置も、第１の実施形態と同様、図３のフローチャートに従ってメイン処理を実行する。ただし、ステップＳ３０４のタッチ操作認識処理の内容が異なる。
【００５６】
図８は、変形例２におけるタッチ判定処理を示すフローチャートである。
ステップＳ４０３までは、第１の実施形態と同様である。変形例２では、ステップＳ４０３の後、ステップＳ８００に移行する。ステップＳ８００において、設定部２１３は、指先の移動方向を検出しステップＳ８０１に以降する。
【００５７】
移動方向の検出は、たとえば以下のように行う。フレーム１の指先の位置座標が（Ｘ１、Ｙ１）、３０ミリ秒後のフレーム２の指先の位置座標が（Ｘ２、Ｙ２）とした場合、フレーム１からフレーム２への指先の移動方向θは、以下の式２を利用して表すことができる。変形例２では、式２と、アークタンジェントθから指先の移動方向を取得する。
【００５８】
ＴＡＮθ＝（Ｘ１−Ｘ２）／（Ｙ２−Ｙ１）…（式２）
ステップＳ８０１において、設定部２１３は、指先の移動方向の変化に応じて、リリース閾値を設定する。図４（ｂ）により、前回と順方向と判定した場合は、リリース閾値を「２０」に設定し、前回と逆方向と判定した場合はリリース閾値を「１０」に設定する。ここで設定した値は一例である。移動方向が逆方向になった場合、順方向の時よりも小さい値を設定すれば良い。また、順方向と逆方向の２つの分類に限らず、さらに粒度を細かくしてもよい。その後、ステップＳ４０６の処理に移行し、第１の実施形態と同様の処理を行う。
【００５９】
以上のように、変形例２によれば、移動方向が変化したことに応じてリリースの判定条件（リリース閾値）を緩和することで、リリースが認識されるタイミングが通常よりも早くなる。これにより、ユーザが意図する操作の認識率を向上することが可能となる。
【００６０】
ただし、本実施形態において、条件を変動させる根拠として利用できる操作体の状態の例として、移動方向を利用する例を説明したがこれに限らない。たとえば、設定部２１３は、タッチ状態後の総移動距離を算出し、総移動距離に応じてリリース閾値を設定しても良い。たとえば、図４（ｃ）のテーブルに従ってリリース閾値を設定する。この場合、総移動距離が「０〜１０未満」の場合は「２０」、「１０〜１００未満」の場合は「３０」、「１００〜２００未満」の場合は「４０」、「２００以上」の場合は、「５０」とする。
【００６１】
また、設定部２１３はタッチ状態に移行した後の経過時間、つまり操作体が操作面にタッチしている時間の長さに応じてリリース閾値を設定しても良い。たとえば、図４（ｄ）のようなテーブルに従ってリリース閾値を設定する。この場合、タッチ時間が「０〜１０未満」の場合は「２０」、「１０〜２０未満」の場合は「３０」、「２０〜４０未満」の場合は「４０」、「４０以上」の場合は「５０」に設定する。
【００６２】
なお、上述した変形例においても、第１の実施形態と同様、リリース閾値は固定して、閾値と比較するｚ座標などの算出方法を、操作面から操作体がリリースされたかを判定するため条件として制御してもよい。また、リリース閾値を固定した場合は、距離ｈＬがリリース閾値を超えている状態（リリース状態）が所定の時間より長く継続された場合に、操作体が操作面からリリースされたと判定しても良い。その場合、リリース状態を判定する所定の時間の長さを、前記操作体が前記操作面にタッチしている時間の長さに対応して特定される可変の値としてもよい。
【００６３】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６４】
２１０  画像取得部
２１１  領域検出部
２１２  位置特定部
２１３  設定部
２１４  判定部
２１５  認識部
２１７  表示制御部
【図１】
0006452456.tif 000003
【図２】
0006452456.tif 000004
【図３】
0006452456.tif 000005
【図４】
0006452456.tif 000006
【図５】
0006452456.tif 000007
【図６】
0006452456.tif 000008
【図７】
0006452456.tif 000009
【図８】
0006452456.tif 000010
【図９】
0006452456.tif 000011
【図１０】
0006452456.tif 000012