以下に本発明の実施例について、図面と共に説明する。
図1(a)は、本実施例のディジタル複合機1の構成を表すブロック図である。図1(a)に示すように、本実施例のディジタル複合機1は、画像読取部10、読取制御部20、印刷部30、印刷制御部40、表示操作部50、通信部60、CPU70、RAM80及びフラッシュメモリ90を備え、フラッシュメモリ90に記録されたプログラムに基づきCPU70にて各種処理を実行し、装置全体を統括制御する構成にされている。
具体的に、画像読取部10は、図1(b)(c)に示す構成にされている。図1(b)(c)は、画像読取部10の構成を示した説明図である。画像読取部10は、読取対象の原稿Pが載置される透明な板状の読取ガラス11が筐体13に支持された構成にされており、筐体13内の読取ガラス11下に、読取ガラス11に写る画像を主走査方向において光学的に読み取る読取ユニット15と、読取ユニット15を副走査方向に搬送する搬送機構16と、搬送機構16を駆動するモータ17とを備える。
この画像読取部10は、読取制御部20から入力される制御信号に従って、モータ17の回転力により搬送機構16を駆動し、これにより読取ユニット15を読取ガラス11下で副走査方向(図1(b)(c)に示す点線矢印方向)に搬送すると共に、搬送時において、読取ユニット15に読取動作を実行させる。
尚、読取ユニット15は、読取制御部20に制御され、副走査方向への移動と共に、読取ガラス11に写る画像を、ライン毎に読み取り、その読取画像を表すライン画像信号を出力するコンタクトイメージセンサ(CIS)である。この読取ユニット15から出力されるライン画像信号は、図示しないA/D変換器にてディジタルデータ(ライン画像データ)に変換され、読取制御部20に入力される。
また、画像読取部10には、周知のスキャナと同様、読取ガラス11を被覆可能な蓋が開閉自在に設けられており(図示せず)、読取ユニット15による読取動作の実行時には、ユーザによる手動操作により、読取ガラス11に載置された原稿の上にかぶせられるようにして蓋が閉められる。尚、読取ガラス11と対向する蓋の内側は、原稿の読取画像に蓋の画像が写らないよう白色部材で構成されている。
一方、読取制御部20は、CPU70からの指令に従って読取制御処理を実行し、当該読取制御処理にて、読取ユニット15の副走査方向への移動を制御すると共に、読取ユニット15の読取動作を制御する。
この制御により、読取制御部20は、読取ユニット15を読取ガラス11下で副走査方向に搬送しつつ、CPU70から指定された読取ガラス11の読取領域に写る画像を、読取ユニット15に読み取らせ、読取ガラスの読取領域に写る画像を表す画像データを、RAM80に記録する。このような動作により、RAM80には、読取ガラス11の読取領域に載置された原稿Pの読取画像を表す画像データが記録される。
尚、読取制御部20は、画像読取部10から入力される各ライン画像データを、一旦内蔵のバッファに蓄積し、各ライン画像データに対してシェーディング補正等の画像処理を実行した後、各ライン画像データを、RAM80に記録する。
この他、印刷部30は、印刷制御部40から入力される制御信号に従い、トレイ(図示せず)に載置された記録紙を、記録位置に搬送し、インクジェット方式やレーザプリンタ方式等の周知の記録方式で、記録紙に、制御信号に対応した画像を形成するものである。
また、印刷制御部40は、印刷部30を制御して記録紙に画像を形成するものであり、CPU70からの指令に従って、CPU70から指定された印刷対象データに基づく画像を、印刷部30を通じて、記録紙に印刷する。
また、通信部60は、外部機器と通信するためのインタフェース群からなり、USBインタフェース、LANインタフェース、FAXモデム等から構成されている。即ち、複合機1は、通信部60が備えるFAXモデムを通じて外部のFAX装置とFAX通信可能な構成にされ、USBインタフェース又はLANインタフェースを通じて外部のパーソナルコンピュータと通信可能な構成にされている。
この他、表示操作部50は、情報表示用の液晶ディスプレイ(図示せず)と、各種操作キーとを備え、CPU70に制御されて、液晶ディスプレイに、ユーザ向けの情報を表示すると共に、操作キーを通じて入力されたユーザからの指令を、CPU70に入力する。
また、CPU70は、プログラムの実行により、操作キーを通じて入力される指令や通信部60を通じて外部のパーソナルコンピュータ等から入力される指令に従い、コピー機能、FAX機能、スキャナ機能、及び、プリンタ機能等を実現する。
例えば、CPU70は、表示操作部50に設けられた操作キーを通じてユーザからコピー指令が入力されると、複写制御処理(図3参照)を実行して装置内各部を制御し、読取ガラス11上に載置された原稿Pの読取画像を、記録紙に印刷する。詳細には、読取ユニット15による読取結果に基づいて読取ガラス11上に載置された原稿Pのサイズを推定し、推定した原稿サイズと記録紙サイズとから変倍率を設定して、原稿Pの読取画像を、記録紙サイズに適合する大きさに拡大又は縮小し、これを、印刷部30を通じて記録紙に印刷する(自動変倍複写処理)。
以下、この複写制御処理の内容について具体的に説明するが、それに先駆けては、図2を用いて本実施例の画像読取部10の特徴について説明する。
図2は、読取ガラス11の読取可能領域R0を示した説明図である。当該複合機1においては、一面が開口された長方体状の筐体13の当該開口部において、長方形状のガラス板である読取ガラス11が当該開口部を閉塞するように設けられており、読取ガラス11の周囲が筐体13により支持された構成にされている。
この読取ガラス11は、筐体13の上面よりも若干筐体13の下側に設けられており、筐体13から露出する読取ガラス11の領域11a(以下、「原稿台」と表現する。)と筐体13との境界BDには、原稿Pを突き当て可能に段差が形成されている(以下、筐体13の読取ガラス11より上方に位置する部位(上記段差を形成する部位)13aを「フレーム」と表現する。)。
また、画像読取部10においては、読取ユニット15のライン幅と、原稿台11aの大きさとの関係から、四角形状の原稿台11aの全領域よりも若干狭い四角形状の領域R0が、読取ユニット15により原稿を読取可能な読取可能領域R0に定められている。具体的に、読取可能領域R0は、図2において点線で示すように、フレーム13aと読取ガラス11との境界BDから微小量(本実施例では3mm)離れた位置に外周を有した領域となっている。
また、この画像読取部10においては、フレーム13aの左下部分に、原稿Pの角を突き当てるように指示するマークMKが記されている。尚、本実施例では、マークMKが付された原稿台11aの角を、「左下角」と定義して、この左下角より、主走査方向に離れた地点に位置する原稿台11aの角を「右下角」と定義し、左下角より、副走査方向に離れた地点に位置する原稿台11aの角を「左上角」と定義する。
即ち、複合機1においては、原稿台11aの左下角(換言すれば、フレーム13aの内側左下角)が、原稿Pの角を合わせるべき位置として定められており、複合機1は、ユーザが概ね、このマークMKに合わせて原稿Pを載置しているとの仮定の下で、原稿サイズの推定等を行い、原稿のコピー動作を実現する。
この他、本実施例の複合機1においては、このマークMKが付されたフレーム13aの内側左下角に対応する読取可能領域R0の左下角を原点、主走査方向をX軸、副走査方向をY軸としたXY座標系(図2(b)参照)が導入されており、CPU70は、このXY座標系を用いて図3に示す複写制御処理を実行する。
続いて、CPU70が実行する複写制御処理について説明する。図3は、操作キーを通じてコピー指令が入力されると、CPU70が実行する複写制御処理を表すフローチャートである。
複写制御処理を開始すると、CPU70は、操作キーを通じて入力されたコピー指令が「自動変倍/傾き補正」コピー指令であるか否かを判断し(S110)、「自動変倍/傾き補正」コピー指令であると判断すると(S110でYes)、S120にて、図4に示す自動変倍複写処理を実行する。その後、当該複写制御処理を終了する。
一方、操作キーを通じて入力されたコピー指令が、「自動変倍/傾き補正」コピー指令以外のコピー指令であると判断すると(例えば、自動変倍や傾き補正の指示のないノーマルなコピー指令であると判断すると)、CPU70は、S130にて、入力されたコピー指令に対応した処理を実行した後、当該複写制御処理を終了する。
続いて、CPU70がS120にて実行する自動変倍複写処理について説明する。図4は、CPU70が実行する自動変倍複写処理を表すフローチャートである。
CPU70は、S120にて自動変倍複写処理を開始すると、まず、原稿読取開始位置を、読取可能領域R0の下端(Y=0)に設定し、原稿読取終了位置を、設計段階で予め定められた読取可能領域R0の下端から所定距離離れた位置(Y=YPRE)に設定することにより、上記原稿読取開始位置から原稿読取終了位置までの領域に該当する読取可能領域R0の一部を、読取領域に設定し、読取制御部20を通じて、画像読取部10に、当該読取領域に対するプレスキャン動作を実行させる(S210:先端部プレスキャン処理)。
即ち、S210では、読取可能領域R0全体に対してプレスキャン動作を画像読取部10に実行させるのではなく、読取可能領域R0の下端から読取可能領域R0内側へ所定距離離れた地点まで(本実施例では、読取可能領域R0の下端から30mm離れた地点まで)に対し、プレスキャン動作を画像読取部10に実行させる。これにより、CPU70は、プレスキャン結果として、読取可能領域R0の一部領域の読取結果を表す画像データを画像読取部10から取得する。
尚、画像読取部10は、プレスキャン動作として、設定された読取領域の端から端まで、プレスキャン用の解像度に対応する速度で、読取ユニット15を副走査方向に搬送し、その読取領域の画像を読取ユニット15に読み取らせ、プレスキャン結果として、低解像度の画像データ(以下、「プレスキャン画像データ」という。)を、読取制御部20を通じて、RAM80に記録する動作を実行する。
このようにしてS210での処理を終えると、CPU70は、RAM80に記録されたプレスキャン画像データに対してエッジ検出処理を実行し、この画像データに対応するエッジ画像データを生成する(S215)。即ち、RAM80に記録されたプレスキャン画像データを、エッジ検出用の画像フィルタ(周知の微分フィルタ)に通して、この画像データに対応するエッジ画像を表すエッジ画像データを生成する。
また、S215での処理を終えると、CPU70は、上記生成したエッジ画像データを、検査対象データに設定して、図5に示す原稿推定処理を実行する(S220)。詳細は後述するが、この原稿推定処理では、検査対象データ(S215で得られたエッジ画像データ)を解析して、原稿台11aに載置された原稿のサイズ(縦幅及び横幅)、及び、原稿の傾き角θ、及び、原稿台11aにおける原稿の載置領域を推定する。
具体的には、原稿台11aに載置された原稿が四角形状であるとの仮定の下で、原稿台11aに載置された原稿のエッジを検査対象データにおいて検出すると共に、その検出結果から原稿の左下角位置及び右下角位置を推定して検査対象データにおける原稿の画像を表す領域(以下、「原稿領域」と表現する。)を推定し、原稿台11aの左端縁(左辺)からの原稿領域の乖離度及び原稿台11aの下端縁(下辺)からの原稿領域の乖離度に基づいて、推定した原稿領域の確度を評価する。
尚、本実施例では、X軸が原稿台11aの下端縁から原稿台11a内側に所定量(3mm)離れた地点に設定され、Y軸が原稿台11aの左端縁から原稿台11a内側に同量(3mm)離れた地点に設定されているので、原稿台11aの左端縁からの原稿領域の乖離度として、Y軸からの原稿領域の距離D1を求めると共に、原稿台11aの下端縁からの原稿領域の乖離度として、X軸からの原稿領域の距離D2を求め、この距離の情報から、推定した原稿領域の確度を評価する(図12参照)。
そして、原稿領域の確度が高い場合には、上記推定した角位置の情報から、原稿台11aに載置された原稿が定型用紙であるとの仮定の下で、当該原稿台11aに載置された原稿のサイズ、及び、原稿の傾き角θ、及び、原稿台11aにおける原稿の載置領域を推定する。但し、ここでは、X軸に対して原稿の下辺がなす角度を、原稿の傾き角θ(図8参照)とする。
一方、原稿領域の確度が低い場合や、原稿エッジを正常に検出できなかった場合には、原稿台11aに載置された原稿が予め定められた固定サイズの原稿であると推定する。S220では、このような内容の処理を実行する。
そして、S220での処理を終えると、CPU70は、印刷制御部40を通じて、印刷部30に給紙動作を実行させると共に(S230)、給紙動作の対象となった記録紙のサイズを検出する(S235)。尚、記録紙のサイズは、例えば、記録紙の搬送路に設けられたセンサを用いて周知の手法で検出することができる。
また、この処理を終えると、CPU70は、直前の原稿推定処理(S220)にて、原稿エッジの検出に失敗したことを原因として、S431(図5参照)又はS471で「失敗」判定がなされたか否かを判断する(S240)。そして、「失敗」判定がなされたと判断すると(S240でYes)、S261に移行する。一方、直前の原稿推定処理(S220)にて「失敗」判定がなされていないと判断すると(S240でNo)、S245に移行する。
また、S245では、直前の原稿推定処理にて「確度高」判定がなされたか否かを判断する(S245)。原稿推定処理では、上述したように、推定した原稿領域の確度の高低に応じて、原稿サイズの推定方法を切り替える。ここでは、原稿領域の確度が低く、原稿サイズが固定サイズに推定された状態であるか否かを、直前の原稿推定処理にて「確度高」判定がなされたか否かにより判断する。
そして、「確度低」判定がなされたと判断すると(S245でNo)、S261に移行し、「確度高」判定がなされたと判断すると(S245でYes)、S251に移行する。
S251に移行すると、CPU70は、S220で推定された原稿サイズ及びS235で検出された記録紙サイズに基づき、予め定められた計算式に従って変倍率を設定する。具体的には、変倍率を、原稿サイズと記録紙サイズとの比(例えば、記録紙短辺長さ÷原稿短辺長さ)に対応した倍率に設定し、後続の処理で、原稿のコピー画像が、原稿サイズとの記録紙サイズの比に対応した倍率で拡大(倍率が1未満の場合には縮小)されて記録紙に印刷されるようにする。
また、この処理を終えると、CPU70は、S220で推定された原稿の傾き角θから、画像データの傾き補正量を設定する(S253)。具体的には、原稿のコピー画像が、傾きのない状態でまっすぐ、記録紙に印刷されるように、傾き補正量を設定する。但し、推定された原稿の傾き角θが微小量(本実施例では−0.5度≦θ≦0.5度)である場合には、誤差も考慮して、傾き補正量をゼロに設定する。
S253での処理を終えると、CPU70は、S220で推定された原稿の載置領域の情報に基づいて、原稿読取開始位置及び原稿読取終了位置を設定し、原稿読取開始位置及び原稿読取終了位置で定められる読取領域を、原稿台11aにおける原稿の載置領域に対応させる(S255)。
具体的には、原稿の載置領域全体を読取ユニット15が読み取ることができるように、原稿読取開始位置を、副走査方向において最も下側に位置する原稿の端点に対応した位置に設定し、原稿読取終了位置を、副走査方向において最も上側に位置する原稿の端点に対応した位置に設定して、読取領域を原稿台11aにおける原稿の載置領域に対応させる。また、この処理を終えると、S270に移行する。
一方、S261に移行すると、CPU70は、原稿のコピー画像が等倍で記録紙に印刷されるように、変倍率を1に設定すると共に、傾き補正量をゼロに設定する(S263)。更に、直前の原稿推定処理にて推定された原稿サイズの情報に基づき、原稿読取開始位置及び原稿読取終了位置を設定し、原稿読取開始位置及び原稿読取終了位置で定められる読取領域を、原稿台11aにおける原稿の載置領域に対応させる(S265)。
具体的に、S265では、原稿台11aの左下角(フレーム内側左下角)に原稿の左下角が合わされて、原稿が正しく原稿台11aに載置されていると仮定し、原稿読取開始位置を、読取可能領域R0の下端(Y=0)に設定し、原稿読取終了位置を、原稿台11aの下端縁(換言すればフレーム13aの下辺内側)から上記推定した原稿の縦幅分離れた位置に設定する。このようにして、S265では、読取領域を、原稿台11aにおける原稿の載置領域に対応させる。
但し、S265では、後続の処理にて変倍率1でコピー動作を実現する関係上、読取領域を記録紙サイズより大きく設定する必要はないので、原稿サイズよりも記録紙サイズの方が小さい場合には、読取領域を記録紙サイズに対応させるようにしてもよい。このようにして、S265での処理を終えると、CPU70は、S270に移行する。
また、S270に移行すると、CPU70は、読取制御部20を通じて画像読取部10を制御することで、画像読取部10に、読取ユニット15を原稿読取開始位置から原稿読取終了位置まで副走査方向に搬送させると共に、当該搬送中にはライン毎の読取動作を読取ユニット15に実行させて、上記設定した読取領域の画像を、読取ユニット15に読み取らせ、当該読取領域の読取結果を表す画像データが、RAM80に記録されるようにする(S270)。
また、この処理を終えると、CPU70は、RAM80に記録された上記読取結果を表す画像データを、予め設定された変倍率で拡大又は縮小処理すると共に、予め設定された傾き補正量分、回転処理して、上記読取結果を表す画像データを、印刷用の画像データに変換し、変換後の画像データを、印刷対象データに設定する(S280)。但し、傾き補正量がゼロに設定されている場合には、S280において、回転処理を、実行しないものとする。
また、S280での処理を終えると、CPU70は、当該印刷対象データについての印刷処理を実行する(S290)。即ち、印刷制御部40を通じて、印刷部30に印刷対象データに基づく画像を、給紙した記録紙に印刷させる。その後、当該複写制御処理を終了する。
このようにして、自動変倍複写処理では、読取可能領域R0における一部領域のプレスキャン結果に基づき、原稿サイズ等を推定し、その結果から、本スキャン時(S270実行時)の読取領域を決定すると共に、変倍率及び傾き補正量を決定する。特に、原稿エッジの検出に失敗した場合や、検出した原稿エッジに基づいて推定した原稿領域の確度が低い場合には、自動変倍機能をオフにして、変倍率1で、コピー動作を実現し、それ以外の場合には、自動変倍機能を働かせて、原稿のコピー画像を、原稿サイズと記録紙サイズとの比に対応する大きさに、拡大又は縮小して、記録紙に印刷する。
続いて、図5を用いて、CPU70が、S220で実行する原稿推定処理について説明する。図5は、CPU70が実行する原稿推定処理を表すフローチャートである。
この原稿推定処理を開始すると、CPU70は、まず、変数Sを上述のプレスキャン領域上端のY座標であるYPREに設定することにより(S=YPRE)、Y軸方向の検査範囲を、Y=0からY=S=YPREに設定する(S410)。また、この処理を終えると、S420に移行し、右エッジ検出処理を実行する。図6は、CPU70が実行する右エッジ検出処理を表すフローチャートである。
右エッジ検出処理を開始すると、CPU70は、まずS510にて、副走査方向検査位置Yeを、読取可能領域R0の下端Y座標に設定し(Ye=0)、S515にて、主走査方向検査位置Xeを、読取可能領域R0の右端X座標に設定する(Xe=XMAX)。また、S515では、変数Cを値ゼロに初期化する(C=0)。その後、副走査方向検査位置Yeが検査範囲を超えているか否かを判断する(S520)。具体的には、Ye>Sであるか否かを判断する。
そして、副走査方向検査位置Yeが検査範囲を超えていないと判断すると(S520でNo)、CPU70は、主走査方向検査位置Xe及び副走査方向検査位置Yeで定まる検査位置(X,Y)=(Xe,Ye)に対応する検査対象データの画素値を参照することにより、検査位置(Xe,Ye)がエッジ点であるか否かを判断する(S525)。尚、図7は、エッジ画像データの構成を抜粋して示し、更に、右エッジ検出処理により追跡するエッジ点の軌跡を表した説明図である。図7に示す例では、画素値「1」の地点がエッジ点に該当する。
そして、検査位置(Xe,Ye)がエッジ点ではないと判断すると(S525でNo)、CPU70は、S540に移行して、主走査方向検査位置Xeを、X軸マイナス方向に1画素移動した位置に更新し(Xe←Xe−1)、更新後の主走査方向検査位置Xeが読取可能領域R0の左端を、はみ出ていないかどうかを判断する。具体的には、Xe<0であるか否かを判断する(S543)。
そして、主走査方向検査位置Xeが、読取可能領域R0の左端をはみ出ていないと判断すると(S543でNo)、CPU70は、S520に移行して、副走査方向検査位置Yeが検査範囲を超えているか否か(Ye>Sであるか否か)を判断し、副走査方向検査位置Yeが検査範囲を超えていないと判断すると(S520でNo)、S525に移行し、副走査方向検査位置Yeが検査範囲を超えていると判断すると(S520でYes)、S590に移行する。
一方、S543において、主走査方向検査位置Xeが読取可能領域R0の左端をはみ出ていると判断すると(Xe<0であると判断すると)、CPU70は、S547に移行し、主走査方向検査位置Xeを、読取可能領域R0の右端(XMAX)に設定すると共に(Xe=XMAX)、副走査方向検査位置Yeを、現在値Yeに8加えた値に更新する(Ye←Ye+8)。即ち、副走査方向検査位置Yeを、Y軸方向に8画素進んだ位置に設定する。その後、S520に移行して、上述の処理を実行する。
また、検査位置(Xe,Ye)がエッジ点であると判断すると(S525でYes)、CPU70は、S530に移行し、変数(X0,Y0)に、現在の検査位置(Xe,Ye)の座標値を、設定する(X0←Xe,Y0←Ye)。また、変数Y1を、座標Y=Y0からY軸方向に8画素進んだ座標値Y1(=Y0+8)に更新する(S533)。
その後、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点及び座標(X0+1,Y1)の地点の少なくとも一つが、エッジ点であるか否かを判断し(S537)、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点及び座標(X0+1,Y1)の地点のいずれもがエッジ点でない場合には(S537でNo)、S540に移行して、主走査方向検査位置Xeを、X軸マイナス方向に1画素移動した位置に更新する(Xe←Xe−1)。
一方、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点及び座標(X0+1,Y1)の地点の少なくとも一つがエッジ点であると判断した場合には(S537でYes)、S550に移行して、座標(X0,Y0)の地点が連続性のあるエッジ点であると判定し、この座標(X0,Y0)を、連続性のあるエッジ点の座標データとして、一時記憶する。
また、この処理を終えると、CPU70は、S560に移行し、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点及び座標(X0+1,Y1)の地点の内、エッジ点である地点の一つを、予め定められた優先度に従って選択する。
具体的に、右エッジ検出処理においては、読取可能領域R0右端側に近い座標ほど高い優先度が設定されている。即ち、読取可能領域R0右端側に近い座標(X0+1,Y1)の地点が優先度「大」に設定され、座標(X0,Y1)の地点が優先度「中」に設定され、座標(X0−1,Y1)の地点が優先度「小」に設定されている。
このように優先度が設定されているのは、原稿の右端より右側においては、原稿台11aに何も存在せず、エッジ点は存在しないはずであり、読取可能領域R0右端側に近いエッジ点であるほど、そのエッジ点が原稿の右端に対応するエッジ点である可能性が高いためである。
即ち、S560では、上記優先度に従って、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点、及び、座標(X0+1,Y1)の地点の内、エッジ点である地点であって優先度の最も高い地点を選択する。そして、変数X0を、選択した地点のX座標に更新し、変数Y0を、選択した地点のY座標に更新する。その後、変数Cを1加算した値に更新する(S563)。
そして、この処理を終えると、CPU70は、更新後の変数Cの値がC=8であるか否かを判断し、C=8でないと判断すると(S567でNo)、S533に移行して、変数Y1を、座標Y=Y0からY軸方向に8画素進んだ地点のY座標に更新する(Y1=Y0+8)。その後、S537以降の処理を実行する。
CPU70は、このような処理を実行することにより、図7に示すように、Y軸方向に8画素おきに、エッジ点がY軸方向に連続するものであるか否かを検査する。そして、C=8であると判断すると(S567でYes)、8回に及ぶS550の処理で連続性のあるエッジ点として判定した計8地点の各座標データを、原稿右エッジデータとしてRAM80に記憶する(S570)。
また、この処理を終えると、CPU70は、S580に移行して、副走査方向検査位置Yeが検査範囲を超えているか否か(Ye>Sであるか否か)を判断し、副走査方向検査位置Yeが検査範囲を超えていないと判断すると(S580でNo)、副走査方向検査位置Yeを64画素進んだ位置に更新して(S585)、S515に移行する。
このようにして、CPU70は、連続するエッジ点を、8つを1組として、繰返し検出する。そして、副走査方向検出位置Yeが検査範囲を超えると(S520でYes又はS580でYes)、S590に移行し、S570で原稿右エッジデータとして記憶された座標データ群の中から、右エッジ(原稿の右端を表すエッジ点)として確度の低い座標データ群を削除して、原稿右エッジデータを確定する。
具体的には、図8に示すように、原稿右エッジデータとして記憶された座標データ群の内、連続性のある座標データ群に対して原稿内側領域に大きくずれた位置にある、明白に連続性のない座標データ群を、原稿右エッジデータから除去し、原稿右エッジデータを確定する。その後、当該右エッジ検出処理を終了する。但し、S590の処理は原稿エッジの検出精度を高めるための処理であるので、S590の処理については、実行しないように、右エッジ検出処理を構成してもよい。
このようにして、右エッジ検出処理を終えると、CPU70は、S430に移行し、直前の右エッジ検出処理で右エッジの検出に失敗したか否かを判断する。具体的には、直前の右エッジ検出処理で原稿右エッジデータとして登録された座標データがない場合、右エッジの検出に失敗したと判断し、原稿右エッジデータとして登録された座標データがある場合には、右エッジの検出に成功したと判断する。
但し、例外的に、原稿右エッジデータとして登録された座標データが読取可能領域R0の左端(Y=0)近傍にある場合には、左エッジ(原稿の左端を表すエッジ点)の座標データが間違って原稿右エッジデータとして登録されているとみなして、原稿右エッジデータとして登録された座標データがある場合でも、右エッジの検出に失敗したと判断してもよい。
尚、右エッジの検出に失敗するケースとしては、原稿サイズが原稿台11aのサイズより大きく、原稿の右端が原稿台11aからはみ出しているケースなどを挙げることができる。
そして、右エッジの検出に失敗したと判断すると(S430でYes)、CPU70は、S431に移行し、「失敗」判定をすると共に、原稿台11aに載置されている原稿のサイズ(縦幅及び横幅)が、原稿台11aに載置可能な最大サイズ(読取可能領域R0に対応するサイズ)であると推定する(S433)。そして、この処理を終えると、当該原稿推定処理を終了する。尚、S431で「失敗」判定がなされると、上述したS240では、Yesと判断される。
一方、S430において右エッジの検出に成功したと判断すると(S430でNo)、CPU70は、S437に移行し、右エッジ検出処理で確定された原稿右エッジデータが示す各点を直線近似して、原稿右エッジデータが示す点群の近似直線(以下、「右エッジ近似直線」と表現する。)を算出する。
また、この処理を終えると、CPU70は、S440に移行して、右エッジ近似直線がY軸に対し所定角度より大きく傾いているか否かを判断する。本実施例では、具体的に、右エッジ近似直線がY軸に対し0.5度より大きく傾いているか否かを判断する。
そして、右エッジ近似直線の傾きが上記所定角度以下であると判断すると(S440でNo)、CPU70は、原稿がフレーム13aの内側左下角に突き当てられて原稿台11aに正しく載置されていると推定して、図5右図に示すように、右エッジ近似直線と原稿台11a下端縁(換言すると、フレーム13aの下辺(以下、「下フレーム」と表現する。)内側)との交点を、原稿の右下角位置であると推定する(S441)。
また、この処理を終えると、CPU70は、原稿の左下角位置が原稿台11aの左下角(換言すると、フレーム13aの内側左下角)の地点であると推定し、更に、推定した原稿の左下角位置及び右下角位置を結ぶ線分が原稿短辺であり、原稿台11aに載置されている原稿が定型用紙であると仮定して、原稿台11aに載置された原稿のサイズ及び原稿台11aにおける原稿の載置領域を推定する(S443)。
即ち、上記推定した原稿の左下角位置から右下角位置までの長さを、原稿の短辺長さ(横幅)と推定し、この短辺長さの√2倍を、原稿の長辺長さ(縦幅)と推定して、原稿サイズを推定すると共に、上記推定した左下角位置及び右下角位置を基点に上記原稿サイズの原稿が原稿台11aに載置されているものとして、原稿の左上角及び右上角が位置する座標を導出し、これら4つの角を結んでできる四角形内の領域を、原稿の載置領域であると推定する。尚、ここで原稿短辺長さの√2倍を、原稿の長辺長さとして推定しているのは、定型用紙の短辺長さ:長辺長さの比が1:√2となっているためである。
また、この処理を終えると、CPU70は、原稿台11aに載置されている原稿の傾き角を推定する(S445)。尚、S441,S443では、原稿が原稿台11aの左下角に正確に突き当てられて原稿台11aに載置されていると仮定して角位置を求めているので、S445では、原稿の傾き角がゼロである(傾きがない)と推定する。
その後、CPU70は、S447に移行して、「確度高」と判定する。尚、ここで、「確度高」と判定するのは、後続の処理であるS245においてYesと判断し、S251に移行するための形式的な処理である。即ち、CPU70は、S440でNoと判断すると、S447で「確度高」と判定し、S245においてYesと判断して、S251に移行する。
S447での処理を終えると、CPU70は、当該原稿推定処理(S220)を終えて、S230に移行し、上述したようにして、後続の処理を実行する。即ち、原稿推定処理で推定した原稿サイズ、原稿の傾き角、原稿の載置領域の情報を基に、変倍率及び傾き補正量を設定し(S251,S253)、更に読取領域を設定する(S255)。その後、本スキャンに移行して(S270)、コピー動作を実現する。
話を原稿推定処理のS440(図5参照)に戻すと、CPU70は、ここで、右エッジ近似直線がY軸に対し所定角度より大きく傾いていると判断した場合(S440でYes)、S450に移行して、図9に示す左エッジ検出処理を実行する。図9は、CPU70が実行する左エッジ検出処理を表すフローチャートである。
左エッジ検出処理を開始すると、CPU70は、S710にて、副走査方向検査位置Ye=0に設定し、S715にて、主走査方向検査位置Xeを、読取可能領域R0の左端X座標に設定する(Xe=0)。また、S715では、変数Cを値ゼロに初期化する(C=0)。
その後、CPU70は、副走査方向検査位置Yeが検査範囲を超えているか否か(即ち、Ye>Sであるか否か)を判断し(S720)、副走査方向検査位置Yeが検査範囲を超えていないと判断すると(S720でNo)、検査位置(X,Y)=(Xe,Ye)に対応する検査対象データの画素値を参照して、検査位置(Xe,Ye)がエッジ点であるか否かを判断する(S725)。
そして、検査位置(Xe,Ye)がエッジ点ではないと判断すると(S725でNo)、S740に移行し、主走査方向検査位置Xeを、X軸プラス方向に1画素移動した地点に更新し(Xe←Xe+1)、更新した主走査方向検査位置Xeが、読取可能領域R0の右端を、はみ出ていないかどうかを判断する(S743)。具体的には、Xe>XMAXであるか否かを判断する(S743)。そして、主走査方向検査位置Xeが、読取可能領域R0の右端をはみ出ていないと判断すると(S743でNo)、S720に移行する。
一方、S743で主走査方向検査位置Xeが読取可能領域R0の右端をはみ出ていると判断すると(Xe>XMAXであると判断すると)、CPU70は、S747に移行し、主走査方向検査位置Xeを、読取可能領域R0の左端に設定すると共に(Xe=0)、副走査方向検査位置Yeを、Y軸方向に8画素進んだ位置に設定する(Ye←Ye+8)。その後、S720に移行する。
また、検査位置(Xe,Ye)がエッジ点であると判断すると(S725でYes)、CPU70は、S730に移行して、変数(X0,Y0)に、現在の検査位置(Xe,Ye)の座標値を設定する(X0←Xe,Y0←Ye)と共に、変数Y1を、値Y1=Y0+8に更新する(S733)。
その後、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点及び座標(X0+1,Y1)の地点の少なくとも一つが、エッジ点であるか否かを判断し(S737)、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点及び座標(X0+1,Y1)の地点のいずれもがエッジ点でない場合には(S737でNo)、S740に移行する。
一方、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点及び座標(X0+1,Y1)の地点の少なくとも一つがエッジ点であると判断した場合には(S737でYes)、S750に移行して、座標(X0,Y0)の地点が連続性のあるエッジ点であると判定し、この座標(X0,Y0)を、連続性のあるエッジ点の座標データとして、一時記憶する。
また、この処理を終えると、CPU70は、S760に移行し、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点及び座標(X0+1,Y1)の地点の内、エッジ点である地点の一つを、予め定められた優先度に従って選択する。
具体的に、左エッジ検出処理においては、読取可能領域R0左端側に近い座標ほど高い優先度が設定されている。即ち、読取可能領域R0左端側に近い座標(X0−1,Y1)の地点が優先度「大」に設定され、座標(X0,Y1)の地点が優先度「中」に設定され、座標(X0+1,Y1)の地点が優先度「小」に設定されている。このように優先度が設定されているのは、原稿の左端より左側においては、原稿台11aに何も存在せず、エッジ点は存在しないはずであり、読取可能領域R0左端側に近いエッジ点であるほど、そのエッジ点が原稿の左端に対応するエッジ点である可能性が高いためである。
従って、S760では、この優先度に従って、座標(X0−1,Y1)の地点、座標(X0,Y1)の地点、及び、座標(X0+1,Y1)の地点の内、エッジ点である地点であって優先度の最も高い地点を選択する。そして、変数X0を、選択した地点のX座標に更新し、変数Y0を、選択した地点のY座標に更新する。その後、変数Cを1加算した値に更新する(S763)。
また、この処理を終えると、CPU70は、更新後の変数Cの値がC=8であるか否かを判断し、C=8でないと判断すると(S767でNo)、S733に移行して、変数Y1を、Y1=Y0+8に更新する。その後、S737以降の処理を実行する。
このような処理手順により、CPU70は、右エッジ検出処理と同様(図7参照)、Y軸方向に8画素おきに、エッジ点がY軸方向に連続するものであるか否かを検査する。そして、C=8であると判断すると(S767でYes)、S750で連続性のあるエッジ点として判定した計8地点の各座標データを、原稿左エッジデータとしてRAM80に記憶する(S770)。
また、この処理を終えると、CPU70は、S780に移行して、副走査方向検査位置Yeが検査範囲を超えているか否か(Ye>Sであるか否か)を判断し、副走査方向検査位置Yeが検査範囲を超えていないと判断すると(S780でNo)、副走査方向検査位置Yeを64画素進んだ地点に更新して(S785)、S715に移行する。
このようにして、CPU70は、連続するエッジ点を、8つずつ、繰返し検出する。そして、副走査方向検出位置Yeが検査範囲を超えると(S720でYes又はS780でYes)、S790に移行し、S770で原稿左エッジデータとして記憶された座標データ群の中から、左エッジ(原稿の左端を表すエッジ点)として確度の低い座標データ群を削除して、原稿左エッジデータを確定する。
具体的には、S590での処理と同様、原稿左エッジデータとして記憶された座標データ群の内、連続性のある座標データ群に対して原稿内側領域に大きくずれた位置にある、明白に連続性のない座標データ群を、原稿左エッジデータから除去し、原稿左エッジデータを確定する。その後、当該左エッジ検出処理を終了する。但し、S790の処理については、実行しないように、左エッジ検出処理を構成してもよい。
また、このようにして、左エッジ検出処理を終えると、CPU70は、S455に移行し、左エッジ検出処理で確定された原稿左エッジデータが示す各点を直線近似して、原稿左エッジデータが示す点群の近似直線(以下、「左エッジ近似直線」という。)を算出する。その後、S460に移行する。
但し、直前の左エッジ検出処理で原稿左エッジデータとして登録された座標データがない場合には、左エッジの検出に失敗したと判断して、左エッジ近似直線を算出することなく、S460に移行するものとする。この他、原稿左エッジデータとして登録されている座標データの全て又は一部が原稿右エッジデータにも登録されている場合には、右エッジ(原稿の右端を表すエッジ点)の座標データが間違って原稿左エッジデータとして登録されているとみなして、原稿左エッジデータとして登録された座標データがある場合でも、左エッジの検出に失敗したと判断し、左エッジ近似直線を算出することなく、S460に移行するようにしてもよい。
また、S460に移行すると、CPU70は、図10に示す下エッジ検出処理を実行する。図10は、CPU70が実行する下エッジ検出処理を表すフローチャートである。
下エッジ検出処理を開始すると、CPU70は、S810にて、主走査方向検査位置Xeを、読取可能領域R0の左端X座標に設定し(Xe=0)、S815にて、副走査方向検査位置Yeを、読取可能領域R0の下端Y座標に設定する(Ye=0)。また、S815では、変数Cを値ゼロに初期化する(C=0)。
また、この処理を終えると、CPU70は、主走査方向検査位置Xeが読取可能領域R0の右端を超えているか否か(即ち、Xe>XMAXであるか否か)を判断し(S820)、主走査方向検査位置Xeが読取可能領域R0の右端を超えていないと判断すると(S820でNo)、検査位置(X,Y)=(Xe,Ye)に対応する検査対象データの画素値を参照し、検査位置(Xe,Ye)がエッジ点であるか否かを判断する(S825)。
そして、検査位置(Xe,Ye)がエッジ点ではないと判断すると(S825でNo)、S840に移行して、副走査方向検査位置Yeを、Y軸プラス方向に1画素移動した位置に更新し(Ye←Ye+1)、更新後の副走査方向検査位置Yeが検査範囲を超えているか否か(Ye>Sであるか否か)を判断する(S843)。
そして、副走査方向検査位置Yeが検査範囲を超えていないと判断すると(S843でNo)、S820に移行する。
一方、S843で副走査方向検査位置Yeが検査範囲を超えていると判断すると(Ye>Sであると判断すると)、CPU70は、S847に移行し、副走査方向検査位置Yeを、読取可能領域R0の下端に設定すると共に(Ye=0)、主走査方向検査位置Xeを、X軸方向に8画素進んだ位置に設定する(Xe←Xe+8)。その後、S820に移行する。
この他、CPU70は、S825において、検査位置(Xe,Ye)がエッジ点であると判断すると(S825でYes)、S830に移行し、変数(X0,Y0)に、現在の検査位置(Xe,Ye)の座標値を、設定する(X0←Xe,Y0←Ye)。また、変数X1を、値X1=X0+8に更新する(S833)。
その後、CPU70は、座標(X1,Y0−1)の地点、座標(X1,Y0)の地点及び座標(X1,Y0+1)の地点の少なくとも一つが、エッジ点であるか否かを判断し(S837)、座標(X1,Y0−1)の地点、座標(X1,Y0)の地点及び座標(X1,Y0+1)の地点のいずれもがエッジ点でない場合には(S837でNo)、S840に移行する。
一方、座標(X1,Y0−1)の地点、座標(X1,Y0)の地点及び座標(X1,Y0+1)の地点の少なくとも一つがエッジ点であると判断すると(S837でYes)、CPU70は、S850に移行して、座標(X0,Y0)の地点が連続性のあるエッジ点であると判定し、この座標(X0,Y0)を、連続性のあるエッジ点の座標データとして、一時記憶する。
また、この処理を終えると、CPU70は、S860に移行し、座標(X1,Y0−1)の地点、座標(X1,Y0)の地点及び座標(X1,Y0+1)の地点の内、エッジ点である地点の一つを、予め定められた優先度に従って選択する。
具体的に、下エッジ検出処理においては、読取可能領域R0下端側に近い座標ほど高い優先度が設定されている。即ち、読取可能領域R0下端側に近い座標(X1,Y0−1)の地点が優先度「大」に設定され、座標(X1,Y0)の地点が優先度「中」に設定され、座標(X1,Y0+1)の地点が優先度「小」に設定されている。このように優先度が設定されているのは、原稿の下端より下側においては、原稿台11aに何も存在せず、エッジ点は存在しないはずであり、読取可能領域R0下端側に近いエッジ点であるほど、そのエッジ点が原稿の下端に対応するエッジ点である可能性が高いためである。
従って、S860では、この優先度に従って、座標(X1,Y0−1)の地点、座標(X1,Y0)の地点及び座標(X1,Y0+1)の地点の内、エッジ点である地点であって優先度の最も高い地点を選択する。そして、変数X0を、選択した地点のX座標に更新し、変数Y0を、選択した地点のY座標に更新する。その後、変数Cを1加算した値に更新する(S863)。
また、この処理を終えると、CPU70は、更新後の変数Cの値がC=8であるか否かを判断し(S867)、C=8でないと判断すると(S867でNo)、S833に移行して、変数X1を、X1=X0+8に更新する。その後、S837以降の処理を実行する。
このような処理を実行することにより、CPU70は、X軸方向に8画素おきに、エッジ点がX軸方向に連続するものであるか否かを検査する。そして、C=8であると判断すると(S867でYes)、S850で連続性のあるエッジ点として判定した計8地点の各座標データを、原稿下エッジデータとしてRAM80に記憶する(S870)。
また、この処理を終えると、CPU70は、S880に移行して、主走査方向検査位置Xeが読取可能領域R0右端を超えているか否か(Xe>XMAXであるか否か)を判断し、主走査方向検査位置Xeが読取可能領域R0右端を超えていないと判断すると(S880でNo)、主走査方向検査位置Xeを64画素進んだ地点に更新して(S885)、S815に移行する。
このようにして、CPU70は、連続するエッジ点を、8つずつ、繰返し検出する。そして、主走査方向検出位置Xeが読取可能領域R0右端を超えると(S820でYes又はS880でYes)、S890に移行し、S870で原稿下エッジデータとして記憶された座標データ群の中から、下エッジ(原稿の下端を表すエッジ点)として確度の低い座標データ群を削除して、原稿下エッジデータを確定する。
具体的には、S590での処理と同様、原稿下エッジデータとして記憶された座標データ群の内、連続性のある座標データ群に対して原稿内側領域に大きくずれた位置にある、明白に連続性のない座標データ群を、原稿下エッジデータから除去し、原稿下エッジデータを確定する。その後、当該下エッジ検出処理を終了する。但し、S890の処理については、実行しないように、下エッジ検出処理を構成してもよい。
また、このようにして、下エッジ検出処理を終えると、CPU70は、S465に移行し、下エッジ検出処理で確定された原稿下エッジデータが示す各点を直線近似して、原稿下エッジデータが示す点群の近似直線(以下、「下エッジ近似直線」という。)を算出する。その後、S470に移行する。但し、直前の下エッジ検出処理で原稿下エッジデータとして登録された座標データがない場合には、下エッジの検出に失敗したと判断して、下エッジ近似直線を算出することなく、S470に移行するものとする。
また、S470に移行すると、CPU70は、右エッジ近似直線、左エッジ近似直線、及び下エッジ近似直線の相互関係から、右エッジ検出処理(S420)、左エッジ検出処理(S450)及び下エッジ検出処理(S460)にて正しく原稿エッジが検出されたか否かを判断する。即ち、右エッジ、左エッジ及び下エッジの全てが正常に検出されたか否かを判断する。
具体的には、右エッジ近似直線と左エッジ近似直線とが平行な関係にあり、右エッジ近似直線と下エッジ近似直線とが直交関係にあり、左エッジ近似直線と下エッジ近似直線とが直交関係にある場合には、正しく原稿エッジが検出されたとして、S470でYesと判断する。
一方、右エッジ、左エッジ及び下エッジのいずれか一つの検出にでも失敗している場合や、右エッジ、左エッジ及び下エッジの関係が正しい関係にない場合には、S470でNoと判断する。即ち、右エッジ近似直線と左エッジ近似直線とが平行な関係にあり、右エッジ近似直線と下エッジ近似直線とが直交関係にあり、且つ、左エッジ近似直線と下エッジ近似直線とが直交関係にある場合を除いては、原稿エッジが正しく検出されていないとして、S470でNoと判断する。但し、ここでの相互関係の判定は、誤差を考慮して実行すべきである。
そして、原稿エッジが正しく検出されていないと判断すると(S470でNo)、CPU70は、S471に移行して、「失敗」判定をすると共に、原稿台11aに載置された原稿のサイズが、予め設定された基本サイズであると推定する(S473)。
尚、本実施例の複合機1は、基本サイズの情報を、設定情報として、予め操作キーを通じてユーザから入手可能な構成にされている。即ち、S473では、原稿台11aに載置された原稿のサイズが、ユーザから予め指定された基本サイズの原稿であると推定する。
但し、製品出荷時の基本サイズの設定値は、原稿台11aに載置可能な原稿の最大サイズとしておくのが好ましい。なぜなら、原稿サイズを最大サイズとして推定すれば、その原稿サイズが真の原稿サイズと異なっていても、S265で実行する読取領域の設定動作において、真の原稿サイズに対応する読取領域よりも小さい読取領域を、設定してしまうことがなく、本スキャンにて、原稿台11aに載置された原稿全体を読み取って、そのコピー画像を、記録紙に印刷することができ、後続処理に悪影響が及びにくいからである。
このようにして、S473での処理を終えると、CPU70は、当該原稿推定処理を終了して、S230以降の処理を実行することにより、S473で推定した原稿サイズの情報を基に読取領域等を設定し(S265)、変倍率1且つ傾き補正量ゼロで、コピー動作を実現する。
一方、S470で原稿エッジが正しく検出されていると判断すると(S470でYes)、CPU70は、S481に移行して、原稿の左下角位置を、左エッジ近似直線と下エッジ近似直線との交点であると推定して、その座標値を算出し、更に、原稿の右下角位置を、右エッジ近似直線と下エッジ近似直線との交点であると推定して、その座標値を算出する(S483)。尚、図11は、S481及びS483での原稿左下角位置Ka及び原稿右下角位置Kbの推定方法を示した説明図である。図中、白丸がエッジ点を表し、黒丸が角位置Ka,Kbを表す。
また、S483での処理を終えると、CPU70は、上記推定した原稿の左下角位置及び右下角位置の関係から、原稿台11aに載置されている原稿が四角形状であるとの仮定の元で、検査対象データにおける原稿領域を推定する(S485)。
具体的に、S485では、下エッジ近似直線の線分であって原稿左下角位置に対応する地点から原稿右下角位置に対応する地点までの線分、右エッジ近似直線の線分であって原稿右下角位置に対応する地点からY軸プラス方向に検査対象データの端縁までの線分、左エッジ近似直線の線分であって原稿左下角位置に対応する地点からY軸プラス方向に検査対象データの端縁までの線分に囲まれる検査対象データ内の領域を、原稿領域と推定する(図12(b)(c)参照)。
また、S485での処理を終えると、CPU70は、S490に移行し、図12(a)に示す原稿推定副処理を実行する。尚、図12(a)は、CPU70が実行する原稿推定副処理を表すフローチャートである。
S490で原稿推定副処理を開始すると、CPU70は、まず検査対象データの左端(換言するとY軸)から、左エッジ近似直線の線分で形付けられる原稿領域の左辺までのX軸方向最短距離D1を算出する(S910)。
尚、図9(b)は、原稿台11aにおいて原稿が左側に傾いて載置されている場合の距離D1,D2の算出方法を示した説明図であり、図9(c)は、原稿台11aにおいて原稿が右側に傾いて載置されている場合の距離D1,D2の算出方法を示した説明図である。
また、S910での処理を終えると、CPU70は、上記算出した距離D1が予め定められた閾値以下であるか否かを判断し(S920)、算出した距離D1が閾値を超えていると判断すると(S920でNo)、S980に移行する。
一方、上記算出した距離D1が閾値以下であると判断すると(S920でNo)、CPU70は、S930に移行し、検査対象データの下端(換言するとX軸)から、下エッジ近似直線の線分で形付けられる原稿領域の下辺までのY軸方向最短距離D2を算出する。
その後、S940に移行して、上記算出した距離D2が予め定められた閾値以下であるか否かを判断する。そして、算出した距離D2が閾値を超えていると判断すると(S940でNo)、S980に移行し、距離D2が閾値以下であると判断すると(S940でYes)、S950に移行する。
また、S950に移行すると、CPU70は、S485で推定した原稿領域の確度が高いと評価して、「確度高」と判定する。尚、S950で「確度高」と判定した場合、後続の処理であるS245において、CPU70は、Yesと判断する。
また、S950での処理を終えると、CPU70は、S960に移行し、S481及びS483で推定した原稿の左下角位置及び右下角位置を結ぶ線分が原稿短辺であり、原稿台11aに載置されている原稿が定型用紙であると仮定して、原稿台11aに載置された原稿のサイズ及び原稿台11aにおける原稿の載置領域を推定すると共に、原稿台11aに載置されている原稿の傾き角θを右エッジ近似直線を基に推定する(S970)。
即ち、S960では、上記推定した原稿の左下角位置から右下角位置までの長さを、原稿の短辺長さ(横幅)と推定し、この短辺長さの√2倍を、原稿の長辺長さ(縦幅)と推定して、原稿サイズを推定すると共に、上記推定した左下角位置及び右下角位置を基点に上記原稿サイズの原稿が原稿台11aに載置されているものとして、原稿の左上角及び右上角が位置する座標を導出し、これら4つの角を結んでできる四角形内の領域を、原稿の載置領域であると推定する。
また、S970では、Y軸に対して右エッジ近似直線がなす角度を、原稿の傾き角θと推定する。その後、当該原稿推定副処理を終了する。
一方、S980に移行すると、CPU70は、S485で推定した原稿領域の確度が低いと評価して、「確度低」と判定する。尚、S980で「確度低」と判定した場合、CPU70は、後続の処理であるS245において、Noと判断する。
ところで、距離D1及び距離D2のいずれか一方が閾値を超える場合に、推定した原稿領域の確度が低いと評価するのは、本実施例の複合機1では、原稿台11aの左下角を、原稿の左下角を合わせるべき位置としてマークMKによりユーザに指示しているためである。
即ち、本実施例においては、原稿台11aの左下角から延びる原稿台11aの下端縁及び原稿台11aの左端縁を、原稿の辺を合わせるべき基準線として定めており、ユーザがマークMKに従って原稿を載置すれば、当然に、距離D1及び距離D2は、ゼロに近い値として算出される。
換言すると、距離D1及び距離D2の値が大きい場合には、原稿エッジの検出の際に、原稿の辺ではなく、原稿内に描写された罫線等のエッジ点を原稿エッジであると誤検出している可能性が高い。このため、本実施例では、距離D1及び距離D2のいずれか一方が閾値を超える場合には、推定した原稿領域の確度が低いと評価するようにしているのである。
CPU70は、このような理由から、S980で「確度低」と判定すると、S990に移行し、S481,S483で推定した左下角位置及び右下角位置の情報を用いずに、S473の処理と同様、原稿台11aに載置された原稿のサイズが、予め設定された基本サイズであると推定する。その後、当該原稿推定副処理を終了する。
また、このようにして、S490での原稿推定副処理を終えると、CPU70は、S220での原稿推定処理を終了して、S230に移行し、後続の処理を実行する。
このような動作により、CPU70は、プレスキャンにより得られたエッジ画像データ(検査対象データ)から推定した原稿領域の確度が高い場合には、原稿が定型用紙であるとの仮定の下、エッジ画像データにより推定した原稿左下角位置及び右下角位置の情報に基づき、原稿台11aに載置された原稿のサイズを推定すると共に原稿の傾き角θを推定し(S960,S970)、これに基づき、変倍率及び傾き補正量を設定し(S251,S253)、更に読取領域を設定する(S255)。その後、本スキャンに移行する(S270)。
そして、本スキャン(S270)では、上記設定した読取領域下において読取ユニット15を搬送し、その領域に写る画像を読取ユニット15に読み取らせる。そして、その読取結果を、上記設定した変倍率に合わせて拡大/縮小処理すると共に、上記設定した傾き補正量に合わせて回転処理して、印刷用の画像データを生成する。また、これを印刷対象データとして印刷処理することで、原稿のコピー画像であって、自動変倍され、更に傾き補正された画像を、印刷部30を通じて、記録紙に印刷する。
一方、CPU70は、プレスキャンにより得られたエッジ画像データから推定した原稿領域の確度が低い場合には、原稿が基本サイズの原稿であると推定すると共に(S990)、原稿の左下角が原稿台11aの左下角に合わせられて、当該原稿がまっすぐ正確に載置されていると仮定して、傾き補正量をゼロに設定し(S263)、更に、自動変倍機能を無効にするように変倍率1に設定する(S261)。
また、推定した原稿サイズに合わせて読取領域を設定し(S265)、本スキャンに移行する(S270)。そして、原稿のコピー画像を、変倍率1で、印刷部30を通じて、記録紙に印刷する。
以上、本実施例のディジタル複合機1の構成について説明したが、本実施例の複合機1では、読取可能領域R0の一部領域をプレスキャンして、その読取結果に基づき、原稿の状態(原稿サイズ・原稿の傾き・原稿の載置領域)を推定するようにした。従って、本実施例によれば、従来のように、読取可能領域R0全体をプレスキャンする手法よりも高速にプレスキャン動作を終了することができて、効率的に原稿の状態を推定することができる。
但し、このように読取可能領域R0全体ではなく、一部領域をプレスキャンする手法を採用すると、原稿の全体像をプレスキャンで読み取ることができなり、原稿状態の推定精度が悪くなる可能性がある。
そこで、本実施例では、上述したように、プレスキャンにより得られたエッジ画像データから推定した原稿領域の確度を評価して、確度が高い場合には、その原稿領域を導出する基となった原稿左下角及び右下角の位置座標の情報から、原稿のサイズ(縦幅・横幅)を推定するが、確度が低い場合には、原稿サイズが、ユーザにより予め定められたサイズであると推定するようにした。
従って、本実施例によれば、エッジ画像データから原稿領域を推定する過程で、原稿に描写された罫線などの図形に惑わされて、その原稿領域の推定に誤りが生じた場合に、適切にモードを切り替えて、ユーザの要望(ユーザから指定されたサイズ)にあわせた処理を実行することができる。従って、本実施例によれば、誤った推定により、誤った変倍率や読取領域を設定してしまい、ユーザにとって不要なコピー動作が実行されてしまうのを抑えることができる。よって、本実施例によれば、ユーザに対して利便性の高い複合機1を提供することができる。
尚、上記実施例では、S980で「確度低」と判定した際に、ユーザに対して、その旨を報知せずに、S990に移行するようにしたが、S980では、表示操作部50のディスプレイを通じて「確度低」と判定した旨を報知するようにしてもよい。
この他、S980では、表示操作部50のディスプレイを通じて「確度低」と判定した旨を報知すると共に、後続の処理を継続するか否かをユーザに問い合わせ、操作キーを通じて継続する旨の回答が入力された場合には、S990に移行するが、操作キーを通じて継続しない旨の回答が入力された場合には、S990に移行せずに、S980の処理をするに至ったコピー指令に対応する複写制御処理を終了し、当該コピー指令を無効にするようにしてもよい。
また、以上には、本発明の実施例について説明したが、本発明の抽出手段は、CPU70が実行するS215,S420,S450,S460の処理により実現され、外縁認識手段は、S437,S455,S465,S481〜S485の処理により実現され、確度評価手段は、S910〜S950,S980の処理により実現されている。
また、プレスキャン手段は、CPU70が実行するS210の処理及び読取制御部20の動作により実現され、原稿サイズ推定手段は、S960,S990の処理により実現され、読取領域決定手段は、S255,S265の処理により実現され、本スキャン手段は、S270の処理及び読取制御部20の動作により実現されている。
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、コンタクトイメージセンサを読取ユニットとして備えるディジタル複合機1に、本発明を適用した例を説明したが、本発明は、コンタクトイメージセンサを読取ユニットとして備える画像読取装置に限定されるものではないことは言うまでもない。
1…ディジタル複合機、10…画像読取部、11…読取ガラス、11a…原稿台、13…筐体、13a…フレーム、15…読取ユニット、16…搬送機構、17…モータ、20…読取制御部、30…印刷部、40…印刷制御部、50…表示操作部、60…通信部、70…CPU、80…RAM、90…フラッシュメモリ、MK…マーク、P…原稿、R0…読取可能領域