JP2017117372A - 操作装置とその制御方法、及びプログラム - Google Patents
操作装置とその制御方法、及びプログラム Download PDFInfo
- Publication number
- JP2017117372A JP2017117372A JP2015254869A JP2015254869A JP2017117372A JP 2017117372 A JP2017117372 A JP 2017117372A JP 2015254869 A JP2015254869 A JP 2015254869A JP 2015254869 A JP2015254869 A JP 2015254869A JP 2017117372 A JP2017117372 A JP 2017117372A
- Authority
- JP
- Japan
- Prior art keywords
- user
- coordinates
- operation surface
- unit
- touch
- 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
Images
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
【課題】3次元位置計測を用いて検出した指先座標を用いて、平面へのタッチ検出を行う場合のタッチ操作を高精度に検出する技術を提供する。【解決手段】操作面上を撮影して第1の画像データを取得し、その取得した第1の画像データに基づいて操作面上のユーザによるジェスチャーを認識する。また操作面上でのユーザの操作によりタッチされた操作面の位置の座標を取得し、認識したユーザのジェスチャーと、ユーザの操作によりタッチされた位置の座標とに基づいて、そのユーザの操作によりタッチされた操作面上の位置の座標を特定する。【選択図】図10
Description
本発明は、操作装置とその制御方法、及びプログラムに関する。
可視光カメラや赤外線カメラ、3次元距離センサなどを用いてユーザの手指を検出し、その動きや位置に応じて機器を制御するジェスチャー操作技術を搭載したシステムが提案されている。例えば、特許文献1に記載のシステムは、ステレオカメラを用いて計測したユーザの手指の3次元座標に応じて、その手指により選択操作が行われている箇所を示す画像を***作対象物にプロジェクタで表示する。これにより、ユーザは、プロジェクタで表示されたUI画像を操作することが可能になる。
しかしながら、可視光カメラや赤外線カメラ、3次元距離センサなどを用いてユーザの手指の3次元座標を検出する場合、その3次元位置の精度には限界がある。そのため、UI画面に対してより細かいタッチ操作を行いたい場合、ユーザがタッチしたつもりではなくてもタッチされたと判断され、ユーザが意図しない動作が行われる場合もあるという課題があった。
本発明の目的は、上記従来技術の課題を解決することにある。
本発明の特徴は、ユーザによるタッチ操作を、より高精度に検出する技術を提供することにある。
上記目的を達成するために本発明の一態様に係る操作装置は以下のような構成を備える。即ち、
操作面上を撮影して第1の画像データを取得する画像取得手段と、
前記第1の画像データに基づいて前記操作面上のユーザによるジェスチャーを認識する認識手段と、
前記操作面上でのユーザの操作によりタッチされた前記操作面の位置の座標を取得する取得手段と、
前記認識手段が認識したユーザのジェスチャーと、前記取得手段により取得された前記ユーザの操作によりタッチされた位置の座標とに基づいて、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定する制御手段と、を有することを特徴とする。
操作面上を撮影して第1の画像データを取得する画像取得手段と、
前記第1の画像データに基づいて前記操作面上のユーザによるジェスチャーを認識する認識手段と、
前記操作面上でのユーザの操作によりタッチされた前記操作面の位置の座標を取得する取得手段と、
前記認識手段が認識したユーザのジェスチャーと、前記取得手段により取得された前記ユーザの操作によりタッチされた位置の座標とに基づいて、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定する制御手段と、を有することを特徴とする。
本発明によれば、ユーザによるタッチ操作を、より高精度に検出できるという効果がある。
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。尚、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
本発明の実施形態に係るカメラスキャナが含まれるネットワーク構成を示す図。
実施形態に係るカメラスキャナの構成を説明する図。
実施形態に係るカメラスキャナのコントローラ部のハードウェア構成例を説明する図。
実施形態に係るカメラスキャナのコントローラ部が有する機能を説明する機能ブロック図。
実施形態に係る距離画像取得部の処理を説明するフローチャート。
パターン投射方式による距離画像の計測原理を説明するための図。
実施形態に係るジェスチャー認識部の処理を説明するフローチャート。
実施形態における指先検出処理の方法を模式的に表した図。
実施形態に係るタッチパネルイベント検知部の処理を説明するフローチャート。
実施形態に係るメイン制御部の処理を説明するフローチャート。
実施形態に係るジェスチャー認識部とタッチパネルイベント検知部のそれぞれでタッチイベントが発生するタイミングを説明する図。
他の実施形態に係るメイン制御部の処理を説明するフローチャート。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。本実施形態では、本発明に係る操作装置の一例として、静電容量式タッチパネルセンサと、従来の3次元距離センサとを用いて、操作面上に投影されたオブジェクトに対するユーザのタッチ操作を検出するカメラスキャナを例に説明する。
図1は、本発明の実施形態に係るカメラスキャナ101が含まれるネットワーク構成を示す図である。
図1に示すように、カメラスキャナ101は、イーサネット(登録商標)等のネットワーク104を介してホストコンピュータ102及びプリンタ103に接続されている。この構成において、ホストコンピュータ102からの指示により、カメラスキャナ101が原稿の画像を読み取るスキャン機能や、その読み取って得られた画像データをプリンタ103に送信して印刷させるプリント機能を実行できる。またホストコンピュータ102を介さずに、直接、ユーザがカメラスキャナ101へ指示することにより、カメラスキャナ101による原稿の読み取りと、その読み取って得られた画像データをプリンタ103に送信して印刷させることも可能である。
図2は、実施形態に係るカメラスキャナ101の構成を説明する図である。
図2(A)に示すように、カメラスキャナ101は、コントローラ部201、カメラ部202、腕部203、プロジェクタ207、センサ部208を含む。カメラスキャナの本体であるコントローラ部201と、撮像を行うためのカメラ部202、プロジェクタ207及びセンサ部208は、腕部203により連結されている。腕部203は関節を用いて曲げ伸ばしが可能である。
また図2(A)において、カメラスキャナ101が設置されている操作面204も示している。カメラ部202及びセンサ部208のレンズは、この操作面204方向に向けられており、カメラ部202は、破線で囲まれた読み取り領域205内の画像を読み取ることができる。図2(A)の例では、原稿206は読み取り領域205内に置かれているため、このカメラスキャナ101により読み取ることができる。
ここでカメラ部202は、単一の解像度で画像を撮像するものとしてもよいが、高解像度での撮像と低解像度での撮像が可能なものとすることが好ましい。また操作面204内にはターンテーブル209を設けてもよい。このターンテーブル209は、コントローラ部201からの指示によって回転することが可能であり、ターンテーブル209上に置かれた物体とカメラ部202との角度を変えることができる。また操作面204内にタッチパネルセンサ330が設けられているものとする。このタッチパネルセンサ330は、ユーザが手で触れたり、ペンで圧力を加える等により、触れられた位置の情報を感知して座標情報としてコントローラ部201に出力することができる。タッチパネルセンサ330は、ユーザによりタッチされたこと、及びそのタッチ位置を検出可能なデバイスであり、表示機能を有していない。尚、図2に示されていないが、カメラスキャナ101は、スピーカ340(図3)を更に含むこともできる。更に、周囲の環境情報を収集するための人感センサ、照度センサ、加速度センサなどの各種センサデバイスを含むこともできる。
図2(B)は、カメラスキャナ101における座標系を説明する図である。カメラスキャナ101では、各ハードウェアデバイスに対して、カメラの座標系、センサの座標系、プロジェクタの座標系という座標系が定義される。これらはカメラ部202及びセンサ部208が撮像する画像平面、或いはプロジェクタ207が投影する画像平面をそれぞれXY平面とし、各画像平面に直交した方向をZ方向として定義したものである。更に、これらの独立した座標系の3次元データを統一的に扱えるようにするために、操作面204を含む平面をXY平面とし、このXY平面から上方に垂直な向きをZ軸とする直交座標系を定義する。
座標系を変換する場合の例として、図2(C)に直交座標系と、カメラ部202を中心としたカメラ座標系を用いて表現された空間と、カメラ部202が撮像する画像平面との関係を示す。直交座標系における3次元点P[X,Y,Z]は、(1)式によって、カメラの座標系における3次元点Pc[Xc,Yc,Zc]へ変換できる。
[Xc,Yc,Zc]T=[Rc|tc][X,Y,Z,1]T …(1)
ここで、Rc及びtcは、直交座標系に対するカメラ部202の姿勢(回転)と位置(並進)によって求まる外部パラメータによって構成され、Rcを3×3の回転行列、tcを並進ベクトルと呼ぶ。逆に、カメラの座標系で定義された3次元点は(2)式によって、直交座標系への変換することができる。
ここで、Rc及びtcは、直交座標系に対するカメラ部202の姿勢(回転)と位置(並進)によって求まる外部パラメータによって構成され、Rcを3×3の回転行列、tcを並進ベクトルと呼ぶ。逆に、カメラの座標系で定義された3次元点は(2)式によって、直交座標系への変換することができる。
[X,Y,Z]T=[Rc−1|−Rc−1tc][Xc,Yc,Zc,1]T …(2)
更に、カメラ部202で撮影される2次元のカメラ画像平面は、カメラ部202によって3次元空間中の3次元情報が2次元情報に変換されたものである。即ち、カメラ座標系上での3次元点Pc[Xc,Yc,Zc]を、(3)式によってカメラ画像平面での2次元座標pc[xp,yp]に透視投影変換することができる。
更に、カメラ部202で撮影される2次元のカメラ画像平面は、カメラ部202によって3次元空間中の3次元情報が2次元情報に変換されたものである。即ち、カメラ座標系上での3次元点Pc[Xc,Yc,Zc]を、(3)式によってカメラ画像平面での2次元座標pc[xp,yp]に透視投影変換することができる。
λ[xp、yp、1]T=A[Xc,Yc,Zc]T …(3)
ここで、Aは、カメラ部202の内部パラメータと呼ばれ、焦点距離と画像中心などで表現される3×3の行列である。
ここで、Aは、カメラ部202の内部パラメータと呼ばれ、焦点距離と画像中心などで表現される3×3の行列である。
以上のように、(1)式と(3)式を用いることで、直交座標系で表された3次元点群を、カメラ座標系での3次元点群座標やカメラ画像平面に変換することができる。尚、各ハードウェアデバイスの内部パラメータ及び直交座標系に対する位置姿勢(外部パラメータ)は、公知のキャリブレーション手法により予めキャリブレーションされているものとする。以後、特に断りがなく3次元点群と表記した場合は、直交座標系における3次元データを表しているものとする。
図3は、実施形態に係るカメラスキャナ101のコントローラ部201のハードウェア構成例を説明する図である。
コントローラ部201は、CPU302、RAM303、ROM304、HDD305、ネットワークI/F306、画像処理プロセッサ307、カメラI/F308、ディスプレイコントローラ309、シリアルI/F310を含む。更に、オーディオコントローラ311及びUSBコントローラ312を含み、これらはシステムバス301を介して相互に接続されている。CPU302は、コントローラ部201全体の動作を制御する中央演算装置である。RAM303は揮発性メモリである。ROM304は不揮発性メモリであり、CPU302の起動用プログラムを格納している。HDD305はRAM303と比較して大容量なハードディスクドライブで、HDD305にはコントローラ部201が実行するカメラスキャナ101の制御用プログラムやOS等が格納されている。CPU302は電源オン等の起動時、ROM304に格納されている起動用プログラムを実行し、HDD305に格納されている制御用プログラムをRAM303に展開する。そしてCPU302は、RAM303に展開した制御用プログラムを実行して、このコントローラ部201による制御処理を実行する。またCPU302は、制御用プログラムによる動作に用いるデータもRAM303に格納して読み書きを行う。HDD305は更に、制御用プログラムによる動作に必要な各種設定や、また、カメラ部202から入力された画像データを格納することができ、CPU302によって読み書きされる。またCPU302はネットワークI/F306を介してネットワーク104上の他の機器との通信を行う。
画像処理プロセッサ307は、RAM303に格納された画像データを読み出して処理し、またRAM303へ書き戻す。尚、画像処理プロセッサ307が実行する画像処理は、回転、変倍、色変換等を含む。カメラI/F308は、カメラ部202及びセンサ部208と接続され、CPU302からの指示に応じてカメラ部202から画像データを、センサ部208から距離画像データを取得してRAM303へ書き込む。またカメラI/F308は、CPU302からの制御コマンドをカメラ部202及びセンサ部208へ送信し、カメラ部202及びセンサ部208の設定を行う。
また、コントローラ部201は、ディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311及びUSBコントローラ312のうち少なくとも1つを更に含むことができる。ディスプレイコントローラ309は、CPU302の指示に応じて表示部への画像データの表示を制御する。ここでは、ディスプレイコントローラ309は、短焦点プロジェクタ207に接続されている。
シリアルI/F310はシリアル信号の入出力を行う。ここでは、シリアルI/F310はターンテーブル210に接続され、CPU302からの回転開始・終了及び回転角度の指示をターンテーブル209へ送信する。またシリアルI/F310は、タッチパネルセンサ330に接続され、CPU302はタッチパネルセンサ330が押下されたときに、シリアルI/F310を介して、その押下された位置の座標情報を取得する。またCPU302はシリアルI/F310を介して、タッチパネルセンサ330が接続されているかどうかを判定する。オーディオコントローラ311はスピーカ340に接続され、CPU302の指示に応じて音声データをアナログ音声信号に変換し、スピーカ340を通じて音声を出力する。USBコントローラ312は、CPU302の指示に応じて外付けのUSBデバイスの制御を行う。ここでは、USBコントローラ312はUSBメモリやSDカードなどの外部メモリ350に接続され、CPU302は、このUSBコントローラ312を介して外部メモリ350へのデータの読み書きを行う。尚、センサ部208の、赤外線パターン投射部361、赤外線カメラ362、RGBカメラ(可視光カメラ)363に関しては、図5、図6を参照して後述する。尚、ターンテーブル209は、後述する距離画像データを取得する際に使用されるが、プロジェクタ207により操作面204上の画像を投影して、ユーザが、その画像を指で指示する場合には、操作面204から取り除かれているものとする。
図4は、実施形態に係るカメラスキャナ101のコントローラ部201が有する機能を説明する機能ブロック図である。この機能は、CPU302がHDD305からRAM303に展開したプログラムを実行することにより達成される。
メイン制御部402は、この機能を達成する各モジュールを制御する。画像取得部416は、画像データの入力処理を行うモジュールであり、カメラ画像取得部407、距離画像取得部408を有している。カメラ画像取得部407は、カメラI/F308を介してカメラ部202が出力する画像データを取得してRAM303へ格納する。距離画像取得部408は、カメラI/F308を介してセンサ部208が出力する距離画像データを取得してRAM303に格納する。距離画像取得部408の処理の詳細は図5及び図6を参照して後述する。
認識処理部417は、カメラ画像取得部407、距離画像取得部408が取得する画像データから、操作面204上の物体の動きを検知して認識するモジュールである。この認識処理部417は、ジェスチャー認識部409、物体検知部410、及びタッチパネルイベント検知部420を有している。ジェスチャー認識部409は、画像取得部416から出力される、操作面204上の画像を取得しており、ユーザの指によるタッチなどのジェスチャーを検知するとメイン制御部402へ通知する。ジェスチャー認識部409の処理の詳細は図7及び図8を参照して後述する。物体検知部410は、画像取得部416から操作面204を撮像した画像データを取得し、操作面204に物体が置かれたタイミング、物体が置かれて静止したタイミング、或いは物体が取り除かれたタイミングなどを検知する。タッチパネルイベント検知部420は、ユーザが指等でタッチパネルセンサ330に接触すると、シリアルI/F310を介して、指等が接触した位置の座標情報を受信し、その座標情報をタッチパネルイベントとしてメイン制御部402に通知する。
画像処理部418は、カメラ部202及びセンサ部208から取得した画像データを画像処理プロセッサ307で解析するために用いられ、各種画像処理モジュールを有している。前述のジェスチャー認識部409や物体検知部410は、画像処理部418の各種画像処理モジュールを利用して実行される。
ユーザインターフェイス部403は、メイン制御部402からの要求を受け、メッセージやボタン等のGUI部品を生成し、その生成したGUI部品の表示を、表示部406に表示するように要求する。表示部406はディスプレイコントローラ309を介して、プロジェクタ207により、要求されたGUI部品を表示させる。前述したようにプロジェクタ207は、操作面204に向けて設置されているため、その操作面204にGUI部品を投射して表示する。またユーザインターフェイス部403は、ジェスチャー認識部409が認識したタッチ等のジェスチャー操作、及びタッチパネルイベント検知部420が検知したタッチ操作、更に、それらタッチされた位置の座標情報をメイン制御部402経由で受信する。そして、ユーザインターフェイス部403は、描画中の操作画面の内容と、その座標情報とを対応付けて操作内容(押下されたボタン等)を判定する。そして、その操作内容をメイン制御部402へ通知することにより、操作者による操作を受け付ける。
ネットワーク通信部404は、ネットワークI/F306を介して、ネットワーク104上の他の機器とTCP/IPによる通信を行う。データ管理部405は、制御用プログラム401の実行により生成した作業データなどの様々なデータをHDD305上の所定の領域へ保存し、管理する。
次に図5及び図6を参照して、センサ部208の距離画像取得部408の処理及び機能について説明する。センサ部208は、赤外線によるパターン投射方式の画像センサである。赤外線パターン投射部361は、対象物に、人の目には不可視である赤外線によって3次元測定パターンを投射する。赤外線カメラ362は、その対象物に投射した3次元測定パターンを読み取る。RGBカメラ363は、人の目に見える可視光をRGB信号で撮影する。
次に、距離画像取得部408の処理を図5のフローチャートを参照して説明する。また図6(A)〜(C)は、パターン投射方式による距離画像の計測原理を説明するための図である。
図5は、実施形態に係る距離画像取得部408の処理を説明するフローチャートである。尚、この処理は、CPU302が距離画像取得部408として機能することにより達成され、この処理を実行するプログラムはHDD305に格納されており、CPU302がそのプログラムをRAM304に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はCPU302として説明する。
まずS501でCPU302は、図6(A)に示すように、赤外線パターン投射部361を用いて、赤外線で3次元形状測定パターン622を対象物621に投射させる。次にS502に進みCPU302は、RGBカメラ363を用いて対象物を撮影したRGB画像データ623及び、赤外線カメラ362を用いてS501で投射した3次元測定パターン622を撮影した赤外線カメラ画像データ624(図6(B))を取得する。尚、赤外線カメラ362とRGBカメラ363とは設置位置が互いに異なるため、図6(B)に示すように、それぞれで撮影される2つのRGBカメラ画像データ623及び赤外線カメラ画像データ624の撮影領域が異なる。そこでS503に進みCPU302は、赤外線カメラ362の座標系からRGBカメラ363の座標系への座標系変換を行って、赤外線カメラ画像データ624をRGBカメラ画像データ623の座標系に合わせる。尚、赤外線カメラ362とRGBカメラ363の相対位置や、それぞれの内部パラメータは、事前のキャリブレーション処理により既知であるとする。
次にS504に進みCPU302は、図6(C)に示すように、3次元測定パターン622とS503で座標変換を行った赤外線カメラ画像データ624との間の対応点626を抽出する。例えば、赤外線カメラ画像データ624上の1点を3次元形状測定パターン622上から探索して、同一の点が検出された場合に対応付けを行う。或いは、赤外線カメラ画像データ624の画素の周辺のパターンを3次元形状測定パターン622から探索し、一番類似度が高い部分と対応付けてもよい。次にS505に進みCPU302は、赤外線パターン投射部361と赤外線カメラ362とを結ぶ直線を基線625として三角測量の原理を用いて計算することにより、赤外線カメラ362から対応点626までの距離を算出する。そしてCPU320は、対応付けができた画素については赤外線カメラ362からの距離を算出して画素値として保存し、対応付けができなかった画素については、距離の計測ができなかった部分として無効値を保存する。この処理をS503で座標変換を行った赤外線カメラ画像データ624の全画素に対して行うことで、各画素に距離が入った距離画像データを生成する。そしてS506に進みCPU302は、距離画像データの各画素に、RGBカメラ画像データ623のRGB値を保存することにより、1画素につきR、G、B、及び距離の4つの値を持つ距離画像データを生成する。ここで生成した距離画像データは、センサ部208のRGBカメラ363で定義されたセンサ座標系が基準となっている。そこでS507に進みCPU302は、図2(B)を参照して上述したように、センサ座標系として得られた距離画像データを、操作面204の直交座標系における3次元点群に変換して、この処理を終了する。尚、これ以後、特に指定がなく3次元点群と表記した場合は、直交座標系における3次元点群を示すものとする。
尚、実施形態では、上述したように、センサ部208として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサを用いることも可能である。例えば、2つのRGBカメラでステレオ立体視を行うステレオ方式や、レーザ光の飛行時間を検出することで距離を測定するTOF(Time of Flight)方式など、他の計測手段を用いても構わない。
図7は、実施形態に係るジェスチャー認識部409の処理を説明するフローチャートである。尚、この処理は、CPU302がジェスチャー認識部409として機能することにより達成され、この処理を実行するプログラムはHDD305に格納されており、CPU302がそのプログラムをRAM304に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はCPU302として説明する。
まずS701でCPU302は、ジェスチャー認識処理の初期化処理を行う。この初期化処理では、CPU302は、距離画像取得部408から、1フレームの距離画像データを取得する。ここで、この処理の開始時は、操作面204上に対象物が置かれていない状態であるため、初期状態として操作面204の平面を認識する。つまり、取得した距離画像データから最も広い平面を抽出し、その位置と法線ベクトル(以降、操作面204の平面パラメータと呼ぶ)を算出してRAM303に保存する。次にS702でCPU302は、S721〜S722で示す、操作面204上に存在する物体の3次元点群を取得する。その際、S721では、距離画像取得部408から、1フレームの距離画像データと3次元点群を取得する。次にS722でCPU302は、操作面204の平面パラメータを用いて、その取得した3次元点群から操作面204を含む平面にある点群を除去する。
次にS703でCPU302は、S731〜S734で示す、取得した3次元点群から操作者の手の形状及び指先を検出する処理を行う。ここで、指先検出処理の方法を模式的に表した図8(A)〜(C)を参照して説明する。
まずS731でCPU302は、S702で取得した3次元点群から、操作面204を含む平面から所定の高さ以上にある、肌色の3次元点群を抽出することで、手の3次元点群を得る。図8(A)の861は抽出した手の3次元点群を表している。次にS732に進みCPU302は、その抽出した手の3次元点群を、操作面204の平面に射影した2次元画像データを生成して、その手の外形を検出する。図8(A)の862は、この操作面204に投影した3次元点群を表している。この投影は、点群の各座標を、操作面204の平面パラメータを用いて投影すればよい。また図8(B)に示すように、投影した3次元点群から、xy座標の値だけを取り出せば、Z軸方向から見た2次元画像863として扱うことができる。このとき、手の3次元点群の各点が、操作面204に投影した2次元画像863の各座標のどれに対応するかを、記憶しておくものとする。次にS733に進みCPU302は、その検出した手の外形上の各点について、その点での外形の曲率を算出し、その算出した曲率が所定値より小さい点を指先として検出する。
図8(C)は、手の外形の曲率から指先を検出する方法を模式的に表した図である。864は、操作面204に投影された2次元画像863の外形を表す点の一部を表している。ここで、864で示す外形を表す点のうち、隣り合う5個の点を含むように円を描くことを考える。円865,867が、その例である。これら円を、全ての外形の点に対して順に描き、その直径(例えば866,868)が所定の値より小さい(曲率が小さい)ことを以て指先とする。この例では隣り合う5個の点としたが、その数は5個に限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。そしてS734に進みCPU302は、その検出した指先の個数及び各指先の座標を算出する。この時、前述したように、操作面204に投影した2次元画像の各点と、手の3次元点群の各点の対応関係を記憶しているため、各指先の3次元座標を得ることができる。
今回は、3次元点群から2次元画像に投影した画像データから指先を検出する方法を説明したが、指先検出の対象とする画像データはこれに限定されるものではない。例えば、距離画像の背景差分や、RGB画像データの肌色領域から手の領域を抽出し、上に述べたのと同様の方法(外形の曲率計算等)で、手の領域から指先を検出してもよい。この場合、検出結果である指先の座標は、RGB画像データや距離画像といった、2次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の3次元座標に変換する必要がある。この時、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
次にS704に進みCPU302は、S741〜S746に示す、検出した手の形状及び指先から、ジェスチャー判定処理を行う。まずS741でCPU302は、S703で検出した指先が1つかどうか判定する。ここで指先が1つでないと判定するとS746へ進んでジェスチャーなしと判定してS705に進む。またS741で、検出した指先が1つと判定するとS742へ進みCPU302は、検出した指先と操作面204を含む平面との距離を算出する。次にS743に進みCPU302は、S742で算出した距離が微小な所定値以下であるかどうかを判定し、そうであればS744へ進みCPU302は、指先が操作面204へタッチしたタッチジェスチャーありと判定してS705に進む。一方、S743で、S742で算出した距離が所定値以下で無いと判定するとS745へ進み、CPU302は、指先が移動したジェスチャー(タッチはしていないが指先が操作面204の上方に存在するジェスチャー)と判定してS705に進む。S705でCPU302は、判定したジェスチャーをメイン制御部402へ通知し、再びS702へ戻ってジェスチャー認識処理を繰り返す。
尚、ここでは一本指でのジェスチャー認識について説明を行ったが、複数の指或いは複数の手、或いは腕や体全体でのジェスチャー認識に応用することも可能である。
図9は、実施形態に係るタッチパネルイベント検知部420の処理を説明するフローチャートである。尚、この処理は、CPU302がタッチパネルイベント検知部420として機能することにより達成され、この処理を実行するプログラムはHDD305に格納されており、CPU302がそのプログラムをRAM304に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はCPU302として説明する。
この処理は、ユーザが指等でタッチパネルセンサ330に接触した際、シリアルI/F310から指等が接触したタッチ座標を受信することにより開始される。まずS901でCPU302は、タッチ座標を受信したかどうか判定する。ここでタッチ座標を受信したと判定した場合はS902へ移行し、受信していないと判定した場合はS901へ戻ってタッチ座標を受信したかどうかを判定する。S902でCPU302は、受信した座標情報をタッチパネルイベントとしてメイン制御部402に通知してS901に戻る。このような処理を繰り返して、タッチパネルイベント検知部420は、タッチパネルイベントをメイン制御部402に対して通知し続ける。
次に図10及び図11を参照して、2種類の異なるタッチ検出手段を併用するために、メイン制御部402が実行するタッチイベントの処理を説明する。尚、実施形態では、操作面204を指先で触るタッチの動作を例に説明する。
まず図11を参照して、ジェスチャー認識部409とタッチパネルイベント検知部420のそれぞれで、タッチイベントが発生するタイミングについて説明する。
図11(A)は、ジェスチャー認識部409がタッチイベントを検出する瞬間を真横から見た様子を模式的に表している。また図11(B)は、タッチパネルイベント検知部420がタッチイベントを検出する瞬間を真横から見た様子を模式的に表している。
距離1103は、ジェスチャー認識部409がタッチを認識するための高さの閾値、つまり、図7のS743で用いている、指先がタッチしたかどうかを判定するための微小な距離に相当する。仮想的に引いた線1102より下に手1101の指先が下がったと判断したときに、ジェスチャー認識部409はタッチイベントを通知する。この距離1103は、センサ部208が取得する距離画像データの距離分解能に依存している。近年流通している安価な画像センサや、ステレオカメラの距離計測精度を想定すると、距離1103の値は、数mm〜数10mm程度に設定するのが妥当である。
一方、図11(B)の距離1105は、タッチパネルイベント検知部420がタッチを認識するための高さの閾値を表している。つまり、仮想的な線1104より下に手1101の指先が下がったタイミングで、タッチパネルセンサ330は、その指先でタッチされた座標を検出できる。一般的な静電容量式のタッチパネルセンサを想定すると、この距離1105は、数mm以内に設定するのが妥当である。また、抵抗膜式タッチパネルセンサを用いた場合は、距離1105は0mmとなり、完全に接触しなければタッチ位置を検出することはできない。
このように、2種類の異なるタッチ検出手段によるタッチ検出を考えた時、一回のタッチ動作でも、ジェスチャー認識部409とタッチパネルイベント検知部420で、タッチイベントが出力されるタイミングが異なる。更に、ジェスチャー認識部409のイベント発生のタイミングは、センサ部208が取得する距離画像データのフレームレートに依存している。
メイン制御部402は、一回のタッチ動作に対する同じ意味のイベントを、上記のように非同期で2回受信する。この2回受信するイベントの内、ジェスチャー認識部409から受信するイベントは、タッチパネルセンサ330からイベントが出力されない場合でも、必ず受信する。例えば、タッチパネルセンサ330に厚手の紙等が置かれている場合、紙の上をユーザがタッチしても、タッチパネルセンサ330はイベントを発行できないことが考えられる。一方、タッチ位置の精度は、タッチの高さ閾値が、より操作面204に近い位置に設定できるタッチパネルセンサ330の方が高い。そこで実施形態では、タッチパネルイベント検知部409からタッチイベントが出力される場合は、タッチパネルイベント検知部420から受信したタッチイベントの座標をタッチイベントの座標として用いる。また、タッチイベント発生のトリガーに、ジェスチャー認識部409から受信したタッチイベントを用いるようにしている。
この方法を実現するための処理の手順を、図10のフローチャートを参照して説明する。
図10は、実施形態に係るメイン制御部402の処理を説明するフローチャートである。尚、この処理は、CPU302がメイン制御部402として機能することにより達成され、この処理を実行するプログラムはHDD305に格納されており、CPU302がそのプログラムをRAM304に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はCPU302として説明する。
まずS1001でCPU302は、ジェスチャー認識部409に対して処理開始指示を行う。この指示を受け、ジェスチャー認識部409は、上述した図7のフローチャートで示す処理を実行する。次にS1002に進みCPU302は、タッチパネルイベント検知部420に対して処理開始指示を行う。この指示を受けるとタッチパネルイベント検知部420は、上述した図9のフローチャートで示す処理を実行する。
次にS1003に進みCPU302は、ジェスチャー認識部409より、タッチイベントの通知があったか否かを判定する。ここで通知があったと判定するとS1004へ移行し、そうでないときはS1006へ移行する。S1004でCPU302は、タッチイベントが発生したかどうかを記録しておくためのRAM303のフラグ(タッチイベントフラグ)をオンに設定する。この設定に基づいて後の処理でタッチイベント処理を行うかどうかの決定をするため、ジェスチャー認識部409から受信したタッチイベントを、タッチイベント処理のトリガーとすることができる。次にS1005に進みCPU302は、現在の時刻、即ち、ジェスチャー認識部409よりタッチイベントが通知された時刻をRAM303に記憶する。次にS1006に進みCPU302は、タッチパネルイベント検知部420からタッチイベントの通知があったか否かを判定する。ここで通知があったと判定するとS1007へ移行し、そうでないときはS1008へ移行する。S1007でCPU302は、後のタッチイベント処理で使うために、タッチパネルイベント検知部420から受信したタッチイベントの座標情報(タッチ座標)をRAM303に記録してS1008に進む。S1008でCPU302は、タッチイベントフラグがオンかどうかを判定する。ここでオンであると判定するとS1009に移行し、そうでないときはS1003に戻って、前述の処理を繰り返す。
これによりユーザの指が、操作面204上に降りてくる時、まず最初に、ジェスチャー認識部409が図11(A)の状態を検知してタッチイベントを発行する。そして、更にユーザの指が操作面204上に降下して図11(B)の状態になると、タッチパネルイベント検知部420からタッチイベントが発行され、その時のタッチ座標が、タッチされたタッチ位置を示す座標情報として保存される。
S1009でCPU302は、RAM303に、タッチパネルイベント検知部420から受信したタッチイベントのタッチ座標が保持されているかどうか判定する。ここで保持されていると判定した場合はS1011へ移行し、そうでないときはS1010へ移行する。S1011でCPU302は、RAM303に保持している、タッチパネルイベント検知部420から受信したタッチイベントのタッチ座標を用いて、タッチイベントの処理を行ってS1013に進む。このタッチイベントの処理は、ユーザのタッチ操作に基づいて表示画像を変化させる等、アプリケーションに依存する部分なので、詳しい説明は割愛する。
一方、S1010でCPU302は、タッチイベントフラグがオンになってから所定時間以上経過したかどうかを確認する。この時間の確認は、S1005で記録した時刻と、現在の時刻を比較することで可能である。ここで所定時間が経過していると判定した場合は、タッチパネルイベント検知部420からは同一タッチ動作に対するタッチイベントが通知されなかったものと判定してS1012へ移行してタッチイベント処理を行う。一方、所定時間が経過していない場合は、まだタッチパネルイベント検知部420から同一のタッチ動作に対するタッチイベントが通知される可能性が残っているため、タッチパネルイベント検知部420からのタッチイベントを待つべくS1003へ戻る。ここで所定時間とは、長くとも、センサ部208のフレームレートで数フレーム分(30fpsとすると、時間にして数十msec〜百数十msec程度)が適当である。S1012でCPU302は、ジェスチャー認識部409から受信したタッチイベントのタッチ座標を用いてタッチイベントの処理を行ってS1013に進む。
この処理では、所定時間内に、図11(A)の状態から図11(B)の状態に移行しないときは、タッチパネルセンサ330がタッチされていないので、ジェスチャー認識部409が認識したタッチ座標を使用する。
S1013でCPU302は、S1004でオンにしたタッチイベントフラグをオフにする。次にS1014に進みCPU302は、S1005で記憶した時刻をリセットする。次にS1015に進みCPU302は、S1007でRAM303に保存した、タッチパネルイベント検知部420から取得したタッチ座標を破棄する。そしてS1016に進みCPU302は、処理終了イベントを受信したか否かを判定し、処理終了イベントを受信するまでS1003からS1015の処理を繰り返す。尚、この処理終了イベントは、カメラスキャナ101のボタン操作や、ネットワークI/F306を介してホストコンピュータ102から送信される終了命令、ジェスチャー操作から入力される終了命令、或いはタイマ設定などにより発行されるものとする。
上記処理を繰り返すことで、ユーザによるタッチのトリガーをセンサ部208から取得する。その後、所定時間内にタッチパネルセンサ330からイベントが受信できる場合は、タッチパネルセンサ330により検出したタッチ座標を、指示された座標として特定する。これにより、より正確なタッチ座標を取得することが可能になる。
実施形態では、タッチの動作を例に説明したが、操作面204を指先で素早く触って放すタップ操作や、操作面204から指先を放すリリース操作、操作面204を所定時間触り続けるホールド操作など、その他のタッチジェスチャーにおいても同様である。
また上記説明では、タッチ座標を取得するトリガーを、センサ部208が検知したジェスチャーに基づいて取得する場合で説明したが、その逆にしても良い。逆にする場合は、図12に示すフローチャートで実現できる。
図12は、他の実施形態に係るメイン制御部402の処理を説明するフローチャートである。尚、この処理は、CPU302がメイン制御部402として機能することにより達成され、この処理を実行するプログラムはHDD305に格納されており、CPU302がそのプログラムをRAM304に展開して実行することにより実現される。従って、以下の説明では、各ステップの処理の主体はCPU302として説明する。
図12では、図10のジェスチャー認識部409の処理と、タッチパネルイベント検知部420の処理を入れ替えたフローになっている。従って、図10と共通する処理には同じ符号を付して、それらの説明を省略する。
S1201でCPU302は、タッチパネルイベント検知部420より、タッチイベントの通知があったか否かを判定する。ここで通知があったと判定するとS1004へ移行し、そうでないときはS1202へ移行する。S1004でCPU302は、タッチイベントが発生したかどうかを記録しておくためのRAM303のフラグ(タッチイベントフラグ)をオンに設定する。この設定に基づいて後の処理でタッチイベント処理を行うかどうかの決定をするため、タッチパネルイベント検知部420から受信したタッチイベントを、タッチイベント処理のトリガーとすることができる。そしてS1005に進みCPU302は、現在の時刻、即ち、タッチパネルイベント検知部420よりタッチイベントが通知された時刻をRAM303に記憶する。
次にS1202でCPU302は、ジェスチャー認識部409からタッチイベントの通知があったか否かを判定する。ここで通知があったと判定するとS1203へ移行し、そうでないときはS1008へ移行する。S1203でCPU302は、後のタッチイベント処理で使うために、ジェスチャー認識部409から受信したタッチイベントの座標情報(タッチ座標)をRAM303に記録してS1008に進む。S1008でCPU302は、タッチイベントフラグがオンかどうかを判定する。ここでオンであると判定するとS1204に移行し、そうでないときはS1201に戻って、前述の処理を繰り返す。
S1204でCPU302は、RAM303に、ジェスチャー認識部409から受信したタッチイベントのタッチ座標が保持されているかどうか判定する。ここで保持されていると判定した場合はS1205へ移行し、そうでないときはS1010へ移行する。S1205でCPU302は、RAM303に保持している、ジェスチャー認識部409から受信したタッチイベントのタッチ座標を用いて、タッチイベントの処理を行ってS1013に進む。またS1010でCPU302は、タッチイベントフラグがオンになってから所定時間以上経過していると判定した場合は、ジェスチャー認識部409からは同一タッチ動作に対するタッチイベントが通知されなかったものと判定してS1206へ進む。S1206でCPU302は、タッチパネルイベント検知部420から受信したタッチイベントのタッチ座標を用いてタッチイベントの処理を行ってS1013に進む。そしてS1207でCPU302は、S1203でRAM303に保存した、ジェスチャー認識部409から取得したタッチ座標を破棄する。
この処理によれば、ユーザによるタッチのトリガーをタッチパネルセンサ330から取得し、センサ部208からイベントが受信できる場合は、センサ部208からのタッチ座標を取得する。またセンサ部208からイベントを受信しないときは、タッチパネルセンサ330でのタッチ座標を取得することが可能になる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
101…カメラスキャナ、201…コントローラ部、202…カメラ部、204…操作面、207…プロジェクタ、208…センサ部、330…タッチパネルセンサ、402…メイン制御部、409…ジェスチャー認識部、420…タッチパネルイベント検知部
Claims (13)
- 操作面上を撮影して第1の画像データを取得する画像取得手段と、
前記第1の画像データに基づいて前記操作面上のユーザによるジェスチャーを認識する認識手段と、
前記操作面上でのユーザの操作によりタッチされた前記操作面の位置の座標を取得する取得手段と、
前記認識手段が認識したユーザのジェスチャーと、前記取得手段により取得された前記ユーザの操作によりタッチされた位置の座標とに基づいて、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定する制御手段と、
を有することを特徴とする操作装置。 - 前記画像取得手段は、可視光カメラ、赤外線カメラ、及び3次元距離センサを含むことを特徴とする請求項1に記載の操作装置。
- 前記第1の画像データは、各画素のR、G、Bの値と、各画素の前記赤外線カメラからの距離とを含むことを特徴とする請求項2に記載の操作装置。
- 前記認識手段は、前記第1の画像データから前記ユーザの手の形状を検出し、当該手の形状から当該ユーザの指の個数と当該指が指示する座標、及び当該指によるジェスチャーを認識することを特徴とする請求項1乃至3のいずれか1項に記載の操作装置。
- 前記認識手段は、前記指と前記操作面との距離が所定値以下の場合に、前記ユーザの指によるジェスチャーは、当該指によるタッチ操作であると認識することを特徴とする請求項4に記載の操作装置。
- 前記制御手段は、前記認識手段が認識した前記タッチ操作から所定時間内に、前記取得手段が前記ユーザによりタッチされた位置の座標を取得することにより、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定することを特徴とする請求項5に記載の操作装置。
- 前記制御手段は、前記認識手段が認識した前記タッチ操作から所定時間内に、前記取得手段が前記ユーザによりタッチされた位置の座標を取得しない場合は、前記認識手段が認識した前記タッチ操作に基づいて前記操作面上の位置の座標を特定することを特徴とする請求項5に記載の操作装置。
- 前記制御手段は、前記取得手段が前記ユーザによりタッチされた位置の座標を取得してから所定時間内に前記認識手段が認識した前記タッチ操作により、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定することを特徴とする請求項5に記載の操作装置。
- 前記取得手段は、前記操作面上に設けられたタッチパネルセンサを含むことを特徴とする請求項1乃至8のいずれか1項に記載の操作装置。
- 前記画像取得手段により取得した前記第1の画像データを、前記操作面に対応する2次元画像に変換した第2の画像データに基づいて前記操作面に画像を投影する投影手段を有することを特徴とする請求項1乃至9のいずれか1項に記載の操作装置。
- 操作装置を制御する制御方法であって、
操作面上を撮影して第1の画像データを取得する画像取得工程と、
前記第1の画像データに基づいて前記操作面上のユーザによるジェスチャーを認識する認識工程と、
前記操作面上でのユーザの操作によりタッチされた前記操作面の位置の座標を取得する取得工程と、
前記認識工程で認識したユーザのジェスチャーと、前記取得工程で取得された前記ユーザの操作によりタッチされた位置の座標とに基づいて、前記ユーザの操作によりタッチされた前記操作面上の位置の座標を特定する制御工程と、
を有することを特徴とする操作装置の制御方法。 - 操作面に対してユーザによる操作が行われたこと、及び操作された位置を検出可能な第1の検出手段と、
前記第1の検出手段とは異なる方式により、前記操作面に対してユーザによる操作が行われたこと、及び操作された位置を検出可能な第2の検出手段と、
前記第1の検出手段による検出結果を用いて前記操作面に対してユーザによる操作が行われたことを特定し、前記第2の検出手段による検出結果を用いて操作された位置を特定し、特定された情報に基づく処理を実行するよう制御する制御手段と、
を有することを特徴とする操作装置。 - コンピュータを、請求項1乃至10及び12のいずれか1項に記載の操作装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015254869A JP2017117372A (ja) | 2015-12-25 | 2015-12-25 | 操作装置とその制御方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015254869A JP2017117372A (ja) | 2015-12-25 | 2015-12-25 | 操作装置とその制御方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017117372A true JP2017117372A (ja) | 2017-06-29 |
Family
ID=59231851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015254869A Pending JP2017117372A (ja) | 2015-12-25 | 2015-12-25 | 操作装置とその制御方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017117372A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112270982A (zh) * | 2020-11-23 | 2021-01-26 | 南京图格医疗科技有限公司 | 一种远距离手势控制一体化手术室*** |
-
2015
- 2015-12-25 JP JP2015254869A patent/JP2017117372A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112270982A (zh) * | 2020-11-23 | 2021-01-26 | 南京图格医疗科技有限公司 | 一种远距离手势控制一体化手术室*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10310675B2 (en) | User interface apparatus and control method | |
US10254893B2 (en) | Operating apparatus, control method therefor, and storage medium storing program | |
WO2017029749A1 (ja) | 情報処理装置、その制御方法、プログラム、及び記憶媒体 | |
JP2016103137A (ja) | ユーザインタフェース装置、画像処理装置及び制御用プログラム | |
JP6381361B2 (ja) | データ処理装置、データ処理システム、データ処理装置の制御方法、並びにプログラム | |
JP6746419B2 (ja) | 情報処理装置、及びその制御方法ならびにコンピュータプログラム | |
JP6399840B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
JP2019020307A (ja) | 計測装置、計測装置の制御方法およびプログラム | |
JP2018112894A (ja) | システムおよび制御方法 | |
JP2017219942A (ja) | 接触検出装置、プロジェクタ装置、電子黒板装置、デジタルサイネージ装置、プロジェクタシステム、接触検出方法、プログラム及び記憶媒体。 | |
JP2017162126A (ja) | 入力システム、入力方法、制御用プログラム、及び記憶媒体 | |
JP2017117372A (ja) | 操作装置とその制御方法、及びプログラム | |
JP6643825B2 (ja) | 装置及び方法 | |
JP2018063555A (ja) | 情報処理装置、情報処理方法及びプログラム | |
US10270929B2 (en) | Image processing apparatus, control method, and recording medium | |
US10116809B2 (en) | Image processing apparatus, control method, and computer-readable storage medium, which obtains calibration image information with which to correct image data | |
JP2019120618A (ja) | 物体測定装置及びその制御方法、並びにプログラム | |
JP6898021B2 (ja) | 操作入力装置、操作入力方法、及びプログラム | |
JP2018173907A (ja) | 情報処理装置、および情報処理装置の制御方法、プログラム | |
JP2017049662A (ja) | 情報処理装置、その制御方法、プログラム、及び記憶媒体 | |
JP2018116360A (ja) | 手入力装置、手入力装置の制御方法 | |
JP2017022590A (ja) | 画像処理装置、画像処理装置の制御方法、及びプログラム | |
JP2017167810A (ja) | 入力支援装置、入力支援方法、制御用プログラム、及び記憶媒体 | |
JP2017107453A (ja) | 画像処理装置、制御方法、及びプログラム | |
JP2019101753A (ja) | 物体形状測定装置及びその制御方法、並びにプログラム |