(57)【要約】【課題】原稿が無作為に載置されたときに、誤って原稿無と判断してしまう。【解決手段】  原稿台と、原稿押え部材と、読取画像データを生成する読取部と、移動部と、制御部と、を備え、制御部は、読取動作を開始する開始処理と、原稿先端と、２つの原稿側端とを検出する先端検出処理と、中央領域と、２つの側方領域とを決定する領域決定処理と、原稿先端が平行である場合に、傾き無終了処理を施し、原稿先端が平行でない場合に、傾き有終了処理を施す終了処理と、を実行し、傾き無終了処理は、全ての領域において、原稿データから原稿押えデータへ変化するときに読取動作を終了し、傾き有終了処理は、３つの領域において原稿データから原稿押えデータへ変化する３つの変化位置を決定し、第１変化位置と、第２変化位置とに基づき原稿が矩形形状であるか否かを決定し、第３変化位置と原稿形状とに基づき読取動作を終了する。 【選択図】図２６
2019125900.tif 000002
【特許請求の範囲】
【請求項１】
原稿を支持する原稿台と、
前記原稿台を開放する開放状態と前記原稿台を閉塞する閉塞状態とに開閉可能な原稿押え部材と、
前記原稿台に支持された原稿の画像を主走査方向に沿ったラインイメージセンサで読み取ることにより読取画像データを生成する読取部であって、前記原稿台に支持された原稿を読み取る場合に、前記原稿台に支持された原稿の画像を示す原稿データを読取画像データとして生成し、前記閉塞状態における前記原稿押え部材を読み取る場合に、前記原稿押え部材の画像を示す原稿押えデータを読取画像データとして生成する読取部と、
副走査方向に沿って前記ラインイメージセンサを移動させる移動部と、
制御部と、を備え、
前記制御部は、
前記ラインイメージセンサを副走査方向に沿って下流へ前記移動部により移動させながら前記読取部により前記読取画像データを生成させる読取動作を開始する開始処理と、
前記開始処理の開始時に前記ラインイメージセンサが位置する副走査方向における読取開始位置から副走査方向に沿って下流へ第１所定距離離れた先端領域下端位置まで前記読取動作を行うことにより生成された先端読取画像データから、主走査方向に沿った原稿の辺である原稿先端と、副走査方向に沿った原稿の２つの辺である２つの原稿側端とを検出する先端検出処理と、
前記２つの原稿側端の位置に基づき、主走査方向において前記原稿台に支持された原稿の主走査方向における中央に位置する中央領域と、前記中央領域の位置から前記２つの原稿側端の位置の側にそれぞれ位置する２つの側方領域とを決定する領域決定処理と、
前記原稿先端が主走査方向と平行である場合に、前記先端領域下端位置から副走査方向に沿って下流の前記読取画像データである対象読取画像データに傾き無終了処理を施すことにより前記読取動作を終了し、前記原稿先端が主走査方向と平行でない場合に、前記対象読取画像データに傾き有終了処理を施すことにより前記読取動作を終了する終了処理と、を実行し、
前記傾き無終了処理は、前記中央領域と前記２つの側方領域との全ての領域において、前記対象読取画像データが前記原稿データから前記原稿押えデータへ変化するときに前記読取動作を終了し、
前記傾き有終了処理は、前記中央領域と、前記２つの側方領域とにおける３つの領域における前記対象読取画像データが、それぞれ前記原稿データから前記原稿押えデータへ変化する副走査方向における３つの変化位置を決定し、副走査方向における前記３つの変化位置のうちで、最初に決定される第１変化位置と、２番目に決定される第２変化位置とに基づき前記原稿台に支持された原稿が矩形形状であるか否かを決定し、当該決定と前記３つの変化位置のうちで３番目に決定される第３変化位置とに基づき前記読取動作を終了することを特徴とする画像読取装置。
【請求項２】
前記第１変化位置が決定される前記２つの側方領域のうちの一方の領域である第１領域は、第１基点位置から主走査方向に沿って前記中央領域側へ第２所定距離離れた位置までの領域であって、前記第１基点位置は、副走査方向において前記２つの原稿側端のうちの前記読取開始位置に近い原稿側端における副走査方向の前記先端領域下端位置に対応する主走査方向の位置であり、
前記第３変化位置が決定される前記２つの側方領域のうちの他方の領域である第３領域は、第３基点位置から、主走査方向に沿って上流に前記第２所定距離離れた位置までの領域であり、前記第３基点位置は、前記２つの原稿側端のうちの前記読取開始位置から遠い原稿側端において前記２つの原稿側端の距離に所定比率を掛け算した距離だけ前記原稿先端から離れた位置であり、前記所定比率は、予め定められた大きさの規定原稿の長辺を前記規定原稿の短辺で割り算した比率であり、
前記第２変化位置が決定される領域である前記中央領域は、前記第１基点位置と前記第３基点位置との中点を第２基点位置とし、前記第２基点位置を中心とする前記第２所定距離の範囲の領域であり、
前記傾き有終了処理は、
前記第３基点位置と、前記第３変化位置とに基づき第１停止距離を算出する停止距離算出処理を含み、
前記原稿台に支持された原稿が矩形形状でない場合に、前記第３変化位置を決定するときに前記読取動作を終了し、
前記原稿台に支持された原稿が矩形形状である場合に、前記移動部により前記ラインイメージセンサを前記第３変化位置から副走査方向の下流に前記第１停止距離だけ離れた位置へ移動させたときに前記読取動作を終了することを特徴とする請求項１に記載の画像読取装置。
【請求項３】
前記制御部は、
主走査方向に対する前記原稿先端の傾き角度である先端角度を算出する角度算出処理を実行し、
前記停止距離算出処理は、
前記先端角度に正弦処理を施した値に、副走査方向における前記第３基点位置と前記第３変化位置との距離を掛け算し、さらに掛け算した距離に前記先端角度に正弦処理を施した値を掛け算することにより前記第１停止距離を算出することを特徴とする請求項２に記載の画像読取装置。
【請求項４】
前記制御部は、
主走査方向における前記第１領域と前記第２領域との距離に、前記先端角度に正接処理を施した値を掛け算することにより第１距離を算出する第１距離算出処理を実行し、
前記傾き有終了処理は、
副走査方向における前記第１変化位置と前記第２変化位置との距離が、前記第１距離と同じである場合に、前記原稿台に支持された原稿が矩形形状であることを決定し、
副走査方向における前記第１変化位置と前記第２変化位置との距離が、前記第１距離と同じでない場合に、前記原稿台に支持された原稿が矩形形状でないことを決定することを特徴とする請求項３に記載の画像読取装置。
【請求項５】
前記読取部は、前記移動部により前記ラインイメージセンサが前記原稿先端位置から最大読取位置まで移動する範囲を読み取り可能に構成され、
前記領域決定処理は、
前記傾き有終了処理が、前記先端領域下端位置から前記第３基点位置までの前記対象読取画像データにおいて前記第３変化位置を決定しない場合に、最大基点位置から主走査方向に沿って前記中央領域の側へ前記第２所定距離離れた位置までの領域を第４領域として決定し、前記最大基点位置は、前記２つの原稿側端のうちの前記第３領域に近い原稿側端における副走査方向の前記最大読取位置に対応する主走査方向の位置であり、
前記傾き有終了処理は、
前記先端領域下端位置から前記第３基点位置までの前記対象読取画像データにおいて前記第３変化位置を決定しない場合に、前記第４領域において前記原稿データから前記原稿押えデータへ変化する副走査方向の位置を第４変化位置として決定し、前記第４変化位置と原稿が矩形形状であるか否かの前記決定とに基づき前記読取動作を終了することを特徴とする請求項４に記載の画像読取装置。
【請求項６】
前記停止距離算出処理は、前記最大基点位置と、前記第４変化位置とに基づき第２停止距離を算出し、
前記傾き有終了処理は、
前記先端領域下端位置から前記第３基点位置までの前記対象読取画像データにおいて前記第３変化位置を決定せず、且つ前記原稿台に支持された原稿が矩形形状でない場合に、前記第４変化位置を決定するときに前記読取動作を終了し、
前記先端領域下端位置から前記第３基点位置までの前記対象読取画像データにおいて前記第３変化位置を決定せず、且つ前記原稿台に支持された原稿が矩形形状である場合に、前記移動部により前記ラインイメージセンサを前記第４変化位置から副走査方向の下流に前記第２停止距離だけ離れた位置へ移動させたときに前記読取動作を終了することを特徴とする請求項５に記載の画像読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像読取装置に関する。
【背景技術】
【０００２】
特許文献１に記載の画像読取装置は、主走査方向に沿ったラインセンサを副走査方向に沿って移動させながら原稿を読み取り、読み取った主走査方向における規定位置の読取データと、原稿の白背景色の濃度に基づき決められた閾値とを比較することにより原稿の有無を検出する。副走査方向に原稿がなくなると、規定位置の読取データが原稿の白背景色の濃度ではなく、原稿の白背景色以外の濃度となる。原稿の白背景色の濃度から原稿の白背景色以外の濃度へ切り換わると、画像読取装置は原稿の読取動作を停止する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−２７９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の画像読取装置は、原稿突き当て部に突き当てられずに原稿が無作為に載置されたときに、原稿突き当て部が位置する規定位置に原稿が位置しないことにより、規定位置の読取データが原稿の白背景色の濃度でなくなり、誤って原稿無と判断してしまう問題がある。
【０００５】
そこで、本発明は上述した事情に鑑みてなされ、原稿が無作為に支持された場合でも、原稿を正常に読み取ることのできる画像読取装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１に記載の発明態様では、画像読取装置は、原稿を支持する原稿台と、前記原稿台を開放する開放状態と前記原稿台を閉塞する閉塞状態とに開閉可能な原稿押え部材と、前記原稿台に支持された原稿の画像を主走査方向に沿ったラインイメージセンサで読み取ることにより読取画像データを生成する読取部であって、前記原稿台に支持された原稿を読み取る場合に、前記原稿台に支持された原稿の画像を示す原稿データを読取画像データとして生成し、前記閉塞状態における前記原稿押え部材を読み取る場合に、前記原稿押え部材の画像を示す原稿押えデータを読取画像データとして生成する読取部と、副走査方向に沿って前記ラインイメージセンサを移動させる移動部と、制御部と、を備え、前記制御部は、前記ラインイメージセンサを副走査方向に沿って下流へ前記移動部により移動させながら前記読取部により前記読取画像データを生成させる読取動作を開始する開始処理と、前記開始処理の開始時に前記ラインイメージセンサが位置する副走査方向における読取開始位置から副走査方向に沿って下流へ第１所定距離離れた先端領域下端位置まで前記読取動作を行うことにより生成された先端読取画像データから、主走査方向に沿った原稿の辺である原稿先端と、副走査方向に沿った原稿の２つの辺である２つの原稿側端とを検出する先端検出処理と、前記２つの原稿側端の位置に基づき、主走査方向において前記原稿台に支持された原稿の主走査方向における中央に位置する中央領域と、前記中央領域の位置から前記２つの原稿側端の位置の側にそれぞれ位置する２つの側方領域とを決定する領域決定処理と、前記原稿先端が主走査方向と平行である場合に、前記先端領域下端位置から副走査方向に沿って下流の前記読取画像データである対象読取画像データに傾き無終了処理を施すことにより前記読取動作を終了し、前記原稿先端が主走査方向と平行でない場合に、前記対象読取画像データに傾き有終了処理を施すことにより前記読取動作を終了する終了処理と、を実行し、前記傾き無終了処理は、前記中央領域と前記２つの側方領域との全ての領域において、前記対象読取画像データが前記原稿データから前記原稿押えデータへ変化するときに前記読取動作を終了し、前記傾き有終了処理は、前記中央領域と、前記２つの側方領域とにおける３つの領域における前記対象読取画像データが、それぞれ前記原稿データから前記原稿押えデータへ変化する副走査方向における３つの変化位置を決定し、副走査方向における前記３つの変化位置のうちで、最初に決定される第１変化位置と、２番目に決定される第２変化位置とに基づき前記原稿台に支持された原稿が矩形形状であるか否かを決定し、当該決定と前記３つの変化位置のうちで３番目に決定される第３変化位置とに基づき前記読取動作を終了する。
【０００７】
請求項２に記載の具体的態様では、前記第１変化位置が決定される前記２つの側方領域のうちの一方の領域である第１領域は、第１基点位置から主走査方向に沿って前記中央領域側へ第２所定距離離れた位置までの領域であって、前記第１基点位置は、副走査方向において前記２つの原稿側端のうちの前記読取開始位置に近い原稿側端における副走査方向の前記先端領域下端位置に対応する主走査方向の位置であり、前記第３変化位置が決定される前記２つの側方領域のうちの他方の領域である第３領域は、第３基点位置から、主走査方向に沿って上流に前記第２所定距離離れた位置までの領域であり、前記第３基点位置は、前記２つの原稿側端のうちの前記読取開始位置から遠い原稿側端において前記２つの原稿側端の距離に所定比率を掛け算した距離だけ前記原稿先端から離れた位置であり、前記所定比率は、予め定められた大きさの規定原稿の長辺を前記規定原稿の短辺で割り算した比率であり、前記第２変化位置が決定される領域である前記中央領域は、前記第１基点位置と前記第３基点位置との中点を第２基点位置とし、前記第２基点位置を中心とする前記第２所定距離の範囲の領域であり、前記傾き有終了処理は、前記第３基点位置と、前記第３変化位置とに基づき第１停止距離を算出する停止距離算出処理を含み、前記原稿台に支持された原稿が矩形形状でない場合に、前記第３変化位置を決定するときに前記読取動作を終了し、前記原稿台に支持された原稿が矩形形状である場合に、前記移動部により前記ラインイメージセンサを前記第３変化位置から副走査方向の下流に前記第１停止距離だけ離れた位置へ移動させたときに前記読取動作を終了する。
【０００８】
請求項３に記載の具体的態様では、前記制御部は、主走査方向に対する前記原稿先端の傾き角度である先端角度を算出する角度算出処理を実行し、前記停止距離算出処理は、前記先端角度に正弦処理を施した値に、副走査方向における前記第３基点位置と前記第３変化位置との距離を掛け算し、さらに掛け算した距離に前記先端角度に正弦処理を施した値を掛け算することにより前記第１停止距離を算出する。
【０００９】
請求項４に記載の具体的態様では、前記制御部は、主走査方向における前記第１領域と前記第２領域との距離に、前記先端角度に正接処理を施した値を掛け算することにより第１距離を算出する第１距離算出処理を実行し、前記傾き有終了処理は、副走査方向における前記第１変化位置と前記第２変化位置との距離が、前記第１距離と同じである場合に、前記原稿台に支持された原稿が矩形形状であることを決定し、副走査方向における前記第１変化位置と前記第２変化位置との距離が、前記第１距離と同じでない場合に、前記原稿台に支持された原稿が矩形形状でないことを決定する。
【００１０】
請求項５に記載の具体的態様では、前記読取部は、前記移動部により前記ラインイメージセンサが前記原稿先端位置から最大読取位置まで移動する範囲を読み取り可能に構成され、前記領域決定処理は、前記傾き有終了処理が、前記先端領域下端位置から前記第３基点位置までの前記対象読取画像データにおいて前記第３変化位置を決定しない場合に、最大基点位置から主走査方向に沿って前記中央領域の側へ前記第２所定距離離れた位置までの領域を第４領域として決定し、前記最大基点位置は、前記２つの原稿側端のうちの前記第３領域に近い原稿側端における副走査方向の前記最大読取位置に対応する主走査方向の位置であり、前記傾き有終了処理は、前記先端領域下端位置から前記第３基点位置までの前記対象読取画像データにおいて前記第３変化位置を決定しない場合に、前記第４領域において前記原稿データから前記原稿押えデータへ変化する副走査方向の位置を第４変化位置として決定し、前記第４変化位置と原稿が矩形形状であるか否かの前記決定とに基づき前記読取動作を終了する。
【００１１】
請求項６に記載の具体的態様では、前記停止距離算出処理は、前記最大基点位置と、前記第４変化位置とに基づき第２停止距離を算出し、前記傾き有終了処理は、前記先端領域下端位置から前記第３基点位置までの前記対象読取画像データにおいて前記第３変化位置を決定せず、且つ前記原稿台に支持された原稿が矩形形状でない場合に、前記第４変化位置を決定するときに前記読取動作を終了し、前記先端領域下端位置から前記第３基点位置までの前記対象読取画像データにおいて前記第３変化位置を決定せず、且つ前記原稿台に支持された原稿が矩形形状である場合に、前記移動部により前記ラインイメージセンサを前記第４変化位置から副走査方向の下流に前記第２停止距離だけ離れた位置へ移動させたときに前記読取動作を終了する。
【発明の効果】
【００１２】
請求項１に記載の発明態様では、領域決定処理は、中央領域と、２つの側端領域とを決定する。傾き無終了処理は、中央領域と２つの側方領域との全ての領域において、対象読取画像データが原稿データから原稿押えデータへ変化するときに読取動作を終了する。傾き有終了処理は、最初に決定される第1変化位置と、２番目に決定される第２変化位置とに基づき原稿が矩形であるか否かを決定し、当該決定と３番目に決定される第３変化位置とに基づき読取動作を終了する。よって、原稿が無作為に支持され、原稿の先端が主走査方向と平行に支持された場合でも、原稿の先端が主走査方向と平行でなく支持された場合でも、異なる終了処理を実行することで原稿を正常に読み取ることができる。
【００１３】
請求項２に記載の具体的態様では、停止距離算出処理は、第３基点位置と、第３変化位置とに基づき第１停止距離を算出する。傾き有終了処理は、原稿台に支持された原稿が矩形形状である場合に、ラインイメージセンサを第３変化位置から副走査方向の下流に第１停止距離だけ離れた位置へ移動させたときに読取動作を終了する。よって、矩形形状である原稿が支持された場合に、ラインイメージセンサを第３変化位置から副走査方向の下流に第１停止距離だけ離れた位置へ移動させたときに読取動作を終了するため、原稿の途中で読取終了することなく、原稿を正常に読み取ることができる。
【００１４】
請求項３に記載の具体的態様では、角度算出処理は、主走査方向に対する原稿先端の傾き角度である先端角度を算出し、停止距離算出処理は、先端角度に正弦処理を施した値に、第３基点位置と第３変化位置との距離を掛け算し、掛け算した距離に先端角度に正弦処理を施した値を掛け算することにより第１停止距離を算出する。よって、第１停止距離を精度よく算出できるため、原稿の途中で読取終了することなく、原稿を正常に読み取ることができる。
【００１５】
請求項４に記載の具体的態様では、第１距離算出処理は、第１領域と第２領域との距離に、先端角度に正接処理を施した値を掛け算することにより第１距離を算出する。傾き有終了処理は、第１変化位置と第２変化位置との距離が第１距離と同じである場合に、原稿が矩形形状であることを決定し、第１変化位置と第２変化位置との距離が第１距離と同じでない場合に、原稿が矩形形状でないことを決定する。よって、原稿が矩形形状であるか否かを精度良く決定することができるため、矩形形状である原稿の途中で読取終了することなく、原稿を正常に読み取ることができる。
【００１６】
請求項５に記載の具体的態様では、領域決定処理は、傾き有終了処理が、先端領域下端位置から第３基点位置までの対象読取画像データにおいて第３変化位置を決定しない場合に、第４領域を決定する。傾き有終了処理は、第４領域において原稿データから原稿押えデータへ変化する副走査方向の位置を第４変化位置として決定し、原稿が矩形形状であるか否かの決定と第４変化位置とに基づき読取動作を終了する。よって、第３基点位置よりも副走査方向の下流に原稿が支持されている場合でも、第４変化位置を決定して第４変化位置と原稿が矩形形状であるか否かの決定とに基づいて読取動作を終了するため、原稿の途中で読取終了することなく、原稿を正常に読み取ることができる。
【００１７】
請求項６に記載の具体的態様では、停止距離算出処理は、最大基点位置と第４変化位置とに基づき第２停止距離を算出する。傾き有終了処理は、原稿台に支持された原稿が矩形形状である場合に、ラインイメージセンサを第４変化位置から副走査方向の下流に第２停止距離だけ離れた位置へ移動させたときに読取動作を終了するため、原稿の途中で読取終了することなく、原稿を正常に読み取ることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る画像読取装置ＳＭの内部構成を示す図面である。
【図２】原稿載置台ＤＴの上面図である。
【図３】画像読取装置ＳＭの電気的構成を示すブロック図である。
【図４】読取メイン処理を示すフローチャートである。
【図５】先端検知処理Ｒ３を示すフローチャートである。
【図６】検出領域設定処理ＲＡ４を示すフローチャートである。
【図７】傾き無検出領域設定処理ＲＢ３を示すフローチャートである。
【図８】左回り検出領域設定処理ＲＢ４を示すフローチャートである。
【図９】右回り検出領域設定処理ＲＢ５を示すフローチャートである。
【図１０】原稿検知処理Ｒ４を示すフローチャートである。
【図１１】傾き無原稿検知処理ＲＦ２を示すフローチャートである。
【図１２】エッジ数計数処理ＲＧ２，ＲＩ２，ＲＭ２，ＲＰ２を示すフローチャートである。
【図１３】傾き有原稿検知処理ＲＦ４を示すフローチャートである。
【図１４】第１検出処理ＲＨ１を示すフローチャートである。
【図１５】第１端フラグＥＦＧ１判断処理ＲＩ４を示すフローチャートである。
【図１６】規定位置ＳＰ判断処理ＲＩ７，ＲＭ９を示すフローチャートである。
【図１７】第２検出処理ＲＨ３を示すフローチャートである。
【図１８】第２端フラグＥＦＧ２判断処理ＲＭ４を示すフローチャートである。
【図１９】矩形フラグＲＴＦＧ判断処理ＲＭ１４を示すフローチャートである。
【図２０】第３検出処理ＲＨ７を示すフローチャートである。
【図２１】第３端フラグＥＦＧ３判断処理ＲＰ４を示すフローチャートである。
【図２２】第４検出処理ＲＨ８を示すフローチャートである。
【図２３】第４端フラグＥＦＧ４判断処理ＲＲ４を示すフローチャートである。
【図２４】停止位置移動処理ＲＰ１３，ＲＲ１３を示すフローチャートである。
【図２５】原稿ＧＳが傾いていない時の白黒データＷＢＤと、第１検出領域ＤＲ１などの情報とを説明する図面である。
【図２６】（Ａ）原稿ＧＳが右回りに傾いた時の白黒データＷＢＤと、第１検出領域ＤＲ１などの情報とを説明する図面である。（Ｂ）第３検出位置ＤＰ３付近を拡大して説明する図面である。
【図２７】（Ａ）原稿ＧＳが左回りに傾いた時の白黒データＷＢＤと、第１検出領域ＤＲ１などの情報とを説明する図面である。（Ｂ）第４検出位置ＤＰ４付近を拡大して説明する図面である。
【発明を実施するための形態】
【００１９】
＜画像読取装置ＳＭの構成＞
図面を参照して本実施形態における画像読取装置ＳＭの構成について説明する。図１は、画像読取装置ＳＭの正面図を示す。図２は、原稿載置台ＤＴを上から見た上面図を示す。以下の説明において、図１の右方向を副走査方向ＳＤの下流、図２の下方向を主走査方向ＭＤの下流、図２の右方向を副走査方向ＳＤの下流として説明する。
【００２０】
画像読取装置ＳＭは、原稿載置台ＤＴと、原稿押え板ＣＶと、を備える。原稿載置台ＤＴは、本体ＭＢと、透明板ＴＰと、を備える。本体ＭＢは、様々な部材（例えば、透明板ＴＰ、読取部２０等）を収容するための筐体である。透明板ＴＰは、図２に一点鎖線で示すように、本体ＭＢに収容されており、本体ＭＢに固定されている。透明板ＴＰは、読取対象の原稿ＧＳを支持する。原稿押え板ＣＶは、本体ＭＢの奥側（図１の紙面に垂直方向の奥側、図２の上側）に回動軸２８を備え、本体ＭＢの前側（図１の紙面に垂直方向の手前側、図２の下側）から開閉される。原稿押え板ＣＶは、原稿載置台ＤＴを開放する開放状態と、原稿載置台ＤＴを閉塞する閉塞状態とに開閉可能に構成されている。
【００２１】
画像読取装置ＳＭは、さらに、透明板ＴＰの下方で本体ＭＢに収容されている読取部２０を備える。読取部２０は、本体ＭＢに対して副走査方向ＳＤ（即ち図１の左右方向）に沿って移動可能である。読取部２０は、透明板ＴＰに支持される原稿ＧＳの読取動作を実行する。読取部２０は、ＣＩＳ（Contact Image Sensorの略で、密着型イメージセンサ）で構成され、具体的には、光源２１と、ロッドレンズ２４と、受光部２２と、を備える。光源２１は、赤色、青色、および緑色の発光ダイオードなどで構成され、透明板ＴＰに向けて、光を照射する。ロッドレンズ２４は、主に光源２１から照射される光の反射光を受光部２２に結像する。
【００２２】
受光部２２は、主走査方向に配列される多数の光電変換素子２３を含み、図示しないアナログシフトレジスタ、および増幅器を内蔵する。各光電変換素子２３の出力は、主走査方向の各画素における受光量である。光電変換素子２３の先頭画素は、図２に図示する主走査方向ＭＤの最も上流に位置する画素であり、光電変換素子２３の最終画素は、図２に図示する主走査方向ＭＤの最も下流に位置する画素である。本実施形態では、１ラインは、この主走査方向ＭＤの先頭画素から最終画素までで構成される画素群である。
【００２３】
図２において、原稿載置台ＤＴの上面は、本体ＭＢの上面、および透明板ＴＰが原稿押え板ＣＶ側に露出した面を有する。本体ＭＢは、黒色であり、回動軸２８が主走査方向ＭＤの上流側に配置されている。透明板ＴＰは、図２に一点鎖線で示すように、副走査方向ＳＤに沿って伸びる長辺と、主走査方向ＭＤに沿って伸びる短辺と、によって構成される矩形形状を有する。透明板ＴＰの原稿押え板ＣＶ側に露出する面は、図２において実線で示す。原稿ＧＳは、基準位置ＢＰを基点として透明板ＴＰに載置される。回動軸２８は、原稿押え板ＣＶを開閉するときに回動する軸であり、本体ＭＢの主走査方向ＭＤの上流側に２カ所配置されている。
【００２４】
透明板ＴＰの原稿押え板ＣＶ側に露出する面のうちで主走査方向ＭＤの最も上流の位置であり、且つ副走査方向ＳＤの最も上流の位置が基準位置ＢＰの位置である。透明板ＴＰの原稿押え板ＣＶ側に露出する面のうちで副走査方向の最も下流の位置が最大読取位置ＭＲＰである。画像読取装置ＳＭは、副走査方向ＳＤにおける基準位置ＢＰから最大読取位置ＭＲＰまでの範囲を読取範囲として原稿ＧＳの画像を読み取る。副走査方向ＳＤにおける基準位置ＢＰが先頭ラインＦＬの副走査方向ＳＤの位置である。
【００２５】
画像読取装置ＳＭは、さらに、透明板ＴＰの上面に固定されている基準部材ＢＭを備える。基準部材ＢＭは、透明板ＴＰの副走査方向ＳＤの上流側（即ち図２の左側）の端部に設けられている。基準部材ＢＭは、主走査方向ＭＤに沿って伸びる白色の部材である。副走査方向ＳＤにおいて、基準部材ＢＭ上の位置が、ホーム位置ＨＰである。読取部２０は、ホーム位置ＨＰを基準として、副走査方向ＳＤに移動可能に構成されている。
【００２６】
＜画像読取装置ＳＭの電気的構成＞
画像読取装置ＳＭの電気的構成について図３を参照して説明する。画像読取装置ＳＭは、ＣＰＵ３０、ＲＯＭ３１、ＲＡＭ３２、フラッシュＲＯＭ３３、デバイス制御部３４、アナログフロントエンド（以下、ＡＦＥという）３５、画像処理部３６、エッジ検出部３９、および駆動回路３７を主な構成要素として備える。これらの構成要素は、バス３８を介して、操作機構ＯＭ、および表示機構ＤＭに接続される。操作機構ＯＭは、開始ボタンおよび決定ボタン等の複数のキーによって構成される。ユーザは、操作機構ＯＭを操作することによって、様々な指示を画像読取装置ＳＭに入力することができる。表示機構ＤＭは、様々な情報を表示するためのディスプレイである。
【００２７】
ＲＯＭ３１は、後述する読取メイン処理、各メイン処理中のサブルーチンの処理など、画像読取装置ＳＭの各種動作を実行するためのプログラムを記憶する。ＣＰＵ３０は、ＲＯＭ３１から読み出されたプログラムに従って、各部の制御を行う。フラッシュＲＯＭ３３は、読み書き可能な不揮発性メモリであり、ＣＰＵ３０の制御処理により生成された各種のデータ、例えば読取メイン処理により取得された各種のデータなどを記憶する。ＲＡＭ３２は、ＣＰＵ３０の制御処理により生成された算出結果などを一時的に記憶する。
【００２８】
デバイス制御部３４は、読取部２０に接続され、ＣＰＵ３０からの命令に基づいて、光源２１の点灯又は消灯を制御する信号、および光源２１に流れる電流値を制御する信号を光源２１に送信する。また、デバイス制御部３４は、ＣＰＵ３０からの命令に基づいて、多数の光電変換素子２３の電気信号を同時にシフトレジスタに転送するためのシリアルイン信号ＳＩおよびシフトレジスタの電気信号を順番に出力させるためのクロック信号ＣＬＫを受光部２２に送信する。読取部２０は、デバイス制御部３４からこれらの信号を受け取ると、光源２１を点灯させるとともに、受光部２２が受光した受光量に応じたアナログ信号をＡＦＥ３５に送信する。
【００２９】
ＡＦＥ３５は、読取部２０に接続され、ＣＰＵ３０からの命令に基づいて、読取部２０から送信されるアナログ信号をデジタルデータに変換する。ＡＦＥ３５は、予め定められた入力レンジおよび分解能を有する。例えば、分解能は、１０ビットであるならば、「０」から「１０２３」までの階調である。この場合に、ＡＦＥ３５は、読取部２０から送信されたアナログ信号をデジタルデータとして１０ビット（０〜１０２３）の階調データに変換する。ＡＦＥ３５によって変換されたデジタルデータは、画像処理部３６、およびエッジ検出部３９に送信される。
【００３０】
画像処理部３６は、画像処理用の専用ＩＣであるＡＳＩＣから構成され、デジタルデータに画像処理を施す。画像処理は、ガンマ補正などの補正処理である。画像処理部３６は、デジタルデータに画像処理を施し、デジタル画像データを生成する。そのデジタル画像データは、バス３８を介してＲＡＭ３２に記憶される。
【００３１】
エッジ検出部３９は、デジタルデータにソーベルフィルタをかける処理等の周知のエッジ検出処理を施し、白黒データＷＢＤを生成する。エッジ検出部３９は、エッジである画素について「１」を白黒データＷＢＤとして生成し、エッジでない画素について「０」を白黒データＷＢＤとして生成する。生成した白黒データＷＢＤは、ＲＡＭ３２に記憶される。本実施形態では、エッジ検出部３９は、原稿ＧＳの背景色を読み取らせた場合に、５％の割合で「１」の白黒データＷＢＤを生成し、原稿押え板ＣＶを読み取らせた場合に、１％未満の割合で「１」の白黒データＷＢＤを生成する。よって、５％の割合で生成される「１」の白黒データＷＢＤは、原稿ＧＳの背景色を読み取るときのデータであり、１％未満の割合で生成される「１」の白黒データＷＢＤは、原稿押え板ＣＶを読み取るときのデータである。
【００３２】
駆動回路３７は、搬送モータＭＴに接続され、ＣＰＵ３０から送信される駆動指令に基づいて搬送モータＭＴを駆動する。駆動回路３７は、駆動指令により指令された回転量および回転方向に従って搬送モータＭＴを回転させる。搬送モータＭＴが所定量だけ回転すると、移動機構ＭＭが所定角度回転し、読取部２０が副走査方向ＳＤに所定距離だけ搬送される。
【００３３】
＜画像読取装置ＳＭの動作＞
（読取メイン処理）
次に、画像読取装置ＳＭの動作について図面を参照して説明する。画像読取装置ＳＭは、原稿ＧＳを読み取る読取メイン処理を主に実行する。図４に示す読取メイン処理中の処理Ｒ１〜処理Ｒ５は、ＣＰＵ３０が実行する処理である。
【００３４】
図４に示す読取メイン処理は、ユーザが原稿ＧＳを透明板ＴＰに載置し、操作機構ＯＭの読取開始ボタンを押下することにより、開始される。即ち、ＣＰＵ３０は、読取開始ボタンが押下された指令を受け取ることにより、読取メイン処理を開始する。本実施形態では、原稿ＧＳが傾いていない場合と、原稿ＧＳが右回りに傾いた場合と、原稿ＧＳが左回りに傾いた場合とを例に挙げて説明する。図２５は、原稿が傾いていない時の白黒データＷＢＤと、第1検出領域ＤＲ１などの情報とを説明する図面である。図２６（Ａ）は、原稿ＧＳが右回りに傾いた時の白黒データＷＢＤと、第1検出領域ＤＲ１などの情報とを説明する図面であり、図２６（Ｂ）は、図２６（Ａ）における第３検出位置ＤＰ３付近を拡大して説明する図面である。図２７（Ａ）は、原稿ＧＳが左回りに傾いた時の白黒データＷＢＤと、第1検出領域ＤＲ１などの情報とを説明する図面であり、図２７（Ｂ）は、図２７（Ａ）における第４検出位置ＤＰ４付近を拡大して説明する図面である。図２６（Ａ）、および図２７（Ａ）に示す規定サイズ原稿ＳＧＳは、上流側端直線ＵＳＬと下流側端直線ＤＳＬとの距離を短手方向の原稿幅として、この短手方向の原稿幅に「２」の平方根を掛け算した距離を長手方向の原稿長とした規定の大きさの原稿である。本実施形態では、「２」の平方根は、規定の大きさの原稿の長辺を短辺で割算した比率である。例えば、規定の大きさの原稿は、Ａ４サイズの原稿である。Ａ４サイズの短手方向の原稿幅は、「２１０ｍｍ」であり、Ａ４サイズの長手方向の原稿長は、「２９７ｍｍ」である。
【００３５】
ＣＰＵ３０は、デバイス制御部３４、および画像処理部３６等を初期化する（Ｒ１）。具体的には、ＣＰＵ３０は、主走査方向ＭＤの読取解像度が３００ＤＰＩ、および副走査方向ＳＤの読取解像度が３００ＤＰＩに対応するクロック信号ＣＬＫ及びシリアルイン信号ＳＩの設定値をフラッシュＲＯＭ３３から取得し、デバイス制御部３４に設定する。ＣＰＵ３０は、主走査方向ＭＤの読取解像度が３００ＤＰＩ、および副走査方向ＳＤの読取解像度が３００ＤＰＩとして読み取るための設定値をフラッシュＲＯＭ３３から取得し、画像処理部３６に設定する。ＣＰＵ３０は、合計ライン数ＴＬＮに「３５０」を設定してＲＡＭ３２に記憶する。ＣＰＵ３０は、傾き無フラグＤＦＧ、原稿端フラグＥＦＧ、第1端フラグＥＦＧ１、第２端フラグＥＦＧ２、第３端フラグＥＦＧ３、第４端フラグＥＦＧ４、および読取終了フラグＲＥＦＧをオフにしてＲＡＭ３２に記憶し、規定フラグＳＦＧをオンにしてＲＡＭ３２に記憶する。本実施形態では、合計ライン数ＴＬＮに設定される「３５０」は、後述する先端データＨＡの最下端の副走査方向ＳＤの位置である先端データ下端位置ＨＡＤＰと先頭ラインＦＬとの距離に対応するライン数である。
【００３６】
ＣＰＵ３０は、読取動作を開始する（Ｒ２）。具体的には、ＣＰＵ３０は、駆動回路３７に駆動指令を送信し、読取部２０を基準位置ＢＰに移動させる。ＣＰＵ３０は、駆動回路３７とデバイス制御部３４とに指令を送信し、基準位置ＢＰから副走査方向ＳＤに沿って下流へ読取部２０を移動させながら原稿ＧＳを読み取る読取動作を開始させる。読取動作が開始されると、デジタル画像データと白黒データＷＢＤとが、ＲＡＭ３２に記憶される。
【００３７】
ＣＰＵ３０は、先端検知処理を実行する（Ｒ３）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、図２５、図２６（Ａ）、および図２７（Ａ）に示す先端直線ＨＬ、上流側端直線ＵＳＬ、下流側端直線ＤＳＬ、上流基点位置ＵＣＰ、下流基点位置ＤＣＰ、および傾き角度ＣＡを算出してＲＡＭ３２に記憶する。ＣＰＵ３０は、図２５、図２６（Ａ）、および図２７（Ａ）に示す第１検出領域ＤＲ１、第２検出領域ＤＲ２、第３検出領域ＤＲ３、および規定位置ＳＰを設定してＲＡＭ３２に記憶する。
【００３８】
ＣＰＵ３０は、原稿検知処理を実行する（Ｒ４）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、第1エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３を算出してＲＡＭ３２に記憶する。ＣＰＵ３０は、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３に基づき傾き無原稿検知処理、又は傾き有原稿検知処理を実行する。本実施形態では、ＣＰＵ３０は、１ライン毎の画像を読み取る時間と同じ程度の時間で１ライン毎の傾き無原稿検知処理、又は傾き有原稿検知処理を実行する。
【００３９】
ＣＰＵ３０は、読取動作を終了する（Ｒ５）。具体的には、ＣＰＵ３０は、駆動回路３７とデバイス制御部３４とに指令を送信し、原稿ＧＳを読み取る読取動作を終了し、読取部２０を駆動停止させた後に、ホーム位置ＨＰに移動させる。処理Ｒ５が終了すると、読取メイン処理が終了する。
【００４０】
（先端検知処理Ｒ３）
図５に示す先端検知処理（Ｒ３）が開始されると、ＣＰＵ３０は、図２５、図２６（Ａ）、及び図２７（Ａ）に示す先端データＨＡを取得する（ＲＡ１）。具体的には、ＣＰＵ３０は、ＲＡＭ３２に記憶された白黒データＷＢＤのうちで副走査方向ＳＤに沿って最も上流のラインである先頭ラインＦＬ（図２５参照）から副走査方向ＳＤに沿って下流へ３５０ライン目の位置である先端データ下端位置ＨＡＤＰまでの白黒データＷＢＤを先端データＨＡとして取得する。ここで、先端データＨＡは、先頭ラインＦＬの位置から副走査方向ＳＤに沿って下流へ先頭ラインＦＬから３５０ライン目の位置である先端データ下端位置ＨＡＤＰまでの領域の白黒データＷＢＤである。
【００４１】
ＣＰＵ３０は、先端直線ＨＬ、上流側端直線ＵＳＬ、および下流側端直線ＤＳＬを決定する（ＲＡ２）。具体的には、ＣＰＵ３０は、図２５、図２６（Ａ）、および図２７（Ａ）に示すように、原稿ＧＳの主走査方向ＭＤに沿った先端直線ＨＬと、主走査方向ＳＤの上流に位置する原稿ＧＳの副走査方向ＳＤに沿った上流側端直線ＵＳＬと、主走査方向ＳＤの下流に位置する原稿ＧＳの副走査方向ＳＤに沿った下流側端直線ＤＳＬとを先端データＨＡから決定する。
【００４２】
ＣＰＵ３０は、図２６（Ａ）及び図２７（Ａ）に示す先端直線ＨＬの傾き角度ＣＡを算出する（ＲＡ３）。具体的には、ＣＰＵ３０は、主走査方向ＭＤに沿った直線と先端直線ＨＬとの角度を傾き角度ＣＡとして算出し、先端直線ＨＬが主走査方向ＭＤの下流に進むに従って、副走査方向ＳＤの下流に進む傾きである場合には、右回りを傾き角度ＣＡとして算出し、先端直線ＨＬが主走査方向ＭＤの下流に進むに従って、副走査方向ＳＤの上流に進む傾きである場合には、左回りを傾き角度ＣＡとして算出する。ＣＰＵ３０は、主走査方向ＭＤに沿った直線と先端直線ＨＬとが平行である場合には、傾き無を傾き角度ＣＡとして算出する。傾き角度ＣＡは、右回り、左回り、又は傾き無である回転方向と、主走査方向ＭＤに沿った直線に対する角度とを示している。後述する正弦処理、又は正接処理は、主走査方向ＭＤに沿った直線に対する角度に対して実行される。
【００４３】
ＣＰＵ３０は、検出領域を設定する（ＲＡ４）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、傾き角度ＣＡに基づいて傾き無検出領域設定処理、左回り検出領域設定処理、または右回り検出領域設定処理を実行することにより、下流基点位置ＤＣＰ、および上流基点位置ＵＣＰを算出すると共に、第１検出領域ＤＲ１、第２検出領域ＤＲ２、第３検出領域ＤＲ３、および規定位置ＳＰを設定する。処理ＲＡ４が終了すると、先端検知処理Ｒ３が終了する。
【００４４】
（検出領域設定処理ＲＡ４）
図６に示す検出領域設定処理ＲＡ４が開始されると、ＣＰＵ３０は、傾き角度ＣＡの回転方向が傾き無、左回り、または右回りのいずれであるかを判断する（ＲＢ１）。ＣＰＵ３０は、傾き角度ＣＡの回転方向が傾き無である場合（ＲＢ１：傾き無）に、処理ＲＢ２に進み、傾き角度ＣＡの回転方向が左回りである場合（ＲＢ１：左回り）に、処理ＲＢ４に進み、傾き角度ＣＡの回転方向が右回りである場合（ＲＢ１：右回り）に、処理ＲＢ５に進む。
【００４５】
ＣＰＵ３０は、傾き無フラグＤＦＧをオンにしてＲＡＭ３２に記憶する（ＲＢ２）。
【００４６】
ＣＰＵ３０は、傾き無検出領域設定処理を実行する（ＲＢ３）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、図２５に示す下流基点位置ＤＣＰ、および上流基点位置ＵＣＰを算出し、図２５に示す第１検出領域ＤＲ１、第２検出領域ＤＲ２、および第３検出領域ＤＲ３を設定する。処理ＲＢ３が終了すると、検出領域設定処理ＲＡ４が終了する。
【００４７】
処理ＲＢ１において左回りと判断されると、ＣＰＵ３０は、左回り検出領域設定処理を実行する（ＲＢ４）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、図２７（Ａ）に示す下流基点位置ＤＣＰ、および上流基点位置ＵＣＰを算出し、図２７（Ａ）に示す第１検出領域ＤＲ１、第２検出領域ＤＲ２、第３検出領域ＤＲ３、および規定位置ＳＰを設定する。処理ＲＢ４が終了すると、検出領域設定処理ＲＡ４が終了する。
【００４８】
処理ＲＢ１において右回りと判断されると、ＣＰＵ３０は、右回り検出領域設定処理を実行する（ＲＢ５）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、図２６（Ａ）に示す下流基点位置ＤＣＰ、および上流基点位置ＵＣＰを算出し、図２６（Ａ）に示す第１検出領域ＤＲ１、第２検出領域ＤＲ２、第３検出領域ＤＲ３、および規定位置ＳＰを設定する。処理ＲＢ５が終了すると、検出領域設定処理ＲＡ４が終了する。
【００４９】
（傾き無検出領域設定処理ＲＢ３）
図７に示す傾き無検出領域設定処理ＲＢ３が開始されると、ＣＰＵ３０は、図２５に示す下流基点位置ＤＣＰを算出する（ＲＣ１）。具体的には、ＣＰＵ３０は、下流側端直線ＤＳＬにおける副走査方向ＳＤの先端データ下端位置ＨＡＤＰの画素の主走査方向ＭＤの位置を下流基点位置ＤＣＰとして算出する。
【００５０】
ＣＰＵ３０は、図２５に示す上流基点位置ＵＣＰを算出する（ＲＣ２）。具体的には、ＣＰＵ３０は、上流側端直線ＵＳＬにおける副走査方向ＳＤの先端データ下端位置ＨＡＤＰの画素の主走査方向ＭＤの位置を上流基点位置ＵＣＰとして算出する。
【００５１】
ＣＰＵ３０は、図２５に示す第１検出領域ＤＲ１を設定する（ＲＣ３）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、上流基点位置ＵＣＰの画素から主走査方向ＭＤに沿って下流へ３１画素離れた位置の画素までの領域を第１検出領域ＤＲ１として設定してＲＡＭ３２に記憶する。
【００５２】
ＣＰＵ３０は、図２５に示す第２検出領域ＤＲ２を設定する（ＲＣ４）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、主走査方向ＭＤにおける上流基点位置ＵＣＰと下流基点位置ＤＣＰとの中点を中心とした主走査方向ＭＤの３１画素の主走査方向ＭＤの領域を第２検出領域ＤＲ２として設定してＲＡＭ３２に記憶する。
【００５３】
ＣＰＵ３０は、図２５に示す第３検出領域ＤＲ３を設定する（ＲＣ５）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、下流基点位置ＤＣＰの画素から主走査方向ＭＤに沿って上流へ３１画素離れた位置の画素までの領域を第３検出領域ＤＲ３として設定してＲＡＭ３２に記憶する。処理ＲＣ５が終了すると、傾き無検出領域設定処理ＲＢ３が終了する。
【００５４】
（左回り検出領域設定処理ＲＢ４）
図８に示す左回り検出領域設定処理ＲＢ４が開始されると、ＣＰＵ３０は、図２７（Ａ）に示す下流基点位置ＤＣＰを算出する（ＲＤ１）。具体的には、ＣＰＵ３０は、下流側端直線ＤＳＬにおける副走査方向ＳＤの先端データ下端位置ＨＡＤＰの画素の主走査方向ＭＤの位置を下流基点位置ＤＣＰとして算出する。
【００５５】
ＣＰＵ３０は、図２７（Ａ）に示す上流基点位置ＵＣＰを算出する（ＲＤ２）。具体的には、ＣＰＵ３０は、上流側端直線ＵＳＬにおいて、上流側端直線ＵＳＬと下流側端直線ＤＳＬとの距離に「２」の平方根を掛け算した距離だけ先端直線ＨＬから離れた位置における画素の位置を上流基点位置ＵＣＰとして算出する。本実施形態では、「２」の平方根は、規定の大きさの原稿の長辺を短辺で割り算した比率である。
【００５６】
ＣＰＵ３０は、図２７（Ａ）に示す第１検出領域ＤＲ１を設定する（ＲＤ３）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、下流基点位置ＤＣＰの画素から主走査方向ＭＤに沿って上流へ３１画素離れた位置の画素までの領域を第１検出領域ＤＲ１として設定してＲＡＭ３２に記憶する。
【００５７】
ＣＰＵ３０は、図２７（Ａ）に示す第２検出領域ＤＲ２を設定する（ＲＤ４）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、主走査方向ＭＤにおける上流基点位置ＵＣＰと下流基点位置ＤＣＰとの中点を中心とした主走査方向ＭＤの３１画素の主走査方向ＭＤの領域を第２検出領域ＤＲ２として設定してＲＡＭ３２に記憶する。
【００５８】
ＣＰＵ３０は、図２７（Ａ）に示す第３検出領域ＤＲ３を設定する（ＲＤ５）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、上流基点位置ＵＣＰの画素から主走査方向ＭＤに沿って下流へ３１画素離れた位置の画素までの領域を第３検出領域ＤＲ３として設定してＲＡＭ３２に記憶する。
【００５９】
ＣＰＵ３０は、図２７（Ａ）に示す規定位置ＳＰを設定する（ＲＤ６）。具体的には、ＣＰＵ３０は、処理ＲＤ２において算出した上流基点位置ＵＣＰを規定位置ＳＰとして設定してＲＡＭ３２に記憶する。処理ＲＤ６が終了すると、左回り検出領域設定処理ＲＢ４が終了する。
【００６０】
（右回り検出領域設定処理ＲＢ５）
図９に示す右回り検出領域設定処理ＲＢ５が開始されると、ＣＰＵ３０は、図２６（Ａ）に示す下流基点位置ＤＣＰを算出する（ＲＥ１）。具体的には、ＣＰＵ３０は、下流側端直線ＤＳＬにおいて、上流側端直線ＵＳＬと下流側端直線ＤＳＬとの距離に「２」の平方根を掛け算した距離だけ先端直線ＨＬから離れた位置における画素の主走査方向ＭＤの位置を下流基点位置ＤＣＰとして算出する。本実施形態では、「２」の平方根は、規定の大きさの原稿の長辺を短辺で割り算した比率である。
【００６１】
ＣＰＵ３０は、図２６（Ａ）に示す上流基点位置ＵＣＰを算出する（ＲＥ２）。具体的には、ＣＰＵ３０は、上流側端直線ＵＳＬにおける副走査方向ＳＤの先端データ下端位置ＨＡＤＰの画素の主走査方向ＭＤの位置を上流基点位置ＵＣＰとして算出する。
【００６２】
ＣＰＵ３０は、図２６（Ａ）に示す第１検出領域ＤＲ１を設定する（ＲＥ３）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、上流基点位置ＤＣＰの画素から主走査方向ＭＤに沿って下流へ３１画素離れた位置の画素までの領域を第１検出領域ＤＲ１として設定してＲＡＭ３２に記憶する。
【００６３】
ＣＰＵ３０は、図２６（Ａ）に示す第２検出領域ＤＲ２を設定する（ＲＥ４）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、主走査方向ＭＤにおける上流基点位置ＵＣＰと下流基点位置ＤＣＰとの中点を中心とした主走査方向ＭＤの３１画素の主走査方向ＭＤの領域を第２検出領域ＤＲ２として設定してＲＡＭ３２に記憶する。
【００６４】
ＣＰＵ３０は、図２６（Ａ）に示す第３検出領域ＤＲ３を設定する（ＲＥ５）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの先端データ下端位置ＨＡＤＰから副走査方向ＳＤの下流において、下流基点位置ＤＣＰの画素から主走査方向ＭＤに沿って上流へ３１画素離れた位置の画素までの領域を第３検出領域ＤＲ３として設定してＲＡＭ３２に記憶する。
【００６５】
ＣＰＵ３０は、図２６（Ａ）に示す規定位置ＳＰを設定する（ＲＥ６）。具体的には、ＣＰＵ３０は、処理ＲＥ１において算出した下流基点位置ＤＣＰを規定位置ＳＰとして設定してＲＡＭ３２に記憶する。処理ＲＥ６が終了すると、右回り検出領域設定処理ＲＢ５が終了する。
【００６６】
（原稿検知処理Ｒ４）
図１０に示す原稿検知処理Ｒ４が開始されると、ＣＰＵ３０は、傾き無フラグＤＦＧがオンであるか否かを判断する（ＲＦ１）。ＣＰＵ３０は、傾き無フラグＤＦＧがオンである場合（ＲＦ１：Ｙｅｓ）に、処理ＲＦ２に進み、傾き無フラグＤＦＧがオフである場合（ＲＦ１：Ｎｏ）に、処理ＲＦ３に進む。
【００６７】
ＣＰＵ３０は、傾き無原稿検知処理を実行する（ＲＦ２）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３を算出する。ＣＰＵ３０は、原稿端フラグＥＦＧがオンであり、且つ第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３の全てが閾値ＴＨ未満である場合に、傾き無原稿検知処理ＲＦ２を終了する。処理ＲＦ２が終了すると、原稿検知処理Ｒ４が終了する。本実施形態では、エッジ検出部３９は、原稿ＧＳの背景色を読み取らせた場合に、５％の割合で「１」の白黒データＷＢＤを生成し、原稿押え板ＣＶを読み取らせた場合に、１％の割合で「１」の白黒データＷＢＤを生成する。よって、エッジ検出部３９は、３１画素の領域について、原稿ＧＳの背景色を読み取らせた場合に、１画素又は２画素について「１」の白黒データＷＢＤを生成し、原稿押え板ＣＶを読み取らせた場合に、０画素又は１画素について「１」の白黒データＷＢＤを生成する。また、エッジ検出部３９は、原稿ＧＳの端部を読み取らせた場合に、「１」の白黒データＷＢＤを生成する。そのため、本実施形態では、閾値ＴＨは、「１」より大きい「２」である。
【００６８】
処理ＲＦ１においてＮｏと判断されると、ＣＰＵ３０は、図２６（Ａ）、及び図２７（Ａ）に示す第１距離ＬＧ１を算出する（ＲＦ３）。具体的には、ＣＰＵ３０は、傾き角度ＣＡに正接処理を施した値に第１検出領域ＤＲ１の主走査方向ＭＤの中央位置と第２検出領域ＤＲ２の主走査方向ＭＤの中央位置との距離を掛け算することにより第１距離ＬＧ１を算出する。
【００６９】
ＣＰＵ３０は、傾き有原稿検知処理を実行する（ＲＦ４）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、第１検出処理を実行することにより、第１エッジ数ＥＮ１に基づき第１フラグＦＧ１をオンにし、第１検出位置ＤＰ１を記憶する。ＣＰＵ３０は、第２検出処理を実行することにより、第２エッジ数ＥＮ２に基づき第２フラグＦＧ２をオンにし、第２検出位置ＤＰ２を記憶する。ＣＰＵ３０は、第１検出位置ＤＰ１と第２検出位置ＤＰ２とに基づき矩形フラグＲＴＦＧをオン、又はオフに設定する。ＣＰＵ３０は、第３検出処理、又は第４検出処理において、矩形フラグＲＴＦＧに基づいて停止距離ＨＴＬを算出し、矩形フラグＲＴＦＧがオンである場合に読取部２０が停止位置ＨＴＰとなるまで読取動作を継続する。処理ＲＦ４が終了すると、原稿検知処理Ｒ４が終了する。
【００７０】
（傾き無原稿検知処理ＲＦ２）
図１１に示す傾き無原稿検知処理（ＲＦ２）が開始されると、ＣＰＵ３０は、検出ラインデータＤＬＤを設定する（ＲＧ１）。具体的には、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置における１ラインの白黒データＷＢＤを検出ラインデータＤＬＤとして設定してＲＡＭ３２に記憶する。ここで、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置は、副走査方向ＳＤの先頭ラインＦＬから副走査方向ＳＤに沿って下流へ合計ライン数ＴＬＮだけ離れたラインの副走査方向ＳＤの位置である。本実施形態では、処理Ｒ１において合計ライン数ＴＬＮが「３５０」に設定され、後述する処理ＲＧ８において「１」が加算されていくため、先端データ下端位置ＨＡＤＰから副走査方向ＳＤに沿って下流の位置における１ラインの白黒データＷＢＤが検出ラインデータＤＬＤとして設定される。ここで、処理ＲＧ１において設定される合計ライン数ＴＬＮは、先頭ラインＦＬからの処理ＲＦ２を実行する対象となる対象ラインまでのライン数を示す。
【００７１】
ＣＰＵ３０は、図１２に示すエッジ数計数処理を実行する（ＲＧ２）。図１２に示すエッジ数計数処理ＲＧ２が開始されると、ＣＰＵ３０は、第1エッジ数ＥＮ１を計数する（ＲＪ１）。具体的には、ＣＰＵ３０は、検出ラインデータＤＬＤのうちで第1検出領域ＤＲ１に含まれる白黒データＷＢＤの「１」の画素数を第1エッジ数ＥＮ１として計数する。
【００７２】
ＣＰＵ３０は、第２エッジ数ＥＮ２を計数する（ＲＪ２）。具体的には、ＣＰＵ３０は、検出ラインデータＤＬＤのうちで第２検出領域ＤＲ２に含まれる白黒データＷＢＤの「１」の画素数を第２エッジ数ＥＮ２として計数する。
【００７３】
ＣＰＵ３０は、第３エッジ数ＥＮ３を計数する（ＲＪ３）。具体的には、ＣＰＵ３０は、検出ラインデータＤＬＤのうちで第３検出領域ＤＲ３に含まれる白黒データＷＢＤの「１」の画素数を第３エッジ数ＥＮ３として計数する。処理ＲＪ３が終了すると、エッジ数計数処理ＲＧ２が終了する。
【００７４】
処理ＲＧ２が終了すると、図１１に示すように、ＣＰＵ３０は、原稿端フラグＥＦＧがオンであるか否かを判断する（ＲＧ３）。ＣＰＵ３０は、原稿端フラグＥＦＧがオンである場合（ＲＧ３：Ｙｅｓ）に、処理ＲＧ９に進み、原稿端フラグＥＦＧがオフである場合（ＲＧ３：Ｎｏ）に、処理ＲＧ４に進む。
【００７５】
処理ＲＧ３、又は処理ＲＧ９においてＮｏと判断されると、ＣＰＵ３０は、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３の全てが閾値ＴＨ以上であるか否かを判断する（ＲＧ４）。ＣＰＵ３０は、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３の全てが閾値ＴＨ以上である場合（ＲＧ４：Ｙｅｓ）に、処理ＲＧ５に進み、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３のいずれかが閾値ＴＨ未満である場合（ＲＧ４：Ｎｏ）に、処理ＲＧ６に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【００７６】
処理ＲＧ４においてＹｅｓと判断されると、ＣＰＵ３０は、原稿端フラグＥＦＧをオンにしてＲＡＭ３２に記憶する（ＲＧ５）。ＣＰＵ３０は、処理ＲＧ５が終了すると、処理ＲＧ７に進む。
【００７７】
処理ＲＧ４においてＮｏと判断されると、ＣＰＵ３０は、原稿端フラグＥＦＧをオフにしてＲＡＭ３２に記憶する（ＲＧ６）。
【００７８】
処理ＲＧ５、又は処理ＲＧ６が終了すると、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰであるか否かを判断する（ＲＧ７）。ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰである場合（ＲＧ７：Ｙｅｓ）に、傾き無原稿検知処理ＲＦ２が終了し、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰでない場合（ＲＧ７：Ｎｏ）に、処理ＲＧ８に進む。本実施形態では、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置は、先頭ラインＦＬから合計ライン数ＴＬＮだけ離れた副走査方向ＳＤの位置である。
【００７９】
ＣＰＵ３０は、合計ライン数ＴＬＮに数値「１」を加算する（ＲＧ８）。ＣＰＵ３０は、処理ＲＧ８が終了すると、処理ＲＧ１に進む。
【００８０】
処理ＲＧ３においてＹｅｓと判断されると、ＣＰＵ３０は、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３の全てが閾値ＴＨ未満であるか否かを判断する（ＲＧ９）。ＣＰＵ３０は、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３のいずれかが閾値ＴＨ以上である場合（ＲＧ９：Ｎｏ）に、処理ＲＧ４に進み、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３の全てが閾値ＴＨ未満である場合（ＲＧ９：Ｙｅｓ）に、原稿ＧＳがなくなったと判断して傾き無原稿検知処理ＲＦ２が終了する。本実施形態では、閾値ＴＨは、同様に「２」である。
【００８１】
（傾き有原稿検知処理ＲＦ４）
図１３に示す傾き有原稿検知処理ＲＦ４が開始されると、ＣＰＵ３０は、第１検出処理を実行する（ＲＨ１）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、第１フラグＦＧ１をオンに設定し、第１検出位置ＤＰ１を記憶するか、又は読取終了フラグＲＥＦＧをオンに設定する。ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が規定位置ＳＰである場合に、第４検出領域ＤＲ４を設定し、切替フラグＣＦＧをオンに設定する。
【００８２】
ＣＰＵ３０は、読取終了フラグＲＥＦＧがオンであるか否かを判断する（ＲＨ２）。ＣＰＵ３０は、読取終了フラグＲＥＦＧがオンである場合（ＲＨ２：Ｙｅｓ）に、傾き有原稿検知処理ＲＦ４が終了し、読取終了フラグＲＥＦＧがオフである場合（ＲＨ２：Ｎｏ）に、処理ＲＨ３に進む。
【００８３】
ＣＰＵ３０は、第２検出処理を実行する（ＲＨ３）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、第２フラグＦＧ２をオンに設定し、矩形フラグＲＴＦＧを設定するか、読取終了フラグＲＥＦＧをオンに設定するか、又は第１フラグＦＧ１をオフに設定する。ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が規定位置ＳＰである場合に、第４検出領域ＤＲ４を設定し、切替フラグＣＦＧをオンに設定する。
【００８４】
ＣＰＵ３０は、読取終了フラグＲＥＦＧがオンであるか否かを判断する（ＲＨ４）。ＣＰＵ３０は、読取終了フラグＲＥＦＧがオンである場合（ＲＨ４：Ｙｅｓ）に、傾き有原稿検知処理ＲＦ４が終了し、読取終了フラグＲＥＦＧがオフである場合（ＲＨ４：Ｎｏ）に、処理ＲＨ５に進む。
【００８５】
ＣＰＵ３０は、第１フラグＦＧ１がオンであるか否かを判断する（ＲＨ５）。ＣＰＵ３０は、第１フラグＦＧ１がオフである場合（ＲＨ５：Ｎｏ）に、処理ＲＨ１に進み、第１フラグＦＧ１がオンである場合（ＲＨ５：Ｙｅｓ）に、処理ＲＨ６に進む。
【００８６】
ＣＰＵ３０は、切替フラグＣＦＧがオンであるか否かを判断する（ＲＨ６）。ＣＰＵ３０は、切替フラグＣＦＧがオンである場合（ＲＨ６：Ｙｅｓ）に、処理ＲＨ８に進み、切替フラグＣＦＧがオフである場合（ＲＨ６：Ｎｏ）に、処理ＲＨ７に進む。
【００８７】
ＣＰＵ３０は、第３検出処理を実行する（ＲＨ７）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、次の３つの処理のうちのいずれかを実行する。１つ目の処理は、読取終了フラグＲＥＦＧをオンにする処理である。２つ目の処理は、第２フラグＦＧ２をオフにする処理である。３つ目の処理は、矩形フラグＲＴＦＧがオンである場合に読取部２０が停止位置ＨＴＰに位置するまで読取動作を継続する処理である。ＣＰＵ３０は、処理ＲＨ７が終了すると、処理ＲＨ９に進む。
【００８８】
処理ＲＨ６においてＹｅｓと判断されると、ＣＰＵ３０は、第４検出処理を実行する（ＲＨ８）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、次の３つの処理のうちのいずれかを実行する。１つ目の処理は、読取終了フラグＲＥＦＧをオンにする処理である。２つ目の処理は、第２フラグＦＧ２をオフにする処理である。３つ目の処理は、矩形フラグＲＴＦＧがオンである場合に読取部２０が停止位置ＨＴＰに位置するまで読取動作を継続する処理である。
【００８９】
処理ＲＨ７、又は処理ＲＨ８が終了すると、ＣＰＵ３０は、読取終了フラグＲＥＦＧがオンであるか否かを判断する（ＲＨ９）。ＣＰＵ３０は、読取終了フラグＲＥＦＧがオンである場合（ＲＨ９：Ｙｅｓ）に、傾き有原稿検知処理ＲＦ４が終了し、読取終了フラグＲＥＦＧがオフである場合（ＲＨ９：Ｎｏ）に、処理ＲＨ１０に進む。
【００９０】
ＣＰＵ３０は、第２フラグＦＧ２がオンであるか否かを判断する（ＲＨ１０）。ＣＰＵ３０は、第２フラグＦＧ２がオフである場合（ＲＨ１０：Ｎｏ）に、処理ＲＨ３に進み、第２フラグＦＧ２がオンである場合（ＲＨ１０：Ｙｅｓ）に、原稿ＧＳがなくなったと判断して傾き有原稿検知処理ＲＦ４が終了する。
【００９１】
（第１検出処理ＲＨ１）
図１４に示す第１検出処理ＲＨ１が開始されると、ＣＰＵ３０は、検出ラインデータＤＬＤを設定する（ＲＩ１）。具体的には、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置における１ラインの白黒データＷＢＤを検出ラインデータＤＬＤとして設定してＲＡＭ３２に記憶する。ここで、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置は、先頭ラインＦＬから副走査方向ＳＤに沿って下流へ合計ライン数ＴＬＮだけ離れたラインの副走査方向ＳＤの位置である。本実施形態では、処理Ｒ１において合計ライン数ＴＬＮが「３５０」に設定され、後述する処理ＲＩ８において「１」が加算されていくため、副走査方向ＳＤにおける先端データ下端位置ＨＡＤＰから副走査方向ＳＤに沿って下流の位置における１ラインの白黒データＷＢＤが検出ラインデータＤＬＤとして設定される。ここで、処理ＲＩ１において設定される合計ライン数ＴＬＮは、先頭ラインＦＬからの処理ＲＨ１を実行する対象となる対象ラインまでのライン数である。
【００９２】
ＣＰＵ３０は、エッジ数計数処理を実行する（ＲＩ２）。ＣＰＵ３０は、図１２に示す前述した処理ＲＧ２と同様に、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３を計数する。
【００９３】
ＣＰＵ３０は、第１端フラグＥＦＧ１がオンであるか否かを判断する（ＲＩ３）。ＣＰＵ３０は、第１端フラグＥＦＧ１がオンである場合（ＲＩ３：Ｙｅｓ）に、処理ＲＩ９に進み、第１端フラグＥＦＧ１がオフである場合（ＲＩ３：Ｎｏ）に、処理ＲＩ４に進む。
【００９４】
ＣＰＵ３０は、図１５に示す第１端フラグＥＦＧ１判断処理を実行する（ＲＩ４）。図１５に示す第１端フラグＥＦＧ１判断処理ＲＩ４が開始されると、ＣＰＵ３０は、第１エッジ数ＥＮ１が閾値ＴＨ以上であるか否かを判断する（ＲＫ１）。ＣＰＵ３０は、第１エッジ数ＥＮ１が閾値ＴＨ以上である場合（ＲＫ１：Ｙｅｓ）に、処理ＲＫ２に進み、第１エッジ数ＥＮ１が閾値ＴＨ未満である場合（ＲＫ１：Ｎｏ）に、処理ＲＫ３に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【００９５】
処理ＲＫ１においてＹｅｓと判断されると、ＣＰＵ３０は、第１端フラグＥＦＧ１をオンに設定してＲＡＭ３２に記憶する（ＲＫ２）。処理ＲＫ２が終了すると、第１端フラグＥＦＧ１判断処理ＲＩ４が終了する。
【００９６】
処理ＲＫ１においてＮｏと判断されると、ＣＰＵ３０は、第１端フラグＥＦＧ１をオフに設定してＲＡＭ３２に記憶する（ＲＫ３）。処理ＲＫ３が終了すると、第１端フラグＥＦＧ１判断処理ＲＩ４が終了する。
【００９７】
処理ＲＩ４が終了すると、図１４に示すように、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰであるか否かを判断する（ＲＩ５）。ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰである場合（ＲＩ５：Ｙｅｓ）に、処理ＲＩ６に進み、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰでない場合（ＲＩ５：Ｎｏ）に、処理ＲＩ７に進む。本実施形態では、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置は、先頭ラインＦＬから合計ライン数ＴＬＮだけ離れた副走査方向ＳＤの位置である。
【００９８】
ＣＰＵ３０は、読取終了フラグＲＥＦＧをオンに設定してＲＡＭ３２に記憶する（ＲＩ６）。処理ＲＩ６が終了すると、第１検出処理ＲＨ１が終了する。
【００９９】
処理ＲＩ５においてＮｏと判断されると、ＣＰＵ３０は、図１６に示す規定位置ＳＰ判断処理を実行する（ＲＩ７）。図１６に示す規定位置ＳＰ判断処理ＲＩ７が開始されると、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が規定位置ＳＰであるか否かを判断する（ＲＬ１）。ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が規定位置ＳＰでない場合（ＲＬ１：Ｎｏ）に、規定位置ＳＰ判断処理ＲＩ７が終了し、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が規定位置ＳＰである場合（ＲＬ１：Ｙｅｓ）に、処理ＲＬ２に進む。
【０１００】
ＣＰＵ３０は、図２７（Ａ）に示す最大基点位置ＭＣＰを算出する（ＲＬ２）。具体的には、ＣＰＵ３０は、第３検出領域ＤＲ３に近い上流側端直線ＵＳＬ、又は下流側端直線ＤＳＬにおいて、副走査方向ＳＤの最大読取位置ＭＲＰの画素の主走査方向ＭＤの位置を最大基点位置ＭＣＰとして算出する。
【０１０１】
ＣＰＵ３０は、図２７（Ａ）に示す第４検出領域ＤＲ４を設定する（ＲＬ３）。具体的には、ＣＰＵ３０は、副走査方向ＳＤの規定位置ＳＰから副走査方向ＳＤの下流において、最大基点位置ＭＣＰの画素から主走査方向ＭＤに沿って第２検出領域ＤＲ２側へ３１画素離れた位置の画素までの領域を第４検出領域ＤＲ４として設定してＲＡＭ３２に記憶する。
【０１０２】
ＣＰＵ３０は、切替フラグＣＦＧをオンに設定してＲＡＭ３２に記憶する（ＲＬ４）。処理ＲＬ４が終了すると、規定位置ＳＰ判断処理ＲＩ７が終了する。
【０１０３】
処理ＲＩ７が終了すると、図１４に示すように、ＣＰＵ３０は、合計ライン数ＴＬＮに「１」を加算する（ＲＩ８）。ＣＰＵ３０は、処理ＲＩ８が終了すると、処理ＲＩ１に進む。
【０１０４】
処理ＲＩ３においてＹｅｓと判断されると、ＣＰＵ３０は、第１エッジ数ＥＮ１が閾値ＴＨ未満であるか否かを判断する（ＲＩ９）。ＣＰＵ３０は、第１エッジ数ＥＮ１が閾値ＴＨ以上である場合（ＲＩ９：Ｎｏ）に、処理ＲＩ４に進み、第１エッジ数ＥＮ１が閾値ＴＨ未満である場合（ＲＩ９：Ｙｅｓ）に、処理ＲＩ１０に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【０１０５】
ＣＰＵ３０は、第１フラグＦＧ１をオンに設定してＲＡＭ３２に記憶する（ＲＩ１０）。
【０１０６】
ＣＰＵ３０は、合計ライン数ＴＬＮを副走査方向ＳＤの第１検出位置ＤＰ１としてＲＡＭ３２に記憶する（ＲＩ１１）。処理ＲＩ１１が終了すると、第１検出領域ＤＲ１において原稿ＧＳがなくなったと判断して第１検出処理ＲＨ１が終了する。本実施形態では、第１検出位置ＤＰ１は、先頭ラインＦＬからのライン数に相当する位置である。
【０１０７】
（第２検出処理ＲＨ３）
図１７に示す第２検出処理ＲＨ３が開始されると、ＣＰＵ３０は、検出ラインデータＤＬＤを設定する（ＲＭ１）。具体的には、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置における１ラインの白黒データＷＢＤを検出ラインデータＤＬＤとして設定してＲＡＭ３２に記憶する。ここで、処理ＲＨ３が開始されて最初に処理ＲＭ１が実行されるときの合計ライン数ＴＬＮは、第１検出処理ＲＨ１における処理ＲＩ８において本処理の直前に加算された合計ライン数ＴＬＮである。ここで、処理ＲＭ１において設定される合計ライン数ＴＬＮは、先頭ラインＦＬからの処理ＲＨ３を実行する対象となる対象ラインまでのライン数である。
【０１０８】
ＣＰＵ３０は、エッジ数計数処理を実行する（ＲＭ２）。ＣＰＵ３０は、図１２に示す前述した処理ＲＧ２と同様に、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３を計数する。
【０１０９】
ＣＰＵ３０は、第２端フラグＥＦＧ２がオンであるか否かを判断する（ＲＭ３）。ＣＰＵ３０は、第２端フラグＥＦＧ２がオンである場合（ＲＭ３：Ｙｅｓ）に、処理ＲＭ１１に進み、第２端フラグＥＦＧ２がオフである場合（ＲＭ３：Ｎｏ）に、処理ＲＭ４に進む。
【０１１０】
処理ＲＭ３、又は処理ＲＭ１１においてＮｏと判断されると、ＣＰＵ３０は、図１８に示す第２端フラグＥＦＧ２判断処理を実行する（ＲＭ４）。図１８に示す第２端フラグＥＦＧ２判断処理ＲＭ４が開始されると、ＣＰＵ３０は、第２エッジ数ＥＮ２が閾値ＴＨ以上であるか否かを判断する（ＲＯ１）。ＣＰＵ３０は、第２エッジ数ＥＮ２が閾値ＴＨ以上である場合（ＲＯ１：Ｙｅｓ）に、処理ＲＯ２に進み、第２エッジ数ＥＮ２が閾値ＴＨ未満である場合（ＲＯ１：Ｎｏ）に、処理ＲＯ３に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【０１１１】
処理ＲＯ１においてＹｅｓと判断されると、ＣＰＵ３０は、第２端フラグＥＦＧ２をオンに設定してＲＡＭ３２に記憶する（ＲＯ２）。処理ＲＯ２が終了すると、第２端フラグＥＦＧ２判断処理ＲＭ４が終了する。
【０１１２】
処理ＲＯ１においてＮｏと判断されると、ＣＰＵ３０は、第２端フラグＥＦＧ２をオフに設定してＲＡＭ３２に記憶する（ＲＯ３）。処理ＲＯ３が終了すると、第２端フラグＥＦＧ２判断処理ＲＭ４が終了する。
【０１１３】
処理ＲＭ４が終了すると、図１７に示すように、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰであるか否かを判断する（ＲＭ５）。ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰである場合（ＲＭ５：Ｙｅｓ）に、処理ＲＭ６に進み、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰでない場合（ＲＭ５：Ｎｏ）に、処理ＲＭ７に進む。本実施形態では、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置は、先頭ラインＦＬから合計ライン数ＴＬＮだけ離れた副走査方向ＳＤの位置である。
【０１１４】
ＣＰＵ３０は、読取終了フラグＲＥＦＧをオンに設定してＲＡＭ３２に記憶する（ＲＭ６）。処理ＲＭ６が終了すると、第２検出処理ＲＨ３が終了する。
【０１１５】
処理ＲＭ５においてＮｏと判断されると、第１エッジ数ＥＮ１が閾値ＴＨ以上であるか否かを判断する（ＲＭ７）。ＣＰＵ３０は、第１エッジ数ＥＮ１が閾値ＴＨ以上である場合（ＲＭ７：Ｙｅｓ）に、処理ＲＭ８に進み、第１エッジ数ＥＮ１が閾値ＴＨ未満である場合（ＲＭ７：Ｎｏ）に、処理ＲＭ９に進む。本実施形態では、閾値ＴＨは、「２」である。
【０１１６】
ＣＰＵ３０は、第１フラグＦＧ１をオフに設定してＲＡＭ３２に記憶する（ＲＭ８）。処理ＲＭ８が終了すると、第２検出処理ＲＨ３が終了する。
【０１１７】
処理ＲＭ７においてＮｏと判断されると、ＣＰＵ３０は、規定位置ＳＰ判断処理を実行する（ＲＭ９）。具体的には、ＣＰＵ３０は、図１６に示す前述した処理ＲＩ７と同様に、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が規定位置ＳＰである場合（ＲＬ１：Ｙｅｓ）に、図２７（Ａ）に示す第４検出領域ＤＲ４を設定し、切替フラグＣＦＧをオンにしてＲＡＭ３２に記憶する。
【０１１８】
ＣＰＵ３０は、合計ライン数ＴＬＮに「１」を加算する（ＲＭ１０）。ＣＰＵ３０は、処理ＲＭ１０が終了すると、処理ＲＭ１に進む。
【０１１９】
処理ＲＭ３においてＹｅｓと判断されると、ＣＰＵ３０は、第２エッジ数ＥＮ２が閾値ＴＨ未満であるか否かを判断する（ＲＭ１１）。ＣＰＵ３０は、第２エッジ数ＥＮ２が閾値ＴＨ以上である場合（ＲＭ１１：Ｎｏ）に、処理ＲＭ４に進み、第２エッジ数ＥＮ２が閾値ＴＨ未満である場合（ＲＭ１１：Ｙｅｓ）に、処理ＲＭ１２に進む。
【０１２０】
ＣＰＵ３０は、第２フラグＦＧ２をオンに設定してＲＡＭ３２に記憶する（ＲＭ１２）。
【０１２１】
ＣＰＵ３０は、合計ライン数ＴＬＮを副走査方向ＳＤの第２検出位置ＤＰ２としてＲＡＭ３２に記憶する（ＲＭ１３）。本実施形態では、第２検出位置ＤＰ２は、先頭ラインＦＬからのライン数に相当する位置である。
【０１２２】
ＣＰＵ３０は、図１９に示す矩形フラグＲＴＦＧ判断処理を実行する（ＲＭ１４）。図１９に示す矩形フラグＲＴＦＧ判断処理ＲＭ１４が開始されると、ＣＰＵ３０は、第１位置差分ＰＤ１を算出する（ＲＮ１）。具体的には、ＣＰＵ３０は、第２検出位置ＤＰ２から第１検出位置ＤＰ１を引き算することにより第１位置差分ＰＤ１を算出する。
【０１２３】
ＣＰＵ３０は、第１位置差分ＰＤ１が第１距離ＬＧ１と同じであるか否かを判断する（ＲＮ２）。ＣＰＵ３０は、第１位置差分ＰＤ１が第１距離ＬＧ１と同じである場合（ＲＮ２：Ｙｅｓ）に、処理ＲＮ３に進み、第１位置差分ＰＤ１が第１距離ＬＧ１と同じでない場合（ＲＮ２：Ｎｏ）に、処理ＲＮ４に進む。
【０１２４】
処理ＲＮ２においてＹｅｓと判断されると、ＣＰＵ３０は、矩形フラグＲＴＦＧをオンに設定してＲＡＭ３２に記憶する（ＲＮ３）。処理ＲＮ３が終了すると、矩形フラグＲＴＦＧ判断処理ＲＭ１４が終了する。処理ＲＭ１４が終了すると、第２検出領域ＤＲ２において原稿ＧＳがなくなったと判断して第２検出処理ＲＨ３が終了する。
【０１２５】
処理ＲＮ２においてＮｏと判断されると、ＣＰＵ３０は、矩形フラグＲＴＦＧをオフに設定してＲＡＭ３２に記憶する（ＲＮ４）。処理ＲＮ４が終了すると、矩形フラグＲＴＦＧ判断処理ＲＭ１４が終了する。処理ＲＭ１４が終了すると、第２検出領域ＤＲ２において原稿ＧＳがなくなったと判断して第２検出処理ＲＨ３が終了する。
【０１２６】
（第３検出処理ＲＨ７）
図２０に示す第３検出処理ＲＨ７が開始されると、ＣＰＵ３０は、検出ラインデータＤＬＤを設定する（ＲＰ１）。具体的には、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置における１ラインの白黒データＷＢＤを検出ラインデータＤＬＤとして設定してＲＡＭ３２に記憶する。ここで、処理ＲＨ７が開始されて最初に実行されるときの合計ライン数ＴＬＮは、第２検出処理ＲＨ３における処理ＲＭ１０において本処理の直前に加算された合計ライン数ＴＬＮである。ここで、処理ＲＰ１において設定される合計ライン数ＴＬＮは、先頭ラインＦＬからの処理ＲＨ７を実行する対象となる対象ラインまでのライン数である。
【０１２７】
ＣＰＵ３０は、エッジ数計数処理を実行する（ＲＰ２）。ＣＰＵ３０は、図１２に示す前述した処理ＲＧ２と同様に、第１エッジ数ＥＮ１、第２エッジ数ＥＮ２、および第３エッジ数ＥＮ３を計数する。
【０１２８】
ＣＰＵ３０は、第３端フラグＥＦＧ３がオンであるか否かを判断する（ＲＰ３）。ＣＰＵ３０は、第３端フラグＥＦＧ３がオンである場合（ＲＰ３：Ｙｅｓ）に、処理ＲＰ１０に進み、第３端フラグＥＦＧ３がオフである場合（ＲＰ３：Ｎｏ）に、処理ＲＰ４に進む。
【０１２９】
ＣＰＵ３０は、図２１に示す第３端フラグＥＦＧ３判断処理を実行する（ＲＰ４）。図２１に示す第３端フラグＥＦＧ３判断処理が開始されると、ＣＰＵ３０は、第３エッジ数ＥＮ３が閾値ＴＨ以上であるか否かを判断する（ＲＱ１）。ＣＰＵ３０は、第３エッジ数ＥＮ３が閾値ＴＨ以上である場合（ＲＱ１：Ｙｅｓ）に、処理ＲＱ２に進み、第３エッジ数ＥＮ３が閾値ＴＨ未満である場合（ＲＱ１：Ｎｏ）に、処理ＲＱ３に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【０１３０】
処理ＲＱ１においてＹｅｓと判断されると、ＣＰＵ３０は、第３端フラグＥＦＧ３をオンに設定してＲＡＭ３２に記憶する（ＲＱ２）。処理ＲＱ２が終了すると、第３端フラグＥＦＧ３判断処理ＲＰ４が終了する。
【０１３１】
処理ＲＱ１においてＮｏと判断されると、ＣＰＵ３０は、第３端フラグＥＦＧ３をオフに設定してＲＡＭ３２に記憶する（ＲＱ３）。処理ＲＱ３が終了すると、第３端フラグＥＦＧ３判断処理ＲＰ４が終了する。
【０１３２】
処理ＲＰ４が終了すると、図２０に示すように、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰであるか否かを判断する（ＲＰ５）。ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰである場合（ＲＰ５：Ｙｅｓ）に、処理ＲＰ６に進み、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰでない場合（ＲＰ５：Ｎｏ）に、処理ＲＰ７に進む。本実施形態では、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置は、先頭ラインＦＬから合計ライン数ＴＬＮだけ離れた副走査方向ＳＤの位置である。
【０１３３】
ＣＰＵ３０は、読取終了フラグＲＥＦＧをオンに設定してＲＡＭ３２に記憶する（ＲＰ６）。処理ＲＰ６が終了すると、第３検出処理ＲＨ７が終了する。
【０１３４】
処理ＲＰ５においてＮｏと判断されると、第２エッジ数ＥＮ２が閾値ＴＨ以上であるか否かを判断する（ＲＰ７）。ＣＰＵ３０は、第２エッジ数ＥＮ２が閾値ＴＨ以上である場合（ＲＰ７：Ｙｅｓ）に、処理ＲＰ８に進み、第２エッジ数ＥＮ２が閾値ＴＨ未満である場合（ＲＰ７：Ｎｏ）に、処理ＲＰ９に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【０１３５】
ＣＰＵ３０は、第２フラグＦＧ２をオフに設定してＲＡＭ３２に記憶する（ＲＰ８）。処理ＲＰ８が終了すると、第３検出処理ＲＨ７が終了する。
【０１３６】
処理ＲＰ７においてＮｏと判断されると、ＣＰＵ３０は、合計ライン数ＴＬＮに「１」を加算する（ＲＰ９）。ＣＰＵ３０は、処理ＲＰ９が終了すると、処理ＲＰ１に進む。
【０１３７】
処理ＲＰ３においてＹｅｓと判断されると、ＣＰＵ３０は、第３エッジ数ＥＮ３が閾値ＴＨ未満であるか否かを判断する（ＲＰ１０）。ＣＰＵ３０は、第３エッジ数ＥＮ３が閾値ＴＨ以上である場合（ＲＰ１０：Ｎｏ）に、処理ＲＰ４に進み、第３エッジ数ＥＮ３が閾値ＴＨ未満である場合（ＲＰ１０：Ｙｅｓ）に、処理ＲＰ１１に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【０１３８】
ＣＰＵ３０は、矩形フラグＲＴＦＧがオンであるか否かを判断する（ＲＰ１１）。ＣＰＵ３０は、矩形フラグＲＴＦＧがオフである場合（ＲＰ１１：Ｎｏ）に、第３領域ＤＲ３において原稿ＧＳがなくなったと判断して第３検出処理ＲＨ７が終了し、矩形フラグＲＴＦＧがオンである場合（ＲＰ１１：Ｙｅｓ）に、処理ＲＰ１２に進む。
【０１３９】
ＣＰＵ３０は、合計ライン数ＴＬＮを第３検出位置ＤＰ３としてＲＡＭ３２に記憶する（ＲＰ１２）。本実施形態では、第３検出位置ＤＰ３は、先頭ラインＦＬからのライン数に相当する位置である。
【０１４０】
ＣＰＵ３０は、停止位置移動処理を実行する（ＲＰ１３）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、切替フラグＣＦＧがオフである場合に、第１検出位置差分ＤＣＰ１、および停止距離ＨＴＬを算出し、停止位置ＨＴＰをＲＡＭ３２に記憶する。ＣＰＵ３０は、読取部２０が停止位置ＨＴＰまで移動する駆動指令を送信したと判断するときに、停止位置移動処理ＲＰ１３を終了する。処理ＲＰ１３が終了すると、第３検出領域ＤＲ３において原稿ＧＳがなくなったと判断して第３検出処理ＲＨ７が終了する。
【０１４１】
（第４検出処理ＲＨ８）
図２２に示す第４検出処理ＲＨ８が開始されると、ＣＰＵ３０は、検出ラインデータＤＬＤを設定する（ＲＲ１）。具体的には、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置における１ラインの白黒データＷＢＤを検出ラインデータＤＬＤとして設定してＲＡＭ３２に記憶する。ここで、処理ＲＨ８が開始されて最初に実行されるときの合計ライン数ＴＬＮは、第２検出処理ＲＨ３における処理ＲＭ１０において本処理の直前に加算された合計ライン数ＴＬＮである。ここで、処理ＲＲ１において設定される合計ライン数ＴＬＮは、先頭ラインＦＬからの処理ＲＨ８を実行する対象となる対象ラインまでのライン数である。
【０１４２】
ＣＰＵ３０は、第２エッジ数ＥＮ２、および第４エッジ数ＥＮ４を計数する（ＲＲ２）。具体的には、ＣＰＵ３０は、検出ラインデータＤＬＤのうちで第２検出領域ＤＲ２に含まれる白黒データＷＢＤが「１」である画素数を第２エッジ数ＥＮ２として計数し、検出ラインデータＤＬＤのうちで第４検出領域ＤＲ４に含まれる白黒データＷＢＤが「１」である画素数を第４エッジ数ＥＮ４として計数する。
【０１４３】
ＣＰＵ３０は、第４端フラグＥＦＧ４がオンであるか否かを判断する（ＲＲ３）。ＣＰＵ３０は、第４端フラグＥＦＧ４がオンである場合（ＲＲ３：Ｙｅｓ）に、処理ＲＲ１０に進み、第４端フラグＥＦＧ４がオフである場合（ＲＲ３：Ｎｏ）に、処理ＲＲ４に進む。
【０１４４】
ＣＰＵ３０は、図２３に示す第４端フラグＥＦＧ４判断処理を実行する（ＲＲ４）。図２３に示す第４端フラグＥＦＧ４判断処理が開始されると、ＣＰＵ３０は、第４エッジ数ＥＮ４が閾値ＴＨ以上であるか否かを判断する（ＲＳ１）。ＣＰＵ３０は、第４エッジ数ＥＮ４が閾値ＴＨ以上である場合（ＲＳ１：Ｙｅｓ）に、処理ＲＳ２に進み、第４エッジ数ＥＮ４が閾値ＴＨ未満である場合（ＲＳ１：Ｎｏ）に、処理ＲＳ３に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【０１４５】
処理ＲＳ１においてＹｅｓと判断されると、ＣＰＵ３０は、第４端フラグＥＦＧ４をオンに設定してＲＡＭ３２に記憶する（ＲＳ２）。処理ＲＳ２が終了すると、第４端フラグＥＦＧ４判断処理ＲＲ４が終了する。
【０１４６】
処理ＲＳ１においてＮｏと判断されると、ＣＰＵ３０は、第４端フラグＥＦＧ４をオフに設定してＲＡＭ３２に記憶する（ＲＳ３）。処理ＲＳ３が終了すると、第４端フラグＥＦＧ４判断処理ＲＲ４が終了する。
【０１４７】
処理ＲＲ４が終了すると、図２２に示すように、ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰであるか否かを判断する（ＲＲ５）。ＣＰＵ３０は、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰである場合（ＲＲ５：Ｙｅｓ）に、処理ＲＲ６に進み、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置が最大読取位置ＭＲＰでない場合（ＲＲ５：Ｎｏ）に、処理ＲＲ７に進む。本実施形態では、合計ライン数ＴＬＮに対応する副走査方向ＳＤの位置は、先頭ラインＦＬから合計ライン数ＴＬＮだけ離れた副走査方向ＳＤの位置である。
【０１４８】
ＣＰＵ３０は、読取終了フラグＲＥＦＧをオンに設定してＲＡＭ３２に記憶する（ＲＲ６）。処理ＲＲ６が終了すると、第４検出処理ＲＨ８が終了する。
【０１４９】
処理ＲＲ５においてＮｏと判断されると、第２エッジ数ＥＮ２が閾値ＴＨ以上であるか否かを判断する（ＲＲ７）。ＣＰＵ３０は、第２エッジ数ＥＮ２が閾値ＴＨ以上である場合（ＲＲ７：Ｙｅｓ）に、処理ＲＲ８に進み、第２エッジ数ＥＮ２が閾値ＴＨ未満である場合（ＲＲ７：Ｎｏ）に、処理ＲＲ９に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【０１５０】
ＣＰＵ３０は、第２フラグＦＧ２をオフに設定してＲＡＭ３２に記憶する（ＲＲ８）。処理ＲＲ８が終了すると、第４検出処理ＲＨ８が終了する。
【０１５１】
処理ＲＲ７においてＮｏと判断されると、ＣＰＵ３０は、合計ライン数ＴＬＮに「１」を加算する（ＲＲ９）。ＣＰＵ３０は、処理ＲＲ９が終了すると、処理ＲＲ１に進む。
【０１５２】
処理ＲＲ３においてＹｅｓと判断されると、ＣＰＵ３０は、第４エッジ数ＥＮ４が閾値ＴＨ未満であるか否かを判断する（ＲＲ１０）。ＣＰＵ３０は、第４エッジ数ＥＮ４が閾値ＴＨ以上である場合（ＲＲ１０：Ｎｏ）に、処理ＲＲ４に進み、第４エッジ数ＥＮ４が閾値ＴＨ未満である場合（ＲＲ１０：Ｙｅｓ）に、処理ＲＲ１１に進む。本実施形態では、閾値ＴＨは、同様に「２」である。
【０１５３】
ＣＰＵ３０は、矩形フラグＲＴＦＧがオンであるか否かを判断する（ＲＲ１１）。ＣＰＵ３０は、矩形フラグＲＴＦＧがオフである場合（ＲＲ１１：Ｎｏ）に、第４検出領域ＤＲ４において原稿ＧＳがなくなったと判断して第４検出処理ＲＨ８が終了し、矩形フラグＲＴＦＧがオンである場合（ＲＲ１１：Ｙｅｓ）に、処理ＲＲ１２に進む。
【０１５４】
ＣＰＵ３０は、合計ライン数ＴＬＮを第４検出位置ＤＰ４としてＲＡＭ３２に記憶する（ＲＲ１２）。本実施形態では、第４検出位置ＤＰ４は、先頭ラインＦＬからのライン数に相当する位置である。
【０１５５】
ＣＰＵ３０は、停止位置移動処理を実行する（ＲＲ１３）。詳細は後述するため、ここでは概説する。ＣＰＵ３０は、切替フラグＣＦＧがオンである場合に、第２検出位置差分ＤＣＰ２、および停止距離ＨＴＬを算出し、停止位置ＨＴＰをＲＡＭ３２に記憶する。ＣＰＵ３０は、読取部２０が停止位置ＨＴＰまで移動する駆動指令を送信したと判断するときに、停止位置移動処理ＲＲ１３を終了する。処理ＲＲ１３が終了すると、第４検出領域ＤＲ４における原稿ＧＳがなくなったと判断して第４検出処理ＲＨ８が終了する。
【０１５６】
（停止位置移動処理ＲＰ１３、ＲＲ１３）
図２４に示す停止位置移動処理ＲＰ１３，ＲＲ１３が開始されると、ＣＰＵ３０は、切替フラグＣＦＧがオンであるか否かを判断する（ＲＴ１）。ＣＰＵ３０は、切替フラグＣＦＧがオンである場合（ＲＴ１：Ｙｅｓ）に、処理ＲＴ５に進み、切替フラグＣＦＧがオフである場合（ＲＴ１：Ｎｏ）に、処理ＲＴ２に進む。
【０１５７】
ＣＰＵ３０は、図２６（Ａ）に示す第１検出位置差分ＤＰＤ１を算出する（ＲＴ２）。具体的には、ＣＰＵ３０は、先頭ラインＦＬから副走査方向ＳＤにおける規定位置ＳＰまでのライン数から第３検出位置ＤＰ３に相当するライン数を引き算することにより、第１検出位置差分ＤＰＤ１を算出する。
【０１５８】
ＣＰＵ３０は、図２６（Ｂ）に示す停止距離ＨＴＬを算出する（ＲＴ３）。具体的には、ＣＰＵ３０は、傾き角度ＣＡに正弦処理を施した値に、第１検出位置差分ＤＰＤ１を掛け算し、掛け算した値に傾き角度ＣＡに正弦処理を施した値を掛け算することにより、停止距離ＨＴＬを算出する。
【０１５９】
ＣＰＵ３０は、停止位置ＨＴＰをＲＡＭ３２に記憶する（ＲＴ４）。具体的には、ＣＰＵ３０は、第３検出位置ＤＰ３から副走査方向ＳＤに沿って下流へ停止距離ＨＴＬ離れた位置を停止位置ＨＴＰとしてＲＡＭ３２に記憶する。ＣＰＵ３０は、処理ＲＴ４が終了すると、処理ＲＴ８へ進む。
【０１６０】
処理ＲＴ１においてＹｅｓと判断されると、ＣＰＵ３０は、図２７（Ｂ）に示す第２検出位置差分ＤＰＤ２を算出する（ＲＴ５）。具体的には、ＣＰＵ３０は、先頭ラインＦＬから副走査方向ＳＤにおける最大読取位置ＭＲＰまでのライン数から第４検出位置ＤＰ４に相当するライン数を引き算することにより、第２検出位置差分ＤＰＤ２を算出する。
【０１６１】
ＣＰＵ３０は、図２７（Ｂ）に示す停止距離ＨＴＬを算出する（ＲＴ６）。具体的には、ＣＰＵ３０は、傾き角度ＣＡに正弦処理を施した値に、第２検出位置差分ＤＰＤ２を掛け算し、掛け算した値に傾き角度ＣＡに正弦処理を施した値を掛け算することにより、停止距離ＨＴＬを算出する。
【０１６２】
ＣＰＵ３０は、停止位置ＨＴＰをＲＡＭ３２に記憶する（ＲＴ７）。具体的には、ＣＰＵ３０は、第４検出位置ＤＰ４から副走査方向ＳＤに沿って下流へ停止距離ＨＴＬ離れた位置を停止位置ＨＴＰとしてＲＡＭ３２に記憶する。
【０１６３】
ＣＰＵ３０は、読取部２０が停止位置ＨＴＰに位置するか否かを判断する（ＲＴ８）。具体的には、ＣＰＵ３０は、駆動回路３７に送信した駆動指令が読取部２０を停止位置ＨＴＰまで移動させる駆動指令である場合（ＲＴ８：Ｙｅｓ）に、読取部２０が停止位置ＨＴＰに位置すると判断し、処理ＲＴ８が終了する。ＣＰＵ３０は、駆動回路３７に送信した駆動指令が読取部２０を停止位置ＨＴＰまで移動させる駆動指令でない場合（ＲＴ８：Ｎｏ）に、読取部２０が停止位置ＨＴＰに位置しないと判断し、読取動作を継続する。処理ＲＴ８が終了すると、停止位置移動処理ＲＰ１３、ＲＲ１３が終了する。
【０１６４】
＜実施形態の効果＞
本実施形態では、先端検知処理Ｒ３における検出領域設定処理ＲＡ４は、傾き角度ＣＡの回転方向が傾き無である場合に、傾き無検出フラグＤＦＧをオンに設定し、第１検出領域ＤＲ１、第２検出領域ＤＲ２、第３検出領域ＤＲ３、及び規定位置ＳＰを設定する。原稿検知処理Ｒ４は、傾き無フラグＤＦＧがオンである場合に、傾き無原稿検知処理ＲＦ２を実行する。傾き無原稿検知処理ＲＦ２は、各エッジ数の全てが閾値ＴＨ以上である場合に、原稿端フラグＥＦＧをオンにし、合計ライン数ＴＬＮに「１」を加算する。傾き無検知処理ＲＦ２は、原稿端フラグＥＦＧがオンである場合に、各エッジ数の全てが閾値ＴＨ未満である場合に、原稿ＧＳがなくなったと判断して傾き無原稿検知処理ＲＦ２を終了する。原稿検知処理Ｒ４は、傾き無フラグＤＦＧがオフである場合に、第１距離ＬＧ１を算出し、傾き有原稿検知処理ＲＦ４を実行する。傾き有原稿検知処理ＲＦ４は、第１検出処理ＲＨ１を実行し、第２検出処理ＲＨ３を実行し、第３検出処理ＲＨ７、または第４検出処理ＲＨ８を実行する。第１検出処理ＲＨ１は、第１エッジ数ＥＮ１が閾値ＴＨ以上である場合に、第１端フラグＥＦＧ１をオンに設定し、合計ライン数ＴＬＮに「１」を加算する。第１検出処理ＲＨ１は、第１端フラグＥＦＧ１がオンであり、且つ第１エッジ数ＥＮ１が閾値ＴＨ未満である場合に、第１検出領域ＤＲ１に原稿ＧＳがなくなったと判断して第１フラグＦＧ１をオンにし、第１検出位置ＤＰ１を記憶する。第２検出処理ＲＨ３は、第２エッジ数ＥＮ１が閾値ＴＨ以上である場合に、第２端フラグＥＦＧ２をオンに設定し、合計ライン数ＴＬＮに「１」を加算する。第２検出処理ＲＨ３は、第２端フラグＥＦＧ２がオンであり、且つ第２エッジ数ＥＮ２が閾値ＴＨ未満である場合に、第２検出領域ＤＲ２に原稿ＧＳがなくなったと判断して第２フラグＦＧ２をオンにし、第２検出位置ＤＰ２を記憶し、第１位置差分ＰＤ１が第１距離ＬＧ１と同じである場合に、矩形フラグＲＴＦＧをオンにする。第３検出処理ＲＨ７は、第３エッジ数ＥＮ３が閾値ＴＨ以上である場合に、第３端フラグＥＦＧ３をオンに設定し、合計ライン数ＴＬＮに「１」を加算する。第３検出処理ＲＨ７は、第３端フラグＥＦＧ３がオンであり、且つ第３エッジ数ＥＮ３が閾値ＴＨ未満である場合に、第３検出領域ＤＲ３に原稿ＧＳがなくなったと判断して矩形フラグＲＴＦＧがオンであるか否かを判断する。第３処理ＲＨ７は、矩形フラグＲＴＦＧがオフである場合に、第３検出処理ＲＨ７を終了し、矩形フラグＲＴＦＧがオンである場合に、第３検出位置ＤＰ３を記憶し、第１検出位置差分ＤＣＰ１を算出し、停止距離ＨＴＬを算出し、読取部２０が停止位置ＨＴＰに位置するまで読取動作を継続する。よって、原稿ＧＳが無作為に支持されて原稿ＧＳの先端が主走査方向と平行に支持された場合でも、原稿ＧＳが無作為に支持されて原稿ＧＳの先端が主走査方向と平行でなく支持された場合でも、それぞれの場合において異なる終了処理を実行する。さらに、原稿ＧＳが無作為に支持されて原稿ＧＳの先端が主走査方向と平行でなく支持され、且つ矩形フラグＲＴＦＧがオンである場合に、読取部２０が停止位置ＨＴＰに位置するまで読取動作を継続する。そのため、原稿ＧＳを正常に読み取ることができる。
【０１６５】
第１検出処理ＲＨ１、及び第２検出処理ＲＨ３は、規定位置ＳＰ判断処理ＲＩ７，ＲＭ９を実行する。規定位置ＳＰ判断処理ＲＩ７，ＲＭ９は、合計ライン数ＴＬＮに対応する位置が規定位置ＳＰである場合に、第４検出領域ＤＲ４を決定し、切替フラグＣＦＧをオンにする。傾き有原稿検知処理ＲＦ４は、切替フラグＣＦＧがオンである場合に、第４検出処理ＲＨ８を実行し、切替フラグＣＦＧがオフである場合に、第３検出処理ＲＨ７を実行する。第４検出処理ＲＨ８は、第４エッジ数ＥＮ４が閾値ＴＨ以上である場合に、第４端フラグＥＦＧ４をオンに設定し、合計ライン数ＴＬＮに「１」を加算する。第４検出処理ＲＨ８は、第４端フラグＥＦＧ４がオンであり、且つ第４エッジ数ＥＮ４が閾値ＴＨ未満である場合に、第４検出領域ＤＲ４に原稿ＧＳがなくなったと判断して矩形フラグＲＴＦＧがオンであるか否かを判断する。第４処理ＲＨ８は、矩形フラグＲＴＦＧがオフである場合に、第４検出処理ＲＨ８を終了し、矩形フラグＲＴＦＧがオンである場合に、第４検出位置ＤＰ４を記憶し、第２検出位置差分ＤＣＰ２を算出し、停止距離ＨＴＬを算出し、読取部２０が停止位置ＨＴＰに位置するまで読取動作を継続する。よって、副走査方向ＳＤにおいて規定位置ＳＰよりも下流に原稿ＧＳがある場合でも、第４検出処理ＲＨ８を実行して第４検出領域ＤＲ４において原稿ＧＳを検出し、さらに、矩形フラグＲＴＦＧがオンである場合に読取部２０が停止位置ＨＴＰに位置するまで読取動作を継続することで、原稿ＧＳを正常に読み取ることができる。
【０１６６】
[実施形態と発明との対応関係]
画像読取装置ＳＭ、原稿載置台ＤＴ、及び原稿押え板ＣＶが、本発明の画像読取装置、原稿台、及び原稿押え部材の一例である。読取部２０、ＡＦＥ３５、及びエッジ検出部３９が、本発明の読取部の一例である。駆動回路３７、搬送モータＭＴ、及び移動機構ＭＭが、本発明の移動部の一例である。ＣＰＵ３０が、本発明の制御部の一例である。
【０１６７】
処理Ｒ２が、本発明の開始処理の一例である。処理Ｒ３が、本発明の先端検出処理の一例である。処理ＲＡ４が、領域決定処理の一例である。処理Ｒ４、及び処理Ｒ５が、本発明の終了処理の一例である。処理ＲＦ２が、本発明の傾き無終了処理の一例である。処理ＲＦ４が、本発明の傾き有終了処理の一例である。処理ＲＰ１３，ＲＲ１３が、本発明の停止距離算出処理の一例である。
【０１６８】
[変形例]
本発明は、本実施形態に限定されることなく、その趣旨を逸脱しない範囲において種々の変形が可能である。以下にその変形の一例を述べる。
【０１６９】
（１）本実施形態の画像読取装置ＳＭは、プリンタ部を備えた複合機に適用されても良い。また、本実施形態では、読取部２０が、ＣＩＳで構成される場合について説明をしたが、ＣＣＤ（Charge Coupled Device）を搭載し、副走査方向ＳＤに移動するＣＣＤユニットで構成されても良いし、ＣＣＤ素子が固定されて光源とミラーとが副走査方向ＳＤに移動する読取ユニットで構成されても良い。
【０１７０】
（２）本実施形態では、第1検出領域ＤＲ１、第２検出領域ＤＲ２、および第３検出領域ＤＲ３は、先端データＨＡから算出した傾き角度ＣＡ、先端直線ＨＬ、上流側端直線ＵＳＬ、および下流側端直線ＤＳＬから決定される方式であるが、この方式と異なる方法でも良い。予め原稿ＧＳが支持される領域が存在する場合には、その予め原稿ＧＳが支持される領域のうちの３つの領域を第1検出領域ＤＲ１、第２検出領域ＤＲ２、および第３検出領域ＤＲ３として決定しても良い。
【０１７１】
（３）本実施形態では、第１検出位置ＤＰ１と第２検出位置ＤＰ２とから決定された矩形フラグＲＴＦＧがオンである場合に、停止位置移動処理ＲＰ１３，ＲＲ１３が実行されたが、矩形フラグＲＴＦＧがオンである場合と異なる場合に停止位置移動処理ＲＰ１３，ＲＲ１３を実行しても良い。矩形フラグＲＴＦＧがオンであり、且つ第３検出位置ＤＰ３が、第２検出位置ＤＰ２から副走査方向ＳＤに沿って下流に第１距離ＬＧ１だけ離れた位置である場合に、停止位置移動処理ＲＰ１３，ＲＲ１３が実行されても良い。
【０１７２】
（４）本実施形態では、停止距離ＨＴＬは、傾き角度ＣＡに正弦処理を施した値に、第１検出位置差分ＤＰＤ１、又は第２検出位置差分ＤＰＤ２を掛け算し、掛け算した値に傾き角度ＣＡに正弦処理を施した値を掛け算することにより、算出されたが、異なる方法でも良い。傾き角度ＣＡの大きさに応じて予め停止距離ＨＴＬが定められても良い。
【０１７３】
（５）本実施形態では、第１距離ＬＧ１は、傾き角度ＣＡに正接処理を施した値に第１検出領域ＤＲ１の主走査方向ＭＤの中央位置と第２検出領域ＤＲ２の主走査方向ＭＤの中央位置との距離を掛け算することにより、算出されたが、異なる方法でも良い。傾き角度ＣＡの大きさに応じて予め第１距離ＬＧ１を定められても良い。
【符号の説明】
【０１７４】
ＳＭ…画像読取装置、ＯＭ…操作機構、ＣＶ…原稿押え板、ＭＴ…搬送モータ、ＭＭ…移動機構、２０…読取部、２１…光源、２２…受光部、２３…光電変換素子、３０…ＣＰＵ、３３…フラッシュＲＯＭ、３４…デバイス制御部、３５…ＡＦＥ、３６…画像処理部、３７…駆動回路、３９…エッジ検出部
【図１】
2019125900.tif 000003
【図２】
2019125900.tif 000004
【図３】
2019125900.tif 000005
【図４】
2019125900.tif 000006
【図５】
2019125900.tif 000007
【図６】
2019125900.tif 000008
【図７】
2019125900.tif 000009
【図８】
2019125900.tif 000010
【図９】
2019125900.tif 000011
【図１０】
2019125900.tif 000012
【図１１】
2019125900.tif 000013
【図１２】
2019125900.tif 000014
【図１３】
2019125900.tif 000015
【図１４】
2019125900.tif 000016
【図１５】
2019125900.tif 000017
【図１６】
2019125900.tif 000018
【図１７】
2019125900.tif 000019
【図１８】
2019125900.tif 000020
【図１９】
2019125900.tif 000021
【図２０】
2019125900.tif 000022
【図２１】
2019125900.tif 000023
【図２２】
2019125900.tif 000024
【図２３】
2019125900.tif 000025
【図２４】
2019125900.tif 000026
【図２５】
2019125900.tif 000027
【図２６】
2019125900.tif 000028
【図２７】
2019125900.tif 000029