JP2018116360A - 手入力装置、手入力装置の制御方法 - Google Patents

手入力装置、手入力装置の制御方法 Download PDF

Info

Publication number
JP2018116360A
JP2018116360A JP2017005225A JP2017005225A JP2018116360A JP 2018116360 A JP2018116360 A JP 2018116360A JP 2017005225 A JP2017005225 A JP 2017005225A JP 2017005225 A JP2017005225 A JP 2017005225A JP 2018116360 A JP2018116360 A JP 2018116360A
Authority
JP
Japan
Prior art keywords
coordinate value
coordinate
user
unit
operation surface
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
Application number
JP2017005225A
Other languages
English (en)
Inventor
梅田 嘉伸
Yoshinobu Umeda
嘉伸 梅田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017005225A priority Critical patent/JP2018116360A/ja
Publication of JP2018116360A publication Critical patent/JP2018116360A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • User Interface Of Digital Computer (AREA)

Abstract

【課題】 ユーザによる手の指先による軌跡を入力として受け付ける指先の数が複数認識される場合でも、適正な指示を受け付ける指先とその座標値を特定する。【解決手段】手入力装置において、操作面の空間に位置するユーザの手の外形を撮影して取得する距離画像データからユーザが指示している指先の数が複数である場合、ユーザが最初に指示した操作面のタッチ座標値に近接する第1の座標値に対応する指先を操作指示指として特定する。そして、特定した操作指示指に対応する第1の座標値を操作面上で特定する第2の座標値に変換することを特徴とする。【選択図】 図8

Description

本発明は、手入力装置、手入力装置の制御方法に関するものである。
汎用的に使用されている筆記具や用紙を用いて、手書き入力を行うことができる手書入力機能を有する装置が提案されている。そのようなシステムでは、筆記具の筆記圧を検知するタッチパネル部と、タッチパネル部の検知結果に基づいて手書き座標を検知する座標検知部が必要となる。特許文献1では、筆記具を用いて手書き入力を行う際に用紙の下に敷く下敷きの上面側に設けられ、筆記具の筆記圧を検知するタッチパネル部と、このタッチパネル部の検知結果に基づいて手書き座標を検知する技術が開示されている。
また、特許文献2では、赤外線センサ等を用いて作業空間にあるユーザの手などの動きを検知し、ユーザが投影面に投影されている操作ボタン等にタッチしたかを検知するジェスチャーセンサに関する技術が開示されている。
特開2006−172230号公報 特開2006−76175号公報
プロジェクタや大型液晶ディスプレイなどの大画面を用いて操作表示を行い、それをタッチパネルで操作するシステムが提案されている。ここで、手書き入力を認識する精度を変えずに領域を特許文献1に記載されている手帳サイズから、机上のような広範囲に広げようとすると、タッチパネルや座標検知センサを用いた方法では座標を検出するためのセンサの数が増大しコストアップの要因となる。
一方、コストアップしないために手書き入力を認識する精度を下げて座標検出センサの数を手帳サイズの領域を検出する場合と同程度にすると、座標の検出精度が低くなり検出した座標と実際に筆記具により指示した位置の間に誤差が発生する。
また、ジェスチャーセンサにより手の動作を検知して操作する場合、例えばユーザが手を開いた状態で操作を行うとジェスチャーセンサは同時に5本の指を検知する。この時、ユーザがジェスチャーセンサで検知した複数の指の中のどの指で操作を行っているか判断するためには、ジェスチャーセンサが押下する指の動作を検出する必要がある。
ただし、ジェスチャーセンサが押下する指の動作を検出するためには、指の移動距離が少ないため動作を検出することは困難であった。また、ユーザが所望する指で押下する動作を行うと、ジェスチャーセンサで検出している他の指も動いてしまうため、ジェスチャーセンサの出力からユーザが操作に使用している指を判別することは困難であった。
一方、ユーザが手を閉じた状態で操作を行うと、すなわち、指先の位置を検出しようとしても、ジェスチャーセンサにより指の外形を検出できない場合が生ずる。この場合、ジェスチャーセンサは、ユーザの指の動きを検出できないため、ユーザの指の動きに基づく操作を受け付けることができない等の課題があった。
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、ユーザによる手の指先による軌跡を入力として受け付ける指先の数が複数認識される場合でも、適正な指示を受け付ける指先とその座標値を特定できる仕組みを提供することである。
上記目的を達成する本発明の手入力装置は以下に示す構成を備える。
手入力装置であって、ユーザが指示する操作面の座標値を受け付ける受付手段と、前記操作面の空間に位置するユーザの手の外形を撮影して取得する距離画像データに基づく第1の座標値を前記操作面に対応づけた第2の座標値に変換する変換手段と、前記距離画像データから、前記ユーザが指示している指先の数が複数である場合、前記ユーザが最初に指示した前記操作面のタッチ座標値に近接する第1の座標値に対応する指先を操作指示指として特定する特定手段と、を備え、前記変換手段は、前記特定手段が特定した操作指示指に対応する第1の座標値を前記第2の座標値に変換することを特徴とする。
本発明によれば、ユーザによる手の指先による軌跡を入力として受け付ける指先の数が複数認識される場合でも、適正な指示を受け付ける指先とその座標値を特定できる。
手入力装置をスキャナシステムの構成を説明する図である。 カメラスキャナの外観の一例を示す図である。 コントローラ部のハードウェア構成を示す図である。 カメラスキャナの制御用プログラムの機能構成を示す図である。 手入力装置の制御方法を説明するフローチャートである。 距離画像データの取得処理を説明する図である。 手入力装置の制御方法を説明するフローチャートである。 手入力装置による指先認識処理を説明する模式図である。 手入力装置の制御方法を説明するフローチャートである。 手入力装置の制御方法を説明するフローチャートである。 手入力装置におけるジェスチャー認識処理例を示す模式図である。 手入力装置におけるジェスチャー認識処理例を示す模式図である。 手入力装置の制御方法を説明するフローチャートである。 手入力装置におけるジェスチャー動作を説明する模式図である。
次に本発明を実施するための最良の形態について図面を参照して説明する。
<システム構成の説明>
〔第1実施形態〕
図1は、本実施形態を示す手入力装置を適用したスキャナシステムの構成を説明する図である。
図1に示すように、カメラスキャナ101は、イーサネット(登録商標)等のネットワーク104にてホストコンピュータ102及びプリンタ103に接続されている。なお、カメラスキャナ101は、画像処理装置の一例である。
図1のシステムでは、ホストコンピュータ102からの指示により、カメラスキャナ101から撮影する被写体の平面画像または立体画像を読み取るスキャン機能を実行する。また、本システムでは、カメラスキャナ101が出力するスキャンデータをプリンタ103により出力するプリント機能を実行する。また、ホストコンピュータ102を介さず、カメラスキャナ101への直接の指示により、スキャン機能、プリント機能の実行も可能である。
(カメラスキャナの構成)
図2は、図1に示したカメラスキャナ101の外観の一例を示す図である。
図2(a)に示すように、カメラスキャナ101は、コントローラ部201、カメラ部202、腕部203、短焦点プロジェクタ207、距離画像センサ部208を含む。カメラスキャナ101の本体であるコントローラ部201と、撮像を行うためのカメラ部202、短焦点プロジェクタ207および距離画像センサ部208は、腕部203により連結されている。腕部203は関節を用いて曲げ伸ばしが可能である。
図2(a)には、カメラスキャナ101が設置されている操作面204も示している。カメラ部202および距離画像センサ部208のレンズは操作面204方向に向けられており、破線で囲まれた読み取り領域205内の画像を読み取り可能である。図2の例では、文書206は読み取り領域205内に置かれているので、カメラスキャナ101に読み取り可能となっている。
カメラ部202は単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像が可能なものとすることが好ましい。
またカメラスキャナ101はタッチパネル330を有し、指又はペン等を用いて操作面204に接触したことを検知するとともに、タッチした座標を取得する。
タッチパネル330とコントローラ部201は、後述するシリアルI/F部を介して接続することによりの通信及びデータの授受を行う。
なお、図2に示されていないが、カメラスキャナ101はスピーカ340をさらに含むこともできる。
図2(b)は、カメラスキャナ101における座標系を表している。
図2(b)において、カメラスキャナ101では各ハードウェアデバイスに対して、カメラ座標系、距離画像座標系、プロジェクタ座標系という座標系が定義される。これらはカメラ部202及び距離画像センサ部208のRGBカメラが撮像する画像平面、又はプロジェクタ207が投射(投影)する画像平面をXY平面とし、画像平面に直交した方向をZ方向として定義したものである。
更に、これらの独立した座標系の3次元データを統一的に扱えるようにするために、操作面204を含む平面をXY平面とし、このXY平面から上方に垂直な向きをZ軸とする直交座標系を定義する。
座標系を変換する場合の例として、図2(c)に直交座標系と、カメラ部202を中心としたカメラ座標系を用いて表現された空間と、カメラ部202が撮像する画像平面との関係を示す。直交座標系における3次元点P[X,Y,Z]は、数1によって、カメラ座標系における3次元点Pc[Xc,Yc,Zc]へ変換できる。
Figure 2018116360
ここで、R及びtは、直交座標系に対するカメラの姿勢(回転)と位置(並進)とによって求まる外部パラメータによって構成され、Rを3×3の回転行列、tを並進ベクトルと呼ぶ。逆に、カメラ座標系で定義された3次元点は数2によって、直交座標系へ変換することができる。
Figure 2018116360
さらに、カメラ部202で撮影される2次元のカメラ画像平面は、カメラ部202によって3次元空間中の3次元情報が2次元情報に変換されたものである。即ち、カメラ座標系上での3次元点Pc[X,Y,Z]を、数3によってカメラ画像平面での2次元座標pc[x,y]に透視投影変換することによって変換することができる。
Figure 2018116360

