JP2017162126A - 入力システム、入力方法、制御用プログラム、及び記憶媒体 - Google Patents
入力システム、入力方法、制御用プログラム、及び記憶媒体 Download PDFInfo
- Publication number
- JP2017162126A JP2017162126A JP2016044973A JP2016044973A JP2017162126A JP 2017162126 A JP2017162126 A JP 2017162126A JP 2016044973 A JP2016044973 A JP 2016044973A JP 2016044973 A JP2016044973 A JP 2016044973A JP 2017162126 A JP2017162126 A JP 2017162126A
- Authority
- JP
- Japan
- Prior art keywords
- hand
- touch
- unit
- gesture recognition
- plane
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- User Interface Of Digital Computer (AREA)
- Image Analysis (AREA)
Abstract
【課題】従来よりも操作性が向上し、多種多様な入力操作が可能な入力システムを提供する。【解決手段】入力システムは、UI部品を操作平面に表示するプロジェクタ207、ユーザが指で操作平面をタッチしたタッチ位置を検出するタッチパネル330、及び操作平面をタッチしている指を備える手の形状を取得する距離画像センサ部208と、を備える。入力システムは、手の形状から該手を操作平面に投影した手領域を認識し、また、タッチ位置とUI部品の表示位置とから、当該UI部品へのタッチ操作を検出する。入力システムは、手領域とタッチ操作とに応じて、UI部品への操作内容を判定する。【選択図】図3
Description
本発明は、表示中のUI(User Interface)部品に対する操作内容を検出する入力システムに関する。UI部品とは、画面部品や機能部品などをいう。
プロジェクタや大型の液晶ディスプレイ等の表示装置によりUI部品を表示し、これを複数のタッチ位置を検出可能な位置検出装置であるタッチパネルを用いて操作する入力システムがある。ユーザが表示装置で表示されたUI部品をタッチし、そのタッチ位置をタッチパネルが検出することで、UI部品とタッチ位置とに応じた処理が行われる。このような入力システムでは、複数のユーザが同時にUI部品を操作することが想定されている。そのために入力システムは、複数点のタッチ位置を検出したときに、一人のユーザがマルチタッチを行っているか、あるいは複数のユーザがそれぞれシングルタッチを行っているか、を判断する必要がある。特許文献1は、タッチ操作時に表示面に接触する指形状に基づいて、一人のユーザがマルチタッチを行っているか、あるいは複数のユーザがそれぞれシングルタッチを行っているか、を判断して、表示内容を変更する技術を開示する。
従来のようにタッチ操作時に表示面に接触している部分の指形状で操作内容を判断する場合、タッチ操作時にユーザの手がどのような姿勢になっているかを判別することは困難である。そのために、手の姿勢(例えば手を握っている、開いている等)に応じて操作内容を変更するといった処理ができない。手の姿勢を判別することで、従来よりも多種多様な入力操作が可能となる。
本発明は、上記の問題を解決するために、従来よりも操作性が向上し、多種多様な入力操作が可能な入力システムを提供することを主たる課題とする。
本発明の入力システムは、UI部品を操作平面に表示する表示手段と、ユーザが指で前記操作平面をタッチしたタッチ位置を検出する位置検出手段と、前記操作平面をタッチしている指を備える手の形状を取得する画像取得手段と、前記手の形状から、該手を前記操作平面に投影した手領域を認識するジェスチャー認識手段と、前記位置検出手段で検出した前記タッチ位置と前記表示手段が表示する前記UI部品の位置とから、当該UI部品へのタッチ操作を検出するイベント検知手段と、前記ジェスチャー認識手段で認識した前記手領域と前記イベント検知手段で検出した前記タッチ操作とに応じて、前記UI部品への操作内容を判定する判定手段と、を備えることを特徴とする。
本発明によれば、UI部品へのタッチ操作のみならず、タッチ時の手の形状も操作内容の判定に用いるために、従来よりも操作性が向上し、多種多様な入力操作が可能になる。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
[第1実施形態]
図1は、本実施形態の入力システムの全体構成図である。この入力システムは、イーサネット等のネットワーク104を介して通信可能に接続された、カメラスキャナ101、ホストコンピュータ102、及びプリンタ103を含む。
この入力システムでは、ホストコンピュータ102からの指示により、カメラスキャナ101から画像を読み取るスキャン機能、スキャンデータをプリンタ103により出力するプリント機能などの実行が可能となる。また、ホストコンピュータ102を介さず、カメラスキャナ101への直接の指示により、スキャン機能、プリント機能の実行も可能である。
図1は、本実施形態の入力システムの全体構成図である。この入力システムは、イーサネット等のネットワーク104を介して通信可能に接続された、カメラスキャナ101、ホストコンピュータ102、及びプリンタ103を含む。
この入力システムでは、ホストコンピュータ102からの指示により、カメラスキャナ101から画像を読み取るスキャン機能、スキャンデータをプリンタ103により出力するプリント機能などの実行が可能となる。また、ホストコンピュータ102を介さず、カメラスキャナ101への直接の指示により、スキャン機能、プリント機能の実行も可能である。
<カメラスキャナの構成>
図2は、カメラスキャナ101の説明図である。カメラスキャナ101の全体構成図を図2(a)に示す。図示のように、カメラスキャナ101は、コントローラ部201、カメラ部202、腕部203、短焦点のプロジェクタ207、距離画像センサ部208を含んで構成される。
コントローラ部201、カメラ部202、プロジェクタ207及び距離画像センサ部208は、腕部203により連結されている。腕部203は、関節を用いて曲げ伸ばしが可能なものである。距離画像センサ部208は、物体(図示の例では原稿206)までの距離を非接触で測定するセンサであり、物体を指向するレンズを有する。カメラスキャナ101は、操作平面204に設置される。カメラ部202及び距離画像センサ部208のレンズは、この操作平面204方向に向けられており、破線で囲まれた読み取り領域205内の画像を読み取り可能である。図示の例では、原稿206が読み取り領域205内に置かれている。そのためにカメラスキャナ101は、原稿206を読み取り可能となっている。
図2は、カメラスキャナ101の説明図である。カメラスキャナ101の全体構成図を図2(a)に示す。図示のように、カメラスキャナ101は、コントローラ部201、カメラ部202、腕部203、短焦点のプロジェクタ207、距離画像センサ部208を含んで構成される。
コントローラ部201、カメラ部202、プロジェクタ207及び距離画像センサ部208は、腕部203により連結されている。腕部203は、関節を用いて曲げ伸ばしが可能なものである。距離画像センサ部208は、物体(図示の例では原稿206)までの距離を非接触で測定するセンサであり、物体を指向するレンズを有する。カメラスキャナ101は、操作平面204に設置される。カメラ部202及び距離画像センサ部208のレンズは、この操作平面204方向に向けられており、破線で囲まれた読み取り領域205内の画像を読み取り可能である。図示の例では、原稿206が読み取り領域205内に置かれている。そのためにカメラスキャナ101は、原稿206を読み取り可能となっている。
操作平面204には、ターンテーブル209も設けられている。ターンテーブル209は、コントローラ部201からの指示によって回転することができる。つまり、ターンテーブル209上に置かれた物体とカメラ部202との角度を任意に変えることができる。カメラ部202は、単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像が可能なものとすることが好ましい。
操作平面204内にはタッチパネル330が設けられる。タッチパネル330は、ユーザが手で触れたり、スタイラスペンで圧力を加える等により、触れられた位置の情報を感知して情報信号として出力する位置検出装置である。図2には示されていないが、カメラスキャナ101は、スピーカをさらに含んでもよい。さらに、周囲の環境情報を収集するための人感センサ、照度センサ、加速度センサなどの各種センサデバイスを含んでもよい。
図2(b)は、カメラスキャナ101における座標系の説明図である。カメラスキャナ101では、各ハードウェアデバイスに対して、カメラ座標系、距離画像センサ座標系、プロジェクタ座標系という座標系が定義される。これらの座標系は、カメラ部202及び距離画像センサ部208のRGBカメラ363が撮像する画像平面、あるいはプロジェクタ207が投影する画像平面をXY平面とする。そして、画像平面に直交した方向をZ方向として定義したものである。また、これらの独立した座標系の3次元データを統一的に扱えるようにするため、操作平面204を含む平面をXY平面とし、このXY平面から上方に垂直な向きをZ軸とする直交座標系を定義する。
座標系を変換する場合の例として、図2(c)に直交座標系と、カメラ部202を中心としたカメラ座標系を用いて表現された空間と、カメラ部202が撮像する画像平面との関係を示す。直交座標系における3次元点P[X,Y,Z]は、(1)式によって、カメラ座標系における3次元点Pc[Xc,Yc,Zc]へ変換できる。
ここで、Rc及びtcは、直交座標系に対するカメラ部202の姿勢(回転)と位置(並進)によって求まる外部パラメータによって構成される。Rcを3×3の回転行列、tcを並進ベクトルと呼ぶ。逆に、カメラ座標系で定義された3次元点は、(2)式によって、直交座標系へ変換することができる。
カメラ部202で撮影される2次元のカメラ画像平面は、カメラ部202によって3次元空間中の3次元情報が2次元情報に変換されたものである。すなわち、カメラ座標系上での3次元点Pc[Xc,Yc,Zc]を、(3)式によってカメラ画像平面での2次元座標pc[xp,yp]に透視投影変換することによって変換することができる。
ここで、Aは、カメラの内部パラメータと呼ばれ、焦点距離と画像中心などで表現される3×3の行列である。
以上のように、(1)式と(3)式とを用いることで、直交座標系で表された3次元点群を、カメラ座標系での3次元点群座標やカメラ画像平面に変換することができる。
なお、各ハードウェアデバイスの内部パラメータ及び直交座標系に対する位置姿勢(外部パラメータ)は、公知のキャリブレーション手法により、あらかじめキャリブレーションされているものとする。以後、特に断りがなく3次元点群と表記した場合は、直交座標系における3次元データを表しているものとする。
なお、各ハードウェアデバイスの内部パラメータ及び直交座標系に対する位置姿勢(外部パラメータ)は、公知のキャリブレーション手法により、あらかじめキャリブレーションされているものとする。以後、特に断りがなく3次元点群と表記した場合は、直交座標系における3次元データを表しているものとする。
<コントローラ部の構成例>
図3は、カメラスキャナ101の本体であるコントローラ部201のハードウェア構成例を示す図である。コントローラ部201は、システムバス301に様々な機能部品を接続して構成される。機能部品は、CPU302、RAM303、ROM304、HDD305を基本構成とするコンピュータを含む。CPU(Central Processing Unit)302は、カメラスキャナ101の制御用プログラムを実行することにより、コントローラ部201の全体動作を制御する。つまり、制御用プログラムは、コンピュータをコントローラ部201ないしカメラスキャナ101として動作させるためのものである。
RAM(Random Access Memory)303は、揮発性の書き換え可能な記憶媒体であり、CPU302のワークエリアとして機能する。ROM(Read Only Memory)304は、書き換え不能な記憶媒体であり、CPU302の起動用プログラムが格納されている。HDD305は、RAM303と比較して大容量なハードディスクドライブ(HDD)である。HDD305にはコントローラ部201の実行する、カメラスキャナ101の制御用プログラムが格納されている。
図3は、カメラスキャナ101の本体であるコントローラ部201のハードウェア構成例を示す図である。コントローラ部201は、システムバス301に様々な機能部品を接続して構成される。機能部品は、CPU302、RAM303、ROM304、HDD305を基本構成とするコンピュータを含む。CPU(Central Processing Unit)302は、カメラスキャナ101の制御用プログラムを実行することにより、コントローラ部201の全体動作を制御する。つまり、制御用プログラムは、コンピュータをコントローラ部201ないしカメラスキャナ101として動作させるためのものである。
RAM(Random Access Memory)303は、揮発性の書き換え可能な記憶媒体であり、CPU302のワークエリアとして機能する。ROM(Read Only Memory)304は、書き換え不能な記憶媒体であり、CPU302の起動用プログラムが格納されている。HDD305は、RAM303と比較して大容量なハードディスクドライブ(HDD)である。HDD305にはコントローラ部201の実行する、カメラスキャナ101の制御用プログラムが格納されている。
システムバス301に接続される機能部品には、ネットワークI/F(I/Fはインタフェースの略、以下同じ)306、画像処理プロセッサ307、カメラI/F308も含まれる。さらに、ディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311及びUSB(Universal Serial Bus)コントローラ312も機能部品に含まれる。
CPU302は、カメラスキャナ101が電源ON等によって起動されると、ROM304に格納されている起動用プログラムを実行する。この起動用プログラムは、HDD305に格納されている制御用プログラムを読み出し、RAM303上に展開するためのものである。CPU302は、起動用プログラムを実行すると、続けてRAM303上に展開した制御用プログラムを実行し、制御を行う。
CPU302は、また、制御用プログラムによる動作に用いるデータもRAM303上に格納して読み書きを行う。HDD305上には、さらに、制御用プログラムによる動作に必要な各種設定や、また、カメラ入力によって生成した画像データを格納することができ、CPU302によって読み書きされる。CPU302は、ネットワークI/F306を介してネットワーク104上の他の機器との通信を行う。
CPU302は、また、制御用プログラムによる動作に用いるデータもRAM303上に格納して読み書きを行う。HDD305上には、さらに、制御用プログラムによる動作に必要な各種設定や、また、カメラ入力によって生成した画像データを格納することができ、CPU302によって読み書きされる。CPU302は、ネットワークI/F306を介してネットワーク104上の他の機器との通信を行う。
画像処理プロセッサ307は、RAM303に格納された画像データを読み出して所要の画像処理を行い、処理結果をRAM303へ書き戻す。なお、画像処理プロセッサ307が実行する画像処理は、回転、変倍、色変換等である。
カメラI/F308はカメラ部202及び距離画像センサ部208に接続され、CPU302からの指示に応じてカメラ部202から画像データを、距離画像センサ部208から距離画像データを取得してRAM303に書き込む。また、CPU302からの制御コマンドをカメラ部202及び距離画像センサ部208へ送信し、カメラ部202及び距離画像センサ部208の設定を行う。距離画像センサ部208は、赤外線によるパターン画像を投射する赤外線パターン投射部361、可視画像を撮影するRGBカメラ363、及び赤外線画像を撮影する赤外線カメラ362を備える。
カメラI/F308はカメラ部202及び距離画像センサ部208に接続され、CPU302からの指示に応じてカメラ部202から画像データを、距離画像センサ部208から距離画像データを取得してRAM303に書き込む。また、CPU302からの制御コマンドをカメラ部202及び距離画像センサ部208へ送信し、カメラ部202及び距離画像センサ部208の設定を行う。距離画像センサ部208は、赤外線によるパターン画像を投射する赤外線パターン投射部361、可視画像を撮影するRGBカメラ363、及び赤外線画像を撮影する赤外線カメラ362を備える。
コントローラ部201は、ディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311及びUSBコントローラ312のうち少なくとも1つをさらに含むことができる。ディスプレイコントローラ309は、CPU302の指示に応じてディスプレイへの画像の表示を制御する。ディスプレイコントローラ309は、短焦点のプロジェクタ207及びタッチパネル330に接続されている。
シリアルI/F310は、シリアル信号の入出力を行う。本例では、シリアルI/F310は、ターンテーブル209と接続される。そして、CPU302の回転開始・終了及び回転角度の指示をターンテーブル209へ送信する。シリアルI/F310は、また、タッチパネル330に接続される。CPU302は、タッチパネル330が押下されたときに、シリアルI/F310を介して押下された座標(位置)を取得する。また、CPU302は、シリアルI/F310を介してタッチパネル330が接続されているか否かの判断を行う。
オーディオコントローラ311は、スピーカ340に接続される。オーディオコントローラ311は、CPU302の指示に応じて音声データをアナログ音声信号に変換し、スピーカ340を通じて音声を出力する。USBコントローラ312は、CPU302の指示に応じて外付けのUSBデバイスの制御を行う。本例では、USBコントローラ312は、USBメモリやSDカードなどの外部メモリ350に接続され、外部メモリ350へのデータの読み書きを行う。
<カメラスキャナの機能構成例>
図4は、CPU302が制御用プログラムを実行することによりコントローラ部201に形成される機能モジュール群401の構成の例示図である。制御用プログラムは、前述のようにHDD305に格納され、CPU302が起動したときにRAM303上に展開される。機能モジュール群401のうち、メイン制御部402は制御の中心であり、コントローラ部201を制御する。
図4は、CPU302が制御用プログラムを実行することによりコントローラ部201に形成される機能モジュール群401の構成の例示図である。制御用プログラムは、前述のようにHDD305に格納され、CPU302が起動したときにRAM303上に展開される。機能モジュール群401のうち、メイン制御部402は制御の中心であり、コントローラ部201を制御する。
画像取得部416は、画像入力処理を行うモジュールであり、カメラ画像取得部407、距離画像取得部408を有している。カメラ画像取得部407は、カメラI/F308を介してカメラ部202が出力する画像を取得し、これをRAM303へ格納する。距離画像取得部408は、カメラI/F308を介して距離画像センサ部208が出力する距離画像を取得し、これをRAM303へ格納する。距離画像取得部408の処理の詳細については後述する。
認識処理部417は、カメラ画像取得部407及び距離画像取得部408が取得する画像(画像データ)から操作平面204上の物体の動きを検知して認識する。そのために認識処理部417は、ジェスチャー認識部409、物体検知部410およびタッチパネルイベント検知部420を有している。
ジェスチャー認識部409は、画像取得部416から操作平面204上の画像を連続して取得し、取得した画像からタッチなどのジェスチャーを認識する。ジェスチャー認識部409は、ジェスチャーを認識するとメイン制御部402に通知する。ジェスチャー認識部409の処理の詳細については後述する。
物体検知部410は、画像取得部416から操作平面204を撮像した画像を取得し、操作平面204上に物体が置かれるタイミング、物体が置かれて静止するタイミング、あるいは物体が取り除かれるタイミングを検知する処理を行う。
タッチパネルイベント検知部420は、ユーザが指やペン等の指示体でタッチパネル330に接触した際に、シリアルI/F310を介して指示体が接触した位置を表すタッチ座標を取得する。タッチパネルイベント検知部420は、取得したタッチ座標情報をタッチパネルイベントとしてメイン制御部402に通知する。なお、以下の説明は指示体として指を例にして行う。
ジェスチャー認識部409は、画像取得部416から操作平面204上の画像を連続して取得し、取得した画像からタッチなどのジェスチャーを認識する。ジェスチャー認識部409は、ジェスチャーを認識するとメイン制御部402に通知する。ジェスチャー認識部409の処理の詳細については後述する。
物体検知部410は、画像取得部416から操作平面204を撮像した画像を取得し、操作平面204上に物体が置かれるタイミング、物体が置かれて静止するタイミング、あるいは物体が取り除かれるタイミングを検知する処理を行う。
タッチパネルイベント検知部420は、ユーザが指やペン等の指示体でタッチパネル330に接触した際に、シリアルI/F310を介して指示体が接触した位置を表すタッチ座標を取得する。タッチパネルイベント検知部420は、取得したタッチ座標情報をタッチパネルイベントとしてメイン制御部402に通知する。なお、以下の説明は指示体として指を例にして行う。
画像処理部418は、カメラ部202および距離画像センサ部208から取得した画像を画像処理プロセッサ307で解析するための処理を行う。ジェスチャー認識部409、物体検知部410、タッチパネルイベント検知部420は、画像処理部418の処理結果を利用して処理を行う。
ユーザインタフェース部403は、メイン制御部402からの要求を受け付けて、メッセージやボタン等のUI部品を生成する。ユーザインタフェース部403は、生成したUI部品の表示を表示部406に要求する。表示部406はディスプレイコントローラ309を介して、プロジェクタ207により、要求されたUI部品を表示する。プロジェクタ207は操作平面204に向けて設置されているため、操作平面204上にUI部品を投射することが可能となっている。また、ユーザインタフェース部403は、ジェスチャー認識部409が認識したタッチ等のジェスチャー操作、あるいはタッチパネルイベント検知部420が検知したタッチ操作、それらの座標を、メイン制御部402経由で受信する。ユーザインタフェース部403は表示中の画面(操作画面)の内容と操作座標とを対応させて操作内容(押下されたボタン等)を判定する。メイン制御部402は、この操作内容をユーザインタフェース部403から取得することにより、ユーザの操作を受け付ける。
ネットワーク通信部404は、ネットワークI/F306を介して、ネットワーク104上の他の機器とTCP/IPによる通信を行う。データ管理部405は、機能モジュール群401の動作時に生成された作業データを含む様々なデータをHDD305上の所定の領域へ保存し、管理する。
<距離画像センサおよび距離画像取得部>
距離画像取得部408の動作を図5及び図6を参照して説明する。図5は距離画像取得部408が実行する処理のフローチャートである。図6(a)〜(c)はパターン投射方式による距離画像の計測原理の説明図である。距離画像センサ部208は赤外線によるパターン投射方式の距離画像センサである。
距離画像取得部408の動作を図5及び図6を参照して説明する。図5は距離画像取得部408が実行する処理のフローチャートである。図6(a)〜(c)はパターン投射方式による距離画像の計測原理の説明図である。距離画像センサ部208は赤外線によるパターン投射方式の距離画像センサである。
図5を参照し、距離画像取得部408は、処理を開始すると、図6(a)に示すように、赤外線パターン投射部361を用いて赤外線による3次元形状測定パターン522を対象物521に投射する(S501)。距離画像取得部408は、RGBカメラ363を用いて対象物521を撮影したRGBカメラ画像523及び、赤外線カメラ362を用いてS501で投射した3次元形状測定パターン522を撮影した赤外線カメラ画像524を取得する(S502)。
なお、赤外線カメラ362とRGBカメラ363とでは設置位置が異なる。つまり、図6(b)に示すように、それぞれで撮影されるRGBカメラ画像523及び赤外線カメラ画像524の撮影領域が異なる。そこで、距離画像取得部408は、赤外線カメラ362の座標系からRGBカメラ363の座標系への座標系変換を用いて赤外線カメラ画像524をRGBカメラ画像523の座標系に合わせる(S503)。赤外線カメラ362とRGBカメラ363の相対位置やそれぞれの内部パラメータは、事前のキャリブレーション処理により既知であるとする。
その後、距離画像取得部408は、図6(c)に示すように、3次元形状測定パターン522とS503で座標変換を行った赤外線カメラ画像524との間での対応点を抽出する(S504)。例えば、赤外線カメラ画像524上の1点を3次元形状測定パターン522上から探索し、同一の点が検出された場合に対応付けを行う。あるいは、赤外線カメラ画像524の画素の周辺のパターンを3次元形状測定パターン522上から探索し、一番類似度が高い部分と対応付けてもよい。
対応点を抽出すると、距離画像取得部408は、赤外線パターン投射部361と赤外線カメラ362とを結ぶ直線を基線525として三角測量の原理を用いて計算を行うことにより、赤外線カメラ362からの距離を算出する(S505)。S504の処理で対応付けができた画素については、赤外線カメラ362からの距離を算出し、これを画素値として保存する。対応付けができなかった画素については、距離の計測ができなかった部分として無効値を保存する。これをS503で座標変換を行った赤外線カメラ画像524の全画素に対して行うことで、距離画像取得部408は、各画素に距離値が入った距離画像を生成する。
その後、距離画像取得部408は、距離画像の各画素にRGBカメラ画像523のRGB値を保存することにより、1画素につきR、G、B、距離の4つの値を持つ距離画像を生成する(S506)。ここで取得した距離画像は、距離画像センサ部208のRGBカメラ363で定義された距離画像センサ座標系が基準となっている。そこで、距離画像取得部408は、図2(b)に示したように、距離画像センサ座標系として得られた距離データを直交座標系における3次元点群に変換する(S507)。なお、以後、特に指定がなく3次元点群と表記した場合は、直交座標系における3次元点群を示すものとする。
なお、第1実施形態では、距離画像センサ部208として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサ部を用いることも可能である。例えば、2つのRGBカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するTOF(Time of Flight)方式を用いても構わない。
<ジェスチャー認識部>
ジェスチャー認識部409の処理の詳細を、図7のフローチャートを参照して説明する。図7において、ジェスチャー認識部409は、処理を開始すると、初期化処理を行う(S601)。すなわちジェスチャー認識部409は、距離画像取得部408から距離画像を1フレーム取得する。ジェスチャー認識部409は、動作開始時には操作平面204上に対象物が置かれていない状態なので、初期状態として操作平面204の平面の認識を行う。つまり、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル(以降、操作平面204の平面パラメータと呼ぶ)を算出し、これをRAM303に保存する。
ジェスチャー認識部409の処理の詳細を、図7のフローチャートを参照して説明する。図7において、ジェスチャー認識部409は、処理を開始すると、初期化処理を行う(S601)。すなわちジェスチャー認識部409は、距離画像取得部408から距離画像を1フレーム取得する。ジェスチャー認識部409は、動作開始時には操作平面204上に対象物が置かれていない状態なので、初期状態として操作平面204の平面の認識を行う。つまり、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル(以降、操作平面204の平面パラメータと呼ぶ)を算出し、これをRAM303に保存する。
初期化処理を終えると、ジェスチャー認識部409は、操作平面204上に存在する物体の3次元点群を取得する(S602)。具体的には、ジェスチャー認識部409は、距離画像取得部408から距離画像と3次元点群を1フレーム取得する(S621)。また、ジェスチャー認識部409は、操作平面204の平面パラメータを用いて、取得した3次元点群から操作平面204を含む平面にある点群を除去する(S622)。その後、ジェスチャー認識部409は、取得した3次元点群からユーザの手の形状および指先を検出する、手形状及び指先検出処理を行う(S603)。より具体的には、S631〜S634の処理を実行する。
ここで、S631〜S634の指先検出処理の概要を図8を参照して説明する。ジェスチャー認識部409は、S602で取得した3次元点群から、操作平面204を含む平面から所定の高さ以上にある、肌色の3次元点群を抽出する。これにより、図8(a)に示す手の3次元点群661を抽出する(S631)。その後、ジェスチャー認識部409は、抽出した手の3次元点群661を、操作平面204の平面に投影した2次元画像662を生成し、その手の外形を検出する(S632)。そして、検出した手の外形から手重心座標を算出する。投影は、点群の各座標を、操作平面204の平面パラメータを用いて投影すればよい。また、図8(b)に示すように、投影した3次元点群から、xy座標の値だけを取り出すことにより、z軸方向から見た2次元画像を操作平面204上を占める手領域663として扱うことができる。このとき、手の3次元点群の各点が、操作平面204の平面に投影した手領域663の各座標のどれに対応するかを記憶しておく。
その後、ジェスチャー認識部409は、図8(c)に示すように、検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する(S633)。図8(c)は、外形の曲率から指先を検出する方法を模式的に表した図である。この図では、操作平面204の平面に投影された2次元画像(手領域663)の外形を表す点664の一部が示されている。
ここで、外形を表す点664のうち、隣り合う5個の点を含むように円を描くことを考える。円665、667が、その例である。このような円を、全ての外形の点に対して順に描き、その直径(例えば666、668)が所定の値より小さい(曲率が小さい)ことを以て、指先とする。この例では、隣り合う5個の点としたが、その数は限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。
ここで、外形を表す点664のうち、隣り合う5個の点を含むように円を描くことを考える。円665、667が、その例である。このような円を、全ての外形の点に対して順に描き、その直径(例えば666、668)が所定の値より小さい(曲率が小さい)ことを以て、指先とする。この例では、隣り合う5個の点としたが、その数は限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。
指先を検出すると、ジェスチャー認識部409は、検出した指先の個数及び各指先の座標を算出する(S634)。ジェスチャー認識部409は、操作平面204に投影した2次元画像の各点と、手の3次元点群の各点の対応関係を記憶しているため、各指先の3次元座標を得ることができる。
本例では、3次元点群から2次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、RGB画像の肌色領域から手の領域を抽出し、上述と同様の方法(外形の曲率計算等)で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標はRGB画像や距離画像といった、2次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の3次元座標に変換する必要がある。このとき、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
指先検出処理の後、ジェスチャー認識部409は、腕検出処理を行う(S606)。図8(d)は、腕検出処理について模式的に説明した図である。ジェスチャー認識部409は、S631で抽出した手領域の3次元点群661に接続する3次元点群を抽出して、腕の3次元点群669を検出する(S661)。ジェスチャー認識部409は、検出した腕の3次元点群669を操作平面204の平面に投影した腕領域670を算出する。ジェスチャー認識部409は、操作平面204の端部の辺と腕領域670とが交差する点の中心を、腕の操作平面204への侵入点671として、その座標を算出する(S662)。
ジェスチャー認識部409は、S634で算出した指先の座標(位置情報)およびS662で算出した侵入点671の座標(位置情報)をメイン制御部402に通知する(S607)。通知後にジェスチャー認識部409は、S602の処理へ戻って、ジェスチャー認識処理を繰り返し行う。以上の実施形態では一本指によるジェスチャー認識について説明したが、複数の指、複数の手、あるいは腕や体全体をジェスチャー認識の対象としてもよい。
<タッチパネルイベント検知部>
図9のフローチャートによりタッチパネルイベント検知部420の処理を説明する。タッチパネルイベント検知部420は、ユーザが指等でタッチパネル330に接触した際に、シリアルI/F310から指等が接触した位置を表す位置情報であるタッチ座標を取得する。
図9のフローチャートによりタッチパネルイベント検知部420の処理を説明する。タッチパネルイベント検知部420は、ユーザが指等でタッチパネル330に接触した際に、シリアルI/F310から指等が接触した位置を表す位置情報であるタッチ座標を取得する。
タッチパネルイベント検知部420は、処理を開始すると、タッチ座標を取得したか否か確認する(S701)。タッチ座標を取得するまで、タッチパネルイベント検知部420は、タッチ座標の取得確認を繰り返す(S701:N)。タッチ座標を取得した場合(S701:Y)、タッチパネルイベント検知部420は、取得したタッチ座標をタッチパネルイベントとしてメイン制御部402に通知する(S702)。その後、タッチパネルイベント検知部420は、S701の処理に戻り、タッチ座標の取得確認を行う。このような処理を繰り返し行い、タッチパネルイベント検知部420は、タッチパネルイベントをメイン制御部402に通知し続ける。
<メイン制御部>
メイン制御部402は、タッチパネルイベント検知部420から通知されるタッチパネルイベントに応じた処理を行う。図10は、メイン制御部402によるタッチパネルイベントの制御処理のフローチャートである。
メイン制御部402は、タッチパネルイベント検知部420から通知されるタッチパネルイベントに応じた処理を行う。図10は、メイン制御部402によるタッチパネルイベントの制御処理のフローチャートである。
メイン制御部402は、処理を開始すると、ジェスチャー認識部409に対して処理開始指示を行う(S801)。ジェスチャー認識部409は、この指示に応じて、上述の図7の処理を行う。また、メイン制御部402は、タッチパネルイベント検知部420に対して処理開始の指示を行う(S802)。タッチパネルイベント検知部420は、この指示に応じて、上述の図9の処理を行う。
メイン制御部402は、ジェスチャー認識部409からのタッチイベントの通知の有無を確認する(S803)。メイン制御部402は、通知があるまで、タッチイベントの通知の有無を確認する(S803:N)。タッチイベントの通知が有る場合(S803:Y)、メイン制御部402は、シングルタッチ処理を行う(S804)。
シングルタッチ処理では、メイン制御部402は、まずジェスチャー認識部409が検知した指の本数を取得する(S811)。メイン制御部402は、ジェスチャー認識部409が検知した指の本数が1本であるかを判断する(S812)。検知した指の本数が1本である場合(S812:Y)、メイン制御部402は、指差し姿勢タッチイベントをユーザインタフェース部403へ通知する(S813)。検知した指の本数が1本ではない場合(S812:N)、メイン制御部402は、指差し姿勢ではないタッチイベントをユーザインタフェース部403へ通知する(S814)。ユーザインタフェース部403への通知を行ったメイン制御部402は、S803へ戻り、ジェスチャー認識部409からのタッチイベントの通知を待機する。
図11は、メイン制御部402からユーザインタフェース部403への通知の説明図である。
図11(a)は、S813の指差し姿勢タッチイベントをユーザインタフェース部403へ通知する処理の説明図である。ユーザインタフェース部403は、操作平面204上にUI部品801を投影している。タッチ点803は、タッチパネルイベント検知部420が検知した操作平面204上の指の接触位置である。手領域802は、ジェスチャー認識部409が認識したユーザの手の領域である。ジェスチャー認識部409は、図7のS633の処理により1本の指先804を検出する。
このように、ジェスチャー認識部409が検出する指先が1本であるため、メイン制御部402は指差し姿勢でのタッチであることをユーザインタフェース部403へ通知する。ユーザインタフェース部403は、UI部品801がタッチ点803でタッチされたことだけでなく、それが指差し姿勢でタッチされたことが利用できるため、それらに応じた処理を実行することができる。
このように、ジェスチャー認識部409が検出する指先が1本であるため、メイン制御部402は指差し姿勢でのタッチであることをユーザインタフェース部403へ通知する。ユーザインタフェース部403は、UI部品801がタッチ点803でタッチされたことだけでなく、それが指差し姿勢でタッチされたことが利用できるため、それらに応じた処理を実行することができる。
図11(b)は、S814の指差し姿勢ではないタッチイベントをユーザインタフェース部403へ通知する処理の説明図である。タッチ点805は、タッチパネルイベント検知部420が検知した操作平面204上の指の接触位置である。手領域806は、ジェスチャー認識部409が認識した手の領域である。ジェスチャー認識部409は、図7のS633の処理により5本の指先807〜811を検出する。
このように、ジェスチャー認識部409が検出する指先が1本以上であるため、メイン制御部402は指差し姿勢ではない姿勢でのタッチであることをユーザインタフェース部403へ通知する。ユーザインタフェース部403は、UI部品801がタッチ点805でタッチされたことだけでなく、それが指差し姿勢ではない姿勢でタッチされたことが利用できるため、それらに応じた処理を実行することができる。
このように、ジェスチャー認識部409が検出する指先が1本以上であるため、メイン制御部402は指差し姿勢ではない姿勢でのタッチであることをユーザインタフェース部403へ通知する。ユーザインタフェース部403は、UI部品801がタッチ点805でタッチされたことだけでなく、それが指差し姿勢ではない姿勢でタッチされたことが利用できるため、それらに応じた処理を実行することができる。
このようにユーザインタフェース部403は、UI部品801がタッチされた際に指差し姿勢であるか否かを判別できるために、指差し姿勢であるか否かに応じて操作内容を判定し、操作内容に応じて異なる処理を行うことができる。例えば指差し姿勢でタッチ操作が行われたと判別した場合にUI部品801上に線の描画処理を行い、指差し姿勢でない姿勢でタッチ操作が行われたと判別した場合にUI部品801の内部画像をスクロールする、といった別の処理を行うことが可能である。各処理は、メイン制御部402が表示するUI部品毎にユーザインタフェース部403へ予め登録しておく。
以上のような入力システムは、タッチパネルイベント検知部420が検知したタッチ点以外に、ジェスチャー認識部409が検知した手の姿勢をUI部品の操作に用いるために、ユーザの操作性を高め、従来よりも多種多様な入力操作が可能となる。本実施形態ではユーザがタッチしたときの指差し姿勢に応じてUI部品への操作を切り替える例を説明したが、ジェスチャー認識部409が検出する手の姿勢はこれに限らない。例えば指を2本立てた姿勢と1本立てた姿勢とでUI部品の操作を切り替えてもよい。また、ジェスチャー認識部409は、検知した指先の本数により手の姿勢を判別する他に、手の3次元点群から手の骨格モデルを算出し、算出した骨格モデルから手の姿勢を判別してもよい。
[第2実施形態]
第1実施形態では、ユーザが操作平面204上を1点だけタッチするシングルタッチをタッチパネルイベント検知部420が検知する場合の処理を説明した。第2実施形態では、ユーザが操作平面204上を2点タッチするマルチタッチをタッチパネルイベント検知部420が検知する場合の処理について説明する。入力システムの構成は第1実施形態と同様であるため説明を省略する。
第1実施形態では、ユーザが操作平面204上を1点だけタッチするシングルタッチをタッチパネルイベント検知部420が検知する場合の処理を説明した。第2実施形態では、ユーザが操作平面204上を2点タッチするマルチタッチをタッチパネルイベント検知部420が検知する場合の処理について説明する。入力システムの構成は第1実施形態と同様であるため説明を省略する。
図12は、タッチパネルイベント検知部420がマルチタッチイベントを検知する場合の模式図である。
図12(a)は、ユーザが片手で2点のマルチタッチを行う場合を表す。タッチパネルイベント検知部420は、タッチ点903、904を検知する。ジェスチャー認識部409は手領域901及び腕侵入点902を検出する。タッチ点が2点で手領域が1つである場合、メイン制御部402は、1人のユーザによる片手マルチタッチと判断する。
図12(b)は、ユーザが両手で2点のマルチタッチを行う場合を表す。タッチパネルイベント検知部420は、タッチ点913、916を検知する。ジェスチャー認識部409は手領域911、914及び腕侵入点912、915を検出する。タッチ点が2点で手領域が2つあり、且つ2つの腕侵入点が操作平面204の同一辺上にある場合、メイン制御部402は、1人のユーザが両手を操作平面204の同一辺上から手を入れていると判断する。これによりメイン制御部402は、タッチ点913とタッチ点916とが1人のユーザによる両手マルチタッチと判断する。
図12(c)は、2人のユーザがそれぞれ1点ずつタッチを行う場合を表す。タッチパネルイベント検知部420は、タッチ点923、926を検知する。ジェスチャー認識部409は手領域921、941及び腕侵入点922、925を検出する。タッチ点が2点で手領域が2つあり、且つ2つの腕侵入点が操作平面204の異なる辺上にある場合、メイン制御部402は、2人のユーザがそれぞれ操作平面204の異なる方向から手を入れていると判断する。これによりメイン制御部402は、タッチ点923とタッチ点926とが2人のユーザによる2つのシングルタッチであると判断する。
図13は、マルチタッチ時のメイン制御部402によるタッチパネルイベントの制御処理のフローチャートである。図10のフローチャートと同様の処理は同じステップ番号を付してある。
メイン制御部402は、処理を開始すると、ジェスチャー認識部409に対して処理開始指示を行う(S801)。メイン制御部402は、タッチパネルイベント検知部420に対して処理開始指示を行う(S802)。メイン制御部402は、ジェスチャー認識部409からのタッチイベントの通知を待機する(S803)。
タッチイベントの通知を取得した場合(S803:Y)、メイン制御部402は、タッチ点の数が「1」であるか否かを判断する(S901)。タッチ点の数が「1」である場合(S901:Y)、メイン制御部402は、図10のシングルタッチ処理を行う(S804)。
タッチイベントの通知を取得した場合(S803:Y)、メイン制御部402は、タッチ点の数が「1」であるか否かを判断する(S901)。タッチ点の数が「1」である場合(S901:Y)、メイン制御部402は、図10のシングルタッチ処理を行う(S804)。
タッチ点の数が「1」より大きい場合(S901:N)、メイン制御部402は、マルチタッチ処理(S902)を行う。マルチタッチ処理では、メイン制御部402は、まず、ジェスチャー認識部409から検出した手領域の数を取得する(S911)。メイン制御部402は、取得した手領域の数が「1」であるか否かを判断する(S912)。
手領域の数が「1」である場合(S912:Y)、メイン制御部402は、図12(a)に示すように1人のユーザによるマルチタッチであると判断する。メイン制御部402は、片手マルチタッチイベントをユーザインタフェース部403に通知する(S916)。手領域の数が2以上である場合(S912:N)、メイン制御部402は、手領域の操作平面204への侵入点が、操作平面204の同じ辺上であるか、すなわち同じ方向から腕が侵入しているか否かを判断する(S913)。
同じ方向から腕が侵入している場合(S913:Y)、メイン制御部402は、図12(b)に示すように1人のユーザの両手マルチタッチイベントであると判断する。メイン制御部402は、両手マルチタッチイベントをユーザインタフェース部403に通知する(S914)。異なる方向から腕が侵入している場合(S913:N)、メイン制御部402は、図12(c)に示すように2人のユーザのそれぞれによるシングルタッチイベントであると判断する。メイン制御部402は、2人のユーザのそれぞれによるシングルタッチイベントをユーザインタフェース部403に通知する(S915)。ユーザインタフェース部403への通知を行ったメイン制御部402は、S803へ戻り、ジェスチャー認識部409からのタッチイベントの通知を待機する。
以上のようなメイン制御部402の処理により、ユーザインタフェース部403は、タッチパネルイベント検知部420が2点のタッチイベントを検知した場合に、操作内容が次のいずれであるかを判断することができる。
・2人のユーザによる2つのシングルタッチ
・片手マルチタッチ
・1人のユーザによる両手マルチタッチ
・2人のユーザによる2つのシングルタッチ
・片手マルチタッチ
・1人のユーザによる両手マルチタッチ
ユーザインタフェース部403は、上記の3つの判断結果に応じて異なる処理を実行することができる。例えば、ユーザインタフェース部403は、片手マルチタッチでは、UI部品の拡大・縮小、両手マルチタッチではUI部品の回転、2つのシングルタッチではUI部品上もタッチ点の軌跡の線の描画、を行う。各処理は、第1実施形態と同様に、メイン制御部402が表示するUI部品毎に、ユーザインタフェース部403に予め登録しておく。
このように入力システムは、タッチパネルイベント検知部420が検知したタッチ点だけではなく、ジェスチャー認識部409が検知する手領域の数および侵入点を利用することで、操作するユーザの人数を判別することが可能となる。そのために、複数のユーザが、同時にシングルタッチやマルチタッチを行うことができ、操作性が向上して、従来よりも多種多様な入力操作が可能となる。
[第3実施形態]
第2実施形態ではユーザが最大2人であり、操作平面204上のタッチ点も最大2である。第3実施形態では、タッチパネルイベント検知部420が検知するタッチ点とジェスチャー認識部409が検出する手領域とを関連付けることで、2以上の複数のタッチ点であっても適切なタッチイベントを実行する処理について説明する。入力システムの構成は第1実施形態と同様であるため説明を省略する。
第2実施形態ではユーザが最大2人であり、操作平面204上のタッチ点も最大2である。第3実施形態では、タッチパネルイベント検知部420が検知するタッチ点とジェスチャー認識部409が検出する手領域とを関連付けることで、2以上の複数のタッチ点であっても適切なタッチイベントを実行する処理について説明する。入力システムの構成は第1実施形態と同様であるため説明を省略する。
図14は、手領域とタッチ点との関係を示す模式図である。手領域1001は、1つのタッチ点1003と関連づけられ、操作平面204へ侵入点1002で侵入する。手領域1001は、操作平面204に同じ方向から侵入する他の手領域が無く、タッチ点が1つであることから、シングルタッチと判断される。手領域1004は、2つのタッチ点1006、1007と関連付けられ、操作平面204へ侵入点1005で侵入する。手領域1004は、操作平面204に同じ方向から侵入する他の手領域が無く、タッチ点が2つであることから、片手マルチタッチと判断される。
手領域1008は、1つのタッチ点1010と関連付けられ、操作平面204へ侵入点1009で侵入する。手領域1011は、1つのタッチ点1013と関連付けられ、操作平面204へ侵入点1012で侵入する。手領域1008の侵入点1009と手領域1011の侵入点1012とは、操作平面204の同じ辺上にある。そのために、手領域1008と手領域1011とは、同じ方向から侵入していると判断される。また、手領域1008と手領域1011とのそれぞれのタッチ点の数を合計すると「2」であることから、手領域1008と手領域1011とは、両手マルチタッチと判断される。
図15は、図14で説明したタッチ種類の判断とタッチイベントの判定処理を行う、メイン制御部402によるタッチパネルイベントの制御処理のフローチャートである。図10のフローチャートと同様の処理は同じステップ番号を付してある。
メイン制御部402は、処理を開始すると、ジェスチャー認識部409に対して処理開始指示を行う(S801)。メイン制御部402は、タッチパネルイベント検知部420に対して処理開始指示を行う(S802)。メイン制御部402は、ジェスチャー認識部409からのタッチイベントの通知を待機する(S803)。
タッチイベントの通知を取得した場合(S803:Y)、メイン制御部402は、タッチイベントで通知された各タッチ点について、どの手領域に含まれるかを算出し、含まれる手領域とタッチ点とを関連付ける(S1001)。なお、タッチ点の座標はタッチパネル330で検知され、手領域は距離画像センサ部208で検知されるため、検知方法の違いによる座標ずれが生じることがある。そのためにタッチ点がどの手領域にも含まれない場合があるが、その場合、メイン制御部402は、該タッチ点を最も近い手領域に関連付ける。
メイン制御部402は、すべての手領域について以降のループ処理を行う(S1002、S1003)。メイン制御部402は、まず、このループ処理の対象となる1つの手領域について、関連付けられたタッチ点の有無を判断する(S1011)。関連付けられたタッチ点が無い場合(S1011:N)、メイン制御部402は次の手領域についてのループ処理を行う。関連づけられたタッチ点が有る場合(S1011:Y)、メイン制御部402はタッチイベント判定処理を行う(S1021)。
タッチイベント判定処理では、メイン制御部402は、まず処理対象の手領域の操作平面204への侵入点の辺と、同じ辺に侵入点をもつ手領域の有無、すなわち同じ方向から操作平面204に侵入する手領域の有無を確認する(S1012)。また、メイン制御部402は同じ方向から操作平面204に侵入する手領域にタッチ点が関連付けられているかを判断する。同じ方向から操作平面204へ侵入し、且つタッチ点が関連付けられた手領域が有る場合(S1012:Y)、メイン制御部402は、図14の手領域1008と手領域1011のように両手によるマルチタッチであると判断する。メイン制御部402は、両手マルチタッチイベントをユーザインタフェース部403へ通知する(S1016)。
同じ方向から操作平面204へ侵入し、且つタッチ点が関連付けられた手領域が無い場合(S1012:N)、メイン制御部402は、処理対象の手領域に関連付けられたタッチ点が1つか否かを判断する(S1013)。タッチ点が1つである場合(S1013:Y)、メイン制御部402は、シングルタッチであると判断する。メイン制御部402は、シングルタッチイベントをユーザインタフェース部403へ通知する(S1014)。タッチ点が1より多い場合(S1013:N)、メイン制御部402は、片手によるマルチタッチイベントであると判断する。メイン制御部402は、片手マルチタッチイベントをユーザインタフェース部403へ通知する(S1015)。
タッチイベントをユーザインタフェース部403へ通知したメイン制御部402は、未処理の手領域の有無を確認する(S1003)。未処理の手領域が有る場合、メイン制御部402はS1002以降の処理を、すべての手領域に対する処理が終了するまで繰り返し行う。すべての手領域に対する処理が終了すると、メイン制御部402は、S803へ戻り、ジェスチャー認識部409からのタッチイベントの通知を待機する。
以上のようなメイン制御部402の処理により、ユーザインタフェース部403は、シングルタッチイベント、片手マルチタッチイベント、および両手マルチタッチイベントの通知を区別して取得することができる。さらに、上述したように手領域とタッチ点を関連付けることで、図14に示すようにこれらのタッチ操作が同時に発生した場合であっても、ユーザインタフェース部403は対応したタッチイベントを取得することができる。これにより、操作平面204上にユーザインタフェース部403が投影したUI部品を、複数のユーザが同時に別々の方向から操作することが可能となる。そのために、複数のユーザの操作性が向上して、従来よりも多種多様な入力操作が可能となる。
[第4実施形態]
第2、第3実施形態では、操作平面204上をタッチしている手領域が複数有る場合に、手領域が同じ方向から操作平面204に侵入しているか否かにより、両手マルチタッチか、あるいは片手シングルタッチかを判別している。第4実施形態では、手領域が右手および左手のいずれであるかに基づいて、両手マルチタッチと片手シングルタッチとの判別を行う。これはメイン制御部402が手領域の形状を算出しており、これにより手領域が右手および左手のいずれであるかを判別することで行われる。入力システムの構成は第1実施形態と同様であるため説明を省略する。
第2、第3実施形態では、操作平面204上をタッチしている手領域が複数有る場合に、手領域が同じ方向から操作平面204に侵入しているか否かにより、両手マルチタッチか、あるいは片手シングルタッチかを判別している。第4実施形態では、手領域が右手および左手のいずれであるかに基づいて、両手マルチタッチと片手シングルタッチとの判別を行う。これはメイン制御部402が手領域の形状を算出しており、これにより手領域が右手および左手のいずれであるかを判別することで行われる。入力システムの構成は第1実施形態と同様であるため説明を省略する。
図16は、手領域とタッチ点との関係を示す模式図である。手領域1101は1つのタッチ点1102が関連付けられ、操作平面204へ侵入点1103で侵入している。メイン制御部402は、タッチ点1102が片手シングルタッチのタッチ点であるか、あるいは両手マルチタッチのタッチ点であるかの判別を以下のように行う。メイン制御部402は、まず、手領域1101の形状から、手領域1101が右手であると判別する。そして、侵入点1103の左隣から侵入している手領域を探す。手領域1101が左手の場合には、侵入点1103の右隣から侵入している手領域を探す。図16では侵入点1106から侵入している手領域1104を発見する。メイン制御部402は、発見した手領域1104の形状から、手領域1104が右手であると判別する。手領域1101が右手であり、その左隣の手領域1104も右手であるため、手領域1101のタッチ点1102は片手によるシングルタッチであると判定される。
手領域1104のタッチ点1105が片手シングルタッチのタッチ点であるか、あるいは両手マルチタッチのタッチ点であるかの判別も、手領域1101の場合と同様に行われる。すなわち手領域1104が右手であることを判別し、左隣から侵入している手領域を探すことで行われる。ここで、操作平面204の同じ辺1110から侵入している手領域だけでなく、侵入点1106がある辺の左隣の辺1111からも侵入している手領域を探すことにより、侵入点1109から侵入している手領域1107を発見することができる。手領域1104が左手である場合には、右隣の辺1112から侵入している手領域を探す。続いて、左隣に発見した手領域1107の形状から、手領域1107が左手であると判別される。手領域1104が右手であり、その左隣の手領域1107が左手であることから、手領域1104のタッチ点1105は両手マルチタッチのタッチ点であると判定される。
図17は、図16で説明したタッチ種類の判断とタッチイベントの判定処理を行う、メイン制御部402によるタッチパネルイベントの制御処理のフローチャートである。図17の処理は、図15のフローチャートのS1021の処理に置き換えられる。つまり図17のフローチャートの前には、図15のS801〜S1011の処理が行われる。
メイン制御部402は、タッチイベント判定の対象となる手領域の形状から、該手領域が右手であるか、あるいは左手であるかを判別する(S1101)。メイン制御部402は、判定対象の手領域が右手であれば左隣、左手であれば右隣の侵入点を持つ手領域を探索する(S1102)。探索する手領域は、侵入点が操作平面204の同じ辺を持つ手領域、およびタッチイベント判定対象の手領域が右手であれば操作平面204の左隣の辺、タッチイベント判定対象の手領域が左手であれば操作平面204の右隣の辺に侵入点がある手領域である。
メイン制御部402は、隣の手領域を発見し、且つ該手領域にタッチ点があるか否かを判断する(S1103)。隣の手領域があり、且つ該手領域にタッチ点が有る場合(S1103:Y)、メイン制御部402は、隣の手領域の形状から該手領域が右手であるか、あるいは左手であるかを判別する(S1104)。メイン制御部402は、タッチイベント判定対象の手領域とその隣の手領域とが逆の手、すなわち一方が右手、他方が左手であるか否かを判断する(S1105)。タッチイベント判定対象の手領域とその隣の手領域とが逆の手である場合(S1105:Y)、メイン制御部402は、両手マルチタッチイベントであると判定する。メイン制御部402は、両手マルチタッチイベントをユーザインタフェース部403へ通知する(S1106)。
隣の手領域が無いあるいは隣の手領域があっても該手領域にタッチ点が無い場合(S1103:N)、メイン制御部402はタッチイベント判定対象の手領域に関連付けられたタッチ点が1つであるかどうかを判断する(S1107)。また、メイン制御部402は、タッチイベント判定対象の手領域とその隣の手領域とが逆の手ではない場合(S1105:N)にも、タッチイベント判定対象の手領域に関連付けられたタッチ点が1つであるかどうかを判断する(S1107)。タッチイベント判定対象の手領域とその隣の手領域とが逆の手ではない場合は、両方右手あるいは両方左手である場合である。
タッチ点が1つである場合(S1107:Y)、メイン制御部402は、シングルタッチイベントであると判定する。メイン制御部402は、シングルタッチイベントをユーザインタフェース部403に通知する(S1108)。タッチ点が複数である場合(S1107:N)、メイン制御部402は、片手マルチタッチイベントであると判定する。メイン制御部402は、片手マルチタッチイベントをユーザインタフェース部403へ通知する。タッチイベントをユーザインタフェース部403へ通知したメイン制御部402は、タッチイベント判定処理を終了する。
以上のようなメイン制御部402の処理により、ユーザインタフェース部403は、シングルタッチイベント、片手マルチタッチイベント、および両手マルチタッチイベントの通知を区別して取得することができる。また、上述したように手領域とタッチ点を関連付けることで、図14に示すようにこれらのタッチ操作が同時に発生した場合であっても、ユーザインタフェース部403は対応したタッチイベントを取得することができる。これにより、操作平面204上にユーザインタフェース部403が投影したUI部品を、複数のユーザが同時に別々の方向から操作することが可能となる。そのために、複数のユーザの操作性が向上して、従来よりも多種多様な入力操作が可能となる。さらに、図16の手領域1104と手領域1107のように、操作平面204の2つの辺にまたがって両手マルチタッチを行うことも可能となる。
[第5実施形態]
第1〜第4実施形態では、距離画像センサ部208が読み取り領域205内を読み取るように配置されており、入力システムは、操作平面204上の手領域を用いて操作を判別している。第5実施形態では、距離画像センサ部208は、画角がより広角にされるとともに、より上方に配置されることで、操作平面204の周囲の物体の距離画像を取得する。これにより、操作平面204上の手の3次元点群だけでなく、操作平面204の周囲にある腕および人体の形状を表す3次元点群を取得することができる。入力システムは、取得した3次元点群を用いて手領域が接続する人体を判別することが可能となる。入力システムの構成は第1実施形態と同様であるため説明を省略する。
第1〜第4実施形態では、距離画像センサ部208が読み取り領域205内を読み取るように配置されており、入力システムは、操作平面204上の手領域を用いて操作を判別している。第5実施形態では、距離画像センサ部208は、画角がより広角にされるとともに、より上方に配置されることで、操作平面204の周囲の物体の距離画像を取得する。これにより、操作平面204上の手の3次元点群だけでなく、操作平面204の周囲にある腕および人体の形状を表す3次元点群を取得することができる。入力システムは、取得した3次元点群を用いて手領域が接続する人体を判別することが可能となる。入力システムの構成は第1実施形態と同様であるため説明を省略する。
図18は、ユーザによる操作を示す模式図である。距離画像センサ部208により、操作平面204上の手領域1201、1204、1206の他に、人体1203、1208が検知される。
メイン制御部402は、手領域1201が接続している人体1203に、手領域1201の他にタッチ操作を行っている手領域が接続していないことを判別する。これによりメイン制御部402は、手領域1201のタッチ点1202がシングルタッチであることを判定し、シングルタッチイベントをユーザインタフェース部403へ通知する。
メイン制御部402は、手領域1204が接続している人体1208に、タッチ点1207を持つ手領域1206が接続していることを判別する。これによりメイン制御部402は、タッチ点1205とタッチ点1207とが両手マルチタッチのタッチ点であることを判定し、両手マルチタッチイベントをユーザインタフェース部403へと通知する。
メイン制御部402は、手領域1204が接続している人体1208に、タッチ点1207を持つ手領域1206が接続していることを判別する。これによりメイン制御部402は、タッチ点1205とタッチ点1207とが両手マルチタッチのタッチ点であることを判定し、両手マルチタッチイベントをユーザインタフェース部403へと通知する。
このようなメイン制御部402によるタッチイベント判定処理は、図15のタッチイベント判定処理(S1202)に組み込まれる。これによりユーザインタフェース部403は、シングルタッチイベント、片手マルチタッチイベント、および両手マルチタッチイベントを区別して取得することができる。以上のような処理により、複数のユーザが同時に別々の方向から操作することが可能となるために、操作性が向上して、従来よりも多種多様な入力操作が可能となる。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
101…カメラスキャナ、201…コントローラ部、202…カメラ部、204…操作平面、207…プロジェクタ、208…距離画像センサ部、330…タッチパネル、402…メイン制御部、409…ジェスチャー認識部、420…タッチパネルイベント検知部
Claims (12)
- UI部品を操作平面に表示する表示手段と、
ユーザが指で前記操作平面をタッチしたタッチ位置を検出する位置検出手段と、
前記操作平面をタッチしている指を備える手の形状を取得する画像取得手段と、
前記手の形状から、該手を前記操作平面に投影した手領域を認識するジェスチャー認識手段と、
前記位置検出手段で検出した前記タッチ位置と前記表示手段が表示する前記UI部品の位置とから、当該UI部品へのタッチ操作を検出するイベント検知手段と、
前記ジェスチャー認識手段で認識した前記手領域と前記イベント検知手段で検出した前記タッチ操作とに応じて、前記UI部品への操作内容を判定する判定手段と、を備えることを特徴とする、
入力システム。 - 前記ジェスチャー認識手段は、認識した前記手領域から指の本数を検出し、
前記判定手段は、前記ジェスチャー認識手段で検出した前記指の本数と前記イベント検知手段で検出した前記タッチ操作とに応じて、前記UI部品への操作内容を判定することを特徴とする、
請求項1記載の入力システム。 - 前記判定手段は、前記位置検出手段が1つの前記タッチ位置を検出する場合に、前記ジェスチャー認識手段で検出した前記指の数が1本の場合と1本ではない場合とで、異なる操作内容の判定を行うことを特徴とする、
請求項2記載の入力システム。 - 前記画像取得手段は、前記手に接続される腕の形状を取得し、
前記ジェスチャー認識手段は、前記腕の形状から、該腕が前記操作平面に侵入する侵入点を検出し、
前記判定手段は、前記位置検出手段が検出した前記タッチ位置の数、前記ジェスチャー認識手段が認識した手領域の数、前記侵入点の数、及び前記侵入点の位置に応じて操作内容の判定を行うことを特徴とする、
請求項2記載の入力システム。 - 前記判定手段は、前記位置検出手段が2つの前記タッチ位置を検出し、且つ前記ジェスチャー認識手段が形状を認識した腕の数が1である場合に、1人のユーザによる片手マルチタッチであると判断することを特徴とする、
請求項4記載の入力システム。 - 前記判定手段は、前記位置検出手段が2つの前記タッチ位置を検出し、且つ前記ジェスチャー認識手段が形状を認識した腕の数が2である場合に、2つの前記侵入点の位置が前記操作平面の同一辺上にあるか否かに応じて、異なる操作内容の判定を行うことを特徴とする、
請求項4又は5記載の入力システム。 - 前記位置検出手段で検出した前記タッチ位置と、当該タッチ位置にタッチしている指を備える手の手領域とを関連付ける関連付け手段を備えており、
前記判定手段は、前記手領域に関連付けられた前記タッチ位置の数と、該手に接続される腕の前記侵入点の位置に応じて操作内容の判定を行うことを特徴とする、
請求項4〜6のいずれか1項記載の入力システム。 - 前記関連付け手段は、前記位置検出手段が複数の前記タッチ位置を検出した場合に、各タッチ位置と手領域とを関連付けし、
前記判定手段は、前記ジェスチャー認識手段で認識した手が右手、左手のいずれであるかと、前記侵入点の位置とに応じて、前記操作内容を判定することを特徴とする、
請求項7記載の入力システム。 - 前記画像取得手段は、前記腕が接続する人体の形状を取得し、
前記位置検出手段は、前記人体に接続される手の手形状に応じて前記操作内容を判定することを特徴とする、
請求項1〜8のいずれか1項記載の入力システム。 - UI部品を操作平面に表示する表示手段と、ユーザが指で前記操作平面をタッチしたタッチ位置を検出する位置検出手段と、前記操作平面をタッチしている指を備える手の形状を取得する画像取得手段と、を備えたシステムにより実行される方法であって
前記手の形状から、該手を前記操作平面に投影した手領域を認識し、
前記位置検出手段で検出した前記タッチ位置と前記表示手段が表示する前記UI部品の位置とから、当該UI部品へのタッチ操作を検出し、
前記手領域と前記タッチ操作とに応じて、前記UI部品への操作内容を判定することを特徴とする、
入力方法。 - UI部品を操作平面に表示する表示手段と、ユーザが指で前記操作平面をタッチしたタッチ位置を検出する位置検出手段と、前記操作平面をタッチしている指を備える手の形状を取得する画像取得手段と、を備えたコンピュータを、
前記手の形状から、該手を前記操作平面に投影した手領域を認識するジェスチャー認識手段、
前記位置検出手段で検出した前記タッチ位置と前記表示手段が表示する前記UI部品の位置とから、当該UI部品へのタッチ操作を検出するイベント検知手段、
前記ジェスチャー認識手段で認識した前記手領域と前記イベント検知手段で検出した前記タッチ操作とに応じて、前記UI部品への操作内容を判定する判定手段、
として機能させるための制御用プログラム。 - 請求項11記載の制御用プログラムを記憶するコンピュータで読み取り可能な記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016044973A JP2017162126A (ja) | 2016-03-08 | 2016-03-08 | 入力システム、入力方法、制御用プログラム、及び記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016044973A JP2017162126A (ja) | 2016-03-08 | 2016-03-08 | 入力システム、入力方法、制御用プログラム、及び記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017162126A true JP2017162126A (ja) | 2017-09-14 |
Family
ID=59857818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016044973A Pending JP2017162126A (ja) | 2016-03-08 | 2016-03-08 | 入力システム、入力方法、制御用プログラム、及び記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017162126A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020170851A1 (ja) * | 2019-02-22 | 2020-08-27 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにプログラム |
US11073949B2 (en) | 2019-02-14 | 2021-07-27 | Seiko Epson Corporation | Display method, display device, and interactive projector configured to receive an operation to an operation surface by a hand of a user |
WO2022254693A1 (ja) | 2021-06-04 | 2022-12-08 | 日産自動車株式会社 | 操作検出装置及び操作検出方法 |
-
2016
- 2016-03-08 JP JP2016044973A patent/JP2017162126A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11073949B2 (en) | 2019-02-14 | 2021-07-27 | Seiko Epson Corporation | Display method, display device, and interactive projector configured to receive an operation to an operation surface by a hand of a user |
WO2020170851A1 (ja) * | 2019-02-22 | 2020-08-27 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにプログラム |
US11789543B2 (en) | 2019-02-22 | 2023-10-17 | Sony Group Corporation | Information processing apparatus and information processing method |
WO2022254693A1 (ja) | 2021-06-04 | 2022-12-08 | 日産自動車株式会社 | 操作検出装置及び操作検出方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10310675B2 (en) | User interface apparatus and control method | |
TWI559174B (zh) | 以手勢爲基礎之三維影像操控技術 | |
US20120169671A1 (en) | Multi-touch input apparatus and its interface method using data fusion of a single touch sensor pad and an imaging sensor | |
TW583589B (en) | Passive optical mouse using image sensor with optical dual mode capability | |
JP6618276B2 (ja) | 情報処理装置、その制御方法、プログラム、及び記憶媒体 | |
JP6344530B2 (ja) | 入力装置、入力方法、及びプログラム | |
JP2016103137A (ja) | ユーザインタフェース装置、画像処理装置及び制御用プログラム | |
JP6381361B2 (ja) | データ処理装置、データ処理システム、データ処理装置の制御方法、並びにプログラム | |
US10254893B2 (en) | Operating apparatus, control method therefor, and storage medium storing program | |
JP2009251702A (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
JP2017162126A (ja) | 入力システム、入力方法、制御用プログラム、及び記憶媒体 | |
TWI499938B (zh) | 觸控系統 | |
JP2018112894A (ja) | システムおよび制御方法 | |
JP6746419B2 (ja) | 情報処理装置、及びその制御方法ならびにコンピュータプログラム | |
JP6555958B2 (ja) | 情報処理装置、その制御方法、プログラム、および記憶媒体 | |
JP5558899B2 (ja) | 情報処理装置、その処理方法及びプログラム | |
JP6643825B2 (ja) | 装置及び方法 | |
JP6452658B2 (ja) | 情報処理装置、およびその制御方法ならびにプログラム | |
JP6618301B2 (ja) | 情報処理装置、その制御方法、プログラム、及び記憶媒体 | |
JP2018063555A (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP2017117372A (ja) | 操作装置とその制御方法、及びプログラム | |
JP3201596U (ja) | 操作入力装置 | |
JP6624861B2 (ja) | 画像処理装置、制御方法およびプログラム | |
JP2018116360A (ja) | 手入力装置、手入力装置の制御方法 | |
JP2018181169A (ja) | 情報処理装置、及び、情報処理装置の制御方法、コンピュータプログラム、記憶媒体 |