(57)【要約】      （修正有）【課題】ＧＵＩ部品に対するユーザの指先の位置を非接触で検出する際の、検出誤差やノイズの影響による操作感の低下を抑える。【解決手段】ＧＵＩ部品を操作するユーザの手の形状が指さし形状かどうかＳ２００２、Ｓ２００６やタップイベント、タッチストップイベント等の操作内容を認識しＳ２００３、認識結果に応じて、指先が動いたかどうかの閾値判定条件を大きい移動閾値または小さい移動閾値Ｓ２００４、Ｓ２００５、Ｓ２００７、Ｓ２００８に切り替える。【選択図】図２０
2016103137.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの手、指先又はユーザが操作する入力デバイスである入力指示体を撮影した画像を取得する画像取得手段と、
取得した画像から前記入力指示体の位置を認識する認識手段と、
前記入力指示体によって操作される複数種類のＵＩ部品のいずれかを所定部位に表示させる表示手段と、
前記認識手段で認識した入力指示体の位置、表示された前記ＵＩ部品の種類、及び、当該ＵＩ部品に対する操作内容のいずれか又はこれらの組み合わせに応じて、当該ＵＩ部品に対する前記入力指示体の動きの判定条件を切り替える操作手段と、
を備えて成るユーザインタフェース装置。
【請求項２】
前記表示手段は、前記ＵＩ部品を、所定部位に置かれたシート状又は立体状の物体の表面又はその近傍の面上に表示させる、
請求項１に記載のユーザインタフェース装置。
【請求項３】
前記画像取得手段が取得する画像が、前記ＵＩ部品と非接触で動く前記入力指示体の位置を検出可能な画像である、
請求項１又は２に記載のユーザインタフェース装置。
【請求項４】
前記操作手段は、その大きさを超えたときに前記入力指示体が移動したと判定するための第１移動閾値及び前記第１移動閾値よりも大きい第２移動閾値を保持しており、
前記表示されたＵＩ部品において前記入力指示体が静止している状態を移動の判定に含めない場合は前記第１移動閾値を用いて前記入力指示体が移動したかどうかを判定し、前記静止している状態を前記動きの判定に含める場合は前記第２移動閾値を用いて当該入力指示体が移動したかどうかを判定する、
請求項１ないし３のいずれか１項に記載のユーザインタフェース装置。
【請求項５】
操作手段は、前記表示されたＵＩ部品からの前記入力指示体の高さが予め決めた所定の基準値以上かどうかを判定し、前記基準値以上の場合は前記第２移動閾値を用いて前記入力指示体が移動したかどうかを判定する、
請求項４のユーザインタフェース装置。
【請求項６】
前記操作手段は、前記入力指示体の位置の移動軌跡を平滑化する第１平滑化機能と前記第１平滑化機能よりもより滑らかに平滑化を行う第２平滑化機能とを有しており、
前記入力指示体の位置が関連付けられるＵＩ部品の種類又は前記移動軌跡の表示の有無に応じて、前記第１平滑化機能と前記第２平滑化機能とを切り替えて実行する、
請求項１ないし５のいずれか１項に記載のユーザインタフェース装置。
【請求項７】
前記操作手段は、前記ＵＩ部品において前記移動軌跡の表示が無い場合は前記第１平滑化機能を用いて平滑化し、前記移動軌跡の表示がある場合は前記第２平滑化機能を用いて平滑化する、
請求項６記載のユーザインタフェース装置。
【請求項８】
前記入力指示体が前記ユーザの手であり、
前記認識手段は、当該手の形状を認識し、
前記操作手段は、認識された手の形状が所定形状であるか否かによって前記判定条件を切り替える、
請求項１ないし７のいずれか１項に記載のユーザインタフェース装置。
【請求項９】
前記所定形状は、当該手の形状が１本の指のみを立て、他の指を握りこんだ指さし形状であり、
前記操作手段は、認識された手の形状が前記指さし形状のときは前記第２移動閾値を用いて当該指先が動いたかどうかを判定する、
請求項８に記載のユーザインタフェース装置。
【請求項１０】
前記操作手段は、前記ユーザの手の指先の位置の移動軌跡を平滑化する第１平滑化機能と前記第１平滑化機能よりもより滑らかに平滑化を行う第２平滑化機能とを有しており、
前記操作手段は、前記移動軌跡の表示の有無、前記手の形状又は前記指先の個数に応じて、前記第１平滑化機能と前記第２平滑化機能とを切り替えて実行する、
請求項８又は９に記載のユーザインタフェース装置。
【請求項１１】
前記認識手段は、前記手の形状と前記所定部位から前記指先の位置までの高さとを認識し、
前記操作手段は、前記所定部位からの前記指先の位置の高さが予め決めた基準値以下である指先の個数が１つか複数かによって前記判定条件を切り替える、
請求項８ないし１０のいずれか１項に記載のユーザインタフェース装置。
【請求項１２】
前記操作手段は、前記指先の個数が１つのときは前記第２平滑化機能を用いて当該指先の移動軌跡の平滑化を行う、
請求項１０に記載のユーザインタフェース装置。
【請求項１３】
請求項１ないし１２のいずれか１項に記載されたユーザインタフェース装置を搭載した画像処理装置。
【請求項１４】
コンピュータを、ユーザの手、指先又はユーザが操作する入力デバイスである入力指示体を撮影した画像を取得する画像取得手段、
取得した画像から前記入力指示体の位置を認識する認識手段、
前記入力指示体によって操作される複数種類のＵＩ部品のいずれかを所定部位に表示させるための制御を行う表示手段、
前記認識手段で認識した入力指示体の位置、表示された前記ＵＩ部品の種類、及び、当該ＵＩ部品に対する操作内容のいずれか又はこれらの組み合わせに応じて、当該ＵＩ部品に対する前記入力指示体の動きの判定条件を切り替える操作手段として機能させる、
制御用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示中のＵＩ（ユーザインタフェース）部品に対する操作内容を非接触で検出するユーザインタフェース装置を搭載した画像処理装置に関する。ＵＩ部品とは、画面部品や機能部品などをいう。
【背景技術】
【０００２】
文書をスキャンして電子データとして保存する画像処理装置の例として、２次元の撮像センサを用いたカメラスキャナがある。カメラスキャナは、書画台の上方にカメラが配置される。原稿を上向きに書画台に置いて撮像する構成の場合、１枚の原稿であれば置くだけで素早くスキャンすることができる。本のように厚みのある原稿も容易に書画台に置いてスキャンすることができる。また、紙や本のような文書だけでなく、立体物を書画台上に置いて立体形状をスキャンするカメラスキャナも知られている。
例えば、特許文献１に開示されたカメラスキャナは、撮像するためのカメラの他に、投光部を備える。このカメラスキャナでは、投光部から投光する計測パターンをカメラで撮像し、三角測量の原理により立体形状を測定する。その後、書画台上の置かれた物体（対象物）の立体形状を算出して平面原稿か書籍か立体物かを判別し、それぞれに応じて適切な撮影モードで撮影を行う。
【０００３】
一方、プロジェクタとカメラや距離センサを用いたユーザインタフェースシステムも知られている。例えば、特許文献２で開示されたユーザインタフェースシステムでは、プロジェクタで操作画面を机上に投射し、指先でその操作画面を操作する。指先の検出には赤外線カメラなどが用いられる。そして、机上の紙書類や書籍等に印刷されたバーコードを読み取ることによって、電磁情報とのリンクを作成することができるようにしている。
【０００４】
また、特許文献３に開示されたユーザインタフェース装置では、色画像と距離画像が取得できるカメラ及びプロジェクタを用いている。色画像は、色や濃淡の情報を有する画像である。距離画像は、色や濃淡の情報の代わりに、カメラなどの入力装置から物体までの距離の値を持った画像である。このユーザインタフェース装置は、距離画像によりプロジェクタ投影面の形状を計測し、投影する画像を変形させることで、投影対象とプロジェクタの相対位置の変化に応じた投影を行う。このユーザインタフェース装置では、また、色画像や距離画像を用いて、物体の表面（平面）への、指先によるタッチ操作などのジェスチャー操作の認識を可能にする。さらに、平面である紙文書上を指先でポイントし、ポイントした箇所のコンテンツを特定し、ジェスチャーに応じた電子的処理を行うことができる。例えば、紙文書上の文字列を指でなぞると、なぞった文字列が選択され、プロジェクタによって投影されるというようなものである。
【０００５】
特許文献２や特許文献３に開示された技術では、指先での操作やジェスチャー操作の認識にタッチパネルのような接触をもって検知するセンサを用いずに、距離画像センサやカメラのように非接触で指先や手の位置を検出している。このようにすることで、より広い面積の操作範囲を検出領域とすることができ、タッチパネルに比べて設置が容易になる、という利点が生じる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４０１２７１０号公報
【特許文献２】特許第３８３４７６６号公報
【特許文献３】特開２０１３−３４１６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記の各特許文献に開示された技術のように、非接触で指先や手の位置を検出する場合、接触式のセンサに比べて測定誤差やノイズが発生するおそれがある。そのため、検出した位置にばらつきが生じたり、不安定に変動したりしてしまうという現象が生じる場合がある。その結果、例えば指先が静止しているのに指先の検出位置が変動し、操作対象がそれによって動いてしまうという現象が発生し、ユーザが思い通りに操作しているという操作感を損ねることがあった。
【０００８】
本発明は、上記の問題を解消し、指先や手などの入力指示体の位置を非接触で検出する際の操作感を向上させることができるユーザインタフェース装置を提供することを主たる課題とする。
【課題を解決するための手段】
【０００９】
本発明のユーザインタフェース装置は、ユーザの手、指先又はユーザが操作する入力デバイスである入力指示体を撮影した画像を取得する画像取得手段と、取得した画像から前記入力指示体の位置を認識する認識手段と、前記入力指示体によって操作される複数種類のＵＩ部品のいずれかを所定部位に表示させる表示手段と、前記認識手段で認識した入力指示体の位置、表示された前記ＵＩ部品の種類、及び、当該ＵＩ部品に対する操作内容のいずれか又はこれらの組み合わせに応じて、当該ＵＩ部品に対する前記入力指示体の動きの判定条件を切り替える操作手段と、を備えて成る装置である。
【発明の効果】
【００１０】
本発明によれば、ＵＩ部品の種類などに応じた入力支持体の操作内容の表示が可能となり、操作感を高めることできる。
【図面の簡単な説明】
【００１１】
【図１】カメラスキャナのネットワーク構成図。
【図２】カメラスキャナの外観図。
【図３】コントローラ部のハードウェア構成図。
【図４】（ａ）はカメラスキャナの機能構成図、（ｂ）はシーケンス図。
【図５】距離画像取得部が実行する処理手順説明図。
【図６】（ａ）〜（ｃ）は距離画像取得の説明図。
【図７】ジェスチャー認識部が実行する処理手順説明図。
【図８】（ａ）〜（ｃ）はジェスチャー認識部の処理の概要説明図。
【図９】（ａ），（ｂ）は物体検知部が実行する処理手順説明図。
【図１０】平面原稿撮影部が実行する処理手順説明図。
【図１１】平面原稿撮影部の処理の概要説明図。
【図１２】ＧＵＩ部品操作処理部が実行する処理手順説明図。
【図１３】ＧＵＩ部品操作処理部が保持するデータの模式図。
【図１４】メイン制御部が実行するスキャンアプリケーションの処理手順説明図。
【図１５】（ａ），（ｂ）はスキャンアプリケーションの処理の概要説明図。
【図１６】（ａ）〜（ｅ）は、スキャンアプリケーションの表示例を示す図。
【図１７】メイン制御部が実行するプレビューアプリケーションの処理手順説明図。
【図１８】（ａ）〜（ｄ）はプレビューアプリケーションによるデータの説明図。
【図１９】（ａ）〜（ｆ）はプレビューアプリケーションの表示例を示す図。
【図２０】（ａ），（ｂ）は第２実施形態の処理手順説明図。
【図２１】（ａ）〜（ｃ）は第２実施形態による表示例を示す図。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態例について図面を参照して説明する。ここでは、ユーザインタフェース装置を搭載した画像処理装置の一例となるカメラスキャナの例を説明する。
［第１実施形態］
図１は、第１実施形態に係るカメラスキャナが含まれるネットワークの構成図である。カメラスキャナ１０１は、イーサネット等のネットワーク１０４に接続して構成される。ネットワーク１０４には、ホストコンピュータ１０２及びプリンタ１０３も接続されている。図１のネットワークでは、ホストコンピュータ１０２からの指示により、カメラスキャナ１０１から画像を読み取るスキャン機能、スキャンデータをプリンタ１０３により出力するプリント機能などの実行が可能となる。また、ホストコンピュータ１０２を介さず、カメラスキャナ１０１への直接の指示により、スキャン機能、プリント機能の実行も可能である。
【００１３】
＜カメラスキャナの構成＞
カメラスキャナ１０１の全体構成図を図２（ａ）に示す。図示のように、カメラスキャナ１０１は、コントローラ部２０１、カメラ部２０２、腕部２０３、短焦点プロジェクタ２０７、距離画像センサ部２０８を含んで構成される。
コントローラ部２０１、カメラ部２０２、短焦点のプロジェクタ２０７及び距離画像センサ部２０８は、腕部２０３により連結されている。腕部２０３は、関節を用いて曲げ伸ばしが可能なものである。距離画像センサ部２０８は、物体（図示の例では原稿２０６）までの距離を非接触で測定するセンサであり、物体を指向するレンズを有する。カメラスキャナ１０１は、書画台２０４に設置される。カメラ部２０２及び距離画像センサ部２０８のレンズは、この書画台２０４方向に向けられており、破線で囲まれた読み取り領域２０５内の画像を読み取り可能である。図示の例では、原稿２０６が読み取り領域２０５内に置かれている。そのため、カメラスキャナ１０１により読み取り可能となっている。
【００１４】
書画台２０４には、ターンテーブル２０９も設けられている。このターンテーブル２０９は、コントローラ部２０１からの指示によって回転することができる。つまり、ターンテーブル２０９上に置かれた物体とカメラ部２０２との角度を任意に変えることができる。カメラ部２０２は、単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像が可能なものとすることが好ましい。
なお、図２（ａ）に示されていないが、カメラスキャナ１０１は、モニタ用のＬＣＤタッチパネル及びスピーカをさらに含んでいる。
【００１５】
図２（ｂ）は、カメラスキャナ１０１における座標系の説明図である。カメラスキャナ１０１では、各ハードウェアデバイスに対して、カメラ座標系、距離画像座標系、プロジェクタ座標系という座標系が定義される。これらの座標系は、カメラ部２０２及び距離画像センサ部２０８のＲＧＢカメラ部５０３が撮像する画像平面、あるいはプロジェクタ２０７が投影する画像平面をＸＹ平面とする。そして、画像平面に直交した方向をＺ方向として定義したものである。また、これらの独立した座標系の３次元データを統一的に扱えるようにするため、書画台２０４を含む平面をＸＹ平面とし、このＸＹ平面から上方に垂直な向きをＺ軸とする直交座標系を定義する。
【００１６】
座標系を変換する場合の例として、図２（ｃ）に直交座標系と、カメラ部２０２を中心としたカメラ座標系を用いて表現された空間と、カメラ部２０２が撮像する画像平面との関係を示す。直交座標系における３次元点Ｐ［Ｘ，Ｙ，Ｚ］は、（１）式によって、カメラ座標系における３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］へ変換できる。
【００１７】
【数１】
2016103137.tif 000003
【００１８】
ここで、Ｒｃ及びｔｃは、直交座標系に対するカメラの姿勢（回転）と位置（並進）によって求まる外部パラメータによって構成される。Ｒｃを３×３の回転行列、ｔｃを並進ベクトルと呼ぶ。逆に、カメラ座標系で定義された３次元点は、（２）式によって、直交座標系への変換することができる。
【００１９】
【数２】
2016103137.tif 000004
【００２０】
カメラ部２０２で撮影される２次元のカメラ画像平面は、カメラ部２０２によって３次元空間中の３次元情報が２次元情報に変換されたものである。すなわち、カメラ座標系上での３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］を、（３）式によってカメラ画像平面での２次元座標ｐｃ［ｘｐ，ｙｐ］に透視投影変換することによって変換することができる。
【００２１】
【数３】
2016103137.tif 000005
【００２２】
ここで、Ａは、カメラの内部パラメータと呼ばれ、焦点距離と画像中心などで表現される３×３の行列である。
以上のように、（１）式と（３）式とを用いることで、直交座標系で表された３次元点群を、カメラ座標系での３次元点群座標やカメラ画像平面に変換することができる。
なお、各ハードウェアデバイスの内部パラメータ及び直交座標系に対する位置姿勢（外部パラメータ）は、公知のキャリブレーション手法により、あらかじめキャリブレーションされているものとする。以後、特に断りがなく３次元点群と表記した場合は、直交座標系における３次元データを表しているものとする。
【００２３】
＜コントローラ部の構成例＞
図３は、カメラスキャナ１０１の本体であるコントローラ部２０１のハードウェア構成例を示す図である。コントローラ部２０１は、システムバス３０１に様々な機能部品を接続して構成される。機能部品は、ＣＰＵ３０２、ＲＡＭ３０３、ＲＯＭ３０４、ＨＤＤ３０５を基本構成とするコンピュータを含む。ＣＰＵ（Central Processing Unit）３０２は、本発明の制御用プログラムを実行することにより、コントローラ部２０１の全体動作を制御する。つまり、制御用プログラムは、コンピュータをコントローラ部２０１ないしカメラスキャナ１０１として動作させるためのものである。
ＲＡＭ（Random Access Memory）３０３は、揮発性の書き換え可能な記憶媒体であり、ＣＰＵ３０２のワークエリアとして機能する。ＲＯＭ（Read Only Memory）３０４は、書き換え不能な記憶媒体であり、ＣＰＵ３０２の起動用プログラムが格納されている。ＨＤＤ３０５は、ＲＡＭ３０３と比較して大容量なハードディスクドライブ（ＨＤＤ）である。ＨＤＤ３０５にはコントローラ部２０１の実行する、カメラスキャナ１０１の制御用プログラムが格納されている。
【００２４】
システムバス３０１に接続される機能部品には、ネットワークＩ／Ｆ（Ｉ／Ｆはインタフェースの略、以下同じ）３０６、画像処理プロセッサ３０７、カメラＩ／Ｆ３０８も含まれる。さらに、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１及びＵＳＢコントローラ３１２も機能部品に含まれる。
【００２５】
ＣＰＵ３０２は、カメラスキャナ１０１が電源ＯＮ等によって起動されると、ＲＯＭ３０４に格納されている起動用プログラムを実行する。この起動用プログラムは、ＨＤＤ３０５に格納されている制御用プログラムを読み出し、ＲＡＭ３０３上に展開するためのものである。ＣＰＵ３０２は、起動用プログラムを実行すると、続けてＲＡＭ３０３上に展開した制御用プログラムを実行し、制御を行う。
ＣＰＵ３０２は、また、制御用プログラムによる動作に用いるデータもＲＡＭ３０３上に格納して読み書きを行う。ＨＤＤ３０５上には、さらに、制御用プログラムによる動作に必要な各種設定や、また、カメラ入力によって生成した画像データを格納することができ、ＣＰＵ３０２によって読み書きされる。ＣＰＵ３０２は、ネットワークＩ／Ｆ３０６を介してネットワーク１０４上の他の機器との通信を行う。
【００２６】
画像処理プロセッサ３０７は、ＲＡＭ３０３に格納された画像データを読み出して所要の画像処理を行い、処理結果をＲＡＭ３０３へ書き戻す。なお、画像処理プロセッサ３０７が実行する画像処理は、回転、変倍、色変換等である。
カメラＩ／Ｆ３０８はカメラ部２０２及び距離画像センサ部２０８と接続され、ＣＰＵ３０２からの指示に応じてカメラ部２０２から画像データを、距離画像センサ部２０８から距離画像データを取得してＲＡＭ３０３へ書き込む。また、ＣＰＵ３０２からの制御コマンドをカメラ部２０２及び距離画像センサ部２０８へ送信し、カメラ部２０２及び距離画像センサ部２０８の設定を行う。
【００２７】
コントローラ部２０１は、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１及びＵＳＢコントローラ３１２のうち少なくとも１つをさらに含むことができる。ディスプレイコントローラ３０９は、ＣＰＵ３０２の指示に応じてディスプレイへの画像の表示を制御する。ディスプレイコントローラ３０９は、短焦点プロジェクタ２０７及びＬＣＤタッチパネル３３０に接続されている。
【００２８】
シリアルＩ／Ｆ３１０は、シリアル信号の入出力を行う。本例では、シリアルＩ／Ｆ３１０は、ターンテーブル２０９と接続される。そして、ＣＰＵ３０２の回転開始・終了及び回転角度の指示をターンテーブル２０９へ送信する。シリアルＩ／Ｆ３１０は、また、ＬＣＤタッチパネル３３０と接続される。ＣＰＵ３０２は、ＬＣＤタッチパネル３３０が押下されたときに、シリアルＩ／Ｆ３１０を介して押下された座標を取得する。
【００２９】
オーディオコントローラ３１１は、スピーカ３４０と接続される。そして、ＣＰＵ３０２の指示に応じて音声データをアナログ音声信号に変換し、スピーカ３４０を通じて音声を出力する。ＵＳＢコントローラ３１２は、ＣＰＵ３０２の指示に応じて外付けのＵＳＢデバイスの制御を行う。本例では、ＵＳＢコントローラ３１２は、ＵＳＢメモリやＳＤカードなどの外部メモリ３５０に接続され、外部メモリ３５０へのデータの読み書きを行う。
【００３０】
＜距離画像センサ部及び距離画像取得部＞
距離画像センサ部２０８の構成例を図３に示す。距離画像センサ部２０８は、赤外線によるパターン投射方式の距離画像センサ部である。つまり、赤外線を物体に照射し、反射して帰ってくるまでの時間を測定してレンズから物体までの距離や物体の形状・寸法などを測定する。赤外線カメラ３６２は、物体に投射した３次元測定パターンを読みとるカメラである。ＲＧＢカメラ３６３は人の目に見える可視光をＲＧＢ信号で撮影するカメラである。
【００３１】
＜制御用プログラムによる機能構成例＞
図４（ａ）は、ＣＰＵ３０２が制御用プログラムを実行することによりコントローラ部２０１に形成される機能モジュール群４０１の構成の例示図である。また、図４（ｂ）は、各機能モジュールの関係を示すシーケンス図である。制御用プログラムは、前述のようにＨＤＤ３０５に格納され、ＣＰＵ３０２が起動したときにＲＡＭ３０３上に展開される。
機能モジュール群４０１のうち、メイン制御部４０２は制御の中心であり、コントローラ部２０１を図４（ｂ）に示す手順で制御する。以下、図４（ａ）のほか、図４（ｂ）も参照して、各機能モジュール群４０１の機能を説明する。
【００３２】
画像取得部４１６は、画像入力処理を行うモジュールであり、カメラ画像取得部４０７、距離画像取得部４０８を有している。ここで取得する画像は、後述するＧＵＩ部品と非接触で動く入力指示体の位置を検出可能な画像、例えば距離画像又は２次元画像である。カメラ画像取得部４０７は、カメラＩ／Ｆ３０８を介してカメラ部２０２が出力する画像を取得し、これをＲＡＭ３０３へ格納する。距離画像取得部４０８は、カメラＩ／Ｆ３０８を介して距離センサ部２０８が出力する距離画像を取得し、これをＲＡＭ３０３へ格納する。距離画像取得部４０８の処理の詳細については後述する。
【００３３】
認識処理部４１７は、カメラ画像取得部４０７及び距離画像取得部４０８が取得する画像（画像データ）から書画台２０４上の物体及びその上の入力指示体の動きを検知して認識する。そのため、ジェスチャー認識部４０９、物体検知部４１０を有している。
ジェスチャー認識部４０９は、取得した画像から入力指示体及びその位置やその変位（移動）などを認識する。具体的には、画像取得部４１６から書画台２０４上の画像を取得し続ける。そして、書画台２０４上の入力指示体の位置（座標）の変化を検出すると、それをメイン制御部４０２へ通知する。以後の説明では、入力指示体がユーザの手の指先であるものとして説明する。つまり、ジェスチャー認識部４０９は、ユーザの手の形状（指先の個数、状態を含む）、書画台２０４から指先の位置までの高さなどを認識する。
物体検知部４１０は、メイン制御部４０２から、後述する「物体載置待ち処理」あるいは「物体除去待ち処理」の通知を受けると、タイミング検知処理を行う。タイミング検知処理は、画像取得部４１６から書画台２０４を撮像した画像を取得し、書画台２０４上に物体が置かれて静止するタイミングを検知する処理である。あるいは物体が取り除かれるタイミングを検知する処理である。ジェスチャー認識部４０９、物体検知部４１０の処理の詳細については、それぞれ後述する。
【００３４】
スキャン処理部４１８は、実際に物体のスキャンを行うモジュールであり、平面原稿画像撮影部４１１を有している。平面原稿画像撮影部４１１は平面原稿の形状に適した処理を実行し、それに応じた形式のデータを出力する。この機能モジュールの詳細は、後述する。
【００３５】
ユーザインタフェース部４０３は、ＧＵＩ部品生成表示部４１４とＧＵＩ部品操作処理部４１５とを有している。ＧＵＩ部品生成表示部４１４は、メイン制御部４０２からの要求を受け、メッセージやボタン等、指先で操作される複数種類のＧＵＩ部品を生成する。ＧＵＩ部品は、ＵＩ部品をグラフィックで表現したものである。そして、表示部４０６へ生成したＧＵＩ部品の一部又は全部の表示を要求する。
表示部４０６は、要求されたＧＵＩ部品を所定部位に表示させる。また、必要に応じて、表示中のＧＵＩに対する指先の移動軌跡などの描画を行う。具体的には、ディスプレイコントローラ３０９を介して、短焦点プロジェクタ２０７もしくはＬＣＤタッチパネル３３０へ要求されたＧＵＩ部品の表示、あるいは、移動軌跡の描画などを行う。プロジェクタ２０７は、書画台２０４に向けて設置されている。そのため、書画台２０４、書画台２０４に載置されたシート状又は立体状の物体の表面にＧＵＩ部品などを投射することができる。あるいは、これらの近傍の面上に投射させることができる。これにより書画台２０４又は物体の表面などにＧＵＩ部品などが表示されるので、直感的な操作が可能となる。
【００３６】
ユーザインタフェース部４０３のＧＵＩ部品操作処理部４１５は、表示されたＧＵＩ部品の種類を特定し、それに対する操作を受け付ける。その際、ジェスチャー認識部４０９で認識した指先の位置、表示されたＧＵＩ部品の種類、及び、当該ＧＵＩ部品に対する操作内容のいずれか又はこれらの組み合わせに応じて、当該ＧＵＩ部品に対する指先の動きの判定条件を切り替える。
【００３７】
具体的には、ジェスチャー認識部４０９から認識したタッチ、タップ、ムーブ等のジェスチャー操作の内容、あるいはシリアルＩ／Ｆ３１０を介したＬＣＤタッチパネル３３０などから入力操作の内容を取得する。その際、操作座標（操作される部分での指先の相対座標）も取得する。そして、例えば以下の判定により動きの判定条件を切り替える。
（i）ＧＵＩ部品において指先が静止している状態を移動の判定に含めるか否か。
（ii）ＧＵＩ部品からの指先の高さが予め決めた基準値以上かどうか。
（iii）操作する手の形状が所定形状であるか否か。
（iv）所定部位からの指先の位置の高さが基準値以下の指先の個数。１つであればシングルタッチ、複数であればマルチタッチとなる。
動きの判定結果は、メイン制御部４０２へ通知される。これにより、メイン制御部４０２は、ＧＵＩ部品に対するユーザの操作内容を把握することができる。
なお、入力操作の内容には、移動軌跡の表示の有無も含まれる。
【００３８】
動きの判定条件とは、例えば移動があった、静止した、静止後に移動した、移動後に静止したなどと判定するための条件である。判定には、ＲＡＭ３０３に保持された判定閾値あるいは所定の基準値などを用いる。
判定閾値は、例えば、その大きさを超えたときに指先が移動したと判定するための第１移動閾値と、第１移動閾値よりも大きい第２移動閾値である。これらの移動閾値は、予め誤差等を評価した上で決めておく。基準値は、表示中のＧＵＩ部品からの指先の高さが、当該ＧＵＩ部品と指先とが関連付けられる臨界値であり、ホバー操作（ＧＵＩ部品の上空での操作）のときなどに使用される。
【００３９】
ＧＵＩ部品操作処理部４１５は、また、ＬＣＤタッチパネル３３０に移動軌跡が表示されるときに、それを滑らかに描画するための平滑化機能を有している。平滑化には既知の手法を用いることができる。例えば指先の位置（座標）を点で捉え、複数点の移動平均で軌跡を滑らかにする。一般に、平滑化を行うと、指先の位置に対する表示の追従性が低下し、表示が遅れてしまう。そのため、本実施形態では、５点あるいはそれ以上の移動平均で平滑化する機能を「第１平滑化機能」と呼ぶ。また、このように滑らかさを重視した平滑化を「強い平滑化」と呼ぶ。他方、平滑化を行わないか、あるいは３点程度の移動平均で平滑化する機能を「第２平滑化機能」と呼ぶ。また、このように滑らかさよりも追従性を重視した平滑化を「弱い平滑化」と呼ぶ。
ＧＵＩ部品操作処理部４１５は、指先の位置が関連付けられるＧＵＩ部品の種類、移動軌跡の表示の有無、手の形状、指先の個数などに応じて、第１平滑化機能と第２平滑化機能とを切り替えて実行する。具体例については後述する。
【００４０】
ネットワーク通信部４０４は、ネットワークＩ／Ｆ３０６を介して、ネットワーク１０４上の他の機器とＴＣＰ／ＩＰによる通信を行う。データ管理部４０５は、機能モジュール群４０１の動作時に生成された作業データを含む様々なデータをＨＤＤ３０５上の所定の領域へ保存し、管理する。保存されるデータは、例えばスキャン処理部４１８（平面原稿画像撮影部４１１）が生成したスキャンデータなどである。
【００４１】
距離画像取得部４０８の動作を図５及び図６を参照して説明する。図５は距離画像取得部４０８が実行する処理手順説明図である。図６（ａ）〜（ｃ）はパターン投射方式による距離画像の計測原理の説明図である。
図５を参照し、距離画像取得部４０８は、処理を開始すると、図６（ａ）に示すように、赤外線パターン投射部３６１を用いて赤外線による３次元形状測定パターン５２２を物体６２１に投射する（Ｓ５０１）。また、ＲＧＢカメラ３６３を用いて対象物を撮影したＲＧＢ画像５２３及び、赤外線カメラ３６２を用いてＳ５０１で投射した３次元測定パターン５２２を撮影した赤外線カメラ画像６２４を取得する（Ｓ５０２）。
【００４２】
なお、赤外線カメラ３６２とＲＧＢカメラ３６３とでは設置位置が異なる。つまり、図６（ａ）に示すように、それぞれで撮影される２つのＲＧＢカメラ画像６２３及び赤外線カメラ画像６２４の撮影領域が異なる。そこで、距離画像取得部４０８は、赤外線カメラ３６２の座標系からＲＧＢカメラ３６３の座標系への座標系変換を用いて赤外線カメラ画像６２４をＲＧＢカメラ画像６２３の座標系に合わせる（Ｓ５０３）。赤外線カメラ３６２とＲＧＢカメラ３６３の相対位置やそれぞれの内部パラメータは、事前のキャリブレーション処理により既知であるとする。
【００４３】
その後、距離画像取得部４０８は、図６（ｂ）に示すように、３次元測定パターン６２２とＳ５０３で座標変換を行った赤外線カメラ画像６２４間での対応点を抽出する（Ｓ５０４）。例えば、赤外線カメラ画像６２４上の１点を３次元形状測定パターン６２２上から探索し、同一の点が検出された場合に対応付けを行う。あるいは、赤外線カメラ画像６２４の画素の周辺のパターンを３次元形状測定パターン６２２上から探索し、一番類似度が高い部分と対応付けてもよい。
対応点を抽出すると、距離画像取得部４０８は、赤外線パターン投射部３６１と赤外線カメラ３６２を結ぶ直線を基線６２５として三角測量の原理を用いて計算を行うことにより、赤外線カメラ３６２からの距離を算出する（Ｓ５０５）。Ｓ５０４の処理で対応付けができた画素については、赤外線カメラ３６２からの距離を算出し、これを画素値として保存する。対応付けができなかった画素については、距離の計測ができなかった部分として無効値を保存する。これをＳ５０３で座標変換を行った赤外線カメラ画像６２４の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。
【００４４】
その後、距離画像取得部４０８は、図６（ｃ）に示すように、距離画像の各画素にＲＧＢカメラ画像６２５のＲＧＢ値を保存することにより、１画素につきＲ、Ｇ、Ｂ、距離の４つの値を持つ距離画像を生成する（Ｓ５０６）。ここで取得した距離画像は、距離画像センサ部２０８のＲＧＢカメラ３６３で定義された距離画像センサ部座標系が基準となっている。そこで、距離画像取得部４０８は、図２（ｂ）に示したように、距離画像センサ部座標系として得られた距離データを直交座標系における３次元点群に変換する（Ｓ５０７）。なお、以後、特に指定がなく３次元点群と表記した場合は、直交座標系における３次元点群を示すものとする。
また、第１実施形態では、距離画像センサ部２０８として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサ部を用いることも可能である。例えば、２つのＲＧＢカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するＴＯＦ（Time of Flight）方式を用いても構わない。
【００４５】
＜ジェスチャー認識部＞
ジェスチャー認識部４０９の処理の詳細を、図７を参照して説明する。図７において、ジェスチャー認識部４０９は、処理を開始すると、初期化処理を行う（Ｓ７０１）。すなわち、距離画像取得部４０８から距離画像を１フレーム取得し、認識環境を整える。ジェスチャー認識部４０９は、動作開始時には書画台２０４上に物体が置かれていない状態なので、初期状態として書画台２０４の平面の認識を行う。つまり、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル（以降、書画台２０４の平面パラメータと呼ぶ）を算出し、これをＲＡＭ３０３に保存する。
【００４６】
初期化処理を終えると、ジェスチャー認識部４０９は、書画台２０４上に存在する物体の３次元点群を取得する（Ｓ７０２）。具体的には、距離画像取得部４０８から距離画像と３次元点群を１フレーム取得する（Ｓ７２１）。また、書画台２０４の平面パラメータを用いて、取得した３次元点群から書画台２０４を含む平面にある点群を除去する（Ｓ７２２）。その後、ジェスチャー認識部４０９は、取得した３次元点群からユーザの手の形状を認識し、指先検出処理を行う（Ｓ７０３）。より具体的には、Ｓ７３１〜Ｓ７３４の処理を実行する。
【００４７】
ここで、Ｓ７３１〜Ｓ７３４の指先検出処理の概要を図８を参照して説明する。ジェスチャー認識部４０９は、Ｓ７０２で取得した３次元点群から、書画台２０４を含む平面から所定の高さ以上にある、肌色の３次元点群を抽出する。これにより、図８（ａ）に示す手の３次元点群８０１を抽出する（Ｓ７３１）。その後、ジェスチャー認識部４０９は、抽出した手の３次元点群８０１を、書画台２０４の平面に投影した２次元画像を生成し、その手の外形を検出する（Ｓ７３２）。そして、検出した手の外形から手重心座標を算出し、図８（ａ）に３次元点群８０２を求める。投影は、点群の各座標を、書画台２０４の平面パラメータを用いて投影すればよい。また、図８（ｂ）に示すように、投影した３次元点群から、ｘｙ座標の値だけを取り出すことにより、ｚ軸方向から見た２次元画像８０３として扱うことができる。このとき、手の３次元点群の各点が、書画台２０４の平面に投影した２次元画像の各座標のどれに対応するかを記憶しておく。
【００４８】
その後、ジェスチャー認識部４０９は、図８（ｃ）に示すように、検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する（Ｓ７３３）。図８（ｃ）は、外形の曲率から指先を検出する方法を模式的に表した図である。この図では、書画台２０４の平面に投影された２次元画像８０３の外形を表す点８０４の一部が示されている。
ここで、外形を表す点８０４のうち、隣り合う５個の点を含むように円を描くことを考える。円８０５、８０７が、その例である。このような円を、全ての外形の点に対して順に描き、その直径（例えば８０６、８０８）が所定の値より小さい（曲率が小さい）ことを以て、指先とする。この例では、隣り合う５個の点としたが、その数は限定されるものではない。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。
【００４９】
指先を検出すると、ジェスチャー認識部４０９は、検出した指先の個数及び各指先の座標を算出する（Ｓ７３４）。ジェスチャー認識部４０９は、書画台２０４に投影した２次元画像の各点と、手の３次元点群の各点の対応関係を記憶しているため、各指先の３次元座標を得ることができる。ジェスチャー認識部４０９は、また、所定形状、例えば検出した指先の個数と各指先の座標、さらに手全体の重心座標から、当該手の形状が１本の指のみを立て、他の指を握りこんだ指さし形状であるかどうかを判定する。
本例では、３次元点群から２次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、ＲＧＢ画像の肌色領域から手の領域を抽出し、上述と同様の方法（外形の曲率計算等）で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標はＲＧＢ画像や距離画像といった、２次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の３次元座標に変換する必要がある。このとき、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
【００５０】
図７に戻り、ジェスチャー認識部４０９は、検出した手重心座標及び指先座標に変化があったかどうかを判定する（Ｓ７０４）。変化ありと判定した場合（Ｓ７０４：Ｙ）、ジェスチャー認識部４０９は、検出した手重心座標及び指先座標、手の形状が所定形状（例えば指さし形状か否か）をメイン制御部４０２へ通知する（Ｓ７０５）。その後、Ｓ７０２へ戻ってジェスチャー認識処理を繰り返す。一方、Ｓ７０４で検出した手重心座標及び指先座標に変化が無いと判定した場合（Ｓ７０４：Ｎ）、ジェスチャー認識部４０９は、Ｓ７０５の処理は行わずに、直ちにＳ７０２へ戻り、ジェスチャー認識処理を繰り返す。
【００５１】
＜物体検知部＞
次に、図９を参照して、物体検知部４１０の詳細処理を説明する。図９（ａ）は、物体検知部４１０が実行する処理の全体手順説明図である。同（ｂ）は物体載置検知処理の手順説明図である。同（ｃ）は物体除去検知処理の手順説明図である。
物体検知部４１０は、処理を開始すると、初期化処理を行う（Ｓ９０１）。初期化処理は、Ｓ９１１〜Ｓ９１３の処理である。すなわち、カメラ画像取得部４０７からカメラ画像を、距離画像取得部４０８から距離画像をそれぞれ１フレーム取得する（Ｓ９１１）。そして、取得したカメラ画像を前フレームカメラ画像として保存する（Ｓ９１２）。また、取得したカメラ画像及び距離画像を書画台背景カメラ画像及び書画台背景距離画像としてそれぞれ保存する（Ｓ９１３）。以降、「書画台背景カメラ画像」及び「書画台背景距離画像」と記載した場合は、ここで取得したカメラ画像及び距離画像のことを指す。
【００５２】
初期化処理を終えると、物体検知部４１０は、物体が書画台２０４上に置かれたことの検知（物体載置検知処理）を行う（Ｓ９０２）。処理の詳細は、図９（ｂ）を用いて後述する。物体検知部４１０は、また、Ｓ９０２で載置を検知した書画台２０４上の物体が除去されることの検知（物体除去検知処理）を行い（Ｓ９０３）、処理を終える。物体除去検知処理の詳細は図９（ｃ）を用いて後述する。
【００５３】
図９（ｂ）を参照して物体載置検知処理（Ｓ９０２）の詳細手順を説明する。物体検知部４１０は、物体載置検知処理を開始すると、カメラ画像取得部４０７からカメラ画像を１フレーム取得する（Ｓ９２１）。そして、取得したカメラ画像と前フレームカメラ画像との差分を計算してその絶対値を合計した差分値を算出する（Ｓ９２２）。その後、算出した差分値が予め決めておいた所定値以上かどうかを判定する（Ｓ９２３）。
算出した差分値が所定値未満の場合（Ｓ９２３：Ｎ）、物体検知部４１０は、書画台２０４上には物体が無いと判定し、現フレームのカメラ画像を前フレームカメラ画像として保存する（Ｓ９２８）。その後、Ｓ９２１へ戻って処理を続ける。Ｓ９２３において差分値が所定値以上の場合（Ｓ９２３：Ｙ）、物体検知部４１０は、Ｓ９２１で取得したカメラ画像と前フレームカメラ画像との差分値を、Ｓ９２２と同様に算出する（Ｓ９２４）。そして、算出した差分値が予め決めておいた所定値以下であるかどうかを判定する（Ｓ９２５）。Ｓ９２５において算出した差分値が所定値よりも大きい場合（Ｓ９２５：Ｎ）、上述したＳ９２８へ移行する。
【００５４】
Ｓ９２５において算出した差分値が所定値以下の場合（Ｓ９２５：Ｙ）、物体検知部４１０は、Ｓ９２５が連続してＹとなった回数から、差分値が所定値以下かどうかを判定する（Ｓ９２６）。つまり書画台２０４上の物体が静止した状態が予め決めておいたフレーム数続いたかどうかを判定する。Ｓ９２６において書画台２０４上の物体が静止した状態が予め決めておいたフレーム数続いていないと判定した場合（Ｓ９２６：Ｎ）、上述したＳ９２８へ移行する。Ｓ９２６において書画台２０４上の物体が静止した状態が予め決めておいたフレーム数続いたと判定した場合（Ｓ９２６：Ｙ）、物体検知部４１０は、物体が置かれたことをメイン制御部４０２へ通知し（Ｓ９２７）、物体載置検知処理を終了する。
【００５５】
図９（ｃ）を参照してＳ９０３の物体除去検知処理の詳細手順を説明する。物体除去検知処理を開始すると、物体検知部４１０は、カメラ画像取得部４０７からカメラ画像を１フレーム取得する（Ｓ９３１）。そして、取得したカメラ画像と書画台背景カメラ画像との差分値を算出する（Ｓ９３２）。その後、算出した差分値が予め決めておいた所定値以下かどうかを判定する（Ｓ９３３）。算出した差分値が予め決めておいた所定値よりも大きい場合（Ｓ９３３：Ｎ）、書画台２０４上にまだ物体が存在することを表すため、Ｓ９３１へ戻って処理を続ける。Ｓ９３３において算出した差分値が予め決めておいた所定値以下の場合（Ｓ９３３：Ｙ）、書画台２０４上の物体が無くなったことを表すため、物体除去をメイン制御部４０２へ通知し（Ｓ９３４）、物体除去検知処理を終了する。
【００５６】
＜平面原稿画像撮影部＞
次に、図１０及び図１１を参照して、平面原稿画像撮影部４１１が実行する処理の内容を説明する。図１０は処理の全体手順説明図であり、図１１は処理の概要を説明するための模式図である。
平面原稿画像撮影部４１１は、処理を開始すると、カメラ画像取得部４０７を介してカメラ部２０２からの画像を１フレーム取得する（Ｓ１００１）。カメラ部２０２の座標系は図２（ｂ）で示したように書画台２０４に正対していない。そのため、このときの撮影画像は、図１１（ａ）に示すように物体１１０１、書画台２０４ともに歪んでいる。
そこで、平面原稿画像撮影部４１１は、書画台背景カメラ画像とＳ１００１で取得したカメラ画像との画素毎の差分を算出し、差分画像を生成した上で、差分のある画素が黒、差分の無い画素が白となるように二値化する（Ｓ１００２）。ここで生成した差分画像は、図１１（ｂ）の領域１１０２のように、物体１１０１の領域が黒色である（差分がある）画像となる。
【００５７】
その後、平面原稿画像撮影部４１１は、差分領域１００２を用いて、図１１（ｃ）のように物体１１０１のみの画像を抽出する（Ｓ１００３）。また、抽出した原稿領域画像に対して階調補正を行う（Ｓ１００４）。その後、抽出した原稿領域画像に対してカメラ座標系から書画台２０４への射影変換を行い、図１１（ｄ）のように書画台２０４の真上から見た画像１１０３に変換する（Ｓ１００５）。ここで用いる射影変換パラメータは、ジェスチャー認識部４０９の処理において、前述した図７（ｂ）のＳ７１２で算出した平面パラメータとカメラ座標系から求めることができる。
【００５８】
なお、図１１（ｄ）に示したように、書画台２０４上への原稿の置き方により、ここで得られる画像１１０３は傾いていることがある。そこで、平面原稿画像撮影部４１１は、画像１１０３を矩形近似してからその矩形が水平になるように回転させ（Ｓ１００６）、図１１（ｅ）で示した画像１１０４のように傾きの無い画像を得る。また、図１１（ｆ）に示すように、基準ラインに対しての矩形の傾きθ１及びθ２を算出し、傾きが小さい方（ここではθ１）を画像１１０３の回転角度として決定する。あるいは、図１１（ｇ）及び図１１（ｈ）に示すように、画像１１０３中に含まれる文字列に対してＯＣＲ処理を行い、文字列の傾きから画像１１０３の回転角度の算出及び天地判定処理をしてもよい。
【００５９】
その後、平面原稿画像撮影部４１１は、抽出した画像１１０４に対して、予め決めておいた画像フォーマット（例えばＪＰＥＧ、ＴＩＦＦ、ＰＤＦ等）に合わせて圧縮及びファイルフォーマット変換を行う（Ｓ１００７）。そして、データ管理部４０５を介してＨＤＤ３０５の所定の領域へファイルとして保存し、平面原稿画像撮影部４１１の処理を終了する。
【００６０】
＜ＧＵＩ部品操作処理部＞
ＧＵＩ部品操作処理部４１５の処理について説明する。ＧＵＩ部品操作処理部４１５は、図１３に示す領域情報テーブル１３０１とイベントハンドテーブル１３０２を、ＧＵＩ部品表示生成部４１４が生成した各ＧＵＩ部品毎に保持する。
この領域情報テーブル１３０１とイベントハンドラテーブル１３０２は、メイン制御部４０２がＧＵＩ部品生成表示部４１４を介してＧＵＩ部品を生成するときに、メイン制御部４０２によって同時に生成され、ＧＵＩ部品操作処理部４１５に登録される。
領域情報テーブル１３０１は、そのＧＵＩ部品が画面上で占めている領域の座標とサイズを保持する。イベントハンドラテーブル１３０２は、タッチやムーブ等のイベント発生に応じて実行する処理を保持する。ＧＵＩ部品操作処理部４１５は、各イベントが発生しているかどうかを判定し、発生している場合にはイベントハンドラテーブル１３０２の対応するイベントハンドラを実行する。
【００６１】
ここで、各イベントについて簡単に説明しておく。
（ａ）タッチイベント：書画台２０４からの指先の高さが予め決めた所定の基準値未満まで接近したとき、タッチしていると判定し、タッチイベントありとする。ここで、基準値はできるかぎり小さいことが望ましいが、指先の位置の検出精度を予め評価し、決定される。
（ｂ）リリースイベント：タッチ中に書画台２０４からの指先の高さが、上記基準値以上に離れたときに、リリースイベントありと判定する。
（ｃ）タップイベント：所定の時間内に指先がタッチからリリースへ変化したときにタップイベントありと判定する。
（ｄ）タッチストップイベント：タッチしている状態のまま、書画台２０４に平行な平面内で移動閾値以上指先の位置が変化しなかったとき、静止していると判定し、タッチストップイベントありとする。
（ｅ）タッチムーブイベント：タッチしている状態のまま、書画台２０４に平行な平面内で移動閾値以上指先の位置が変化したとき、移動ありと判定し、タッチムーブイベントありとする。
（ｆ）ホバーストップイベント：書画台２０４からの指先の高さが、上記の基準値以上にあってタッチと判定されていないときに、所定の時間以上指先が静止したら、指先が静止したと判定し、ホバーストップイベントありとする。
（ｇ）ホバームーブイベント：指先の書画台２０４からの高さが、上記の基準値以上にあってタッチと判定されていないときに、移動閾値以上指先の位置が移動したらホバームーブイベントありと判定する。
【００６２】
タッチムーブイベントによって細かい操作（例えば指先による小さい図形の描画等）を行うためには、上述した「移動あり」と判定するための指先の位置の移動閾値を、０に近い小さな値にすることが望ましい。しかしながら、本実施形態では、距離画像センサ部２０８を用いて非接触で指先の位置の検出を行っているため、測定誤差やノイズの影響により検出位置がフレーム毎にばらついてしまう場合がある。例えば、タップのように指先の書画台２０４に対する高さが変化すると、ユーザが書画台２０４に平行な平面に対しては同じ位置を保っているつもりでも、指先の検出位置が変化することがある。
【００６３】
そこで、本実施形態では、タッチムーブイベントとタッチストップイベントまたはタップイベントを同時に使用するＧＵＩ部品上では、ノイズや測定誤差を考慮した処理を行う。すなわち、表示されたＧＵＩ部品において指先が静止している状態を移動の判定に含めない場合は、上述した第１移動閾値を用いて指先が移動したかどうかを判定する。例えば、操作にタッチムーブイベントのみを使い、タッチストップイベントやタップイベントを使用しないＧＵＩ部品上では、細かい操作を可能とする処理を行うため、第１移動閾値を用いる。
一方、静止している状態を動きの判定に含める場合は第２移動閾値（十分静止判定ができる値）を用いて指先が移動したかどうかを判定する。例えば、表示されたＧＵＩ部品からの指先の高さが予め決めた所定の基準値以上である場合は第２移動閾値を用いて指先が移動したかどうかを判定する。以下の説明では、第１移動閾値を「小さい移動閾値」、第２移動閾値を「大きい移動閾値」とし、両者を区別する必要がない場合は単に「移動閾値」と呼ぶ。
【００６４】
また、上述した指先の位置検出の測定誤差・ノイズのため、指先で滑らかな曲線を描こうとした場合でも、結果の曲線にガタつきが発生してしまうことがある。そこで、指先の移動軌跡を描画する場合は、軌跡内の指先座標に対して平滑化を行い、軌跡を滑らかにする。上述した通り、本実施形態では、ＧＵＩ部品操作処理部４１５において、強い平滑化を行う第１平滑化機能と、弱い平滑化を行う第２平滑化機能とを切り替えて実行する。
【００６５】
図１２は、ＧＵＩ部品操作処理部４１５が実行する処理の手順説明図である。ＧＵＩ部品操作処理部４１５は、処理を開始すると、ジェスチャー認識部４０９が通知した手重心座標及び指先座標（手指座標情報）を、メイン制御部４０２を介して受信する（Ｓ１２０１）。次に、手指座標情報から、操作しているＧＵＩ部品の特定を行う（Ｓ１２０２）。ここでは、領域情報テーブル１３０２から手指座標情報が含まれるＧＵＩ部品を特定する。
【００６６】
次に、ＧＵＩ部品操作処理部４１５は、特定したＧＵＩ部品上で指先が移動したかどうかを判定するための、移動閾値決定処理を行う（Ｓ１２０３）。この処理は、具体的には、Ｓ１２３１〜１２３５の処理である。すなわち、後述するＳ１２０４の発生イベント判定処理において、前回の判定時にタッチ中と判定したかどうかを判定する（Ｓ１２３１）。Ｓ１２３１において、前回タッチ中と判定した場合（Ｓ１２３１：Ｙ）、タッチ用の閾値を決定するために、Ｓ１２３２へ進む。Ｓ１２３２では、上述したイベントハンドラテーブル１３０２から、タップイベントまたはタッチストップイベントと、タッチムーブイベントの両方のハンドラが登録されているかどうかを判定する。Ｓ１２３２でタップイベントとタッチムーブイベントの両方のハンドラが登録されていると判定した場合（Ｓ１２３２：Ｙ）、大きい移動閾値の使用を決定する（Ｓ１２３３）。これにより、タップの際の指先の位置検出誤差によってタッチムーブイベントが発生することがなくなる。Ｓ１２３２でタップイベントとタッチムーブイベントの両方のハンドラが登録されていないと判定した場合（Ｓ１２３２：Ｎ）、タッチムーブイベントの発生を早めるために、Ｓ１２３３と比較して小さい移動閾値の使用を決定する（Ｓ１２３４）。
【００６７】
Ｓ１２３１において、前回タッチ中でなかったと判定した場合（Ｓ１２３１：Ｎ）、ＧＵＩ部品操作処理部４１５は、ホバー用の閾値を決定するために、大きい移動閾値の使用を決定する（Ｓ１２３５）。ホバー時には、静止した状態になったときに静止状態を安定して検出し続けることができるように、Ｓ１２３３と同じく大きい移動閾値の使用を決定するのである。
【００６８】
Ｓ１２０３の処理を終えると、ＧＵＩ部品操作処理部４１５は、発生イベント判定処理を行う（Ｓ１２０４）。この処理は、具体的には、Ｓ１２４１〜Ｓ１２５３の処理である。まず、前回の発生イベント判定処理時時にタッチ中と判定したかどうかを判定する（Ｓ１２４１）。前回タッチ中と判定していなければ（Ｓ１２４１：Ｎ）、現在の指先座標の書画台２０４からの高さが所定の閾値以下であるかどうかを用いて、現在タッチ中かどうかを判定する（Ｓ１２４２）。現在タッチ中であると判定したら（Ｓ１２４２：Ｙ）、タッチイベント発生と判定し（Ｓ１２４３）、発生イベント判定処理を終了する。
Ｓ１２４２で現在タッチ中でないと判定したら（Ｓ１２４２：Ｎ）、前回のホバーストップイベント発生判定時から、Ｓ１２３５で決定した移動閾値以上移動したかどうかを判定する（Ｓ１２４４）。Ｓ１２４４で移動閾値以上移動したと判定したら（Ｓ１２４４：Ｙ）、ホバームーブイベント発生と判定して（Ｓ１２４７）、発生イベント判定処理を終了する。Ｓ１２４４で移動閾値以上移動していないと判定したら（Ｓ１２４４：Ｎ）、移動閾値以上移動しないまま所定時間経過したかどうかを判定する（Ｓ１２４５）。Ｓ１２４５で所定時間経過していないと判定したら（Ｓ１２４５：Ｎ）、イベント発生の判定は行わずに発生イベント判定処理を終了する。Ｓ１２４５で所定時間経過したと判定したら（Ｓ１２４５：Ｙ）、Ｓ１２４６へ進みホバーストップイベント発生と判定して（Ｓ１２４６）、発生イベント判定処理を終了する。
【００６９】
Ｓ１２４１において、前回タッチ中と判定していれば（Ｓ１２４１：Ｙ）、現在タッチ中かどうかを判定する（Ｓ１２４８）。Ｓ１２４８において、現在タッチ中と判定したら（Ｓ１２４８：Ｙ）、タッチイベント発生後、Ｓ１２３３またはＳ１２３４で決定した移動閾値以上移動したかどうかを判定する（Ｓ１２４９）。Ｓ１２４９で移動閾値以上移動したと判定したら（Ｓ１２４９：Ｙ）、タッチムーブイベント発生と判定して（Ｓ１２５０）発生イベント判定処理を終了する。Ｓ１２４９で移動閾値以上移動していないと判定したら（Ｓ１２４９：Ｎ）、イベント発生の判定は行わずに発生イベント判定処理を終了する。Ｓ１２４８において現在タッチ中でないと判定したら（Ｓ１２４８：Ｎ）、リリースイベント発生と判定する（Ｓ１２５１）。続いてＳ１２４３のタッチイベント発生判定時とＳ１２５１のリリースイベント発生判定時の指先座標の差がＳ１２３３またはＳ１２３４で決定した移動閾値以下であるかどうかを判定する（Ｓ１２５２）。Ｓ１２５２で移動閾値以下であると判定したら（Ｓ１２５２：Ｙ）タップイベント発生と判定し（Ｓ１２５３）、発生イベント判定処理を終了する。Ｓ１２５２で移動閾値以上であると判定したら（Ｓ１２５２：Ｎ）、タップイベント発生の判定は行わずに、発生イベント判定処理を終了する。
【００７０】
Ｓ１２０４の発生イベント判定処理を終了すると、ＧＵＩ部品操作処理部４１５は、移動軌跡平均化処理を行う（Ｓ１２０５）。この処理では、まず、移動軌跡の描画があるかどうかを判定する（Ｓ１２６１）。ここで、移動軌跡の描画があるかどうかは、イベントハンドラテーブル１３０２のタッチムーブイベント及びホバームーブイベントのフィールドにフラグとして設定される。この設定は、メイン制御部４０２が行う。
Ｓ１２６１において移動軌跡の描画があると判定したら（Ｓ１２６１：Ｙ）、指先の位置座標の軌跡に対して弱い平滑化を行う（Ｓ１２６２）。Ｓ１２６１で軌跡の描画無しと判定したら（Ｓ１２６１：Ｎ）、より軌跡を滑らかにするために、強い平滑化を行う（Ｓ１２６３）。このようにすることで、移動軌跡の描画をなめらかに行うことができる一方、指先座標に対する描画表示は遅れることになる。そこで、移動軌跡の描画が無い場合には弱い平滑化を実行することにより、指先座標に対する表示の遅れを小さくすることができる。Ｓ１２０５の移動軌跡平滑化処理を終えると、ＧＵＩ部品操作処理部４１５は、発生判定したイベントに応じて、イベントハンドラテーブル１３０２に登録されたイベントハンドラを実行し（Ｓ１２０６）、ＧＵＩ部品操作処理を終了する。
【００７１】
以上説明したＧＵＩ部品操作処理は、ジェスチャー認識部４０９からの手指座標情報の通知がある度に実行する。ジェスチャー認識部４０９は、座標変化を検出する度に通知を行うため、ＧＵＩ部品操作処理も座標変化を検出する度に実行することになる。
【００７２】
＜メイン制御部：スキャンアプリケーション＞
次に、図１４〜図１６を参照して、メイン制御部４０２が実行するスキャンアプリケーションの処理について説明する。図１４は、スキャンアプリケーションの処理手順説明図である。図１５（ａ），（ｂ）はスキャンアプリケーションの処理の概要説明図であり、図１３に示した要素と同じ要素については、同一符号を付してある。図１６（ａ）〜（ｅ）は、スキャンアプリケーションの表示例を示す図である。
図１４を参照し、メイン制御部４０２は、スキャンアプリケーションの処理を開始すると、図１６（ａ）で示した初期画面をＧＵＩ部品生成表示部４１４を介して表示する（Ｓ１４０１）。図１６（ａ）は、このときの表示例であり、メッセージ１６０１と終了ボタン１６０２とが表示されている。ここで、終了ボタン１６０２に対応して、図１５（ｂ）に示す領域情報テーブル１３０１とイベントハンドラテーブル１３０２をＧＵＩ部品操作処理部４１５に設定する。図１５（ｂ）のイベントハンドラテーブル１３０２には、タップイベントのイベントハンドラとしてスキャン終了処理１４５２を設定している。このため、ＧＵＩ部品操作処理部４１５が、ユーザが終了ボタン１６０２をタップしたと判定した場合、メイン制御部４０２は、スキャン終了処理を実行することが可能となる。
【００７３】
初期画面表示後、メイン制御部４０２は、書画台２０４にスキャンの物体が載置されるのを待つ、物体載置待ち処理を行う（Ｓ１４０２）。物体載置待ち処理では、物体検知部４１０の処理を起動し、物体検知部４１０が図９（ａ）に示した手順の処理を実行して、物体載置を通知するのを待つ処理である。物体検知部４１０からの物体載置通知を受信すると、メイン制御部４０２は、図１６（ｂ）で示したスキャン画面の表示を行う（Ｓ１４０３）。図１６（ｂ）において、原稿１６１１は物体検知部４１０が検知した原稿である。画面には、スキャンボタン１６１２が表示される。このスキャンボタン１６１２に対応して、図１５（ａ）に示す領域情報テーブル１３０１とイベントハンドラテーブル１３０２をＧＵＩ部品操作処理部４１５に設定する。図１５（ａ）のイベントハンドラテーブル１３０２には、タップイベントのイベントハンドラとしてスキャン実行処理１４５１を設定している。ＧＵＩ部品操作処理部４１５により、ユーザがスキャンボタン１６１２をタップしたことが検知された場合、メイン制御部４０２は、平面原稿撮影部処理、すなわち、平面原稿撮影部４１１によるスキャン実行処理１４５１を実行する（Ｓ１４０４）。そして、これにより得られたスキャン画像を保存する。
【００７４】
メイン制御部４０２は、保存したスキャン画像を縮小してサムネイル画像を生成し、図１６（ｃ）で示した画面のサムネイルリスト領域１６２１に、サムネイル１６２２の表示を追加する（Ｓ１４０５）。その後、物体検知部４１０からの物体除去通知を待つ（Ｓ１４０６）。物体除去通知を受け取ると、メイン制御部４０２は、終了ボタン１４０２がタップされたと判定し（Ｓ１３０７）、スキャン終了処理１４５２が実行されたかどうかを判定する。Ｓ１４０７で終了ボタン１６０２がタップされていなければ（Ｓ１４０７：Ｎ）、Ｓ１４０１へ戻って初期画面表示を行う。このときに表示される初期画面が図１６（ｃ）である。図１６（ｃ）では、メッセージ１６０１とともに、サムネイルリスト領域１６２１にサムネイル１６２２が表示されたままにする。このようにユーザが原稿を載置してスキャンを実行する度に、サムネイル１６２２を追加していく。そのため、Ｓ１４０１〜Ｓ１４０６の処理を複数回繰り返した後では、図１６（ｄ），（ｅ）で示すように、サムネイルリスト領域１６２１に、複数のサムネイル１６２２を表示することになる。
Ｓ１４０７において、終了ボタン１６０２がタップされたと判定し、スキャン終了処理が実行されていた場合（Ｓ１４０７：Ｙ）、メイン制御部４０２は、スキャンアプリケーションを終了し、続いてプレビューアプリケーションを実行する。
【００７５】
＜メイン制御部：プレビューアプリケーション＞
続いて、図１７〜図１９を参照して、メイン制御部４０２が実行するプレビューアプリケーションの処理について説明する。図１７はプレビューアプリケーションの処理手順説明図である。図１８（ａ）〜（ｄ）はプレビューアプリケーションによる処理の概要説明図である。図１３に示した要素と同じ要素については、同一符号を付してある。図１９（ａ）〜（ｆ）はプレビューアプリケーションの表示例を示す図である。図１６に示した要素と同じ要素については、同一符号を付してある。
【００７６】
図１７を参照し、メイン制御部４０２は、図１９（ａ）に示す初期画面を表示する（Ｓ１７０１）。図１９（ａ）の初期画面では、メッセージ１９０１と終了ボタン１９０２が表示される。また、サムネイルリスト領域１６２１中にサムネイル１６２２の表示をしたままにする。ここで、サムネイル領域１６２１に対応して、図１８（ａ）に示した領域情報テーブル１３０１とイベントハンドラテーブル１３０２をＧＵＩ部品操作処理部４１５に登録する。図１８（ａ）のイベントハンドラテーブル１３０２には、タップイベントに対応して実行するサムネイル選択処理１８０２と、タッチムーブイベントに対応して実行するサムネイルリストスクロール処理１８０３が登録されている。また、タッチムーブイベントには「移動軌跡表示なし」を示すフラグも登録されている。
このイベントハンドラテーブル１３０２によって、ＧＵＩ部品操作処理部４１５は、タッチ中に移動と判定するための移動閾値は、図１２のＳ１２３３で決定する、より大きい移動閾値を用いる。また、移動軌跡の平滑化については、弱い平滑化を実行する。
【００７７】
図１９（ａ）の手が位置１９０４から左右方向に大きい移動閾値以上動くと、ＧＵＩ部品操作処理部４１５は、タッチムーブイベント発生と判定してサムネイルリストスクロール処理を実行する。サムネイルリストスクロール処理では、指先の移動距離と同じ距離だけサムネイルリスト領域１６２１の表示位置を移動させる。これにより、左右のスクロール表示を行う。また、図１９（ｂ）のように手が位置１９１１でサムネイル画像の一つをタップ動作すると、ＧＵＩ部品操作処理部４１５は、タップイベント発生と判定して、図１８（ａ）におけるサムネイル選択処理を実行する。この処理は、具体的には、タップしたときの指先座標が含まれる（重なる）サムネイルを特定し、スキャン時に保存したサムネイル変換前の画像ファイルをメイン制御部４０２に通知する処理である。
【００７８】
図１７に戻り、初期画面表示後、メイン制御部４０２は、サムネイル画像選択を行う（Ｓ１７０２）。具体的には、図１９（ｂ）のようにサムネイル上でタップイベントが発生するのを待つ。そしてサムネイル選択処理１８０２により、タップしたサムネイルのサムネイル変換前の画像ファイルの通知を受け取ったら、通知された画像ファイルのプレビュー表示及び操作処理を行う（Ｓ１７０３）。
【００７９】
具体的には、図１９（ｃ）に示す画面の表示を行う。図１９（ｃ）において、プレビュー表示１９３１がタップされたサムネイルのプレビュー表示である。また、画面の右端に不可視の領域１９３２を設定し、図１９（ｃ）に示す、領域１９３２に対応した領域情報テーブル１３０１とイベントハンドラテーブル１３０２をＧＵＩ部品操作処理部４１５に登録する。図１８（ｂ）のイベントハンドラテーブル１３０２では、ホバーストップイベントのイベントハンドラとして、プレビューモードメニュー表示処理１８０１が登録されている。図１９（ｃ）の画面において、手が位置１９３３で所定時間静止し、ＧＵＩ部品操作処理部４１５によってホバーストップイベント発生と判定されたとする。このとき、ホバーストップイベントのイベントハンドラであるプレビューモードメニュー表示処理１８０１は、図１９（ｄ）に示したように領域１９３２を拡張する。そして、領域１９３２の中に閲覧モードボタン１９４１と書込みモードボタン１９４２を表示させる。
【００８０】
図１９（ｄ）の閲覧モードボタン１９４１でタップイベントが発生すると、メイン制御部４０２は、図１８（ｃ）に示すイベントハンドラテーブル１３０２を、プレビュー表示１９３１に対応してＧＵＩ部品操作処理部４１５に登録する。図１８（ｃ）のイベントハンドラテーブル１３０２のタッチムーブイベントに登録されたイベントハンドラであるプレビュー表示スクロール処理１８０４は、指先の移動距離と同じ距離だけプレビュー表示１９３１の表示位置を移動させる処理である。また、図１８（ｃ）のイベントハンドラテーブル１３０２のタッチムーブイベント１８０４には、軌跡表示なしを示すフラグを設定している。このイベントハンドラテーブル１３０２によって、ＧＵＩ部品操作処理部４１５は、タッチ中に移動と判定するための移動閾値は、図１２のＳ１２３４で使用を決定する小さい移動閾値を用いる。また、移動軌跡の平滑化についてはＳ１２６２で実行する弱い平滑化を実行する。したがって、図１９（ｅ）に示したように、手が位置１９５１から位置１９５２へ移動すると、プレビュー表示１９５３からプレビュー表示１９５４へ、表示をスクロールさせることができる。移動閾値が小さく、また平滑化も弱いため、指先へのプレビュー表示スクロールの追従がよくなる。
【００８１】
図１９（ｄ）の書込みモードボタン１９４２でタップイベントが発生すると、メイン制御部４０２は、図１８（ｄ）に示すイベントハンドラテーブル１３０２を、プレビュー表示１９３１に対応してＧＵＩ部品操作処理部４１５に登録する。図１８（ｄ）のイベントハンドラテーブル１３０２のタッチムーブイベントに登録されたプレビュー表示書込み処理１８０５は、指先が移動したときに指先の位置座標を線で結んで表示することにより、図１９（ｆ）で示したように指先の軌跡描画１９６４を表示する。また、図１８（ｄ）のイベントハンドラテーブル１３０２のタッチムーブイベント１には軌跡表示ありを示すフラグを設定している。このイベントハンドラテーブル１３０２によって、ＧＵＩ部品操作処理部４１５は、タッチ中に移動と判定するための移動閾値は、図１２のＳ１２３４で使用を決定する小さい移動閾値を用いる。また、移動軌跡の平滑化については、Ｓ１２６３で決定する強い平滑化を実行する。移動閾値が小さく、また強く平滑化をかけるため、滑らかな線を描画することが可能となる。
【００８２】
図１７に戻り、メイン制御部４０２は、終了ボタン１９０２でタップイベントが発生したかどうかを判定する（Ｓ１７０４）。タップイベントが発生していなければ（Ｓ１７０４：Ｎ）、Ｓ１７０１へ戻ってプレビューアプリケーションを続行する。Ｓ１７０４で、終了ボタン１９０２でタップイベントが発生していたら（Ｓ１７０４：Ｙ）、プレビューアプリケーションを終了する。
【００８３】
以上説明したように、本実施形態では、ＧＵＩ部品操作処理部４１５において、タッチ中か否か、また、タッチ中であれば処理に使用するイベントハンドラに応じて、移動と判定する移動閾値を変更する。また、移動軌跡の描画の有無に応じて実行する平滑化の強さを変えている。これにより、下記のような効果を奏することができる。
（イ）図１９（ｃ）の領域１９３２上に手があるとき、大きい移動閾値を使用することによって安定して領域１９３２の領域拡大を行うことができる。小さい移動閾値を使用すると、指の静止・移動状態が頻繁に切り替わる。そのため、領域の拡大縮小も頻繁に行われる結果となり、表示が見づらくなってしまう。この点が改善される。
（ロ）図１９（ｂ）のサムネイルタップイベント発生時に、大きい移動閾値を使用することによってタッチムーブイベントが発生することを抑制することによりタップしたときに意図せずスクロールしてしまう事態を回避することができる。
（ハ）図１９（ｅ）のプレビュー表示スクロール処理では小さい移動閾値を使用し、また弱い平滑化を実行しているため、手の移動への表示の追従性を高めることができる。
（ニ）図１９（ｆ）の軌跡描画では小さい移動閾値使用し、また強い平滑化を使用しているため、滑らかな線を描画することができる。
【００８４】
［第２実施形態］
第１実施形態では、処理に使用するイベントハンドラの設定に応じて移動閾値及び移動軌跡の平滑化処理を変更する例について説明した。第２実施形態では、同じイベントハンドラ設定においても移動閾値及び移動軌跡の平滑化処理の変更を行う場合の例を挙げる。なお、カメラスキャナ１０１の構成については、第１実施形態と同じである。また、第２実施形態では、第１実施形態とはＧＵＩ部品操作処理部４１５の処理内容の一部が異なる。例えば図１２の処理手順において、Ｓ１２０３の移動閾値決定処理と、Ｓ１２０５の移動軌跡平滑化処理だけが異なる。以下、異なる処理を中心に説明を行う。
【００８５】
図２０（ａ）は、第２実施形態におけるＧＵＩ部品操作処理部４１５の移動閾値決定処理の手順説明図であり、第１実施形態におけるＳ１２０３の処理に対応する。
ＧＵＩ部品操作処理部４１５は、移動閾値決定処理を開始すると、前回の判定時にタッチ中だったかどうかを判定する（Ｓ２００１）。タッチ中だった場合（Ｓ２００１：Ｙ）、ＧＵＩ部品操作処理部４１５は、タッチしていると判定した指先が１つで、かつ、手の形状が指さし形状かどうかを判定する（Ｓ２００２）。指さし形状と判定したら（Ｓ２００２：Ｙ）、タップイベントまたはタッチストップイベントと、タッチムーブイベントの両方のハンドラがイベントハンドラテーブル１３０２に登録されているかどうかを判定する（Ｓ２００３）。両方のハンドラがイベントハンドラテーブル１３０２に登録されていれば（Ｓ２００３：Ｙ）、大きい移動閾値の使用を決定する（Ｓ２００４）。
【００８６】
Ｓ２００３において、タップイベントとタッチムーブイベントの両方のハンドラがイベントハンドラテーブル１３０２に登録されていなければ（Ｓ２００３：Ｎ）、Ｓ２００４と比較して小さい移動閾値の使用を決定する（Ｓ２００５）。
また、Ｓ２００１において、前回の判定時がタッチ中でなければ（Ｓ２００１：Ｎ）、発生する可能性のあるイベントはホバームーブイベントかホバーストップイベントである。この場合、操作している手が１つであり、かつ、手の形状が指さし形状かどうかを判定する（Ｓ２００６）。Ｓ２００６において、指さし形状と判定した場合（Ｓ２００６：Ｙ）、大きい移動閾値の使用を決定する（Ｓ２００７）。Ｓ２００６で手の形状が指さし形状でないと判定した場合は（Ｓ２００６：Ｎ）、小さい移動閾値の使用を決定する（Ｓ２００８）。以上のように使用する移動閾値を決定し、移動閾値決定処理を終了する。
【００８７】
図２０（ｂ）は第２実施形態における、ＧＵＩ部品操作処理部４１５の移動軌跡平滑化処理の手順説明図であり、第１実施形態におけるＳ１２０５の処理に対応する。
移動軌跡平滑化処理を開始すると、ＧＵＩ部品操作処理部４１５は、操作している手が１つで、かつ、手の形状が指さし形状かどうかを判定する（Ｓ２０２１）。Ｓ２０２１で指さし形状と判定したら（Ｓ２０２１：Ｙ）、イベントハンドラテーブル１３０２のタッチムーブイベントまたはホバームーブイベントに移動軌跡の描画があるかどうかのフラグを参照する（Ｓ２０２２）。Ｓ２０２２で移動軌跡の描画があると判定したら（Ｓ２０２２：Ｙ）、弱い平滑化を実行する（Ｓ２０２３）。ここで実行する平滑化は、第１実施形態と同じように３点の移動平均であるが、他の平滑化方法でもよい。
Ｓ２０２２で移動軌跡の描画が無いと判定したら、Ｓ２０２３よりも強い平滑化の実行を行う（Ｓ２０２４）。ここで実行する平滑化は、第１実施形態と同じく５点の移動平均であるが、他の平滑化方法でもよい。
また、Ｓ２０２１において、手の形状が指さし形状でないと判定したら（Ｓ２０２１：Ｎ）、Ｓ２０２３と同じく弱い平滑化を実行する（Ｓ２０２５）。
以上のように平滑化を実行して移動軌跡平滑化処理を終了する。
【００８８】
このように、第２実施形態では、操作する手の個数及び手の形状によって移動閾値と平滑化処理を変えることで、プレビューアプリケーションでは、プレビュー表示のスクロール方法を変えることができる。
図２１（ａ）は１つの手で指さし形状でタッチしたまま位置２１０１から位置２１０２へ手を移動させたときの図である。このとき、プレビュー表示はプレビュー表示２１０３からプレビュー表示２１０４へ移動する。このとき、指の移動軌跡に対してより強い平滑化を実行するため、スクロール中の表示をより滑らかに行うことができる。しかしながら、強い平滑化のため指先への表示の追従が遅くなる。図２１（ｂ）は、１つの手で手を開いた形状（指さし形状ではない形状）でタッチしたまま位置２１１１から位置２１１２へ手を移動させたときの図であり、これに従って同様にプレビュー表示はプレビュー表示２０１３からプレビュー表示１８１４へ移動する。このとき、前述した移動閾値決定処理では小さい移動閾値の使用を決定し、また、移動軌跡平滑化処理はより弱い平滑化を実行するため、指先の移動への表示位置の追従性が良好になる。
【００８９】
図２１（ｃ）は両手の指先でプレビュー表示２１３５をタッチし、２つの指先をそれぞれ位置２１３１から位置２１３３へ、位置２１３２から位置２１３４へ、平行移動したときの図である。このときもタッチ点の重心の移動に従ってプレビュー表示２１３５からプレビュー表示２１３６へ移動させる。このときも前述した移動閾値決定処理では小さい移動閾値の使用を決定し、また、移動軌跡平滑化処理はより弱い平滑化を実行するため、指先の移動への表示位置の追従性が良好になる。この動作は、２つの指先のピンチイン・アウトによる拡大・縮小操作と同時にスクロールを行わせる操作に好適である。
【００９０】
［その他の実施例］
第１及び第２実施形態では、入力指示体の例として、ユーザの手や指（指先）を挙げて説明したが、ユーザが操作するタッチペン、スタイラスペン等その他の入力デバイスの場合も同様の処理が可能である。
また、本発明は、制御用プログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し、実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2016103137.tif 000006
【図２】
2016103137.tif 000007
【図３】
2016103137.tif 000008
【図４】
2016103137.tif 000009
【図５】
2016103137.tif 000010
【図６】
2016103137.tif 000011
【図７】
2016103137.tif 000012
【図９】
2016103137.tif 000013
【図１０】
2016103137.tif 000014
【図１１】
2016103137.tif 000015
【図１２】
2016103137.tif 000016
【図１３】
2016103137.tif 000017
【図１４】
2016103137.tif 000018
【図１５】
2016103137.tif 000019
【図１６】
2016103137.tif 000020
【図１７】
2016103137.tif 000021
【図１８】
2016103137.tif 000022
【図１９】
2016103137.tif 000023
【図２０】
2016103137.tif 000024
【図２１】
2016103137.tif 000025
【図８】
2016103137.tif 000026