(57)【要約】【課題】回路規模の増大化を抑制しつつ、読み取られた原稿の表面と裏面の画像を補正することができる。【解決手段】表面読取部１０６により読取られた原稿１００の表面の画像データは、原稿１００が斜行しない場合のＲＡＭ５０３の書き込みアドレスに一旦書込まれる。そして、表面の画像データは、原稿１００の斜行角度に応じた回転角度で回転処理される。この際、回転後のＲＡＭ５０３上の書込みアドレスは、アフィン変換により求められる。一方、裏面の画像データは、原稿１００の斜行角度を考慮しない場合の書込みアドレスが、原稿１００の実際の斜行角度に応じて変更され、その変更後の書込みアドレスに書込まれる。【選択図】図１８
2011129990.tif 000002
【特許請求の範囲】
【請求項１】
原稿の表面を第１の読取部で読み取り、当該原稿の裏面の画像を第２の読取部で読み取る読取手段と、
前記第１の読取部によって読み取られた原稿の前記第１の読取部に対する前記原稿の斜行角度を検出する検出手段と、
前記検出手段により検出された前記原稿の斜行角度に従って、前記第１の読取部で読み取られた画像データ、及び、前記第２の読取部で読み取られた画像データを補正する補正手段とを備えることを特徴とする画像読取装置。
【請求項２】
前記読取手段によって読み取られた画像データを格納する格納手段をさらに備え、
前記補正手段は、前記第２の読取部によって読み取られる画像データを、前記原稿の斜行を考慮しない場合の格納アドレスを基準に前記検出手段により検出された前記原稿の斜行角度に従って当該画像データを回転した格納アドレスに格納することを特徴とする請求項１に記載の画像読取装置。
【請求項３】
前記補正手段は、アフィン変換により前記画像データを回転処理することを特徴とする請求項１または２に記載の画像読取装置。
【請求項４】
前記第１の読取部は、前記第２の読取部よりも先に前記原稿の表面の画像を読み取ることを特徴とする請求項１乃至３のいずれか１項に記載の画像読取装置。
【請求項５】
前記第１の読取部及び前記第２の読取部はラインセンサであることを特徴とする請求項１乃至４のいずれか１項に記載の画像読取装置。
【請求項６】
前記補正手段によって補正された画像データを記憶する記憶手段をさらに有し、
前記記憶手段に記憶された画像データを印刷する印刷手段を備えることを特徴とする請求項１乃至５のいずれか１項に記載の画像読取装置。
【請求項７】
原稿の表面を第１の読取部で読み取り、当該原稿の裏面の画像を第２の読取部で読み取る読取工程と
前記第１の読取部によって読み取られた原稿の前記第１の読取部に対する前記原稿の斜行角度を検出する検出工程と、
前記検出工程により検出された前記原稿の斜行角度に従って、前記前記第１の読取部で読み取られた画像データ、及び、前記第２の読取部で読み取られた画像データを補正する補正工程とを有することを特徴とする画像読取装置の制御方法。
【請求項８】
請求項７に記載の画像読取装置の制御方法をコンピュータにより実行するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像読取装置、その制御方法、及びプログラムに関し、特に原稿の表裏を同時に読み取る場合の原稿斜行補正技術に関する。
【背景技術】
【０００２】
近年、デジタル複写機、フラットベットスキャナ等の画像読取装置において、１回の原稿搬送で当該原稿の表裏を同時に読み取る機能が実現されている。
【０００３】
この種の画像形成装置では、通常、原稿の表裏両面をそれぞれ表面用センサ、裏面用センサで読み取っている。このため、原稿が斜行した場合は、表面の読取画像と裏面の読取画像とでは、原稿の斜行角度の２倍の角度で画像が回転した状態となる。従って、現行の両面を同時に読み取る場合には、特に斜行補正技術が重要になってくる。
【０００４】
従来の斜行補正技術としては、原稿を読取り位置に搬送する過程でレジストローラに原稿の先端を突き当てて原稿に撓みを持たせることにより、原稿の斜行を補正する技術が一般に用いられていた。
【０００５】
しかしながら、このような機械的な構成による斜行補正技術は、原稿読取速度の高速化を阻害する要因となってしまう。そこで、原稿を斜行したままの状態で読取り、ＣＰＵや専用の斜行補正回路等によって、斜行角度に応じて斜行補正を行う技術が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２５４１６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１では、斜行補正用の回路については、画像読取装置が、表面の読取画像を補正するための回路と裏面の読取画像を補正するための回路とを備える必要がある。このため、回路規模の増大化を招くことになり、画像読取装置のコストアップにつながってしまうる。
【０００８】
本発明は、このような技術的な課題に鑑みてなされたものである。その目的は、回路規模の増大化を抑制しつつ、読み取られた原稿の表面と裏面の画像を補正することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明は、原稿の表面を第１の読取部で読み取り、当該原稿の裏面の画像を第２の読取部で読み取る読取手段と、第１の読取部によって読み取られた原稿の前記第１の読取部に対する原稿の斜行角度を検出する検出手段と、検出手段により検出された原稿の斜行角度に従って、第１の読取部で読み取られた画像データ、及び、第２の読取部で読み取られた画像データを補正する補正手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、回路規模の増大化を抑制しつつ、読み取られた原稿の表面と裏面の画像を補正することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係る両面同時読取装置を用いた画像処理装置の外観図である。
【図２】上記両面同時読取装置の搬送系の概略構成を示す断面図である。
【図３】上記両面同時読取装置の表面読取部の概略構成を示す断面図である。
【図４】上記両面同時読取装置の裏面読取部の概略構成を示す断面図である。
【図５】上記画像処理装置の制御系の概略構成を示すブロック図である。
【図６】光学変換素子に対する原稿の斜行状態を示す図である。
【図７】光学変換素子に対する原稿の斜行角度を示す図である。
【図８】原稿の斜行角度の算出処理を示すフローチャートである。
【図９】原稿の表面の斜行補正処理を示すフローチャートである。
【図１０】原稿の表面の画像データを画像読取部からＲＡＭへ転送するイメージを示す図である。
【図１１】原稿の表面の画像データをＩＰを使用して斜行補正するイメージを示す図である。
【図１２】アフィン変換を説明するための図である。
【図１３】裏面用のＩ／Ｆコントローラの概略構成を示すブロック図である。
【図１４】原稿に関する各種の設定を示す概念図である。
【図１５】原稿が斜行しない場合の画像データのＲＡＭへの蓄積状況を示す概念図である。
【図１６】原稿が斜行した場合の画像データのＲＡＭへの蓄積状況を示す概念図である。
【図１７】斜行状態でＲＡＭに蓄積された画像データを本来の蓄積位置に移動する移動状態を示す概念図である。
【図１８】原稿の裏面画像を読取部からＲＡＭへ転送する状態を示す概念図である。
【図１９ａ】裏面の斜行補正のためのアドレス生成処理を示すフローチャートである。
【図１９ｂ】図１９ａの続きのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態を図面に基づいて説明する。
【００１３】
［画像形成装置の外観］
図１は、本発明の実施の形態に係る両面同時読取装置を用いた画像処理装置の外観図である。図１に示すように、本画像処理装置は、スキャナ部２００とプリンタ部２０３を有し、スキャナ部２００で読み取られた原稿画像をプリンタ部２０３で印刷することができる。また、スキャナ部２００は、読取対象の原稿を読取位置（原稿台ガラス１０７：図２等参照）に自動的に給送する自動原稿送り装置２０１を有している。プリンタ部２０３は、原稿画像を記録するための各種サイズの記録用紙をそれぞれ収納・給紙する用紙カセット２０４〜２０７、印刷済の記録用紙を積載するための排紙トレイ２０８を有している。
【００１４】
自動原稿送り装置２０１は、操作部２０２の操作により読取指令が発せられると、複数の原稿を１枚単位で読取位置に順次給送することができる。この場合、自動原稿送り装置２０１は、積層された原稿を分離ローラ等により１枚単位に分離しながら給送する。
【００１５】
スキャナ部２００は、自動原稿送り装置２０１により読み取り位置に給送されてきた原稿上の画像を光学的に読取って光電変換し、その光電変換に係る電子的な画像データをプリンタ部２０３に転送する。
【００１６】
なお、スキャナ部（画像読取装置）２００は、読取位置への原稿の１回の搬送過程（搬送工程）で、その原稿の表面と裏面の画像をほぼ同時に読取る両面同時読取機能を有している。そこで、以下の説明においては、スキャナ部（画像読取装置）２００を両面同時読取装置２００と呼ぶこととする。
【００１７】
プリンタ部２００３は、転送に係る画像データに基づいて記録用紙（シート）上に画像を印刷する。このプリンタ部２０３の印刷方式としては、例えば、電子写真方式、インクジェット方式等の各種の印刷方式を採用することができる。プリンタ部２０３は、画像を記録用紙に印刷した後、その記録用紙を排紙トレイ２０８に排紙する。
【００１８】
［両面同時読取装置の構成］
図２は、両面同時読取装置２００の搬送系の概略構成を示すブロック図である。図２において、原稿載置台１０１には、読取対象の原稿を表面を上にして積層状態で載置する。原稿載置台１０１に載置された原稿１００は、ピックアップローラ１０２により１枚単位でピックアップされ、給送ローラ１０３を介して原稿台ガラス１０７に給送され、更に搬送ローラ１０４、排紙ローラ１１０を介して排紙される。
【００１９】
この場合、原稿１００が原稿台ガラス１０７を通過する過程で原稿１００の両面の画像がほぼ同時に読み取られる。すなわち、原稿１００が表面読取部１０６に対向する位置を通過する際に、表面読取部１０６の光源１０５により原稿１００の表面に光が照射されることで、原稿１００の表面の画像が表面読取部１０６により読取られる。また、原稿１００が裏面読取部１０９に対向する位置を通過する際に、裏面読取部１０９の光源１０８により原稿１００の裏面に光が照射されることで、原稿１００の裏面の画像が裏面読取部１０９により読取られる。
【００２０】
換言すれば、原稿台ガラス１０７に原稿１００を１回給送するだけで、原稿１００の両面の画像がほぼ同時に読取られるので、原稿１００の表裏両面の画像を読取るために原稿１００を原稿台ガラス１０７に複数回給送する必要はない。
【００２１】
表面読取部１０６、裏面読取部１０９は、それぞれ原稿台ガラス１０７の下面、上面に密着する形態で固定位置に配備されている。従って、原稿１００の両面の画像は、所謂、流し読み方式で読取られる（図３，４の矢印参照）。
【００２２】
表面読取部１０６、裏面読取部１０９は、同様の構成であり、それぞれ、光源１０５，１０８、等倍レンズ３０２，４０２、ライン型イメージセンサ３０１，４０１（第１の光電変換素子群、第２の光電変換素子群）を有する。なお、ライン型イメージセンサ３０１は、第１の読取部ともいい、ライン型イメージセンサ４０１は第２の読取部ともいい、ライン型イメージセンサは、ラインセンサともいう。これらデバイスの副走査方向の幅は、原稿１００の副走査方向の幅と同等、若しくはそれ以上の幅となっている。
【００２３】
上記の流し読みの際には、原稿１００の表面、裏面に対して、それぞれ光源１０５，１０８により光が照射される。その反射光、即ち、原稿１００の表面、裏面の画像をそれぞれ反映した画像光は、それぞれ等倍レンズ３０２，４０２を介してライン型イメージセンサ３０１，４０１に入射される。ライン型イメージセンサ３０１，４０１は、原稿１００の表面、裏面からの画像光をそれぞれ光電変換し、電子的な画像データとして出力する。
【００２４】
図５は、両面画像同時読取装置２００の制御系の概略構成を示すブロック図である。図５において、ＣＰＵ５０１は、ＲＯＭ５０２に格納されたアプリケーションプログラムを実行することにより、原稿１００の両面の画像を同時に読取る同時読取り処理を行う。この際、ＣＰＵ５０１は、ＲＡＭ５０３をワークエリア等として利用する。
【００２５】
なお、ＲＯＭ５０２には、後述する図８，９，１９のフローチャートに対応する処理をＣＰＵ５０１、すなわちコンピュータが実行するためのアプリケーションプログラムも予め格納されている。また、ＲＡＭ５０３は、表面読取部１０６、裏面読取部１０９により読取られた表面、裏面の画像データを格納する一時的に格納する画像メモリ（記憶媒体）としても利用される。
【００２６】
システムバス５０４には、上記のＣＰＵ５０１、ＲＯＭ５０２、ＲＡＭ５０３と共に、Ｉ／Ｆコントローラ５０５，５０６を介してそれぞれ表面読取部１０６、裏面読取部１０９が接続されている。また、システムバス５０４には、ＩＰ（イメージプロセッシングユニット）５０７が接続され、ＨＤコントローラ５０８を介してハードディスク５０９が接続されている。
【００２７】
表面読取部１０６、裏面読取部１０９は、ＣＰＵ５０１の制御の下に、それぞれ、原稿１００が表面読取部１０６、裏面読取部１０９の位置を通過する際に、光源１０５，１０８により原稿１００の表面、裏面にそれぞれ光を照射する。そして、表面読取部１０６、裏面読取部１０９は、それぞれ、原稿１００の表面、裏面からの画像光をライン型イメージセンサ３０１，４０１により光電変換する。
【００２８】
次に、表面読取部１０６、裏面読取部１０９は、それぞれ、光電変換に係る画像データ（アナログデータ）をデジタルの画像データに変換し、Ｉ／Ｆコントローラ５０５，５０６に出力する。Ｉ／Ｆコントローラ５０５，５０６は、格納制御手段として機能し、それぞれ、表面読取部１０６、裏面読取部１０９からの画像データをＲＡＭ５０３の異なる領域に格納する。
【００２９】
ＩＰ５０７は、ＲＡＭ５０３に格納された原稿１００の表面、裏面に係る画像データに対してシェーディング補正等の各種の画像補正処理を行う。
【００３０】
なお、本実施の形態では、上記の原稿１００の斜行角度（画像の傾斜角度）は、表面読取部１０６のライン型イメージセンサ３０２の画素群の配列方向に対する原稿１００の斜行角度を想定している。
【００３１】
ＣＰＵ５０１は、ＩＰ５０７により画像処理が施された画像データを、ＨＤコントローラ５０８を介してハードディスク５０９に格納する。なお、ＩＰ５０７は、ＣＰＵ５０１の制御の下に、ハードディスク５０９に格納されている画像データに対して各種の画像処理を施し、その画像処理結果を再度ハードディスク５０９に格納する。
【００３２】
［斜行角度検出］
次に、原稿の斜行角度の検出手法を、図６〜８に基づいて説明する。なお、原稿の斜行角度の検出は、表面読取部１０６、裏面読取部１０９の何れか一方について行えば良く、本実施の形態では、処理の迅速化を図るべく、先に原稿読取りを行う表面読取部１０６により原稿の斜行角度を検出している。
【００３３】
ＣＰＵ５０１は、原稿１００が斜めに給送され、原稿１００の先端がライン型イメージセンサ３０１を通過したことを検知すると（Ｓ８０１）、タイマ（不図示）を起動させて当該タイマのカウントアップを開始する（Ｓ８０２）。この場合、原稿１００が図６のような形態で斜行している場合は、原稿１００の右上の角位置Ｒが、ライン型イメージセンサ３０１のＡ点に係る画素位置で最初に検知されることとなる。
【００３４】
その後、原稿１００の左上の角位置Ｌが、ライン型イメージセンサ３０１のＢ点に係る画素位置で検知されると（Ｓ８０３）、ＣＰＵ５０１は、タイマのカウント動作を停止させる（Ｓ８０４）。なお、Ａ点とＢ点との間の距離、すなわち１ラインの読取り幅ＷＤは、原稿１００が斜行した場合は、原稿１００の主走査方向の幅（長さ）よりも短くなる。ＣＰＵ５０１は、読み取った原稿の画像データから、Ａ点とＢ点との間の距離、すなわち１ラインの読取り幅ＷＤを特定する。
【００３５】
そして、ＣＰＵ５０１は、タイマのカウント値と、原稿１００の単位時間当たりの搬送速度を乗算することで、原稿１００の１つの主走査ラインの全部がライン型イメージセンサ３０１により検知されるまでに要する原稿１００の搬送距離Ｄを算出する（Ｓ８０５）。
【００３６】
次に、ＣＰＵ５０１は、Ａ点とＢ点との間の距離、すなわち原稿１００の１ラインの読取り幅ＷＤと上記の搬送距離Ｄを用いて、原稿１００の斜行角度θを下記の数式１により算出する（Ｓ８０６）。
【００３７】
［数１］
θ＝ｔａｎ−１（原稿の移動距離Ｄ）／（原稿の１ラインの読取り幅ＷＤ）
［表面の斜行補正］
ＣＰＵ５０１は、数式１により原稿１００の斜行角度θを算出した後、原稿の表面の読取画像に対して斜行補正を行う。この原稿の表面の読取画像に対する斜行補正は、ＲＡＭ５０３に格納された原稿の読取画像に対して（図１０参照）、ＩＰ５０７により、アドレス変換を行うことにより行う（図１１参照）。
【００３８】
今、図１０に示したように、表面読取部１０６により原稿１００の表面の画像が読取られ、その表面の画像データＤＡがＩ／Ｆコントローラ５０５によりＲＡＭ５０３に一旦格納されたものとする。この場合の格納アドレス（書込みアドレス）は、原稿１００の斜行を考慮しない場合のアドレスである。
【００３９】
すると、ＣＰＵ５０１は、そのＲＡＭ５０３への書き込み領域、及び、原稿１００の斜行角度θをＩＰ５０７に対して設定する（図９のＳ９０１）。
【００４０】
次に、ＣＰＵ５０１は、原稿１００の斜行に起因する画像の傾斜を補正するために（以下、この補正を斜行補正と言う）、ＩＰ５０７に対して各種の初期設定を行う（Ｓ９０２）。具体的には、ＣＰＵ５０１は、下記のような変数（ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒ、Ａｄｄｒ、ＰｉｘｅｌＣｏｕｎｔ、ｌｉｎｅＣｏｕｎｔ）を定義し、それら変数の初期値を入力しておく。
【００４１】
ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒ：ＲＡＭ５０３から今回リードするラインの先頭のアドレス、
Ａｄｄｒ：ＲＡＭ５０３から今回リードするアドレス（データの読出し位置）、
ＰｉｘｅｌＣｏｕｎｔ：主走査方向のアクセスカウント値、
ｌｉｎｅＣｏｕｎｔ：副走査方向のアクセスカウント値、
なお、ＣＰＵ５０１は、ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒには、原稿１００の先頭ラインの左端先端のピクセルアドレスを示すＲｅｇ＿ＳｔａｒｔＡｄｄｒを初期値として設定する。また、ＣＰＵ５０１は、Ａｄｄｒにも、ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒと同様に、Ｒｅｇ＿ＳｔａｒｔＡｄｄｒを初期値として設定する。
【００４２】
ＣＰＵ５０１は、ＰｉｘｅｌＣｏｕｎｔには、Ｒｅｇ＿Ｗｉｄｔｈ−１を初期値として設定する。このＲｅｇ＿Ｗｉｄｔｈは、原稿１００の主走査方向の長さ（ピクセル数）を示す変数である。さらに、ＣＰＵ５０１は、ＬｉｎｅＣｏｕｎｔには、Ｒｅｇ＿Ｌｉｎｅ−１を初期値として設定する。このＲｅｇ＿Ｌｉｎｅは、原稿１００の主走査方向の長さ（ピクセル数）を示す変数である。
【００４３】
ＣＰＵ５０１は、上記の各変数に対して初期値を設定した後、ＩＰ５０７を起動する（Ｓ９０３）。すると、ＩＰ５０７は、ＲＡＭ５０３に対してバスリードトランザクションを発行して、該当アドレス（Ａｄｄｒ）に保持されている画像データを取得する（Ｓ９０４）。
【００４４】
そして、ＩＰ５０７は、表面の読取画像データに対して斜行補正を行うべく、当該表面の読取画像データのＲＡＭ５０３への書込みアドレスを算出する（Ｓ９０５）。この場合、ＩＰ５０７は、アフィン変換を用いて画像回転後の書込みアドレスを算出する。
【００４５】
このアフィン変換による画像回転処理では、例えば、図１２の四角形ＡＢＣＤにおけるＡ点を原点として、回転角度θだけ回転させた場合、回転後の四角形Ａ’Ｂ’Ｃ’Ｄ’のＣ’座標（ｘ’，ｙ’）は、下記の数式２で示される。
【００４６】
［数２］
ｘ’＝  ｘ・ｃｏｓθ  -  ｙ・ｓｉｎθ
ｙ’＝  ｘ・ｓｉｎθ  ＋  ｙ・ｃｏｓθ
そこで、ＩＰ５０７は、Ｓ９０５では、数式２における回転角度θとして、図７のＳ７０７で算出した原稿１００の斜行角度θを用いることにより、画像回転後の斜行補正に係る書込みアドレスを算出する。
【００４７】
次に、ＩＰ５０７は、算出した書込みアドレス（ＲＡＭ５０３上のアドレス）に対して、Ｓ９０４で取得した画像データを書込むべく、ＲＡＭ５０３に対してバスライトトランザクションを発行する（Ｓ９０６）。
【００４８】
次に、ＩＰ５０７は、現在のｐｉｘｅｌＣｏｕｎｔの値、現在のＡｄｄｒの値をそれぞれ「１」だけインクリメントする（Ｓ９０７，Ｓ９０８）。そして、ＩＰ５０７は、ｐｉｘｅｌＣｏｕｎｔの値が「０」となり、１ラインの最終ピクセルの画像データに対する斜行補正処理（画像回転処理）が完了したか否かを判別する（Ｓ９０９）。
【００４９】
その結果、１ラインの最終ピクセルの画像データに対する斜行補正処理（画像回転処理）が完了していない場合は、ＩＰ５０７は、Ｓ９０４に戻り、当該ラインの次のピクセルの画像データについて同様の斜行補正処理（画像回転処理）を行う。
【００５０】
一方、ｐｉｘｅｌＣｏｕｎｔの値が「０」となり、１ラインの最終ピクセルの画像データに対する斜行補正処理（画像回転処理）が完了している場合は、ＩＰ５０７は、次のラインに対して同様の斜行補正処理（画像回転処理）を行うべく、変数の再設定処理を行う。
【００５１】
具体的には、ＩＰ５０７は、ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒにＲｅｇ＿Ｐｉｔｃｈの値を加算したものを、Ａｄｄｒの値として再設定する（Ｓ９１０）。この場合、再設定されたＡｄｄｒの値は、次のラインの最初の画像データを書込むためのアドレスとなる。
【００５２】
すなわち、加算される上記のＲｅｇ＿Ｐｉｔｃｈは、図１４に示すように、ＲＡＭ５０３上の１ライン分のピクセル数を示す値である。従って、ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒの値にＲｅｇ＿Ｐｉｔｃｈの値を加えることによって、ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒには、次のラインの先頭アドレスの値が入力され、これにより、ＲＡＭ５０３上で書込みアドレスの改行が行われることとなる。
【００５３】
次に、ＩＰ５０７は、次のラインの書込みアドレスの変換処理、すなわち回転による斜行補正処理を行うための各種の設定値の初期化を行う（Ｓ９１１）。具体的には、ＩＰ５０７は、ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒｅｓｓの値に、Ｒｅｇ＿Ｐｉｔｃｈの値を加算する。また、ＩＰ５０７は、ｐｉｘｅｌＣｏｕｎｔに、Ｒｅｇ＿ｗｉｄｔｈ−１を設定し、次の１ライン分の画像データを読出せるようにする。さらに、ＩＰ５０７は、ｌｉｎｅＣｏｕｎｔの値を「１」だけデクリメントし、ｓｈａｋｏｕＣｏｕｎｔに「１」を設定する。
【００５４】
次に、ＩＰ５０７は、ｌｉｎｅＣｏｕｎｔの値が「０」になったか否かを判別する（Ｓ９１２）。その結果、ｌｉｎｅＣｏｕｎｔの値が「０」になっていなければ、全てのラインについて回転処理による斜行補正処理が完了していないことを意味するので、ＩＰ５０７は、Ｓ９０４に戻る。そして、ＩＰ５０７は、Ｓ９０４に戻ることにより、当該次のラインに対して、同様の回転処理による斜行補正処理を行う。
【００５５】
一方、ｌｉｎｅＣｏｕｎｔの値が「０」になっており、全てのラインについて回転処理による斜行補正処理が完了している場合は、ＩＰ５０７は、当該表面の画像データに係る斜行補正処理を終了する。
【００５６】
以上のように斜行補正処理を行うことで、図１１に示した原稿の斜行に起因する表面の傾斜した画像データＤＡは、画像データＤＢのように、斜行補正が行われ斜行の無い形態でＲＡＭ５０３に書込まれることとなる。
【００５７】
［裏面の斜行補正］
前述のように、原稿１００の表面の画像データに係る斜行補正では、表面読取部１０６により読取られた表面の画像データを、そのままの形態で一旦ＲＡＭ５０３に格納していた。そして、原稿１００のサイズ（Ｒｅｇ＿Ｗｉｄｔｈ、Ｒｅｇ＿Ｌｉｎｅ）を把握して原稿１００の斜行角度θを算出し、ＩＰ５０７により、アフィン変換で回転処理後のＲＡＭ５０３への書込みアドレスを求め、その書込みアドレスに画像データを再度書込んでいた。
【００５８】
これに対し、原稿１００の裏面の画像データに係る斜行補正では、表面の画像データの斜行補正の際に把握した原稿１００のサイズ、斜行角度θ等を用いて、最初から、斜行補正後（回転処理後）のアドレスに裏面の読取り画像データを書込んでいる。
【００５９】
このように、最初から、斜行補正後（回転処理後）のアドレスに裏面の読取り画像データを書込むために、裏面用のＩ／Ｆコントローラ５０６は、図１３のように構成されている。
【００６０】
すなわち、裏面用のＩ／Ｆコントローラ５０６は、図１３に示すように、レジスタ部５０６Ａ、アドレス生成部５０６Ｂ、バスインタフェース５０６Ｃ、ＦＩＦＯ５０６Ｄ、及び画像インタフェース５０６Ｅを有している。
【００６１】
レジスタ部５０６Ａは、Ｉ／Ｆコントローラ５０６の各種の設定情報を保存するブロックである。このレジスタ部５０６Ａには、具体的には、図１４に示すような原稿１００の主走査方向のサイズＲｅｇ＿Ｗｉｄｔｈ、余白を含めた主走査方向のサイズＲｅｇ＿Ｐｉｔｃｈ、副走査方向のサイズＲｅｇ＿ＬｉｎｅがＣＰＵ５０１により設定される。また、レジスタ部５０６Ａには、裏面の画像データをＲＡＭ５０３に蓄積する際の起点となるアドレスＲｅｇ＿ＳｔａｒｔＡｄｄｒも、ＣＰＵ５０１により設定される。
【００６２】
更に、レジスタ部５０６Ａには、図１６に示すような斜行補正単位画素数Ｒｅｇ＿ＸＲｅｐＮｕｍもＣＰＵ５０１により設定される。この斜行補正単位画素数Ｒｅｇ＿ＸＲｅｐＮｕｍの値は、原稿１００の斜行角度をθとしたとき、下記の数式３
【００６３】
［数３］
Ｒｅｇ＿ＸＲｅｐＮｕｍ  ＝  １／ｔａｎθ
で得ることができる。
【００６４】
アドレス生成部５０６Ｂは、レジスタ部５０６Ａに設定された各種の設定値と、各種のタイミング信号に基づいて、読取り画像データをＲＡＭ５０３に書込むためのアドレス情報を生成する。
【００６５】
画像インタフェース５０６Ｅは、裏面読取部１０９により読取られた原稿１００の裏面の画像データをＦＩＦＯ５０６Ｄに転送すると共に、タイミング信号をアドレス生成部５０６Ｂに転送する。
【００６６】
ＦＩＦＯ５０６Ｄは、画像インタフェース５０６Ｅからの裏面の画像データを一旦蓄積し、バスインタフェース５０６Ｃからの要求信号に応じて転送する。バスインタフェース５０６Ｃは、アドレス生成部５０６Ａからのアドレス情報と、ＦＩＦＯ５０６Ｄからの画像データをパッキングし、システムバス４０４を介してＲＡＭ５０３へのライトトランザクションを発行する。
【００６７】
次に、最初から、斜行補正後（回転処理後）のアドレスに裏面の読取り画像データを書込む場合の書込みアドレスを、図１５〜１７に基づいて説明する。
【００６８】
ここで、仮に、原稿１００の裏面に記載されている主走査方向に平行な直線が、原稿１００が斜行しない正常な搬送状態で裏面読取部１０９により読取られたとする。この場合、裏面に記載の主走査方向に平行な直線は、図１５に示した符号１５０１のように、主走査方向に平行な直線の画像として裏面読取部１０９により読取られて、ＲＡＭ５０３に書き込まれる。
【００６９】
なお、図１５の符号１５０２は、ＲＡＭ５０３へのアクセスの最小単位を示している。このアクセスの最小単位１５０２は、１つの画素（ピクセル）であっても、或いは、複数の画素の集合体であってもよい。
【００７０】
原稿１００が斜行している状態で当該原稿の裏面に記載されている主走査方向に平行な直線が読取られた場合は、当該直線は、通常、図１６に示した符号１６０１のように、主走査方向に対して傾斜した直線状の画像データとしてＲＡＭ５０３に書込まれてしまう。図１６の場合、原稿１００の斜行角度θを反映し、ＲＡＭ５０３に書込まれる直線状の画像データも、主走査方向に対して角度θだけ傾斜した状態となっている。
【００７１】
ここで、原稿上で主走査方向に平行な直線の画像データが、主走査方向に対して傾斜していない図１５のような本来の状態でＲＡＭ５０３に書込まれるようにするためには、ＲＡＭ５０３への書込みアドレスを図１７に示すように変更する必要がある。すなわち、符号１７０５，１７０６の画像データを、それぞれ、符号１７０１，１７０２のアドレスに書込み、１符合１７０７、１７０８の画像データを、それぞれ、符号１７０３，１７０４のアドレスに書込む必要がある。
【００７２】
この場合、ＲＡＭ５０３への書込みは、ライン毎に行われるものであるため、原稿１００の行斜行角度θに応じて、当該ラインの画像データをＲＡＭ５０３へ書込む際の書込みアドレスを生成する必要がある。なお、図１６，１７の例では、斜行補正単位画素数Ｒｅｇ＿ＸＲｅｐＮｕｍが、図１５に示したアクセスの最小単位の２倍の画素数である場合を想定しており、当該アクセスの２倍の画素数の単位で、書込みアドレスが生成される。
【００７３】
次に、原稿の裏面の画像データの斜行補正を書込みアドレスの制御により行う処理を、図１９のフローチャートに基づいて説明する。なお、原稿１００の読取り動作に入る前に、レジスタ部５０６Ａには、ＣＰＵ５０１により、図１４に示した原稿１００に関する各種の情報、及び斜行補正単位画素数Ｒｅｇ＿ＸＲｅｐＮｕｍが設定されているものとする。
【００７４】
裏面読取部１０９によって原稿の裏面の画像が読込まれると、Ｉ／Ｆコントローラ５０６内のレジスタ部５０６Ａは、ＣＰＵ５０１の制御の下に、アドレス生成部５０６Ｂに対して、下記のような各種の初期設定を行う（Ｓ１９０１）。
【００７５】
ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒ：現在ＲＡＭ５０３上にライトするラインの先頭のアドレス
Ａｄｄｒ：現在ＲＡＭ５０３上にライトするアドレス
ｐｉｘｅｌＣｏｕｎｔ：主走方向のアクセスカウント値
ｌｉｎｅＣｏｕｎｔ：副走査方向のアクセスカウント値
ｓｈａｋｏｕＣｏｕｎｔ：同一ライン内で斜行しないアクセスカウント値
次に、バスインタフェース５０６Ｃは、ＦＩＦＯ５０６Ｄに蓄積されている裏面の画像データをアドレス生成部５０６Ｂで生成されたアドレスＡｄｄｒに書込むためのライトトランザクションを、システムバス５０４を介してＲＡＭ５０３に発行する（Ｓ１９０２）。
【００７６】
このライトトランザクションが終了すると、アドレス生成部５０６Ｂは、裏面の次の画像データをＲＡＭ５０３に書込むために、ｐｉｘｅｌＣｏｕｎｔの値を「１」だけデクリメントし（Ｓ１９０３）、Ａｄｄｒの値を「１」だけインクリメントする（Ｓ１９０４）。
【００７７】
更に、アドレス生成部５０６Ｂは、ｓｈａｋｏｕＣｏｕｎｔの値を「１」だけインクリメントする（Ｓ１９０５）。
【００７８】
次に、アドレス生成部５０６Ｂは、インクリメントしたｓｈａｋｏｕＣｏｕｎｔの値がレジスタ部５０６Ａに予め設定されているＲｅｇ＿ＸＲｅｐＮｕｍの値に達した場合に（Ｓ１９０６）、Ｓ１９０７に進む。そして、Ｓ１９０７以降で、裏面の次の画像データの書込みアドレスを斜行補正のために更新する。まず、Ｓ１９０７では、アドレス生成部５０６Ｂは、原稿１００の斜行角度θが正であるか否かを判別する。斜行角度θは、ライン型イメージセンサ３０１または４０１から原稿１００を見たときに、原稿の左端より原稿の右端が先にライン型イメージセンサ３０１または４０１を通過した場合に「正」であると判定する。一方、原稿の右端より原稿の左端が先にライン型イメージセンサ３０１または４０１を通過した場合に「負」であると判定する。また、原稿の右端と原稿の左端とが、同時にライン型イメージセンサ３０１または４０１を通過した場合は「０」になる。
【００７９】
原稿１００の斜行角度θが「正」であれば、アドレス生成部５０６Ｂは、現在のＡｄｄｒの値からＲｅｇ＿Ｐｉｔｃｈの値だけ減算し、その減算結果を新たなＡｄｄｒとする（Ｓ１９０８）。原稿１００の斜行角度θが「０」又は「負」であれば、アドレス生成部５０６Ｂは、現在のＡｄｄｒの値にＲｅｇ＿Ｐｉｔｃｈの値を加算し、その加算結果を新たなＡｄｄｒとする（Ｓ１９０９）。
【００８０】
なお、本実施の形態では、表面読取部１０６のライン型イメージセンサ３０２と裏面読取部１０９のライン型イメージセンサ４０２とは、平行であることを想定している。この場合、表面のライン型イメージセンサ３０２に対する原稿１００の斜行角度を「θ」とした場合、裏面のライン型イメージセンサ４０２に対する原稿１００の斜行角度もほぼθとなる。従って、表面の斜行補正を図１０、図１１のような形態で行った場合は、裏面の斜行補正は、図１８のＤＣ→ＤＤのような形態で行われる。
【００８１】
上記のＳ１９０６〜Ｓ１９０９の処理を行うことによって、図１７及び図１８に示すように、原稿の裏面の画像データは、斜行補正がなされた状態でＲＡＭ５０３に書込まれることとなる。
【００８２】
アドレス生成部５０６Ｂは、Ｓ１９０８又はＳ１９０９で新たなＡｄｄｒを生成した後、ｓｈａｋｏｕＣｏｕｎｔの値を「１」に初期化して（Ｓ１９１０）、Ｓ１９１１に進む。なお、ｓｈａｋｏｕＣｏｕｎｔの値がレジスタ部５０６Ａに予め設定されているＲｅｇ＿ＸＲｅｐＮｕｍの値に達していない場合には（Ｓ１９０６）、アドレス生成部５０６Ｂは、Ｓ１９０７〜Ｓ１９１０の処理をスキップして、直ちにＳ１９１１に進む。
【００８３】
アドレス生成部５０６Ｂは、Ｓ１９１１では、ｐｉｘｅｌＣｏｕｎｔの値が「０」となり、１ラインの画像データを全てＲＡＭ５０３へ書込んだか否かを判別する。その結果、１ラインの画像データを全てＲＡＭ５０３に書込んでいない場合は、アドレス生成部５０６Ｂは、Ｓ１９０２に戻り、当該ラインの次の画像データについて、同様の書込みアドレスを制御する。
【００８４】
一方、ｐｉｘｅｌＣｏｕｎｔの値が「０」となり、１ラインの画像データを全てＲＡＭ５０３に書込んでいる場合は、アドレス生成部５０６Ｂは、次のラインの画像データに対して同様の書き込みアドレス制御を行うべく、各種の変数の再設定処理を行う。
【００８５】
具体的には、アドレス生成部５０６Ｂは、ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒにＲｅｇ＿Ｐｉｔｃｈの値を加算したものを、次のラインの最初の画像データのＡｄｄｒの値として再設定する（Ｓ１９１２）。次に、アドレス生成部５０６Ｂは、次のラインの画像データをＲＡＭ５０３に書込むための各種の設定値の初期化を行う（Ｓ１９１３）。
【００８６】
具体的には、アドレス生成部５０６Ｂは、ｎｏｗＳｔａｒｔＬｉｎｅＡｄｄｒｅｓｓの値に、Ｒｅｇ＿Ｐｉｔｃｈの値を加算する。また、アドレス生成部５０６Ｂは、ｐｉｘｅｌＣｏｕｎｔに、Ｒｅｇ＿ｗｉｄｔｈ−１を設定し、次の１ライン分の画像データを読出せるようにする。さらに、アドレス生成部５０６Ｂは、ｌｉｎｅＣｏｕｎｔの値を「１」だけデクリメントし、ｓｈａｋｏｕＣｏｕｎｔに「１」を設定する。
【００８７】
次に、アドレス生成部５０６Ｂは、ｌｉｎｅＣｏｕｎｔの値が「０」になったか否かを判別する（Ｓ１９１４）。その結果、ｌｉｎｅＣｏｕｎｔの値が「０」になっていなければ、斜行補正を行った形態で画像データをＲＡＭ５０３に書き込む処理が未だなされていないラインが存在することを意味するので、アドレス生成部５０６Ｂは、Ｓ１９０２に戻る。
【００８８】
一方、ｌｉｎｅＣｏｕｎｔの値が「０」になっており、全てのラインについて斜行補正を行った形態で画像データをＲＡＭ５０３に書き込んだ場合は、アドレス生成部５０６Ｂは、斜行補正を行った状態で裏面の画像データをＲＡＭ５０３に書込む処理を終了する。
【００８９】
以上のように、ライン型イメージセンサ４０１によって読み取られる画像データの格納アドレスを、ライン型イメージセンサ３０１によって検知された原稿の斜行を考慮しない場合の格納アドレスを基準として原稿の斜行角度だけ回転したアドレスに決定する。
【００９０】
このように制御することによって、ライン型イメージセンサ３０１で検知された斜行角度を、原稿の表面用と裏面用の画像データに対して用いることができ、斜行補正回路を表面と裏面とで別々に設けずとも、表面と裏面の画像データの補正を行うことができる。
【００９１】
なお、上述のようにして読み取られた原稿の画像データは、ＲＡＭ５０３に書き込まれた後、ＨＤ５０９に記憶される。ＨＤ５０９に記憶された画像データは、斜行補正された後、プリンタ部２０３によって印刷されてもよいし、不図示のネットワークを介して外部装置に送信されてもよい。また、プリンタ部２０３による印刷や、ネットワークを介した送信は、自動的に行われてもよいし、ユーザの指示に従って行われてもよい。
【００９２】
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００９３】
５０１…ＣＰＵ
５０２…ＲＯＭ
５０３…ＲＡＭ
【図１】
2011129990.tif 000003
【図２】
2011129990.tif 000004
【図３】
2011129990.tif 000005
【図４】
2011129990.tif 000006
【図５】
2011129990.tif 000007
【図６】
2011129990.tif 000008
【図７】
2011129990.tif 000009
【図８】
2011129990.tif 000010
【図９】
2011129990.tif 000011
【図１０】
2011129990.tif 000012
【図１１】
2011129990.tif 000013
【図１２】
2011129990.tif 000014
【図１３】
2011129990.tif 000015
【図１４】
2011129990.tif 000016
【図１５】
2011129990.tif 000017
【図１６】
2011129990.tif 000018
【図１７】
2011129990.tif 000019
【図１８】
2011129990.tif 000020
【図１９ａ】
2011129990.tif 000021
【図１９ｂ】
2011129990.tif 000022