(57)【要約】      （修正有）【課題】３次元位置計測を用いて検出した指先座標を用いて、平面へのタッチ検出を行う場合のタッチ操作を高精度に検出する技術を提供する。【解決手段】操作面上を撮影して第１の画像データを取得し、その取得した第１の画像データに基づいて操作面上のユーザによるジェスチャーを認識する。また操作面上でのユーザの操作によりタッチされた操作面の位置の座標を取得し、認識したユーザのジェスチャーと、ユーザの操作によりタッチされた位置の座標とに基づいて、そのユーザの操作によりタッチされた操作面上の位置の座標を特定する。【選択図】図１０
2017117372.tif 000002
【特許請求の範囲】
【請求項１】
操作面上を撮影して第１の画像データを取得する画像取得手段と、
前記第１の画像データに基づいて前記操作面上のユーザによるジェスチャーを認識する認識手段と、
前記操作面上でのユーザの操作によりタッチされた前記操作面の位置の座標を取得する取得手段と、
前記認識手段が認識したユーザのジェスチャーと、前記取得手段により取得された前記ユーザの操作によりタッチされた位置の座標とに基づいて、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定する制御手段と、
を有することを特徴とする操作装置。
【請求項２】
前記画像取得手段は、可視光カメラ、赤外線カメラ、及び３次元距離センサを含むことを特徴とする請求項１に記載の操作装置。
【請求項３】
前記第１の画像データは、各画素のＲ、Ｇ、Ｂの値と、各画素の前記赤外線カメラからの距離とを含むことを特徴とする請求項２に記載の操作装置。
【請求項４】
前記認識手段は、前記第１の画像データから前記ユーザの手の形状を検出し、当該手の形状から当該ユーザの指の個数と当該指が指示する座標、及び当該指によるジェスチャーを認識することを特徴とする請求項１乃至３のいずれか１項に記載の操作装置。
【請求項５】
前記認識手段は、前記指と前記操作面との距離が所定値以下の場合に、前記ユーザの指によるジェスチャーは、当該指によるタッチ操作であると認識することを特徴とする請求項４に記載の操作装置。
【請求項６】
前記制御手段は、前記認識手段が認識した前記タッチ操作から所定時間内に、前記取得手段が前記ユーザによりタッチされた位置の座標を取得することにより、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定することを特徴とする請求項５に記載の操作装置。
【請求項７】
前記制御手段は、前記認識手段が認識した前記タッチ操作から所定時間内に、前記取得手段が前記ユーザによりタッチされた位置の座標を取得しない場合は、前記認識手段が認識した前記タッチ操作に基づいて前記操作面上の位置の座標を特定することを特徴とする請求項５に記載の操作装置。
【請求項８】
前記制御手段は、前記取得手段が前記ユーザによりタッチされた位置の座標を取得してから所定時間内に前記認識手段が認識した前記タッチ操作により、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定することを特徴とする請求項５に記載の操作装置。
【請求項９】
前記取得手段は、前記操作面上に設けられたタッチパネルセンサを含むことを特徴とする請求項１乃至８のいずれか１項に記載の操作装置。
【請求項１０】
前記画像取得手段により取得した前記第１の画像データを、前記操作面に対応する２次元画像に変換した第２の画像データに基づいて前記操作面に画像を投影する投影手段を有することを特徴とする請求項１乃至９のいずれか１項に記載の操作装置。
【請求項１１】
操作装置を制御する制御方法であって、
操作面上を撮影して第１の画像データを取得する画像取得工程と、
前記第１の画像データに基づいて前記操作面上のユーザによるジェスチャーを認識する認識工程と、
前記操作面上でのユーザの操作によりタッチされた前記操作面の位置の座標を取得する取得工程と、
前記認識工程で認識したユーザのジェスチャーと、前記取得工程で取得された前記ユーザの操作によりタッチされた位置の座標とに基づいて、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定する制御工程と、
を有することを特徴とする操作装置の制御方法。
【請求項１２】
操作面に対してユーザによる操作が行われたこと、及び操作された位置を検出可能な第１の検出手段と、
前記第１の検出手段とは異なる方式により、前記操作面に対してユーザによる操作が行われたこと、及び操作された位置を検出可能な第２の検出手段と、
前記第１の検出手段による検出結果を用いて前記操作面に対してユーザによる操作が行われたことを特定し、前記第２の検出手段による検出結果を用いて操作された位置を特定し、特定された情報に基づく処理を実行するよう制御する制御手段と、
を有することを特徴とする操作装置。
【請求項１３】
コンピュータを、請求項１乃至１０及び１２のいずれか１項に記載の操作装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作装置とその制御方法、及びプログラムに関する。
【背景技術】
【０００２】
可視光カメラや赤外線カメラ、３次元距離センサなどを用いてユーザの手指を検出し、その動きや位置に応じて機器を制御するジェスチャー操作技術を搭載したシステムが提案されている。例えば、特許文献１に記載のシステムは、ステレオカメラを用いて計測したユーザの手指の３次元座標に応じて、その手指により選択操作が行われている箇所を示す画像を被操作対象物にプロジェクタで表示する。これにより、ユーザは、プロジェクタで表示されたＵＩ画像を操作することが可能になる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２０３１７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、可視光カメラや赤外線カメラ、３次元距離センサなどを用いてユーザの手指の３次元座標を検出する場合、その３次元位置の精度には限界がある。そのため、ＵＩ画面に対してより細かいタッチ操作を行いたい場合、ユーザがタッチしたつもりではなくてもタッチされたと判断され、ユーザが意図しない動作が行われる場合もあるという課題があった。
【０００５】
本発明の目的は、上記従来技術の課題を解決することにある。
【０００６】
本発明の特徴は、ユーザによるタッチ操作を、より高精度に検出する技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明の一態様に係る操作装置は以下のような構成を備える。即ち、
操作面上を撮影して第１の画像データを取得する画像取得手段と、
前記第１の画像データに基づいて前記操作面上のユーザによるジェスチャーを認識する認識手段と、
前記操作面上でのユーザの操作によりタッチされた前記操作面の位置の座標を取得する取得手段と、
前記認識手段が認識したユーザのジェスチャーと、前記取得手段により取得された前記ユーザの操作によりタッチされた位置の座標とに基づいて、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定する制御手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ユーザによるタッチ操作を、より高精度に検出できるという効果がある。
【０００９】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。尚、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１０】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態に係るカメラスキャナが含まれるネットワーク構成を示す図。
【図２】実施形態に係るカメラスキャナの構成を説明する図。
【図３】実施形態に係るカメラスキャナのコントローラ部のハードウェア構成例を説明する図。
【図４】実施形態に係るカメラスキャナのコントローラ部が有する機能を説明する機能ブロック図。
【図５】実施形態に係る距離画像取得部の処理を説明するフローチャート。
【図６】パターン投射方式による距離画像の計測原理を説明するための図。
【図７】実施形態に係るジェスチャー認識部の処理を説明するフローチャート。
【図８】実施形態における指先検出処理の方法を模式的に表した図。
【図９】実施形態に係るタッチパネルイベント検知部の処理を説明するフローチャート。
【図１０】実施形態に係るメイン制御部の処理を説明するフローチャート。
【図１１】実施形態に係るジェスチャー認識部とタッチパネルイベント検知部のそれぞれでタッチイベントが発生するタイミングを説明する図。
【図１２】他の実施形態に係るメイン制御部の処理を説明するフローチャート。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。本実施形態では、本発明に係る操作装置の一例として、静電容量式タッチパネルセンサと、従来の３次元距離センサとを用いて、操作面上に投影されたオブジェクトに対するユーザのタッチ操作を検出するカメラスキャナを例に説明する。
【００１２】
図１は、本発明の実施形態に係るカメラスキャナ１０１が含まれるネットワーク構成を示す図である。
【００１３】
図１に示すように、カメラスキャナ１０１は、イーサネット（登録商標）等のネットワーク１０４を介してホストコンピュータ１０２及びプリンタ１０３に接続されている。この構成において、ホストコンピュータ１０２からの指示により、カメラスキャナ１０１が原稿の画像を読み取るスキャン機能や、その読み取って得られた画像データをプリンタ１０３に送信して印刷させるプリント機能を実行できる。またホストコンピュータ１０２を介さずに、直接、ユーザがカメラスキャナ１０１へ指示することにより、カメラスキャナ１０１による原稿の読み取りと、その読み取って得られた画像データをプリンタ１０３に送信して印刷させることも可能である。
【００１４】
図２は、実施形態に係るカメラスキャナ１０１の構成を説明する図である。
【００１５】
図２（Ａ）に示すように、カメラスキャナ１０１は、コントローラ部２０１、カメラ部２０２、腕部２０３、プロジェクタ２０７、センサ部２０８を含む。カメラスキャナの本体であるコントローラ部２０１と、撮像を行うためのカメラ部２０２、プロジェクタ２０７及びセンサ部２０８は、腕部２０３により連結されている。腕部２０３は関節を用いて曲げ伸ばしが可能である。
【００１６】
また図２（Ａ）において、カメラスキャナ１０１が設置されている操作面２０４も示している。カメラ部２０２及びセンサ部２０８のレンズは、この操作面２０４方向に向けられており、カメラ部２０２は、破線で囲まれた読み取り領域２０５内の画像を読み取ることができる。図２（Ａ）の例では、原稿２０６は読み取り領域２０５内に置かれているため、このカメラスキャナ１０１により読み取ることができる。
【００１７】
ここでカメラ部２０２は、単一の解像度で画像を撮像するものとしてもよいが、高解像度での撮像と低解像度での撮像が可能なものとすることが好ましい。また操作面２０４内にはターンテーブル２０９を設けてもよい。このターンテーブル２０９は、コントローラ部２０１からの指示によって回転することが可能であり、ターンテーブル２０９上に置かれた物体とカメラ部２０２との角度を変えることができる。また操作面２０４内にタッチパネルセンサ３３０が設けられているものとする。このタッチパネルセンサ３３０は、ユーザが手で触れたり、ペンで圧力を加える等により、触れられた位置の情報を感知して座標情報としてコントローラ部２０１に出力することができる。タッチパネルセンサ３３０は、ユーザによりタッチされたこと、及びそのタッチ位置を検出可能なデバイスであり、表示機能を有していない。尚、図２に示されていないが、カメラスキャナ１０１は、スピーカ３４０（図３）を更に含むこともできる。更に、周囲の環境情報を収集するための人感センサ、照度センサ、加速度センサなどの各種センサデバイスを含むこともできる。
【００１８】
図２（Ｂ）は、カメラスキャナ１０１における座標系を説明する図である。カメラスキャナ１０１では、各ハードウェアデバイスに対して、カメラの座標系、センサの座標系、プロジェクタの座標系という座標系が定義される。これらはカメラ部２０２及びセンサ部２０８が撮像する画像平面、或いはプロジェクタ２０７が投影する画像平面をそれぞれＸＹ平面とし、各画像平面に直交した方向をＺ方向として定義したものである。更に、これらの独立した座標系の３次元データを統一的に扱えるようにするために、操作面２０４を含む平面をＸＹ平面とし、このＸＹ平面から上方に垂直な向きをＺ軸とする直交座標系を定義する。
【００１９】
座標系を変換する場合の例として、図２（Ｃ）に直交座標系と、カメラ部２０２を中心としたカメラ座標系を用いて表現された空間と、カメラ部２０２が撮像する画像平面との関係を示す。直交座標系における３次元点Ｐ［Ｘ，Ｙ，Ｚ］は、（１）式によって、カメラの座標系における３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］へ変換できる。
【００２０】
［Ｘｃ，Ｙｃ，Ｚｃ］Ｔ＝［Ｒｃ｜ｔｃ］［Ｘ，Ｙ，Ｚ，１］Ｔ  …（１）
ここで、Ｒｃ及びｔｃは、直交座標系に対するカメラ部２０２の姿勢（回転）と位置（並進）によって求まる外部パラメータによって構成され、Ｒｃを３×３の回転行列、ｔｃを並進ベクトルと呼ぶ。逆に、カメラの座標系で定義された３次元点は（２）式によって、直交座標系への変換することができる。
【００２１】
［Ｘ，Ｙ，Ｚ］Ｔ＝［Ｒｃ−１｜−Ｒｃ−１ｔｃ］［Ｘｃ，Ｙｃ，Ｚｃ，１］Ｔ  …（２）
更に、カメラ部２０２で撮影される２次元のカメラ画像平面は、カメラ部２０２によって３次元空間中の３次元情報が２次元情報に変換されたものである。即ち、カメラ座標系上での３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］を、（３）式によってカメラ画像平面での２次元座標ｐｃ［ｘｐ，ｙｐ］に透視投影変換することができる。
【００２２】
λ［ｘｐ、ｙｐ、１］Ｔ＝Ａ［Ｘｃ，Ｙｃ，Ｚｃ］Ｔ  …（３）
ここで、Ａは、カメラ部２０２の内部パラメータと呼ばれ、焦点距離と画像中心などで表現される３×３の行列である。
【００２３】
以上のように、（１）式と（３）式を用いることで、直交座標系で表された３次元点群を、カメラ座標系での３次元点群座標やカメラ画像平面に変換することができる。尚、各ハードウェアデバイスの内部パラメータ及び直交座標系に対する位置姿勢（外部パラメータ）は、公知のキャリブレーション手法により予めキャリブレーションされているものとする。以後、特に断りがなく３次元点群と表記した場合は、直交座標系における３次元データを表しているものとする。
【００２４】
図３は、実施形態に係るカメラスキャナ１０１のコントローラ部２０１のハードウェア構成例を説明する図である。
【００２５】
コントローラ部２０１は、ＣＰＵ３０２、ＲＡＭ３０３、ＲＯＭ３０４、ＨＤＤ３０５、ネットワークＩ／Ｆ３０６、画像処理プロセッサ３０７、カメラＩ／Ｆ３０８、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０を含む。更に、オーディオコントローラ３１１及びＵＳＢコントローラ３１２を含み、これらはシステムバス３０１を介して相互に接続されている。ＣＰＵ３０２は、コントローラ部２０１全体の動作を制御する中央演算装置である。ＲＡＭ３０３は揮発性メモリである。ＲＯＭ３０４は不揮発性メモリであり、ＣＰＵ３０２の起動用プログラムを格納している。ＨＤＤ３０５はＲＡＭ３０３と比較して大容量なハードディスクドライブで、ＨＤＤ３０５にはコントローラ部２０１が実行するカメラスキャナ１０１の制御用プログラムやＯＳ等が格納されている。ＣＰＵ３０２は電源オン等の起動時、ＲＯＭ３０４に格納されている起動用プログラムを実行し、ＨＤＤ３０５に格納されている制御用プログラムをＲＡＭ３０３に展開する。そしてＣＰＵ３０２は、ＲＡＭ３０３に展開した制御用プログラムを実行して、このコントローラ部２０１による制御処理を実行する。またＣＰＵ３０２は、制御用プログラムによる動作に用いるデータもＲＡＭ３０３に格納して読み書きを行う。ＨＤＤ３０５は更に、制御用プログラムによる動作に必要な各種設定や、また、カメラ部２０２から入力された画像データを格納することができ、ＣＰＵ３０２によって読み書きされる。またＣＰＵ３０２はネットワークＩ／Ｆ３０６を介してネットワーク１０４上の他の機器との通信を行う。
【００２６】
画像処理プロセッサ３０７は、ＲＡＭ３０３に格納された画像データを読み出して処理し、またＲＡＭ３０３へ書き戻す。尚、画像処理プロセッサ３０７が実行する画像処理は、回転、変倍、色変換等を含む。カメラＩ／Ｆ３０８は、カメラ部２０２及びセンサ部２０８と接続され、ＣＰＵ３０２からの指示に応じてカメラ部２０２から画像データを、センサ部２０８から距離画像データを取得してＲＡＭ３０３へ書き込む。またカメラＩ／Ｆ３０８は、ＣＰＵ３０２からの制御コマンドをカメラ部２０２及びセンサ部２０８へ送信し、カメラ部２０２及びセンサ部２０８の設定を行う。
【００２７】
また、コントローラ部２０１は、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１及びＵＳＢコントローラ３１２のうち少なくとも１つを更に含むことができる。ディスプレイコントローラ３０９は、ＣＰＵ３０２の指示に応じて表示部への画像データの表示を制御する。ここでは、ディスプレイコントローラ３０９は、短焦点プロジェクタ２０７に接続されている。
【００２８】
シリアルＩ／Ｆ３１０はシリアル信号の入出力を行う。ここでは、シリアルＩ／Ｆ３１０はターンテーブル２１０に接続され、ＣＰＵ３０２からの回転開始・終了及び回転角度の指示をターンテーブル２０９へ送信する。またシリアルＩ／Ｆ３１０は、タッチパネルセンサ３３０に接続され、ＣＰＵ３０２はタッチパネルセンサ３３０が押下されたときに、シリアルＩ／Ｆ３１０を介して、その押下された位置の座標情報を取得する。またＣＰＵ３０２はシリアルＩ／Ｆ３１０を介して、タッチパネルセンサ３３０が接続されているかどうかを判定する。オーディオコントローラ３１１はスピーカ３４０に接続され、ＣＰＵ３０２の指示に応じて音声データをアナログ音声信号に変換し、スピーカ３４０を通じて音声を出力する。ＵＳＢコントローラ３１２は、ＣＰＵ３０２の指示に応じて外付けのＵＳＢデバイスの制御を行う。ここでは、ＵＳＢコントローラ３１２はＵＳＢメモリやＳＤカードなどの外部メモリ３５０に接続され、ＣＰＵ３０２は、このＵＳＢコントローラ３１２を介して外部メモリ３５０へのデータの読み書きを行う。尚、センサ部２０８の、赤外線パターン投射部３６１、赤外線カメラ３６２、ＲＧＢカメラ（可視光カメラ）３６３に関しては、図５、図６を参照して後述する。尚、ターンテーブル２０９は、後述する距離画像データを取得する際に使用されるが、プロジェクタ２０７により操作面２０４上の画像を投影して、ユーザが、その画像を指で指示する場合には、操作面２０４から取り除かれているものとする。
【００２９】
図４は、実施形態に係るカメラスキャナ１０１のコントローラ部２０１が有する機能を説明する機能ブロック図である。この機能は、ＣＰＵ３０２がＨＤＤ３０５からＲＡＭ３０３に展開したプログラムを実行することにより達成される。
【００３０】
メイン制御部４０２は、この機能を達成する各モジュールを制御する。画像取得部４１６は、画像データの入力処理を行うモジュールであり、カメラ画像取得部４０７、距離画像取得部４０８を有している。カメラ画像取得部４０７は、カメラＩ／Ｆ３０８を介してカメラ部２０２が出力する画像データを取得してＲＡＭ３０３へ格納する。距離画像取得部４０８は、カメラＩ／Ｆ３０８を介してセンサ部２０８が出力する距離画像データを取得してＲＡＭ３０３に格納する。距離画像取得部４０８の処理の詳細は図５及び図６を参照して後述する。
【００３１】
認識処理部４１７は、カメラ画像取得部４０７、距離画像取得部４０８が取得する画像データから、操作面２０４上の物体の動きを検知して認識するモジュールである。この認識処理部４１７は、ジェスチャー認識部４０９、物体検知部４１０、及びタッチパネルイベント検知部４２０を有している。ジェスチャー認識部４０９は、画像取得部４１６から出力される、操作面２０４上の画像を取得しており、ユーザの指によるタッチなどのジェスチャーを検知するとメイン制御部４０２へ通知する。ジェスチャー認識部４０９の処理の詳細は図７及び図８を参照して後述する。物体検知部４１０は、画像取得部４１６から操作面２０４を撮像した画像データを取得し、操作面２０４に物体が置かれたタイミング、物体が置かれて静止したタイミング、或いは物体が取り除かれたタイミングなどを検知する。タッチパネルイベント検知部４２０は、ユーザが指等でタッチパネルセンサ３３０に接触すると、シリアルＩ／Ｆ３１０を介して、指等が接触した位置の座標情報を受信し、その座標情報をタッチパネルイベントとしてメイン制御部４０２に通知する。
【００３２】
画像処理部４１８は、カメラ部２０２及びセンサ部２０８から取得した画像データを画像処理プロセッサ３０７で解析するために用いられ、各種画像処理モジュールを有している。前述のジェスチャー認識部４０９や物体検知部４１０は、画像処理部４１８の各種画像処理モジュールを利用して実行される。
【００３３】
ユーザインターフェイス部４０３は、メイン制御部４０２からの要求を受け、メッセージやボタン等のＧＵＩ部品を生成し、その生成したＧＵＩ部品の表示を、表示部４０６に表示するように要求する。表示部４０６はディスプレイコントローラ３０９を介して、プロジェクタ２０７により、要求されたＧＵＩ部品を表示させる。前述したようにプロジェクタ２０７は、操作面２０４に向けて設置されているため、その操作面２０４にＧＵＩ部品を投射して表示する。またユーザインターフェイス部４０３は、ジェスチャー認識部４０９が認識したタッチ等のジェスチャー操作、及びタッチパネルイベント検知部４２０が検知したタッチ操作、更に、それらタッチされた位置の座標情報をメイン制御部４０２経由で受信する。そして、ユーザインターフェイス部４０３は、描画中の操作画面の内容と、その座標情報とを対応付けて操作内容（押下されたボタン等）を判定する。そして、その操作内容をメイン制御部４０２へ通知することにより、操作者による操作を受け付ける。
【００３４】
ネットワーク通信部４０４は、ネットワークＩ／Ｆ３０６を介して、ネットワーク１０４上の他の機器とＴＣＰ／ＩＰによる通信を行う。データ管理部４０５は、制御用プログラム４０１の実行により生成した作業データなどの様々なデータをＨＤＤ３０５上の所定の領域へ保存し、管理する。
【００３５】
次に図５及び図６を参照して、センサ部２０８の距離画像取得部４０８の処理及び機能について説明する。センサ部２０８は、赤外線によるパターン投射方式の画像センサである。赤外線パターン投射部３６１は、対象物に、人の目には不可視である赤外線によって３次元測定パターンを投射する。赤外線カメラ３６２は、その対象物に投射した３次元測定パターンを読み取る。ＲＧＢカメラ３６３は、人の目に見える可視光をＲＧＢ信号で撮影する。
【００３６】
次に、距離画像取得部４０８の処理を図５のフローチャートを参照して説明する。また図６（Ａ）〜（Ｃ）は、パターン投射方式による距離画像の計測原理を説明するための図である。
【００３７】
図５は、実施形態に係る距離画像取得部４０８の処理を説明するフローチャートである。尚、この処理は、ＣＰＵ３０２が距離画像取得部４０８として機能することにより達成され、この処理を実行するプログラムはＨＤＤ３０５に格納されており、ＣＰＵ３０２がそのプログラムをＲＡＭ３０４に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はＣＰＵ３０２として説明する。
【００３８】
まずＳ５０１でＣＰＵ３０２は、図６（Ａ）に示すように、赤外線パターン投射部３６１を用いて、赤外線で３次元形状測定パターン６２２を対象物６２１に投射させる。次にＳ５０２に進みＣＰＵ３０２は、ＲＧＢカメラ３６３を用いて対象物を撮影したＲＧＢ画像データ６２３及び、赤外線カメラ３６２を用いてＳ５０１で投射した３次元測定パターン６２２を撮影した赤外線カメラ画像データ６２４（図６（Ｂ））を取得する。尚、赤外線カメラ３６２とＲＧＢカメラ３６３とは設置位置が互いに異なるため、図６（Ｂ）に示すように、それぞれで撮影される２つのＲＧＢカメラ画像データ６２３及び赤外線カメラ画像データ６２４の撮影領域が異なる。そこでＳ５０３に進みＣＰＵ３０２は、赤外線カメラ３６２の座標系からＲＧＢカメラ３６３の座標系への座標系変換を行って、赤外線カメラ画像データ６２４をＲＧＢカメラ画像データ６２３の座標系に合わせる。尚、赤外線カメラ３６２とＲＧＢカメラ３６３の相対位置や、それぞれの内部パラメータは、事前のキャリブレーション処理により既知であるとする。
【００３９】
次にＳ５０４に進みＣＰＵ３０２は、図６（Ｃ）に示すように、３次元測定パターン６２２とＳ５０３で座標変換を行った赤外線カメラ画像データ６２４との間の対応点６２６を抽出する。例えば、赤外線カメラ画像データ６２４上の１点を３次元形状測定パターン６２２上から探索して、同一の点が検出された場合に対応付けを行う。或いは、赤外線カメラ画像データ６２４の画素の周辺のパターンを３次元形状測定パターン６２２から探索し、一番類似度が高い部分と対応付けてもよい。次にＳ５０５に進みＣＰＵ３０２は、赤外線パターン投射部３６１と赤外線カメラ３６２とを結ぶ直線を基線６２５として三角測量の原理を用いて計算することにより、赤外線カメラ３６２から対応点６２６までの距離を算出する。そしてＣＰＵ３２０は、対応付けができた画素については赤外線カメラ３６２からの距離を算出して画素値として保存し、対応付けができなかった画素については、距離の計測ができなかった部分として無効値を保存する。この処理をＳ５０３で座標変換を行った赤外線カメラ画像データ６２４の全画素に対して行うことで、各画素に距離が入った距離画像データを生成する。そしてＳ５０６に進みＣＰＵ３０２は、距離画像データの各画素に、ＲＧＢカメラ画像データ６２３のＲＧＢ値を保存することにより、１画素につきＲ、Ｇ、Ｂ、及び距離の４つの値を持つ距離画像データを生成する。ここで生成した距離画像データは、センサ部２０８のＲＧＢカメラ３６３で定義されたセンサ座標系が基準となっている。そこでＳ５０７に進みＣＰＵ３０２は、図２（Ｂ）を参照して上述したように、センサ座標系として得られた距離画像データを、操作面２０４の直交座標系における３次元点群に変換して、この処理を終了する。尚、これ以後、特に指定がなく３次元点群と表記した場合は、直交座標系における３次元点群を示すものとする。
【００４０】
尚、実施形態では、上述したように、センサ部２０８として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサを用いることも可能である。例えば、２つのＲＧＢカメラでステレオ立体視を行うステレオ方式や、レーザ光の飛行時間を検出することで距離を測定するＴＯＦ（Ｔｉｍｅ  ｏｆ  Ｆｌｉｇｈｔ）方式など、他の計測手段を用いても構わない。
【００４１】
図７は、実施形態に係るジェスチャー認識部４０９の処理を説明するフローチャートである。尚、この処理は、ＣＰＵ３０２がジェスチャー認識部４０９として機能することにより達成され、この処理を実行するプログラムはＨＤＤ３０５に格納されており、ＣＰＵ３０２がそのプログラムをＲＡＭ３０４に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はＣＰＵ３０２として説明する。
【００４２】
まずＳ７０１でＣＰＵ３０２は、ジェスチャー認識処理の初期化処理を行う。この初期化処理では、ＣＰＵ３０２は、距離画像取得部４０８から、１フレームの距離画像データを取得する。ここで、この処理の開始時は、操作面２０４上に対象物が置かれていない状態であるため、初期状態として操作面２０４の平面を認識する。つまり、取得した距離画像データから最も広い平面を抽出し、その位置と法線ベクトル（以降、操作面２０４の平面パラメータと呼ぶ）を算出してＲＡＭ３０３に保存する。次にＳ７０２でＣＰＵ３０２は、Ｓ７２１〜Ｓ７２２で示す、操作面２０４上に存在する物体の３次元点群を取得する。その際、Ｓ７２１では、距離画像取得部４０８から、１フレームの距離画像データと３次元点群を取得する。次にＳ７２２でＣＰＵ３０２は、操作面２０４の平面パラメータを用いて、その取得した３次元点群から操作面２０４を含む平面にある点群を除去する。
【００４３】
次にＳ７０３でＣＰＵ３０２は、Ｓ７３１〜Ｓ７３４で示す、取得した３次元点群から操作者の手の形状及び指先を検出する処理を行う。ここで、指先検出処理の方法を模式的に表した図８（Ａ）〜（Ｃ）を参照して説明する。
【００４４】
まずＳ７３１でＣＰＵ３０２は、Ｓ７０２で取得した３次元点群から、操作面２０４を含む平面から所定の高さ以上にある、肌色の３次元点群を抽出することで、手の３次元点群を得る。図８（Ａ）の８６１は抽出した手の３次元点群を表している。次にＳ７３２に進みＣＰＵ３０２は、その抽出した手の３次元点群を、操作面２０４の平面に射影した２次元画像データを生成して、その手の外形を検出する。図８（Ａ）の８６２は、この操作面２０４に投影した３次元点群を表している。この投影は、点群の各座標を、操作面２０４の平面パラメータを用いて投影すればよい。また図８（Ｂ）に示すように、投影した３次元点群から、ｘｙ座標の値だけを取り出せば、Ｚ軸方向から見た２次元画像８６３として扱うことができる。このとき、手の３次元点群の各点が、操作面２０４に投影した２次元画像８６３の各座標のどれに対応するかを、記憶しておくものとする。次にＳ７３３に進みＣＰＵ３０２は、その検出した手の外形上の各点について、その点での外形の曲率を算出し、その算出した曲率が所定値より小さい点を指先として検出する。
【００４５】
図８（Ｃ）は、手の外形の曲率から指先を検出する方法を模式的に表した図である。８６４は、操作面２０４に投影された２次元画像８６３の外形を表す点の一部を表している。ここで、８６４で示す外形を表す点のうち、隣り合う５個の点を含むように円を描くことを考える。円８６５，８６７が、その例である。これら円を、全ての外形の点に対して順に描き、その直径（例えば８６６，８６８）が所定の値より小さい（曲率が小さい）ことを以て指先とする。この例では隣り合う５個の点としたが、その数は５個に限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。そしてＳ７３４に進みＣＰＵ３０２は、その検出した指先の個数及び各指先の座標を算出する。この時、前述したように、操作面２０４に投影した２次元画像の各点と、手の３次元点群の各点の対応関係を記憶しているため、各指先の３次元座標を得ることができる。
【００４６】
今回は、３次元点群から２次元画像に投影した画像データから指先を検出する方法を説明したが、指先検出の対象とする画像データはこれに限定されるものではない。例えば、距離画像の背景差分や、ＲＧＢ画像データの肌色領域から手の領域を抽出し、上に述べたのと同様の方法（外形の曲率計算等）で、手の領域から指先を検出してもよい。この場合、検出結果である指先の座標は、ＲＧＢ画像データや距離画像といった、２次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の３次元座標に変換する必要がある。この時、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
【００４７】
次にＳ７０４に進みＣＰＵ３０２は、Ｓ７４１〜Ｓ７４６に示す、検出した手の形状及び指先から、ジェスチャー判定処理を行う。まずＳ７４１でＣＰＵ３０２は、Ｓ７０３で検出した指先が１つかどうか判定する。ここで指先が１つでないと判定するとＳ７４６へ進んでジェスチャーなしと判定してＳ７０５に進む。またＳ７４１で、検出した指先が１つと判定するとＳ７４２へ進みＣＰＵ３０２は、検出した指先と操作面２０４を含む平面との距離を算出する。次にＳ７４３に進みＣＰＵ３０２は、Ｓ７４２で算出した距離が微小な所定値以下であるかどうかを判定し、そうであればＳ７４４へ進みＣＰＵ３０２は、指先が操作面２０４へタッチしたタッチジェスチャーありと判定してＳ７０５に進む。一方、Ｓ７４３で、Ｓ７４２で算出した距離が所定値以下で無いと判定するとＳ７４５へ進み、ＣＰＵ３０２は、指先が移動したジェスチャー（タッチはしていないが指先が操作面２０４の上方に存在するジェスチャー）と判定してＳ７０５に進む。Ｓ７０５でＣＰＵ３０２は、判定したジェスチャーをメイン制御部４０２へ通知し、再びＳ７０２へ戻ってジェスチャー認識処理を繰り返す。
【００４８】
尚、ここでは一本指でのジェスチャー認識について説明を行ったが、複数の指或いは複数の手、或いは腕や体全体でのジェスチャー認識に応用することも可能である。
【００４９】
図９は、実施形態に係るタッチパネルイベント検知部４２０の処理を説明するフローチャートである。尚、この処理は、ＣＰＵ３０２がタッチパネルイベント検知部４２０として機能することにより達成され、この処理を実行するプログラムはＨＤＤ３０５に格納されており、ＣＰＵ３０２がそのプログラムをＲＡＭ３０４に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はＣＰＵ３０２として説明する。
【００５０】
この処理は、ユーザが指等でタッチパネルセンサ３３０に接触した際、シリアルＩ／Ｆ３１０から指等が接触したタッチ座標を受信することにより開始される。まずＳ９０１でＣＰＵ３０２は、タッチ座標を受信したかどうか判定する。ここでタッチ座標を受信したと判定した場合はＳ９０２へ移行し、受信していないと判定した場合はＳ９０１へ戻ってタッチ座標を受信したかどうかを判定する。Ｓ９０２でＣＰＵ３０２は、受信した座標情報をタッチパネルイベントとしてメイン制御部４０２に通知してＳ９０１に戻る。このような処理を繰り返して、タッチパネルイベント検知部４２０は、タッチパネルイベントをメイン制御部４０２に対して通知し続ける。
【００５１】
次に図１０及び図１１を参照して、２種類の異なるタッチ検出手段を併用するために、メイン制御部４０２が実行するタッチイベントの処理を説明する。尚、実施形態では、操作面２０４を指先で触るタッチの動作を例に説明する。
【００５２】
まず図１１を参照して、ジェスチャー認識部４０９とタッチパネルイベント検知部４２０のそれぞれで、タッチイベントが発生するタイミングについて説明する。
【００５３】
図１１（Ａ）は、ジェスチャー認識部４０９がタッチイベントを検出する瞬間を真横から見た様子を模式的に表している。また図１１（Ｂ）は、タッチパネルイベント検知部４２０がタッチイベントを検出する瞬間を真横から見た様子を模式的に表している。
【００５４】
距離１１０３は、ジェスチャー認識部４０９がタッチを認識するための高さの閾値、つまり、図７のＳ７４３で用いている、指先がタッチしたかどうかを判定するための微小な距離に相当する。仮想的に引いた線１１０２より下に手１１０１の指先が下がったと判断したときに、ジェスチャー認識部４０９はタッチイベントを通知する。この距離１１０３は、センサ部２０８が取得する距離画像データの距離分解能に依存している。近年流通している安価な画像センサや、ステレオカメラの距離計測精度を想定すると、距離１１０３の値は、数ｍｍ〜数１０ｍｍ程度に設定するのが妥当である。
【００５５】
一方、図１１（Ｂ）の距離１１０５は、タッチパネルイベント検知部４２０がタッチを認識するための高さの閾値を表している。つまり、仮想的な線１１０４より下に手１１０１の指先が下がったタイミングで、タッチパネルセンサ３３０は、その指先でタッチされた座標を検出できる。一般的な静電容量式のタッチパネルセンサを想定すると、この距離１１０５は、数ｍｍ以内に設定するのが妥当である。また、抵抗膜式タッチパネルセンサを用いた場合は、距離１１０５は０ｍｍとなり、完全に接触しなければタッチ位置を検出することはできない。
【００５６】
このように、２種類の異なるタッチ検出手段によるタッチ検出を考えた時、一回のタッチ動作でも、ジェスチャー認識部４０９とタッチパネルイベント検知部４２０で、タッチイベントが出力されるタイミングが異なる。更に、ジェスチャー認識部４０９のイベント発生のタイミングは、センサ部２０８が取得する距離画像データのフレームレートに依存している。
【００５７】
メイン制御部４０２は、一回のタッチ動作に対する同じ意味のイベントを、上記のように非同期で２回受信する。この２回受信するイベントの内、ジェスチャー認識部４０９から受信するイベントは、タッチパネルセンサ３３０からイベントが出力されない場合でも、必ず受信する。例えば、タッチパネルセンサ３３０に厚手の紙等が置かれている場合、紙の上をユーザがタッチしても、タッチパネルセンサ３３０はイベントを発行できないことが考えられる。一方、タッチ位置の精度は、タッチの高さ閾値が、より操作面２０４に近い位置に設定できるタッチパネルセンサ３３０の方が高い。そこで実施形態では、タッチパネルイベント検知部４０９からタッチイベントが出力される場合は、タッチパネルイベント検知部４２０から受信したタッチイベントの座標をタッチイベントの座標として用いる。また、タッチイベント発生のトリガーに、ジェスチャー認識部４０９から受信したタッチイベントを用いるようにしている。
【００５８】
この方法を実現するための処理の手順を、図１０のフローチャートを参照して説明する。
【００５９】
図１０は、実施形態に係るメイン制御部４０２の処理を説明するフローチャートである。尚、この処理は、ＣＰＵ３０２がメイン制御部４０２として機能することにより達成され、この処理を実行するプログラムはＨＤＤ３０５に格納されており、ＣＰＵ３０２がそのプログラムをＲＡＭ３０４に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はＣＰＵ３０２として説明する。
【００６０】
まずＳ１００１でＣＰＵ３０２は、ジェスチャー認識部４０９に対して処理開始指示を行う。この指示を受け、ジェスチャー認識部４０９は、上述した図７のフローチャートで示す処理を実行する。次にＳ１００２に進みＣＰＵ３０２は、タッチパネルイベント検知部４２０に対して処理開始指示を行う。この指示を受けるとタッチパネルイベント検知部４２０は、上述した図９のフローチャートで示す処理を実行する。
【００６１】
次にＳ１００３に進みＣＰＵ３０２は、ジェスチャー認識部４０９より、タッチイベントの通知があったか否かを判定する。ここで通知があったと判定するとＳ１００４へ移行し、そうでないときはＳ１００６へ移行する。Ｓ１００４でＣＰＵ３０２は、タッチイベントが発生したかどうかを記録しておくためのＲＡＭ３０３のフラグ（タッチイベントフラグ）をオンに設定する。この設定に基づいて後の処理でタッチイベント処理を行うかどうかの決定をするため、ジェスチャー認識部４０９から受信したタッチイベントを、タッチイベント処理のトリガーとすることができる。次にＳ１００５に進みＣＰＵ３０２は、現在の時刻、即ち、ジェスチャー認識部４０９よりタッチイベントが通知された時刻をＲＡＭ３０３に記憶する。次にＳ１００６に進みＣＰＵ３０２は、タッチパネルイベント検知部４２０からタッチイベントの通知があったか否かを判定する。ここで通知があったと判定するとＳ１００７へ移行し、そうでないときはＳ１００８へ移行する。Ｓ１００７でＣＰＵ３０２は、後のタッチイベント処理で使うために、タッチパネルイベント検知部４２０から受信したタッチイベントの座標情報（タッチ座標）をＲＡＭ３０３に記録してＳ１００８に進む。Ｓ１００８でＣＰＵ３０２は、タッチイベントフラグがオンかどうかを判定する。ここでオンであると判定するとＳ１００９に移行し、そうでないときはＳ１００３に戻って、前述の処理を繰り返す。
【００６２】
これによりユーザの指が、操作面２０４上に降りてくる時、まず最初に、ジェスチャー認識部４０９が図１１（Ａ）の状態を検知してタッチイベントを発行する。そして、更にユーザの指が操作面２０４上に降下して図１１（Ｂ）の状態になると、タッチパネルイベント検知部４２０からタッチイベントが発行され、その時のタッチ座標が、タッチされたタッチ位置を示す座標情報として保存される。
【００６３】
Ｓ１００９でＣＰＵ３０２は、ＲＡＭ３０３に、タッチパネルイベント検知部４２０から受信したタッチイベントのタッチ座標が保持されているかどうか判定する。ここで保持されていると判定した場合はＳ１０１１へ移行し、そうでないときはＳ１０１０へ移行する。Ｓ１０１１でＣＰＵ３０２は、ＲＡＭ３０３に保持している、タッチパネルイベント検知部４２０から受信したタッチイベントのタッチ座標を用いて、タッチイベントの処理を行ってＳ１０１３に進む。このタッチイベントの処理は、ユーザのタッチ操作に基づいて表示画像を変化させる等、アプリケーションに依存する部分なので、詳しい説明は割愛する。
【００６４】
一方、Ｓ１０１０でＣＰＵ３０２は、タッチイベントフラグがオンになってから所定時間以上経過したかどうかを確認する。この時間の確認は、Ｓ１００５で記録した時刻と、現在の時刻を比較することで可能である。ここで所定時間が経過していると判定した場合は、タッチパネルイベント検知部４２０からは同一タッチ動作に対するタッチイベントが通知されなかったものと判定してＳ１０１２へ移行してタッチイベント処理を行う。一方、所定時間が経過していない場合は、まだタッチパネルイベント検知部４２０から同一のタッチ動作に対するタッチイベントが通知される可能性が残っているため、タッチパネルイベント検知部４２０からのタッチイベントを待つべくＳ１００３へ戻る。ここで所定時間とは、長くとも、センサ部２０８のフレームレートで数フレーム分（３０ｆｐｓとすると、時間にして数十ｍｓｅｃ〜百数十ｍｓｅｃ程度）が適当である。Ｓ１０１２でＣＰＵ３０２は、ジェスチャー認識部４０９から受信したタッチイベントのタッチ座標を用いてタッチイベントの処理を行ってＳ１０１３に進む。
【００６５】
この処理では、所定時間内に、図１１（Ａ）の状態から図１１（Ｂ）の状態に移行しないときは、タッチパネルセンサ３３０がタッチされていないので、ジェスチャー認識部４０９が認識したタッチ座標を使用する。
【００６６】
Ｓ１０１３でＣＰＵ３０２は、Ｓ１００４でオンにしたタッチイベントフラグをオフにする。次にＳ１０１４に進みＣＰＵ３０２は、Ｓ１００５で記憶した時刻をリセットする。次にＳ１０１５に進みＣＰＵ３０２は、Ｓ１００７でＲＡＭ３０３に保存した、タッチパネルイベント検知部４２０から取得したタッチ座標を破棄する。そしてＳ１０１６に進みＣＰＵ３０２は、処理終了イベントを受信したか否かを判定し、処理終了イベントを受信するまでＳ１００３からＳ１０１５の処理を繰り返す。尚、この処理終了イベントは、カメラスキャナ１０１のボタン操作や、ネットワークＩ／Ｆ３０６を介してホストコンピュータ１０２から送信される終了命令、ジェスチャー操作から入力される終了命令、或いはタイマ設定などにより発行されるものとする。
【００６７】
上記処理を繰り返すことで、ユーザによるタッチのトリガーをセンサ部２０８から取得する。その後、所定時間内にタッチパネルセンサ３３０からイベントが受信できる場合は、タッチパネルセンサ３３０により検出したタッチ座標を、指示された座標として特定する。これにより、より正確なタッチ座標を取得することが可能になる。
【００６８】
実施形態では、タッチの動作を例に説明したが、操作面２０４を指先で素早く触って放すタップ操作や、操作面２０４から指先を放すリリース操作、操作面２０４を所定時間触り続けるホールド操作など、その他のタッチジェスチャーにおいても同様である。
【００６９】
また上記説明では、タッチ座標を取得するトリガーを、センサ部２０８が検知したジェスチャーに基づいて取得する場合で説明したが、その逆にしても良い。逆にする場合は、図１２に示すフローチャートで実現できる。
【００７０】
図１２は、他の実施形態に係るメイン制御部４０２の処理を説明するフローチャートである。尚、この処理は、ＣＰＵ３０２がメイン制御部４０２として機能することにより達成され、この処理を実行するプログラムはＨＤＤ３０５に格納されており、ＣＰＵ３０２がそのプログラムをＲＡＭ３０４に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はＣＰＵ３０２として説明する。
【００７１】
図１２では、図１０のジェスチャー認識部４０９の処理と、タッチパネルイベント検知部４２０の処理を入れ替えたフローになっている。従って、図１０と共通する処理には同じ符号を付して、それらの説明を省略する。
【００７２】
Ｓ１２０１でＣＰＵ３０２は、タッチパネルイベント検知部４２０より、タッチイベントの通知があったか否かを判定する。ここで通知があったと判定するとＳ１００４へ移行し、そうでないときはＳ１２０２へ移行する。Ｓ１００４でＣＰＵ３０２は、タッチイベントが発生したかどうかを記録しておくためのＲＡＭ３０３のフラグ（タッチイベントフラグ）をオンに設定する。この設定に基づいて後の処理でタッチイベント処理を行うかどうかの決定をするため、タッチパネルイベント検知部４２０から受信したタッチイベントを、タッチイベント処理のトリガーとすることができる。そしてＳ１００５に進みＣＰＵ３０２は、現在の時刻、即ち、タッチパネルイベント検知部４２０よりタッチイベントが通知された時刻をＲＡＭ３０３に記憶する。
【００７３】
次にＳ１２０２でＣＰＵ３０２は、ジェスチャー認識部４０９からタッチイベントの通知があったか否かを判定する。ここで通知があったと判定するとＳ１２０３へ移行し、そうでないときはＳ１００８へ移行する。Ｓ１２０３でＣＰＵ３０２は、後のタッチイベント処理で使うために、ジェスチャー認識部４０９から受信したタッチイベントの座標情報（タッチ座標）をＲＡＭ３０３に記録してＳ１００８に進む。Ｓ１００８でＣＰＵ３０２は、タッチイベントフラグがオンかどうかを判定する。ここでオンであると判定するとＳ１２０４に移行し、そうでないときはＳ１２０１に戻って、前述の処理を繰り返す。
【００７４】
Ｓ１２０４でＣＰＵ３０２は、ＲＡＭ３０３に、ジェスチャー認識部４０９から受信したタッチイベントのタッチ座標が保持されているかどうか判定する。ここで保持されていると判定した場合はＳ１２０５へ移行し、そうでないときはＳ１０１０へ移行する。Ｓ１２０５でＣＰＵ３０２は、ＲＡＭ３０３に保持している、ジェスチャー認識部４０９から受信したタッチイベントのタッチ座標を用いて、タッチイベントの処理を行ってＳ１０１３に進む。またＳ１０１０でＣＰＵ３０２は、タッチイベントフラグがオンになってから所定時間以上経過していると判定した場合は、ジェスチャー認識部４０９からは同一タッチ動作に対するタッチイベントが通知されなかったものと判定してＳ１２０６へ進む。Ｓ１２０６でＣＰＵ３０２は、タッチパネルイベント検知部４２０から受信したタッチイベントのタッチ座標を用いてタッチイベントの処理を行ってＳ１０１３に進む。そしてＳ１２０７でＣＰＵ３０２は、Ｓ１２０３でＲＡＭ３０３に保存した、ジェスチャー認識部４０９から取得したタッチ座標を破棄する。
【００７５】
この処理によれば、ユーザによるタッチのトリガーをタッチパネルセンサ３３０から取得し、センサ部２０８からイベントが受信できる場合は、センサ部２０８からのタッチ座標を取得する。またセンサ部２０８からイベントを受信しないときは、タッチパネルセンサ３３０でのタッチ座標を取得することが可能になる。
【００７６】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７７】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００７８】
１０１…カメラスキャナ、２０１…コントローラ部、２０２…カメラ部、２０４…操作面、２０７…プロジェクタ、２０８…センサ部、３３０…タッチパネルセンサ、４０２…メイン制御部、４０９…ジェスチャー認識部、４２０…タッチパネルイベント検知部
【図１】
2017117372.tif 000003
【図２】
2017117372.tif 000004
【図３】
2017117372.tif 000005
【図４】
2017117372.tif 000006
【図５】
2017117372.tif 000007
【図６】
2017117372.tif 000008
【図７】
2017117372.tif 000009
【図８】
2017117372.tif 000010
【図９】
2017117372.tif 000011
【図１０】
2017117372.tif 000012
【図１１】
2017117372.tif 000013
【図１２】
2017117372.tif 000014