以下、本発明を実施するための形態について図面を参照して説明する。
<実施形態1>
図1は、本実施形態に係るカメラスキャナ101が含まれるスキャンシステムのネットワーク構成を示す図である。図1において、カメラスキャナ101は、イーサネット(登録商標)等のネットワーク104を介して、ホストコンピュータ102およびプリンタ103に接続されている。図1のネットワーク構成において、ホストコンピュータ102からの指示により、カメラスキャナ101から画像を読み取るスキャン機能や、スキャンデータをプリンタ103により出力するプリント機能の実行が可能である。また、ホストコンピュータ102を介さず、カメラスキャナ101への直接の指示により、スキャン機能、プリント機能の実行も可能である。
ホストコンピュータ102は、一般的な情報処理装置であり、カメラスキャナ101にて読み取った画像の保存や、読み取った画像に対する処理を行うことができる。プリンタ103は、画像形成装置であり、例えば複合機(MFP: Multi−Function Peripheral)や単機能のプリンタなどが含まれる。
[カメラスキャナの構成]
図2は、本実施形態に係るカメラスキャナ101の構成例を示す図である。図2(a)に示すように、カメラスキャナ101は、コントローラ部201、カメラ部202、腕部203、プロジェクタ207、距離画像センサ部208を含む。カメラスキャナ101の本体であるコントローラ部201、撮像を行うためのカメラ部202、プロジェクタ207、および距離画像センサ部208は、腕部203により連結されている。腕部203は、関節を用いて曲げ伸ばしが可能である。
図2(a)には、カメラスキャナ101が設置されている書画台204も示している。書画台204は、スキャン対象の物体(ここでは原稿206)が載置される載置部である。カメラ部202および距離画像センサ部208のレンズは、書画台204方向に向けられており、破線で囲まれた読取領域205内の画像を読み取り可能である。ここでの読取領域205には書画台204およびその近傍が含まれることとなる。図2の例では、原稿206が読取領域205内に置かれているため、カメラスキャナ101によって原稿206が読み取り可能となっている。また、書画台204内にはターンテーブル209が設けられている。ターンテーブル209は、コントローラ部201からの指示によって回転することが可能であり、ターンテーブル209上に置かれた物体とカメラ部202との角度を変えることができる。
カメラ部202は、単一解像度で画像を撮像するものとしてもよいが、高解像度画像撮像と低解像度画像撮像など複数の解像度を切り替えて撮影が可能なものとすることが好ましい。なお、図2には示されていないが、カメラスキャナ101は、LCDタッチパネル330およびスピーカ340をさらに含んでもよい。
図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次元データを表しているものとする。
[カメラスキャナのハードウェア構成]
図3は、カメラスキャナ101の本体であるコントローラ部201のハードウェア構成例を示す図である。
図3のコントローラ部201は、CPU302、RAM303、ROM304、HDD305、ネットワークI/F306、画像処理プロセッサ307、カメラI/F308、ディスプレイコントローラ309、シリアルI/F310、オーディオコントローラ311、およびUSBコントローラ312を含む。これらの構成要素は、システムバス301によって互いに接続され、通信可能である。
CPU302は、コントローラ部201全体の動作を制御する中央演算装置である。RAM303は、揮発性メモリである。ROM304は不揮発性メモリであり、CPU302の起動用プログラムが格納されている。HDD305は、記憶部であり、RAM303と比較して大容量なハードディスクドライブ(HDD)である。HDD305にはコントローラ部201の実行する、本実施形態に係るカメラスキャナ101の制御用プログラムが格納されている。
CPU302は電源ON等の起動時、ROM304に格納されている起動用プログラムを実行する。この起動用プログラムは、HDD305に格納されている制御用プログラムを読み出し、RAM303上に展開するためのものである。CPU302は起動用プログラムを実行すると、続けてRAM303上に展開した制御用プログラムを実行し、制御を行う。また、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の設定を行う。
また、コントローラ部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へのデータの読み書きを行う。
[カメラスキャナの機能構成]
図4(a)は、CPU302が実行するカメラスキャナ101の制御用プログラム401の機能構成の例を示す図である。また、図4(b)は、制御用プログラム401の各モジュールの関係をシーケンス図として示したものである。
カメラスキャナ101の制御用プログラム401はHDD305に格納され、CPU302が起動時にRAM303上に展開して実行する。メイン制御部402は、他の各モジュールを図4(b)に示すように制御する。したがって、本実施形態に係る、後述する各処理は、各モジュールに対応するプログラムをCPU302がHDD305から読み出し、実行することで実現される。
画像取得部416は画像入力処理を行い、カメラ画像取得部407および距離画像取得部408から構成される。カメラ画像取得部407はカメラI/F308を介してカメラ部202が出力する画像データを取得し、RAM303へ格納する。距離画像取得部408はカメラI/F308を介して距離画像センサ部208が出力する距離画像データを取得し、RAM303へ格納する。ここでの距離画像、および距離画像取得部408の処理の詳細は図5を用いて後述する。また、カメラ部202および距離画像センサ部208は、定期的な間隔にて画像を連続して取得することができる。本明細書において、この連続した画像群のうち、1つの画像を「フレーム」とも記載する。
認識処理部417は、カメラ画像取得部407および距離画像取得部408が取得する画像データから書画台204上の物体の動きを検知して認識する。認識処理部417は、ジェスチャ認識部409、物体検知部410、原稿領域抽出部419、原稿領域変換部420、特徴点抽出部421、2次元画像原稿輪郭算出部422、距離算出部423、および原稿輪郭算出部424から構成される。
ジェスチャ認識部409は、画像取得部416から書画台204上の画像を取得し続け、タッチなどのジェスチャによる操作指示を検知すると、その内容を解析し、メイン制御部402へ通知する。物体検知部410は、メイン制御部402から物体の載置待ち処理あるいは物体の除去待ち処理の通知を受けると、画像取得部416から書画台204を撮像した画像を取得する。また、物体検知部410は、書画台204上に物体が置かれて静止するタイミングあるいは物体が取り除かれるタイミングを検知する。原稿領域抽出部419は、距離画像取得部408で取得した距離画像から原稿領域を抽出する。
原稿領域変換部420は、カメラ画像取得部407で取得したカメラ画像と距離画像取得部408で取得した距離画像から原稿領域抽出部419で抽出した原稿領域を切り出し、原稿の画像に対し、書画台204と平行な平面上に位置するように画像情報を変換する。特徴点抽出部421は、原稿領域変換部420で変換したカメラ画像の原稿から特徴点を抽出する。2次元画像原稿輪郭算出部422は、原稿領域変換部420で取得したカメラ画像の原稿から輪郭を抽出する。距離算出部423は、特徴点抽出部421で抽出された特徴点と、2次元画像原稿輪郭算出部422で算出したカメラ画像の原稿の輪郭との距離、および特徴点間の距離を算出する。原稿輪郭算出部424は、物体検知部410で書画台204上に原稿が載置されたことを検知したら、距離算出部423で特徴点間の距離を再度算出し、原稿の輪郭を算出する。認識処理部417の処理の詳細は図6〜図8を用いてそれぞれ後述する。
スキャン処理部418は実際に対象物のスキャンを行うモジュールであり、スキャン対象物の種類に応じて、平面原稿画像撮影部411、書籍画像撮影部412、および立体形状測定部413から構成される。平面原稿画像撮影部411は平面原稿に、書籍画像撮影部412は書籍に、立体形状測定部413は立体物に、それぞれ適した処理を実行し、それぞれの処理に応じた形式のデータを出力する。本実施形態では、スキャン対象が原稿のため、平面原稿画像撮影部411の処理の詳細のみ図9〜図10を用いて後述する。なお、他の対象物をスキャンする場合でも基本的な動作は同じである。
ユーザインターフェイス部403は、GUI部品生成表示部414および投射領域検出部415から構成される。GUI部品生成表示部414は、メイン制御部402からの要求を受け、メッセージやボタン等のGUI(Graphical User Interface)部品を生成する。そして、GUI部品生成表示部414は、表示部406へ生成したGUI部品の表示を要求する。なお、書画台204上のGUI部品の表示場所は、投射領域検出部415により検出される。表示部406は、ディスプレイコントローラ309を介して、プロジェクタ207もしくはLCDタッチパネル330へ要求されたGUI部品の表示を行う。プロジェクタ207は書画台204に向けて設置されているため、書画台204上にGUI部品を投射・投影することが可能となっている。また、ユーザインターフェイス部403は、ジェスチャ認識部409が認識したタッチ等のジェスチャ操作、あるいはシリアルI/F310を介したLCDタッチパネル330からの入力操作、そして更にそれらの座標を受信する。そして、ユーザインターフェイス部403は、描画中の操作画面の内容と操作座標を対応させて操作内容(押下されたボタン等)を判定する。ユーザインターフェイス部403は、この判定した操作内容をメイン制御部402へ通知することにより、操作者の操作を受け付ける。
ネットワーク通信部404は、ネットワークI/F306を介して、ネットワーク104上の他の機器とTCP/IPによる通信を行う。データ管理部405は、制御用プログラム401の実行において生成した作業データなど様々なデータをHDD305上の所定の領域へ保存し、管理する。ここで保存されるデータは例えば、平面原稿画像撮影部411、書籍画像撮影部412、もしくは立体形状測定部413が生成したスキャンデータなどである。
[距離画像センサ部および距離画像取得部の説明]
図3は、距離画像センサ部208の構成を示す。距離画像センサ部208は赤外線によるパターン投射方式の距離画像センサである。赤外線パターン投射部361は、対象物に、人の目には不可視である赤外線によって3次元測定パターンを投射する。赤外線カメラ362は、対象物に投射した3次元測定パターンを読みとるカメラである。RGBカメラ363は、人の目に見える可視光をRGB信号で撮影するカメラである。
距離画像取得部408の処理を図5(a)のフローチャートを用いて説明する。また、図5(b)〜(d)はパターン投射方式による距離画像の計測原理を説明するための図面である。
処理を開始すると、S501にて、距離画像取得部408は、図5(b)に示すように赤外線パターン投射部361を用いて赤外線による3次元形状測定パターン522を対象物521に投射する。S502にて、距離画像取得部408は、RGBカメラ363を用いて対象物を撮影したRGB画像523、および、赤外線カメラ362を用いてS501で投射した3次元形状測定パターン522を含んで撮影した赤外線カメラ画像524を取得する。
ここで、図2に示すように赤外線カメラ362とRGBカメラ363とでは設置位置が異なるため、図5(c)に示すようにそれぞれで撮影される2つのRGB画像523および赤外線カメラ画像524の撮影領域が異なる。そこで、S503にて、距離画像取得部408は、赤外線カメラ362の座標系からRGBカメラ363の座標系への座標系変換を用いて赤外線カメラ画像524をRGB画像523の座標系に合わせる処理を行う。なお、赤外線カメラ362とRGBカメラ363の相対位置や、それぞれの内部パラメータは事前のキャリブレーション処理により既知であるとする。
S504にて、距離画像取得部408は、図5(c)に示すように、3次元形状測定パターン522とS503で座標変換を行った赤外線カメラ画像524間での対応点を抽出する。例えば、距離画像取得部408は、赤外線カメラ画像524上の1点を3次元形状測定パターン522上から探索して、同一の点が検出された場合に対応付けを行う。あるいは、距離画像取得部408は、赤外線カメラ画像524の画素の周辺のパターンを3次元形状測定パターン522上から探索し、一番類似度が高い部分と対応付けてもよい。
S505にて、距離画像取得部408は、赤外線パターン投射部361と赤外線カメラ362を結ぶ直線を基線525として三角測量の原理を用いて計算を行うことにより、赤外線カメラ362からの距離を算出する。距離画像取得部408は、S504で対応付けが出来た画素については、赤外線カメラ362からの距離を算出して画素値として保存し、対応付けが出来なかった画素については、距離の計測が出来なかった部分として無効値を保存する。これをS503で座標変換を行った赤外線カメラ画像524の全画素に対して行うことで、各画素に距離値が入った距離画像を生成する。
S506にて、距離画像取得部408は、距離画像の各画素にRGB画像523のRGB値を保存することにより、1画素につきR、G、B、距離の4つの値を持つ距離画像を生成する。ここで取得した距離画像は、距離画像センサ部208のRGBカメラ363で定義された距離画像センサ座標系が基準となる。そこでS507にて、距離画像取得部408は、図2(b)を用いて上述したように、距離画像センサ座標系として得られた距離データを直交座標系における3次元点群に変換する。以後、特に指定がなく「3次元点群」と表記した場合は、直交座標系における3次元点群を示すものとする。
なお、本実施形態では、上述したように、距離画像センサ部208として赤外線パターン投射方式を採用しているが、他の方式の距離画像センサを用いてもよい。例えば、2つのRGBカメラでステレオ立体視を行うステレオ方式や、レーザー光の飛行時間を検出することで距離を測定するTOF(Time of Flight)方式を用いても構わない。
[ジェスチャ認識部の説明]
ジェスチャ認識部409の処理の詳細を、図6のフローチャートを用いて説明する。処理を開始すると、S601にて、ジェスチャ認識部409は、初期化処理を行う。初期化処理で、ジェスチャ認識部409は、距離画像取得部408から距離画像を1フレーム取得する。ここで、ジェスチャ認識部409の開始時は書画台204上に対象物が置かれていない状態であるため、取得した距離画像から、初期状態として書画台204の平面の認識を行う。つまり、ジェスチャ認識部409は、取得した距離画像から最も広い平面を抽出し、その位置と法線ベクトル(以降、書画台204の平面パラメータと呼ぶ)を算出し、RAM303に保存する。
S602にて、ジェスチャ認識部409は、S621〜S622に示す、書画台204上に存在する物体の3次元点群を取得する。その際、S621にて、ジェスチャ認識部409は、距離画像取得部408から距離画像と3次元点群を1フレーム取得する。S622にて、ジェスチャ認識部409は、書画台204の平面パラメータを用いて、取得した3次元点群から書画台204を含む平面領域に位置する点群を除去する。
S603にて、ジェスチャ認識部409は、S631〜S634に示す、取得した3次元点群からユーザの手の形状および指先を検出する処理を行う。ここで、図7に示す、指先検出処理の方法を模式的に表した図を用いて説明する。S631にて、ジェスチャ認識部409は、S602で取得した3次元点群から、書画台204を含む平面領域において所定の高さの範囲内にある肌色の3次元点群を抽出することで、手の3次元点群を得る。ここでの所定の高さは、ジェスチャの認識の感度に応じて任意に設定できるものとする。図7(a)に示す3次元点群701は、抽出した手に対する3次元点群を表している。S632にて、ジェスチャ認識部409は、抽出した手に対する3次元点群を、書画台204の平面に射影した2次元画像を生成して、その手の外形を検出する。図7(a)に示す3次元点群702は、3次元点群701を書画台204の平面に投影した際の3次元点群を表している。投影は、点群の各座標を、書画台204の平面パラメータを用いて投影することができる。また、図7(b)に示すように、投影した手に対する3次元点群の値から、xy座標の値だけを取り出せば、z軸方向から見た2次元画像703として扱うことができる。この時、ジェスチャ認識部409は、手に対する3次元点群の各点が、書画台204の平面に投影した2次元画像の各座標のいずれに対応するかの情報を、HDD305等に記憶しておくものとする。
S633にて、ジェスチャ認識部409は、検出した手の外形上の各点について、その点での外形の曲率を算出し、算出した曲率が所定値より大きい点を指先として検出する。ここでの曲率に対する所定値は、予め定義され、HDD305等に保持されているものとする。図7(c)は、外形の曲率から指先を検出する方法を模式的に表している。点704は、書画台204の平面に投影された2次元画像703の外形を表す点の一部を表している。ここで、点704のような、外形を表す点のうち、隣り合う5個の点を含むように円を描くことを考える。円705、707が、その例である。この円を、全ての外形の点に対して順に描き、その直径(例えば直径706、および直径708)が所定の値より小さい(曲率が大きい)ことを以て、指先とする。この例では隣り合う5個の点としたが、その数は限定されるものではない。また、ここでは曲率を用いたが、その他の方法として、外形に対して楕円フィッティングを行うことで、指先を検出してもよい。
S634にて、ジェスチャ認識部409は、検出した指先の個数および各指先の座標を算出する。この時、前述したように、書画台204に投影した2次元画像の各点と、手に対する3次元点群の各点の対応関係に関する情報が記憶されているため、各指先の3次元座標を得ることができる。
本例では、3次元点群から2次元画像に投影した画像から指先を検出する方法を説明したが、指先検出の対象とする画像は、これに限定されるものではない。例えば、距離画像の背景差分や、RGB画像の肌色領域から手の領域を抽出し、上に述べたのと同様の方法(外形の曲率計算等)で、手領域のうちの指先を検出してもよい。この場合、検出した指先の座標はRGB画像や距離画像といった、2次元画像上の座標であるため、その座標における距離画像の距離情報を用いて、直交座標系の3次元座標に変換する必要がある。この時、指先点となる外形上の点ではなく、指先を検出するときに用いた、曲率円の中心を指先点としてもよい。
S604にて、ジェスチャ認識部409は、S641〜S646に示す、検出した手の形状および指先からのジェスチャ判定処理を行う。S641にて、ジェスチャ認識部409は、S603で検出した指先が1つか否かを判定する。検出した指先が1つでなければ(S641にてNO)S646へ進み、ジェスチャ認識部409は、「ジェスチャ無し」と判定する。検出した指先が1つであれば(S641にてYES)、S642へ進み、ジェスチャ認識部409は、検出した指先と書画台204を含む平面との距離を算出する。
S643にて、ジェスチャ認識部409は、S642で算出した距離が所定値以下であるか否かを判定する。ここでの所定値は、指先による書画台204へのタッチ動作か、移動指示動作かを判定するための閾値であり、その指先の動きを踏まえた値となる。所定値以下である場合(S643にてYES)、S644へ進み、ジェスチャ認識部409は、指先が書画台204へタッチしたとして「タッチジェスチャあり」と判定する。算出した距離が所定値以下で無い場合(S643にてNO)、S645へ進み、ジェスチャ認識部409は、「指先移動ジェスチャあり」と判定する。ここでの指先移動は例えば、タッチはしていないが指先が書画台204上に存在するジェスチャである。
S605にて、ジェスチャ認識部409は、判定したジェスチャをメイン制御部402へ通知し、その後、S602へ戻ってジェスチャ認識処理を繰り返す。
これにより、書画台204およびその近傍でなされたジェスチャによる操作指示を受け付ける受付手段を実現する。
[物体検知部の処理]
図8のフローチャートを用いて物体検知部410の処理の説明を行う。処理を開始すると、図8(a)のS801にて、物体検知部410は、S811〜S813に示す初期化処理を行う。S811にて、物体検知部410は、カメラ画像取得部407からカメラ画像を1フレーム取得し、距離画像取得部408から距離画像を1フレーム取得する。S812にて、物体検知部410は、取得したカメラ画像を前フレームカメラ画像として保存する。S813にて、物体検知部410は、取得したカメラ画像および距離画像を書画台背景カメラ画像および書画台背景距離画像としてそれぞれ保存する。以降、「書画台背景カメラ画像」および「書画台背景距離画像」と記載した場合は、ここで取得したカメラ画像および距離画像のことを指す。つまり、書画台204の初期状態を認識させる。
S802にて、物体検知部410は、物体が書画台204上に置かれたことの検知(物体載置検知処理)を行う。処理の詳細は図8(b)、(c)を用いて後述する。
S803にて、物体検知部410は、S802で載置を検知した書画台204上の物体が除去されることの検知(物体除去検知処理)を行う。処理の詳細は図8(d)を用いて後述する。
(物体載置検知処理)
図8(b)は、S802の物体載置検知処理の詳細を示すフローチャートであり、1枚目の原稿に対する原稿載置検知処理である。図8(a)の初期化処理の後や、図8(d)の物体除去検知処理の後は、こちらの処理が行われる。ここで、画像取得部416にて、所定の間隔にて連続して画像群が撮影されているものとする。
S821にて、物体検知部410は、画像取得部416が取得した連続する画像群の中からカメラ画像と距離画像を1フレーム取得する。S822にて、物体検知部410は、S821にて取得したカメラ画像と、すでに保持されている前フレームカメラ画像との差分を計算し、その絶対値の総和を差分値として算出する。S823にて、物体検知部410は、算出した差分値が予め決めておいた所定値以上か否かを判定する。ここでの所定値は、予め定義され、HDD305等に保持されているものとする。
算出した差分値が所定値未満であれば(S823にてNO)、物体検知部410は、書画台204上には「物体が無い」と判定し、S828へ進み、物体検知部410は、現フレームのカメラ画像と距離画像を前フレームカメラ画像と距離画像として保存する。その後、S821へ戻り、処理を続ける。差分値が所定値以上であれば(S823にてYES)、S824へ進み、物体検知部410は、S821で取得したカメラ画像と前フレームカメラ画像との差分値を、S822と同様に算出する。
S825にて、物体検知部410は、算出した差分値が予め決めておいた所定値以下であるか否かを判定する。ここでの所定値は、予め定義され、HDD305等に保持されているものとする。なお、S823にて用いた所定値と同じ値を用いても良いし、異なる値を用いても構わない。算出した差分値が所定値よりも大きければ(S825にてNO)、物体検知部410は、「書画台204上の物体が動いている」と判定し、S828へ進み、現フレームのカメラ画像を前フレームカメラ画像として保存する。その後、S821へ戻り、処理を続ける。算出した差分値が所定値以下であれば(S825にてYES)、S826へ進む。このとき、物体検知部410は、算出した差分値が所定値以下であると連続して判定された回数をカウントしておくものとする。
S826にて、物体検知部410は、S825において連続して所定値以下と判定された回数が閾値以上か否か(つまり、書画台204上の物体が静止した状態が、予め決めておいたフレーム数続いたか否か)を判定する。書画台204上の物体が静止した状態が予め決めておいたフレーム数続いていない場合(S826にてNO)、S828へ進む。S828にて、物体検知部410は、現フレームのカメラ画像と距離画像を前フレームカメラ画像と距離画像として保存する。その後、S821へ戻り、処理を続ける。
書画台204上の物体が静止した状態が予め決めておいたフレーム数続いた場合(S826にてYES)、S827へ進み、物体検知部410は、物体が置かれたことをメイン制御部402へ通知する。そして、物体載置検知処理を終了する。
図8(c)は、S802の物体載置検知処理の詳細を示すフローチャートであり、2枚目以降の原稿に対する原稿載置検知処理である。図8(b)と同じ処理については同じ番号を付して、説明は省略する。
S831にて、物体検知部410は、取得した距離画像と前フレーム距離画像との差分を計算してその絶対値を合計した差分値を算出する。2枚目の原稿に対する最初のフレームの処理では、前フレーム距離画像は図8(b)のS828で得られる画像を用いる。
S832にて、物体検知部410は、算出した差分値が予め決めておいた所定値以上か否かを判定する。ここでの所定値は予め定義され、HDD305等に保持されているものとする。算出した差分値が所定値未満であれば(S832にてNO)、物体検知部410は、新しい原稿(未検知の原稿)が写りこんでいないと判定し、S828へ進む。差分値が所定値以上であれば(S832にてYES)、物体検知部410は、新しい原稿が写りこんでいると判定し、S833へ進み、原稿輪郭算出処理を行う。処理の詳細は図8(e)、図11を用いて後述する。
(物体除去検知処理)
図8(d)は、S803の物体除去検知処理の詳細フローチャートである。物体除去検知処理を開始すると、S841にて、物体検知部410は、カメラ画像取得部407からカメラ画像を1フレーム取得する。S842にて、物体検知部410は、取得したカメラ画像と書画台背景カメラ画像との差分値を算出する。S843にて、物体検知部410は、算出した差分値が予め決めておいた所定値以下か否かを判定する。ここでの所定値は予め定義され、HDD305等に保持されているものとする。なお、図8(b)のS823にて用いた値と同じものを用いてもよい。
算出した差分値が所定値よりも大きければ(S843にてNO)、書画台204上にまだ物体が存在するため、S841へ戻り、処理を続ける。算出した差分値が所定値以下であれば(S843にてYES)、物体検知部410は、書画台204上の物体が無くなったと判定し、物体除去をメイン制御部402へ通知する。その後、物体除去検知処理を終了する。
(原稿輪郭算出処理)
図8(e)は、S833の原稿輪郭算出処理の詳細を示すフローチャートである。図11は、原稿輪郭算出処理を説明するための模式図である。本実施形態では、書画台204の平面を示す領域と距離画像から得られる原稿領域との距離が、カメラ部202の被写界深度によって決まる所定値以内となった初めてのフレームに対してのみ原稿輪郭算出処理を行う。つまり、原稿が書画台204に配置された時点での画像に対してのみ、原稿の輪郭の算出を行う。
原稿輪郭算出処理を開始すると、S851にて、原稿輪郭算出部424は、原稿領域抽出部419を用いて距離画像から原稿領域を抽出する。図11(a)は、2枚目の原稿を書画台204に置く過程でのカメラ画像の例を示す。図11(b)は、2枚目の原稿を書画台204に置く過程での距離画像の例である。図11(b)では、距離画像センサ部208からの距離が遠くなればなるほど、距離画像においてその位置の値は暗くなる。図11(c)は、前フレーム距離画像との差分画像を示す。ここでは、前フレーム距離画像と現フレーム距離画像との差分のある領域を原稿領域として判断する。もちろん、距離画像にも原稿を持っている手が写る場合があるが、手に対応する領域は例えば前述したジェスチャ認識部409のS603の処理で検出して原稿領域とは切り離すことが可能である。
S852にて、原稿輪郭算出部424は、原稿領域と書画台204の距離が所定値以下になったか否かを判定する。この所定値は、すでに原稿が書画台204に載置されている上に、2枚目以降の原稿が重ねて載置されようとして近づいたか否かを示す閾値である。この所定値は、予め定義され、HDD305等に保持されているものとする。つまり所定値以下ではない場合(S852にてNO)、原稿輪郭算出部424は、原稿が書画台204に配置されていないと判定し、原稿輪郭算出処理は行わずに処理を終了する。所定値以下の場合(S852にてYES)、S853に進み、原稿輪郭算出部424は、S852でYESとなった初めてのフレームであるか否かを判定する。すなわち、以前のフレームにおいて、対応する原稿が書画台204に所定の距離以上近づいたことをすでに検知しているか否かを判定する。初めてのフレームではない場合(S853にてNO)、原稿輪郭算出部424は、原稿輪郭算出処理は行わずに処理を終了する。
初めてのフレームである場合(S853にてYES)、S854に進み、原稿輪郭算出部424は、カメラ画像と距離画像から原稿領域を切り出し、書画台204と平行な平面上に対応付けて配置する。具体的には、S851で距離画像から原稿領域は切り出せているため、原稿輪郭算出部424は、カメラ画像を距離画像座標系に変換して、カメラ画像から原稿領域を切り出す。切り出したカメラ画像と距離画像の原稿領域をそれぞれ図11(d)、図11(e)に示す。原稿輪郭算出部424は、これらの画像を書画台204と平行な平面上に配置する。つまり、原稿輪郭算出部424は、書画台204の直交座標系に変換する。
図11(d)、図11(e)の例では2次元歪みの変換となるが、一般的には手に持った原稿は3次元に歪むため、3次元歪みを変換する方法を採用する必要がある。変換の方法としては、例えば「可展面モデルを用いた非剛体変形の推定」(中島崇ほか、“可展面モデルを用いた非剛体変形の推定”、2009年7月22日、第12回画像の認識・理解シンポジウム(MIRU2009))を用いて平面展開をすることが可能である。カメラ画像と距離画像から切り出した原稿領域を書画台204の直交座標系に変換した画像をそれぞれ図11(f)、図11(g)に示す。この例では、Z軸方向は、距離画像の原稿領域の中で最も書画台204に近い位置に合わせて平面展開している(この時のZ軸方向の値をZ0とする)。
S855にて、原稿輪郭算出部424は、変換したカメラ画像の原稿領域から特徴点を抽出する。特徴点抽出方法としては、照明の変化や回転、拡大縮小に比較的強い耐性をもつ特徴点算出手法であるSIFT(Scale−invariant feature transform)など、様々な方法が提案されており、ここでの詳細説明は割愛する。図11(h)は、図11(f)の画像から特徴点を抽出した例である。図11(h)において、特徴点は黒い点(●)で表わされており、特徴点1103、1104など計24個の特徴点が抽出されている。特徴点1103、1104の書画台204の直交座標系での位置はそれぞれ(X1103、Y1103、Z0)、(X1104、Y1104、Z0)である。
S856にて、原稿輪郭算出部424は、変換したカメラ画像から原稿の輪郭を抽出する。これは、S854の処理で変換したカメラ画像の最外郭となり、図11(i)のようになる。S857にて、原稿輪郭算出部424は、S855で抽出した特徴点間の距離と、S856で抽出した輪郭との距離を算出する。図11(j)の例では、特徴点1103、1104間の距離をD1とする。特徴点1103と原稿の輪郭の左辺、右辺、上辺、下辺との距離をそれぞれD2、D3、D4、D5とする。特徴点1103と原稿の輪郭の交点の座標をそれぞれP2、P3、P4、P5とする。特徴点1104と原稿の輪郭の左辺、右辺、上辺、下辺との距離をそれぞれD6、D7、D8、D9とする。特徴点1104と原稿の輪郭の交点の座標をそれぞれP6、P7、P8、P9とする。原稿輪郭算出部424は、他の特徴点についても距離の計算を行って、特徴点間の関係を導出し、原稿輪郭算出処理を終了する。
[平面原稿画像撮影部の説明]
図9(a)、(b)のフローチャートを用いて、平面原稿画像撮影部411が実行する処理を説明する。図9(a)は、1枚目の原稿に対して平面原稿画像撮影部411が実行する処理のフローチャートであり、図10は処理を説明するための模式図である。
処理を開始すると、S901にて、平面原稿画像撮影部411は、カメラ画像取得部407を介してカメラ部202からの画像を1フレーム取得する。ここで、カメラ部202の座標系は図2(b)で示したように書画台204に正対していない。そのため、このときの撮影画像は、図10(a)に示すように対象物1001、書画台204ともに歪んでいる。
S902にて、平面原稿画像撮影部411は、書画台背景カメラ画像とS901で取得したカメラ画像との画素毎の差分を算出し、差分画像を生成した上で、差分のある画素を黒、差分の無い画素を白となるように二値化する。その結果、ここで生成した差分画像は、図10(b)の差分領域1002のように、対象物1001の領域が黒色である(差分がある)画像となる。
S903にて、平面原稿画像撮影部411は、差分領域1002を用いて、図10(c)のように対象物1001のみの画像を抽出する。S904にて、平面原稿画像撮影部411は、抽出した原稿領域画像に対して階調補正を行う。S905にて、平面原稿画像撮影部411は、抽出した原稿領域画像に対してカメラ座標系から書画台204への射影変換を行い、図10(d)のように書画台204の真上から見た画像1003に変換する。ここで用いる射影変換パラメータは、ジェスチャ認識部409の処理において、前述した図6のS601で算出した平面パラメータとカメラ座標系から求めることができる。
なお、図10(d)に示したように、書画台204上への原稿の置き方により、ここで得られる画像1003は傾いている場合がある。そこで、S906にて、平面原稿画像撮影部411は、画像1003を矩形近似してから、その矩形が水平になるように回転し、図9(e)で示した画像1004のように傾きの無い画像を得る。図10(f)に示すように、基準ラインに対しての矩形の傾きθ1およびθ2を算出し、傾きが小さい方(ここではθ1)を画像1003の回転角度として決定する。あるいは、図10(g)および図10(h)に示すように、画像1003中に含まれる文字列に対してOCR処理を行い、文字列の傾きから画像1003の回転角度の算出および天地判定処理をしてもよい。
S907にて、平面原稿画像撮影部411は、抽出した画像1004に対して、予め決めておいた画像フォーマットに合わせて圧縮およびファイルフォーマット変換を行う。画像フォーマットとしては、例えば、JPEG(Joint Photographic Experts Group)、TIFF(Tagged Image File Format)、PDF(Portable Document Format)等がある。そして、平面原稿画像撮影部411は、データ管理部405を介してHDD305の所定の領域へファイルとして保存し、処理を終了する。
図9(b)は、2枚目以降の原稿に対して平面原稿画像撮影部411が実行する処理のフローチャートで、図12は処理を説明するための模式図である。図9(a)と同じ処理については同じ番号を付して、説明は省略する。
S911にて、平面原稿画像撮影部411は、取得したカメラ画像(図12(a))を書画台204の直交座標系に射影変換する。その結果、図12(b)のような画像が得られる。S912にて、平面原稿画像撮影部411は、射影変換したカメラ画像の特徴点を抽出する。特徴点の抽出方法は、図8(e)のS853で用いた方法と同じ方法を用いる。図12(c)は、図12(b)の画像から特徴点を抽出した例である。図12(c)において、特徴点は黒い点(●)で表わされており、特徴点1203、1204など計27個の特徴点が抽出されている。特徴点1203、1204の書画台204の直交座標系での位置はそれぞれ(X1203、Y1203、0)、(X1204、Y1204、0)である。
S913にて、平面原稿画像撮影部411は、S855で得られた特徴点と、S912で得られた特徴点を比較し、一致する特徴点を残す。完全に一致しなくても、一致度が予め決められた値以上であれば一致したとみなしても良い。図12(d)では24個の特徴点が一致し、特徴点1203、1204はそれぞれ図11(h)の特徴点1103、1104と一致したとする。
S914にて、平面原稿画像撮影部411は、特徴点間の距離を算出する。図12(e)の例では、特徴点1203、1204間の距離をD1’とする。他の特徴点についても距離の計算を行う。S915にて、平面原稿画像撮影部411は、原稿の輪郭を算出する。S857で算出した特徴点間の距離および特徴点と輪郭との距離と、S914で算出した特徴点間の距離および特徴点と輪郭との距離とは相似の関係にあるため、特徴点と原稿の輪郭との距離が導出できる。また、S857で算出した特徴点の座標と原稿の輪郭の交点の座標と、S914で算出した特徴点の座標および特徴点と原稿の輪郭の交点の座標の位置関係も相似の関係にあるため、特徴点と原稿の輪郭との交点も導出できる。以上により2枚目以降の原稿の輪郭が算出できる。算出された原稿の輪郭の例を図12(f)に示す。つまり、同じ原稿であれば、撮影状態が変動したとしても、特徴点の間の関係は変動しない。よって、2枚目以降の原稿をすでに載置されている原稿に重ね置きする前後の画像それぞれから、その重ね置きする側の原稿に対する領域を抽出し、その特徴点の対応関係から2枚目以降の原稿の載置後の輪郭を特定する。
S916にて、平面原稿画像撮影部411は、S915で算出した原稿の輪郭に沿って原稿を切り出す。S917にて、平面原稿画像撮影部411は、S906と同様の方法で切り出した原稿が水平になるように回転する。
[メイン制御部の説明]
図13のフローチャートを用いてメイン制御部402が実行するスキャンアプリケーションの処理について説明する。
処理を開始すると、S1301にて、メイン制御部402は、書画台204にスキャンの対象物の載置を検知するために物体載置待ち処理を行う。物体載置待ち処理を開始すると、S1311にて、メイン制御部402は、ユーザインターフェイス部403のGUI部品生成表示部414を介して、書画台204にプロジェクタ207によって初期画面を投射表示する。例えば、図14(a)に示すような書画台204上に対象物を置くことをユーザに促すメッセージ1441のGUI部品を生成し表示する。
S1312にて、メイン制御部402は、物体検知部410の処理を起動する。物体検知部410は図8のフローチャートで説明した処理の実行を開始する。S1313にて、メイン制御部402は、物体検知部410からの物体載置通知を待つ。物体検知部410が図8(b)(c)のS827の処理を実行して物体載置をメイン制御部402へ通知すると、S1313にて、メイン制御部402は、「物体載置通知あり」と判定する(S1313にてYES)。
S1301の物体載置待ち処理を終了すると、メイン制御部402は、S1302にて、スキャン操作を行うためのメニュー表示であるGUI部品を表示する。例えば、メイン制御部402は、図14(b)のようなスキャン処理モードを設定するためのメニューボタン(1442〜1444)で構成されるGUI部品を生成する。そして、メイン制御部402は、GUI部品生成表示部414を介して、書画台204にプロジェクタ207によってGUI部品を初期投射する。
GUI部品更新処理の後、S1303にて、メイン制御部402は、スキャン実行処理を行う。スキャン実行処理の開始時には、図14(b)に示したスキャン開始画面が、GUI部品生成表示部414を介して書画台204に投射されている。2Dスキャンボタン1442は、平面原稿の撮影指示を受け付けるボタンである。書籍スキャンボタン1443は、書籍原稿の撮影指示を受け付けるボタンである。3Dスキャンボタン1444は、立体形状の測定指示を受け付けるボタンである。
ユーザインターフェイス部403は、前述したようにジェスチャ認識部409から通知されるタッチジェスチャの座標とこれらのボタンを表示している座標から、いずれかのボタンがユーザによって押下されたことを検知する。以降、ユーザインターフェイス部403による検知の説明を省略して「ボタンへのタッチを検知する」と記載する。また、ユーザインターフェイス部403は、2Dスキャンボタン1442、書籍スキャンボタン1443、もしくは3Dスキャンボタン1444へのタッチを検知すると、選択したスキャン実行を行う。あるいは、選択したスキャンの実行開始指示を受け付けるスキャン開始ボタンを別途配置し、2Dスキャンボタン1442、書籍スキャンボタン1443、および3Dスキャンボタン1444のそれぞれを排他的に選択できるようにしてもよい。その際には、ユーザのいずれかのボタンへのタッチを検知すると、ユーザインターフェイス部403は、タッチされたボタンを選択状態とし、他のボタンの選択を解除する。
S1331にて、メイン制御部402は、メニューボタン(1442〜1444)のタッチを検知するまで待つ。タッチされたスキャン開始ボタンが2Dスキャンボタン1442の場合、S1332へ進み、メイン制御部402は、平面原稿画像撮影部411の処理を実行する。書籍スキャンボタン1443の場合、S1333へ進み、メイン制御部402は、書籍画像撮影部412の処理を実行する。また、3Dスキャンボタン1444の場合、S1334へ進み、メイン制御部402は、立体形状測定部413の処理を実行する。そしてS1332〜S1334のいずれかによる処理が終了すると、スキャン実行処理を終了する。
S1303のスキャン実行処理の後、メイン制御部402は、S1304にて物体除去待ち処理・物体載置待ち処理を行う。物体除去待ち処理・物体載置待ち処理を開始すると、S1341にて、GUI部品生成表示部414は、スキャン終了画面を表示する。例えば、図14(c)に示すようなスキャンが終了した旨をユーザに通知するメッセージ1445のGUI部品を生成し投射する。
S1342およびS1343にて、メイン制御部402は、物体検知部410からの物体載置通知、もしくは物体除去通知を受信するのを待つ。物体除去通知は、物体検知部410が図8のS844で通知するものである。物体載置通知を受信すると(S1342にてYES)、S1302に戻り、処理を継続する。物体除去通知を受信すると(S1343にてYES)、物体除去待ち処理を終了する。
S1304の物体除去待ち処理・物体載置待ち処理の後、メイン制御部402は、S1305へ進み、スキャン終了判定処理を行う。スキャン終了判定は、ネットワークI/F306を介してホストコンピュータ102から送信されるスキャン終了命令や、LCDタッチパネル330から入力される終了命令、あるいはタイマー設定(不図示)などにより行われるものとする。スキャン終了命令を受信した場合(S1304にてYES)、メイン制御部402は、スキャン処理を終了する。スキャン処理を継続する場合(S1304にてNO)、S1301へ戻り、図14(a)の初期画面を表示して書画台204への物体載置を待つ。
なお、図14に示す画面の構成は一例であり、他の画面やメッセージを表示するようにしてもよい。以上により、ユーザが複数の原稿をスキャンしたい場合に、書画台204上の原稿を取り換えたことを検知することができ、複数の原稿のスキャンを連続して実行できる。
以上、原稿が重ね置きされようとしている状態で、重ねられる側の原稿の情報を取得することで、重ね置きされた際に原稿の輪郭を適切に算出することができる。
なお、本実施形態では1枚目の原稿に対する処理と2枚目以降の原稿に対する処理を分けて記載したが、1枚目の原稿から図8(c)、図9(b)の処理を行うようにしても良い。
また、本実施形態では原稿輪郭算出処理は1度だけ行った。しかし、別の処理方法として、図8(f)のフローチャートのS861のように、抽出した原稿領域と書画台の距離が所定の範囲内である場合に、後続の処理を行うようにしてもよい。その場合(S861にてYES)、原稿輪郭算出部424は、原稿を載置するまでの複数のフレームで特徴点の抽出、特徴点と原稿の輪郭との距離、および特徴点間の距離を算出する。その結果、各フレームから異なる特徴点間の距離、および特徴点と輪郭との距離が得られるので、例えば対応する特徴点間の距離、および特徴点と輪郭との距離それぞれにおいて平均を取る。そして原稿を書画台204に載置した後の特徴点を比較して一致した特徴点を用いて原稿の輪郭を算出できる。
<実施形態2>
実施形態1では、図9(a)および図9(b)のように書画台204に載置された平面原稿の輪郭を算出して原稿領域を切り出し、原稿領域が水平になるように回転して画像圧縮、フォーマット変換して保存した。保存したデータをプリンタ103に送信して印刷する場合、例えば保存したデータの原稿領域(図15の1501)がA4サイズ(図15の1502)より少し大きいとする。プリンタ103の給紙カセット(不図示)にはA3とA4の2種類のサイズの用紙が積載されており、給紙設定が自動用紙選択となっている場合、画像サイズが少し大きいだけなのにA3用紙が選択されてしまう(図15の1503)。そこで、本実施形態では、保存するデータの原稿領域が印刷用紙の定型サイズ(A3、A4など)に近いサイズになったときは、原稿領域を定型サイズに補正する仕組みを提供する。
図16(a)、(b)は、本実施形態に係る平面原稿画像撮影部411が実行する処理のフローチャートである。このフローチャートでは、実施形態1に係る図9(a)、(b)のフローチャートに対して、S1601の原稿領域と定型サイズの比較処理、S1602の閾値との比較処理、原稿領域の縮小処理が追加されている。そのほかの処理は図9で説明した平面原稿画像撮影部411の処理と同じであるため、説明は省略する。また、定型サイズとしてはA3とA4の2種類の用紙サイズがあるものとして説明するが、他の定型サイズがあっても問題ないことはいうまでもない。
S1601にて、平面原稿画像撮影部411は、原稿領域と定型サイズの大きさを比較する。図15の例では、原稿領域1501はA4よりは大きく、A3よりは小さい。A4よりは大きいため(S1601にてYES)、S1602にて、平面原稿画像撮影部411は、原稿領域と定型サイズの比を閾値と比較する。図15の例で、原稿領域1501とA4のサイズ比が103%で、閾値が105%とすると、閾値より小さいことになる。なお、閾値は予め定義され、HDD305等に保持されているものとする。また、各閾値の設定は用紙サイズの種類それぞれに対して設定できるようにしても構わない。
閾値より小さいため(S1602にてYES)、S1603にて、平面原稿画像撮影部411は、原稿領域を定型サイズに縮小する。
以上、本実施形態により、実施形態1の効果に加え、保存するデータの原稿領域が印刷用紙の定型サイズに近いサイズになったときは、原稿領域を定型サイズに補正することが可能となる。
<実施形態3>
実施形態1及び2では、原稿領域を特定するのにカメラ画像と距離画像を用いた。本実施形態では、カメラ画像のみを用い、原稿領域が特定できない場合にはユーザに原稿を置き直してもらうように指示する方法を提供する。
図17(a)、(b)は、本実施形態に係る平面原稿画像撮影部411が実行する処理のフローチャートである。このフローチャートにおいて、図9(a)、(b)のフローチャートと同様の処理については説明を省略する。ここでは、1枚目の原稿に対する処理は、実施形態1と同様であるため(図9(a))、図17(a)の説明は省略する。
図17(b)において、S1701にて、平面原稿画像撮影部411は、取得したカメラ画像を射影変換する。図18(a)は、1枚目の原稿が置かれた時の書画台204内の画像を射影変換したものである。図18(b)は、2枚目の原稿が重ね置きされた時の書画台204内の画像を射影変換したものである。図18(c)は、3枚目の原稿が重ね置きされた時の書画台204内の画像を射影変換したものである。
S1702にて、平面原稿画像撮影部411は、射影変換後の前回カメラ画像と今回カメラ画像の差分画像を生成し、二値化する。図18(d)は、2枚目の原稿が重ね置きされた時の差分画像を二値化したものである。つまり、前回のカメラ画像である図18(a)と今回のカメラ画像である図18(b)の差分画像を二値化したものである。差分のある個所が黒色画像となる。図18(e)は、3枚目の原稿が重ね置きされた時の差分画像を二値化したものである。図18(b)と図18(d)の間には差分がないため、図18(e)には黒色画像領域が存在しない。したがって、1枚目と2枚目の差分は検知できるが、2枚目と3枚目の差分が検知できないこととなる。
S1703にて、平面原稿画像撮影部411は、原稿領域としての矩形を抽出する。矩形抽出の方法としては、先行技術(例えば、特開2007−201948号公報)に記載の方法などを用いることが可能である。図18(d)の差分画像から抽出された矩形を図18(f)に示す。図18(f)では1801、1802の2通りの矩形が抽出される。この中で、矩形1802は1枚目の原稿から抽出された矩形と同じであるので2枚目の原稿の輪郭候補から外す。したがって、2枚目の原稿の輪郭候補は矩形1801のみとなる。
S1704にて、平面原稿画像撮影部411は、原稿の輪郭候補は1種類か否かを判定する。図18の例では、2枚目の原稿の輪郭の候補は1種類であるため(S1704にてYES)、S904以降の処理が行われる。一方、3枚目の原稿の輪郭候補はないため(S1704にてNO)、S1705に進む。S1705にて、平面原稿画像撮影部411は、原稿の輪郭候補が1種類に特定できなかったので、GUI部品生成表示部414はその旨をユーザに通知するメッセージを表示して、処理を終了する。図18(g)は、ユーザに通知するメッセージの一例である。
以上、本実施形態により、カメラ画像のみを用い、原稿領域が特定できない場合にはユーザに原稿を置き直してもらうように指示することが可能となる。なお、本実施形態では輪郭の候補がない場合にはユーザにメッセージを通知して処理を終了するが、他の形態での実施も可能である。例えば原稿の輪郭候補が複数存在したり、1つも存在しなかったりした場合には、それまでの原稿の輪郭候補を1つずつ表示し、ユーザに原稿の輪郭候補を選択させるようにしてもよい。
<実施形態4>
実施形態3では、カメラ画像のみを用い、原稿領域が特定できない場合にはユーザに原稿を置き直してもらうように指示する方法を提供したが、本実施形態では原稿領域が特定できる場所を予め算出し、ユーザに置く場所を指示する方法を提供する。
図19は、本実施形態に係る物体検知部410が実行する処理のフローチャートである。このフローチャートにおいて、図8(b)のフローチャートと同様の処理については説明を省略する。
S1901にて、物体検知部410は、原稿載置位置を算出して表示する。1枚目の原稿については、図20(a)のように、メイン制御部402が書画台204と水平になるように矩形2001を生成し、GUI部品生成表示部414は生成した矩形2001を表示する。2枚目の原稿については、図20(b)のように、メイン制御部402が1枚目の原稿の矩形2002と中心が同じで角度をαだけ傾けた矩形2003を生成する。角度αは、確実に原稿の輪郭が特定できる角度にする必要があるが、本例ではαは30°とする。GUI部品生成表示部414は、生成した矩形2003を表示する。3枚目以降の原稿も同様に、メイン制御部402が角度をαだけ傾けた矩形を生成し、GUI部品生成表示部414は生成した矩形を表示する。
S1902にて、物体検知部410は、カメラ画像取得部407を介してカメラ部202からの画像を1フレーム取得する。S1903にて、物体検知部410は、現フレームカメラ画像を前フレームカメラ画像として保存する。
以上、本実施形態により、カメラ画像のみを用い、原稿領域が特定できる場所を予め算出し、ユーザに置く場所を指示する方法を提供することが可能となる。なお、本実施形態では1枚目の原稿を置く前から矩形を表示したが、他の形態での実施も可能である。例えば1枚目の原稿は矩形表示しないでユーザに自由に原稿を置いてもらい、2枚目以降の原稿の置く位置を矩形表示で指示するようにしても構わない。
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。