ここで、Aは、カメラ部202の内部パラメータと呼ばれ、焦点距離と画像中心等とで表現される3×3の行列である。
以上のように、数1と数3とを用いることで、直交座標系で表された3次元点群を、カメラ座標系での3次元点群座標やカメラ画像平面に変換することができる。なお、各ハードウェアデバイスの内部パラメータ及び直交座標系に対する位置姿勢(外部パラメータ)は、公知のキャリブレーション手法により予めキャリブレーションされているものとする。
以後、特に断りがなく3次元点群と表記した場合は、直交座標系における3次元データ(立体データ)を表しているものとする。
(カメラスキャナのコントローラのハードウェア構成)
図3は、図1のカメラスキャナ101の本体であるコントローラ部201のハードウェア構成の一例を示す図である。

図3に示すように、コントローラ部201は、システムバス301に接続されたCPU302、RAM303、ROM304、HDD305を備える。さらに、コントローラ部201は、システムバス301に接続されたネットワークI/F306、画像処理プロセッサ307、カメラI/F308、シリアルI/F310の各種I/Fを備える。さらに、コントローラ部201は、システムバス301に接続された、ディスプレイコントローラ309、オーディオコントローラ311及びUSBコントローラ312を備える。
CPU302は、コントローラ部201全体の動作を制御する中央演算装置である。RAM303は、揮発性メモリである。ROM304は、不揮発性メモリであり、CPU302の起動用プログラムが格納されている。HDD305は、RAM303と比較して大容量なハードディスクドライブ(HDD)である。HDD305にはコントローラ部201の実行する、カメラスキャナ101の制御用プログラムが格納されている。CPU302が、ROM304やHDD305に格納されているプログラムを実行することにより、カメラスキャナ101の機能構成及び後述するフローチャートの処理(情報処理)が実現される。
CPU302は、電源ON等の起動時、ROM304に格納されている起動用プログラムを実行する。この起動用プログラムは、CPU302がHDD305に格納されている制御用プログラムを読み出し、RAM303上に展開するためのものである。CPU302は、起動用プログラムを実行すると、続けてRAM303上に展開した制御用プログラムを実行し、制御を行う。また、CPU302は、制御用プログラムによる動作に用いるデータもRAM303上に格納して読み書きを行う。HDD305上には更に、制御用プログラムによる動作に必要な各種設定や、また、カメラ入力によって生成した画像データを格納することができ、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及びLCDタッチパネル330に接続されている。
シリアル信号の入出力を行うシリアルI/F310は、LCDタッチパネル330に接続され、CPU302はLCDタッチパネル330が押下されたときに、シリアルI/F310を介して押下された座標を取得する。オーディオコントローラ311は、スピーカ340に接続され、CPU302の指示に応じて音声データをアナログ音声信号に変換し、スピーカ340を通じて音声を出力する。
USBコントローラ312は、CPU302の指示に応じて外付けのUSBデバイスの制御を行う。ここでは、USBコントローラ312は、USBメモリやSDカード等の外部メモリ350に接続され、外部メモリ350へのデータの読み書きを行う。
<カメラスキャナの制御用プログラムの機能構成>
(カメラスキャナの機能構成)
図4は、図3に示したCPU302が実行するカメラスキャナ101の制御用プログラムの機能構成401を示す図である。
図4において、カメラスキャナ101の制御用プログラムは前述のようにHDD305に格納され、CPU302が起動時にRAM303上に展開して実行する。
メイン制御部402は制御の中心であり、機能構成401内の他の各モジュールを制御する。画像取得部416は画像入力処理を行うモジュールであり、カメラ画像取得部407、距離画像取得部408から構成される。カメラ画像取得部407はカメラI/F308を介してカメラ部202が出力する画像データを取得し、RAM303へ格納する。距離画像取得部408はカメラI/F308を介して距離画像センサ部208が出力する距離画像データを取得し、RAM303へ格納する。距離画像取得部408の処理の詳細は図5を用いて後述する。
認識処理部417はカメラ画像取得部407、距離画像取得部408が取得する画像データから操作平面204上の物体の動きを検知して認識するモジュールであり、ジェスチャー認識部409、物体検知部410から構成される。ジェスチャー認識部409は、画像取得部416から操作平面204上の画像を取得し続け、タッチなどのジェスチャーを検知するとメイン制御部402へ通知する。ジェスチャー認識部409の処理の詳細は図6を用いて後述する。
物体検知部410は、画像取得部416から操作平面204を撮像した画像を取得し、操作平面204上に物体が置かれるタイミング、物体が置かれて静止するタイミング、あるいは物体が取り除かれるタイミングなどを検知する処理を行う。
タッチパネルイベント検知部420はユーザが指等でタッチパネル330に接触した際、シリアルI/F310を介して指等が接触したタッチ座標を受信し、その座標情報をタッチパネルイベントとしてメイン制御部402に対して通知する。
画像処理部418は、カメラ部202および距離画像センサ部208から取得した画像を画像処理プロセッサ307で解析するために用いられ、各種画像処理モジュールで構成される。前述のジェスチャー認識部409や物体検知部410は画像処理部418の各種画像処理モジュールを利用して実行される。
ユーザインターフェイス部403は、メイン制御部402からの要求を受け、メッセージやボタン等のGUI部品を生成する。そして、表示部406へ生成したGUI部品の表示を要求する。表示部406はディスプレイコントローラ309を介して、プロジェクタ207へ要求されたGUI部品の表示を行う。プロジェクタ207は操作平面204に向けて設置されているため、操作平面204上にGUI部品を投射することが可能となっている。
また、ユーザインターフェイス部403は、ジェスチャー認識部409が認識したタッチ等のジェスチャー操作、あるいはタッチパネルイベント検知部420が検知したタッチ操作、そしてさらにそれらの座標を、メイン制御部402経由で受信する。
そして、ユーザインターフェイス部403は描画中の操作画面の内容と操作座標を対応させて操作内容(押下されたボタン等)を判定する。この操作内容をメイン制御部402へ通知することにより、操作者の操作を受け付ける。描画中の操作画面の内容と操作座標を対応させて操作内容(押下されたボタン等)を判定する。
また、ユーザインターフェイス部403はメイン制御部402からの要求を受け、表示部406上のメイン制御部402が指示した座標に線の描画を行う。メイン制御部402はジェスチャー認識部409が認識したタッチ等のジェスチャー操作、及びタッチパネルイベント検知部420が検知したタッチ操作、そしてさらにそれらの座標をユーザインターフェイス部403に送信する。ユーザインターフェイス部403は受信した座標位置にプロジェクタ207を用いて操作表面204上に線を表現することで、ユーザが操作表面204上に指で軌跡として描いた図形や文字を、操作表面204上に表現する。
ネットワーク通信部404は、ネットワークI/F306を介して、ネットワーク104上の他の機器とTCP/IPによる通信を行う。データ管理部405は、制御用プログラム401の実行において生成した作業データなど様々なデータをHDD305上の所定の領域へ保存し、管理する。
<距離画像センサおよび距離画像取得部の説明>
図5は、本実施形態を示す手入力装置の制御方法を説明するフローチャートである。本例は、距離画像センサ208による距離画像データ生成処理例である。なお、各ステップは、CPU302が記憶された制御プログラムを実行することで実現される。
また、本実施形態において、距離画像センサ208は赤外線によるパターン投射方式の距離画像センサである。赤外線パターン投射部361は対象物に、人の目には不可視である赤外線によって3次元測定パターンを投射する。赤外線カメラ362は対象物に投射した3次元測定パターンを読み取るカメラである。RGBカメラ363は人の目に見える可視光をRGB信号で撮影するカメラである。
距離画像取得部408の処理を図5Aのフローチャートを用いて説明する。また、図5Bの(a)〜(c)はパターン投射方式による距離画像の計測原理を説明する図である。
距離画像取得部408が処理を開始すると、S501では、図5(a)に示すように赤外線パターン投射部361を用いて赤外線による3次元形状測定パターン522を対象物521に投射する。
S502では、距離画像取得部408は、RGBカメラ363を用いて対象物を撮影したRGB画像523および、赤外線カメラ362を用いてS501で投射した3次元測定パターン522を撮影した赤外線カメラ画像データ524を取得する。
なお、赤外線カメラ362とRGBカメラ363とでは設置位置が異なるため、図5(b)に示すようにそれぞれで撮影される2つのRGBカメラ画像523および赤外線カメラ画像524の撮影領域が異なる。
そこでS503で、距離画像取得部408は、赤外線カメラ362の座標系からRGBカメラ363の座標系への座標系変換を用いて赤外線カメラ画像データ524をRGBカメラ画像523の座標系に合わせる処理を行う。
なお、赤外線カメラ362とRGBカメラ363の相対位置や、それぞれの内部パラメータは事前のキャリブレーション処理により既知であるとする。
S504では、図5(c)に示すように、3次元測定パターン522とS503で座標変換を行った赤外線カメラ画像データ524間での対応点を抽出する。
例えば、赤外線カメラ画像データ524上の1点を3次元形状測定パターン522上から探索して、同一の点が検出された場合に対応付けを行う。あるいは、赤外線カメラ画像データ524の画素の周辺のパターンを3次元形状測定パターン522上から探索し、一番類似度が高い部分と対応付けてもよい。
S505では、距離画像取得部408は、赤外線パターン投射部361と赤外線カメラ362を結ぶ直線を基線525として三角測量の原理を用いて計算を行うことにより、赤外線カメラ362からの距離を算出する。
なお、S504で対応付けが出来た画素については、赤外線カメラ362からの距離を算出して画素値として保存し、対応付けが出来なかった画素については、距離の計測が出来なかった部分として無効値を保存する。これをS503で座標変換を行った赤外線カメラ画像524の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。
S506では、距離画像取得部408は、距離画像の各画素にRGBカメラ画像525のRGB値を保存することにより、1画素につきR、G、B、距離の4つの値を持つ距離画像データを生成する。ここで取得した距離画像データは距離画像センサ208のRGBカメラ363で定義された距離画像センサ座標系が基準となっている。そこでS507では、距離画像取得部408は、図2(b)を用いて上述したように、距離画像センサ座標系として得られた距離データを直交座標系における3次元点群に変換する。以後、特に指定がなく3次元点群と表記した場合は、直交座標系における3次元点群を示すものとする。
なお、本実施形態では上述したように、距離画像センサ208として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサを用いることも可能である。例えば、2つのRGBカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するTOF(Time of Flight)方式など、他の計測手段を用いても構わない。

