以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。
[第1の実施形態]
先ず、本実施形態に係るシステムの外観例について、図1(b)を用いて説明する。本実施形態では、原稿台上に載置された複数枚綴りの原稿に対し、原稿が1枚めくられる度に撮像を行うことで、それぞれの原稿の裏表に印刷されているページのスキャン画像を生成・取得する。
撮影装置102は、原稿台上に載置された複数枚綴りの原稿を撮像するために設けられたものであり、撮像した画像は制御装置101に入力される。投影装置103は、プロジェクタなどにより構成される。撮影装置102及び投影装置103は制御装置101に接続されており、制御装置101によってその動作が制御される。制御装置101は撮影装置102及び投影装置103の動作制御を行うと共に、撮影装置102が撮影した撮影画像から、原稿台上に載置された複数枚綴りの原稿の各ページのスキャン画像を生成する。
制御装置101の機能構成例を図1(a)にブロック図として示す。なお、図1(a)に示した構成は、以下の説明で用いる主要な構成であり、必ずしもこの構成に限るわけではなく、その構成には様々な変形例が考え得る。例えば、撮影装置102や投影装置103は制御装置101内に納められていても良いし、データ記憶部107を制御装置101の外部メモリとして制御装置101に外付けで接続しても良い。図1に示した各機能部の機能に係る説明は、制御装置101の動作を示す図3のフローチャートを用いた説明の中で行う。
また、図1(a)に示した制御装置101を構成する各機能部はいずれもハードウェアで構成しても良いが、データ記憶部107をのぞく各機能部をソフトウェアで構成しても良い。この場合、データ記憶部107をメモリとして有し、且つこのソフトウェアを実行可能な装置は、制御装置101に適用することができる。本実施形態では、データ記憶部107をのぞく各部はソフトウェアで構成するものとし、その場合における制御装置101のハードウェア構成例について、図2のブロック図を用いて説明する。なお、図2に示した構成は、以下の説明で用いる主要な構成であり、必ずしもこの構成に限るわけではなく、その構成には様々な変形例が考え得る。
CPU204はメモリ205に格納されているコンピュータプログラムやデータを用いて処理を実行することで、制御装置101全体の動作制御を行うと共に、制御装置101が行うものとして後述する各処理を実行する。
メモリ205は、ハードディスク203からロードされたコンピュータプログラムやデータ、撮影装置102から順次送出される各フレームの撮影画像を一時的に記憶するためのエリアを有する。更にメモリ205は、CPU204が各種の処理を実行する際に用いるワークエリアも有する。即ちメモリ205は、各種のエリアを適宜提供することができる。メモリ205は、図1のデータ記憶部107としても機能する。
ハードディスク203には、OS(オペレーティングシステム)や制御装置101が行うものとして後述する各処理をCPU204に実行させるためのコンピュータプログラムやデータが保存されている。ハードディスク203に保存されているコンピュータプログラムやデータは、CPU204による制御に従って適宜メモリ205にロードされ、CPU204による処理対象となる。なお、メモリ205に記憶するとして説明したものの一部若しくは全部をハードディスク203に記憶させるようにしても構わない。また、ハードディスク203は、図1のデータ記憶部107としても機能する。
CPU204、メモリ205、ハードディスク203、のそれぞれは共通のバス206に接続されており、互いにこのバス206を介してデータ通信を行うことができる。また、このバス206には上記の撮影装置102及び投影装置103も接続されている。
次に、制御装置101が複数枚綴りの原稿における各ページのスキャン画像を取得するために行う処理について、同処理のフローチャートを示す図3を用いて説明する。なお、図3のフローチャートに従った処理をCPU204に実行させるためのコンピュータプログラムやデータはハードディスク203に保存されている。然るに、CPU204はこのコンピュータプログラムやデータをハードディスク203からメモリ205にロードし、これを用いて処理を実行することで、結果としてCPU204は図3のフローチャートに従った処理を実行することになる。
ステップS301では、CPU204は以下の処理で用いる変数Nを1に初期化する。この変数Nは、スキャンしたページの番号を表すページカウンタとして利用する変数である。
ステップS302では、CPU204は撮影制御部104として機能し、撮影装置102に原稿台上に載置されている原稿の撮影を行わせる。これにより、メモリ205には、撮影装置102が原稿台上を撮影した撮影画像が入力される。
ステップS303では、CPU204は撮影制御部104として機能する。即ちCPU204は、ステップS302でメモリ205に格納した撮影画像(現フレームの撮影画像)、該現フレームより1フレーム前の撮影画像(メモリ205内に既に格納されている)、の2フレームの撮影画像について以下の2点について判断を行う。
(1) 現フレームの撮影画像中に原稿が写っているか否か
(2) 上記2フレーム間で画像内容に変化がないか(原稿が静止しているか否か)
現フレームの撮影画像中に原稿が写っているか否かを判断する方法には様々な方法が考え得る。例えば、予め「原稿が載置されていない状態の原稿台上の撮影画像」を取得しておき、この撮影画像と現フレームの撮影画像との差分が規定量以上であれば、現フレームの撮影画像中に原稿が写っていると判断する。もちろん、現フレームの撮影画像に対して画像認識を行い、該撮影画像中に原稿が写っているか否かを判断するようにしても構わない。もちろん、後述する原稿抽出の処理を実際に適用して原稿が存在するかを推定してもよい。
また、上記2フレーム間で画像内容に変化がないか否かを判断する方法にも様々な方法が考え得る。例えば、現フレームの撮像画像中の各画素のRGB値と、現フレームよりも1フレーム前の撮像画像中の各画素のRGB値と、の間のRGB色空間における距離が閾値以上であれば、この2フレーム間で画像内容に変化があると判断する。これは複数フレーム間で行ってもよく、その場合、複数フレーム間の距離の平均が閾値以上であれば変化があったと判断する。なお、RGB値以外の画素値を用いても構わない。原稿が原稿台上に静止しているか否かは、赤外センサなど専用のセンサを用いて判定しても良い。
ステップS303における判断の結果、現フレームの撮影画像中に原稿が静止した状態で写っていると判断した場合には、この現フレームの撮影画像を処理対象画像とし、処理はステップS304に進む。一方、現フレームの撮影画像中に原稿が静止した状態で写っていないと判断した場合には、処理はステップS302に戻る。
撮影画像中に原稿が静止した状態で写っているということは、ユーザが原稿をめくっている最中ではなく、原稿をめくった後であると判断することができる。本実施形態では、原稿を1枚めくるごとに該原稿を撮影して見開きのページのスキャン画像を生成するので、撮影画像中には、「原稿をめくった後」の状態が写っていることが必須となる。
ステップS304以降では、現フレームの撮影画像、即ち、原稿が静止した状態で写っている撮影画像が処理の対象となる。然るに、原稿が静止した状態で写っている撮影画像を取得することができるのであれば、他の手法によって「原稿が静止した状態で写っている撮影画像」を取得するようにしても構わない。例えば、本装置のユーザが操作可能なインターフェース及び撮影装置102から順次送出される各フレームの撮影画像を閲覧可能な表示画面を設ける。そして、ユーザはこの表示画面に「原稿が静止した状態で写っている撮影画像」が写ったと判断した場合には、インターフェースを操作して撮影指示を入力する。CPU204はこの撮影指示の入力を検知すると、この時点で撮影装置102から取り込んだ撮影画像を以降の処理対象画像とする。
ステップS304では、CPU204は画像処理部105として機能し、ステップS303で処理対象画像とした撮影画像に対して、後述の処理のために前処理を行う。具体的には、この撮影画像をグレースケール画像に変換してから公知のエッジの強調処理を行う。公知のエッジ強調手法には、SobelやLaplacianフィルタといった手法が存在する。
ステップS305では、CPU204は画像処理部105として機能し、ステップS304でエッジ強調された画像から、ハフ変換や最小近似法などの公知の手法により線分群(エッジ線群)を抽出する。なお、本実施形態では、数学上の用語に基づき、両端を持つ直線を線分、持たないものを直線と呼ぶ。同じ説明番号を与えた線分を直線と説明する時は、該線分を含む、つまり該線分と傾き及び切片を共有する直線の事を指す。
ステップS306では、CPU204は、変数Nの値が1であるか否かを判断する。今判断の結果、N=1であれば、CPU204は「処理対象画像には原稿の表紙ページ(1ページ分の原稿)が写っている」と判断し、処理はステップS307に進む。一方、N≠1であれば、CPU204は「処理対象画像には1枚以上めくった後の状態における原稿が写っている」と判断し、処理はステップS312に進む。
ステップS307では、CPU204は原稿判定部106として機能し、処理対象画像中における原稿領域の枠を推定する。公知の原稿枠推定手法は、特開2012−14430号公報に開示されているように、線分を縦方向、横方向に分類し、原稿四辺の組み合わせ候補を求め、背景と原稿の輝度差が一定であることを利用して画像中の原稿四辺を推定する方法がある。
ステップS308では、CPU204は原稿判定部106として機能し、ステップS307で推定した枠を示す情報(例えば枠の4隅の画像上における画像座標)を、撮影画像内における1ページ目の原稿の枠の情報として、メモリ205に格納する。
ステップS309では、CPU204は画像処理部105として機能し、ステップS307で推定した枠内の画像を抽出し、該抽出した画像を、1ページ目の原稿のスキャン画像としてメモリ205に格納する。
ステップS310ではCPU204は原稿判定部106として機能し、ステップS307で推定した枠内の領域を規定する情報(例えば枠の4隅の画像上における画像座標)を基準原稿位置としてメモリ205に格納する。
本実施形態では、原稿を綴じた状態、つまり原稿束の表紙が撮影されている状態を基準原稿と呼ぶこととする。その状態から原稿をめくった裏の位置、つまり表紙を1ページ目と数えると偶数ページとなる原稿を裏面原稿と呼ぶこととする。
ステップS311ではCPU204は、変数Nの値を1つインクリメントする。そして処理はステップS317に進む。一方、ステップS312では、CPU204は、原稿判定部106として機能する。そしてCPU204は、処理対象画像から、綴じられた原稿を開いた状態の2枚の原稿のそれぞれの領域を特定し、特定したそれぞれの領域内の画像をNページ目のスキャン画像、(N+1)ページ目のスキャン画像、としてメモリ205に格納する。しかし、処理対象画像に最終ページのみが写っている場合もあり、このときは処理対象画像から最終ページの領域を特定し、特定した領域内の画像をNページ目のスキャン画像としてメモリ205に格納する。ステップS312における処理の詳細については、図4のフローチャートを用いて後述する。
ステップS313では、CPU204は原稿判定部106として機能し、ステップS312で得られた原稿が1枚かどうかを判定する。1枚であれば処理はステップS320に進み、1枚でなければ処理はステップS314に進む。
ステップS314では、CPU204は原稿判定部106として機能し、メモリ205に格納されている基準原稿位置を、ステップS312で求めた基準原稿位置に更新する。
ステップS315では、CPU204は原稿判定部106として機能し、メモリ205にまだ裏面原稿位置が格納されていない場合には、ステップS312で求めた裏面原稿位置をメモリ205に格納する。一方、すでにメモリ205に裏面原稿位置が格納されている場合には、このすでに格納されている裏面原稿位置を、ステップS312で求めた裏面原稿位置に更新する。
ステップS316ではCPU204は、変数Nの値を2つインクリメントする。ステップS317では、CPU204は画像処理部105として機能し、メモリ205にスキャン画像として格納した画像(すなわち不等辺四角形領域)を、元の長方形領域の画像へと補正する演算、いわゆる逆透視変換演算(台形ひずみ補正)を行う。用いられる変換行列のパラメータについては、特開2003−288588号公報に開示されているように、逆透視変換の演算式に4頂点の座標を与える事で、得られる連立方程式を解くことにより抽出できる。
ステップS318ではCPU204は画像処理部105として機能し、ステップS317で得られた補正済みスキャン画像について原稿方向を判別する。方向判別処理の手法は公知の技術であり、これについては本実施形態にとって本質ではない。そのため、詳細な説明は省略するが、画像を0°、90°、180°、270°のそれぞれに回転させた状態で計4方向にいくつかの文字を公知の文字認識手法により文字認識し、その際の認識スコアが最も高い方向を正しい方向と判断する方法が一般的である。
ステップS319ではCPU204は画像処理部105として機能し、ステップS318で判断した原稿方向が規定の方向となるように、ステップS317で得られた補正済みスキャン画像を回転させる。これにより、原稿方向が規定の方向となるスキャン画像を得ることができる。そしてCPU204はこの回転済みのスキャン画像をメモリ205に格納する。
一方、ステップS320では、CPU204は画像処理部105として機能し、ステップS317と同様にして、メモリ205にスキャン画像として格納した画像に対して上記の台形ひずみ補正を行う。
ステップS321ではCPU204は画像処理部105として機能し、ステップS318と同様にして、ステップS320で得られた補正済みスキャン画像について原稿方向を判別する。
ステップS322ではCPU204は画像処理部105として機能し、ステップS319と同様にして、ステップS321で判断した原稿方向が規定の方向となるように、ステップS320で得られた補正済みスキャン画像を回転させる。そしてCPU204はこの回転済みのスキャン画像をメモリ205に格納する。
ステップS323ではCPU204は電子文書生成部108として機能し、ここまでの処理で得られた各ページのスキャン画像を表裏の関係を反映して1つの電子文書データへと変換する。
ステップS324ではCPU204は電子文書生成部108として機能し、ステップS323で生成した電子文書データをメモリ205若しくはハードディスク203に保存する。本実施形態では、電子文書とは画像や文字、図形といったレイアウト情報をページデータとして、複数のページを持つファイルフォーマットを指す。
次に、上記のステップS312における処理の詳細について、図4のフローチャートを用いて説明する。ステップS401では、CPU204はステップS310で格納した若しくはステップS314で更新した基準原稿位置をメモリ205から読み出す。
ステップS402では、CPU204は、ステップS401で読み出した基準原稿位置を用いて、処理対象画像中における原稿領域の枠を推定する。本ステップにおける処理の詳細については、以下で具体例を挙げ、そこで説明する。
ステップS403では、CPU204は、ステップS402で原稿領域の枠の推定に成功したか否かを判断する。この判断結果、成功した場合には、処理はステップS404に進み、成功していない場合には、処理はステップS406に進む。
ステップS404では、CPU204は、ステップS402で推定した枠を示す情報(例えば枠の4隅の画像上における画像座標)を、処理対象画像内における(N+1)ページ目の原稿の枠の情報として、メモリ205に格納する。
ステップS405では、CPU204は、ステップS402で推定した枠内の画像を抽出し、該抽出した画像を、(N+1)ページ目の原稿のスキャン画像としてメモリ205に格納する。
ステップS406では、CPU204は、裏面原稿位置がメモリ205に格納されているか否かを判断する。この判断の結果、格納されていれば、処理はステップS407に進み、格納されていない場合には、処理はステップS408に進む。
ステップS407では、CPU204は、メモリ205に格納されている裏面原稿位置を用いて、処理対象画像中におけるもう1つの原稿領域(めくった裏面のページ)の枠を推定する。
一方、ステップS408では、CPU204は、ステップS404でメモリ205に格納された(N+1)ページ目の原稿の枠を示す情報を用いて、処理対象画像中におけるもう1つの原稿領域(めくった裏面のページ)の枠を推定する。ステップS407及びS408における処理の詳細については、以下で具体例を挙げ、そこで説明する。
ステップS409では、CPU204は、ステップS407若しくはステップS4082で推定した枠を示す情報(例えば枠の4隅の画像上における画像座標)を、処理対象画像内におけるNページ目の原稿の枠の情報として、メモリ205に格納する。
ステップS410では、CPU204は、ステップS407若しくはステップS4082で推定した枠内の画像を抽出し、該抽出した画像を、Nページ目の原稿のスキャン画像としてメモリ205に格納する。
次に、図3,4を用いて説明した各処理を、具体例を挙げて説明する。以下の具体例では、左上をステープラで綴じられた2枚の原稿の表紙(1ページ目)、2ページ目(表紙の裏面)、3ページ目(2枚目の原稿)、4ページ目(3ページ目の裏面)のそれぞれのスキャン画像を取得するケースを例にとる。そして以下の説明では、ステップS304で最初に処理対象とする撮影画像は図5(a)に示す如く、このような原稿の表紙を上向きにして原稿台に載置して撮影された画像である。ステップS304で2回目に処理対象とする撮影画像は図5(b)に示す如く、図5(a)に示した状態から原稿を1枚めくり、2ページ目及び3ページ目が見開きのページとして開かれた状態で撮影された画像である。ステップS304で3回目に処理対象とする撮影画像は図5(c)に示す如く、図5(b)に示した状態から原稿を1枚めくり、最終ページである4ページ目が撮影された画像である。
先ずステップS301では変数Nが1に初期化され、ステップS302で図5(a)の状態における原稿が撮影される。これにより図5(a)に示すような撮影画像が得られるので、ステップS304、S305では、図5の(a)に示した撮影画像に対して前処理及びハフ変換を行う。ハフ変換の結果、図6(a)に示すような画像が得られたとし、線分(エッジ線)601、602、603、604が抽出された、とする。
ステップS306では、N=1であるので、1ページ目、すなわち表紙のみ1ページの原稿であると判断し、処理はステップS307に進む。ステップS307では、図5(a)に示した撮影画像中の原稿の枠(線分を四辺とした四角形)を抽出する。特許文献2に記載の方法では、画像中の直線の傾きから、縦方向成分と横方向成分に分類する。縦方向の線分として線分601、603、横方向の線分として線分602、604が分類される。そして、縦方向の2線分と横方向の2線分を組み合わせ(実際にはこの4線分を延長した4直線を組み合わせる)、四角形を形成する。図6(b)に直線により構成される四角形の例を示す。この場合、縦方向の線分601、603、横方向の線分602、604から形成される四角形605(斜線部分)のみが組み合わせとして得られるので、四角形605を原稿領域(原稿四角形)とする。縦線と横線から得られる四角形の組み合わせが複数ある場合は、本実施形態では四角形の面積が最大となる組み合わせを原稿四角形として推定する。
ステップS308では、四角形605を規定する情報を原稿枠としてメモリ205に格納する。ステップS309では、撮影画像において四角形605内の画像、即ち、撮影画像において原稿の表紙が写っている領域の画像を抽出し、該抽出した画像を、1ページ目の原稿のスキャン画像としてメモリ205に格納する。ステップS310では、四角形605を規定する情報を基準原稿位置としてメモリ205に格納する。ステップS311では、変数Nの値を1つインクリメントする。
ステップS317では、ステップS309でメモリ205に格納した画像、即ち、撮影画像において原稿の表紙が写っている領域の画像に対して上記の逆透視変換演算(台形ひずみ補正)を行う。これにより、撮影画像において四角形605内の画像は図10(a)に示す如く、長方形の画像1001に変換される。なお、この変換用の行列は、原稿に対する撮影装置102の位置と焦点距離、光軸方向がわかれば固定できるので、撮影装置102の位置が固定であれば、予めこの変換用の行列を求めておいても良い。
ステップS318では、ステップS317で得られた補正済みスキャン画像について原稿方向を判別する。ここでは時計回りに0度回転、つまり無回転が正しい方向として判定されたとする。ステップS319では、補正済みスキャン画像に回転をかけずに該補正済みスキャン画像を、1ページ目の原稿のスキャン画像としてメモリ205に格納する。
ここまでで原稿における表紙(1ページ目)のスキャン画像が得られたので、ユーザはその後、原稿の表紙をめくり、図5(b)に示す如く、2ページ目と3ページ目とを見開きの状態にする。そして、ステップS303において現フレームの撮影画像中に原稿が静止した状態で写っている(表紙を開く作業が完了している)と判断されれば、処理はステップS304に進む。
ステップS304、S305では、ステップS302で得られた撮影画像(図5(b))に対して前処理及びハフ変換を行う。ハフ変換の結果、図7(a)に示すような画像が得られたとし、線分(エッジ線)701〜717が抽出された、とする。
ステップS306ではN=2であるので、処理はステップS312に進む。ステップS312では、図5(b)の撮影画像からNページ目の画像及び(N+1)目の画像を抽出する。ステップS312では上記の如く、図4のステップS401〜S410の処理を実行する。
ステップS401では、ステップS310で格納した基準原稿位置(四角形605を規定する情報であり、表紙の枠を規定する情報)をメモリ205から読み出す。
ステップS402では、ステップS401で読み出した基準原稿位置を用いて、処理対象画像中における3ページ目の原稿領域の枠を推定する。具体的には、図7(b)に示す如く、基準原稿位置が規定する枠の4辺のそれぞれからの距離閾値T以下の領域720の範囲から線分を選択する。4線分が領域720内に存在しなければ、Tの値を徐々に大きくしながら近傍範囲を4線分が見つかるまで広げる。閾値Tはたとえば基準原稿位置が規定する枠の短辺の長さの1%を初期値として、1%刻みで広げるなどすればよい。ここでは、線分709、710、711、717の4線分が領域720の内側に見つかったため、これら4線分を含む直線4つを四辺として組み合わせて求められる不等辺四角形721(図7(c))が、3ページ目の原稿領域の枠として推定される。なお、このように領域720を用いて4線分を見つける方法は一例であり、各線分の基準原稿各辺に対する位置の近傍度合いを計算して、得点の高いものから順に組み合わせるなどの方法を用いても良い。
ステップS403では、ステップS402で原稿領域の枠の推定に成功したので、処理はステップS404に進む。
ステップS404では、3ページ目の原稿領域の枠を示す情報(例えば枠の4隅の画像上における画像座標)を、メモリ205に格納する。
ステップS405では、ステップS402で推定した原稿領域の枠(四角形605)内の画像(3ページ目の原稿領域の枠内の画像)を抽出し、該抽出した画像を、3ページ目の原稿のスキャン画像としてメモリ205に格納する。
ステップS406では、N=2の時点ではまだ裏面原稿位置はメモリ205に格納されていないので、処理はステップS408に進む。
ステップS408では、ステップS404でメモリ205に格納された3ページ目の原稿の枠を示す情報を用いて、2ページ目の原稿領域の枠を推定する。ステップS408における原稿領域の枠の推定方法について、図8を用いて説明する。
まず、検出した線分を含む直線から、3ページ目の原稿領域の内角801、802、803、804を通る2直線を探索する。綴じられた位置によって、角は完全に重ならないため、角から半径Rまでの距離を許容する。見つからない場合は、徐々に半径Rを広げていく。半径Rはたとえば、基準原稿の短辺の長さの1%とし、1%刻みで広げていけばよい。この結果、702、708の2直線が4辺中の2辺の候補として見つけられた。また、本探索方は一例であって、直線と角との最短距離をスコアとして近い順に組み合わせを絞り込んで行くなどの方法でもよい。次に、その2辺に挟まれる領域810から残る2辺候補となる線分とあわせて、原稿領域を推定する。領域810の中では、前述の公知の原稿推定技術により、原稿枠を推定すればよい。領域810の中には線分701、702、703、704、705、706、707、708の8線分が含まれ、この中から702、708を2辺として含む不等辺四角形の組み合わせから、原稿領域を推測する。ここでは面積が最大になる四辺を原稿領域の枠として推測する手法を用いる。まず、6線分から2線分を組み合わせる15通りが、原稿領域の枠候補の全てである。その中で、不等辺四角形の四辺に線分を含むものは、701、705の組み合わせと、701、708の組み合わせと、703、706の組み合わせの3通りである。面積最大のものとして、701、705の組み合わせより作られる図8(c)の不等辺四角形820が原稿領域の枠として推定された。
ステップS409では、不等辺四角形820(2ページ目の原稿領域の枠)を示す情報(例えば枠の4隅の画像上における画像座標)を、処理対象画像内における2ページ目の原稿の枠の情報として、メモリ205に格納する。
ステップS410では、CPU204は、不等辺四角形820内の画像を抽出し、該抽出した画像を、2ページ目の原稿のスキャン画像としてメモリ205に格納する。
図3に戻って、次に、ステップS313では、2ページ目と3ページ目とを検出したので、処理はステップS314に進む。ステップS314では、基準原稿位置を不等辺四角形721(3ページ目の原稿領域の枠)に更新する。ステップS315では、裏面原稿位置を不等辺四角形820(2ページ目の原稿領域の枠)に更新する。ステップS316では変数Nの値が2つインクリメントされる。これによりN=4となる。
ステップS317では、2ページ目のスキャン画像及び3ページ目のスキャン画像に対して上記の逆透視変換演算(台形ひずみ補正)を行うことで、それぞれのスキャン画像は図10(b)の画像1002、図10(c)の画像1003に変換される。
ステップS318では、画像1002については時計回りに270度回転が正しい方向として判定され、画像1003については時計回りに0度回転が正しいと判定される。ステップS319では、画像1002については反時計回りに270度回転させてから、回転後の画像を2ページ目の原稿のスキャン画像としてメモリ205に格納する。また、ステップS319では、画像1003については回転をかけずに、これを3ページ目のスキャン画像としてメモリ205に格納する。
ここまでで原稿における2ページ目及び3ページ目のスキャン画像が得られたので、ユーザはその後、2枚目の原稿をめくり、図5(c)に示す如く、最終ページが上向きに原稿台上に載置されている状態にする。そして、ステップS303において現フレームの撮影画像中に原稿が静止した状態で写っている(2枚目の原稿をめくる作業が完了している)と判断されれば、処理はステップS304に進む。
ステップS304、S305では、ステップS302で得られた撮影画像(図5(c))に対して前処理及びハフ変換を行う。ハフ変換の結果、図9(a)に示す如く、線分(エッジ線)901〜904が抽出された、とする。
ステップS306ではN=4であるので、処理はステップS312に進む。ステップS312では、図5(c)の撮影画像からNページ目の画像を抽出する。ステップS312では上記の如く、図4のステップS401〜S410の処理を実行する。
ステップS401では、ステップS314で更新した基準原稿位置(不等辺四角形721の枠を規定する情報)をメモリ205から読み出す。
ステップS402では、ステップS401で読み出した基準原稿位置を用いて、処理対象画像中における4ページ目の原稿領域の枠を推定する。図9(a)に示す如く、基準原稿位置が規定する枠の4辺のそれぞれからの距離閾値T以下の領域910内には4線分が存在しないので、原稿領域の枠の推定はできない。
ステップS403では、ステップS402で原稿領域の枠の推定に成功していないので、処理はステップS406に進む。ステップS406では、裏面原稿位置はメモリ205に格納されているので、処理はステップS407に進む。
ステップS407では、裏面原稿位置を用いて、処理対象画像中における4ページ目の原稿領域の枠を推定する。推定方法はステップS402と同様の方法を用いればよい。図9(b)に示す如く、裏面原稿位置が規定する枠の4辺のそれぞれからの距離閾値T以下の領域920の範囲から4線分901〜904を選択する。そしてこれら4線分を含む直線4つを四辺として組み合わせて求められる不等辺四角形930(図9(c))が、4ページ目の原稿領域の枠として推定される。
ステップS409では、不等辺四角形930(4ページ目の原稿領域の枠)を示す情報(例えば枠の4隅の画像上における画像座標)を、処理対象画像内における4ページ目の原稿の枠の情報として、メモリ205に格納する。
ステップS410では、不等辺四角形930(4ページ目の原稿領域の枠)内の画像を抽出し、該抽出した画像を、4ページ目の原稿のスキャン画像としてメモリ205に格納する。
図3に戻って、次に、ステップS313では、4ページ目のみを検出したので、処理はステップS320に進む。ステップS320では、ステップS317と同様にして、メモリ205にスキャン画像として格納した「4ページ目の原稿のスキャン画像」に対して上記の台形ひずみ補正を行い、これにより図10(d)に示すような補正済みスキャン画像1004を得る。
ステップS321では、ステップS318と同様にして、ステップS320で得られた補正済みスキャン画像1004について原稿方向を判別する。その結果、時計回りに270度回転すれば良いと判断したので、ステップS322では、補正済みスキャン画像1004を時計回りに270度回転させ、回転済みのスキャン画像をメモリ205に格納する。
ステップS323では、ここまでの処理で得られた4ページ分のスキャン画像を、1ページ目のスキャン画像、2ページ目のスキャン画像、3ページ目のスキャン画像、4ページ目のスキャン画像、の順に並べた1つの電子文書データへと変換する。ステップS324では、ステップS323で生成した電子文書データをメモリ205若しくはハードディスク203に保存する。
このようにして得られた4ページ分のスキャン画像を投影装置103を用いて適当な面に投影した例を図11に示す。投影画面において領域1101には上記の処理により得られた4ページ分のスキャン画像のそれぞれのサムネイル画像が一覧表示されている。この4ページ分のスキャン画像のうちユーザが不図示の操作部を用いて選択したスキャン画像は領域1102に拡大表示され、ユーザはこのスキャン画像を閲覧したり、上記操作部を操作して適宜編集したりすることができる。表示方法や表示形態については図11に示した表示方法、表示形態に限るものではない。
このように、本実施形態によれば、ステープラなどで綴じられた原稿を原稿台上に置き、ページをめくる操作のみで容易に該原稿を電子文書として取り込むことができる。
なお、本実施形態では具体的な例を挙げてその処理の流れを説明したが、これは以下に説明する基本構成の一例に過ぎない。基本構成によれば、原稿台上に載置された複数枚綴りの原稿を撮像するために設けられた撮像部が、1枚の原稿がめくられる度に撮像した該原稿の撮像画像を取得する。ここで、撮像部がp(pは2以上の自然数)回目に撮像した撮像画像を撮像画像pとする。このとき、撮像画像pに対し、撮像画像(p−1)から特定されている(2p−3)ページ目の原稿領域と同位置に領域を設定し、該設定した領域から(2p−1)ページ目の原稿領域を特定する。更に、該特定した原稿領域内の画像を(2p−1)ページ目の原稿画像として取得する(第1の取得)。
そして、撮像画像(p−1)から(2p−4)ページ目の原稿領域が特定されていない場合には、撮像画像p中の(2p−1)ページ目の原稿領域から撮像画像p中における(2p−2)ページ目の原稿領域を特定する(第1の特定)。
一方、撮像画像(p−1)から(2p−4)ページ目の原稿領域が特定されている場合には、撮像画像pに対し、(2p−4)ページ目の原稿領域と同位置に領域を設定し、該設定した領域から(2p−2)ページ目の原稿領域を特定する(第2の特定)。
そして、第1の特定若しくは第2の特定により特定された(2p−2)ページ目の原稿領域内の画像を(2p−2)ページ目の画像として取得する(第2の取得)。然るに、このような基本構成に帰着する若しくはこれと同等の構成であれば、様々な変形例が考え得る。
[第2の実施形態]
第1の実施形態では、原稿束の各原稿サイズが全て同一として処理されるが、前後ページで差分比較することで、原稿束中に異なるサイズの原稿が混在していても処理が可能となる。以下では、第1の実施形態との差分のみについて説明し、以下で特に触れない限りは第1の実施形態と同様であるものとする。然るに、本実施形態でも、図1,2に示したシステムを利用する。
本実施形態でも制御装置101は図3のフローチャートに従った処理を実行するのであるが、ステップS312では、図4のフローチャートに従った処理の代わりに、図12のフローチャートに従った処理を実行する。
なお、図12において、ステップS1201、S1202、S1208、S1210、S1211、S1216はそれぞれ、ステップS401、S402、S405、S408、S407、S410と同様の処理である。そのためステップS1201、S1202、S1208、S1210、S1211、S1216のそれぞれに係る説明は省略する。
ステップS1203では、CPU204は原稿判定部106として機能し、基準原稿位置で原稿枠が抽出されたか否かを判定し、抽出されていれば処理はステップS1204に進み、抽出されていなければ処理はステップS1209に進む。
ステップS1204では、CPU204は画像処理部105として機能し、ステップS1203で抽出された原稿枠内の画像に対し、差分比較のために逆透視変換による歪み補正を行う。台形補正を行った画像については、後段のステップS317では補正をする必要はない。
ステップS1205ではCPU204は画像処理部105として機能し、ステップS1204で歪み補正処理を行った画像と、2ページ前のスキャン画像と、の差分を求め、それぞれの画像において一致する領域、一致しない領域を特定する。他には、公知の文書解析技術により、画像領域、文字領域、図形領域などの前景を抽出し、各オブジェクトの位置形状から2つの画像間で一致領域、不一致領域の判断をしてもよい。公知の画像解析技術としては、例えば、USP5680478に開示されている方法がある。
ステップS1206では、CPU204は原稿判定部106として機能し、ステップS1205で得られた差分から、2つの画像間で一致する部分(一致領域)があったか否かを判断する。この判断の結果、一致領域があった場合には、処理はステップS1207に進み、一致領域がなかった場合には、処理はステップS1208に進む。
ステップS1207では、CPU204は原稿判定部106として機能し、上記2ページ前のスキャン画像から一致領域を取り除いた残りの領域の画像を、新たな「2ページ前のスキャン画像」としてメモリ205に格納する。
ステップS1209では、CPU204はメモリ205に裏面原稿位置が既に格納されているか否かを判断する。この判断の結果、格納されている場合には、処理はステップS1211に進み、格納されていない場合には、処理はステップS1210に進む。
ステップS1212では、CPU204は画像処理部105として機能し、裏面原稿位置に基づいて得られるNページ目のスキャン画像に対し、差分比較のために逆透視変換による歪み補正を行う。台形補正を行った画像については、後段のステップS317では補正をする必要はない。
ステップS1213では、CPU204は画像処理部105として機能し、ステップS1212で歪み補正処理を行った画像と、2ページ前のスキャン画像と、の差分を求め、それぞれの画像において一致する領域、一致しない領域を特定する。
ステップS1214では、CPU204は原稿判定部106として機能し、ステップS1213で得られた差分から、2つの画像間で一致する部分(一致領域)があったか否かを判断する。この判断の結果、一致領域があった場合には、処理はステップS1215に進み、一致領域がなかった場合には、処理はステップS1216に進む。
ステップS1215では、CPU204は原稿判定部106として機能し、ステップS1212で歪み補正処理を行った画像から一致領域を取り除いた残りの領域の画像をメモリ205に格納する。
以下では、具体例を挙げて、図3,12のフローチャートに従った処理を説明する。先ず最初に図5(a)の撮影画像が得られ、次に2枚目の撮影画像として、2ページ目と該2ページ目よりもサイズが小さい3ページ目とが開いている状態で撮影された撮影画像(図13(a))が得られたとする。そして次に、3枚目の撮影画像として、3ページ目の裏面である4ページ目と該4ページ目よりもサイズが大きい5ページ目とが開いている状態で撮影された撮影画像(図13(b))が得られたとする。そして最後に4枚目の撮影画像として、図5(c)の撮影画像が得られたとする。このようにして4枚の撮影画像がこの順で得られた場合における、図3,12のフローチャートに従った処理について説明する。
先ずステップS301では変数Nが1に初期化され、ステップS302では図5(a)に示した撮影画像が得られる。N=1の場合における処理(S303〜S311,S317〜S319)は第1の実施形態で説明した通りである。然るにN=1の場合における処理(S303〜S311,S317〜S319)が完了した時点で、基準原稿位置として図6(b)の四角形605が得られ、1ページ目のスキャン画像として図10(a)の画像1001が得られる。
N=2の時に、ステップS302で得られた撮影画像が図13(a)に示した画像である。その後、この画像に対してステップS304,S305の処理を行うと、図14(a)に示す如く、線分(エッジ線)1401〜1410が得られる。そしてN=2であるので、処理はステップS306を介してステップS312に進む。ステップS312では図12のフローチャートに従った処理を行う。
ステップS1201,S1202により、基準原稿位置(四角形605の枠)を用いて、図13(a)に示した撮影画像から原稿領域の枠を推定する。その結果、図14(b)に示す如く、領域1411の枠が原稿領域の枠として得られる。原稿領域の枠が得られたので、処理はステップS1203を介してステップS1204に進む。ステップS1204ではこの原稿領域の枠内の画像を抽出し、抽出した画像に対して上記の逆透視変換を行うことで、図16(a)に示す画像を得る。
ステップS1205では、図16(a)の画像と図10(a)の画像とで対応する画素位置間のRGB値の差を求める。そして、求めた差が閾値以上となる画素位置が占める領域(不一致領域)、求めた差が閾値未満となる画素位置が占める領域(一致領域)を特定する。ここではそれぞれの画像で一致領域がないので、処理はステップS1206を介してステップS1208に進む。
ステップS1208では、図16(a)の画像を(N+1)ページ目(3ページ目)のスキャン画像としてメモリ205に格納する。そして、裏面原稿位置はまだメモリ205に格納されていないため、処理はステップS1209を介してステップS1210に進む。
ステップS1210では、図14(b)の領域1411の角部を通る直線を検出し、その間の領域から原稿領域の枠を推定し、これにより、図14(c)に示す領域1412の枠が原稿領域の枠として得られる。
ステップS1216では、領域1412内の画像を抽出する。そして抽出した画像をNページ目(2ページ目)のスキャン画像としてメモリ205に格納する。
図3に戻って、検出した原稿は2枚であるため、処理はステップS313を介してステップS314に進む。ステップS314では、領域1411の枠を示す情報を(N+1)ページ目(3ページ目)の基準原稿位置としてメモリ205に格納することで、メモリ205内の基準原稿位置を更新する。ステップS315では、メモリ205に、領域1412の枠を示す情報をNページ目(2ページ目)の裏面原稿位置としてメモリ205に格納する。そしてステップS316では変数Nの値を2つインクリメントするので、N=4となる。
ステップS317では、ステップS1216でメモリ205に格納した2ページ目のスキャン画像に対して逆透視変換を行うことにより、図16(b)に示す画像が得られる。3ページ目については既にステップS1204で補正されているため、ステップS317における処理対象外とする。ステップS318では、補正した2ページ目のスキャン画像に対して方向判別を行い、0度回転が正しい方向と判別された。3ページ目のスキャン画像に対しても同様に方向判別を行う。ステップS319では、方向判別結果に応じてそれぞれの画像を適宜回転させ、これにより3ページ目の最終的なスキャン画像として図16(a)の画像、2ページ目の最終的なスキャン画像として図16(b)の画像、がメモリ205に登録されることになる。
N=4の時に、ステップS302で得られた撮影画像が図13(b)に示した画像である。その後、この画像に対してステップS304,S305の処理を行うと、図15(a)に示す如く、線分(エッジ線)1501〜1510が得られる。そしてN=4であるので、処理はステップS306を介してステップS312に進む。ステップS312では図12のフローチャートに従った処理を行う。
ステップS1201,S1202により、基準原稿位置が示す領域1411の枠を用いて、図13(b)に示した撮影画像から原稿領域の枠を推定する。その結果、図15(b)に示す如く、領域1511の枠が原稿領域の枠として得られる。原稿領域の枠が得られたので、処理はステップS1203を介してステップS1204に進む。
ステップS1204ではこの原稿領域の枠内の画像を抽出し、抽出した画像に対して上記の逆透視変換を行うことで、図16(c)に示す画像を得る。
ステップS1205では、図16(c)の画像と図16(a)の画像とで対応する画素位置間のRGB値の差を求める。そして、求めた差が閾値以上となる画素位置が占める領域(不一致領域)、求めた差が閾値未満となる画素位置が占める領域(一致領域)を特定する。ここでは図17(a)に示す如く、図16(a)の画像に対し、一致領域として領域1701、不一致領域として領域1702、が特定される。然るに処理はステップS1206を介してステップS1207に進む。
ステップS1207では、図16(a)の画像から一致領域を取り除いた残りの領域の画像(図16(e))を生成し、すでにメモリ205に3ページ目のスキャン画像として格納した画像を、この生成した画像に置き換える。
ステップS1208では、図16(c)の画像を(N+1)ページ目(5ページ目)のスキャン画像としてメモリ205に格納する。そして、裏面原稿位置はすでにメモリ205に格納されているため、処理はステップS1209を介してステップS1211に進む。
ステップS1211では、裏面原稿位置が示す領域1412の枠を用いて、図13(b)に示した撮影画像から原稿領域の枠を推定する。その結果、図15(c)に示す如く、領域1512の枠が原稿領域の枠として得られる。ステップS1212ではこの原稿領域の枠内の画像を抽出し、抽出した画像に対して上記の逆透視変換を行うことで、図16(d)に示す画像を得る。
ステップS1213では、図16(d)の画像と図16(b)の画像とで対応する画素位置間のRGB値の差を求める。そして、求めた差が閾値以上となる画素位置が占める領域(不一致領域)、求めた差が閾値未満となる画素位置が占める領域(一致領域)を特定する。ここでは図17(b)に示す如く、図16(d)の画像に対し、一致領域として領域1703、不一致領域として領域1704、が特定される。然るに処理はステップS1214を介してステップS1215に進む。
ステップS1215では、図16(d)の画像から一致領域を取り除いた残りの領域の枠(図16(f)の画像の枠、即ち不一致領域の枠)を特定する。そしてステップS1216では、ステップS1215で特定した枠内の画像(図16(f))を抽出し、抽出した画像をNページ目(4ページ目)のスキャン画像としてメモリ205に格納する。
図3に戻って、検出した原稿は2枚であるため、処理はステップS313を介してステップS314に進む。ステップS314では、領域1511の枠を示す情報を(N+1)ページ目(5ページ目)の基準原稿位置としてメモリ205に格納することで、メモリ205内の基準原稿位置を更新する。ステップS315では、領域1512の枠を示す情報をNページ目(4ページ目)の裏面原稿位置としてメモリ205に格納する。そしてステップS316では変数Nの値を2つインクリメントするので、N=6となる。
4ページ分のスキャン画像、5ページ目のスキャン画像、は共に既に補正されているため、ステップS317における処理対象外とする。ステップS318では、それぞれのスキャン画像に対して方向判別を行う。ステップS319では、方向判別結果に応じてそれぞれの画像を適宜回転させる。これにより4ページ目の最終的なスキャン画像として図16(f)に示した画像が、5ページ目の最終的なスキャン画像として図16(c)に示した画像が、メモリ205に登録されることになる。
N=6の時に、ステップS302で得られた撮影画像が図5(c)に示した画像である。図12のフローチャートのステップS1212、S1213では、図10(d)の画像と図16(d)の画像とで上記の如く画素位置間でRGB値の差を求めて一致領域、不一致領域を特定し、その結果、一致領域はなかったと判断される。その他の処理は、第1の実施形態で説明したとおりであるので、これに係る説明は省略する。そして、6ページ目のスキャン画像として、図10(d)の画像を時計回りに270度回転した画像がメモリ205に登録されることになる。ステップS324では、図10(a)、図16(b)、図16(e)、図16(f)、図16(c)、図10(d)を順にページとして構成した電子文書が生成される。
このように、本実施形態によれば、ページサイズの違う原稿も同様に簡単に電子文書化することが可能となる。なお、第1の実施形態と第2の実施形態は適宜切り替えて使用しても構わない。例えばユーザが不図示の操作部を用いて第1の実施形態で説明した電子文書生成処理、第2の実施形態で説明した電子文書生成処理、の何れかを選択して実行するようにしても構わない。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。