画像読取装置、その制御方法、及びプログラム
【課題】回路規模の増大化を抑制しつつ、読み取られた原稿の表面と裏面の画像を補正することができる。
【解決手段】表面読取部106により読取られた原稿100の表面の画像データは、原稿100が斜行しない場合のRAM503の書き込みアドレスに一旦書込まれる。そして、表面の画像データは、原稿100の斜行角度に応じた回転角度で回転処理される。この際、回転後のRAM503上の書込みアドレスは、アフィン変換により求められる。一方、裏面の画像データは、原稿100の斜行角度を考慮しない場合の書込みアドレスが、原稿100の実際の斜行角度に応じて変更され、その変更後の書込みアドレスに書込まれる。
【解決手段】表面読取部106により読取られた原稿100の表面の画像データは、原稿100が斜行しない場合のRAM503の書き込みアドレスに一旦書込まれる。そして、表面の画像データは、原稿100の斜行角度に応じた回転角度で回転処理される。この際、回転後のRAM503上の書込みアドレスは、アフィン変換により求められる。一方、裏面の画像データは、原稿100の斜行角度を考慮しない場合の書込みアドレスが、原稿100の実際の斜行角度に応じて変更され、その変更後の書込みアドレスに書込まれる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像読取装置、その制御方法、及びプログラムに関し、特に原稿の表裏を同時に読み取る場合の原稿斜行補正技術に関する。
【背景技術】
【0002】
近年、デジタル複写機、フラットベットスキャナ等の画像読取装置において、1回の原稿搬送で当該原稿の表裏を同時に読み取る機能が実現されている。
【0003】
この種の画像形成装置では、通常、原稿の表裏両面をそれぞれ表面用センサ、裏面用センサで読み取っている。このため、原稿が斜行した場合は、表面の読取画像と裏面の読取画像とでは、原稿の斜行角度の2倍の角度で画像が回転した状態となる。従って、現行の両面を同時に読み取る場合には、特に斜行補正技術が重要になってくる。
【0004】
従来の斜行補正技術としては、原稿を読取り位置に搬送する過程でレジストローラに原稿の先端を突き当てて原稿に撓みを持たせることにより、原稿の斜行を補正する技術が一般に用いられていた。
【0005】
しかしながら、このような機械的な構成による斜行補正技術は、原稿読取速度の高速化を阻害する要因となってしまう。そこで、原稿を斜行したままの状態で読取り、CPUや専用の斜行補正回路等によって、斜行角度に応じて斜行補正を行う技術が提案されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−254166号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1では、斜行補正用の回路については、画像読取装置が、表面の読取画像を補正するための回路と裏面の読取画像を補正するための回路とを備える必要がある。このため、回路規模の増大化を招くことになり、画像読取装置のコストアップにつながってしまうる。
【0008】
本発明は、このような技術的な課題に鑑みてなされたものである。その目的は、回路規模の増大化を抑制しつつ、読み取られた原稿の表面と裏面の画像を補正することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明は、原稿の表面を第1の読取部で読み取り、当該原稿の裏面の画像を第2の読取部で読み取る読取手段と、第1の読取部によって読み取られた原稿の前記第1の読取部に対する原稿の斜行角度を検出する検出手段と、検出手段により検出された原稿の斜行角度に従って、第1の読取部で読み取られた画像データ、及び、第2の読取部で読み取られた画像データを補正する補正手段とを備えることを特徴とする。
【発明の効果】
【0010】
本発明によれば、回路規模の増大化を抑制しつつ、読み取られた原稿の表面と裏面の画像を補正することが可能となる。
【図面の簡単な説明】
【0011】
【図1】本発明の実施の形態に係る両面同時読取装置を用いた画像処理装置の外観図である。
【図2】上記両面同時読取装置の搬送系の概略構成を示す断面図である。
【図3】上記両面同時読取装置の表面読取部の概略構成を示す断面図である。
【図4】上記両面同時読取装置の裏面読取部の概略構成を示す断面図である。
【図5】上記画像処理装置の制御系の概略構成を示すブロック図である。
【図6】光学変換素子に対する原稿の斜行状態を示す図である。
【図7】光学変換素子に対する原稿の斜行角度を示す図である。
【図8】原稿の斜行角度の算出処理を示すフローチャートである。
【図9】原稿の表面の斜行補正処理を示すフローチャートである。
【図10】原稿の表面の画像データを画像読取部からRAMへ転送するイメージを示す図である。
【図11】原稿の表面の画像データをIPを使用して斜行補正するイメージを示す図である。
【図12】アフィン変換を説明するための図である。
【図13】裏面用のI/Fコントローラの概略構成を示すブロック図である。
【図14】原稿に関する各種の設定を示す概念図である。
【図15】原稿が斜行しない場合の画像データのRAMへの蓄積状況を示す概念図である。
【図16】原稿が斜行した場合の画像データのRAMへの蓄積状況を示す概念図である。
【図17】斜行状態でRAMに蓄積された画像データを本来の蓄積位置に移動する移動状態を示す概念図である。
【図18】原稿の裏面画像を読取部からRAMへ転送する状態を示す概念図である。
【図19a】裏面の斜行補正のためのアドレス生成処理を示すフローチャートである。
【図19b】図19aの続きのフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態を図面に基づいて説明する。
【0013】
[画像形成装置の外観]
図1は、本発明の実施の形態に係る両面同時読取装置を用いた画像処理装置の外観図である。図1に示すように、本画像処理装置は、スキャナ部200とプリンタ部203を有し、スキャナ部200で読み取られた原稿画像をプリンタ部203で印刷することができる。また、スキャナ部200は、読取対象の原稿を読取位置(原稿台ガラス107:図2等参照)に自動的に給送する自動原稿送り装置201を有している。プリンタ部203は、原稿画像を記録するための各種サイズの記録用紙をそれぞれ収納・給紙する用紙カセット204〜207、印刷済の記録用紙を積載するための排紙トレイ208を有している。
【0014】
自動原稿送り装置201は、操作部202の操作により読取指令が発せられると、複数の原稿を1枚単位で読取位置に順次給送することができる。この場合、自動原稿送り装置201は、積層された原稿を分離ローラ等により1枚単位に分離しながら給送する。
【0015】
スキャナ部200は、自動原稿送り装置201により読み取り位置に給送されてきた原稿上の画像を光学的に読取って光電変換し、その光電変換に係る電子的な画像データをプリンタ部203に転送する。
【0016】
なお、スキャナ部(画像読取装置)200は、読取位置への原稿の1回の搬送過程(搬送工程)で、その原稿の表面と裏面の画像をほぼ同時に読取る両面同時読取機能を有している。そこで、以下の説明においては、スキャナ部(画像読取装置)200を両面同時読取装置200と呼ぶこととする。
【0017】
プリンタ部2003は、転送に係る画像データに基づいて記録用紙(シート)上に画像を印刷する。このプリンタ部203の印刷方式としては、例えば、電子写真方式、インクジェット方式等の各種の印刷方式を採用することができる。プリンタ部203は、画像を記録用紙に印刷した後、その記録用紙を排紙トレイ208に排紙する。
【0018】
[両面同時読取装置の構成]
図2は、両面同時読取装置200の搬送系の概略構成を示すブロック図である。図2において、原稿載置台101には、読取対象の原稿を表面を上にして積層状態で載置する。原稿載置台101に載置された原稿100は、ピックアップローラ102により1枚単位でピックアップされ、給送ローラ103を介して原稿台ガラス107に給送され、更に搬送ローラ104、排紙ローラ110を介して排紙される。
【0019】
この場合、原稿100が原稿台ガラス107を通過する過程で原稿100の両面の画像がほぼ同時に読み取られる。すなわち、原稿100が表面読取部106に対向する位置を通過する際に、表面読取部106の光源105により原稿100の表面に光が照射されることで、原稿100の表面の画像が表面読取部106により読取られる。また、原稿100が裏面読取部109に対向する位置を通過する際に、裏面読取部109の光源108により原稿100の裏面に光が照射されることで、原稿100の裏面の画像が裏面読取部109により読取られる。
【0020】
換言すれば、原稿台ガラス107に原稿100を1回給送するだけで、原稿100の両面の画像がほぼ同時に読取られるので、原稿100の表裏両面の画像を読取るために原稿100を原稿台ガラス107に複数回給送する必要はない。
【0021】
表面読取部106、裏面読取部109は、それぞれ原稿台ガラス107の下面、上面に密着する形態で固定位置に配備されている。従って、原稿100の両面の画像は、所謂、流し読み方式で読取られる(図3,4の矢印参照)。
【0022】
表面読取部106、裏面読取部109は、同様の構成であり、それぞれ、光源105,108、等倍レンズ302,402、ライン型イメージセンサ301,401(第1の光電変換素子群、第2の光電変換素子群)を有する。なお、ライン型イメージセンサ301は、第1の読取部ともいい、ライン型イメージセンサ401は第2の読取部ともいい、ライン型イメージセンサは、ラインセンサともいう。これらデバイスの副走査方向の幅は、原稿100の副走査方向の幅と同等、若しくはそれ以上の幅となっている。
【0023】
上記の流し読みの際には、原稿100の表面、裏面に対して、それぞれ光源105,108により光が照射される。その反射光、即ち、原稿100の表面、裏面の画像をそれぞれ反映した画像光は、それぞれ等倍レンズ302,402を介してライン型イメージセンサ301,401に入射される。ライン型イメージセンサ301,401は、原稿100の表面、裏面からの画像光をそれぞれ光電変換し、電子的な画像データとして出力する。
【0024】
図5は、両面画像同時読取装置200の制御系の概略構成を示すブロック図である。図5において、CPU501は、ROM502に格納されたアプリケーションプログラムを実行することにより、原稿100の両面の画像を同時に読取る同時読取り処理を行う。この際、CPU501は、RAM503をワークエリア等として利用する。
【0025】
なお、ROM502には、後述する図8,9,19のフローチャートに対応する処理をCPU501、すなわちコンピュータが実行するためのアプリケーションプログラムも予め格納されている。また、RAM503は、表面読取部106、裏面読取部109により読取られた表面、裏面の画像データを格納する一時的に格納する画像メモリ(記憶媒体)としても利用される。
【0026】
システムバス504には、上記のCPU501、ROM502、RAM503と共に、I/Fコントローラ505,506を介してそれぞれ表面読取部106、裏面読取部109が接続されている。また、システムバス504には、IP(イメージプロセッシングユニット)507が接続され、HDコントローラ508を介してハードディスク509が接続されている。
【0027】
表面読取部106、裏面読取部109は、CPU501の制御の下に、それぞれ、原稿100が表面読取部106、裏面読取部109の位置を通過する際に、光源105,108により原稿100の表面、裏面にそれぞれ光を照射する。そして、表面読取部106、裏面読取部109は、それぞれ、原稿100の表面、裏面からの画像光をライン型イメージセンサ301,401により光電変換する。
【0028】
次に、表面読取部106、裏面読取部109は、それぞれ、光電変換に係る画像データ(アナログデータ)をデジタルの画像データに変換し、I/Fコントローラ505,506に出力する。I/Fコントローラ505,506は、格納制御手段として機能し、それぞれ、表面読取部106、裏面読取部109からの画像データをRAM503の異なる領域に格納する。
【0029】
IP507は、RAM503に格納された原稿100の表面、裏面に係る画像データに対してシェーディング補正等の各種の画像補正処理を行う。
【0030】
なお、本実施の形態では、上記の原稿100の斜行角度(画像の傾斜角度)は、表面読取部106のライン型イメージセンサ302の画素群の配列方向に対する原稿100の斜行角度を想定している。
【0031】
CPU501は、IP507により画像処理が施された画像データを、HDコントローラ508を介してハードディスク509に格納する。なお、IP507は、CPU501の制御の下に、ハードディスク509に格納されている画像データに対して各種の画像処理を施し、その画像処理結果を再度ハードディスク509に格納する。
【0032】
[斜行角度検出]
次に、原稿の斜行角度の検出手法を、図6〜8に基づいて説明する。なお、原稿の斜行角度の検出は、表面読取部106、裏面読取部109の何れか一方について行えば良く、本実施の形態では、処理の迅速化を図るべく、先に原稿読取りを行う表面読取部106により原稿の斜行角度を検出している。
【0033】
CPU501は、原稿100が斜めに給送され、原稿100の先端がライン型イメージセンサ301を通過したことを検知すると(S801)、タイマ(不図示)を起動させて当該タイマのカウントアップを開始する(S802)。この場合、原稿100が図6のような形態で斜行している場合は、原稿100の右上の角位置Rが、ライン型イメージセンサ301のA点に係る画素位置で最初に検知されることとなる。
【0034】
その後、原稿100の左上の角位置Lが、ライン型イメージセンサ301のB点に係る画素位置で検知されると(S803)、CPU501は、タイマのカウント動作を停止させる(S804)。なお、A点とB点との間の距離、すなわち1ラインの読取り幅WDは、原稿100が斜行した場合は、原稿100の主走査方向の幅(長さ)よりも短くなる。CPU501は、読み取った原稿の画像データから、A点とB点との間の距離、すなわち1ラインの読取り幅WDを特定する。
【0035】
そして、CPU501は、タイマのカウント値と、原稿100の単位時間当たりの搬送速度を乗算することで、原稿100の1つの主走査ラインの全部がライン型イメージセンサ301により検知されるまでに要する原稿100の搬送距離Dを算出する(S805)。
【0036】
次に、CPU501は、A点とB点との間の距離、すなわち原稿100の1ラインの読取り幅WDと上記の搬送距離Dを用いて、原稿100の斜行角度θを下記の数式1により算出する(S806)。
【0037】
[数1]
θ=tan−1(原稿の移動距離D)/(原稿の1ラインの読取り幅WD)
[表面の斜行補正]
CPU501は、数式1により原稿100の斜行角度θを算出した後、原稿の表面の読取画像に対して斜行補正を行う。この原稿の表面の読取画像に対する斜行補正は、RAM503に格納された原稿の読取画像に対して(図10参照)、IP507により、アドレス変換を行うことにより行う(図11参照)。
【0038】
今、図10に示したように、表面読取部106により原稿100の表面の画像が読取られ、その表面の画像データDAがI/Fコントローラ505によりRAM503に一旦格納されたものとする。この場合の格納アドレス(書込みアドレス)は、原稿100の斜行を考慮しない場合のアドレスである。
【0039】
すると、CPU501は、そのRAM503への書き込み領域、及び、原稿100の斜行角度θをIP507に対して設定する(図9のS901)。
【0040】
次に、CPU501は、原稿100の斜行に起因する画像の傾斜を補正するために(以下、この補正を斜行補正と言う)、IP507に対して各種の初期設定を行う(S902)。具体的には、CPU501は、下記のような変数(nowStartLineAddr、Addr、PixelCount、lineCount)を定義し、それら変数の初期値を入力しておく。
【0041】
nowStartLineAddr:RAM503から今回リードするラインの先頭のアドレス、
Addr:RAM503から今回リードするアドレス(データの読出し位置)、
PixelCount:主走査方向のアクセスカウント値、
lineCount:副走査方向のアクセスカウント値、
なお、CPU501は、nowStartLineAddrには、原稿100の先頭ラインの左端先端のピクセルアドレスを示すReg_StartAddrを初期値として設定する。また、CPU501は、Addrにも、nowStartLineAddrと同様に、Reg_StartAddrを初期値として設定する。
【0042】
CPU501は、PixelCountには、Reg_Width−1を初期値として設定する。このReg_Widthは、原稿100の主走査方向の長さ(ピクセル数)を示す変数である。さらに、CPU501は、LineCountには、Reg_Line−1を初期値として設定する。このReg_Lineは、原稿100の主走査方向の長さ(ピクセル数)を示す変数である。
【0043】
CPU501は、上記の各変数に対して初期値を設定した後、IP507を起動する(S903)。すると、IP507は、RAM503に対してバスリードトランザクションを発行して、該当アドレス(Addr)に保持されている画像データを取得する(S904)。
【0044】
そして、IP507は、表面の読取画像データに対して斜行補正を行うべく、当該表面の読取画像データのRAM503への書込みアドレスを算出する(S905)。この場合、IP507は、アフィン変換を用いて画像回転後の書込みアドレスを算出する。
【0045】
このアフィン変換による画像回転処理では、例えば、図12の四角形ABCDにおけるA点を原点として、回転角度θだけ回転させた場合、回転後の四角形A’B’C’D’のC’座標(x’,y’)は、下記の数式2で示される。
【0046】
[数2]
x’= x・cosθ - y・sinθ
y’= x・sinθ + y・cosθ
そこで、IP507は、S905では、数式2における回転角度θとして、図7のS707で算出した原稿100の斜行角度θを用いることにより、画像回転後の斜行補正に係る書込みアドレスを算出する。
【0047】
次に、IP507は、算出した書込みアドレス(RAM503上のアドレス)に対して、S904で取得した画像データを書込むべく、RAM503に対してバスライトトランザクションを発行する(S906)。
【0048】
次に、IP507は、現在のpixelCountの値、現在のAddrの値をそれぞれ「1」だけインクリメントする(S907,S908)。そして、IP507は、pixelCountの値が「0」となり、1ラインの最終ピクセルの画像データに対する斜行補正処理(画像回転処理)が完了したか否かを判別する(S909)。
【0049】
その結果、1ラインの最終ピクセルの画像データに対する斜行補正処理(画像回転処理)が完了していない場合は、IP507は、S904に戻り、当該ラインの次のピクセルの画像データについて同様の斜行補正処理(画像回転処理)を行う。
【0050】
一方、pixelCountの値が「0」となり、1ラインの最終ピクセルの画像データに対する斜行補正処理(画像回転処理)が完了している場合は、IP507は、次のラインに対して同様の斜行補正処理(画像回転処理)を行うべく、変数の再設定処理を行う。
【0051】
具体的には、IP507は、nowStartLineAddrにReg_Pitchの値を加算したものを、Addrの値として再設定する(S910)。この場合、再設定されたAddrの値は、次のラインの最初の画像データを書込むためのアドレスとなる。
【0052】
すなわち、加算される上記のReg_Pitchは、図14に示すように、RAM503上の1ライン分のピクセル数を示す値である。従って、nowStartLineAddrの値にReg_Pitchの値を加えることによって、nowStartLineAddrには、次のラインの先頭アドレスの値が入力され、これにより、RAM503上で書込みアドレスの改行が行われることとなる。
【0053】
次に、IP507は、次のラインの書込みアドレスの変換処理、すなわち回転による斜行補正処理を行うための各種の設定値の初期化を行う(S911)。具体的には、IP507は、nowStartLineAddressの値に、Reg_Pitchの値を加算する。また、IP507は、pixelCountに、Reg_width−1を設定し、次の1ライン分の画像データを読出せるようにする。さらに、IP507は、lineCountの値を「1」だけデクリメントし、shakouCountに「1」を設定する。
【0054】
次に、IP507は、lineCountの値が「0」になったか否かを判別する(S912)。その結果、lineCountの値が「0」になっていなければ、全てのラインについて回転処理による斜行補正処理が完了していないことを意味するので、IP507は、S904に戻る。そして、IP507は、S904に戻ることにより、当該次のラインに対して、同様の回転処理による斜行補正処理を行う。
【0055】
一方、lineCountの値が「0」になっており、全てのラインについて回転処理による斜行補正処理が完了している場合は、IP507は、当該表面の画像データに係る斜行補正処理を終了する。
【0056】
以上のように斜行補正処理を行うことで、図11に示した原稿の斜行に起因する表面の傾斜した画像データDAは、画像データDBのように、斜行補正が行われ斜行の無い形態でRAM503に書込まれることとなる。
【0057】
[裏面の斜行補正]
前述のように、原稿100の表面の画像データに係る斜行補正では、表面読取部106により読取られた表面の画像データを、そのままの形態で一旦RAM503に格納していた。そして、原稿100のサイズ(Reg_Width、Reg_Line)を把握して原稿100の斜行角度θを算出し、IP507により、アフィン変換で回転処理後のRAM503への書込みアドレスを求め、その書込みアドレスに画像データを再度書込んでいた。
【0058】
これに対し、原稿100の裏面の画像データに係る斜行補正では、表面の画像データの斜行補正の際に把握した原稿100のサイズ、斜行角度θ等を用いて、最初から、斜行補正後(回転処理後)のアドレスに裏面の読取り画像データを書込んでいる。
【0059】
このように、最初から、斜行補正後(回転処理後)のアドレスに裏面の読取り画像データを書込むために、裏面用のI/Fコントローラ506は、図13のように構成されている。
【0060】
すなわち、裏面用のI/Fコントローラ506は、図13に示すように、レジスタ部506A、アドレス生成部506B、バスインタフェース506C、FIFO506D、及び画像インタフェース506Eを有している。
【0061】
レジスタ部506Aは、I/Fコントローラ506の各種の設定情報を保存するブロックである。このレジスタ部506Aには、具体的には、図14に示すような原稿100の主走査方向のサイズReg_Width、余白を含めた主走査方向のサイズReg_Pitch、副走査方向のサイズReg_LineがCPU501により設定される。また、レジスタ部506Aには、裏面の画像データをRAM503に蓄積する際の起点となるアドレスReg_StartAddrも、CPU501により設定される。
【0062】
更に、レジスタ部506Aには、図16に示すような斜行補正単位画素数Reg_XRepNumもCPU501により設定される。この斜行補正単位画素数Reg_XRepNumの値は、原稿100の斜行角度をθとしたとき、下記の数式3
【0063】
[数3]
Reg_XRepNum = 1/tanθ
で得ることができる。
【0064】
アドレス生成部506Bは、レジスタ部506Aに設定された各種の設定値と、各種のタイミング信号に基づいて、読取り画像データをRAM503に書込むためのアドレス情報を生成する。
【0065】
画像インタフェース506Eは、裏面読取部109により読取られた原稿100の裏面の画像データをFIFO506Dに転送すると共に、タイミング信号をアドレス生成部506Bに転送する。
【0066】
FIFO506Dは、画像インタフェース506Eからの裏面の画像データを一旦蓄積し、バスインタフェース506Cからの要求信号に応じて転送する。バスインタフェース506Cは、アドレス生成部506Aからのアドレス情報と、FIFO506Dからの画像データをパッキングし、システムバス404を介してRAM503へのライトトランザクションを発行する。
【0067】
次に、最初から、斜行補正後(回転処理後)のアドレスに裏面の読取り画像データを書込む場合の書込みアドレスを、図15〜17に基づいて説明する。
【0068】
ここで、仮に、原稿100の裏面に記載されている主走査方向に平行な直線が、原稿100が斜行しない正常な搬送状態で裏面読取部109により読取られたとする。この場合、裏面に記載の主走査方向に平行な直線は、図15に示した符号1501のように、主走査方向に平行な直線の画像として裏面読取部109により読取られて、RAM503に書き込まれる。
【0069】
なお、図15の符号1502は、RAM503へのアクセスの最小単位を示している。このアクセスの最小単位1502は、1つの画素(ピクセル)であっても、或いは、複数の画素の集合体であってもよい。
【0070】
原稿100が斜行している状態で当該原稿の裏面に記載されている主走査方向に平行な直線が読取られた場合は、当該直線は、通常、図16に示した符号1601のように、主走査方向に対して傾斜した直線状の画像データとしてRAM503に書込まれてしまう。図16の場合、原稿100の斜行角度θを反映し、RAM503に書込まれる直線状の画像データも、主走査方向に対して角度θだけ傾斜した状態となっている。
【0071】
ここで、原稿上で主走査方向に平行な直線の画像データが、主走査方向に対して傾斜していない図15のような本来の状態でRAM503に書込まれるようにするためには、RAM503への書込みアドレスを図17に示すように変更する必要がある。すなわち、符号1705,1706の画像データを、それぞれ、符号1701,1702のアドレスに書込み、1符合1707、1708の画像データを、それぞれ、符号1703,1704のアドレスに書込む必要がある。
【0072】
この場合、RAM503への書込みは、ライン毎に行われるものであるため、原稿100の行斜行角度θに応じて、当該ラインの画像データをRAM503へ書込む際の書込みアドレスを生成する必要がある。なお、図16,17の例では、斜行補正単位画素数Reg_XRepNumが、図15に示したアクセスの最小単位の2倍の画素数である場合を想定しており、当該アクセスの2倍の画素数の単位で、書込みアドレスが生成される。
【0073】
次に、原稿の裏面の画像データの斜行補正を書込みアドレスの制御により行う処理を、図19のフローチャートに基づいて説明する。なお、原稿100の読取り動作に入る前に、レジスタ部506Aには、CPU501により、図14に示した原稿100に関する各種の情報、及び斜行補正単位画素数Reg_XRepNumが設定されているものとする。
【0074】
裏面読取部109によって原稿の裏面の画像が読込まれると、I/Fコントローラ506内のレジスタ部506Aは、CPU501の制御の下に、アドレス生成部506Bに対して、下記のような各種の初期設定を行う(S1901)。
【0075】
nowStartLineAddr:現在RAM503上にライトするラインの先頭のアドレス
Addr:現在RAM503上にライトするアドレス
pixelCount:主走方向のアクセスカウント値
lineCount:副走査方向のアクセスカウント値
shakouCount:同一ライン内で斜行しないアクセスカウント値
次に、バスインタフェース506Cは、FIFO506Dに蓄積されている裏面の画像データをアドレス生成部506Bで生成されたアドレスAddrに書込むためのライトトランザクションを、システムバス504を介してRAM503に発行する(S1902)。
【0076】
このライトトランザクションが終了すると、アドレス生成部506Bは、裏面の次の画像データをRAM503に書込むために、pixelCountの値を「1」だけデクリメントし(S1903)、Addrの値を「1」だけインクリメントする(S1904)。
【0077】
更に、アドレス生成部506Bは、shakouCountの値を「1」だけインクリメントする(S1905)。
【0078】
次に、アドレス生成部506Bは、インクリメントしたshakouCountの値がレジスタ部506Aに予め設定されているReg_XRepNumの値に達した場合に(S1906)、S1907に進む。そして、S1907以降で、裏面の次の画像データの書込みアドレスを斜行補正のために更新する。まず、S1907では、アドレス生成部506Bは、原稿100の斜行角度θが正であるか否かを判別する。斜行角度θは、ライン型イメージセンサ301または401から原稿100を見たときに、原稿の左端より原稿の右端が先にライン型イメージセンサ301または401を通過した場合に「正」であると判定する。一方、原稿の右端より原稿の左端が先にライン型イメージセンサ301または401を通過した場合に「負」であると判定する。また、原稿の右端と原稿の左端とが、同時にライン型イメージセンサ301または401を通過した場合は「0」になる。
【0079】
原稿100の斜行角度θが「正」であれば、アドレス生成部506Bは、現在のAddrの値からReg_Pitchの値だけ減算し、その減算結果を新たなAddrとする(S1908)。原稿100の斜行角度θが「0」又は「負」であれば、アドレス生成部506Bは、現在のAddrの値にReg_Pitchの値を加算し、その加算結果を新たなAddrとする(S1909)。
【0080】
なお、本実施の形態では、表面読取部106のライン型イメージセンサ302と裏面読取部109のライン型イメージセンサ402とは、平行であることを想定している。この場合、表面のライン型イメージセンサ302に対する原稿100の斜行角度を「θ」とした場合、裏面のライン型イメージセンサ402に対する原稿100の斜行角度もほぼθとなる。従って、表面の斜行補正を図10、図11のような形態で行った場合は、裏面の斜行補正は、図18のDC→DDのような形態で行われる。
【0081】
上記のS1906〜S1909の処理を行うことによって、図17及び図18に示すように、原稿の裏面の画像データは、斜行補正がなされた状態でRAM503に書込まれることとなる。
【0082】
アドレス生成部506Bは、S1908又はS1909で新たなAddrを生成した後、shakouCountの値を「1」に初期化して(S1910)、S1911に進む。なお、shakouCountの値がレジスタ部506Aに予め設定されているReg_XRepNumの値に達していない場合には(S1906)、アドレス生成部506Bは、S1907〜S1910の処理をスキップして、直ちにS1911に進む。
【0083】
アドレス生成部506Bは、S1911では、pixelCountの値が「0」となり、1ラインの画像データを全てRAM503へ書込んだか否かを判別する。その結果、1ラインの画像データを全てRAM503に書込んでいない場合は、アドレス生成部506Bは、S1902に戻り、当該ラインの次の画像データについて、同様の書込みアドレスを制御する。
【0084】
一方、pixelCountの値が「0」となり、1ラインの画像データを全てRAM503に書込んでいる場合は、アドレス生成部506Bは、次のラインの画像データに対して同様の書き込みアドレス制御を行うべく、各種の変数の再設定処理を行う。
【0085】
具体的には、アドレス生成部506Bは、nowStartLineAddrにReg_Pitchの値を加算したものを、次のラインの最初の画像データのAddrの値として再設定する(S1912)。次に、アドレス生成部506Bは、次のラインの画像データをRAM503に書込むための各種の設定値の初期化を行う(S1913)。
【0086】
具体的には、アドレス生成部506Bは、nowStartLineAddressの値に、Reg_Pitchの値を加算する。また、アドレス生成部506Bは、pixelCountに、Reg_width−1を設定し、次の1ライン分の画像データを読出せるようにする。さらに、アドレス生成部506Bは、lineCountの値を「1」だけデクリメントし、shakouCountに「1」を設定する。
【0087】
次に、アドレス生成部506Bは、lineCountの値が「0」になったか否かを判別する(S1914)。その結果、lineCountの値が「0」になっていなければ、斜行補正を行った形態で画像データをRAM503に書き込む処理が未だなされていないラインが存在することを意味するので、アドレス生成部506Bは、S1902に戻る。
【0088】
一方、lineCountの値が「0」になっており、全てのラインについて斜行補正を行った形態で画像データをRAM503に書き込んだ場合は、アドレス生成部506Bは、斜行補正を行った状態で裏面の画像データをRAM503に書込む処理を終了する。
【0089】
以上のように、ライン型イメージセンサ401によって読み取られる画像データの格納アドレスを、ライン型イメージセンサ301によって検知された原稿の斜行を考慮しない場合の格納アドレスを基準として原稿の斜行角度だけ回転したアドレスに決定する。
【0090】
このように制御することによって、ライン型イメージセンサ301で検知された斜行角度を、原稿の表面用と裏面用の画像データに対して用いることができ、斜行補正回路を表面と裏面とで別々に設けずとも、表面と裏面の画像データの補正を行うことができる。
【0091】
なお、上述のようにして読み取られた原稿の画像データは、RAM503に書き込まれた後、HD509に記憶される。HD509に記憶された画像データは、斜行補正された後、プリンタ部203によって印刷されてもよいし、不図示のネットワークを介して外部装置に送信されてもよい。また、プリンタ部203による印刷や、ネットワークを介した送信は、自動的に行われてもよいし、ユーザの指示に従って行われてもよい。
【0092】
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【0093】
501…CPU
502…ROM
503…RAM
【技術分野】
【0001】
本発明は、画像読取装置、その制御方法、及びプログラムに関し、特に原稿の表裏を同時に読み取る場合の原稿斜行補正技術に関する。
【背景技術】
【0002】
近年、デジタル複写機、フラットベットスキャナ等の画像読取装置において、1回の原稿搬送で当該原稿の表裏を同時に読み取る機能が実現されている。
【0003】
この種の画像形成装置では、通常、原稿の表裏両面をそれぞれ表面用センサ、裏面用センサで読み取っている。このため、原稿が斜行した場合は、表面の読取画像と裏面の読取画像とでは、原稿の斜行角度の2倍の角度で画像が回転した状態となる。従って、現行の両面を同時に読み取る場合には、特に斜行補正技術が重要になってくる。
【0004】
従来の斜行補正技術としては、原稿を読取り位置に搬送する過程でレジストローラに原稿の先端を突き当てて原稿に撓みを持たせることにより、原稿の斜行を補正する技術が一般に用いられていた。
【0005】
しかしながら、このような機械的な構成による斜行補正技術は、原稿読取速度の高速化を阻害する要因となってしまう。そこで、原稿を斜行したままの状態で読取り、CPUや専用の斜行補正回路等によって、斜行角度に応じて斜行補正を行う技術が提案されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−254166号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1では、斜行補正用の回路については、画像読取装置が、表面の読取画像を補正するための回路と裏面の読取画像を補正するための回路とを備える必要がある。このため、回路規模の増大化を招くことになり、画像読取装置のコストアップにつながってしまうる。
【0008】
本発明は、このような技術的な課題に鑑みてなされたものである。その目的は、回路規模の増大化を抑制しつつ、読み取られた原稿の表面と裏面の画像を補正することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明は、原稿の表面を第1の読取部で読み取り、当該原稿の裏面の画像を第2の読取部で読み取る読取手段と、第1の読取部によって読み取られた原稿の前記第1の読取部に対する原稿の斜行角度を検出する検出手段と、検出手段により検出された原稿の斜行角度に従って、第1の読取部で読み取られた画像データ、及び、第2の読取部で読み取られた画像データを補正する補正手段とを備えることを特徴とする。
【発明の効果】
【0010】
本発明によれば、回路規模の増大化を抑制しつつ、読み取られた原稿の表面と裏面の画像を補正することが可能となる。
【図面の簡単な説明】
【0011】
【図1】本発明の実施の形態に係る両面同時読取装置を用いた画像処理装置の外観図である。
【図2】上記両面同時読取装置の搬送系の概略構成を示す断面図である。
【図3】上記両面同時読取装置の表面読取部の概略構成を示す断面図である。
【図4】上記両面同時読取装置の裏面読取部の概略構成を示す断面図である。
【図5】上記画像処理装置の制御系の概略構成を示すブロック図である。
【図6】光学変換素子に対する原稿の斜行状態を示す図である。
【図7】光学変換素子に対する原稿の斜行角度を示す図である。
【図8】原稿の斜行角度の算出処理を示すフローチャートである。
【図9】原稿の表面の斜行補正処理を示すフローチャートである。
【図10】原稿の表面の画像データを画像読取部からRAMへ転送するイメージを示す図である。
【図11】原稿の表面の画像データをIPを使用して斜行補正するイメージを示す図である。
【図12】アフィン変換を説明するための図である。
【図13】裏面用のI/Fコントローラの概略構成を示すブロック図である。
【図14】原稿に関する各種の設定を示す概念図である。
【図15】原稿が斜行しない場合の画像データのRAMへの蓄積状況を示す概念図である。
【図16】原稿が斜行した場合の画像データのRAMへの蓄積状況を示す概念図である。
【図17】斜行状態でRAMに蓄積された画像データを本来の蓄積位置に移動する移動状態を示す概念図である。
【図18】原稿の裏面画像を読取部からRAMへ転送する状態を示す概念図である。
【図19a】裏面の斜行補正のためのアドレス生成処理を示すフローチャートである。
【図19b】図19aの続きのフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態を図面に基づいて説明する。
【0013】
[画像形成装置の外観]
図1は、本発明の実施の形態に係る両面同時読取装置を用いた画像処理装置の外観図である。図1に示すように、本画像処理装置は、スキャナ部200とプリンタ部203を有し、スキャナ部200で読み取られた原稿画像をプリンタ部203で印刷することができる。また、スキャナ部200は、読取対象の原稿を読取位置(原稿台ガラス107:図2等参照)に自動的に給送する自動原稿送り装置201を有している。プリンタ部203は、原稿画像を記録するための各種サイズの記録用紙をそれぞれ収納・給紙する用紙カセット204〜207、印刷済の記録用紙を積載するための排紙トレイ208を有している。
【0014】
自動原稿送り装置201は、操作部202の操作により読取指令が発せられると、複数の原稿を1枚単位で読取位置に順次給送することができる。この場合、自動原稿送り装置201は、積層された原稿を分離ローラ等により1枚単位に分離しながら給送する。
【0015】
スキャナ部200は、自動原稿送り装置201により読み取り位置に給送されてきた原稿上の画像を光学的に読取って光電変換し、その光電変換に係る電子的な画像データをプリンタ部203に転送する。
【0016】
なお、スキャナ部(画像読取装置)200は、読取位置への原稿の1回の搬送過程(搬送工程)で、その原稿の表面と裏面の画像をほぼ同時に読取る両面同時読取機能を有している。そこで、以下の説明においては、スキャナ部(画像読取装置)200を両面同時読取装置200と呼ぶこととする。
【0017】
プリンタ部2003は、転送に係る画像データに基づいて記録用紙(シート)上に画像を印刷する。このプリンタ部203の印刷方式としては、例えば、電子写真方式、インクジェット方式等の各種の印刷方式を採用することができる。プリンタ部203は、画像を記録用紙に印刷した後、その記録用紙を排紙トレイ208に排紙する。
【0018】
[両面同時読取装置の構成]
図2は、両面同時読取装置200の搬送系の概略構成を示すブロック図である。図2において、原稿載置台101には、読取対象の原稿を表面を上にして積層状態で載置する。原稿載置台101に載置された原稿100は、ピックアップローラ102により1枚単位でピックアップされ、給送ローラ103を介して原稿台ガラス107に給送され、更に搬送ローラ104、排紙ローラ110を介して排紙される。
【0019】
この場合、原稿100が原稿台ガラス107を通過する過程で原稿100の両面の画像がほぼ同時に読み取られる。すなわち、原稿100が表面読取部106に対向する位置を通過する際に、表面読取部106の光源105により原稿100の表面に光が照射されることで、原稿100の表面の画像が表面読取部106により読取られる。また、原稿100が裏面読取部109に対向する位置を通過する際に、裏面読取部109の光源108により原稿100の裏面に光が照射されることで、原稿100の裏面の画像が裏面読取部109により読取られる。
【0020】
換言すれば、原稿台ガラス107に原稿100を1回給送するだけで、原稿100の両面の画像がほぼ同時に読取られるので、原稿100の表裏両面の画像を読取るために原稿100を原稿台ガラス107に複数回給送する必要はない。
【0021】
表面読取部106、裏面読取部109は、それぞれ原稿台ガラス107の下面、上面に密着する形態で固定位置に配備されている。従って、原稿100の両面の画像は、所謂、流し読み方式で読取られる(図3,4の矢印参照)。
【0022】
表面読取部106、裏面読取部109は、同様の構成であり、それぞれ、光源105,108、等倍レンズ302,402、ライン型イメージセンサ301,401(第1の光電変換素子群、第2の光電変換素子群)を有する。なお、ライン型イメージセンサ301は、第1の読取部ともいい、ライン型イメージセンサ401は第2の読取部ともいい、ライン型イメージセンサは、ラインセンサともいう。これらデバイスの副走査方向の幅は、原稿100の副走査方向の幅と同等、若しくはそれ以上の幅となっている。
【0023】
上記の流し読みの際には、原稿100の表面、裏面に対して、それぞれ光源105,108により光が照射される。その反射光、即ち、原稿100の表面、裏面の画像をそれぞれ反映した画像光は、それぞれ等倍レンズ302,402を介してライン型イメージセンサ301,401に入射される。ライン型イメージセンサ301,401は、原稿100の表面、裏面からの画像光をそれぞれ光電変換し、電子的な画像データとして出力する。
【0024】
図5は、両面画像同時読取装置200の制御系の概略構成を示すブロック図である。図5において、CPU501は、ROM502に格納されたアプリケーションプログラムを実行することにより、原稿100の両面の画像を同時に読取る同時読取り処理を行う。この際、CPU501は、RAM503をワークエリア等として利用する。
【0025】
なお、ROM502には、後述する図8,9,19のフローチャートに対応する処理をCPU501、すなわちコンピュータが実行するためのアプリケーションプログラムも予め格納されている。また、RAM503は、表面読取部106、裏面読取部109により読取られた表面、裏面の画像データを格納する一時的に格納する画像メモリ(記憶媒体)としても利用される。
【0026】
システムバス504には、上記のCPU501、ROM502、RAM503と共に、I/Fコントローラ505,506を介してそれぞれ表面読取部106、裏面読取部109が接続されている。また、システムバス504には、IP(イメージプロセッシングユニット)507が接続され、HDコントローラ508を介してハードディスク509が接続されている。
【0027】
表面読取部106、裏面読取部109は、CPU501の制御の下に、それぞれ、原稿100が表面読取部106、裏面読取部109の位置を通過する際に、光源105,108により原稿100の表面、裏面にそれぞれ光を照射する。そして、表面読取部106、裏面読取部109は、それぞれ、原稿100の表面、裏面からの画像光をライン型イメージセンサ301,401により光電変換する。
【0028】
次に、表面読取部106、裏面読取部109は、それぞれ、光電変換に係る画像データ(アナログデータ)をデジタルの画像データに変換し、I/Fコントローラ505,506に出力する。I/Fコントローラ505,506は、格納制御手段として機能し、それぞれ、表面読取部106、裏面読取部109からの画像データをRAM503の異なる領域に格納する。
【0029】
IP507は、RAM503に格納された原稿100の表面、裏面に係る画像データに対してシェーディング補正等の各種の画像補正処理を行う。
【0030】
なお、本実施の形態では、上記の原稿100の斜行角度(画像の傾斜角度)は、表面読取部106のライン型イメージセンサ302の画素群の配列方向に対する原稿100の斜行角度を想定している。
【0031】
CPU501は、IP507により画像処理が施された画像データを、HDコントローラ508を介してハードディスク509に格納する。なお、IP507は、CPU501の制御の下に、ハードディスク509に格納されている画像データに対して各種の画像処理を施し、その画像処理結果を再度ハードディスク509に格納する。
【0032】
[斜行角度検出]
次に、原稿の斜行角度の検出手法を、図6〜8に基づいて説明する。なお、原稿の斜行角度の検出は、表面読取部106、裏面読取部109の何れか一方について行えば良く、本実施の形態では、処理の迅速化を図るべく、先に原稿読取りを行う表面読取部106により原稿の斜行角度を検出している。
【0033】
CPU501は、原稿100が斜めに給送され、原稿100の先端がライン型イメージセンサ301を通過したことを検知すると(S801)、タイマ(不図示)を起動させて当該タイマのカウントアップを開始する(S802)。この場合、原稿100が図6のような形態で斜行している場合は、原稿100の右上の角位置Rが、ライン型イメージセンサ301のA点に係る画素位置で最初に検知されることとなる。
【0034】
その後、原稿100の左上の角位置Lが、ライン型イメージセンサ301のB点に係る画素位置で検知されると(S803)、CPU501は、タイマのカウント動作を停止させる(S804)。なお、A点とB点との間の距離、すなわち1ラインの読取り幅WDは、原稿100が斜行した場合は、原稿100の主走査方向の幅(長さ)よりも短くなる。CPU501は、読み取った原稿の画像データから、A点とB点との間の距離、すなわち1ラインの読取り幅WDを特定する。
【0035】
そして、CPU501は、タイマのカウント値と、原稿100の単位時間当たりの搬送速度を乗算することで、原稿100の1つの主走査ラインの全部がライン型イメージセンサ301により検知されるまでに要する原稿100の搬送距離Dを算出する(S805)。
【0036】
次に、CPU501は、A点とB点との間の距離、すなわち原稿100の1ラインの読取り幅WDと上記の搬送距離Dを用いて、原稿100の斜行角度θを下記の数式1により算出する(S806)。
【0037】
[数1]
θ=tan−1(原稿の移動距離D)/(原稿の1ラインの読取り幅WD)
[表面の斜行補正]
CPU501は、数式1により原稿100の斜行角度θを算出した後、原稿の表面の読取画像に対して斜行補正を行う。この原稿の表面の読取画像に対する斜行補正は、RAM503に格納された原稿の読取画像に対して(図10参照)、IP507により、アドレス変換を行うことにより行う(図11参照)。
【0038】
今、図10に示したように、表面読取部106により原稿100の表面の画像が読取られ、その表面の画像データDAがI/Fコントローラ505によりRAM503に一旦格納されたものとする。この場合の格納アドレス(書込みアドレス)は、原稿100の斜行を考慮しない場合のアドレスである。
【0039】
すると、CPU501は、そのRAM503への書き込み領域、及び、原稿100の斜行角度θをIP507に対して設定する(図9のS901)。
【0040】
次に、CPU501は、原稿100の斜行に起因する画像の傾斜を補正するために(以下、この補正を斜行補正と言う)、IP507に対して各種の初期設定を行う(S902)。具体的には、CPU501は、下記のような変数(nowStartLineAddr、Addr、PixelCount、lineCount)を定義し、それら変数の初期値を入力しておく。
【0041】
nowStartLineAddr:RAM503から今回リードするラインの先頭のアドレス、
Addr:RAM503から今回リードするアドレス(データの読出し位置)、
PixelCount:主走査方向のアクセスカウント値、
lineCount:副走査方向のアクセスカウント値、
なお、CPU501は、nowStartLineAddrには、原稿100の先頭ラインの左端先端のピクセルアドレスを示すReg_StartAddrを初期値として設定する。また、CPU501は、Addrにも、nowStartLineAddrと同様に、Reg_StartAddrを初期値として設定する。
【0042】
CPU501は、PixelCountには、Reg_Width−1を初期値として設定する。このReg_Widthは、原稿100の主走査方向の長さ(ピクセル数)を示す変数である。さらに、CPU501は、LineCountには、Reg_Line−1を初期値として設定する。このReg_Lineは、原稿100の主走査方向の長さ(ピクセル数)を示す変数である。
【0043】
CPU501は、上記の各変数に対して初期値を設定した後、IP507を起動する(S903)。すると、IP507は、RAM503に対してバスリードトランザクションを発行して、該当アドレス(Addr)に保持されている画像データを取得する(S904)。
【0044】
そして、IP507は、表面の読取画像データに対して斜行補正を行うべく、当該表面の読取画像データのRAM503への書込みアドレスを算出する(S905)。この場合、IP507は、アフィン変換を用いて画像回転後の書込みアドレスを算出する。
【0045】
このアフィン変換による画像回転処理では、例えば、図12の四角形ABCDにおけるA点を原点として、回転角度θだけ回転させた場合、回転後の四角形A’B’C’D’のC’座標(x’,y’)は、下記の数式2で示される。
【0046】
[数2]
x’= x・cosθ - y・sinθ
y’= x・sinθ + y・cosθ
そこで、IP507は、S905では、数式2における回転角度θとして、図7のS707で算出した原稿100の斜行角度θを用いることにより、画像回転後の斜行補正に係る書込みアドレスを算出する。
【0047】
次に、IP507は、算出した書込みアドレス(RAM503上のアドレス)に対して、S904で取得した画像データを書込むべく、RAM503に対してバスライトトランザクションを発行する(S906)。
【0048】
次に、IP507は、現在のpixelCountの値、現在のAddrの値をそれぞれ「1」だけインクリメントする(S907,S908)。そして、IP507は、pixelCountの値が「0」となり、1ラインの最終ピクセルの画像データに対する斜行補正処理(画像回転処理)が完了したか否かを判別する(S909)。
【0049】
その結果、1ラインの最終ピクセルの画像データに対する斜行補正処理(画像回転処理)が完了していない場合は、IP507は、S904に戻り、当該ラインの次のピクセルの画像データについて同様の斜行補正処理(画像回転処理)を行う。
【0050】
一方、pixelCountの値が「0」となり、1ラインの最終ピクセルの画像データに対する斜行補正処理(画像回転処理)が完了している場合は、IP507は、次のラインに対して同様の斜行補正処理(画像回転処理)を行うべく、変数の再設定処理を行う。
【0051】
具体的には、IP507は、nowStartLineAddrにReg_Pitchの値を加算したものを、Addrの値として再設定する(S910)。この場合、再設定されたAddrの値は、次のラインの最初の画像データを書込むためのアドレスとなる。
【0052】
すなわち、加算される上記のReg_Pitchは、図14に示すように、RAM503上の1ライン分のピクセル数を示す値である。従って、nowStartLineAddrの値にReg_Pitchの値を加えることによって、nowStartLineAddrには、次のラインの先頭アドレスの値が入力され、これにより、RAM503上で書込みアドレスの改行が行われることとなる。
【0053】
次に、IP507は、次のラインの書込みアドレスの変換処理、すなわち回転による斜行補正処理を行うための各種の設定値の初期化を行う(S911)。具体的には、IP507は、nowStartLineAddressの値に、Reg_Pitchの値を加算する。また、IP507は、pixelCountに、Reg_width−1を設定し、次の1ライン分の画像データを読出せるようにする。さらに、IP507は、lineCountの値を「1」だけデクリメントし、shakouCountに「1」を設定する。
【0054】
次に、IP507は、lineCountの値が「0」になったか否かを判別する(S912)。その結果、lineCountの値が「0」になっていなければ、全てのラインについて回転処理による斜行補正処理が完了していないことを意味するので、IP507は、S904に戻る。そして、IP507は、S904に戻ることにより、当該次のラインに対して、同様の回転処理による斜行補正処理を行う。
【0055】
一方、lineCountの値が「0」になっており、全てのラインについて回転処理による斜行補正処理が完了している場合は、IP507は、当該表面の画像データに係る斜行補正処理を終了する。
【0056】
以上のように斜行補正処理を行うことで、図11に示した原稿の斜行に起因する表面の傾斜した画像データDAは、画像データDBのように、斜行補正が行われ斜行の無い形態でRAM503に書込まれることとなる。
【0057】
[裏面の斜行補正]
前述のように、原稿100の表面の画像データに係る斜行補正では、表面読取部106により読取られた表面の画像データを、そのままの形態で一旦RAM503に格納していた。そして、原稿100のサイズ(Reg_Width、Reg_Line)を把握して原稿100の斜行角度θを算出し、IP507により、アフィン変換で回転処理後のRAM503への書込みアドレスを求め、その書込みアドレスに画像データを再度書込んでいた。
【0058】
これに対し、原稿100の裏面の画像データに係る斜行補正では、表面の画像データの斜行補正の際に把握した原稿100のサイズ、斜行角度θ等を用いて、最初から、斜行補正後(回転処理後)のアドレスに裏面の読取り画像データを書込んでいる。
【0059】
このように、最初から、斜行補正後(回転処理後)のアドレスに裏面の読取り画像データを書込むために、裏面用のI/Fコントローラ506は、図13のように構成されている。
【0060】
すなわち、裏面用のI/Fコントローラ506は、図13に示すように、レジスタ部506A、アドレス生成部506B、バスインタフェース506C、FIFO506D、及び画像インタフェース506Eを有している。
【0061】
レジスタ部506Aは、I/Fコントローラ506の各種の設定情報を保存するブロックである。このレジスタ部506Aには、具体的には、図14に示すような原稿100の主走査方向のサイズReg_Width、余白を含めた主走査方向のサイズReg_Pitch、副走査方向のサイズReg_LineがCPU501により設定される。また、レジスタ部506Aには、裏面の画像データをRAM503に蓄積する際の起点となるアドレスReg_StartAddrも、CPU501により設定される。
【0062】
更に、レジスタ部506Aには、図16に示すような斜行補正単位画素数Reg_XRepNumもCPU501により設定される。この斜行補正単位画素数Reg_XRepNumの値は、原稿100の斜行角度をθとしたとき、下記の数式3
【0063】
[数3]
Reg_XRepNum = 1/tanθ
で得ることができる。
【0064】
アドレス生成部506Bは、レジスタ部506Aに設定された各種の設定値と、各種のタイミング信号に基づいて、読取り画像データをRAM503に書込むためのアドレス情報を生成する。
【0065】
画像インタフェース506Eは、裏面読取部109により読取られた原稿100の裏面の画像データをFIFO506Dに転送すると共に、タイミング信号をアドレス生成部506Bに転送する。
【0066】
FIFO506Dは、画像インタフェース506Eからの裏面の画像データを一旦蓄積し、バスインタフェース506Cからの要求信号に応じて転送する。バスインタフェース506Cは、アドレス生成部506Aからのアドレス情報と、FIFO506Dからの画像データをパッキングし、システムバス404を介してRAM503へのライトトランザクションを発行する。
【0067】
次に、最初から、斜行補正後(回転処理後)のアドレスに裏面の読取り画像データを書込む場合の書込みアドレスを、図15〜17に基づいて説明する。
【0068】
ここで、仮に、原稿100の裏面に記載されている主走査方向に平行な直線が、原稿100が斜行しない正常な搬送状態で裏面読取部109により読取られたとする。この場合、裏面に記載の主走査方向に平行な直線は、図15に示した符号1501のように、主走査方向に平行な直線の画像として裏面読取部109により読取られて、RAM503に書き込まれる。
【0069】
なお、図15の符号1502は、RAM503へのアクセスの最小単位を示している。このアクセスの最小単位1502は、1つの画素(ピクセル)であっても、或いは、複数の画素の集合体であってもよい。
【0070】
原稿100が斜行している状態で当該原稿の裏面に記載されている主走査方向に平行な直線が読取られた場合は、当該直線は、通常、図16に示した符号1601のように、主走査方向に対して傾斜した直線状の画像データとしてRAM503に書込まれてしまう。図16の場合、原稿100の斜行角度θを反映し、RAM503に書込まれる直線状の画像データも、主走査方向に対して角度θだけ傾斜した状態となっている。
【0071】
ここで、原稿上で主走査方向に平行な直線の画像データが、主走査方向に対して傾斜していない図15のような本来の状態でRAM503に書込まれるようにするためには、RAM503への書込みアドレスを図17に示すように変更する必要がある。すなわち、符号1705,1706の画像データを、それぞれ、符号1701,1702のアドレスに書込み、1符合1707、1708の画像データを、それぞれ、符号1703,1704のアドレスに書込む必要がある。
【0072】
この場合、RAM503への書込みは、ライン毎に行われるものであるため、原稿100の行斜行角度θに応じて、当該ラインの画像データをRAM503へ書込む際の書込みアドレスを生成する必要がある。なお、図16,17の例では、斜行補正単位画素数Reg_XRepNumが、図15に示したアクセスの最小単位の2倍の画素数である場合を想定しており、当該アクセスの2倍の画素数の単位で、書込みアドレスが生成される。
【0073】
次に、原稿の裏面の画像データの斜行補正を書込みアドレスの制御により行う処理を、図19のフローチャートに基づいて説明する。なお、原稿100の読取り動作に入る前に、レジスタ部506Aには、CPU501により、図14に示した原稿100に関する各種の情報、及び斜行補正単位画素数Reg_XRepNumが設定されているものとする。
【0074】
裏面読取部109によって原稿の裏面の画像が読込まれると、I/Fコントローラ506内のレジスタ部506Aは、CPU501の制御の下に、アドレス生成部506Bに対して、下記のような各種の初期設定を行う(S1901)。
【0075】
nowStartLineAddr:現在RAM503上にライトするラインの先頭のアドレス
Addr:現在RAM503上にライトするアドレス
pixelCount:主走方向のアクセスカウント値
lineCount:副走査方向のアクセスカウント値
shakouCount:同一ライン内で斜行しないアクセスカウント値
次に、バスインタフェース506Cは、FIFO506Dに蓄積されている裏面の画像データをアドレス生成部506Bで生成されたアドレスAddrに書込むためのライトトランザクションを、システムバス504を介してRAM503に発行する(S1902)。
【0076】
このライトトランザクションが終了すると、アドレス生成部506Bは、裏面の次の画像データをRAM503に書込むために、pixelCountの値を「1」だけデクリメントし(S1903)、Addrの値を「1」だけインクリメントする(S1904)。
【0077】
更に、アドレス生成部506Bは、shakouCountの値を「1」だけインクリメントする(S1905)。
【0078】
次に、アドレス生成部506Bは、インクリメントしたshakouCountの値がレジスタ部506Aに予め設定されているReg_XRepNumの値に達した場合に(S1906)、S1907に進む。そして、S1907以降で、裏面の次の画像データの書込みアドレスを斜行補正のために更新する。まず、S1907では、アドレス生成部506Bは、原稿100の斜行角度θが正であるか否かを判別する。斜行角度θは、ライン型イメージセンサ301または401から原稿100を見たときに、原稿の左端より原稿の右端が先にライン型イメージセンサ301または401を通過した場合に「正」であると判定する。一方、原稿の右端より原稿の左端が先にライン型イメージセンサ301または401を通過した場合に「負」であると判定する。また、原稿の右端と原稿の左端とが、同時にライン型イメージセンサ301または401を通過した場合は「0」になる。
【0079】
原稿100の斜行角度θが「正」であれば、アドレス生成部506Bは、現在のAddrの値からReg_Pitchの値だけ減算し、その減算結果を新たなAddrとする(S1908)。原稿100の斜行角度θが「0」又は「負」であれば、アドレス生成部506Bは、現在のAddrの値にReg_Pitchの値を加算し、その加算結果を新たなAddrとする(S1909)。
【0080】
なお、本実施の形態では、表面読取部106のライン型イメージセンサ302と裏面読取部109のライン型イメージセンサ402とは、平行であることを想定している。この場合、表面のライン型イメージセンサ302に対する原稿100の斜行角度を「θ」とした場合、裏面のライン型イメージセンサ402に対する原稿100の斜行角度もほぼθとなる。従って、表面の斜行補正を図10、図11のような形態で行った場合は、裏面の斜行補正は、図18のDC→DDのような形態で行われる。
【0081】
上記のS1906〜S1909の処理を行うことによって、図17及び図18に示すように、原稿の裏面の画像データは、斜行補正がなされた状態でRAM503に書込まれることとなる。
【0082】
アドレス生成部506Bは、S1908又はS1909で新たなAddrを生成した後、shakouCountの値を「1」に初期化して(S1910)、S1911に進む。なお、shakouCountの値がレジスタ部506Aに予め設定されているReg_XRepNumの値に達していない場合には(S1906)、アドレス生成部506Bは、S1907〜S1910の処理をスキップして、直ちにS1911に進む。
【0083】
アドレス生成部506Bは、S1911では、pixelCountの値が「0」となり、1ラインの画像データを全てRAM503へ書込んだか否かを判別する。その結果、1ラインの画像データを全てRAM503に書込んでいない場合は、アドレス生成部506Bは、S1902に戻り、当該ラインの次の画像データについて、同様の書込みアドレスを制御する。
【0084】
一方、pixelCountの値が「0」となり、1ラインの画像データを全てRAM503に書込んでいる場合は、アドレス生成部506Bは、次のラインの画像データに対して同様の書き込みアドレス制御を行うべく、各種の変数の再設定処理を行う。
【0085】
具体的には、アドレス生成部506Bは、nowStartLineAddrにReg_Pitchの値を加算したものを、次のラインの最初の画像データのAddrの値として再設定する(S1912)。次に、アドレス生成部506Bは、次のラインの画像データをRAM503に書込むための各種の設定値の初期化を行う(S1913)。
【0086】
具体的には、アドレス生成部506Bは、nowStartLineAddressの値に、Reg_Pitchの値を加算する。また、アドレス生成部506Bは、pixelCountに、Reg_width−1を設定し、次の1ライン分の画像データを読出せるようにする。さらに、アドレス生成部506Bは、lineCountの値を「1」だけデクリメントし、shakouCountに「1」を設定する。
【0087】
次に、アドレス生成部506Bは、lineCountの値が「0」になったか否かを判別する(S1914)。その結果、lineCountの値が「0」になっていなければ、斜行補正を行った形態で画像データをRAM503に書き込む処理が未だなされていないラインが存在することを意味するので、アドレス生成部506Bは、S1902に戻る。
【0088】
一方、lineCountの値が「0」になっており、全てのラインについて斜行補正を行った形態で画像データをRAM503に書き込んだ場合は、アドレス生成部506Bは、斜行補正を行った状態で裏面の画像データをRAM503に書込む処理を終了する。
【0089】
以上のように、ライン型イメージセンサ401によって読み取られる画像データの格納アドレスを、ライン型イメージセンサ301によって検知された原稿の斜行を考慮しない場合の格納アドレスを基準として原稿の斜行角度だけ回転したアドレスに決定する。
【0090】
このように制御することによって、ライン型イメージセンサ301で検知された斜行角度を、原稿の表面用と裏面用の画像データに対して用いることができ、斜行補正回路を表面と裏面とで別々に設けずとも、表面と裏面の画像データの補正を行うことができる。
【0091】
なお、上述のようにして読み取られた原稿の画像データは、RAM503に書き込まれた後、HD509に記憶される。HD509に記憶された画像データは、斜行補正された後、プリンタ部203によって印刷されてもよいし、不図示のネットワークを介して外部装置に送信されてもよい。また、プリンタ部203による印刷や、ネットワークを介した送信は、自動的に行われてもよいし、ユーザの指示に従って行われてもよい。
【0092】
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【0093】
501…CPU
502…ROM
503…RAM
【特許請求の範囲】
【請求項1】
原稿の表面を第1の読取部で読み取り、当該原稿の裏面の画像を第2の読取部で読み取る読取手段と、
前記第1の読取部によって読み取られた原稿の前記第1の読取部に対する前記原稿の斜行角度を検出する検出手段と、
前記検出手段により検出された前記原稿の斜行角度に従って、前記第1の読取部で読み取られた画像データ、及び、前記第2の読取部で読み取られた画像データを補正する補正手段とを備えることを特徴とする画像読取装置。
【請求項2】
前記読取手段によって読み取られた画像データを格納する格納手段をさらに備え、
前記補正手段は、前記第2の読取部によって読み取られる画像データを、前記原稿の斜行を考慮しない場合の格納アドレスを基準に前記検出手段により検出された前記原稿の斜行角度に従って当該画像データを回転した格納アドレスに格納することを特徴とする請求項1に記載の画像読取装置。
【請求項3】
前記補正手段は、アフィン変換により前記画像データを回転処理することを特徴とする請求項1または2に記載の画像読取装置。
【請求項4】
前記第1の読取部は、前記第2の読取部よりも先に前記原稿の表面の画像を読み取ることを特徴とする請求項1乃至3のいずれか1項に記載の画像読取装置。
【請求項5】
前記第1の読取部及び前記第2の読取部はラインセンサであることを特徴とする請求項1乃至4のいずれか1項に記載の画像読取装置。
【請求項6】
前記補正手段によって補正された画像データを記憶する記憶手段をさらに有し、
前記記憶手段に記憶された画像データを印刷する印刷手段を備えることを特徴とする請求項1乃至5のいずれか1項に記載の画像読取装置。
【請求項7】
原稿の表面を第1の読取部で読み取り、当該原稿の裏面の画像を第2の読取部で読み取る読取工程と
前記第1の読取部によって読み取られた原稿の前記第1の読取部に対する前記原稿の斜行角度を検出する検出工程と、
前記検出工程により検出された前記原稿の斜行角度に従って、前記前記第1の読取部で読み取られた画像データ、及び、前記第2の読取部で読み取られた画像データを補正する補正工程とを有することを特徴とする画像読取装置の制御方法。
【請求項8】
請求項7に記載の画像読取装置の制御方法をコンピュータにより実行するためのプログラム。
【請求項1】
原稿の表面を第1の読取部で読み取り、当該原稿の裏面の画像を第2の読取部で読み取る読取手段と、
前記第1の読取部によって読み取られた原稿の前記第1の読取部に対する前記原稿の斜行角度を検出する検出手段と、
前記検出手段により検出された前記原稿の斜行角度に従って、前記第1の読取部で読み取られた画像データ、及び、前記第2の読取部で読み取られた画像データを補正する補正手段とを備えることを特徴とする画像読取装置。
【請求項2】
前記読取手段によって読み取られた画像データを格納する格納手段をさらに備え、
前記補正手段は、前記第2の読取部によって読み取られる画像データを、前記原稿の斜行を考慮しない場合の格納アドレスを基準に前記検出手段により検出された前記原稿の斜行角度に従って当該画像データを回転した格納アドレスに格納することを特徴とする請求項1に記載の画像読取装置。
【請求項3】
前記補正手段は、アフィン変換により前記画像データを回転処理することを特徴とする請求項1または2に記載の画像読取装置。
【請求項4】
前記第1の読取部は、前記第2の読取部よりも先に前記原稿の表面の画像を読み取ることを特徴とする請求項1乃至3のいずれか1項に記載の画像読取装置。
【請求項5】
前記第1の読取部及び前記第2の読取部はラインセンサであることを特徴とする請求項1乃至4のいずれか1項に記載の画像読取装置。
【請求項6】
前記補正手段によって補正された画像データを記憶する記憶手段をさらに有し、
前記記憶手段に記憶された画像データを印刷する印刷手段を備えることを特徴とする請求項1乃至5のいずれか1項に記載の画像読取装置。
【請求項7】
原稿の表面を第1の読取部で読み取り、当該原稿の裏面の画像を第2の読取部で読み取る読取工程と
前記第1の読取部によって読み取られた原稿の前記第1の読取部に対する前記原稿の斜行角度を検出する検出工程と、
前記検出工程により検出された前記原稿の斜行角度に従って、前記前記第1の読取部で読み取られた画像データ、及び、前記第2の読取部で読み取られた画像データを補正する補正工程とを有することを特徴とする画像読取装置の制御方法。
【請求項8】
請求項7に記載の画像読取装置の制御方法をコンピュータにより実行するためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19a】
【図19b】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19a】
【図19b】
【公開番号】特開2011−129990(P2011−129990A)
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【出願番号】特願2009−283974(P2009−283974)
【出願日】平成21年12月15日(2009.12.15)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【出願日】平成21年12月15日(2009.12.15)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]