<ジェスチャー認識部の説明>
図6Aは、本実施形態を示す手入力装置の制御方法を説明するフローチャートである。本例は、ジェスチャー認識部409のデータ処理例である。以下、図6Bに示す模式図を参照して、ジェスチャー認識を詳述する。なお、各ステップは、CPU302が記憶された制御プログラムを実行することで実現される。
図6Aにおいて、S601でジェスチャー認識部409は、初期化処理を行う。初期化処理では、ジェスチャー認識部409は距離画像取得部408から距離画像データを1フレーム分取得する。ここで、ジェスチャー認識部409は、初期化開始時は操作平面204上に対象物が置かれていない状態であるため、初期状態として操作平面204の平面の認識を行う。
つまり、ジェスチャー認識部409は取得した距離画像データから最も広い平面を抽出し、その位置と法線ベクトル(以降、操作平面204の平面パラメータと呼ぶ)を算出し、RAM303に保存する。
続いて、S602では、ジェスチャー認識部409はS621〜622に示す、操作平面204上に存在する物体の3次元点群を取得する。その際、S621で、ジェスチャー認識部409は距離画像取得部408から距離画像データと3次元点群を1フレーム分取得する。S622で、ジェスチャー認識部409は操作平面204の平面パラメータを用いて、取得した3次元点群から操作平面204を含む平面にある点群を除去する。
S603では、ジェスチャー認識部409はS631〜S634に示す、取得した3次元点群から操作者の手の形状および指先を検出する処理を行う。ここで、図6B(a)〜(c)に示す、指先検出処理の方法を模式図を用いて説明する。
S631では、ジェスチャー認識部409はS602で取得した3次元点群から、操作平面204を含む平面から所定の高さ以上にある、肌色の3次元点群を抽出することで、手の3次元点群を得る。
図6B(a)の3次元点群661は抽出した手の3次元点群に対応する。S632では、ジェスチャー認識部409は抽出した手の3次元点群を、操作平面204の平面に射影した2次元画像を生成して、その手の外形を検出する。
図6B(a)の3次元点群662は、3次元点群661を操作平面204の平面に投影した3次元点に対応する。投影は、点群の各座標を、操作平面204の平面パラメータを用いて投影すればよい。
また、図6(b)に示すように、投影した3次元点群から、XY座標の値だけを取り出せし、Z軸方向から見た2次元画像データを、操作平面204上を占める手領域663として扱うことができる。
この時、手の3次元点群の各点が、操作平面204の平面に投影した手領域663の各座標のどれに対応するかを、RAM303に記憶しておくものとする。
S633では、ジェスチャー認識部409は検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する。
図6B(c)は、外形の曲率から指先を検出する方法を模式的に表したものである。点群664は、操作平面204の平面に投影された2次元画像603の外形を表す点の一部を表している。ここで、点群664のような、外形を表す点のうち、隣り合う5個の点を含むように円を描くことを考える。
図6B(c)の円665、667が、その例である。これらの円665、667を、全ての外形の点に対して順に描き、その直径(例えば直径666、668)が所定の値より小さい(曲率が小さい)ことを以て、指先とする。
図6B(c)に示す例では隣り合う5個の点としたが、その数は限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。
S634では、ジェスチャー認識部409は検出した指先の個数および各指先の座標を算出する。この時、ジェスチャー認識部409は前述したように、操作平面204に投影した2次元画像の各点と、手の3次元点群の各点の対応関係をRAM303に記憶しているため、各指先の3次元座標を得ることができる。
今回は、3次元点群から2次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。
例えば、距離画像の背景差分や、RGB画像の肌色領域から手の領域を抽出し、上に述べたのと同様の方法(外形の曲率計算等)で、手領域のうちの指先を検出してもよい。
この場合、検出した指先の座標はRGB画像や距離画像といった、2次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の3次元座標に変換する必要がある。この時、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
S606では、ジェスチャー認識部409はS661〜S662に示す、腕検出処理を実行する。
図6B(d)は腕検出処理について模式的に説明した図である。S661では、ジェスチャー認識部409はS631で抽出した手領域の3次元点群661と接続する3次元点群を抽出し、腕の3次元点群669を検出する。
S662では、ジェスチャー認識部409は腕の3次元点群669を操作平面204の平面に投影し、腕領域670を算出する。そして、操作面204の端部と腕領域670が交差する点の中心を、腕の操作面204への侵入点671とし、侵入点671の座標を算出する。
S607で、ジェスチャー認識部409はS634で算出した指先座標およびS662で算出した腕侵入点座標をメイン制御部402へ通知し、S602へ戻ってジェスチャー認識処理を繰り返す。
なお、ここでは一本指でのジェスチャー認識について説明を行ったが、複数の指あるいは複数の手、あるいは腕や体全体でのジェスチャー認識に応用することも可能である。
<タッチパネルイベント検知部の説明>
図7は、本実施形態を示す手入力装置の制御方法を説明するフローチャートである。本例は、図4に示したタッチパネルイベント検知部420のタッチパネルイベント検知処理例である。なお、各ステップは、CPU302が記憶された制御プログラムを実行することで実現される。
タッチパネルイベント検知部420は、ユーザ指等でタッチパネル330に接触した際、シリアルI/F310から指等が接触したタッチ座標を受信する。
タッチパネルイベント検知部420が処理を開始すると、S701で、タッチパネルイベント検知部420は、タッチ座標を受信したかどうか判断する。ここで、タッチパネルイベント検知部420がタッチ座標を受信したと判断した場合、処理をS702へ進める。一方、タッチパネルイベント検知部420がタッチ座標を受信していないと判断した場合、処理をS701へ戻して、タッチ座標を受信したかどうかを判断する。
S702で、タッチパネルイベント検知部420は、受信した座標情報をタッチパネルイベントとしてメイン制御部402に対して通知する。S702が終了すると、タッチパネルイベント検知部420は、処理をS701に戻す。
タッチパネルイベント検知部420は、上記処理を繰り返して、タッチパネルイベント検知部420は、タッチパネルイベントをメイン制御部402に対して通知し続ける。
<メイン制御部の説明>
図8は、本実施形態を示す手入力装置の制御方法を説明するフローチャートである。本例は、ユーザが指を用いて操作面204上に描いた軌跡をプロジェクタ207により操作表面204上に線として表現する際に、メイン制御部402が実行するタッチイベントの制御処理例である。なお、各ステップは、CPU302が記憶された制御プログラムを実行することで実現される。以下、距離画像データから、ユーザが指示している指先の数が複数である場合、ユーザが最初に指示した前記操作面のタッチ座標値に近接する第1の指示座標値に対応する指先を操作指示指として特定する処理を説明する
図8のS801で、メイン制御部402が処理を開始すると、ジェスチャー認識部409に対して処理開始指示を行う。この指示を受け、ジェスチャー認識部409は上述した図6Aに示した処理を実行する。
S802では、メイン制御部402は、タッチパネルイベント検知部420に対して処理開始指示を行う。この指示を受け、タッチパネルイベント検知部420は上述した図7の処理を実行する。
S803で、メイン制御部402は、例えばRAM303上に確保する検出座標バッファを初期化する。詳細は後述するが、検出座標バッファとは直前のタッチイベントにおいて指先を検出した座標を格納するためのバッファである。
本実施形態では、図2(b)で説明したように操作面204上を水平方向の座標Xと、それに直行する垂直方向の座標Yで表現し、検出した座標を(X,Y)で表す。また図2(b)における操作面204の左下を原点と設定し、操作面204上の座標を水平方向の座標X、及び垂直方向の座標Yとも正の値で表現する。
検出座標バッファは、後述するタッチイベント通知があった際に検出した指の座標を格納するためのバッファであり、タッチイベント通知があった場合は最後に指先が検出された座標を格納する。そのため、メイン制御部402は、S803における検出座標バッファの初期化動作として、例えば初期値の座標として操作面204上では取らない値である(−1、−1)を設定する。
S804では、メイン制御部402は、タッチパネルイベント検知部420より、タッチイベントの通知があったか否かを判断する。メイン制御部402は、通知が無いと判断した場合、処理をS803戻し、タッチイベントの通知を受信するまで、処理を繰り返す。
S804で、メイン制御部402は、タッチパネルイベント検知部420からのタッチイベントの通知があったと判断した場合、処理をS805へ進める。
S805で、メイン制御部402は、タッチパネルイベント部420からタッチが行われた座標値(本例では(Xt,Yt)と表す)を取得する。これにより、メイン制御部402はユーザが指示した座標値を受付ける。S806で、メイン制御部402は、ジェスチャー認識部409が前述した処理で検知した指の本数を取得する。
S807で、メイン制御部402は、ジェスチャー認識部409により検出した指先の座標値を取得する。具体的には、メイン制御部402は、S806においてジェスチャー認識部409が検知した指の本数分の座標値を取得する。
S808では、メイン制御部402は、取得した指先の座標値の数から検知した指の本数が1本であるかどうかを判断する。メイン制御部402は、S806でジェスチャー検出部409が検知した指の本数が1本であると判断した場合、処理をS809へ進める。
S809で、メイン制御部402は、S807で検出した座標値をユーザが指定した座標値と判断する。そして、メイン制御部402は、指先の座標値(ここでは座標値を(X,Y)と記す)を取得する。
S810で、メイン制御部402は、検出座標バッファの座標値を参照し、座標値がS803で設定した初期値であるかどうかを判定する。具体的には、検出座標バッファに格納された座標値がS803で設定した初期値である(−1、−1)と判断した場合、S804において通知されたタッチイベントは、タッチされていない状態からタッチが行われた状態に変化したことを表す。何故ならば、S803における検出座標バッファの初期化は、S804においてタッチパネルイベント検知部420からタッチイベントの通知がない、すなわちタッチが行われていない状態の場合に行われる。
従って、S809において、検出座標バッファに格納されている値が初期値である場合、S804においてタッチイベントの通知がない状態からタッチイベントが通知された状態に移行した直後であることを表す。
そのため、メイン制御部402は、線の描画を開始するためユーザが操作面204上にタッチを行った起点であると判断する。ここで、メイン制御部402は、検出座標バッファに格納されている値が初期値であると判断した場合、処理をS812に進める。S812で、メイン制御部402は、S809で取得した指先の座標値(X,Y)を検出座標バッファに格納して、処理をS804に戻す。そして、メイン制御部402は、S804で、再びタッチパネルイベント検知部420よりタッチイベントの通知があったか否かを判断する。
一方、S810で、メイン制御部402は、検出座標バッファに格納されている座標が初期値でないと判断した場合、S811に処理を進める。メイン制御部402は、検出座標バッファに格納されている値が初期値でない場合、S804で連続してタッチイベントの通知が行われている、つまりユーザが操作面204上に線を描画している状態であると判断する。
S811で、メイン制御部402は検出座標バッファに格納されている座標値からS809において取得した座標値(X,Y)まで操作面204上に線を描写するようにユーザインターフェイス部403に通知する。
なお、S811において、検出座標バッファに格納されている座標値は、直前にタッチイベントが通知されたときの指先の位置を示している。そのため、検出座標バッファに格納されている座標とS809で取得した座標が異なる場合、S811では、前回のタッチイベントが通知された際の指先の位置からS809で取得した座標値まで操作面204上に線が描写される。
S811において線が描画された後、メイン制御部402は処理をS812へ進め、S809において取得した指先の座標を検出座標バッファに格納する。これにより検出座標バッファにはS811で描画した線の端部の座標が格納される。
そして、再びS811において操作面204上に線を描写する際には、検出座標バッファに格納されている座標値、すなわち前回描写した線の端部を起点として線が描写される。
以上動作をS804によりタッチイベントが通知されなくなるまで繰り返すことにより、S804によりタッチイベントが通知されている間に指先が操作面204上を移動した軌跡を線で描写することができる。
一方、S808において、メイン制御部402は検知した指の本数が複数であると判断した場合、検知した複数の指の中から操作面204上に線を描写している指を選択する必要があるので、処理をS813へ進める。
S813では、メイン制御部402はS810において行う動作と同様に検出座標バッファの座標値を参照し、初期値かどうかを判定する。S813で、メイン制御部402は、検出座標バッファの座標値が初期値であると判断した場合、処理をS814に進める。
S814で、メイン制御部402はS807において取得した複数の指先の座標値と、S805で取得したタッチ座標値(Xt,Yt)の比較を行う。そして、メイン制御部402はS807において取得した複数の指先の座標値の中から、タッチ座標値(Xt,Yt)に最も近い座標値の指を操作面204上に線を描写している指として選択し、その座標(X,Y)を取得する。
なお、S814で、通知されたタッチイベントは、S810の動作で説明したのと同様に、タッチされていない状態からタッチが行われた状態に変化したことを表す。つまり、検出座標バッファの座標値が初期値であると判定された場合、タッチされていない状態からタッチが行われた状態に変化したことを表している。
従って、メイン制御部402はS814で取得した座標値は線の描画を開始するためユーザが操作面204上にタッチを行った起点であると判断する。
この場合、メイン制御部402はS814で取得した指先の座標値(X,Y)を描写する線の起点とするため、線の描画は行わずに、処理をS812に進めて、S814で取得した指先の座標値(X,Y)を検出座標バッファに格納する。
そして、メイン制御部402は処理をS804に戻し、再びタッチパネルイベント検知部420よりタッチイベントの通知があったか否かを判断する。
一方、S813で、メイン制御部402は検出座標バッファに格納されている座標が初期値でないと判断した場合、連続してタッチイベントの通知が行われている、つまりユーザが操作面204上に線を描画している状態であると判断する。ここで、ユーザが操作面204上に指を移動させる速度に対してメイン制御部402の処理が十分早い場合、タッチイベントを検出する間の指の移動量(座標変化)は非常に少なくなる。
そのため、本実施形態では、S815において、メイン制御部402はS807において取得した複数の指先の座標値と直前のタッチイベントが発生した時の座標値である検出座標バッファに格納されている座標値を比較する。そして、メイン制御部402はS807において取得した複数の指先の座標値の中から、検出座標バッファに格納されている座標値に最も近い座標値の指を操作面204上に線を描写している指と判断し、その座標値(X,Y)を取得する。
図9、図10は、本実施形態を示す手入力装置におけるジェスチャー認識処理例を示す模式図である。本例は、ユーザが操作面204上に接触した状態で指を移動させることにより、操作面204上に指の軌跡を描写する動作を示している。
図9は、図6で説明したジェスチャー認識部409が認識するユーザの手901の軌跡を座標値902〜906で示し、本例では、指が1つだけ検出される形状を示している。
図9において、ユーザが操作面204上に指先でタッチを開始する座標値のうち、座標値902がユーザが指先をタッチすることにより軌跡を描画する起点に対応する。
図8に示した処理において、メイン制御部402がS803及びS804を繰り返してタッチイベントの通知を待っている状態で、ユーザが図9の操作面204上の座標値902を指でタッチする。すると、メイン制御部402は、図8に示したS804においてタッチイベントが通知される。
メイン制御部402は、タッチイベントが通知されると、S805においてタッチパネルイベント検知部420からタッチパネル上のタッチ位置(Xt,Yt)を取得する。そして、S806で、メイン制御部402は、ジェスチャー認識部409から検知した指の本数(図9の場合は1本)、S807において検出した指先の座標値(図9では座標値902)を取得する。
その後、メイン制御部402は、S810で検出座標バッファに格納されている座標値が初期値であるか判別する。メイン制御部402は、ユーザの指先が座標値902をタッチする前は、S803及びS804を繰り返しており、S803において検出座標バッファに初期値を設定している。
従って、ユーザの指先が座標値902をタッチした直後は、検出座標バッファには初期値が格納されており、メイン制御部402は、S812で現在の座標値(S809において取得した座標値902)を検出座標バッファに格納する。
以上の動作により、座標値902が操作面204上に線を描写するための起点として設定される。
図9において、座標値903、904、905はユーザの手901が操作面204上で指を接触させた状態で移動した際にジェスチャー認識部409により検出された座標値を表す。以下の説明では、メイン制御部402は、座標値903、904、905の順番で検出されたとして処理を説明する。
メイン制御部402は、S804で、タッチイベントの通知があり、S807において904の座標を取得した場合、図9においては検知した指の数は1本であると判断して、処理をS808に進める。そして、メイン制御部402は、S808からS809に処理を進めて、座標値904を取得する。
その後、メイン制御部402は、S810で検出座標バッファに格納されている座標が初期値であるか判別する。ここで、ユーザの指先が座標値904にある場合、検出座標バッファには直前に検出された指の位置である座標値903が格納されている。そのため、メイン制御部402は、S810で、検出座標バッファの座標は初期値ではないと判断して、処理をS811に進める。S811で、メイン制御部402は、検出座標バッファに格納されている座標値(ここでは903の座標)からS809で取得した座標値(ここでは座標値904)まで線を描画する。
その後、S812で、メイン制御部402は、検出座標バッファに現在位置している座標値904を格納して、処理をS804へ戻す。
次に、S804で、メイン制御部402は、タッチイベントの通知があると判断した場合、検出座標バッファには座標値904が格納され、指の位置の座標値として座標値905を検出すれる。
この時、メイン制御部402は、上記説明した場合と同等の処理を行い、S811において座標値904から座標値905まで線を描画する。
ユーザが操作面204上に指を接触させた状態では上記説明した動作を繰り返し、それによって操作面204上で指を接触させて移動した軌跡を描写する。
上記説明した動作を繰り返し、ユーザが指先の位置を図9に示す座標値906まで移動した状態では、メイン制御部402は、S811において座標値906まで線を描写する。S812において、メイン制御部402は、検出座標バッファに座標値906を格納して、処理をS804に戻す。そして、S804で、タッチイベントの通知があるか否かを判断する。
ここで、ユーザが操作面204上に指を接触させるのを止めると、S804においてタッチイベントの通知がなくなる。そのため、メイン制御部402は、S803における検出座標バッファの初期化及びS804におけるタッチイベントの通知があるか否かの判断繰り返し、タッチイベントの通知を受信するまで待つ。
以上説明した動作により、906は軌跡を描画する終点となり、図9の座標値902〜906まで、指が移動した軌跡が線907として描画される。
図10は、図6で説明したジェスチャー認識部409が認識するユーザの手901の軌跡を座標値1004、1005、1006、1007及び1008で示し、本例では、指が5本検出される形状を示している。
図8の処理に従い、メイン制御部402がS803及びS804を繰り返してタッチイベントの通知を待っている状態で、ユーザが図10の操作面204上の位置を指でタッチすると、S804においてタッチイベントが通知される。
タッチイベントが通知されると、メイン制御部402は、S805においてタッチパネルイベント検知部420からタッチパネル上のタッチ位置を取得する。そして、S806で、メイン制御部402は、ジェスチャー認識部409から検知した指の本数(図10では5本)、S807において検出したそれぞれの指先の座標を取得する。
図10において、タッチ座標値1003はユーザが操作面204上を指でタッチした時に、S805においてタッチパネルイベント部420から取得した座標値を表す。
その後、S808で、メイン制御部402は、検出したユーザの指の本数を判定する。図10では指1004、1005、1006、1007及び1008の5本の指を検出するため、S813で、メイン制御部402は、検出座標バッファに格納されている座標が初期値であるか判別する。
ユーザが操作面204上をタッチする前は、S803において検出座標バッファに初期値を設定しているため、ユーザの指先が座標値1002をタッチした直後は検出座標バッファには初期値が格納されている。そのため、ユーザが操作面204上をタッチした直後のタッチイベントでは、メイン制御部402は、S813で検出座標バッファに初期値が格納されている判断するため、処理をS814に進める。そして、S814で、メイン制御部402は、ユーザが操作面204上をタッチした座標値の検出を行う。
S814で、メイン制御部402は、S805においてタッチパネルイベント部420から取得したタッチ座標値(Xt,Yt)と、S807においてジェスチャー認識部409から取得した複数の指先の座標値を比較する。そして、複数の指先の座標値の中で、タッチ座標(Xt,Yt)に最も近い座標値をユーザがタッチした位置と認識し、線を描画する起点とする。
図10では、タッチ座標値1003に最も近い指1005(人差し指)が選択され、指1005の座標値である座標値1002が新たな座標値として認識される。なお、図10ではユーザがタッチした座標値1002とタッチパネルイベント検知部420から取得したタッチ座標値1003を明示的に離して表示するが、実際にはほぼ同じ位置座標となる。
S814により、メイン制御部402は、複数の指からタッチした指及びその座標値を取得すると、S812で、メイン制御部402は、S814で取得した座標値を検出座標バッファに格納する。以上の動作により、座標値1002が操作面204上に線を描写するための起点として設定される。
その後、図10においてユーザが操作面204上に指を接触させた状態で移動すると、S815において、複数の指先の座標値の中から検出座標バッファに格納された座標に最も近い座標をユーザがタッチしている位置と認識する。
そして、S811において、メイン制御部402は、検出座標バッファに格納された座標値からS815で取得した座標値まで線を描写する。メイン制御部402は、線を描写した後、S812において検出座標バッファにS815で取得した座標値を格納する。
上記説明した動作を、ユーザが操作面204から指先を離すまで繰り返すことにより、指が移動した軌跡を線として描画する。
ユーザが操作面204上に指を接触させたまま図10の座標値1009に示す位置まで指を移動させると、メイン制御部402、S811で、座標値1009まで線を描写する。そして、S812で、メイン制御部402は、検出座標バッファに座標値1009を格納して、S804においてタッチイベントの通知があるか否かを判断する。
ここで、ユーザが操作面204上に指を接触させるのを止めると、S804においてタッチイベントの通知がなくなる。そのため、メイン制御部402は、S803における検出座標バッファの初期化及びS804におけるタッチイベントの通知があるか否かの確認繰り返し、タッチイベントの通知を受信するまで待つ。
以上説明した動作により、座標値1009は軌跡を描画する終点となり、図10の座標値1002〜1009まで、指が移動した軌跡が線1010として描画される。
〔第2実施形態〕
第1実施形態では、ジェスチャー認識部409によって、ユーザが操作する指先の動きを検知する場合について説明を行った。
しかし、ジェスチャー認識部409によって指先を検知できない状態でユーザが操作面204上で線を描写する場合も考えられる。この場合、図8に示したメイン制御部402は指先の軌跡を線で描写することができない。
そこで、第2実施形態では、ジェスチャー認識部409において、S632により手の外形を検出した際に検出した手の外形から特徴点を検出する。そして、タッチパネルイベント部402において、タッチが検出された時の特徴点の座標とタッチパネルイベント部402から取得した座標値の差を求める。以後、線の描写中はジェスチャー認識部409において検出した特徴点の座標値から差分値に対応する座標値に移動した位置に対して線の描写を行う。これによりユーザの所望の位置に線の描写を行う。
図11は、本実施形態を示す手入力装置の制御方法を説明するフローチャートである。本例は、メイン制御部402が実行するタッチイベントの制御処理例である。なお、各ステップは、CPU302が記憶された制御プログラムを実行することで実現される。なお、図11に示すステップにおいて、図8に示すステップと同じ処理には、同じステップ番号を付して、異なるステップを中心に説明する。
図11において、S804で、タッチパネルイベント部402からタッチイベントの通知があると、メイン制御部402は、S805で、タッチされた座標値(Xt,Yt)を取得する。その後、メイン制御部402は、S1101で、ジェスチャー認識部409からユーザの手の外形から抽出した特徴点の座標(X,Y)を取得する。
S810で、メイン制御部402は、検出座標バッファの座標値を参照して初期値であるかどうかを判定する。メイン制御部402は、検出座標バッファに格納された座標値が初期値であると判断した場合、処理をS1102へ進める。なお、メイン制御部402は、検出座標バッファに格納された座標値が初期値であると判断する場合とは、S804において通知されたタッチイベントが、タッチされていない状態からタッチが行われた状態に変化した場合である。
このとき、S1102では、メイン制御部402はS805において取得したタッチ座標値(Xt,Yt)から、S1101で、ジェスチャー認識部409から取得した特徴点の座標(X,Y)を減した値(dX,dY)を以下の式に従い算出する。
(dX,dY)=(Xt,Yt)−(X,Y)
そし、S1103で、メイン制御部402はS1101で取得した特徴点の座標値(X,Y)に、S1102で算出した値(dX,dY)を加算した座標値を検出座標バッファに格納して、処理をS804へ戻す。なお、S810で、メイン制御部402は検出座標バッファの座標値が初期値であると判断した場合、S1103で検出座標バッファに格納される値は、S805で取得したタッチ座標(Xt,Yt)となる。
そして、メイン制御部402は、処理をS804へ戻し、再びタッチパネルイベント検知部420よりタッチイベントの通知があったか否かを判断する。さらに、S810で、メイン制御部402は検出座標バッファに格納されている値が初期値でないと判断した場合は、S1104で、メイン制御部402は線の描画を行う。

