画像読取装置及び画像読取方法
【課題】読み取り動作や、解析処理に要する時間が短く、原稿領域情報を高精度に得ることができる画像読取装置及び画像読取装置の制御方法を提供することを目的とする。
【解決手段】原稿の2辺の高解像度の画像データ部分を検出し、原稿の4辺ではなく、原稿の2辺の高解像度の画像データ部分を用いて画像の輪郭を検出し、この検出された画像の輪郭の範囲で、読み出した画像を切り出す。また、2辺の高解像度の画像データ部分を用いて、原稿の傾きを検出する画像読取装置である。
【解決手段】原稿の2辺の高解像度の画像データ部分を検出し、原稿の4辺ではなく、原稿の2辺の高解像度の画像データ部分を用いて画像の輪郭を検出し、この検出された画像の輪郭の範囲で、読み出した画像を切り出す。また、2辺の高解像度の画像データ部分を用いて、原稿の傾きを検出する画像読取装置である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像供給デバイスから供給された画像データを補正した後に、出力する画像読取装置及びその制御方法に関する。
【背景技術】
【0002】
近年、印刷機能だけを備えている所謂シングルファンクションプリンタ(SFP)に代わり、印刷機能の他に、画像の読み取り機能をも備えている所謂マルチファンクションプリンタ(MFP)が普及し始めている。
【0003】
マルチファンクションプリンタは、シングルファンクションプリンタが有する「印刷(プリント)機能」の他に、「ダイレクト印刷(ダイレクトプリント)機能」、「画像供給(スキャン)機能」、「複写(コピー)機能」等を備える多機能プリンタである。
【0004】
ここで、「印刷(プリント)機能」は、PC等の外部機器の制御によって、印刷を行う機能である。また、「ダイレクト印刷(ダイレクトプリント)機能」は、メモリカード等の画像データを印刷する機能である。さらに、「複写(コピー)機能」は、PC等の外部機器の制御によって、画像データを取り込む機能である。「複写(コピー)機能」は、取り込んだ画像を、PC等の外部機器を介さずに、印刷する機能である。
【0005】
これらの中でも、「画像供給(スキャン)機能」や「複写(コピー)機能」の付加価値として、読取装置に複数枚設置した原稿の位置や、サイズや、傾き等、原稿領域情報を検知し、原稿領域のみを有効な画像とし、それぞれを出力する機能を有する装置がある。また、所謂シングルファンクションスキャナ(SFS)においても、付加価値として、「画像供給(スキャン)機能」に、同様の機能を有する装置がある。
【0006】
従来、原稿検知技術として、特別な原稿検知センサを搭載する装置が知られ(たとえば、特許文献1参照)、また、原稿検知技術として、読み取りと同時に原稿のエッジを検知し、端部のエッジ部分を消去する装置が知られている(たとえば、特許文献2参照)。
【0007】
しかし、高解像度で原稿を読み込み、この読み込んだ画像から原稿情報を検知するには、膨大な画素数を扱う必要があり、検知処理に時間がかかる。また、データ量も膨大になるので、データ転送に必要な時間も増える。さらに、必要となるメモリ量が増え、コストアップに繋がる場合がある。そして、一般的なスキャナにおいて、高解像度で原稿を読み取ると、低解像度での読み取りに比べて、読み取り時間が遅いので、原稿の存在しない領域までも、低速で読み取り、速度面でのオーバヘッドが大きくなる。
【0008】
特許文献2記載の発明のように、原稿幅から原稿高さを予測し、原稿検知エリアを限定することによって、オーバヘッドを削減する技術等は、高速に原稿検知することができる。しかし、原稿台の突き当て位置等の特定の位置に原稿が存在していない場合は、原稿の開始位置を検知するために多くの領域を読み取る必要がある。
【0009】
このために、低価格な機器や、データ転送速度がボトルネックになるケースでは、一度低解像度でプレスキャンを行い、得られた画像を解析し、原稿領域を検知し、改めて高解像度で原稿の存在する位置を本スキャンする手法が一般的である。
【0010】
しかし、低解像度で読み取ったプレスキャン画像を解析すると、精度による誤差が発生する。たとえば、プレスキャン解像度が75dpiであり、本スキャン解像度が600dpiである場合、プレスキャンデータに対する解析が1ピクセルずれただけで、本スキャン時に、0.3ミリ以上ずれる。また、実際には、読取部のセンサによっては、原稿内領域と原稿外領域との境界のエッジ部分がぼやけるので、誤差はさらに大きくなる可能性がある。このために、原稿外の領域を有効な画像として扱うことがあるという問題がある。
【0011】
したがって、通常は、プレスキャンによって検知された領域が、確実に原稿領域に含まれるように余裕をもって検知をする方法や、検知された領域の一定量内側の領域を、有効画像とし、原稿外の領域を有効画像としない方法が用いられる。
【0012】
また、原稿の輪郭を検出する際に、低解像度で粗く読み取り、おおよその原稿範囲を検出した後に、先に検出した原稿範囲を、高解像度で読み取る。そして、高解像度で読み取った原稿の4辺に相当する画像部分だけに基づいて、原稿の輪郭を検出することが提案されている(たとえば、特許文献4参照)。
【特許文献1】特許第3757761号公報
【特許文献2】特開平7−143290号公報
【特許文献3】特開平8−235306号公報
【特許文献4】特開2005−115417号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
しかし、実際の原稿領域よりも内側を有効画像とする場合、画像の端部が切り取られる可能性がある。所謂ふちなし写真のように、紙面全面に印刷された原稿である場合、端部まで有効な画像が印刷されているので、必要な情報が欠落する可能性がある。また、原稿の上下左右で、検知誤差が異なることがあるので、実際の原稿と有効な画像とのアスペクト比が異なるという不具合が生じる。
【0014】
原稿検知の解析精度を高めるためには、高解像度なデータについて、より精度の高い解析アルゴリズムを用いて解析処理すればよい。しかし、原稿台全面を高解像度で読み取る必要があるので、読み取りにかかる時間が増えるという問題がある。また、画像データのサイズが大きくなり、必要なメモリ量が膨大し、安価な機器では、解析する画像データを蓄積することができないという問題がある。
【0015】
さらに、上記従来例では、高解像度かつ広面積の領域から、原稿位置情報を特定するためには、解析処理を行う画素数が膨大になり、解析処理に長時間を要するという問題がある。
【0016】
本発明は、読み取り動作や、解析処理に要する時間が短く、原稿領域情報を高精度に得ることができる画像読取装置及び画像読取方法を提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明は、原稿の4辺ではなく、原稿の2辺の高解像度の画像データ部分を用いて画像の輪郭を検出し、また、2辺の高解像度の画像データ部分を用いて、原稿の傾きを検出する画像読取装置である。
【発明の効果】
【0018】
本発明は、原稿の4辺ではなく、原稿の2辺の高解像度の画像データ部分を用いて原稿の輪郭を検出し、2辺の高解像度の画像データ部分を用いて、原稿の傾きを検出する。よって、本発明によれば、読み取り動作や、解析処理に要する時間が短く、原稿領域情報を高精度に得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【0019】
発明を実施するための最良の形態は、次の実施例である。
【実施例1】
【0020】
図1は、本発明の一実施例である画像記録装置100の構成を示すブロック図である。
【0021】
図1に示すように、画像記録装置100は、CPU20と、ROM1と、RAM2と、不揮発性RAM3と、操作部4と、表示部5と、記録部6とを有する。また、画像記録装置100は、画像処理部7と、読取部8と、カードインタフェース9と、駆動部10と、センサ部11と、通信インタフェース12とを有する。
【0022】
画像記録装置100は、PC等の外部機器200と接続をして利用することができる。外部機器200は、通信インタフェース12を介して、記録命令や、読取命令を表すJOBコマンドとして、画像記録装置100に送信し、スキャンやプリント、コピー等の操作を行う。
【0023】
また、画像記録装置100は、PC等の外部機器200と接続しなくても、操作部4における所定の操作によって、スキャンやプリント、コピー等を実行することができる。
【0024】
CPU20は、画像記録装置100が備える様々な機能を制御し、通信インタフェース部12を介して受け取った外部機器200によるJOBコマンドに従い、ROM1に記憶されている画像処理のプログラムを実行する。また、外部機器200と接続しなくても、操作部4における所定の操作によって、ROM1に記憶されている画像処理のプログラムを実行することもできる。
【0025】
ROM1は、画像記録装置100の制御命令プログラム等を格納している。
【0026】
図2、図3は、画像記録装置100を示す斜視図である。
【0027】
CCDを備える読取部8は、原稿画像を読み取り、赤(R)、緑(G)及び青(B)色のアナログ輝度データを出力する。なお、読取部8として、CCDの代わりに、密着型イメージセンサ(CIS)を使用するようにしてもよい。
【0028】
カードインタフェース9は、たとえばデジタルスチルカメラで撮影され、メモリカード等に記録されている画像ファイルを、操作部4の所定の操作に従い読み込む。
【0029】
画像処理部7においては、画像解析、画像データ圧縮、画像データ伸張、画像補正、色変換等、画像処理を行う専用回路等によって構成され、ROM1に記述されている制御命令プログラムによって制御される。これらの画像処理によって得られた画像データは、RAM2に格納される。RAM2に格納されている印刷データが、記録部6で記録する場合に必要な所定量に達すると、記録部6による記録動作が実行される。
【0030】
なお、上記画像処理は、記録用紙サイズや記録用紙タイプ、変倍印刷する/しない、フチなし印刷する/しない等、印刷設定によって、異なる印刷データが作成される。
【0031】
また、不揮発性RAM3は、バッテリバックアップされたSRAM等であり、画像記録装置100に固有のデータ等を記憶する。操作部4は、記憶媒体に記憶されている画像データを選択し、記録をスタートするためのキーであり、次のキーから構成されている。すなわち、ダイレクト印刷機能を実行するダイレクト印刷スタートキー、複写機能を実行するコピースタートキー、コピー解像度や画質等のモードを指定するモードキー、動作を停止するためのストップキー、コピー数を入力するテンキーや登録キー等である。CPU20は、これらキーの押下状態を検出し、この押下状態に応じて、各部を制御する。
【0032】
表示部5は、ドットマトリクスタイプの液晶表示部5(LCD)とLCDドライバとを備え、CPU20の制御に基づいて、各種の表示を行う。記録部6は、インクジェット方式のインクジェットヘッド、汎用IC等によって構成され、CPU20の制御によって、RAM2に格納されている記録データを読み出し、ハードコピーとして印刷出力する。
【0033】
駆動部10は、読取部8、記録部6のそれぞれの動作において、給排紙ローラを駆動するためのステッピングモータ、ステッピングモータの駆動力を伝達するギヤと、ステッピングモータとを制御するドライバ回路等によって構成されている。
【0034】
センサ部11は、記録紙幅センサ、記録紙有無センサ、原稿幅センサ、原稿有無センサ、記録媒体検知センサ等によって構成されている。CPU20は、これらセンサから得られた情報に基づいて、原稿と記録紙との状態を検知する。
【0035】
図4は、画像記録装置100に記憶されているプログラム構成を示す図である。
【0036】
図4に示すように、ROM1の内部に記憶されているプログラムは、次のモジュールによって構成されている。すなわち、データフロー制御部R01と、画像領域/サイズ情報決定部R02と、スキャナエンジン制御部R03と、読取画像処理部R04と、記録画像処理部R05と、プリントエンジン制御部R06とによって構成されている。さらに、読取画像処理部R04は、第1変倍処理部R08と、第1色変換部R09と、第2変倍処理部R10と、データ圧縮部R11とを有する。また、記録画像処理部R05は、第3変倍処理部R12と、第2色変換部R13と、量子化処理部R14と、データ伸張部R15とを有する。
【0037】
データフロー制御部R01は、操作部4や通信インタフェース12を介して、ユーザから指定された情報を受け取る。
【0038】
次に、画像領域/サイズ情報決定部R02やスキャナエンジン制御部R03、読取画像処理部R04との間で、モード情報や領域情報等のデータのやり取りを制御する。
【0039】
画像領域/サイズ情報決定部R02は、データフロー制御部R01から受け取ったモード情報等に基づいて、読取範囲や記録範囲等を決定する。
【0040】
スキャナエンジン制御部R03は、駆動部10と読取部8とを制御し、画像領域/サイズ情報決定部R02によって定められている範囲とサイズの画像データとを読取った後に、RAM2を介して、読取画像処理部R04に渡す。
【0041】
また、スキャナエンジン制御部R03は、読み取り開始位置と読み取り解像度とのパラメータを、データフロー制御部R01から受け取り、駆動部10と読取部8とを制御する。
【0042】
読取画像処理部R04は、モードに応じて、変倍や、色変換等の画像処理を行い、必要に応じて、画像データを圧縮し、RAM2に保存する。
【0043】
記録画像処理部R05は、RAM2を介して受け取った画像データに対して、必要に応じて、伸張し、変倍や色変換、量子化等、記録を行うために必要な画像処理を行い、RAM2に記憶する。
【0044】
プリントエンジン制御部R06は、RAM2に記憶されている画像データを、記録メディア上の画像領域/サイズ情報決定部R02によって定められている領域に記録するように、記録部6と駆動部10とを制御する。
【0045】
第1変倍処理部R08、第2変倍処理部R10、第3変倍処理部R12は、変倍率等のパラメータをセットし、画像データを拡大/縮小する。
【0046】
第1色変換部R09、第2色変換部R13は、色処理パラメータ等をセットし、マトリクス演算やルックアップテーブルを参照する等によって、色変換処理を行う。
【0047】
データ圧縮部R11は、画像データをJPEGファイルに圧縮する。データ伸張部R15は、JPEGファイルを伸張する。量子化処理部R14は、誤差拡散等を行い、画像データを二値のデータに量子化する。
【0048】
読取画像処理部R04、記録画像処理部R05に含まれている各画像処理部R08〜R15は、画像処理パラメータの設定と画像処理部7の制御とを行い、実処理を、専用の回路等で構成されている画像処理部7が実行するようにしてもよい。
【0049】
本実施例において、読取部8は、600dpi又は、75dpiで画像データを読み込む能力を有し、原稿台のサイズは、横方向に220ミリ、縦方向に300ミリとする。また、記録部6は、画像データを600dpiの解像度で記録する能力を有する。
【0050】
本実施例は、ROM1に記憶されているプログラムによって、実現される。
【0051】
次に、上記実施例における動作について説明する。
【0052】
図5は、ROM1に記憶されているプログラムによって、画像記録装置100を制御し、原稿検知とコピーとを実行する動作を示すフローチャートである。
【0053】
まず、S101で、読取部8が、75dpiで、原稿台全面をプレスキャンし、読み取った画像データを、RAM2に記憶する。
【0054】
図6は、画像記録装置100において、RAM2に記憶されている画像データを示す図である。
【0055】
次に、S102で、第1原稿検知を行う。S102で、RAM2に記憶されている画像データ全面を解析し、原稿台に設置されている原稿毎に、原稿領域の候補になる領域を検知する。
【0056】
本実施例において、輝度による閾値を用い、プレスキャン画像データを、原稿候補領域と非原稿候補領域とに像域分離する。通常、原稿端部に関しては、原稿領域と非原稿領域とがあいまいである部分が存在する。本実施例では、あいまいな領域が、原稿候補領域であると判定されるように、閾値を設定する。
【0057】
次に、原稿領域候補の4頂点座標(4つの頂点の座標)を求める。原稿1における原稿候補領域の第1頂点の座標を、V0[0]とし、第2頂点の座標を、V1[0]とし、第3頂点の座標を、V2[0]とし、第4頂点の座標を、V3[0]とする。図6に示す例において、V0[0]=(118,59)、V1[0]=(418,85)、V2[0]=(79,507)、V3[0]=(378,533)である。ただし、座標値は、75dpiでのピクセル値で表現され、座標値の成分は(横方向の座標値,縦方向の座標値)であり、読取基準位置が(0,0)であるとする。
【0058】
複数の原稿が設置されている場合、原稿2(2つ目の原稿)、原稿3(3つ目の原稿)、……毎に、それぞれ4頂点座標を求める。たとえば、原稿2における4頂点座標のそれぞれは、第1頂点V0[1]、第2頂点V1[1]、第3頂点V2[1]、第4頂点V3[1]に保存される。また、原稿N(N枚目の原稿)に対する4頂点座標は、それぞれ第1頂点V0[N−1]、第2頂点V1[N−1]、第3頂点V2[N−1]、第4頂点V3[N−1]であると定義づけし、記憶される。
【0059】
以下では、原稿1をコピーする場合を例にとって、説明する。
【0060】
次に、S103で、本スキャンの読取範囲を定める。
【0061】
図7は、本スキャンの読取範囲を示す図である。
【0062】
本スキャンの読取範囲は、読み取り開始位置area_ofs_x、area_ofs_yと、読み取り幅area_widthと、読み取り高さarea_heightによって定義される。それぞれの値は、読取解像度におけるピクセル値である。
【0063】
本実施例において、コピー処理を行う際の本スキャンの読取解像度は、600dpiとする。図7に示すように、本スキャンの読取範囲は、S102で検知された4頂点を、全て包含するような、傾きの無い矩形領域として求める。S102で得られた4頂点の座標値V0[0]、V1[0]、V2[0]、V3[0]は、演算誤差や検知アルゴリズムの精度次第では、原稿の内側であることがある。そこで、外側に1ピクセルずつ拡張し、第1頂点V0[0]=(117,58)、第2頂点V1[0]=(419,84)、第3頂点V2[0]=(78,508)、第4頂点V3[0]=(379,534)であるとする。
【0064】
さらに、各頂点座標を、600dpi相当のピクセル数に変換すると、拡張点は次のようになる。すなわち、第1頂点V0[0]=(936,464)、第2頂点V1[0]=(3352,672)、第3頂点V2[0]=(624,4064)、第4頂点V3[0]=(3032,4272)になる。
【0065】
これらの頂点に外接する矩形領域が、読取範囲であるとする。読取範囲は、読み取り開始位置area_ofs_x=624、読み取り開始位置area_ofs_y=464、読み取り幅area_width=2728、読み取り高さarea_height=3808である。
【0066】
次に、S104で、本スキャンを実行する。S104で、読取部8を制御する。そして、600dpiで、読み取り開始位置area_ofs_x、area_ofs_y、読み取り幅area_width、読み取り高さarea_heightで定義された矩形領域を、順次1ライン毎に読み取り、RAM2に記憶する。このときに、RAM2の容量や使用量に応じて、一度に滞留させておくことができるライン数の限界値(規定量)が定められ、限界値(規定量)に達すると、読み取り処理を、一時的に中断するように制御する。本実施例においては、限界値(規定量)が、16ラインである。
【0067】
S105では、S106で行うエンコード処理が可能なライン数が、RAM2に蓄積されているかどうかを判断し、エンコード処理が可能なライン数に達していれば、S106に処理を移す。また、エンコード処理が可能なライン数に達していなければ、S104に処理を移し、継続してスキャンするように制御する。本実施例においては、エンコード可能なライン数が16ラインであるとする。ただし、原稿の終端部分については、16ラインに満たなくても、エンコード処理が可能であるとする。
【0068】
S106で、RAM2に保存された画像データを、JPEGにエンコードする処理を順次、実行し、RAM2に保存する。
【0069】
S107で、読取範囲を全てエンコードしたかどうかを判断し、読取範囲が全てエンコードされていれば、S108に進む。それ以外の場合、S104に戻り、スキャンを継続するように制御する。
【0070】
S108では、S109で実行する第2原稿検知に必要なライン数を求める。原稿上端部分における原稿領域と非原稿領域との判定処理に必要なライン数upper_line_numと、原稿左端部分における原稿領域と非原稿領域とを判定する処理に必要なライン数left_line_numとを計算する。なお、原稿左端部分における原稿領域と非原稿領域とを判定する処理は、原稿領域・非原稿領域判定処理である。この原稿領域・非原稿領域判定処理に必要なライン数は、第1原稿検知処理(S102)の精度と、原稿の傾き量とによって異なり、第1原稿検知処理で得られた原稿候補領域の4点頂点の座標に基づいて求められる。
【0071】
本実施例において、原稿領域の4頂点座標V0[0]、V1[0]、V2[0]、V3[0]と、実際の原稿領域の頂点との誤差が、75dpi換算では、最大で2ピクセルであるとすると、600dpi換算では、16ピクセルである。つまり、原稿候補領域から16ピクセル内側であれば、確実に原稿領域内であると考えられる。
【0072】
原稿の上端部分の検知に必要なライン数は、原稿候補領域の第1頂点V0[0]の縦方向成分と、第2頂点V1[0]の縦方向成分との差分によって求められる。したがって、672−464=208ラインが、最低限必要である。
【0073】
さらに、原稿領域の4頂点座標と、実際の原稿領域の頂点との誤差の最大値を考慮し、16ライン加算し、判定処理に必要なライン数upper_line_num=224ラインとする。これと同様に、原稿の左端部分の検知に必要なライン数は、原稿候補の第1頂点V0[0]の横方向成分と、第3頂点V2[0]の横方向成分との差分によって、312ラインが最低限必要である。さらに、原稿領域を確実に解析するためには、第1原稿検知誤差の最大値である16ラインを加算し、判定処理に必要なライン数left_line_num=328ラインであるとする。
【0074】
S109で、RAM2に記憶されているJPEGデータのうちで、左端と上端とをデコードし、第2原稿検知を行い、原稿領域を求める。このときの原稿領域を、原稿開始位置の横方向成分real_start_x、縦方向成分real_start_yと、原稿幅real_widthと、原稿高さreal_heightとによって定義する。
【0075】
図8は、RAM2に記憶されているJPEG画像データを示す図である。
【0076】
まず、RAM2に記憶されているJPEGデータの左端から、幅left_line_num(328ピクセル)領域を、デコードし、RAM2に記憶する。
【0077】
図9は、RAM2に記憶されている左端画像データを示す図である。
【0078】
RAM2に記憶されている左端画像データについて、エッジ抽出と、直線抽出と、非原稿領域と原稿領域との画素値の連続性とを用いて、原稿領域と非原稿領域との境界である直線(境界線)を検出する。
【0079】
次に、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値v_start_pointと、終点座標値v_end_pointとを求める。このときの始点座標値v_start_point、終点座標値v_end_pointを、JPEG画像の左上を原点(0,0)とするピクセル数によって定義する。本実施例では、始点座標値v_start_point=(321,9)、終点座標値v_end_point=(7,3631)が検知されたとする。
【0080】
次に、左端と同様に、JPEG画像の上端についても、上端から高さupper_line_num(224ピクセル)の領域を、デコードし、RAM2に記憶する。
【0081】
図10は、RAM2に記憶されている上端画像データを示す図である。
【0082】
RAM2に記憶されている上端画像データについても、解析し、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値h_start_pointと、終点座標値h_end_pointとを求める。本実施例においては、始点座標値h_start_point=(321,9)、終点座標値h_end_point=(2711,218)が検知されたとする。
【0083】
次に、求められた各点座標に基づいて、原稿開始位置の横方向成分real_start_xと、縦方向成分real_start_y、原稿幅real_widthと、原稿高さreal_heightとを求める。
【0084】
横方向成分real_start_xは、始点座標値v_start_pointの横方向成分であるので、本実施例では、横方向成分real_start_x=321である。また、縦方向成分real_start_yは、始点座標値v_start_pointの縦方向成分であるので、本実施例においては、縦方向成分real_start_y=9である。原稿幅real_widthは、始点座標値h_start_pointと終点座標値h_end_pointとの距離であるので、本実施例では、原稿幅real_width=2399、原稿高さreal_height=3636である。
【0085】
また、原稿の傾き角度をθとすると、sinθ、cosθは、それぞれ、次の式(1)、式(2)によって得られる。したがって、本実施例では、sinθ=314/3636、cosθ=3586/3636が記憶される。
【0086】
sinθ=|始点座標値v_start_pointの横方向成分−終点座標値v_end_pointの横方向成分|/原稿高さreal_height……式(1)
cosθ=|始点座標値v_start_pointの縦方向成分−終点座標値v_end_pointの縦方向成分|/原稿高さreal_height……式(2)
次に、S110〜S115を繰り返すことによって、読み取った画像データを、記録用紙に記録する。
【0087】
S110で、JPEG画像から求めた原稿領域をデコードし、RAM2に保存する。このときに、滞留可能なライン数(RAM2に保存可能なライン数)の最大値に達すると、S111に進む。
【0088】
次に、S111で、傾き補正(S112)に必要なライン数に達したかどうかを判断し、達すると、S112を実行する。また、達しなければ、S110に戻り、デコードを再開する。本実施例において、傾き補正処理(S112)に必要な最低ライン数は、始点座標値h_start_pointの高さ成分と、終点座標値h_end_pointの高さ成分との差分によって求められ、本実施例では、209ラインである。よって、JPEG画像をデコードし、原稿領域を含むライン(209ライン)を蓄積した後に、原稿領域についての傾き補正を開始する。
【0089】
次に、S112では、画像中の原稿領域について、傾き補正を行う。このときに、sinθとcosθとを用いた座標変換と補間演算とによって、傾き補正を行う。
【0090】
S113で、記録用画像処理を行う。つまり、拡大、縮小、色変換、量子化を行い、この処理結果を、RAM2に記憶する。
【0091】
S114で、生成された量子化後の画像データを記録部6に渡し、記録部6を制御することによって、記録用紙への印字を開始する。S115で、原稿領域の全てを記録したかどうかを判断し、全てを記録したら、終了し、それ以外の場合は、S110に戻る。
【0092】
上記処理によって、傾いて置かれている複数の原稿に基づいて、原稿領域を精度良く抽出し、記録用紙に記録することができる。
【0093】
本実施例では、圧縮方式がJPEGであるが、MR圧縮等、他の圧縮方式を用いるようにしてもよい。また、RAM2の容量が充分であれば、非圧縮で記憶するようにしてもよい。
【0094】
また、輝度の閾値に基づいて、第1原稿検知を実行するが、エッジ検出等を用いた検知方法等、他の検知方法を用いてもよい。さらに、第2原稿検知でも、上記と同様に、他の検知方法を用いるようにしてもよい。
【0095】
本実施例において、第2原稿検知を行う際に、JPEGのデコードを比較的高速に行うことができる上端と左端との画像データを、解析対象にするが、他の部分を解析対象にするようにしてもよい。
【0096】
図11は、第2原稿検知において行う検知領域の例を示す図である。
【0097】
たとえば、より高速かつ必要な記憶領域を少なく検知するために、図11に示すように、JPEG画像の左上、右上、左下の3点のデータに基づいて、原稿領域の4頂点が含まれることが保証される矩形領域を切出し、解析する方法等を採用するようにしてもよい。
【0098】
図12は、第2原稿検知において行う検知領域の例を示す図である。
【0099】
図12に示すように、原稿の4つの辺が含まれることが保証される上端、左端、下端、右端の領域を解析対象領域とし、より高精度に検知するようにしてもよい。
【0100】
その他、上端と下端とを解析対象領域とする方法や、左端と右端とを解析対象領域とする方法等を採用するようにしてもよい。
【0101】
また、第2原稿検知において原稿領域を検知する際に、原稿端部の欠けた領域や、影部等を検出し、記録処理時に補正するようにしてもよい。
【0102】
本実施例では、第2原稿検知に必要なライン数を、傾き量によって動的に計算するが、原稿の傾き量に制限がある場合、傾き量の最悪値によって算出された固定のライン数としてもよい。
【実施例2】
【0103】
本発明の実施例2は、第2原稿検知を行う前に傾き補正を行う実施例であり、このために、第2原稿検知に必要な領域が少なくても足りる。また、実施例2は、実施例1における画像記録装置100を使用し、ROM1の内部に記憶されているプログラムを変えることによって実現可能である。
【0104】
図13は、実施例2におけるROM1に記憶されているプログラムによる制御によって、原稿検知とコピーとを実行する動作を示すフローチャートである。
【0105】
実施例2において、実施例1と同様に、読取部8は、600dpi、75dpiで画像データを読み込む能力を有し、記録部6は、600dpiの解像度で画像データを記録する能力を有する。また、原稿台のサイズは、横方向に220ミリ、縦方向に300ミリであるとする。さらに、実施例2において、実施例1と同様に、原稿台には、2種類の原稿が設置され、それぞれを原稿1、原稿2とする。
【0106】
まず、S201で、実施例1と同様に、読取部8を制御し、75dpiで、原稿台全面をスキャンし、読み取った画像データを、RAM2に記憶する。
【0107】
次に、S202で、実施例1で説明したS102と同様に、第1原稿検知を実行し、原稿候補である領域の4頂点を検知する。
【0108】
S202で、RAM2に記憶されている画像データを解析し、原稿台に設置されている原稿毎に、原稿領域を検知する。実施例2において、原稿を検知する場合、プレスキャン画像データを、輝度による閾値を用い、原稿領域と非原稿領域とに像域分離する。このときに、原稿端部において、原稿領域と非原稿領域とがあいまいである部分が存在する。実施例2では、このあいまいな領域が原稿領域であると判定されるような閾値を設定する。
【0109】
実施例2では、原稿1についての原稿候補領域の4頂点座標の値が、それぞれV0[0]=(118,59)、V1[0]=(418,85)、V2[0]=(79,507)、V3[0]=(378,533)であると検知されたとする。ただし、座標値は、75dpiでのピクセル値で表現され、(横方向の座標値,縦方向の座標値)であるとし、読取基準位置を(0,0)と定義する。
【0110】
複数の原稿が設置されている場合、原稿2、原稿3、……のそれぞれについて、4頂点を求める。たとえば、2つ目の原稿(原稿2)に対する4頂点座標は、それぞれ、第1頂点V0[1]、第2頂点V1[1]、第3頂点V2[1]、第4頂点V3[1]に保存される。
【0111】
N枚目の原稿(原稿N)についての4頂点座標は、それぞれ、第1頂点V0[N−1]、第2頂点V1[N−1]、第3頂点V2[N−1]、第4頂点V3[N−1]であると定義づけ、記憶される。
【0112】
以降、実施例2において、原稿1をコピーする場合を例にとって、説明する。
【0113】
S203で、本スキャン範囲を求める。実施例1で説明したS103と同様に、本スキャンの読取範囲は、読み取り開始位置area_ofs_x、area_ofs_yと、読み取り幅area_widthと、読み取り高さarea_heightとによって定義される。原稿候補領域の各頂点座標は、600dpi相当のピクセル数で、V0[0]=(936,464)、V1[0]=(3352,672)、V2[0]=(624,4064)、V3[0]=(3032,4272)であるとする。
【0114】
よって、読取範囲も、実施例1と同様に、area_ofs_x=624、area_ofs_y=464、読み取り幅area_width=2728、読み取り高さarea_height=3808である。また、同時に、原稿候補領域の幅と高さとを求める。ここで、原稿候補領域の幅がpre_widthであり、その高さがpre_heightであると定義する。pre_widthは、第1頂点V0[0]=(936,464)と、第2頂点V1[0]=(3352,672)との距離であるので、原稿候補領域幅が、pre_width=2425であると記憶する。
【0115】
同様に、pre_heightは、第1頂点V0[0]=(936,464)と第3頂点V2[0]=(624,4064)との距離であるので、原稿候補領域高さが、pre_height=3613であると記憶する。
【0116】
また、原稿の傾き候補角度がθ1であるとすると、sinθ1、cosθ1は、それぞれ、次の式(3)、式(4)によって得られる。したがって、実施例2では、sinθ1=312/3613、cosθ1=3600/3613が、原稿候補領域の傾き量を表すパラメータであるとして記憶する。
【0117】
sinθ1=|V0[0]の横方向成分−V2[0]の横方向成分|/pre_height……式(3)
cosθ1=|V0[0]の縦方向成分−V2[0]の縦方向成分|/pre_height……式(4)
次に、S204〜S209の処理を繰り返し、原稿候補領域を読み取り、JPEG画像としてRAM2に保存する。
【0118】
まず、S204で、本スキャンを実行する。S204で、読取部8を制御し、600dpiで原稿台の特定の矩形領域を、順次1ラインずつ読み取り、RAM2に記憶する。このときに読み取る領域は、読み取り開始位置area_ofs_x、area_ofs_y、読み取り幅area_width、読み取り高さarea_heightによって定義される矩形領域である。
【0119】
S205で、第1の傾き補正(S206)をするために必要なライン数をスキャンしたかどうかを判断し、傾き補正が可能であると判断すれば、S206に進む。それ以外の場合、S204で、再びスキャンする。
【0120】
ここで、傾き補正(S206)において、1ライン分の傾き補正を行うためには、原稿候補領域の第1頂点V0[0]と第2頂点V1[0]とが、読み取り画像データに含まれている必要がある。実施例2では、第1頂点V0[0]の縦方向成分と、第2頂点V1[0]の縦方向成分との差分である208ライン以上が必要である。よって、実施例2では、滞留している本スキャンの出力画像のライン数が、208ライン以上であれば、S206に進む。滞留している本スキャンの出力画像のライン数が、208ライン未満であれば、S204でスキャンを開始する。
【0121】
S206で、第1の傾き補正を行う。RAM2に保存されている読み取り画像データに傾き補正を行い、この補正結果を、RAM2に保存する。このときに保存するデータは、原稿候補領域内の画素のデータのみである。また、sinθ1とcosθ1とを用いた座標変換と補間演算とによって、傾きを補正する。
【0122】
S207で、エンコード(S208)するために必要なライン数に達しているかどうかを判断し、達していれば、S208に進む。それ以外であれば、S205に戻り、第1の傾き補正処理や、本スキャンを再開する。
【0123】
ここで、実施例2において、JPEGエンコード(S208)するために必要なライン数を16ラインとし、S206で、16ラインまで出力可能であるとする。ただし、入力データが終了していれば、処理を終了し、S208に進む。
【0124】
次に、S208で、JPEGエンコードを行う。実施例2では、入力となる16ラインのデータ毎に、圧縮し、JPEG画像データを生成する。実施例2では、最終データの処理が終了すると、S203で求めた幅pre_width=2425であり、高さpre_height=3613であるJPEG画像を、RAM2に保存する。
【0125】
また、S209で、幅pre_width、高さpre_height分のデータを全てエンコードしたかどうかを判断し、エンコード済みであれば、S210に進む。エンコードが完了していなければ、S207に戻り、エンコード処理、傾き補正、本スキャンを行う。
【0126】
S210で、第2原稿検知(S211)に必要なライン数を求める。原稿上端部分での原稿領域と非原稿領域との判定処理に必要なライン数upper_line_numと、原稿左端部分における原稿領域と非原稿領域との判定処理(原稿領域・非原稿領域判定処理)に必要なライン数left_line_numとを計算する。
【0127】
判定に必要なライン数は、第1原稿検知(S202)の精度と、第1の傾き補正(S206)の精度とによって定められる。実施例2では、第1原稿検知S202の誤差と、第1の傾き補正S206の誤差とが最大で32ラインであるとする。したがって、判定処理に必要なライン数upper_line_num=32ラインとし、判定処理に必要なライン数left_line_num=32ラインとする。第1の傾き補正によって、実施例1と比べて必要なライン数が削減され、第2原稿検知が高速になる。
【0128】
S211で、実施例1におけるS109と同様に、RAM2に記憶されているJPEGデータのうちで、左端と上端とをデコードし、第2原稿検知を行い、原稿領域を求める。このときに、原稿開始位置の横方向成分が、横方向成分real_start_xであり、縦方向成分が、real_start_yであり、原稿幅が、real_widthであり、原稿高さが、real_heightであると定義する。
【0129】
まず、RAM2に記憶されているJPEGデータの左端から、幅left_line_num(32ピクセル)の領域をデコードし、RAM2に記憶する。次に、RAM2に記憶されている左端画像データについて、エッジ抽出と、直線抽出と、非原稿領域と原稿領域との画素値の連続性とを用い、原稿領域と非原稿領域との境界である直線(境界線)を検出する。
【0130】
次に、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値v_start_pointと終点座標値v_end_pointとを求める。このときの始点座標値v_start_point、終点座標値v_end_pointを、JPEG画像の左上を原点(0,0)としたピクセル数によって定義する。実施例2において、始点座標値v_start_point=(7,9)、終点座標値v_end_point=(0,3608)が検知されたとする。
【0131】
次に、左端と同様に、JPEG画像の上端についても、上端の値に基づいて、高さupper_line_num(32ピクセル)の領域をデコードし、RAM2に記憶する。
【0132】
RAM2に記憶されている上端画像データを、解析し、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値h_start_pointと、終点座標値h_end_pointとを求める。実施例2において、始点座標値h_start_point=(7,9)、終点座標値h_end_point=(2406,5)が検知されたとする。
【0133】
実施例2では、始点座標値v_start_pointと始点座標値h_start_pointとの検知結果が同じであるが、一致しないケースもある。始点座標値v_start_pointと始点座標値h_start_pointとが異なる結果であれば、v_border_lineとh_border_lineとの交点座標を求める。この得られた交点座標を、始点座標値v_start_point、始点座標値h_start_pointとし、2つのパラメータを一致させる。次に、求められた各点座標から、原稿開始位置の横方向成分real_start_xと、縦方向成分real_start_yと、原稿幅real_widthと、原稿高さreal_heightとを求める。横方向成分real_start_xは、始点座標値v_start_point(始点座標値h_start_pointと等しい)の横方向成分であるので、実施例2において、横方向成分real_start_x=7である。また、縦方向成分real_start_yは、始点座標値v_start_point(始点座標値h_start_pointと等しい)の縦方向成分であるので、実施例2において、縦方向成分real_start_y=9である。原稿幅real_widthは、始点座標値h_start_pointと終点座標値h_end_pointとの距離によって求められるので、実施例2において、原稿幅real_width=2399、原稿高さreal_height=3599である。
【0134】
また、JPEG画像中の原稿の傾き角度をθ2とすると、sinθ2、cosθ2は、それぞれ、次の式(5)、式(6)によって得られる。したがって、実施例2では、sinθ2=7/3599、cosθ2=3599/3599が記憶される。実施例2では、演算精度の都合上、cosθ2の値が1であるが、微小な誤差であるので、実使用上は問題無い。ただし、演算精度を上げる程、より正確な値を得ることができる。
【0135】
sinθ2=|始点座標値v_start_pointの横方向成分−終点座標値v_end_pointの横方向成分|/原稿高さreal_height……式(5)
cosθ2=|始点座標値v_start_pointの縦方向成分−終点座標値v_end_pointの縦方向成分|/原稿高さreal_height……式(6)
次に、S212〜S217を繰り返すことによって、読み取った画像データを、記録用紙に記録する。
【0136】
S212では、S208で求められた原稿領域を、JPEG画像から切出し、デコードし、RAM2に保存する。
【0137】
次に、S213で、デコードライン数が、第2の傾き補正(S214)で必要なライン数に達したかどうかを判断する。傾き補正に必要なライン数に達すれば、S214に進み、それ以外の場合、S212に戻り、デコードを再開する。また、実施例2において、傾き補正S214に必要な最低ライン数は、始点座標値h_start_pointの高さ成分と、終点座標値h_end_pointの高さ成分との差分によって求められ、実施例2では、4ラインである。よって、S213では、デコード結果が4ライン以上蓄積されているかどうかを判断基準とする。
【0138】
次に、S215で、第2の傾き補正を行う。sinθ2とcosθ2とを用いた座標変換と補間演算とによって、第2の傾き補正を行う。また、実施例2のように、θ2の値が微小である場合、第2の傾き補正(S214)を実行しなくても、出力結果に、大きな影響がない。
【0139】
S215で、記録用画像処理を行う。つまり、拡大、縮小、色変換、量子化を行い、この処理結果を、RAM2に記憶する。
【0140】
次に、S216で、得られた量子化後の画像データを、記録部6に渡し、記録部6を制御することによって、記録用紙に印字する。
【0141】
S217で、全ての原稿領域データを記録したかどうかを判断し、全て記録済みであれば終了する。それ以外の場合、S212で、デコードを再開する。
【0142】
実施例2において、第2原稿検知を行う際に、JPEGのデコードを、比較的高速に行うことができる上端と左端との画像データを解析の対象にするが、他の部分を解析対象にするようにしてもよい。たとえば、より高速かつ必要な記憶領域を少なく検知するために、図11に示すように、JPEG画像の左上、右上、左下の3点に基づいて、原稿領域の4頂点が含まれていることが保証される矩形領域を切出し、解析するようにしてもよい。
【0143】
また、図12に示すように、原稿の4つの辺が含まれていることが保証される上端、左端、下端、右端の領域を、解析対象領域とし、より高精度に検知するようにしてもよい。
【0144】
その他、上端と下端とを解析対象領域とする方法や、左端と右端とを解析対象領域とする方法等が考えられる。
【0145】
また、第2原稿検知において、原稿領域を検知する際、原稿端部の欠けた領域や、影部等を検出し、記録処理時に補正するようにしてもよい。
【実施例3】
【0146】
本発明の実施例3は、通信インタフェース12を介して接続された外部機器200に、画像を出力する実施例である。
【0147】
つまり、実施例3は、画像を生成する処理を、画像記録装置100に対応する画像記録装置100aと、外部機器200とで分担する。
【0148】
画像記録装置100では、プレスキャン処理と第1原稿検知とを行った後に、本スキャンし、外部機器200に随時画像データを送信する。外部機器200は、受け取った画像データの端部について、第2原稿検知を行い、必要な領域を切出す。また、必要であれば、傾き補正し、画像データをファイルとして、外部機器内の不揮発性RAMに蓄積する。
【0149】
次に、画像記録装置100の処理について説明する。
【0150】
図14は、実施例3において、画像記録装置100の動作を示すフローチャートである。
【0151】
画像記録装置100は、外部機器200からのジョブをトリガとし、処理を開始する。実施例3において、実施例1と同様に、読取部8は、600dpi、75dpiで画像データを読み込む能力を有し、原稿台のサイズは、横方向が220ミリであり、縦方向が300ミリであるとする。記録部6は、画像データを600dpiの解像度で記録する能力を有する。さらに、実施例3において、実施例1と同様に、原稿台には、2種類の原稿が設置され、それぞれが、原稿1、原稿2であるとする。
【0152】
原稿1は、その幅が101.6ミリであり、その高さが152.4ミリであり、読取基準位置から縦方向に20ミリ、横方向に40ミリ離れた位置に設置され、時計回りに、5度傾いている状態で設置されているとする。また、原稿2は、その幅が101.6ミリであり、その高さが152.4ミリであり、読取基準位置から縦方向に200ミリ、横方向に100ミリ離れた位置に設置され、反時計回りに、5度傾いた状態で設置されているとする。
【0153】
まず、S301で、実施例1と同様に、読取部8を制御し、75dpiで、原稿台全面をスキャンし、読み取った画像データをRAM2に記憶する。
【0154】
次に、第1原稿検知(S302)の動作について説明する。
【0155】
実施例1で説明したS102と同様に、第1原稿検知を行い、原稿候補となる領域の4頂点を検知する。S302で、RAM2に記憶されている画像データを解析し、原稿台に設置されている原稿毎に、原稿領域を検知する。実施例3において、原稿検知する場合、プレスキャン画像データにおいて、輝度による閾値を用い、原稿領域と非原稿領域とに像域分離する。このときに、原稿端部に関して、原稿領域と非原稿領域とがあいまいである部分が存在する。実施例3では、あいまいな領域が、原稿領域であると判定される閾値を設定する。
【0156】
実施例3では、原稿1に対する原稿候補領域の4頂点座標値は、それぞれV0[0]=(118,59)、V1[0]=(418,85)、V2[0]=(79,507)、V3[0]=(378,533)が検知されたとする。ただし、座標値は、75dpiでのピクセル値で表現され、(横方向の座標値,縦方向の座標値)とし、読取基準位置が(0,0)であると定義する。
【0157】
次に、S303で、実施例1のS103と同様に、本スキャンの読取範囲を定める。本スキャンの読取範囲は、実施例1と同様に、読み取り開始位置area_ofs_x、area_ofs_yと、読み取り幅area_widthと、読み取り高さarea_heightとによって定義される。
【0158】
実施例3において、実施例1のS103と同様に、読取範囲が定まる。つまり、読み取り開始位置area_ofs_x=624、読み取り開始位置area_ofs_y=464、読み取り幅area_width=2728、読み取り高さarea_height=3808によって、読取範囲が定まる。
【0159】
次に、S304で、本スキャンを実行する。S304で、読取部8を制御し、矩形領域を、順次1ライン毎に読み取り、RAM2に記憶する。つまり、600dpiで、読み取り開始位置area_ofs_x、読み取り開始位置area_ofs_y、読み取り幅area_width、読み取り高さarea_heightで定義される矩形領域を、順次1ライン毎に読み取り、RAM2に記憶する。このときに、RAM2の容量や使用量に応じて、一度にRAM2に滞留させることができるライン数の限界値(規定量)が定められ、この限界値(規定量)に達すると、読み取り処理を一時的に中断させる。実施例3において、上記限界値(規定量)を16ラインとにする。
【0160】
S305で、RAM2に滞留している画像データを、通信インタフェース12を介して、順次、外部機器200に送信する。読取範囲の画像データの全てを、外部機器200に送信する。実施例3において、圧縮処理を行わずに画像データを送信しているが、JPEGやMR等で、圧縮すれば、より高速に転送を行うことができる。
【0161】
S306では、読取範囲の全てを転送したかどうかを判断し、全てを転送し終わると、終了する。また、それ以外の場合、S304に戻り、本スキャンを再開する。
【0162】
次に、外部機器200で行う処理について説明する。
【0163】
図15は、実施例3において、外部機器200による処理動作を示すフローチャートである。
【0164】
S307で、画像記録装置100から受け取った本スキャン結果画像を蓄積する。
【0165】
次に、S308で、実施例1におけるS108と同様に、第2原稿検知処理(S309)で必要なライン数を求める。実施例3では、実施例1と同様に、原稿上端部分と左端部分とを解析対象にする。原稿上端部の解析に必要なライン数を、upper_line_numと定義し、原稿左端部の解析に必要なライン数を、left_line_numと定義する。このときに、それぞれの値は、実施例1と同様に、判定処理に必要なライン数upper_line_num=224ラインであるとし、判定処理に必要なライン数left_line_num=348ラインであるとする。
【0166】
次に、S309で、第2原稿検知処理を行う。保存された画像データの左端から、判定処理に必要なライン数left_line_numの領域について、エッジ抽出と、直線抽出と、非原稿領域と原稿領域との画素値の連続性を用い、原稿領域と非原稿領域との境界である直線(境界線)とを検出する。なお、上記判定処理に必要なライン数left_line_numは、348ライン分である。
【0167】
次に、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値v_start_pointと、終点座標値v_end_pointとを求める。このときにおける始点座標値v_start_point、終点座標値v_end_pointは、本スキャンの読取開始点を原点(0,0)としたピクセル数によって定義される。実施例3において、実施例1と同様に、始点座標値v_start_point=(321,9)、終点座標値v_end_point=(7,3631)が検知されたとする。
【0168】
次に、上端についても、上端から高さupper_line_num(224ピクセル分)の領域について解析し、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値h_start_pointと終点座標値h_end_pointとを求める。実施例3において、実施例1と同様に、始点座標値h_start_point=(321,9)、終点座標値h_end_point=(2711,218)であると検知されたとする。
【0169】
次に、求められた各点座標から、原稿開始位置の横方向成分real_start_xと縦方向成分real_start_yと、原稿幅real_widthと、原稿高さreal_heightとを求める。
【0170】
横方向成分real_start_xは、実施例3において、実施例1と同様に、横方向成分real_start_x=321、縦方向成分real_start_y=9である。原稿幅real_widthは、始点座標値h_start_pointと終点座標値h_end_pointとの距離によって求められるので、実施例3において、原稿幅real_width=2399、原稿高さreal_height=3599である。
【0171】
また、原稿の傾き角度をθとすると、sinθ、cosθは、それぞれ実施例1で記載した式(1)、式(2)によって得られる。したがって、実施例3において、実施例1と同様に、sinθ=314/3599、cosθ=3586/3599として記憶される。
【0172】
次に、S310で蓄積された画像データのうちで、原稿領域について、傾き補正処理を行う。このときの傾き補正は、sinθとcosθとを用いた座標変換と補間演算とによって、原稿領域について行う補正である。
【0173】
次に、S311で、出力された画像データを電子ファイルとして、外部機器内の不揮発性RAMに保存し、終了する。
【0174】
上記処理によって、原稿台に設置されている原稿の複製となる画像データを、精度良く生成し、電子ファイルとして外部機器200に蓄積保存することができる。
【0175】
実施例3について、印刷機能を有する画像記録装置100を用いて説明したが、実施例3のように、外部機器に対して読み取った画像データを保存する用途であれば、印刷機能を有する必要は無い。たとえば、シングルファンクションスキャナのように、画像読取装置を用いるようにしてもよい。
【0176】
また、実施例3において、実施例2で示した例と同様に、第2の解析処理を行う前に、傾き補正を行うことによって、第2の解析処理で必要となる解析範囲を削減することができる。
【0177】
また、実施例3において、実施例1、2と同様に、第2原稿検知を行う際に、上端と左端との画像データを解析対象としたが、他の部分を解析対象にするようにしてもよい。たとえば、より高速かつ必要な記憶領域を少なく検知するために、図11に示すように、画像の左上、右上、左下の3点に基づいて、原稿領域の4頂点が含まれることが保証される矩形領域を切出し、解析するようにしてもよい。
【0178】
また、図12に示すように、原稿の4つの辺が含まれることが保証される上端、左端、下端、右端の領域を、解析対象領域とし、より高精度に検知するようにしてもよい。
【0179】
その他、上端と下端とを解析対象領域とする方法や、左端と右端とを解析対象領域とする方法等が考えられる。
【0180】
上記実施例によれば、原稿領域の候補になる領域を高速で限定し、この限定された領域を、高解像度で読み取った後に、この読み取った画像の一部分を詳細に解析するので、読取動作や、解析処理に要する時間が短く、原稿領域情報を高精度で得ることができる。
【0181】
また、上記実施例によれば、高解像度で読み取ったデータを一度圧縮して保存し、解析に必要な個所だけを、部分的に伸張し、解析処理するので、一面分の高解像度非圧縮データを保存する記憶領域を持たなくても、高解像度のデータを解析処理することができる。
【0182】
つまり、上記実施例は、原稿台に設置されている原稿を読み取る画像読取装置において、原稿領域の候補である原稿領域候補を検出する第1原稿検知手段と、上記原稿領域候補の画像を読み取る読取手段とを有する。また、上記実施例は、上記読み取った上記原稿領域候補の画像の端部領域のうちで、解析する範囲を設定する解析範囲設定手段と、上記解析範囲設定手段が解析した画像の2辺の高解像度データに基づいて原稿の輪郭を検知する第2原稿検知手段とを有する。上記実施例は、上記解析範囲設定手段が解析した画像の2辺の高解像度データに基づいて、原稿の傾きを検出する傾き検出手段と、上記読み取った画像のうちで上記第2原稿検知手段が検知した原稿の輪郭内の画像を切出して画像出力する画像出力手段とを有する。
【0183】
この場合、上記第1原稿検知手段は、第1の解像度で原稿台全面を読み取り、得られた第1の画像から、上記原稿領域の候補となる領域を特定する手段である。上記第2原稿検知手段は、第2の解像度で上記原稿領域の候補である領域を読み取り、得られた第2の画像の端部領域を解析する手段である。上記第1の解像度は、上記第2の解像度よりも低い解像度である。
【0184】
また、上記原稿領域の候補となる領域を読み取ると同時に圧縮し、上記読み取った画像の端部領域のみを伸張し、上記伸張された画像データについて、上記第2原稿検知を行い、上記第2原稿検知によって特定された上記原稿領域を伸張し、出力画像とする。
【0185】
さらに、上記第2原稿検知における解析範囲は、上記傾き検出手段が検出した原稿の傾きに応じて、定められる範囲である。
【0186】
そして、上記実施例を方法の発明として把握することができる。つまり、上記実施例は、原稿台に設置されている原稿を読み取る画像読取装置の制御方法において、原稿領域の候補である原稿領域候補を検出し、記憶装置に記憶する第1原稿検知工程を有する。また、上記実施例は、上記原稿領域候補の画像を読み取り、記憶装置に記憶する読取工程と、上記読み取った上記原稿領域候補の画像の端部領域のうちで、解析する範囲を設定し、記憶装置に記憶する解析範囲設定工程とを有する。そして、上記実施例は、上記解析範囲設定工程で解析された画像の2辺の高解像度データに基づいて原稿の輪郭を検知し、記憶装置に記憶する第2原稿検知工程を有する。さらに、上記実施例は、上記解析範囲設定工程で解析された画像の2辺の高解像度データに基づいて、原稿の傾きを検出し、記憶装置に記憶する傾き検出工程を有する。しかも、上記実施例は、上記読み取った画像のうちで、上記第2原稿検知工程で検知された原稿の輪郭内の画像を切出し、記憶装置に記憶し、画像出力する画像出力工程を有する画像読取装置の制御方法の例である。
【図面の簡単な説明】
【0187】
【図1】本発明の一実施例である画像記録装置100の構成を示すブロック図である。
【図2】画像記録装置100を示す斜視図である。
【図3】画像記録装置100を示す斜視図である。
【図4】画像記録装置100に記憶されているプログラム構成を示す図である。
【図5】ROM1に記憶されているプログラムによって、画像記録装置100を制御し、原稿検知とコピーとを実行する動作を示すフローチャートである。
【図6】画像記録装置100において、RAM2に記憶されている画像データを示す図である。
【図7】本スキャンの読取範囲を示す図である。
【図8】RAM2に記憶されているJPEG画像データを示す図である。
【図9】RAM2に記憶されている左端画像データを示す図である。
【図10】RAM2に記憶されている上端画像データを示す図である。
【図11】第2原稿検知において行う検知領域の例を示す図である。
【図12】第2原稿検知において行う検知領域の例を示す図である。
【図13】実施例2におけるROM1に記憶されているプログラムによる制御によって、原稿検知とコピーとを実行する動作を示すフローチャートである。
【図14】実施例3において、画像記録装置100の動作を示すフローチャートである。
【図15】実施例3において、外部機器200による処理動作を示すフローチャートである。
【符号の説明】
【0188】
100…画像記録装置、
1…ROM、
2…RAM、
3…不揮発性RAM、
4…操作部、
5…表示部、
6…記録部、
7…画像処理部、
8…読取部。
【技術分野】
【0001】
本発明は、画像供給デバイスから供給された画像データを補正した後に、出力する画像読取装置及びその制御方法に関する。
【背景技術】
【0002】
近年、印刷機能だけを備えている所謂シングルファンクションプリンタ(SFP)に代わり、印刷機能の他に、画像の読み取り機能をも備えている所謂マルチファンクションプリンタ(MFP)が普及し始めている。
【0003】
マルチファンクションプリンタは、シングルファンクションプリンタが有する「印刷(プリント)機能」の他に、「ダイレクト印刷(ダイレクトプリント)機能」、「画像供給(スキャン)機能」、「複写(コピー)機能」等を備える多機能プリンタである。
【0004】
ここで、「印刷(プリント)機能」は、PC等の外部機器の制御によって、印刷を行う機能である。また、「ダイレクト印刷(ダイレクトプリント)機能」は、メモリカード等の画像データを印刷する機能である。さらに、「複写(コピー)機能」は、PC等の外部機器の制御によって、画像データを取り込む機能である。「複写(コピー)機能」は、取り込んだ画像を、PC等の外部機器を介さずに、印刷する機能である。
【0005】
これらの中でも、「画像供給(スキャン)機能」や「複写(コピー)機能」の付加価値として、読取装置に複数枚設置した原稿の位置や、サイズや、傾き等、原稿領域情報を検知し、原稿領域のみを有効な画像とし、それぞれを出力する機能を有する装置がある。また、所謂シングルファンクションスキャナ(SFS)においても、付加価値として、「画像供給(スキャン)機能」に、同様の機能を有する装置がある。
【0006】
従来、原稿検知技術として、特別な原稿検知センサを搭載する装置が知られ(たとえば、特許文献1参照)、また、原稿検知技術として、読み取りと同時に原稿のエッジを検知し、端部のエッジ部分を消去する装置が知られている(たとえば、特許文献2参照)。
【0007】
しかし、高解像度で原稿を読み込み、この読み込んだ画像から原稿情報を検知するには、膨大な画素数を扱う必要があり、検知処理に時間がかかる。また、データ量も膨大になるので、データ転送に必要な時間も増える。さらに、必要となるメモリ量が増え、コストアップに繋がる場合がある。そして、一般的なスキャナにおいて、高解像度で原稿を読み取ると、低解像度での読み取りに比べて、読み取り時間が遅いので、原稿の存在しない領域までも、低速で読み取り、速度面でのオーバヘッドが大きくなる。
【0008】
特許文献2記載の発明のように、原稿幅から原稿高さを予測し、原稿検知エリアを限定することによって、オーバヘッドを削減する技術等は、高速に原稿検知することができる。しかし、原稿台の突き当て位置等の特定の位置に原稿が存在していない場合は、原稿の開始位置を検知するために多くの領域を読み取る必要がある。
【0009】
このために、低価格な機器や、データ転送速度がボトルネックになるケースでは、一度低解像度でプレスキャンを行い、得られた画像を解析し、原稿領域を検知し、改めて高解像度で原稿の存在する位置を本スキャンする手法が一般的である。
【0010】
しかし、低解像度で読み取ったプレスキャン画像を解析すると、精度による誤差が発生する。たとえば、プレスキャン解像度が75dpiであり、本スキャン解像度が600dpiである場合、プレスキャンデータに対する解析が1ピクセルずれただけで、本スキャン時に、0.3ミリ以上ずれる。また、実際には、読取部のセンサによっては、原稿内領域と原稿外領域との境界のエッジ部分がぼやけるので、誤差はさらに大きくなる可能性がある。このために、原稿外の領域を有効な画像として扱うことがあるという問題がある。
【0011】
したがって、通常は、プレスキャンによって検知された領域が、確実に原稿領域に含まれるように余裕をもって検知をする方法や、検知された領域の一定量内側の領域を、有効画像とし、原稿外の領域を有効画像としない方法が用いられる。
【0012】
また、原稿の輪郭を検出する際に、低解像度で粗く読み取り、おおよその原稿範囲を検出した後に、先に検出した原稿範囲を、高解像度で読み取る。そして、高解像度で読み取った原稿の4辺に相当する画像部分だけに基づいて、原稿の輪郭を検出することが提案されている(たとえば、特許文献4参照)。
【特許文献1】特許第3757761号公報
【特許文献2】特開平7−143290号公報
【特許文献3】特開平8−235306号公報
【特許文献4】特開2005−115417号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
しかし、実際の原稿領域よりも内側を有効画像とする場合、画像の端部が切り取られる可能性がある。所謂ふちなし写真のように、紙面全面に印刷された原稿である場合、端部まで有効な画像が印刷されているので、必要な情報が欠落する可能性がある。また、原稿の上下左右で、検知誤差が異なることがあるので、実際の原稿と有効な画像とのアスペクト比が異なるという不具合が生じる。
【0014】
原稿検知の解析精度を高めるためには、高解像度なデータについて、より精度の高い解析アルゴリズムを用いて解析処理すればよい。しかし、原稿台全面を高解像度で読み取る必要があるので、読み取りにかかる時間が増えるという問題がある。また、画像データのサイズが大きくなり、必要なメモリ量が膨大し、安価な機器では、解析する画像データを蓄積することができないという問題がある。
【0015】
さらに、上記従来例では、高解像度かつ広面積の領域から、原稿位置情報を特定するためには、解析処理を行う画素数が膨大になり、解析処理に長時間を要するという問題がある。
【0016】
本発明は、読み取り動作や、解析処理に要する時間が短く、原稿領域情報を高精度に得ることができる画像読取装置及び画像読取方法を提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明は、原稿の4辺ではなく、原稿の2辺の高解像度の画像データ部分を用いて画像の輪郭を検出し、また、2辺の高解像度の画像データ部分を用いて、原稿の傾きを検出する画像読取装置である。
【発明の効果】
【0018】
本発明は、原稿の4辺ではなく、原稿の2辺の高解像度の画像データ部分を用いて原稿の輪郭を検出し、2辺の高解像度の画像データ部分を用いて、原稿の傾きを検出する。よって、本発明によれば、読み取り動作や、解析処理に要する時間が短く、原稿領域情報を高精度に得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【0019】
発明を実施するための最良の形態は、次の実施例である。
【実施例1】
【0020】
図1は、本発明の一実施例である画像記録装置100の構成を示すブロック図である。
【0021】
図1に示すように、画像記録装置100は、CPU20と、ROM1と、RAM2と、不揮発性RAM3と、操作部4と、表示部5と、記録部6とを有する。また、画像記録装置100は、画像処理部7と、読取部8と、カードインタフェース9と、駆動部10と、センサ部11と、通信インタフェース12とを有する。
【0022】
画像記録装置100は、PC等の外部機器200と接続をして利用することができる。外部機器200は、通信インタフェース12を介して、記録命令や、読取命令を表すJOBコマンドとして、画像記録装置100に送信し、スキャンやプリント、コピー等の操作を行う。
【0023】
また、画像記録装置100は、PC等の外部機器200と接続しなくても、操作部4における所定の操作によって、スキャンやプリント、コピー等を実行することができる。
【0024】
CPU20は、画像記録装置100が備える様々な機能を制御し、通信インタフェース部12を介して受け取った外部機器200によるJOBコマンドに従い、ROM1に記憶されている画像処理のプログラムを実行する。また、外部機器200と接続しなくても、操作部4における所定の操作によって、ROM1に記憶されている画像処理のプログラムを実行することもできる。
【0025】
ROM1は、画像記録装置100の制御命令プログラム等を格納している。
【0026】
図2、図3は、画像記録装置100を示す斜視図である。
【0027】
CCDを備える読取部8は、原稿画像を読み取り、赤(R)、緑(G)及び青(B)色のアナログ輝度データを出力する。なお、読取部8として、CCDの代わりに、密着型イメージセンサ(CIS)を使用するようにしてもよい。
【0028】
カードインタフェース9は、たとえばデジタルスチルカメラで撮影され、メモリカード等に記録されている画像ファイルを、操作部4の所定の操作に従い読み込む。
【0029】
画像処理部7においては、画像解析、画像データ圧縮、画像データ伸張、画像補正、色変換等、画像処理を行う専用回路等によって構成され、ROM1に記述されている制御命令プログラムによって制御される。これらの画像処理によって得られた画像データは、RAM2に格納される。RAM2に格納されている印刷データが、記録部6で記録する場合に必要な所定量に達すると、記録部6による記録動作が実行される。
【0030】
なお、上記画像処理は、記録用紙サイズや記録用紙タイプ、変倍印刷する/しない、フチなし印刷する/しない等、印刷設定によって、異なる印刷データが作成される。
【0031】
また、不揮発性RAM3は、バッテリバックアップされたSRAM等であり、画像記録装置100に固有のデータ等を記憶する。操作部4は、記憶媒体に記憶されている画像データを選択し、記録をスタートするためのキーであり、次のキーから構成されている。すなわち、ダイレクト印刷機能を実行するダイレクト印刷スタートキー、複写機能を実行するコピースタートキー、コピー解像度や画質等のモードを指定するモードキー、動作を停止するためのストップキー、コピー数を入力するテンキーや登録キー等である。CPU20は、これらキーの押下状態を検出し、この押下状態に応じて、各部を制御する。
【0032】
表示部5は、ドットマトリクスタイプの液晶表示部5(LCD)とLCDドライバとを備え、CPU20の制御に基づいて、各種の表示を行う。記録部6は、インクジェット方式のインクジェットヘッド、汎用IC等によって構成され、CPU20の制御によって、RAM2に格納されている記録データを読み出し、ハードコピーとして印刷出力する。
【0033】
駆動部10は、読取部8、記録部6のそれぞれの動作において、給排紙ローラを駆動するためのステッピングモータ、ステッピングモータの駆動力を伝達するギヤと、ステッピングモータとを制御するドライバ回路等によって構成されている。
【0034】
センサ部11は、記録紙幅センサ、記録紙有無センサ、原稿幅センサ、原稿有無センサ、記録媒体検知センサ等によって構成されている。CPU20は、これらセンサから得られた情報に基づいて、原稿と記録紙との状態を検知する。
【0035】
図4は、画像記録装置100に記憶されているプログラム構成を示す図である。
【0036】
図4に示すように、ROM1の内部に記憶されているプログラムは、次のモジュールによって構成されている。すなわち、データフロー制御部R01と、画像領域/サイズ情報決定部R02と、スキャナエンジン制御部R03と、読取画像処理部R04と、記録画像処理部R05と、プリントエンジン制御部R06とによって構成されている。さらに、読取画像処理部R04は、第1変倍処理部R08と、第1色変換部R09と、第2変倍処理部R10と、データ圧縮部R11とを有する。また、記録画像処理部R05は、第3変倍処理部R12と、第2色変換部R13と、量子化処理部R14と、データ伸張部R15とを有する。
【0037】
データフロー制御部R01は、操作部4や通信インタフェース12を介して、ユーザから指定された情報を受け取る。
【0038】
次に、画像領域/サイズ情報決定部R02やスキャナエンジン制御部R03、読取画像処理部R04との間で、モード情報や領域情報等のデータのやり取りを制御する。
【0039】
画像領域/サイズ情報決定部R02は、データフロー制御部R01から受け取ったモード情報等に基づいて、読取範囲や記録範囲等を決定する。
【0040】
スキャナエンジン制御部R03は、駆動部10と読取部8とを制御し、画像領域/サイズ情報決定部R02によって定められている範囲とサイズの画像データとを読取った後に、RAM2を介して、読取画像処理部R04に渡す。
【0041】
また、スキャナエンジン制御部R03は、読み取り開始位置と読み取り解像度とのパラメータを、データフロー制御部R01から受け取り、駆動部10と読取部8とを制御する。
【0042】
読取画像処理部R04は、モードに応じて、変倍や、色変換等の画像処理を行い、必要に応じて、画像データを圧縮し、RAM2に保存する。
【0043】
記録画像処理部R05は、RAM2を介して受け取った画像データに対して、必要に応じて、伸張し、変倍や色変換、量子化等、記録を行うために必要な画像処理を行い、RAM2に記憶する。
【0044】
プリントエンジン制御部R06は、RAM2に記憶されている画像データを、記録メディア上の画像領域/サイズ情報決定部R02によって定められている領域に記録するように、記録部6と駆動部10とを制御する。
【0045】
第1変倍処理部R08、第2変倍処理部R10、第3変倍処理部R12は、変倍率等のパラメータをセットし、画像データを拡大/縮小する。
【0046】
第1色変換部R09、第2色変換部R13は、色処理パラメータ等をセットし、マトリクス演算やルックアップテーブルを参照する等によって、色変換処理を行う。
【0047】
データ圧縮部R11は、画像データをJPEGファイルに圧縮する。データ伸張部R15は、JPEGファイルを伸張する。量子化処理部R14は、誤差拡散等を行い、画像データを二値のデータに量子化する。
【0048】
読取画像処理部R04、記録画像処理部R05に含まれている各画像処理部R08〜R15は、画像処理パラメータの設定と画像処理部7の制御とを行い、実処理を、専用の回路等で構成されている画像処理部7が実行するようにしてもよい。
【0049】
本実施例において、読取部8は、600dpi又は、75dpiで画像データを読み込む能力を有し、原稿台のサイズは、横方向に220ミリ、縦方向に300ミリとする。また、記録部6は、画像データを600dpiの解像度で記録する能力を有する。
【0050】
本実施例は、ROM1に記憶されているプログラムによって、実現される。
【0051】
次に、上記実施例における動作について説明する。
【0052】
図5は、ROM1に記憶されているプログラムによって、画像記録装置100を制御し、原稿検知とコピーとを実行する動作を示すフローチャートである。
【0053】
まず、S101で、読取部8が、75dpiで、原稿台全面をプレスキャンし、読み取った画像データを、RAM2に記憶する。
【0054】
図6は、画像記録装置100において、RAM2に記憶されている画像データを示す図である。
【0055】
次に、S102で、第1原稿検知を行う。S102で、RAM2に記憶されている画像データ全面を解析し、原稿台に設置されている原稿毎に、原稿領域の候補になる領域を検知する。
【0056】
本実施例において、輝度による閾値を用い、プレスキャン画像データを、原稿候補領域と非原稿候補領域とに像域分離する。通常、原稿端部に関しては、原稿領域と非原稿領域とがあいまいである部分が存在する。本実施例では、あいまいな領域が、原稿候補領域であると判定されるように、閾値を設定する。
【0057】
次に、原稿領域候補の4頂点座標(4つの頂点の座標)を求める。原稿1における原稿候補領域の第1頂点の座標を、V0[0]とし、第2頂点の座標を、V1[0]とし、第3頂点の座標を、V2[0]とし、第4頂点の座標を、V3[0]とする。図6に示す例において、V0[0]=(118,59)、V1[0]=(418,85)、V2[0]=(79,507)、V3[0]=(378,533)である。ただし、座標値は、75dpiでのピクセル値で表現され、座標値の成分は(横方向の座標値,縦方向の座標値)であり、読取基準位置が(0,0)であるとする。
【0058】
複数の原稿が設置されている場合、原稿2(2つ目の原稿)、原稿3(3つ目の原稿)、……毎に、それぞれ4頂点座標を求める。たとえば、原稿2における4頂点座標のそれぞれは、第1頂点V0[1]、第2頂点V1[1]、第3頂点V2[1]、第4頂点V3[1]に保存される。また、原稿N(N枚目の原稿)に対する4頂点座標は、それぞれ第1頂点V0[N−1]、第2頂点V1[N−1]、第3頂点V2[N−1]、第4頂点V3[N−1]であると定義づけし、記憶される。
【0059】
以下では、原稿1をコピーする場合を例にとって、説明する。
【0060】
次に、S103で、本スキャンの読取範囲を定める。
【0061】
図7は、本スキャンの読取範囲を示す図である。
【0062】
本スキャンの読取範囲は、読み取り開始位置area_ofs_x、area_ofs_yと、読み取り幅area_widthと、読み取り高さarea_heightによって定義される。それぞれの値は、読取解像度におけるピクセル値である。
【0063】
本実施例において、コピー処理を行う際の本スキャンの読取解像度は、600dpiとする。図7に示すように、本スキャンの読取範囲は、S102で検知された4頂点を、全て包含するような、傾きの無い矩形領域として求める。S102で得られた4頂点の座標値V0[0]、V1[0]、V2[0]、V3[0]は、演算誤差や検知アルゴリズムの精度次第では、原稿の内側であることがある。そこで、外側に1ピクセルずつ拡張し、第1頂点V0[0]=(117,58)、第2頂点V1[0]=(419,84)、第3頂点V2[0]=(78,508)、第4頂点V3[0]=(379,534)であるとする。
【0064】
さらに、各頂点座標を、600dpi相当のピクセル数に変換すると、拡張点は次のようになる。すなわち、第1頂点V0[0]=(936,464)、第2頂点V1[0]=(3352,672)、第3頂点V2[0]=(624,4064)、第4頂点V3[0]=(3032,4272)になる。
【0065】
これらの頂点に外接する矩形領域が、読取範囲であるとする。読取範囲は、読み取り開始位置area_ofs_x=624、読み取り開始位置area_ofs_y=464、読み取り幅area_width=2728、読み取り高さarea_height=3808である。
【0066】
次に、S104で、本スキャンを実行する。S104で、読取部8を制御する。そして、600dpiで、読み取り開始位置area_ofs_x、area_ofs_y、読み取り幅area_width、読み取り高さarea_heightで定義された矩形領域を、順次1ライン毎に読み取り、RAM2に記憶する。このときに、RAM2の容量や使用量に応じて、一度に滞留させておくことができるライン数の限界値(規定量)が定められ、限界値(規定量)に達すると、読み取り処理を、一時的に中断するように制御する。本実施例においては、限界値(規定量)が、16ラインである。
【0067】
S105では、S106で行うエンコード処理が可能なライン数が、RAM2に蓄積されているかどうかを判断し、エンコード処理が可能なライン数に達していれば、S106に処理を移す。また、エンコード処理が可能なライン数に達していなければ、S104に処理を移し、継続してスキャンするように制御する。本実施例においては、エンコード可能なライン数が16ラインであるとする。ただし、原稿の終端部分については、16ラインに満たなくても、エンコード処理が可能であるとする。
【0068】
S106で、RAM2に保存された画像データを、JPEGにエンコードする処理を順次、実行し、RAM2に保存する。
【0069】
S107で、読取範囲を全てエンコードしたかどうかを判断し、読取範囲が全てエンコードされていれば、S108に進む。それ以外の場合、S104に戻り、スキャンを継続するように制御する。
【0070】
S108では、S109で実行する第2原稿検知に必要なライン数を求める。原稿上端部分における原稿領域と非原稿領域との判定処理に必要なライン数upper_line_numと、原稿左端部分における原稿領域と非原稿領域とを判定する処理に必要なライン数left_line_numとを計算する。なお、原稿左端部分における原稿領域と非原稿領域とを判定する処理は、原稿領域・非原稿領域判定処理である。この原稿領域・非原稿領域判定処理に必要なライン数は、第1原稿検知処理(S102)の精度と、原稿の傾き量とによって異なり、第1原稿検知処理で得られた原稿候補領域の4点頂点の座標に基づいて求められる。
【0071】
本実施例において、原稿領域の4頂点座標V0[0]、V1[0]、V2[0]、V3[0]と、実際の原稿領域の頂点との誤差が、75dpi換算では、最大で2ピクセルであるとすると、600dpi換算では、16ピクセルである。つまり、原稿候補領域から16ピクセル内側であれば、確実に原稿領域内であると考えられる。
【0072】
原稿の上端部分の検知に必要なライン数は、原稿候補領域の第1頂点V0[0]の縦方向成分と、第2頂点V1[0]の縦方向成分との差分によって求められる。したがって、672−464=208ラインが、最低限必要である。
【0073】
さらに、原稿領域の4頂点座標と、実際の原稿領域の頂点との誤差の最大値を考慮し、16ライン加算し、判定処理に必要なライン数upper_line_num=224ラインとする。これと同様に、原稿の左端部分の検知に必要なライン数は、原稿候補の第1頂点V0[0]の横方向成分と、第3頂点V2[0]の横方向成分との差分によって、312ラインが最低限必要である。さらに、原稿領域を確実に解析するためには、第1原稿検知誤差の最大値である16ラインを加算し、判定処理に必要なライン数left_line_num=328ラインであるとする。
【0074】
S109で、RAM2に記憶されているJPEGデータのうちで、左端と上端とをデコードし、第2原稿検知を行い、原稿領域を求める。このときの原稿領域を、原稿開始位置の横方向成分real_start_x、縦方向成分real_start_yと、原稿幅real_widthと、原稿高さreal_heightとによって定義する。
【0075】
図8は、RAM2に記憶されているJPEG画像データを示す図である。
【0076】
まず、RAM2に記憶されているJPEGデータの左端から、幅left_line_num(328ピクセル)領域を、デコードし、RAM2に記憶する。
【0077】
図9は、RAM2に記憶されている左端画像データを示す図である。
【0078】
RAM2に記憶されている左端画像データについて、エッジ抽出と、直線抽出と、非原稿領域と原稿領域との画素値の連続性とを用いて、原稿領域と非原稿領域との境界である直線(境界線)を検出する。
【0079】
次に、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値v_start_pointと、終点座標値v_end_pointとを求める。このときの始点座標値v_start_point、終点座標値v_end_pointを、JPEG画像の左上を原点(0,0)とするピクセル数によって定義する。本実施例では、始点座標値v_start_point=(321,9)、終点座標値v_end_point=(7,3631)が検知されたとする。
【0080】
次に、左端と同様に、JPEG画像の上端についても、上端から高さupper_line_num(224ピクセル)の領域を、デコードし、RAM2に記憶する。
【0081】
図10は、RAM2に記憶されている上端画像データを示す図である。
【0082】
RAM2に記憶されている上端画像データについても、解析し、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値h_start_pointと、終点座標値h_end_pointとを求める。本実施例においては、始点座標値h_start_point=(321,9)、終点座標値h_end_point=(2711,218)が検知されたとする。
【0083】
次に、求められた各点座標に基づいて、原稿開始位置の横方向成分real_start_xと、縦方向成分real_start_y、原稿幅real_widthと、原稿高さreal_heightとを求める。
【0084】
横方向成分real_start_xは、始点座標値v_start_pointの横方向成分であるので、本実施例では、横方向成分real_start_x=321である。また、縦方向成分real_start_yは、始点座標値v_start_pointの縦方向成分であるので、本実施例においては、縦方向成分real_start_y=9である。原稿幅real_widthは、始点座標値h_start_pointと終点座標値h_end_pointとの距離であるので、本実施例では、原稿幅real_width=2399、原稿高さreal_height=3636である。
【0085】
また、原稿の傾き角度をθとすると、sinθ、cosθは、それぞれ、次の式(1)、式(2)によって得られる。したがって、本実施例では、sinθ=314/3636、cosθ=3586/3636が記憶される。
【0086】
sinθ=|始点座標値v_start_pointの横方向成分−終点座標値v_end_pointの横方向成分|/原稿高さreal_height……式(1)
cosθ=|始点座標値v_start_pointの縦方向成分−終点座標値v_end_pointの縦方向成分|/原稿高さreal_height……式(2)
次に、S110〜S115を繰り返すことによって、読み取った画像データを、記録用紙に記録する。
【0087】
S110で、JPEG画像から求めた原稿領域をデコードし、RAM2に保存する。このときに、滞留可能なライン数(RAM2に保存可能なライン数)の最大値に達すると、S111に進む。
【0088】
次に、S111で、傾き補正(S112)に必要なライン数に達したかどうかを判断し、達すると、S112を実行する。また、達しなければ、S110に戻り、デコードを再開する。本実施例において、傾き補正処理(S112)に必要な最低ライン数は、始点座標値h_start_pointの高さ成分と、終点座標値h_end_pointの高さ成分との差分によって求められ、本実施例では、209ラインである。よって、JPEG画像をデコードし、原稿領域を含むライン(209ライン)を蓄積した後に、原稿領域についての傾き補正を開始する。
【0089】
次に、S112では、画像中の原稿領域について、傾き補正を行う。このときに、sinθとcosθとを用いた座標変換と補間演算とによって、傾き補正を行う。
【0090】
S113で、記録用画像処理を行う。つまり、拡大、縮小、色変換、量子化を行い、この処理結果を、RAM2に記憶する。
【0091】
S114で、生成された量子化後の画像データを記録部6に渡し、記録部6を制御することによって、記録用紙への印字を開始する。S115で、原稿領域の全てを記録したかどうかを判断し、全てを記録したら、終了し、それ以外の場合は、S110に戻る。
【0092】
上記処理によって、傾いて置かれている複数の原稿に基づいて、原稿領域を精度良く抽出し、記録用紙に記録することができる。
【0093】
本実施例では、圧縮方式がJPEGであるが、MR圧縮等、他の圧縮方式を用いるようにしてもよい。また、RAM2の容量が充分であれば、非圧縮で記憶するようにしてもよい。
【0094】
また、輝度の閾値に基づいて、第1原稿検知を実行するが、エッジ検出等を用いた検知方法等、他の検知方法を用いてもよい。さらに、第2原稿検知でも、上記と同様に、他の検知方法を用いるようにしてもよい。
【0095】
本実施例において、第2原稿検知を行う際に、JPEGのデコードを比較的高速に行うことができる上端と左端との画像データを、解析対象にするが、他の部分を解析対象にするようにしてもよい。
【0096】
図11は、第2原稿検知において行う検知領域の例を示す図である。
【0097】
たとえば、より高速かつ必要な記憶領域を少なく検知するために、図11に示すように、JPEG画像の左上、右上、左下の3点のデータに基づいて、原稿領域の4頂点が含まれることが保証される矩形領域を切出し、解析する方法等を採用するようにしてもよい。
【0098】
図12は、第2原稿検知において行う検知領域の例を示す図である。
【0099】
図12に示すように、原稿の4つの辺が含まれることが保証される上端、左端、下端、右端の領域を解析対象領域とし、より高精度に検知するようにしてもよい。
【0100】
その他、上端と下端とを解析対象領域とする方法や、左端と右端とを解析対象領域とする方法等を採用するようにしてもよい。
【0101】
また、第2原稿検知において原稿領域を検知する際に、原稿端部の欠けた領域や、影部等を検出し、記録処理時に補正するようにしてもよい。
【0102】
本実施例では、第2原稿検知に必要なライン数を、傾き量によって動的に計算するが、原稿の傾き量に制限がある場合、傾き量の最悪値によって算出された固定のライン数としてもよい。
【実施例2】
【0103】
本発明の実施例2は、第2原稿検知を行う前に傾き補正を行う実施例であり、このために、第2原稿検知に必要な領域が少なくても足りる。また、実施例2は、実施例1における画像記録装置100を使用し、ROM1の内部に記憶されているプログラムを変えることによって実現可能である。
【0104】
図13は、実施例2におけるROM1に記憶されているプログラムによる制御によって、原稿検知とコピーとを実行する動作を示すフローチャートである。
【0105】
実施例2において、実施例1と同様に、読取部8は、600dpi、75dpiで画像データを読み込む能力を有し、記録部6は、600dpiの解像度で画像データを記録する能力を有する。また、原稿台のサイズは、横方向に220ミリ、縦方向に300ミリであるとする。さらに、実施例2において、実施例1と同様に、原稿台には、2種類の原稿が設置され、それぞれを原稿1、原稿2とする。
【0106】
まず、S201で、実施例1と同様に、読取部8を制御し、75dpiで、原稿台全面をスキャンし、読み取った画像データを、RAM2に記憶する。
【0107】
次に、S202で、実施例1で説明したS102と同様に、第1原稿検知を実行し、原稿候補である領域の4頂点を検知する。
【0108】
S202で、RAM2に記憶されている画像データを解析し、原稿台に設置されている原稿毎に、原稿領域を検知する。実施例2において、原稿を検知する場合、プレスキャン画像データを、輝度による閾値を用い、原稿領域と非原稿領域とに像域分離する。このときに、原稿端部において、原稿領域と非原稿領域とがあいまいである部分が存在する。実施例2では、このあいまいな領域が原稿領域であると判定されるような閾値を設定する。
【0109】
実施例2では、原稿1についての原稿候補領域の4頂点座標の値が、それぞれV0[0]=(118,59)、V1[0]=(418,85)、V2[0]=(79,507)、V3[0]=(378,533)であると検知されたとする。ただし、座標値は、75dpiでのピクセル値で表現され、(横方向の座標値,縦方向の座標値)であるとし、読取基準位置を(0,0)と定義する。
【0110】
複数の原稿が設置されている場合、原稿2、原稿3、……のそれぞれについて、4頂点を求める。たとえば、2つ目の原稿(原稿2)に対する4頂点座標は、それぞれ、第1頂点V0[1]、第2頂点V1[1]、第3頂点V2[1]、第4頂点V3[1]に保存される。
【0111】
N枚目の原稿(原稿N)についての4頂点座標は、それぞれ、第1頂点V0[N−1]、第2頂点V1[N−1]、第3頂点V2[N−1]、第4頂点V3[N−1]であると定義づけ、記憶される。
【0112】
以降、実施例2において、原稿1をコピーする場合を例にとって、説明する。
【0113】
S203で、本スキャン範囲を求める。実施例1で説明したS103と同様に、本スキャンの読取範囲は、読み取り開始位置area_ofs_x、area_ofs_yと、読み取り幅area_widthと、読み取り高さarea_heightとによって定義される。原稿候補領域の各頂点座標は、600dpi相当のピクセル数で、V0[0]=(936,464)、V1[0]=(3352,672)、V2[0]=(624,4064)、V3[0]=(3032,4272)であるとする。
【0114】
よって、読取範囲も、実施例1と同様に、area_ofs_x=624、area_ofs_y=464、読み取り幅area_width=2728、読み取り高さarea_height=3808である。また、同時に、原稿候補領域の幅と高さとを求める。ここで、原稿候補領域の幅がpre_widthであり、その高さがpre_heightであると定義する。pre_widthは、第1頂点V0[0]=(936,464)と、第2頂点V1[0]=(3352,672)との距離であるので、原稿候補領域幅が、pre_width=2425であると記憶する。
【0115】
同様に、pre_heightは、第1頂点V0[0]=(936,464)と第3頂点V2[0]=(624,4064)との距離であるので、原稿候補領域高さが、pre_height=3613であると記憶する。
【0116】
また、原稿の傾き候補角度がθ1であるとすると、sinθ1、cosθ1は、それぞれ、次の式(3)、式(4)によって得られる。したがって、実施例2では、sinθ1=312/3613、cosθ1=3600/3613が、原稿候補領域の傾き量を表すパラメータであるとして記憶する。
【0117】
sinθ1=|V0[0]の横方向成分−V2[0]の横方向成分|/pre_height……式(3)
cosθ1=|V0[0]の縦方向成分−V2[0]の縦方向成分|/pre_height……式(4)
次に、S204〜S209の処理を繰り返し、原稿候補領域を読み取り、JPEG画像としてRAM2に保存する。
【0118】
まず、S204で、本スキャンを実行する。S204で、読取部8を制御し、600dpiで原稿台の特定の矩形領域を、順次1ラインずつ読み取り、RAM2に記憶する。このときに読み取る領域は、読み取り開始位置area_ofs_x、area_ofs_y、読み取り幅area_width、読み取り高さarea_heightによって定義される矩形領域である。
【0119】
S205で、第1の傾き補正(S206)をするために必要なライン数をスキャンしたかどうかを判断し、傾き補正が可能であると判断すれば、S206に進む。それ以外の場合、S204で、再びスキャンする。
【0120】
ここで、傾き補正(S206)において、1ライン分の傾き補正を行うためには、原稿候補領域の第1頂点V0[0]と第2頂点V1[0]とが、読み取り画像データに含まれている必要がある。実施例2では、第1頂点V0[0]の縦方向成分と、第2頂点V1[0]の縦方向成分との差分である208ライン以上が必要である。よって、実施例2では、滞留している本スキャンの出力画像のライン数が、208ライン以上であれば、S206に進む。滞留している本スキャンの出力画像のライン数が、208ライン未満であれば、S204でスキャンを開始する。
【0121】
S206で、第1の傾き補正を行う。RAM2に保存されている読み取り画像データに傾き補正を行い、この補正結果を、RAM2に保存する。このときに保存するデータは、原稿候補領域内の画素のデータのみである。また、sinθ1とcosθ1とを用いた座標変換と補間演算とによって、傾きを補正する。
【0122】
S207で、エンコード(S208)するために必要なライン数に達しているかどうかを判断し、達していれば、S208に進む。それ以外であれば、S205に戻り、第1の傾き補正処理や、本スキャンを再開する。
【0123】
ここで、実施例2において、JPEGエンコード(S208)するために必要なライン数を16ラインとし、S206で、16ラインまで出力可能であるとする。ただし、入力データが終了していれば、処理を終了し、S208に進む。
【0124】
次に、S208で、JPEGエンコードを行う。実施例2では、入力となる16ラインのデータ毎に、圧縮し、JPEG画像データを生成する。実施例2では、最終データの処理が終了すると、S203で求めた幅pre_width=2425であり、高さpre_height=3613であるJPEG画像を、RAM2に保存する。
【0125】
また、S209で、幅pre_width、高さpre_height分のデータを全てエンコードしたかどうかを判断し、エンコード済みであれば、S210に進む。エンコードが完了していなければ、S207に戻り、エンコード処理、傾き補正、本スキャンを行う。
【0126】
S210で、第2原稿検知(S211)に必要なライン数を求める。原稿上端部分での原稿領域と非原稿領域との判定処理に必要なライン数upper_line_numと、原稿左端部分における原稿領域と非原稿領域との判定処理(原稿領域・非原稿領域判定処理)に必要なライン数left_line_numとを計算する。
【0127】
判定に必要なライン数は、第1原稿検知(S202)の精度と、第1の傾き補正(S206)の精度とによって定められる。実施例2では、第1原稿検知S202の誤差と、第1の傾き補正S206の誤差とが最大で32ラインであるとする。したがって、判定処理に必要なライン数upper_line_num=32ラインとし、判定処理に必要なライン数left_line_num=32ラインとする。第1の傾き補正によって、実施例1と比べて必要なライン数が削減され、第2原稿検知が高速になる。
【0128】
S211で、実施例1におけるS109と同様に、RAM2に記憶されているJPEGデータのうちで、左端と上端とをデコードし、第2原稿検知を行い、原稿領域を求める。このときに、原稿開始位置の横方向成分が、横方向成分real_start_xであり、縦方向成分が、real_start_yであり、原稿幅が、real_widthであり、原稿高さが、real_heightであると定義する。
【0129】
まず、RAM2に記憶されているJPEGデータの左端から、幅left_line_num(32ピクセル)の領域をデコードし、RAM2に記憶する。次に、RAM2に記憶されている左端画像データについて、エッジ抽出と、直線抽出と、非原稿領域と原稿領域との画素値の連続性とを用い、原稿領域と非原稿領域との境界である直線(境界線)を検出する。
【0130】
次に、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値v_start_pointと終点座標値v_end_pointとを求める。このときの始点座標値v_start_point、終点座標値v_end_pointを、JPEG画像の左上を原点(0,0)としたピクセル数によって定義する。実施例2において、始点座標値v_start_point=(7,9)、終点座標値v_end_point=(0,3608)が検知されたとする。
【0131】
次に、左端と同様に、JPEG画像の上端についても、上端の値に基づいて、高さupper_line_num(32ピクセル)の領域をデコードし、RAM2に記憶する。
【0132】
RAM2に記憶されている上端画像データを、解析し、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値h_start_pointと、終点座標値h_end_pointとを求める。実施例2において、始点座標値h_start_point=(7,9)、終点座標値h_end_point=(2406,5)が検知されたとする。
【0133】
実施例2では、始点座標値v_start_pointと始点座標値h_start_pointとの検知結果が同じであるが、一致しないケースもある。始点座標値v_start_pointと始点座標値h_start_pointとが異なる結果であれば、v_border_lineとh_border_lineとの交点座標を求める。この得られた交点座標を、始点座標値v_start_point、始点座標値h_start_pointとし、2つのパラメータを一致させる。次に、求められた各点座標から、原稿開始位置の横方向成分real_start_xと、縦方向成分real_start_yと、原稿幅real_widthと、原稿高さreal_heightとを求める。横方向成分real_start_xは、始点座標値v_start_point(始点座標値h_start_pointと等しい)の横方向成分であるので、実施例2において、横方向成分real_start_x=7である。また、縦方向成分real_start_yは、始点座標値v_start_point(始点座標値h_start_pointと等しい)の縦方向成分であるので、実施例2において、縦方向成分real_start_y=9である。原稿幅real_widthは、始点座標値h_start_pointと終点座標値h_end_pointとの距離によって求められるので、実施例2において、原稿幅real_width=2399、原稿高さreal_height=3599である。
【0134】
また、JPEG画像中の原稿の傾き角度をθ2とすると、sinθ2、cosθ2は、それぞれ、次の式(5)、式(6)によって得られる。したがって、実施例2では、sinθ2=7/3599、cosθ2=3599/3599が記憶される。実施例2では、演算精度の都合上、cosθ2の値が1であるが、微小な誤差であるので、実使用上は問題無い。ただし、演算精度を上げる程、より正確な値を得ることができる。
【0135】
sinθ2=|始点座標値v_start_pointの横方向成分−終点座標値v_end_pointの横方向成分|/原稿高さreal_height……式(5)
cosθ2=|始点座標値v_start_pointの縦方向成分−終点座標値v_end_pointの縦方向成分|/原稿高さreal_height……式(6)
次に、S212〜S217を繰り返すことによって、読み取った画像データを、記録用紙に記録する。
【0136】
S212では、S208で求められた原稿領域を、JPEG画像から切出し、デコードし、RAM2に保存する。
【0137】
次に、S213で、デコードライン数が、第2の傾き補正(S214)で必要なライン数に達したかどうかを判断する。傾き補正に必要なライン数に達すれば、S214に進み、それ以外の場合、S212に戻り、デコードを再開する。また、実施例2において、傾き補正S214に必要な最低ライン数は、始点座標値h_start_pointの高さ成分と、終点座標値h_end_pointの高さ成分との差分によって求められ、実施例2では、4ラインである。よって、S213では、デコード結果が4ライン以上蓄積されているかどうかを判断基準とする。
【0138】
次に、S215で、第2の傾き補正を行う。sinθ2とcosθ2とを用いた座標変換と補間演算とによって、第2の傾き補正を行う。また、実施例2のように、θ2の値が微小である場合、第2の傾き補正(S214)を実行しなくても、出力結果に、大きな影響がない。
【0139】
S215で、記録用画像処理を行う。つまり、拡大、縮小、色変換、量子化を行い、この処理結果を、RAM2に記憶する。
【0140】
次に、S216で、得られた量子化後の画像データを、記録部6に渡し、記録部6を制御することによって、記録用紙に印字する。
【0141】
S217で、全ての原稿領域データを記録したかどうかを判断し、全て記録済みであれば終了する。それ以外の場合、S212で、デコードを再開する。
【0142】
実施例2において、第2原稿検知を行う際に、JPEGのデコードを、比較的高速に行うことができる上端と左端との画像データを解析の対象にするが、他の部分を解析対象にするようにしてもよい。たとえば、より高速かつ必要な記憶領域を少なく検知するために、図11に示すように、JPEG画像の左上、右上、左下の3点に基づいて、原稿領域の4頂点が含まれていることが保証される矩形領域を切出し、解析するようにしてもよい。
【0143】
また、図12に示すように、原稿の4つの辺が含まれていることが保証される上端、左端、下端、右端の領域を、解析対象領域とし、より高精度に検知するようにしてもよい。
【0144】
その他、上端と下端とを解析対象領域とする方法や、左端と右端とを解析対象領域とする方法等が考えられる。
【0145】
また、第2原稿検知において、原稿領域を検知する際、原稿端部の欠けた領域や、影部等を検出し、記録処理時に補正するようにしてもよい。
【実施例3】
【0146】
本発明の実施例3は、通信インタフェース12を介して接続された外部機器200に、画像を出力する実施例である。
【0147】
つまり、実施例3は、画像を生成する処理を、画像記録装置100に対応する画像記録装置100aと、外部機器200とで分担する。
【0148】
画像記録装置100では、プレスキャン処理と第1原稿検知とを行った後に、本スキャンし、外部機器200に随時画像データを送信する。外部機器200は、受け取った画像データの端部について、第2原稿検知を行い、必要な領域を切出す。また、必要であれば、傾き補正し、画像データをファイルとして、外部機器内の不揮発性RAMに蓄積する。
【0149】
次に、画像記録装置100の処理について説明する。
【0150】
図14は、実施例3において、画像記録装置100の動作を示すフローチャートである。
【0151】
画像記録装置100は、外部機器200からのジョブをトリガとし、処理を開始する。実施例3において、実施例1と同様に、読取部8は、600dpi、75dpiで画像データを読み込む能力を有し、原稿台のサイズは、横方向が220ミリであり、縦方向が300ミリであるとする。記録部6は、画像データを600dpiの解像度で記録する能力を有する。さらに、実施例3において、実施例1と同様に、原稿台には、2種類の原稿が設置され、それぞれが、原稿1、原稿2であるとする。
【0152】
原稿1は、その幅が101.6ミリであり、その高さが152.4ミリであり、読取基準位置から縦方向に20ミリ、横方向に40ミリ離れた位置に設置され、時計回りに、5度傾いている状態で設置されているとする。また、原稿2は、その幅が101.6ミリであり、その高さが152.4ミリであり、読取基準位置から縦方向に200ミリ、横方向に100ミリ離れた位置に設置され、反時計回りに、5度傾いた状態で設置されているとする。
【0153】
まず、S301で、実施例1と同様に、読取部8を制御し、75dpiで、原稿台全面をスキャンし、読み取った画像データをRAM2に記憶する。
【0154】
次に、第1原稿検知(S302)の動作について説明する。
【0155】
実施例1で説明したS102と同様に、第1原稿検知を行い、原稿候補となる領域の4頂点を検知する。S302で、RAM2に記憶されている画像データを解析し、原稿台に設置されている原稿毎に、原稿領域を検知する。実施例3において、原稿検知する場合、プレスキャン画像データにおいて、輝度による閾値を用い、原稿領域と非原稿領域とに像域分離する。このときに、原稿端部に関して、原稿領域と非原稿領域とがあいまいである部分が存在する。実施例3では、あいまいな領域が、原稿領域であると判定される閾値を設定する。
【0156】
実施例3では、原稿1に対する原稿候補領域の4頂点座標値は、それぞれV0[0]=(118,59)、V1[0]=(418,85)、V2[0]=(79,507)、V3[0]=(378,533)が検知されたとする。ただし、座標値は、75dpiでのピクセル値で表現され、(横方向の座標値,縦方向の座標値)とし、読取基準位置が(0,0)であると定義する。
【0157】
次に、S303で、実施例1のS103と同様に、本スキャンの読取範囲を定める。本スキャンの読取範囲は、実施例1と同様に、読み取り開始位置area_ofs_x、area_ofs_yと、読み取り幅area_widthと、読み取り高さarea_heightとによって定義される。
【0158】
実施例3において、実施例1のS103と同様に、読取範囲が定まる。つまり、読み取り開始位置area_ofs_x=624、読み取り開始位置area_ofs_y=464、読み取り幅area_width=2728、読み取り高さarea_height=3808によって、読取範囲が定まる。
【0159】
次に、S304で、本スキャンを実行する。S304で、読取部8を制御し、矩形領域を、順次1ライン毎に読み取り、RAM2に記憶する。つまり、600dpiで、読み取り開始位置area_ofs_x、読み取り開始位置area_ofs_y、読み取り幅area_width、読み取り高さarea_heightで定義される矩形領域を、順次1ライン毎に読み取り、RAM2に記憶する。このときに、RAM2の容量や使用量に応じて、一度にRAM2に滞留させることができるライン数の限界値(規定量)が定められ、この限界値(規定量)に達すると、読み取り処理を一時的に中断させる。実施例3において、上記限界値(規定量)を16ラインとにする。
【0160】
S305で、RAM2に滞留している画像データを、通信インタフェース12を介して、順次、外部機器200に送信する。読取範囲の画像データの全てを、外部機器200に送信する。実施例3において、圧縮処理を行わずに画像データを送信しているが、JPEGやMR等で、圧縮すれば、より高速に転送を行うことができる。
【0161】
S306では、読取範囲の全てを転送したかどうかを判断し、全てを転送し終わると、終了する。また、それ以外の場合、S304に戻り、本スキャンを再開する。
【0162】
次に、外部機器200で行う処理について説明する。
【0163】
図15は、実施例3において、外部機器200による処理動作を示すフローチャートである。
【0164】
S307で、画像記録装置100から受け取った本スキャン結果画像を蓄積する。
【0165】
次に、S308で、実施例1におけるS108と同様に、第2原稿検知処理(S309)で必要なライン数を求める。実施例3では、実施例1と同様に、原稿上端部分と左端部分とを解析対象にする。原稿上端部の解析に必要なライン数を、upper_line_numと定義し、原稿左端部の解析に必要なライン数を、left_line_numと定義する。このときに、それぞれの値は、実施例1と同様に、判定処理に必要なライン数upper_line_num=224ラインであるとし、判定処理に必要なライン数left_line_num=348ラインであるとする。
【0166】
次に、S309で、第2原稿検知処理を行う。保存された画像データの左端から、判定処理に必要なライン数left_line_numの領域について、エッジ抽出と、直線抽出と、非原稿領域と原稿領域との画素値の連続性を用い、原稿領域と非原稿領域との境界である直線(境界線)とを検出する。なお、上記判定処理に必要なライン数left_line_numは、348ライン分である。
【0167】
次に、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値v_start_pointと、終点座標値v_end_pointとを求める。このときにおける始点座標値v_start_point、終点座標値v_end_pointは、本スキャンの読取開始点を原点(0,0)としたピクセル数によって定義される。実施例3において、実施例1と同様に、始点座標値v_start_point=(321,9)、終点座標値v_end_point=(7,3631)が検知されたとする。
【0168】
次に、上端についても、上端から高さupper_line_num(224ピクセル分)の領域について解析し、非原稿領域と原稿領域との境界である直線(境界線)の始点座標値h_start_pointと終点座標値h_end_pointとを求める。実施例3において、実施例1と同様に、始点座標値h_start_point=(321,9)、終点座標値h_end_point=(2711,218)であると検知されたとする。
【0169】
次に、求められた各点座標から、原稿開始位置の横方向成分real_start_xと縦方向成分real_start_yと、原稿幅real_widthと、原稿高さreal_heightとを求める。
【0170】
横方向成分real_start_xは、実施例3において、実施例1と同様に、横方向成分real_start_x=321、縦方向成分real_start_y=9である。原稿幅real_widthは、始点座標値h_start_pointと終点座標値h_end_pointとの距離によって求められるので、実施例3において、原稿幅real_width=2399、原稿高さreal_height=3599である。
【0171】
また、原稿の傾き角度をθとすると、sinθ、cosθは、それぞれ実施例1で記載した式(1)、式(2)によって得られる。したがって、実施例3において、実施例1と同様に、sinθ=314/3599、cosθ=3586/3599として記憶される。
【0172】
次に、S310で蓄積された画像データのうちで、原稿領域について、傾き補正処理を行う。このときの傾き補正は、sinθとcosθとを用いた座標変換と補間演算とによって、原稿領域について行う補正である。
【0173】
次に、S311で、出力された画像データを電子ファイルとして、外部機器内の不揮発性RAMに保存し、終了する。
【0174】
上記処理によって、原稿台に設置されている原稿の複製となる画像データを、精度良く生成し、電子ファイルとして外部機器200に蓄積保存することができる。
【0175】
実施例3について、印刷機能を有する画像記録装置100を用いて説明したが、実施例3のように、外部機器に対して読み取った画像データを保存する用途であれば、印刷機能を有する必要は無い。たとえば、シングルファンクションスキャナのように、画像読取装置を用いるようにしてもよい。
【0176】
また、実施例3において、実施例2で示した例と同様に、第2の解析処理を行う前に、傾き補正を行うことによって、第2の解析処理で必要となる解析範囲を削減することができる。
【0177】
また、実施例3において、実施例1、2と同様に、第2原稿検知を行う際に、上端と左端との画像データを解析対象としたが、他の部分を解析対象にするようにしてもよい。たとえば、より高速かつ必要な記憶領域を少なく検知するために、図11に示すように、画像の左上、右上、左下の3点に基づいて、原稿領域の4頂点が含まれることが保証される矩形領域を切出し、解析するようにしてもよい。
【0178】
また、図12に示すように、原稿の4つの辺が含まれることが保証される上端、左端、下端、右端の領域を、解析対象領域とし、より高精度に検知するようにしてもよい。
【0179】
その他、上端と下端とを解析対象領域とする方法や、左端と右端とを解析対象領域とする方法等が考えられる。
【0180】
上記実施例によれば、原稿領域の候補になる領域を高速で限定し、この限定された領域を、高解像度で読み取った後に、この読み取った画像の一部分を詳細に解析するので、読取動作や、解析処理に要する時間が短く、原稿領域情報を高精度で得ることができる。
【0181】
また、上記実施例によれば、高解像度で読み取ったデータを一度圧縮して保存し、解析に必要な個所だけを、部分的に伸張し、解析処理するので、一面分の高解像度非圧縮データを保存する記憶領域を持たなくても、高解像度のデータを解析処理することができる。
【0182】
つまり、上記実施例は、原稿台に設置されている原稿を読み取る画像読取装置において、原稿領域の候補である原稿領域候補を検出する第1原稿検知手段と、上記原稿領域候補の画像を読み取る読取手段とを有する。また、上記実施例は、上記読み取った上記原稿領域候補の画像の端部領域のうちで、解析する範囲を設定する解析範囲設定手段と、上記解析範囲設定手段が解析した画像の2辺の高解像度データに基づいて原稿の輪郭を検知する第2原稿検知手段とを有する。上記実施例は、上記解析範囲設定手段が解析した画像の2辺の高解像度データに基づいて、原稿の傾きを検出する傾き検出手段と、上記読み取った画像のうちで上記第2原稿検知手段が検知した原稿の輪郭内の画像を切出して画像出力する画像出力手段とを有する。
【0183】
この場合、上記第1原稿検知手段は、第1の解像度で原稿台全面を読み取り、得られた第1の画像から、上記原稿領域の候補となる領域を特定する手段である。上記第2原稿検知手段は、第2の解像度で上記原稿領域の候補である領域を読み取り、得られた第2の画像の端部領域を解析する手段である。上記第1の解像度は、上記第2の解像度よりも低い解像度である。
【0184】
また、上記原稿領域の候補となる領域を読み取ると同時に圧縮し、上記読み取った画像の端部領域のみを伸張し、上記伸張された画像データについて、上記第2原稿検知を行い、上記第2原稿検知によって特定された上記原稿領域を伸張し、出力画像とする。
【0185】
さらに、上記第2原稿検知における解析範囲は、上記傾き検出手段が検出した原稿の傾きに応じて、定められる範囲である。
【0186】
そして、上記実施例を方法の発明として把握することができる。つまり、上記実施例は、原稿台に設置されている原稿を読み取る画像読取装置の制御方法において、原稿領域の候補である原稿領域候補を検出し、記憶装置に記憶する第1原稿検知工程を有する。また、上記実施例は、上記原稿領域候補の画像を読み取り、記憶装置に記憶する読取工程と、上記読み取った上記原稿領域候補の画像の端部領域のうちで、解析する範囲を設定し、記憶装置に記憶する解析範囲設定工程とを有する。そして、上記実施例は、上記解析範囲設定工程で解析された画像の2辺の高解像度データに基づいて原稿の輪郭を検知し、記憶装置に記憶する第2原稿検知工程を有する。さらに、上記実施例は、上記解析範囲設定工程で解析された画像の2辺の高解像度データに基づいて、原稿の傾きを検出し、記憶装置に記憶する傾き検出工程を有する。しかも、上記実施例は、上記読み取った画像のうちで、上記第2原稿検知工程で検知された原稿の輪郭内の画像を切出し、記憶装置に記憶し、画像出力する画像出力工程を有する画像読取装置の制御方法の例である。
【図面の簡単な説明】
【0187】
【図1】本発明の一実施例である画像記録装置100の構成を示すブロック図である。
【図2】画像記録装置100を示す斜視図である。
【図3】画像記録装置100を示す斜視図である。
【図4】画像記録装置100に記憶されているプログラム構成を示す図である。
【図5】ROM1に記憶されているプログラムによって、画像記録装置100を制御し、原稿検知とコピーとを実行する動作を示すフローチャートである。
【図6】画像記録装置100において、RAM2に記憶されている画像データを示す図である。
【図7】本スキャンの読取範囲を示す図である。
【図8】RAM2に記憶されているJPEG画像データを示す図である。
【図9】RAM2に記憶されている左端画像データを示す図である。
【図10】RAM2に記憶されている上端画像データを示す図である。
【図11】第2原稿検知において行う検知領域の例を示す図である。
【図12】第2原稿検知において行う検知領域の例を示す図である。
【図13】実施例2におけるROM1に記憶されているプログラムによる制御によって、原稿検知とコピーとを実行する動作を示すフローチャートである。
【図14】実施例3において、画像記録装置100の動作を示すフローチャートである。
【図15】実施例3において、外部機器200による処理動作を示すフローチャートである。
【符号の説明】
【0188】
100…画像記録装置、
1…ROM、
2…RAM、
3…不揮発性RAM、
4…操作部、
5…表示部、
6…記録部、
7…画像処理部、
8…読取部。
【特許請求の範囲】
【請求項1】
原稿台に設置されている原稿を読み取る画像読取装置において、
原稿領域の候補である原稿領域候補を検出する第1原稿検知手段と;
上記原稿領域候補の画像を読み取る読取手段と;
上記読み取った上記原稿領域候補の画像の端部領域のうちで、解析する範囲を設定する解析範囲設定手段と;
上記解析範囲設定手段が解析した画像の2辺の高解像度データに基づいて原稿の輪郭を検知する第2原稿検知手段と;
上記読み取った画像のうちで、上記第2原稿検知手段が検知した原稿の輪郭内の画像を切出して画像出力する画像出力手段と;
を有することを特徴とする画像読取装置。
【請求項2】
請求項1において、
上記第1原稿検知手段は、第1の解像度で原稿台全面を読み取り、得られた第1の画像から、上記原稿領域の候補となる領域を特定する手段であり、
上記第2原稿検知手段は、第2の解像度で上記原稿領域の候補である領域を読み取り、得られた第2の画像の端部領域を解析する手段であり、
上記第1の解像度は、上記第2の解像度よりも低い解像度であることを特徴とする画像読取装置。
【請求項3】
請求項1において、
上記原稿領域の候補となる領域を読み取ると同時に圧縮し、上記読み取った画像の端部領域のみを伸張し、上記伸張された画像データについて、上記第2原稿検知を行い、上記第2原稿検知によって特定された上記原稿領域を伸張し、出力画像とすることを特徴とする画像読取装置。
【請求項4】
請求項1において、
さらに、上記解析範囲設定手段が解析した画像の2辺の高解像度データに基づいて、原稿の傾きを検出する傾き検出手段と;
を有し、
上記第2原稿検知における解析範囲は、上記傾き検出手段が検出した原稿の傾きに応じて、定められる範囲であることを特徴とする画像読取装置。
【請求項5】
原稿台に設置されている原稿を読み取る画像読取装置の制御方法において、
原稿領域の候補である原稿領域候補を検出し、記憶装置に記憶する第1原稿検知工程と;
上記原稿領域候補の画像を読み取り、記憶装置に記憶する読取工程と;
上記読み取った上記原稿領域候補の画像の端部領域のうちで、解析する範囲を設定し、記憶装置に記憶する解析範囲設定工程と;
上記解析範囲設定工程で解析された画像の2辺の高解像度データに基づいて原稿の輪郭を検知し、記憶装置に記憶する第2原稿検知工程と;
上記読み取った画像のうちで、上記第2原稿検知工程で検知された原稿の輪郭内の画像を切出し、記憶装置に記憶し、画像出力する画像出力工程と;
を有することを特徴とする画像読取装置の制御方法。
【請求項6】
さらに、上記解析範囲設定工程で解析された画像の2辺の高解像度データに基づいて、原稿の傾きを検出する傾き検出工程と;
を有し、
上記第2原稿検知における解析範囲は、上記傾き検出工程で検出された原稿の傾きに応じて定められることを特徴とする画像読取装置の制御方法。
【請求項1】
原稿台に設置されている原稿を読み取る画像読取装置において、
原稿領域の候補である原稿領域候補を検出する第1原稿検知手段と;
上記原稿領域候補の画像を読み取る読取手段と;
上記読み取った上記原稿領域候補の画像の端部領域のうちで、解析する範囲を設定する解析範囲設定手段と;
上記解析範囲設定手段が解析した画像の2辺の高解像度データに基づいて原稿の輪郭を検知する第2原稿検知手段と;
上記読み取った画像のうちで、上記第2原稿検知手段が検知した原稿の輪郭内の画像を切出して画像出力する画像出力手段と;
を有することを特徴とする画像読取装置。
【請求項2】
請求項1において、
上記第1原稿検知手段は、第1の解像度で原稿台全面を読み取り、得られた第1の画像から、上記原稿領域の候補となる領域を特定する手段であり、
上記第2原稿検知手段は、第2の解像度で上記原稿領域の候補である領域を読み取り、得られた第2の画像の端部領域を解析する手段であり、
上記第1の解像度は、上記第2の解像度よりも低い解像度であることを特徴とする画像読取装置。
【請求項3】
請求項1において、
上記原稿領域の候補となる領域を読み取ると同時に圧縮し、上記読み取った画像の端部領域のみを伸張し、上記伸張された画像データについて、上記第2原稿検知を行い、上記第2原稿検知によって特定された上記原稿領域を伸張し、出力画像とすることを特徴とする画像読取装置。
【請求項4】
請求項1において、
さらに、上記解析範囲設定手段が解析した画像の2辺の高解像度データに基づいて、原稿の傾きを検出する傾き検出手段と;
を有し、
上記第2原稿検知における解析範囲は、上記傾き検出手段が検出した原稿の傾きに応じて、定められる範囲であることを特徴とする画像読取装置。
【請求項5】
原稿台に設置されている原稿を読み取る画像読取装置の制御方法において、
原稿領域の候補である原稿領域候補を検出し、記憶装置に記憶する第1原稿検知工程と;
上記原稿領域候補の画像を読み取り、記憶装置に記憶する読取工程と;
上記読み取った上記原稿領域候補の画像の端部領域のうちで、解析する範囲を設定し、記憶装置に記憶する解析範囲設定工程と;
上記解析範囲設定工程で解析された画像の2辺の高解像度データに基づいて原稿の輪郭を検知し、記憶装置に記憶する第2原稿検知工程と;
上記読み取った画像のうちで、上記第2原稿検知工程で検知された原稿の輪郭内の画像を切出し、記憶装置に記憶し、画像出力する画像出力工程と;
を有することを特徴とする画像読取装置の制御方法。
【請求項6】
さらに、上記解析範囲設定工程で解析された画像の2辺の高解像度データに基づいて、原稿の傾きを検出する傾き検出工程と;
を有し、
上記第2原稿検知における解析範囲は、上記傾き検出工程で検出された原稿の傾きに応じて定められることを特徴とする画像読取装置の制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2008−227852(P2008−227852A)
【公開日】平成20年9月25日(2008.9.25)
【国際特許分類】
【出願番号】特願2007−62308(P2007−62308)
【出願日】平成19年3月12日(2007.3.12)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成20年9月25日(2008.9.25)
【国際特許分類】
【出願日】平成19年3月12日(2007.3.12)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]