(57)【要約】【課題】複数の操作モードの機能を用途に合わせて適切なタイミングで使用することが可能な画像処理装置を提供する。【解決手段】カメラスキャナ１０１が備えるジェスチャー認識部４０９は、操作平面２０４に対するユーザのジェスチャーを検出し、メイン制御部４０２へ通知する。メイン制御部４０２は、複数の操作モードのうち現在設定されている操作モード、及び当該ジェスチャーの対象となる操作平面２０４の領域におけるＵＩに応じて、操作平面２０４の表示を制御する。【選択図】図８
2017107453.tif 000002
【特許請求の範囲】
【請求項１】
操作平面に対するユーザのジェスチャーを検出する検出手段と、
前記検出手段が前記ユーザのジェスチャーを検出した場合に、複数の操作モードのうち現在設定されている操作モード、及び当該ジェスチャーの対象となる前記操作平面の領域における表示に応じて、前記操作平面の表示を制御する制御手段と、を備えることを特徴とする画像処理装置。
【請求項２】
前記操作モードは、少なくとも前記操作平面に表示された部品に対する操作を行うタッチモードと、前記操作平面または当該操作平面に載置された物体を指し示すポインタモードと、を含むことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記検出手段は、少なくとも前記操作平面から所定の距離以上にある前記ユーザの手の指先を検出する、ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記検出手段が前記ユーザのジェスチャーを検出した場合であって、前記現在設定されている操作モードが前記タッチモードであるときに、
前記制御手段は、前記ジェスチャーが前記操作平面に表示された特定の機能を実行するための部品に対する操作であるか否かを判断し、
前記ジェスチャーが前記操作平面に表示された特定の機能を実行するための部品に対する操作であった場合に、前記制御手段は、当該部品を選択状態とする、ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記検出手段が前記ユーザのジェスチャーを検出した場合であって、前記現在設定されている操作モードが前記タッチモードであるときに、
前記ジェスチャーが前記操作平面に表示された特定の機能を実行するための部品に対する操作でなかった場合に、前記制御手段は、前記検出手段が検出した指先から前記操作平面に下ろした垂線と当該操作平面との交点にポインタを表示する、ことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記検出手段が前記ユーザのジェスチャーを検出した場合であって、前記現在設定されている操作モードが前記ポインタモードであるときに、
前記制御手段は、前記検出手段が検出した指先の延長線と前記操作平面との交点にポインタを表示する、ことを特徴とする請求項２ないし５のいずれか１項に記載の画像処理装置。
【請求項７】
前記検出手段が前記ユーザのジェスチャーを検出した場合であって、前記現在設定されている操作モードが前記ポインタモードであるときに、
前記制御手段は、前記検出手段が検出した指先の延長線と前記操作平面との交点に、前記操作平面に表示された特定の機能を実行するための部品が表示されており、かつ、当該指先が所定の時間静止している場合に、当該部品を選択状態とする、ことを特徴とする請求項請求項６に記載の画像処理装置。
【請求項８】
前記操作平面に対する所定のジェスチャー、または前記画像処理装置に対する入力操作が行われた場合に、前記操作モードを有効にする、または無効にするように設定する設定手段と、
前記検出手段が前記ユーザのジェスチャーを検出した場合であって、当該検出したジェスチャーが前記設定手段において設定されていたときに、前記設定に応じて前記操作モードを有効にする、及び無効にするように切り替える切り替え手段と、をさらに備えることを特徴とする請求項１ないし７のいずれか１項に記載の画像処理装置。
【請求項９】
操作平面に対するユーザのジェスチャーを検出する検出工程と、
前記検出工程において前記ユーザのジェスチャーを検出した場合に、複数の操作モードのうち現在設定されている操作モード、及び当該ジェスチャーの対象となる前記操作平面の領域における表示に応じて、前記操作平面の表示を制御する制御工程と、を有することを特徴とする画像処理装置の制御方法。
【請求項１０】
請求項１ないし請求項８のいずれか１項に記載の画像処理装置が備える各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
可視光カメラや赤外線カメラ、３次元距離センサなどを用いてユーザの手指や腕領域を検出し、その動きや位置に応じて機器を制御するシステムが提案されている。特許文献１は、ユーザの手指が操作平面上に接触していることを検出した場合に、ポインタの位置に対応する処理を実行する車載操作システムを開示している。特許文献２は、操作者が指し示す方向の延長線上と、実空間上にある登録された物体との交点に関する情報を検出するインタフェース装置を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１０８２５５号公報
【特許文献２】特開２００４−２６５２２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、操作平面に表示されたＵＩへの操作を行うことと、操作平面または操作平面上の物体を指し示すことの両方を行いたい場合もありうる。特許文献１または特許文献２に開示された装置では、このように複数の操作モードを適切に切り替えて使用することができない。
【０００５】
本発明は、複数の操作モードの機能を用途に合わせて適切なタイミングで使用することが可能な画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施形態の画像処理装置は、操作平面に対するユーザのジェスチャーを検出する検出手段と、前記検出手段が前記ユーザのジェスチャーを検出した場合に、複数の操作モードのうち現在設定されている操作モード、及び当該ジェスチャーの対象となる前記操作平面の領域における表示に応じて、前記操作平面の表示を制御する制御手段と、を備える。
【発明の効果】
【０００７】
本発明の画像処理装置によれば、複数の操作モードの機能を用途に合わせて適切なタイミングで使用することができる。これによりユーザの利便性や操作性を向上させることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】カメラスキャナのネットワーク構成を示す図である。
【図２】カメラスキャナの構成例を示す図である。
【図３】カメラスキャナのコントローラ部のハードウェア構成例を示す図である。
【図４】カメラスキャナの制御用プログラムの機能構成を示す図である。
【図５】距離画像取得部が実行する処理を説明する図である。
【図６】ジェスチャー認識部が実行する処理を説明する図である。
【図７】ジェスチャー認識部が実行する指先検出処理を説明する図である。
【図８】メイン制御部が実行する処理を説明するためのフローチャートである。
【図９】タッチモード処理及びポインタモード処理を説明するフローチャートである。
【図１０】タッチモードにおけるジェスチャーと操作平面の表示を示す図である。
【図１１】タッチモードにおけるジェスチャーと操作平面の表示を示す図である。
【図１２】ポインタモードにおけるジェスチャーと操作平面の表示を示す図である。
【図１３】ポインタモードにおけるジェスチャーと操作平面の表示を示す図である。
【図１４】メイン制御部が実行する処理を説明するためのフローチャートである。
【図１５】ジェスチャーと操作平面の表示を示す図である。
【図１６】ポインタモード処理を説明するフローチャートである。
【図１７】操作平面に対するジェスチャーの一例を示す図である。
【図１８】画像処理装置のその他の適用場面の一例を示す図である。
【発明を実施するための形態】
【０００９】
（第１実施形態）
図１は、一実施形態に係るカメラスキャナ１０１（画像処理装置）が含まれるネットワーク構成を示す図である。
図１に示すように、カメラスキャナ１０１は、イーサネット（登録商標）等のネットワーク１０４にてホストコンピュータ１０２及びプリンタ１０３に接続されている。図１のネットワーク構成において、ホストコンピュータ１０２からの指示により、カメラスキャナ１０１から画像を読み取るスキャン機能や、スキャンデータをプリンタ１０３により出力するプリント機能の実行が可能である。また、ホストコンピュータ１０２を介さず、カメラスキャナ１０１への直接の指示により、スキャン機能、プリント機能の実行も可能である。
【００１０】
＜カメラスキャナの構成＞
図２は、一実施形態に係るカメラスキャナ１０１の構成例を示す図である。
図２（Ａ）に示すように、カメラスキャナ１０１は、コントローラ部２０１、カメラ部２０２、腕部２０３、プロジェクタ２０７、距離画像センサ部２０８を含む。カメラスキャナの本体であるコントローラ部２０１と、撮像を行うためのカメラ部２０２、プロジェクタ２０７及び距離画像センサ部２０８は、腕部２０３により連結されている。腕部２０３は、関節を用いて曲げ伸ばしが可能である。
【００１１】
図２（Ａ）には、カメラスキャナ１０１が設置されている操作平面２０４も示している。カメラ部２０２及び距離画像センサ部２０８のレンズは、操作平面２０４方向に向けられており、破線で囲まれた読み取り領域２０５内の画像を読み取り可能である。図２の例では、原稿２０６は、読み取り領域２０５内に置かれているので、カメラスキャナ１０１に読み取り可能となっている。カメラ部２０２は、単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像が可能なものとすることが好ましい。
【００１２】
操作平面２０４内にはターンテーブル２０９を設けてもよい。ターンテーブル２０９は、コントローラ部２０１からの指示によって回転することが可能であり、ターンテーブル２０９上に置かれた物体とカメラ部２０２との角度を変えることができる。また、カメラスキャナ１０１は、不図示のＬＣＤタッチパネル３３０及びスピーカ３４０をさらに含むこともできる。さらに、カメラスキャナ１０１は、周囲の環境情報を収集するための人感センサ、照度センサ、加速度センサなどの各種センサデバイスを含むこともできる。
【００１３】
図２（Ｂ）は、カメラスキャナ１０１における座標系について表している。カメラスキャナ１０１では各ハードウェアデバイスに対して、カメラ座標系、距離画像座標系、プロジェクタ座標系という座標系が定義される。これらはカメラ部２０２及び距離画像センサ部２０８が撮像する画像平面、またはプロジェクタ２０７が投影する画像平面をそれぞれＸＹ平面とし、各画像平面に直交した方向をＺ方向として定義したものである。さらに、これらの独立した座標系の３次元データを統一的に扱えるようにするために、操作平面２０４を含む平面をＸＹ平面とし、このＸＹ平面から上方に垂直な向きをＺ軸とする直交座標系を定義する。
【００１４】
座標系を変換する場合の例として、図２（Ｃ）に直交座標系と、カメラ部２０２を中心としたカメラ座標系を用いて表現された空間と、カメラ部２０２が撮像する画像平面との関係を示す。直交座標系における３次元点Ｐ［Ｘ，Ｙ，Ｚ］は、（１）式によって、カメラ座標系における３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］へ変換できる。
【数１】
2017107453.tif 000003
ここで、Ｒｃ及びｔｃは、直交座標系に対するカメラの姿勢（回転）と位置（並進）によって求まる外部パラメータによって構成され、Ｒｃを３×３の回転行列、ｔｃを並進ベクトルと呼ぶ。逆に、カメラ座標系で定義された３次元点は、（２）式によって、直交座標系への変換することができる。
【数２】
2017107453.tif 000004
【００１５】
さらに、カメラ部２０２で撮影される２次元のカメラ画像平面は、カメラ部２０２によって３次元空間中の３次元情報が２次元情報に変換されたものである。すなわち、カメラ座標系上での３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］を、（３）式によってカメラ画像平面での２次元座標ｐｃ［ｘｐ，ｙｐ］に透視投影変換することによって変換することが出来る。
【数３】
2017107453.tif 000005
ここで、Ａは、カメラの内部パラメータと呼ばれ、焦点距離と画像中心などで表現される３×３の行列である。
【００１６】
以上のように、（１）式と（３）式を用いることで、直交座標系で表された３次元点群を、カメラ座標系での３次元点群座標やカメラ画像平面に変換することが出来る。なお、各ハードウェアデバイスの内部パラメータ及び直交座標系に対する位置姿勢（外部パラメータ）は、公知のキャリブレーション手法によりあらかじめキャリブレーションされているものとする。以後、特に断りがなく３次元点群と表記した場合は、直交座標系における３次元データを表しているものとする。
【００１７】
＜カメラスキャナのコントローラ部のハードウェア構成＞
図３は、カメラスキャナ１０１の本体であるコントローラ部２０１のハードウェア構成例を示す図である。
図３に示すように、コントローラ部２０１は、システムバス３０１に接続されたＣＰＵ３０２、ＲＡＭ３０３、ＲＯＭ３０４、ＨＤＤ３０５、ネットワークＩ／Ｆ３０６、画像処理プロセッサ３０７、カメラＩ／Ｆ３０８を含む。
【００１８】
ＣＰＵ３０２は、コントローラ部２０１全体の動作を制御する中央演算装置である。ＲＡＭ３０３は、揮発性メモリである。ＲＯＭ３０４は、不揮発性メモリであり、ＣＰＵ３０２の起動用プログラムが格納されている。ＨＤＤ３０５は、ＲＡＭ３０３と比較して大容量なハードディスクドライブ（ＨＤＤ）である。ＨＤＤ３０５にはコントローラ部２０１の実行する、カメラスキャナ１０１の制御用プログラムが格納されている。
【００１９】
ＣＰＵ３０２は、電源ＯＮ等の起動時、ＲＯＭ３０４に格納されている起動用プログラムを実行する。この起動用プログラムは、ＨＤＤ３０５に格納されている制御用プログラムを読み出し、ＲＡＭ３０３上に展開するためのものである。ＣＰＵ３０２は、起動用プログラムを実行すると、続けてＲＡＭ３０３上に展開した制御用プログラムを実行し、制御を行う。
【００２０】
また、ＣＰＵ３０２は、制御用プログラムによる動作に用いるデータもＲＡＭ３０３上に格納して読み書きを行う。ＨＤＤ３０５上にはさらに、制御用プログラムによる動作に必要な各種設定や、カメラ入力によって生成した画像データを格納することができ、ＣＰＵ３０２によって読み書きされる。ＣＰＵ３０２は、ネットワークＩ／Ｆ３０６を介してネットワーク１０４上の他の機器との通信を行う。
【００２１】
画像処理プロセッサ３０７は、ＲＡＭ３０３に格納された画像データを読み出して処理し、またＲＡＭ３０３へ書き戻す。なお、画像処理プロセッサ３０７が実行する画像処理は、回転、変倍、色変換等である。カメラＩ／Ｆ３０８は、カメラ部２０２及び距離画像センサ部２０８と接続され、ＣＰＵ３０２からの指示に応じてカメラ部２０２から画像データを、距離画像センサ部２０８から距離画像データを取得してＲＡＭ３０３へ書き込む。また、ＣＰＵ３０２からの制御コマンドをカメラ部２０２及び距離画像センサ部２０８へ送信し、カメラ部２０２及び距離画像センサ部２０８の設定を行う。
【００２２】
また、コントローラ部２０１は、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１及びＵＳＢコントローラ３１２のうち少なくとも１つをさらに含むことができる。ディスプレイコントローラ３０９は、ＣＰＵ３０２の指示に応じてディスプレイへの画像データの表示を制御する。ここでは、ディスプレイコントローラ３０９は、プロジェクタ２０７及びＬＣＤタッチパネル３３０に接続されている。
【００２３】
シリアルＩ／Ｆ３１０は、シリアル信号の入出力を行う。ここでは、シリアルＩ／Ｆ３１０は、ターンテーブル２０９に接続され、ＣＰＵ３０２の回転開始・終了及び回転角度の指示をターンテーブル２０９へ送信する。また、シリアルＩ／Ｆ３１０は、ＬＣＤタッチパネル３３０に接続され、ＣＰＵ３０２は、ＬＣＤタッチパネル３３０が押下されたときに、シリアルＩ／Ｆ３１０を介して押下された座標を取得する。
【００２４】
オーディオコントローラ３１１は、スピーカ３４０に接続され、ＣＰＵ３０２の指示に応じて音声データをアナログ音声信号に変換し、スピーカ３４０を通じて音声を出力する。ＵＳＢコントローラ３１２は、ＣＰＵ３０２の指示に応じて外付けのＵＳＢデバイスの制御を行う。ここでは、ＵＳＢコントローラ３１２は、ＵＳＢメモリやＳＤカードなどの外部メモリ３５０に接続され、外部メモリ３５０へのデータの読み書きを行う。
【００２５】
＜カメラスキャナの制御用プログラムの機能構成＞
図４は、ＣＰＵ３０２が実行するカメラスキャナ１０１の制御用プログラムの機能構成４０１を示す図である。
カメラスキャナ１０１の制御用プログラムは、前述のようにＨＤＤ３０５に格納され、ＣＰＵ３０２が起動時にＲＡＭ３０３上に展開して実行する。メイン制御部４０２は、制御の中心であり、機能構成４０１内の他の各モジュールを制御する。
【００２６】
画像取得部４１６は、画像入力処理を行うモジュールであり、カメラ画像取得部４０７、距離画像取得部４０８から構成される。カメラ画像取得部４０７は、カメラＩ／Ｆ３０８を介してカメラ部２０２が出力する画像データを取得し、ＲＡＭ３０３へ格納する。距離画像取得部４０８は、カメラＩ／Ｆ３０８を介して距離画像センサ部２０８が出力する距離画像データを取得し、ＲＡＭ３０３へ格納する。距離画像取得部４０８の処理の詳細は、図５を用いて後述する。
【００２７】
認識処理部４１７は、カメラ画像取得部４０７、距離画像取得部４０８が取得する画像データから操作平面２０４上の物体の動きを検知して認識するモジュールであり、ジェスチャー認識部４０９、物体検知部４１０から構成される。ジェスチャー認識部４０９は、画像取得部４１６から操作平面２０４上の画像を取得し続け、タッチなどのジェスチャーを検出するとメイン制御部４０２へ通知する。ジェスチャー認識部４０９の処理の詳細は、図６及び図７を用いて後述する。
【００２８】
物体検知部４１０は、画像取得部４１６から操作平面２０４を撮像した画像を取得し、操作平面２０４上に物体が置かれるタイミング、物体が置かれて静止するタイミング、または物体が取り除かれるタイミングなどを検知する処理を行う。
【００２９】
画像処理部４１８は、カメラ部２０２及び距離画像センサ部２０８から取得した画像を画像処理プロセッサ３０７で解析するために用いられ、各種画像処理モジュールで構成される。前述のジェスチャー認識部４０９や物体検知部４１０は、画像処理部４１８の各種画像処理モジュールを利用して実行される。ユーザインタフェース部４０３は、メイン制御部４０２からの要求を受け、メッセージやボタン等のＧＵＩ部品を生成する。そして、表示部４０６へ生成したＧＵＩ部品の表示を要求する。
【００３０】
表示部４０６は、ディスプレイコントローラ３０９を介して、プロジェクタ２０７またはＬＣＤタッチパネル３３０へ要求されたＧＵＩ部品の表示を行う。プロジェクタ２０７は、操作平面２０４に向けて設置されているため、操作平面２０４上にＧＵＩ部品を投射することが可能となっている。また、ユーザインタフェース部４０３は、ジェスチャー認識部４０９が認識したタッチ等のジェスチャー操作、またはシリアルＩ／Ｆ３１０を介したＬＣＤタッチパネル３３０からの入力操作、及びそれらの座標を受信する。
【００３１】
そして、ユーザインタフェース部４０３は、描画中の操作画面（ＵＩ画面）の内容と操作座標を対応させて操作内容（押下されたボタン等）を判定する。この操作内容をメイン制御部４０２へ通知することにより、操作者の操作を受け付ける。ネットワーク通信部４０４は、ネットワークＩ／Ｆ３０６を介して、ネットワーク１０４上の他の機器とＴＣＰ／ＩＰによる通信を行う。データ管理部４０５は、制御用プログラムの実行において生成した作業データなど様々なデータをＨＤＤ３０５上の所定の領域へ保存し、管理する。
【００３２】
＜距離画像センサ部及び距離画像取得部の説明＞
図３に示すように、距離画像センサ部２０８は、赤外線パターン投射部３６１、赤外線カメラ３６２、及びＲＧＢカメラ３６３を備える。距離画像センサ部２０８は、赤外線によるパターン投射方式の距離画像センサである。赤外線パターン投射部３６１は、対象物に、人の目には不可視である赤外線によって３次元形状測定パターンを投射する。赤外線カメラ３６２は、対象物に投射した３次元形状測定パターンを読み取るカメラである。ＲＧＢカメラ３６３は、人の目に見える可視光をＲＧＢ信号で撮影するカメラである。
【００３３】
図５（Ａ）は、距離画像取得部４０８の処理を説明するためのフローチャートである。また、図５（Ｂ）〜（Ｄ）は、パターン投射方式による距離画像の計測原理を説明するための図である。
【００３４】
距離画像取得部４０８が処理を開始すると、ステップＳ５０１では、図５（Ｂ）に示すように赤外線パターン投射部３６１を用いて赤外線による３次元形状測定パターン５２２を対象物５２１に投射する。ステップＳ５０２では、距離画像取得部４０８が、ＲＧＢカメラ３６３を用いて対象物５２１を撮影したＲＧＢカメラ画像５２３を取得する。また、、距離画像取得部４０８が、赤外線カメラ３６２を用いてステップＳ５０１で投射した３次元形状測定パターン５２２を撮影した赤外線カメラ画像５２４を取得する。
【００３５】
なお、赤外線カメラ３６２とＲＧＢカメラ３６３とでは設置位置が異なるため、図５（Ｃ）に示すようにそれぞれで撮影されるＲＧＢカメラ画像５２３及び赤外線カメラ画像５２４の撮影領域が異なる。そこで、ステップＳ５０３では、距離画像取得部４０８が、赤外線カメラ３６２の座標系からＲＧＢカメラ３６３の座標系への座標系変換を用いて赤外線カメラ画像５２４をＲＧＢカメラ画像５２３の座標系に合わせる。なお、赤外線カメラ３６２とＲＧＢカメラ３６３の相対位置や、それぞれの内部パラメータは、事前のキャリブレーション処理により既知であるとする。
【００３６】
ステップＳ５０４では、距離画像取得部４０８が、図５（Ｄ）に示すように、３次元形状測定パターン５２２とステップＳ５０３で座標変換を行った赤外線カメラ画像５２４との間の対応点を抽出する。例えば、赤外線カメラ画像５２４上の１点を３次元形状測定パターン５２２上から探索して、同一の点が検出された場合に対応付けを行う。または、赤外線カメラ画像５２４の画素の周辺のパターンを３次元形状測定パターン５２２上から探索し、一番類似度が高い部分と対応付けてもよい。
【００３７】
ステップＳ５０５では、距離画像取得部４０８が、赤外線パターン投射部３６１と赤外線カメラ３６２とを結ぶ直線を基線５２５として三角測量の原理を用いて計算を行うことにより、赤外線カメラ３６２からの距離を算出する。ステップＳ５０４で対応付けが出来た画素については、赤外線カメラ３６２からの距離を算出して画素値として保存し、対応付けが出来なかった画素については、距離の計測が出来なかった部分として無効値を保存する。これをステップＳ５０３で座標変換を行った赤外線カメラ画像５２４の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。
【００３８】
ステップＳ５０６では、距離画像取得部４０８が、距離画像の各画素にＲＧＢカメラ画像５２３のＲＧＢ値を保存することにより、１画素につきＲ、Ｇ、Ｂ、距離の４つの値を持つ距離画像を生成する。ここで取得した距離画像は、距離画像センサ部２０８のＲＧＢカメラ３６３で定義された距離画像センサ座標系が基準となっている。そこで、ステップＳ５０７では、図２（Ｂ）を用いて上述したように、距離画像取得部４０８が、距離画像センサ座標系として得られた距離データを直交座標系における３次元点群に変換する。（以後、特に指定がなく３次元点群と表記した場合は、直交座標系における３次元点群を示すものとする。）
【００３９】
なお、本実施形態では、上述したように距離画像センサ部２０８として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサを用いることも可能である。例えば、２つのＲＧＢカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するＴＯＦ（Ｔｉｍe  ｏｆ  Ｆｌｉｇｈｔ）方式など、他の計測手段を用いても構わない。
【００４０】
＜ジェスチャー認識部の説明＞
図６及び図７は、ジェスチャー認識部４０９の処理を説明する図である。
図６において、ジェスチャー認識部４０９が処理を開始すると、ステップＳ６０１では、初期化処理を行う。初期化処理では、ジェスチャー認識部４０９は、距離画像取得部４０８から距離画像を１フレーム取得する。
【００４１】
ここで、ジェスチャー認識部の開始時は、操作平面２０４上に対象物が置かれていない状態であるため、初期状態として操作平面２０４の平面の認識を行う。つまり、ジェスチャー認識部４０９は、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル（以後、操作平面２０４の平面パラメータと呼ぶ）を算出し、ＲＡＭ３０３に保存する。
【００４２】
ステップＳ６０２では、ジェスチャー認識部４０９が、操作平面２０４上に存在する物体の３次元点群を取得する。具体的には、ステップＳ６２１〜６２２に示す処理を行う。ステップＳ６２１では、ジェスチャー認識部４０９が、距離画像取得部４０８から距離画像と３次元点群を１フレーム取得する。ステップＳ６２２では、ジェスチャー認識部４０９が、操作平面２０４の平面パラメータを用いて、取得した３次元点群から操作平面２０４を含む平面にある点群を除去する。
【００４３】
ステップＳ６０３では、ジェスチャー認識部４０９が、取得した３次元点群から操作者の手の形状及び指先を検出する処理（指先検出処理）を行う。具体的には、ステップＳ６３１〜６３４の処理を行う。ここで、指先検出処理の方法について、図７（Ａ）〜（Ｃ）を用いて説明する。
【００４４】
図７（Ａ）〜（Ｃ）は、指先検出処理を模式的に表した図である。ステップＳ６３１では、ジェスチャー認識部４０９が、ステップＳ６０２で取得した３次元点群から、操作平面２０４を含む平面から所定の高さ以上にある肌色の３次元点群を抽出することで、手の３次元点群を得る。図７（Ａ）の３次元点群６６１は、抽出した手の３次元点群を表している。なお、本実施形態では、図２に示すように操作平面２０４が机上に投射された場合について説明しているが、後述するように壁面に操作平面を投射する場合もありうる。この場合、操作平面を含む平面から所定の距離以上にある肌色の３次元点群を抽出すればよい。
【００４５】
ステップＳ６３２では、ジェスチャー認識部４０９が、抽出した手の３次元点群を、操作平面２０４の平面に投影（射影）した２次元画像を生成して、その手の外形を検出する。図７（Ａ）の３次元点群６６２は、操作平面２０４の平面に投影した３次元点群を表している。投影は、点群の各座標を、操作平面２０４の平面パラメータを用いて投影すればよい。また、図７（Ｂ）に示すように、投影した３次元点群から、ＸＹ座標の値だけを取り出せば、Ｚ軸方向から見た２次元画像６６３として扱うことができる。このとき、手の３次元点群の各点が、操作平面２０４の平面に投影した２次元画像の各座標のどの点に対応するかを記憶しておくものとする。
【００４６】
ステップＳ６３３では、ジェスチャー認識部４０９が、検出した手の外形上の各点について当該各点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する。図７（Ｃ）は、外形の曲率から指先を検出する方法を模式的に表したものである。外形の点６６４は、操作平面２０４の平面に投影された２次元画像６６３の外形を表す点の一部を表している。ここで、外形の点６６４のような外形を表す点のうち、隣り合う５個の点を含むように円を描くことを考える。円６６５、６６７が、その例である。
【００４７】
当該円を、全ての外形の点に対して順に描き、その直径（例えば、直径６６６、直径６６８）が所定の値より小さい（曲率が小さい）ことを以て指先とする。なお、本実施形態では、隣り合う５個の点を用いたが、個数はこれに限定されるものではない。また、本実施形態では、曲率を用いたが、これに限定されるものではなく、例えば、外形に対して楕円フィッティングを行うことで指先を検出してもよい。
【００４８】
ステップＳ６３４では、ジェスチャー認識部４０９が、検出した指先の個数及び各指先の座標を算出する。このとき、前述したように操作平面２０４に投影した２次元画像の各点と、手の３次元点群の各点との対応関係を記憶しているため、各指先の３次元座標を得ることができる。なお、本実施形態では、３次元点群から２次元画像に投影した画像を用いて指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。
【００４９】
例えば、距離画像の背景差分や、ＲＧＢ画像の肌色領域から手の領域を抽出し、上述したと同様の方法（外形の曲率計算等）で、手の領域のうちの指先を検出してもよい。この場合、検出した指先（指先点）の座標は、ＲＧＢ画像や距離画像といった２次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の３次元座標に変換する必要がある。このとき、指先点となる外形上の点ではなく、指先を検出するときに用いた曲率円の中心を指先点としてもよい。
【００５０】
ステップＳ６０４では、ジェスチャー認識部４０９が、検出した手の形状及び指先からジェスチャーの判定処理を行う。具体的には、ステップＳ６４１〜Ｓ６４６に示す処理を行う。ステップＳ６４１では、ジェスチャー認識部４０９が、ステップＳ６０３で検出した指先が１つか否かを判定する。指先が１つでなければステップＳ６４６へ進み、ジェスチャーなしと判定する。ステップＳ６４１において検出した指先が１つであればステップＳ６４２へ進み、ジェスチャー認識部４０９が、検出した指先と操作平面２０４を含む平面との距離を算出する。
【００５１】
ステップＳ６４３では、ジェスチャー認識部４０９が、ステップＳ６４２で算出した距離が所定値以下であるか否かを判定する。ステップＳ６４２で算出した距離が微小な所定値以下であればステップＳ６４４へ進み、ジェスチャー認識部４０９が、指先が操作平面２０４へタッチした、すなわちタッチジェスチャーがあったと判定する。ステップＳ６４３において、ステップＳ６４２で算出した距離が所定値以下でなければ処理はステップＳ６４５へ進む。そして、ジェスチャー認識部４０９が、指先が移動したジェスチャー（タッチはしていないが指先が操作平面２０４上に存在するジェスチャー）があったと判定する。
【００５２】
ステップＳ６０５では、判定したジェスチャー（ジェスチャーイベント）をメイン制御部４０２へ通知し、ステップＳ６０２へ戻ってジェスチャー認識処理を繰り返す。なお、本実施形態では、一本の指でのジェスチャー認識について説明を行ったが、複数の指、または複数の手、または腕や体全体でのジェスチャー認識に応用することも可能である。
【００５３】
＜メイン制御部の説明＞
図８〜図１３は、メイン制御部４０２が実行するジェスチャーインタフェース制御処理を説明するためのフローチャートである。
メイン制御部４０２が処理を開始すると、図８のステップＳ７０１では、メイン制御部４０２が、ジェスチャー認識部４０９に対して処理開始の指示を行い、ジェスチャー認識部４０９が上述した図６の処理を実行する。
【００５４】
ステップＳ７０２では、メイン制御部４０２が、ジェスチャー認識部４０９からジェスチャーイベントを受信したか否かを判断する。図１０（Ａ）または図１２（Ａ）のようにジェスチャー認識部４０９が操作平面２０４上にユーザの手指を検出しない間は、ステップＳ７０２の処理が繰り返される。図１０（Ｂ）または図１２（Ｂ）のようにジェスチャー認識部４０９が操作平面２０４上にユーザの手指を検出し、メイン制御部がジェスチャー認識部４０９からジェスチャーイベントを受信した際には、処理はステップＳ７０３へ進む。
【００５５】
ステップＳ７０３では、メイン制御部４０２が、現在設定されている操作モードを確認する。本実施形態では、操作モードとしてタッチモード及びポインタモードを備え、それぞれのモードを切り替えて使用する場合について説明するが、その他の操作モードを設けてもよい。図１０及び図１１は、タッチモードの場合の動作を示す。タッチモードでは、プロジェクタ２０７によって操作平面２０４上に照射されたＵＩ画面への操作を行うことができる。例えば、タッチモードでは、ＵＩボタンに対する押下や、ペン入力のように線画や文字などを描画する（アノテーション機能）ことができる。
【００５６】
一方、図１２及び図１３は、ポインタモードの場合の動作を示す。ポインタモードでは、操作平面２０４上、または操作平面に載置された物体上の１点をレーザーポインタのように指し示すことができる。メイン制御部４０２は、操作モードがタッチモードであると判断した場合はステップＳ７０４へ進み、ポインタモードであると判断した場合はステップＳ７０５へ進む。ステップＳ７０４及びＳ７０５の処理の詳細は、図９（Ａ）及び図９（Ｂ）を用いて後述する。
【００５７】
なお、操作モードは、操作平面２０４上に表示されたＵＩボタンに対する操作、またはカメラスキャナ１０１の本体上のボタンによる操作により切り替えることができる。また、ネットワークＩ／Ｆ３０６を介してホストコンピュータ１０２から切り替え命令を送信する、または、ＬＣＤタッチパネル３３０から切り替え命令を送信することにより切り替えることも可能である。
【００５８】
また、特定のジェスチャー操作により操作モードを自動で切り替えられるようにしても構わない。例えば、手の高さ（操作平面２０４から手までの距離）が所定の値以下の場合にはタッチモードとして動作し、所定の値以上であればポインタモードとして動作するように切り替えを行ってもよい。また、例えば、手の高さが所定の値以上の場合には、手が所定の時間静止していることを検出した場合にのみポインタモードとして動作するようにしてもよい。
【００５９】
また、手の姿勢を判定し、指の腹側が操作平面２０４上に向いている場合にはタッチモードとして動作し、それ以外の場合にはポインタモードとして動作するように切り替えを行ってもよい。さらに、ポインタモードに切り替えて使用した後に、所定時間が経過すると、次のジェスチャーを検出した際にはタッチモードとして動作するように制御してもよい。
【００６０】
ステップＳ７０６では、メイン制御部４０２が、処理終了イベントを受信したか否かを判断し、処理終了イベントを受信するまでステップＳ７０２〜ステップＳ７０６の処理を繰り返す。処理終了イベントは、カメラスキャナの本体上のボタンによる操作や、ネットワークＩ／Ｆ３０６を介してホストコンピュータ１０２から送信される終了命令、ＬＣＤタッチパネル３３０から入力される終了命令、タイマー設定などにより行われるものとする。
【００６１】
図９（Ａ）及び図９（Ｂ）は、上述したジェスチャーインタフェース制御処理（図８）のステップＳ７０４及びステップＳ７０５において、メイン制御部４０２が実行する処理を説明するフローチャートである。
図９（Ａ）は、図８のステップＳ７０３において、操作モードがタッチモードであると判断された場合に、メイン制御部４０２が実行するタッチモード処理の詳細を説明するフローチャートである。
【００６２】
ステップＳ７１１では、メイン制御部４０２が、ステップＳ７０２で受信したジェスチャーイベントより指先の３次元位置姿勢情報［Ｘｆ，Ｙｆ，Ｚｆ］を取得する。ステップＳ７１２では、メイン制御部４０２が、ステップＳ７１１で取得した指先の３次元位置姿勢情報のＸＹ座標値を基に、指先が操作可能なＵＩ上にあるか否かを判断する。図１０（Ｂ）、図１０（Ｅ）、及び図１０（Ｆ）に示すように、指先が操作可能なＵＩ上にない場合にはステップＳ７１３へ進む。一方、図１０（Ｃ）及び図１０（Ｄ）に示すように、指先が操作可能なＵＩであるボタン８０１上にある場合にはステップＳ７１５へ進む。
【００６３】
ステップＳ７１３では、メイン制御部４０２が、指先の鉛直方向下の３次元位置を算出する。すなわち、図１１（Ｇ）に示すように、指先から操作平面２０４に鉛直方向におろした垂線と操作平面２０４との交点８０８の３次元座標を算出する。交点８０８は、指先の３次元位置のＸＹ座標値と一致し、Ｚ＝０の平面上であることから、［Ｘｆ，Ｙｆ，０］であると求められる。
【００６４】
操作平面２０４上に物体８０２が載置されていた場合には、図１１（Ｈ）に示すように、指先から操作平面２０４に鉛直方向におろした垂線と物体８０２の表面との交点８０９の３次元座標を算出する。操作平面２０４上に物体が載置されているか否かの判断、及び物体の位置情報は、物体検知部４１０により取得することができる。指先位置［Ｘｆ，Ｙｆ］での物体の高さが、Ｚ＝Ｚｏであるとわかるため、交点８０９の座標は、［Ｘｆ，Ｙｆ，Ｚｏ］であると求められる。
【００６５】
ステップＳ７１４では、メイン制御部４０２が、操作平面２０４上または操作平面２０４上に載置された物体８０２上にポインタを表示する。詳細には、ステップＳ７１３で算出した交点８０８または８０９の３次元座標に対して、プロジェクタのキャリブレーションパラメータを用いて、（１）式及び（３）式に示した変換処理を行う。これにより、交点８０８及び８０９の３次元座標が、プロジェクタによる投影画像上での位置［ｘｐ，ｙｐ］に変換される。プロジェクタは、変換された座標位置にポインタを描画することで、図１０（Ｂ）に示すように、操作平面２０４上へのポインタ８０４の表示や、図１０（Ｅ）及び図１０（Ｆ）に示すような物体８０２上へのポインタ８０７の表示が可能となる。
【００６６】
一方、ステップＳ７１５では、メイン制御部４０２が、ステップＳ７０２で受信したジェスチャーイベントがタッチイベントを含むか否かを判断する。ステップＳ７１５でジェスチャーイベントがタッチイベントを含まないと判断された場合、すなわち、操作可能なＵＩ上においてタッチイベントが検出されていない場合に処理はステップＳ７１６に進む。ステップＳ７１６では、メイン制御部４０２が、指先の鉛直方向下に配置された操作可能なＵＩを強調表示する。
【００６７】
例えば、図１０（Ｃ）のボタン８０５に示すように、ボタン８０５をハイライト表示させるなどの強調効果を与える。これにより、ユーザに当該操作可能なＵＩが選択可能な状態になったことを通知することができる。ステップＳ７１５でジェスチャーイベントがタッチイベントを含むと判断された場合、すなわち、操作可能なＵＩ上においてタッチイベントが検出された場合に処理はステップＳ７１７に進む。ステップＳ７１７では、メイン制御部４０２が、タッチしたと判断されたＵＩに割り当てられた機能を実行する。
【００６８】
例えば、図８（Ｄ）に示すように、ボタン８０６へのタッチを行うことにより、例えば、操作モードの切り替えや、カメラによる撮影などの操作を行うことができる。また、ボタン８０６のようにタッチが検出されたことが分かるように強調表示を行うことも可能である。タッチモード処理が終了すると、メイン制御部は、図８のステップＳ７０６へ進み、処理終了イベントを受信するまで、ステップＳ７０２〜ステップＳ７０６の処理を繰り返す。
【００６９】
図９（Ｂ）は、図８のステップＳ７０３において、操作モードがポインタモードであると判断された場合に、メイン制御部４０２が実行するポインタモード処理の詳細を説明するフローチャートである。
ステップＳ７２１では、メイン制御部４０２が、ステップＳ７０２で受信したジェスチャーイベントより指先の３次元位置姿勢情報を取得する。
【００７０】
ステップＳ７２２では、メイン制御部４０２が、ステップＳ７２１で取得した指先の位置姿勢情報を基に、指先の延長線と操作平面２０４との交点９０３の３次元座標を、図１３（Ｇ）に示すように算出する。操作平面２０４上に物体８０２が載置されていた場合には、操作平面２０４に載置された物体８０２との交点９０４の３次元座標を、図１３（Ｈ）に示すように算出する。
【００７１】
ステップＳ７２３では、メイン制御部４０２が、操作平面２０４上または操作平面２０４上に載置された物体８０２上にポインタを表示する。詳細には、タッチモードの処理のステップＳ７１４（図９（Ａ））と同様に、ステップＳ７２２で算出された交点９０３及び９０４の３次元座標をプロジェクタによる投射画像上での位置に変換し、ポインタを表示する。
【００７２】
これにより、図１２（Ｂ）〜図１２（Ｄ）に示すように、操作平面２０４上へのポインタ９０１の表示や、図１２（Ｅ）及び図１２（Ｆ）に示すように、操作平面２０４上に載置された物体８０２上へのポインタ９０２の表示が可能となる。ポインタモード処理が終了すると、メイン制御部は、図８のステップＳ７０６へ進み、処理終了イベントを受信するまで、ステップＳ７０２〜ステップＳ７０６の処理を繰り返す。
【００７３】
以上のように、本実施形態によれば、タッチモードでは、指先の鉛直方向下の操作平面２０４及び操作平面上に載置された物体８０２上へポインタを表示することができる。また、タッチモードでは、指先が操作可能なＵＩ上にある場合には、ＵＩを強調表示し、操作平面２０４へのタッチを検出した場合には当該ＵＩに割り当てられた機能を実行することができる。一方、ポインタモードでは、指先の延長線方向にある操作平面２０４上、及び操作平面上に載置された物体８０２上へ、ポインタを表示することができる。
【００７４】
また、本実施形態によれば、操作平面２０４上のＵＩに対する操作を行うタッチモードの機能と、操作平面２０４上を指し示す操作を行うポインタモードの機能を、ジェスチャーの対象となったＵＩに応じて切り替えて実行することができる。このため、用途に合った機能を適切なタイミングで使用することが可能となり、ユーザの利便性や操作性を向上させることができる。
【００７５】
なお、本実施形態では、タッチモードとポインタモードとで表示されるポインタを特に区別することなく説明したが、それぞれの操作モードに応じて表示方法や効果を変えてもよい。例えば、タッチモードの場合にはマウスカーソルのような記号をポインタとして表示し、ポインタモードの場合にはレーザーポインタで照射されるような表示にするなど、操作モードに応じてポインタの形状を変化させてもよい。
【００７６】
また、ポインタモードの場合には指し示した位置が分かりやすいように、移動軌跡を残像として一定時間表示するといった効果を付与することもできる。さらに、複数人で操作を行う場合には、ポインタで指示している位置がどの操作者のジェスチャーによるものか分かるようにするため、操作者ごとにポインタの色付けや形状などを変えて表示してもよい。
【００７７】
（第２実施形態）
第１実施形態では、操作モードの切り替え操作によりタッチモードとポインタモードを排他的に切り替えて実行することができた。本実施形態では、タッチモードとポインタモードの有効化及び無効化を行う所定の操作に応じてそれぞれ独立に切り替えながら使用する仕組みを提供する。
【００７８】
図１４は、本実施形態においてメイン制御部４０２が実行するジェスチャーインタフェース制御処理を説明するためのフローチャートである。なお、第１実施形態と同一の処理については同一の符号を付し、詳細な説明は省略する。
ステップＳ１００１では、メイン制御部４０２が、操作モードの初期設定として、タッチモード及びポインタモード各々の有効化及び無効化の設定と、カメラスキャナ１０１の実行時に各操作モードを有効化または無効化する（切り替える）ための設定を行う。
【００７９】
例えば、主としてジェスチャーを行う（操作する）手とは逆の手によるジェスチャー（操作）や、カメラスキャナ１０１上のボタン操作、付属されたキーボードやマウスによる操作などを、各操作モードを有効化または無効化する操作として割り当てる。これにより、各ジェスチャー（操作）が各操作モードにおいて有効かまたは無効かを実行時に切り替えることが可能となる。
【００８０】
以下では、一例として、カメラスキャナの通常実行時にはタッチ機能のみを有効化し、主として操作する手とは逆の手を操作平面２０４上に載置している間は、タッチモード及びポインタモードの有効化／無効化の状態を反転させる設定であるとして説明する。
ステップＳ７０１では、メイン制御部４０２が、ジェスチャー認識部４０９に対して処理開始の指示を行い、ジェスチャー認識部４０９が上述した図６の処理を実行する。
【００８１】
ステップＳ７０２では、メイン制御部４０２が、ジェスチャー認識部４０９からジェスチャーイベントを受信したか否かを判断する。ジェスチャーイベントを受信した場合は、処理はステップＳ１００２へ進む。ステップＳ１００２では、メイン制御部４０２が、タッチモードが有効であるか無効であるかを判断する。タッチモードが有効である場合は、処理はステップＳ７０４へ進み、メイン制御部４０２が、第１実施形態で説明したタッチモード処理（図９（Ａ））を実行する。タッチモードが無効である場合は、処理はステップＳ１００３へ進む。
【００８２】
この例では、初期状態でタッチモードが有効である。このため、図１５（Ａ）及び図１５（Ｃ）に示すように、ジェスチャー認識部４０９が検出した指先の鉛直方向下の操作平面２０４上、または操作平面２０４上に載置された物体８０２上へポインタ１０１１が表示される。一方、主として操作する手８０３とは逆の手１０１３が操作平面２０４上に載置された場合は、図１５（Ｂ）及び図１５（Ｄ）に示すように、タッチモードが無効化され、ポインタ１０１１（指先の鉛直方向下のポインタ）は表示されない。
【００８３】
ステップＳ１００３では、メイン制御部４０２が、ポインタモードが有効であるか無効であるかを判断する。ポインタモードが有効である場合は、処理はステップＳ７０５へ進み、メイン制御部４０２が、第１実施形態で説明したポインタモード処理（図９（Ｂ））を実行する。ポインタモードが無効である場合は、処理はステップＳ７０６へ進む。図１５（Ａ）及び図１５（Ｃ）に示すように、初期状態ではポインタモードが無効であるため、ポインタモード処理は行われず、従って指先の延長方向のポインタは表示されない。
【００８４】
一方、図１５（Ｂ）及び図１５（Ｄ）に示すように、主として操作する手８０３とは逆の手１０１３が操作平面２０４上に載置された場合は、ポインタモードが有効化される。このため、指先の延長線上の、操作平面２０４上または操作平面２０４上に載置された物体８０２上にポインタ１０１２が表示される。ステップＳ７０６では、メイン制御部４０２が、処理終了イベントを受信したか否かを判断し、処理終了イベントを受信するまでステップＳ７０２〜ステップＳ７０６の処理を繰り返す。
【００８５】
以上のように、本実施形態によれば、タッチモード及びポインタモードそれぞれの有効化及び無効化を、所定の操作によりそれぞれ独立して切り替えることができる。これにより、必要なタイミングでそれぞれの操作モードの機能を選択して使用することが可能となり、ユーザの利便性が向上する。
【００８６】
（第３実施形態）
第１実施形態及び第２実施形態では、カメラスキャナ１０１がポインタモードで動作している場合に、操作平面２０４上に表示される操作可能なＵＩ（例えば図１０に示したボタン８０１など）を指し示してもポインタが表示されるだけである。本実施形態では、ポインタモードで動作している場合に、操作可能なＵＩを指示した場合（ポインタを表示した場合）に、当該操作可能なＵＩの機能を実行することができる仕組みを提供する。
【００８７】
図１６は、本実施形態においてメイン制御部４０２が実行するポインタモード処理を説明するためのフローチャートである。なお、第１実施形態と同一の処理については同一の符号を付し、詳細な説明は省略する。
図８のステップＳ７０３において、操作モードがポインタモードであると判断された場合に、本実施形態では、図１６のポインタモード処理が実行される。
【００８８】
図１６のステップＳ７２１では、メイン制御部４０２が、図８のステップＳ７０２で受信したジェスチャーイベントより指先の３次元位置姿勢情報を取得する。ステップＳ１１０１では、メイン制御部４０２が、選択状態にある操作可能なＵＩが存在するか否かを判断する。ステップＳ１１０１で選択状態にある操作可能なＵＩがないと判断された場合には、処理はステップＳ７２２に進む。
【００８９】
ステップＳ７２２では、メイン制御部４０２が、第１実施形態の場合と同様に、指先の延長線と操作平面２０４との交点の３次元座標、または指先の延長線と操作平面２０４上の物体８０２との交点の３次元座標を算出する。ステップＳ１１０２では、メイン制御部４０２が、ステップＳ７２２で算出した３次元座標上に操作可能なＵＩが存在し、かつ指先が当該ＵＩ上で所定の時間静止したか否かを判断する。操作可能なＵＩが存在しない場合、または操作可能なＵＩが存在しても、当該ＵＩ上で指先が所定の時間静止していない場合は、処理はステップＳ７２３に進む。
【００９０】
ステップＳ７２３では、メイン制御部４０２が、第１実施形態の場合と同様に、操作平面２０４上または操作平面２０４に載置された物体８０２上にポインタを表示する。一方、操作可能なＵＩ上で所定の時間の間指先が静止していた場合は、処理はステップＳ１１０３に進む。ステップＳ１１０３では、メイン制御部４０２が、図１７（Ａ）に示すように、当該ＵＩ（図１７（Ａ）では、ＵＩ１１１１）を選択状態として強調表示させる。これにより、タッチモードにおいて、図１１（Ｃ）に示したように、ＵＩ上に指を翳している状態と同様の操作を実現する。
【００９１】
ステップＳ１１０１で選択状態にある操作可能なＵＩが存在すると判断された場合には、処理はステップＳ１１０４に進む。ステップＳ１１０４では、メイン制御部４０２が、指先による実行動作（ジェスチャー）を検出したか否かを判断する。例えば、図１７（Ｂ）に示すように、操作平面２０４をクリックするようなジェスチャーを実行動作として設定しておき、指先の鉛直方向下への所定時間内での所定値以上の上下運動１１１２を検出したか否かを判断すればよい。
【００９２】
実行動作は、これに限るものではなく、例えば、上述したクリックのジェスチャーを連続して繰り返すダブルクリックのようなジェスチャーや、さらに一定時間以上の間静止を続けるジェスチャーを実行動作として設定してもよい。ステップＳ１１０４で実行動作が検出された場合には、処理はステップＳ１１０５へ進む。ステップＳ１１０５では、メイン制御部４０２が、実行動作が行われたＵＩに割り当てられた機能を実行する。これにより、タッチモードにおいて、図１１（Ｄ）に示したように、ＵＩ上にタッチしたと同様の操作を実現する。
【００９３】
一方、ステップＳ１１０４で実行動作が検出されなかった場合には、処理はステップＳ１１０６に進む。ステップＳ１１０６では、メイン制御部４０２が、解除動作（ジェスチャー）を検出したか否かを判断する。解除動作は、例えば、図１７（Ｃ）に示すように、実行動作と逆方向へのジェスチャー１１１４を設定しておく。また、指先を左右方向に動かすジェスチャーや、指差し姿勢をやめるといったジェスチャーを解除動作として設定してもよい。このような解除動作が検出されなかった場合はそのまま処理を終了する。
【００９４】
ステップＳ１１０６で解除動作が検出された場合には、処理はステップＳ１１０７に進む。ステップＳ１１０７では、メイン制御部４０２が、選択状態にある操作可能なＵＩの選択状態（例えば、当該ＵＩの強調表示）を解除する。これにより、タッチモードにおいて、指先を選択可能なＵＩ上から外した（外に移動させた）場合と同様の効果を実現できる。
【００９５】
以上のように、本実施形態によれば、ポインタモードでカメラスキャナ１０１を実行している場合においても、所定のジェスチャーによりタッチモードと同様にＵＩへの操作を行うことが可能となり、操作性が向上する。
【００９６】
なお、第１実施形態〜第３実施形態では、操作平面２０４として机上にＵＩ画面を投射する場合について説明したが、これに限られるものではない。例えば、図１８に示すように、壁面にＵＩ画面を投影し、ユーザの全身（腕）によるジェスチャーによって投影された操作画面上を指し示すことや、投影されたＵＩを操作するような、同様の目的をもったシステムへ適用することも可能である。
【００９７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９８】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【符号の説明】
【００９９】
１０１    カメラスキャナ
４０１    メイン制御部
４０９    ジェスチャー認識部
【図１】
2017107453.tif 000006
【図２】
2017107453.tif 000007
【図３】
2017107453.tif 000008
【図４】
2017107453.tif 000009
【図５】
2017107453.tif 000010
【図６】
2017107453.tif 000011
【図７】
2017107453.tif 000012
【図８】
2017107453.tif 000013
【図９】
2017107453.tif 000014
【図１０】
2017107453.tif 000015
【図１１】
2017107453.tif 000016
【図１２】
2017107453.tif 000017
【図１３】
2017107453.tif 000018
【図１４】
2017107453.tif 000019
【図１５】
2017107453.tif 000020
【図１６】
2017107453.tif 000021
【図１７】
2017107453.tif 000022
【図１８】
2017107453.tif 000023