(57)【要約】【課題】  本発明は、タッチ対象面が、高さが一様な平面ではない場合でも、認識対象とタッチ対象面の近接状態に基づいて複数の種別のタッチ操作を認識する場合の誤認識を低減することを目的とする。【解決手段】  本発明は、上記を鑑みてなされたものであり、認識対象によるタッチ操作を認識する情報処理装置であって、前記認識対象によって示される指示位置を検出し、タッチ対象面の表面形状を示す情報を取得し、前記検出された指示位置と、前記取得された前記タッチ対象面の表面形状を示す情報とに基づいて、前記タッチ対象面が前記認識対象によってタッチされているかを判定し、前記判定では、前記認識対象が前記タッチ対象面をタッチしたまま移動している間は、前記取得された前記タッチ対象面の表面形状を示す情報のうち、前記認識対象が移動してきた経路上の表面形状を示す情報に基づいて、前記判定を行うことを特徴とする。【選択図】  図３
2015084173.tif 000002
【特許請求の範囲】
【請求項１】
認識対象によるタッチ操作を認識する情報処理装置であって、
前記認識対象によって示される指示位置を検出する検出手段と、
タッチ対象面の表面形状を示す情報を取得する取得手段と、
前記検出手段が検出した指示位置と、前記取得手段が取得した前記タッチ対象面の表面形状を示す情報とに基づいて、前記タッチ対象面が前記認識対象によってタッチされているかを判定する判定手段とを備え、
前記判定手段は、前記認識対象が前記タッチ対象面をタッチしたまま移動している間は、前記取得手段が取得した前記タッチ対象面の表面形状を示す情報のうち、前記認識対象が移動してきた経路上の表面形状を示す情報に基づいて、前記判定を行うことを特徴とする情報処理装置。
【請求項２】
前記タッチ対象面とは、基準面の表面と前記基準面に載置された物体の表面とを含む、高さが一様でない面であって、前記表面形状を示す情報とは、当該一様でない高さを示す情報であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
さらに、前記取得手段が取得した前記タッチ対象面の表面形状を示す情報に基づいて、前記判定手段が、前記タッチ対象面における、前記検出手段が検出した指示位置に対応する位置が、前記認識対象によってタッチされているかを判定するための条件を設定する設定手段を備え、
前記判定手段は、前記検出手段が検出した指示位置が、前記設定手段が設定した条件を満たす場合に、前記タッチ対象面が前記認識対象によってタッチされていると判定する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定手段は、前記認識対象が前記タッチ対象面をタッチしたまま移動している間は、前記認識対象が移動してきた経路上で、前記タッチ対象面の高さが最大であった位置において前記設定手段に設定された条件に基づいて、前記判定を行うことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
さらに、前記判定手段による判定結果と、前記検出手段が検出された指示位置の動きに基づいて、前記認識対象によって行われているタッチ操作の種別を特定する特定手段を備え、
前記設定手段は、前記特定手段が特定したタッチ操作の種別が、ドラッグ操作である場合は、前記特定手段が特定したタッチ操作の種別がドラッグ操作ではない場合とは異なる条件を設定することを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記設定手段は、前記特定手段により、前記認識対象により前記ドラッグ操作が行われていると特定された場合、当該ドラッグ操作のそれまでの経路上の、前記タッチ対象面の表面形状を示す情報に基づいて、当該ドラッグ操作が終了されるまでの間、前記判定手段が、前記タッチ対象面における、前記検出手段が検出した指示位置に対応する位置が前記認識対象によってタッチされているかを判定するための条件を設定することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記設定手段は、前記条件として、前記取得手段が取得した表面形状を示す情報に基づいて、前記タッチ対象面の前記検出手段が検出した指示位置に対応する、基準面と前記認識対象の間の距離の閾値を設定し、
前記判定手段は、前記基準面と前記認識対象の間の距離が、前記設定手段が設定した閾値より小さい場合、前記タッチ対象面の前記検出手段が検出した指示位置に対応する位置が、前記認識対象によってタッチされていると判定する
ことを特徴とする請求項３乃至６のいずれか１項のいずれか１項に記載の情報処理装置。
【請求項８】
前記設定手段は、前記特定手段により、前記認識対象により前記ドラッグ操作が行われていると特定された場合に、当該ドラッグ操作のそれまでの経路上で、前記設定手段に設定された閾値のうち最大の閾値を取得する最大値取得手段を備え、
当該ドラッグ操作が終了されるまでの間は、前記基準面と前記認識対象の間の距離が、前記最大値取得手段が取得した最大の閾値より小さい場合、前記タッチ対象面の前記検出手段が検出した指示位置に対応する位置が、前記認識対象によってタッチされていると判定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記設定手段は、前記特定手段により、前記認識対象により前記ドラッグ操作が行われていると特定された場合、前記タッチ対象面の、前記検出手段が検出する指示位置に対応する位置の高さが低下してから前記認識対象が前記タッチ対象面をタッチした状態が継続されるかに応じて、前記閾値を再設定することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記タッチ対象面の表面形状を示す情報とは、少なくとも前記基準面と交わる方向の座標軸における、前記タッチ対象面の表面の座標情報を含むことを特徴とする請求項２乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記設定手段は、前記タッチ対象面の、前記検出手段が検出した指示位置に対応する位置での前記座標情報に基づいて、前記指示位置における前記閾値を設定することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記設定手段は、前記タッチ対象面の、前記検出手段が検出した指示位置に対応する位置の周囲の前記座標情報の平均値に基づいて、前記指示位置における前記閾値を設定することを特徴とする請求項１０に記載の情報処理装置。
【請求項１３】
認識対象によるタッチ操作を認識する情報処理装置の制御方法であって、
検出手段により、前記認識対象によって示される指示位置を検出する検出工程と、
取得手段により、タッチ対象面の表面形状を示す情報を取得する取得工程と、
判定手段により、前記検出工程で検出した指示位置と、前記取得工程で取得した表面形状を示す情報とに基づいて前記タッチ対象面が前記認識対象によってタッチされているかを判定する判定工程とを有し、
前記判定工程では、前記認識対象が前記タッチ対象面をタッチしたまま移動している間は、前記取得手段が取得した前記タッチ対象面の表面形状を示す情報のうち、前記認識対象が移動してきた経路上の表面形状を示す情報に基づいて、前記判定を行うことを特徴とする情報処理装置の制御方法。
【請求項１４】
コンピュータに読み取らせ実行させることによって、前記コンピュータを請求項１に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項１５】
請求項１４に記載のプログラムが記憶されたコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は認識対象とタッチ対象面の近接状態に基づいて、当該認識対象によって行われるタッチ操作を認識する技術に関する。
【背景技術】
【０００２】
近年では、ＡＲ（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）やＭＲ（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）といった環境において、物理的には存在しないタッチ対象面（仮想面）に対するタッチ操作が行われる場面がある。また、プロジェクションによってユーザインタフェース（以下、ＵＩ）を壁や机、物体の表面など任意のタッチ対象面に投影し、投影したＵＩに対してタッチ操作が行われる場面がある。以下、特に、ＵＩを構成する部品や動画像を投影対象とする面（例えば、壁面や机の上面）に投影し、投影した内容に対するユーザの操作を実現するＵＩの形態を投影ＵＩという。投影ＵＩにおいては、タッチ状態における認識対象の動作に基づいて、行われたタッチ操作の種別を判定する。これによって、従来のタッチパネルＵＩにおけるタップ（画面中の１箇所を軽くたたくようにタッチする操作で、マウス操作におけるクリックに相当）やドラッグ（タッチしたまま指示位置を動かす）と同等の操作が実現されている。以下、タップやドラッグ等といった操作の種別を操作種別という。
【０００３】
投影ＵＩや仮想面に対するタッチ操作を認識する場合、ステレオカメラや距離画像センサ等を用い、タッチ対象面と、操作を行う指示部として認識すべき認識対象（例えばユーザの指）との間の距離に基づき、両者が接触しているか否かを判断することが多い。具体的には、タッチ対象面と、タッチ対象面に近接している認識対象との間の距離に所定の閾値を設ける。そして、当該距離が閾値より小さければ、タッチ対象面がタッチされている状態を示す「タッチ状態」、閾値より大きければタッチ対象面がタッチされていない状態を示す「非タッチ状態（リリース状態）」であるという判定を行う。以下、このように、認識対象とタッチ操作の対象面の近接状態に基づいてタッチ状態と非タッチ状態を判定する処理をタッチ判定、タッチ判定にいる閾値をタッチ判定閾値と記載する。
【０００４】
このように、タッチ対象面と認識対象の間の近接状態に応じてユーザによるタッチ操作を判定する方法として、特許文献１が提案されている。特許文献１では、センサと認識対象の間の距離に応じて表示内容を変化させることで、ユーザによる操作が、装置によってどのように認識されるかを教示し、ユーザの入力を支援することを可能にしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−４５２１７
【発明の概要】
【発明が解決しようとする課題】
【０００６】
投影ＵＩや仮想面に対するタッチ操作の場合、タッチ操作の対象となる面は必ずしも平面である必要はない。しかしながら、特許文献１では、センサと認識対象の間の距離とあらかじめ設定された基準との比較を行うものであった。すなわち、タッチ対象面の高さは一様であることが前提とされている。しかしながら、タッチ操作の種別によっては、認識対象は操作中も平行移動を続けるため、タッチ対象面の高さが一様でない場合には、認識対象の高さが変化しなくても、タッチ対象面との間隔が変わってしまうことがある。
【０００７】
本発明は、上記課題を考慮したものであり、タッチ対象面が、高さが一様な平面ではない場合でも、認識対象とタッチ対象面の近接状態に基づいて複数の種別のタッチ操作を認識する場合の誤認識を低減することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、認識対象によるタッチ操作を認識する情報処理装置であって、前記認識対象によって示される指示位置を検出する検出手段と、タッチ対象面の表面形状を示す情報を取得する取得手段と、前記検出手段が検出した指示位置と、前記取得手段が取得した前記タッチ対象面の表面形状を示す情報とに基づいて、前記タッチ対象面が前記認識対象によってタッチされているかを判定する判定手段とを備え、前記判定手段は、前記認識対象が前記タッチ対象面をタッチしたまま移動している間は、前記取得手段が取得した前記タッチ対象面の表面形状を示す情報のうち、前記認識対象が移動してきた経路上の表面形状を示す情報に基づいて、前記判定を行うことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、タッチ対象面が一様な平面ではない場合でも、認識対象とタッチ対象面の近接状態に基づいて複数の種別のタッチ操作を認識する場合の誤認識を低減することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置の外観及びハードウェア構成の一例を示す図
【図２】情報処理装置の機能構成の一例を示すブロック図
【図３】情報処理装置が実行するタッチ操作の認識処理の一例を示すフローチャート
【図４】情報処理装置が実行する閾値設定処理の一例を示すフローチャート
【図５】情報処理装置が設定するタッチ判定の閾値の一例を示す図
【図６】一様な平面でないタッチ対象面上でのドラッグ操作の様子を示す図
【図７】情報処理装置を使ってドラッグ操作を行った際に取得できるデータと判定結果の一例を示す表
【図８】一様な平面でないタッチ対象面上でのドラッグ操作の様子を示す図
【図９】情報処理装置の操作例を示す図
【図１０】情報処理装置の操作例を示す図
【図１１】情報処理装置が実行する閾値設定処理の一例を示すフローチャート
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面を参照して詳細に説明する。なお、以下で説明する実施形態は、本発明を具体的に実施した場合の一例を示すものであり、これに限るものではない。
【００１２】
＜第１の実施形態＞
第１の実施形態として、平面上に物体が載置された状態で、平面上および物体上の両方に対するタッチ操作が認識される例を説明する。特に、本実施形態に係る情報処理装置では、平面上および物体上の両者を経由するドラッグ操作を認識可能とする。なお、本実施形態では、情報処理装置に対する操作を行う指示部として認識すべき認識対象の一例として、ユーザの手及びその指先を挙げて説明する。ただし、本実施形態は認識対象をスタイラスペンや差し棒などの操作器具に置き換えても適応可能である。
【００１３】
図１（Ａ）は、本実施形態で説明する情報処理装置１００を設置したシステムの外観の一例を示している。図１（Ａ）に示すように情報処理装置１００には投影装置１０５が搭載されており、自由に投影対象とする面を設定できる。テーブル１０１上には物体１０２が置かれている。の例の場合は、情報処理装置１００を、テーブル１０１の上面および物体１０２の上面に対して投影ができるように設置していることを示している。ここで、図１（Ａ）の１０３ａ〜ｄは、投影装置１０５によってテーブル上面および物体上面に投影された電子データやボタンなどＵＩを構成する部品（以下、まとめて表示オブジェクトと記載する）を示している。本実施形態では、テーブル１０１に載置された物がない初期状態では、テーブル１０１表面がタッチ対象面となり、テーブル１０１に物が載置されている場合は、テーブル１０１および載置された物の上側の面がタッチ対象面である。初期状態におけるタッチ対象面を、基準面といい、情報処理装置１００は、認識対象と基準面との距離に基づいて、タッチ対象面が認識対象によってタッチされているかを判断する。本実施形態では、ユーザが手指１０４を使ってタップ操作やドラッグ操作を行い、前記表示オブジェクトに対して入力操作を行う場合について説明する。なお、本実施形態において、ドラッグ操作とは、単に指示位置が移動される操作と、移動が開始されたときの指示位置に表示されているオブジェクトを移動させる操作とを総称するものである。一般に、これらを区別する場合には、単に指示位置が移動される操作はムーブ操作と表現される。また本実施形態ではテーブル１０１および物体１０２に投影対象とする例を述べるが、投影対象はテーブルおよびそこに置かれた物体以外でもよい。例えば壁およびそこに張り付けられた物体に投影して利用しても構わない。また、投影対象面自体が凹凸を有ししている場合にも利用可能である。本実施形態の情報処理装置１００には、投影装置１０５の他に、赤外光発光部１０６と赤外カメラ１０７が搭載されている。赤外光発光部１０６から照射された赤外光はテーブル１０１と物体１０２およびユーザの手指１０４に反射し、赤外反射光として赤外カメラにおいて撮像される。情報処理装置１００は、この赤外画像を各種画像処理することによってタッチ対象面となるテーブル上面と物体上面の表面形状（凹凸状態）および認識対象となる手指の三次元位置を計測し、その結果からタッチ判定を行う。可視光カメラ１０８は、テーブル上に載置された物体や紙媒体等の読み取り対象を読み取った読み取り画像を撮像する。
【００１４】
本実施形態では、赤外光発光部１０６と赤外カメラ１０７を利用して、テーブル上面と物体上面からなるタッチ対象面の三次元位置および手指の三次元位置を計測する方法について記載する。しかし、タッチ対象面の三次元位置および手指の三次元位置を計測する方法はこの限りではなく、代わりにステレオカメラや距離画像センサを利用することで、三次元位置を計測する方法を適応することも可能である。
【００１５】
図１（Ｂ）は、本実施形態における情報処理装置１００のハードウェア構成図である。同図において、ＣＰＵ１１０は、バス１１３を介して接続する各デバイスを統括的に制御する。ＣＰＵ１１０は、読み出し専用メモリ（ＲＯＭ）１１２に記憶された処理ステップやプログラムを読み出して実行する。オペレーティングシステム（ＯＳ）をはじめ、本実施形態に係る各処理プログラム、デバイスドライバ等はＲＯＭ１１２に記憶されており、ランダムアクセスメモリ（ＲＡＭ）１１１に一時記憶され、ＣＰＵ１１０によって適宜実行される。ＲＡＭ１１１は、高速にアクセス可能なＣＰＵ１１０の主メモリ、ワークエリア等の一時記憶領域として用いられる。ここでＯＳおよび各処理プログラム等は図示されていない外部ストレージに記憶されていてもよく、その場合は電源投入時にＲＡＭ１１１に適宜読み込まれ、ＣＰＵ１１０によって起動される。また、ディスプレイＩ／Ｆ１１４は、情報処理装置１００内部で生成される表示オブジェクト（表示画面）を投影装置１０５が処理可能な信号に変換する。入力Ｉ／Ｆ１１５は、赤外カメラ１０７が生成する赤外画像を入力信号として受信し、情報処理装置１００が処理可能な情報に変換する。出力Ｉ／Ｆ１１６は、情報処理装置１００内部で生成される赤外発光命令を赤外光発光部１０６が処理可能な信号に変換する。さらに、可視光カメラ１０８は、本実施形態ではタッチ対象面を上から撮像するように設置され、主に操作エリアに載置されたドキュメントに対する書画カメラの役割を果たす。具体的には、所定の面に載置された紙媒体や物体等、認識対象以外のオブジェクトの、カメラ１０８に向けられた面を可視光撮影し、その撮像画像を取得する。これを本実施形態では、読み取り対象を「読み取る」という。読み取りによって得られた撮像画像は、読み取り対象物以外の部分を除いた画像や、操作によって指示された部分だけが抽出された部分画像として加工され、読み取り画像として記憶される。本実施形態では、情報処理装置１００で投影するデジタルデータは図示されていない外部ストレージに格納されている。さらに、読み取りによって得られた読み取り画像は、外部ストレージに記憶される。外部ストレージとしては、ディスクデバイスやフラッシュメモリ、ネットワークやＵＳＢなどの各種Ｉ／Ｆを介して接続される記憶装置が考えられる。また、赤外カメラ１０７で生成された赤外画像データはＲＡＭ１１１で一時保存され、ＣＰＵ１１０によって適宜処理され、破棄される。ただし、適宜必要なデータは図示されていない外部ストレージに蓄積しても構わない。
【００１６】
図２（Ａ）は、本実施形態における情報処理装置１００の機能ブロック図である。情報処理装置１００は、画像取得部２００、面情報取得部２０１、位置検出部２０２、設定部２０３、最大値取得部２０４、タッチ判定部２０５、特定部２０６、表示制御部２０７、読み取り制御部２０８から構成される。これらの各機能部は、ＣＰＵ１１０が、ＲＯＭ１１２に格納されたプログラムをＲＡＭ１１１に展開し、後述する各フローチャートに従った処理を実行することで実現されている。また例えば、ＣＰＵ１１０を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すればよい。
【００１７】
画像取得部２００は、赤外カメラ１０７で撮像されたタッチ対象面の赤外強度画像を、入力画像として取得する。本実施形態では、情報処理装置１００は、起動されている（電源がＯＮである）間は、赤外光発光部１０６から投影装置１０５の投影方向と同じ方向に赤外光を常時照射する。投影装置１０５の投影範囲にあるテーブル上に物体が置かれると、赤外光はテーブル１０１の表面および物体表面からなるタッチ対象面で反射される。またさらに、タッチ対象面と赤外カメラ１０７の間の空間にユーザの手などの認識対象が挿入された場合には、認識対象の表面によって反射される。赤外カメラ１０７は、このように反射された赤外光を撮像し、赤外強度画像を得る。以後、この赤外強度画像を入力画像として記載する。
【００１８】
面情報取得部２０１は、画像取得部２００にて取得した入力画像を基に、タッチ対象面で反射された赤外光の強度を解析することによって、タッチ対象面の表面形状を示す情報を取得する。タッチ対象面の表面形状情報とは、タッチ対象面の表面上の各点の三次元座標情報であり、少なくともタッチ対象面上の各点と基準面に交わる方向の高さ情報を含む。赤外カメラ１０７に撮像される強度画像の各画素は、赤外光の輝度値に相当する。赤外反射強度は、輝度値が大きいほど反射光が強い、すなわち赤外光発光部１０６に近い位置で反射されたと言え、輝度が小さいほど反射光が弱い、すなわち赤外光発光部１０６に遠い位置で反射されたと言える。従って本実施形態では、このように赤外光の輝度値を、赤外光発光部１０６との距離の情報として利用する。つまり、入力画像は距離画像として扱われる。面情報取得部２０１は、入力画像の画素の位置と輝度値を基に、タッチ対象面の各点の、基準面に平行な二次元面における座標と高さ情報（高さ方向の座標軸における座標）を取得する。
【００１９】
位置検出部２０２は、認識対象によって指示される指示位置を示す三次元位置情報を検出する。本実施形態では、画像取得部２００が取得した入力画像から、背景差分法あるいはフレーム間差分法などにより動体が写る領域を抽出する。本実施形態では、認識対象として人の手指を認識するので、動体領域が、予め記憶された人の手の形状モデルと類似する場合に認識対象として認識し、指先とみなされる位置の座標、指示位置として検出する。タッチ対象面に平行な二次元面における座標は、入力画像の画素の位置から、高さ方向の情報は、指先とみなされる位置周辺で反射された赤外光の輝度値の値から導出される。以下では、指示位置の３次元座標を検出することを、単に「指示位置を検出する」と記載する。なお、動体の検出方法、及び人の手の認識方法、指先の検出方法は、ここで例示したものに限らない。
【００２０】
設定部２０３は、認識対象によってタッチ対象面がタッチされていると決定する（タッチ状態と非タッチ状態を区別する）ための条件となる、基準面からの高さの閾値を設定する。本実施形態では、閾値は、面情報取得部２０１で取得したタッチ対象面の表面形状を示す情報と、位置検出部２０２で検出した指示位置、および、特定部２０６によって特定される現在継続中の操作種別とに基づいて設定される。本実施形態の設定部２０３は、タッチ対象面の表面の高さに一定値を加算した高さを、基準の閾値として設定する。さらに、ユーザがドラッグ操作中の場合には、各時点までのドラッグ操作の経路（認識対象が移動してきた経路）上で最大の高さを有する点に設定された基準の閾値を、その後のタッチ判定に用いる閾値として設定する。ドラッグ操作中以外の場合には、基準の閾値を使ってタッチ判定が行われる。そこで本実施形態の設定部２０３は、最大値取得部２０４を備える。最大値取得部２０４は、ユーザがドラッグ操作中の場合に、当該ドラッグ操作のそれまでの経路上で設定された基準閾値のうちの最大値を取得する機能をもつ。
【００２１】
タッチ判定部２０５は、位置検出部２０２で検出したと、設定部２０３で設定した基準面からの高さとを利用して、認識対象によってタッチ対象面がタッチされているか否かの判断、すなわちタッチ判定を行う。具体的には、指示位置の高さが、その位置に設定された基準面からの高さの閾値よりも小さい場合には、認識対象はタッチ対象面をタッチしているタッチ状態、閾値よりも大きければタッチしていない非タッチ状態であると判定する。つまり、本実施形態では、認識対象が実際にタッチ対象面に接触しているかに関わらず、認識対象が所定の条件を満たすだけタッチ対象面に近接した状態にあることが認識できたことをもって、認識対象がタッチ対象面にタッチしているとみなす。そして、その状態において行われる操作をタッチ操作と表現する。ただし、実際にはタッチ対象面をタッチせず、近接した状態で行われる操作（ホバー操作と呼ばれる）を認識する場合にも、条件の程度を変化させることで、本発明を適応し、高さが一様ではない面に対する操作の誤認識を低減することができる。本実施形態では、指示位置の高さが、その位置に設定された基準面からの高さの閾値と一致する場合は、タッチ状態であると判定するが、これに限らない。高さの閾値に対して、指示位置の高さが閾値未満の場合にタッチ状態と判定されるか、閾値以下の場合にタッチ状態と判定されるかは適宜選択されればよい。
【００２２】
特定部２０６は、タッチ判定部２０５で、タッチ状態と判定されている間の指示位置の動き、及びタッチ状態と非タッチ状態とが反転するタイミングに基づいて、ユーザが情報処理装置１００に入力するタッチ操作の種別を特定する。本実施形態では、少なくともタップ操作とドラッグ操作とを区別して特定する。そして、特定された種別を示すイベントと、種別を特定する根拠となった指示位置の情報とを、表示制御部２０７や読み取り制御部２０８等に通知する。従って例えば、タップ操作が入力された位置に、装置に対して読み取りの実行を指示するコマンドが発生するような操作に関わるＵＩ部品が投影されていれば、当該コマンドが発生され、読み取り制御部２０８に伝えられる。また、ＵＩ部品が移動するドラッグ操作が入力されれば、ＵＩ部品を移動して投影させるべき位置が表示制御部２０７に伝えられる。
【００２３】
表示制御部２０７は、特定部２０６が特定したタッチ操作に対する情報処理装置１００の応答をユーザに提示するため、投影装置１０５に投影させる表示画像を生成し、投影装置１０５に出力する。
【００２４】
読み取り制御部２０８は、ユーザ操作に応じて可視光カメラ１０８を制御し、読み取りのための撮像を行わせるタイミングや、読み取り対象へのフォーカスやズームレベルを調整する。
【００２５】
以下、本実施形態における情報処理装置１００が実行する処理の流れを図３、図４のフローチャートを用いて詳細に説明する。図３は、情報処理装置１００が実行するタッチ操作の認識処理の一例を示すフローチャートである。本実施形態では、上述したように、情報処理装置１００の電源が起動されている状態では、常に入力画像の撮像が行われており、連続して撮像された画像同士の比較からテーブル上に何かしらの変化が生じたことを認識可能な状態にある。本実施形態では、ユーザによってテーブル１０１上に物体１０２が置かれたことで初期状態（テーブル上に何も置かれていない状態）に対して変化が生じたことに応じ、図３のフローチャートが開始される。また、別途置かれたものが何かを認識する処理を実行し、認識結果に応じた投影ＵＩを表示させるなどした状態で、フローチャートを開始してもいい。
【００２６】
まず、ステップＳ１００において、画像取得部２００が、赤外カメラ１０７によって撮像された入力画像を取得する。なお、ここで取得する入力画像は、赤外光発光部１０６によって情報処理装置１００からテーブル１０１方向に照射された赤外光が、テーブル１０１および物体１０２の表面で反射された赤外反射光を、赤外カメラ１０７によって撮像した画像である。本実施形態では、情報処理装置１００が起動している間は常に入力画像の撮像が行われているため、ステップＳ１００の処理は、撮像されている映像のうち、その時点での最新のフレームに相当する静止画像を取得することを示す。
【００２７】
ステップＳ１０１において、面情報取得部２０１が、ステップＳ１００にて取得したタッチ対象面の赤外強度画像からタッチ対象面の表面形状を示す情報を取得する。表面形状を示す情報には、少なくともタッチ対象面の表面の高さ情報が含まれる。本実施形態では、テーブル上面の一点を基準点（原点）とした場合の、タッチ対象面の各点の三次元座標を、表面形状を示す情報とする。三次元座標情報は、タッチ対象面の全ｘｙ座標について、赤外強度画像の対応する画素の輝度から変換式を利用するなどしてｚ方向の垂直距離を算出することによって取得する。本実施形態では、図１（Ａ）に示されるように三次元の座標軸が設定されているものとする。
【００２８】
本実施形態では、以下に示すステップＳ１０２からステップＳ１０８を繰り返して操作種別の特定を行う。以下、ステップＳ１０２からステップＳ１０８までの一連の処理を、特定シーケンスとして記載する。
【００２９】
まず、ステップＳ１０２において、画像取得部２００が、入力画像を取得する。ステップＳ１０２で入力画像を取得する目的は、認識対象であるユーザの手を検出することである。本実施形態では、ステップ１００と同様ステップＳ１０２の処理は、赤外カメラ１０７で常時撮像されている映像のうち、その時点での最新のフレームに相当する静止画像を取得することを示す。
【００３０】
次に、ステップＳ１０３において、位置検出部２０２が、ステップＳ１０２にて取得した入力画像から指示位置を検出する処理を行う。そして、指示位置が検出されたか（検出に成功したか）を判定する。本実施形態では、背景差分法を用い、例えばステップＳ１００で取得した入力画像（ユーザの手が写っていないものとする）と、ステップＳ１０２で取得した入力画像の差分となる領域を抽出する。さらに、抽出された領域の形状と人の手のモデルとのマッチングを取る。マッチング処理の結果、抽出された差分領域が、１本だけ指を伸ばした人の手であるとみなされる場合、そのうち延ばされた指先の位置を、指示位置として検出する。なお、例えば抽出された領域のうち、赤外カメラ１０７の撮影範囲の外郭から最も遠い点を、指示位置として検出するなどの方法を用いても良い。検出処理の結果、指示位置が検出された場合（ステップＳ１０３でＹＥＳ）はステップＳ１０４に進む。指示位置が検出された場合（ステップＳ１０３でＮＯ）はステップＳ１０５に進む。
【００３１】
ステップＳ１０４において、設定部２０３が、タッチ判定処理に用いる指示位置の高さの閾値（タッチ判定閾値ＨＴ）を設定する。本実施形態では、ステップＳ１０３にて検出した指示位置のｘｙ座標と、ステップＳ１０１にて取得したタッチ対象面の表面形状を示す情報、および、前回までのタッチ操作の認識結果から現在ドラッグ操作中であるか否かを示す情報を利用して閾値を設定する。本実施形態の設定部２０３はまず、タッチ対象面の各点におけるタッチ判定で使用される高さ閾値は、当該点におけるタッチ対象面の表面の高さに一定値を加算した値を基準の閾値と設定する。さらに、設定部２０３は、ドラッグ操作中の状態では、ドラッグ操作の経路の各点において設定された基準の閾値のうち、最大の閾値を、実際のタッチ判定で使用する閾値として設定する。タッチ判定の閾値設定処理の詳細は後述する。
【００３２】
ステップＳ１０５では、タッチ判定部２０５が、ステップＳ１０３で検出した指示位置と、ステップＳ１０４で設定したタッチ判定閾値ＨＴを用いてタッチ判定処理を行う。具体的には、指先が検出されており、かつ指示位置のｚ座標がＨ以下であるならば「タッチ状態」と判定し、それ以外であれば「非タッチ状態」と判定する。本実施形態のタッチ判定部２０５は、タッチ判定を行うたびに、タッチ判定の結果と、判定の根拠となった指示位置の位置情報をＲＡＭ１１１に保持する。そして少なくとも、最新の２回分のタッチ判定の結果と、判定結果の根拠となった指示位置の位置情報を蓄積する。本実施形態では、最新の２回分のタッチ判定結果のうち、最後の判定結果が「タッチ状態」で、その直前の判定結果が「非タッチ状態」であった場合は、その時点でタッチ操作が開始されたとみなす。その場合、ＲＡＭ１１１において、最後の判定結果の根拠となった指示位置の情報を「タッチ開始位置」であることを示す情報とともに保持する。タッチ開始位置の位置情報は、最新の２回分のタッチ判定に関する情報とは別に、開始されたタッチ操作が終了されるまで保持され続ける。
【００３３】
ステップＳ１０６では、特定部２０６が、ドラッグ操作がなされている途中か否かを判定する。具体的には、まず、最後のタッチ判定の結果が「タッチ状態」であり、かつ、ｘｙ平面における、タッチ開始位置と最後に検出された指示位置の間の距離が、閾値Ｄ以下であれば、その時点は「ドラッグ操作がなされている途中である」と判定する。以下では、ドラッグ操作がなされている途中の状態を「ドラッグ中」、そうではない状態を「非ドラッグ中」と表記する。なお、閾値Ｄは、ユーザが、タッチ対象面にタッチした状態のまま、操作のために指を平行移動させたか否かを区別するための距離の閾値である。例えば、ユーザは、タッチ対象面上の同じ位置をタッチしている間でも、体が極小さく動いてしまうことがある。また、赤外発光部１０６と指の位置関係や赤外強度画像の解像度（分解能）によっては、認識対象の位置が固定されていても、検出される指示位置の位置に誤差が生じることがある。従って、そのような小さな体の動きや、検出の誤差による指示位置の変化と、ユーザが意思をもって指を動かしたことによる指示位置の平行移動とを区別するために、閾値Ｄによる判定を行う。つまり本実施形態では、タッチ対象面上をタッチした指を、タッチ状態のまま閾値Ｄ以上の距離平行移動させない限り、ドラッグ操作は認識されない。本実施形態の特定部２０６は、タッチ判定の結果が「非タッチ状態」から「タッチ状態」に移行してから初めて「ドラッグ操作がなされている途中である」と判定された場合、ドラッグ操作の開始直後であることを示す情報をＲＡＭ１１１に保持する。例えばフラグ等の情報として、前回の判定結果が「非ドラッグ中」であり、かつ今回の判定結果が「ドラッグ中」である場合、例えばドラッグ開始フラグを「１」と設定して保持し、それ以外の場合はフラグを「０」に設定する。なおこの情報は、後述する閾値設定処理において使用される。
【００３４】
次に、ステップＳ１０７において、特定部２０６が、ユーザによって入力された操作を特定する。本実施形態では、これまでのステップＳ１０５及び、ステップＳ１０６の処理においてＲＡＭ１１１に蓄積された情報に基づいて操作種別を判定する。例えば、最新の２回分のタッチ判定の結果が「非タッチ状態」であれば「操作なし」、すなわち情報処理装置１００に対してタッチ操作は入力されていないと特定する。また、最後のタッチ判定結果が「非タッチ状態」であって、その直前のタッチ判定結果が「タッチ状態」で「非ドラッグ中」と判定されていた場合、特定部２０６は、情報処理装置１００に対してタップ操作が入力されたと特定する。また例えば、最後のタッチ判定結果が「タッチ状態」で、「ドラッグ中」であると判定されていれば、情報処理装置１００には「ドラッグ操作」が入力されていると特定する。最後のタッチ判定結果が「非タッチ状態」で、その直前のタッチ判定結果が「タッチ状態」でかつ「ドラッグ中」であると判定されていれば、情報処理装置１００入力された「ドラッグ操作終了」したと特定する。最後のタッチ判定結果が「タッチ状態」であって、その直前のタッチ判定結果が「タッチ状態」で「非ドラッグ中」と判定されていた場合、特定部２０６は、「タップ操作中」とみなす。ただし、この後で指示位置が平行移動される可能性があるため、「タップ操作中」という状態は、タップあるいはドラッグ操作が開始された直後を示す。従って、特定部２０６によって「タップ操作中」であると特定された後で、「ドラッグ中」と判定されることがあれば「ドラッグ操作」が、「ドラッグ中」と判定されることなく「非タッチ状態」に移行すれば「タップ操作」が最終的に特定される。本実施形態では、特定部２０６が、特定した操作種別、および操作状態に応じたイベントと、最後に検出された指示位置の位置情報とを、表示制御部２０７や読み取り制御部２０８の、情報処理装置１００の出力を制御する機能部に通知する。
【００３５】
ステップＳ１０８では、情報処理装置１００の出力を制御する機能部が、入力された操作に対して応答する。例えば、ステップＳ１０７において「ドラッグ操作中」と特定された場合、表示制御部２０７が、ドラッグ操作に応じて表示オブジェクトが移動されるように表示するための表示画像を生成し、プロジェクタ１０４に出力する。また例えば、「タップ操作」が特定され、その位置が情報処理装置１００に読み取りを実行させるコマンドに相当するＧＵＩのＵＩ部品の位置であった場合、読み取り制御部２０８が、可視光カメラ１０８を制御して読み取り画像を取得する。
【００３６】
ステップＳ１０９において、情報処理装置１００が、この時点でのタッチ対象面に対するタッチ操作認識処理を継続するか否かを判定する。具体的には、ユーザのタップ操作によって、「操作終了指示」のコマンドが入力されたかを検出する。処理を継続すると判定される場合（ステップＳ１０９でＮＯ）はステップＳ１０２へ戻る。処理を継続しないと判定された場合と判定される場合（ステップＳ１０９でＹＥＳ）、上記処理を終了する。また例えば、ユーザのタップ操作によって「リセット」のコマンドが入力された場合には、ステップＳ１００に戻って図３のフローチャートを繰り返してもよい。この場合、ユーザがタッチ対象面に変更を加えても（物体を取り除く、あるいは変える等）新たに表面形状の情報を取得して、適切なタッチ判定の閾値を設定することができる。また、電源がＯＦＦされた場合には、タッチ操作認識処理のどの段階にあっても、全ての処理を中断する。
【００３７】
次に、図４のフローチャートを用いて、ステップＳ１０４において実行される閾値設定処理を詳細に説明する。
【００３８】
まず、ステップＳ１０４のタッチ判定の閾値設定処理が開始されると、ステップＳ２００において、設定部２０３が、ステップＳ１０３において検出された指示位置に相当するタッチ対象面の高さＨＯＦを取得する。具体的には、ステップＳ１０１にて取得された、タッチ対象面の表面形状を示す情報から、ステップＳ１０３にて検出した指示位置のｘｙ座標対応する座標のｚ座標の値を取得し、これを指示位置におけるタッチ対象面高さＨＯＦをとする。
【００３９】
次に、ステップＳ２０１において、設定部２０３が、ステップＳ１０３において検出された指示位置におけるタッチ判定の基準の閾値ＨＴＦを取得する。本実施形態では、ステップＳ２００にて取得した指示位置におけるタッチ対象面高さＨＯＦに一定の値を加算することにより、指示位置におけるタッチ判定閾値ＨＴＦをする。ただし、ＨＯＦを変数とする他の変換式を用いたり、ルックアップテーブルを参照したりすることにより、基準となる閾値を取得してもかまわない。
【００４０】
ここで、本実施形態において設定される基準の閾値ＨＴＦの例を、図５を用いて説明する。図５の（Ａ）および（Ｂ）は、それぞれ、図１（ａ）に示すテーブル１０１と物体１０２の表面をタッチ対象面とする場合に設定される閾値の分布を、ｚ軸、ｘ軸、ｙ軸それぞれの方向から見た様子を示す。
【００４１】
図５（Ａ）の例では、指示位置におけるタッチ対象面高さＨＯＦに一定値を加算した値を指示位置におけるタッチ判定の基準閾値ＨＴＦとしている。つまり、テーブル１０１上では、テーブル上面から一定の高さ上方を、タッチ判定閾値５００ａ、物体１０２上では物体上面から一定の高さ上方を、タッチ判定閾値５００ｂと設定する。このように基準となる閾値ＨＴＦを設定した場合、物体上でのタップ操作は、テーブル上でのタップ操作よりも物体の高さの分大きな閾値に基づいて判定されるので、物体を置いたことでタップ操作が認識されなくなるといった問題を生じさせない。
【００４２】
図５（Ｂ）の例では、ステップＳ１０３で検出された指示位置の周囲の複数の点について、タッチ対象面の高さＨＯＦを取得し、それらの平均値に一定値を加算することで、基準閾値ＨＴＦを設定している。この場合、物体の境界付近においても、閾値ＨＯＦの大きさが連続となったタッチ判定閾値５１０を設定できる。従って物体の境界付近の指示位置が、検出誤差や指の微小な動きなどにより物体の境界をまたぐようにぶれたとしても、安定したタッチ判定の結果を得ることができるという効果がある。
【００４３】
タッチ判定の基準となる閾値の設定方法として２つの例を示したが、方法はこの限りではなく、タッチ対象面情報から各種変換式等を用いて様々なタッチ判定閾値を導出することができる。
【００４４】
ここまで、指示位置ｘｙ座標から一意に導出できる閾値ＨＴＦを基準閾値と取得することを説明した。取得した基準閾値を、実際にタッチ判定に用いる閾値として設定することで、高さが一様ではないタッチ対象面に対するタッチを判定することができる。なお、さらにその他の条件に応じで、実際にタッチ判定に用いる閾値を選択的に設定することもできる。本実施形態では、続くステップＳ２０２〜ステップＳ２０８において、前回の操作特定シーケンスにおけるタッチ判定結果やドラッグ判定結果に応じて、実際にタッチ判定に用いる閾値ＨＴＦを切り替える。
【００４５】
本実施形態では、前回の操作シーケンスのステップＳ１０６において、「非ドラッグ中」と判定された場合には、基準閾値として設定された閾値に基づいてタッチ判定を行う。そして「ドラッグ中」と判定されていた場合には、ドラッグ操作のそれまでの経路において設定されていた基準閾値のうち、最大の値を、実際にタッチ判定に用いる閾値として設定する。つまり、認識対象（ここでは指先）が移動してきた経路上で、タッチ対象面の高さが最大となった位置での基準閾値を、実際にタッチ判定に用いる閾値として設定する。これにより、テーブル上と物体上の両方を経由するドラッグ操作中において、意図に反して指先がタッチ対象面から大きく離れてしまうことで、ドラッグ操作が中断されてしまうという問題を回避できる。
【００４６】
本実施形態では、ステップＳ２０１において指示位置のタッチ判定の基準となる閾値ＨＴＦを取得すると、次にステップＳ２０２において、設定部２０３が、ドラッグ操作中か否かを判定する。すなわち、認識対象がタッチ対象面をタッチしたまま移動しているか否かを判定する。この判定は、前回の操作特定シーケンスのステップＳ１０６にて判定したドラッグ判定結果の参照によって行う。ドラッグ判定結果が「ドラッグ中」の場合はステップＳ２０３へ進み、「非ドラッグ中」の場合はステップＳ２０８へ進む。
【００４７】
ステップＳ２０３では、最大値取得部２０４が、ドラッグ開始直後か否かの判定を行う。この判定は、前回の特定シーケンスのステップＳ１０６にて設定、保持した、ドラッグ開始直後か否かを示すフラグなどの情報の参照によって行う。ドラッグ開始直後であればステップＳ２０４へ進み、ドラッグ開始直後でなければステップＳ２０５へ進む。
【００４８】
ステップＳ２０４では、最大値取得部２０４が、ＲＡＭ１１１に保持されている最大閾値ＨＴＭＡＸの値を初期化する。ここでは、以降のステップで必ず更新されるよう、例えば０などの値で初期化する。
【００４９】
ステップＳ２０５では、最大値取得部２０４が、ステップＳ２０２で取得された基準の閾値ＨＴＦと、ＲＡＭ１１１に保持されている最大閾値ＨＴＭＡＸの大きさを比較し、基準閾値の方が大きいかを判定する。ステップＳ１０３で検出された指示位置での基準閾値ＨＴＦが最大閾値ＨＴＭＡＸより大きいと判定された場合（ステップＳ２０５でＹＥＳ）はステップＳ２０６へ進む。指示位置での基準閾値ＨＴＦが最大閾値ＨＴＭＡＸより大きくないと判定された場合（ステップＳ２０５でＮＯ）は、ステップＳ２０６を省略してステップＳ２０７に進む。
【００５０】
ステップＳ２０６では、最大値取得部２０４が、最大閾値ＨＴＭＡＸの値を指示位置での基準閾値ＨＴＦに更新する。
【００５１】
ステップＳ２０７では、設定部２０３が、実際にタッチ判定に使用する閾値ＨＴとして、最大閾値ＨＴＭＡＸを設定する。これにより、本実施形態では、ドラッグ操作のそれまでの経路において、タッチ対象面が最大の高さとなる点での基準閾値を、タッチ判定をするための閾値として使用することになる。これにより、例えばユーザの指先が、物体上を経てテーブル上までドラッグ操作を行う際に、物体の境界を越えたことで突然タッチ対象面から指先が離れてしまったとしても、ドラッグ操作の認識が中断されることがない。
【００５２】
一方、ステップＳ２０８では、設定部２０３が、実際にタッチ判定に使用する閾値ＨＴとして、ステップＳ２０１で取得した基準の閾値ＨＴＦを設定する。
【００５３】
ステップＳ２０７かステップＳ２０８のいずれかの閾値設定処理が完了したら、処理は図３のフローチャートにリターンする。
【００５４】
ここで、図６及び図７を参照して、本実施形態のようにドラッグ中か否かに応じて、選択的にタッチ判定の閾値を設定する処理の具体例と効果を詳しく説明する。
【００５５】
図６（Ａ）〜（Ｃ）は、テーブル１０１の上面とテーブル上に置かれた物体１０２の上面とを含む、一様な平面でないタッチ対象面上でのドラッグ操作の様子を示す図（ｚ軸に垂直な方向からみた断面図）である。ステップＳ２０１の処理で取得される基準閾値ＨＴＦは、基準面であるテーブル１０１上では閾値６００ａ、物体１０２上では閾値６００ｂとなる。なおここでは図５（Ａ）のパターンで取得された基準閾値を例示するが、もちろん図５（Ｂ）やその他の方法によって設定された基準閾値であっても構わない。
【００５６】
図６（Ａ）において、手指６０１ａ、６０１ｂ、６０１ｃ、６０１ｄ、６０１ｅ、６０１ｆ、６０１ｇは、この順に動かされたユーザの手指１０４の位置を示す。指示位置６０２ａ、６０２ｂ、６０２ｃ、６０２ｄ、６０２ｅ、６０２ｆ、６０２ｇはそれぞれ、手指６０１ａ、６０１ｂ、６０１ｃ、６０１ｄ、６０１ｅ、６０１ｆ、６０１ｇのときに検出される指示位置である。図６（Ａ）の場合、６０１ｃ〜６０１ｅにかけて、テーブル１０１上から開始されて物体１０２上を経由するドラッグ操作が入力されている。ここで図７は、ドラッグ操作を行った際に取得できるデータと判定結果の一例を示す表である。図７（Ａ）は図６（Ａ）に示された操作例に対応する。
【００５７】
まず、手指６０１ａ及び手指６０１ｂの状態では、検出される指示位置６０２ａの高さは閾値６００ａより大きいため、ステップＳ１０５のタッチ判定において「非タッチ状態」と判定される。タッチ判定結果が「非タッチ状態」であるため、ステップＳ１０６のドラッグ中か否かの判定において「非ドラッグ中」と判定され、結果としてステップＳ１０７の操作判定において「操作なし」と判定される。次に、手指６０１ｃの状態では、検出される指示位置６０２ｃの高さは閾値６００ａより小さいため、「タッチ状態」と判定される。また、この時点の指先位置が、タッチ開始位置として保持される。続くステップＳ１０６のドラッグ操作中かの判定においては、タッチ開始位置からの移動距離が０であるため「非ドラッグ状態」と判定され、結果としてステップＳ１０７の操作判定において「タップ中」と判定される。手指６０１ｄの状態でも、タッチ判定の結果は「タッチ状態」と判定される。このとき、タッチ開始位置から平行移動した距離は閾値Ｄより大きいとする。従って「ドラッグ中」と判定され、結果としてステップＳ１０７の操作判定において「ドラッグ中」と判定される。なお、手指６０１ｄの状態の直後、つまりドラッグ開始直後の操作特定シーケンスにおいて、最大タッチ判定閾値ＨＴＭＡＸは６００ａに設定されている。次に、手指６０１ｅの状態では、検出される指示位置６０２ｅの高さは閾値６００ｂより小さいため、「タッチ状態」と判定される。さらに、ドラッグ操作は継続中であるため、当然、タッチ開始位置から平行移動した距離は閾値Ｄより大きく、「ドラッグ中」と判定される。さらに、この時点ではドラッグ開始直後ではないため、ステップＳ２０４はスキップされる。また、閾値６００ｂ＞閾値６００ａ＝ＨＴＭＡＸであることから、ステップＳ２０６において最大タッチ判定閾値ＨＴＭＡＸが６００ｂに更新される。従って、このドラッグ操作の過程において実際にタッチ判定に用いられる閾値は、図６（Ａ）において実線で示される閾値６００ｃとなる。続くステップＳ２０７にて、このあとドラッグ操作が継続されている間は、実際にタッチ判定に仕様する閾値ＨＴとして最大タッチ判定閾値ＨＴＭＡＸ＝６００ｂが設定される。続く手指６０１ｆの状態では、指示位置６０２ｆが閾値６００ｂより小さいため、タッチ判定結果は「タッチ状態」、さらに「ドラッグ中」と判定される。最後に、手指６０１ｇの状態では、指示位置６０２ｆが閾値６００ｂより大きいため、「非タッチ状態」と判定される。タッチ判定結果が「非タッチ」であるため、ステップＳ１０６のドラッグ判定にて「非ドラッグ中」と判定される。「非タッチ状態」で、前回が「ドラッグ中」であるので、結果としてステップＳ１０７の操作判定において「ドラッグ操作終了」と判定される。つまり、手指６０１ｆの状態から手指６０１ｇの状態の過程のタッチ判定結果が「タッチ状態」から「非タッチ状態」に変化した時点で、ステップＳ１０７の操作判定においてドラッグ操作の入力が特定される。従って１回分のドラッグ操作は終了したので、次にドラッグ操作が入力されるときにはＨＴＭＡＸは初期化される。
【００５８】
このように、ユーザが物体上を経由したドラッグ操作を行う途中で、物体上からテーブル上にかけ移動した直後は、指先が直下のタッチ対象面から離れてしまう場面が生じ得る。本実施形態では、ドラッグ操作中は、当該ドラッグ操作の経路上でのタッチ対象面の最大の高さに基づき、タッチ判定の閾値を設定することで、このような場合でもドラッグ操作の認識が中断されてしまうことを防止することができる。従って、ユーザはドラッグ操作において、「タッチ対象面に指を沿わせる」ことを意識しなくてよいので、より操作性を向上することができる。
【００５９】
次に、図８、図９、図１０を参照して、本実施形態を効果的に利用した情報処理装置１００の具体的な操作例を説明する。図８、図９、図１０は、情報処理装置１００に対して行われる一連の操作のうち、特徴的な８つの段階でのテーブル１０１を、俯瞰して見た状態を示している。
【００６０】
まず、図８の状態８００は、テーブル１０１の上に物体の一例として読み取り対象（一例として、新聞紙８１０）が載置された状態を表す。これ以降、この新聞紙８１０に対して、記事単位の読み取り画像を取得し、当該読み取り画像をＡ４の原稿にレイアウトしなおしたデータを生成するという機能を例に説明する。この機能により、実際に記事のスクラップをするよりも容易に、自分に必要な情報をみやすくまとめたデータを生成するという作業ができるようになる。ここで、新聞紙８１０は、ユーザにより、テーブル１０１上にユーザが読み取りたい記事と日付欄が見えるように配置される。
【００６１】
状態８０１は、テーブル１０１に置かれた物体１０２が、新聞紙８１０であることが認識されたのに応じて、テーブル１０１上で投影ＵＩが構成された様子を示す。認識処理は、可視光カメラ１０８の撮像画像に基づいて、ＣＰＵ１１０が行う。ここでは、読み取りを行う最大範囲を示す認識枠８１１、タップ操作により指示コマンドを入力するためのボタン８１２ａ、８１２ｂ、８１２ｃ、読み取りが完了した記事のサムネイル画像が配置されるトレイ８１３といった表示オブジェクトが投影される。ここで例えば、ボタン８１２ａが、「ブロック分割の上読み取りを実行」コマンドに対応するＵＩ部品であったとする。ボタン８１２ａは、テーブル上に投影されている表示オブジェクトであるため、タッチ対象面は基準面となるテーブル上面になる。従って、図６の基準閾値６００ａのように、テーブル上面から一定の高さの閾値が設定され（ステップＳ２０８）、タッチ判定が行われる（ステップＳ１０５）。そして、タッチ状態にある間にユーザの指先がｘｙ平面において閾値Ｄ以上の移動がなければ、タップ操作が認識される（ステップＳ１０７）。タップされた位置が、ボタン８１２ａの表示範囲であれば、ＣＰＵ１１０が可視光カメラ１０８に撮像された新聞紙８１０の画像を解析して、記事ごとにブロック化した上で、読み取りを行う。読み取り画像は、ブロック毎にトリミングされた状態で、メモリに保持される。
【００６２】
状態８０２は、ブロック化された記事毎の領域を囲むようにブロック枠８１４が投影表示された様子を示す。この状態において、ユーザにより、読み取りたい記事を囲む領域が、タップ操作されると、タップされたブロックの読み取り画像が、当該新聞紙８１０の同じブロックに重畳するように投影される。ここで、タップ操作が行われるのは物体１０２である新聞紙８１０の上であるので、タッチ判定の閾値は、テーブル上に対するタップ操作の場合とは異なる閾値が設定される。本実施形態の場合は、新聞紙８１０とテーブルとからなるタッチ対象面の表面形状が取得される（ステップＳ１０１）。この情報には、新聞紙８１０によって生じたタッチ対象面の凹凸を示す高さ情報が含まれる。それに基づき、図６の基準閾値６００ｂのように、テーブル上よりも新聞紙８１０の厚みの分大きい閾値が設定され（ステップＳ２０８）、タッチ判定（ステップＳ１０５）とタップ操作の特定（ステップＳ１０７）がなされる。
【００６３】
図９の状態８０３は、さらにユーザにより、重畳された読み取り画像をトレイ８１３に向けて移動させるドラッグ操作が入力されている様子を示す。このドラッグ操作は、新聞紙８１０上から、テーブル上にかけて行われる。本実施形態では、まず新聞紙８１０上では、記事のブロックを指示したときと同じ基準閾値（例えば閾値６００ｂ）に基づいてタッチ判定（ステップＳ１０５）が行われる。そして、ｘｙ方向に平行移動した距離がＤを越えた時点で、ドラッグ操作が開始されたと特定される（ステップＳ１０７）。そして、最大閾値ＨＴＭＡＸが、新聞紙８１０上での閾値に設定されるので、例えユーザの指先が、新聞紙を離れテーブル１０１の情報に至った時点でも、新聞紙８１０上と同じ閾値に基づいてタッチ判定が行われる。ここで、読み取り画像８１５は、表示制御部２０７によるドラッグ操作に対する応答として、ドラッグ操作によって移動される距離が大きくなるのに従い、そのサイズを縮小させるように表示される。
【００６４】
状態８０４は、記事の読み取り画像８１５が、トレイ８１３の中までドラッグされた結果として、そのサムネイル画像がトレイ８１３内に表示された様子を示す。そして状態８０５は、ユーザは上記のように、記事ブロックへのタップ操作と、読み取り画像のトレイ８１３へのドラッグ操作を繰り返して、所望の記事を選択し終えた状態に相当する。
【００６５】
そして、図１０の状態８０６は、ユーザにより、テーブル１０１上から新聞紙８１０が取り除かれた様子を示す。ＣＰＵ１１０は、所望とする記事が選択された状態で、読み取り対象が取り除かれたこと認識すると、表示制御部２０７により、操作コマンドに対応するボタンＵＩの内容を変更する。ここで新たに投影されるボタン８１６ａは、例えば「トレイにドラッグした記事をＡ４用紙サイズの原稿にレイアウトさせる指示」のコマンドに対応するものとする。テーブルに対するタップ操作を認識する処理により、ボタン８１６ａに対するタップ操作を特定すると、ＣＰＵ１１０は、メモリに保持されている読み取り画像に基づき、その記事の形状や文字の大きさ等に基づき、適切なレイアウトを導出する。
【００６６】
状態８０７は、自動レイアウトされたＡ４の原稿を示す画像８１７が、テーブル１０１の中央に投影されていることを示す。ユーザは、ボタン８１６ｂやボタン８１６ｃをタップすることで、ドキュメントデータとして生成し、記憶することを指示したり、あるいは印刷装置に送って印刷出力させることを指示したりすることができる。
【００６７】
このように、本実施形態によれば、高さが一様ではないタッチ対象面に対しても、タップ操作やドラッグ操作などさまざまなタッチ操作を利用した使い方ができる。
【００６８】
以上述べたように、本実施形態では、高さが一様ではないタッチ対象面におけるタッチ操作では、検出される指示位置と同じｘｙ座標におけるタッチ対象面の高さを基に、タッチ判定に用いる閾値を設定する。さらに、ドラッグ操作中の場合は、その経路においては、当該ドラッグ操作のそれまで経路におけるタッチ対象面の最大の高さに基づく閾値を用いてタッチ判定を行う。それにより、タッチ対象面の高さが変化する境界付近において、認識対象とタッチ対象面との間が急激に離れたとしても、ドラッグ操作の認識が中断される誤認識を低減することができる。
【００６９】
なお、本実施形態では、タッチ対象面の表面形状を三次元座標情報として取得してタッチ判定の基準閾値を導出したが、閾値の導出方法はこれに限るものではない。例えば、可視光カメラ等で取得した画像から取得した物体位置の二次元座標情報と、あらかじめ数値で指定するなどして与えた物体の高さｈの情報を用いて、タッチ対象面の表面形状を示す情報を取得しても良い。この場合の、物体が存在する領域ではタッチ対象面の高さを所定の値（例えばｈ）とし、それ以外の領域では０とすればよい。
【００７０】
また、本実施形態では、赤外光発光部２０６と赤外カメラ２０７を利用して、ユーザの手指の三次元位置を取得したが、ステレオカメラや距離画像センサを利用することもできる。認識対象と操作面との近接状態に基づいてタッチ判定を行う方法は、三次元位置に基づく距離の判定に限らず、例えば感熱センサや静電容量センサ等を利用し、操作面に対してユーザの手指がどの程度近接したかを検出した結果に基づく判定に置き換えてもよい。また、本実施形態では、プロジェクタによる投影対象面をタッチ操作の操作面とする例について説明したが、ヘッドマウントディスプレイを利用し、ＡＲやＭＲ空間上の仮想面（仮想的に表示された物体の表面など）を操作面とする場合にも適応可能である。
【００７１】
また、本実施形態では、常にタッチ対象面の高さに応じたタッチ判定閾値の設定を行った。しかし、タッチ対象面の表面形状を示す情報を取得した時点で、タッチ対象面が一様の高さであるとみなせるほど、物体の高さが小さい場合は、全ｘｙ座標において、あらかじめ指定するなどして与えた一定のタッチ判定閾値を用いたタッチ判定を行っても良い。
【００７２】
さらに、本実施形態では、１つの認識対象（１本の指）によるタッチ操作、特にドラッグ操作におけるタッチ判定閾値の設定方法について記載したが、認識対象の数はこれに限るものではない。本実施形態にて記載した方法は、複数の認識対象（２本以上の指）によって複数の指示位置が指示される場合でもそれぞれの位置において適用できる。例えば、２つの認識対象がそれぞれ、タッチしたまま位置を動かすことによって行う操作の例として、ピンチ操作（複数の指示位置の間隔を拡縮する）、ローテート操作（複数の位置の相対関係を維持したまま回転させる）がある。２つの認識対象のそれぞれについて、本実施形態にて記載した方法（ステップ１０２からステップＳ１０８）を用いて設定したタッチ判定閾値によるタッチ判定を行い、かつ、その結果を用いて、上述したようにドラッグ操作途中かの判定を行う。それぞれの認識対象に対するタッチ判定結果とドラッグ操作中かの判定結果を統合することで、ピンチ操作、ローテート操作などの操作種別を判定することができる。例えば、２つの認識対象のドラッグ判定結果が共に「ドラッグ中」であり、かつ認識対象間の距離が前回の操作判定特定シーケンスにおける認識対象間の距離よりも小さい場合、「ピンチイン操作中」と判定する。このように、本実施形態にて記載した方法を２つの認識対象に適用することで、高さが一様でないタッチ対象面にたいするマルチタッチ操作において、ユーザの意図しない操作の中断を低減することができる。
【００７３】
＜第２の実施形態＞
第１の実施形態は、高さが一様ではないタッチ対象面上におけるタッチ判定に用いる閾値を設定する際、ドラッグ操作中は、当該ドラッグ操作のそれまでの経路にあたるタッチ対象面の最大の高さに対応する閾値を、当該ドラッグ操作が終了するまで適応した。それに対し、第２の実施形態では、ドラッグ操作の経路において、タッチ対象面の高さが低下してからもドラッグ操作が継続される場合、再度タッチ判定に用いる閾値の大きさを再設定する例を説明する。
【００７４】
以下、本実施形態について図面を用いて詳細に説明する。他図を用いて説明したものには同一の符号を付し、その説明を省略する。
【００７５】
図２（Ｂ）は、本実施形態における情報処理装置１００の機能ブロック図である。情報処理装置１００は、図２（Ａ）にて説明した各ブロックと、再設定部２０９から構成される。これら各機能ブロックは、上述した各処理プログラムをＣＰＵ１１０で実行することによって実現できる機能に相当する。再設定部２０９は、面情報取得部２０１で取得したタッチ対象面の表面形状を示す情報と、位置検出部２０２で検出した指示位置とを利用して、それ以降のドラッグ操作の経路において実際にタッチ判定に使用される閾値を、各位置における基準閾値に再設定する。
【００７６】
次に、第２の実施形態に係る情報処理装置１００が実行する、閾値設定処理のフローチャートを図１１に示す。第１の実施形態の図４のフローチャートと同じ符号を付した処理ステップでは、第１の実施形態と同内容の処理が実行される。図４のフローチャートとの差異は、ステップＳ３００からステップＳ３０７である。
【００７７】
ステップＳ２０４までの処理は、第１の実施形態と同様であるため、説明を省略する。本実施形態では、ドラッグ開始直後の閾値設定処理において、ステップＳ３００が実行される。ステップＳ３００にて、再設定部２０９が、タッチ対象面の最大の高さを示す値ＨＯＭＡＸを初期化する。ここでは、以降のステップで必ず更新されるよう、例えば０などの値で初期化する。最大高さＨＯＭＡＸはタッチ対象面の高さが低下したことを検出するのに使用する。続くステップＳ２０５、ステップＳ２０６の処理は、第１の実施形態と同様である。ステップＳ３０１およびステップＳ３０３において、再設定部２０９が、最後に検出された指示位置におけるタッチ対象面高さＨＯＦと最大高さＨＯＭＡＸを比較する。指示位置でのタッチ対象面の高さＨＯＦが最大高さＨＯＭＡＸより大きいと判定される場合（ステップＳ３０１でＹＥＳ）は、ステップＳ３０２に進む。指示位置でのタッチ対象面の高さＨＯＦが最大高さＨＯＭＡＸより小さいと判定される場合（ステップＳ３０３でＹＥＳ）は、ステップＳ３０４に進む。それ以外の場合、つまりの指示位置でのタッチ対象面の高さＨＯＦが最大高さＨＯＭＡＸに等しい場合は、ステップＳ２０７に進む。ステップＳ３０２では、再設定部２０９が、最大タッチ対象面高さＨＯＭＡＸを、最後に検出された指示位置でのタッチ対象面の高さＨＯＦに更新する。これは、タッチ対象面の上昇に応じて、最大高さＨＯＭＡＸを上昇したタッチ対象面の高さに更新することに相当する。ステップＳ３０４からステップＳ３０７の処理が、タッチ対象面高さが、低下した場合に実行される理に相当する。まず、ステップＳ３０４では、再設定部２０９が、タッチ対象面の高さが低下した直後かどうかを判定する。この判定は、ステップＳ３０１およびステップＳ３０２の判定結果を、前回の操作判定特定シーケンスにおける当該判定結果と比較して行う。具体的には、前回の判定結果が「指示位置でのタッチ対象面の高さＨＯＦが最大高さＨＯＭＡＸ以上」であり、かつ今回の判定結果が「高さＨＯＦが最大高さＨＯＭＡＸより小さい」場合、タッチ対象面高さが低下した直後だと判定する。タッチ対象面の高さが低下した直後であると判定された場合（ステップＳ３０４でＹＥＳ）は、ステップＳ３０５に進み、タッチ対象面の高さが低下した直後ではないと判定された場合（ステップＳ３０４でＮＯ）は、ステップＳ３０６に進む。ステップＳ３０５では、再設定部２０９が、タッチ対象面の高さが低下した時刻を、その時点の時刻で更新する。ステップＳ３０６では、再設定部２０９が、ステップＳ３０５にて更新したタッチ対象面の高さが低下した時刻から、その時点までの経過時間を算出し、タッチ対象面の高さが低下してから一定時間が経過したかを判定する。一定時間が経過していると判定された場合（ステップＳ３０６でＹＥＳ）は、ステップＳ３０７に進み、一定時間が経過していないと判定された場合（ステップＳ３０６でＮＯ）はステップＳ２０７に進む。ステップＳ３０７では、再設定部２０９が、実際にタッチ判定に使用する閾値ＨＴを、最後に検出された指示位置での基準閾値ＨＴＦに再設定する。以降、ドラッグ操作が継続されている間は、ステップＳ２０７においては、タッチ判定には基準閾値が使用される。
【００７８】
次に、本実施形態の情報処理装置１００における処理の流れを、図６（Ｂ）と（Ｃ）、および図３、図１１のフローチャートを用いて説明する。
【００７９】
図６（Ｂ）は、図６（Ａ）と同様に、ユーザが物体上で開始したドラッグ操作をテーブル上まで継続してからリリースする様子を示す図である。手指６１０ａ、６１０ｂ、６１０ｃ、６１０ｄ、６１０ｅは、この順にドラッグ操作を行う様子を示している。手指６１０ｃは、手指がテーブル上に近づいている（の高さが小さくなっている）様子を示している。一般に、ユーザには、空中で手指の高さを一定に保つったまま操作を行うことは難しく、例えば長い距離をドラッグ操作する過程等では、タッチ対象面上に物理的に接触している方が、負担が軽い場合がある。また、表示オブジェクトを移動させる目的でドラッグ操作を行っていた場合などは、ドラッグ操作を終了させるにあたり、表示オブジェクトの最終的な位置をタッチ対象面に触れた状態で調整してから終了させたいという場合もある。移動させていた手指６１０ｃは、そのような場合に、ユーザが指先をタッチ対象面に近づけた状態を示している。そして、手指６１０ｄは、ユーザがドラッグをリリースするために手指をタッチ対象面から離し始めた状態を示している。指示位置６１１ａ、６１１ｂ、６１１ｃ、６１１ｄ、６１１ｅはそれぞれ、手指６１０ａ、６１０ｂ、６１０ｃ、６１０ｄ、６１０ｅの状態で検出される指示位置である。
【００８０】
ここで物体上を経由した後のドラッグ操作の間、常に物体の最大の高さに基づく閾値６００ｃをタッチ判定に用いるとすると、手指６１０ｄの状態において、ユーザはドラッグをリリースしようとしているにも関わらず「タッチ状態」と判定されてしまう。つまり、指示位置６１１ｄの高さが、依然としてタッチ判定閾値６００ｃより小さいため、この時点では、ドラッグ操作が終了されたとは認識されない。次に、手指６１０ｅは、ユーザがドラッグをリリースするために手指をさらにタッチ対象面から離した状態を示している。この時、指示位置６１１ｅの高さが閾値６００ｃより大きくなるので、この時点で、ドラッグ操作の終了が認識される。一方で本実施形態では、ドラッグ操作中にタッチ対象面の高さが低下した後、一定時間経過後にタッチ判定に使用する閾値を基準閾値に再設定するため、ドラッグ操作が終了したことを速やかに認識できるという効果がある。
【００８１】
図６（Ｃ）は図６（Ｂ）と同様、ユーザが物体上で開始したドラッグ操作をテーブル上まで継続してからリリースする様子を示す図である。ここで図７（Ｂ）は図６（Ｃ）に示された操作例に対応する、ドラッグ操作を行った際に取得できるデータと判定結果の一例を示す。手指６１０ａから６１０ｄおよび指示位置６１１ａから６１１ｄは、図６（Ｂ）と同じものを示す。つまり、手指６１０ａの位置でドラッグを開始する（この時点以降のシーケンスでドラッグ中と判定されるものとする）。そして、手指６１０ｂの位置で、指先が物体１０２上からテーブル１０１上へと移動することに伴い、タッチ対象面の高さが物体１０２上からテーブル１０１上へと低下している。さらに手指６１０ｄの位置の直前までドラッグを継続し、手指６１０ｄの位置でユーザがドラッグをリリースするために手指をタッチ対象面から離している。図６（Ｃ）では、手指６１０ｄの直前で、タッチ対象面の高さが低下してから、つまり手指６１０ｂの時刻から一定時間が経過するとする。
【００８２】
手指６１０ａの状態では、図６（Ａ）の手指６０１ａから６０１ｅにて示したのと同様の処理を経て、タッチ判定結果が「タッチ状態」であり、「ドラッグ中」であり、ドラッグ操作が入力されていると特定される。また、最大閾値ＨＴＭＡＸ、タッチ判定に用いる閾値ＨＴはともに６００ｂ、タッチ対象面の最大高さＨＯＭＡＸは物体１０２の上面の高さとなっている。手指６１０ｂの状態では、指示位置６１１ｂでのタッチ対象面の高さＨＯＦとしてテーブル上面の高さが、指示位置６１１ｂでの基準閾値ＨＴＦとして閾値６００ａが取得される。この時点では、「ドラッグ中」と判断され、かつドラッグ開始直後ではない（ステップＳ２０３でＮＯ）。また、指示位置６１１ｂでの基準閾値ＨＴＦ＝６００ａは、最大閾値ＨＴＭＡＸより小さい（ステップＳ２０５でＮＯ）。そして、指示位置６１１ｂでのタッチ対象面の高さＨＯＦが最大高さＨＯＭＡＸより小さい（ステップＳ３０１でＮＯ、ステップＳ３０３でＹＥＳ）ため、この時点がタッチ対象面の高さが低下した時刻として保持される（ステップＳ３０５）。まだタッチ対象面の高さが低下してからの経過時間は一定時間に満たないため、ステップＳ２０７以降において、図６（Ａ）における手指６０１ｆの状態と同様の処理が行われる。手指６１０ｃの状態でも、手指６１０ｂの状態と同様のタッチ操作認識処理が行われる。最後に、手指６１０ｄの状態では、タッチ対象面の高さが低下してからの経過時間が、一定時間以上となる（ステップＳ３０６でＹＥＳ）。このため、タッチ判定に用いられる閾値ＨＴが、指示位置６１１ｄでの基準閾値ＨＴＦ＝６００ａと再設定される（ステップＳ３０７）。その結果、指示位置６１１ｄの高さが閾値６００ａより大きいため「非タッチ状態」（ステップＳ１０５）、「非ドラッグ中」（ステップＳ１０６）と判定されることでドラッグ操作が終了したことが認識される。
【００８３】
以上、本実施形態で述べたように、高さが一様ではないタッチ対象面に対して行われるドラッグ操作において、タッチ対象面の高さが低下してから一定時間後に、タッチ判定閾値をその時点の指示位置に対応するタッチ対象面の高さに基づき再設定する。これによって、ユーザが一定時間ドラッグ操作を継続する間に指先の位置を低下させていた場合でも、ドラッグ操作が終了されたことを速やかに認識でき、操作性を向上することができる。
【００８４】
なお、本実施形態では、タッチ対象面の高さが低下した時刻からの経過時間を条件として、閾値の再設定を行った。これにより認識対象が動かなくなっても、タッチ開始位置から所定の距離以上離れた位置で、タッチ状態が継続されている間は、ドラッグ操作が継続されているとみなすことができる。例えば、表示オブジェクトを移動させるドラッグ操作において、最終的に表示オブジェクトを配置する位置を定めるために認識対象がタッチ状態にまま一時的に停止する場合には、一定時間の経過に応じて閾値が再設定される。なお、ドラッグ操作が継続されるかを判断する条件はこれに限るものではない。例えば、タッチ対象面の高さが低下した位置からのｘｙ平面距離（直線距離）や、ドラッグ操作中の指先の移動距離の累積（ドラッグの軌跡の長さ）などを条件としても良い。さらには、経過時間とこれらの距離を組み合わせたものを条件としても良い。このような距離の要件を用いれば、ユーザが何らかの理由で指先の平行移動を一時的に停止している間に、経過時間が一定値に達し、結果として閾値の再設定が行われるのを防ぐことができる。
【００８５】
＜他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８６】
２００  画像取得部
２０１  面情報取得部
２０２  位置検出部
２０３  設定部
２０５  タッチ判定部
２０６  特定部
【図１】
2015084173.tif 000003
【図２】
2015084173.tif 000004
【図３】
2015084173.tif 000005
【図４】
2015084173.tif 000006
【図５】
2015084173.tif 000007
【図６】
2015084173.tif 000008
【図７】
2015084173.tif 000009
【図８】
2015084173.tif 000010
【図９】
2015084173.tif 000011
【図１０】
2015084173.tif 000012
【図１１】
2015084173.tif 000013