A.第1実施例:
A−1:画像処理システム1000の構成
図1は、画像処理システムの構成を示すブロック図である。画像処理システム1000は、画像処理装置としてのサーバ400と、複合機200と、を備えている。サーバ400は、インターネット70に接続されており、複合機200は、LAN(Local Area Networkの略称)80を介して、インターネット70に接続されている。この結果、サーバ400と複合機200は、LAN80とインターネット70とを介して、通信可能である。また、LAN80には、複合機200のユーザのパーソナルコンピュータ500が接続されていても良い。
サーバ400は、サーバ400のコントローラの一例としてのCPU410と、DRAMなどの揮発性記憶装置420と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置430と、インターネット70などのネットワークに接続するためのインタフェースを含む通信部480と、を備えている。揮発性記憶装置420には、CPU410が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域421が設けられている。不揮発性記憶装置430には、コンピュータプログラム431と、UIデータ群433と、が格納されている。
コンピュータプログラム431、および、UIデータ群433は、例えば、サーバ400の管理者によって、インターネット70を介してサーバ400にアップロードされることにより、サーバ400にインストールされる。または、コンピュータプログラム431、および、UIデータ群433は、例えば、DVD−ROMなどに格納された形態で提供され、サーバ400の管理者によって、サーバ400にインストールされても良い。CPU410は、コンピュータプログラム431を実行することにより、後述する画像処理を実現する。
複合機200は、複合機200のコントローラの一例としてのCPU210と、DRAMなどの揮発性記憶装置220と、フラッシュメモリやハードディスクドライブなどの不揮発性記憶装置230と、プリンタ部240と、スキャナ部250と、タッチパネルやボタンなどの操作部260と、液晶ディスプレイなどの表示部270と、外部機器と通信を行う通信部280と、を備えている。例えば、通信部280は、LAN80などのネットワークに接続するためのインタフェースや、USBメモリなどの外部記憶装置と接続するためのインタフェースを含んでいる。
揮発性記憶装置220には、CPU210が処理を行う際に生成される種々のデータを一時的に格納するバッファ領域221が設けられている。不揮発性記憶装置230には、制御プログラム231が格納されている。制御プログラム231は、プリンタ100の製造時に不揮発性記憶装置230に予め格納されて提供され得る。これに代えて、制御プログラム231は、例えば、インターネットを介して接続されたサーバからダウンロードされる形態、あるいは、CD−ROMなどに記録された形態で提供され得る。
プリンタ部240は、インクジェット方式やレーザー方式などの印刷方式を用いて印刷を実行する。スキャナ部250は、CCDやCMOSなどの光電変換素子を用いて光学的に原稿を読み取ることによってカラー画像やグレー画像を表すスキャンデータを生成する。スキャナ部250は、いわゆるフラットベッド式の後述する原稿台255を備えている。
CPU210は、制御プログラム231を実行することにより、複合機200の制御を実行する。例えば、CPU210は、プリンタ部240やスキャナ部250を制御して、コピー処理、印刷処理、スキャン処理などを実行する。さらに、CPU210は、サーバ400にアクセスして、サーバ400が提供するサービスを利用することができる。
A−2:画像処理システム1000の動作
図2は、画像処理システム1000の動作を示すシーケンス図である。このシーケンス図の処理は、複合機200が、サーバ400が提供する画像生成サービスの利用指示を、ユーザから受け付けた場合に開始される。この画像生成サービスは、詳細は後述するが、複数個のスキャンデータによって表される複数個の画像が配置され、複数個の画像で1個の対象物(具体的には、後述する原稿10)を示す配置済画像を表す配置済画像データを生成するサービスである。複数個のスキャンデータは、詳細は後述するが、例えば、1回で読み取り可能なサイズより大きなサイズの原稿を、複数回に分けて読み取ることによって生成される。
処理が開始されると、S5では、複合機200のCPU210は、サービス開始要求を、サーバ400に対して送信する。サーバ400のCPU410は、サービス開始要求を受信すると、図1に示されるUIデータ群433から画像生成サービスの提供に必要なUIデータを選択し、S10にて、該UIデータを複合機200に対して送信する。UIデータは、具体的には、ユーザインタフェース画面(以下、UI画面とも呼ぶ)を表す画面データと、制御データと、を含む。この制御データは、例えば、UI画面を利用して複合機200が後述するS15のスキャン処理などの所定の処理を行うために必要な各種のデータを含む。例えば、制御データは、複合機200が実行すべき処理を行うために必要な情報、例えば、画像ファイルの送信先アドレスなどを含む。複合機200が実行すべき処理は、例えば、後述するS20にて画像ファイルをサーバ400へ送信する処理を含む。
S15では、CPU210は、受信したUIデータに基づいて、複数個のスキャンデータを生成するスキャン処理を実行する。スキャン処理では、CPU210は、ユーザが用意した原稿を2回に分けて読み取ることによって、2個のスキャンデータを生成する。本実施例のスキャンデータは、例えば、0〜255の256階調の値で表されるRGBの各成分の成分値を画素ごとに含むRGB画像データである。
図3は、原稿の一例を示す図である。この原稿10のサイズは、本実施例では、A3サイズである。線CLは、A3サイズの原稿10の長手方向の中央部に位置し、原稿10の短辺と平行な線である。左領域10Lは、原稿10の左側の半分の領域、すなわち、線CLより左側の領域である。右領域10Rは、原稿10の右側の半分の領域、すなわち、原稿10の線CLより右側の領域である。左領域10Lのサイズ、および、右領域10Rのサイズは、A4サイズである。なお、A3サイズ、および、A4サイズは、ISO(International Organization for Standardizationの略)216で定められている紙の寸法である。
図3の符号10L、10Rが付された矢印は、領域10L、10Rの位置と向きを示す。すなわち、これらの矢印が配置された位置、および、これらの矢印が示す向きに、これらの領域10L、10Rが配置されていることを意味している。後述する図4、図5では、領域10L、10R内の画像の図示を省略して、符号付きの矢印のみで、これらの領域10L、10Rの位置および向きを図示している。
図4は、スキャンパターンAの説明図である。スキャナ部250の原稿台255(図4(B)、図4(C))の長手方向の長さは、A4サイズの長手方向の長さである297mmより少しだけ(例えば、数センチ)長い。そして、原稿台の短手方向の長さは、ANSI/ASME(American National Standards Institute/American Society of Mechanical Engineersの略)Y14.1で定められている紙の寸法であるレターサイズの短手方向の長さである215.9mmより少しだけ(例えば、数センチ)長い。すなわち、本実施例では、1回で読み取ることができる原稿の最大サイズは、A4サイズより大きくA3サイズより小さいサイズである。このために、本実施例では、2回に分けてA3サイズの原稿10を読み取る。
本実施例のスキャン処理は、図4のスキャンパターンAと、後述する図6のスキャンパターンBのいずれかの方法で、2回の読み取りが実行されて、2個のスキャンデータが生成される。具体的には、後述する2個のスキャンパターンA、Bについて、図示しないマニュアルや表示部270に表示されるUI画面によって、事前にユーザに説明される。ユーザは、2個のスキャンパターンA、Bのいずれかに従って、スキャナ部250に原稿10の2回の読み取りを実行させる。
(スキャンパターンA)
スキャンパターンAでは、図4(A)に示すように、原稿10は、折れ線VLで二つ折りにされた状態で、スキャナ部250によって読み取られる。折れ線VLは、図4の線CLと同じ位置の線である。従って、二つ折りにされた状態の原稿10のサイズは、A4サイズである。二つ折りにされた状態の原稿10の一方の面には右領域10Rが位置し、他方の面には、左領域10Lが位置する。
1回目の読み取りでは、左領域10L内の画像を示す左側スキャンデータが生成される。具体的には、ユーザは、図4(B)に示すように、左領域10Lが原稿台255側を向き、右領域10Rが原稿台255の反対側を向くように、二つ折りにされた原稿10を原稿台255上に配置する。このとき、二つ折りにされた原稿10は、線VLが手前(図4(B)の下側)に位置し、かつ、当該原稿の左奥の頂点(図4(B)の左上の頂点)と原稿台255の左奥の頂点とが概ね一致するように、原稿台255上に配置される。ユーザが、読み取り指示を複合機200に入力すると、CPU210は、スキャナ部250を制御して左領域10Lを読み取ることによって、左側スキャンデータを生成する。
2回目の読み取りでは、右領域10R内の画像を示す右側スキャンデータが生成される。具体的には、ユーザは、図4(C)に示すように、右領域10Rが原稿台255側を向き、左領域10Lが原稿台255の反対側を向くように、二つ折りにされた原稿10を原稿台255上に配置する。このとき、二つ折りにされた原稿10は、線VLが手前(図4(C)の下側)に位置し、かつ、当該原稿の左奥の頂点(図4(C)の左上の頂点)と原稿台255の左奥の頂点とが概ね一致するように、原稿台255上に配置される。ユーザが、読み取り指示を複合機200に入力すると、CPU210は、スキャナ部250を制御して右領域10Rを読み取ることによって、右側スキャンデータを生成する。
図5は、スキャンパターンAで生成されるスキャン画像の一例を示す図である。図5(A)には、左側スキャンデータによって表される左側スキャン画像AL1と、右側スキャンデータによって表される右側スキャン画像AR1と、が示されている。左側スキャン画像AL1は、原稿10の左領域10Lを示す左側原稿画像AILと、余白WALと、を含んでいる。右側スキャン画像AR1は、原稿10の右領域10Rを示す右側原稿画像AIRと、余白WARと、を含んでいる。余白WAL、WARは、原稿台255を読み取った領域であるので、原稿台255の色を示す値(RGB値)有している。余白WAL、WARの色は、本実施例では、白色であるが、黒色であっても良いし、グレーであっても良い。余白WAL、WARは、スキャン画像AL1、AR1において、原稿画像AIL、AIRより外側の領域である。
ここで、スキャン画像AL1、AR1において、原稿画像AIL、AIRが傾いているのは、スキャンデータの生成時に、原稿台255に配置された原稿10が傾いていたためである。
スキャン画像AL1、AR1は、図4(B)、(C)の原稿台255の形状に対応する矩形を有している。スキャン画像AL1、AR1は、原稿台255の長辺に沿った方向を縦方向とし、原稿台255の図4(B)、(C)における左方向を上方向として、原稿台255上に配置された画像を表す。左領域10Lを読み取る際の原稿台255に対する原稿10の上方向(図4(B)の矢印の方向)と、右領域10Rを読み取る際の原稿台255に対する原稿10の上方向(図4(C)の矢印の方向)とは、逆向きになる。このために、左側スキャン画像AL1の左側原稿画像AILと、右側スキャン画像AR1の右側原稿画像AIRとは、上下方向が逆になっている。
なお、スキャンパターンAで生成される図5(A)のスキャン画像AL1、AR1には、原稿画像AIL、AIRの右端からスキャン画像AL1、AR1の右端までの間に、比較的広い余白WAL、WBLが存在することが解る。これは、図4(B)、(C)に示すように、折り曲げられた原稿10が原稿台255に配置された状態で、原稿台255の手前(図4(B)、(C)の下側)に、原稿10が配置されない領域255Uが存在するためである。
(スキャンパターンB)
図6は、スキャンパターンBの説明図である。スキャンパターンBでは、原稿10は、折り曲げられることなく、原稿台255に配置される。スキャンパターンBの1回目の読み取りでは、左領域10Lと、右領域10Rのうちの左領域10Lと接する部分領域CARと、を含む領域内の画像を示す左側スキャンデータが生成される。具体的には、ユーザは、図6(A)に示すように、原稿10の画像が配置された原稿面が原稿台255側を向き、かつ、原稿面の左領域10Lが奥側(図6(A)の上側)に、原稿面の右領域10Rが手前側(図6(A)の下側)に位置するように、原稿10を原稿台255上に配置する。ユーザが、読み取り指示を複合機200に入力すると、CPU210は、スキャナ部250を制御して、左領域10Lと部分領域CARと、を読み取ることによって、左側スキャンデータを生成する。
2回目の読み取りでは、右領域10Rと、左領域10Lのうちの右領域10Rと接する部分領域CALと、を含む領域内の画像を示す右側スキャンデータが生成される。具体的には、ユーザは、図6(B)に示すように、原稿10の画像が配置された原稿面が原稿台255側を向き、かつ、原稿面の右領域10Rが奥側(図6(B)の上側)に、原稿面の左領域10Lが手前側(図6(C)の下側)に位置するように、原稿10を原稿台255上に配置する。ユーザが、読み取り指示を複合機200に入力すると、CPU210は、スキャナ部250を制御して、右領域10Rと部分領域CALと、を読み取ることによって、右側スキャンデータを生成する。
なお、2回の読み取りのいずれにおいても、スキャンパターンAと同様に、原稿10の左奥の頂点と原稿台255の左奥の頂点とが概ね一致するように、原稿10が原稿台255上に配置される。
図7は、スキャンパターンBで生成されるスキャン画像の一例を示す図である。図7(A)には、左側スキャンデータによって表される左側スキャン画像BL1と、右側スキャンデータによって表される右側スキャン画像BR1と、が示されている。左側スキャン画像BL1は、原稿10の左領域10Lと部分領域CARとを示す左側原稿画像BILと、余白WBLと、を含んでいる。右側スキャン画像BR1は、右領域10Rと部分領域CALを示す右側原稿画像BIRと、余白WBRと、を含んでいる。これらの原稿画像BIL、BIRは、図3の原稿10の横方向の中央部CA(すなわち、上述した部分領域CAL、CARからなる領域)を表す画像CIL、CIRを、それぞれ、含んでいる。
スキャンパターンAのスキャン画像AL1、AR1(図5(A))と同様に、スキャンパターンBにおいても、左側スキャン画像BL1の左側原稿画像BILと、右側スキャン画像BR1の右側原稿画像BIRとは、上下方向が逆になっている。
なお、スキャンパターンBで生成される図7(A)のスキャン画像BL1、BR1には、
スキャンパターンAの場合とは異なり、原稿画像BIL、BIRの右端からスキャン画像BL1、BR1の右端までの間に、余白WBL、WBLがほとんど存在しないことが解る。これは、図6(A)、(B)に示すように、折り曲げられていない原稿10が原稿台255に配置された状態で、スキャンパターンAの場合とは異なり、原稿台255の手前(図6(A)、(B)の下側)に、原稿10が配置されない領域が存在しないためである。
S15のスキャン処理において、左側スキャンデータ、および、右側スキャンデータは、それぞれ、所定のフォーマットのファイル、例えば、JPEG(Joint Photographic Experts Groupの略)フォーマットの画像ファイルに変換される。
図2のS20では、CPU210は、左側スキャンデータの画像ファイル(左側画像ファイルとも呼ぶ)と、右側スキャンデータの画像ファイル(右側画像ファイルとも呼ぶ)と、をサーバ400に対して送信する。この結果、S25にて、サーバ400のCPU410は、これらの2個の画像ファイルを取得する。CPU410は、これらの画像ファイルから左側スキャンデータおよび右側スキャンデータ取得して、バッファ領域421に格納する。例えば、JPEG形式の画像ファイルが用いられる場合には、画像ファイルから、所定の変換処理によって、RGB画像データに変換されたスキャンデータが取得されて、バッファ領域421に格納される。
S30では、CPU410は、左側スキャンデータと右側スキャンデータとに対して、それぞれ、傾き補正処理を実行する。具体的には、CPU410は、左側スキャンデータに対してハフ変換やエッジ検出処理などの公知の処理を実行して、左側スキャン画像(AL1またはBL1)内の左側原稿画像(AILまたはBIL)の上端を検出する。CPU410は、左側原稿画像(AILまたはBIL)の上端と、左側スキャン画像(AL1またはBL1)の上端と、が、平行になるように、左側スキャン画像(AL1またはBL1)を回転して、補正済の左側スキャン画像を表す補正済の左側スキャンデータを生成する。ここで、検出すべき左側原稿画像の端は、上端に代えて、左端や下端でも良いが、右端以外の端であることが好ましい。これは、左側スキャン画像(AL1またはBL1)左側原稿画像(AILまたはBIL)の右端は、原稿10の端を表していないからである。例えば、スキャンパターンAで読み取られた左側スキャン画像AL1の左側原稿画像AILの右端は、原稿10の折れ線VLを表している。スキャンパターンBで読み取られた左側スキャン画像BL1の左側原稿画像BILの右端は、原稿10の右領域10Rの一部分を表している。
後述する余白量判定処理では、縦方向のラインごと余白ラインを判断するので、このように予め傾き補正を実行することによって、処理対象のスキャン画像内で原稿画像が傾いている場合であっても、後の余白量判定処理によって、余白量が基準量以上であるか否かを精度良く判断することができる。
CPU410は、右側スキャンデータに対しても同様の傾き補正処理を実行する。すなわち、CPU410は、右側原稿画像(AIRまたはBIR)の上端と、右側スキャン画像(AR1またはBR1)の上端と、が、平行になるように、右側スキャン画像(AR1またはBR1)を回転して、補正済の右側スキャン画像を表す補正済の右側スキャンデータを生成する。
図5(B)には、スキャンパターンAが用いられた場合の補正済の左側スキャン画像AL2および補正済の右側スキャン画像AR2が示されている。補正済の左側スキャン画像AL2には、左側原稿画像AILおよび余白WALの外側に、追加画素によって構成される追加領域AALが追加されている。これは、処理の便宜上、補正済の左側スキャン画像AL2を、上下の端が横方向と平行で、かつ、左右の端が上下方向と平行な矩形の画像として扱うためである。CPU410は、追加領域AALを、他の領域と区別して特定できるように、追加領域AAL内の画素と、他の領域内の画素と、を二値化したマスク画像(図示省略)を生成して、バッファ領域421に保存する。
同様に、補正済の右側スキャン画像AR2には、右側原稿画像AIRおよび余白WARの外側に、追加画素によって構成される追加領域AARが追加されている。CPU410は、追加領域AARを特定するためのマスク画像を生成して、バッファ領域421に保存する。
図7(B)には、スキャンパターンBが用いられた場合の補正済の左側スキャン画像BL2および補正済の右側スキャン画像BR2が示されている。スキャンパターンAが用いられた場合と同様に、補正済のスキャン画像BL2、BR2には、原稿画像BIL、BIRおよび余白WBL、WBRの外側に、追加画素によって構成される追加領域ABL、ABRがそれぞれ追加されている。CPU410は、追加領域ABL、ABRを特定するためのマスク画像をそれぞれ生成してバッファ領域421に保存する。
以下では、補正済のスキャン画像AL2、AR2、BL2、BR2を、単に、AL2、AR2、BL2、BR2とも呼び、補正済のスキャン画像AL2、BL2を表す左側スキャンデータ、および、補正済のスキャン画像AR2、BR2を表す右側スキャンデータを、単に、左側スキャンデータ、および、右側スキャンデータと呼ぶ。
傾き補正処理が終了すると、図2のS35では、CPU410は、配置前処理を実行する。配置前処理は、配置済画像の生成に先立って、スキャンパターンに応じて適切な配置位置決定処理を選択し、選択された配置位置決定処理を実行することによって、左側原稿画像(AILまたはBIL)と、右側原稿画像(AIRまたはBIR)と、の相対的な配置位置を決定する処理である。
図8は、配置前処理のフローチャートである。S205では、CPU410は、左側スキャン画像(AL2またはBL2)の余白量判定処理を実行する。S210では、CPU410は、右側スキャン画像(AR2またはBR2)の余白量判定処理を実行する。これらの余白量判定処理は、スキャン画像の予め定められた方向側の余白量(本実施例では右側の余白量)が基準以上であるか否かを判定する処理である。具体的には、図5(B)、図7(B)のスキャン画像AL2、AR2、BL2、BR2のうちの処理対象のスキャン画像内の原稿画像(AIL、AIR、BIL、BIRのいずれか)の右端から該スキャン画像の右端までの間の余白量(以下、右側の余白量とも呼ぶ)が基準以上であるか否かが所定の判定条件に基づいて判定される。余白量判定処理については、後述する。
S215では、CPU410は、余白量判定処理によって2個のスキャン画像の右側の余白量は基準以上であると判定されか否かを判断する。2個のスキャン画像の右側の余白量が基準以上である場合には(S215:YES)、CPU410は、S220にて、第1配置位置決定処理を実行する。例えば、処理対象の2個のスキャン画像が、スキャンパターンAを用いて生成される図5(B)のスキャン画像AL2、AR2である場合には、原稿画像AIL、AIRの右端からスキャン画像AL2、AR2の右端までの間に、比較的大きな余白WAL、WARが、それぞれ含まれているので、第1配置位置決定処理が実行される。第1配置位置決定処理は、第1種の配置位置を決定するための第1の配置方法を用いて、2個の原稿画像の相対的な位置を決定する処理である。第1種の配置位置は、左側原稿画像と、右側原稿画像と、が重ならない相対的な位置である。
2個のスキャン画像の右側の余白量の少なくとも一方が基準未満である場合には(S215:NO)、CPU410は、S225にて、第2配置位置決定処理を実行する。例えば、処理対象の2個のスキャン画像が、スキャンパターンBを用いて生成される図7(B)のスキャン画像BL2、BR2である場合には、原稿画像BIL、BIRの右端からスキャン画像BL2、BR2の右端までの間に、ほとんど余白が含まれていないので、第2配置位置決定処理が実行される。第2配置位置決定処理は、第2種の配置位置を決定するための第2の配置方法を用いて、2個の原稿画像の相対的な位置を決定する処理である。第2種の配置位置は、左側原稿画像の右端近傍の一部と、右側原稿画像の左端近傍の一部と、が重なる位置である。第1配置位置決定処理および第2配置位置決定処理については、後述する。
配置前処理が終了すると、図2のS40では、CPU410は、配置済画像生成処理を実行する。配置済画像生成処理では、右側スキャンデータと左側スキャンデータとを用いて、左側原稿画像(AILまたはBIL)と、右側原稿画像(AIRまたはBIR)と、が配置された配置済画像を表す配置済画像データが生成される。配置済画像において、右側原稿画像と左側原稿画像は、第1配置位置決定処理または第2配置位置決定処理にて決定済の相対的な位置に配置される。
図9は、配置済画像の一例を示す図である。図9(A)の配置済画像OIAは、処理対象の2個のスキャン画像が、スキャンパターンAを用いて生成される図5(B)のスキャン画像AL2、AR2である場合に生成される。この配置済画像OIAでは、第1配置位置決定処理によって決定される上述した第1種の配置位置に、スキャン画像AL2、AR2内の原稿画像AIL、AIRが配置されている。
具体的には、配置済画像OIAにおいて、左側原稿画像AILと右側原稿画像AIRとは互いに重ならない位置に配置されている。左側原稿画像AILと右側原稿画像AIRとの相対的な横方向の位置は、予め決定された位置である。具体的には、配置済画像OIAにおいて、2個の原稿画像AIL、AIRの相対的な横方向の位置は、左側原稿画像AILの右端と、右側原稿画像AIRの左端と、の間が特定の隙間ΔITだけ離れる位置である。特定の隙間ΔITは、後述する復元領域AL、ARの幅ΔWと等しく、例えば、3画素である。左側原稿画像AILと右側原稿画像AIRとの相対的な縦方向の位置は、左側原稿画像AILと右側原稿画像AIRとで、適切に原稿10を表すことができる位置である。例えば、図9(A)の配置済画像OIAの例では、左側原稿画像AILの上端と右側原稿画像AIRの上端とが、ΔHだけ縦方向にずれた位置である。
隙間ΔITの画素の値は、例えば、白を示す固定値とされる。隙間ΔITの幅は、比較的短い(例えば、3画素)ので、隙間ΔITが白であっても、配置済画像OIAにおいて、隙間ΔITは、過度には目立たない。特に、配置済画像OIAが印刷される場合には、色材のにじみが発生するので、印刷された配置済画像OIAにおいて、隙間ΔITは、あまり目立たない。なお、特定の隙間ΔITを挟んで2個の原稿画像AIL、AIRが配置されるのは、スキャンパターンAでは、原稿10の折れ線VL上に位置するごく細い線状の画像が、2個の原稿画像AIL、AIRのいずれにも表れず、欠損しているからである。これを考慮して、配置済画像において、欠損している線状の画像の幅に相当する隙間ΔITを設けることが適切であると考えられる。
なお、右側原稿画像AIRは、図5(B)の右側スキャン画像AR2内の状態から、180度回転されて、左側原稿画像AILと向きが揃えられた状態で配置済画像OIAに配置される。この結果、余白量が判断された2個の原稿画像AIL、AIBの右端は、配置済画像OIAにおいて、横方向の中央部に位置するように配置される。また、図5(B)のスキャン画像AL2、AR2内の原稿画像AIL、AIRの右端より右側の余白WAL、WARおよび追加領域AAL、AARは、配置済画像OIAには配置されない。
図9(B)の配置済画像OIBは、処理対象の2個のスキャン画像が、スキャンパターンBを用いて生成される図7(B)のスキャン画像BL2、BR2である場合に生成される。この配置済画像OIBでは、第2配置位置決定処理によって決定される上述した第2種の配置位置に、スキャン画像BL2、BR2内の原稿画像BIL、BIRが配置されている。
具体的には、配置済画像OIBにおいて、左側原稿画像BILと右側原稿画像BIRとは、互いの一部が重なる位置に配置されている。より具体的には、配置済画像OIBにおいて、左側原稿画像BILと右側原稿画像BIRとは、第2配置位置決定処理において右側原稿画像BIR内に決定される後述の基準領域SPbと、左側原稿画像BIL内に決定される後述の類似領域CPbと、が重なるように、配置される。
配置済画像OIBにおいて、左側原稿画像BILと右側原稿画像BIRとが互いに重なり合う領域内の画素の値(すなわち、RGB値)には、例えば、右側原稿画像BIR(すなわち、右側スキャン画像BR2)内の画素の値が優先的に採用される。
なお、右側原稿画像BIRは、図7(B)の右側スキャン画像BR2内の状態から、180度回転されて、左側原稿画像BILと向きが揃えられた状態で配置済画像OIBに配置される。この結果、余白量が判断された2個の原稿画像BIL、BIRの右端は、配置済画像OIBにおいて、横方向の中央部に位置するように配置される。また、図7(B)のスキャン画像BL2、BR2内の原稿画像BIL、BIRの右端より右側の追加領域ABL、ABRは、配置済画像OIBには配置されない。
以上の説明から解るように、配置済画像生成処理によって、2個の原稿画像で、図3の原稿10を示す1個の配置済画像を表す配置済画像データが生成される。なお、CPU410は、生成された配置済画像データを所定の形式の画像ファイルに変換することによって、配置済画像を表す配置済画像ファイルを生成する。例えば、RGB画像データである配置済画像データが、JPEG圧縮されることによって、JPEG形式の配置済画像ファイルが生成される。
図2のS45では、CPU410は、生成された配置済画像ファイルを複合機200に対して送信する。複合機200のCPU210は、配置済画像ファイルを受信すると、受信した配置済画像ファイルを不揮発性記憶装置230に格納するとともに、ユーザに配置済画像ファイルを受信したことを通知する。配置済画像ファイルは、ユーザの利用に供される。例えば、複合機200は、ユーザの指示に基づいて、配置済画像ファイルを用いて、配置済画像OIA、OIBを印刷することができる。
本実施例によれば、左側スキャン画像(AL1またはBL1)の右側の余白量が基準以上であるか否かが判断され(図9のS205)、左側スキャン画像の右側の余白量が基準以上であるか否かに応じて、用いるべき配置方法が選択される(S215〜S225)。この結果、左側原稿画像(AILまたはBIL)と右側原稿画像(AIRまたはBIR)とが配置された配置済画像(OIAまたはOIB)を表す画像データを生成する際に、これらの画像の配置方法を適切に選択できる。右側の余白量が基準以上であるか否かを判定する判定条件には、詳細は余白量判定処理を説明する際に後述するが、左側原稿画像(AILまたはBIL)の右端から左側スキャン画像の右端までの間に含まれる複数個の特定色画素(具体的には、白色の画素)の個数が比較的大きいことを示す条件が用いられる。
さらに、本実施例によれば、右側スキャン画像(AR1またはBR1)の右側の余白量が基準以上であるか否かが判断され(S210)、左側スキャン画像の右側の余白が基準以上であるか否かに加えて、右側スキャン画像の右側の余白が基準以上であるか否かに応じて、配置方法が選択される(S215〜S225)。
具体的には、左側スキャン画像の右側の余白量が基準以上であり、かつ、右側スキャン画像の右側の余白量が基準以上である場合に(S215:YES)、第1配置位置決定処理が実行される(S220)。この場合には、スキャンパターンAが用いられたと考えられるからである。また、左側スキャン画像の右側の余白量が基準未満であり、かつ、右側スキャン画像の右側の余白量が基準未満である場合に(S215:NO)、第2配置位置決定処理が実行される(S225)、すなわち、第2の配置方法が選択される。この場合には、スキャンパターンBが用いられたと考えられるからである。このようにスキャンパターンに応じて、スキャンパターンに適した配置方法を適切に選択することができる。
さらに、上述したように、第1の配置方法は、左側原稿画像と右側原稿画像とが重ならない第1種の配置位置を決定する方法であり、第2の配置方法は、左側原稿画像の一部と右側原稿画像の一部とが重なる配置位置を決定する方法である。本実施例では、このような2種の方法を適切に決定することができる。スキャンパターンAが用いられた場合には、図4に示すように、原稿画像AIL、AIRは、二つ折りにされた原稿10の両面をそれぞれ読み取って得られる画像である。このために、図5(B)に示すように2個の原稿画像AIL、AIRの両方に表れる原稿10上の領域は存在しない。このために、配置済画像において、左側原稿画像AILと右側原稿画像AIRは、これらの画像が重ならない位置で配置されることが適切である。スキャンパターンBが用いられた場合には、図6に示すように、原稿画像BIL、BIRは、折り曲げられていない原稿10を読み取って得られる画像である。このために、図7(B)に示すように、原稿画像BIL、BIRの両方に、それぞれに、原稿10の中央部CAを表す画像CIL、CIRが表れる。このために、配置済画像において、左側原稿画像BILの右端近傍と、180度回転された右側原稿画像BIRの左端近傍と、が重なるように、配置することが適切である。
また、2個のスキャン画像のうち、左側スキャン画像の余白量が基準以上であり、かつ、右側スキャン画像の余白量が基準未満である場合、および、左側スキャン画像の余白量が基準未満であり、かつ、右側スキャン画像の余白量が基準以上である場合には、スキャンパターンA、Bのいずれが用いられたかを判断できない。このような場合は、レアケースであると考えられるが、本実施例では、この場合には(図9のS215:NO)、第2配置位置決定処理を実行することとしている(S225)。すなわち、本実施例では、後述する第2実施例や第3実施例と異なり、スキャンパターンA、Bのいずれが用いられたかを判断できない場合であっても、一つの配置方法を選択することとしている。
A−3.余白量判定処理:
S205の右側スキャン画像(AR2またはBR2)の余白量判定処理、および、S210の左側スキャン画像(AL2またはBL2)の余白量判定処理について説明する。2つの処理は、処理対象のスキャン画像が異なることを除いて、同一の処理である。
図10は、余白量判定処理のフローチャートである。S300では、CPU410は、処理開始位置STPを決定する。処理開始位置STPは、処理対象のスキャン画像の横方向の特定の位置である。処理開始位置STPは、処理対象のスキャン画像のうち、配置済画像の横方向の中央部に配置されるべき端(中央配置端とも呼ぶ)の近傍、本実施例では、スキャン画像AL2、AR2、BL2、BR2(図5(B)、図7(B))の右端の近傍に決定される。具体的には、処理開始位置STPは、傾き補正前のスキャン画像の右上および右下の頂点のうち、傾き補正済のスキャン画像の右端から離れている頂点の横方向の位置に決定される。処理開始位置STPの一例は、図5(B)、図7(B)に示されている。例えば、処理対象のスキャン画像が、図5(B)の左側スキャン画像AL2である場合には、補正前の左側スキャン画像AL1の右下の頂点の横方向の位置が、処理開始位置STPに決定される。
S305では、CPU410は、スキャン画像内の複数本の縦方向の画素のラインの中から、1本の注目ラインを選択する。複数本の縦方向の画素のラインは、横方向の位置が互いに等しく、縦方向に沿って並ぶ複数個の画素をそれぞれ含む。最初の注目ラインは、処理開始位置STPの画素のラインである。注目ラインは、処理開始位置STPから、中央配置端である右端から離れる方向、すなわち、左方向に向かって順次に選択される。
S310では、CPU410は、注目ラインに含まれる複数個の画素から、1個の注目画素を選択する。注目画素は、注目ラインの上端から下端に向かって1個ずつ順次に選択される。
S315では、CPU410は、注目画素が、余白が有するべき特定色を有する特定色画素であるか否かを判断する。余白が有するべき特定色は、原稿台255の色であり、本実施例では、白である。CPU410は、注目画素が、特定色を示す所定範囲内の画素の値(RGB値)を有する場合には、注目画素が特定色画素であると判断し、特定色を示す範囲外の画素の値を有する場合には、注目画素が特定色とは異なる色を有する非特定色画素であると判断する。
注目画素が特定色画素である場合には(S315:YES)、CPU410は、S320にて、画素カウンタWCに1を加算する。画素カウンタWCは、縦方向に連続する特定色画素の個数をカウントするためのカウンタである。S325では、CPU410は、ノイズカウンタNCを初期化する、すなわち、初期値「0」にする。ノイズカウンタNCは、縦方向に連続する非特定色画素の個数をカウントするためのカウンタである。
注目画素が非特定色画素である場合には(S315:NO)、CPU410は、S330にて、ノイズカウンタNCに1を加算する。S335では、CPU410は、ノイズカウンタNCが所定の閾値THn以上であるか否かを判断する。閾値THnは、例えば、2〜5個である。
ノイズカウンタNCが所定の閾値THn以上である場合には(S335:YES)、CPU410は、S340にて、現在の画素カウンタWCが、現在の最大連続数WCmより大きいか否かを判断する。画素カウンタWCが、最大連続数WCmより大きい場合には(S340:YES)、CPU410は、S345にて、最大連続数WCmの値を、画素カウンタWCの値に更新して、S350に処理を進める。画素カウンタWCが、最大連続数WCm未満である場合には(S340:NO)、CPU410は、S345をスキップして、S350に処理を進める。S350では、CPU410は、画素カウンタWCの値を初期化する。
ノイズカウンタNCが所定の閾値THn未満である場合には(S335:NO)、CPU410は、上述のS340〜S350をスキップして、S355に処理を進める。
S355では、注目ラインの全ての画素を注目画素として処理したか否かを判断する。未処理の画素がある場合には(S355:NO)、CPU410は、S310に戻って、未処理の画素を注目画素として選択する。全ての画素が処理された場合には(S355:YES)、CPU410は、上述したS340、S345と同様の処理を実行する。すなわち、S360にて、現在の画素カウンタWCが、現在の最大連続数WCmより大きいか否かが判断され、画素カウンタWCが最大連続数WCmより大きい場合には(S360:YES)、S365にて、最大連続数WCmの値が画素カウンタWCの値に更新される。そして、画素カウンタWCが最大連続数WCm未満である場合には(S360:NO)、S365はスキップされる。
S370に処理が進んだ時点での最大連続数WCmは、注目ラインにおいて、縦方向に連続する特定色画素の個数の最大値を示している。なお、上述の説明から解るように、一の特定色画素と他の特定色画素とが実際に縦方向に連続している場合だけでなく、一の特定色画素と他の特定色画素との間に、閾値THn未満の非特定色画素が存在する場合であっても、当該一の特定色画素と他の特定色画素とは縦方向に連続していると判断される。これは、スキャン画像の余白部分には、様々な原因、例えば、スキャナ部250のイメージセンサの特性や原稿台255の汚れなどに起因して、非特定色画素が、ノイズとして含まれ得るからである。換言すれば、本実施例では、一の特定色画素と他の特定色画素との間に閾値THn以上の非特定色画素が存在しないことが、注目ライン内の一の特定色画素と他の特定色画素とが縦方向に連続すると判断するための連続条件である、と言うことができる。変形例としては、連続条件は、特定色画素が実際に縦方向に連続していることであっても良い。
S370では、CPU410は、最大連続数WCmが閾値THm以上であるか否かを判断する。閾値THmは、例えば、処理対象のスキャン画像の縦方向の画素数の50%の値に設定される。最大連続数WCmが閾値THm以上である場合には、注目ラインは余白を構成する余白ラインであると、判断することができる。このために、最大連続数WCmが閾値THm以上である場合には(S370:YES)、CPU410は、S375にて、余白ラインの本数をカウントするための余白カウンタWLに1を加算する。
最大連続数WCmが閾値THm未満である場合には、注目ラインは余白を構成する余白ラインではなく、原稿画像の右端を構成するラインであると、判断することができる。このために、最大連続数WCmが閾値THm未満である場合には(S370:NO)、CPU410は、S390にて、現在の余白カウンタWLの値を、処理対象のスキャン画像の余白ライン数WLNとして決定して、S395に処理を進める。余白ライン数WLNは、スキャン画像の右側の余白の横方向の長さを示す指標値である。
S380では、CPU410は、処理対象のスキャン画像内の全てのラインを注目ラインとして処理したか否かを判断する。通常は、注目ラインが原稿画像の右端に達した時点で、上述したS390を経由して余白量判定処理は終了される。したがって、全てのラインが処理されることは、例えば、処理対象のスキャン画像に原稿画像が含まれていない場合などのイレギュラーな場合を除いて、発生しない。スキャン画像内に未処理のラインがある場合には(S380:NO)、CPU410は、S385にて、画素カウンタWC、ノイズカウンタNC、最大連続数WCmを初期化した後に、S305に戻って、現在の注目ラインの左側に隣接するラインを、次の注目ラインとして選択する。スキャン画像内の全てのラインを処理した場合には(S380:YES)、CPU410は、S390にて、現在の余白カウンタWLの値を、処理対象のスキャン画像の余白ライン数WLNとして決定して、S395に処理を進める。
S395では、CPU410は、余白ライン数WLNが閾値THw以上であるか否かを判断する。余白ライン数WLNが閾値THw以上である場合に(S395:YES)、CPU410は、S397にて、処理対象のスキャン画像の余白量は基準以上であると判定して、余白量判定処理を終了する。余白ライン数WLNが閾値THw未満である場合に(S395:NO)、CPU410は、S398にて、処理対象のスキャン画像の余白量は基準未満であると判定して、余白量判定処理を終了する。閾値THwは、例えば、処理対象のスキャン画像の横方向の解像度が300dpiである場合に、20本である。
以上説明した余白量判定処理によれば、CPU410は、画素の値が特定の判定条件を満たす画素、具体的には、画素の値が特定色を示す所定範囲内にある画素を、特定色画素であると判定し(S315)、縦方向に特定色画素が連続することを示す連続条件を満たす特定色画素の個数、すなわち、最大連続数WCmを、算出する(S320〜S365)。そして、CPU410は、最大連続数WCmを用いて、余白量が基準以上であるか否かを判断する(S370〜S398)。この結果、余白量が基準以上であるか否かを適切に判断できる。余白は、連続する特定色画素によって構成されると考えられるからである。
さらに、連続条件は、上述したように、一の特定色画素と他の特定色画素との間に閾値THn以上の非特定色画素が存在しないことである。これによって、余白内に含まれるノイズを考慮して、適切な最大連続数WCmを算出ことができるので、余白量が基準以上であるか否かをさらに適切に判断できる。
具体的には、CPU410は、縦方向の複数個のラインのうち、最大連続数WCmが閾値THm以上であり、かつ、処理対象のスキャン画像内の原稿画像の右端と、該スキャン画像の右端と、の間に位置する余白ラインの本数を示す余白ライン数WLNを算出し(S370〜S390)、余白ライン数WLNを用いて、余白量が基準以上であるか否かを判断する。この結果、余白量が基準以上であるか否かをより精度良く判断できる。スキャン画像の右側の基準以上の量の余白は、原稿画像の右端と該スキャン画像の右端との間に位置する複数本のラインであって、縦方向に連続する比較的多くの特定色画素を含む複数本のラインによって構成されると考えられるからである。
さらに、具体的には、CPU410は、処理対象のスキャン画像の右端の近傍の特定の位置である処理開始位置STP(図5(B)等)から、右端の方向(すなわち、右方向)の反対方向(すなわち、左方向)に向かって、ラインごとに、余白ラインであるか否かを判定する(S300、S305など)。そして、CPU410は、余白ラインが横方向に連続する本数を、余白ライン数WLNとして算出する(S375、S380、S390)。こうすれば、余白ライン数WLNを、適切に算出することができる。スキャン画像の右側の余白を構成する複数本の余白ラインは、スキャン画像の右端の近傍から原稿画像の右端まで横方向に連続していると、考えられるからである。
以上のように、本実施例の余白量判定処理では、縦方向に連続する比較的多くの特定色画素を含む余白ラインが横方向に連続する本数である余白ライン数WLNが閾値THw以上であるか否かを判定条件として、余白量が基準以上であることを判断している。この判定条件は、原稿画像の右端と該スキャン画像の右端との間に含まれる縦方向や横方向に連続する複数個の特定色画素であって、原稿画像に含まれず、かつ、スキャン画像に含まれる複数個の画素の個数が比較的多いことを示す条件である、と言うことができる。
A−4.第1配置位置決定処理:
図8のS220の第1配置位置決定処理について説明する。図11は、第1配置位置決定処理のフローチャートである。図12は、第1配置位置決定処理の説明図である。上述したように、第1配置位置決定処理は、スキャンパターンAが用いられた場合に実行される処理であるので、図5(B)のスキャン画像AL1、AL2が処理対象である場合を例として説明する。
S400では、CPU410は、スキャン画像AL2、AR2に対して、余白の削除と回転を実行する。具体的には、上述した余白量判定処理にて、余白ラインであると判断されたラインと、余白ラインより右側の部分(すなわち、処理開始位置STPより右側の部分)と、をスキャン画像AL2、AR2から削除する。また、右側スキャン画像AR2内の右側原稿画像AIRの上下方向を、左側スキャン画像AL2内の左側原稿画像AILの上下方向と同じとするために、右側スキャン画像AR2を180度回転させる。
図12(A)には、S400の処理後のスキャン画像AL3、AR3が図示されている。図12(A)では、左側原稿画像AIL、AIRの内部の図示は省略し、符号付きの矢印のみを図示する。左側スキャン画像AL3では右側の余白がなく、180度回転された右側スキャン画像AR3では左側の余白がないことが解る。S401の画素復元処理では、左側スキャン画像AL3内の左側原稿画像AILの右端と、右側スキャン画像AR3内の右側原稿画像AIRの左端と、が特定されていることが必要である。このために、S400では、これらの端と接する余白を削除しているが、余白の削除は必ずしも必要ではなく、これらの端が特定されていれば良い。
S401では、CPU410は、スキャン画像AL3、AR3内の原稿画像AIL、AIRにおいて欠損している画素を復元する画素復元処理を実行する。図12(A)には、スキャン画像AL3、AR3と、画素復元処理によって復元される複数個の画素が位置する復元領域AL、ARが図示されている。上述したように、スキャンパターンAが用いて生成されたスキャン画像AL3、AR3は、二つ折りにされた原稿10を読み取ることによって生成された画像である。このために、原稿10の折れ線VL上に位置するごく細い線状の領域の画像は、スキャン画像AL3、AR3内の原稿画像AIL、AIRのいずれにも表れておらず、欠損している。図12(A)の復元領域AL、ARは、原稿10の折れ線VL上に位置するごく細い線状の領域に対応している。
左側復元領域ALは、左側原稿画像AILの折れ線VLに対応する端、図12(A)の例では、左側原稿画像AILの右端に沿って左側原稿画像AILの外側に位置する領域である。左側復元領域ALは、原稿画像AILの右端の全長に亘って上端から下端まで延びるごく細い線状の領域である。右側復元領域ARは、右側原稿画像AIRの折れ線VLに対応する端、図12(A)の例では、右側原稿画像AIRの左端に沿って右側原稿画像AIRの外側に位置する領域である。右側復元領域ARは、右側原稿画像AIRの左端の全長に亘って上端から下端まで延びるごく細い線状の領域である。復元領域AL、ARの折れ線VLに対応する端と垂直な方向の幅、すなわち、図12(A)の横方向の幅ΔWは、実験的に予め決められた値である。本実施例では、幅ΔWは、原稿画像AIL、AIRの横方向の解像度が、300dpiである場合に、3画素である。
図13は、画素復元処理のフローチャートである。S500では、CPU410は、左側原稿画像AILおよび右側原稿画像AIRから、注目画像を選択する。S505では、CPU410は、注目画像に対して、上述した復元領域を設定する。例えば、左側原稿画像AILが注目画像である場合には、左側原稿画像AILの右端に沿って左側復元領域ALが設定される。
S510では、CPU410は、復元領域内の注目ラインを選択する。例えば、本実施例では、復元領域の横方向の幅ΔWは3画素であるので、上下方向に延びる3本の画素のラインを含んでいる。CPU410は、3本の画素のラインの中から、1本の注目ラインを、注目画像に近い側から順に選択する。例えば、図13の右側に示すように、左側復元領域ALは、3本のラインL1〜L3を含んでいる。したがって、左側原稿画像AILが注目画像である場合には、最初にラインL1が、注目ラインとして選択され、次にラインL2が注目ラインとして選択される。
S515では、CPU410は、注目ラインに含まれる複数個の画素から1個の注目画素を選択する。例えば、注目ラインに含まれる複数個の画素から、上側から下側に向かって順次に注目画素が選択される。
S520では、CPU410は、注目画素の複数個の近傍画素の値を用いて、注目画素の値(本実施例では、RGB値)を決定する。左側原稿画像AILが注目画像である場合には、注目画素の値は、注目画素より左側に位置する4個の近傍画素の値を用いて決定される。例えば、図13の右側に示すラインL1の画素Xが注目画素である場合には、4個の近傍画素は、ラインL1の左側に隣接するラインLaの3個の画素A、B、Cと、ラインLaの左側に隣接するラインLbの1個の画素Dである。画素Aは、注目画素より左側に位置する画素のうち、注目画素に最も近い第1近傍画素であり、画素B、Cは、注目画素に2番目に近い第2近傍画素であり、画素Dは、注目画素に3番目に近い第3近傍画素である。画素Xの特定の成分値(例えば、R成分の値)Vxは、画素A〜Dの特定の成分値Va〜Vdを用いて、以下の式(1)によって算出される。
Vx=Ka×Va+Kb×Vb+Kc×Vc+Kd×Vd ...(1)
ここで、Ka〜Kdは、画素A〜Dとのそれぞれと画素Xとの距離に応じて予め決定された係数である。係数Ka〜Kdは、Ka〜Kdの合計値が1であり、かつ、画素Xとの距離が短いほど大きな値となるように、決定されている。本実施例では、Ka=0.5、Kb=Kc=0.2、Kd=0.1である。
CPU410は、式(1)を用いて、注目画素のRGBの3個の成分の値をそれぞれ算出することによって、注目画素のRGB値を決定する。
なお、図示は省略するが、右側原稿画像AIRが注目画像である場合には、注目画素の値は、注目画素より右側に位置する4個の近傍画素の値を用いて決定される。
S525では、CPU410は、注目ラインの全ての画素を注目画素として処理したか否かを判断する。未処理の画素がある場合には(S525:NO)、CPU410は、S515に戻って、未処理の画素を注目画素として選択する。全ての画素が処理された場合には(S525:YES)、CPU410は、S530にて、注目画像について設定された復元領域の全てのラインを注目ラインとして処理したか否かを判断する。未処理のラインがある場合には(S530:NO)、CPU410は、S510に戻って、未処理のラインを注目ラインとして選択する。全てのラインが処理された場合には(S530:YES)、CPU410は、S535に処理を進める。
S535では、CPU410は、左側原稿画像AILと右側原稿画像AIRの両方を処理したか否かを判断する。CPU410は、両方の原稿画像を処理していない場合には(S535:NO)、S500に戻って未処理の原稿画像を注目画像として選択する。CPU410は、両方の原稿画像を処理済である場合には(S535:YES)、画素復元処理を終了する。
以上の説明から解るように、左側復元領域ALの画素のうち、左側原稿画像AILの右端の右側に隣接するラインL1内の画素の値は、左側原稿画像AILの右端に沿うラインLa、Lbの複数個の画素の値を用いて決定される。ラインLa、Lbの複数個の画素は、左側原稿画像AILに含まれる複数個の画素であって、左側原稿画像AILの右端にそって左側原稿画像AILの内側に並ぶ複数個の画素と、言うことができる。
同様に、左側復元領域ALのうち、ラインL1の右側に隣接するラインL2内の画素の値は、ラインL1の複数個の画素と、ラインLaの複数個の画素の値と、を用いて決定される。また、左側復元領域ALのうち、ラインL2の右側に隣接するラインL3内の画素の値は、ラインL1、L2の複数個の画素の値を用いて決定される。このように、画素復元処理によって、左側復元領域AL内の複数個の画素が、左側原稿画像AILの右端に沿うラインLa、Lbの複数個の画素の値を直接または間接的に用いて、生成される。左側復元領域AL内の複数個の画素は、左側原稿画像AILに含まれない複数個の画素であって左側原稿画像AILの右端に沿って左側原稿画像AILの外側に並ぶ複数個の画素(左側復元画素とも呼ぶ)と言うことができる。
同様に、画素復元処理によって、右側復元領域AR内の複数個の画素が、右側原稿画像AIRの右端に沿うラインの複数個の画素の値を直接または間接的に用いて、生成される。右側復元領域AR内の複数個の画素は、右側原稿画像AIRに含まれない複数個の画素であって右側原稿画像AIRの左端に沿って右側原稿画像AIRの外側に並ぶ複数個の画素(右側復元画素とも呼ぶ)と言うことができる。
左側復元領域AL内の複数個の左側復元画素によって構成される線状の画像と、右側復元領域AR内の複数個の右側復元画素によって構成される線状の画像は、ともに、原稿10の折れ線VL上に位置する線状の画像を表す画像になる。したがって、左側復元領域AL内の画像と、右側復元領域AR内の画像とは、互いに類似する部分を含むと考えられる。
なお、復元領域AL、ARは、それぞれ、原稿画像AIL、AIRに隣接する領域であるが、バッファ領域421内では、復元領域AL、AR内の復元画素を含む画像データは、必ずしも原稿画像AIL、AIRを表す画像データと一体とされている必要はなく、原稿画像AIL、AIRを表す画像データとは、別の画像データであって良い。
画素復元処理が終了すると、図11のS402では、CPU410は、基準領域SPaを決定する。基準領域SPaは、右側復元領域ARの少なくとも一部を含む領域に決定される。本実施例では、右側復元領域ARの全体、すなわち、画素復元処理によって生成された複数個の右側復元画素によって構成される画像の全体が、基準領域SPaとして決定される。これに代えて、右側復元領域ARの一部分が基準領域SPaとして決定されても良い。あるいは、右側復元領域ARと右側原稿画像AIRとによって構成される画像から、右側復元領域ARの全体と右側復元領域ARの左端の一部を含む領域が、基準領域SPaとして決定されても良い。
S405では、CPU410は、候補領域を決定するための所定の参照範囲REaに基づいて決定される複数個の候補領域の中から、1個の注目候補領域を決定する。参照範囲REaは、例えば、図12(A)に示すように、左側原稿画像AILの右上部分に破線で示す範囲である。図14は、図12(A)の参照範囲REa近傍の拡大図である。参照範囲REaは、縦M1画素×横N1画素分の矩形の範囲である(M1、N1は、2以上の整数)。N1は、例えば、約10であり、M1は、例えば、数十から数百である。参照範囲REaの右端は、左側原稿画像AILの右側の左側復元領域ALの右端と一致している。参照範囲REaの縦方向の中心は、左側原稿画像AILの上端に位置している。
CPU410は、参照範囲REa内の(M1×N1)個の画素位置から、1個の注目画素位置を選択する。CPU410は、当該注目画素位置に、基準領域SPaの左上の画素Pc(図12(A))が位置するように、基準領域SPaを配置した場合に、基準領域SPaと重なる左側原稿画像AILまたは復元領域AL内の領域を注目候補領域として特定する。このように、参照範囲REa内の(M1×N1)個の画素位置が、(M1×N1)個の候補領域と1対1で対応している。例えば、図14のハッチングで示す候補領域NT1は、参照範囲REa内の右上の画素位置Pt1が注目画素位置である場合に特定される。図14のハッチングで示す候補領域NT2は、参照範囲REa内の左下の画素位置Pt2が注目画素位置である場合に特定される。候補領域が設定され得る領域である探索領域SAaは、図14に示すように、参照範囲REaの左端の位置LPより右側に位置する領域である。第1配置位置決定処理の探索領域SAaは、左側復元領域ALと、左側原稿画像AILの右端の近傍の一部分の領域と、を含む。
例えば、最初の注目候補領域は、図14の候補領域NT1である。そして、注目候補領域NT1を特定するための参照範囲REa内の画素位置を、候補領域NT1を特定する際の位置から縦方向や横方向に1画素刻みで移動させることで、(M1×N1)個の候補領域から1個の注目候補領域が順次に特定される。
1個の注目候補領域が特定されると、S410では、CPU410は、注目候補領域の類似率(SC/Nt)を算出する。注目候補領域の類似率(SC/Nt)は、注目候補領域と、基準領域SPaとが類似している程度を示す指標値である。
類似率(SC/Nt)の算出方法は、以下のとおりである。先ず、CPU410は、注目候補領域内の複数個の画素を1個ずつ注目画素として選択して、注目画素が、類似画素であるか非類似画素であるかを判断する。具体的には、CPU410は、注目候補領域内の注目画素の成分値と、当該注目画素に対応する基準領域SPa内の画素の成分値と、の差ΔVPを算出する。注目画素に対応する基準領域SPa内の画素は、注目候補領域と基準領域SPaとを重ねた場合に、注目画素と重なる基準領域SPa内の画素である。差ΔVPを算出すべき2個の画素の成分値を、(R1、G1、B1)と(R2、G2、B2)とする。差ΔVPは、例えば、3種類の成分値間の差分の絶対値の和で表される。すなわち、差ΔVPは、(R1−R2)の絶対値と、(G1−G2)の絶対値と、(B1−B2)の絶対値と、の合計値で表される。
CPU410は、算出された差ΔVPが、所定の基準値TH1以下である場合には、注目画素が類似画素であると判断し、算出された差ΔVPが、所定の基準値TH1より大きい場合には、注目画素が非類似画素であると判断する。差ΔVPが、所定の基準値TH1以下である場合には、注目候補領域内の注目画素の色と、当該注目画素に対応する基準領域SPa内の画素の色とは、類似すると判断できるからである。
CPU410は、注目候補領域内の類似画素の個数SCを、注目候補領域内の画素の総数Ntで除することによって、注目候補領域の類似率(SC/Nt)を算出する。類似率(SC/Nt)は、注目候補領域内の画素の総数Ntに対する類似画素の個数SCの割合である。類似率(SC/Nt)が大きいほど、基準領域SPaと、注目候補領域とは、類似している。
S415は、CPU410は、類似率(SC/Nt)が、閾値TH2以上であるか否かを判断する。即ち、CPU410は、現在の注目候補領域が基準領域SPaに類似しているか否かを判断する。
類似率(SC/Nt)が、閾値TH2以上である場合、即ち、現在の注目候補領域が基準領域SPaに類似していると判断する場合には(S415:YES)、CPU410は、S420にて、現在の注目候補領域を、基準領域SPaに類似する類似領域として記憶して、S425に処理を進める。
類似率(SC/Nt)が、閾値TH2未満である場合には(S415:NO)、CPU410は、S420をスキップして、S425に処理を進める。
S425では、CPU410は、(M1×N)個の全ての候補領域を注目候補領域として処理したか否かを判断する。未処理の候補領域がある場合には(S425:NO)、CPU410は、S405に戻って、未処理の候補領域を注目候補領域として特定する。全ての候補領域が処理された場合には(S425:YES)、CPU410は、S430に処理を進める。
S430では、CPU410は、(M1×N1)個の候補領域の中に1個以上の類似領域があるか否かを判断する。すなわち、S420にて類似領域として記憶された候補領域が1個以上あるか否かが判断される。CPU410は、1個以上の類似領域がある場合には(S430:YES)、S435にて、1個以上の類似領域の中から、S410にて算出された類似率(SC/Nt)が最も高い1個の類似領域CPaを選択する。
S440では、CPU410は、選択した1個の類似領域CPaの位置に基づいて、左側原稿画像AILと、右側原稿画像AIRと、の相対的は配置位置を決定する。本実施例では、原稿画像AIL、AIRの折れ線VLに対応する端に沿った方向、すなわち、図14の縦方向の相対的な位置が決定される。具体的には、S435で選択された類似領域CPaに対応する参照範囲REa内の画素位置Psが特定される。例えば、S435で選択された類似領域CPaが、図14の候補領域NT1である場合には、参照範囲REaの画素位置Pt1が、類似領域CPaに対応する参照範囲REa内の画素位置Psとして特定される。そして、図12(B)に示すように、特定された参照範囲REa内の画素位置の縦方向の位置が、右側原稿画像AIRの上端の画素の縦方向の位置として決定される。なお、図12(B)では、図の煩雑を避けるために、スキャン画像AL3、AR3内の余白と追加領域の図示を省略している。参照範囲REaは、左側原稿画像AILに対して設定されているので、これによって、左側原稿画像AILと右側原稿画像AIRとの相対的な縦方向の位置が決定される。なお、本実施例の第1配置位置決定処理では、左側原稿画像AILと右側原稿画像AIRとの相対的な横方向の位置は、決定されない。左側原稿画像AILと右側原稿画像AIRとの相対的な横方向の位置は、本処理で決定される位置ではなく、予め決定された位置である。具体的には、上述したように、左側原稿画像AILの右端と右側原稿画像AIRの左端との間に所定の隙間ΔITが確保される位置である。
1個以上の類似領域がない場合には(S430:NO)、CPU410は、S445にて、左側原稿画像AILと右側原稿画像AIRとの相対的な縦方向の位置をデフォルトの位置に決定する。本実施例の縦方向のデフォルトの位置は、左側原稿画像AILの上端の縦方向の位置と、右側原稿画像AIRの上端の縦方向の位置と、が一致する位置である。
S440およびS445のいずれかにて、左側原稿画像AILと右側原稿画像AIRとの相対的な縦方向の位置が決定されると、第1配置位置決定処理は終了される。
以上説明した第1配置位置決定処理において配置位置を決定する方法では、右側原稿画像AIRの左端に沿って右側原稿画像AIRの内側に並ぶ複数個の画素の値を用いて、右側原稿画像AIRの左端に沿う復元領域AR内の複数個の右側復元画素が生成される(図13)。そして、これらの複数個の右側復元画素を用いて、左側原稿画像AILと右側原稿画像AIRとの相対的な位置が決定される(図11)。この結果、左側原稿画像AILと右側原稿画像AIRとが重ならない配置位置を精度良く決定することができる。特に、スキャンパターンAを用いて生成される2個のスキャン画像を用いて、1個の原稿10を示す配置済画像を生成する際に、適切な配置位置を精度良く決定することができる。
スキャンパターンAが用いられる場合には、原稿10の折れ線VL上に位置する線状の画像は、原稿画像AIL、AIRのいずれにも表れない。このために、仮に、これらの原稿画像AIL、AIRの縦方向の相対的な位置を、複数個の右側復元画素を生成することなく、決定すると、縦方向の相対的な位置を精度良く決定できない可能性がある。本実施例では、右側復元画素を生成し、右側復元画素を用いて、これらの原稿画像AIL、AIRの縦方向の相対的な位置を精度良く決定することができる。
さらに、第1配置位置決定処理では、左側原稿画像AILに沿って左側原稿画像AILの内側に並ぶ複数個の画素の値を用いて、左側原稿画像AILの右端に沿う復元領域AL内の複数個の左側復元画素が生成される(図13)。そして、これらの複数個の左側復元画素を用いて、左側原稿画像AILと右側原稿画像AIRとの相対的な位置が決定される(図11)。この結果、配置済画像データを生成する際に、原稿画像AILと右側原稿画像AIRとの配置位置をさらに精度良く決定することができる。例えば、複数個の左側復元画素によって構成される画像と、右側復元画素によって構成される画像と、が類似する場合には、これらの2個の画像の類似性に基づいて、原稿画像AILと右側原稿画像AIRとの配置位置を適切に決定し得る。
さらに、基準領域SPaは、右側復元領域AR内の複数個の右側復元画素を含み、右側原稿画像AIR内の画素を含まない(図12(A))。原稿画像AIL、AIRは、二つ折りにされた原稿10の両面をそれぞれ読み取って得られる画像であることから、2個の原稿画像AIL、AIRの両方に表れる原稿10上の領域は存在しない。このために、基準領域SPaには、複数個の右側復元画素を含めば十分であり、右側原稿画像AIR内の画素を含める必要はないからである。これによって、2個の原稿画像AIL、AIRの相対的な位置をさらに適切に決定することができる。
A−5.第2配置位置決定処理:
図8のS225の第2配置位置決定処理について説明する。図15は、第2配置位置決定処理のフローチャートである。図16は、第2配置位置決定処理の説明図である。上述したように、第2配置位置決定処理は、スキャンパターンBが用いられた場合に実行される処理であるので、図7(B)のスキャン画像BL2、BR2が処理対象である場合を例として説明する。
S600では、CPU410は、図11のS400と同様に、スキャン画像BL2、BR2に対して、余白の削除と回転を実行する。図16(A)には、S600の処理後のスキャン画像BL3、BR3が図示されている。スキャン画像BL2、BR2の右端側には実質的に余白はないので、実質的には、処理開始位置STP(図7(B))より右側の部分だけが削除されていることが解る。また、回転により、右側スキャン画像BR3内の右側原稿画像BIRの上下方向が、左側スキャン画像BL3内の左側原稿画像BILの上下方向と同じとされている。なお、第2配置位置決定処理では、画素復元処理は実行されない。
S602では、CPU410は、右側スキャン画像BR3内に、右側スキャン画像BR3の一部の領域である基準領域SPbを決定する。図16(A)に示すように、基準領域SPbは、右側スキャン画像BR3内の所定の位置に配置された所定のサイズの矩形領域に決定される。また、基準領域SPbは、右側スキャン画像BR3において、原稿10の中央部CA(図3)を表す画像CIR内に配置される。例えば、基準領域SPbは、右側スキャン画像BR3の4つの端のうち、中央部CAを表す画像CIRに沿った端(本実施例では、左端)に沿って配置される。基準領域SPbの横方向の長さは、例えば、50画素〜150画素であり、基準領域SPbの縦方向の長さは、右側スキャン画像BR3の縦方向の長さの1/4〜1/2である。
S605では、CPU410は、候補領域を決定するための所定の参照範囲REbに基づいて決定される複数個の候補領域の中から、1個の注目候補領域を決定する。参照範囲REbは、例えば、図16(A)に示すように、左側原稿画像BILの右端の近傍部分に破線で示す範囲である。参照範囲REbは、縦M2画素×横N2画素分の矩形の範囲である(M2、N2は、2以上の整数)。N2は、例えば、数100であり、M2は、例えば、数十から数百である。参照範囲REbの右端は、左側原稿画像BILの右端と一致している。参照範囲REbの左端は、左側原稿画像BIL内における中央部CAを表す画像CIRの左端より左側に一致している。左側スキャン画像BL3における参照範囲REbの縦方向の中心の位置は、右側スキャン画像BR3における右側原稿画像BIRの基準領域SPbの上端と同じである。
CPU410は、参照範囲REb内の(M2×N2)個の画素位置から、1個の注目画素位置を選択する。CPU410は、当該注目画素位置に、基準領域SPbの左上の画素Pd(図16(A))が位置するように、基準領域SPbを配置した場合に、基準領域SPbと重なる左側原稿画像BIL内の領域が注目候補領域として特定される。このように、参照範囲REbを参照して、注目候補領域を特定する手法は、図14を参照して説明した第1配置位置決定処理の手法と同様である。候補領域が設定され得る領域である探索領域SAbは、図16(B)に示すように、左側原稿画像BILの右端の近傍に位置している。また、探索領域SAbは、左側原稿画像BIL内における中央部CAを表す画像CIRのうち、比較的広い部分を含む。この結果、基準領域SPbと類似する類似領域が、探索領域SAb内において決定できる確率を高めることができる。
図15のS610〜S635の処理は、図11のS410〜S435の処理と同一である。すなわち、S610〜S635の処理で、探索領域SAb内に設定される(M2×N2)個の注目領域のうち、基準領域SPbとの類似率が最も高い1個の類似領域CPbが決定される。
類似領域CPbが決定されると、S640にて、CPU410は、決定された類似領域CPbと基準領域SPbとの位置に基づいて、左側原稿画像BILと右側原稿画像BIRとの相対的は配置位置を決定して、第2配置位置決定処理を終了する。具体的には、図16(B)に示すように、右側原稿画像BIR内の基準領域SPbと、左側原稿画像BILの類似領域CPbと、が重なるように、配置位置が決定される。このように、第2配置位置決定処理では、類似領域CPbと基準領域SPbとに基づいて、縦方向の相対的な位置と、横方向の相対的な位置と、の両方が決定される。
類似領域CPbが決定できない場合には(S630:NO)、CPU410は、S645にて、左側原稿画像BILと右側原稿画像BIRとの相対的は配置位置をデフォルトの位置に決定して、第2配置位置決定処理を終了する。デフォルトの位置は、例えば、単純に左側スキャン画像BL3の右端と右側スキャン画像BR3の左端とが、全長において接する位置である。
以上説明した第2配置位置決定処理において配置位置を決定する方法では、第1の対象画像の原稿10の中央部CA、すなわち、2個の原稿画像BIL、BIRの両方に現れる部分を表す画像CIR内に、基準領域SPbが決定される(S602)。そして、左側原稿画像BIL内の一部の領域である探索領域SAbから、基準領域SPa内の画像と類似する類似画像を含む類似領域CPbが特定される(S605〜S635)。基準領域SPaと類似領域CPbとの位置に基づいて、2個の原稿画像BIL、BIRの相対的な位置が決定される(S640)。この結果、左側原稿画像BILの一部と右側原稿画像BIRの一部とが重なる配置位置を精度良く決定することができる。特に、スキャンパターンBを用いて生成される2個のスキャン画像を用いて、1個の原稿10を示す配置済画像を生成する際に、適切な配置位置を精度良く決定することができる。
こうすれば、第1の対象画像の一部と第2の対象画像の一部とが重なる配置位置を精度良く決定することができる。スキャンパターンBが用いられる場合には、原稿10の中央部CAは、2個の原稿画像BIL、BIRの両方に現れる。このために、右側原稿画像BIRの中央部CAを表す画像CIR内に、基準領域SPbを決定するのが適切であり、第1配置位置決定処理における画素復元処理は必要ない。
以上の説明から解るように、左側原稿画像AIL、BILは、第1の対象画像の例であり、左側スキャン画像AL1、BL1は、第1の画像の例である。右側原稿画像AIR、BIRは、第2の対象画像の例であり、右側スキャン画像AR1、BR1は、第2の画像の例である。また、余白量判定処理において、余白が基準以上であるか否かを判断するための判定条件は、第1の条件、および、第2の条件の例である。特定色画素は、第1の画素および第2の画素の例である。
B.第2実施例:
上記第1実施例では、配置済画像において、2個の原稿画像は、2個の原稿画像の予め定められた2個の端が、横方向の中央部に位置するように配置される。これは、ユーザが、予め定められた方向で、原稿台255に原稿を配置しているという前提があるからである。しかしながら、例えば、ユーザが間違えた方向で原稿を原稿台255に配置した場合には、2個の原稿画像を、配置済画像内に適切な向きで配置できない場合がある。
第1実施例では、例えば、図4(B)、(C)、図6(A)、(B)に示すように、これらの図における原稿台255の上端と原稿10の上端とが一致するように、原稿10が原稿台255に対して配置される。これに代えて、第2実施例では、例えば、スキャンパターンAでは、図4(B)、(C)における原稿台255の上下方向の中央と、原稿10の上下方向の中央と、が一致するように、原稿10が原稿台255に対して配置される。この結果、図4(B)、(C)における原稿台255の上端側と下端側との両方に、原稿10が配置されない領域、すなわち、スキャン画像において余白となる領域が生じる。
また、スキャンパターンBでは、図6(A)、(B)における原稿台255の上下方向の中央と、原稿10の左領域10Lの上下方向の中央または右領域10Rの上下方向の中央と、が一致するように、原稿10が原稿台255に対して配置される。この結果、図6(A)、(B)における原稿台255の上端側と下端側の一方に原稿10が配置されない領域、すなわち、スキャン画像において余白となる領域が生じる。そして、図6(A)、(B)における原稿台255の上端側と下端側の他方の側には、原稿10が配置されない領域が生じない。
図17は、第2実施例の説明図である。図17には、スキャンパターンBで読み取られた場合に、生成され得るスキャン画像が図示されている。図17に示すように、スキャンパターンBにて生成され得るスキャン画像BL1a、BL1b、BR1a、BR1bでは、図17の左側、および、右側のうち一方の側には、余白が現れ、他方の側には、余白が現れない。一方、図示は省略するが、スキャンパターンAでは、生成され得るスキャン画像の左側および右側の両方に余白が現れる。
左側原稿画像BILは、原稿台255に原稿10が配置される方向によって、上下方向が逆になり得る。例えば、左側原稿画像BILを含むスキャン画像には、左側原稿画像BILの上下方向が互いに逆向きである2種類の左側スキャン画像BL1a、BL1bがある(図17)。同様に、左側原稿画像BILを含むスキャン画像にも、右側原稿画像BIRの上下方向が互いに逆向きである2種類の右側スキャン画像BR1a、BR1bがある。
図17(A)は、図6に示すように、原稿10を原稿台255に配置した場合に生成される左側スキャン画像BL1aと右側スキャン画像BR1aの組み合わせを示している。この場合には、左側原稿画像BILの右端と、右側原稿画像BIRの右端と、が横方向の中央部に位置するように、2個の原稿画像が配置済画像内に配置されることが適切である。例えば、第1実施例で説明したように、右側原稿画像BIRを180度回転させてから配置済画像内に配置することが適切である。
図17(B)は、左側スキャン画像BL1aと、右側スキャン画像BR1bの組み合わせを示している。この場合には、左側原稿画像BILの右端と、右側原稿画像BIRの左端と、が横方向の中央部に位置するように、2個の原稿画像が配置済画像内に配置されることが適切である。
図17(C)は、左側スキャン画像BL1bと、右側スキャン画像BR1aの組み合わせを示している。この場合には、左側原稿画像BILの左端と、右側原稿画像BIRの右端と、が横方向の中央部に位置するように、2個の原稿画像が配置済画像内に配置されることが適切である。
図17(D)は、左側スキャン画像BL1bと、右側スキャン画像BR1bの組み合わせを示している。この場合には、左側原稿画像BILの左端と、右側原稿画像BIRの左端と、が横方向の中央部に位置するように、2個の原稿画像が配置済画像内に配置されることが適切である。
このように、配置済画像内の横方向の中央部に位置すべき2端の組み合わせは、4種類の組み合わせ、すなわち、(a)左側原稿画像BILの右端と右側原稿画像BIRの右端、(b)左側原稿画像BILの右端と右側原稿画像BIRの左端、(c)左側原稿画像BILの左端と右側原稿画像BIRの右端、(d)左側原稿画像BILの左端と右側原稿画像BIRの左端、がある。
スキャンパターンBが用いられる場合には、配置済画像内の横方向の中央部に位置すべき一方の端側には余白がないので、当該一方の端側の余白について、第1実施例と同様の余白量判定処理を実行すると、当該一方の端側の余白量は、基準未満であると判定される。一方、配置済画像内の横方向の中央部に位置すべきでない他方の端側には余白があるので、当該他方の端側の余白量について、第1実施例と同様の余白量判定処理を実行すると、当該他方の端側の余白は、基準以上であると判定される。
したがって、スキャンパターンBが用いられる場合には、4種類の2端の組み合わせのそれぞれについて、余白量判定処理を行うことで、適切な2端の組み合わせを判断することができる。そこで、第2実施例の配置前処理では、このような判断を行う処理を含んでいる。以下、詳細に説明する。
図18は、第2実施例の配置前処理のフローチャートである。S700では、CPU410は、上述した4種類の組み合わせの中から、処理対象の2端の組み合わせを決定する。
S705では、CPU410は、2端の組み合わせを構成する左側スキャン画像の特定の端側の余白について、余白量判定処理を実行する。余白量判定処理の具体的な処理は、第1実施例のスキャン画像の右側の余白についての余白量判定処理(図10)と同様である。この結果、左側スキャン画像の特定の端側の余白が、基準以上であるか否かが判定される。
S710では、CPU410は、2端の組み合わせを構成する右側スキャン画像の特定の端側の余白について、余白量判定処理を実行する。この結果、右側スキャン画像の特定の端側の余白が、基準以上であるか否かが判定される。
S715では、CPU410は、S705とS710にて、2個のスキャン画像の特定の側の余白量の両方が基準以上であると判定されたか否かを判断する。2個のスキャン画像の特定の端側の余白量の両方が基準以上である場合には(S715:YES)、CPU410は、S725にて、第1配置位置決定処理を実行する。すなわち、この場合には第1の配置方法が選択される。
2個のスキャン画像の特定の端側の余白量のいずれかが基準未満である場合には(S715:NO)、CPU410は、S720にて、2個のスキャン画像の特定の側の余白量の両方が基準未満であると判定されたか否かを判断する。2個のスキャン画像の特定の端側の余白量の両方が基準未満である場合には(S720:YES)、CPU410は、S730にて、第2配置位置決定処理を実行する。すなわち、この場合には第2の配置方法が選択される。
なお、第1配置位置決定処理および第2配置位置決定処理の具体的な処理は、第1実施例の第1配置位置決定処理および第2配置位置決定処理と同様である。この処理によって、処理対象の組み合わせを構成する2端が、横方向の中央部に位置するように2個の原稿画像が配置される場合の2個の原稿画像の配置位置が決定される。
そして、2個のスキャン画像の特定の端側の余白量の一方が基準未満であり、他方が基準以上である場合には(S720:NO)、いずれの配置位置決定処理も実行することなく、S735に処理を進める。すなわち、この場合には、配置方法が選択されない。
S735では、CPU410は、全ての2端の組み合わせについて処理したか否かを判断する。未処理の組み合わせがある場合には(S735:NO)、CPU410は、S700に戻って、未処理の組み合わせを、処理対象の2端の組み合わせとして選択する。
全ての2端の組み合わせが処理された場合には(S735:YES)、CPU410は、S740にて、1個以上の組み合わせについて、第1配置位置決定処理または第2配置位置決定処理が実行されて、2個の原稿画像の配置位置が決定されたか否かを判断する。1個以上の組み合わせについて、配置位置が決定された場合には(S740:YES)、CPU410は、S745にて、第1配置位置決定処理または第2配置位置決定処理において、最も類似率が高い類似領域が決定された2端の組み合わせを、配置済画像を生成する際の2端の組み合わせとして決定する。また、CPU410は、当該2端の組み合わせについて決定された2個の原稿画像の配置位置を、配置済画像を生成する際の2個の原稿画像の配置位置として決定する。
全ての組み合わせについて、配置位置が決定されない場合には(S740:NO)、CPU410は、S750にて、2端の組み合わせをデフォルトの組み合わせ、例えば、上述した4種類の組み合わせ(a)〜(d)のうち、(a)の左側原稿画像BILの右端と右側原稿画像BIRの右端の組み合わせを、配置済画像を生成する際の2端の組み合わせとして決定する。また、CPU410は、配置済画像を生成する際の2個の原稿画像の配置位置を、デフォルトの配置位置に決定する。デフォルトの配置位置は、例えば、第1実施例で説明した図15のS645にて決定されるデフォルトの配置位置と同じである。
第2実施例の配置前処理が終了すると、図2のS40の配置済画像生成処理では、CPU410は、配置前処理にて決定された組み合わせを構成する2端が、横方向の中央部に位置するように、2個の原稿画像が配置された配置済画像を表す配置済画像データを生成する。
以上説明した第2実施例によれば、左側原稿画像の1個の端と右側原稿画像の1個の端との特定の組み合わせが、処理対象の2端の組み合わせとして選択される(S700)。そして、(1)選択済の特定の組み合わせについて、左側原稿画像の余白が基準以上、かつ、右側原稿画像の余白が基準以上である場合に(S715:YES)、第1の配置方法が選択される(S725)。この場合には、処理対象の2端の組み合わせは、配置済画像内の横方向の中央部に位置すべき2端の組み合わせである可能性がある。そして、処理対象の2端の組み合わせは、配置済画像内の横方向の中央部に位置すべき2端の組み合わせである場合には、スキャンパターンAを用いられた可能性が高いので、第1の配置方法を用いて、配置位置を決定すべきであるからである。
さらに、本実施例では、(2)選択済の特定の組み合わせについて、左側原稿画像の余白が基準未満、かつ、右側原稿画像の余白が基準未満である場合に(S720:YES)、第2の配置方法が選択される(S730)。この場合には、処理対象の2端の組み合わせは、配置済画像内の横方向の中央部に位置すべき2端の組み合わせである可能性が高い。そして、処理対象の2端の組み合わせは、配置済画像内の横方向の中央部に位置すべき2端の組み合わせである場合には、スキャンパターンBを用いられた可能性が高いので、第2の配置方法を用いて、配置位置を決定すべきであるからである。
そして、(3)選択済の特定の組み合わせについて、左側原稿画像の余白が基準以上、かつ、右側原稿画像の余白量が基準未満である場合、および、左側原稿画像の余白が基準未満、かつ、右側原稿画像の余白が基準以上である場合に(S720:NO)、配置方法が選択されない。この場合には、処理対象の2端の組み合わせは、配置済画像内の横方向の中央部に位置すべき2端の組み合わせである可能性が低い。
配置方法が選択されない場合には(S720:NO)、CPU410は、2端の他の組み合わせを特定の組み合わせとして再度選択し(S700)、再度選択された2端の組み合わせについて、上記(1)〜(3)の処理を再度実行する。
この結果、2個の原稿画像の特定の端側の余白量が基準量以上であるか否かに応じて、配置方法を適切に選択できるとともに、配置済画像における2個の原稿画像の配置の方向、例えば、一方の原稿画像を他方の原稿画像に対して180度回転させるべきか否かを適切に決定することができる。
さらに、本実施例では、1個の組み合わせについて、配置位置が決定された場合であっても、全ての組み合わせについて、処理が行われる(S735)。そして、最も類似率が高い類似領域が決定された2端の組み合わせが、最終的に、配置済画像において、横方向の中央部に位置する2端の組み合わせとして決定される。この結果、横方向の中央部に位置する2端の組み合わせを、精度良く決定することができる。
C.第3実施例:
上記第3実施例では、第2実施例と同様に、横方向の中央部に位置する2端の組み合わせを決定するための配置前処理が実行される。図19は、第3実施例の配置前処理のフローチャートである。S800〜S815の処理は、図18のS700〜S715の処理と同じである。
2個のスキャン画像の特定の端側の余白量の両方が基準以上である場合には(S815:YES)、CPU410は、第2実施例と同様に、S820にて、第1配置位置決定処理を実行する。すなわち、この場合には第1の配置方法が選択される。そして、2個のスキャン画像の特定の端側の余白量のいずれか一方が基準未満である場合には(S815:NO)、CPU410は、S825にて、第2配置位置決定処理を実行する。すなわち、この場合には第2の配置方法が選択される。すなわち、第3実施例では、第2実施例と異なり、処理対象の2端の組み合わせについて、配置方法が選択されない場合はない。
S830では、CPU410は、直前に実行された第1配置位置決定処理または第2配置位置決定処理において、類似率が閾値以上の類似領域が決定されたか否かを判断する。類似率が閾値以上の類似領域が決定された場合には(S830:YES)、CPU410は、S835にて、現在の2端の組み合わせを、配置済画像を生成する際の2端の組み合わせとして決定する。また、CPU410は、当該2端の組み合わせについて決定された2個の原稿画像の配置位置を、配置済画像を生成する際の2個の原稿画像の配置位置として決定する。
類似率が閾値以上の類似領域が決定されていない場合には(S830:NO)、CPU410は、S840にて、全ての2端の組み合わせについて処理したか否かを判断する。未処理の組み合わせがある場合には(S840:NO)、CPU410は、S800に戻って、未処理の組み合わせを、処理対象の2端の組み合わせとして選択する。
全ての2端の組み合わせが処理された場合には(S840:YES)、CPU410は、S845にて、2端の組み合わせをデフォルトの組み合わせを、配置済画像を生成する際の2端の組み合わせとして決定する。また、CPU410は、配置済画像を生成する際の2個の原稿画像の配置位置を、デフォルトの配置位置に決定する。デフォルトの組み合わせおよび配置位置は、例えば、第2実施例と同じである。
以上説明した第3実施例によれば、左側原稿画像の1個の端と右側原稿画像の1個の端との特定の組み合わせが、処理対象の2端の組み合わせとして選択される(S800)。そして、CPU410は、選択済の記特定の組み合わせについて、配置方法を選択する(S815〜S825)。そして、選択された配置方法を用いた配置位置決定処理において、適切な配置位置を決定できない場合、すなわち、該配置位置決定処理において閾値以上の類似率を有する類似領域が決定できない場合には(S830:NO)、CPU410は、他の2端の組み合わせを特定の組み合わせとして再度選択し(S800)、再度選択された特定の組み合わせについて、配置方法を再度選択する(S815〜S825)。この結果、2個の原稿画像の特定の端側の余白量が基準量以上であるか否かに応じて選択される配置方法を用いて配置位置を決定できるか否かに基づいて、配置済画像における2個の原稿画像の配置の方向を適切に決定することができる。
また、第2実際例と異なり、全ての2端の組み合わせについて、必ずしも処理を行う必要がないので、処理速度を向上できる。
D.変形例:
(1)上記第2実施例では、2端の組み合わせのうち、2個のスキャン画像の一方の余白量が基準未満であり、他方の余白量が基準以上となる組み合わせについては、配置位置決定処理は実行されない。すなわち、このような組み合わせについては、配置位置が決定されない。これに代えて、このような組み合わせについても、第1配置位置決定処理または第2配置位置決定処理を実行して、配置位置を決定しても良い。そして、S745にて、決定された全ての配置位置の中から、1個の配置位置が決定されてもよい。
(2)上記第1実施例では、左側スキャン画像と右側スキャン画像の両方について、余白量判定処理が実行されている(図9のS205、210)。これに代えて、左側スキャン画像と右側スキャン画像の一方についてのみ、余白量判定処理が実行されても良い。この場合には、例えば、一方のスキャン画像の右側の余白量が基準値以上である場合には、第1の配置方法が選択され、基準値未満である場合には、第2の配置方法が選択される。
(3)上記第1実施例では、図4、図6に示すように、予め定められた向きで原稿10が原稿台255に配置されることが前提である。しかしながら、特にスキャンパターンAでは、原稿10の折れ線VLが原稿台255の手前側(すなわち、図4(B)、(C)の下側)に配置されるべきところ、原稿10の折れ線VLが原稿台255の奥側(すなわち、図4(B)、(C)の上側)に配置される間違いが起こりやすい。このために、第1実施例において、スキャンパターンAが用いられた場合に実行される図11の第1配置位置決定処理は、第2実施例において説明した原稿画像の2端の4種類の組み合わせ(a)〜(d)について、4回繰り返されてもよい。この場合には、4回繰り返された第1配置位置決定処理のうち、S435にて選択された類似領域の類似率が最も高い第1配置位置決定処理で決定される相対的な配置位置が、最終的な配置位置として決定されることが好ましい。
(4)上記各第1実施例の図8の配置前処理では、2個のスキャン画像(図5(B)のAL2とAR2、または、図7(B)のBL2とBR2)の右端側の余白が基準以上であるか否かに基づいて、第1配置位置決定処理と第2配置位置決定処理とのいずれを実行するかが判断されている。これに代えて、2個のスキャン画像の右端側と左端側の両方について余白が基準以上であるか否かが判定され、当該判定結果に基づいて、第1配置位置決定処理と第2配置位置決定処理とのいずれを実行するかが判断されても良い。例えば、スキャンパターンBでは、図6に示すように原稿10が原稿台255に対して正しく配置される場合には、2個のスキャン画像の右端側と左端側の両方の余白がほとんどなくなる。また、スキャンパターンBでは、図4に示すように原稿10が原稿台255に対して正しく配置される場合には、2個のスキャン画像の一方の側の余白がほとんどなくなり、他方の側には余白が存在する。したがって、2個のスキャン画像の右端側と左端側の両方の余白が基準未満である場合に、第2配置位置決定処理を実行すると判断され、2個のスキャン画像の右端側と左端側の余白の少なくとも一方が基準以上である場合に、第1配置位置決定処理を実行すると判断されても良い。
(5)上記第1実施例では、余白ライン数WLNが閾値THw以上であるか否かが、余白量が基準以上であるか否かを判定するための判定条件である。これに代えて、他の判定条件が採用されても良い。例えば、CPU410は、例えば、スキャン画像において、原稿画像のエッジを検出することによって、原稿画像の範囲、すなわち、上下左右の端を特定する。そして、CPU410は、特定された原稿画像の範囲に含まれない画素のうち、特定された原稿画像の右端と、スキャン画像の右端と、の間に存在する画素が、横方向に連続する個数を算出する。そして、当該横方向に連続する個数が閾値以上である場合に、余白量が基準以上であると判断されても良い。
(6)上記第1実施例の図13の画素復元処理では、左側原稿画像AILの画素を用いて、左側復元領域AL内に左側復元画素が生成され、右側原稿画像AIRの画素を用いて、右側復元領域AR内に右側復元画素が生成される。これに代えて、左側復元画素と、右側復元画素と、のうちの一方だけが生成されても良い。例えば、右側復元画素だけが生成され、左側復元画素が生成されない場合には、基準領域SPaは第1実施例と同様に右側復元画素によって構成される領域とされ、探索領域SAaは、第1実施例と異なり、左側原稿画像AILの右端の近傍領域のみを含む範囲とされる。また、左側復元画素だけが生成され、右側復元画素が生成されない場合には、基準領域SPaは、第1実施例と異なり、右側原稿画像AIRの左端近傍の領域とされ、探索領域SAaは、第1実施例と同様に、左側原稿画像AILの右端の近傍領域と、左側復元画素によって構成される領域と、を含む範囲とされる。
(7)スキャンパターンAでは、折れ線VLで二つ折りにされた原稿10の両面を読み取ることによって、2個の原稿画像AIL、AIRをそれぞれ含む画像を表す画像データが生成されている(図2のS15)。これに代えて、折れ線VLで切断されて物理的に2つに分離された原稿10を、2回に分けて読み取ることによって、2個の原稿画像AIL、AIRをそれぞれ含む画像を表す画像データが生成されてもよい。
(8)上記実施例では、左側原稿画像と右側原稿画像とが横方向に並んで配置される配置済画像を表す配置済画像データが生成される。これに代えて、一の原稿画像と、他の原稿画像と、が縦方向に並んで配置される配置済画像を表す配置済画像データが生成されても良い。この場合には、例えば、一の原稿画像を含むスキャン画像の下側の余白量と、他の原稿画像を含むスキャン画像の上側の余白量と、がそれぞれ基準以上であるか否かが判断される。そして、当該判断結果に基づいて、一の原稿画像と他の原稿画像を配置済画像に配置する際の配置方法が決定されれば良い。
(9)上記実施例では、サーバ400は、S25にて、スキャンデータを画像ファイルの形式で取得し、S45にて、配置済画像データを画像ファイルの形式で出力(送信)している。これに代えて、例えば、上記変形例のように、複合機200のCPU210がS25〜S45の処理を実行する場合には、CPU210は、スキャナ部250を用いて生成されたスキャンデータを画像ファイルに変換することなく、そのまま取得しても良い。また、CPU210は、配置済画像データを画像ファイルに変換することなく、そのまま配置済画像データを用いて用紙に印刷することによって、配置済画像データを出力しても良い。
(10)上記実施例では、2個の画像データを用いて、2個の原稿画像が配置された配置済画像を表す配置済像データが生成されている。これに限らず、任意の個数の画像データを用いて、1個の配置済画像が生成されても良い。例えば、4個の画像データを用いて、4個の原稿画像が配置された配置済画像を表す配置済画像データが生成されてもよい。
(11)上記実施例では、配置済画像データの生成に用いられる2個の画像データは、複合機200のスキャナ部250によって生成される。これに限らず、光学的に読み取られた画像を表す種々の画像データを採用可能である。例えば、デジタルカメラによる撮影によって二つ折りにされた原稿10の両面がそれぞれ光学的に読み取られることによって、2個の画像データが生成されても良い。あるいは、デジタルカメラによる撮影によって、原稿10の左領域10Lと部分領域CARと、該原稿10の右領域10Rと部分領域CALと、がそれぞれ光学的に読み取られることによって、2個の画像データが生成されても良い。また、これらの画像データは、読取装置(スキャナやデジタル)によって生成された画像データに限らず、描画作成や文書作成などのアプリケーションプログラムを用いて作成された画像データであっても良い。
(12)上記実施例においてサーバ400のCPU410によって実行される処理(例えば、図2のS25〜S40の処理)は、例えば、複合機200のCPU210によって実行されても良い。この場合には、サーバ400は不要であり、複合機200が単体で図2の処理を実行すればよい。また、サーバ400のCPU410によって実行される処理は、複合機200と接続されたパーソナルコンピュータ500(図1)のCPU(図示省略)によって実行されても良い。例えば、パーソナルコンピュータ500のCPUは、パーソナルコンピュータ500にインストールされたスキャナドライバプログラムを実行することによって、これらの処理を実行しても良い。また、サーバ400は、本実施例のように1つの計算機で構成されても良く、互いに通信可能な複数個の計算機を含む計算システムによって構成されていても良い。
(13)上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。