一方、S810で、メイン制御部402は検出座標バッファの座標値が初期値でないと判断した場合、処理をS1104へ進める。
S1104で、メイン制御部402はS810で検出座標バッファに格納されている座標値からS1101で取得した座標値(X,Y)にS1102で算出した差分値(dX,dY)を加算する。さらに、メイン制御部402は算出した座標値まで線を描写するようにユーザインターフェイス部403に通知する。

なお、S1104において、検出座標バッファに格納されている座標は、直前にタッチイベントが通知されたときの特徴点の座標から差分(dX,dY)を加算した座標を示している。
そのため、メイン制御部402はS1104では前回のタッチイベントが通知された際の特徴点の位置からS1101で取得した特徴点の座標に対して、それぞれ(dX,dY)だけ加算した位置に対して操作面204上に線を描写する。
S1104で、線が描画された後、S1103でメイン制御部402は、S1101で取得した特徴点の座標値に差分(dX,dY)を加算した座標を検出座標バッファに格納する。
これにより、検出座標バッファにはS1104で描画した線の端部の座標が格納される。そして、再びS1104において、メイン制御部402は操作面204上に線を描写する際、検出座標バッファに格納されている座標値、すなわち前回描写した線の端部を起点として線を描写するように制御する。
図12は、本実施形態を示す手入力装置におけるジェスチャー動作を説明する模式図である。本例は、ジェスチャー認識部409において指先が認識できない状態において、操作面204上に指の軌跡を描写する動作状態を示している。
図12において、ユーザの手1201は、操作面204では、ジェスチャー認識部409は指先が検出できない手の形状をしている。座標値1202はユーザが操作面204上に指先でタッチを開始する座標値を表しており、ユーザが指先をタッチすることにより軌跡を描画する起点となる。なお、メイン制御部402は、座標値1202をS805においてタッチパネルイベント部402から取得する。
図11に示す処理において、メイン制御部402がS803及びS804を繰り返してタッチイベントの通知を待っている状態で、ユーザが図12の操作面204上の座標値1202を手でタッチすると、S804でタッチイベントが通知される。
タッチイベントが通知されると、メイン制御部402は、S805においてタッチパネルイベント検知部420からタッチパネル上のタッチ位置(Xt,Yt)を取得する。そして、S1101で、メイン制御部402は、ジェスチャー認識部409から手の特徴点の座標値(図12の例では、座標値1203)を取得する。
なお、本実施形態では、ユーザの手1201の特徴点としてジェスチャー認識部409がユーザの手として認識する外形のうち、Y座標が最大となる位置の座標(図12では座標値1203)として説明する。ただし、特徴点として検出される座標値は上記に示すY座標値が最大となる位置に限定されるものではない。
例えば、ジェスチャー認識部409において操作面204上に投影した手領域の外形の曲率が最小となる点を特徴点としてもよい。
その後、S810で、メイン制御部402は、検出座標バッファに格納されている座標が初期値であるか判別する。ユーザが座標値1202をタッチする前は、メイン制御部402は、図11に示すS803及びS804を繰り返しており、メイン制御部402は、S803で、検出座標バッファに初期値を設定している。
従って、ユーザが座標値1202をタッチした直後は、検出座標バッファには初期値が格納されているため、S1102で、メイン制御部402は、S805で取得した座標値とS1101で取得した座標値の差分(dX,dY)を算出する。
S805で取得する座標値は、図12に示すタッチ座標値1202に対応し、S1101で取得する座標値は座標値1203に対応する。ここで、S1101で算出する座標値の差分(dX,dY)は、図12中において、dXは差分1205、dYは差分1204で表している。
そして、メイン制御部402は、検出座標バッファには、(X+dX,Y+dY)を格納する。この座標値は、図12中の座標値1202に対応する。
以上の動作により、座標値1202が操作面204上に線を描写するための起点として設定される。
なお、図12において、特徴点の座標値1206はユーザの手1201が操作面204上を接触させた状態で移動した際にジェスチャー認識部409により検出された特徴点の座標値を示している。
メイン制御部402は、図11に示すS804で、タッチイベントの通知があり、S1101で、手の特徴点として座標値1206を取得した場合、S810で検出座標バッファに格納されている座標値が初期値であるか判別する。ユーザの手の特徴点が座標値1206にある場合、メイン制御部402は、操作面204上に線を描写している最中であると判断する。この場合、メイン制御部402は、S810において検出座標バッファの座標値は初期値ではないと判断して、処理をS1104に進める。
S1104で、メイン制御部402は、検出座標バッファに格納されている座標値からS1101で取得した座標値(図12の例では、座標値1206)に対してS1102で算出した差分値(dX,dY)を加算した座標値1205まで実線1210を描画する。
その後、S1103で、メイン制御部402は、検出座標バッファにS1101で取得した座標値(図12の例では、座標値1207)に差分値(dX,dY)を加算した値(X+dX,Y+dY)を格納する。ここで、検出座標バッファに格納される座標値は、座標値1208に対応する。
メイン制御部402は、ユーザが操作面204上に指を接触させた状態で上記処理を繰り返すことにより、操作面204上には手の特徴点から差分値(dX,dY)だけ移動した位置に、特徴点が移動した軌跡として実線1210を描写する。
上記説明した動作を繰り返し、手の特徴点が図12の特徴点1207に示す座標まで移動した状態では、メイン制御部402は、S1104で、特徴点1207に示す座標値まで実線1210を描写する。そして、メイン制御部402は、S1103で、検出座標バッファに1208の座標値(特徴点の座標に(dX,dY)を加算した値)を格納し、S804で、メイン制御部402は、タッチイベントの通知があるか否かを判断する。
ここで、ユーザが操作面204上に指を接触させる操作を止めると、S804では、タッチイベントの通知がなくなる。そこで、メイン制御部402は、S803における検出座標バッファの初期化及びS804におけるタッチイベントの通知があるか否かの判断を繰り返し、タッチイベントの通知を受信するまで待つ。
本実施形態によれば、ユーザの指先を特定できない手の形状であっても、ユーザの手の外形形状から特定される特徴点の座標値の移動状態を捉えて、ユーザのジェスチャーに基づく軌跡を実線1210として描画することができる。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えばASIC)によっても実現可能である。
101 カメラスキャナ
201 コントローラ部
202 カメラ部
204 操作平面
207 プロジェクタ
208 距離画像センサ部
330 タッチパネル
402 メイン制御部
409 ジェスチャー認識部
420 タッチパネルイベント検知部

