(57)【特許請求の範囲】
【請求項１】
読取対象の原稿が載置される原稿台と、
前記原稿台に載置された原稿を読み取るための読取ユニットと、
前記読取ユニットに、前記原稿台に載置された原稿を読み取らせることにより、前記原稿台に載置された原稿の読取画像を表す画像データを生成する読取制御手段と、
前記読取制御手段により生成された画像データを、エッジ画像を表す画像データに変換する変換手段と、
特定方向に延びる原稿の端縁、を表すエッジ点の候補を、前記変換手段による変換後の画像データから選択する選択手段と、
前記選択手段により前記候補として前記選択された前記エッジ点の位置情報を記憶する記憶手段と、
前記記憶手段が記憶する前記エッジ点の位置情報から特定される前記選択手段により前記候補として選択されたエッジ点の分布に基づき、前記選択手段により選択された前記候補の一群の中から、前記原稿の端縁を表すエッジ点としての確度が低いエッジ点を破棄することで、当該破棄後に残る前記候補を、前記変換後の画像データにおいて前記特定方向に延びる原稿の端縁を表すエッジ点として検出する検出手段と、
を備え、
前記選択手段は、
前記変換後の画像データの端点を、参照開始位置に設定して、当該参照開始位置から、予め定められた第一の方向に沿って、前記画像データの内側へと、前記変換後の画像データを構成する各画素の画素値を参照することにより、連続性を検査する対象のエッジ点を検出すると共に、検出したエッジ点を起点として、前記第一の方向とは垂直な第二の方向に、前記変換後の画像データを構成する各画素の画素値を参照して、前記第二の方向へのエッジ点の連続性を検査することにより、前記第二の方向に連続する所定量のエッジ点を、前記特定方向に延びる原稿の端縁を表すエッジ点の候補として、前記変換後の画像データから選択する動作を、前記参照開始位置を前記第二の方向にずらしながら複数回繰返し実行することにより、前記特定方向に延びる原稿の端縁を表すエッジ点の候補を、前記所定量としての複数個ずつ、前記画像データの端から探索して選択する構成にされていること
を特徴とする画像読取装置。
【請求項２】
前記読取制御手段は、前記第二の方向に垂直な前記原稿台の一辺から前記第二の方向に延びる中央までの領域よりも短い領域を、前記読取ユニットに読み取らせる機能を有し、
前記選択手段は、前記機能により前記読取制御手段が生成した画像データについての前記変換手段による変換後の画像データから、前記エッジ点の候補を選択し、
前記検出手段は、前記選択手段により選択された前記所定量の候補を１グループ単位として、各グループの前記第二の方向への連続性を、前記第二の方向において最も原稿台の中央寄りのグループを基準に評価し、当該基準としたグループとは不連続なグループに属する前記候補の全てを、前記確度が低い候補として破棄することで、前記特定方向に延びる原稿の端縁を表すエッジ点を検出することを特徴とする請求項１記載の画像読取装置。
【請求項３】
前記検出手段は、
検査対象のグループを、前記第二の方向において前記最も原稿台の中央寄りのグループから端寄りのグループへ、順次切り替えるようにして設定する検査対象切替設定手段と、
前記検査対象切替設定手段により検査対象のグループが切り替えられる方向において、前記検査対象切替設定手段により現在設定されている検査対象のグループに隣接するグループが存在するか否かを、前記第二の方向に平行な一次元空間上で評価して判定する第一判定手段と、
前記第一判定手段により前記隣接するグループが存在すると判定されると、前記検査対象のグループに属する前記候補であって最も前記隣接するグループ寄りの前記候補と、前記隣接するグループに属する前記候補であって最も前記検査対象のグループ寄りの前記候補と、の前記第一の方向の乖離度を算出する乖離度算出手段と、
前記乖離度算出手段により算出された乖離度が閾値未満であるか否かを判定する第二判定手段と、
を備え、前記第一判定手段により前記隣接するグループが存在しないと判定されるか、前記第二判定手段により前記乖離度が閾値以上であると判定されると、その時点までに検査対象のグループに設定されなかった前記第二の方向において原稿台の端側に位置するグループの全てを、前記第二の方向において最も原稿台の中央寄りのグループとは不連続なグループであるとみなして、当該不連続なグループに属する前記候補の全てを、破棄する構成にされていること
を特徴とする請求項２記載の画像読取装置。
【請求項４】
前記検出手段は、前記選択手段により選択された前記所定量の候補を１グループ単位として、各グループの前記第二の方向への連続性を評価し、最も長く連続するグループの集合を、前記確度が高い候補の集合とみなし、当該最も長く連続するグループの集合に属さないグループ、に属する前記候補を、前記確度が低い候補とみなして、当該確度が低い候補を破棄することで、前記特定方向に延びる原稿の端縁を表すエッジ点を検出することを特徴とする請求項１記載の画像読取装置。
【請求項５】
前記検出手段は、
検査対象のグループを、前記第二の方向に、順次切り替えるようにして設定する検査対象切替設定手段と、
前記検査対象切替設定手段により検査対象のグループが切り替えられる方向において、前記検査対象切替設定手段により現在設定されている検査対象のグループに隣接するグループが存在するか否かを、前記第二の方向に平行な一次元空間上で評価して判定する第一判定手段と、
前記第一判定手段により前記隣接するグループが存在すると判定されると、前記検査対象のグループに属する前記候補であって最も前記隣接するグループ寄りの前記候補と、前記隣接するグループに属する前記候補であって最も前記検査対象のグループ寄りの前記候補と、の前記第一の方向の乖離度を算出する乖離度算出手段と、
前記乖離度算出手段により算出された乖離度が閾値未満であるか否かを判定する第二判定手段と、
を備え、前記第一判定手段により前記隣接するグループが存在すると判定され且つ前記第二判定手段により前記乖離度が閾値未満であると判定された前記検査対象のグループについては、そのグループと、当該グループの次に前記検査対象のグループに設定される前記隣接するグループとが連続していると評価し、前記第一判定手段により前記隣接するグループが存在しないと判定されるか、前記第二判定手段により前記乖離度が閾値以上であると判定された前記検査対象のグループについては、そのグループと、当該グループの次に前記検査対象のグループに設定されるグループが連続していないと評価して、前記最も長く連続するグループの集合を検出することを特徴とする請求項４記載の画像読取装置。
【請求項６】
前記検出手段は、
前記選択手段により選択された前記所定量の候補を１グループ単位として、各グループの近似直線を算出すると共に、算出した各グループの近似直線の傾き及び切片の情報に基づき、近似直線についてのヒストグラムデータを生成するヒストグラムデータ生成手段
を備え、前記ヒストグラムデータ生成手段により生成された前記ヒストグラムデータに基づき、度数の最も高い近似直線が算出されたグループの集合を、前記確度が高い候補の集合とみなし、当該度数の最も高い近似直線が算出されたグループの集合に属さないグループ、に属する前記候補を、前記確度が低い候補とみなして、当該確度が低い候補を破棄することで、前記特定方向に延びる原稿の端縁を表すエッジ点を検出することを特徴とする請求項１記載の画像読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原稿の読取画像を表す画像データを解析する機能を備えた画像読取装置に関する。
【背景技術】
【０００２】
従来、画像読取装置としては、読取ガラス下に読取ユニットを備え、読取ガラス上に載置された原稿を、読取ガラス下で読取ユニットを通じて読み取るフラットベッド型の画像読取装置が知られている。この種の画像読取装置では、読取ガラス下で読取ユニットを搬送しつつ、その搬送時に読取ユニットに読取動作を実行させることにより、読取ガラス上に配置された原稿を読み取り、原稿の読取画像を表す画像データを生成する。
【０００３】
この他、画像読取装置としては、コピー機能を有するものが知られており、コピー機能を有する画像読取装置としては、コピー機能の他、プリンタ機能やファックス（ＦＡＸ）機能などを有したディジタル複合機が知られている。
【０００４】
また、画像読取装置としては、読取対象の原稿を、読取ユニットを通じて読み取って、その読取結果から原稿エッジ（原稿の端縁）を検出するものが知られている（例えば、特許文献１〜特許文献３参照）。また、コピー機能を有する画像読取装置としては、プレスキャンにより得られた読取結果から読取対象の原稿のサイズや傾きを検出し（例えば、特許文献４参照）、検出した原稿サイズや傾きの情報に基づいて、変倍率や傾き補正量等を設定する画像読取装置が知られている。
【特許文献１】特開２００４−２０１２４０号公報
【特許文献２】特開２００５−２８５０１０号公報
【特許文献３】特開２００５−０３９６２０号公報
【特許文献４】特開２０００−０２２８９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、読取ユニットによる原稿の読取結果から、原稿の端縁である原稿エッジを検出する方法では、原稿内に描写された罫線等を、原稿エッジであると誤検出する可能性がある。即ち、原稿の読取画像を表す画像データにおいては、原稿内の罫線がある地点でも、原稿の端縁に似た画像パターンが現れる。一方で、読取対象の原稿については、原稿が傾いていたり、原稿サイズが不定であるため、読取結果としての上記画像データから、原稿の端縁に対応する画像パターンを見つけて原稿エッジを検出しようとしても、誤って、原稿内部の罫線等の画像パターンを見つけて原稿エッジを誤検出してしまう可能性があるのである。
【０００６】
また、フラットベッド型の画像読取装置では、読取ガラス上に原稿を載置した状態で、読取ガラスに写る画像を読取ガラス下で読み取るため、読取ガラス上に、埃（髪の毛等）が載っていると、その埃についても読み取ってしまい、読取結果としての画像データに、原稿以外の像が現れることになる。従って、このような埃の像が現れた画像データを解析して、原稿エッジを検出する場合にも、埃の像に惑わされて原稿エッジを誤検出してしまう可能性がある。
【０００７】
このように、読取ユニットによる原稿の読取結果から、原稿エッジを検出する方法では、様々な要因により、原稿エッジを誤検出する可能性がある。
本発明は、こうした問題に鑑みなされたものであり、読取ユニットによる読取結果としての画像データから、原稿エッジ（原稿の端縁）を検出する装置において、原稿内部の罫線や埃等の影響を抑えて、原稿エッジを適切に検出可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
かかる目的を達成するためになされた発明は、読取対象の原稿が載置される原稿台と、原稿台に載置された原稿を読み取るための読取ユニットと、読取ユニットに、原稿台に載置された原稿を読み取らせることにより、原稿台に載置された原稿の読取画像を表す画像データを生成する読取制御手段と、を備える画像読取装置であって、更に、変換手段と、選択手段と、記憶手段と、検出手段と、を備えるものである。
【０００９】
この画像読取装置における変換手段は、読取制御手段により生成された画像データを、エッジ画像を表す画像データに変換する。また、選択手段は、原稿台において、特定方向に延びる原稿の端縁、を表すエッジ点の候補を、上記変換手段による変換後の画像データから選択する。また、記憶手段は、上記選択手段により候補として選択されたエッジ点の位置情報を記憶する。
【００１０】
この他、検出手段は、上記記憶手段が記憶するエッジ点の位置情報から特定される上記選択手段により候補として選択されたエッジ点の分布に基づき、選択手段により選択された候補の一群の中から、原稿の端縁を表すエッジ点としての確度が低いエッジ点を破棄することにより、当該破棄後に残る候補を、上記特定方向に延びる原稿の端縁を表すエッジ点として検出する。
【００１１】
また、選択手段は、具体的に、上記変換後の画像データの端点を、参照開始位置に設定して、当該参照開始位置から、予め定められた第一の方向に沿って、画像データの内側へと、この画像データを構成する各画素の画素値を参照することにより、連続性を検査する対象のエッジ点を検出すると共に、検出したエッジ点を起点として、第一の方向とは垂直な第二の方向に、この画像データを構成する各画素の画素値を参照して、第二の方向へのエッジ点の連続性を検査することにより、第二の方向に連続する所定量のエッジ点を、特定方向に延びる原稿の端縁を表すエッジ点の候補として、画像データから選択する。
【００１２】
選択手段は、このような動作を、参照開始位置を第二の方向にずらしながら複数回繰返し実行することにより、特定方向に延びる原稿の端縁を表すエッジ点の候補を、所定量ずつ、画像データの端から探索して選択する。
【００１３】
このように、本発明の画像読取装置では、原稿の端縁を表すエッジ点の候補を、上記所定量としての複数個ずつ、画像データの端から探索して選択するので、原稿台に載置された埃や原稿内部に描写された罫線等の影響を抑えて、原稿の端縁を表すエッジ点（原稿エッジ）を正確に検出することができる。
【００１４】
即ち、本発明によれば、所定量ずつ、独立して、原稿の端縁を表すエッジ点の候補を探索して選択するので、その複数回に及ぶ選択動作の一部の動作が誤選択に該当する動作であっても、その誤選択の影響が、他の回の選択動作に及ぶことがなく、誤選択が、複数回に及ぶ選択動作の全体に波及するのを抑えることができる。
【００１５】
従って、この画像読取装置によれば、原稿の端縁を表すエッジ点の候補として、誤ったエッジ点を選択することがあっても、その誤選択の動作を、検出手段の動作により修正して、最終的に正しい原稿エッジ（原稿の端縁を表すエッジ点）を検出することができ、原稿内部の罫線や埃等の影響を抑え、原稿エッジを適切に検出することができるのである。
【００１６】
ところで、読取制御手段は、第二の方向に垂直な原稿台の一辺から第二の方向に延びる中央までの領域よりも短い領域を、読取ユニットに読み取らせる機能を有する構成にすることができ、選択手段は、この機能により読取制御手段が生成した画像データについての変換手段による変換後の画像データから、エッジ点の候補を選択する構成にすることができる。また、検出手段は、選択手段により選択された所定量の候補を１グループ単位として、各グループの第二の方向への連続性を、第二の方向において最も原稿台の中央寄りのグループを基準に評価し、当該基準としたグループとは不連続なグループに属する候補の全てを、確度が低い候補として破棄する構成にすることができる。
【００１７】
上述の画像読取装置においては、原稿台に原稿が正しく載置されたときに検出対象の原稿の端縁が延びる方向を、第二の方向に定め、それとは垂直な方向を第一の方向に定めることで、目的の原稿エッジを検出することができるが、このように第一及び第二の方向を定めた場合には、原稿台に原稿が正しく載置されておらず、傾いて載置されている場合、検出対象の原稿の端縁とは違う原稿の端縁に対応するエッジ点を、連続性を検査する対象のエッジ点として検出してしまう可能性があり、当該端縁から原稿の内部に描写された罫線等を、原稿の端縁を表すエッジ点の候補として誤選択してしまう可能性がある（図９（ａ）参照）。
【００１８】
従って、このように誤選択されたエッジ点については、検出手段により破棄できるのが好ましいが、原稿が傾いていることが原因で発生する誤選択動作は、原稿台の端側で発生する可能性が高く原稿台の中央側で発生する可能性は低い。
【００１９】
このような理由により、上述の検出手段では、選択手段により候補として選択されたエッジ点の内、原稿台の中央寄りに位置するエッジ点を、原稿の端縁を表すエッジ点である確度の高いエッジ点であると取り扱い、第二の方向において最も原稿台の中央寄りのグループとは不連続なグループに属する上記候補の全てを、確度が低い候補として破棄するようにしているのである。
【００２０】
従って、この検出手段を備える画像読取装置の発明によれば、原稿が傾いていることによる選択手段の誤選択動作を、検出手段で修正して、正しく原稿エッジを検出することができて、原稿の罫線等の影響を受けずに、適切に原稿エッジを検出することができる。
【００２１】
また、上記検出手段は、検査対象切替設定手段と、第一判定手段と、乖離度算出手段と、第二判定手段と、を備えることができる。
【００２２】
検査対象切替設定手段は、検査対象のグループを、第二の方向において最も原稿台の中央寄りのグループから端寄りのグループへ、順次切り替えるようにして設定し、第一判定手段は、検査対象切替設定手段により検査対象のグループが切り替えられる方向において、検査対象切替設定手段により現在設定されている検査対象のグループに、隣接するグループが存在するか否かを、第二の方向に平行な一次元空間上で評価して判定する。即ち、検査対象のグループに隣接するグループが、検査対象切替設定手段により検査対象のグループが切り替えられる方向に存在するか否かを、第二の方向において評価して判定する。この際、第一の方向については評価しない。
【００２３】
そして、乖離度算出手段は、第一判定手段により隣接するグループが存在すると判定されると、検査対象のグループに属する候補であって最も隣接するグループ寄りの候補と、上記隣接するグループに属する候補であって最も検査対象のグループ寄りの候補と、の第一の方向の乖離度を算出する（図９（ｂ）参照）。また、第二判定手段は、乖離度算出手段により算出された乖離度が閾値未満であるか否かを判定する。
【００２４】
そして、検出手段は、第一判定手段により隣接するグループが存在しないと判定されるか、第二判定手段により乖離度が閾値以上であると判定されると、その時点までに検査対象のグループに設定されなかったグループ（第二の方向において原稿台の端側に位置するグループ）の全てを、第二の方向において最も原稿台の中央寄りのグループとは不連続なグループであるとみなして、当該不連続なグループに属する候補の全てを、破棄する。
【００２５】
このように検出手段を構成することにより、第二の方向において最も原稿台の中央寄りのグループとは不連続なグループに属する上記候補の全てを破棄するようにすれば、上述した発明と同様の効果を得ることができる。
【００２６】
また、検出手段は、選択手段により選択された所定量の候補を１グループ単位として、各グループの第二の方向への連続性を評価し、最も長く連続するグループの集合を、確度が高い候補の集合とみなし、当該最も長く連続するグループの集合に属さないグループ、に属する各候補を、確度が低い候補とみなして、当該確度が低い候補を破棄する構成にされてもよい。
【００２７】
第二の方向へ長く連続するエッジ点の集合ほど、当該エッジ点の集合が真に検出対象の原稿の端縁を表すエッジ点である可能性が高く、短く連続するエッジ点については、それが原稿台に載置された埃等によって生じたエッジ点である可能性が高い。
【００２８】
したがって、このように検出手段を構成して、第二の方向に最も長くエッジ点の集合を、原稿の端縁を表すエッジ点として検出するようにすれば、原稿台に載置された埃等の影響により選択手段で誤選択したエッジ点の集合を、検出手段で破棄して、正しく原稿エッジを検出することができ、埃等の影響を抑えて、適切に原稿エッジを検出することができる。
【００２９】
また、検出手段は、検査対象のグループを、第二の方向に順次切り替えるようにして設定する検査対象切替設定手段と、上述した第一判定手段と、乖離度算出手段と、第二判定手段と、を備えて、第一判定手段により隣接するグループが存在すると判定され且つ第二判定手段により乖離度が閾値未満であると判定された検査対象のグループについては、そのグループと、当該グループの次に検査対象のグループに設定される上記隣接するグループとが連続していると評価し、第一判定手段により隣接するグループが存在しないと判定されるか、第二判定手段により乖離度が閾値以上であると判定された検査対象のグループについては、そのグループと、当該グループの次に検査対象のグループに設定されるグループが連続していないと評価して、上記最も長く連続するグループの集合を検出する構成にすることができる。
【００３０】
この他、検出手段は、選択手段により選択された所定量の候補を１グループ単位として、各グループの近似直線を算出すると共に、算出した各グループの近似直線の傾き及び切片の情報に基づき、近似直線についてのヒストグラムデータを生成し、生成したヒストグラムデータに基づき、度数の最も高い近似直線が算出されたグループの集合を、確度が高い候補の集合とみなし、当該度数の最も高い近似直線が算出されたグループの集合に属さないグループ、に属する各候補を、確度が低い候補とみなして、当該確度が低い候補を破棄することで、上記特定方向に延びる原稿の端縁を表すエッジ点を検出する構成にすることができる。
【００３１】
即ち、検出手段は、各グループの近似直線の内、度数の最も高い近似直線に対応するグループの集合を、原稿の端縁を表すエッジ点の集合として、検出する構成にすることができる。
【００３２】
各グループが、真に原稿の端縁を表すエッジ点の集合である場合には、当然のことながら近似直線の傾き及び切片は一致するはずである。換言すれば、各グループの近似直線の傾き及び切片の類似性をヒストグラムにより評価して、度数の最も高い近似直線に対応するエッジ点の集合を、原稿の端縁を表すエッジ点として検出するようにすれば、高精度に原稿エッジを検出することができる。
【００３３】
従って、この手法により、選択手段で所定量ずつ候補を選択し、検出手段で原稿の端縁を表すエッジ点を検出すれば、原稿台に載置された埃や原稿内部の罫線等による影響を極力抑えて、原稿エッジを正しく検出することができるのである。
【００３４】
また、当該画像読取装置にて検出した原稿の端縁を表すエッジ点の情報（原稿エッジの情報）は、例えば、ＯＣＲ処理や、変倍率・傾き補正量の設定動作等に利用することができる。
【発明を実施するための最良の形態】
【００３６】
以下に本発明の実施例について、図面と共に説明する。
図１（ａ）は、本実施例のディジタル複合機１の構成を表すブロック図である。図１（ａ）に示すように、本実施例のディジタル複合機１は、画像読取部１０、読取制御部２０、印刷部３０、印刷制御部４０、表示操作部５０、通信部６０、ＣＰＵ７０、ＲＡＭ８０及びフラッシュメモリ９０を備え、フラッシュメモリ９０に記録されたプログラムに基づきＣＰＵ７０にて各種処理を実行し、装置全体を統括制御する構成にされている。
【００３７】
具体的に、画像読取部１０は、図１（ｂ）（ｃ）に示す構成にされている。図１（ｂ）（ｃ）は、画像読取部１０の構成を示した説明図である。画像読取部１０は、読取対象の原稿Ｐが載置される透明な板状の読取ガラス１１が筐体１３に支持された構成にされており、筐体１３内の読取ガラス１１下に、読取ガラス１１に写る画像を主走査方向において光学的に読み取る読取ユニット１５と、読取ユニット１５を副走査方向に搬送する搬送機構１６と、搬送機構１６を駆動するモータ１７とを備える。
【００３８】
この画像読取部１０は、読取制御部２０から入力される制御信号に従って、モータ１７の回転力により搬送機構１６を駆動し、これにより読取ユニット１５を読取ガラス１１下で副走査方向（図１（ｂ）（ｃ）に示す点線矢印方向）に搬送すると共に、搬送時において、読取ユニット１５に読取動作を実行させる。
【００３９】
尚、読取ユニット１５は、読取制御部２０に制御され、副走査方向への移動と共に、読取ガラス１１に写る画像を、ライン毎に読み取り、その読取画像を表すライン画像信号を出力するコンタクトイメージセンサ（ＣＩＳ）である。この読取ユニット１５から出力されるライン画像信号は、図示しないＡ／Ｄ変換器にてディジタルデータ（ライン画像データ）に変換され、読取制御部２０に入力される。
【００４０】
また、画像読取部１０には、周知のスキャナと同様、読取ガラス１１を被覆可能な蓋が開閉自在に設けられており（図示せず）、読取ユニット１５による読取動作の実行時には、ユーザによる手動操作により、読取ガラス１１に載置された原稿の上にかぶせられるようにして蓋が閉められる。尚、読取ガラス１１と対向する蓋の内側には、読取ユニット１５の読取結果である画像データにおいて、原稿外側領域に、黒い影が写らないように、白色部材が設けられている。
【００４１】
一方、読取制御部２０は、ＣＰＵ７０からの指令に従って読取制御処理を実行し、当該読取制御処理にて、読取ユニット１５の副走査方向への移動を制御すると共に、読取ユニット１５の読取動作を制御する。
【００４２】
この制御により、読取制御部２０は、読取ユニット１５を読取ガラス１１下で副走査方向に搬送しつつ、ＣＰＵ７０から指定された読取ガラス１１の読取領域に写る画像を、読取ユニット１５に読み取らせ、読取ガラスの読取領域に写る画像を表す画像データを、ＲＡＭ８０に記録する。このような動作により、ＲＡＭ８０には、読取ガラス１１の読取領域に載置された原稿Ｐの読取画像を表す画像データ（主走査方向及び副走査方向に画素が配列された二次元画像データ）が記録される。
【００４３】
尚、読取制御部２０は、画像読取部１０から入力される各ライン画像データを、一旦内蔵のバッファに蓄積し、各ライン画像データに対してシェーディング補正等の画像処理を実行した後、各ライン画像データを、ＲＡＭ８０に記録する。
【００４４】
この他、印刷部３０は、印刷制御部４０から入力される制御信号に従い、トレイ（図示せず）に載置された記録紙を、記録位置に搬送し、インクジェット方式やレーザプリンタ方式等の周知の記録方式で、記録紙に、制御信号に対応した画像を形成するものである。
【００４５】
また、印刷制御部４０は、印刷部３０を制御して記録紙に画像を形成するものであり、ＣＰＵ７０からの指令に従って、ＣＰＵ７０から指定された印刷対象データに基づく画像を、印刷部３０を通じて、記録紙に印刷する。
【００４６】
また、通信部６０は、外部機器と通信するためのインタフェース群からなり、ＵＳＢインタフェース、ＬＡＮインタフェース、ＦＡＸモデム等から構成されている。即ち、複合機１は、通信部６０が備えるＦＡＸモデムを通じて外部のＦＡＸ装置とＦＡＸ通信可能な構成にされ、ＵＳＢインタフェース又はＬＡＮインタフェースを通じて外部のパーソナルコンピュータと通信可能な構成にされている。
【００４７】
この他、表示操作部５０は、情報表示用の液晶ディスプレイ（図示せず）と、各種操作キーとを備え、ＣＰＵ７０に制御されて、液晶ディスプレイに、ユーザ向けの情報を表示すると共に、操作キーを通じて入力されたユーザからの指令を、ＣＰＵ７０に入力する。
【００４８】
また、ＣＰＵ７０は、プログラムの実行により、操作キーを通じて入力される指令や通信部６０を通じて外部のパーソナルコンピュータ等から入力される指令に従い、コピー機能、ＦＡＸ機能、スキャナ機能、及び、プリンタ機能等を実現する。
【００４９】
例えば、ＣＰＵ７０は、表示操作部５０に設けられた操作キーを通じてユーザからコピー指令が入力されると、複写制御処理（図３参照）を実行して装置内各部を制御し、読取ガラス１１上に載置された原稿Ｐの読取画像を、記録紙に印刷する。詳細には、読取ユニット１５による読取結果に基づいて読取ガラス１１上に載置された原稿Ｐのサイズを推定し、推定した原稿サイズと記録紙サイズとから変倍率を設定して、原稿Ｐの読取画像を、記録紙サイズに適合する大きさに拡大又は縮小し、これを、印刷部３０を通じて記録紙に印刷する（自動変倍複写処理）。
【００５０】
以下、この複写制御処理の内容について具体的に説明するが、それに先駆けては、図２を用いて本実施例の画像読取部１０の特徴について説明する。
図２は、読取ガラス１１の読取可能領域Ｒ０を示した説明図である。当該複合機１においては、一面が開口された長方体状の筐体１３の当該開口部において、長方形状のガラス板である読取ガラス１１が当該開口部を閉塞するように設けられており、読取ガラス１１の周囲が筐体１３により支持された構成にされている。
【００５１】
この読取ガラス１１は、筐体１３の上面よりも若干筐体１３の下側に設けられており、筐体１３から露出する読取ガラス１１の領域１１ａ（以下、「原稿台」と表現する。）と筐体１３との境界ＢＤには、原稿Ｐを突き当て可能に段差が形成されている（以下、筐体１３の読取ガラス１１より上方に位置する部位（上記段差を形成する部位）１３ａを「フレーム」と表現する。）。
【００５２】
また、画像読取部１０においては、読取ユニット１５のライン幅と、原稿台１１ａの大きさとの関係から、四角形状の原稿台１１ａの全領域よりも若干狭い四角形状の領域Ｒ０が、読取ユニット１５により原稿を読取可能な読取可能領域Ｒ０に定められている。具体的に、読取可能領域Ｒ０は、図２において点線で示すように、フレーム１３ａと読取ガラス１１との境界ＢＤから微小量（本実施例では３ｍｍ）離れた位置に外周を有した領域となっている。
【００５３】
また、この画像読取部１０においては、フレーム１３ａの左下部分に、原稿Ｐの角を突き当てるように指示するマークＭＫが記されている。尚、本実施例では、マークＭＫが付された原稿台１１ａの角を、「左下角」と定義して、この左下角より、主走査方向に離れた地点に位置する原稿台１１ａの角を「右下角」と定義し、左下角より、副走査方向に離れた地点に位置する原稿台１１ａの角を「左上角」と定義する。
【００５４】
即ち、複合機１においては、原稿台１１ａの左下角（換言すれば、フレーム１３ａの内側左下角）が、原稿Ｐの角を合わせるべき位置として定められ、原稿台１１ａの当該左下角から延びる左端縁及び下端縁が、原稿Ｐの辺（端縁）を合わせるべき端縁として定められており、複合機１は、ユーザが概ね、このマークＭＫに合わせて原稿Ｐを載置しているとの仮定の下で、原稿サイズの推定等を行い、原稿のコピー動作を実現する。
【００５５】
この他、本実施例の複合機１においては、このマークＭＫが付されたフレーム１３ａの内側左下角に対応する読取可能領域Ｒ０の左下角を原点、主走査方向をＸ軸、副走査方向をＹ軸としたＸＹ座標系（図２（ｂ）参照）が導入されており、ＣＰＵ７０は、このＸＹ座標系を用いて図３に示す複写制御処理を実行する。
【００５６】
続いて、ＣＰＵ７０が実行する複写制御処理について説明する。図３は、操作キーを通じてコピー指令が入力されると、ＣＰＵ７０が実行する複写制御処理を表すフローチャートである。
【００５７】
複写制御処理を開始すると、ＣＰＵ７０は、操作キーを通じて入力されたコピー指令が「自動変倍／傾き補正」コピー指令であるか否かを判断し（Ｓ１１０）、「自動変倍／傾き補正」コピー指令であると判断すると（Ｓ１１０でＹｅｓ）、Ｓ１２０にて、図４に示す自動変倍複写処理を実行する。その後、当該複写制御処理を終了する。
【００５８】
一方、操作キーを通じて入力されたコピー指令が、「自動変倍／傾き補正」コピー指令以外のコピー指令であると判断すると（例えば、自動変倍や傾き補正の指示のないノーマルなコピー指令であると判断すると）、ＣＰＵ７０は、Ｓ１３０にて、入力されたコピー指令に対応した処理を実行した後、当該複写制御処理を終了する。
【００５９】
続いて、ＣＰＵ７０がＳ１２０にて実行する自動変倍複写処理について説明する。図４は、ＣＰＵ７０が実行する自動変倍複写処理を表すフローチャートである。
ＣＰＵ７０は、Ｓ１２０にて自動変倍複写処理を開始すると、まず、原稿読取開始位置を、読取可能領域Ｒ０の下端（Ｙ＝０）に設定し、原稿読取終了位置を、設計段階で予め定められた読取可能領域Ｒ０の下端から所定距離離れた位置（Ｙ＝ＹＰＲＥ）に設定することにより、上記原稿読取開始位置から原稿読取終了位置までの領域に該当する読取可能領域Ｒ０の一部を、読取領域（換言すればプレスキャン領域）に設定し、読取制御部２０を通じて、画像読取部１０に、当該読取領域に対するプレスキャン動作を実行させる（Ｓ２１０：先端部プレスキャン処理）。
【００６０】
即ち、Ｓ２１０では、読取可能領域Ｒ０全体に対してプレスキャン動作を画像読取部１０に実行させるのではなく、読取可能領域Ｒ０の下端から読取可能領域Ｒ０内側へ所定距離離れた地点まで（本実施例では、読取可能領域Ｒ０の下端から３０ｍｍ離れた地点まで）に対し、プレスキャン動作を画像読取部１０に実行させる。これにより、ＣＰＵ７０は、プレスキャン結果として、読取可能領域Ｒ０の一部領域の読取結果を表す画像データを画像読取部１０から取得する。
【００６１】
尚、画像読取部１０は、プレスキャン動作として、設定された読取領域の端から端まで、プレスキャン用の解像度に対応する速度で、読取ユニット１５を副走査方向に搬送し、その読取領域の画像を読取ユニット１５に読み取らせ、プレスキャン結果として、低解像度の画像データ（以下、「プレスキャン画像データ」という。）を、読取制御部２０を通じて、ＲＡＭ８０に記録する動作を実行する。
【００６２】
このようにしてＳ２１０での処理を終えると、次に、ＣＰＵ７０は、ＲＡＭ８０に記録されたプレスキャン画像データに対してエッジ検出処理を実行し、この画像データに対応するエッジ画像データを生成する（Ｓ２１５）。即ち、ＲＡＭ８０に記録されたプレスキャン画像データを、エッジ検出用の画像フィルタ（周知の微分フィルタ）に通して、この画像データに対応するエッジ画像を表すエッジ画像データを生成する。
【００６３】
また、Ｓ２１５での処理を終えると、ＣＰＵ７０は、上記生成したエッジ画像データを、検査対象データに設定して、図５に示す原稿推定処理を実行する（Ｓ２２０）。詳細は後述するが、この原稿推定処理では、検査対象データ（Ｓ２１５で得られたエッジ画像データ）を解析して、原稿エッジを検出し、この検出結果から、原稿台１１ａに載置された原稿のサイズ（縦幅及び横幅）、及び、原稿の傾き角θ、及び、原稿台１１ａにおける原稿の載置領域を推定する。
【００６４】
そして、Ｓ２２０での処理を終えると、ＣＰＵ７０は、印刷制御部４０を通じて、印刷部３０に給紙動作を実行させると共に（Ｓ２３０）、給紙動作の対象となった記録紙のサイズを検出する（Ｓ２４０）。その後、Ｓ２５１に移行する。尚、記録紙のサイズは、例えば、記録紙の搬送路に設けられたセンサを用いて周知の手法で検出することができる。
【００６５】
また、Ｓ２５１に移行すると、ＣＰＵ７０は、Ｓ２２０で推定された原稿サイズ及びＳ２４０で検出された記録紙サイズに基づき、予め定められた計算式に従って変倍率を設定する。具体的には、変倍率を、原稿サイズと記録紙サイズとの比（例えば、記録紙短辺長さ÷原稿短辺長さ）に対応した倍率に設定し、後続の処理で、原稿のコピー画像が、原稿サイズとの記録紙サイズの比に対応した倍率で拡大（倍率が１未満の場合には縮小）されて記録紙に印刷されるようにする。
【００６６】
また、この処理を終えると、ＣＰＵ７０は、Ｓ２２０で推定された原稿の傾き角θから、画像データの傾き補正量を設定する（Ｓ２５３）。具体的には、原稿のコピー画像が、傾きのない状態でまっすぐ、記録紙に印刷されるように、傾き補正量を設定する。但し、推定された原稿の傾き角θが微小量（本実施例では−０．５度≦θ≦０．５度）である場合には、誤差も考慮して、傾き補正量をゼロに設定する。
【００６７】
Ｓ２５３での処理を終えると、ＣＰＵ７０は、Ｓ２２０で推定された原稿の載置領域の情報に基づいて、原稿読取開始位置及び原稿読取終了位置を設定し、原稿読取開始位置及び原稿読取終了位置で定められる読取領域を、原稿台１１ａにおける原稿の載置領域に対応させる（Ｓ２５５）。
【００６８】
具体的には、原稿の載置領域全体を読取ユニット１５が読み取ることができるように、原稿読取開始位置を、副走査方向において最も下側に位置する原稿の端点に対応した位置に設定し、原稿読取終了位置を、副走査方向において最も上側に位置する原稿の端点に対応した位置に設定して、読取領域を原稿台１１ａにおける原稿の載置領域に対応させる。また、この処理を終えると、Ｓ２７０に移行する。
【００６９】
また、Ｓ２７０に移行すると、ＣＰＵ７０は、読取制御部２０を通じて画像読取部１０を制御することで、画像読取部１０に、読取ユニット１５を原稿読取開始位置から原稿読取終了位置まで副走査方向に搬送させると共に、当該搬送中にはライン毎の読取動作を読取ユニット１５に実行させて、上記設定した読取領域の画像を、読取ユニット１５に読み取らせ、当該読取領域の読取結果を表す画像データが、ＲＡＭ８０に記録されるようにする（Ｓ２７０）。
【００７０】
また、この処理を終えると、ＣＰＵ７０は、ＲＡＭ８０に記録された上記読取結果を表す画像データを、予め設定された変倍率で拡大又は縮小処理すると共に、予め設定された傾き補正量分、回転処理して、上記読取結果を表す画像データを、印刷用の画像データに変換し、変換後の画像データを、印刷対象データに設定する（Ｓ２８０）。但し、傾き補正量がゼロに設定されている場合には、Ｓ２８０において、回転処理を、実行しないものとする。
【００７１】
また、Ｓ２８０での処理を終えると、ＣＰＵ７０は、当該印刷対象データについての印刷処理を実行する（Ｓ２９０）。即ち、印刷制御部４０を通じて、印刷部３０に印刷対象データに基づく画像を、給紙した記録紙に印刷させる。その後、当該複写制御処理を終了する。
【００７２】
このようにして、自動変倍複写処理では、読取可能領域Ｒ０における一部領域のプレスキャン結果から、原稿エッジを検出して、原稿サイズ等を推定し、その結果から、本スキャン時（Ｓ２７０実行時）の読取領域を決定すると共に、変倍率及び傾き補正量を決定する。そして、原稿のコピー画像を、原稿サイズと記録紙サイズとの比に対応する大きさに、拡大又は縮小すると共に、傾き補正して、記録紙に印刷する。
【００７３】
続いて、図５を用いて、ＣＰＵ７０が、Ｓ２２０で実行する原稿推定処理について説明する。図５は、ＣＰＵ７０が実行する原稿推定処理を表すフローチャートである。
この原稿推定処理を開始すると、ＣＰＵ７０は、まず、変数Ｓを上述のプレスキャン領域上端のＹ座標であるＹＰＲＥに設定することにより（Ｓ＝ＹＰＲＥ）、Ｙ軸方向の検査範囲を、Ｙ＝０からＹ＝Ｓ＝ＹＰＲＥに設定する（Ｓ４１０）。また、この処理を終えると、Ｓ４２０に移行し、右エッジ検出処理を実行する。図６は、ＣＰＵ７０が実行する右エッジ検出処理を表すフローチャートである。
【００７４】
右エッジ検出処理を開始すると、ＣＰＵ７０は、まずＳ５１０にて、副走査方向検査位置Ｙｅを、読取可能領域Ｒ０の下端Ｙ座標に設定し（Ｙｅ＝０）、Ｓ５１５にて、主走査方向検査位置Ｘｅを、読取可能領域Ｒ０の右端Ｘ座標に設定する（Ｘｅ＝ＸＭＡＸ）。また、Ｓ５１５では、変数Ｃを値ゼロに初期化する（Ｃ＝０）。その後、副走査方向検査位置Ｙｅが検査範囲を超えているか否かを判断する（Ｓ５２０）。具体的には、Ｙｅ＞Ｓであるか否かを判断する。
【００７５】
そして、副走査方向検査位置Ｙｅが検査範囲を超えていないと判断すると（Ｓ５２０でＮｏ）、ＣＰＵ７０は、主走査方向検査位置Ｘｅ及び副走査方向検査位置Ｙｅで定まる検査位置（Ｘ，Ｙ）＝（Ｘｅ，Ｙｅ）に対応する検査対象データの画素値を参照することにより、検査位置（Ｘｅ，Ｙｅ）がエッジ点であるか否かを判断する（Ｓ５２５）。尚、図７は、エッジ画像データの構成を抜粋して示し、更に、右エッジ検出処理により追跡するエッジ点の軌跡を表した説明図である。図７に示す例では、画素値「１」の地点がエッジ点に該当する。
【００７６】
そして、検査位置（Ｘｅ，Ｙｅ）がエッジ点ではないと判断すると（Ｓ５２５でＮｏ）、ＣＰＵ７０は、Ｓ５４０に移行して、主走査方向検査位置Ｘｅを、Ｘ軸マイナス方向に１画素移動した位置に更新し（Ｘｅ←Ｘｅ−１）、更新後の主走査方向検査位置Ｘｅが読取可能領域Ｒ０の左端を、はみ出ていないかどうかを判断する。具体的には、Ｘｅ＜０であるか否かを判断する（Ｓ５４３）。
【００７７】
そして、主走査方向検査位置Ｘｅが、読取可能領域Ｒ０の左端をはみ出ていないと判断すると（Ｓ５４３でＮｏ）、ＣＰＵ７０は、Ｓ５２０に移行して、副走査方向検査位置Ｙｅが検査範囲を超えているか否か（Ｙｅ＞Ｓであるか否か）を判断し、副走査方向検査位置Ｙｅが検査範囲を超えていないと判断すると（Ｓ５２０でＮｏ）、Ｓ５２５に移行し、副走査方向検査位置Ｙｅが検査範囲を超えていると判断すると（Ｓ５２０でＹｅｓ）、Ｓ５９０に移行する。
【００７８】
一方、Ｓ５４３において、主走査方向検査位置Ｘｅが読取可能領域Ｒ０の左端をはみ出ていると判断すると（Ｘｅ＜０であると判断すると）、ＣＰＵ７０は、Ｓ５４７に移行し、主走査方向検査位置Ｘｅを、読取可能領域Ｒ０の右端（ＸＭＡＸ）に設定すると共に（Ｘｅ＝ＸＭＡＸ）、副走査方向検査位置Ｙｅを、現在値Ｙｅに８加えた値に更新する（Ｙｅ←Ｙｅ＋８）。即ち、副走査方向検査位置Ｙｅを、Ｙ軸方向に８画素進んだ位置に設定する。その後、Ｓ５２０に移行して、上述の処理を実行する。
【００７９】
また、検査位置（Ｘｅ，Ｙｅ）がエッジ点であると判断すると（Ｓ５２５でＹｅｓ）、ＣＰＵ７０は、Ｓ５３０に移行し、変数（Ｘ０，Ｙ０）に、現在の検査位置（Ｘｅ，Ｙｅ）の座標値を、設定する（Ｘ０←Ｘｅ，Ｙ０←Ｙｅ）。また、変数Ｙ１を、座標Ｙ＝Ｙ０からＹ軸方向に８画素進んだ座標値Ｙ１（＝Ｙ０＋８）に更新する（Ｓ５３３）。
【００８０】
その後、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点及び座標（Ｘ０＋１，Ｙ１）の地点の少なくとも一つが、エッジ点であるか否かを判断し（Ｓ５３７）、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点及び座標（Ｘ０＋１，Ｙ１）の地点のいずれもがエッジ点でない場合には（Ｓ５３７でＮｏ）、Ｓ５４０に移行して、主走査方向検査位置Ｘｅを、Ｘ軸マイナス方向に１画素移動した位置に更新する（Ｘｅ←Ｘｅ−１）。
【００８１】
一方、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点及び座標（Ｘ０＋１，Ｙ１）の地点の少なくとも一つがエッジ点であると判断した場合には（Ｓ５３７でＹｅｓ）、Ｓ５５０に移行して、座標（Ｘ０，Ｙ０）の地点が連続性のあるエッジ点であると判定し、この座標（Ｘ０，Ｙ０）を、連続性のあるエッジ点の座標データとして、一時記憶する。
【００８２】
また、この処理を終えると、ＣＰＵ７０は、Ｓ５６０に移行し、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点及び座標（Ｘ０＋１，Ｙ１）の地点の内、エッジ点である地点の一つを、予め定められた優先度に従って選択する。
【００８３】
具体的に、右エッジ検出処理においては、読取可能領域Ｒ０右端側に近い座標ほど高い優先度が設定されている。即ち、読取可能領域Ｒ０右端側に近い座標（Ｘ０＋１，Ｙ１）の地点が優先度「大」に設定され、座標（Ｘ０，Ｙ１）の地点が優先度「中」に設定され、座標（Ｘ０−１，Ｙ１）の地点が優先度「小」に設定されている。
【００８４】
このように優先度が設定されているのは、原稿の右端より右側においては、原稿台１１ａに何も存在せず、エッジ点は存在しないはずであり、読取可能領域Ｒ０右端側に近いエッジ点であるほど、そのエッジ点が原稿の右端に対応するエッジ点である可能性が高いためである。
【００８５】
即ち、Ｓ５６０では、上記優先度に従って、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点、及び、座標（Ｘ０＋１，Ｙ１）の地点の内、エッジ点である地点であって優先度の最も高い地点を選択する。そして、変数Ｘ０を、選択した地点のＸ座標に更新し、変数Ｙ０を、選択した地点のＹ座標に更新する。その後、変数Ｃを１加算した値に更新する（Ｓ５６３）。
【００８６】
そして、この処理を終えると、ＣＰＵ７０は、更新後の変数Ｃの値がＣ＝８であるか否かを判断し、Ｃ＝８でないと判断すると（Ｓ５６７でＮｏ）、Ｓ５３３に移行して、変数Ｙ１を、座標Ｙ＝Ｙ０からＹ軸方向に８画素進んだ地点のＹ座標に更新する（Ｙ１＝Ｙ０＋８）。その後、Ｓ５３７以降の処理を実行する。
【００８７】
ＣＰＵ７０は、このような処理を実行することにより、図７に示すように、Ｙ軸方向に８画素おきに、エッジ点がＹ軸方向に連続するものであるか否かを検査する。そして、Ｃ＝８であると判断すると（Ｓ５６７でＹｅｓ）、８回に及ぶＳ５５０の処理で連続性のあるエッジ点として判定した計８地点の各座標データを、原稿右エッジデータとしてＲＡＭ８０に記憶する（Ｓ５７０）。
【００８８】
また、この処理を終えると、ＣＰＵ７０は、副走査方向検査位置Ｙｅを６４画素進んだ位置に更新して（Ｓ５８０）、Ｓ５１５に移行する。
このようにして、ＣＰＵ７０は、連続するエッジ点を、８つを１組として、繰返し検出する。そして、副走査方向検出位置Ｙｅが検査範囲を超えると（Ｓ５２０でＹｅｓ）、Ｓ５９０に移行し、Ｓ５７０で原稿右エッジデータとして記憶された座標データ群の中から、右エッジ（原稿の右端を表すエッジ点）として確度の低い座標データ群を削除して、原稿右エッジデータを確定する。
【００８９】
具体的に、Ｓ５９０では、原稿右エッジデータを処理対象データに設定して、図８に示す第一エッジ確定処理を実行することで、右エッジとして確度の低い座標データ群を原稿右エッジデータから削除し、原稿右エッジデータを確定する。図８は、ＣＰＵ７０が実行する第一エッジ確定処理を表すフローチャートである。
【００９０】
第一エッジ確定処理を開始すると、ＣＰＵ７０は、予め設定された処理対象データが、少なくとも８つ以上のエッジ点の座標データを含むものであるか否かを判断し（Ｓ６１０）、処理対象データが８つ以上のエッジ点の座標データを含むものであると判断すると（Ｓ６１０でＹｅｓ）、Ｓ６２０に移行し、処理対象データが８つ以上のエッジ点の座標データを含むものではない（換言すれば処理対象データが空データである）と判断すると（Ｓ６１０でＮｏ）、Ｓ６２０〜Ｓ６７０の処理を実行することなく、当該第一エッジ確定処理を終了する。
【００９１】
一方、Ｓ６２０に移行すると、ＣＰＵ７０は、処理対象データを構成するエッジ点の座標データ群に基づき、処理対象データにおいて、Ｙ座標値が最大のブロックを検査ブロックに設定する。
【００９２】
但し、ここでは、処理対象データに座標データが登録されたエッジ点の集合であって、当該処理対象データを生成するに至ったエッジ検出処理（右エッジ検出処理又は左エッジ検出処理又は下エッジ検出処理）で連続すると判定された８つのエッジ点の集合を、「ブロック」と称する。
【００９３】
上述したように、本実施例では、右エッジ検出処理にて、Ｙ軸方向に連続するエッジ点を、８つを１組として検出し、検出した８つのエッジ点の座標データをＲＡＭ８０に記録すると（Ｓ５７０参照）、次の連続するエッジ点の集合を、画像データの右端から画像データ内部に向けて再度検索していく（Ｓ５８０，Ｓ５１５参照）。
【００９４】
Ｓ６２０では、このようにしてＲＡＭ８０に座標データが登録された連続する８点のエッジ点の集合からなるブロックであって、Ｙ座標値が最大のエッジ点を要素に含むブロックを、処理対象データから選択し、これを検査ブロックに設定する。
【００９５】
また、このようにしてＳ６２０での処理を終えると、ＣＰＵ７０は、Ｓ６３０に移行し、検査ブロックよりＹ軸マイナス方向に隣接するエッジ点の座標データが、処理対象データに含まれているか否かを判断する。
【００９６】
ここでは、検査ブロックを構成するエッジ点の内、Ｙ座標値が最小のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）であるとすると、Ｙ軸マイナス方向に隣接するエッジ点の座標データとして、Ｙ座標値がＹ＝Ｙ０−８を採るエッジ点の当該座標データが、処理対象データに含まれているか否かを判断する。これにより、Ｙ軸のみの一次元空間上で、隣接するエッジ点（換言すれば隣接するブロック）の有無を判断する。
【００９７】
そして、Ｙ軸マイナス方向に隣接するエッジ点の座標データが処理対象データに含まれていると判断すると（Ｓ６３０でＹｅｓ）、Ｓ６４０に移行し、Ｙ軸マイナス方向に隣接するエッジ点の座標データが処理対象データに含まれていないと判断すると（Ｓ６３０でＮｏ）、Ｓ６７０に移行する。
【００９８】
また、Ｓ６４０に移行すると、ＣＰＵ７０は、検査ブロックのＹ軸マイナス方向末端のエッジ点のＸ座標値（換言すれば、検査ブロックを構成するエッジ点の内、Ｙ座標値最小のエッジ点のＸ座標値）と、上述した検査ブロックよりＹ軸マイナス方向に隣接するエッジ点のＸ座標値との差δＸを算出する。検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）であり、検査ブロックよりＹ軸マイナス方向に隣接するエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ１，Ｙ０−８）である場合には、δＸ＝｜Ｘ０−Ｘ１｜を算出する。
【００９９】
また、この処理を終えると、ＣＰＵ７０は、差δＸが、予め設計段階で定められた閾値未満であるか否かを判断し（Ｓ６５０）、閾値未満であると判断すると（Ｓ６５０でＹｅｓ）、検査ブロックをＹ軸マイナス方向に隣接する次ブロックに更新し（Ｓ６６０）、その後、Ｓ６３０に移行する。例えば、検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｙ座標値がＹ＝Ｙ０−８からＹ＝Ｙ０−６４までの範囲の値を採る計８個のエッジ点の集合を、新たな検査ブロックに設定した後、Ｓ６３０に移行する。
【０１００】
一方、差δＸが、閾値以上であると判断すると（Ｓ６５０でＮｏ）、ＣＰＵ７０は、現在の検査ブロックのＹ軸マイナス方向末端よりＹ軸マイナス方向に位置するエッジ点については、原稿エッジとしての確度が低いと判断して、Ｓ６７０に移行し、現在の検査ブロックのＹ軸マイナス方向末端よりＹ軸マイナス方向に位置するエッジ点の座標データを、全て処理対象データから削除して、処理対象データを更新する。
【０１０１】
例えば、現在の検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｙ座標値がＹ０未満のエッジ点の座標データを全て処理対象データから削除して、処理対象データを更新する。その後、当該第一エッジ確定処理を終了する。第一エッジ確定処理では、このようにして、処理対象データを構成するエッジ点の座標データの内、原稿エッジとして確度の低い座標データを削除する。
【０１０２】
即ち、右エッジ検出処理のＳ５９０では、このようにして、原稿右エッジデータから右エッジとして確度の低いエッジ点の座標データを削除し、原稿右エッジデータを確定する。
【０１０３】
尚、図９は、Ｓ５９０における原稿右エッジデータの確定手法を示した説明図であり、図９（ｂ）は、Ｙ軸方向の画素を８画素おきに表したエッジ画像データと共に、δＸの算出手法を視覚的に表した説明図である。
【０１０４】
Ｓ５９０で、上述のようにして、Ｙ座標値が大きいエッジ点程、エッジ点が原稿の右端を表すエッジ点（右エッジ）である確度が高いと取り扱い、Ｙ座標値が大きいエッジ点群からＸ軸方向に大きくずれた位置に存在するＹ座標値が小さいエッジ点群を、原稿右エッジデータから削除する理由は、右エッジ検出処理にて、Ｙｅ＝０から順に検査位置（Ｘｅ，Ｙｅ）をずらして原稿の右端を表すエッジ点を検索すると、原稿が左側に傾いている場合には、原稿の右端ではなく、図９（ａ）に示すように、原稿内部に描写された罫線等に対応するエッジ点を、原稿の右端を表すエッジ点として誤検出してしまう可能性があるためである。
【０１０５】
このような誤検出は、原稿台１１ａの下端寄りに位置するＹ座標値が小さいエッジ点群において発生している可能性が高く、原稿台１１ａの中央寄りに位置するＹ座標値が大きいエッジ点群において発生している可能性は、小さい。このような理由から、Ｓ５９０では、Ｙ座標値が大きいエッジ点程、エッジ点が原稿の右端を表すエッジ点（右エッジ）である確度が高いと取り扱って、確度の低いエッジ点を原稿右エッジデータから削除し、原稿右エッジデータを確定するようにしている。
【０１０６】
また、このようにしてＳ５９０での処理を終えると、ＣＰＵ７０は、Ｓ４２０での右エッジ検出処理を終了して、Ｓ４３０に移行し、Ｓ４３０では、直前の右エッジ検出処理で右エッジの検出に失敗したか否かを判断する。具体的には、直前の右エッジ検出処理で原稿右エッジデータとして登録された座標データがない場合、右エッジの検出に失敗したと判断し、原稿右エッジデータとして登録された座標データがある場合には、右エッジの検出に成功したと判断する。
【０１０７】
但し、例外的に、原稿右エッジデータとして登録された座標データが読取可能領域Ｒ０の左端（Ｙ＝０）近傍にある場合には、左エッジ（原稿の左端を表すエッジ点）の座標データが間違って原稿右エッジデータとして登録されているとみなして、原稿右エッジデータとして登録された座標データがある場合でも、右エッジの検出に失敗したと判断してもよい。
【０１０８】
尚、右エッジの検出に失敗するケースとしては、原稿サイズが原稿台１１ａのサイズより大きく、原稿の右端が原稿台１１ａからはみ出しているケースなどを挙げることができる。
【０１０９】
そして、右エッジの検出に失敗したと判断すると（Ｓ４３０でＹｅｓ）、ＣＰＵ７０は、Ｓ４３１に移行し、エラー処理を実行する。例えば、複合機１は、Ｓ４３１におけるエラー処理として、『原稿を正しく載置するか、自動変倍複写機能は使用できないので他のコピー指令を入力するように促すメッセージを表示操作部５０のディスプレイに表示した後、Ｓ４３１を実行するに至ったコピー指令に対応する当該複写制御処理を強制終了して、当該コピー指令を無効にする』処理を実行する構成にすることができる。
【０１１０】
この他、複合機１は、Ｓ４３１におけるエラー処理として、『原稿台１１ａに載置された原稿のサイズを、予め定められた固定サイズであると形式的に推定すると共に、原稿の傾き角θをゼロと推定し、更に、原稿の載置領域を、上記推定したサイズの原稿の左下角が原稿台１１ａの左下角に正しく突き当てられていると仮定したときに原稿が載置される領域に推定する』処理を実行し、その後、当該原稿推定処理を終了して、Ｓ２３０に移行する構成にされてもよい。
【０１１１】
一方、Ｓ４３０において右エッジの検出に成功したと判断すると（Ｓ４３０でＮｏ）、ＣＰＵ７０は、Ｓ４３３に移行し、右エッジ検出処理で確定された原稿右エッジデータが示す各点を直線近似して、原稿右エッジデータが示す点群の近似直線（以下、「右エッジ近似直線」と表現する。）を算出する。
【０１１２】
また、この処理を終えると、ＣＰＵ７０は、Ｓ４４０に移行して、右エッジ近似直線がＹ軸に対し所定角度より大きく傾いているか否かを判断する。本実施例では、具体的に、右エッジ近似直線がＹ軸に対し０．５度より大きく傾いているか否かを判断する。
【０１１３】
そして、右エッジ近似直線の傾きが上記所定角度以下であると判断すると（Ｓ４４０でＮｏ）、ＣＰＵ７０は、原稿がフレーム１３ａの内側左下角に突き当てられて原稿台１１ａに正しく載置されていると推定して、図５右図に示すように、右エッジ近似直線と原稿台１１ａ下端縁との交点を、原稿の右下角位置であると推定する（Ｓ４４１）。
【０１１４】
また、この処理を終えると、ＣＰＵ７０は、原稿の左下角位置が原稿台１１ａの左下角の地点であると推定し（Ｓ４４３）、Ｓ４４１及びＳ４４３で推定した角位置の位置座標に基づき、原稿台１１ａに載置されている原稿が四角形状の定型用紙であるとの仮定の下で、原稿台１１ａに載置された原稿のサイズ及び原稿台１１ａにおける原稿の載置領域を推定すると共に、原稿の傾き角θを推定する（Ｓ４４５）。
【０１１５】
具体的には、Ｓ４４１及びＳ４４３で推定した原稿の左下角位置から右下角位置までの長さを、原稿の短辺長さ（横幅）と推定し、この短辺長さの√２倍を、原稿の長辺長さ（縦幅）と推定して、原稿サイズを推定すると共に、上記推定した左下角位置及び右下角位置を起点に上記原稿サイズの原稿が原稿台１１ａに載置されているものとして、原稿の左上角及び右上角が位置する座標を導出し、これら４つの角を結んでできる四角形内の領域を、原稿の載置領域であると推定する。尚、ここで原稿短辺長さの√２倍を、原稿の長辺長さとして推定しているのは、定型用紙の短辺長さ：長辺長さの比が１：√２となっているためである。
【０１１６】
また、Ｓ４４１，Ｓ４４３では、原稿が原稿台１１ａの左下角に正確に突き当てられて原稿台１１ａに載置されていると仮定して角位置を求めているので、Ｓ４４５では、原稿の傾き角θがゼロである（傾きがない）と推定する。
【０１１７】
このようにして、Ｓ４４５での処理を終えると、ＣＰＵ７０は、当該原稿推定処理（Ｓ２２０）を終えて、Ｓ２３０に移行し、上述したようにして、後続の処理を実行する。即ち、原稿推定処理で推定した原稿サイズ、原稿の傾き角、原稿の載置領域の情報を基に、変倍率及び傾き補正量を設定し（Ｓ２５１，Ｓ２５３）、更に読取領域を設定する（Ｓ２５５）。その後、本スキャンに移行して（Ｓ２７０）、コピー動作を実現する。但し、ここでは、原稿の傾き角θがゼロと推定されるので、傾き補正は実質実行されない。
【０１１８】
話を原稿推定処理のＳ４４０（図５参照）に戻すと、ＣＰＵ７０は、ここで、右エッジ近似直線がＹ軸に対し所定角度より大きく傾いていると判断した場合（Ｓ４４０でＹｅｓ）、Ｓ４５０に移行して、図１０に示す左エッジ検出処理を実行する。図１０は、ＣＰＵ７０が実行する左エッジ検出処理を表すフローチャートである。
【０１１９】
左エッジ検出処理を開始すると、ＣＰＵ７０は、Ｓ７１０にて、副走査方向検査位置Ｙｅ＝０に設定し、Ｓ７１５にて、主走査方向検査位置Ｘｅを、読取可能領域Ｒ０の左端Ｘ座標に設定する（Ｘｅ＝０）。また、Ｓ７１５では、変数Ｃを値ゼロに初期化する（Ｃ＝０）。
【０１２０】
その後、ＣＰＵ７０は、副走査方向検査位置Ｙｅが検査範囲を超えているか否か（即ち、Ｙｅ＞Ｓであるか否か）を判断し（Ｓ７２０）、副走査方向検査位置Ｙｅが検査範囲を超えていないと判断すると（Ｓ７２０でＮｏ）、検査位置（Ｘ，Ｙ）＝（Ｘｅ，Ｙｅ）に対応する検査対象データの画素値を参照して、検査位置（Ｘｅ，Ｙｅ）がエッジ点であるか否かを判断する（Ｓ７２５）。
【０１２１】
そして、検査位置（Ｘｅ，Ｙｅ）がエッジ点ではないと判断すると（Ｓ７２５でＮｏ）、Ｓ７４０に移行し、主走査方向検査位置Ｘｅを、Ｘ軸プラス方向に１画素移動した地点に更新し（Ｘｅ←Ｘｅ＋１）、更新した主走査方向検査位置Ｘｅが、読取可能領域Ｒ０の右端を、はみ出ていないかどうかを判断する（Ｓ７４３）。具体的には、Ｘｅ＞ＸＭＡＸであるか否かを判断する（Ｓ７４３）。そして、主走査方向検査位置Ｘｅが、読取可能領域Ｒ０の右端をはみ出ていないと判断すると（Ｓ７４３でＮｏ）、Ｓ７２０に移行する。
【０１２２】
一方、Ｓ７４３で主走査方向検査位置Ｘｅが読取可能領域Ｒ０の右端をはみ出ていると判断すると（Ｘｅ＞ＸＭＡＸであると判断すると）、ＣＰＵ７０は、Ｓ７４７に移行し、主走査方向検査位置Ｘｅを、読取可能領域Ｒ０の左端に設定すると共に（Ｘｅ＝０）、副走査方向検査位置Ｙｅを、Ｙ軸方向に８画素進んだ位置に設定する（Ｙｅ←Ｙｅ＋８）。その後、Ｓ７２０に移行する。
【０１２３】
また、検査位置（Ｘｅ，Ｙｅ）がエッジ点であると判断すると（Ｓ７２５でＹｅｓ）、ＣＰＵ７０は、Ｓ７３０に移行して、変数（Ｘ０，Ｙ０）に、現在の検査位置（Ｘｅ，Ｙｅ）の座標値を設定する（Ｘ０←Ｘｅ，Ｙ０←Ｙｅ）と共に、変数Ｙ１を、値Ｙ１＝Ｙ０＋８に更新する（Ｓ７３３）。
【０１２４】
その後、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点及び座標（Ｘ０＋１，Ｙ１）の地点の少なくとも一つが、エッジ点であるか否かを判断し（Ｓ７３７）、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点及び座標（Ｘ０＋１，Ｙ１）の地点のいずれもがエッジ点でない場合には（Ｓ７３７でＮｏ）、Ｓ７４０に移行する。
【０１２５】
一方、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点及び座標（Ｘ０＋１，Ｙ１）の地点の少なくとも一つがエッジ点であると判断した場合には（Ｓ７３７でＹｅｓ）、Ｓ７５０に移行して、座標（Ｘ０，Ｙ０）の地点が連続性のあるエッジ点であると判定し、この座標（Ｘ０，Ｙ０）を、連続性のあるエッジ点の座標データとして、一時記憶する。
【０１２６】
また、この処理を終えると、ＣＰＵ７０は、Ｓ７６０に移行し、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点及び座標（Ｘ０＋１，Ｙ１）の地点の内、エッジ点である地点の一つを、予め定められた優先度に従って選択する。
【０１２７】
具体的に、左エッジ検出処理においては、読取可能領域Ｒ０左端側に近い座標ほど高い優先度が設定されている。即ち、読取可能領域Ｒ０左端側に近い座標（Ｘ０−１，Ｙ１）の地点が優先度「大」に設定され、座標（Ｘ０，Ｙ１）の地点が優先度「中」に設定され、座標（Ｘ０＋１，Ｙ１）の地点が優先度「小」に設定されている。このように優先度が設定されているのは、原稿の左端より左側においては、原稿台１１ａに何も存在せず、エッジ点は存在しないはずであり、読取可能領域Ｒ０左端側に近いエッジ点であるほど、そのエッジ点が原稿の左端に対応するエッジ点である可能性が高いためである。
【０１２８】
従って、Ｓ７６０では、この優先度に従って、座標（Ｘ０−１，Ｙ１）の地点、座標（Ｘ０，Ｙ１）の地点、及び、座標（Ｘ０＋１，Ｙ１）の地点の内、エッジ点である地点であって優先度の最も高い地点を選択する。そして、変数Ｘ０を、選択した地点のＸ座標に更新し、変数Ｙ０を、選択した地点のＹ座標に更新する。その後、変数Ｃを１加算した値に更新する（Ｓ７６３）。
【０１２９】
また、この処理を終えると、ＣＰＵ７０は、更新後の変数Ｃの値がＣ＝８であるか否かを判断し、Ｃ＝８でないと判断すると（Ｓ７６７でＮｏ）、Ｓ７３３に移行して、変数Ｙ１を、Ｙ１＝Ｙ０＋８に更新する。その後、Ｓ７３７以降の処理を実行する。
【０１３０】
このような処理手順により、ＣＰＵ７０は、右エッジ検出処理と同様（図７参照）、Ｙ軸方向に８画素おきに、エッジ点がＹ軸方向に連続するものであるか否かを検査する。そして、Ｃ＝８であると判断すると（Ｓ７６７でＹｅｓ）、Ｓ７５０で連続性のあるエッジ点として判定した計８地点の各座標データを、原稿左エッジデータとしてＲＡＭ８０に記憶する（Ｓ７７０）。
【０１３１】
また、この処理を終えると、ＣＰＵ７０は、Ｓ７８０に移行して、副走査方向検査位置Ｙｅを６４画素進んだ地点に更新した後、Ｓ７１５に移行する。
このようにして、ＣＰＵ７０は、連続するエッジ点を、８つずつ、繰返し検出する。そして、副走査方向検出位置Ｙｅが検査範囲を超えると（Ｓ７２０でＹｅｓ）、Ｓ７９０に移行し、Ｓ７７０で原稿左エッジデータとして記憶された座標データ群の中から、左エッジ（原稿の左端を表すエッジ点）として確度の低い座標データ群を削除して、原稿左エッジデータを確定する。
【０１３２】
具体的には、Ｓ５９０での処理と同様、原稿左エッジデータを処理対象データに設定して、図８に示す第一エッジ確定処理を実行することで、左エッジとして確度の低い座標データ群を原稿左エッジデータから削除し、原稿左エッジデータを確定する。
【０１３３】
また、このようにして、左エッジ検出処理を終えると、ＣＰＵ７０は、Ｓ４５５に移行し、左エッジ検出処理で確定された原稿左エッジデータが示す各点を直線近似して、原稿左エッジデータが示す点群の近似直線（以下、「左エッジ近似直線」という。）を算出する。その後、Ｓ４６０に移行する。
【０１３４】
但し、直前の左エッジ検出処理で原稿左エッジデータとして登録された座標データがない場合には、左エッジの検出に失敗したと判断して、左エッジ近似直線を算出することなく、Ｓ４６０に移行するものとする。この他、原稿左エッジデータとして登録されている座標データの全て又は一部が原稿右エッジデータにも登録されている場合には、右エッジ（原稿の右端を表すエッジ点）の座標データが間違って原稿左エッジデータとして登録されているとみなして、原稿左エッジデータとして登録された座標データがある場合でも、左エッジの検出に失敗したと判断し、左エッジ近似直線を算出することなく、Ｓ４６０に移行するようにしてもよい。
【０１３５】
また、Ｓ４６０に移行すると、ＣＰＵ７０は、図１１に示す下エッジ検出処理を実行する。図１１は、ＣＰＵ７０が実行する下エッジ検出処理を表すフローチャートである。
下エッジ検出処理を開始すると、ＣＰＵ７０は、Ｓ８１０にて、主走査方向検査位置Ｘｅを、読取可能領域Ｒ０の左端Ｘ座標に設定し（Ｘｅ＝０）、Ｓ８１５にて、副走査方向検査位置Ｙｅを、読取可能領域Ｒ０の下端Ｙ座標に設定する（Ｙｅ＝０）。また、Ｓ８１５では、変数Ｃを値ゼロに初期化する（Ｃ＝０）。
【０１３６】
また、この処理を終えると、ＣＰＵ７０は、主走査方向検査位置Ｘｅが読取可能領域Ｒ０の右端を超えているか否か（即ち、Ｘｅ＞ＸＭＡＸであるか否か）を判断し（Ｓ８２０）、主走査方向検査位置Ｘｅが読取可能領域Ｒ０の右端を超えていないと判断すると（Ｓ８２０でＮｏ）、検査位置（Ｘ，Ｙ）＝（Ｘｅ，Ｙｅ）に対応する検査対象データの画素値を参照し、検査位置（Ｘｅ，Ｙｅ）がエッジ点であるか否かを判断する（Ｓ８２５）。
【０１３７】
そして、検査位置（Ｘｅ，Ｙｅ）がエッジ点ではないと判断すると（Ｓ８２５でＮｏ）、Ｓ８４０に移行して、副走査方向検査位置Ｙｅを、Ｙ軸プラス方向に１画素移動した位置に更新し（Ｙｅ←Ｙｅ＋１）、更新後の副走査方向検査位置Ｙｅが検査範囲を超えているか否か（Ｙｅ＞Ｓであるか否か）を判断する（Ｓ８４３）。
【０１３８】
そして、副走査方向検査位置Ｙｅが検査範囲を超えていないと判断すると（Ｓ８４３でＮｏ）、Ｓ８２０に移行する。
一方、Ｓ８４３で副走査方向検査位置Ｙｅが検査範囲を超えていると判断すると（Ｙｅ＞Ｓであると判断すると）、ＣＰＵ７０は、Ｓ８４７に移行し、副走査方向検査位置Ｙｅを、読取可能領域Ｒ０の下端に設定すると共に（Ｙｅ＝０）、主走査方向検査位置Ｘｅを、Ｘ軸方向に８画素進んだ位置に設定する（Ｘｅ←Ｘｅ＋８）。その後、Ｓ８２０に移行する。
【０１３９】
この他、ＣＰＵ７０は、Ｓ８２５において、検査位置（Ｘｅ，Ｙｅ）がエッジ点であると判断すると（Ｓ８２５でＹｅｓ）、Ｓ８３０に移行し、変数（Ｘ０，Ｙ０）に、現在の検査位置（Ｘｅ，Ｙｅ）の座標値を、設定する（Ｘ０←Ｘｅ，Ｙ０←Ｙｅ）。また、変数Ｘ１を、値Ｘ１＝Ｘ０＋８に更新する（Ｓ８３３）。
【０１４０】
その後、ＣＰＵ７０は、座標（Ｘ１，Ｙ０−１）の地点、座標（Ｘ１，Ｙ０）の地点及び座標（Ｘ１，Ｙ０＋１）の地点の少なくとも一つが、エッジ点であるか否かを判断し（Ｓ８３７）、座標（Ｘ１，Ｙ０−１）の地点、座標（Ｘ１，Ｙ０）の地点及び座標（Ｘ１，Ｙ０＋１）の地点のいずれもがエッジ点でない場合には（Ｓ８３７でＮｏ）、Ｓ８４０に移行する。
【０１４１】
一方、座標（Ｘ１，Ｙ０−１）の地点、座標（Ｘ１，Ｙ０）の地点及び座標（Ｘ１，Ｙ０＋１）の地点の少なくとも一つがエッジ点であると判断すると（Ｓ８３７でＹｅｓ）、ＣＰＵ７０は、Ｓ８５０に移行して、座標（Ｘ０，Ｙ０）の地点が連続性のあるエッジ点であると判定し、この座標（Ｘ０，Ｙ０）を、連続性のあるエッジ点の座標データとして、一時記憶する。
【０１４２】
また、この処理を終えると、ＣＰＵ７０は、Ｓ８６０に移行し、座標（Ｘ１，Ｙ０−１）の地点、座標（Ｘ１，Ｙ０）の地点及び座標（Ｘ１，Ｙ０＋１）の地点の内、エッジ点である地点の一つを、予め定められた優先度に従って選択する。
【０１４３】
具体的に、下エッジ検出処理においては、読取可能領域Ｒ０下端側に近い座標ほど高い優先度が設定されている。即ち、読取可能領域Ｒ０下端側に近い座標（Ｘ１，Ｙ０−１）の地点が優先度「大」に設定され、座標（Ｘ１，Ｙ０）の地点が優先度「中」に設定され、座標（Ｘ１，Ｙ０＋１）の地点が優先度「小」に設定されている。このように優先度が設定されているのは、原稿の下端より下側においては、原稿台１１ａに何も存在せず、エッジ点は存在しないはずであり、読取可能領域Ｒ０下端側に近いエッジ点であるほど、そのエッジ点が原稿の下端に対応するエッジ点である可能性が高いためである。
【０１４４】
従って、Ｓ８６０では、この優先度に従って、座標（Ｘ１，Ｙ０−１）の地点、座標（Ｘ１，Ｙ０）の地点及び座標（Ｘ１，Ｙ０＋１）の地点の内、エッジ点である地点であって優先度の最も高い地点を選択する。そして、変数Ｘ０を、選択した地点のＸ座標に更新し、変数Ｙ０を、選択した地点のＹ座標に更新する。その後、変数Ｃを１加算した値に更新する（Ｓ８６３）。
【０１４５】
また、この処理を終えると、ＣＰＵ７０は、更新後の変数Ｃの値がＣ＝８であるか否かを判断し（Ｓ８６７）、Ｃ＝８でないと判断すると（Ｓ８６７でＮｏ）、Ｓ８３３に移行して、変数Ｘ１を、Ｘ１＝Ｘ０＋８に更新する。その後、Ｓ８３７以降の処理を実行する。
【０１４６】
このような処理を実行することにより、ＣＰＵ７０は、Ｘ軸方向に８画素おきに、エッジ点がＸ軸方向に連続するものであるか否かを検査する。そして、Ｃ＝８であると判断すると（Ｓ８６７でＹｅｓ）、Ｓ８５０で連続性のあるエッジ点として判定した計８地点の各座標データを、原稿下エッジデータとしてＲＡＭ８０に記憶する（Ｓ８７０）。
【０１４７】
また、この処理を終えると、ＣＰＵ７０は、Ｓ８８０に移行して、主走査方向検査位置Ｘｅを６４画素進んだ地点に更新した後、Ｓ８１５に移行する。
このようにして、ＣＰＵ７０は、連続するエッジ点を、８つずつ、繰返し検出する。そして、主走査方向検出位置Ｘｅが読取可能領域Ｒ０右端を超えると（Ｓ８２０でＹｅｓ）、Ｓ８９０に移行し、Ｓ８７０で原稿下エッジデータとして記憶された座標データ群の中から、下エッジ（原稿の下端を表すエッジ点）として確度の低い座標データ群を削除して、原稿下エッジデータを確定する。
【０１４８】
具体的に、Ｓ８９０では、原稿下エッジデータを処理対象データに設定して、第二エッジ確定処理を実行することで、下エッジとして確度の低い座標データ群を原稿下エッジデータから削除し、原稿下エッジデータを確定する。図１２は、ＣＰＵ７０が実行する第二エッジ確定処理を表すフローチャートである。
【０１４９】
第二エッジ確定処理を開始すると、ＣＰＵ７０は、予め設定された処理対象データが、少なくとも８つ以上のエッジ点の座標データを含むものであるか否かを判断し（Ｓ９１０）、処理対象データが８つ以上のエッジ点の座標データを含むものであると判断すると（Ｓ９１０でＹｅｓ）、Ｓ９２０に移行し、処理対象データが８つ以上のエッジ点の座標データを含むものではない（換言すれば処理対象データが空データである）と判断すると（Ｓ９１０でＮｏ）、Ｓ９２０〜Ｓ９７０の処理を実行することなく、当該第二エッジ確定処理を終了する。
【０１５０】
一方、Ｓ９２０に移行すると、ＣＰＵ７０は、処理対象データを構成するエッジ点の座標データ群に基づき、処理対象データにおいて、Ｘ座標値が最大のブロックを検査ブロックに設定する。
【０１５１】
上述したように、本実施例では、下エッジ検出処理にて、Ｘ軸方向に連続するエッジ点を８つを１組として検出し、検出した８つのエッジ点の座標データをＲＡＭ８０に記録すると（Ｓ８７０参照）、次の連続するエッジ点の集合を、画像データ（検査対象データ）の下端から画像データ内部に向けて再度検索していく（Ｓ８８０，Ｓ８１５参照）。
【０１５２】
Ｓ９２０では、このようにしてＲＡＭ８０に座標データが登録された連続する８点のエッジ点の集合からなるブロックであって、Ｘ座標値が最大のエッジ点を要素に含むブロックを、処理対象データから選択し、これを検査ブロックに設定する。
【０１５３】
また、このようにしてＳ９２０での処理を終えると、ＣＰＵ７０は、Ｓ９３０に移行し、検査ブロックよりＸ軸マイナス方向に隣接するエッジ点の座標データが、処理対象データに含まれているか否かを判断する。
【０１５４】
ここでは、検査ブロックを構成するエッジ点の内、Ｘ座標値が最小のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）であるとすると、Ｘ軸マイナス方向に隣接するエッジ点の座標データとして、Ｘ座標値がＸ＝Ｘ０−８を採るエッジ点の当該座標データが、処理対象データに含まれているか否かを判断する。これにより、Ｘ軸のみの一次元空間上で、隣接するエッジ点（換言すれば隣接するブロック）の有無を判断する。
【０１５５】
そして、Ｘ軸マイナス方向に隣接するエッジ点の座標データが処理対象データに含まれていると判断すると（Ｓ９３０でＹｅｓ）、Ｓ９４０に移行し、Ｘ軸マイナス方向に隣接するエッジ点の座標データが処理対象データに含まれていないと判断すると（Ｓ９３０でＮｏ）、Ｓ９７０に移行する。
【０１５６】
また、Ｓ９４０に移行すると、ＣＰＵ７０は、検査ブロックのＸ軸マイナス方向末端のエッジ点のＹ座標値（換言すれば、検査ブロックを構成するエッジ点の内、Ｘ座標値最小のエッジ点のＹ座標値）と、上述した検査ブロックよりＸ軸マイナス方向に隣接するエッジ点のＹ座標値との差δＹを算出する。検査ブロックのＸ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）であり、検査ブロックよりＸ軸マイナス方向に隣接するエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０−８，Ｙ１）である場合には、δＹ＝｜Ｙ０−Ｙ１｜を算出する。
【０１５７】
また、この処理を終えると、ＣＰＵ７０は、差δＹが、予め設計段階で定められた閾値未満であるか否かを判断し（Ｓ９５０）、閾値未満であると判断すると（Ｓ９５０でＹｅｓ）、検査ブロックをＸ軸マイナス方向に隣接する次ブロックに更新し（Ｓ９６０）、その後、Ｓ９３０に移行する。例えば、検査ブロックのＸ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｘ座標値がＸ＝Ｘ０−８からＸ＝Ｘ０−６４までの範囲の値を採る計８個のエッジ点の集合を、新たな検査ブロックに設定した後、Ｓ９３０に移行する。
【０１５８】
一方、差δＹが、閾値以上であると判断すると（Ｓ９５０でＮｏ）、ＣＰＵ７０は、現在の検査ブロックのＸ軸マイナス方向末端よりＸ軸マイナス方向に位置するエッジ点については、原稿エッジとしての確度が低いと判断して、Ｓ９７０に移行し、現在の検査ブロックのＸ軸マイナス方向末端よりＸ軸マイナス方向に位置するエッジ点の座標データを、全て処理対象データから削除して、処理対象データを更新する。
【０１５９】
例えば、現在の検査ブロックのＸ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｘ座標値がＸ０未満のエッジ点の座標データを全て処理対象データから削除して、処理対象データを更新する。その後、当該第二エッジ確定処理を終了する。第二エッジ確定処理では、このようにして、処理対象データを構成するエッジ点の座標データの内、原稿エッジとして確度の低い座標データを削除する。
【０１６０】
即ち、下エッジ検出処理のＳ８９０では、このようにして、原稿下エッジデータから下エッジとして確度の低いエッジ点の座標データを削除し、原稿下エッジデータを確定する。尚、Ｓ８９０で、上述のようにして、Ｘ座標値が大きいエッジ点程、エッジ点が原稿の下端を表すエッジ点（下エッジ）である確度が高いと取り扱い、Ｘ座標値が大きいエッジ点群からＹ軸方向に大きくずれた位置に存在するＸ座標値が小さいエッジ点群を、原稿下エッジデータから削除する理由は、下エッジ検出処理にて、Ｘｅ＝０から順に検査位置（Ｘｅ，Ｙｅ）をずらして原稿の下端を表すエッジ点を検索すると、原稿が左側に傾いている場合には、原稿の下端ではなく、原稿内部に描写された罫線等に対応するエッジ点を、原稿の下端を表すエッジ点として誤検出してしまう可能性があるためである。
【０１６１】
このような誤検出は、Ｘ座標値が小さいエッジ点群において発生している可能性が高く、Ｘ座標値が大きいエッジ点群において発生している可能性は、小さい。このような理由から、Ｓ８９０では、Ｘ座標値が大きいエッジ点程、エッジ点が原稿の下端を表すエッジ点（下エッジ）である確度が高いと取り扱って、確度の低いエッジ点を原稿下エッジデータから削除し、原稿下エッジデータを確定するようにしている。
【０１６２】
また、このようにしてＳ８９０での処理を終えると、ＣＰＵ７０は、Ｓ４６０での下エッジ検出処理を終了して、Ｓ４６５に移行し、Ｓ４６５では、下エッジ検出処理で確定された原稿下エッジデータが示す各点を直線近似して、原稿下エッジデータが示す点群の近似直線（以下、「下エッジ近似直線」という。）を算出する。その後、Ｓ４７０に移行する。但し、直前の下エッジ検出処理で原稿下エッジデータとして登録された座標データがない場合には、下エッジの検出に失敗したと判断して、下エッジ近似直線を算出することなく、Ｓ４７０に移行するものとする。
【０１６３】
また、Ｓ４７０に移行すると、ＣＰＵ７０は、右エッジ近似直線、左エッジ近似直線、及び下エッジ近似直線の相互関係から、右エッジ検出処理（Ｓ４２０）、左エッジ検出処理（Ｓ４５０）及び下エッジ検出処理（Ｓ４６０）にて正しく原稿エッジが検出されたか否かを判断する。即ち、右エッジ、左エッジ及び下エッジの全てが正常に検出されたか否かを判断する。
【０１６４】
具体的には、右エッジ近似直線と左エッジ近似直線とが平行な関係にあり、右エッジ近似直線と下エッジ近似直線とが直交関係にあり、左エッジ近似直線と下エッジ近似直線とが直交関係にある場合には、正しく原稿エッジが検出されたとして、Ｓ４７０でＹｅｓと判断する。
【０１６５】
一方、右エッジ、左エッジ及び下エッジのいずれか一つの検出にでも失敗している場合や、右エッジ、左エッジ及び下エッジの関係が正しい関係にない場合には、Ｓ４７０でＮｏと判断する。即ち、右エッジ近似直線と左エッジ近似直線とが平行な関係にあり、右エッジ近似直線と下エッジ近似直線とが直交関係にあり、且つ、左エッジ近似直線と下エッジ近似直線とが直交関係にある場合を除いては、原稿エッジが正しく検出されていないとして、Ｓ４７０でＮｏと判断する。但し、ここでの相互関係の判定は、誤差を考慮して実行すべきである。
【０１６６】
そして、原稿エッジが正しく検出されていないと判断すると（Ｓ４７０でＮｏ）、ＣＰＵ７０は、Ｓ４７１に移行して、Ｓ４３１での処理と同様のエラー処理を実行する。
一方、Ｓ４７０で原稿エッジが正しく検出されていると判断すると（Ｓ４７０でＹｅｓ）、ＣＰＵ７０は、Ｓ４８０に移行して、原稿の左下角位置を、左エッジ近似直線と下エッジ近似直線との交点であると推定して、その座標値を算出し、更に、原稿の右下角位置を、右エッジ近似直線と下エッジ近似直線との交点であると推定して、その座標値を算出する（Ｓ４８５）。尚、図１３は、Ｓ４８０及びＳ４８５での原稿左下角位置Ｋａ及び原稿右下角位置Ｋｂの推定方法を示した説明図である。図中、白丸がエッジ点を表し、黒丸が角位置Ｋａ，Ｋｂを表す。
【０１６７】
また、Ｓ４８５での処理を終えると、ＣＰＵ７０は、Ｓ４８０及びＳ４８５で推定した角位置の位置座標に基づき、原稿台１１ａに載置されている原稿が定型用紙であるとの仮定の下で、原稿台１１ａに載置された原稿のサイズ及び原稿台１１ａにおける原稿の載置領域を推定すると共に、右エッジ近似直線に基づき、原稿台１１ａに載置されている原稿の傾き角θを推定する（Ｓ４９０）。
【０１６８】
即ち、Ｓ４８０及びＳ４８５で推定した原稿の左下角位置から右下角位置までの長さを、原稿の短辺長さ（横幅）と推定し、この短辺長さの√２倍を、原稿の長辺長さ（縦幅）と推定して、原稿サイズを推定すると共に、上記推定した左下角位置及び右下角位置を起点に上記原稿サイズの原稿が原稿台１１ａに載置されているものとして、原稿の左上角及び右上角が位置する座標を導出し、これら４つの角を結んでできる四角形内の領域を、原稿の載置領域であると推定する。
【０１６９】
この他、Ｓ４９０では、Ｙ軸に対して右エッジ近似直線がなす角度を、原稿の傾き角θと推定する。そして、この処理を終えると、ＣＰＵ７０は、Ｓ２２０での原稿推定処理を終了して、Ｓ２３０に移行し、後続の処理を実行する。即ち、原稿推定処理での推定結果に基づき、変倍率及び傾き補正量を設定し（Ｓ２５１，Ｓ２５３）、更に読取領域を設定する（Ｓ２５５）。その後、本スキャンに移行する（Ｓ２７０）。
【０１７０】
そして、本スキャン（Ｓ２７０）では、上記設定した読取領域下において読取ユニット１５を搬送し、その領域に写る画像を読取ユニット１５に読み取らせる。そして、その読取結果を、上記設定した変倍率に合わせて拡大／縮小処理すると共に、上記設定した傾き補正量に合わせて回転処理して、印刷用の画像データを生成する。また、これを印刷対象データとして印刷処理することで、原稿のコピー画像であって、自動変倍され、更に傾き補正された画像を、印刷部３０を通じて、記録紙に印刷する。
【０１７１】
以上、本実施例のディジタル複合機１の構成について説明したが、本実施例の複合機１によれば、読取可能領域Ｒ０の一部領域をプレスキャンして、その読取結果に基づき、原稿エッジを検出し、原稿の状態（原稿サイズ・原稿の傾き・原稿の載置領域）を推定するようにしているので、従来のように、読取可能領域Ｒ０全体をプレスキャンする手法よりも高速にプレスキャン動作を終了することができ、効率的に原稿の状態を推定することができる。
【０１７２】
また、本実施例では、右エッジ及び左エッジを検出する際に、原稿台１１ａの中央側にある原稿エッジの候補点ほど、それが原稿エッジである確度が高いと取り扱って、原稿台１１ａの中央寄りにあるブロック（Ｙ座標値が最大のブロック）を基準に、原稿右エッジデータ及び原稿左エッジデータを確定し、これらのデータに基づいて右エッジ近似直線及び左エッジ近似直線を求めるようにした。
【０１７３】
従って、本実施例によれば、原稿が傾いていることが原因で原稿内部に描写された罫線等を原稿エッジ（右エッジ又は左エッジ）として誤検出してしまい、結果として、近似直線に誤差が大きく現れるのを抑えることができる。よって、本実施例によれば、一部領域のプレスキャン程度で、高精度に、原稿サイズや原稿の傾き角、原稿の載置領域を推定することができる。
【０１７４】
また、本実施例では、下エッジ近似直線を求める際に、原稿台１１ａの右側にある下エッジの候補点（エッジ点）程、それが真に下エッジである確度が高いと取り扱って、原稿台１１ａの右側寄りにあるブロックを基準に、原稿下エッジデータを確定し、これらのデータに基づいて下エッジ近似直線を求めるようにした。従って、本実施例によれば、原稿が左側に傾いて載置されている場合の下エッジの誤検出を極力抑えることができて、高精度に、原稿サイズや原稿の傾き角、原稿の載置領域を推定することができる。
【０１７５】
尚、原稿が右側に傾いている場合には、原稿台１１ａの左側にある下エッジの候補点（エッジ点）程、それが真に下エッジである確度が高いので、右エッジ近似直線の傾きに応じて、第二エッジ確定処理の内容を切り替えるようにしてもよい。即ち、原稿が右側に傾いていると推定される場合には、検査ブロックを、Ｘ座標値が最小のエッジ点を含むブロックから、順に、Ｘ軸プラス方向に切り替えて、原稿台１１ａの左端寄りにあるブロックを基準に、原稿下エッジデータを確定し、これらのデータに基づいて下エッジ近似直線を求めるようにしてもよい。
［第一変形例］
続いて、第一変形例について説明する。但し、第一変形例の複合機は、Ｓ５９０，Ｓ７９０で実行する第一エッジ確定処理及びＳ８９０で実行する第二エッジ確定処理の内容が一部変更された程度のものであり、他の構成は、上記実施例の複合機１と同一であるので、以下では、上記実施例と同一構成の部位についての説明を適宜省略する。
【０１７６】
図１４は、第一変形例において、ＣＰＵ７０が実行する第一エッジ確定処理を表すフローチャートである。
ＣＰＵ７０は、Ｓ５９０又はＳ７９０で図１４に示す第一エッジ確定処理を開始すると、まず、変数Ｌ及び変数ＬＭＡＸを値ゼロに初期化する（Ｓ１０１０）。その後、Ｓ１０１５に移行して、予め設定された処理対象データが、少なくとも８つ以上のエッジ点の座標データを含むものであるか否かを判断する。
【０１７７】
そして、処理対象データが８つ以上のエッジ点の座標データを含むものであると判断すると（Ｓ１０１５でＹｅｓ）、Ｓ１０２０に移行し、処理対象データが８つ以上のエッジ点の座標データを含むものではないと判断すると（Ｓ１０１５でＮｏ）、Ｓ１０２０〜Ｓ１０９０の処理を実行することなく、当該第一エッジ確定処理を終了する。
【０１７８】
一方、Ｓ１０２０に移行すると、ＣＰＵ７０は、Ｓ６２０での処理と同様に、処理対象データにおいて、Ｙ座標値が最大のエッジ点を要素に含むブロックを検査ブロックに設定する。その後、Ｓ１０３０に移行する。
【０１７９】
また、Ｓ１０３０に移行すると、ＣＰＵ７０は、変数Ｌを８加算した値に更新する（Ｌ←Ｌ＋８）。尚、変数Ｌは、連続するエッジ点の長さを計測するための変数であり、ここで、値８を加算するのは、検査ブロックを構成する８つのエッジ点が連続しているためである。
【０１８０】
このようにしてＳ１０３０での処理を終えると、ＣＰＵ７０は、Ｓ１０４０に移行し、Ｓ６３０での処理と同様に、検査ブロックよりＹ軸マイナス方向に隣接するエッジ点の座標データが、処理対象データに含まれているか否かを判断する。即ち、検査ブロックを構成するエッジ点の内、Ｙ座標値が最小のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）であるとすると、Ｙ軸マイナス方向に隣接するエッジ点の座標データとして、Ｙ座標値がＹ＝Ｙ０−８を採るエッジ点の当該座標データが、処理対象データに含まれているか否かを判断する。
【０１８１】
そして、Ｙ軸マイナス方向に隣接するエッジ点の座標データが処理対象データに含まれていると判断すると（Ｓ１０４０でＹｅｓ）、Ｓ１０５０に移行し、Ｙ軸マイナス方向に隣接するエッジ点の座標データが処理対象データに含まれていないと判断すると（Ｓ１０４０でＮｏ）、Ｓ１０７１に移行する。
【０１８２】
また、Ｓ１０５０に移行すると、ＣＰＵ７０は、Ｓ６４０での処理と同様、検査ブロックのＹ軸マイナス方向末端のエッジ点のＸ座標値と、上述した検査ブロックよりＹ軸マイナス方向に隣接するエッジ点のＸ座標値との差δＸを算出する。即ち、検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）であり、検査ブロックよりＹ軸マイナス方向に隣接するエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ１，Ｙ０−８）である場合には、δＸ＝｜Ｘ０−Ｘ１｜を算出する。
【０１８３】
また、この処理を終えると、ＣＰＵ７０は、差δＸが、予め設計段階で定められた閾値未満であるか否かを判断し（Ｓ１０５５）、閾値未満であると判断すると（Ｓ１０５５でＹｅｓ）、検査ブロックをＹ軸マイナス方向に隣接する次ブロックに更新し（Ｓ１０６０）、その後、Ｓ１０３０に移行する。例えば、検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｙ座標値がＹ＝Ｙ０−８からＹ＝Ｙ０−６４までの範囲の値を採る計８個のエッジ点の集合を、新たな検査ブロックに設定した後、Ｓ１０３０に移行する。
【０１８４】
一方、差δＸが、閾値以上であると判断すると（Ｓ１０５５でＮｏ）、ＣＰＵ７０は、Ｓ１０７１に移行する。そして、Ｓ１０７１では、変数Ｌの現在値が、変数ＬＭＡＸより大きいか否かを判断し、変数Ｌの現在値が、変数ＬＭＡＸより大きいと判断すると（Ｓ１０７１でＹｅｓ）、最後に変数Ｌ＝０に設定（初期化）した時点から現在までに検査ブロックに設定した各ブロックを構成するエッジ点を、最も長く連続するエッジ点の集合であると判断し、この集合に属するエッジ点の各座標データを、最終候補データとして、ＲＡＭ８０に記録する（Ｓ１０７３）。尚、ここでは、前回記録した最終候補データに上書きするようにして、ＲＡＭ８０に、最新の最終候補データを記録することで、最終候補データの前回値を破棄する。
【０１８５】
また、Ｓ１０７３での処理を終えると、ＣＰＵ７０は、Ｓ１０７５に移行し、変数ＬＭＡＸの値を、変数Ｌの現在値に更新する（ＬＭＡＸ←Ｌ）。その後、Ｓ１０８０に移行する。
【０１８６】
一方、Ｓ１０７１で、変数Ｌの現在値が変数ＬＭＡＸの値以下であると判断すると（Ｓ１０７１でＮｏ）、ＣＰＵ７０は、Ｓ１０７３，Ｓ１０７５の処理を実行することなく、Ｓ１０８０に移行する。
【０１８７】
また、Ｓ１０８０に移行すると、ＣＰＵ７０は、検査ブロックのＹ軸マイナス方向末端よりＹ軸マイナス方向に位置するエッジ点が、処理対象データに登録されているか否かを判断する。即ち、現在の検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合、Ｙ座標値がＹ０未満のエッジ点が処理対象データに登録されているか否かを判断する。
【０１８８】
そして、検査ブロックのＹ軸マイナス方向末端よりＹ軸マイナス方向に位置するエッジ点が、処理対象データに登録されていると判断すると（Ｓ１０８０でＹｅｓ）、Ｓ１０８１に移行し、変数Ｌの値をゼロに初期化する（Ｌ＝０）。その後、検査ブロックを、現在の検査ブロックよりもＹ軸マイナス方向に位置する次ブロックに更新し（Ｓ１０８５）、Ｓ１０３０に移行する。
【０１８９】
例えば、検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｙ座標値がＹ＝Ｙ０未満であるエッジ点の内、Ｙ座標値が最大のエッジ点を起点として、このエッジ点からＹ軸マイナス方向にある計８個のエッジ点の集合を、新たな検査ブロックに設定した後（Ｓ１０８５）、Ｓ１０３０に移行する。
【０１９０】
このようにして、ＣＰＵ７０は、Ｓ１０３０〜Ｓ１０８５の処理を繰返し実行し、検査ブロックのＹ軸マイナス方向末端よりＹ軸マイナス方向に位置するエッジ点が、処理対象データ内でなくなると（Ｓ１０８０でＮｏ）、その時点で最終候補データとしてＲＡＭ８０に登録されているエッジ点以外の各エッジ点の座標データを、処理対象データから削除して、処理対象データを更新する。その後、当該第一エッジ確定処理を終了する。
【０１９１】
第一エッジ確定処理では、このようにして、Ｙ軸方向に最も長く連続するエッジ点の集合を、原稿エッジとして確度の高いエッジ点であると取り扱い、この集合に属するエッジ点以外のエッジ点の座標データを処理対象データから削除することで、処理対象データから、原稿エッジとして確度の低い座標データを削除する。
【０１９２】
尚、図１５は、第一変形例での原稿右エッジデータの確定手法を示した説明図である。
図１５に示す例では、変数Ｌの値として計測された連続するエッジ点の集合の長さが夫々、Ｌ［０］，Ｌ［１］，Ｌ［２］であり、その大小関係がＬ［１］＞Ｌ［２］＞Ｌ［０］であるので、長さＬ［１］のエッジ点の集合が、右エッジとして確度の高いエッジ点の集合であると取り扱って、この集合に属するエッジ点の座標データのみを原稿右エッジデータに残して、原稿右エッジデータを確定する。そして、最終的に、このエッジ点の集合から、右エッジ近似直線を求める。
【０１９３】
このような手順により、第一変形例では、Ｓ５９０において原稿右エッジデータを確定し、Ｓ７９０において原稿左エッジデータを確定する。
一方、Ｓ８９０においては、原稿下エッジデータを処理対象データに設定して、図１６に示す第二エッジ確定処理を実行することにより、当該原稿下エッジデータを確定する。尚、図１６は、第一変形例において、ＣＰＵ７０が実行する第二エッジ確定処理を表すフローチャートである。
【０１９４】
図１６に示す第二エッジ確定処理を開始すると、ＣＰＵ７０は、まず、変数Ｌ及び変数ＬＭＡＸを値ゼロに初期化する（Ｓ１１１０）。その後、Ｓ１１１５に移行して、予め設定された処理対象データが、少なくとも８つ以上のエッジ点の座標データを含むものであるか否かを判断する。
【０１９５】
そして、処理対象データが８つ以上のエッジ点の座標データを含むものであると判断すると（Ｓ１１１５でＹｅｓ）、Ｓ１１２０に移行し、処理対象データが８つ以上のエッジ点の座標データを含むものではないと判断すると（Ｓ１１１５でＮｏ）、Ｓ１１２０〜Ｓ１１９０の処理を実行することなく、当該第二エッジ確定処理を終了する。
【０１９６】
一方、Ｓ１１２０に移行すると、ＣＰＵ７０は、Ｓ９２０での処理と同様に、処理対象データにおいて、Ｘ座標値が最大のエッジ点を要素に含むブロックを検査ブロックに設定する。その後、Ｓ１１３０に移行する。
【０１９７】
また、Ｓ１１３０に移行すると、ＣＰＵ７０は、変数Ｌを８加算した値に更新した後（Ｌ←Ｌ＋８）、Ｓ１１４０に移行し、Ｓ９３０での処理と同様に、検査ブロックよりＸ軸マイナス方向に隣接するエッジ点の座標データが、処理対象データに含まれているか否かを判断する。即ち、検査ブロックを構成するエッジ点の内、Ｘ座標値が最小のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）であるとすると、Ｘ軸マイナス方向に隣接するエッジ点の座標データとして、Ｘ座標値がＸ＝Ｘ０−８を採るエッジ点の当該座標データが、処理対象データに含まれているか否かを判断する。
【０１９８】
そして、Ｘ軸マイナス方向に隣接するエッジ点の座標データが処理対象データに含まれていると判断すると（Ｓ１１４０でＹｅｓ）、Ｓ１１５０に移行し、Ｘ軸マイナス方向に隣接するエッジ点の座標データが処理対象データに含まれていないと判断すると（Ｓ１１４０でＮｏ）、Ｓ１１７１に移行する。
【０１９９】
また、Ｓ１１５０に移行すると、ＣＰＵ７０は、Ｓ９４０での処理と同様、検査ブロックのＸ軸マイナス方向末端のエッジ点のＸ座標値と、上述した検査ブロックよりＸ軸マイナス方向に隣接するエッジ点のＸ座標値との差δＹを算出する。即ち、検査ブロックのＸ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）であり、検査ブロックよりＸ軸マイナス方向に隣接するエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０−８，Ｙ１）である場合には、δＹ＝｜Ｙ０−Ｙ１｜を算出する。
【０２００】
また、この処理を終えると、ＣＰＵ７０は、差δＹが、予め設計段階で定められた閾値未満であるか否かを判断し（Ｓ１１５５）、閾値未満であると判断すると（Ｓ１１５５でＹｅｓ）、検査ブロックをＸ軸マイナス方向に隣接する次ブロックに更新し（Ｓ１１６０）、その後、Ｓ１１３０に移行する。例えば、検査ブロックのＸ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｘ座標値がＸ＝Ｘ０−８からＸ＝Ｘ０−６４までの範囲の値を採る計８個のエッジ点の集合を、新たな検査ブロックに設定した後、Ｓ１１３０に移行する。
【０２０１】
一方、差δＹが、閾値以上であると判断すると（Ｓ１１５５でＮｏ）、ＣＰＵ７０は、Ｓ１１７１に移行する。そして、Ｓ１１７１では、変数Ｌの現在値が、変数ＬＭＡＸより大きいか否かを判断し、変数Ｌの現在値が、変数ＬＭＡＸより大きいと判断すると（Ｓ１１７１でＹｅｓ）、最後に変数Ｌ＝０に設定（初期化）した時点から現在までに検査ブロックに設定した各ブロックを構成するエッジ点を、最も長く連続するエッジ点の集合であると判断し、Ｓ１０７３での処理と同様に、この集合に属するエッジ点の各座標データを、最終候補データとして、ＲＡＭ８０に記録する（Ｓ１１７３）。
【０２０２】
また、Ｓ１１７３での処理を終えると、ＣＰＵ７０は、Ｓ１１７５に移行し、変数ＬＭＡＸの値を、変数Ｌの現在値に更新する（ＬＭＡＸ←Ｌ）。その後、Ｓ１１８０に移行する。
【０２０３】
これに対し、Ｓ１１７１で、変数Ｌの現在値が変数ＬＭＡＸの値以下であると判断すると（Ｓ１１７１でＮｏ）、ＣＰＵ７０は、Ｓ１１７３，Ｓ１１７５の処理を実行することなく、Ｓ１１８０に移行する。
【０２０４】
また、Ｓ１１８０に移行すると、ＣＰＵ７０は、検査ブロックのＸ軸マイナス方向末端よりＸ軸マイナス方向に位置するエッジ点が、処理対象データに登録されているか否かを判断する。即ち、現在の検査ブロックのＸ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合、Ｘ座標値がＸ０未満のエッジ点が処理対象データに登録されているか否かを判断する。
【０２０５】
そして、検査ブロックのＸ軸マイナス方向末端よりＸ軸マイナス方向に位置するエッジ点が、処理対象データに登録されていると判断すると（Ｓ１１８０でＹｅｓ）、Ｓ１１８１に移行し、変数Ｌの値をゼロに初期化する（Ｌ＝０）。その後、検査ブロックを、現在の検査ブロックよりもＸ軸マイナス方向に位置する次ブロックに更新し（Ｓ１１８５）、Ｓ１１３０に移行する。
【０２０６】
例えば、検査ブロックのＸ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｘ座標値がＸ＝Ｘ０未満であるエッジ点の内、Ｘ座標値が最大のエッジ点を起点として、このエッジ点からＸ軸マイナス方向にある計８個のエッジ点の集合を、新たな検査ブロックに設定した後（Ｓ１１８５）、Ｓ１１３０に移行する。
【０２０７】
このようにして、ＣＰＵ７０は、Ｓ１１３０〜Ｓ１１８５の処理を繰返し実行し、検査ブロックのＸ軸マイナス方向末端よりＸ軸マイナス方向に位置するエッジ点が、処理対象データ内でなくなると（Ｓ１１８０でＮｏ）、その時点で最終候補データとしてＲＡＭ８０に登録されているエッジ点以外の各エッジ点の座標データを、処理対象データから削除して、処理対象データを更新する。その後、当該第二エッジ確定処理を終了する。
【０２０８】
第二エッジ確定処理では、このようにして、Ｘ軸方向に最も長く連続するエッジ点の集合を、原稿エッジとして確度の高いエッジ点であると取り扱い、この集合に属するエッジ点以外のエッジ点の座標データを処理対象データから削除することで、処理対象データから、原稿エッジとして確度の低い座標データを削除する。
【０２０９】
このようにして、第一変形例では、Ｘ軸方向に最も長く連続するエッジ点の集合に属するエッジ点の座標データのみを原稿下エッジデータに残して、原稿下エッジデータを確定する。そして、最終的に、このエッジ点の集合から、下エッジ近似直線を求める。
【０２１０】
以上、第一変形例について説明したが、第一変形例では、最も長く連続するエッジ点の集合を最も原稿エッジとして確度の高いエッジ点の集合として取り扱って、右エッジ近似直線、左エッジ近似直線、及び、下エッジ近似直線を求めるようにした。
【０２１１】
従って、第一変形例によれば、原稿内部の罫線や埃等に惑わされて、原稿エッジの近似直線として誤った近似直線を求めてしまうのを、極力防止することができて、一部領域のプレスキャン程度で、高精度に、原稿サイズや原稿の傾き角、原稿の載置領域を推定することができる。
【０２１２】
［第二変形例］
続いて、第二変形例について説明する。但し、第二変形例の複合機は、Ｓ５９０，Ｓ７９０で実行する第一エッジ確定処理及びＳ８９０で実行する第二エッジ確定処理の内容が一部変更された程度のものであり、他の構成は、上述した実施例の複合機１と同一であるので、以下では、上記実施例と同一構成の部位についての説明を適宜省略する。
【０２１３】
図１７は、第二変形例において、ＣＰＵ７０が実行する第一エッジ確定処理を表すフローチャートである。
ＣＰＵ７０は、Ｓ５９０又はＳ７９０で、図１７に示す第一エッジ確定処理を開始すると、まず、Ｓ１２１０にて、予め設定された処理対象データが、少なくとも８つ以上のエッジ点の座標データを含むものであるか否かを判断する。
【０２１４】
そして、処理対象データが８つ以上のエッジ点の座標データを含むものであると判断すると（Ｓ１２１０でＹｅｓ）、Ｓ１２２０に移行し、処理対象データが８つ以上のエッジ点の座標データを含むものではないと判断すると（Ｓ１２１０でＮｏ）、Ｓ１２２０〜Ｓ１２９０の処理を実行することなく、当該第一エッジ確定処理を終了する。
【０２１５】
一方、Ｓ１２２０に移行すると、ＣＰＵ７０は、Ｓ６２０での処理と同様に、処理対象データにおいて、Ｙ座標値が最大のエッジ点を要素に含むブロックを検査ブロックに設定する。その後、Ｓ１２３０に移行する。
【０２１６】
また、Ｓ１２３０に移行すると、ＣＰＵ７０は、検査ブロックに属する計８個のエッジ点の各座標データに基づき、これらエッジ点の近似直線を算出する。そして、算出した近似直線の傾き及び切片の値を、当該近似直線の算出に用いたエッジ点の座標データと関連付けて、ＲＡＭ８０に記憶する（Ｓ１２４０）。その後、Ｓ１２５０に移行する。
【０２１７】
また、Ｓ１２５０に移行すると、ＣＰＵ７０は、検査ブロックのＹ軸マイナス方向末端よりＹ軸マイナス方向に位置するエッジ点が、処理対象データに登録されているか否かを判断する。即ち、現在の検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合、Ｙ座標値がＹ０未満のエッジ点が処理対象データに登録されているか否かを判断する。
【０２１８】
そして、検査ブロックのＹ軸マイナス方向末端よりＹ軸マイナス方向に位置するエッジ点が、処理対象データに登録されていると判断すると（Ｓ１２５０でＹｅｓ）、検査ブロックを、現在の検査ブロックよりもＹ軸マイナス方向に位置する次ブロックに更新し（Ｓ１２６０）、その後、Ｓ１２３０に移行する。
【０２１９】
例えば、検査ブロックのＹ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｙ座標値がＹ＝Ｙ０未満であるエッジ点の内、Ｙ座標値が最大のエッジ点を起点として、このエッジ点からＹ軸マイナス方向にある計８個のエッジ点の集合を、新たな検査ブロックに設定した後（Ｓ１２６０）、Ｓ１２３０に移行する。
【０２２０】
このようにして、ＣＰＵ７０は、Ｓ１２３０〜Ｓ１２６０の処理を繰返し実行し、処理対象データに登録されたエッジ点の近似直線を、ブロック毎に求めて、各ブロックの近似直線の傾き及び切片の値を、その近似直線の算出に用いたエッジ点の座標データと関連付けて、ＲＡＭ８０に蓄積する。
【０２２１】
そして、検査ブロックのＹ軸マイナス方向末端よりＹ軸マイナス方向に位置するエッジ点が、処理対象データ内でなくなると（Ｓ１２５０でＮｏ）、それまでにＲＡＭ８０に蓄積した各ブロックの近似直線の傾きから、傾きについてのヒストグラムデータを生成する（Ｓ１２７０）。尚、図１８は、Ｓ１２７０で生成する傾きのヒストグラムデータを、グラフ化して示した説明図である。
【０２２２】
本変形例では、近似直線が採りうる傾きの範囲を複数のクラスに区分することで、傾きに対して複数のクラスを設定している。Ｓ１２７０では、各ブロックの傾きを、その値に応じたクラスに分類し、各クラスの度数を算出することで、傾きのヒストグラムデータを生成する。
【０２２３】
そして、傾きのヒストグラムデータから、傾きについて度数が最大のクラスを特定し、処理対象データの中から、度数が最大のクラスに属する傾きの近似直線を算出するに至ったブロックの全てを選択する（Ｓ１２７５）。
【０２２４】
また、Ｓ１２７５での処理を終えると、ＣＰＵ７０は、ＲＡＭ８０に蓄積された各ブロックの近似直線の切片の情報に基づき、Ｓ１２７５で選択した各ブロックの近似直線の切片についてのヒストグラムデータを生成する（Ｓ１２８０）。
【０２２５】
即ち、ＲＡＭ８０に蓄積された各ブロックの近似直線の切片の情報の中から、Ｓ１２７５で選択したブロックについての切片の情報を選択的に用いて、切片についてのヒストグラムデータを生成する。
【０２２６】
尚、本変形例では、近似直線が採りうる切片の範囲を複数のクラスに区分することで、切片に対して複数のクラスを設定している。Ｓ１２８０では、Ｓ１２７５で選択した各ブロックの切片を、その値に応じたクラスに分類して、各クラスの度数を算出することで、切片のヒストグラムデータを生成する。
【０２２７】
そして、切片のヒストグラムデータから、切片について度数が最大のクラスを特定し、Ｓ１２７５で選択したブロック群の中から、当該特定したクラスに属する切片の近似直線を算出するに至ったブロックの全てを選択する（Ｓ１２８５）。
【０２２８】
そして、Ｓ１２８５での処理を終えると、ＣＰＵ７０は、Ｓ１２９０に移行し、Ｓ１２８５で選択したブロックに属するエッジ点以外のエッジ点の座標データを、処理対象データから削除して、処理対象データ内に、Ｓ１２８５で選択したブロックに属するエッジ点の座標データのみが残るように、処理対象データを更新する。その後、当該第一エッジ確定処理を終了する。
【０２２９】
このようにして、第二変形例の第一エッジ確定処理では、度数の最も高い近似直線が算出されたブロックの集合を、原稿エッジである確度の高いエッジ点の集合であると取り扱って、これらのエッジ点の座標データのみが残るように、処理対象データを更新する。
【０２３０】
このような手順により、第二変形例では、Ｓ５９０において原稿右エッジデータを確定し、Ｓ７９０において原稿左エッジデータを確定する。
一方、Ｓ８９０においては、原稿下エッジデータを処理対象データに設定して、図１９に示す第二エッジ確定処理を実行することにより、当該原稿下エッジデータを確定する。尚、図１９は、第二変形例において、ＣＰＵ７０が実行する第二エッジ確定処理を表すフローチャートである。
【０２３１】
図１９に示す第二エッジ確定処理を開始すると、ＣＰＵ７０は、まず、Ｓ１３１０にて、予め設定された処理対象データが、少なくとも８つ以上のエッジ点の座標データを含むものであるか否かを判断する。
【０２３２】
そして、処理対象データが８つ以上のエッジ点の座標データを含むものであると判断すると（Ｓ１３１０でＹｅｓ）、Ｓ１３２０に移行し、処理対象データが８つ以上のエッジ点の座標データを含むものではないと判断すると（Ｓ１３１０でＮｏ）、Ｓ１３２０〜Ｓ１３９０の処理を実行することなく、当該第二エッジ確定処理を終了する。
【０２３３】
一方、Ｓ１３２０に移行すると、ＣＰＵ７０は、Ｓ９２０での処理と同様に、処理対象データにおいて、Ｘ座標値が最大のエッジ点を要素に含むブロックを検査ブロックに設定する。その後、Ｓ１３３０に移行する。
【０２３４】
また、Ｓ１３３０に移行すると、ＣＰＵ７０は、検査ブロックに属する計８個のエッジ点の各座標データに基づいて、これらエッジ点の近似直線を算出する。そして、算出した近似直線の傾き及び切片の値を、当該近似直線の算出に用いたエッジ点の座標データと関連付けて、ＲＡＭ８０に記憶する（Ｓ１３４０）。その後、Ｓ１３５０に移行する。
【０２３５】
また、Ｓ１３５０に移行すると、ＣＰＵ７０は、検査ブロックのＸ軸マイナス方向末端よりＸ軸マイナス方向に位置するエッジ点が、処理対象データに登録されているか否かを判断する。即ち、現在の検査ブロックのＸ軸マイナス方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合、Ｘ座標値がＸ０未満のエッジ点が処理対象データに登録されているか否かを判断する。
【０２３６】
そして、検査ブロックのＸ軸マイナス方向末端よりＸ軸マイナス方向に位置するエッジ点が、処理対象データに登録されていると判断すると（Ｓ１３５０でＹｅｓ）、検査ブロックを、現在の検査ブロックよりもＸ軸マイナス方向に位置する次ブロックに更新し（Ｓ１３６０）、その後、Ｓ１３３０に移行する。
【０２３７】
例えば、検査ブロックの方向末端のエッジ点の画素位置が（Ｘ，Ｙ）＝（Ｘ０，Ｙ０）である場合には、Ｘ座標値がＸ＝Ｘ０未満であるエッジ点の内、Ｘ座標値が最大のエッジ点を起点として、このエッジ点からＸ軸マイナス方向にある計８個のエッジ点の集合を、新たな検査ブロックに設定した後（Ｓ１３６０）、Ｓ１３３０に移行する。
【０２３８】
このようにして、ＣＰＵ７０は、Ｓ１３３０〜Ｓ１３６０の処理を繰返し実行し、処理対象データに登録されたエッジ点の近似直線を、ブロック毎に求めて、各ブロックの近似直線の傾き及び切片の値を、その近似直線の算出に用いたエッジ点の座標データと関連付けて、ＲＡＭ８０に蓄積する。
【０２３９】
そして、検査ブロックのＸ軸マイナス方向末端よりＸ軸マイナス方向に位置するエッジ点が、処理対象データ内でなくなると（Ｓ１３５０でＮｏ）、それまでにＲＡＭ８０に蓄積した各ブロックの近似直線の傾きから、Ｓ１２７０での処理と同様に、傾きについてのヒストグラムデータを生成する（Ｓ１３７０）。この後、傾きのヒストグラムデータから、傾きについて度数が最大のクラスを特定し、処理対象データの中から、度数が最大のクラスに属する傾きの近似直線を算出するに至ったブロックの全てを選択する（Ｓ１３７５）。
【０２４０】
また、Ｓ１３７５での処理を終えると、ＣＰＵ７０は、ＲＡＭ８０に蓄積された近似直線の切片の情報であって、Ｓ１３７５で選択した各ブロックの近似直線の切片の情報に基づき、Ｓ１２８０での処理と同様に、これら切片についてのヒストグラムデータを生成する（Ｓ１３８０）。即ち、Ｓ１３８０では、Ｓ１３７５で選択した各ブロックの切片を、その値に応じたクラスに分類して、各クラスの度数を算出することで、切片のヒストグラムデータを生成する。
【０２４１】
そして、切片のヒストグラムデータから、切片について度数が最大のクラスを特定し、当該特定したクラスに属する切片の近似直線を算出するに至ったブロックの全てを、Ｓ１３７５で選択したブロック群の中から、選択する（Ｓ１３８５）。
【０２４２】
そして、Ｓ１３８５での処理を終えると、ＣＰＵ７０は、Ｓ１３９０に移行し、Ｓ１３８５で選択したブロックに属するエッジ点以外のエッジ点の座標データを、処理対象データから削除して、処理対象データ内に、Ｓ１３８５で選択したブロックに属するエッジ点の座標データのみが残るように、処理対象データを更新する。その後、当該第二エッジ確定処理を終了する。
【０２４３】
このようにして、第二変形例の第二エッジ確定処理では、度数の最も高い近似直線が算出されたブロックの集合を、原稿エッジ（下エッジ）である確度の高いエッジ点の集合であると取り扱って、これらのエッジ点の座標データのみが残るように、処理対象データを更新する。このような手順により、第二変形例では、Ｓ８９０において原稿下エッジデータを確定する。
【０２４４】
以上、第二変形例について説明したが、第二変形例では、度数の最も高い近似直線が算出されたブロック群の各エッジ点を、原稿エッジとしての確度の高いエッジ点として取り扱い、右エッジ近似直線、左エッジ近似直線、及び、下エッジ近似直線を求める。
【０２４５】
従って、第二変形例によれば、原稿内部の罫線や埃等に惑わされて、原稿エッジの近似直線として誤った近似直線を求めてしまうのを、極力防止することができ、一部領域のプレスキャン程度で、高精度に、原稿サイズや原稿の傾き角、原稿の載置領域を推定することができる。
［特許請求の範囲との対応関係］
以上、本発明の実施例について説明したが、本発明の画像読取装置が有する画像解析機能は、ＣＰＵ７０によりソフトウェア的に実現されている。また、読取制御手段は、読取制御部２０により実現されている。
【０２４６】
また、変換手段は、ＣＰＵ７０が実行するＳ２１５の処理により実現され、選択手段は、ＣＰＵ７０が実行するＳ５１０〜Ｓ５８０，Ｓ７１０〜Ｓ７８０，Ｓ８１０〜Ｓ８８０の処理により実現されている。特に、「連続性を検査する対象のエッジ点を検出する」動作は、Ｓ５２５，Ｓ７２５，Ｓ８２５等の処理により実現されている。
【０２４７】
この他、検出手段は、ＣＰＵ７０が実行するＳ５９０，Ｓ７９０，Ｓ８９０の処理により実現されている。特に、検査対象切替設定手段は、検査ブロックを切り替えて設定する動作にて実現されている。尚、上述した実施例では、一部領域のプレスキャンにより得られた画像データを検査対象データに設定して原稿エッジを検出しており、プレスキャン領域は、原稿台の中央より端側に位置しているので、本実施例では、第一エッジ確定処理にて、Ｙ座標値が最大のエッジ点を含むブロックを検査ブロックに設定することにより、最も原稿台の中央寄りのグループを検査対象のブロックに設定している。
【０２４８】
また、第一判定手段は、Ｓ６３０，Ｓ９３０，Ｓ１０４０，Ｓ１１４０等の処理により実現され、乖離度算出手段は、Ｓ６４０，Ｓ９４０，Ｓ１０５０，Ｓ１１５０等の処理により実現され、第二判定手段は、Ｓ６５０，Ｓ９５０，Ｓ１０５５，Ｓ１１５５等の処理により実現されている。
［その他］
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、コンタクトイメージセンサを読取ユニットとして備えるディジタル複合機１に、本発明を適用した例を説明したが、本発明は、コンタクトイメージセンサを読取ユニットとして備える画像読取装置に限定されるものではないことは言うまでもない。
【図面の簡単な説明】
【０２４９】
【図１】ディジタル複合機１の構成を表すブロック図である。
【図２】読取ガラス１１の読取可能領域Ｒ０を示した説明図である。
【図３】ＣＰＵ７０が実行する複写制御処理を表すフローチャートである。
【図４】ＣＰＵ７０が実行する自動変倍複写処理を表すフローチャートである。
【図５】ＣＰＵ７０が実行する原稿推定処理を表すフローチャートである。
【図６】ＣＰＵ７０が実行する右エッジ検出処理を表すフローチャートである。
【図７】エッジ画像データの構成を示した説明図である。
【図８】ＣＰＵ７０が実行する第一エッジ確定処理を表すフローチャートである。
【図９】原稿右エッジデータの確定手法を説明した説明図である。
【図１０】ＣＰＵ７０が実行する左エッジ検出処理を表すフローチャートである。
【図１１】ＣＰＵ７０が実行する下エッジ検出処理を表すフローチャートである。
【図１２】ＣＰＵ７０が実行する第二エッジ確定処理を表すフローチャートである。
【図１３】原稿左下角位置及び原稿右下角位置の推定方法を示した説明図である。
【図１４】第一変形例の第一エッジ確定処理を表すフローチャートである。
【図１５】第一変形例における原稿右エッジデータの確定手法を表す説明図である。
【図１６】第一変形例の第二エッジ確定処理を表すフローチャートである。
【図１７】第二変形例の第一エッジ確定処理を表すフローチャートである。
【図１８】ヒストグラムデータを表す説明図である。
【図１９】第二変形例の第二エッジ確定処理を表すフローチャートである。
【符号の説明】
【０２５０】
１…ディジタル複合機、１０…画像読取部、１１…読取ガラス、１１ａ…原稿台、１３…筐体、１３ａ…フレーム、１５…読取ユニット、１６…搬送機構、１７…モータ、２０…読取制御部、３０…印刷部、４０…印刷制御部、５０…表示操作部、６０…通信部、７０…ＣＰＵ、８０…ＲＡＭ、９０…フラッシュメモリ、ＭＫ…マーク、Ｐ…原稿、Ｒ０…読取可能領域
【図１】
0004941316.tif 000002
【図２】
0004941316.tif 000003
【図３】
0004941316.tif 000004
【図４】
0004941316.tif 000005
【図５】
0004941316.tif 000006
【図６】
0004941316.tif 000007
【図７】
0004941316.tif 000008
【図８】
0004941316.tif 000009
【図９】
0004941316.tif 000010
【図１０】
0004941316.tif 000011
【図１１】
0004941316.tif 000012
【図１２】
0004941316.tif 000013
【図１３】
0004941316.tif 000014
【図１４】
0004941316.tif 000015
【図１５】
0004941316.tif 000016
【図１６】
0004941316.tif 000017
【図１７】
0004941316.tif 000018
【図１８】
0004941316.tif 000019
【図１９】
0004941316.tif 000020