(57)【要約】【課題】カメラスキャンシステムにおいて、ユーザーが物体上を指先でなぞる操作を行ったときに、物体が指とともに動いても正確に物体上の指先の動きを認識して操作性を向上させること。【解決手段】書画台およびその近傍の平面に表示の投影を行うプロジェクタと、書画台に向かって配置され２次元画像を撮像する２次元画像撮像手段と、書画台に向かって配置され距離画像を取得する距離画像取得手段と、から構成されるカメラスキャンシステムにおいて、指先の位置を距離画像取得手段から得た距離画像から取得するとともに、物体の位置を２次元画像撮像手段で得た２次元画像から取得して、物体の移動量から物体上の座標系を算出し、指先の位置を物体上の座標系で算出し直す。【選択図】図２
2015198406.tif 000002
【特許請求の範囲】
【請求項１】
書画台をその上方から撮影する撮影手段と、
前記書画台上における指定位置の入力を受け付ける入力手段と、
前記入力手段により入力された指定位置を、前記撮影手段により撮影された原稿上の座標に変換する変換手段と、
前記撮影手段により撮影された前記原稿の画像のうち、前記入力手段により入力され前記変換手段により変換された２つの指定位置により定まる読み取り範囲を保存する保存手段と
を有することを特徴とする画像読取装置。
【請求項２】
前記変換手段は、前記撮影手段により原稿が載置されていない前記書画台を撮影した背景画像と、前記撮影手段により撮影した原稿画像との差分の画像から、前記原稿の位置及び傾きを特定して前記書画台上の座標系を前記原稿上の座標系に変換することを特徴とする請求項１に記載の画像読取装置。
【請求項３】
ジェスチャーを認識する手段を更に有し、
前記入力手段は、前記書画台上におけるジェスチャーによる指定位置の入力を受け付けることを特徴とする請求項１又は２に記載の画像読取装置。
【請求項４】
前記２つの指定位置それぞれを指定した際の前記原稿の位置の差に対する前記読み取り範囲の大きさの割合が所定の値よりも小さければ、前記２つの指定位置を受け付け直すことを特徴とする請求項１乃至３のいずれか一項に記載の画像読取装置。
【請求項５】
前記２つの指定位置それぞれを指定した際の前記原稿の位置にずれがある場合には、前記２つの指定位置を受け付け直すことを特徴とする請求項１乃至３のいずれか一項に記載の画像読取装置。
【請求項６】
ジェスチャーを認識する手段を更に有し、
前記書画台上の原稿を押さえたジェスチャーを検知した場合には、前記原稿が所定時間静止することを待ってから、前記２つの指定位置を受け付け直すことを特徴とする請求項１または２に記載の画像読取装置。
【請求項７】
前記書画台上に画像を投影する投影手段と、
前記投影手段を用いて、前記入力手段により入力され前記変換手段により変換された２つの指定位置により定まる読み取り範囲を前記書画台上に投影する手段を更に有することを特徴とする請求項１乃至６のいずれか一項に記載の画像読取装置。
【請求項８】
前記投影手段を用いて、ユーザーに対する操作指示をさらに投影することを特徴とする請求項７に記載の画像読取装置。
【請求項９】
前記２つの指定位置それぞれを指定した際の前記原稿の位置にずれがある場合には、それぞれの位置における原稿の画像を前記撮影手段により撮影した画像からそれぞれ取得することを特徴とする請求項１乃至８のいずれか一項に記載の画像読取装置。
【請求項１０】
前記２つの指定位置それぞれを指定した際の前記原稿の位置にずれがある場合には、ずれの量に基づいて一方の位置における原稿の画像を移動することで、移動後の位置における画像を得ることを特徴とする請求項１乃至８のいずれか一項に記載の画像読取装置。
【請求項１１】
書画台上の立体物である書籍原稿を認識する認識手段と、
前記書画台をその上方から撮影する撮影手段と、
前記書籍原稿上における指定位置の入力を受け付ける入力手段と、
前記入力手段により前記書籍原稿上で入力された指定位置と前記撮影手段により撮影した書籍原稿の画像とを前記書画台上の平面の座標系へと変換し、前記入力手段により入力された指定位置を、前記平面の座標系に変換された原稿上の座標にさらに変換する変換手段と、
前記撮影手段により撮影された前記原稿の画像のうち、前記入力手段により入力され前記変換手段により変換された２つの指定位置により定まる読み取り範囲を保存する保存手段と
を有することを特徴とする画像読取装置。
【請求項１２】
前記２つの指定位置それぞれを指定した際の前記原稿の位置の差に対する前記読み取り範囲の大きさの割合が所定の値よりも小さければ、前記２つの指定位置を受け付け直すことを特徴とする請求項１１に記載の画像読取装置。
【請求項１３】
請求項１乃至１２のいずれか一項に記載の画像読取装置としてコンピュータを機能させるためのプログラム。
【請求項１４】
書画台をその上方から撮影する撮影手段を有する画像読取装置における画像読取方法であって、
前記書画台上における指定位置の入力を受け付ける入力工程と、
前記入力工程により入力された指定位置を、前記撮影手段により撮影された原稿上の座標に変換する変換工程と、
前記撮影手段により撮影された前記原稿の画像のうち、前記入力工程により入力され前記変換工程により変換された２つの指定位置により定まる読み取り範囲を保存する保存工程と
を有することを特徴とする画像読取方法。
【請求項１５】
書画台をその上方から撮影する撮影手段を有する画像読取装置における画像読取方法であって、
書画台上の立体物である書籍原稿を認識する認識工程と、
前記書籍原稿上における指定位置の入力を受け付ける入力工程と、
前記入力工程により前記書籍原稿上で入力された指定位置と前記撮影手段により撮影した書籍原稿の画像とを前記書画台上の平面の座標系へと変換し、前記入力工程により入力された指定位置を、前記平面の座標系に変換された原稿上の座標にさらに変換する変換工程と、
前記撮影手段により撮影された前記原稿の画像のうち、前記入力工程により入力され前記変換工程により変換された２つの指定位置により定まる読み取り範囲を保存する保存工程と
を有することを特徴とする画像読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラスキャナを利用して平面物および立体物の両方のデータ化を行い、保存するための画像読取処理装置、方法およびプログラムに関する。
【背景技術】
【０００２】
従来、文書をスキャンして電子データとして保存する場合、撮像センサとしてラインセンサを用いるラインスキャナと、２次元の撮像センサを用いるカメラスキャナとがある。特に、書画台の上方にカメラを配置し、原稿を上向きに書画台に置いて撮像するカメラスキャナの場合には、１枚の原稿であれば置くだけで素早くスキャンすることができるとともに、本のように厚みのある原稿も容易に書画台に置いてスキャンすることができる。
【０００３】
特許文献１では、書画台に置いた原稿をカメラで上面から読み取るシステムにおいて、プロジェクタとカメラを用いたユーザーインターフェイスが開示されている。プロジェクタによりユーザーインターフェイスを投影することで、紙等の現実の物体上に重畳して表示を行うことができる。また、カメラで手や指先の動きを検出することにより、手や指先で射影したユーザーインターフェイスや現実の物体への電子的な操作を行うことができる。このため、ユーザーは現実の物体を電子的データとのインターフェイスとして扱うことが可能となる。特許文献１では、特に指先で原稿上をなぞる動作により読取領域を指定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２６７０３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、手や指先で現実物体上の点を指し示したり、また、現実物体上に重畳した電子データを操作したりする場合、手や指先が現実物体に触れるため、現実物体が操作中に動いてしまう、という課題が発生する。特許文献１のシステムでは、原稿は手で押さえることが前提となっており、指でなぞっている間に原稿が移動してしまうことは考慮されていなかった。
【０００６】
本発明は上記従来例に鑑みて成されたもので、ユーザーのジェスチャーにより読み取り対象物を移動させてしまっても、その移動による操作の誤認識を防止し、ユーザの意図を汲んだ処理を実現して、操作性及び生産性を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は以下に記載した構成を有する。
【０００８】
書画台をその上方から撮影する撮影手段と、
前記書画台上における指定位置の入力を受け付ける入力手段と、
前記入力手段により入力された指定位置を、前記撮影手段により撮影された原稿上の座標に変換する変換手段と、
前記撮影手段により撮影された前記原稿の画像のうち、前記入力手段により入力され前記変換手段により変換された２つの指定位置により定まる読み取り範囲を保存する保存手段とを有することを特徴とする画像読取装置。
【０００９】
また他の側面によれば本発明は以下に記載した構成を有する。
【００１０】
書画台上の立体物である書籍原稿を認識する認識手段と、
前記書画台をその上方から撮影する撮影手段と、
前記書籍原稿上における指定位置の入力を受け付ける入力手段と、
前記入力手段により前記書籍原稿上で入力された指定位置と前記撮影手段により撮影した書籍原稿の画像とを前記書画台上の平面の座標系へと変換し、前記入力手段により入力された指定位置を、前記平面の座標系に変換された原稿上の座標にさらに変換する変換手段と、
前記撮影手段により撮影された前記原稿の画像のうち、前記入力手段により入力され前記変換手段により変換された２つの指定位置により定まる読み取り範囲を保存する保存手段とを有することを特徴とする画像読取装置。
【発明の効果】
【００１１】
本発明により、ユーザーのジェスチャーにより読み取り対象物を移動させてしまっても、本来のユーザーの意図通りの領域を指定することができ、操作性、生産性を向上することができる。
【図面の簡単な説明】
【００１２】
【図１】カメラスキャナ１０１のネットワーク構成を示す図である。
【図２】カメラスキャナ１０１の外観を示す図である。
【図３】コントローラ部２０１のハードウェア構成図である。
【図４Ａ】カメラスキャナ１０１の制御用プログラムの機能構成図およびシーケンス図である。
【図４Ｂ】カメラスキャナ１０１の制御用プログラムの機能構成図およびシーケンス図である。
【図５】距離画像取得部４０８が実行する処理のフローチャートおよび説明図である。
【図６Ａ】ジェスチャー認識部４０９が実行する処理のフローチャートである。
【図６Ｂ】ジェスチャー認識部４０９が実行する処理のフローチャートである。
【図７】ジェスチャー認識部４０９が実行する処理の説明図である。
【図８】物体検知部４１０が実行する処理のフローチャートである。
【図９】平面原稿撮影部４１１が実行する処理のフローチャートである。
【図１０】平面原稿撮影部４１１が実行する処理の説明図である。
【図１１Ａ】書籍画像撮影部４１２が実行する処理のフローチャートである
【図１１Ｂ】書籍画像撮影部４１２が実行する処理のフローチャートである。
【図１２】書籍画像撮影部４１２が実行する処理の説明図である。
【図１３】立体形状測定部４１３が実行する処理のフローチャートである。
【図１４】立体形状測定部４１３が実行する処理の説明図である。
【図１５Ａ】実施形態１のメイン制御部４０２が実行する処理のフローチャートである。
【図１５Ｂ】実施形態１のメイン制御部４０２が実行する処理のフローチャートである。
【図１６】実施形態１のユーザーインターフェイス部４０３が投射表示する画面である。
【図１７】実施形態２のメイン制御部４０２が実行する処理のフローチャートである。
【図１８】実施形態３のメイン制御部４０２が実行する処理のフローチャートである。
【図１９Ａ】実施形態４のメイン制御部４０２と平面原稿撮影部４１１が実行する処理のフローチャートである。
【図１９Ｂ】実施形態４のメイン制御部４０２と平面原稿撮影部４１１が実行する処理のフローチャートである。
【図２０Ａ】実施形態５のメイン制御部４０２が実行する処理のフローチャートである。
【図２０Ｂ】実施形態５のメイン制御部４０２が実行する処理のフローチャートである。
【図２１】実施形態５のユーザーインターフェイス部４０３が投射表示する画面である。
【図２２Ａ】実施形態６の物体検知部４１０とメイン制御部４０２が実行する処理のフローチャートである。
【図２２Ｂ】実施形態６の物体検知部４１０とメイン制御部４０２が実行する処理のフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照して説明する。
［実施形態１］
図１は、一実施形態に係る画像読取装置であるカメラスキャナ１０１が含まれるネットワーク構成を示す図である。図１に示すように、カメラスキャナ１０１はイーサネット(登録商標)等のネットワーク１０４にてホストコンピュータ１０２およびプリンタ１０３に接続されている。図１のネットワーク構成において、ホストコンピュータ１０２からの指示により、カメラスキャナ１０１から画像を読み取るスキャン機能や、スキャンデータをプリンタ１０３により出力するプリント機能の実行が可能である。また、ホストコンピュータ１０２を介さず、カメラスキャナ１０１への直接の指示により、スキャン機能、プリント機能の実行も可能である。
【００１４】
＜カメラスキャナの構成＞
図２は、一実施形態に係るカメラスキャナ１０１の構成例を示す図である。図２（ａ）に示すように、カメラスキャナ１０１は、コントローラ部２０１、カメラ部２０２、腕部２０３、短焦点プロジェクタ２０７、距離画像センサ部２０８を含む。カメラスキャナの本体であるコントローラ部２０１と、撮像を行うためのカメラ部２０２、短焦点プロジェクタ２０７および距離画像センサ部２０８は、腕部２０３により連結されている。腕部２０３は関節を用いて曲げ伸ばしが可能である。
【００１５】
図２（ａ）には、カメラスキャナ１０１が設置されている書画台２０４も示している。カメラ部２０２および距離画像センサ部２０８のレンズは書画台２０４方向に向けられており、破線で囲まれた読み取り領域２０５内の画像を読み取り可能である。図２の例では、原稿２０６は読み取り領域２０５内に置かれているので、カメラスキャナ１０１に読み取り可能となっている。また、書画台２０４内にはターンテーブル２０９が設けられている。ターンテーブル２０９はコントローラ部２０１からの指示によって回転することが可能であり、ターンテーブル２０９上に置かれた物体とカメラ部２０２との角度を変えることができる。カメラ部２０２は単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像が可能なものとすることが好ましい。なお、図２に示されていないが、カメラスキャナ１０１は、ＬＣＤタッチパネル３３０およびスピーカ３４０をさらに含むこともできる。
【００１６】
図２（ｂ）は、カメラスキャナ１０１における座標系について表している。カメラスキャナ１０１では各ハードウェアデバイスに対して、カメラ座標系、距離画像座標系、プロジェクタ座標系という座標系が定義される。これらはそれぞれ、カメラ部２０２および距離画像センサ部２０７のＲＧＢカメラ部３６３が撮像する画像平面、あるいはプロジェクタ２０７が投影する画像平面をＸＹ平面とし、画像平面に直交した方向をＺ方向として定義したものである。さらに、これらの独立した座標系の３次元データを統一的に扱えるようにするために、書画台２０４を含む平面をＸＹ平面とし、このＸＹ平面から上方に垂直な向きをＺ軸とする直交座標系を定義する。
【００１７】
座標系を変換する場合の例として、図２（ｃ）に、直交座標系と、カメラ部２０２を中心としたカメラ座標系を用いて表現された空間と、カメラ部２０２が撮像する画像平面との関係を示す。直交座標系における３次元点Ｐ［Ｘ，Ｙ，Ｚ］は、（１）式によって、カメラ座標系における３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］へ変換できる。
[Xc, Yc, Zc]T = [Rc|tc][X, Y, Z, 1]T  ...  （１）
ここで、Ｒｃおよびｔｃは、直交座標系に対するカメラの姿勢（回転）と位置（並進）によって求まる外部パラメータによって構成され、Ｒｃを３×３の回転行列、ｔｃを並進ベクトルと呼ぶ。逆に、カメラ座標系で定義された３次元点は（２）式によって、直交座標系への変換することができる。
[X, Y, Z]T = [Rc-1|-Rc-1tc][Xc, Yc, Zc, 1]T  ...  （２）
さらに、カメラ部２０２で撮影される２次元のカメラ画像平面は、カメラ部２０２によって３次元空間中の３次元情報が２次元情報に変換されたものである。すなわち、カメラ座標系上での３次元点Ｐｃ［Ｘｃ，Ｙｃ，Ｚｃ］を、（３）式によってカメラ画像平面での２次元座標ｐｃ［ｘｐ，ｙｐ］に透視投影変換することによって変換することが出来る。
λ[xp, yp, 1]T = A[Xc, Yc, Zc, 1]T  ...  （３）
ここで、Ａは、カメラの内部パラメータと呼ばれ、焦点距離と画像中心などで表現される３×３の行列である。
【００１８】
以上のように、（１）式と（３）式を用いることで、直交座標系で表された３次元点群を、カメラ座標系での３次元点群座標やカメラ画像平面に変換することが出来る。なお、各ハードウェアデバイスの内部パラメータおよび直交座標系に対する位置姿勢（外部パラメータ）は、公知のキャリブレーション手法によりあらかじめキャリブレーションされているものとする。以後、特に断りがなく３次元点群と表記した場合は、直交座標系における３次元データを表しているものとする。
【００１９】
＜カメラスキャナのコントローラのハードウェア構成＞
図３は、カメラスキャナ１０１の本体であるコントローラ部２０１のハードウェア構成例を示す図である。図３に示すように、コントローラ部２０１は、システムバス３０１に接続されたＣＰＵ３０２、ＲＡＭ３０３、ＲＯＭ３０４、ＨＤＤ３０５、ネットワークＩ／Ｆ３０６、画像処理プロセッサ３０７、カメラＩ／Ｆ３０８、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１およびＵＳＢコントローラ３１２を含む。
【００２０】
ＣＰＵ３０２はコントローラ部２０１全体の動作を制御する中央演算装置（プロセッサ）である。ＲＡＭ３０３は揮発性メモリである。ＲＯＭ３０４は不揮発性メモリであり、ＣＰＵ３０２の起動用プログラムが格納されている。ＨＤＤ３０５はＲＡＭ３０３と比較して大容量なハードディスクドライブ（ＨＤＤ）である。ＨＤＤ３０５にはコントローラ部２０１の実行する、カメラスキャナ１０１の制御用プログラムが格納されている。
【００２１】
ＣＰＵ３０２は電源ＯＮ等の起動時、ＲＯＭ３０４に格納されている起動用プログラムを実行する。この起動用プログラムは、ＨＤＤ３０５に格納されている制御用プログラムを読み出し、ＲＡＭ３０３上に展開するためのものである。ＣＰＵ３０２は起動用プログラムを実行すると、続けてＲＡＭ３０３上に展開した制御用プログラムを実行し、制御を行う。また、ＣＰＵ３０２は制御用プログラムによる動作に用いるデータもＲＡＭ３０３上に格納して読み書きを行う。ＨＤＤ３０５上にはさらに、制御用プログラムによる動作に必要な各種設定や、また、カメラ入力によって生成した画像データを格納することができ、ＣＰＵ３０２によって読み書きされる。ＣＰＵ３０２はネットワークＩ／Ｆ３０６を介してネットワーク１０４上の他の機器との通信を行う。
【００２２】
画像処理プロセッサ３０７はＲＡＭ３０３に格納された画像データを読み出して処理し、またＲＡＭ３０３へ書き戻す。なお、画像処理プロセッサ３０７が実行する画像処理は、回転、変倍、色変換等である。カメラＩ／Ｆ３０８はカメラ部２０２および距離画像センサ２０８と接続され、ＣＰＵ３０２からの指示に応じてカメラ部２０２から画像データを、距離画像センサ部２０８から距離画像データを取得してＲＡＭ３０３へ書き込む。また、ＣＰＵ３０２からの制御コマンドをカメラ部２０２および距離画像センサ２０８へ送信し、カメラ部２０２および距離画像センサ２０８の設定を行う。また、コントローラ部２０２は、ディスプレイコントローラ３０９、シリアルＩ／Ｆ３１０、オーディオコントローラ３１１およびＵＳＢコントローラ３１２のうち少なくとも１つをさらに含むことができる。
【００２３】
ディスプレイコントローラ３０９はＣＰＵ３０２の指示に応じてディスプレイへの画像データの表示を制御する。ここでは、ディスプレイコントローラ３０９は短焦点プロジェクタ２０７およびＬＣＤタッチパネル３３０に接続されている。シリアルＩ／Ｆ３１０はシリアル信号の入出力を行う。ここでは、シリアルＩ／Ｆ３１０はターンテーブル２１０に接続され、ＣＰＵ３０２の回転開始・終了および回転角度の指示をターンテーブル２０９へ送信する。また、シリアルＩ／Ｆ３１０はＬＣＤタッチパネル３３０に接続され、ＣＰＵ３０２はＬＣＤタッチパネル３３０が押下されたときに、シリアルＩ／Ｆ３１０を介して押下された座標を取得する。オーディオコントローラ３１１はスピーカ３４０に接続され、ＣＰＵ３０２の指示に応じて音声データをアナログ音声信号に変換し、スピーカ３４０を通じて音声を出力する。ＵＳＢコントローラ３１２はＣＰＵ３０２の指示に応じて外付けのＵＳＢデバイスの制御を行う。ここでは、ＵＳＢコントローラ３１２はＵＳＢメモリやＳＤカードなどの外部メモリ３５０に接続され、外部メモリ３５０へのデータの読み書きを行う。
【００２４】
＜カメラスキャナの制御用プログラムの機能構成＞
図４Ａは、ＣＰＵ３０２が実行するカメラスキャナ１０１の制御用プログラムの機能構成４０１を示す図である。また、図４Ｂは、機能構成４０１の各モジュールの関係をシーケンス図として示したものである。カメラスキャナ１０１の制御用プログラムは前述のようにＨＤＤ３０５に格納され、ＣＰＵ３０２が起動時にＲＡＭ３０３上に展開して実行する。メイン制御部４０２は制御の中心であり、機能構成４０１内の他の各モジュールを図４Ｂに示すように制御する。画像取得部４１６は画像入力処理を行うモジュールであり（図４ＢのＳ４２２）、カメラ画像取得部４０７、距離画像取得部４０８から構成される。カメラ画像取得部４０７はカメラＩ／Ｆ３０８を介してカメラ部２０２が出力する画像データを取得し、ＲＡＭ３０３へ格納する。距離画像取得部４０８はカメラＩ／Ｆ３０８を介して距離画像センサ部２０８が出力する距離画像データを取得し、ＲＡＭ３０３へ格納する。距離画像取得部４０８の処理の詳細は図５を用いて後述する。
【００２５】
認識処理部４１７はカメラ画像取得部４０７、距離画像取得部４０８が取得する画像データから書画台上の物体の動きを検知して認識するモジュールであり、ジェスチャー認識部４０９、物体検知部４１０から構成される。ジェスチャー認識部４０９は、画像取得部４１６から書画台２０４上の画像を取得し続け、タッチなどのジェスチャーを検知するとメイン制御部４０２へ通知する（図４ＢのＳ４２３）。物体検知部４０９は、メイン制御部４０２から物体載置待ち処理あるいは物体除去待ち処理の通知を受けると、画像取得部４１６から書画台２０４を撮像した画像を取得し、書画台２０４上に物体が置かれて静止するタイミングあるいは物体が取り除かれるタイミングを検知する処理を行う（図４ＢのＳ４２１）。ジェスチャー認識部４０９によるステップＳ４２３、物体検知部４１０によるステップＳ４２１の処理の詳細は図６〜図８を用いてそれぞれ後述する。
【００２６】
スキャン処理部４１８は実際に対象物のスキャンを行うモジュールであり、平面原稿画像撮影部４１１、書籍画像撮影部４１２、立体形状測定部４１３から構成される。平面原稿画像撮影部４１１は平面原稿、書籍画像撮影部４１２は書籍、立体形状測定部４１３は立体物に、それぞれ適した処理を実行し、それぞれに応じた形式のデータを出力する。これらのモジュールの処理（図４ＢのＳ４２４）の詳細は図９〜図１４を用いてそれぞれ後述する。
【００２７】
ユーザーインターフェイス部４０３は、ＧＵＩ部品生成表示部４１４と投射領域検出部４１５から構成される。ＧＵＩ部品生成表示部４１４は、メイン制御部４０２からの要求を受け、メッセージやボタン等のＧＵＩ部品を生成する。そして、表示部４０６へ生成したＧＵＩ部品の表示を要求する。なお、書画台２０４上のＧＵＩ部品の表示場所は、投射領域検出部４１５により検出される。表示部４０６はディスプレイコントローラ３０９を介して、短焦点プロジェクタ２０７もしくはＬＣＤタッチパネル３３０へ要求されたＧＵＩ部品の表示を行う。プロジェクタ２０７は書画台２０４に向けて設置されているため、書画台２０４上にＧＵＩ部品を投射することが可能となっている。また、ユーザーインターフェイス部４０３は、ジェスチャー認識部４０９が認識したタッチ等のジェスチャー操作、あるいはシリアルＩ／Ｆ３１０を介したＬＣＤタッチパネル３３０からの入力操作、そしてさらにそれらの座標を受信する。そして、ユーザーインターフェイス部４０３は描画中の操作画面の内容と操作座標を対応させて操作内容（押下されたボタン等）を判定する。この操作内容をメイン制御部４０２へ通知することにより、操作者の操作を受け付ける（図４ＢのＳ４２５）。
【００２８】
ネットワーク通信部４０４は、ネットワークＩ／Ｆ３０６を介して、ネットワーク１０４上の他の機器とＴＣＰ／ＩＰによる通信を行う。データ管理部４０５は、制御用プログラム４０１の実行において生成した作業データなど様々なデータをＨＤＤ３０５上の所定の領域へ保存し、管理する。例えば平面原稿画像撮影部４１１、書籍画像撮影部４１２、立体形状測定部４１３が生成したスキャンデータなどである。
【００２９】
＜距離画像センサおよび距離画像取得部の説明＞
図３に距離画像センサ２０８の構成を示している。距離画像センサ２０８は赤外線によるパターン投射方式の距離画像センサである。赤外線パターン投射部３６１は対象物に、人の目には不可視である赤外線によって３次元測定パターンを投射する。赤外線カメラ３６２は対象物に投射した３次元測定パターンを読みとるカメラである。ＲＧＢカメラ３６３は人の目に見える可視光をＲＧＢ信号で撮影するカメラである。
【００３０】
距離画像取得部４０８の処理を図５（ａ）のフローチャートを用いて説明する。また、図５（ｂ）〜（ｄ）はパターン投射方式による距離画像の計測原理を説明するための図面である。距離画像取得部４０８による図５（ａ）の処理は、たとえばジェスチャー認識部４０９による図６ＡのステップＳ６２１や、物体検知部４１０による図８のステップＳ８１１、Ｓ８４１など、距離画像の取得のつど実行される。
【００３１】
距離画像取得部４０８が処理を開始すると、ステップＳ５０１では、図５（ｂ）に示すように赤外線パターン投射部３６１を用いて赤外線による３次元形状測定パターン５２２を対象物５２１に投射する。ステップＳ５０２では、ＲＧＢカメラ３６３を用いて対象物を撮影したＲＧＢ画像５２３を取得し、さらに、ステップＳ５０１で投射した３次元測定パターン５２２を赤外線カメラ３６２で撮影した赤外線カメラ画像５２４を取得する。なお、赤外線カメラ３６２とＲＧＢカメラ３６３とでは設置位置が異なるため、図５（ｃ）に示すようにそれぞれで撮影される２つのＲＧＢカメラ画像５２３および赤外線カメラ画像５２４の撮影領域が異なる。そこでステップＳ５０３では、赤外線カメラ３６２の座標系からＲＧＢカメラ３６３の座標系への座標系変換を用いて赤外線カメラ画像５２４をＲＧＢカメラ画像５２３の座標系に合わせる。なお、赤外線カメラ３６２とＲＧＢカメラ３６３との相対位置関係や、それぞれの内部パラメータは事前のキャリブレーション処理により既知であるとする。
【００３２】
ステップＳ５０４では、図５（ｄ）に示すように、３次元測定パターン５２２とステップＳ５０３で座標変換を行った赤外線カメラ画像５２４との間の対応点を抽出する。例えば、赤外線カメラ画像５２４上の１点を３次元形状測定パターン５２２上から探索して、同一の点が検出された場合に対応付けを行う。あるいは、赤外線カメラ画像５２４の画素の周辺のパターンを３次元形状測定パターン５２２上から探索し、一番類似度が高い部分と対応付けてもよい。この対応付けを容易化するために、３次元形状測定パターン５２２は、その任意の一部分が、他のどの一部分とも異なるパターンとなるよう構成しておくことが望ましく、それによって、パターンの一部分から、その一部分が全体におけるどの部分であるかを特定できる。また、３次元形状測定パターン５２２を３次元物体へ投射し、それを撮影して得たパターンは、元のパターンとの対応付が困難になる可能性がある。そこで、たとえば平面に近似できるようなごく狭い範囲に投影されたパターンの一部からそのパターン全体における位置を特定できるよう、３次元形状測定パターン５２２は、密度の高いパターンとしておくことが望ましい。
【００３３】
ステップＳ５０５では、赤外線パターン投射部３６１と赤外線カメラ３６２を結ぶ直線を基線５２５として三角測量の原理を用いて計算を行うことにより、赤外線カメラ３６２からの距離を算出する。ステップＳ５０４で対応付けが出来た画素については、赤外線カメラ３６２からの距離を算出して画素値として保存し、対応付けが出来なかった画素については、距離の計測が出来なかった部分として無効値を保存する。これをステップＳ５０３で座標変換を行った赤外線カメラ画像５２４の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。なお、赤外線カメラ３６２からの距離を算出するためには、赤外線カメラ３６２と赤外線パターン投射部３６１の位置関係およびそれぞれの内部パラメータがわかっている必要がある。これらは、事前のキャリブレーション処理により算出しておく。  ステップＳ５０６では、距離画像の各画素に対応付けてＲＧＢカメラ画像５２５のＲＧＢ値を保存することにより、１画素につきＲ、Ｇ、Ｂ、距離の４つの値を持つ距離画像を生成する。ここで取得した距離画像は距離画像センサ２０８のＲＧＢカメラ３６３で定義された距離画像センサ座標系が基準となっている。そこでステップＳ５０７では、図２（ｂ）を用いて上述したように、距離画像センサ座標系として得られた距離データを直交座標系における３次元点群に変換する。以後、特に指定がなく３次元点群と表記した場合は、直交座標系における３次元点群を示すものとする。
【００３４】
なお、本実施例では上述したように、距離画像センサ２０８として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサを用いることも可能である。例えば、２つのＲＧＢカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するＴＯＦ（Ｔｉｍｅ  ｏｆ  Ｆｌｉｇｈｔ）方式を用いても構わない。
【００３５】
＜ジェスチャー認識部の説明＞
ジェスチャー認識部４０９の処理の詳細を、図６Ａ、図６Ｂのフローチャートを用いて説明する。ジェスチャー認識部４０９による図６Ａ、図６Ｂの処理は、たとえば物体検知部４１０により書画台への物体の載置の検知をトリガとして介されてもよいし、ジェスチャーの入力が必要な都度実行してもよい。また、カメラスキャナ１０１の立ち上げ後に自動的に実行開始されてもよい。図６Ａにおいて、ジェスチャー認識部４０９が処理を開始すると、ステップＳ６０１では初期化処理を行う。初期化処理で、ジェスチャー認識部４０９は距離画像取得部４０８から距離画像を１フレーム取得する。ここで、ジェスチャー認識部４０９の処理開始時には書画台２０４上に対象物が置かれていない状態であるため、初期状態として書画台２０４の平面の認識を行う。つまり、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル（以降、書画台２０４の平面パラメータと呼ぶ）を算出し、ＲＡＭ３０３に保存する。
続いてステップＳ６０２では、ステップＳ６２１〜６２２に示す、書画台２０４上に存在する物体の３次元点群を取得する。３次元点群の取得は図５で説明した手順で行われる。その際、ステップＳ６２１では距離画像取得部４０８から距離画像と３次元点群を１フレーム取得する。ステップＳ６２２では書画台２０４の平面パラメータを用いて、取得した３次元点群から書画台２０４を含む平面にある点群を除去する。
【００３６】
ステップＳ６０３では、ステップＳ６３１〜Ｓ６３６に示す、取得した３次元点群からユーザーの手の形状および指先を検出する処理を行う。ここで、図７に示す、指先検出処理の方法を模式的に表した図を用いて説明する。ステップＳ６３１では、ステップＳ６０２で取得した３次元点群から、書画台２０４を含む平面から所定の高さ以上にある３次元点群を抽出することで、手の３次元点群を得る。ここで、人の手には固有の色があるため、画素の色によって手の３次元点群を特定する。手の色としては、予め定めた特定の色を用いてもよいが、ジェスチャーで指示するユーザーの手の色をあらかじめ読み取っておいてもよい。さらに、抽出した手の３次元点群を連続した領域ごとに分割し、所定の大きさ以上の領域を大きい方から２つまで手の３次元点群とする。これにより、ユーザー１人の左右両手に相当する手の３次元点群を得ることができる。図７（ａ）の３次元点群７０１は抽出した手の３次元点群の１つを表している。次に、ステップＳ６３５とステップＳ６３６で示したように、ステップＳ６３２からステップＳ６３４の処理を２つの手の３次元点群について繰り返す。なお、ステップＳ６３１で手の領域が１つしか見つからなければ、ステップＳ６３５とＳ６３６で示したループは１度だけ実行する。また、ステップＳ６３１で手の３次元点群が見つからなければステップＳ６３５とステップＳ６３６で示したループは実行しない。ステップＳ６３２では、抽出した手の３次元点群を、書画台２０４の平面に射影した２次元画像を生成して、その手の外形を検出する。図７（ａ）の２次元画像７０２は、書画台２０４の平面に投影した３次元点群を表している。投影は、点群の各座標を、書画台２０４の平面パラメータを用いて投影すればよい。また、図７（ｂ）に示すように、投影した３次元点群から、ｘｙ座標の値だけを取り出せば、ｚ軸方向から見た２次元画像７０３として扱うことができる。このとき、手の３次元点群の各点が、書画台２０４の平面に投影した２次元画像の各座標のどれに対応するかを、記憶しておくものとする。ステップＳ６３３では検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より小さい点を指先として検出する。図７（ｃ）は、外形の曲率から指先を検出する方法を模式的に表したものである。輪郭点７０４は、書画台２０４の平面に投影された２次元画像７０３の外形を表す点の一部を表している。ここで、輪郭点７０４のような外形を表す点のうち、隣り合う５個の輪郭点を含み、その他の輪郭点を含まないように円を描くことを考える。円７０５、円７０７が、その例である。この円を、全ての外形の点に対して順に描き、その直径（例えば７０６、７０８）が所定の値より小さい（曲率が小さい）ことを以て、指先とする。この例では隣り合う５個の点としたが、その数は限定されるものではない。この点の数が閾値となる曲率を定めるため、点の数はたとえば実験的に定めてもよい。また、ここでは曲率を用いたが、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。ステップＳ６３４では、検出した指先の個数および各指先の座標を算出する。この時、前述したように、書画台２０４に投影した２次元画像の各点と、手の３次元点群の各点の対応関係を記憶しているため、各指先の３次元座標を得ることができる。今回は、３次元点群から２次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、ＲＧＢ画像の肌色領域から手の領域を抽出し、上に述べたのと同様の方法（外形の曲率計算等）で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標はＲＧＢ画像や距離画像といった、２次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の３次元座標に変換する必要がある。この時、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
【００３７】
続いて、ステップＳ６０６とステップＳ６０７のループで示したように、ステップＳ６０４とステップＳ６０５の処理を、ステップＳ６３１で抽出した手の３次元点群領域の数だけ繰り返して実行する。すなわち、ステップＳ６３１で２つの（両手分の）手の３次元点群を抽出した場合はステップＳ６０４とステップＳ６０５は２回繰り返す。また、ステップＳ６３１で１つの手の３次元点群しか抽出できなかった場合にはステップＳ６０４とステップＳ６０５の処理を１度実行する。さらに、テップＳ６３１で手の３次元点群を抽出できなかった場合にはステップＳ６０４とＳ６０５の処理は実行しないで、ステップＳ６０２へ戻る。
【００３８】
ステップＳ６０４では、図６ＢのステップＳ６４１〜Ｓ６６９に示す、検出した手の形状および指先からのジェスチャー判定処理を行う。ステップＳ６４１では、ステップＳ６０３で検出した指先が１つかどうか判定する。ただし、例えば人差し指と親指を同時に立てた手の形状の場合もあるため、指先が２つ以上検出された場合には親指の指先と思われる指先を除外して判定する。親指の指先かどうかの判定には、例えば、手の重心位置とそれぞれの指先の成す角度が所定の値（４５〜９０度の間程度が適切）以上である、といった方法を用いることができる。ステップＳ６４１において検出した指先が１つであればステップＳ６４２へ進み、検出した指先と書画台２０４を含む平面との距離を算出する。ステップＳ６４３では、後述する物体検知部４１０の処理によって抽出される、手および書画台平面の点群以外の立体物点群が存在するかを判定する。ステップＳ６４３で立体物点群があればステップＳ６４４へ進み、指先の点と立体物点群の各点との距離を算出し、距離が最小である点を指先に最も近い点として選択する。ステップＳ６４５では選択した指先に最も近い点と指先との距離が微小な所定の値以下であるかどうか判定する。ステップＳ６４５で指先に最も近い点と指先との距離が所定の値以下であればステップＳ６４９へ進み、指先が立体物にタッチしたジェスチャーがありと判定する。ステップＳ６４３で手および書画台平面の立体物点群が無いか、または、ステップＳ６４５で指先と立体物点群の距離の最小値が所定の値より大きければ、立体物タッチジェスチャーは無いと判定し、ステップＳ６４６へ進む。ステップＳ６４６では、ステップＳ６４２で算出した指先と書画台平面の距離が、微小な所定の値以下であるかどうか判定する。ステップＳ６４９で、指先と書画台平面の距離が所定の値以下であればステップＳ６４８へ進み、指先が書画台２０４へタッチした、平面タッチジェスチャーありと判定する。ステップＳ６４６で、指先と書画台平面の距離が所定の値より大きければステップＳ６４７へ進み、指先が移動したジェスチャー（タッチはしていないが指先が書画台２０４上に存在するジェスチャー）と判定する。
【００３９】
ステップＳ６４１において検出した指先が１つで無ければステップＳ６６１へ進み、ステップＳ６３４で検出した指先と書画台平面の距離の最小値を算出する。ステップＳ６６２では、後述する物体検知部４１０の処理によって抽出される手および書画台平面の点群以外の立体物点群が存在し、かつ、いずれかの指先がその立体物点群の上に重なっているかどうかを判定する。ステップＳ６６２がＹＥＳであればステップＳ６６３へ進み、ステップＳ６３４で検出した指先と立体物点群の距離の最小値を算出する。ステップＳ６６４ではステップＳ６３で算出した距離の最小値が微小な所定値以下であるかどうかを判定する。ステップＳ６６４がＹＥＳであればステップＳ６６９へ進み、立体物を手で押さえたジェスチャーがあると判定する。ステップＳ６６２で立体物点群が存在しないかあるいはいずれかの指も立体物点群の上に重なっていないと判定するか、ステップＳ６６４で指先と立体物点群の距離が所定値より大きいと判定した場合には、ステップＳ６６５へ進む。ステップＳ６６５では、後述する物体検知部４１０の処理によって書画台２０４上に平面原稿があることが検知され、かつ、いずれかの指先がその平面原稿の上にあるかどうかを判定する。ステップＳ６６５がＹＥＳであればステップＳ６６６へ進み、ステップＳ６６１で算出した指先と書画台平面の距離の最小値が微小な所定の値以下かどうかを判定する。ステップＳ６６６がＹＥＳであればステップＳ６６８へ進み、平面原稿を手で押さえているジェスチャーがあると判定する。ステップＳ６６５で平面原稿が検知されていないか、あるいは平面原稿の上にいずれの指先も無い場合、または、ステップＳ６６６で指先と書画台平面の距離が所定値よりも大きい場合には、ステップＳ６６７へ進み、ジェスチャーが無いと判定する。
【００４０】
ステップＳ６０４でジェスチャーの判定を行うとステップＳ６０５へ進み、判定したジェスチャーをメイン制御部４０２へ通知する（ステップＳ６６７でジェスチャーが無いと判定した場合も、ジェスチャーが無いことをメイン制御部４０２へ通知する）。以上のようにステップＳ６０４とステップＳ６０５で示したループをステップＳ６３１で抽出した手の３次元点群領域の数だけ実行した後、ステップＳ６０２へ戻ってジェスチャー認識処理を繰り返す。
【００４１】
＜物体検知部の処理＞
図８のフローチャートを用いて物体検知部４１０の処理の説明を行う。物体検知部４１０が処理を開始すると、図８のステップＳ８０１では、ステップＳ８１１〜Ｓ８１３に示す初期化処理を行う。ステップＳ８１１では、カメラ画像取得部４０７からカメラ画像を、距離画像取得部４０８から距離画像をそれぞれ１フレーム取得する。ステップＳ８１２では、取得したカメラ画像を前フレームカメラ画像として保存する。ステップＳ８１３では、取得したカメラ画像および距離画像を書画台背景カメラ画像および書画台背景距離画像としてそれぞれ保存する。（以降、「書画台背景カメラ画像」および「書画台背景距離画像」と記載した場合は、ここで取得したカメラ画像および距離画像のことを指す。）
ステップＳ８０２では、ステップＳ８２１〜Ｓ８２８に示す、物体が書画台２０４上に置かれたことの検知（物体載置検知処理）を行う。ステップＳ８２１ではカメラ画像取得部４０７からカメラ画像を１フレーム取得する。ステップＳ８２１で新たに取得したカメラ画像を現フレームカメラ画像と呼ぶ。また、後述するステップＳ８２８で保存されたカメラ画像を前フレームカメラ画像と呼ぶ。ステップＳ８２２では取得したカメラ画像と前フレームカメラ画像との差分を計算してその絶対値を合計した差分値を算出する。ステップＳ８２３では算出した差分値があらかじめ決めておいた所定値以上かどうかを判定する。算出した差分値が所定値未満であれば書画台２０４上には物体が無いと判断し、ステップＳ８２８へ進んで現フレームのカメラ画像を前フレームカメラ画像として保存してからステップＳ８２１へ戻って処理を続ける。ステップＳ８２３において差分値が所定値以上であればステップＳ８２４へ進み、ステップＳ８２１で取得したカメラ画像と前フレームカメラ画像との差分値を、ステップＳ８２２と同様に算出する。ステップＳ８２５では算出した差分値があらかじめ決めておいた所定値以下であるかどうかを判定する。ステップＳ８２５において算出した差分値が所定値よりも大きければ書画台２０４上の物体が動いていると判断し、ステップＳ８２８へ進んで現フレームのカメラ画像を前フレームカメラ画像として保存してから、ステップＳ８２１へ戻り処理を続ける。ステップＳ８２５において算出した差分値が所定値以下であればステップＳ８２６へ進む。ステップＳ８２６では、ステップＳ８２５が連続してＹＥＳとなった回数から、差分値が所定値以下、つまり書画台２０４上の物体が静止した状態があらかじめ決めておいたフレーム数続いたかどうかを判定する。ステップＳ８２６において書画台２０４上の物体が静止した状態があらかじめ決めておいたフレーム数続いていないと判定したら、ステップＳ８２８へ進んで現フレームのカメラ画像を前フレームカメラ画像として保存し、ステップＳ８２１へ戻って処理を続ける。ステップＳ８２６において画台２０４上の物体が静止した状態があらかじめ決めておいたフレーム数続いたと判定したら、ステップＳ８２７へ進んで物体が置かれたことをメイン制御部４０２へ通知し、物体載置検知処理を終了する。
【００４２】
ステップＳ８０３では、ステップＳ８３１〜Ｓ８３５に示す、平面原稿領域取得処理を行う。ステップＳ８３１ではカメラ画像取得部４０７からカメラ画像を１フレーム取得する。ステップＳ８３２では、ジェスチャー認識部４０９が図６のステップＳ６３１で説明した処理によって抽出した手の領域を取得し、座標変換によって抽出した手の領域がカメラ画像上で占める領域を算出する。そして、算出した領域をカメラ画像からマスクすることにより、次ステップ以降の処理に手の領域が影響しないようにする。ステップＳ８３３では書画台背景画像と、ステップＳ８３２でマスク処理を行ったカメラ画像との差分画像を生成し、二値化を行う。ステップＳ８３４では、生成した差分二値化画像がカメラ座標系であるため、差分二値化画像を書画台平面へ射影変換することにより、直交座標系へ座標変換する。ステップＳ８３５で、差分のある領域を矩形近似し、原稿が存在する原稿領域として抽出する。そして、原稿領域の直交座標系における位置と傾きを算出し、ステップＳ８０３の平面原稿領域取得処理を終了する。
【００４３】
ステップＳ８０４では、ステップＳ８４１〜Ｓ８４３に示す、立体物３次元点群取得処理を行う。ステップＳ８４１では、距離画像取得部４０８から距離画像をそれぞれ１フレーム取得する。ステップＳ８４２では、取得した３次元点群から、書画台平面より下にある点を除去する。ステップＳ８４３では、ジェスチャー認識部４０９が図６のステップＳ６３１で説明した処理によって抽出した手の領域を取得する。そして、ステップＳ８４２で書画台平面以下の点を除去した３次元点群から、手の領域にある３次元点群を除去する。ステップＳ８４２、Ｓ８４３の処理により、書画台２０４上に置かれた物体の３次元点群を得ることができ、ステップＳ８０４の立体物３次元点群取得処理を終了する。
【００４４】
ステップＳ８０５では、ステップＳ８０３で取得する平面原稿領域とステップＳ８０４で取得する３次元点群が両方とも無くなったかどうかを判断する。ステップＳ８０５がＮＯであれば書画台２０４上には原稿あるいは立体物があるということになるため、ステップＳ８０３へ戻って平面原稿領域の取得およびステップＳ８０４の立体物３次元点群取得処理を繰り返す。ステップＳ８０５で平面原稿領域と３次元点群の両方とも無くなったと判断したらステップＳ８０６へ進み、書画台２０４上の物体除去をメイン制御部４０２へ通知し、物体検知部の処理を終了する。
【００４５】
＜平面原稿画像撮影部の説明＞
図９のフローチャートを用いて、平面原稿画像撮影部４１１が実行する処理を説明する。図１０は平面原稿画像撮影部４１１の処理を説明するための模式図である。平面原稿画像撮影部４１１は処理を開始すると、ステップＳ９０１ではカメラ画像取得部４０７を介してカメラ部２０２からの画像を１フレーム取得する。ここで、カメラ部２０２の座標系は図２（ｂ）で示したように書画台２０４に正対していないため、このときの撮影画像は図１０（ａ）に示すように対象物１００１、書画台２０４ともに歪んでいる。ステップＳ９０２では、書画台背景カメラ画像とステップＳ９０１で取得したカメラ画像との画素毎の差分を算出し、差分画像を生成した上で、差分のある画素が黒、差分の無い画素が白となるように二値化する。したがって、ここで生成した差分画像は、図１０（ｂ）の領域１００２のように、対象物１００１の領域が黒色である（差分がある）画像となる。ステップＳ９０３では差分領域１００２を用いて、図１０（ｃ）のように対象物１００１のみの画像を抽出する。ステップＳ９０４では、抽出した原稿領域画像に対して階調補正を行う。ステップＳ９０５では、抽出した原稿領域画像に対してカメラ座標系から書画台２０４への射影変換を行い、図１０（ｄ）のように書画台２０４の真上から見た画像１００３に変換する。ここで用いる射影変換パラメータは、ジェスチャー認識部４０９の処理において、前述した図６ＢのステップＳ６１２で算出した平面パラメータとカメラ座標系から求めることができる。なお、図１０（ｄ）に示したように、書画台２０４上への原稿の置き方により、ここで得られる画像１００３は傾いていることがある。そこで、ステップＳ９０６では、画像１００３を矩形近似してからその矩形が水平になるように回転し、図１０（ｅ）で示した画像１００４のように傾きの無い画像を得る。図１０（ｆ）に示すように、基準ラインに対しての矩形の傾きθ１およびθ２を算出し、傾きが小さい方（ここではθ１）を画像１００３の回転角度として決定する。あるいは、図１０（ｇ）および図１０（ｈ）に示すように、画像１００３中に含まれる文字列に対してＯＣＲ処理を行い、文字列の傾きから画像１００３の回転角度の算出および天地判定処理をしてもよい。ステップＳ９０７では抽出した画像１００４に対して、あらかじめ決めておいた画像フォーマット（例えばＪＰＥＧ、ＴＩＦＦ、ＰＤＦ等）に合わせて圧縮およびファイルフォーマット変換を行う。そして、データ管理部４０５を介してＨＤＤ３０５の所定の領域へファイルとして保存し、平面原稿画像撮影部４１１の処理を終了する。
【００４６】
＜書籍画像撮影部の処理＞
図１１Ａのフローチャートを用いて、書籍画像撮影部４１２が実行する処理について説明する。図１２は書籍画像撮影部４１２の処理を説明するための模式図である。図１１Ａのフローチャートで、書籍画像撮影部４１２は処理を開始すると、ステップＳ１１０１ではカメラ画像取得部４０７、距離画像取得部４０８を用いて、カメラ部２０２からカメラ画像を、距離画像センサ部２０８から距離画像を、それぞれ１フレームずつ取得する。ここで得られるカメラ画像の例を図１２（ａ）に示す。図１２（ａ）では、書画台２０４と撮影対象書籍１２１１を含むカメラ画像１２０１が得られている。図１２（ｂ）はここで得られた距離画像の例である。図１２（ｂ）では、距離画像センサ部２０８に近い方が濃い色であらわされており、距離画像センサ部２０８から対象物体１２１２上の各画素への距離が含まれる距離画像１２０２が得られている。また、図１２（ｂ）において、距離画像センサ部２０８からの距離が書画台２０４よりも遠い画素については白であらわされており、対象物体１２１２の書画台２０４に接している部分（対象物体１２１２では右側のページ）も同じく白色となる。
【００４７】
ステップＳ１１０２では、ステップＳ１１１１〜Ｓ１１１６に示す、取得したカメラ画像と距離画像から書画台２０４上に載置された書籍物体の３次元点群を算出する処理を行う。ステップＳ１１１１ではカメラ画像１２０２と書画台背景カメラ画像との画素毎の差分を算出して二値化を行い、図１２（ｃ）のように物体領域１２１３が黒で示されるカメラ差分画像１２０３を生成する。ステップＳ１１１２ではカメラ差分画像１２０３を、カメラ座標系から距離画像センサ座標系への変換を行い、図１２（ｄ）のように距離画像センサ部２０８からみた物体領域１２１４を含むカメラ差分画像１２０４を生成する。ステップＳ１１１３では距離画像と書画台背景距離画像との画素毎の差分を算出して二値化を行い、図１２（ｅ）のように物体領域１２１５が黒で示される距離差分画像１２０５を生成する。ここで、対象物体１２１１の書画台２０４と同じ色で有る部分については、画素値の差が小さくなるためカメラ差分画像１２０３中の物体領域１２１３に含まれなくなる場合がある。また、対象物体１２１２の書画台２０４と高さが変わらない部分については距離センサ部２０８からの距離値が書画台２０４と差が小さいため、距離差分画像１２０５中の物体領域１２１５には含まれない場合がある。そこで、ステップＳ１１１４ではカメラ差分画像１２０３と距離差分画像１２０５の和をとって図１２（ｆ）に示す物体領域画像１２０６を生成し、物体領域１２１６を得る。ここで物体領域１２１６は書画台２０４と比べて色が異なるかまたは高さが異なる領域となり、カメラ差分画像１２０３中の物体領域１２１３か距離差分画像１２０５中の物体領域１２１５のいずれか片方のみを使った場合よりも、より正確に物体領域を表している。物体領域画像１２０６は距離画像センサ座標系であるため、ステップＳ１１１５では距離画像１２０２から物体領域画像１２０６中の物体領域１２１６のみを抽出することが可能である。ステップＳ１１１６ではステップＳ１１１５で抽出した距離画像を直交座標系に変換することにより図１２（ｆ）に示した３次元点群１２１７を生成する。この３次元点群１２１７が書籍物体の３次元点群である。
【００４８】
ステップＳ１１０３では、取得したカメラ画像と算出した３次元点群とから、書籍画像のゆがみ補正処理を行い、２次元の書籍画像を生成する。ステップＳ１１０３の処理は、図１１Ｂで詳しく説明する。
【００４９】
図１１Ｂのフローチャートを用いて、ステップＳ１１０３の書籍画像ゆがみ補正処理について説明する。書籍画像ゆがみ補正処理を開始すると、ステップＳ１１２１では物体領域画像１２０６を距離センサ画像座標系からカメラ座標系に変換する。ステップＳ１１２２ではカメラ画像１２０１から物体領域画像１２０６中の物体領域１２１６をカメラ座標系に変換したものを用いて物体領域を抽出する。ステップＳ１１２３では抽出した物体領域画像を書画台平面へ射影変換する。ステップＳ１１２４では射影変換した物体領域画像を矩形近似し、その矩形が水平になるように回転することによって、図１２（ｇ）の書籍画像１２０８を生成する。書籍画像１２０８は近似矩形の片方の編がＸ軸に平行となっているため、以降書籍画像１２０８に対してＸ軸方向へのゆがみ補正処理を行う。ステップＳ１１２５では書籍画像１２０８の最も左端の点をＰとする（図１２（ｇ）の点Ｐ）。ステップＳ１１２６では書籍物体の３次元点群１２１７から点Ｐの高さ（図１２（ｇ）のｈ１）を取得する。ステップＳ１１２７では書籍画像１２０８の点Ｐに対してＸ軸方向に所定の距離（図１２（ｇ）のｘ１）離れた点をＱとする（図１２（ｇ）の点Ｑ）。ステップＳ１１２８では３次元点群１２１７から点Ｑの高さ（図１２（ｇ）のｈ２）を取得する。ステップＳ１１２９では点Ｐと点Ｑの書籍物体上での距離（図１２（ｇ）のｌ１）を式（４）の直線近似で算出する。
l1 = √(x12+(h1-h2) 2)  ...  （４）
ここで、ｈ１、ｈ２はそれぞれ点Ｐ，Ｑにおける書画台から原稿までの高さ、ｘ１は、点Ｐ、Ｑを書画台に投影した、Ｐ，Ｑ間の距離のｘ成分である。
【００５０】
ステップＳ１１３０では、ステップＳ１１２９で算出した距離ｌ１でＰＱ間の距離を補正し、図１２（ｇ）における画像１２１９上の点Ｐ'と点Ｑ' の位置に画素をコピーする。ステップＳ１１３１では書籍物体の３次元点群１２１７の点Ｐに相当する点のデータに補正後の座標を保存する。ステップＳ１１３２では処理を行った点Ｑを点Ｐとし、ステップＳ１１２８に戻って同じ処理を行うことによって図１２（ｇ）の点Ｑと点Ｒの間の補正を実行することができ、画像１２１９上の点Ｑ'と点Ｒ'の画素とする。この処理を全画素について繰り返すことにより、画像１２１９はゆがみ補正後の画像となる。ステップＳ１１３３ではゆがみ補正処理を全ての点について終えたかどうかを判断し、終えていれば書籍物体のゆがみ補正処理を終了する。以上のようにして、ステップＳ１１０２、ステップＳ１１０３の処理を行ってゆがみ補正を行った書籍画像を生成することができる。
【００５１】
ゆがみ補正を行った書籍画像の生成後、ステップＳ１１０４では生成した書籍画像に階調補正を行う。ステップＳ１１０５では生成した書籍画像に対して、あらかじめ決めておいた画像フォーマット（例えばＪＰＥＧ、ＴＩＦＦ、ＰＤＦ等）に合わせて圧縮およびファイルフォーマット変換を行う。ステップＳ１１０６では生成した画像データを、データ管理部４０５を介してＨＤＤ３０５の所定の領域へファイルとして保存し、書籍画像撮影部４１２の処理を終了する。
【００５２】
＜立体形状測定部の説明＞
図１３のフローチャートを用いて、立体形状測定部４１３が実行する処理について説明する。図１４は立体形状測定部４１３の処理を説明するための模式図である。立体形状測定部４１３が処理を開始すると、ステップＳ１３０１ではシリアルＩ／Ｆ３１０を介してターンテーブル２０９へ回転指示を行い、ターンテーブル２０９を所定の角度ずつ回転させる。ここでの回転角度は小さければ小さいほど最終的な測定精度は高くなるが、その分測定回数が多くなり時間がかかるため、装置として適切な回転角度を予め決めておけば良い。
【００５３】
ステップＳ１３０２では書画台２０４内に設けられたターンテーブル２０９上の対象物に対して、カメラ部２０２とプロジェクタ２０７を用いて３次元点群測定処理を行う。図１３（ｂ）のフローチャートはステップＳ１３０２で実行する３次元点群測定処理のフローチャートである。３次元点群測定処理を開始すると、ステップＳ１３１１では図１４（ａ）に示したターンテーブル２０９上の対象物１４０１に対して、プロジェクタ２０７から３次元形状測定パターン１４０２を投射する。ステップＳ１３１２では、カメラ画像取得部４０７を介してカメラ部２０２からカメラ画像を１フレーム取得する。ステップＳ１３１３では、３次元形状測定パターン１４０２と取得したカメラ画像間での対応点を図５のステップＳ５０４と同様にして抽出する。ステップＳ１３１４において、カメラ部２０８およびプロジェクタ２０７の位置関係から、カメラ画像上の各画素における距離を算出し、距離画像を生成する。ここでの測定方法は、距離画像取得部４０８の処理において、図５のステップ５０５で説明した測定方法と同じである。ステップＳ１３１５では距離画像の各画素について直交座標系への座標変換を行い、３次元点群を算出する。ステップＳ１３１６では算出した３次元点群から書画台２０４の平面パラメータを用いて書画台平面に含まれる３次元点群を除去する。そしてステップＳ１３１７では残った３次元点群の中から位置が大きく外れている点をノイズとして除去し、対象物１４０１の３次元点群１４０３を生成する。ステップ１３１８ではプロジェクタ２０７から投射している３次元形状測定パターン１４０２を消灯する。ステップＳ１３１９ではカメラ画像取得部４０７を介してカメラ部２０２からカメラ画像を取得し、その角度から見たときのテクスチャ画像として保存し、３次元点群測定処理を終了する。
【００５４】
２回目以降にステップＳ１３０２の３次元点群測定処理を実行した際は、ステップＳ１３０１でターンテーブル２０９を回転させて計測を行っているため、図１４（ｃ）に示すようにターンテーブル２０９上の対象物１４０１、プロジェクタ２０７およびカメラ２０２の角度が変わっている。そのため、図１４（ｄ）に示すように、ステップＳ１３０２で得られた３次元点群１４０２とは異なる視点から見た３次元点群１４０３が得られる。つまり、３次元点群１４０２ではカメラ部２０２およびプロジェクタ部２０７から死角となって算出できなかった部分の３次元点群が、３次元点群１４０３では含まれることになる。（逆に、３次元点群１４０３には含まれない３次元点群が、３次元点群１４０１に含まれている。）そこで、異なる視点から見た２つの３次元点群１４０２と１４０３を重ね合わせる処理を行う。
【００５５】
ステップＳ１３０３ではステップＳ１３０２で測定した３次元点群１４０３を、ターンテーブルが初期位置から回転した角度分逆回転することにより、３次元点群１４０３との位置を大まかに合わせた３次元点群１４０４を算出する。
【００５６】
ステップ１３０４ではステップＳ１３０３で算出された３次元点群と、既に合成された３次元点群との合成処理を行う。３次元点群の合成処理は特徴点を用いたＩＣＰ（ＩｔｅｒａｔｉｖｅＣｌｏｓｅｓｔＰｏｉｎｔ）アルゴリズムを用いる。ＩＣＰアルゴリズムでは合成対象の２つの３次元点群１４０２と１４０４から、それぞれコーナーとなる３次元特徴点を抽出する。そして、３次元点群１４０２の特徴点と３次元点群１４０４の特徴点の対応をとって、すべての対応点同士の距離を算出して加算し、３次元点群１４０４の位置を動かしながら対応点同士の距離の和が最小となる位置を繰り返し算出する。繰り返し回数が上限に達した場合や、対応点同士の距離の和が最小となる位置が算出されると、３次元点群１４０４を移動してから３次元点群１４０３と重ね合わせることにより、２つの３次元点群１４０２と１４０４を合成する。このようにして合成後の３次元点群１４０５を生成し、３次元点群合成処理を終了する。
【００５７】
ステップＳ１３０４の３次元点群合成処理が終了するとステップＳ１３０５ではターンテーブル２０９が１周回転したかを判断する。まだターンテーブル２０９が１周回転していなければ、ステップＳ１３０１へ戻ってターンテーブル２０９をさらに回転してからステップＳ１３０２を実行して別の角度の３次元点群を測定する。そしてステップＳ１３０３〜ステップＳ１３０４において既に合成した３次元点群１４０５と新たに測定した３次元点群との合成処理を行う。このようにステップＳ１３０１からステップＳ１３０５の処理をターンテーブル２０９が１周するまで繰り返すことにより、対象物１４０１の全周３次元点群を生成することができる。
【００５８】
ステップＳ１３０５でターンテーブル２０９が１周したと判断するとステップＳ１３０６へ進み、生成した３次元点群から３次元モデルを生成する処理を行う。３次元モデル生成処理を開始すると、ステップＳ１３３１では３次元点群からノイズ除去および平滑化を行う。ステップＳ１３３２では３次元点群から三角パッチを生成することで、メッシュ化を行う。ステップＳ１３３３ではメッシュ化によって得られた平面へステップＳ１３１９で保存したテクスチャをマッピングする。以上によりテクスチャマッピングされた3次元モデルを生成することが出来る。
【００５９】
ステップＳ１３０７ではテクスチャマッピング後のデータをＶＲＭＬやＳＴＬ等の標準的な３次元モデルデータフォーマットへ変換し、データ管理部４０５を介してＨＤＤ３０５上の所定の領域に格納し、立体形状測定部４１３の処理を終了する。
【００６０】
＜メイン制御部の説明＞
図１５Ａ，図１５Ｂのフローチャートを用いてメイン制御部４０２が実行するスキャンアプリケーションの処理について説明する。メイン制御部４０２が処理を開始すると、図１５ＡのステップＳ１５０１の物体載置待ち処理を実行する。ステップＳ１５０１の物体載置待ち処理では、まず、ステップＳ１５１１で書画台２０４にプロジェクタ２０７によって初期画面を投射表示する。この初期画面の一例を図１６（ａ）に示す。図１６（ａ）では、書画台２０４上にユーザーに対する操作指示等のメッセージ１６０１を投射表示している。続いてステップＳ１５１２では物体検知部４１０の処理を起動する。物体検知部４１０は図８のフローチャートで説明した処理の実行を開始する。ステップＳ１５１３では、物体検知部４１０からの物体載置通知を待つ。物体検知部４１０が図８のステップＳ８２７の処理を実行して物体載置をメイン制御部４０２へ通知すると、ステップＳ１５１３において物体載置通知ありと判断し、物体載置待ち処理を終了する。
【００６１】
ステップＳ１５０１の物体載置待ち処理を終了すると、メイン制御部４０２は続いてステップＳ１５０２の平面原稿スキャン領域指定開始処理を行う。平面原稿スキャン領域指定開始処理では、ステップＳ１５２１で図１６（ｂ）に示すスキャン領域指定画面を書画台２０４に投射表示する。図１６（ｂ）において、原稿１６１１はユーザーが置いた原稿であり、この上でユーザーが指先でドラッグ操作を行うことによりスキャン領域の指定を行うことができる。また、メッセージ１６０２は書画台２０４上に投射表示したメッセージである。ステップＳ１５２２では、ジェスチャー認識部４０９が平面タッチジェスチャーありと判定してメイン制御部４０２へ通知する（図６のステップＳ６４４、Ｓ６０５）のを待つ。ステップＳ１５２２で平面タッチジェスチャーありの通知を受け取るとステップＳ１５２３へ進み、物体検知部４１０が図８のステップＳ８３５で取得した平面原稿領域の位置と傾きを取得し、これを基に平面原稿から見た座標系、すなわち平面原稿座標系を算出する。ステップＳ１５２４では平面タッチジェスチャーを行った指先の位置を平面原稿座標系における位置に変換して算出する。そして、ステップＳ１５２５ではこの指定位置の座標を領域指定開始位置として記憶する。
【００６２】
ステップＳ１５０２の平面原稿スキャン領域指定開始処理を終了すると、ステップＳ１５０３の平面原稿スキャン領域指定処理を行う。その詳細を図１５Ｂに示す。ステップＳ１５０３において、まず、ステップＳ１５３１では平面タッチジェスチャーありがジェスチャー認識部４０９から通知されたかどうかを判定する。ステップＳ１５３１で平面タッチジェスチャーの通知があればステップＳ１５３２へ進み、ステップＳ１５２３と同じく平面原稿領域の位置と傾きを取得し、平面原稿座標系を算出する。なおステップＳ１５１２で起動された物体検知処理（図８）は、物体が除去されるまで繰り返し物体例えば原稿を撮影してその位置と傾きとを算出することから、もし原稿が移動していれば、ステップＳ１５３２で算出される平面原稿座標系は、移動後の原稿における座標系となる。ステップＳ１５３３では平面タッチジェスチャーの指先位置から、平面原稿座標系での指先位置を算出する。ステップＳ１５３４では領域指定中画面を書画台２０４へ投射表示する。図１６（ｄ）が領域指定中画面の一例である。図１６（ｄ）において指先が指先１６２２の位置から指先１６２３の位置へ移動すると、その２点を対角頂点とする矩形１６０３を投射表示し、領域が指定中であることを示す。ステップＳ１５３４の処理を終えるか、あるいはステップＳ１５３１において平面タッチジェスチャー通知を受け取っていないと判定した場合、ステップＳ１５３５へ進む。ステップＳ１５３５ではジェスチャー認識部４０９から指先移動ジェスチャー通知、つまり指先が書画台２０４あるいは書画台２０４上の立体物から離れていることを意味する通知を受け取っているかどうかを判断する。ステップＳ１５３５で指先移動ジェスチャーを受け取っていなければ指先はまだ原稿に接触中であると判断できるため、ステップＳ１５３１へ戻って領域指定を続行する。ステップＳ１５３５で指先移動ジェスチャーを受け取っていれば、図１６（ｅ）のように指先１６２４が書画台２０４から離れていると判断できる。そこでステップＳ１５３６へ進んで、最後にステップＳ１５３３で算出した平面原稿座標系での指先位置を領域指定終了位置として記憶する。
【００６３】
ステップＳ１５０３の平面原稿スキャン領域指定処理を終了するとステップＳ１５０４へ進み、平面原稿スキャン実行処理を実行する。ステップＳ１５０４において、ステップＳ１５５１ではスキャン開始画面を書画台２０４へ投射表示する。図１６（ｅ）はスキャン開始画面の一例であり、スキャン開始を受け付けるスキャン開始ボタン１６０４を投射表示している。ユーザーインターフェイス部４０３は、ジェスチャー認識部４０９から通知される平面タッチジェスチャーの座標とボタンを表示している座標から、いずれかのボタンがユーザーによって押下されたことを検知する。（以降、ユーザーインターフェイス部による検知の説明を省略して「ボタンへのタッチを検知する」と記載する。）ステップＳ１５５２ではスキャン開始ボタン１６０４へのタッチを検知するのを待つ。ステップＳ１５５２でスキャン開始ボタン１６０４へのタッチを検知したらステップＳ１５５３へ進み、図９で説明した平面原稿撮影部４１１の処理を実行する。ステップＳ１５５４では、ステップＳ１５２５で記憶した領域指定開始位置と、ステップＳ１５３６で記憶した領域指定終了位置を対角とする矩形領域を、ステップＳ１５５３で撮影された画像から切り出し、データ管理部４０５を介してＨＤＤ３０５へ保存する。これにより、図１６（ｊ）に示したように、平面原稿１６４１から指先を原稿につけたままなぞる動作（ドラッグジェスチャー）によって指定された領域１６４２を切り出して画像データとして保存することができる。
【００６４】
続いて、ステップＳ１５０５では物体除去待ち処理を行う。ステップＳ１５０５において、ステップＳ１５６１ではスキャン終了画面の投射表示を行う。図１６（ｆ）はスキャン終了画面の一例であり、メッセージ１６０５を表示し原稿１６１１が取り除かれるのを待つ。ステップＳ１５６２では物体検知部４１０から物体除去通知を受け取るのを待ち、物体除去通知を受け取ったら平面原稿のスキャンを行うメイン制御部４０２の処理を終了する。
【００６５】
図１５で説明したメイン制御部４０２の処理において、ステップＳ１５２３およびＳ１５３２で平面原稿の位置を取得し、ステップＳ１５２４およびＳ１５３３で平面原稿座標系での指先位置に算出し直すことにより、平面原稿が動いてしまった場合にも対応できる。例えば図１６（ｇ）において指先が指先１６２５の位置から指先１６２６の位置に移動したときに、一緒に原稿も、原稿１６１１の位置から原稿１６２２の位置に移動してしまったとする。このとき、原稿の移動を考慮しなければ指先１６２５と指先１６２６を含む矩形１６５１がスキャン領域となり、書画台２０４上の原稿が存在しない領域をスキャンしてしまう。しかし、前述のように平面原稿座標系での指先位置に算出し直していることにより、原稿上における指先位置の移動により示される矩形１６０６をスキャン領域とすることができる。また、図１６（ｇ）の原稿移動に続いて図１６（ｈ）のようにジェスチャー中の手では無い方の手１６２７で原稿を押さえた場合、手１６２７は指が１本だけ立った形では無いため、ジェスチャー認識部４０９は原稿を押さえたジェスチャーであると判断できる。そのため、図１６（ｉ）に示すようにジェスチャー中の手による領域指定操作を続行することができる。図１６（ｉ）では指先が指先１６２８の位置まで移動することにより、スキャン領域を矩形１６０７で指定している。また、原稿座標系の算出には原稿の位置と傾きの両方を使用しているため、図１６（ｋ）のように原稿が回転した場合でも適切に指先の位置を算出することができる。
【００６６】
［実施形態２］
実施形態１では、図１６（ｇ）のように原稿が移動した場合でも、原稿の位置を取得して平面原稿座標系での指先位置を算出することにより、原稿上を指先でなぞる操作を続行することを可能としている。本実施形態では、図１６（ｇ）のように指先の移動とともに原稿が移動した場合、一度指先を持ち上げて原稿から離し、再度原稿にタッチするという動作を領域指定操作のやり直しとして受け付けることを行う。
【００６７】
実施形態２では、実施形態１で図１５Ａ，図１５Ｂのフローチャートを用いて説明したメイン制御部４０２の処理の一部が異なっている。実施形態２におけるメイン制御部４０２の処理を、図１７のフローチャートを用いて説明する。
【００６８】
図１７において、メイン制御部４０２が処理を開始すると、ステップＳ１５０１の物体置載待ち処理、ステップＳ１５０２の平面原稿スキャン領域指定開始処理、ステップＳ１５０３の平面原稿スキャン領域指定処理を順に行う。これらステップＳ１５０１、Ｓ１５０２、Ｓ１５０３の処理は図１５で説明した処理と同じであるため、説明は省略する。
【００６９】
ステップＳ１５０３の平面原稿スキャン領域指定処理において、ユーザーが原稿から指先を離して所定の高さ以上になると、ステップＳ１７０１の平面原稿スキャン領域指定有効判定処理に進む。ステップＳ１７０１では、まず、ステップＳ１７１１で指定した領域の大きさを取得する。ここで、大きさとしては面積、あるいは周囲の長さでも良い。ステップＳ１７１２ではユーザーが領域指定を開始してから終了するまでの間に原稿が移動した移動量を算出する。ステップＳ１７１３では、ステップＳ１７１２で算出した原稿移動量に対する、ステップＳ１７１１で取得した指定領域の大きさの割合を算出する。そして、その割合があらかじめ決めておいた所定値より大きければ、ユーザーが指定したスキャン領域が有効であると判定し、ステップＳ１５０４の平面原稿スキャン実行処理およびステップＳ１５０５の物体除去待ち処理を行い、メイン制御部４０２の処理を終了する。ステップＳ１５０４およびステップＳ１５０５の処理内容は図１５のステップＳ１５０４、Ｓ１５０５と同じであるため説明は省略する。
【００７０】
ステップＳ１７１３において、原稿移動量に対する指定領域の大きさの割合があらかじめ決めておいた所定値より小さければ、これは、例えば図１６（ｇ）のように、指先の移動とともに原稿が動いた直後に指先を原稿から離した場合ととらえることができる。そこで、この場合にはユーザーが指定したスキャン領域が無効であると判定し、ステップＳ１５０２の処理に戻る。ステップＳ１５０２では平面原稿スキャン領域の指定を開始する処理を再び行うため、ユーザーが最初からスキャン領域の指定を行うことが可能となる。
【００７１】
以上のように、実施形態２では原稿移動量に対してスキャン領域指定が小さかった場合にスキャン領域指定を無効と判定して再度指定できるようにすることで、原稿が大きく動いてしまった場合に領域指定をやり直すことができる。また、小さい領域を指定したい場合も、実施形態１で説明したような手で原稿を押さえる等の行為により原稿が移動しなければ、小さい領域を指定することは可能であるため、ユーザーの操作性は低下しない。
【００７２】
［実施形態３］
実施形態１では、図１６（ｇ）のように原稿が移動した場合でも、原稿の位置を取得して平面原稿座標系での指先位置を算出することにより、原稿上を指先でなぞる操作を続行することを可能としている。実施形態３では、原稿が移動したら最初から領域指定をやり直す方法を提供する。実施形態２との相違点は、実施形態２では、原稿移動量に対する指定領域の大きさをやり直しの判定基準としているのに対して、本実施形態では、原稿の移動量を判定基準としている点である。
【００７３】
図１８は実施形態３のメイン制御部４０２が実行する処理のフローチャートである。なお、実施形態１と同じ処理については同じステップ番号を付与し、詳細な説明は省略する。
【００７４】
メイン制御部４０２が処理を開始すると、ステップＳ１５０１では物体載置待ち処理を行う。ステップＳ１５０２では平面原稿スキャン領域指定開始処理を行う。ステップＳ１８０３は平面原稿スキャン領域指定処理であり、この処理が実施形態１と異なるところである。平面原稿スキャン領域指定処理において、ステップＳ１８３１では、物体検知部４１０から取得した現在の原稿位置と、ステップＳ１５０２の平面原稿スキャン領域指定開始処理内で取得した原稿の位置から、原稿の位置が動いているかどうかを判定する。ステップＳ１８３１において、原稿が動いたと判定したらステップＳ１５０２の平面原稿スキャン領域指定開始処理に戻り、最初からスキャン領域指定の受付を行う。これにより、ユーザーは原稿が動いた場合にスキャン領域指定を最初からやり直すことができる。ステップＳ１８３１において原稿が動いていないと判定したらステップＳ１８３２へ進み、平面タッチジェスチャーありの通知を受け取ったかを判定する。ステップＳ１８３２において平面タッチジェスチャーありと判定したらステップＳ１８３３へ進んで、原稿の位置と傾きから平面原稿座標系での指先位置を算出し、ステップＳ１８３４で領域指定中画面の投射表示を行う。ステップＳ１８３４の処理を終えるか、またはステップＳ１８３２で平面タッチジェスチャー無しと判定したらステップＳ１８３５へ進み、指先移動ジェスチャー通知、つまり指先が書画台２０４から離れていることを意味する通知を受け取っているかどうかを判定する。ステップＳ１８３５において指先移動ジェスチャーが無ければ指先はまだ原稿にタッチしたままだと判断し、ステップＳ１８３１へ戻ってスキャン領域指定の受付を続行する。ステップＳ１８３５で指先移動ジェスチャー無しと判定したらステップＳ１５０４へ進んで平面原稿スキャン実行処理を行い、ステップＳ１５０５で物体除去待ち処理を行って、メイン制御部４０２の処理を終了する。
【００７５】
以上のように、実施形態３においては、スキャン領域指定処理中に原稿が動いたかどうかを監視し、原稿が動いた場合にはスキャン領域指定を最初から受け付け直すことによって、ユーザーがスキャン領域指定をやり直すことを可能にしている。
【００７６】
［実施形態４］
実施形態１では、原稿の位置を取得して平面原稿座標系での指先位置を算出することにより、原稿が移動しても原稿上を指先でなぞる操作を続行することを可能としている。一方原稿が静止していれば、原稿から見た指先位置（平面原稿座標系）を用いなくても、書画台から見た指先位置（直交座標系）を用いてスキャン領域指定が可能である。そこで、実施形態４では、原稿の静止を検知して、原稿が静止しているときのみスキャン領域指定を受け付けるようにする。
【００７７】
図１９Ａ、図１９Ｂは実施形態４におけるメイン制御部４０２が実行する処理のフローチャートである。図１５で説明したメイン制御部４０２の処理と同じ処理については、同じ符号を付与し、詳細な説明は省略する。
【００７８】
図１９Ａにおいてメイン制御部４０２が処理を開始すると、ステップＳ１５０１では物体検知部４１０からの物体載置通知を待つ物体載置待ち処理を行う。物体載置通知を受け取るとステップＳ１９０２の平面原稿スキャン領域指定開始処理を行う。ステップＳ１９０２において、ステップＳ１９２１ではスキャン領域指定画面の投射表示を行う。ここでのスキャン領域指定画面は、領域指定をユーザーに促すメッセージ等を含む。ステップＳ１９２２では、ジェスチャー認識部４０９からの平面タッチジェスチャーありの通知を受け取るのを待つ。ステップＳ１９２２で平面タッチジェスチャーありの通知を受け取るとステップＳ１９２３では物体検知部４１０が算出する平面原稿領域の位置を取得し、領域指定開始時の原稿位置として記憶する。ステップＳ１９２４では、ステップＳ１９２２で受け取った平面タッチジェスチャーの指先座標を、領域指定開始位置として記憶する。なお、ジェスチャー認識部４０９は直交座標系の３次元点群を基にジェスチャー判定を行うため、ここで受け取る指先座標も直交座標系での座標である。
【００７９】
続いてステップＳ１９０３の平面原稿スキャン領域指定処理を行う。ステップＳ１９０３において、ステップＳ１９３１では平面タッチジェスチャーありの通知をジェスチャー認識部４０９から受け取っているかを判定する。ステップＳ１９３１において平面タッチジェスチャーありの通知を受け取っていると判定したらステップＳ１９３２へ進み、物体検知部４１０が算出する平面原稿領域の位置を、現在の原稿位置として取得する。ステップＳ１９３３では、ステップＳ１９２３で取得した領域指定開始時の原稿位置と、ステップＳ１９３２で取得した現在の原稿位置とを比較し、原稿が動いたかどうかを判定する。ステップＳ１９３３で原稿が動いていなければステップＳ１９３４へ進み、ジェスチャー認識部４０９から原稿押さえジェスチャーありの通知を受け取っているかを判定する。ステップ１９３４で原稿押さえジェスチャーありの通知を受け取っていないと判定したらステップＳ１９３５へ進んで領域指定中画面を投射表示する。ここでの領域指定中画面は、指定中の領域を示す枠線等を含む。ステップＳ１９３５を終了するか、あるいは、ステップＳ１９３１で平面タッチジェスチャーありの通知を受け取っていない場合は、ステップＳ１９３６へ進んでジェスチャー認識部４０９から指先移動ジェスチャーありの通知を受け取っているかどうかを判定する。ステップＳ１９３６で指先移動ジェスチャーありの通知を受けとっていなければステップＳ１９３１へ戻って平面タッチジェスチャーの受け付け処理を続行する。ステップＳ１９３６で指先移動ジェスチャーありの通知を受けとっていればステップＳ１９３７へ進み、最後の平面タッチジェスチャーの指先座標（ここでも直交座標系）を領域指定終了位置として記憶し、平面原稿スキャン領域指定処理を終了する。
【００８０】
ステップＳ１９３３において原稿が移動したと判定するか、あるいは、ステップＳ１９３４で原稿押さえジェスチャーありの通知を受け取っていると判定したらステップＳ１９３８へ進む。ステップＳ１９３８では物体検知部４１０が算出する原稿領域の位置を繰り返し取得し、原稿があらかじめ決めておいた所定時間静止するまで待つ。ステップＳ１９３８で原稿が所定時間静止したらステップＳ１９０２へ戻り、平面原稿スキャン領域指定開始処理を再び行う。これにより、ユーザーは最初からスキャン領域指定をやり直すことが可能となる。
【００８１】
ステップＳ１９０３の平面原稿スキャン領域指定処理を終了すると、ステップＳ１９０４の平面原稿スキャン実行処理を行う。ステップＳ１９０４において、ステップＳ１９４１ではスキャン開始画面を投射表示する。ここでのスキャン開始画面はユーザーからのスキャン開始指示を受け付けるスキャン開始ボタンを含む。ステップＳ１９４２ではスキャン開始ボタンへのタッチを検知するのを待つ。ステップＳ１９４２でスキャン開始ボタンへのタッチを検知したらステップＳ１９４３へ進み、平面原稿画像撮影部が平面原稿撮影処理を実行する。
【００８２】
図１９ＢはステップＳ１９４３において平面原稿画像撮影部が実行する処理を説明するフローチャートである。図１９Ｂにおいて、ステップＳ１９６１ではカメラ画像取得部４０７からカメラ画像を１フレーム取得する。ステップＳ１９６２では取得したカメラ画像に対して階調補正を行う。ステップＳ１９６３ではカメラ画像を書画台平面へ射影変換する。ステップＳ１９６４では、ステップＳ１９２４で記憶した領域指定開始位置とステップＳ１９３７で記憶した領域指定終了位置を対角とする矩形領域を、射影変換後の画像から切り出す。ステップＳ１９６５では切り出した画像を圧縮およびフォーマット変換して保存し、平面原稿撮影部の処理を終了する。
【００８３】
図１９Ａにおいて、ステップＳ１９０４の平面原稿スキャン実行処理を終えるとステップＳ１５０５へ進んで物体除去待ち処理を行う。物体検知部４１０から物体除去の通知を受け取るとメイン制御部４０２の処理を終了する。
【００８４】
実施形態４においては、前述したように、メイン制御部４０２がステップＳ１９３３でスキャン領域指定中に原稿が動いたかどうかを判定し、動いた場合には原稿の静止を待ってスキャン領域指定開始処理を再度行う。そのため、原稿が動いた場合にユーザーがスキャン領域指定を再度行うことを可能としている。また、ステップＳ１９３４では原稿押さえジェスチャーがあった場合にも、原稿が動いた場合と同様に原稿の静止を待ってからスキャン領域指定開始処理を再度行っている。そのため、ユーザーが領域指定中に別の手で原稿を押さえ直した場合も、スキャン領域指定を再度行うことを可能としている。
【００８５】
［実施形態５］
実施形態１〜４では、書画台２０４上の平面原稿の動きを検知することにより、平面原稿上を指先でなぞる領域指定操作を可能としている。実施形態５では、厚みのある書籍原稿でも動きを検知し、書籍原稿上を指先でなぞる操作を可能とする。実施形態５においては、実施形態１と比較してメイン制御部４０２が実行する処理のみが異なる。図２０Ａ，図２０Ｂは実施形態５のメイン制御部４０２が実行する処理のフローチャートである。
【００８６】
メイン制御部４０２が処理を開始すると、ステップＳ２００１では物体載置待ち処理を行う。ステップＳ２００１において、ステップＳ２０１１では初期画面を書画台２０４上に投射表示する。図２１（ａ）はこのときに投射表示する初期画面の一例であり、ユーザーへのメッセージ２１０１を投射表示している。ステップＳ２０１２では物体検知部４１０の処理を起動する。このとき実行する物体検知部４１０の処理は、実施形態１において図８で説明した処理と同じである。ステップＳ２０１３では、メイン制御部４０２は物体検知部４１０からの物体載置通知を待つ。
【００８７】
ステップＳ２０１３で物体載置通知を受け取ると、ステップＳ２００２の書籍原稿スキャン領域指定開始処理を行う。その詳細は図２０Ｂに示す。ステップＳ２００２において、ステップＳ２０２１ではスキャン領域指定画面を投射表示する。図２１（ｂ）はこのときに投射表示するスキャン領域指定画面の一例であり、ユーザーへのメッセージ２１０２を投射表示している。また、図２１（ｂ）において書籍原稿２１１１はユーザーが書画台２０４上に置いた書籍原稿である。ステップＳ２０２２ではジェスチャー認識部４０９から立体物タッチジェスチャーありの通知を受け取るまで待つ。図２１（ｃ）のように、指先２１２２が書籍原稿２１１１にあらかじめ決めておいた微小な所定値以下の距離に近づくと、ジェスチャー認識部４０９がそれを検知し、メイン制御部４０２はステップＳ２０２２で立体物タッチジェスチャーありの通知を受け取る。続いてステップＳ２０２３へ進んで、物体検知部４１０が算出した立体物の３次元点群を取得する。ステップＳ２０２４では、取得した３次元点群を用いて書籍画像ゆがみ補正処理を行う。このとき実行する書籍画像ゆがみ補正処理の内容は、図１１Ｂで説明した処理と同じである。この書籍画像ゆがみ補正処理において、ステップＳ１１３１でタッチした点と補正後の座標が関連づけられているため、ステップＳ２０２５で補正後の書籍原稿上の指先位置を算出することが可能となる。このときの例を図２１（ｄ）に示す。図２１（ｄ）において、書籍画像２１４１はゆがみ補正後の書籍画像であり、その上の点２１４２がタッチされた点である。ここで算出した書籍原稿上の指先位置を領域指定開始位置として、ステップＳ２０２６で記憶しておく。
【００８８】
ステップＳ２００２の書籍原稿スキャン領域指定開始処理に続いて、ステップＳ２００３の書籍原稿スキャン領域指定処理を行う。その詳細は図２０Ｂに示す。ステップＳ２００３において、ステップＳ２０３１ではジェスチャー認識部４０９から立体物タッチジェスチャーありの通知を受け取っているかどうかを判定する。ステップＳ２０３１で立体物タッチジェスチャーありの通知を受け取っていれば、ステップＳ２０３２へ進んで物体検知部４１０が算出した立体物の３次元点群を取得する。ステップＳ２０３３では、取得した３次元点群を用いて書籍画像ゆがみ補正処理を行う。ステップ２０３４では、立体物タッチジェスチャーのタッチ位置と書籍画像ゆがみ補正処理の結果から、書籍原稿上の指先位置を取得する。ステップＳ２０３５では領域指定中画面を投射表示する。図２１（ｅ）が領域指定中画面の一例であり、指先が指先２１２４の位置まで移動したことに伴い、領域指定の矩形２１０３を投射表示している。また、図２１（ｆ）は補正後の書籍画像２１４３の図であり、指先２１２４に対応する補正後の点２１４３の位置をステップＳ２０３４で取得する。
【００８９】
ステップＳ２０３５の処理を終えるか、またはステップＳ２０３１で立体物タッチジェスチャー無しと判定したらステップＳ２０３６へ進み、指先移動ジェスチャー通知、つまり指先が書画台２０４および書画台２０４上の立体物から離れていることを意味する通知を受け取っているかどうかを判定する。ステップＳ２０３６において指先移動ジェスチャーが無ければ指先はまだ書籍原稿にタッチしたままだと判断し、ステップＳ２０３１へ戻ってスキャン領域指定の受付を続行する。ステップＳ２０３６で指先移動ジェスチャー無しと判定したらステップＳ２０３７へ進んで最後に取得した書籍原稿上の指先位置を領域指定終了位置として記憶する。図２１（ｇ）はこのときの一例の図であり、指先２１２５が書籍原稿２１１１から離れたことを指先移動ジェスチャー無しの通知で判定している。このとき、図２１（ｈ）に示したように、補正後の書籍原稿画像２１４１上の点２１４２がステップＳ２０２６で記憶した領域指定開始位置であり、また、点２１４４がステップＳ２０３７で記憶した領域指定終了位置である。点２１４２と点２１４４を対角とする矩形２１４５を指定されたスキャン領域とする。
【００９０】
ステップＳ２００３の書籍原稿スキャン領域指定処理を終えると、続いてステップＳ２００４の書籍原稿スキャン領域指定有効判定処理を行う。ステップＳ２００４においては、指定されたスキャン領域の大きさ（面積、あるいは周囲長等でも良い）を取得する。ステップＳ２０４２では、ステップＳ２０２３で取得した領域指定開始時の３次元点群と、ステップＳ２０３２で取得した領域指定終了時の３次元点群のそれぞれの位置から、３次元点群の移動量を算出することにより、書籍原稿の移動量を算出する。ステップＳ２０４３ではステップＳ２０４２で算出した書籍原稿移動量に対する、ステップＳ２０４１で取得したスキャン領域の大きさの割合を算出し、それがあらかじめ決めておいた所定値以上であるかを判定する。ステップＳ２０４３で算出した割合が所定値よりちいさければ、スキャン領域指定は無効であると判断し、ステップＳ２００２へ戻ってスキャン領域指定開始処理を行うことにより、ユーザーからの再度の領域指定を受け付けることができる。ステップＳ２０４３で算出した割合が所定値以上であればスキャン領域指定は有効であると判断し、ステップＳ２００５へ進む。
【００９１】
ステップＳ２００５では書籍原稿スキャン実行処理を行う。ステップＳ２００５において、ステップＳ２０５１ではスキャン開始画面を投射表示する。図２１（ｉ）はスキャン開始画面の一例であり、スキャン開始を受け付けるスキャン開始ボタン２１０５を投射表示している。ステップＳ２０６２ではスキャンか位置ボタン２１０５へのタッチを待つ。ステップＳ２０５２でスキャン開始ボタン２１０５へのタッチを検知したらステップＳ２０５３へ進み、書籍画像撮影部４１２が処理を実行する。このときに書籍画像撮影部４１２が実行する処理は、図１１のフローチャートで説明した処理である。ステップＳ２０５４では、書籍画像撮影部が撮影した画像から、図２１（ｈ）の矩形２１４５で示したスキャン指定領域を切り出し、保存する。
【００９２】
ステップＳ２００５の書籍原稿スキャン実行処理を終えると、ステップＳ２００６の物体除去待ち処理を行う。ステップＳ２００６においては、ステップＳ２０６１でスキャン終了画面の投射表示を行う。図２１（ｊ）はこのスキャン終了画面の一例であり、ユーザーへのメッセージ２１０６を投射表示している。ステップＳ２０６２では物体検知部４１０からの物体除去通知を受け取るまで待ち、物体除去通知を受け取ったらメイン制御部４０２の処理を終了する。
【００９３】
実施形態５のメイン制御部４０２の処理において、ステップＳ２００３で指先が立体物にタッチしていると判定している間、３次元点群の取得、書籍画像ゆがみ補正、書籍原稿上の指先位置取得、を繰り返し行っている。そのため、図２１（ｋ）のように、指先が指先２１２６の位置に移動したのに伴い書籍原稿２１１１が書籍原稿２１１２の位置へ移動してしまった場合でも、図２１（ｌ）のようにゆがみ補正後の書籍画像２１４１上の点２１４６をタッチしていると判定できる。そして、その後図２１（ｍ）に示すように手２１２８で書籍原稿２１１２を固定し、指先を指先２１２９の位置まで移動させた場合、図２１（ｎ）に示すように、ゆがみ補正後の書籍画像２１４１上の点矩形２１４８をスキャン領域として切り出すことが可能となる。
【００９４】
さらに、書籍原稿のスキャンにおいてもステップＳ２００４のスキャン領域指定有効判定処理を指定領域の大きさと原稿移動量から行うことにより、実施形態２と同様にユーザーが領域指定をやり直すことが可能となる。
なお、本実施形態では、実施形態２と同様に、原稿に対するスキャン範囲の割合が所定値より小さいとその指定を無効としている。これを、原稿に対するスキャン範囲の割合にかかわらず指定された範囲を有効とすることもできる。また、実施形態３のように書籍原稿が移動したらスキャン範囲の指定をやり直させることもできるし、また、実施形態４のように書籍原稿が静止している場合に限ってスキャン範囲を指定させるよう構成してもよい。
【００９５】
［実施形態６］
実施形態５では、書籍原稿の移動を常に検知することによって書籍原稿が移動しても書籍原稿上の指先の位置を検出することができている。そのために、物体検知部４１０は距離画像を１フレーム取得する毎に立体物３次元点群取得処理を行い、また、メイン制御部４０２は指先の位置を取得するたびに書籍原稿ゆがみ補正処理を行っている。しかしながら、立体物３次元点群取得処理や書籍原稿ゆがみ補正処理は計算量が多いため、処理能力の低いＣＰＵを使用している場合には処理能力が不足することも想定される。そこで、実施形態６では計算量の低減を行う。実施形態６は、実施形態５と比較して物体検知部４１０の処理とメイン制御部４０２の処理のみが異なる。そこで、物体検知部４１０とメイン制御部４０２の処理について図２２Ａ、図２２Ｂのフローチャートを用いて説明する。
【００９６】
図２２Ａは実施形態６の物体検知部４１０が実行する処理のフローチャートである。図８で説明した処理と同じ処理を行う場合は同じ符号を付して説明を省略する。図２２Ａにおいて、物体検知部が処理を開始するとステップＳ８０１では図８で説明した初期化処理を行う。ステップＳ８０２では物体載置検知処理を行う。ステップＳ８０３では、カメラ画像取得部４０７から取得するカメラ画像を用いて平面原稿領域取得処理を行う。ステップＳ２２１１では、物体検知部４１０に対して立体物３次元点群再取得通知があったかどうかを判定する。ここで、立体物３次元点群再取得通知は後述するメイン制御部４０２が行う。ステップＳ２２１１で立体物３次元点群取得処理があったと判定したら、ステップＳ８０４へ進んで図８で説明した立体物３次元点群取得処理を行う（なお、１度も立体物３次元点群取得処理を行っていない場合もステップＳ２２１１からステップＳ８０４へ進む）。ステップＳ２２１１で立体物３次元点群再取得処理が無いと判定した場合には、ステップＳ２２１２へ進んで、ステップＳ８０３で取得した平面原稿領域を用いて平面原稿領域が移動したかどうかを判定する。ステップＳ２２１２で平面原稿領域が移動したと判定したらステップＳ２２１３へ進み、平面原稿領域の移動距離とＺ軸周りの回転角度を算出する。ステップＳ２２１４では既に取得してある立体物３次元点群を、算出した移動距離だけ書画台平面に平行に移動するとともに、算出した回転角度だけ逆方向に回転させる。すなわち、一方の原稿画像を、算出したずれ量だけ移動させて移動後の他方の原稿画像を得る。ステップＳ８０４を実行するか、ステップＳ２２１５を実行するか、あるいはステップＳ２２１２で平面原稿領域が移動していないと判定した場合、ステップＳ８０５へ進み、平面原稿領域および立体物３次元点群が無くなったかどうかを判定する。ステップＳ８０５で面原稿領域および立体物３次元点群が存在すればステップＳ８０３へ戻って処理を続ける。ステップＳ８０５で面原稿領域および立体物３次元点群が無くなればステップＳ８０６へ進んで物体除去をメイン制御部４０２へ通知し、物体検知部４１０の処理を終了する。
【００９７】
図２２Ｂは実施形態６のメイン制御部４０２が実行する処理のフローチャートである。図２０Ａで説明した処理と同じ処理を行う場合は同じ符号を付して説明を省略する。図２２Ｂにおいてメイン制御部４０２が処理を開始すると、ステップＳ２００１で物体載置待ち処理を行う。ステップＳ２００２では書籍原稿スキャン領域指定開始処理を行う。ステップＳ２２０３では、書籍原稿スキャン領域指定処理を行う。ステップＳ２２０３の書籍原稿スキャン領域指定処理が実施形態５のメイン制御部４０２の処理と異なるところである。ステップＳ２２３１では物体検知部４１０がステップＳ８０３で取得した平面原稿領域の外形が変化したかどうかを判定する。ステップＳ２２３１がＮＯであればステップＳ２２３２へ進み、ジェスチャー認識部４０９から立体物押さえジェスチャーありまたは平面原稿押さえジェスチャーありの通知があったかどうかを判定する。ステップＳ２２３１かステップＳ２２３２のいずれかがＹＥＳであればステップＳ２２３３へ進み、物体検知部４１０へ立体部３次元点群の再取得を通知する。物体検知部４１０は前述のようにステップＳ２２１１で立体物３次元点群再取得通知があった場合にはステップＳ８０４の立体物３次元点群取得処理を行う。ステップＳ２２３４では、再取得した立体物３次元点群を用いて、図１１Ｂで説明した書籍画像ゆがみ補正処理を行い、ステップＳ２２３５へ進む。ステップＳ２２３１およびステップＳ２２３２がいずれもＮＯであれば、ステップＳ２２３３の立体物３次元点群再取得およびステップＳ２２３４の書籍画像ゆがみ補正処理を行わずに、ステップＳ２２３５へ進む。ステップＳ２２３５では、ジェスチャー認識部２２３５から立体物タッチジェスチャーがあったかどうかを判定する。ステップＳ２２３５で立体物タッチジェスチャーが無ければステップＳ２２３８へ進む。ステップＳ２２３５で立体物タッチジェスチャーがあればステップＳ２２３６へ進み、指先がタッチしている点のデータに関連付けられた補正後の書籍原稿画像上の座標データから、書籍原稿上の指先位置を取得する。ステップＳ２２３７では領域指定中の画面を投射表示し、ステップＳ２２３８へ進む。ステップＳ２２３８では、指先移動ジェスチャー通知、つまり指先が書画台２０４および書画台２０４上の立体物から離れていることを意味する通知を受け取っているかどうかを判定する。ステップＳ２２３８において指先移動ジェスチャーが無ければ指先はまだ書籍原稿にタッチしたままだと判断し、ステップＳ２２３１へ戻ってスキャン領域指定の受付を続行する。ステップＳ２２３８で指先移動ジェスチャー無しと判定したらステップＳ２２３９へ進んで最後に取得した書籍原稿上の指先位置を領域指定終了位置として記憶する。
【００９８】
ステップＳ２２０３の書籍原稿スキャン領域指定処理を終了すると、続いてステップＳ２００４の書籍原稿スキャン領域指定有効判定処理、ステップＳ２００５の書籍原稿スキャン実行処理、ステップＳ２００６の物体除去待ち処理を行う。これらは図２０で説明したのと同じ処理なので説明は省略する。そして、メイン制御部４０２の処理を終了する。
【００９９】
物体検知部４１０の処理で説明したように、実施形態６ではステップＳ８０４の立体物３次元点群取得処理を毎フレーム行わず、３次元点群の平行移動および回転で簡略化している。３次元点群取得処理と比較して３次元点群の平行移動及び回転は単純な行列計算であるため計算量が少なく、さらに平面原稿領域取得処理によって移動した場合のみに平行移動（及び回転）処理を行っているため、計算量を低減することができている。また、メイン制御部４０２の処理で説明したように、書籍画像ゆがみ補正処理を、３次元点群の再取得のときだけに限ることでも計算量が低減している。また、平面原稿領域の外形が変化するか、あるいは押さえジェスチャーを検知したときには３次元点群再取得および書籍画像ゆがみ補正処理を行うことにより、ユーザーが書籍に触れたときに書籍の形状が変化しても、指先のタッチ位置の判定が正確に行うことが可能である。
【０１００】
［その他の実施例］
なお、実施形態５，６に示した書籍原稿のスキャン手順により平面原稿を読み取ることもできる。そのため、実施形態５，６の構成で平面原稿の読み取りを行ってもよい。また、平面原稿に対する処理を簡単化するために、平面原稿と書籍原稿とで処理を切り替えてもよい。その場合には、原稿の種類をユーザーに指定させたり、あるいは最初のジェスチャーが平面タッチジェスチャーであれば平面原稿としてスキャンし、立体物タッチジェスチャーであれば書籍原稿としてスキャンするように構成してもよい。後者の場合には、たとえば図１５ＡのステップＳ１５２２では、ジェスチャーが平面タッチジェスチャーでないなら図２０ＡのステップＳ２０１１に分岐するように構成する。
【０１０１】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１０２】
１０１  カメラスキャナ、２０１  コントローラ部、２０２  カメラ部、２０４  書画台、２０７  プロジェクタ、２０８  距離画像センサ部
【図１】
2015198406.tif 000003
【図２】
2015198406.tif 000004
【図３】
2015198406.tif 000005
【図４Ａ】
2015198406.tif 000006
【図４Ｂ】
2015198406.tif 000007
【図５】
2015198406.tif 000008
【図６Ａ】
2015198406.tif 000009
【図６Ｂ】
2015198406.tif 000010
【図７】
2015198406.tif 000011
【図８】
2015198406.tif 000012
【図９】
2015198406.tif 000013
【図１０】
2015198406.tif 000014
【図１１Ａ】
2015198406.tif 000015
【図１１Ｂ】
2015198406.tif 000016
【図１３】
2015198406.tif 000017
【図１４】
2015198406.tif 000018
【図１５Ａ】
2015198406.tif 000019
【図１５Ｂ】
2015198406.tif 000020
【図１６】
2015198406.tif 000021
【図１７】
2015198406.tif 000022
【図１８】
2015198406.tif 000023
【図１９Ａ】
2015198406.tif 000024
【図１９Ｂ】
2015198406.tif 000025
【図２０Ａ】
2015198406.tif 000026
【図２０Ｂ】
2015198406.tif 000027
【図２１】
2015198406.tif 000028
【図２２Ａ】
2015198406.tif 000029
【図２２Ｂ】
2015198406.tif 000030
【図１２】
2015198406.tif 000031