Claims (7)

  1. 手入力装置であって、
    ユーザが指示する操作面の座標値を受け付ける受付手段と、
    前記操作面の空間に位置するユーザの手の外形を撮影して取得する距離画像データに基づく第1の座標値を前記操作面に対応づけた第2の座標値に変換する変換手段と、
    前記距離画像データから、前記ユーザが指示している指先の数が複数である場合、前記ユーザが最初に指示した前記操作面のタッチ座標値に近接する第1の座標値に対応する指先を操作指示指として特定する特定手段と、を備え、
    前記変換手段は、前記特定手段が特定した操作指示指に対応する第1の座標値を前記第2の座標値に変換することを特徴とする手入力装置。
  2. 前記変換手段が変換した第2の座標値を記憶する記憶手段を備え、
    前記記憶手段は、初期値として前記ユーザが最初に指示した前記操作面のタッチ座標値を記憶することを特徴とする請求項1に記載の手入力装置。
  3. 前記記憶手段に記憶される前記第2の座標値の軌跡を表示手段に描画する描画手段を備えることを特徴とする請求項1に記載の手入力装置。
  4. 手入力装置であって、
    ユーザが指示する操作面の座標値を受け付ける受付手段と、
    前記操作面の空間に位置するユーザの手の外形を撮影して取得する距離画像データから特定する第1の座標値を前記操作面に対応づけた第2の座標値に変換する変換手段と、
    前記距離画像データから、前記ユーザの手の距離画像データから特徴点を抽出する抽出手段と、
    前記抽出手段が抽出した特徴点の座標値との差分値から算出する座標値を、ユーザが最初に指示した前記操作面のタッチ座標値に近接する第1の座標値と特定する特定手段と、を備え、
    前記変換手段は、前記特定手段が特定した第1の座標値を第2の座標値に変換することを特徴とする手入力装置。
  5. 前記受付手段は、前記ユーザの指先による指示を受け付けることを特徴とする請求項1または4に記載の手入力装置。
  6. 前記受付手段は、前記ユーザが操作するペンによる指示を受け付けることを特徴とする請求項1または4に記載の手入力装置。
  7. 手入力装置の制御方法であって、
    ユーザが指示する操作面の座標値を受け付ける受付工程と、
    前記操作面の空間に位置するユーザの手の外形を撮影して取得する距離画像データに基づく第1の座標値を前記操作面に対応づけた第2の座標値に変換する変換工程と、
    前記距離画像データから、前記ユーザが指示している指先の数が複数である場合、前記ユーザが最初に指示した前記操作面のタッチ座標値に近接する第1の座標値に対応する指先を操作指示指として特定する特定工程と、を備え、
    前記変換工程は、前記特定工程で特定した操作指示指に対応する第1の座標値を前記第2の座標値に変換することを特徴とする手入力装置の制御方法。
