以下,本発明にかかる読取装置を具体化した実施の形態について,添付図面を参照しつつ詳細に説明する。本形態は,画像読取機能を備えたスキャナに本発明を適用したものである。
本形態のスキャナ100は,図1に示すように,本体の内部に,読取ヘッド21と,読取ヘッド22とを備え,本体の外部に,読み取る原稿Gがセットされる原稿載置トレイ91と,読取の終了した原稿が排出される原稿排出トレイ92とを備えている。スキャナ100の内部には,図1に一点鎖線で示すように,原稿載置トレイ91から原稿排出トレイ92へ至る原稿の搬送路61が形成されている。
そして,スキャナ100は,図1に示すように,搬送路61に沿って原稿を搬送するための各種の構成として,原稿の搬送方向について上流側から順に,例えば,給紙ローラ62,搬送ローラ対63,搬送ローラ対64を備えている。搬送ローラ対63は,原稿の搬送方向について,読取ヘッド21,22のいずれよりも上流側に配置されている。搬送ローラ対64は,原稿の搬送方向について,読取ヘッド21,22のいずれよりも下流側に配置されている。
給紙ローラ62は,原稿の搬送方向について,搬送ローラ対63よりも上流側に配置され,原稿載置トレイ91から搬送路61へ原稿を引き出す。搬送ローラ対63,64は,各ローラ対に原稿を挟んで回転することにより,搬送路61に沿って原稿を搬送する。搬送ローラ対63,64は,搬送部の一例である。
本形態のスキャナ100は,原稿載置トレイ91に複数枚の原稿が載置され,読取開始の指示を受け付けると,原稿を1枚ずつ順に連続して搬送する。搬送路61中の原稿の搬送は並行して実行されており,例えば,搬送ローラ対63,64の駆動を停止すると,搬送路61中の全ての原稿の搬送が停止される。なお,搬送される原稿と原稿との間には,適切な紙間が設けられる。紙間は,複数枚の原稿を1枚ずつ連続して搬送する場合における,先行の原稿の後端と後続の原稿の先端との間の距離である。
次に,スキャナ100の内部を拡大して図2に示す。読取ヘッド21と読取ヘッド22とは,原稿の搬送路61を挟んで互いに対向するとともに,原稿の搬送方向について互いにずれた位置に配置されている。読取ヘッド21,22は,搬送路61を搬送される原稿のうち,それぞれの設置されている側を向く面に光を照射し,受光量に基づく信号をそれぞれ出力する。この出力信号に基づいて,スキャナ100は,原稿の両面の画像を読み取って画像データを取得することができる。
以下では,図2に示すように,搬送路61に対して,読取ヘッド21の配置されている側を「下」,読取ヘッド22の配置されている側を「上」とする。そして,搬送路61を搬送される原稿のうち,下側の面を下面,上側の面を上面とする。つまり,スキャナ100は,読取ヘッド21にて原稿の下面を読み取り,読取ヘッド22にて原稿の上面を読み取る。なお,本形態のスキャナ100の読取方式は,CIS方式でもよいし,CCD方式でもよい。
また,図2に示すように,読取ヘッド21は,読取ヘッド22よりも,原稿の搬送方向について上流側に配置されている。そのため,読取ヘッド21の方が,読取ヘッド22よりも上流側の位置で原稿を読み取る。読取ヘッド21は,図2に示すように,原稿の搬送方向について,上流側から順に発光素子51と受光素子52と原稿抑え53とを有している。読取ヘッド22は,原稿の搬送方向について,下流側から順に発光素子55と受光素子56と原稿抑え57とを有している。なお,発光素子51,55,受光素子52,56は,いずれも,図2中で紙面に直交する方向に並んだ複数の光学素子を有している。あるいは,LED等の1つの発光素子を備え,導光板によって光を導くことで,紙面に直交する方向の所定の範囲に光を照射する構成であってもよい。
図2に示すように,読取ヘッド21の発光素子51は,原稿の搬送方向について上流側から下流側へ向かう斜め向きに光を照射する。読取ヘッド21は,発光素子51による光の反射光を受光素子52にて受光し,その受光量に応じた信号を出力する。一方,読取ヘッド22の発光素子55は,原稿の搬送方向について下流側から上流側へ向かう斜め向きに光を照射する。読取ヘッド22は,発光素子55による光の反射光を受光素子56にて受光し,その受光量に応じた信号を出力する。また,搬送路61を挟んで受光素子52に対向する位置には,読取ヘッド22の原稿抑え57が配置されている。また,搬送路61を挟んで受光素子56に対向する位置には,読取ヘッド21の原稿抑え53が配置されている。
発光素子51は,第1の光源の一例であり,発光素子55は,第2の光源の一例である。受光素子52は,第1の受光素子の一例であり,受光素子56は,第2の受光素子の一例である。読取ヘッド21は,第1読取部の一例であり,読取ヘッド22は,第2読取部の一例である。原稿の下面は,第1の面の一例であり,上面は,第2の面の一例である。
さらに,スキャナ100は,図2に示すように,原稿の搬送方向について,上流側の搬送ローラ対63より下流側で,読取ヘッド21,22のいずれよりも上流側の位置に,センサ27を備える。センサ27は,その検出位置における原稿の有無に応じた信号を出力する。以下では,センサ27の位置に原稿が有る場合のセンサ27の出力信号をONとし,センサ27の位置に原稿が無い場合のセンサ27の出力信号をOFFとする。センサ27は,センサの一例である。
スキャナ100は,センサ27の出力信号と原稿の搬送速度とに基づいて,原稿の位置や原稿の搬送方向の長さを取得できる。例えば,スキャナ100は,センサ27の出力がONとなっている時間と,原稿の搬送速度とから,センサ27を通過する原稿の搬送方向の長さを算出できる。また,スキャナ100は,センサ27の出力信号と原稿の搬送速度とに基づいて,読取ヘッド21,22にて原稿の読み取りを開始するタイミングを決定する。例えば,スキャナ100は,センサ27の出力信号に基づいて,原稿の先端が読取ヘッド21,22の読取位置に到達するより前に,読取ヘッド21,22による読み取りを開始する。
そして,スキャナ100は,原稿が読取位置に無い状態で画像の読み取りを開始すると,読取ヘッド21,22に対向する位置の原稿抑え53,57を読み取る。以下では,原稿が無い状態で読み取りを行い,原稿抑え53,57を読み取った際の画像の色を背景色とする。スキャナ100では,原稿抑え53,57のうち,原稿の搬送路61に対向する側の面の色は,例えば,グレー色である。つまり,背景色は,グレー色である。
スキャナ100では,原稿端部のエッジを検出するために原稿が読取ヘッド21,22の位置に到達する前に読取を開始するので,取得される画像データの画像には,少なくとも先端側に背景色の画像が含まれる。さらに,スキャナ100は,センサ27の出力信号に基づく原稿の後端が,読取ヘッド21,22の読取位置を通過した後も,所定期間読み取りを継続する。そのため,取得される画像データの画像には,原稿の後端側にも背景色の画像が含まれる。なお,原稿の先端は,原稿のうち,搬送方向について最も下流側の箇所であり,読取ヘッド21,22にて最初に読み取られる箇所である。そして,原稿の後端は,原稿のうち搬送方向について最も上流側の箇所である。
続いて,スキャナ100の電気的構成について説明する。スキャナ100は,図3に示すように,CPU31と,ROM32と,RAM33と,NVRAM(不揮発性RAM)34とを含むコントローラ30を備えている。また,スキャナ100は,読取ヘッド21と,読取ヘッド22と,搬送モータ24と,センサ27と,通信IF38と,操作パネル40とを備え,これらがコントローラ30に電気的に接続されている。
搬送モータ24は,原稿を搬送するための各種のローラを回転駆動するモータである。搬送モータ24は,例えば,図1に示した給紙ローラ62,搬送ローラ対63,搬送ローラ対64を駆動する。
ROM32には,スキャナ100を制御するための各種制御プログラムや各種設定,初期値等が記憶されている。RAM33は,各種制御プログラムが読み出される作業領域として,あるいは,データを一時的に記憶する記憶領域として利用される。CPU31は,ROM32から読み出した制御プログラムに従って,その処理結果をRAM33またはNVRAM34に記憶させながら,スキャナ100の各構成要素を制御する。
CPU31は,制御部の一例である。なお,コントローラ30が制御部であってもよい。なお,図3中のコントローラ30は,CPU31等,スキャナ100の制御に利用されるハードウェアを纏めた総称であって,実際にスキャナ100に存在する単一のハードウェアを表すとは限らない。例えば,コントローラ30はASICの一部であってもよいし,コントローラ30がASICを含んでいてもよい。
通信IF38は,ケーブル等を用いて接続された装置と通信を行うためのハードウェアである。通信IF38は,例えば,無線LAN,有線LAN,USB等の各種インターフェースが該当する。操作パネル40は,ディスプレイと入力ボタン等を有し,ユーザへの告知を表示し,ユーザによる入力操作を受け付ける。
続いて,本形態のスキャナ100における原稿の読取動作について説明する。本形態のスキャナ100は,原稿の読取動作として,原稿を搬送してその画像を読み取ることにより画像データを取得する。具体的に,本形態のスキャナ100は,原稿の読み取り指示を受け付けると,まず,原稿の搬送を開始する。指示された読み取りの設定が両面読み取りであれば,スキャナ100は,読取ヘッド21と22とをともに稼働させる。一方,片面読み取りであれば,スキャナ100は,読取ヘッド21と22とのいずれか一方のみを稼働させる。
そして,スキャナ100は,取得した画像データに基づいて,原稿の先端のエッジと後端のエッジとを検出する動作を実行する。スキャナ100では,図2に示したように,原稿に光を照射して読み取ることから,画像データの画像のうち原稿の範囲の外側には,原稿の端部の影による低輝度の影画像が現れる。スキャナ100は,取得した画像データの画像に表れる影画像を使用して,原稿のエッジを検出する。
なお,原稿のエッジとは,画像データ中の原稿の先端または後端の位置を示す情報である。スキャナ100にて検出される原稿のエッジは,原稿の搬送方向に直交する方向である幅方向についての両端の情報を含むことが好ましい。なお,エッジは,原稿の幅方向に連続する線状の位置情報でもよいし,複数の点位置の情報の集合であってもよいし,単に1点の情報でもよい。スキャナ100は,取得した原稿のエッジを使用して,例えば,画像データの画像の傾き補正,トリミング等の画像の加工処理を実行する。
エッジは,例えば,画像データの輝度値,RGBのいずれかの値等の各点の値が所定の閾値を超える位置である。読取ヘッド21,22の発光素子51,55によって原稿の中央側から原稿の端部側へ向けて発光した場合,逆向きに光を照射した場合と比較して,原稿の端部の外側にはっきりした影画像ができやすい。原稿と影画像との境界が明確であれば,輝度値が閾値を超える位置を明確に取得できるので,スキャナ100は,高精度にエッジを検出できる。
スキャナ100では,読取ヘッド21の発光素子51と読取ヘッド22の発光素子55とで光の照射方向が異なるため,読取ヘッド21と22とで高精度にエッジを検出できる側が異なる。具体的には,スキャナ100は,図2の構成を有していることから,読取ヘッド21の発光素子51によって原稿の先端側にはっきりした影画像が生じるので,スキャナ100は,読取ヘッド21の画像データから高精度に原稿の先端を検出できる。一方,読取ヘッド22の発光素子55によって原稿の後端側にはっきりした影画像が生じるので,スキャナ100は,読取ヘッド22の画像データから高精度に原稿の後端を検出できる。そこで,スキャナ100は,読取ヘッド21の読取結果に基づいて原稿の先端のエッジを検出し,読取ヘッド22の読取結果に基づいて原稿の後端のエッジを検出する。
続いて,前述した読取動作を本形態のスキャナ100において実現される,原稿の読み取り時に実行される読取処理について,図4のフローチャートを参照して説明する。この読取処理は,読取指示の受け付けを契機に,CPU31にて実行される。なお,読取指示は,操作パネル40を介してスキャナ100に入力されたものでも,通信IF38を介して外部装置から受信したものであってもよい。
読取処理では,スキャナ100は,まず,原稿の搬送を開始する(S101)。そして,スキャナ100は,センサ27がONとなったか否かを判断する(S102)。センサ27がONとなっていなければ(S102:NO),スキャナ100は,さらに原稿を搬送する。
そして,センサ27がONとなったら(S102:YES),スキャナ100は,原稿の搬送方向の長さの取得を開始する(S103)。つまり,スキャナ100は,センサ27がONとなっている継続時間と原稿の搬送速度とに基づいて,原稿の搬送方向の長さを算出する。S103は,算出処理の一例である。なお,原稿の搬送方向の長さは,後述するように,原稿がセンサ27の位置を通過して,センサ27がOFFとなった後に取得される。
次に,スキャナ100は,対象原稿の読取設定にて両面読取の設定が有効となっているか否かを判断する(S109)。そして,両面読取の設定が有効であると判断した場合には,(S109:YES),スキャナ100は,読取ヘッド21,22の両方にて読み取りを開始する(S111)。両面読取の設定は,特定条件の一例である。
そして,スキャナ100は,読取ヘッド21の読取結果である下面の画像データに基づいて,原稿の先端のエッジを検出する(S112)。スキャナ100は,原稿の先端から所定の長さ以上の読み取りが終了したら,読取動作と並行して先端のエッジ検出動作を開始する。具体的には,読み取り途中の画像データに含まれる原稿の先端側の影画像に基づいて,画像データ中の原稿の先端の位置を検出する。S112は,先端検出処理の一例である。前述したように,原稿の先端のエッジは,読取ヘッド21の画像データに基づいて高精度に検出できる。
さらに,スキャナ100は,先端のエッジの検出に成功したか否かを判断する(S113)。エッジの検出に成功したとは,エッジの位置の検出処理が完了し,その結果,適切なエッジが取得された場合が該当する。また,エッジの検出に成功しなかった場合としては,エッジの検出が完了しなかった場合と,検出したエッジが適切な結果とならなかった場合とがある。エッジの検出が完了しなかった場合とは,例えば,エッジにおける画像データの輝度差が小さく,エッジと判断できる位置がなかった場合が該当する。また,適切な結果とならなかった場合とは,例えば,原稿の先端に欠損等があって,得られたエッジの直線性が低い場合が該当する。
スキャナ100は,先端のエッジの検出に成功したと判断した場合(S113:YES)には,さらに可能であれば後端のエッジをも検出する両端検出処理を実行する(S115)。
次に,先端のエッジの検出に成功しており,さらに後端のエッジも検出するS115の両端検出処理について,図5のフローチャートを参照して説明する。両端検出処理では,まず,スキャナ100は,実行条件を満たしているか否かを判断する(S201)。実行条件は,後端のエッジ検出を実行することが望ましいと判断できる条件であり,例えば,後に詳述するように,メモリ残量大,紙間大,先端から定型サイズとは推定不能,が該当する。実行条件は,特定条件の一例である。本形態のスキャナ100では,例えば,実行条件を全て満たしている場合に,S201にてYESと判断し,実行条件のうちに満たさない条件がある場合には,S201にてNOと判断する。
両端検出処理では,スキャナ100は,先端のエッジ検出が成功した画像データについて,後端のエッジ検出を行う。先端のエッジを取得できており,センサ27の出力信号に基づいて原稿の搬送方向の長さを取得することができることから,スキャナ100は,後端のエッジ検出に失敗しても,後端の位置を推定できる。そこで,スキャナ100では,実行条件を満たしている場合には後端のエッジ検出を実行し,実行条件を満たしていない場合には後端のエッジ検出を実行しないとすることにより,他処理への影響の可能性を抑制する。
例えば,メモリ残量が少ない場合,後端のエッジ検出のためにメモリを確保すると,他の処理の遅延等が生じる可能性がある。そこで,スキャナ100は,メモリ残量が少ない場合には実行条件を満たさないと判断する。メモリ残量は,例えば,RAM33の空き容量であり,スキャナ100にてエッジ検出や読み取りのために使用できる記憶容量である。スキャナ100は,RAM33の空き容量が所定の容量閾値以下である場合,メモリ残量が少ないと判断する。この場合,RAM33は,記億部の一例である。
また,例えば,紙間が小さい場合,後端のエッジ検出を実行中に後続の原稿が読取位置に到達する可能性が高い。後続の原稿が読取位置に到達した場合には,前述したように,搬送を停止させることになり,処理の遅延の原因となる。スキャナ100は,紙間の距離が所定の紙間閾値以下である場合,紙間が小さいと判断する。そして,スキャナ100は,紙間が小さい場合には,実行条件を満たさないと判断する。
また,例えば,スキャナ100は,検出済みの先端のエッジから,原稿の大きさが定型サイズであると推定した場合には,高精度に後端のエッジを検出する必要性は小さいと判断する。スキャナ100は,例えば,先端のエッジに基づき,原稿の主走査方向,つまり,搬送方向に直交する方向のサイズを取得し,取得したサイズが,予め記憶している複数の定型サイズのいずれかに合致する場合には,原稿のサイズがその合致した定型サイズであると推定する。そして,スキャナ100は,原稿が定型サイズであると推定される場合には,実行条件を満たさないと判断する。
一方,原稿の端部の反りや歪み,原稿の紙種の違い等によって,センサ27の反応精度にはばらつきがあり,センサ27の信号に基づいて原稿の長さを取得した場合の精度は高くない。そこで,スキャナ100は,実行条件を満たすと判断した場合には,上面の画像データに基づいて,原稿の後端のエッジを検出する。これにより,スキャナ100は,上面の影画像に基づいて後端のエッジを検出するので,原稿の幅方向の全体のエッジを高精度に検出でき,高精度に原稿の形状を取得できる。
そして,実行条件を満たすと判断した場合(S201:YES),スキャナ100は,上面の読取データから後端のエッジ検出を開始する(S202)。S202は,後端検出処理の一例である。実行条件を満たしていれば,後端のエッジ検出を実行しても他処理への影響は小さいと推測でき,スキャナ100は,後端のエッジも高精度に検出することが好ましいと判断して,後端のエッジ検出を実行する。そして,後端のエッジ検出が完了したか否かを判断する(S203)。
上面の後端のエッジ検出が完了していないと判断した場合(S203:NO),スキャナ100は,後続の原稿が読取開始位置に到達したか否かを判断する(S204)。なお,後続の原稿とは,本処理にて読取の対象である対象原稿の次に搬送されている原稿である。スキャナ100は,複数枚の原稿を読み取るジョブでは,対象原稿の排出が完了する前に,後続の原稿の搬送を開始する。そのため,対象原稿の後端のエッジの検出が完了する前に,後続の原稿が読取開始位置に到達してしまう場合がある。そして,後続の原稿が読取開始位置に到達していないと判断した場合(S204:NO),スキャナ100は,後端のエッジ検出が完了するか,後続の原稿が読取開始位置に到達するかのいずれかとなるまで,後端のエッジ検出と搬送とを継続して実行する。
そして,後端のエッジ検出が完了する前に,後続の原稿が読取開始位置に到達したと判断したら(S204:YES),スキャナ100は,推奨条件を満たすか否かを判断する(S206)。推奨条件は,後端のエッジ検出を完了させることが望ましい条件であり,例えば,補修モードの設定が有効,原稿の地色と背景色とが異なること,が該当する。推奨条件は,特定条件の一例である。なお,S204では,読取開始位置に代えて,後続の原稿がセンサ位置に到達したか否かに基づいて判断してもよい。センサ位置は,センサ27の出力信号が,OFFからON に変化する原稿の位置である。
補修モードは,例えば,原稿の耳折れや破れによって原稿の外形が四角形でない場合,欠けていると推定される部分の画像を追加して,四角形の画像となるように補正するモードである。補修モードの設定が有効にされている場合には,高精度にエッジを検出することが望まれる。補修モードの設定は,ユーザによって指定され,NVRAM34に記憶される。
また,前述したように画像データには,原稿の画像の少なくとも前後に背景色の画像が含まれる。スキャナ100は,画像データから原稿の範囲を推定し,トリミングすることによりその範囲内の画像データを出力する場合には,検出した原稿の先端と後端とのエッジに基づいて,エッジの範囲内を原稿の範囲と推定する。原稿の地色と背景色とが異なる場合には,出力するデータに背景色の画像が含まれると目立ち易いため好ましくない。そのため,原稿の地色と背景色とが異なる場合には,エッジの検出精度を高めることが要求される。なお,原稿の地色は,既に読取の終了した部分の画像データから取得できる。また,地色と背景色との比較は,例えば,輝度の比較のみによってもよいし,より多くの色情報を用いて行ってもよい。
スキャナ100は,推奨条件を満たすと判断した場合(S206:YES),搬送を一旦停止する(S207)。S207は,停止処理の一例である。後端のエッジを検出する処理は,原稿の後端までの読み取りが終了してから開始され,ある程度の時間が掛かるとともに一定量以上のメモリを占有する。そのため,後端のエッジ検出が完了する前に,後続の原稿の読み取りを開始すると,処理の遅延や読み取りエラーの原因となる可能性がある。スキャナ100は,搬送を停止することにより,対象原稿の処理の完了を待って,後続の原稿の読み取りを開始する。つまり,スキャナ100は,搬送を一旦停止して,S203に戻り,対象原稿の後端のエッジ検出を継続する。なお,後続の原稿が到達して,S207にて搬送を一旦停止した後は,S204やS206の判断を行わず,S203にて検出を完了したか否かの判断のみを繰り返す。
そして,上面の後端のエッジ検出が完了したと判断したら(S203:YES),スキャナ100は,原稿を搬送して原稿の長さを取得する(S209)。なお,スキャナ100は,S207にて一旦搬送を停止した場合はS209にて搬送を再開する。この場合,S209は,再開処理の一例である。また,搬送を停止していなければ継続して搬送する。そして,S209では,スキャナ100は,原稿を搬送しつつセンサ27の出力信号を受信して,センサ27がOFFとなった時刻を取得する。そして,図4の読取処理のS103からの経過時間と搬送速度とに基づいて,原稿の長さを取得する。なお,搬送の途中で搬送を停止した場合は,スキャナ100は,停止時間を経過時間から除く。
さらに,スキャナ100は,図4のS113にて完了した下面の先端のエッジと,S203にて完了した上面の後端のエッジと,読取ヘッド21と22との読取位置の間隔とを使用して,画像データ中の原稿の画像の位置を取得する。具体的に,下面の先端のエッジとヘッド間隔とから上面の先端の位置を取得する(S210)。また,上面の後端のエッジとヘッド間隔とから下面の後端の位置を取得する(S211)。
さらに,スキャナ100は,上下面のそれぞれの画像データに対して,トリミングおよび補修処理を実行する(S213)。つまり,スキャナ100は,各画像データを,その面の先端のエッジと後端のエッジとを利用してトリミングする。また,この原稿の読取設定として補修モードの設定が有効とされている場合には,補修処理を実行する。なお,スキャナ100では,補修処理として傾き補正も実行する。補修処理では,スキャナ100は,先端のエッジの形状を下面の先端のエッジから,後端のエッジの形状を上面の後端のエッジからそれぞれ取得して使用する。
下面の画像データから検出された先端のエッジ,および,上面の画像データから検出された後端のエッジはいずれも信頼性が高く,これらのエッジに基づいて,スキャナ100は,高精度に原稿の位置を推定できる。そして,高精度のエッジを使用して,トリミングや補修処理を実行することにより,ユーザの希望に合った画像データが得られる可能性が高い。スキャナ100は,トリミングや補修処理の終了した画像データである補修済データを,読取設定にて指定されている出力先に出力して(S214),両面検出処理を終了する。
一方,S201にて実行条件を満たさないと判断した場合(S201:NO),または,S206にて推奨条件を満たさないと判断した場合(S206:NO)には,スキャナ100は,上面の後端のエッジの検出を行わない。つまり,後端のエッジの必要性が低いと判断した場合は,上面の後端のエッジの検出を開始しない。また,後続の原稿の処理を優先すると判断した場合は,上面の後端のエッジの検出を中止する。そして,スキャナ100は,図4の読取処理にて検出した下面の先端のエッジと,センサ27の出力信号に基づく原稿の搬送方向の長さとを用いて,他の各エッジを取得する。
そのために,スキャナ100は,原稿を搬送して原稿の長さを取得する(S208)。さらに,スキャナ100は,原稿の搬送方向の長さと下面の先端のエッジとから,下面の後端の位置を取得する(S218)。また,スキャナ100は,下面の先端と下面の後端とから,上面の先端と上面の後端とを取得する(S219)。スキャナ100は,例えば,下面の位置を反転したものを上面の位置とする。これで,上下面ともに先端と後端とを取得したので,スキャナ100は,トリミングや補修処理を実行し(S213),補修済データを出力する(S214)。補修済みデータの出力後,スキャナ100は,両端検出処理を終了する。
図4の読取処理に戻り,スキャナ100は,S115の両端検出処理の後,後続の原稿が有るか否かを判断する(S117)。例えば,既にセンサ27がONとなっており,後続の原稿が搬送されている場合には,スキャナ100は,S117にてYESと判断する。あるいは,センサ27とは別に,原稿の搬送方向についてより上流側にセンサを備えていれば,スキャナ100は,そのセンサの出力信号に基づいて,後続の原稿の有無を判断してもよい。そして,後続の原稿が有ると判断した場合(S117:YES),スキャナ100は,S102に戻って,後続の原稿を対象原稿として読取処理を継続する。一方,後続の原稿が無いと判断した場合(S117:NO),スキャナ100は,読取処理を終了する。
一方,図4の読取処理にて,下面の画像データに基づく先端のエッジの検出に成功しなかったと判断した場合には(S113:NO),スキャナ100は,上面の画像データから後端のエッジを検出する後端検出処理を実行する(S120)。
次に,図4のS120の後端検出処理の手順について,図6のフローチャートを参照して説明する。この後端検出処理は,下面の先端のエッジを検出できていない場合の処理であり,図5の両端検出処理よりも,後端のエッジの検出に対する必要性が高い。そこで,後端検出処理では,図5の両端検出処理とは異なり,実行条件や推奨条件の判断を行わない。なお,図6の後端検出処理の説明では,図5の両端検出処理と同じ処理については同じ符号を付し,説明を省略する
後端検出処理では,スキャナ100は,まず,上面の画像データに基づく後端のエッジの検出を開始する(S202)。そして,スキャナ100は,検出が完了したか否かを判断する(S203)。検出が完了したと判断した場合には(S203:YES),スキャナ100は,両端検出処理と同様に,原稿を搬送して長さを取得し(S209),原稿の搬送方向の長さと上面の後端のエッジとから,上面の先端の位置を取得する(S211)。
後端検出処理では,スキャナ100は,下面の先端のエッジは検出できていない。そこで,両面検出処理とは異なり,スキャナ100は,上面の先端と上面の後端とから,上面の位置を反転したものを下面の位置とすることにより,下面の先端と下面の後端とを取得する(S302)。そして,スキャナ100は,両端検出処理と同様に,トリミングおよび補修処理を実行し(S213),補修済データを出力して(S214),後端検出処理を終了する。
一方,後端のエッジの検出が完了していないと判断した場合(S203:NO),スキャナ100は,後端のエッジの検出に失敗したか否かを判断する(S303)。失敗していないと判断した場合(S303:NO),スキャナ100は,後続の原稿が到達したか否かを判断する(S204)。到達したと判断したら(S204:YES),スキャナ100は,搬送を停止して(S207),S203に戻る。到達していないと判断したら(S204:NO),スキャナ100は,搬送を継続してS203に戻る。
そして,後端のエッジの検出に失敗したと判断した場合(S303:YES),スキャナ100は,原稿を搬送して長さを取得する(S305)。S305は,S209と同様の処理であり,読み取りも継続する。この場合,先端と後端とのいずれのエッジも検出できなかったことから,スキャナ100は,画像データをトリミングできない。そこで,スキャナ100は,読み取った画像データのままで全面データを出力して(S306),後端検出処理を終了する。なお,スキャナ100は,S306にて全面データを出力する代わりに,読み取りエラーを報知してもよい。
図4の読取処理に戻り,スキャナ100は,S120の後端検出処理の後,後続の原稿が有るか否かを判断する(S117)。後続の原稿が有ると判断した場合(S117:YES),スキャナ100は,S102に戻って,後続の原稿を対象原稿として読取処理を継続する。一方,後続の原稿が無いと判断した場合(S117:NO),スキャナ100は,読取処理を終了する。
一方,図4の読取処理にて,両面読取の設定が有効となっていないと判断した場合には(S109:NO),片面読み取りが設定されていると判断できることから,スキャナ100は,片面読取処理を実行する(S122)。
次に,図4のS122の片面読取処理の手順について,図7のフローチャートを参照して説明する。片面読取処理では,スキャナ100は,まず,下側の読取ヘッド21にて読み取りを開始する(S401)。つまり,スキャナ100は,原稿の下面のみを読み取る。読取ヘッド21の方が,読取ヘッド22よりも原稿の搬送方向について上流側に配置されているので,読取ヘッド21を使用することで,読取ヘッド22を使用する場合よりも早期に読取処理が終了する。
そして,スキャナ100は,下面の画像データに基づいて,原稿の先端のエッジを検出する(S402)。S402は,図4のS112と同様の処理である。そして,スキャナ100は,原稿の搬送や読み取りとともにセンサ27の出力に基づいて,原稿の長さを取得する(S403)。さらに,スキャナ100は,先端のエッジの検出に成功したか否かを判断する(S404)。
先端のエッジの検出に成功したと判断した場合(S404:YES),スキャナ100は,センサ27の出力信号に基づいて取得される原稿の長さと,S402にて取得した先端のエッジとに基づいて後端の位置を取得する(S405)。さらに,先端のエッジと,S405にて取得した後端の位置とから,スキャナ100は,画像データのトリミングおよび補修処理を実行する(S406)。そして,スキャナ100は,補修済みデータを出力して(S407),片面読取処理を終了する。
一方,先端のエッジの検出に成功しなかったと判断した場合(S404:NO),スキャナ100は,全面データを出力し(S409),片面読取処理を終了する。なお,スキャナ100は,S409にて全面データを出力する代わりに,読み取りエラーを報知してもよい。
図4の読取処理に戻り,スキャナ100は,S122の片面読取処理の後,後続の原稿が有るか否かを判断する(S117)。後続の原稿が有ると判断した場合(S117:YES),スキャナ100は,S102に戻って,後続の原稿を対象原稿として読取処理を継続する。一方,後続の原稿が無いと判断した場合(S117:NO),スキャナ100は,読取処理を終了する。
以上,詳細に説明したように,本形態のスキャナ100は,2つの読取ヘッド21,22を有し,原稿を搬送してその画像を読み取る。読取ヘッド21の発光素子51は,原稿の搬送方向について上流側から下流側へ向かって光を照射し,読取ヘッド22の発光素子55は,原稿の搬送方向について下流側から上流側へ向かって光を照射する。そして,スキャナ100は,読取ヘッド21による下面の画像データに基づいて,原稿の先端のエッジを検出し,読取ヘッド22による上面の画像データに基づいて,原稿の後端のエッジを検出する。つまり,各読取ヘッドの画像データはそれぞれ別の端部のエッジの検出に適しており,スキャナ100は,該当するエッジの検出に適した画像データを使用して,エッジの検出を実行する。そのため,スキャナ100は,両側のエッジを高精度に検出できる可能性が高い。従って,読取部の部品点数の増加を抑えつつ,原稿のエッジの検知精度を向上させることが期待できる。
なお,本実施の形態は単なる例示にすぎず,本発明を何ら限定するものではない。したがって本発明は当然に,その要旨を逸脱しない範囲内で種々の改良,変形が可能である。例えば,スキャナに限らず,複写機,複合機,FAX装置等,原稿を搬送しつつ読み取る画像読取機能を備えるものであれば適用可能である。
また,例えば,読取ヘッド21と読取ヘッド22とは,いずれが上流であってもよいし,上面と下面との配置が逆でもよい。ただし,先端のエッジの検出に適した読取ヘッド21を上流側に配置すれば,より早期に先端のエッジの検出を開始できるので好ましい。また,スキャナ100は,読取ヘッド22を使用して片面読み取りを実行してもよい。その場合には,スキャナ100は,画像データに基づいて後端のエッジを検出し,後端のエッジと原稿の長さとに基づいて,先端の位置を取得すればよい。ただし,先端のエッジの検出に適した読取ヘッド21にて片面読み取りを実行すれば,より早期にエッジの検出を開始できるので好ましい。
また,特定条件としては,1以上の条件を備えていればよく,本形態に例示した各種の条件に限らない。本形態では,特定条件として,両面読取設定が有効,補修モードの設定が有効,原稿の地色と背景色とが異なること,メモリ残量大,紙間大,先端から定型サイズとは推定不能を例示したが,例えば,これらのうちの1以上を備えていればよく,これら以外にも特定条件があってもよい。例えば,片面読取の設定であっても両方の読取ヘッドにて読み取りを実行し,先端のエッジ検出と後端のエッジ検出とを両方とも実行してもよい。一方,特定条件を満たさない場合には,センサ27の出力信号に基づく原稿の長さを用いることで,スキャナ100は,処理の所要時間を短縮できる。
また,本形態では,対象原稿の処理が終了していないうちに,後続原稿が読取開始位置に到達したら,S207にて搬送を停止するとしたが,停止させなくてもよい。例えば,対象原稿の処理を優先して,後続原稿の先端のエッジの検出を実行しないとしてもよい。あるいは,後続原稿の先端のエッジの検出を優先して,対象原稿の後端のエッジの検出を中止するとしてもよい。
また,スキャナ100は,S210とS211にて原稿の長さを用いて他端の位置を取得するとしたが,例えば,読取ヘッド21と読取ヘッド22との間隔を用いて取得してもよい。スキャナ100は,例えば,S210では,上面の後端のエッジとヘッドの間隔とから下面の後端を取得してもよい。また,スキャナ100は,例えば,S211では,下面の先端のエッジとヘッドの間隔とから上面の先端を取得してもよい。
また,例えば,原稿抑え53,57の色は,グレー色に限らず,白色でもよいし,他の色でもよい。また,原稿抑え53と57とで異なる色であってもよい。
また,実施の形態では,スキャナ100にてエッジ検出を実行しているが,スキャナと接続するPC等で実行してもよい。この場合,例えば,PCは,スキャナに対して,画像の読み取りと読み取った画像データの送信とを指示し,スキャナから画像データを取得する。そして,PCは,画像データの取得を契機に,取得した画像データに基づいて,エッジの抽出,トリミング,補修処理を実行する。このとき,スキャナからは,いずれの側の読取ヘッドで読み取った画像データであるかを示す情報を付加して,PCに画像データを送信する。具体的には,PCにて,S112の先端検出,S202の後端検出,S213のトリミングおよび補修を実行させる。あるいは,S112の先端検出とS202の後端検出とをPCにて行い,その結果をスキャナに送信して,スキャナにてS213のトリミングおよび補修を行わせてもよい。また,片面読取の場合は,PCにて,S402の先端検出とS406のトリミングおよび補修を実行させる。なお,原稿の長さも,PCにて,画像データに基づいて取得してもよい。
また,実施の形態に開示されている処理は,単一のCPU,複数のCPU,ASICなどのハードウェア,またはそれらの組み合わせで実行されてもよい。また,実施の形態に開示されている処理は,その処理を実行するためのプログラムを記録した記録媒体,または方法等の種々の態様で実現することができる。