以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
図1は、本発明の実施の形態の1つにおけるMFPの外観を示す斜視図である。図1を参照して、MFP(Multi Function Peripheral)100は、原稿読取装置の一例であり、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置(ADF)120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、ユーザーインターフェースとしての操作パネル160とを含む。
図2は、ADFおよび原稿読取部の内部構成の概略を示す図である。ADF120は、原稿101を読取位置Lに搬送するためのタイミングローラ対121と、読取位置L付近において原稿の搬送をガイドするための上部規制板123と、読取位置Lを通過した原稿101を排出するために原稿101を搬送するためのローラ対122とを備える。
ADF120は、原稿トレイ120A上に積載された複数の原稿101の最上段から1枚の原稿をさばき、タイミングローラ対121に供給する。タイミングローラ対121は、原稿101を読取位置Lに搬送する。読取位置Lを通過した原稿は、ローラ対122によって原稿排紙トレイ120B上に排出される。上部規制板123は、原稿の通路側の読取位置L付近に背景板124を有する。背景板124は、原稿を透過した光を反射するため、反射率が高く、かつ、反射率が均一であることが望ましい。反射する光にムラがあると、ノイズとなるからである。
原稿読取部130は、透明な部材から構成された原稿台125と、原稿の搬送経路の一部を形成する通紙ガイド127と、原稿台125と通紙ガイド127との間に設置されたシェーディング板126と、光を照射するためのライン光源129と、ライン光源129からの光を反射させる反射部材131と、反射ミラー132,133と、スライダ128と、レンズ134と、3つのラインセンサを備えた読取部135とを含む。
原稿101は、タイミングローラ対121により、原稿台125と上部規制板123との間を矢印D1の方向に搬送される。そして、搬送されながら読取位置Lにおいて、読取部135によりその画像が逐次読取られる。ADF120が原稿を搬送する方向は、読取位置Lにおいて副走査方向である。
スライダ128は、ライン光源129、反射部材131および反射ミラー132を保持する。スライダ128は、図中D2方向に往復して移動することが可能であり、原稿を読取る間は読取位置Lの下方位置で停止し、原稿を読取る前の段階でシェーディング板126の下方位置で停止する。スライダ128の移動に伴って、反射ミラー133が移動することにより、反射光の光路長が実質的に一定に保たれる。
スライダ128がシェーディング板126の下方に位置するとき、ライン光源129が照射する光は、シェーディング板126に照射される。ライン光源129が照射した光の一部がシェーディング板126で反射して、さらに、反射ミラー132,133で反射してレンズ134に導かれる。レンズ134は、それに入射する光を集光して読取部135の3つのラインセンサそれぞれに結像する。
スライダ128が読取位置Lの下方に位置するとき、ライン光源129が照射する光は、読取位置Lに照射される。読取位置Lに原稿101が存在すれば、ライン光源129が照射した光の一部が原稿で反射して、さらに、反射ミラー132,133で反射してレンズ134に導かれる。レンズ134は、それに入射する光を集光して読取部135の3つのラインセンサ上に結像する。また、読取位置Lに原稿101が存在しなければ、ライン光源129が照射した光の一部が背景板124で反射して、さらに、反射ミラー132,133で反射してレンズ134に導かれる。レンズ134は、それに入射する光を集光して読取部135の3つのラインセンサ上に結像する。
原稿読取部130は、ADF120が複数の原稿を順に搬送する場合に、ADF120が原稿の搬送を開始する前の段階で、スライダ128をシェーディング板126の下方に移動させる。この段階で、後述するシェーディング補正用データが生成される。原稿読取部130は、シェーディング補正用データが生成された後、スライダ128を読取位置Lの下方に移動させ、ADF120に複数枚の原稿を順に搬送させる。
ライン光源129は、副走査方向と実質的に垂直な主走査方向に配列された複数の光源を含む。したがって、ライン光源129は、一度に、原稿の一部に光を照射し、原稿の光が照射される部分は、長辺が主走査方向に平行な矩形の領域である。ライン光源129に含まれる複数の光源それぞれは、複数のグループのいずれかに属する。複数のグループは、ライン光源129に含まれる複数の光源のすべてを含む全灯グループを含む。さらに、複数のグループは、ライン光源129に含まれる複数の光源のうち(2N−1)(Nは正の整数)個の間隔を隔てて配列された複数の光源からなる第1グループと、第1グループに属する複数の光源それぞれに対して配列順がNだけ異なる第2グループとを含む。この場合、第1グループに属する複数の光源の間隔と、第2グループに属する複数の光源の間隔とは同じである。したがって、第1グループと第2グループとの組は、複数の光源が配列される間隔が異なるN種類が存在する。ここでは、第1グループと第2グループとの組を光源組といい、第N組と表す。例えば、Nが「1」の場合における第1組は、ライン光源129に含まれる複数の光源のうち1個の間隔を隔てて配列された複数の光源からなる第1グループと、第1グループに属する複数の光源それぞれに対して配列順が1だけ異なる複数の光源を含む第2グループとを含む。Nが「2」の場合における第2組は、ライン光源129に含まれる複数の光源のうち3個の間隔を隔てて配列された複数の光源からなる第1グループと、第1グループに属する複数の光源それぞれに対して配列順が2だけ異な複数の光源を含む第2グループとを含む。
読取部135は、3つのラインセンサを備える。3つのラインセンサそれぞれは、主走査方向に複数の光電変換素子が配列されている。したがって、3つのラインセンサそれぞれは、複数の光電変換素子がそれぞれ出力する複数の画素値を主走査方向に配列したラインデータを出力する。ここでは、3つのラインセンサそれぞれが光を受光してからラインデータをするまでの時間を、読取時間という。3つのラインセンサそれぞれは、互いに分光感度が異なるフィルタを有し、複数の光電変換素子はフィルタを透過した光を受光する。具体的には、読取部135は、赤(R)の波長の光を透過するフィルタを有するラインセンサと、緑(G)の波長の光を透過するフィルタを有するラインセンサと、青(B)の波長の光を透過するフィルタを有するラインセンサと、を含む。以下、赤(R)の波長の光を透過するフィルタを有するラインセンサをラインセンサRといい、緑(G)の波長の光を透過するフィルタを有するラインセンサをラインセンサGといい、青(B)の波長の光を透過するフィルタを有するラインセンサをラインセンサBという。このため、ラインセンサRは、赤色の光の強度を示すラインデータRを出力し、ラインセンサGは、緑色の光の強度を示すラインデータGを出力し、ラインセンサBは、青色の光の強度を示すラインデータBを出力する。
3つのラインセンサは、副走査方向に所定の距離を隔てて予め定められた順番で配置される。ここでは、原稿の読取ラインに換算して3ライン分の距離を隔てて原稿の搬送方向で赤、緑、青の順に配置されている。なお、3つのラインセンサを配置する間隔および順番は、これに限定されるものではない。3つのラインセンサは、3ライン分の距離を隔てて赤、緑、青の順に配置されるので、3つのラインセンサは、同時に原稿の異なる位置で反射した光を受光する。具体的には、原稿のある位置で反射した光は、まず、赤の光を受光するラインセンサで受光され、原稿が3ライン分搬送された後に緑の光を受光するラインセンサで受光され、さらに原稿が3ライン分搬送された後に青の光を受光するラインセンサで受光される。読取部135は、3つのラインセンサがそれぞれ出力する3つのラインデータを原稿の同じ位置に対応させるために、3つのラインセンサがそれぞれ出力する3つのラインデータを選択するタイミングを調整して出力する。
なお、本実施の形態においては、読取部135に3つのラインセンサを設けるようにしたが、4つ以上のラインセンサを設けるようにしてもよい。
図3は、MFPのハードウェア構成の一例を示すブロック図である。図3を参照して、MFP100は、ADF120、原稿読取部130、画像形成部140、給紙部150および操作パネル160と接続されたメイン回路110を含む。メイン回路110は、MFP100の全体を制御するCPU(中央演算処理装置)111と、通信インターフェース(I/F)部112と、ROM113と、RAM114と、大容量記憶装置としてのハードディスクドライブ(HDD)116と、ファクシミリ部117と、外部記憶装置119と、を含む。CPU111は、ADF120、原稿読取部130、画像形成部140、給紙部150および操作パネル160と接続され、MFP100の全体を制御する。
ファクシミリ部117は、公衆交換電話網(PSTN)に接続され、PSTNにファクシミリデータを送信する、またはPSTNからファクシミリデータを受信する。ファクシミリ部117は、受信したファクシミリデータを、HDD116に記憶するとともに、画像形成部140でプリント可能なプリントデータに変換して、画像形成部140に出力する。これにより、画像形成部140は、ファクシミリ部117により受信されたファクシミリデータの画像を用紙に形成する。また、ファクシミリ部117は、HDD116に記憶されたデータをファクシミリデータに変換して、PSTNに接続されたファクシミリ装置に送信する。
通信I/F部112は、ネットワークにMFP100を接続するためのインターフェースである。通信I/F部112は、TCP(Transmission Control Protocol)またはFTP(File Transfer Protocol)等の通信プロトコルで、ネットワークに接続された他のコンピューターまたはデータ処理装置と通信する。なお、通信I/F部112が接続されるネットワークは、ローカルエリアネットワーク(LAN)であり、接続形態は有線または無線を問わない。またネットワークは、LANに限らず、ワイドエリアネットワーク(WAN)、公衆交換電話網(PSTN)、インターネット等であってもよい。
ROM113は、CPU111が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。RAM114は、CPU111がプログラムを実行する際の作業領域として用いられる。また、RAM114は、原稿読取部130から連続的に送られてくる読取画像を一時的に記憶する。
操作パネル160は、MFP100の上面に設けられる。操作パネル160は、表示部160Aと操作部160Bとを含む。表示部160Aは、例えば、液晶表示装置(LCD)であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。なお、LCDに代えて、画像を表示する装置であれば、例えば、有機EL(electroluminescence)ディスプレイを用いることができる。
操作部160Bは、タッチパネルと、複数のハードキーとを含む。タッチパネルは、静電容量方式である。なお、タッチパネルは、静電容量方式に限らず、例えば、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式等の他の方式を用いることができる。ハードキーは、例えば接点スイッチである。タッチパネルは、表示部160Aの表示面中でユーザーにより指示された位置を検出する。ユーザーがMFP100を操作する場合は直立した姿勢となる場合が多いので、表示部160Aの表示面、タッチパネルの操作面およびハードキーは、上方を向いて配置される。ユーザーが表示部160Aの表示面を容易に視認することができ、ユーザーが指で操作部160Bを容易に指示することができるようにするためである。
外部記憶装置119は、CPU111により制御され、CD−ROM(Compact Disk Read Only Memory)119A、または半導体メモリが装着される。本実施の形態においては、CPU111は、ROM113に記憶されたプログラムを実行する例を説明するが、CPU111は、外部記憶装置119を制御して、CD−ROM119AからCPU111が実行するためのプログラムを読出し、読み出したプログラムをRAM114にロードして、実行するようにしてもよい。
なお、CPU111が実行するためのプログラムを記憶する記録媒体としては、CD−ROM119Aに限られず、フレキシブルディスク、カセットテープ、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROM、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)などの半導体メモリ等の媒体でもよい。さらに、CPU111がネットワークに接続されたコンピューターからプログラムをダウンロードしてHDD116に記憶する、または、ネットワークに接続されたコンピューターがプログラムをHDD116に書込みするようにして、HDD116に記憶されたプログラムをRAM114にロードしてCPU111で実行するようにしてもよい。ここでいうプログラムは、CPU111により直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
本実施の形態におけるMFP100は、読取対象となる原稿に形成された凹凸部分を検出する。原稿に形成される凹凸部は、例えば、原稿に鉛筆やボールペン等で手書きで記述された部分である。特に、画像が顔料で印刷された原稿に、ボールペンで手書きする場合、インクが原稿に付着しないことがあるが、ポールペンで加圧された部分が凹形状に変化する。本実施の形態におけるMFP100は、原稿に形成された凹凸部分を検出することにより、原稿に鉛筆やボールペン等で手書きで記述された部分を検出する。
ここで、ライン光源129の光源組として、第1組を用いる場合を例に凹凸部分を検出する原理を説明する。第1組は、ライン光源129に含まれる複数の光源のうち1個の間隔を隔てて配列された複数の光源からなる第1グループと、第1グループに属する複数の光源それぞれに対して配列順が1だけ異なる複数の光源を含む第2グループとを含む。
MFP100は、第1グループに属する複数の光源を点灯し、第2グループに属する複数の光源を消灯した状態でラインセンサGが出力する第1ラインデータと、第2グループに属する複数の光源を点灯し、第1グループに属する複数の光源を消灯した状態でラインセンサGが出力する第2ラインデータと、を用いて原稿に形成された凹凸部分を検出する。
図4は、原稿の一部を示す第1の図である。図4においては、ユーザーがボールペンで原稿101に文字「A」を描いた原稿の一部の部分300を示している。図4を参照して、原稿101の一部の部分300は、凹形状の部分303を含む。図では、部分303をハッチングを付して示す。凹形状の部分303は、「A」の文字の形状である。領域301は、ラインセンサGで読み取る領域を示す。領域301Aは、領域301の一部である。
図5は、第1ラインデータの一部の一例を示す第1の図である。図では、画素値が低くなる部分をハッチングで示している。図5は、第1ラインデータのうち図4に示した領域301Aに対応する部分を示している。なお、図5においては、原稿101の凹形状の部分303に対応する部分303A,303Bを示すために点線を付しているが、点線は実際には存在しない。原稿101の一部の部分300に含まれる凹形状の部分303には、ライン光源129に含まれる複数の光源のうち第1グループに属する複数の光源から照射される光が斜めに照射される。このため、原稿101の一部の部分300に含まれる凹形状の部分303に対応する、第1ラインデータの部分303A,303Bにおいては、光源側の画素の画素値が、光源と反対側の画素の画素値よりも低くなる。凹部分において、光が照射されない部分が発生するからである。
図6は、第2ラインデータの一部の一例を示す第1の図である。図では、画素値が低くなる部分をハッチングで示している。図6は、第2ラインデータのうち図4に示した領域301Aに対応する部分を示している。なお、図6においては、原稿101の凹形状の部分303に対応する部分303A,303Bを示すために点線を付しているが、点線は実際には存在しない。原稿101の一部の部分300に含まれる凹形状の部分303には、ライン光源129に含まれる複数の光源のうち第2グループに属する複数の光源から照射される光が斜めに照射される。このため、原稿101の一部の部分300に含まれる凹形状の部分303に対応する、第2ラインデータの部分303A,303Bにおいて、光源側の画素の画素値が、光源と反対側の画素の画素値よりも低くなる。凹部分において、光が照射されない部分が発生するからである。
図7は、合成ラインデータの一部の一例を示す第1の図である。図では、画素値が低くなる部分をハッチングで示している。なお、図7においては、原稿101の凹形状の部分303に対応する部分303A,303Bを示すために点線を付しているが、点線は実際には存在しない。図7に示す合成ラインデータは、図5に示した第1ラインデータと、図6に示した第2ラインデータとを合成したラインデータである。合成ラインデータは、第1ラインデータと第2ラインデータとの間で対応する2つの画素の画素値のうち小さい値を、対応する画素の画素値としたラインデータである。図7を参照して、合成ラインデータは、原稿101の一部の部分300に含まれる凹形状の部分303に対応する部分303Aに、第1ラインデータの部分303Aにおいて画素値が低くなる部分と、第2ラインデータの部分303Aにおいて画素値が低くなる部分と、を含む。また、合成ラインデータは、原稿101の一部の部分300に含まれる凹形状の部分303に対応する部分303Bに、第1ラインデータの部分303Bにおいて画素値が低くなる部分と、第2ラインデータの部分303Bにおいて画素値が低くなる部分と、を含む。合成ラインデータにおいて、第1ラインデータの部分303Aにおいて画素値が低くなる部分と第2ラインデータの部分303Aにおいて画素値が低くなる部分とを含む連続する部分303Aを特定することができる。また、合成ラインデータにおいて、第1ラインデータの部分303Bにおいて画素値が低くなる部分と第2ラインデータの部分303Bにおいて画素値が低くなる部分とを含む連続する部分303Bを特定することができる。
図8は、原稿の一部を示す第2の図である。図8においては、硬化により隆起するインクで原稿101に文字「A」を描いた原稿の一部の部分310を示している。図8を参照して、原稿101の一部の部分310は、凸形状の部分313を含む。図では、部分313をハッチングを付して示す。凸形状の部分313は、「A」の文字の形状である。領域311は、ラインセンサGで読み取る領域を示す。領域311Aは、領域311の一部である。
図9は、第1ラインデータの一部の一例を示す第2の図である。図では、画素値が低くなる部分をハッチングで示している。図9は、第1ラインデータのうち図8に示した領域311Aに対応する部分を示している。なお、図9においては、原稿101の凸形状の部分313に対応する部分313A,313Bを示すために点線を付しているが、点線は実際には存在しない。原稿101の一部の部分310に含まれる凸形状の部分313には、ライン光源129に含まれる複数の光源のうち第1グループに属する複数の光源から照射される光が斜めに照射される。このため、原稿101の一部の部分310に含まれる凸形状の部分313に対応する、第1ラインデータの部分313A,313Bにおいては、光源と反対側の画素の画素値が、光源側の画素の画素値よりも低くなる。凸部分において、光が照射されない部分が発生するからである。
図10は、第2ラインデータの一部の一例を示す第2の図である。図では、画素値が低くなる部分をハッチングで示している。図10は、第2ラインデータのうち図8に示した領域311Aに対応する部分を示している。なお、図10においては、原稿101の凸形状の部分に対応する部分313A,313Bを示すために点線を付しているが、点線は実際には存在しない。原稿101の一部の部分310に含まれる凸形状の部分313には、ライン光源129に含まれる複数の光源のうち第2グループに属する複数の光源から照射される光が斜めに照射される。このため、原稿101の一部の部分310に含まれる凸形状の部分313に対応する、第2ラインデータの部分313A,313Bにおいて、光源と反対側の画素の画素値が、光源側の画素の画素値よりも低くなる。凸部分において、光が照射されない部分が発生するからである。
図11は、合成ラインデータの一部の一例を示す第2の図である。図では、画素値が低くなる部分をハッチングで示している。図11に示す合成ラインデータは、図9に示した第1ラインデータと、図10に示した第2ラインデータとを合成したラインデータである。合成ラインデータは、第1ラインデータと第2ラインデータとの間で対応する2つの画素の画素値のうち小さい値を、対応する画素の画素値としたラインデータである。図11を参照して、合成ラインデータは、原稿101の一部の部分310に含まれる凸形状の部分313に対応する部分313Aに、第1ラインデータの部分313Aにおいて画素値が低くなる部分と、第2ラインデータの部分313Aにおいて画素値が低くなる部分と、を含む。また、合成ラインデータは、原稿101の一部の部分310に含まれる凸形状の部分313に対応する部分313に対応する部分313Bに、第1ラインデータの部分313Bにおいて画素値が低くなる部分と、第2ラインデータの部分313Bにおいて画素値が低くなる部分と、を含む。合成ラインデータにおいて、第1ラインデータの部分313Aにおいて画素値が低くなる部分と第2ラインデータの部分313Aにおいて画素値が低くなる部分とを含む連続する部分313Aを特定することができる。また、合成ラインデータにおいて、第1ラインデータの部分313Bにおいて画素値が低くなる部分と第2ラインデータの部分313Bにおいて画素値が低くなる部分とを含む連続する部分303Bを特定することができる。
図12は、MFPが備えるCPUの機能の一例を示すブロック図である。図12に示す機能は、MFP100が備えるCPU111が、ROM113、HDD116またはCD−ROM119Aに記憶された画像読取プログラムを実行することにより、CPU111に形成される機能である。図12を参照して、MFP100が備えるCPU111は、第1組決定部51と、第2組決定部53と、読取制御部55と、シェーディング補正部57と、ラインデータ取得部59と、画像データ生成部61と、文字認識部63と、通知部65と、画像補正部67と、凹凸検出部69と、を含む。
MFP100は、読取モードを、原稿の凹凸を検出しない通常モードと、原稿の凹凸を検出する凹凸検出モードとのいずれかに切り換える。MFP100は、ユーザーが操作パネル160を操作することにより、ユーザーによる操作に従って、読取モードを切り換える。
第1組決定部51は、読取モードが凹凸検出モードに切り換えられることに応じて、複数の光源組のうちから予め定められた1つを決定し、決定した光源組を読取制御部55に出力する。ここでは、第1組の光源組が予め定められている場合を例に説明する。
読取制御部55は、光源制御部71と、副走査制御部73と、を含む。光源制御部71は、ライン光源129を制御し、ライン光源129に含まれる複数の光源の少なくとも1つから光を照射させる。
光源制御部71は、読取モードが通常モードに切り換えられている場合、全灯グループを決定する。また、光源制御部71は、読取モードが凹凸検出モードに切り換えられている場合、全灯グループに加えて、第1組決定部51から入力される光源組で特定される第1グループおよび第2グループを決定する。光源制御部71は、第1組決定部51から入力される光源組が第1組の場合、第1グループを、ライン光源129に含まれる複数の光源のうち配列順が奇数番目の複数の光源の集合に決定し、第2グループを、ライン光源129に含まれる複数の光源のうち配列順が偶数番目の複数の光源の集合に決定する。光源制御部71は、全灯グループを選択する場合、全灯グループに属する複数の光源のすべてを予め定められた読取期間だけ点灯するとともに、全灯グループを選択していることを示す全灯信号をラインデータ取得部59に出力する。読取制御部55は、第1グループを選択する場合、第1グループに属する複数の光源のすべてを読取期間だけ点灯し、第1グループに属しない複数の光源のすべてを読取期間だけ消灯するとともに、第1グループを選択していることを示す第1信号をラインデータ取得部59に出力する。読取制御部55は、第2グループを選択する場合、第2グループに属する複数の光源のすべてを読取期間だけ点灯し、第2グループに属しない複数の光源のすべてを読取期間だけ消灯するとともに、第2グループを選択していることを示す第2信号をラインデータ取得部59に出力する。
光源制御部71は、読取モードが凹凸検出モードに切り換えられている場合、全灯グループ、第1グループおよび第2グループを順に選択し、この選択のサイクルを繰り返す。1つのサイクルは読取期間の3倍の期間である。具体的には、光源制御部71は、1サイクルにおいて、最初の読取期間に全灯グループを選択し、次の読取期間に第1グループを選択し、次の読取期間に第2グループを選択する。光源制御部71は、全灯グループを選択する場合、全灯グループに属する複数の光源のすべてを読取期間だけ点灯するとともに、全灯グループを選択していることを示す全灯信号をラインデータ取得部59に出力する。換言すれば、光源制御部71は、全灯グループを選択する場合、ライン光源129に含まれる複数の光源の全てを読取期間だけ点灯する。光源制御部71は、第1グループを選択する場合、第1グループに属する複数の光源のすべてを読取期間だけ点灯し、第1グループに属しない複数の光源のすべてを読取期間だけ消灯するとともに、第1グループを選択していることを示す第1信号をラインデータ取得部59に出力する。光源制御部71は、第2グループを選択する場合、第2グループに属する複数の光源のすべてを読取期間だけ点灯し、第2グループに属しない複数の光源のすべてを読取期間だけ消灯するとともに、第2グループを選択していることを示す第2信号をラインデータ取得部59に出力する。
副走査制御部73は、タイミングローラ対121を制御し、ライン光源129が原稿に光を照射する位置を移動させる。タイミングローラ対121は、原稿を副走査方向に搬送するので、副走査制御部73は、タイミングローラ対121を回転させることにより、ライン光源129が原稿に光を照射する位置を移動させる。読取モードが通常モードに切り換えられている場合における原稿の搬送速度がデフォルト値として予め定められている。デフォルト値の原稿の搬送速度は、読取部135に含まれる3つのラインセンサの読取時間と、ユーザーにより設定された解像度と、によって定まる。読取時間は固定値なので、解像度が高ければ、解像度が低い場合よりも搬送速度は遅くなる。ここでは、ユーザーにより指定される解像度がある解像度に固定されている場合を例に説明する。この場合、副走査制御部73は、読取モードが通常モードに切り換えられている間は、原稿を解像度に対して予め定められた搬送速度で原稿を搬送する。原稿を解像度に対して予め定められた搬送速度をデフォルト速度という。副走査制御部73は、読取モードが凹凸検出モードに切り換えられている間は、通常モードに切り換えられている間の原稿の搬送速度と異なる搬送速度で原稿を搬送する。具体的には、副走査制御部73は、読取部135に含まれる3つのラインセンサそれぞれの読取時間が、全灯グループ、奇数グループおよび偶数グループそれぞれに対して必要となるので、デフォルト速度の1/3の搬送速度で原稿を搬送する。
ラインデータ取得部59は、読取部135に含まれる3つのラインセンサそれぞれが出力するラインデータを取得する。具体的には、ラインデータ取得部59は、ラインセンサRが出力するラインデータRと、ラインセンサGが出力するラインデータGと、ラインセンサBが出力するラインデータBとを取得する。ラインデータ取得部59は、光源制御部71から全灯信号が入力されている間に取得される3つのラインデータを、全灯信号とともにシェーディング補正部57に出力する。ラインデータ取得部59は、光源制御部71から第1信号が入力されている間は、ラインセンサGが出力するラインデータGを取得し、ラインデータGを第1信号とともにシェーディング補正部57に出力する。ラインデータ取得部59は、光源制御部71から第2信号が入力されている間は、ラインセンサGが出力するラインデータGを取得し、ラインデータGを第2信号とともにシェーディング補正部57に出力する。
通常モードにおいては、ライン光源129に含まれる複数の光源のすべてが点灯するので、読取部135に含まれる3つのラインセンサそれぞれは、原稿がデフォルト速度で副走査方向に搬送されている間に、ライン光源129に含まれる複数の光源のすべてが点灯して原稿から反射した光をそれぞれ受光する。この場合、3つのラインセンサそれぞれは、読取時間が経過するごとにラインデータを出力する。通常モードにおいては、光源制御部71は全灯信号のみを出力するので、ラインデータ取得部59は、読取時間が経過するごとに、ラインセンサRが出力するラインデータRと、ラインセンサGが出力するラインデータGと、ラインセンサBが出力するラインデータBとを取得し、それらを全灯信号とともにシェーディング補正部57に出力する。シェーディング補正部57に同時に出力されるラインデータR、ラインデータGおよびラインデータBは、原稿の同じ位置を読み取ったデータである。
凹凸検出モードにおいは、全灯グループに含まれる複数の光源が点灯した後、第1グループに属する複数の光源が点灯し、その後、第2グループに属する複数の光源が点灯する。ラインデータ取得部59は、光源制御部71から全灯信号が入力されている場合には、ラインセンサRが出力するラインデータRと、ラインセンサGが出力するラインデータGと、ラインセンサBが出力するラインデータBとを取得し、それらを全灯信号とともにシェーディング補正部57に出力する。シェーディング補正部57に同時に出力されるラインデータR、ラインデータGおよびラインデータBは、原稿の同じ位置を読み取ったデータである。
ラインデータ取得部59は、光源制御部71から第1信号が入力されている場合には、ラインセンサGが出力するラインデータGを取得し、ラインデータGを第1信号とともにシェーディング補正部57に出力する。ラインデータ取得部59は、光源制御部71から第2信号が入力されている場合には、ラインセンサGが出力するラインデータGを取得し、ラインデータGを第2信号とともにシェーディング補正部57に出力する。第1信号と組になるラインデータGと、第2信号と組になるラインデータGと、全灯信号と組になるラインデータGとは、厳密には原稿の異なる位置を読み取ったデータであるが、凹凸検出モードにおいては原稿がデフォルト速度の1/3の搬送速度で搬送されるので、位置の差は原稿に形成された画像のサイズに比較して小さい。このため、ここでは、第1信号と組になるラインデータGと、第2信号と組になるラインデータGと、全灯信号と組になるラインデータGとは、原稿中の同一の位置を読み取ったデータとして取り扱う。
シェーディング補正部57は、読取部135に含まれる3つのラインセンサそれぞれが出力するラインデータを、シェーディング補正用のパラメータで補正する。シェーディング補正部57は、副走査制御部73が原稿を搬送する前の段階で、シェーディング補正用のパラメータを、グループごとに生成する。パラメータは、ライン光源129に含まれる複数の光源が照射する光の強度のムラを排除するために用いられる値である。例えば、シェーディング板126は反射率が一定となるように設計されており、3つのラインセンサそれぞれに含まれる光電変換素子が受光する光の量が一定となることを前提として、ラインデータに含まれる複数の画素値が同じ値となるように、パラメータを決定する。
まず、シェーディング補正部57は、スライダ128をシェーディング板126の下方に移動させる。そして、シェーディング補正部57は、全灯グループに対応し、かつ、3つのラインセンサそれぞれに対応するパラメータを生成する。具体的には、シェーディング補正部57は、ライン光源129に含まれる複数の光源のうち全灯グループに属する複数の光源を点灯させ、3つのラインセンサそれぞれが出力するラインデータに基づいて、ラインセンサRに対応するパラメータと、ラインセンサGに対応するパラメータと、ラインセンサBに対応するパラメータと、を生成する。
次に、シェーディング補正部57は、第1グループに対応するパラメータを生成する。シェーディング補正部57は、ライン光源129に含まれる複数の光源のうち第1グループに属する複数の光源を点灯させ、第1グループに属しない複数の光源を消灯した状態で、ラインセンサGが出力するラインデータに基づいて、第1グループおよびラインセンサGに対応するシェーディング補正用のパラメータを生成する。次に、シェーディング補正部57は、第2グループに対応するパラメータを生成する。具体的には、シェーディング補正部57は、ライン光源129に含まれる複数の光源のうち第2グループに属する複数の光源を点灯させ、第2グループに属しない複数の光源を消灯した状態で、ラインセンサGが出力するラインデータに基づいて、第2グループおよびラインセンサGに対応するシェーディング補正用のパラメータを生成する。その後、シェーディング補正部57は、スライダ128を読取位置Lの下方に移動させる。
シェーディング補正部57は、ラインデータ取得部59から全灯信号とともにラインデータR、ラインデータGおよびラインデータBが入力される。シェーディング補正部57は、全灯信号とともに入力されるラインデータRを、全灯グループおよびラインセンサRに対応するパラメータで補正し、全灯信号とともに入力されるラインデータGを、全灯グループおよびラインセンサGに対応するパラメータで補正し、全灯信号とともに入力されるラインデータBを、全灯グループおよびラインセンサBに対応するパラメータで補正する。シェーディング補正部57は、補正後のラインデータR、ラインデータGおよびラインデータBの組を画像データ生成部61に出力する。
シェーディング補正部57は、読取モードが通常モードに切り換えられている場合、読取時間が経過するごとに、補正後のラインデータR、ラインデータBおよびラインデータBの組を画像データ生成部61に出力する。シェーディング補正部57は、読取モードが凹凸検出モードに切り換えられている場合、読取時間の3倍の期間が経過するごとに、補正後のラインデータR、ラインデータBおよびラインデータBの組を画像データ生成部61に出力する。
シェーディング補正部57は、ラインデータ取得部59から第1信号とともにラインデータGが入力される場合、その後、ラインデータ取得部59から第2信号とともにラインデータGが入力される。シェーディング補正部57は、ラインデータ取得部59から第1信号とともに入力されるラインデータGを、第1グループおよびラインセンサGに対応するパラメータで補正した第1ラインデータを生成し、ラインデータ取得部59から第2信号とともに入力されるラインデータGを、第2グループおよびラインセンサGに対応するパラメータで補正した第2ラインデータを生成する。シェーディング補正部57は、第1ラインデータと第2ラインデータとの組を、凹凸検出部69に出力する。シェーディング補正部57は、読取モードが凹凸検出モードに切り換えられている場合、読取時間の3倍の期間が経過するごとに、第1ラインデータと第2ラインデータとの組を、凹凸検出部69に出力する。
凹凸検出部69は、シェーディング補正部57から入力される第1ラインデータと第2ラインデータとを、それらが入力される順に処理する。シェーディング補正部57から第1ラインデータと第2ラインデータとが入力される順番は、第1ラインデータと第2ラインデータとが副走査方向に配列される順を示す。以下、シェーディング補正部57から第1ラインデータと第2ラインデータとが入力される順番を、副走査方向の配列順という。
凹凸検出部69は、差分算出部81と、候補部分検出部83と、候補部分排除部85と、対象組検出部87と、を含む。差分算出部81は、シェーディング補正部57から入力される第1ラインデータと第2ラインデータとの差分である差分ラインデータを生成する。具体的には、第1ラインデータと第2ラインデータ間で、主走査方向に同じ位置に配列された画素値の差分を算出することにより、差分ラインデータを生成する。差分算出部81は差分ラインデータを候補部分検出部83に出力する。
候補部分検出部83は、差分ラインデータに含まれる複数の画素値のうち絶対値が所定の値以上の画素値が配列される部分を候補部分として検出する。換言すれば、候補部分検出部83は、第1のラインデータと第2のラインデータ間で、主走査方向に同じ位置に配列された画素値を比較し、第1のラインデータと第2のラインデータのいずれか1つにおいて、他のラインデータの画素値と所定の値以上の差がある画素値が配列された部分を候補部分として検出する。候補部分検出部83は、検出された候補部分と副走査方向の配列順との組を候補部分排除部85に出力する。
なお、差分ラインデータを生成するのに変えて、第1ラインデータと第2ラインデータ間で、主走査方向に同じ位置に配列された2つの画素値のうち小さな値の画素値を配列した合成ラインデータを生成するようにしてもよい。この場合、候補部分検出部83は、合成ラインデータに含まれる複数の画素値のうち所定の値以下の画素値が配列される部分を候補部分として検出する。
候補部分排除部85は、シェーディング補正部57から入力される第1ラインデータと第2ラインデータといおいて、候補部分の画素値を比較する。候補部分排除部85は、第1ラインデータと第2ラインデータのうちから候補部分の画素値が低いラインデータを特定し、特定されたラインデータの候補部分の画素値の変化が所定の値以上の場合、候補部分と副走査方向の配列順との組を対象組検出部87に出力するが、特定されたラインデータの候補部分の画素値の変化が所定の値より小さい場合、候補部分から排除する。候補部分の画素値の変化が所定の値より小さい場合、原稿の折り目である可能性が高いからである。
対象組検出部87は、候補部分排除部85から候補部分と副走査方向の配列順との組の1以上が入力される。対象組検出部87は、副走査方向の配列順が同じ第1ラインデータおよび第2ラインデータのうち、1以上の候補部分それぞれに対してその候補部分の画素値が低い一方をその候補部分が検出されたラインデータに特定する。対象組検出部87は、1のラインデータから検出された第1候補部分が、他のラインデータから検出された1以上の候補部分のうち第1候補部分から所定の間隔を置いて配置された第2候補部分が存在する場合に、第1候補部分と第2候補部分とを含む凹凸部分を抽出する。例えば、対象組検出部87は、第1のラインデータから検出された第1候補部分が、第2のラインデータから検出された1以上の候補部分のうち第1候補部分から所定の間隔を置いて配置された第2候補部分が存在する場合に、第1候補部分と第2候補部分とを含む凹凸部分を抽出する。所定の間隔は、ユーザーが原稿にポールペンなどで描画した線画の太さによって定まる。対象組検出部87は、抽出された凹凸部分と副走査方向の配列順との組を第2組決定部53および画像補正部67に出力する。
第2組決定部53は、凹凸検出部69から入力される凹凸部分のサイズに基づいて、複数の光源組のうちから1つを決定する。例えば、凹凸部分のサイズが大きいほど、Nの値が大きな光源組を選択する。ユーザーが原稿にポールペンなどで描画した線画の太さが太いほど、光源の間隔を広くすることにより、凹凸部分を検出する精度が向上する。例えば、凹凸部分のサイズと光源組とを関連付けたテーブルを予め準備しておき、凹凸部分のサイズに適した光源組を選択するようにしてもよい。第2組決定部53は、決定した光源組を読取制御部55に出力する。読取制御部55は、第2組決定部53から入力される光源組で定まる第1グループおよび第2グループを決定し、上述したのと同様にして、ライン光源129を制御する。
画像データ生成部61は、読取モードが通常モードに切り換えられている場合、読取時間が経過するごとに、シェーディング補正部57から、ラインデータR、ラインデータGおよびラインデータBの組が入力される。また、画像データ生成部61は、読取モードが凹凸検出モードに切り換えられている場合、読取時間の3倍の期間が経過するごとに、シェーディング補正部57から、ラインデータR、ラインデータGおよびラインデータBの組が入力される。画像データ生成部61は、複数のラインデータRを、それらが入力される順に副走査方向に配列することにより赤(R)に対応する画像データRを生成し、複数のラインデータGを、それらが入力される順に副走査方向に配列することにより緑(G)に対応する画像データGを生成し、複数のラインデータBを、それらが入力される順に副走査方向に配列することにより青(B)に対応する画像データBを生成する。画像データ生成部61は、生成された画像データを画像補正部67および文字認識部63に出力する。
画像補正部67は、画像データ生成部61から画像データR、画像データGおよび画像データBが入力され、凹凸検出部69から凹凸部分と副走査方向の配列順との組の1以上が入力される。画像補正部67は、凹凸部分と副走査方向の配列順との組の1以上に基づいて、凹凸部分を副走査方向に配列することにより凹凸部分データを生成する。凹凸部分データは、画像データR、画像データGおよび画像データBそれぞれにおける凹凸部分を示す。
画像補正部67は、画像データR、画像データGおよび画像データBを合成した合成画像を、凹凸部分を強調した画像、または凹凸部分を消去した画像に補正する。画像補正部67は、補色変更部75と、濃度変更部77と、拡大部78と、消去部79と、を含む。補色変更部75は、凹凸部分を、凹凸部分の周辺の領域の色の補色に変更する。画像データR、画像データGおよび画像データBそれぞれの凹凸部分の周辺の領域の画素値から周辺領域の色を決定し、画像データR、画像データGおよび画像データBの凹凸部分の画素値を、決定された色の補色を示す画素値に変更する。これにより、画像データR、画像データGおよび画像データBを合成した合成画像において、凹凸部分が周辺の領域の色の補色となるので、凹凸部分を強調することができる。
濃度変更部77は、凹凸部分の濃度を低い値に変更する。画像データR、画像データGおよび画像データBそれぞれの凹凸部分の画素値を小さな値に変更する。これにより、画像データR、画像データGおよび画像データBを合成した合成画像において、凹凸部分の濃度が低くなるので、凹凸部分を強調することができる。
拡大部78は、画像データR、画像データGおよび画像データBの凹凸部分を拡大する。画像データR、画像データGおよび画像データBそれぞれにおいて、凹凸部分および凹凸部分を周辺の画素の値を、凹凸部分の画素値の平均の値にする。これにより、画像データR、画像データGおよび画像データBを合成した合成画像において、凹凸部分が拡大されるので、文字などの線が太くなり、凹凸部分を強調することができる。
消去部79は、画像データR、画像データGおよび画像データBの凹凸部分を消去する。画像データR、画像データGおよび画像データBそれぞれにおいて、凹凸部分の画素値を、凹凸部分を周辺の画素の値の平均の値にする。これにより、画像データR、画像データGおよび画像データBを合成した合成画像において、凹凸部分を消去することができる。
文字認識部63は、画像データR、画像データGおよび画像データBを合成した合成画像中の凹凸部分を文字認識する。具体的には、合成画像から凹凸部分を抽出した凹凸画像を生成する。凹凸画像は2値画像であってもよい。文字認識部63は、凹凸画像を文字認識し、凹凸画像に含まれる文字部分に対して、文字認識に成功した部分の割合を、認識率として算出する。文字認識部63は、認識率を、通知部65に出力する。
通知部65は、認識率が所定のしきい値以下の場合に、ユーザーに通知する。通知内容は、凹凸部分の検出に失敗したことを示す。例えば、通知部65は、凹凸部分の検出に失敗したことを示すメッセージを表示部160Aに表示する。
図13および図14は、原稿読取制御処理の流れの一例を示すフローチャートである。原稿読取制御処理は、MFP100が備えるCPU111が、ROM113、HDD116またはCD−ROM119Aに記憶された画像読取プログラムを実行することにより、CPU111により実行される処理である。図13は、読取モードが凹凸検出モードに設定されている状態で、CPU111が実行する処理の流れを示す。
図13および図14を参照して、CPU111は、読取指示を受け付けたか否かを判断する(ステップS01)。ユーザーが操作部160Bが備えるスタートキーが押下されると、読取指示を受け付ける。読取指示を受け付けるまで待機状態となり(ステップS01でNO)、読取指示を受け付けたならば(ステップS01でYES)、処理をステップS02に進める。ステップS02においては、光源組に第1組を決定する。ここでは、第1組をデフォルトで定めておくようにしたが、第1組とは別に、第1組〜第N組のうちから任意に選択するようにしてもよい。また、光源組をユーザーが選択するようにしてもよい。次のステップS03においては、パラメータ決定処理を実行する。
図15は、パラメータ決定処理の流れの一例を示すフローチャートである。図15を参照して、CPU111は、スライダ128をシェーディング板126の下方に移動させる(ステップS31)。そして、サイクル読取処理を実行する。
図16は、サイクル読取処理の流れの一例を示すフローチャートである。CPU111は、全灯グループの光源を点灯する(ステップS41)。ライン光源129に含まれる複数の光源のすべてを点灯させる。そして、ラインデータRを取得する(ステップS42)。ラインセンサRが出力するラインデータをラインデータRとして取得する。次のステップS43においては、ラインデータGを取得する。ラインセンサGが出力するラインデータをラインデータGとして取得する。次のステップS44においては、ラインデータBを取得する。ラインセンサBが出力するラインデータをラインデータBとして取得する。
次のステップS45においては、第1グループの光源を点灯する。ライン光源129に含まれる複数の光源のうち第1グループに属する複数の光源のすべてを点灯し、第1グループに属しない複数の光源のすべてを消灯する。そして、第1ラインデータを取得する(ステップS46)。ここでは、ラインセンサGが出力するラインデータを第1ラインデータとして取得する。
次のステップS47においては、第2グループの光源を点灯する。ライン光源129に含まれる複数の光源のうち第2グループに属する複数の光源のすべてを点灯し、第2グループに属しない複数の光源のすべてを消灯する。そして、第2ラインデータを取得し(ステップS48)、サイクル読取処理を終了する。ここでは、ラインセンサGが出力するラインデータを第2ラインデータとして取得する。
図15に戻って、ステップS32でサイクル読取処理が実行されると、ライン光源129に含まれる複数の光源のすべてを点灯した状態で、ラインセンサR,ラインセンサG,およびラインセンサBがそれぞれ出力するラインデータR,ラインデータG,ラインデータBと、ライン光源129に含まれる第1グループに属する複数の光源のすべてを点灯した状態でラインセンサGが出力するラインデータGである第1ラインデータと、ライン光源129に含まれる第2グループに属する複数の光源のすべてを点灯した状態でラインセンサGが出力するラインデータGである第2ラインデータと、が取得される。
ステップS33においては、ラインデータRからラインセンサR用パラメータを生成し、処理をステップS34に進める。ステップS34においては、ラインデータGからラインセンサG用パラメータを生成し、処理をステップS35に進める。ステップS35においては、ラインデータBからラインセンサB用パラメータを生成し、処理をステップS36に進める。
ステップS36においては、第1ラインデータから第1グループ用パラメータを生成し、処理をステップS37に進める。ステップS37においては、第2ラインデータから第2グループ用パラメータを生成し、処理をステップS38に進める。ステップS38においては、スライダ128を読取位置Lの下方に移動させ、パラメータ設定処理を終了する。
図13に戻って、ステップS03においてパラメータ決定処理が実行された後に、搬送速度を決定する(ステップS04)。読取モードが凹凸検出モードの場合は、全灯グループに含まれる複数の光源を点灯してラインデータを取得し、第1グループに含まれる複数の光源を点灯してラインデータを取得し、第2グループに含まれる複数の光源を点灯してラインデータを取得する1サイクルで1ラインの読取を完了する。これに対して、読取モードが通常モードの場合は、全灯グループに含まれる複数の光源を継続して点灯し、ラインデータを取得するごとに1ラインの読取を完了する。このため、読取モードが凹凸検出モードの場合は、読取モードが通常モードの場合における搬送速度の1/3の搬送速度に決定する。
ステップS05においては、ADF120を制御して、読取対象となる原稿の搬送を開始する。次のステップS06においては、変数Mを「1」に設定する。変数Mは、ラインデータが副走査方向に配列される順番を示し、ライン番号ともいう。
次のステップS07においては、図16に示したサイクル読取処理を実行し、処理をステップS08に進める。ステップS07でサイクル読取処理が実行されると、ライン番号が第N番目のラインデータR、ラインデータG、ラインデータB、第1ラインデータおよび第2ラインデータが取得される。ステップS08においては、シェーディング補正処理を実行し、処理をステップS09に進める。
図17は、シェーディング補正処理の流れの一例を示すフローチャートである。図17を参照して、CPU111は、ラインデータRをラインセンサR用パラメータを用いて補正し(ステップS51)、処理をステップS52に進める。ラインセンサR用パラメータは、図15に示したステップS33において、生成されたパラメータである。ステップS52においては、ラインデータGをラインセンサG用パラメータを用いて補正し、処理をステップS53に進める。ラインセンサG用パラメータは、図15に示したステップS34において、生成されたパラメータである。ステップS53においては、ラインデータBをラインセンサB用パラメータを用いて補正し、処理をステップS54に進める。ラインセンサB用パラメータは、図15に示したステップS35において、生成されたパラメータである。
ステップS54においては、第1ラインデータを第1グループ用パラメータを用いて補正し、処理をステップS55に進める。第1グループ用パラメータは、図15に示したステップS36において、生成されたパラメータである。ステップS55においては、第2ラインデータを第2グループ用パラメータを用いて補正し、処理を原稿読取処理に戻す。第2グループ用パラメータは、図15に示したステップS37において、生成されたパラメータである。
図13に戻って、ステップS08においてシェーディング補正処理が実行されると、ライン番号が第N番目のラインデータR、ラインデータG、ラインデータB、第1ラインデータおよび第2ラインデータの補正が完了する。ステップS09においては、第1ラインデータと第2ラインデータとの差分である差分ラインデータを生成する。具体的には、第1ラインデータと第2ラインデータ間で、主走査方向に同じ位置に配列された画素値の差を算出することにより、差分ラインデータを生成する。
次のステップS10においては、差分ラインデータから候補部分を抽出し、処理をステップS11に進める。差分ラインデータに含まれる複数の画素値のうち絶対値が所定の値以上の画素値が配列される部分を候補部分として抽出する。ステップS11においては、折れ目排除処理を実行し、処理をステップS12に進める。ステップS12においては、凹凸部分検出処理を実行し、処理をステップS13に進める。
図18は、折れ目排除処理の流れの一例を示すフローチャートである。折れ目排除処理が実行される前の段階で、副走査方向の順番が第N番目の第1ラインデータと第2ラインデータおよび1以上の候補部分が決定されている。図18を参照して、CPU111は、処理対象となる1つの候補部分を選択する(ステップS61)。そして、第1ラインデータの候補部分の画素値と、第2ラインデータの候補部分の画素値とを比較する(ステップS62)。第1ラインデータの候補部分の画素値が、第2ラインデータの候補部分の画素値より小さいならば処理をステップS63に進めるが、そうでなければ処理をステップS66に進める。第1ラインデータの候補部分の画素値が、第2ラインデータの候補部分の画素値より小さい場合は、候補部分が第1ラインデータから抽出される場合である。また、第2ラインデータの候補部分の画素値が、第1ラインデータの候補部分の画素値より小さい場合は、候補部分が第2ラインデータから抽出される場合である。
ステップS63においては、第1ラインデータを処理対象に選択し、処理をステップS64に進める。ステップS64においては、第1ラインデータの候補部分の画素値の変化がしきい値T1以下か否かを判断する。第1ラインデータの候補部分の画素値の変化がしきい値T1以下ならば処理をステップS65に進めるが、そうでなければステップS65をスキップして処理をステップS69に進める。第1ラインデータの候補部分の画素値の変化がしきい値T1以下の場合には、候補部分に対応する原稿の部分は、原稿の折り目である可能性が高い。このため、ステップS65においては、ステップS61において選択された候補部分を候補部分から削除し、処理をステップS69に進める。
一方、ステップS66においては、第2ラインデータを処理対象に選択し、処理をステップS67に進める。ステップS67においては、第2ラインデータの候補部分の画素値の変化がしきい値T1以下か否かを判断する。第2ラインデータの候補部分の画素値の変化がしきい値T1以下ならば処理をステップS68に進めるが、そうでなければステップS68をスキップして処理をステップS69に進める。第2ラインデータの候補部分の画素値の変化がしきい値T1以下の場合には、候補部分に対応する原稿の部分は、原稿の折り目である可能性が高い。このため、ステップS68においては、ステップS61において選択された候補部分を候補部分から削除し、処理をステップS69に進める。
ステップS69においては、ステップS61において処理対象に選択されていない候補部分が存在するか否かを判断する。未選択の候補部分が存在するならば処理をステップS61に戻すが、そうでなければ処理を原稿読取制御処理に戻す。
図19は、凹凸部分検出処理の流れの一例を示すフローチャートである。凹凸部分検出処理が実行される前の段階で、副走査方向の順番が第N番目の第1ラインデータと第2ラインデータおよび1以上の候補部分が決定されている。図19を参照して、CPU111は、処理対象となる1つの候補部分を選択する(ステップS71)。そして、第1ラインデータの候補部分の画素値と、第2ラインデータの候補部分の画素値とを比較する(ステップS72)。第1ラインデータの候補部分の画素値が、第2ラインデータの候補部分の画素値より小さいならば処理をステップS73に進めるが、そうでなければ処理をステップS74に進める。ステップS73においては、候補部分を第1ライングループに分類し、処理をステップS75に進める。第1ライングループは、第1ラインデータから抽出された候補部分の集合である。一方、ステップS74においては、候補部分を第2ライングループに分類し、処理をステップS75に進める。第2ライングループは、第2ラインデータから抽出された候補部分の集合である。
ステップS75においては、ステップS61において処理対象に選択されていない候補部分が存在するか否かを判断する。未選択の候補部分が存在するならば処理をステップS71に戻すが、そうでなければ処理をステップS76に進める。
ステップS76においては、第1ライングループに分類された候補部分のうちから1つを第1候補部分として選択する。次のステップS77においては、第2ライングループに分類された候補部分のうちから1つを第2候補部分として選択する。そして、第1候補部分と第2候補部分との間の距離をしきい値T2と比較する(ステップS78)。第1候補部分と第2候補部分との間の距離がしきい値T2以下ならば処理をステップS79に進めるが、そうでなければ処理をステップS80に進める。
ステップS79においては、第1候補部分と第2候補部分とを含む凹凸部分を決定し、処理をステップS81に進める。ステップS80においては、次に処理対象となる第2候補部分が存在するか否かを判断する。第2ライングループに分類された候補部分のうちに、ステップS77において第2候補部分として選択されていない候補部分が存在するならば、次に処理対象となる第2候補部分が存在すると判断する。次に処理対象となる第2候補部分が存在するならば、処理をステップS77に戻すが、そうでなければ処理をステップS81に進める。ステップS81においては、次に処理対象となる第1候補部分が存在するか否かを判断する。第1ライングループに分類された候補部分のうちに、ステップS76において第1候補部分として選択されていない候補部分が存在するならば、次に処理対象となる第1候補部分が存在すると判断する。次に処理対象となる第1候補部分が存在するならば、処理をステップS76に戻すが、そうでなければ処理を原稿読取制御処理に戻す。
図13に戻って、ステップS13においては、ステップS07において、取得された第N番目のラインデータR,ラインデータG,ラインデータBと、ステップS12において検出された第N番目の凹凸部分とを決定する。次のステップS14においては、変数Mをインクリメントし、処理をステップS15に進める。ステップS15においては、原稿の搬送が終了したか否かを判断する。原稿が読取位置Lを通過したならば原稿の搬送が終了したと判断する。原稿の搬送が終了したならば処理をステップS16に進めるが、そうでなければ処理をステップS07に戻す。
ステップS16においては、画像データを生成する。処理がステップS16に進む段階で、第1番目から第M番目までのラインデータR,ラインデータG,ラインデータB、および凹凸部分が決定されている。第1番目から第M番目までのラインデータRを副走査方向に配列することにより画像データRを生成し、第1番目から第M番目までのラインデータGを副走査方向に配列することにより画像データGを生成し、第1番目から第M番目までのラインデータBを副走査方向に配列することにより画像データBを生成する。
次のステップS17においては、画像データの凹凸部分を文字認識し、処理をステップS18に進める。画像データR、画像データGおよび画像データBを合成した合成画像から凹凸部分を抽出した凹凸画像を生成する。凹凸画像は2値画像であってもよい。凹凸画像を文字認識し、凹凸画像に含まれる文字部分に対して、文字認識に成功した部分の割合を、認識率として算出する。
ステップS18においては、認識率がしきい値T3以下か否かを判断する。認識率がしきい値T3以下ならば処理をステップS19に進めるが、そうでなければ処理をステップS20に進める。ステップS19においては、エラー通知し、処理を終了する。例えば、凹凸部分が正しく検出できなかったことをユーザーに通知する。エラーメッセージを表示部160Aに表示するようにしてもよいし、ブザー音で通知するようにしてもよい。
ステップS20においては、凹凸部分補正処理を実行し、処理をステップS21に進める。例えば、画像データの凹凸部分を、凹凸部分の周辺の領域の色の補色に変更する。具体的には、画像データR、画像データGおよび画像データBそれぞれの凹凸部分の周辺の領域の画素値から周辺領域の色を決定し、画像データR、画像データGおよび画像データBの凹凸部分の画素値を、決定された色の補色を示す画素値に変更する。これにより、画像データR、画像データGおよび画像データBを合成した合成画像において、凹凸部分が周辺の領域の色の補色となるので、凹凸部分を強調することができる。
また、凹凸部分の濃度を低い値に変更するようにしてもよい。画像データR、画像データGおよび画像データBそれぞれの凹凸部分の画素値を小さな値に変更する。これにより、画像データR、画像データGおよび画像データBを合成した合成画像において、凹凸部分の濃度が低くなるので、凹凸部分を強調することができる。
また、画像データR、画像データGおよび画像データBの凹凸部分を拡大するようにしてもよい。画像データR、画像データGおよび画像データBそれぞれにおいて、凹凸部分の周辺の画素の値を、凹凸部分の画素値の平均の値にする。これにより、画像データR、画像データGおよび画像データBを合成した合成画像において、凹凸部分が拡大されるので、文字などの線が太くなり、凹凸部分を強調することができる。
また、画像データR、画像データGおよび画像データBの凹凸部分を消去するようにしてもよい。画像データR、画像データGおよび画像データBそれぞれにおいて、凹凸部分の画素値を、凹凸部分の周辺の画素の値の平均の値にする。これにより、画像データR、画像データGおよび画像データBを合成した合成画像において、凹凸部分を消去することができる。
ステップS21においては、画像データを出力し、処理を終了する。出力先は、ユーザーによる操作により定まる。例えば、ユーザーによる操作により出力先がHDD116に設定されている場合には、画像データをHDD116に記憶する。また、ユーザーによる操作により出力先が画像形成部140に設定されている場合には、画像形成部140を制御して、画像データの画像を用紙に形成させる。また、ユーザーによる操作により出力先が外部のコンピューターに設定されている場合には、通信I/F部112を制御して、画像データを外部のコンピューターに送信する。
上述した原稿読取制御処理は、光源組として第1組を選択して、凹凸部分を検出する場合における処理を説明したが、原稿をプレスキャンして最適な光源組を決定し、再度原稿をスキャンする場合に、決定した光源組でステップS04〜ステップS21までの処理を実行するようにしてもよい。具体的には、原稿をプレスキャンする間に図13に示したステップS02〜ステップS12までの処理を実行して、凹凸部分を検出する。例えば、凹凸部分のサイズが大きいほど、Nの値が大きな光源組を選択する。ユーザーが原稿にポールペンなどで描画した線画の太さが太いほど、光源の間隔を広くすることにより、凹凸部分を検出する精度が向上する。例えば、凹凸部分のサイズと光源組とを関連付けたテーブルを予め準備しておき、凹凸部分のサイズに適した光源組を選択するようにしてもよい。そして、検出された凹凸部分のサイズに基づいて、第1組から第2組のうちから最適な光源組を決定し、原稿を再度スキャンする間に、図13および図14に示したステップS02〜ステップS21までの処理を実行する。
<第1の変形例>
上述した実施の形態においては、第1ラインデータと、第2ラインデータとを、ラインセンサGが出力するラインデータとした。これは、緑色の光の反射率が、他の色の光に比較して高いからである。なお、第1ラインデータと第2ラインデータを、ラインセンサRまたはラインセンサBが出力するラインデータとするようにしてもよい。特に、原稿の下地の色が赤系の色が多い場合は、第1ラインデータと第2ラインデータを、ラインセンサRが出力するラインデータとするのが好ましい。また、原稿の下地の色が青系の色が多い場合は、第1ラインデータと第2ラインデータを、ラインセンサBが出力するラインデータとするのが好ましい。第1ラインデータと第2ラインデータを、ラインセンサR、ラインセンサGおよびラインセンサBのいずれが出力するラインデータとするかを、ユーザーが指定するようにしてもよい。また、読み取らせる原稿を、プレスキャンして、スキャンして得られる画像に基づいて、ラインセンサR、ラインセンサGおよびラインセンサBのいずれか1つを選択するようにしてもよい。
<第2の変形例>
上述した実施の形態においては、光源組を第1組とする場合を例に説明した。原稿に形成される凹凸部分のサイズによって、第1組から第N組の複数の光源組のうちで最適な光源組が異なる場合がある。サイズは、凹凸部分の主走査方向の距離と、凹凸部分の高さを含む。凹凸部分の高さは、凹凸部分の原稿に垂直な方向の距離である。このため、原稿に形成される凹凸部分の複数のサイズそれぞれに対して、第1組から第N組の複数の光源組のいずれか最適な光源組を対応付けたテーブルを記憶するようにしてもよい。任意の光源組で原稿をプレスキャンし、凹凸部分を検出して得られる凹凸部分のサイズに対してテーブルで定められた最適な光源組で原稿を読み取るようにすればよい。また、ユーザーが複数の光源組のいずれかを選択するようにしてもよい。
<第3の変形例>
上述した実施の形態においては、読取部135が、ラインセンサR,ラインセンサG,ラインセンサBの3つを含む場合を例に説明したが、1つのラインセンサを用いるようにしてもよい。この場合は、カラーの原稿を読み取る場合には、赤色の光を照射する光源Rと、緑色の光を照射する光源Gと、青色の光を照射する光源Bを用いるようにすればよい。この場合、光源Gに含まれる複数の光源を第1グループと第2グループとに分類する。そして、光源Rを点灯している間にラインセンサが出力するラインデータRを取得し、光源Gを点灯している間にラインセンサが出力するラインデータGを取得し、光源Bを点灯している間にラインセンサが出力するラインデータBを取得する。さらに、光源Gに含まれる複数の光源のうち第1グループに含まれる複数の光源を点灯した状態でラインセンサが出力するラインデータを第1ラインデータとして取得し、光源Gに含まれる複数の光源のうち第2グループに含まれる複数の光源を点灯した状態でラインセンサが出力するラインデータを第2ラインデータとして取得する。読取モードが通常モードの場合は、光源Rを点灯してラインデータRを取得し、光源Gを点灯してラインデータGを取得し、光源Bを点灯してラインデータBを取得するごとに1ラインの読取を完了する。これに対して、読取モードが凹凸検出モードの場合は、光源Rを点灯してラインデータRを取得し、光源Gを点灯してラインデータGを取得し、光源Bを点灯してラインデータBを取得し、光源Gの第1グループに含まれる複数の光源を点灯して第1ラインデータを取得し、光源Gの第2グループに含まれる複数の光源を点灯して第2ラインデータを取得する1サイクルで1ラインの読取を完了する。このため、読取モードが凹凸検出モードの場合は、読取モードが通常モードの場合における搬送速度の3/5の搬送速度に決定する。
また、光源Rに含まれる複数の光源と、光源Bに含まれる複数の光源と、光源Cに含まれる複数の光源とにおいて、それらが配置される主走査方向の位置を異ならせるようにしてもよい。例えば、光源Rから光を照射する場合には、光源Rに含まれる複数の光源のうち第1グループに含まれる複数の光源を点灯し、光源Bから光を照射する場合には光源Bに含まれる複数の光源のうち第2グループに含まれる複数の光源を点灯し、光源Cから光を照射する場合には光源Cに含まれる複数の光源のうち第1グループに含まれる複数の光源を点灯する。この場合には、光源Rを点灯している間にラインセンサが出力するラインデータRを取得し、光源Gを点灯している間にラインセンサが出力するラインデータGを取得し、光源Bを点灯している間にラインセンサが出力するラインデータBを取得する。さらに、凹凸部分を検出する場合には、ラインデータR、ラインデータGおよびラインデータBを用いる。例えば、ラインデータR、ラインデータGおよびラインデータB間で対応する画素値を比較して、少なくとも1つのラインデータの画素値が、他の全てのラインデータの画素値と異なる場合に、その画素値の部分を候補部分として検出するようにすればよい。この場合には、読取モードが凹凸検出モードの場合は、読取モードが通常モードの場合における搬送速度と同じ搬送速度とすることができる。具体的には、第1グループに対応するラインデータは、ラインデータRおよびラインデータBであり、第2グループに対応するラインデータは、ラインデータGである。このため、ラインデータRとラインデータGとを用いて凹凸部分を検出してもよいし、ラインデータBとラインデータGとを用いて凹凸部分を検出してもよい。
ただし、光源R,光源G,光源Bそれぞれの光量が通常モードの場合よりも減少するので、画質が劣化する。このため、ユーザーにより設定される読取解像度が所定の値以下の場合に有効とするようにするのが好ましい。
<第4の変形例>
上述した実施の形態においては、ライン光源129に含まれる複数の光源それぞれは、複数のグループのいずれかに属し、複数のグループは、全灯グループと、ライン光源129に含まれる複数の光源のうち(2N−1)(Nは正の整数)個の間隔を隔てて配列された複数の光源からなる第1グループと、第1グループに属する複数の光源それぞれに対して配列順がNだけ異なる第2グループとを含む場合を例に説明した。複数のグループは、ライン光源129に含まれる複数の光源のうち1以上を含む第1グループと、ライン光源129に含まれる複数の光源のうち1以上を含む第2グループと、するようにしてもよい。この場合、第1グループに属する1以上の光源と、第2グループに属する1以上の光源とが完全に同一でなければよい。
また、第1グループおよび第2グループのいずれか一方は、全灯グループとしてもよい。例えば、第1グループを全灯グループとする場合には、ラインデータGと第1ラインデータとが同一となるので、第1ラインデータを取得する必要がない。この場合には、搬送速度を、読取モードが通常モードにおける搬送速度の3/4にすることができる。
<第5の変形例>
上述した実施の形態においては、ライン光源129に含まれる複数の光源それぞれは、複数のグループのいずれかに属し、複数のグループは、全灯グループと、第1グループと、第2グループとを含む場合を例に説明した。複数のグループは、全灯グループの他に3以上のグループとするようにしてもよい。例えば、複数のグループが、全灯グループの他にL個(Lは正の整数)のグループを含む場合、ライン光源129に含まれる複数の光源のうち第Lグループに含まれる1以上の光源のみが点灯した状態でラインセンサGが出力する第Lラインデータを取得する。L個のラインデータを用いて候補部分を検出する場合には、L個のラインデータ間で対応する画素値を比較して、少なくとも1つのラインデータの画素値が、他の全てのラインデータの画素値と異なる場合に、その画素値の部分を候補部分として検出するようにすればよい。
以上説明したように本実施の形態におけるMFP100は、原稿読取装置を含み、主走査方向に配列され、原稿に光を照射する複数の光源を備えたライン光源129と、主走査方向に配列され、原稿からの反射光を受光する複数の光電変換素子を備えた3つのラインセンサを備えた読取部135と、を備える。CPU111は、ライン光源129に含まれる複数の光源それぞれの点灯および消灯を制御する。具体的には、CPU111は、それぞれが複数の光源のうちから選ばれた複数の光源を含む第1グループおよび第2グループごとに、そのグループに含まれる複数の光源が点灯し、グループに含まれない複数の光源を消灯する状態で読取部135が備えるラインセンサGが出力するラインデータを取得することにより、第1グループに対応する第1ラインデータおよび第2グループに対応する第2ラインデータを取得する。そして、第1ラインデータを第1グループに対応するシェーディング補正用パラメータで補正し、第2ラインデータを第2グループに対応するシェーディング補正用パラメータで補正する。第1グループに属する複数の光源それぞれが照射する光の強度のバラツキを補正し、第2グループに属する複数の光源それぞれが照射する光の強度のバラツキを補正する。また、第1ラインデータおよび第2ラインデータのレベルを合致させることができる。さらに、CPU111は、第1グループに対応する補正後の第1ラインデータおよび第2グループに対応する補正後の第2ラインデータに基づいて、原稿に形成された凹凸部分を検出する。原稿に存在する凹凸部分は、光源から照射される光を遮る場合があり、第1ラインデータと第2ラインデータと間で、凹凸部分に対応する画素値が異なる場合がある。第1グループに対応する補正後の第1ラインデータおよび第2グループに対応する補正後の第2ラインデータに基づいて、原稿に形成された凹凸部分を検出するので、MFP100の構造を変更することなく、原稿から凹凸形状の部分を検出することができる。
また、MFP100は、第1グループに対応する補正後の第1ラインデータおよび第2グループに対応する補正後の第2ラインデータ間で、主走査方向に同じ位置に配列された画素値を比較し、第1ラインデータおよび第2ラインデータのいずれか1つにおいて、他のラインデータの画素値のすべてと所定の値以上の差がある画素値が配列された部分を候補部分として検出する。第1ラインデータおよび第2ラインデータ間で画素値が異なる部分を候補部分として検出するので、凹凸部分の一部を検出することができる。
また、MFP100は、第1ラインデータおよび第2ラインデータのうち1のラインデータから検出された第1候補部分が、他のラインデータから検出された1以上の候補部分のうち第1候補部分から所定の距離に配置された第2候補部分が存在する場合に、第1候補部分と第2候補部分とを含む凹凸部分を抽出する。第1候補部分と第2候補部分とは、同じ凹凸部分の異なる部分に対応する可能性が高い。このため、凹凸部分を正確に検出することができる。
また、第1グループは、ライン光源129が備える複数の光源のうち(2N−1)個の間隔を隔てて配列された複数の光源からなり、第2グループは、第1グループに属する複数の光源それぞれに対して配列順がNだけ異なる。このため、第1グルーブに属する複数の光源が原稿に照射する光の方向と、第2グループに属する複数の光源が原稿に照射する光の方向とを異ならせることができる。
また、MFP100は、光源組が第1組に含まれる第1グループに対応する第1ラインデータおよび第2グループに対応する第2ラインデータに基づいて、原稿に形成された凹凸部分を検出し、検出された凹凸部分のサイズに基づいて、複数の光源組のうちから第2組を選択し、第2組に含まれる第1グループに対応する第1ラインデータおよび第2グループに対応する第2ラインデータに基づいて、凹凸部分を検出する。このため、凹凸部分のサイズに適した光源組を選択するので、凹凸部分を正確に検出することができる。
また、MFP100は、複数のグループの数に応じて、原稿を副走査方向に搬送する搬送速度を変更する。第1グループおよび第2グループそれぞれでラインデータを取得する場合には、通常モードにおける搬送速度の1/3にする。これにより、副走査方向の解像度を変更することなく、原稿を読み取るとともに、凹凸部分を検出することができる。
また、MFP100は、ライン光源129が備える複数の光源のすべてからなる全灯グループに対応する複数のラインデータR、ラインデータGおよびラインデータBを合成した画像データR、画像データG、画像データBを生成し、画像データR、画像データG、画像データBを文字認識し、凹凸部分で文字が認識されない割合が所定の値以上の場合、エラーを通知する。このため、原稿に手書きされた文字が検出されない場合にエラーを通知することができる。
また、MFP100は、画像データR、画像データG、画像データBの凹凸部分を他の部分と区別可能な状態に補正するので、凹凸部分を強調することができる。
また、MFP100は、画像データR、画像データG、画像データBの凹凸部分の画素値を凹凸部分の近傍の部分の画素値に変更するので、凹凸部分を消去することができる。
また、MFP100は、ラインセンサR、ラインセンサG、ラインセンサBのうちラインセンサGが出力する第1ラインデータおよび第2ラインデータに基づいて、凹凸部分を検出するので、ラインセンサRが出力するラインデータRおよびラインセンサBが出力するラインデータBを凹凸部分の検出に使用しないので、処理量を低減することができる。
なお、上述した実施の形態においては、原稿読取装置の一例としてMFP100を例に説明したが、原稿を読み取る機能を備えていれば、スキャナー装置、ファクシミリ装置等であってもよい。また、原稿を副走査方向に搬送するようにしたが、原稿を原稿台125に固定して、スライダ128を副走査方向に移動させるようにしてもよい。
また、図13〜図19に示した原稿読取制御処理をMFP100に実行させる原稿読取方法、その原稿読取方法を、MFP100が備えるCPU111に実行させる原稿読取プログラムとして発明を捉えることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
<付記>
(2−1)
前記凹凸検出手段は、前記複数のラインデータのうち前記候補部分が検出されたラインデータにおいて、前記候補部分の画素値の変化が所定の値以下の場合は前記候補部分を候補部分から除外する、請求項2に記載の原稿読取装置。
この局面に従えば、候補部分の画素値の変化が所定値以下の場合、原稿の候補部分は、原稿の折り目である可能性が高い。このため、原稿の折り目以外の凹凸部分を検出することができる。
(4−1) 前記複数のグループは、前記複数の光源のうち配列順が奇数番目の複数の光源からなる第1グループと、前記複数の光源のうち配列順が偶数番目の複数の光源からなる第2グループとを含む、請求項4に記載の原稿読取装置。
(9−1)前記画像補正手段は、前記全灯グループに対応するラインデータについて、前記検出された凹凸部分を前記検出された凹凸部分の近傍の部分の補色に変換する、請求項9に記載の原稿読取装置。
(9−2)前記画像補正手段は、前記全灯グループに対応するラインデータについて、前記検出された凹凸部分の濃度を低くする、請求項9に記載の原稿読取装置。
(9−3)前記画像補正手段は、前記全灯グループに対応するラインデータについて、前記検出された凹凸部分を拡大する、請求項9に記載の原稿読取装置。
(11−1)
前記複数の光電変換素子は、複数の色にそれぞれ対応して複数あり、
前記凹凸検出手段は、前記複数の色のうち予め定められた1つの色に対応する前記複数の光電変換素子がそれぞれ出力する画素値を前記主走査方向に配列したラインデータに基づいて、凹凸部分を検出する、請求項11に記載の原稿読取装置。
(11−2)
前記複数の光源は、複数の色にそれぞれ対応して複数あり、
前記凹凸検出手段は、前記光源制御手段が前記予め定められた1つの色に対応する前記複数の光源を制御する間に、前記複数の光電変換素子がそれぞれ出力する画素値を前記主走査方向に配列したラインデータに基づいて、凹凸部分を検出する、請求項11に記載の原稿読取装置。