JP2016103137A - ユーザインタフェース装置、画像処理装置及び制御用プログラム - Google Patents
ユーザインタフェース装置、画像処理装置及び制御用プログラム Download PDFInfo
- Publication number
- JP2016103137A JP2016103137A JP2014240906A JP2014240906A JP2016103137A JP 2016103137 A JP2016103137 A JP 2016103137A JP 2014240906 A JP2014240906 A JP 2014240906A JP 2014240906 A JP2014240906 A JP 2014240906A JP 2016103137 A JP2016103137 A JP 2016103137A
- Authority
- JP
- Japan
- Prior art keywords
- image
- fingertip
- movement
- user interface
- input indicator
- 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
Abstract
【課題】GUI部品に対するユーザの指先の位置を非接触で検出する際の、検出誤差やノイズの影響による操作感の低下を抑える。
【解決手段】GUI部品を操作するユーザの手の形状が指さし形状かどうかS2002、S2006やタップイベント、タッチストップイベント等の操作内容を認識しS2003、認識結果に応じて、指先が動いたかどうかの閾値判定条件を大きい移動閾値または小さい移動閾値S2004、S2005、S2007、S2008に切り替える。
【選択図】図20
【解決手段】GUI部品を操作するユーザの手の形状が指さし形状かどうかS2002、S2006やタップイベント、タッチストップイベント等の操作内容を認識しS2003、認識結果に応じて、指先が動いたかどうかの閾値判定条件を大きい移動閾値または小さい移動閾値S2004、S2005、S2007、S2008に切り替える。
【選択図】図20
Description
本発明は、表示中のUI(ユーザインタフェース)部品に対する操作内容を非接触で検出するユーザインタフェース装置を搭載した画像処理装置に関する。UI部品とは、画面部品や機能部品などをいう。
文書をスキャンして電子データとして保存する画像処理装置の例として、2次元の撮像センサを用いたカメラスキャナがある。カメラスキャナは、書画台の上方にカメラが配置される。原稿を上向きに書画台に置いて撮像する構成の場合、1枚の原稿であれば置くだけで素早くスキャンすることができる。本のように厚みのある原稿も容易に書画台に置いてスキャンすることができる。また、紙や本のような文書だけでなく、立体物を書画台上に置いて立体形状をスキャンするカメラスキャナも知られている。
例えば、特許文献1に開示されたカメラスキャナは、撮像するためのカメラの他に、投光部を備える。このカメラスキャナでは、投光部から投光する計測パターンをカメラで撮像し、三角測量の原理により立体形状を測定する。その後、書画台上の置かれた物体(対象物)の立体形状を算出して平面原稿か書籍か立体物かを判別し、それぞれに応じて適切な撮影モードで撮影を行う。
例えば、特許文献1に開示されたカメラスキャナは、撮像するためのカメラの他に、投光部を備える。このカメラスキャナでは、投光部から投光する計測パターンをカメラで撮像し、三角測量の原理により立体形状を測定する。その後、書画台上の置かれた物体(対象物)の立体形状を算出して平面原稿か書籍か立体物かを判別し、それぞれに応じて適切な撮影モードで撮影を行う。
一方、プロジェクタとカメラや距離センサを用いたユーザインタフェースシステムも知られている。例えば、特許文献2で開示されたユーザインタフェースシステムでは、プロジェクタで操作画面を机上に投射し、指先でその操作画面を操作する。指先の検出には赤外線カメラなどが用いられる。そして、机上の紙書類や書籍等に印刷されたバーコードを読み取ることによって、電磁情報とのリンクを作成することができるようにしている。
また、特許文献3に開示されたユーザインタフェース装置では、色画像と距離画像が取得できるカメラ及びプロジェクタを用いている。色画像は、色や濃淡の情報を有する画像である。距離画像は、色や濃淡の情報の代わりに、カメラなどの入力装置から物体までの距離の値を持った画像である。このユーザインタフェース装置は、距離画像によりプロジェクタ投影面の形状を計測し、投影する画像を変形させることで、投影対象とプロジェクタの相対位置の変化に応じた投影を行う。このユーザインタフェース装置では、また、色画像や距離画像を用いて、物体の表面(平面)への、指先によるタッチ操作などのジェスチャー操作の認識を可能にする。さらに、平面である紙文書上を指先でポイントし、ポイントした箇所のコンテンツを特定し、ジェスチャーに応じた電子的処理を行うことができる。例えば、紙文書上の文字列を指でなぞると、なぞった文字列が選択され、プロジェクタによって投影されるというようなものである。
特許文献2や特許文献3に開示された技術では、指先での操作やジェスチャー操作の認識にタッチパネルのような接触をもって検知するセンサを用いずに、距離画像センサやカメラのように非接触で指先や手の位置を検出している。このようにすることで、より広い面積の操作範囲を検出領域とすることができ、タッチパネルに比べて設置が容易になる、という利点が生じる。
しかしながら、上記の各特許文献に開示された技術のように、非接触で指先や手の位置を検出する場合、接触式のセンサに比べて測定誤差やノイズが発生するおそれがある。そのため、検出した位置にばらつきが生じたり、不安定に変動したりしてしまうという現象が生じる場合がある。その結果、例えば指先が静止しているのに指先の検出位置が変動し、操作対象がそれによって動いてしまうという現象が発生し、ユーザが思い通りに操作しているという操作感を損ねることがあった。
本発明は、上記の問題を解消し、指先や手などの入力指示体の位置を非接触で検出する際の操作感を向上させることができるユーザインタフェース装置を提供することを主たる課題とする。
本発明のユーザインタフェース装置は、ユーザの手、指先又はユーザが操作する入力デバイスである入力指示体を撮影した画像を取得する画像取得手段と、取得した画像から前記入力指示体の位置を認識する認識手段と、前記入力指示体によって操作される複数種類のUI部品のいずれかを所定部位に表示させる表示手段と、前記認識手段で認識した入力指示体の位置、表示された前記UI部品の種類、及び、当該UI部品に対する操作内容のいずれか又はこれらの組み合わせに応じて、当該UI部品に対する前記入力指示体の動きの判定条件を切り替える操作手段と、を備えて成る装置である。
本発明によれば、UI部品の種類などに応じた入力支持体の操作内容の表示が可能となり、操作感を高めることできる。
以下、本発明の実施の形態例について図面を参照して説明する。ここでは、ユーザインタフェース装置を搭載した画像処理装置の一例となるカメラスキャナの例を説明する。
[第1実施形態]
図1は、第1実施形態に係るカメラスキャナが含まれるネットワークの構成図である。カメラスキャナ101は、イーサネット等のネットワーク104に接続して構成される。ネットワーク104には、ホストコンピュータ102及びプリンタ103も接続されている。図1のネットワークでは、ホストコンピュータ102からの指示により、カメラスキャナ101から画像を読み取るスキャン機能、スキャンデータをプリンタ103により出力するプリント機能などの実行が可能となる。また、ホストコンピュータ102を介さず、カメラスキャナ101への直接の指示により、スキャン機能、プリント機能の実行も可能である。
[第1実施形態]
図1は、第1実施形態に係るカメラスキャナが含まれるネットワークの構成図である。カメラスキャナ101は、イーサネット等のネットワーク104に接続して構成される。ネットワーク104には、ホストコンピュータ102及びプリンタ103も接続されている。図1のネットワークでは、ホストコンピュータ102からの指示により、カメラスキャナ101から画像を読み取るスキャン機能、スキャンデータをプリンタ103により出力するプリント機能などの実行が可能となる。また、ホストコンピュータ102を介さず、カメラスキャナ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により読み取り可能となっている。
カメラスキャナ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により読み取り可能となっている。
書画台204には、ターンテーブル209も設けられている。このターンテーブル209は、コントローラ部201からの指示によって回転することができる。つまり、ターンテーブル209上に置かれた物体とカメラ部202との角度を任意に変えることができる。カメラ部202は、単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像が可能なものとすることが好ましい。
なお、図2(a)に示されていないが、カメラスキャナ101は、モニタ用のLCDタッチパネル及びスピーカをさらに含んでいる。
なお、図2(a)に示されていないが、カメラスキャナ101は、モニタ用のLCDタッチパネル及びスピーカをさらに含んでいる。
図2(b)は、カメラスキャナ101における座標系の説明図である。カメラスキャナ101では、各ハードウェアデバイスに対して、カメラ座標系、距離画像座標系、プロジェクタ座標系という座標系が定義される。これらの座標系は、カメラ部202及び距離画像センサ部208のRGBカメラ部503が撮像する画像平面、あるいはプロジェクタ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は、直交座標系に対するカメラの姿勢(回転)と位置(並進)によって求まる外部パラメータによって構成される。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次元データを表しているものとする。
以上のように、(1)式と(3)式とを用いることで、直交座標系で表された3次元点群を、カメラ座標系での3次元点群座標やカメラ画像平面に変換することができる。
なお、各ハードウェアデバイスの内部パラメータ及び直交座標系に対する位置姿勢(外部パラメータ)は、公知のキャリブレーション手法により、あらかじめキャリブレーションされているものとする。以後、特に断りがなく3次元点群と表記した場合は、直交座標系における3次元データを表しているものとする。
<コントローラ部の構成例>
図3は、カメラスキャナ101の本体であるコントローラ部201のハードウェア構成例を示す図である。コントローラ部201は、システムバス301に様々な機能部品を接続して構成される。機能部品は、CPU302、RAM303、ROM304、HDD305を基本構成とするコンピュータを含む。CPU(Central Processing Unit)302は、本発明の制御用プログラムを実行することにより、コントローラ部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は、本発明の制御用プログラムを実行することにより、コントローラ部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コントローラ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の設定を行う。
カメラI/F308はカメラ部202及び距離画像センサ部208と接続され、CPU302からの指示に応じてカメラ部202から画像データを、距離画像センサ部208から距離画像データを取得してRAM303へ書き込む。また、CPU302からの制御コマンドをカメラ部202及び距離画像センサ部208へ送信し、カメラ部202及び距離画像センサ部208の設定を行う。
コントローラ部201は、ディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311及びUSBコントローラ312のうち少なくとも1つをさらに含むことができる。ディスプレイコントローラ309は、CPU302の指示に応じてディスプレイへの画像の表示を制御する。ディスプレイコントローラ309は、短焦点プロジェクタ207及びLCDタッチパネル330に接続されている。
シリアルI/F310は、シリアル信号の入出力を行う。本例では、シリアルI/F310は、ターンテーブル209と接続される。そして、CPU302の回転開始・終了及び回転角度の指示をターンテーブル209へ送信する。シリアルI/F310は、また、LCDタッチパネル330と接続される。CPU302は、LCDタッチパネル330が押下されたときに、シリアルI/F310を介して押下された座標を取得する。
オーディオコントローラ311は、スピーカ340と接続される。そして、CPU302の指示に応じて音声データをアナログ音声信号に変換し、スピーカ340を通じて音声を出力する。USBコントローラ312は、CPU302の指示に応じて外付けのUSBデバイスの制御を行う。本例では、USBコントローラ312は、USBメモリやSDカードなどの外部メモリ350に接続され、外部メモリ350へのデータの読み書きを行う。
<距離画像センサ部及び距離画像取得部>
距離画像センサ部208の構成例を図3に示す。距離画像センサ部208は、赤外線によるパターン投射方式の距離画像センサ部である。つまり、赤外線を物体に照射し、反射して帰ってくるまでの時間を測定してレンズから物体までの距離や物体の形状・寸法などを測定する。赤外線カメラ362は、物体に投射した3次元測定パターンを読みとるカメラである。RGBカメラ363は人の目に見える可視光をRGB信号で撮影するカメラである。
距離画像センサ部208の構成例を図3に示す。距離画像センサ部208は、赤外線によるパターン投射方式の距離画像センサ部である。つまり、赤外線を物体に照射し、反射して帰ってくるまでの時間を測定してレンズから物体までの距離や物体の形状・寸法などを測定する。赤外線カメラ362は、物体に投射した3次元測定パターンを読みとるカメラである。RGBカメラ363は人の目に見える可視光をRGB信号で撮影するカメラである。
<制御用プログラムによる機能構成例>
図4(a)は、CPU302が制御用プログラムを実行することによりコントローラ部201に形成される機能モジュール群401の構成の例示図である。また、図4(b)は、各機能モジュールの関係を示すシーケンス図である。制御用プログラムは、前述のようにHDD305に格納され、CPU302が起動したときにRAM303上に展開される。
機能モジュール群401のうち、メイン制御部402は制御の中心であり、コントローラ部201を図4(b)に示す手順で制御する。以下、図4(a)のほか、図4(b)も参照して、各機能モジュール群401の機能を説明する。
図4(a)は、CPU302が制御用プログラムを実行することによりコントローラ部201に形成される機能モジュール群401の構成の例示図である。また、図4(b)は、各機能モジュールの関係を示すシーケンス図である。制御用プログラムは、前述のようにHDD305に格納され、CPU302が起動したときにRAM303上に展開される。
機能モジュール群401のうち、メイン制御部402は制御の中心であり、コントローラ部201を図4(b)に示す手順で制御する。以下、図4(a)のほか、図4(b)も参照して、各機能モジュール群401の機能を説明する。
画像取得部416は、画像入力処理を行うモジュールであり、カメラ画像取得部407、距離画像取得部408を有している。ここで取得する画像は、後述するGUI部品と非接触で動く入力指示体の位置を検出可能な画像、例えば距離画像又は2次元画像である。カメラ画像取得部407は、カメラI/F308を介してカメラ部202が出力する画像を取得し、これをRAM303へ格納する。距離画像取得部408は、カメラI/F308を介して距離センサ部208が出力する距離画像を取得し、これをRAM303へ格納する。距離画像取得部408の処理の詳細については後述する。
認識処理部417は、カメラ画像取得部407及び距離画像取得部408が取得する画像(画像データ)から書画台204上の物体及びその上の入力指示体の動きを検知して認識する。そのため、ジェスチャー認識部409、物体検知部410を有している。
ジェスチャー認識部409は、取得した画像から入力指示体及びその位置やその変位(移動)などを認識する。具体的には、画像取得部416から書画台204上の画像を取得し続ける。そして、書画台204上の入力指示体の位置(座標)の変化を検出すると、それをメイン制御部402へ通知する。以後の説明では、入力指示体がユーザの手の指先であるものとして説明する。つまり、ジェスチャー認識部409は、ユーザの手の形状(指先の個数、状態を含む)、書画台204から指先の位置までの高さなどを認識する。
物体検知部410は、メイン制御部402から、後述する「物体載置待ち処理」あるいは「物体除去待ち処理」の通知を受けると、タイミング検知処理を行う。タイミング検知処理は、画像取得部416から書画台204を撮像した画像を取得し、書画台204上に物体が置かれて静止するタイミングを検知する処理である。あるいは物体が取り除かれるタイミングを検知する処理である。ジェスチャー認識部409、物体検知部410の処理の詳細については、それぞれ後述する。
ジェスチャー認識部409は、取得した画像から入力指示体及びその位置やその変位(移動)などを認識する。具体的には、画像取得部416から書画台204上の画像を取得し続ける。そして、書画台204上の入力指示体の位置(座標)の変化を検出すると、それをメイン制御部402へ通知する。以後の説明では、入力指示体がユーザの手の指先であるものとして説明する。つまり、ジェスチャー認識部409は、ユーザの手の形状(指先の個数、状態を含む)、書画台204から指先の位置までの高さなどを認識する。
物体検知部410は、メイン制御部402から、後述する「物体載置待ち処理」あるいは「物体除去待ち処理」の通知を受けると、タイミング検知処理を行う。タイミング検知処理は、画像取得部416から書画台204を撮像した画像を取得し、書画台204上に物体が置かれて静止するタイミングを検知する処理である。あるいは物体が取り除かれるタイミングを検知する処理である。ジェスチャー認識部409、物体検知部410の処理の詳細については、それぞれ後述する。
スキャン処理部418は、実際に物体のスキャンを行うモジュールであり、平面原稿画像撮影部411を有している。平面原稿画像撮影部411は平面原稿の形状に適した処理を実行し、それに応じた形式のデータを出力する。この機能モジュールの詳細は、後述する。
ユーザインタフェース部403は、GUI部品生成表示部414とGUI部品操作処理部415とを有している。GUI部品生成表示部414は、メイン制御部402からの要求を受け、メッセージやボタン等、指先で操作される複数種類のGUI部品を生成する。GUI部品は、UI部品をグラフィックで表現したものである。そして、表示部406へ生成したGUI部品の一部又は全部の表示を要求する。
表示部406は、要求されたGUI部品を所定部位に表示させる。また、必要に応じて、表示中のGUIに対する指先の移動軌跡などの描画を行う。具体的には、ディスプレイコントローラ309を介して、短焦点プロジェクタ207もしくはLCDタッチパネル330へ要求されたGUI部品の表示、あるいは、移動軌跡の描画などを行う。プロジェクタ207は、書画台204に向けて設置されている。そのため、書画台204、書画台204に載置されたシート状又は立体状の物体の表面にGUI部品などを投射することができる。あるいは、これらの近傍の面上に投射させることができる。これにより書画台204又は物体の表面などにGUI部品などが表示されるので、直感的な操作が可能となる。
表示部406は、要求されたGUI部品を所定部位に表示させる。また、必要に応じて、表示中のGUIに対する指先の移動軌跡などの描画を行う。具体的には、ディスプレイコントローラ309を介して、短焦点プロジェクタ207もしくはLCDタッチパネル330へ要求されたGUI部品の表示、あるいは、移動軌跡の描画などを行う。プロジェクタ207は、書画台204に向けて設置されている。そのため、書画台204、書画台204に載置されたシート状又は立体状の物体の表面にGUI部品などを投射することができる。あるいは、これらの近傍の面上に投射させることができる。これにより書画台204又は物体の表面などにGUI部品などが表示されるので、直感的な操作が可能となる。
ユーザインタフェース部403のGUI部品操作処理部415は、表示されたGUI部品の種類を特定し、それに対する操作を受け付ける。その際、ジェスチャー認識部409で認識した指先の位置、表示されたGUI部品の種類、及び、当該GUI部品に対する操作内容のいずれか又はこれらの組み合わせに応じて、当該GUI部品に対する指先の動きの判定条件を切り替える。
具体的には、ジェスチャー認識部409から認識したタッチ、タップ、ムーブ等のジェスチャー操作の内容、あるいはシリアルI/F310を介したLCDタッチパネル330などから入力操作の内容を取得する。その際、操作座標(操作される部分での指先の相対座標)も取得する。そして、例えば以下の判定により動きの判定条件を切り替える。
(i)GUI部品において指先が静止している状態を移動の判定に含めるか否か。
(ii)GUI部品からの指先の高さが予め決めた基準値以上かどうか。
(iii)操作する手の形状が所定形状であるか否か。
(iv)所定部位からの指先の位置の高さが基準値以下の指先の個数。1つであればシングルタッチ、複数であればマルチタッチとなる。
動きの判定結果は、メイン制御部402へ通知される。これにより、メイン制御部402は、GUI部品に対するユーザの操作内容を把握することができる。
なお、入力操作の内容には、移動軌跡の表示の有無も含まれる。
(i)GUI部品において指先が静止している状態を移動の判定に含めるか否か。
(ii)GUI部品からの指先の高さが予め決めた基準値以上かどうか。
(iii)操作する手の形状が所定形状であるか否か。
(iv)所定部位からの指先の位置の高さが基準値以下の指先の個数。1つであればシングルタッチ、複数であればマルチタッチとなる。
動きの判定結果は、メイン制御部402へ通知される。これにより、メイン制御部402は、GUI部品に対するユーザの操作内容を把握することができる。
なお、入力操作の内容には、移動軌跡の表示の有無も含まれる。
動きの判定条件とは、例えば移動があった、静止した、静止後に移動した、移動後に静止したなどと判定するための条件である。判定には、RAM303に保持された判定閾値あるいは所定の基準値などを用いる。
判定閾値は、例えば、その大きさを超えたときに指先が移動したと判定するための第1移動閾値と、第1移動閾値よりも大きい第2移動閾値である。これらの移動閾値は、予め誤差等を評価した上で決めておく。基準値は、表示中のGUI部品からの指先の高さが、当該GUI部品と指先とが関連付けられる臨界値であり、ホバー操作(GUI部品の上空での操作)のときなどに使用される。
判定閾値は、例えば、その大きさを超えたときに指先が移動したと判定するための第1移動閾値と、第1移動閾値よりも大きい第2移動閾値である。これらの移動閾値は、予め誤差等を評価した上で決めておく。基準値は、表示中のGUI部品からの指先の高さが、当該GUI部品と指先とが関連付けられる臨界値であり、ホバー操作(GUI部品の上空での操作)のときなどに使用される。
GUI部品操作処理部415は、また、LCDタッチパネル330に移動軌跡が表示されるときに、それを滑らかに描画するための平滑化機能を有している。平滑化には既知の手法を用いることができる。例えば指先の位置(座標)を点で捉え、複数点の移動平均で軌跡を滑らかにする。一般に、平滑化を行うと、指先の位置に対する表示の追従性が低下し、表示が遅れてしまう。そのため、本実施形態では、5点あるいはそれ以上の移動平均で平滑化する機能を「第1平滑化機能」と呼ぶ。また、このように滑らかさを重視した平滑化を「強い平滑化」と呼ぶ。他方、平滑化を行わないか、あるいは3点程度の移動平均で平滑化する機能を「第2平滑化機能」と呼ぶ。また、このように滑らかさよりも追従性を重視した平滑化を「弱い平滑化」と呼ぶ。
GUI部品操作処理部415は、指先の位置が関連付けられるGUI部品の種類、移動軌跡の表示の有無、手の形状、指先の個数などに応じて、第1平滑化機能と第2平滑化機能とを切り替えて実行する。具体例については後述する。
GUI部品操作処理部415は、指先の位置が関連付けられるGUI部品の種類、移動軌跡の表示の有無、手の形状、指先の個数などに応じて、第1平滑化機能と第2平滑化機能とを切り替えて実行する。具体例については後述する。
ネットワーク通信部404は、ネットワークI/F306を介して、ネットワーク104上の他の機器とTCP/IPによる通信を行う。データ管理部405は、機能モジュール群401の動作時に生成された作業データを含む様々なデータをHDD305上の所定の領域へ保存し、管理する。保存されるデータは、例えばスキャン処理部418(平面原稿画像撮影部411)が生成したスキャンデータなどである。
距離画像取得部408の動作を図5及び図6を参照して説明する。図5は距離画像取得部408が実行する処理手順説明図である。図6(a)〜(c)はパターン投射方式による距離画像の計測原理の説明図である。
図5を参照し、距離画像取得部408は、処理を開始すると、図6(a)に示すように、赤外線パターン投射部361を用いて赤外線による3次元形状測定パターン522を物体621に投射する(S501)。また、RGBカメラ363を用いて対象物を撮影したRGB画像523及び、赤外線カメラ362を用いてS501で投射した3次元測定パターン522を撮影した赤外線カメラ画像624を取得する(S502)。
図5を参照し、距離画像取得部408は、処理を開始すると、図6(a)に示すように、赤外線パターン投射部361を用いて赤外線による3次元形状測定パターン522を物体621に投射する(S501)。また、RGBカメラ363を用いて対象物を撮影したRGB画像523及び、赤外線カメラ362を用いてS501で投射した3次元測定パターン522を撮影した赤外線カメラ画像624を取得する(S502)。
なお、赤外線カメラ362とRGBカメラ363とでは設置位置が異なる。つまり、図6(a)に示すように、それぞれで撮影される2つのRGBカメラ画像623及び赤外線カメラ画像624の撮影領域が異なる。そこで、距離画像取得部408は、赤外線カメラ362の座標系からRGBカメラ363の座標系への座標系変換を用いて赤外線カメラ画像624をRGBカメラ画像623の座標系に合わせる(S503)。赤外線カメラ362とRGBカメラ363の相対位置やそれぞれの内部パラメータは、事前のキャリブレーション処理により既知であるとする。
その後、距離画像取得部408は、図6(b)に示すように、3次元測定パターン622とS503で座標変換を行った赤外線カメラ画像624間での対応点を抽出する(S504)。例えば、赤外線カメラ画像624上の1点を3次元形状測定パターン622上から探索し、同一の点が検出された場合に対応付けを行う。あるいは、赤外線カメラ画像624の画素の周辺のパターンを3次元形状測定パターン622上から探索し、一番類似度が高い部分と対応付けてもよい。
対応点を抽出すると、距離画像取得部408は、赤外線パターン投射部361と赤外線カメラ362を結ぶ直線を基線625として三角測量の原理を用いて計算を行うことにより、赤外線カメラ362からの距離を算出する(S505)。S504の処理で対応付けができた画素については、赤外線カメラ362からの距離を算出し、これを画素値として保存する。対応付けができなかった画素については、距離の計測ができなかった部分として無効値を保存する。これをS503で座標変換を行った赤外線カメラ画像624の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。
対応点を抽出すると、距離画像取得部408は、赤外線パターン投射部361と赤外線カメラ362を結ぶ直線を基線625として三角測量の原理を用いて計算を行うことにより、赤外線カメラ362からの距離を算出する(S505)。S504の処理で対応付けができた画素については、赤外線カメラ362からの距離を算出し、これを画素値として保存する。対応付けができなかった画素については、距離の計測ができなかった部分として無効値を保存する。これをS503で座標変換を行った赤外線カメラ画像624の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。
その後、距離画像取得部408は、図6(c)に示すように、距離画像の各画素にRGBカメラ画像625の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)方式を用いても構わない。
また、第1実施形態では、距離画像センサ部208として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサ部を用いることも可能である。例えば、2つのRGBカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するTOF(Time of Flight)方式を用いても構わない。
<ジェスチャー認識部>
ジェスチャー認識部409の処理の詳細を、図7を参照して説明する。図7において、ジェスチャー認識部409は、処理を開始すると、初期化処理を行う(S701)。すなわち、距離画像取得部408から距離画像を1フレーム取得し、認識環境を整える。ジェスチャー認識部409は、動作開始時には書画台204上に物体が置かれていない状態なので、初期状態として書画台204の平面の認識を行う。つまり、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル(以降、書画台204の平面パラメータと呼ぶ)を算出し、これをRAM303に保存する。
ジェスチャー認識部409の処理の詳細を、図7を参照して説明する。図7において、ジェスチャー認識部409は、処理を開始すると、初期化処理を行う(S701)。すなわち、距離画像取得部408から距離画像を1フレーム取得し、認識環境を整える。ジェスチャー認識部409は、動作開始時には書画台204上に物体が置かれていない状態なので、初期状態として書画台204の平面の認識を行う。つまり、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル(以降、書画台204の平面パラメータと呼ぶ)を算出し、これをRAM303に保存する。
初期化処理を終えると、ジェスチャー認識部409は、書画台204上に存在する物体の3次元点群を取得する(S702)。具体的には、距離画像取得部408から距離画像と3次元点群を1フレーム取得する(S721)。また、書画台204の平面パラメータを用いて、取得した3次元点群から書画台204を含む平面にある点群を除去する(S722)。その後、ジェスチャー認識部409は、取得した3次元点群からユーザの手の形状を認識し、指先検出処理を行う(S703)。より具体的には、S731〜S734の処理を実行する。
ここで、S731〜S734の指先検出処理の概要を図8を参照して説明する。ジェスチャー認識部409は、S702で取得した3次元点群から、書画台204を含む平面から所定の高さ以上にある、肌色の3次元点群を抽出する。これにより、図8(a)に示す手の3次元点群801を抽出する(S731)。その後、ジェスチャー認識部409は、抽出した手の3次元点群801を、書画台204の平面に投影した2次元画像を生成し、その手の外形を検出する(S732)。そして、検出した手の外形から手重心座標を算出し、図8(a)に3次元点群802を求める。投影は、点群の各座標を、書画台204の平面パラメータを用いて投影すればよい。また、図8(b)に示すように、投影した3次元点群から、xy座標の値だけを取り出すことにより、z軸方向から見た2次元画像803として扱うことができる。このとき、手の3次元点群の各点が、書画台204の平面に投影した2次元画像の各座標のどれに対応するかを記憶しておく。
その後、ジェスチャー認識部409は、図8(c)に示すように、検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する(S733)。図8(c)は、外形の曲率から指先を検出する方法を模式的に表した図である。この図では、書画台204の平面に投影された2次元画像803の外形を表す点804の一部が示されている。
ここで、外形を表す点804のうち、隣り合う5個の点を含むように円を描くことを考える。円805、807が、その例である。このような円を、全ての外形の点に対して順に描き、その直径(例えば806、808)が所定の値より小さい(曲率が小さい)ことを以て、指先とする。この例では、隣り合う5個の点としたが、その数は限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。
ここで、外形を表す点804のうち、隣り合う5個の点を含むように円を描くことを考える。円805、807が、その例である。このような円を、全ての外形の点に対して順に描き、その直径(例えば806、808)が所定の値より小さい(曲率が小さい)ことを以て、指先とする。この例では、隣り合う5個の点としたが、その数は限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。
指先を検出すると、ジェスチャー認識部409は、検出した指先の個数及び各指先の座標を算出する(S734)。ジェスチャー認識部409は、書画台204に投影した2次元画像の各点と、手の3次元点群の各点の対応関係を記憶しているため、各指先の3次元座標を得ることができる。ジェスチャー認識部409は、また、所定形状、例えば検出した指先の個数と各指先の座標、さらに手全体の重心座標から、当該手の形状が1本の指のみを立て、他の指を握りこんだ指さし形状であるかどうかを判定する。
本例では、3次元点群から2次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、RGB画像の肌色領域から手の領域を抽出し、上述と同様の方法(外形の曲率計算等)で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標はRGB画像や距離画像といった、2次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の3次元座標に変換する必要がある。このとき、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
本例では、3次元点群から2次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、RGB画像の肌色領域から手の領域を抽出し、上述と同様の方法(外形の曲率計算等)で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標はRGB画像や距離画像といった、2次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の3次元座標に変換する必要がある。このとき、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
図7に戻り、ジェスチャー認識部409は、検出した手重心座標及び指先座標に変化があったかどうかを判定する(S704)。変化ありと判定した場合(S704:Y)、ジェスチャー認識部409は、検出した手重心座標及び指先座標、手の形状が所定形状(例えば指さし形状か否か)をメイン制御部402へ通知する(S705)。その後、S702へ戻ってジェスチャー認識処理を繰り返す。一方、S704で検出した手重心座標及び指先座標に変化が無いと判定した場合(S704:N)、ジェスチャー認識部409は、S705の処理は行わずに、直ちにS702へ戻り、ジェスチャー認識処理を繰り返す。
<物体検知部>
次に、図9を参照して、物体検知部410の詳細処理を説明する。図9(a)は、物体検知部410が実行する処理の全体手順説明図である。同(b)は物体載置検知処理の手順説明図である。同(c)は物体除去検知処理の手順説明図である。
物体検知部410は、処理を開始すると、初期化処理を行う(S901)。初期化処理は、S911〜S913の処理である。すなわち、カメラ画像取得部407からカメラ画像を、距離画像取得部408から距離画像をそれぞれ1フレーム取得する(S911)。そして、取得したカメラ画像を前フレームカメラ画像として保存する(S912)。また、取得したカメラ画像及び距離画像を書画台背景カメラ画像及び書画台背景距離画像としてそれぞれ保存する(S913)。以降、「書画台背景カメラ画像」及び「書画台背景距離画像」と記載した場合は、ここで取得したカメラ画像及び距離画像のことを指す。
次に、図9を参照して、物体検知部410の詳細処理を説明する。図9(a)は、物体検知部410が実行する処理の全体手順説明図である。同(b)は物体載置検知処理の手順説明図である。同(c)は物体除去検知処理の手順説明図である。
物体検知部410は、処理を開始すると、初期化処理を行う(S901)。初期化処理は、S911〜S913の処理である。すなわち、カメラ画像取得部407からカメラ画像を、距離画像取得部408から距離画像をそれぞれ1フレーム取得する(S911)。そして、取得したカメラ画像を前フレームカメラ画像として保存する(S912)。また、取得したカメラ画像及び距離画像を書画台背景カメラ画像及び書画台背景距離画像としてそれぞれ保存する(S913)。以降、「書画台背景カメラ画像」及び「書画台背景距離画像」と記載した場合は、ここで取得したカメラ画像及び距離画像のことを指す。
初期化処理を終えると、物体検知部410は、物体が書画台204上に置かれたことの検知(物体載置検知処理)を行う(S902)。処理の詳細は、図9(b)を用いて後述する。物体検知部410は、また、S902で載置を検知した書画台204上の物体が除去されることの検知(物体除去検知処理)を行い(S903)、処理を終える。物体除去検知処理の詳細は図9(c)を用いて後述する。
図9(b)を参照して物体載置検知処理(S902)の詳細手順を説明する。物体検知部410は、物体載置検知処理を開始すると、カメラ画像取得部407からカメラ画像を1フレーム取得する(S921)。そして、取得したカメラ画像と前フレームカメラ画像との差分を計算してその絶対値を合計した差分値を算出する(S922)。その後、算出した差分値が予め決めておいた所定値以上かどうかを判定する(S923)。
算出した差分値が所定値未満の場合(S923:N)、物体検知部410は、書画台204上には物体が無いと判定し、現フレームのカメラ画像を前フレームカメラ画像として保存する(S928)。その後、S921へ戻って処理を続ける。S923において差分値が所定値以上の場合(S923:Y)、物体検知部410は、S921で取得したカメラ画像と前フレームカメラ画像との差分値を、S922と同様に算出する(S924)。そして、算出した差分値が予め決めておいた所定値以下であるかどうかを判定する(S925)。S925において算出した差分値が所定値よりも大きい場合(S925:N)、上述したS928へ移行する。
算出した差分値が所定値未満の場合(S923:N)、物体検知部410は、書画台204上には物体が無いと判定し、現フレームのカメラ画像を前フレームカメラ画像として保存する(S928)。その後、S921へ戻って処理を続ける。S923において差分値が所定値以上の場合(S923:Y)、物体検知部410は、S921で取得したカメラ画像と前フレームカメラ画像との差分値を、S922と同様に算出する(S924)。そして、算出した差分値が予め決めておいた所定値以下であるかどうかを判定する(S925)。S925において算出した差分値が所定値よりも大きい場合(S925:N)、上述したS928へ移行する。
S925において算出した差分値が所定値以下の場合(S925:Y)、物体検知部410は、S925が連続してYとなった回数から、差分値が所定値以下かどうかを判定する(S926)。つまり書画台204上の物体が静止した状態が予め決めておいたフレーム数続いたかどうかを判定する。S926において書画台204上の物体が静止した状態が予め決めておいたフレーム数続いていないと判定した場合(S926:N)、上述したS928へ移行する。S926において書画台204上の物体が静止した状態が予め決めておいたフレーム数続いたと判定した場合(S926:Y)、物体検知部410は、物体が置かれたことをメイン制御部402へ通知し(S927)、物体載置検知処理を終了する。
図9(c)を参照してS903の物体除去検知処理の詳細手順を説明する。物体除去検知処理を開始すると、物体検知部410は、カメラ画像取得部407からカメラ画像を1フレーム取得する(S931)。そして、取得したカメラ画像と書画台背景カメラ画像との差分値を算出する(S932)。その後、算出した差分値が予め決めておいた所定値以下かどうかを判定する(S933)。算出した差分値が予め決めておいた所定値よりも大きい場合(S933:N)、書画台204上にまだ物体が存在することを表すため、S931へ戻って処理を続ける。S933において算出した差分値が予め決めておいた所定値以下の場合(S933:Y)、書画台204上の物体が無くなったことを表すため、物体除去をメイン制御部402へ通知し(S934)、物体除去検知処理を終了する。
<平面原稿画像撮影部>
次に、図10及び図11を参照して、平面原稿画像撮影部411が実行する処理の内容を説明する。図10は処理の全体手順説明図であり、図11は処理の概要を説明するための模式図である。
平面原稿画像撮影部411は、処理を開始すると、カメラ画像取得部407を介してカメラ部202からの画像を1フレーム取得する(S1001)。カメラ部202の座標系は図2(b)で示したように書画台204に正対していない。そのため、このときの撮影画像は、図11(a)に示すように物体1101、書画台204ともに歪んでいる。
そこで、平面原稿画像撮影部411は、書画台背景カメラ画像とS1001で取得したカメラ画像との画素毎の差分を算出し、差分画像を生成した上で、差分のある画素が黒、差分の無い画素が白となるように二値化する(S1002)。ここで生成した差分画像は、図11(b)の領域1102のように、物体1101の領域が黒色である(差分がある)画像となる。
次に、図10及び図11を参照して、平面原稿画像撮影部411が実行する処理の内容を説明する。図10は処理の全体手順説明図であり、図11は処理の概要を説明するための模式図である。
平面原稿画像撮影部411は、処理を開始すると、カメラ画像取得部407を介してカメラ部202からの画像を1フレーム取得する(S1001)。カメラ部202の座標系は図2(b)で示したように書画台204に正対していない。そのため、このときの撮影画像は、図11(a)に示すように物体1101、書画台204ともに歪んでいる。
そこで、平面原稿画像撮影部411は、書画台背景カメラ画像とS1001で取得したカメラ画像との画素毎の差分を算出し、差分画像を生成した上で、差分のある画素が黒、差分の無い画素が白となるように二値化する(S1002)。ここで生成した差分画像は、図11(b)の領域1102のように、物体1101の領域が黒色である(差分がある)画像となる。
その後、平面原稿画像撮影部411は、差分領域1002を用いて、図11(c)のように物体1101のみの画像を抽出する(S1003)。また、抽出した原稿領域画像に対して階調補正を行う(S1004)。その後、抽出した原稿領域画像に対してカメラ座標系から書画台204への射影変換を行い、図11(d)のように書画台204の真上から見た画像1103に変換する(S1005)。ここで用いる射影変換パラメータは、ジェスチャー認識部409の処理において、前述した図7(b)のS712で算出した平面パラメータとカメラ座標系から求めることができる。
なお、図11(d)に示したように、書画台204上への原稿の置き方により、ここで得られる画像1103は傾いていることがある。そこで、平面原稿画像撮影部411は、画像1103を矩形近似してからその矩形が水平になるように回転させ(S1006)、図11(e)で示した画像1104のように傾きの無い画像を得る。また、図11(f)に示すように、基準ラインに対しての矩形の傾きθ1及びθ2を算出し、傾きが小さい方(ここではθ1)を画像1103の回転角度として決定する。あるいは、図11(g)及び図11(h)に示すように、画像1103中に含まれる文字列に対してOCR処理を行い、文字列の傾きから画像1103の回転角度の算出及び天地判定処理をしてもよい。
その後、平面原稿画像撮影部411は、抽出した画像1104に対して、予め決めておいた画像フォーマット(例えばJPEG、TIFF、PDF等)に合わせて圧縮及びファイルフォーマット変換を行う(S1007)。そして、データ管理部405を介してHDD305の所定の領域へファイルとして保存し、平面原稿画像撮影部411の処理を終了する。
<GUI部品操作処理部>
GUI部品操作処理部415の処理について説明する。GUI部品操作処理部415は、図13に示す領域情報テーブル1301とイベントハンドテーブル1302を、GUI部品表示生成部414が生成した各GUI部品毎に保持する。
この領域情報テーブル1301とイベントハンドラテーブル1302は、メイン制御部402がGUI部品生成表示部414を介してGUI部品を生成するときに、メイン制御部402によって同時に生成され、GUI部品操作処理部415に登録される。
領域情報テーブル1301は、そのGUI部品が画面上で占めている領域の座標とサイズを保持する。イベントハンドラテーブル1302は、タッチやムーブ等のイベント発生に応じて実行する処理を保持する。GUI部品操作処理部415は、各イベントが発生しているかどうかを判定し、発生している場合にはイベントハンドラテーブル1302の対応するイベントハンドラを実行する。
GUI部品操作処理部415の処理について説明する。GUI部品操作処理部415は、図13に示す領域情報テーブル1301とイベントハンドテーブル1302を、GUI部品表示生成部414が生成した各GUI部品毎に保持する。
この領域情報テーブル1301とイベントハンドラテーブル1302は、メイン制御部402がGUI部品生成表示部414を介してGUI部品を生成するときに、メイン制御部402によって同時に生成され、GUI部品操作処理部415に登録される。
領域情報テーブル1301は、そのGUI部品が画面上で占めている領域の座標とサイズを保持する。イベントハンドラテーブル1302は、タッチやムーブ等のイベント発生に応じて実行する処理を保持する。GUI部品操作処理部415は、各イベントが発生しているかどうかを判定し、発生している場合にはイベントハンドラテーブル1302の対応するイベントハンドラを実行する。
ここで、各イベントについて簡単に説明しておく。
(a)タッチイベント:書画台204からの指先の高さが予め決めた所定の基準値未満まで接近したとき、タッチしていると判定し、タッチイベントありとする。ここで、基準値はできるかぎり小さいことが望ましいが、指先の位置の検出精度を予め評価し、決定される。
(b)リリースイベント:タッチ中に書画台204からの指先の高さが、上記基準値以上に離れたときに、リリースイベントありと判定する。
(c)タップイベント:所定の時間内に指先がタッチからリリースへ変化したときにタップイベントありと判定する。
(d)タッチストップイベント:タッチしている状態のまま、書画台204に平行な平面内で移動閾値以上指先の位置が変化しなかったとき、静止していると判定し、タッチストップイベントありとする。
(e)タッチムーブイベント:タッチしている状態のまま、書画台204に平行な平面内で移動閾値以上指先の位置が変化したとき、移動ありと判定し、タッチムーブイベントありとする。
(f)ホバーストップイベント:書画台204からの指先の高さが、上記の基準値以上にあってタッチと判定されていないときに、所定の時間以上指先が静止したら、指先が静止したと判定し、ホバーストップイベントありとする。
(g)ホバームーブイベント:指先の書画台204からの高さが、上記の基準値以上にあってタッチと判定されていないときに、移動閾値以上指先の位置が移動したらホバームーブイベントありと判定する。
(a)タッチイベント:書画台204からの指先の高さが予め決めた所定の基準値未満まで接近したとき、タッチしていると判定し、タッチイベントありとする。ここで、基準値はできるかぎり小さいことが望ましいが、指先の位置の検出精度を予め評価し、決定される。
(b)リリースイベント:タッチ中に書画台204からの指先の高さが、上記基準値以上に離れたときに、リリースイベントありと判定する。
(c)タップイベント:所定の時間内に指先がタッチからリリースへ変化したときにタップイベントありと判定する。
(d)タッチストップイベント:タッチしている状態のまま、書画台204に平行な平面内で移動閾値以上指先の位置が変化しなかったとき、静止していると判定し、タッチストップイベントありとする。
(e)タッチムーブイベント:タッチしている状態のまま、書画台204に平行な平面内で移動閾値以上指先の位置が変化したとき、移動ありと判定し、タッチムーブイベントありとする。
(f)ホバーストップイベント:書画台204からの指先の高さが、上記の基準値以上にあってタッチと判定されていないときに、所定の時間以上指先が静止したら、指先が静止したと判定し、ホバーストップイベントありとする。
(g)ホバームーブイベント:指先の書画台204からの高さが、上記の基準値以上にあってタッチと判定されていないときに、移動閾値以上指先の位置が移動したらホバームーブイベントありと判定する。
タッチムーブイベントによって細かい操作(例えば指先による小さい図形の描画等)を行うためには、上述した「移動あり」と判定するための指先の位置の移動閾値を、0に近い小さな値にすることが望ましい。しかしながら、本実施形態では、距離画像センサ部208を用いて非接触で指先の位置の検出を行っているため、測定誤差やノイズの影響により検出位置がフレーム毎にばらついてしまう場合がある。例えば、タップのように指先の書画台204に対する高さが変化すると、ユーザが書画台204に平行な平面に対しては同じ位置を保っているつもりでも、指先の検出位置が変化することがある。
そこで、本実施形態では、タッチムーブイベントとタッチストップイベントまたはタップイベントを同時に使用するGUI部品上では、ノイズや測定誤差を考慮した処理を行う。すなわち、表示されたGUI部品において指先が静止している状態を移動の判定に含めない場合は、上述した第1移動閾値を用いて指先が移動したかどうかを判定する。例えば、操作にタッチムーブイベントのみを使い、タッチストップイベントやタップイベントを使用しないGUI部品上では、細かい操作を可能とする処理を行うため、第1移動閾値を用いる。
一方、静止している状態を動きの判定に含める場合は第2移動閾値(十分静止判定ができる値)を用いて指先が移動したかどうかを判定する。例えば、表示されたGUI部品からの指先の高さが予め決めた所定の基準値以上である場合は第2移動閾値を用いて指先が移動したかどうかを判定する。以下の説明では、第1移動閾値を「小さい移動閾値」、第2移動閾値を「大きい移動閾値」とし、両者を区別する必要がない場合は単に「移動閾値」と呼ぶ。
一方、静止している状態を動きの判定に含める場合は第2移動閾値(十分静止判定ができる値)を用いて指先が移動したかどうかを判定する。例えば、表示されたGUI部品からの指先の高さが予め決めた所定の基準値以上である場合は第2移動閾値を用いて指先が移動したかどうかを判定する。以下の説明では、第1移動閾値を「小さい移動閾値」、第2移動閾値を「大きい移動閾値」とし、両者を区別する必要がない場合は単に「移動閾値」と呼ぶ。
また、上述した指先の位置検出の測定誤差・ノイズのため、指先で滑らかな曲線を描こうとした場合でも、結果の曲線にガタつきが発生してしまうことがある。そこで、指先の移動軌跡を描画する場合は、軌跡内の指先座標に対して平滑化を行い、軌跡を滑らかにする。上述した通り、本実施形態では、GUI部品操作処理部415において、強い平滑化を行う第1平滑化機能と、弱い平滑化を行う第2平滑化機能とを切り替えて実行する。
図12は、GUI部品操作処理部415が実行する処理の手順説明図である。GUI部品操作処理部415は、処理を開始すると、ジェスチャー認識部409が通知した手重心座標及び指先座標(手指座標情報)を、メイン制御部402を介して受信する(S1201)。次に、手指座標情報から、操作しているGUI部品の特定を行う(S1202)。ここでは、領域情報テーブル1302から手指座標情報が含まれるGUI部品を特定する。
次に、GUI部品操作処理部415は、特定したGUI部品上で指先が移動したかどうかを判定するための、移動閾値決定処理を行う(S1203)。この処理は、具体的には、S1231〜1235の処理である。すなわち、後述するS1204の発生イベント判定処理において、前回の判定時にタッチ中と判定したかどうかを判定する(S1231)。S1231において、前回タッチ中と判定した場合(S1231:Y)、タッチ用の閾値を決定するために、S1232へ進む。S1232では、上述したイベントハンドラテーブル1302から、タップイベントまたはタッチストップイベントと、タッチムーブイベントの両方のハンドラが登録されているかどうかを判定する。S1232でタップイベントとタッチムーブイベントの両方のハンドラが登録されていると判定した場合(S1232:Y)、大きい移動閾値の使用を決定する(S1233)。これにより、タップの際の指先の位置検出誤差によってタッチムーブイベントが発生することがなくなる。S1232でタップイベントとタッチムーブイベントの両方のハンドラが登録されていないと判定した場合(S1232:N)、タッチムーブイベントの発生を早めるために、S1233と比較して小さい移動閾値の使用を決定する(S1234)。
S1231において、前回タッチ中でなかったと判定した場合(S1231:N)、GUI部品操作処理部415は、ホバー用の閾値を決定するために、大きい移動閾値の使用を決定する(S1235)。ホバー時には、静止した状態になったときに静止状態を安定して検出し続けることができるように、S1233と同じく大きい移動閾値の使用を決定するのである。
S1203の処理を終えると、GUI部品操作処理部415は、発生イベント判定処理を行う(S1204)。この処理は、具体的には、S1241〜S1253の処理である。まず、前回の発生イベント判定処理時時にタッチ中と判定したかどうかを判定する(S1241)。前回タッチ中と判定していなければ(S1241:N)、現在の指先座標の書画台204からの高さが所定の閾値以下であるかどうかを用いて、現在タッチ中かどうかを判定する(S1242)。現在タッチ中であると判定したら(S1242:Y)、タッチイベント発生と判定し(S1243)、発生イベント判定処理を終了する。
S1242で現在タッチ中でないと判定したら(S1242:N)、前回のホバーストップイベント発生判定時から、S1235で決定した移動閾値以上移動したかどうかを判定する(S1244)。S1244で移動閾値以上移動したと判定したら(S1244:Y)、ホバームーブイベント発生と判定して(S1247)、発生イベント判定処理を終了する。S1244で移動閾値以上移動していないと判定したら(S1244:N)、移動閾値以上移動しないまま所定時間経過したかどうかを判定する(S1245)。S1245で所定時間経過していないと判定したら(S1245:N)、イベント発生の判定は行わずに発生イベント判定処理を終了する。S1245で所定時間経過したと判定したら(S1245:Y)、S1246へ進みホバーストップイベント発生と判定して(S1246)、発生イベント判定処理を終了する。
S1242で現在タッチ中でないと判定したら(S1242:N)、前回のホバーストップイベント発生判定時から、S1235で決定した移動閾値以上移動したかどうかを判定する(S1244)。S1244で移動閾値以上移動したと判定したら(S1244:Y)、ホバームーブイベント発生と判定して(S1247)、発生イベント判定処理を終了する。S1244で移動閾値以上移動していないと判定したら(S1244:N)、移動閾値以上移動しないまま所定時間経過したかどうかを判定する(S1245)。S1245で所定時間経過していないと判定したら(S1245:N)、イベント発生の判定は行わずに発生イベント判定処理を終了する。S1245で所定時間経過したと判定したら(S1245:Y)、S1246へ進みホバーストップイベント発生と判定して(S1246)、発生イベント判定処理を終了する。
S1241において、前回タッチ中と判定していれば(S1241:Y)、現在タッチ中かどうかを判定する(S1248)。S1248において、現在タッチ中と判定したら(S1248:Y)、タッチイベント発生後、S1233またはS1234で決定した移動閾値以上移動したかどうかを判定する(S1249)。S1249で移動閾値以上移動したと判定したら(S1249:Y)、タッチムーブイベント発生と判定して(S1250)発生イベント判定処理を終了する。S1249で移動閾値以上移動していないと判定したら(S1249:N)、イベント発生の判定は行わずに発生イベント判定処理を終了する。S1248において現在タッチ中でないと判定したら(S1248:N)、リリースイベント発生と判定する(S1251)。続いてS1243のタッチイベント発生判定時とS1251のリリースイベント発生判定時の指先座標の差がS1233またはS1234で決定した移動閾値以下であるかどうかを判定する(S1252)。S1252で移動閾値以下であると判定したら(S1252:Y)タップイベント発生と判定し(S1253)、発生イベント判定処理を終了する。S1252で移動閾値以上であると判定したら(S1252:N)、タップイベント発生の判定は行わずに、発生イベント判定処理を終了する。
S1204の発生イベント判定処理を終了すると、GUI部品操作処理部415は、移動軌跡平均化処理を行う(S1205)。この処理では、まず、移動軌跡の描画があるかどうかを判定する(S1261)。ここで、移動軌跡の描画があるかどうかは、イベントハンドラテーブル1302のタッチムーブイベント及びホバームーブイベントのフィールドにフラグとして設定される。この設定は、メイン制御部402が行う。
S1261において移動軌跡の描画があると判定したら(S1261:Y)、指先の位置座標の軌跡に対して弱い平滑化を行う(S1262)。S1261で軌跡の描画無しと判定したら(S1261:N)、より軌跡を滑らかにするために、強い平滑化を行う(S1263)。このようにすることで、移動軌跡の描画をなめらかに行うことができる一方、指先座標に対する描画表示は遅れることになる。そこで、移動軌跡の描画が無い場合には弱い平滑化を実行することにより、指先座標に対する表示の遅れを小さくすることができる。S1205の移動軌跡平滑化処理を終えると、GUI部品操作処理部415は、発生判定したイベントに応じて、イベントハンドラテーブル1302に登録されたイベントハンドラを実行し(S1206)、GUI部品操作処理を終了する。
S1261において移動軌跡の描画があると判定したら(S1261:Y)、指先の位置座標の軌跡に対して弱い平滑化を行う(S1262)。S1261で軌跡の描画無しと判定したら(S1261:N)、より軌跡を滑らかにするために、強い平滑化を行う(S1263)。このようにすることで、移動軌跡の描画をなめらかに行うことができる一方、指先座標に対する描画表示は遅れることになる。そこで、移動軌跡の描画が無い場合には弱い平滑化を実行することにより、指先座標に対する表示の遅れを小さくすることができる。S1205の移動軌跡平滑化処理を終えると、GUI部品操作処理部415は、発生判定したイベントに応じて、イベントハンドラテーブル1302に登録されたイベントハンドラを実行し(S1206)、GUI部品操作処理を終了する。
以上説明したGUI部品操作処理は、ジェスチャー認識部409からの手指座標情報の通知がある度に実行する。ジェスチャー認識部409は、座標変化を検出する度に通知を行うため、GUI部品操作処理も座標変化を検出する度に実行することになる。
<メイン制御部:スキャンアプリケーション>
次に、図14〜図16を参照して、メイン制御部402が実行するスキャンアプリケーションの処理について説明する。図14は、スキャンアプリケーションの処理手順説明図である。図15(a),(b)はスキャンアプリケーションの処理の概要説明図であり、図13に示した要素と同じ要素については、同一符号を付してある。図16(a)〜(e)は、スキャンアプリケーションの表示例を示す図である。
図14を参照し、メイン制御部402は、スキャンアプリケーションの処理を開始すると、図16(a)で示した初期画面をGUI部品生成表示部414を介して表示する(S1401)。図16(a)は、このときの表示例であり、メッセージ1601と終了ボタン1602とが表示されている。ここで、終了ボタン1602に対応して、図15(b)に示す領域情報テーブル1301とイベントハンドラテーブル1302をGUI部品操作処理部415に設定する。図15(b)のイベントハンドラテーブル1302には、タップイベントのイベントハンドラとしてスキャン終了処理1452を設定している。このため、GUI部品操作処理部415が、ユーザが終了ボタン1602をタップしたと判定した場合、メイン制御部402は、スキャン終了処理を実行することが可能となる。
次に、図14〜図16を参照して、メイン制御部402が実行するスキャンアプリケーションの処理について説明する。図14は、スキャンアプリケーションの処理手順説明図である。図15(a),(b)はスキャンアプリケーションの処理の概要説明図であり、図13に示した要素と同じ要素については、同一符号を付してある。図16(a)〜(e)は、スキャンアプリケーションの表示例を示す図である。
図14を参照し、メイン制御部402は、スキャンアプリケーションの処理を開始すると、図16(a)で示した初期画面をGUI部品生成表示部414を介して表示する(S1401)。図16(a)は、このときの表示例であり、メッセージ1601と終了ボタン1602とが表示されている。ここで、終了ボタン1602に対応して、図15(b)に示す領域情報テーブル1301とイベントハンドラテーブル1302をGUI部品操作処理部415に設定する。図15(b)のイベントハンドラテーブル1302には、タップイベントのイベントハンドラとしてスキャン終了処理1452を設定している。このため、GUI部品操作処理部415が、ユーザが終了ボタン1602をタップしたと判定した場合、メイン制御部402は、スキャン終了処理を実行することが可能となる。
初期画面表示後、メイン制御部402は、書画台204にスキャンの物体が載置されるのを待つ、物体載置待ち処理を行う(S1402)。物体載置待ち処理では、物体検知部410の処理を起動し、物体検知部410が図9(a)に示した手順の処理を実行して、物体載置を通知するのを待つ処理である。物体検知部410からの物体載置通知を受信すると、メイン制御部402は、図16(b)で示したスキャン画面の表示を行う(S1403)。図16(b)において、原稿1611は物体検知部410が検知した原稿である。画面には、スキャンボタン1612が表示される。このスキャンボタン1612に対応して、図15(a)に示す領域情報テーブル1301とイベントハンドラテーブル1302をGUI部品操作処理部415に設定する。図15(a)のイベントハンドラテーブル1302には、タップイベントのイベントハンドラとしてスキャン実行処理1451を設定している。GUI部品操作処理部415により、ユーザがスキャンボタン1612をタップしたことが検知された場合、メイン制御部402は、平面原稿撮影部処理、すなわち、平面原稿撮影部411によるスキャン実行処理1451を実行する(S1404)。そして、これにより得られたスキャン画像を保存する。
メイン制御部402は、保存したスキャン画像を縮小してサムネイル画像を生成し、図16(c)で示した画面のサムネイルリスト領域1621に、サムネイル1622の表示を追加する(S1405)。その後、物体検知部410からの物体除去通知を待つ(S1406)。物体除去通知を受け取ると、メイン制御部402は、終了ボタン1402がタップされたと判定し(S1307)、スキャン終了処理1452が実行されたかどうかを判定する。S1407で終了ボタン1602がタップされていなければ(S1407:N)、S1401へ戻って初期画面表示を行う。このときに表示される初期画面が図16(c)である。図16(c)では、メッセージ1601とともに、サムネイルリスト領域1621にサムネイル1622が表示されたままにする。このようにユーザが原稿を載置してスキャンを実行する度に、サムネイル1622を追加していく。そのため、S1401〜S1406の処理を複数回繰り返した後では、図16(d),(e)で示すように、サムネイルリスト領域1621に、複数のサムネイル1622を表示することになる。
S1407において、終了ボタン1602がタップされたと判定し、スキャン終了処理が実行されていた場合(S1407:Y)、メイン制御部402は、スキャンアプリケーションを終了し、続いてプレビューアプリケーションを実行する。
S1407において、終了ボタン1602がタップされたと判定し、スキャン終了処理が実行されていた場合(S1407:Y)、メイン制御部402は、スキャンアプリケーションを終了し、続いてプレビューアプリケーションを実行する。
<メイン制御部:プレビューアプリケーション>
続いて、図17〜図19を参照して、メイン制御部402が実行するプレビューアプリケーションの処理について説明する。図17はプレビューアプリケーションの処理手順説明図である。図18(a)〜(d)はプレビューアプリケーションによる処理の概要説明図である。図13に示した要素と同じ要素については、同一符号を付してある。図19(a)〜(f)はプレビューアプリケーションの表示例を示す図である。図16に示した要素と同じ要素については、同一符号を付してある。
続いて、図17〜図19を参照して、メイン制御部402が実行するプレビューアプリケーションの処理について説明する。図17はプレビューアプリケーションの処理手順説明図である。図18(a)〜(d)はプレビューアプリケーションによる処理の概要説明図である。図13に示した要素と同じ要素については、同一符号を付してある。図19(a)〜(f)はプレビューアプリケーションの表示例を示す図である。図16に示した要素と同じ要素については、同一符号を付してある。
図17を参照し、メイン制御部402は、図19(a)に示す初期画面を表示する(S1701)。図19(a)の初期画面では、メッセージ1901と終了ボタン1902が表示される。また、サムネイルリスト領域1621中にサムネイル1622の表示をしたままにする。ここで、サムネイル領域1621に対応して、図18(a)に示した領域情報テーブル1301とイベントハンドラテーブル1302をGUI部品操作処理部415に登録する。図18(a)のイベントハンドラテーブル1302には、タップイベントに対応して実行するサムネイル選択処理1802と、タッチムーブイベントに対応して実行するサムネイルリストスクロール処理1803が登録されている。また、タッチムーブイベントには「移動軌跡表示なし」を示すフラグも登録されている。
このイベントハンドラテーブル1302によって、GUI部品操作処理部415は、タッチ中に移動と判定するための移動閾値は、図12のS1233で決定する、より大きい移動閾値を用いる。また、移動軌跡の平滑化については、弱い平滑化を実行する。
このイベントハンドラテーブル1302によって、GUI部品操作処理部415は、タッチ中に移動と判定するための移動閾値は、図12のS1233で決定する、より大きい移動閾値を用いる。また、移動軌跡の平滑化については、弱い平滑化を実行する。
図19(a)の手が位置1904から左右方向に大きい移動閾値以上動くと、GUI部品操作処理部415は、タッチムーブイベント発生と判定してサムネイルリストスクロール処理を実行する。サムネイルリストスクロール処理では、指先の移動距離と同じ距離だけサムネイルリスト領域1621の表示位置を移動させる。これにより、左右のスクロール表示を行う。また、図19(b)のように手が位置1911でサムネイル画像の一つをタップ動作すると、GUI部品操作処理部415は、タップイベント発生と判定して、図18(a)におけるサムネイル選択処理を実行する。この処理は、具体的には、タップしたときの指先座標が含まれる(重なる)サムネイルを特定し、スキャン時に保存したサムネイル変換前の画像ファイルをメイン制御部402に通知する処理である。
図17に戻り、初期画面表示後、メイン制御部402は、サムネイル画像選択を行う(S1702)。具体的には、図19(b)のようにサムネイル上でタップイベントが発生するのを待つ。そしてサムネイル選択処理1802により、タップしたサムネイルのサムネイル変換前の画像ファイルの通知を受け取ったら、通知された画像ファイルのプレビュー表示及び操作処理を行う(S1703)。
具体的には、図19(c)に示す画面の表示を行う。図19(c)において、プレビュー表示1931がタップされたサムネイルのプレビュー表示である。また、画面の右端に不可視の領域1932を設定し、図19(c)に示す、領域1932に対応した領域情報テーブル1301とイベントハンドラテーブル1302をGUI部品操作処理部415に登録する。図18(b)のイベントハンドラテーブル1302では、ホバーストップイベントのイベントハンドラとして、プレビューモードメニュー表示処理1801が登録されている。図19(c)の画面において、手が位置1933で所定時間静止し、GUI部品操作処理部415によってホバーストップイベント発生と判定されたとする。このとき、ホバーストップイベントのイベントハンドラであるプレビューモードメニュー表示処理1801は、図19(d)に示したように領域1932を拡張する。そして、領域1932の中に閲覧モードボタン1941と書込みモードボタン1942を表示させる。
図19(d)の閲覧モードボタン1941でタップイベントが発生すると、メイン制御部402は、図18(c)に示すイベントハンドラテーブル1302を、プレビュー表示1931に対応してGUI部品操作処理部415に登録する。図18(c)のイベントハンドラテーブル1302のタッチムーブイベントに登録されたイベントハンドラであるプレビュー表示スクロール処理1804は、指先の移動距離と同じ距離だけプレビュー表示1931の表示位置を移動させる処理である。また、図18(c)のイベントハンドラテーブル1302のタッチムーブイベント1804には、軌跡表示なしを示すフラグを設定している。このイベントハンドラテーブル1302によって、GUI部品操作処理部415は、タッチ中に移動と判定するための移動閾値は、図12のS1234で使用を決定する小さい移動閾値を用いる。また、移動軌跡の平滑化についてはS1262で実行する弱い平滑化を実行する。したがって、図19(e)に示したように、手が位置1951から位置1952へ移動すると、プレビュー表示1953からプレビュー表示1954へ、表示をスクロールさせることができる。移動閾値が小さく、また平滑化も弱いため、指先へのプレビュー表示スクロールの追従がよくなる。
図19(d)の書込みモードボタン1942でタップイベントが発生すると、メイン制御部402は、図18(d)に示すイベントハンドラテーブル1302を、プレビュー表示1931に対応してGUI部品操作処理部415に登録する。図18(d)のイベントハンドラテーブル1302のタッチムーブイベントに登録されたプレビュー表示書込み処理1805は、指先が移動したときに指先の位置座標を線で結んで表示することにより、図19(f)で示したように指先の軌跡描画1964を表示する。また、図18(d)のイベントハンドラテーブル1302のタッチムーブイベント1には軌跡表示ありを示すフラグを設定している。このイベントハンドラテーブル1302によって、GUI部品操作処理部415は、タッチ中に移動と判定するための移動閾値は、図12のS1234で使用を決定する小さい移動閾値を用いる。また、移動軌跡の平滑化については、S1263で決定する強い平滑化を実行する。移動閾値が小さく、また強く平滑化をかけるため、滑らかな線を描画することが可能となる。
図17に戻り、メイン制御部402は、終了ボタン1902でタップイベントが発生したかどうかを判定する(S1704)。タップイベントが発生していなければ(S1704:N)、S1701へ戻ってプレビューアプリケーションを続行する。S1704で、終了ボタン1902でタップイベントが発生していたら(S1704:Y)、プレビューアプリケーションを終了する。
以上説明したように、本実施形態では、GUI部品操作処理部415において、タッチ中か否か、また、タッチ中であれば処理に使用するイベントハンドラに応じて、移動と判定する移動閾値を変更する。また、移動軌跡の描画の有無に応じて実行する平滑化の強さを変えている。これにより、下記のような効果を奏することができる。
(イ)図19(c)の領域1932上に手があるとき、大きい移動閾値を使用することによって安定して領域1932の領域拡大を行うことができる。小さい移動閾値を使用すると、指の静止・移動状態が頻繁に切り替わる。そのため、領域の拡大縮小も頻繁に行われる結果となり、表示が見づらくなってしまう。この点が改善される。
(ロ)図19(b)のサムネイルタップイベント発生時に、大きい移動閾値を使用することによってタッチムーブイベントが発生することを抑制することによりタップしたときに意図せずスクロールしてしまう事態を回避することができる。
(ハ)図19(e)のプレビュー表示スクロール処理では小さい移動閾値を使用し、また弱い平滑化を実行しているため、手の移動への表示の追従性を高めることができる。
(ニ)図19(f)の軌跡描画では小さい移動閾値使用し、また強い平滑化を使用しているため、滑らかな線を描画することができる。
(イ)図19(c)の領域1932上に手があるとき、大きい移動閾値を使用することによって安定して領域1932の領域拡大を行うことができる。小さい移動閾値を使用すると、指の静止・移動状態が頻繁に切り替わる。そのため、領域の拡大縮小も頻繁に行われる結果となり、表示が見づらくなってしまう。この点が改善される。
(ロ)図19(b)のサムネイルタップイベント発生時に、大きい移動閾値を使用することによってタッチムーブイベントが発生することを抑制することによりタップしたときに意図せずスクロールしてしまう事態を回避することができる。
(ハ)図19(e)のプレビュー表示スクロール処理では小さい移動閾値を使用し、また弱い平滑化を実行しているため、手の移動への表示の追従性を高めることができる。
(ニ)図19(f)の軌跡描画では小さい移動閾値使用し、また強い平滑化を使用しているため、滑らかな線を描画することができる。
[第2実施形態]
第1実施形態では、処理に使用するイベントハンドラの設定に応じて移動閾値及び移動軌跡の平滑化処理を変更する例について説明した。第2実施形態では、同じイベントハンドラ設定においても移動閾値及び移動軌跡の平滑化処理の変更を行う場合の例を挙げる。なお、カメラスキャナ101の構成については、第1実施形態と同じである。また、第2実施形態では、第1実施形態とはGUI部品操作処理部415の処理内容の一部が異なる。例えば図12の処理手順において、S1203の移動閾値決定処理と、S1205の移動軌跡平滑化処理だけが異なる。以下、異なる処理を中心に説明を行う。
第1実施形態では、処理に使用するイベントハンドラの設定に応じて移動閾値及び移動軌跡の平滑化処理を変更する例について説明した。第2実施形態では、同じイベントハンドラ設定においても移動閾値及び移動軌跡の平滑化処理の変更を行う場合の例を挙げる。なお、カメラスキャナ101の構成については、第1実施形態と同じである。また、第2実施形態では、第1実施形態とはGUI部品操作処理部415の処理内容の一部が異なる。例えば図12の処理手順において、S1203の移動閾値決定処理と、S1205の移動軌跡平滑化処理だけが異なる。以下、異なる処理を中心に説明を行う。
図20(a)は、第2実施形態におけるGUI部品操作処理部415の移動閾値決定処理の手順説明図であり、第1実施形態におけるS1203の処理に対応する。
GUI部品操作処理部415は、移動閾値決定処理を開始すると、前回の判定時にタッチ中だったかどうかを判定する(S2001)。タッチ中だった場合(S2001:Y)、GUI部品操作処理部415は、タッチしていると判定した指先が1つで、かつ、手の形状が指さし形状かどうかを判定する(S2002)。指さし形状と判定したら(S2002:Y)、タップイベントまたはタッチストップイベントと、タッチムーブイベントの両方のハンドラがイベントハンドラテーブル1302に登録されているかどうかを判定する(S2003)。両方のハンドラがイベントハンドラテーブル1302に登録されていれば(S2003:Y)、大きい移動閾値の使用を決定する(S2004)。
GUI部品操作処理部415は、移動閾値決定処理を開始すると、前回の判定時にタッチ中だったかどうかを判定する(S2001)。タッチ中だった場合(S2001:Y)、GUI部品操作処理部415は、タッチしていると判定した指先が1つで、かつ、手の形状が指さし形状かどうかを判定する(S2002)。指さし形状と判定したら(S2002:Y)、タップイベントまたはタッチストップイベントと、タッチムーブイベントの両方のハンドラがイベントハンドラテーブル1302に登録されているかどうかを判定する(S2003)。両方のハンドラがイベントハンドラテーブル1302に登録されていれば(S2003:Y)、大きい移動閾値の使用を決定する(S2004)。
S2003において、タップイベントとタッチムーブイベントの両方のハンドラがイベントハンドラテーブル1302に登録されていなければ(S2003:N)、S2004と比較して小さい移動閾値の使用を決定する(S2005)。
また、S2001において、前回の判定時がタッチ中でなければ(S2001:N)、発生する可能性のあるイベントはホバームーブイベントかホバーストップイベントである。この場合、操作している手が1つであり、かつ、手の形状が指さし形状かどうかを判定する(S2006)。S2006において、指さし形状と判定した場合(S2006:Y)、大きい移動閾値の使用を決定する(S2007)。S2006で手の形状が指さし形状でないと判定した場合は(S2006:N)、小さい移動閾値の使用を決定する(S2008)。以上のように使用する移動閾値を決定し、移動閾値決定処理を終了する。
また、S2001において、前回の判定時がタッチ中でなければ(S2001:N)、発生する可能性のあるイベントはホバームーブイベントかホバーストップイベントである。この場合、操作している手が1つであり、かつ、手の形状が指さし形状かどうかを判定する(S2006)。S2006において、指さし形状と判定した場合(S2006:Y)、大きい移動閾値の使用を決定する(S2007)。S2006で手の形状が指さし形状でないと判定した場合は(S2006:N)、小さい移動閾値の使用を決定する(S2008)。以上のように使用する移動閾値を決定し、移動閾値決定処理を終了する。
図20(b)は第2実施形態における、GUI部品操作処理部415の移動軌跡平滑化処理の手順説明図であり、第1実施形態におけるS1205の処理に対応する。
移動軌跡平滑化処理を開始すると、GUI部品操作処理部415は、操作している手が1つで、かつ、手の形状が指さし形状かどうかを判定する(S2021)。S2021で指さし形状と判定したら(S2021:Y)、イベントハンドラテーブル1302のタッチムーブイベントまたはホバームーブイベントに移動軌跡の描画があるかどうかのフラグを参照する(S2022)。S2022で移動軌跡の描画があると判定したら(S2022:Y)、弱い平滑化を実行する(S2023)。ここで実行する平滑化は、第1実施形態と同じように3点の移動平均であるが、他の平滑化方法でもよい。
S2022で移動軌跡の描画が無いと判定したら、S2023よりも強い平滑化の実行を行う(S2024)。ここで実行する平滑化は、第1実施形態と同じく5点の移動平均であるが、他の平滑化方法でもよい。
また、S2021において、手の形状が指さし形状でないと判定したら(S2021:N)、S2023と同じく弱い平滑化を実行する(S2025)。
以上のように平滑化を実行して移動軌跡平滑化処理を終了する。
移動軌跡平滑化処理を開始すると、GUI部品操作処理部415は、操作している手が1つで、かつ、手の形状が指さし形状かどうかを判定する(S2021)。S2021で指さし形状と判定したら(S2021:Y)、イベントハンドラテーブル1302のタッチムーブイベントまたはホバームーブイベントに移動軌跡の描画があるかどうかのフラグを参照する(S2022)。S2022で移動軌跡の描画があると判定したら(S2022:Y)、弱い平滑化を実行する(S2023)。ここで実行する平滑化は、第1実施形態と同じように3点の移動平均であるが、他の平滑化方法でもよい。
S2022で移動軌跡の描画が無いと判定したら、S2023よりも強い平滑化の実行を行う(S2024)。ここで実行する平滑化は、第1実施形態と同じく5点の移動平均であるが、他の平滑化方法でもよい。
また、S2021において、手の形状が指さし形状でないと判定したら(S2021:N)、S2023と同じく弱い平滑化を実行する(S2025)。
以上のように平滑化を実行して移動軌跡平滑化処理を終了する。
このように、第2実施形態では、操作する手の個数及び手の形状によって移動閾値と平滑化処理を変えることで、プレビューアプリケーションでは、プレビュー表示のスクロール方法を変えることができる。
図21(a)は1つの手で指さし形状でタッチしたまま位置2101から位置2102へ手を移動させたときの図である。このとき、プレビュー表示はプレビュー表示2103からプレビュー表示2104へ移動する。このとき、指の移動軌跡に対してより強い平滑化を実行するため、スクロール中の表示をより滑らかに行うことができる。しかしながら、強い平滑化のため指先への表示の追従が遅くなる。図21(b)は、1つの手で手を開いた形状(指さし形状ではない形状)でタッチしたまま位置2111から位置2112へ手を移動させたときの図であり、これに従って同様にプレビュー表示はプレビュー表示2013からプレビュー表示1814へ移動する。このとき、前述した移動閾値決定処理では小さい移動閾値の使用を決定し、また、移動軌跡平滑化処理はより弱い平滑化を実行するため、指先の移動への表示位置の追従性が良好になる。
図21(a)は1つの手で指さし形状でタッチしたまま位置2101から位置2102へ手を移動させたときの図である。このとき、プレビュー表示はプレビュー表示2103からプレビュー表示2104へ移動する。このとき、指の移動軌跡に対してより強い平滑化を実行するため、スクロール中の表示をより滑らかに行うことができる。しかしながら、強い平滑化のため指先への表示の追従が遅くなる。図21(b)は、1つの手で手を開いた形状(指さし形状ではない形状)でタッチしたまま位置2111から位置2112へ手を移動させたときの図であり、これに従って同様にプレビュー表示はプレビュー表示2013からプレビュー表示1814へ移動する。このとき、前述した移動閾値決定処理では小さい移動閾値の使用を決定し、また、移動軌跡平滑化処理はより弱い平滑化を実行するため、指先の移動への表示位置の追従性が良好になる。
図21(c)は両手の指先でプレビュー表示2135をタッチし、2つの指先をそれぞれ位置2131から位置2133へ、位置2132から位置2134へ、平行移動したときの図である。このときもタッチ点の重心の移動に従ってプレビュー表示2135からプレビュー表示2136へ移動させる。このときも前述した移動閾値決定処理では小さい移動閾値の使用を決定し、また、移動軌跡平滑化処理はより弱い平滑化を実行するため、指先の移動への表示位置の追従性が良好になる。この動作は、2つの指先のピンチイン・アウトによる拡大・縮小操作と同時にスクロールを行わせる操作に好適である。
[その他の実施例]
第1及び第2実施形態では、入力指示体の例として、ユーザの手や指(指先)を挙げて説明したが、ユーザが操作するタッチペン、スタイラスペン等その他の入力デバイスの場合も同様の処理が可能である。
また、本発明は、制御用プログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し、実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
第1及び第2実施形態では、入力指示体の例として、ユーザの手や指(指先)を挙げて説明したが、ユーザが操作するタッチペン、スタイラスペン等その他の入力デバイスの場合も同様の処理が可能である。
また、本発明は、制御用プログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し、実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
Claims (14)
- ユーザの手、指先又はユーザが操作する入力デバイスである入力指示体を撮影した画像を取得する画像取得手段と、
取得した画像から前記入力指示体の位置を認識する認識手段と、
前記入力指示体によって操作される複数種類のUI部品のいずれかを所定部位に表示させる表示手段と、
前記認識手段で認識した入力指示体の位置、表示された前記UI部品の種類、及び、当該UI部品に対する操作内容のいずれか又はこれらの組み合わせに応じて、当該UI部品に対する前記入力指示体の動きの判定条件を切り替える操作手段と、
を備えて成るユーザインタフェース装置。 - 前記表示手段は、前記UI部品を、所定部位に置かれたシート状又は立体状の物体の表面又はその近傍の面上に表示させる、
請求項1に記載のユーザインタフェース装置。 - 前記画像取得手段が取得する画像が、前記UI部品と非接触で動く前記入力指示体の位置を検出可能な画像である、
請求項1又は2に記載のユーザインタフェース装置。 - 前記操作手段は、その大きさを超えたときに前記入力指示体が移動したと判定するための第1移動閾値及び前記第1移動閾値よりも大きい第2移動閾値を保持しており、
前記表示されたUI部品において前記入力指示体が静止している状態を移動の判定に含めない場合は前記第1移動閾値を用いて前記入力指示体が移動したかどうかを判定し、前記静止している状態を前記動きの判定に含める場合は前記第2移動閾値を用いて当該入力指示体が移動したかどうかを判定する、
請求項1ないし3のいずれか1項に記載のユーザインタフェース装置。 - 操作手段は、前記表示されたUI部品からの前記入力指示体の高さが予め決めた所定の基準値以上かどうかを判定し、前記基準値以上の場合は前記第2移動閾値を用いて前記入力指示体が移動したかどうかを判定する、
請求項4のユーザインタフェース装置。 - 前記操作手段は、前記入力指示体の位置の移動軌跡を平滑化する第1平滑化機能と前記第1平滑化機能よりもより滑らかに平滑化を行う第2平滑化機能とを有しており、
前記入力指示体の位置が関連付けられるUI部品の種類又は前記移動軌跡の表示の有無に応じて、前記第1平滑化機能と前記第2平滑化機能とを切り替えて実行する、
請求項1ないし5のいずれか1項に記載のユーザインタフェース装置。 - 前記操作手段は、前記UI部品において前記移動軌跡の表示が無い場合は前記第1平滑化機能を用いて平滑化し、前記移動軌跡の表示がある場合は前記第2平滑化機能を用いて平滑化する、
請求項6記載のユーザインタフェース装置。 - 前記入力指示体が前記ユーザの手であり、
前記認識手段は、当該手の形状を認識し、
前記操作手段は、認識された手の形状が所定形状であるか否かによって前記判定条件を切り替える、
請求項1ないし7のいずれか1項に記載のユーザインタフェース装置。 - 前記所定形状は、当該手の形状が1本の指のみを立て、他の指を握りこんだ指さし形状であり、
前記操作手段は、認識された手の形状が前記指さし形状のときは前記第2移動閾値を用いて当該指先が動いたかどうかを判定する、
請求項8に記載のユーザインタフェース装置。 - 前記操作手段は、前記ユーザの手の指先の位置の移動軌跡を平滑化する第1平滑化機能と前記第1平滑化機能よりもより滑らかに平滑化を行う第2平滑化機能とを有しており、
前記操作手段は、前記移動軌跡の表示の有無、前記手の形状又は前記指先の個数に応じて、前記第1平滑化機能と前記第2平滑化機能とを切り替えて実行する、
請求項8又は9に記載のユーザインタフェース装置。 - 前記認識手段は、前記手の形状と前記所定部位から前記指先の位置までの高さとを認識し、
前記操作手段は、前記所定部位からの前記指先の位置の高さが予め決めた基準値以下である指先の個数が1つか複数かによって前記判定条件を切り替える、
請求項8ないし10のいずれか1項に記載のユーザインタフェース装置。 - 前記操作手段は、前記指先の個数が1つのときは前記第2平滑化機能を用いて当該指先の移動軌跡の平滑化を行う、
請求項10に記載のユーザインタフェース装置。 - 請求項1ないし12のいずれか1項に記載されたユーザインタフェース装置を搭載した画像処理装置。
- コンピュータを、ユーザの手、指先又はユーザが操作する入力デバイスである入力指示体を撮影した画像を取得する画像取得手段、
取得した画像から前記入力指示体の位置を認識する認識手段、
前記入力指示体によって操作される複数種類のUI部品のいずれかを所定部位に表示させるための制御を行う表示手段、
前記認識手段で認識した入力指示体の位置、表示された前記UI部品の種類、及び、当該UI部品に対する操作内容のいずれか又はこれらの組み合わせに応じて、当該UI部品に対する前記入力指示体の動きの判定条件を切り替える操作手段として機能させる、
制御用プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014240906A JP2016103137A (ja) | 2014-11-28 | 2014-11-28 | ユーザインタフェース装置、画像処理装置及び制御用プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014240906A JP2016103137A (ja) | 2014-11-28 | 2014-11-28 | ユーザインタフェース装置、画像処理装置及び制御用プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016103137A true JP2016103137A (ja) | 2016-06-02 |
Family
ID=56089507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014240906A Pending JP2016103137A (ja) | 2014-11-28 | 2014-11-28 | ユーザインタフェース装置、画像処理装置及び制御用プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016103137A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018026658A (ja) * | 2016-08-09 | 2018-02-15 | 富士ゼロックス株式会社 | 画像形成装置及びプログラム |
CN110603570A (zh) * | 2017-05-10 | 2019-12-20 | 富士通株式会社 | 对象物识别方法、装置、系统、程序 |
WO2020166351A1 (ja) * | 2019-02-13 | 2020-08-20 | ソニー株式会社 | 情報処理装置、情報処理方法、および記録媒体 |
CN113052148A (zh) * | 2021-05-10 | 2021-06-29 | 读书郎教育科技有限公司 | 一种改善平板指尖定位抖动的方法 |
CN113066219A (zh) * | 2021-03-23 | 2021-07-02 | 杭州京威盛智能科技有限公司 | 自助式智慧医疗服务设备 |
JP2022108147A (ja) * | 2021-01-12 | 2022-07-25 | レノボ・シンガポール・プライベート・リミテッド | 情報処理装置、及び制御方法 |
-
2014
- 2014-11-28 JP JP2014240906A patent/JP2016103137A/ja active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018026658A (ja) * | 2016-08-09 | 2018-02-15 | 富士ゼロックス株式会社 | 画像形成装置及びプログラム |
US11025790B2 (en) | 2016-08-09 | 2021-06-01 | Fuji Xerox Co., Ltd. | Image forming apparatus, image forming method, and non-transitory computer readable medium |
CN110603570A (zh) * | 2017-05-10 | 2019-12-20 | 富士通株式会社 | 对象物识别方法、装置、系统、程序 |
CN110603570B (zh) * | 2017-05-10 | 2023-08-04 | 富士通株式会社 | 对象物识别方法、装置、系统、程序 |
WO2020166351A1 (ja) * | 2019-02-13 | 2020-08-20 | ソニー株式会社 | 情報処理装置、情報処理方法、および記録媒体 |
JP2022108147A (ja) * | 2021-01-12 | 2022-07-25 | レノボ・シンガポール・プライベート・リミテッド | 情報処理装置、及び制御方法 |
US11599247B2 (en) | 2021-01-12 | 2023-03-07 | Lenovo (Singapore) Pte. Ltd. | Information processing apparatus and control method |
CN113066219A (zh) * | 2021-03-23 | 2021-07-02 | 杭州京威盛智能科技有限公司 | 自助式智慧医疗服务设备 |
CN113066219B (zh) * | 2021-03-23 | 2022-07-12 | 杭州京威盛智能科技有限公司 | 自助式智慧医疗服务设备 |
CN113052148A (zh) * | 2021-05-10 | 2021-06-29 | 读书郎教育科技有限公司 | 一种改善平板指尖定位抖动的方法 |
CN113052148B (zh) * | 2021-05-10 | 2023-09-29 | 读书郎教育科技有限公司 | 一种改善平板指尖定位抖动的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10310675B2 (en) | User interface apparatus and control method | |
US10324563B2 (en) | Identifying a target touch region of a touch-sensitive surface based on an image | |
JP6327931B2 (ja) | 画像処理装置、情報処理方法及びプログラム | |
US10268277B2 (en) | Gesture based manipulation of three-dimensional images | |
JP2016103137A (ja) | ユーザインタフェース装置、画像処理装置及び制御用プログラム | |
US20130033484A1 (en) | System and method for interactive markerless paper documents in 3d space with mobile cameras and projectors | |
TW583589B (en) | Passive optical mouse using image sensor with optical dual mode capability | |
CN108027656B (zh) | 输入设备、输入方法和程序 | |
JP2017199289A (ja) | 情報処理装置、その制御方法、プログラム、及び記憶媒体 | |
EP3185106A1 (en) | Operating apparatus, control method therefor, program, and storage medium storing program | |
JP6381361B2 (ja) | データ処理装置、データ処理システム、データ処理装置の制御方法、並びにプログラム | |
JP2018112894A (ja) | システムおよび制御方法 | |
JP6746419B2 (ja) | 情報処理装置、及びその制御方法ならびにコンピュータプログラム | |
JP2017162126A (ja) | 入力システム、入力方法、制御用プログラム、及び記憶媒体 | |
JP6643825B2 (ja) | 装置及び方法 | |
JP6618301B2 (ja) | 情報処理装置、その制御方法、プログラム、及び記憶媒体 | |
JP2018063555A (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP6624861B2 (ja) | 画像処理装置、制御方法およびプログラム | |
JP2017117372A (ja) | 操作装置とその制御方法、及びプログラム | |
JP2018116360A (ja) | 手入力装置、手入力装置の制御方法 | |
JP2018181169A (ja) | 情報処理装置、及び、情報処理装置の制御方法、コンピュータプログラム、記憶媒体 | |
JP2017022590A (ja) | 画像処理装置、画像処理装置の制御方法、及びプログラム | |
JP2018173907A (ja) | 情報処理装置、および情報処理装置の制御方法、プログラム | |
JP2018191094A (ja) | 原稿読取装置、原稿読取装置の制御方法、及びプログラム | |
JP6203070B2 (ja) | スキャンシステムおよびその制御方法、並びにプログラム |