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