(57)【要約】【課題】  本発明は、操作面上空での操作を検出する情報処理装置において、ホバー操作に反応する領域を指先と操作面の距離に応じて変化させることでユーザの指先をオブジェクトの表示領域に導くことを目的とする。【解決手段】  上記課題を解決するために、本発明に係る情報処理装置は操作面にオブジェクトを表示する表示手段と、前記操作面の上空にある物体による操作を認識する認識手段と、前記操作を行った物体と前記操作面との距離を検出する検出手段と、ある領域内で認識された前記操作を前記オブジェクトに対する入力であるとして受付けて、前記表示手段による前記オブジェクトに関する表示を切り替える表示切替手段、前記検出手段により検出された前記物体と前記操作面の距離に応じて、前記オブジェクトに対する入力が受付ける前記領域を変化させるよう制御する制御手段と、を有することを特徴とする。【選択図】  図７
2018018308.tif 000002
【特許請求の範囲】
【請求項１】
操作面にオブジェクトを表示する表示手段と、
前記操作面の上空にある物体による操作を認識する認識手段と、
前記認識手段により認識された操作を行った物体と前記操作面との距離を検出する検出手段と、
ある領域内で認識された前記操作を前記オブジェクトに対する入力であるとして受付けて、前記表示手段による前記オブジェクトに関する表示を切り替える表示切替手段、
前記検出手段により検出された前記物体と前記操作面の距離に応じて、前記オブジェクトに対する入力が受付ける前記領域を変化させるよう制御する制御手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記操作面を撮像する撮像手段を有し、
前記表示手段は前記操作面に対して前記オブジェクトを投影し、
前記検出手段は前記撮像手段により撮像される画像データに基づいて前記操作面と前記操作面の上空の物体との距離を検出し、
前記制御手段は、前記検出手段により検出される前記操作面と前記物体の距離が大きくなるにつれて前記オブジェクトに対する入力が受付けられる前記領域の大きさが大きくなることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記表示手段により表示される前記オブジェクトの位置および大きさ、前記オブジェクトへの前記操作による入力が受付けられる前記領域の位置および大きさを管理するテーブルを記憶する記憶手段を有し、
前記表示手段は前記記憶手段に記憶された前記テーブルに従って、前記操作面の上空の物体による前記操作が前記オブジェクトに対する入力であるかを判定し表示を切り替えることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記検出手段により検出される距離に応じて、前記オブジェクトへの前記操作による入力が受付けられる前記領域の位置を移動させるよう制御することを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
前記制御手段は前記操作面の上空の物体の位置に応じて前記オブジェクトへの前記操作による入力が受付けられる領域の位置を移動させる方向を決定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記制御手段は前記検出手段により検出される距離が大きくなるにつれて、前記領域の移動量が大きくなることを特徴とする請求項４または５に記載の情報処理装置。
【請求項７】
前記制御手段は前記検出手段により検出される距離が所定の距離よりも大きい場合に、前記検出手段により検出された前記物体と前記操作面の距離に応じて前記オブジェクトへの前記操作を受付ける前記領域の大きさを変化させ、
前記検出手段により検出される距離が所定の距離よりも小さい場合に、前記検出手段により検出された距離にかかわらず、前記オブジェクトへの前記操作を受付ける前記領域を一定の大きさとするよう制御することを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項８】
前記制御手段は、前記表示手段により表示される第１のオブジェクトについての前記操作による入力を受付ける領域と前記表示手段に表示される第２のオブジェクトについての前記操作による入力を受付ける領域とが重複しないよう制御することを特徴とする請求項４に記載の情報処理装置。
【請求項９】
情報処理装置の制御方法であって、
操作面にオブジェクトを表示する表示ステップと、
前記操作面と前記操作面の上空の物体との距離を検出する検出ステップと、
前記操作面の上空の物体により、前記操作面に表示されるオブジェクトへの操作を受付ける受付け、前記表示ステップにて表示した前記オブジェクトに関する表示を切り替える表示切替ステップと、
前記検出ステップにおいて検出された前記操作面と前記操作面の上空の物体の距離に応じて、前記操作面に表示された前記オブジェクトへの入力を受付ける領域を変化させるよう制御する制御ステップと、を有することを特徴とする情報処理装置の制御方法。
【請求項１０】
請求項９に記載の情報処理装置の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置及び、その制御方法ならびにコンピュータプログラムに関するものである。
【背景技術】
【０００２】
可視光カメラや赤外線カメラを用いて机や原稿台上の操作平面を撮像し、撮像画像から撮像領域内の物体の位置やユーザの手によるジェスチャ操作を検出する情報処理装置が提案されている。
【０００３】
上記のような情報処理装置では、ユーザが操作平面に指やタッチペン等でタッチするタッチ操作や、指やタッチペンを操作平面にかざすホバー操作等のジェスチャ操作によって操作が行われることがある。情報処理装置はホバー操作を検出すると指先やタッチペンの先にあるアイコン等のオブジェクトを光らせたりする。
【０００４】
特許文献１には、オブジェクトの表示されている領域をタッチ操作に反応する領域とし、タッチ操作に反応する領域よりも所定の大きさだけ大きい領域をホバー操作に反応する領域とする情報処理装置が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−２１５８４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のような情報処理装置では、オブジェクトに対するホバー操作は受付けるものの、オブジェクトに対するタッチ操作を受付けない領域が存在する。そのため、オブジェクトに対するホバー操作が検出された後に、ユーザがオブジェクトにタッチ操作をしようと指先を動かしたときに、オブジェクトに対するタッチ操作を受付けない領域にタッチ操作をしてしまう場合がある。
【０００７】
例えば、図１０（ｅ）に示すように、ユーザがオブジェクト１０２２に対してホバー操作を行おうと指先を操作面にかざす。ホバー操作がオブジェクト１０２２に対するホバー操作であると判定されたとする。情報処理装置は、オブジェクト１０２２の色を変化させる等の処理を行い、オブジェクト１０２２がホバー操作により選択されたことをユーザに通知する。ここで、ユーザがホバー操作により選択されているオブジェクト１０２２にタッチ操作をしようと、操作面に垂直な１０２０に沿って指先を動かしたとする。すると、ユーザはオブジェクト１０２２の表示されていない領域にタッチ操作をしてしまい、オブジェクト１０２２へのタッチ操作が受付けられない。
【０００８】
本発明は、操作面上空での操作を検出する情報処理装置において、ホバー操作に反応する領域を指先と操作面の距離に応じて変化させることでユーザの指先をオブジェクトの表示領域に導くことを目的とする。
【課題を解決するための手段】
【０００９】
本発明における情報処理装置は、操作面にオブジェクトを表示する表示手段と、前記操作面上空にある物体による操作を認識する認識手段と、前記認識手段により認識された操作を行った物体と前記操作面との距離を検出する検出手段と、ある領域内で認識された前記操作を前記オブジェクトに対する入力であるとして受付けて、前記表示手段による前記オブジェクトに関する表示を切り替える表示切換手段、前記検出手段により検出された前記物体と前記操作面の距離に応じて、前記オブジェクトに対する入力が受付ける前記領域を変化させるよう制御する制御手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、操作面上空での操作を検出する情報処理装置において、ホバー操作に反応する領域を指先と操作面の距離に応じて変化させることでユーザの指先をオブジェクトの表示領域に導くことができる。
【図面の簡単な説明】
【００１１】
【図１】カメラスキャナ１０１のネットワーク構成を示す図の一例である。
【図２】カメラスキャナ１０１の外観を示す図の一例である。
【図３】コントローラ部２０１のハードウェア構成図の一例である。
【図４】カメラスキャナ１０１の制御用プログラムの機能構成図の一例である。
【図５】距離画像取得部４０８が実行する処理のフローチャートおよび説明図である。
【図６】ＣＰＵ３０２が実行する処理のフローチャートおよび処理の説明図である。
【図７】第１の実施形態のＣＰＵ３０２が実行する処理のフローチャートである。
【図８】第１の実施形態における操作平面２０４および、オブジェクト管理表の模式図である。
【図９】第２の実施形形態のＣＰＵ３０２が実行する処理のフローチャートである。
【図１０】第２の実施形態における操作平面２０４および、オブジェクト管理表の模式図である。
【図１１】第３の実施形態のＣＰＵ３０２が実行する処理のフローチャートである。
【図１２】第３の実施形態における操作平面２０４とユーザの関係を示す図である。
【図１３】第４の実施形態のＣＰＵ３０２が実行する処理のフローチャートである。
【図１４】第４の実施形態における操作平面２０４とユーザの関係を示す図である。
【発明を実施するための形態】
【００１２】
（第１の実施形態）
以下、本発明を実施するための最良の形態について図面を参照して説明する。
【００１３】
図１は、本実施形態に係るカメラスキャナ１０１が含まれるネットワーク構成を示す図である。
【００１４】
図１に示すように、カメラスキャナ１０１はイーサネット（登録商標）等のネットワーク１０４にてホストコンピュータ１０２およびプリンタ１０３に接続されている。図１のネットワーク構成において、ホストコンピュータ１０２からの指示により、カメラスキャナ１０１から画像を読み取るスキャン機能や、スキャンデータをプリンタ１０３により出力するプリント機能の実行が可能である。また、ホストコンピュータ１０２を介さず、カメラスキャナ１０１への直接の指示により、スキャン機能、プリント機能の実行も可能である。
【００１５】
図２（ａ）は、本実施形態に係るカメラスキャナ１０１の構成例を示す図である。
【００１６】
図２（ａ）に示すように、カメラスキャナ１０１は、コントローラ部２０１、カメラ部２０２、腕部２０３、プロジェクタ２０７、距離画像センサ部２０８を含む。カメラスキャナの本体であるコントローラ部２０１と、撮像を行うためのカメラ部２０２、プロジェクタ２０７および距離画像センサ部２０８は、腕部２０３により連結されている。腕部２０３は関節を用いて曲げ伸ばしが可能である。
【００１７】
操作平面２０４は、カメラスキャナ１０１が設置されている操作平面２０４である。カメラ部２０２および距離画像センサ部２０８のレンズは操作平面２０４方向に向けられている。図２（ａ）では、破線で囲まれた読み取り領域２０５内に置かれた原稿２０６をカメラスキャナ１０１により読み取ることが可能である。
【００１８】
カメラ部２０２は単一解像度のカメラで画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像が可能なものとすることとしてもよい。このとき、高解像度画像の撮像と低解像度画像の撮像を異なる二つのカメラで行ってもよいし、一つのカメラを用いて高解像度画像と低解像度画像の撮像をすることとしてもよい。高解像度のカメラを用いて撮像をおこなうことで、読み取り領域２０５内に置かれた原稿に書かれた文字や図を精度よく読み取ることが可能となる。低解像度画像を撮像可能なカメラを用いることで、操作平面２０４内の物体の移動やユーザの手の動きなどをリアルタイムで解析することが可能となる。
【００１９】
操作平面２０４内にはタッチパネルを設けてもよい。タッチパネルはユーザが手で触れたり、タッチペンが触れる等により、手やタッチペンの触れた位置の情報を検知して情報信号として出力する事ができる。カメラスキャナ１０１は、不図示のスピーカを備えることとしてもよい。さらに、周囲の環境情報を収集するための人感センサ、照度センサ、加速度センサなどの各種センサデバイスを備えることとしてもよい。
【００２０】
図２（ｂ）は、カメラスキャナ１０１における座標系について表している。カメラスキャナ１０１ではカメラ部２０２、プロジェクタ２０７、距離画像センサ２０８のそれぞれに対して、カメラ座標系［Ｘｃ，Ｙｃ，Ｚｃ］、距離画像座標系［Ｘｓ，Ｙｓ，Ｚｓ］、プロジェクタ座標系［Ｘｐ，Ｙｐ，Ｚｐ］という座標系が定義される。これらはカメラ部２０２および距離画像センサ部２０８が撮像する画像平面、あるいはプロジェクタ２０７が投影する画像平面をそれぞれＸＹ平面とし、各画像平面に直交した方向をＺ方向として定義したものである。さらに、これらの独立した座標系の３次元データを統一的に扱えるようにするために、操作平面２０４を含む平面をＸＹ平面とし、このＸＹ平面から上方に垂直な向きをＺ軸とする直交座標系を定義する。
【００２１】
座標系を変換する場合の例として、図２（ｃ）に直交座標系と、カメラ部２０２を中心としたカメラ座標系を用いて表現された空間と、カメラ部２０２が撮像する画像平面との関係を示す。直交座標系における点Ｐ［Ｘ，Ｙ，Ｚ］は、（１）式によって、カメラ座標系における点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］へ変換できる。
【００２２】
［Ｘｃ，Ｙｃ，Ｚｃ］Ｔ＝［Ｒｃ│ｔｃ］［Ｘ，Ｙ，Ｚ，１］Ｔ・・・（１）
ここで、Ｒｃおよびｔｃは、直交座標系に対するカメラの姿勢（回転）と位置（並進）によって求まる外部パラメータによって構成される。Ｒｃを３×３の回転行列、ｔｃを並進ベクトルと呼ぶ。Ｒｃおよびｔｃは工場出荷時に決定されている行列であり、工場出荷後は、サービスマンによるメンテナンス等において修正される値である。
【００２３】
カメラ座標系で定義された３次元点は（２）式によって、直交座標系へ変換することができる。
【００２４】
［Ｘ，Ｙ，Ｚ］Ｔ＝［Ｒｃ−１│−Ｒｃ−１ｔｃ］［Ｘｃ，Ｙｃ，Ｚｃ，１］Ｔ・・・（２）
さらに、カメラ部２０２で撮像される２次元のカメラ画像平面は、カメラ部２０２によって３次元空間中の３次元情報が２次元情報に変換されたものである。カメラ座標系上での３次元の点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］を、下記の（３）式によってカメラ画像平面での２次元の点ｐｃ［ｘｐ，ｙｐ］に透視投影変換することによって変換する。
【００２５】
λ［ｘｐ，ｙｐ，１］Ｔ＝Ａ［Ｘｃ，Ｙｃ，Ｚｃ］Ｔ・・・（３）
ここで、Ａは、カメラの内部パラメータと呼ばれ、焦点距離と画像中心などで表現される所定の３×３の行列である。また、λは任意の係数である。
【００２６】
以上のように、（１）式と（３）式を用いることで、直交座標系で表された３次元点群を、カメラ座標系での３次元点群座標やカメラ画像平面に変換することが出来る。なお、各ハードウェアデバイスの内部パラメータおよび直交座標系に対する位置姿勢（外部パラメータ）は、公知のキャリブレーション手法によりあらかじめキャリブレーションされているものとする。以後、特に断りがなく３次元点群と表記した場合は、直交座標系における３次元データを表しているものとする。
【００２７】
図３は、カメラスキャナ１０１の本体であるコントローラ部２０１のハードウェア構成例を示す図である。
【００２８】
図３に示すように、コントローラ部２０１は、システムバス３０１に接続されたＣＰＵ３０２、ＲＡＭ３０３、ＲＯＭ３０４、ＨＤＤ３０５、ネットワークＩ／Ｆ３０６、画像処理プロセッサ３０７を備える。さらに、カメラＩ／Ｆ３０８、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１およびＵＳＢコントローラ３１２がシステムバス３０１に接続されている。
【００２９】
ＣＰＵ３０２はコントローラ部２０１全体の動作を制御する中央演算装置である。ＲＡＭ３０３は揮発性メモリである。ＲＯＭ３０４は不揮発性メモリであり、ＣＰＵ３０２の起動用プログラムが格納されている。ＨＤＤ３０５はＲＡＭ３０３と比較して大容量なハードディスクドライブ（ＨＤＤ）である。ＨＤＤ３０５にはコントローラ部２０１の実行する、カメラスキャナ１０１の制御用プログラムが格納されている。
【００３０】
ＣＰＵ３０２は電源ＯＮ等の起動時、ＲＯＭ３０４に格納されている起動用プログラムを実行する。この起動用プログラムは、ＨＤＤ３０５に格納されている制御用プログラムを読み出し、ＲＡＭ３０３上に展開するためのものである。ＣＰＵ３０２は起動用プログラムを実行すると、続けてＲＡＭ３０３上に展開した制御用プログラムを実行し、カメラスキャナ１０１の制御を行う。ＣＰＵ３０２は制御用プログラムによる動作に用いるデータもＲＡＭ３０３上に格納して読み書きを行う。ＨＤＤ３０５上にはさらに、制御用プログラムによる動作に必要な各種設定や、また、カメラ入力によって生成した画像データを格納することができ、ＣＰＵ３０２によって読み書きされる。ＣＰＵ３０２はネットワークＩ／Ｆ３０６を介してネットワーク１０４上の他の機器との通信を行う。
【００３１】
画像処理プロセッサ３０７はＲＡＭ３０３に格納された画像データを読み出して処理し、またＲＡＭ３０３へ書き戻す。なお、画像処理プロセッサ３０７が実行する画像処理は、回転、変倍、色変換等である。
【００３２】
カメラＩ／Ｆ３０８はカメラ部２０２および距離画像センサ部２０８と接続され、ＣＰＵ３０２からの指示に応じてカメラ部２０２から画像データを、距離画像センサ部２０８から距離画像データを取得してＲＡＭ３０３へ書き込む。また、ＣＰＵ３０２からの制御コマンドをカメラ部２０２および距離画像センサ２０８へ送信し、カメラ部２０２および距離画像センサ部２０８の設定を行う。距離画像センサ部２０８は距離画像を生成するために、赤外線パターン投射部３６１、赤外線カメラ３６２、ＲＧＢカメラ３６３を備えている。距離画像センサ部２０８による、距離画像を取得する処理に関しては、図５を用いて後述する。
【００３３】
ディスプレイコントローラ３０９はＣＰＵ３０２の指示に応じてディスプレイへの画像データの表示を制御する。ここでは、ディスプレイコントローラ３０９は短焦点プロジェクタ２０７およびタッチパネル３３０に接続されている。
【００３４】
シリアルＩ／Ｆ３１０はシリアル信号の入出力を行う。シリアルＩ／Ｆ３１０には、例えばターンテーブル２０９が接続され、ＣＰＵ３０２の回転開始・終了および回転角度の指示をターンテーブル２０９へ送信する。また、シリアルＩ／Ｆ３１０はタッチパネル３３０と接続され、ＣＰＵ３０２はタッチパネルが押下されたときに、シリアルＩ／Ｆ３１０を介して押下された座標を取得する。またＣＰＵ３０２はシリアルＩ／Ｆ３１０を介して、タッチパネル３３０が接続されているかどうかの判断を行う。
【００３５】
オーディオコントローラ３１１はスピーカ３４０に接続され、ＣＰＵ３０２の指示に応じて音声データをアナログ音声信号に変換し、スピーカ３４０を通じて音声を出力する。
【００３６】
ＵＳＢコントローラ３１２はＣＰＵ３０２の指示に応じて外付けのＵＳＢデバイスの制御を行う。ここでは、ＵＳＢコントローラ３１２はＵＳＢメモリやＳＤカードなどの外部メモリ３５０に接続され、外部メモリ３５０へのデータの読み書きを行う。
【００３７】
本実施形態では、コントローラ部２０１は、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１およびＵＳＢコントローラ３１２の全てを備えることとして説明する。ただし、上記のうち少なくとも一つを備えることとすればよい。
【００３８】
図４は、ＣＰＵ３０２が実行するカメラスキャナ１０１の制御用プログラムの機能構成４０１を示す図の一例である。
【００３９】
カメラスキャナ１０１の制御用プログラムは前述のようにＨＤＤ３０５に格納され、ＣＰＵ３０２が起動時にＲＡＭ３０３上に展開して実行する。
【００４０】
メイン制御部４０２は制御の中心であり、機能構成４０１内の他の各モジュールを制御する。
【００４１】
画像取得部４１６は画像入力処理を行うモジュールであり、カメラ画像取得部４０７、距離画像取得部４０８から構成される。カメラ画像取得部４０７はカメラＩ／Ｆ３０８を介してカメラ部２０２が出力する画像データを取得し、ＲＡＭ３０３へ格納する。距離画像取得部４０８はカメラＩ／Ｆ３０８を介して距離画像センサ部２０８が出力する距離画像データを取得し、ＲＡＭ３０３へ格納する。距離画像取得部４０８の処理の詳細は図５を用いて後述する。
【００４２】
画像処理部４１１は、カメラ部２０２および距離画像センサ部２０８から取得した画像を画像処理プロセッサ３０７で解析するために用いられ、各種画像処理モジュールで構成される。
【００４３】
ユーザインターフェイス部４０３は、メイン制御部４０２からの要求を受け、メッセージやボタン等のＧＵＩ部品を生成する。そして、表示部４０６へ生成したＧＵＩ部品の表示を要求する。表示部４０６はディスプレイコントローラ３０９を介して、プロジェクタ２０７へ要求されたＧＵＩ部品の表示を行う。プロジェクタ２０７は操作平面２０４に向けて設置されており、操作平面２０４上にＧＵＩ部品を投射する。また、ユーザインターフェイス部４０３は、ジェスチャ認識部４０９が認識したタッチ等のジェスチャ操作、そしてさらにそれらの座標を、メイン制御部４０２経由で受信する。そして、ユーザインターフェイス部４０３は描画中の操作画面の内容と操作座標を対応させて操作内容を判定する。操作内容とは、例えば、タッチパネル３３０上に表示されたどのボタンがユーザによってタッチされたか等である。この操作内容をメイン制御部４０２へ通知することにより、操作者の操作を受け付ける。
【００４４】
ネットワーク通信部４０４は、ネットワークＩ／Ｆ３０６を介して、ネットワーク１０４上の他の機器とＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＩＰによる通信を行う。
【００４５】
データ管理部４０５は、制御用プログラム４０１の実行において生成した作業データなど様々なデータをＨＤＤ３０５上の所定の領域へ保存し、管理する。
【００４６】
図５は距離画像センサ２０８による撮像データから距離画像および前述の直交座標系における３次元点群を求めるための処理の説明図である。距離画像センサ２０８は赤外線によるパターン投射方式の距離画像センサである。赤外線パターン投射部３６１は対象物に、人の目には不可視である赤外線によって３次元形状測定パターンを投射する。赤外線カメラ３６２は対象物に投射した３次元形状測定パターンを読み取るカメラである。ＲＧＢカメラ３６３は人の目に見える可視光をＲＧＢ信号で撮像するカメラである。
【００４７】
図５（ａ）のフローチャートを用いて距離画像センサ部２０８が距離画像を生成するための処理を説明する。図５（ｂ）〜（ｄ）はパターン投射方式による距離画像の計測原理を説明するための図面である。
【００４８】
図５（ｂ）に示す赤外線パターン投射部３６１、赤外線カメラ３６２、ＲＧＢカメラ３６３は距離画像センサ部２０８に備えられている。
【００４９】
本実施形態では、操作平面上に赤外線パターン投射部３６１を用いて、３次元形状測定パターン５２２を投射し、投射後の操作平面を赤外線カメラ３６２で撮像する。３次元形状測定パターン５２２と赤外線カメラ３６２で撮像した画像を比較することで操作平面上の物体の位置や大きさを表す３次元点群を生成し、距離画像を生成する。
【００５０】
図５（ａ）に示す処理を実行するためのプログラムはＨＤＤ３０５に記憶されており、ＣＰＵ３０２がＨＤＤ３０５に記憶されたプログラムを実行することにより以下の処理を実現する。
【００５１】
図５（ａ）に示す処理は、カメラスキャナ１０１の電源がＯＮになることに従って開始される。
【００５２】
距離画像取得部４０８は図５（ｂ）に示すように赤外線パターン投射部３６１を用いて赤外線による３次元形状測定パターン５２２を対象物５２１に投射する（Ｓ５０１）。３次元形状測定パターン５２２は予め決められたパターン画像であり、ＨＤＤ３０５に記憶されている画像である。
【００５３】
距離画像取得部４０８は、ＲＧＢカメラ３６３を用いて対象物を撮像したＲＧＢカメラ画像５２３および、赤外線カメラ３６２を用いてステップＳ５０１で投射した３次元形状測定パターン５２２を撮像した赤外線カメラ画像５２４を取得する（Ｓ５０２）。
【００５４】
赤外線カメラ３６２とＲＧＢカメラ３６３とでは設置位置が異なるため、図５（ｃ）に示すようにそれぞれで撮像される２つのＲＧＢカメラ画像５２３および赤外線カメラ画像５２４の撮像領域が異なる。そこで、距離画像取得部４０８は座標系変換を行い、赤外線カメラ画像５２４をＲＧＢカメラ画像５２３の座標系へ変換する（Ｓ５０３）。なお、赤外線カメラ３６２とＲＧＢカメラ３６３の相対位置や、それぞれの内部パラメータは事前のキャリブレーション処理により既知であるとし、それらの値を用いて座標変換を行うとする。
【００５５】
距離画像取得部４０８は、３次元形状測定パターン５２２とＳ５０３で座標変換を行った赤外線カメラ画像５２４間での対応点を抽出する（Ｓ５０４）。例えば、図５（ｄ）に示すように、赤外線カメラ画像５２４上の１点を３次元形状測定パターン５２２上から探索して、同一の点が検出された場合に対応付けを行う。あるいは、赤外線カメラ画像５２４の画素の周辺のパターンを３次元形状測定パターン５２２上から探索し、一番類似度が高い部分と対応付けてもよい。
【００５６】
距離画像取得部４０８は赤外線パターン投射部３６１と赤外線カメラ３６２を結ぶ直線を基線５２５として三角測量の原理を用いて計算を行うことにより、赤外線カメラ３６２から対象物までの距離を算出する（Ｓ５０５）。Ｓ５０４で対応付けが出来た画素については、赤外線カメラ３６２からの距離を算出して画素値として保存し、対応付けが出来なかった画素については、距離の計測が出来なかった部分として無効値を保存する。これを距離画像取得部４０８が、Ｓ５０３で座標変換を行った赤外線カメラ画像５２４の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。
【００５７】
距離画像取得部４０８は、距離画像の各画素にＲＧＢカメラ画像５２３のＲＧＢ値を保存することにより、１画素につきＲ、Ｇ、Ｂ、距離の４つの値を持つ距離画像を生成する（Ｓ５０６）。ここで取得した距離画像は距離画像センサ２０８のＲＧＢカメラ３６３で定義された距離画像センサ座標系が基準となっている。
【００５８】
距離画像取得部４０８は、図２（ｂ）を用いて上述したように、距離画像センサ座標系として得られた距離データを直交座標系における３次元点群に変換する（Ｓ５０７）。
【００５９】
なお、本実施例では上述したように、距離画像センサ２０８として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサを用いることも可能である。例えば、２つのＲＧＢカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するＴＯＦ（Ｔｉｍｅ  ｏｆ  Ｆｌｉｇｈｔ）方式など、他の計測手段を用いても構わない。
【００６０】
ジェスチャ認識部４０９の処理の詳細を、図６（ａ）のフローチャートを用いて説明する。図６（ａ）のフローチャートでは、ユーザが操作平面２０４を指で操作しようとした場合に行われる処理を例に説明を行う。
【００６１】
図６（ａ）では、距離画像センサ２０８が撮像した画像から人の手を抽出し、抽出した手の画像を操作平面２０４に投影した２次元の画像を生成する。生成した２次元の画像から人の手の外形を検出し、指先の動きや動作を検出する。本実施形態では、距離画像センサ部２０８が生成した画像中に指先が１つ検出されたときにジェスチャ操作が行われたと判定し、行われたジェスチャ操作の種類を判定する。
【００６２】
図６（ａ）に示すフローチャートを実行するためのプログラムはカメラスキャナ１０１のＨＤＤ３０５に記憶されており、ＣＰＵ３０２がそのプログラムを実行することにより、フローチャートに示す処理が実現される。
【００６３】
カメラスキャナ１０１の電源がＯＮになり、ジェスチャ認識部４０９が処理を開始すると、ジェスチャ認識部４０９は初期化処理を行う（Ｓ６０１）。初期化処理において、ジェスチャ認識部４０９は距離画像取得部４０８から距離画像を１フレーム取得する。カメラスキャナ１０１の電源がＯＮになったとき、操作平面２０４上には物体が置かれていないこととし、取得した距離画像に基づいて操作平面２０４の平面の認識を行う。平面の認識とは、ジェスチャ認識部４０９が取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル（以降、操作平面２０４の平面パラメータと呼ぶ）を算出し、ＲＡＭ３０３に記憶することである。
【００６４】
続いて、ジェスチャ認識部４０９は操作平面２０４内に物体やユーザの手が入ったことを検出したことに従って、３次元点群取得処理を実行する（Ｓ６０２）。ジェスチャ認識部４０９の実行する３次元点群取得処理の詳細をＳ６２１、Ｓ６２２に示す。ジェスチャ認識部４０９は距離画像取得部４０８の取得した画像から操作平面２０４上に存在する物体の３次元点群を１フレーム分取得する（Ｓ６２１）。操作平面２０４の平面パラメータを用いて、ジェスチャ認識部４０９は取得した３次元点群から操作平面２０４を含む平面にある点群を除去する（Ｓ６２２）。
【００６５】
ジェスチャ認識部４０９は取得した３次元点群から操作者の手の形状および指先を検出する処理を行う（Ｓ６０３）。Ｓ６０３における処理の詳細をＳ６３１〜Ｓ６３４および、図６（ｂ）〜（ｄ）に示す、指先検出処理の方法を模式的に表した図を用いて説明する。
【００６６】
ジェスチャ認識部４０９は、Ｓ６０２において取得した３次元点群から、操作平面２０４を含む平面から所定の高さ以上にある、肌色の３次元点群を抽出する（Ｓ６３１）。Ｓ６３１に示す処理を実行することで、距離画像取得部４０８の取得した画像から、操作者の手だけを抽出する。図６（ｂ）の６６１は抽出した手の３次元点群を表している。
【００６７】
ジェスチャ認識部４０９は抽出した手の３次元点群を、操作平面２０４の平面に射影した２次元画像を生成して、その手の外形を検出する（Ｓ６３２）。図６（ｂ）の６６２は、６６１を操作平面２０４の平面に投影した３次元点群を表している。投影は、点群の各座標を、操作平面２０４の平面パラメータを用いて行う。また、図６（ｃ）に示すように、投影した３次元点群から、ＸＹ座標の値だけを取り出せば、Ｚ軸方向から見た２次元画像６６３として扱うことができる。この時、手の３次元点群の各点が、操作平面２０４の平面に投影した２次元画像の各座標のどれに対応するかを、記憶しておくものとする。
【００６８】
ジェスチャ認識部４０９は検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する（Ｓ６３３）。図６（ｄ）は、外形の曲率から指先を検出する方法を模式的に表したものである。６６４は、操作平面２０４の平面に投影された２次元画像６６３の外形を表す点の一部を表している。ここで、６６４のような、外形を表す点のうち、隣り合う５個の点を含むように円を描く。円６６５、６６７は、隣り合う５個の点を含むように書かれた円の例である。この円を、全ての外形の点に対して順に描き、その直径（例えば６６６、６６８）が所定の値より小さいことを以て、円に含まれた５つの点が指先を構成しているとする。例えば、図６（ｄ）においてＣＰＵ３０２は円６６５の直径６６６は所定の値より小さいため円６６５に含まれる５つの点は指先を構成している点であると判定する。一方で、円６６７の直径６６８は所定の値より大きいため、円６６７に含まれる５つの点は指先を構成していないとジェスチャ認識部４０９は判定する。図６で示す処理においては隣り合う５個の点を含む円を書くこととして説明したが、円に含まれる点の数は限定されるものではない。また、ここでは描いた円の曲率を用いたが、円ではなく楕円フィッティングを行い指先を検出してもよい。
【００６９】
ジェスチャ認識部４０９は、検出した指先の個数および各指先の座標を算出する（Ｓ６３４）。予め記憶した操作平面２０４に投影した２次元画像の各点と、手の３次元点群の各点の対応関係に基づいて、ジェスチャ認識部４０９は各指先の３次元座標を得る。指先の座標とは、Ｓ６３２において描いた円に含まれる点のいずれかの点の３次元座標である。本実施形態では、指先の座標を前述したように定めることとするが、Ｓ６３２で描いた円の中心の座標を指先の座標とすることとしてもよい。
【００７０】
本実施形態では、３次元点群から２次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、ＲＧＢカメラ画像の肌色領域から手の領域を抽出し、上に述べたのと同様の方法（外形の曲率計算等）で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標はＲＧＢカメラ画像や距離画像といった、２次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の３次元座標に変換する必要がある。
【００７１】
ジェスチャ認識部４０９は検出した手の形状および指先からのジェスチャ判定処理を行う（Ｓ６０４）。Ｓ６０４における処理をＳ６４１からＳ６４６に示す。本実施形態において、ジェスチャ操作とはユーザの指先が操作面に触れるタッチ操作、操作面から所定のタッチ閾値以上離れた操作面上空で操作を行うホバー操作がジェスチャ操作に含まれる。
【００７２】
ジェスチャ認識部４０９は、Ｓ６０３で検出した指先が１つかどうか判定する（Ｓ６４１）。指先が１つでなければジェスチャ認識部４０９はジェスチャなしと判定する（Ｓ６４６）。
【００７３】
Ｓ６４１において検出した指先が１つのとき、ジェスチャ認識部４０９は検出した指先と操作平面２０４を含む平面との距離を算出する（Ｓ６４２）。
【００７４】
ジェスチャ認識部４０９はＳ６４２で算出した距離が所定値（タッチ閾値）以下であるかどうかを判定する（Ｓ６４３）。タッチ閾値は予め決められている値であり、ＨＤＤ３０５に記憶されている値である。
【００７５】
ジェスチャ認識部４０９はＳ６２４にて算出された距離が所定値以下であるとき、指先が操作平面２０４へタッチした、タッチ操作を検出する（Ｓ６４４）。
【００７６】
ジェスチャ認識部４０９はＳ６４２にて算出した距離が所定値以下で無ければ、ホバー操作を検出する（Ｓ６４５）。
【００７７】
ジェスチャ認識部４０９は判定したジェスチャをメイン制御部４０２へ通知し、Ｓ６０２へ戻ってジェスチャ認識処理を繰り返す（Ｓ６０５）。
【００７８】
カメラスキャナ１０１の電源がＯＦＦになることに従って、ジェスチャ認識部４０９は図６（ａ）に示す処理を終了する。
【００７９】
なお、ここでは一本指でのジェスチャ認識について説明を行ったが、複数の指あるいは複数の手、あるいは腕や体全体でのジェスチャ認識に応用することとしてもよい。
【００８０】
本実施形態では、カメラスキャナ１０１の電源がＯＮになったことに従って図６（ａ）に示す処理を開始することとして説明した。上記のような場合だけでなく、ユーザがカメラスキャナ１０１を利用するための所定のアプリケーションを選択し、アプリケーションが立ち上がることに従って図６（ａ）に示す処理を開始することとしてもよい。
【００８１】
図８の模式図を用いて、操作平面２０４と指先の距離が変化した場合に、ホバー操作のジェスチャ反応領域がどのように変化するかを説明する。
【００８２】
本実施形態では、ジェスチャ認識部４０９が検出した指先の高さに基づいて、ホバー操作の反応するジェスチャ操作領域のサイズを変更する。
【００８３】
ここでホバー操作とは、操作平面２０４から指先がタッチ閾値以上浮いている状態でカメラスキャナ１０１のプロジェクタ２０７により操作平面２０４に投影される画面の操作を行うことである。
【００８４】
図８（ｃ）は、操作平面２０４上でホバー操作をしている手８０６を横から見た図である。操作平面２０４に対して８０７は垂直方向に伸びる線であり、点８０８と手８０６の指先との距離がタッチ閾値以上であればホバー操作を行っているとカメラスキャナ１０１が判定する。
【００８５】
本実施形態では、直交座標系であらわされた指先のホバー座標（Ｘ，Ｙ，Ｚ）がジェスチャ操作領域の上空にある場合に、オブジェクトの色を変えるなどして表示を変更する。点８０８はホバー座標（Ｘ，Ｙ，Ｚ）のＺ座標の値を０とし、ＺＹ平面に投射した点である。
【００８６】
図８（ａ）、（ｂ）は、ユーザが操作平面２０４をタッチ操作するときにプロジェクタ２０７が投影するユーザインターフェイスおよび、タッチ操作時のオブジェクト管理表である。ユーザの指先と操作平面２０４の距離がタッチ閾値Ｔｈ以下である場合にカメラスキャナ１０１はユーザがタッチ操作をしていると判定する。
【００８７】
図８（ａ）では、ユーザの手８０６の指先と操作平面２０４の距離がタッチ閾値以下であり、ユーザの指先がオブジェクト８０２にタッチ操作をしている。カメラスキャナ１０１はオブジェクト８０２へのユーザからのタッチ操作を受付け、色をオブジェクト８０１やオブジェクト８０３とは異なる色に変化させる。
【００８８】
ここでオブジェクト８０１〜８０３は、操作平面２０４上にプロジェクタ２０７が投影するユーザインターフェイスの部品の一つである。カメラスキャナ１０１はオブジェクト８０１〜８０３へのタッチ操作やホバー操作を受付け、物理的なボタンスイッチと同様、ボタンの色が変化させたり、画面を遷移させたり、選択されたオブジェクトに関する注釈を表示したりする。
【００８９】
各画面において表示するオブジェクトは、図８（ｂ）に示すオブジェクトの管理表によって管理される。各画面において表示するオブジェクトの種類、表示座標、表示サイズは予めＨＤＤ３０５に記憶されており、ＨＤＤ３０５に記憶されている情報をＣＰＵ３０２がＲＡＭ３０３に読み出すことでオブジェクト管理表が生成される。
【００９０】
本実施形態において、オブジェクト管理表には、オブジェクトの「ＩＤ」「表示文字列」、「表示座標」、「表示サイズ」、「ジェスチャ反応領域座標」、「ジェスチャ反応領域サイズ」が記憶されている。本実施形態ではオブジェクト管理表の「表示サイズ」「ジェスチャ反応領域サイズ」の単位をｍｍとして説明する。
【００９１】
オブジェクトの「ＩＤ」は、プロジェクタ２０７の投影するオブジェクトの番号である。
【００９２】
「表示文字列」とは、各ＩＤのオブジェクトの中に表示される文字列である。
【００９３】
「表示座標」とは、各ＩＤのオブジェクトが操作平面２０４内のどこに表示されるかを示したものである。表示座標は例えば、長方形のオブジェクトであれば、オブジェクトの左上の点が表示される位置を示しており、円形のオブジェクトでは円の中心の座標を示している。オブジェクト８０１〜８０３のようなボタンオブジェクトの場合、オブジェクトに外接する長方形の左上の座標を記憶しており、オブジェクト８０１〜８０３は長方形のオブジェクトとして扱われる。
【００９４】
「表示サイズ」とは、各ＩＤのオブジェクトの大きさを示している。例えば、長方形のオブジェクトであれば、そのオブジェクトＸ方向の大きさＷとＹ方向の大きさＨが示されている。
【００９５】
「ジェスチャ反応領域座標」とは、各ＩＤのオブジェクトがホバー操作やタッチ操作等のジェスチャ操作を受けつける反応領域の座標を示している。例えば、長方形のオブジェクトに対しては、長方形のジェスチャ反応領域が設けられており、ジェスチャ反応領域の左上の点の座標が示されている。円形のオブジェクトに対しては、円形のジェスチャ反応領域が設けられており、円の中心の座標が示されている。
【００９６】
「ジェスチャ反応領域サイズ」とは、各ＩＤのオブジェクトがホバー操作やタッチ操作等のジェスチャ操作を受付けるジェスチャ反応領域の大きさを示している。例えば、ジェスチャ反応領域が長方形の場合、長方形のＸ方向の大きさＷとＹ方向の大きさＨが示されている。円形のジェスチャ反応領域に対しては、半径Ｒが示されている。
【００９７】
本実施形態ではオブジェクトの位置や大きさおよび各オブジェクトのジェスチャ反応領域の位置や大きさについて上述したオブジェクト管理表を用いて管理する。オブジェクトやオブジェクト反応領域を管理するための方法は上述した方法に限らず、各オブジェクトやジェスチャ反応領域がどの位置にどのような大きさで存在するのかを一意に定められるものであればどのような方法でも構わない。
【００９８】
本実施形態では、長方形と円形のオブジェクトを例に説明したが、オブジェクトおよびジェスチャ反応領域の形状や大きさは任意の形状、大きさで構わない。
【００９９】
図８（ｂ）では、ユーザによるタッチ操作時のオブジェクト管理表を表しており、オブジェクト管理表の「表示位置」と「ジェスチャ反応領域座標」、「表示サイズ」と「ジェスチャ反応領域サイズ」には同じ値が記載されている。これにより、ユーザがオブジェクトの表示されている領域でタッチ操作を行うときに、カメラスキャナ１０１がオブジェクトに対するタッチ操作を受付けることがわかる。
【０１００】
図８（ｄ）（ｅ）はユーザの指が操作平面２０４からタッチ閾値Ｔｈ以上の所定の距離だけ離れており、ユーザがホバー操作をしている場合に投影されるユーザインターフェイスおよび、オブジェクト管理表である。
【０１０１】
点線で示される領域８０９〜８１３はオブジェクト８０１〜８０５の周囲に設けられたジェスチャ反応領域を示している。図８（ｄ）の点線で示すジェスチャ操作領域はユーザには通知されない。ユーザの指先が点線で示されたジェスチャ反応領域内で検出されたことに従って、カメラスキャナ１０１はユーザによるオブジェクトに対するホバー操作を受付ける。
【０１０２】
ユーザがホバー操作をしているとき、ジェスチャ反応領域サイズをオブジェクト表示サイズと異なる領域に設定するためのオフセットが、指先と操作平面の距離に応じて決定される。オフセットとは、オブジェクト表示領域に対して、ジェスチャ反応領域がどれだけ大きいかを示したものである。図８（ｅ）は、指先と操作平面２０４から求められるオフセット量が２０ｍｍであるときのオブジェクト管理表を示す。「表示座標」と「ジェスチャ反応領域座標」、「表示サイズ」と「ジェスチャ反応領域サイズ」に差が生じており、オブジェクト表示領域に対して上下左右に２０ｍｍのオフセット領域を含むジェスチャ反応領域が設けられている。
【０１０３】
図７に本実施形態におけるジェスチャ反応領域の座標およびサイズを決める処理を記したフローチャートを示す。図７に示すフローチャートを実行するためのプログラムはＨＤＤ３０５に記憶されており、ＣＰＵ３０２が上記プログラムを実行することで処理が実現される。
【０１０４】
図７に示す処理は、カメラスキャナ１０１の電源がＯＮになることで開始される。本実施形態では電源がＯＮになった後に、プロジェクタ２０７による投影を開始する。ＣＰＵ３０２は、操作平面２０４に表示する画面について、表示するオブジェクトの種類、表示座標、表示サイズに関する情報をＨＤＤ３０５から読み出し、ＲＡＭ３０３に記憶し、オブジェクト管理表を生成する。カメラスキャナ１０１の電源がＯＮになった後に、プロジェクタ２０７の表示するユーザインターフェイスが切り替わる度にＣＰＵ３０２は表示するオブジェクトに関する情報をＨＤＤ３０５から読み出してＲＡＭ３０３に記憶し、オブジェクト管理表を生成する。
【０１０５】
メイン制御部４０２は、ジェスチャ認識部４０９に処理開始のメッセージを送る（Ｓ７０１）。ジェスチャ認識部４０９は、メッセージを受け取ると、図６のフローチャートに示すジェスチャ認識処理を開始する。
【０１０６】
メイン制御部４０２は、表示中のユーザインターフェイスにオブジェクトが存在するかどうかを確認する（Ｓ７０２）。オブジェクトが存在しない場合とは、例えば、プロジェクタ２０７により画面が投影されていない場合等である。メイン制御部４０２は生成したオブジェクト管理表に従い、現在表示している画面にオブジェクトが存在しているか否かを判定する。本実施形態ではＳ７０２において、メイン制御部４０２がユーザインターフェイスにオブジェクトが存在しているか否かの判定を行っている。Ｓ７０２においてメイン制御部がタッチ操作やホバー操作等のジェスチャ操作による入力を受付けるオブジェクトを表示しているか否かを判定してもよい。ジェスチャ操作による入力を受付けるオブジェクトとはボタンのようなオブジェクトである。一方で、ジェスチャ操作による入力を受付けないオブジェクトとは、ユーザへのメッセージのようなテキストで構成されるオブジェクトである。各画面においてジェスチャ操作による入力を受付けるオブジェクトがあるか否かは予めＨＤＤ３０５に記憶されていることとする。
【０１０７】
表示中のユーザインターフェイスにオブジェクトが存在しない場合、メイン制御部４０２は所定の終了信号が入力されたか否かを判定する（Ｓ７１１）。所定の終了信号とは、たとえば、不図示の終了ボタンをユーザが押下したことにより生じる信号である。終了処理信号を受け取っていない場合は再びステップＳ７０２へ移行し、表示中のユーザインターフェイスにオブジェクトが存在するかどうかを確認する。
【０１０８】
ユーザインターフェイス上にオブジェクトが表示されているとき、メイン制御部４０２はホバーイベントを受信したかどうかを確認する（Ｓ７０３）。ホバーイベントとは、ユーザの指先が操作平面２０４からタッチ閾値Ｔｈ以上離れているときに発生するイベントである。ホバーイベントには、指先の座標情報が３次元（Ｘ，Ｙ，Ｚ）の情報として格納されている。指先の座標（Ｘ，Ｙ，Ｚ）をホバー座標と呼ぶ。指先のホバー座標は直交座標系での座標である。このうちのＺの情報がホバーイベントの指先の高さ情報であり、Ｘ，Ｙはそれぞれ操作平面２０４上のどの座標の上空で指先がホバー操作を行っているかを示している。
【０１０９】
メイン制御部４０２は、受信したホバーイベントの指先の高さ情報を取得する（Ｓ７０４）。メイン制御部４０２はホバー座標からＺの情報を抽出する。
【０１１０】
メイン制御部４０２は、Ｓ７０４で取得した指先の高さに応じたオフセット量を算出する（Ｓ７０５）。メイン制御部４０２は、オフセット量δｈを下記の方法で算出する。
【０１１１】
メイン制御部４０２はオフセット量δｈを、Ｓ７０４で取得した指先の高さＺと、以下のような式を用いて計算する。Ｔｈは前述したタッチ閾値である。
【０１１２】
【数１】
2018018308.tif 000003
ユーザの指先と操作平面２０４の距離がタッチ閾値以下（０≦Ｚ≦Ｔｈ）の場合、ジェスチャ反応領域サイズとオブジェクト反応領域サイズは同じである。したがってＺ＝Ｔｈの場合、δｈ＝ａＴｈ＋ｂかつ、δｈ＝０である。
【０１１３】
ユーザの指先と操作平面２０４の距離がタッチ閾値よりも大きい場合（Ｚ＞Ｔｈ）、ジェスチャ反応領域およびオフセット量δｈは指先と操作平面の距離Ｚが大きくなるにつれて大きくなる。したがって、ａ＞０である。
【０１１４】
タッチ閾値Ｔｈは所定の正の値であるため、ｂ＜０である。
【０１１５】
このようにａ、ｂを決定することで、上記の式を用いてオフセット量を算出することができる。
【０１１６】
メイン制御部４０２は、Ｓ７０５で求めたオフセット量δｈおよびオブジェクト管理表の「表示座標」と「表示サイズ」を用いてジェスチャ反応領域を算出する（Ｓ７０６）。メイン制御部４０２はＲＡＭ３０３から図８（ｂ）に示すオブジェクト管理表を呼び出し、表示座標と表示サイズを取得する。メイン制御部４０２は、ジェスチャ反応領域が表示サイズよりオフセット量δｈ分大きくなるよう、ジェスチャ反応領域座標、ジェスチャ反応領域サイズを決定し、オブジェクト管理表に登録する。Ｓ７０６における処理をメイン制御部４０２が実行することにより、図８（ｅ）に示すようなオブジェクト管理表が生成される。
【０１１７】
メイン制御部４０２は、Ｓ７０６において算出されたジェスチャ反応領域を各オブジェクトに反映する（Ｓ７０７）。Ｓ７０７ではＳ７０６において生成されたオブジェクト管理表に基づいて、ジェスチャ反応領域をユーザインターフェイスに反映する。Ｓ７０７に示す処理を実行することで、図８（ｄ）において点線で示す領域がジェスチャ反応領域として設定される。
【０１１８】
メイン制御部４０２は、ＲＡＭ３０３に記憶されているオブジェクト管理表に設定されているジェスチャ反応領域座標及びジェスチャ反応領域サイズを参照する（Ｓ７０８）。メイン制御部４０２は参照したジェスチャ反応領域座標とジェスチャ反応領域サイズに基づいて、オブジェクトのジェスチャ反応領域を算出する。例えば、図８（ｅ）において、ＩＤ「２」のオブジェクトのジェスチャ反応領域は（１８０，３３０）、（１８０，３９０）、（３２０，３３０）、（３２０，３９０）の４点で囲まれる長方形の領域である。
【０１１９】
メイン制御部４０２は、Ｓ７０３において受信したホバーイベントに格納されている、指先のホバー座標のうち、（Ｘ，Ｙ）値が、Ｓ７０８で取得したジェスチャ反応領域内にあるかどうかを判定する（Ｓ７０９）。
【０１２０】
ホバー座標の（Ｘ、Ｙ）値がＳ７０８においてメイン制御部４０２が取得したジェスチャ反応領域内であった場合、メイン制御部４０２は、ユーザインターフェイス部４０３に対し、該当オブジェクトの表示を変更するようメッセージを送る（Ｓ７１０）。ユーザインターフェイス部４０３はメッセージを受信し、表示切替処理を行う。これにより、ジェスチャ反応領域上に指先がある場合は対応するオブジェクトの色を変更することができる。このようにホバー操作を受付けたオブジェクトの色を変更することにより、ユーザの指先が操作面上のどのオブジェクトを指し示しているかをユーザが知ることができる。図８（ｄ）では、手８０６の指先がオブジェクト８０２上にはなく、ジェスチャ反応領域８１２上にある状態で、ボタンの色が変更されている様子を表している。図８ではタッチ操作を受付けている（ａ）においても、ホバー操作を受付けている（ｄ）においても、入力を受付けたオブジェクトの色が変化する場合について表している。しかし、ジェスチャ操作の種類に応じて、入力を受付けた後のユーザインターフェイスを変化させることとしてもよい。例えば、タッチ操作を受付けたときには画面をタッチされたオブジェクトに合わせて遷移させ、ホバー操作の場合は入力を受付けたオブジェクトの色を変化させる等である。本実施形態では、ホバー操作を受付けたオブジェクトについてオブジェクトの色を変化させる場合について説明した。しかし、ホバー操作を受付けた場合の表示は上記のものに限らない。例えば、ホバー操作を受付けたオブジェクトの輝度を明るくしたり、ホバー操作を受付けたオブジェクトについて注釈等を吹き出しで表示することとしてもよい。
【０１２１】
ＣＰＵ３０２は、不図示の終了ボタン押下などによる終了処理信号を受信したかどうかを確認し、受信した場合は処理を終了する（Ｓ７１１）。ＣＰＵ３０２が終了処理信号を受信していない場合はステップＳ７０２へ戻ってＵＩにオブジェクトがあるかどうかを確認する。
【０１２２】
以上の処理を繰り返すことで、指先の高さに応じてオブジェクトのジェスチャ反応領域の大きさを変更することが可能となる。ユーザの指先と操作面の距離が大きく離れていても、ジェスチャ反応領域が大きくなり、ユーザがホバー操作をした指の位置がオブジェクトの表示領域からずれてしまってもオブジェクトを反応させることができる。
【０１２３】
指先がオブジェクトに近づくにつれてジェスチャ反応領域が小さくなるため、ユーザの指先が操作面に近い場合には、オブジェクトの表示領域に近い領域においてオブジェクトに対するジェスチャ操作を受付けることができる。ユーザが操作面から離れた所から指先をオブジェクトに近づけたときにオブジェクトに対するホバー操作を受付ける領域を徐々にオブジェクトの表示されている領域に近づけていく。ユーザがホバー操作でオブジェクトを選択し続けながら指先を近づけることで、指先をオブジェクトの表示されている領域へ誘導することができる。
【０１２４】
図７のＳ７０５では、距離画像センサ部２０８の画角内にユーザの指先が写っている限り、指の高さＺがどれだけ大きくなっても、大きくなった分だけジェスチャ反応領域を大きくする場合について説明した。
【０１２５】
オフセット量を算出するための方法は上記の方法に限ったものでなく、所定の高さＨ以上ではジェスチャ反応領域の大きさをそれ以上大きくしないようにしてもよい。このとき、Ｓ７０５でＣＰＵ３０２がオフセット量δｈを計算する際、以下の式を用いることとする。
【０１２６】
【数２】
2018018308.tif 000004
Ｈは所定の高さを表す定数（Ｈ＞Ｔｈ）である。
【０１２７】
上記の式では、指先の高さＺが所定の高さＨよりも高いときはオフセット量δｈが常にａＨ＋ｂとなり一定の値になる。指先と操作平面が所定の高さ以上に離れている場合には、オフセット量δｈを一定とすることができる。
【０１２８】
本実施形態で示した方法を用いると、オブジェクトとオブジェクトの間隔が狭い場合、各オブジェクトのジェスチャ反応領域が重なってしまう場合がある。オブジェクトとオブジェクトの間隔Ｄを考慮して、オフセット量δｈの最大値がＤ／２となるようにしてもよい。
【０１２９】
図８（ｆ）、（ｇ）はユーザの指先と操作平面２０４からの距離に応じてオフセット量δｈが４０ｍｍになった場合のユーザインターフェイスおよびジェスチャ反応領域の模式図およびオブジェクト管理表を示している。
【０１３０】
図８（ｆ）、（ｇ）において、オブジェクト８０１とオブジェクト８０２の間の距離Ｄは５０ｍｍである。オフセット量δｈが４０ｍｍであると、オブジェクト１のジェスチャ領域とオブジェクト２のジェスチャ反応領域が重複してしまう。そこで、図８（ｇ）に示すオブジェクト管理表ではオブジェクト８０１とオブジェクト８０２の間のオフセット量δｈがＤ／２である２５ｍｍとなっている。このとき、ボタンオブジェクト８０１、ボタンオブジェクト８０２の上下、すなわちＹ方向ではδｈを４０ｍｍとしても他のオブジェクトとジェスチャ反応領域が重複することはない。したがって、ボタンオブジェクト８０１とボタンオブジェクト８０２の上下方向にはδｈ＝４０ｍｍ幅のオフセット量が設けられている。オブジェクト８０１、オブジェクト８０２以外のオブジェクトについても同様にオフセット量δｈの最大値がＤ／２になるようにしたものが図８（ｆ）、（ｇ）である。
【０１３１】
ＩＤ４番のオブジェクト８０４、ＩＤ５番のオブジェクト８０５のように、表示形状が異なる場合は、図８（ｆ）のようにどちらかのオブジェクトについて算出されたオフセットを優先して反映する。そして、もう一方のオブジェクトに対しては、他方のオブジェクトのジェスチャ反応領域に重複しないようにオフセット領域を設定する。図８（ｆ）では、ＩＤ４番オブジェクト８０４について算出されたオフセット量を優先して反映したジェスチャ領域が設定されており、オブジェクト８０５はオブジェクト８０４のジェスチャ反応領域と重複しない領域をジェスチャ反応領域として設定している。いずれのオブジェクトについて優先してジェスチャ反応領域を反映するかについては予め、オブジェクトの形状や種別ごとに決められていることとする。例えば、ボタン型のオブジェクト８０１〜８０３は優先度１、長方形のオブジェクト８０４は優先度２、円形のオブジェクト８０５は優先度３と決められており、決められた優先順位に従ってジェスチャ反応領域を決定する。オブジェクトの種別、優先順位はオブジェクト管理表生成時にＣＰＵ３０２がＨＤＤ３０５から読み出し、オブジェクト管理表の不図示の欄に記憶することとする。異なる形状のオブジェクトのジェスチャ反応領域が重複する場合のジェスチャ反応領域の求め方は上述した方法に限らない。
【０１３２】
本実施形態において、Ｓ７０５におけるオフセット量δｈを、一次式で求める場合について説明した。オフセット量δｈを求めるための関数は、指先の高さＺが高くなるにつれてδｈが大きくなる、単調増加の関数であればどのような式でもよい。
【０１３３】
また、オフセット量δｈを求めるための関数は操作平面２０４に表示されているすべてのオブジェクトで同じでもよいし、オブジェクトごとに異なっていてもよい。オブジェクトごとに異ならせておくことで、ホバーによる反応の感度をオブジェクトごとにカスタマイズすることが可能となる。
【０１３４】
本実施形態では、操作平面２０４を操作するユーザが一人であり、指先が一つ検出された場合のカメラスキャナ１０１の動作について説明した。操作平面２０４の複数の指先によって操作が可能であることとしてもよい。このとき、操作平面２０４を撮像した画像から検出される複数の指先のうち、指先の操作平面からの高さＺの値が小さい指先を優先してオフセット量δｈを決定することとする。
【０１３５】
第１の実施形態では、ユーザの指先と操作面の距離がタッチ閾値より大きく、ユーザの指先が撮像領域内にある限りホバー操作を受付けることとして説明した。操作面と指先の距離がタッチ閾値とは異なる所定の距離よりも大きくなったときにホバー操作を検出しないようにしてもよい。
【０１３６】
第１の実施形態に示す方法を実施することで、指先と操作平面の距離が離れるにつれてジェスチャ反応領域を大きくすることができる。これにより、ユーザが操作をする指先と操作平面の距離が変化しても、ユーザが操作したいオブジェクトを反応させることが可能
となる。
【０１３７】
（第２の実施形態）
第１の実施形態では、ユーザがジェスチャ操作を実行した指先と操作平面の距離に応じて、ジェスチャ反応領域の大きさを変更する場合について説明した。ユーザが操作平面を斜め上空から見てジェスチャ操作を行う場合、図１０（ｅ）に示すように、ユーザがジェスチャ操作を行う位置が、操作したいオブジェクトの表示位置と比べてユーザの体側に近くなる傾向がある。
【０１３８】
そこで、第２の実施形態では、ユーザがジェスチャ操作を行う指先と操作平面の距離とユーザの位置を検出し、ジェスチャ反応領域の位置を変更する方法を説明する。
【０１３９】
図１０に示す、操作平面２０４のユーザインターフェイスの模式図および、オブジェクト管理表の模式図を用いて第２の実施形態について説明する。図１０では、ユーザの手の侵入位置を検出し、検出した手の侵入位置を基に、ジェスチャ検出領域を移動する方向を決定している。
【０１４０】
図１０（ａ）、（ｆ）はユーザが操作平面２０４に表示されているオブジェクト８０２に指先をかざしてホバー操作をしているときの操作平面２０４の模式図および、オブジェクト管理表の模式図である。図１０（ａ）、（ｆ）ではジェスチャ反応領域の移動量Ｓが２０ｍｍの場合を示している。したがって、オブジェクト８０１〜８０５に対応するジェスチャ反応領域１００１〜１００５はすべて図で見た下側すなわちユーザの手の侵入側に２０ｍｍ移動している。
【０１４１】
図１０（ａ）の１０２３は手の侵入位置を示している。手の侵入位置の求め方については後述する。
【０１４２】
手８０６が操作平面２０４上に侵入したことに従って、カメラスキャナ１０１は指先と操作平面２０４の距離を検出し、検出した距離に基づいて、ジェスチャ反応領域を移動させる。
【０１４３】
図１０（ｆ）に示すオブジェクト管理表では、ジェスチャ反応領域はオブジェクト表示領域よりも２０ｍｍ、ユーザの手の侵入位置が検出された側に移動している。ジェスチャ反応領域をオブジェクト表示領域からどの程度移動させるかは、ユーザの指先と操作平面２０４との距離によって決定される。
【０１４４】
図９に第２の実施形態において行われる処理を示すフローチャートを示す。図９のフローチャートに示される処理を実行するためのプログラムはＨＤＤ３０５に記憶されており、ＣＰＵ３０２がプログラムを実行することで処理が実現する。
【０１４５】
図９のＳ７０１からＳ７０４、Ｓ７０６からＳ７１１に示す処理は第１の実施形態と同様であるため、説明を省略する。
【０１４６】
第２の実施形態ではＳ７０４において指先の高さを取得したのち、メイン制御部４０２は手の侵入位置１０２３を取得する（Ｓ９０１）。手の侵入位置は、図１０（ａ）では点１０２３、図１０（ｅ）では点１０２４であり、直交座標系で表すことができる。本実施形態では、操作平面２０４の外形および手の侵入位置のＸＹ座標を用いて手がどちらの方向から操作平面２０４に侵入したかを判定する。
【０１４７】
Ｓ９０１では、ジェスチャ認識部４０９が図６（ａ）のＳ６０１からＳ６３２までの処理を実行することにより、手の３次元点群を生成し、操作平面２０４に正射影して手の外形を検出する。検出した手の外形と、操作平面２０４の外形の二つの交点からできる線分の中点を手の侵入位置とする。
【０１４８】
Ｓ７０４で取得した指先の高さに基づいて、メイン制御部４０２はジェスチャ反応領域の移動量を算出する（Ｓ９０２）。ここでは、Ｓ７０４で検出された指先の高さが高いほどジェスチャ反応領域のオブジェクト表示領域からの移動量が大きいとする。
【０１４９】
移動量は、指先の高さに対して単調増加であれば第１の実施形態のように一次関数で表すこととしてもよいし、他の関数によって求められるものであってもよい。
【０１５０】
メイン制御部４０２はＳ９０２で求められたジェスチャ反応領域の移動量を基に、ジェスチャ反応領域を算出して、ＲＡＭ３０３に格納されているオブジェクト管理表に登録する（Ｓ７０６）。例えば図１０（ｅ）に示すオブジェクト管理表では、移動量Ｓが２０ｍｍであるため、オブジェクトの表示サイズとジェスチャ反応領域サイズは同一であり、ジェスチャ反応領域座標が表示座標と比較して２０ｍｍ移動している。これ以降の処理は図７と同様であるため説明を省略する。
【０１５１】
図９および図１０では、ユーザの指先と操作平面２０４の距離に応じて決定される移動量分だけ、ジェスチャ反応領域をユーザの手の侵入側に移動させる場合について説明した。ジェスチャ反応領域を移動させる方向はユーザの手の侵入側に限らない。たとえば、画角の十分広い距離画像センサやカメラや不図示のカメラを用いて、撮像画像からユーザの目の位置や人体の位置を検知することとする。検知したユーザの目の位置や人体の位置に基づいてジェスチャ反応領域を移動する方向を決定することとしてもよい。
【０１５２】
第２の実施形態では、指先と操作平面の距離が大きくなる分だけジェスチャ反応領域の移動量を大きくすることとして説明した。しかし、指先と操作平面の距離が所定の距離よりも大きくなったときに、ジェスチャ検出領域の移動量をそれ以上大きくしないこととしてもよい。
【０１５３】
また、ジェスチャ検出領域を移動するにあたり、他のオブジェクトの表示領域とジェスチャ領域が重複しないように制御することとしてもよい。たとえば、図１０（ａ）においてオブジェクト８０４のジェスチャ反応領域１００４が移動し、オブジェクト８０１の表示領域に重ならないよう制御することとしてもよい。
【０１５４】
第２の実施形態では、ユーザの指先と操作平面の距離に応じて、ジェスチャ反応領域の位置を移動させる場合について説明した。第１、第２の実施形態を組み合わせることで、指先と操作平面の距離に応じてジェスチャ反応領域の位置と大きさを変化させることとしてもよい。
【０１５５】
第２の実施形態では、操作平面を撮像した撮像画像から指先がひとつ検出された場合について説明した。図１０（ｂ）のように手８０６とは別の手１００６が、操作平面２０４の別の辺（図では右側の辺）から挿入された場合について説明する。
【０１５６】
図１０（ｂ）に示す状態において、カメラスキャナ１０１は手の侵入位置が点１０２３と点１０２５の２点であると判定する。したがって、カメラスキャナ１０１は図１０（ｂ）における操作平面下側と操作平面右側の両方にユーザがいると判定し、ジェスチャ領域を図１０（ｂ）の下側および、右側に移動させる。
【０１５７】
カメラスキャナ１０１はジェスチャ反応領域を操作平面下側に移動させた１００１から１００５に加えて、操作平面右側に移動させた１００７から１０１１をジェスチャ反応領域として設定する。
【０１５８】
オブジェクト管理表には操作平面下側にジェスチャ反応領域を移動させたときのジェスチャ反応座標およびジェスチャ反応領域サイズにくわえ、操作平面右側に移動させたときのジェスチャ反応領域座標およびジェスチャ反応領域サイズを設定する。例えば図１０（ｆ）に示すオブジェクト管理表において、ＩＤ「１」のジェスチャ反応領域座標を（５０、３３０）、（８０、３５０）、ジェスチャ反応領域サイズ（Ｗ、Ｈ）＝（１００、２０）、（１００、２０）のように設定する。図１０（ｄ）は図１０（ｂ）と対応しており、点１０２３と点１０２５から手が侵入した場合のジェスチャ反応領域を点線で示している。
【０１５９】
メイン制御部４０２がホバー座標のＸ、Ｙ成分が二つのジェスチャ反応領域のいずれかの領域内に含まれているかを否か判定し、ジェスチャ操作を受付けるか否かを判定する。
【０１６０】
第２の実施形態では、指先と操作平面の距離に応じて決定される移動量に応じてオブジェクト表示領域を移動させたものをジェスチャ反応領域として設定する場合について説明した。図１０（ｃ）のように、上記の方法で決定される移動後のジェスチャ反応領域とオブジェクトの表示領域をあわせてホバー操作のジェスチャ反応領域と設定してもよい。図１０（ｃ）では、点線で書かれた１０１２から１０１６がジェスチャ反応領域としてオブジェクト管理表に記憶される。
【０１６１】
第２の実施形態に示した処理を実行することで、ホバー操作時にユーザの指先が選択したいオブジェクトよりもユーザ側に近寄ってしまった場合にも、ユーザの操作したいオブジェクトを反応させることができる。
【０１６２】
（第３の実施形態）
第１の実施形態では、ユーザの指先がタッチ閾値Ｔｈよりも高い位置にあるとき、すなわちホバー操作が行われているときに指先と操作平面の距離に応じて、ジェスチャ反応領域を変化させる場合について説明した。そして、第１の実施形態では、ユーザの指先はタッチ閾値よりも低い位置にある場合のオフセット量δｈを０ｍｍ、すなわちオブジェクト表示領域とジェスチャ反応領域を同じにすることとして説明した。第３の実施形態では、ユーザの指先と操作平面の距離がタッチ閾値以下になった場合にも、オブジェクト表示領域よりも広い領域をジェスチャ反応領域とする場合について説明する。
【０１６３】
図１２では、ユーザがオブジェクト１２０９にたいしてタッチ操作を行うときの様子を横から見た図を示している。
【０１６４】
カメラスキャナ１０１は指先の高さがタッチ閾値１２０３よりも低い位置にあることが検出されたときにタッチ操作を受付ける。
【０１６５】
図１２では、ユーザの指先が１２０５に示す軌道でオブジェクト１２０９に近づいている。タッチ操作が行われたと検出される点は１２０８であり、１２０８を操作平面に正射影した点は１２０６となる。これでは、ユーザがオブジェクト１２０９をタッチしようと指を動かしているにもかかわらず、指先の高さがタッチ閾値よりも低い位置にきても目的のオブジェクト１２０９をタッチ操作することができない。
【０１６６】
そこで第３の実施形態では、タッチ操作についてもオフセット量を設定し、タッチ操作に反応するジェスチャ反応領域をオブジェクト反応領域よりも大きいものにする。
【０１６７】
第３の実施形態にて行う処理について図１１のフローチャートを用いて説明する。
【０１６８】
図１１のフローチャートに示す処理を実行するためのプログラムはＨＤＤ３０５に記憶されており、ＣＰＵ３０２がそのプログラムを実行することで処理を実現する。
【０１６９】
図１１に示す処理のうち、Ｓ７０１、Ｓ７０２およびＳ７０４からＳ７１１は図７に示す処理と同様であるため説明を省略する。
【０１７０】
Ｓ７０２において、メイン制御部４０２が操作平面２０４のユーザインターフェイスにオブジェクトが表示されていると判定した場合、メイン制御部４０２はジェスチャ認識部４０９においてタッチイベントが受信されたかを判定する（Ｓ１１０１）。
【０１７１】
タッチイベントとは、図６に示す処理においてユーザの指先と操作平面２０４の距離が所定のタッチ閾値以下になったときに生じるイベントである。タッチイベントにはタッチ操作が検出された座標が直交座標系で記憶されている。
【０１７２】
Ｓ１１０１においてタッチイベントが検出されなかった場合、メイン制御部４０２はＳ７１１に処理を進め終了処理が実行されたかを判定する。
【０１７３】
Ｓ１１０１においてタッチイベントが検出された場合、メイン制御部４０２はタッチイベントから指先の高さ、すなわちＺ方向の情報を取得する（Ｓ７０４）。
【０１７４】
メイン制御部４０２はＳ７０４において取得した高さに応じて、ジェスチャ反応領域のオフセット量δｔを算出する（Ｓ７０５）。第３の実施形態ではジェスチャ反応領域δｔを算出するための式として以下の式を用いる。
【０１７５】
【数３】
2018018308.tif 000005
δｔ１は式の切片であり、ユーザの指先が操作平面２０４に接触しているときのオフセット量である。オフセット量δｔ１が正の値あることで、タッチ反応領域は常にオブジェクト表示領域よりも大きく設定することができる。
【０１７６】
指先と操作平面２０４の距離が大きくなるにつれてオフセット量δｔが大きくなるようにするため、ｃは正の定数である。
【０１７７】
メイン制御部４０２がジェスチャ反応領域を算出した後の処理については図７に示す第１の実施形態と同様であるため、説明を省略する。
【０１７８】
図１１では、指先がタッチ閾値よりも低い高さになったときに、タッチ操作の行われている指先と操作平面の距離に応じてジェスチャ反応領域を変化させる場合の処理を説明した。
【０１７９】
タッチ操作時のジェスチャ反応領域の決定の仕方は上記の方法に限らない。例えば、予め、タッチ閾値に応じたオフセット量を決定しておき、タッチイベントを検出したことに従って、予め決められたジェスチャ反応領域を反映することとしてもよい。
【０１８０】
また、図１１に示す処理のＳ７０５において、タッチイベントから検出される指の高さではなく、タッチ閾値の値を用いてオフセット量δｔを算出して、算出されたオフセット量をオブジェクト管理表に反映することとしてもよい。この場合、オフセット量δｔは毎回所定の値となる。タッチ閾値の値を用いてオフセット量を設定する場合は、予めタッチ閾値を用いて算出されるオフセット量δｔを情報処理装置内に記憶しておいてもよいし、タッチイベント受信時にオフセット量δｔを算出することとしてもよい。
【０１８１】
本実施形態ではユーザの指先の高さがタッチ閾値以下の場合についてのみ説明したが、ユーザの指先の高さがタッチ閾値より高いとき第１の実施形態で説明した処理を行うこととしてもよい。このようにすることで、タッチ操作時とホバー操作時の両方でジェスチャ反応領域を変更することができる。
【０１８２】
本実施形態では、タッチ操作の反応するジェスチャ反応領域の大きさを大きくする方法を説明したが、実施形態２と同様にしてタッチ反応領域をずらしてもよい。
【０１８３】
第３の実施形態を実施することで、図１２の１２０５に示すような軌道でユーザが指先を動かしてオブジェクトをタッチ操作しようとした場合に、ユーザの意図するオブジェクトを反応させることができる。
【０１８４】
（第４の実施形態）
第３の実施形態では、ユーザの指先の高さがタッチ閾値以下になったときにタッチ操作を検出し、そのタッチ操作時の指先の高さからタッチ操作に反応するジェスチャ反応領域の大きさを決定する場合について説明した。
【０１８５】
オブジェクトに指先を近づけてオブジェクトを触るタッチ操作に対して、接触したオブジェクトから指先を離すリリース操作がある。タッチ操作を検出するタッチ閾値とリリース操作を検出するリリース閾値を同じにしてしまうと、ユーザの指先がタッチ閾値に近い高さにあるときにタッチ操作とリリース操作が交互に連続して検出されてしまうことがある。ユーザがタッチ閾値付近で指を動かしているにも関わらず、タッチやリリースの操作が繰り返し交互に行われてしまうと、プロジェクタ２０７によって表示される表示が連続してい切り替わってしまい、表示が見えにくくなってしまう。上記のような現象をチャタリングと呼び、チャタリングを解消するためにタッチ閾値とリリース閾値を異なる高さに設けることが提案されている。
【０１８６】
第３の実施形態では、タッチ閾値に加え、リリース閾値があるときのカメラスキャナ１０１の処理について説明する。
【０１８７】
図１４（ａ）に操作平面上の指先の動きとタッチ閾値、リリース閾値の関係についての模式図を示す。
【０１８８】
図１４（ａ）において、１２０３がタッチ閾値、１４０３がリリース閾値である。ユーザの指が軌道１２０５に沿って操作平面２０４に近づき、軌道１２０５に沿って操作平面２０４から指先が離れたときの動作を例に説明する。
【０１８９】
ユーザが指先を操作平面２０４に指先を近づけると、指先が１２０８の位置に到達したときにタッチ操作が検出される。一方で、ユーザが指先を軌道１２０５に沿って操作平面２０４から遠ざけるとき、指先が１４０５の位置に到達したときに、リリース操作が検出される。図１４（ａ）ではリリース閾値の方がタッチ閾値よりも操作平面から離れた位置にあるため、リリース操作検出時のジェスチャ反応領域がタッチ操作検出時のジェスチャ反応領域よりも大きくなるように設定する。このようにすることで、指先を操作面に接触させた後に、指先が操作面上で少し移動してしまった場合にも、タッチしたオブジェクトに対するリリース操作であると情報処理装置が判定することができる。
【０１９０】
第４の実施形態では、タッチ操作、ホバー操作、リリース操作の３種類のジェスチャ操作がジェスチャ認識部４０９において認識される。ジェスチャ認識部４０９は図６に示すフローチャートに係る処理を実行する。ここで、第１の実施形態と異なる部分のみ説明する。
【０１９１】
Ｓ６０１〜Ｓ６０３、Ｓ６０５は第１の実施形態と同様の処理であるため説明を省略する。
【０１９２】
Ｓ６０４において、ジェスチャ認識部４０９はタッチ操作、ホバー操作、リリース操作、またはジェスチャ操作なしのいずれが行われているかを判定する。
【０１９３】
Ｓ６４１、Ｓ６４２、Ｓ６４６において、ジェスチャ認識部４０９の行う処理は第１の実施形態と同様である。
【０１９４】
Ｓ６４３において、ジェスチャ認識部４０９は算出した距離が次のいずれであるかを判定する。検出した距離がタッチ閾値以下の場合、ジェスチャ認識部４０９は処理をＳ６４４に進め、タッチ操作を検出する。検出した距離がリリース閾値よりも大きい場合、ジェスチャ認識部４０９は処理をＳ６４５に進めジェスチャ認識部４０９はホバー操作を検出する。検出した距離が、タッチ閾値よりも大きくリリース閾値以下の場合、ジェスチャ認識部４０９は、リリース操作を検出する（不図示）。ジェスチャ操作検出後の処理は第１の実施形態と同様であるため、説明を省略する。
【０１９５】
図１３にタッチ閾値とリリース閾値を有する場合のカメラスキャナ１０１の実行する処理を表すフローチャートを示す。図１３に示す処理を実行するためのプログラムはＨＤＤ３０５に記憶されており、ＣＰＵ３０２が上記のプログラムを実行することにより処理を実現する。
【０１９６】
Ｓ７０１、Ｓ７０２、Ｓ７０４からＳ７１１は図７に示す処理と同様であり、ＳＳ１１０１に示す処理は図１１に示す処理と同様であるため、説明を省略する。
【０１９７】
Ｓ１１０１において、メイン制御部４０２がタッチイベントを受信しなかった場合、メイン制御部４０２はリリースイベントを受信したか否かを判定する（Ｓ１３０１）。リリースイベントとはユーザの指先の高さがリリース閾値１４０３よりも低い位置にある状態からリリース閾値１４０３よりも高い位置に変化することにより発生するイベントである。リリースイベントにはリリース操作が検出された位置の座標が直交座標系であらわされている。
【０１９８】
メイン制御部４０２は、リリースイベントを受信した場合、Ｓ７０４に進みリリースイベントから指先の高さを取得する。リリース操作が行われたときのリリース操作位置はリリースイベントを表す直交座標系のＺ座標の値である。
【０１９９】
メイン制御部４０２は、指先の高さに応じてオフセット量を算出する（Ｓ７０５）。ジェスチャ反応領域の算出に用いる式は第１の実施形態や第３の実施形態に表されるような単調増加の一次関数の式である。比例定数は第１の実施形態の式（４）のａや第３の実施形態の式（６）のｃと異なる値であってもよい。
【０２００】
Ｓ７０５において求められたオフセット量を基にジェスチャ反応領域を設定する（Ｓ７０６）。以下の処理は図７と同じであるため説明を省略する。
【０２０１】
Ｓ１３０１において、リリースイベントを受信していなかった場合、メイン制御部４０２はホバーイベントを受信したか否かを判定する（Ｓ７０３）。ホバーイベントを受信していた場合、メイン制御部４０２は受信したホバーイベントに従ってＳ７０４以下の処理を実行する。
【０２０２】
タッチ閾値とリリース閾値を別にし、それぞれの操作が行われたときにジェスチャ反応領域を設定することで、タッチ、リリースがどのオブジェクトに対して行われたものであるかを判定することができる。
【０２０３】
図１３では、リリース操作の行われたときの指先の高さに応じて、ジェスチャ反応領域を変化させることとして説明した。リリース操作がおこなわれたときに、リリース閾値の値によって決められるジェスチャ反応領域を反映して、どのオブジェクトに対してリリース操作が行われたかを判定してもよい。
【０２０４】
図１３では、ジェスチャ認識部４０９によって認識されたジェスチャがタッチ操作またはリリース操作であったときの場合について説明した。ユーザの指先の高さがリリース閾値よりも高かった場合に、ジェスチャ認識処理部がホバーイベントを受信し、第１の実施形態に従ってその指先の高さに応じてジェスチャ反応領域を変化させることとしてもよい。
【０２０５】
図１３では、指先の高さに応じてジェスチャ反応領域の大きさを変化させる場合について説明した。しかし、第２の実施形態のように、指先の高さに応じてジェスチャ反応領域を移動させることとしてもよい。
【０２０６】
本実施形態では、タッチ閾値より高くリリース閾値以下の高さに指先があるときに、リリース操作が行われていることとして説明した。ジェスチャ認識部がリリース閾値以下の高さに指先がある状態からリリース閾値以上の高さに指先が移動したことを検知した場合にリリース操作が行われたと判断することとしてもよい。
【０２０７】
以上の処理により、リリース閾値がタッチ閾値より高く、ユーザの意図した位置から、タッチ位置よりリリース位置の方が大きくずれてしまう場合でも、ユーザの意図通りにタッチ、リリース両方のイベントをオブジェクトに対して通知することが可能となる。
【０２０８】
（その他の実施形態）
第１から第４の実施形態では、ユーザが指で操作をする場合について説明した。ユーザが指で操作を行わなくても、タッチペン等を用いて操作することとしてもよい。
【０２０９】
第１から第４の実施形態では、タッチ閾値以下の領域に指先があるときにタッチ操作が行われるとして説明した。タッチ閾値以上の高さに指先がある状態からタッチ閾値以下の高さに指先がある状態へ移行したときにタッチ操作が行われたとしてジェスチャ認識部４０９がタッチイベントを通知することとしてもよい。
【０２１０】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのコンピュータプログラム、及び該コンピュータプログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
2018018308.tif 000006
【図２】
2018018308.tif 000007
【図３】
2018018308.tif 000008
【図４】
2018018308.tif 000009
【図５】
2018018308.tif 000010
【図６】
2018018308.tif 000011
【図７】
2018018308.tif 000012
【図８】
2018018308.tif 000013
【図９】
2018018308.tif 000014
【図１０】
2018018308.tif 000015
【図１１】
2018018308.tif 000016
【図１２】
2018018308.tif 000017
【図１３】
2018018308.tif 000018
【図１４】
2018018308.tif 000019