JP2017005225A 2017-01-16 2017-01-16 手入力装置、手入力装置の制御方法 Pending JP2018116360A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017005225A JP2018116360A (ja) 2017-01-16 2017-01-16 手入力装置、手入力装置の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017005225A JP2018116360A (ja) 2017-01-16 2017-01-16 手入力装置、手入力装置の制御方法

Publications (1)

Publication Number Publication Date
JP2018116360A true JP2018116360A (ja) 2018-07-26

Family

ID=62984178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017005225A Pending JP2018116360A (ja) 2017-01-16 2017-01-16 手入力装置、手入力装置の制御方法

Country Status (1)

Country Link
JP (1) JP2018116360A (ja)

Similar Documents

Publication Publication Date Title
JP6327931B2 (ja) 画像処理装置、情報処理方法及びプログラム
US10310675B2 (en) User interface apparatus and control method
US20120169671A1 (en) Multi-touch input apparatus and its interface method using data fusion of a single touch sensor pad and an imaging sensor
TWI559174B (zh) 以手勢爲基礎之三維影像操控技術
JP6723814B2 (ja) 情報処理装置、その制御方法、プログラム、及び記憶媒体
JP6381361B2 (ja) データ処理装置、データ処理システム、データ処理装置の制御方法、並びにプログラム
JP2016103137A (ja) ユーザインタフェース装置、画像処理装置及び制御用プログラム
US10254893B2 (en) Operating apparatus, control method therefor, and storage medium storing program
JP2009251702A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2018112894A (ja) システムおよび制御方法
JP6746419B2 (ja) 情報処理装置、及びその制御方法ならびにコンピュータプログラム
JP2015198406A (ja) 画像読取装置、方法およびプログラム
JP2017162126A (ja) 入力システム、入力方法、制御用プログラム、及び記憶媒体
JP6643825B2 (ja) 装置及び方法
JP6618301B2 (ja) 情報処理装置、その制御方法、プログラム、及び記憶媒体
JP2018063555A (ja) 情報処理装置、情報処理方法及びプログラム
JP2018116360A (ja) 手入力装置、手入力装置の制御方法
JP6624861B2 (ja) 画像処理装置、制御方法およびプログラム
JP2017117372A (ja) 操作装置とその制御方法、及びプログラム
JP2018173907A (ja) 情報処理装置、および情報処理装置の制御方法、プログラム
JP2017022590A (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム
JP2017107453A (ja) 画像処理装置、制御方法、及びプログラム
Pullan et al. High Resolution Touch Screen Module
JP2019146127A (ja) 画像読取装置、その制御方法、及びプログラム
KR20160017020A (ko) 홀로그래피 터치 방법 및 프로젝터 터치 방법

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20180306