(57)【特許請求の範囲】
【請求項１】
画像を光学的に読み込んだ画像データに含まれる各画素を、読み込んだ位置に応じて記憶する記憶手段と、
前記記憶手段に記憶された前記画像データのスキューの角度に応じた、光学的に読み込んだ主走査方向と直交する副走査方向の一方向又はその逆方向に対応する前記記憶手段上のシフト方向と、前記主走査方向における読み出し開始位置又はシフト後の位置から、前記主走査方向に直線的に前記記憶手段から読み出す画素の数と、を記憶する設定記憶手段と、
前記記憶手段に記憶された各画素が格納されたアドレスを指定する際、前記設定記憶手段に記憶された前記シフト方向と前記画素の数とに基づいて、前記シフト方向にアドレスを一定量シフトするシフト手段と、
前記記憶手段に記憶された前記画像データの、読み出す対象となる各画素が格納されたアドレスを指定し、前記シフト手段により前記アドレスをシフトした場合に、前記画像データの階調数に応じて、前記主走査方向の前後２つの画像データを一部重複して読み込めるようなアドレスを指定するアドレス指定手段と、
前記アドレス指定手段により指定されたアドレスから、前記主走査方向に従って、当該主走査方向のライン上で、前記設定記憶手段に記憶された前記画素の数の画素のデータの読み込み要求を行う読込手段と、
光ビームによる画像の書き込み制御を行う書込制御手段に出力する画像データを記憶する出力記憶手段に対して、前記読込手段により読み込まれた画素のデータを、書き込む書込手段と、
を備えることを特徴とする画像形成装置。
【請求項２】
前記シフト手段は、前記設定記憶手段に記憶された前記画素の数を前記読込手段が読み込んだ後、前記アドレス指定手段が指定する前記アドレスを、前記設定記憶手段に記憶された前記シフト方向に一定量シフトすること、
を特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記設定記憶手段は、前記画像データにおける、スキューの角度が異なる領域毎に、当該角度を補正するための、前記記憶手段上のシフト方向と、前記主走査方向に直線的に前記記憶手段から読み出す画素の数と、を記憶し、
前記シフト手段は、前記領域毎に、当該領域に対応する、前記設定記憶手段に記憶された前記シフト方向と前記画素の数とに基づいて、シフトを行うこと、
を特徴とする請求項１又は２に記載の画像形成装置。
【請求項４】
前記アドレス指定手段は、前記シフト後の位置を含む、前記記憶装置上でデータの読込開始が可能な位置を示すバースト境界を、データを読み込む起点となるアドレスとして指定し、
前記読込手段は、前記アドレス指定手段により指定された前記アドレスから、読み込み可能な所定のデータ単位を表すバースト長単位で読込処理を行うことで、前記シフト後の位置から前記設定記憶手段に記憶された前記画素の数分の画素を含むデータを読み込むこと、
を特徴とする請求項１乃至３のいずれか一つに記載の画像形成装置。 
【請求項５】
前記読込手段が前記画素の数の画素を読み込んだ後、前記シフト手段が、前記副走査方向の一方向又はその逆方向に一定量シフトする際、画素の読み込みが終了した位置から、読み込みを開始したバースト境界の次のバースト境界までデータ間隔がある場合、前記アドレス指定手段は、前記シフト手段によりシフトした後、前記主走査方向についてシフト前と同一のバースト境界のアドレスを、読み込み開始のアドレスとして指定すること、
を特徴とする請求項４に記載の画像形成装置。 
【請求項６】
前記読込手段が前記画素の数の画素を読み込んだ後、前記シフト手段が、前記副走査方向の一方向又はその逆方向に一定量シフトする際、画素の読み込みが終了した位置までの間に、読み込みを開始したバースト境界の次のバースト境界がある場合、前記アドレス指定手段は、前記シフト手段によりシフトした後、当該次のバースト境界のアドレスを、読み込み開始のアドレスとして指定すること、
を特徴とする請求項４又は５に記載の画像形成装置。 
【請求項７】
前記記憶装置に記憶された前記画像データのうち、主走査方向に対して複数の領域に分割し、当該領域毎に前記画素の数を設定する設定手段を、さらに備え、
前記シフト手段で一定量シフトした後に、前記設定手段により設定された前記画素の数の画素を含むデータを前記読込手段が読み込むという処理を、前記領域毎に繰り返し行うこと、
を特徴とする請求項１乃至６のいずれか一つに記載の画像形成装置。
【請求項８】
前記アドレス指定手段が指定した前記アドレスが画像領域外であった場合に、前記画像データを補完するダミーデータを生成する生成手段を、
さらに備えることを特徴とする請求項１乃至７のいずれか一つに記載の画像形成装置。
【請求項９】
前記設定手段および前記アドレス指定手段は、プロッタによって書き込み可能な画像の色版の数だけ備えており、
前記各設定手段は、前記プロッタによって書き込まれる画像の色版の数に応じて独立に設定可能であり、
前記各アドレス制御手段は、前記プロッタによって書き込まれる画像の色版の数に応じて独立して動作すること、
を特徴とする請求項７に記載の画像形成装置。 
【請求項１０】
前記アドレス指定手段は、前記記憶手段上の画像データを前記主走査方向および前記副走査方向の後端から読み出して１８０度回転した画像を形成するべく、該画像データの読み込み時の前記記憶手段上のアドレスを指定すること、
を特徴とする請求項１乃至９のいずれか一つに記載の画像形成装置。
【請求項１１】
画像形成装置で実行される画像処理方法において、
前記画像形成装置は、画像を光学的に読み込んだ画像データに含まれる各画素を、読み込んだ位置に応じて記憶する記憶手段と、
前記記憶手段に記憶された前記画像データのスキューの角度に応じた、光学的に読み込んだ主走査方向と直交する副走査方向の一方向又はその逆方向に対応する前記記憶手段上のシフト方向と、前記主走査方向における読み出し開始位置又はシフト後の位置から、前記主走査方向に直線的に前記記憶手段から読み出す画素の数と、を記憶する設定記憶手段と、を備え、
シフト手段が、前記記憶手段に記憶された各画素が格納されたアドレスを指定する際、前記設定記憶手段に記憶された前記シフト方向と前記画素の数とに基づいて、前記シフト方向にアドレスを一定量シフトするシフトステップと、
アドレス指定手段が、前記記憶手段に記憶された前記画像データの、読み出す対象となる各画素が格納されたアドレスを指定し、前記シフト手段により前記アドレスをシフトした場合に、前記画像データの階調数に応じて、前記主走査方向の前後２つの画像データを一部重複して読み込めるようなアドレスを指定するアドレス指定ステップと、
読込手段が、前記アドレス指定ステップにより指定されたアドレスから、前記主走査方向に従って、当該主走査方向のライン上で、前記設定記憶手段に記憶された前記画素の数の画素のデータの読み込み要求を行う読込ステップと、
書込手段が、光ビームによる画像の書き込み制御を行う書込制御手段に出力する画像データを記憶する出力記憶手段に対して、前記読込手段により読み込まれた画素のデータを、書き込む書込ステップと、
を有することを特徴とする画像処理方法。
【請求項１２】
コンピュータで実行される画像処理プログラムにおいて、
前記コンピュータは、画像を光学的に読み込んだ画像データに含まれる各画素を、読み込んだ位置に応じて記憶する記憶手段と、
前記記憶手段に記憶された前記画像データのスキューの角度に応じた、光学的に読み込んだ主走査方向と直交する副走査方向の一方向又はその逆方向に対応する前記記憶手段上のシフト方向と、前記主走査方向における読み出し開始位置又はシフト後の位置から、前記主走査方向に直線的に前記記憶手段から読み出す画素の数と、を記憶する設定記憶手段と、を備え、
前記記憶手段に記憶された各画素が格納されたアドレスを指定する際、前記設定記憶手段に記憶された前記シフト方向と前記画素の数とに基づいて、前記シフト方向にアドレスを一定量シフトするシフトステップと、
前記記憶手段に記憶された前記画像データの、読み出す対象となる各画素が格納されたアドレスを指定し、前記シフト手段により前記アドレスをシフトした場合に、前記画像データの階調数に応じて、前記主走査方向の前後２つの画像データを一部重複して読み込めるようなアドレスを指定するアドレス指定ステップと、
前記アドレス指定ステップにより指定されたアドレスから、前記主走査方向に従って、当該主走査方向のライン上で、前記設定記憶手段に記憶された前記画素の数の画素のデータの読み込み要求を行う読込ステップと、
光ビームによる画像の書き込み制御を行う書込制御手段に出力する画像データを記憶する出力記憶手段に対して、前記読込手段により読み込まれた画素のデータを、書き込む書込ステップと、
をコンピュータに実行させるための画像処理プログラム。
【請求項１３】
請求項１２に記載の画像処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書込制御装置による書込制御の対象となる画像データを処理する画像形成装置、画像処理方法、プログラム及び記憶媒体の技術に関する。
【背景技術】
【０００２】
感光体上にレーザビーム等の光ビーム等を走査させて書き込むことにより画像を形成する画像形成装置においては、感光体の走行軸と書き込みの光軸が直角にならず、形成される画像が斜めになったり、光軸の歪みにより画像が歪んだりする場合がある。
【０００３】
このような書き込みの特性を補正するために、例えば特許文献１に記載された「画像形成装置」のように、モータにより物理的に光軸をずらす方法があるが、モータのコストがかかる。そこで、より安価に補正を行う技術としては、例えば特許文献２に記載された「画像形成装置」がある。この特許文献２に記載された技術では、複数ライン分のラインバッファを備え、画像処理により書き込み前に、複数のラインバッファから画像データを読み込む際に、副走査方向にシフトすることで、画像の歪みを補正している。
【０００４】
【特許文献１】特開平３−１４２４１２号公報
【特許文献２】特開２００７−８８９２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、この手法では、補正量がラインバッファのライン数に限定され、且つ装置の内蔵バッファ（内蔵メモリ）は高価であり、ライン数が設計時に決定されるため、動的に増減させることができないという問題がある。
【０００６】
本発明は、上記の問題点に鑑みてなされたものであり、書き込み画像のスキュー補正を低コストで確実に行える画像形成装置、画像処理方法、プログラム及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００７】
この発明による画像形成装置は、画像を光学的に読み込んだ画像データに含まれる各画素を、読み込んだ位置に応じて記憶する記憶手段と、前記記憶手段に記憶された前記画像データのスキューの角度に応じた、光学的に読み込んだ主走査方向と直交する副走査方向の一方向又はその逆方向に対応する前記記憶手段上のシフト方向と、前記主走査方向における読み出し開始位置又はシフト後の位置から、前記主走査方向に直線的に前記記憶手段から読み出す画素の数と、を記憶する設定記憶手段と、前記記憶手段に記憶された各画素が格納されたアドレスを指定する際、前記設定記憶手段に記憶された前記シフト方向と前記画素の数とに基づいて、前記シフト方向にアドレスを一定量シフトするシフト手段と、前記記憶手段に記憶された前記画像データの、読み出す対象となる各画素が格納されたアドレスを指定し、前記シフト手段により前記アドレスをシフトした場合に、前記画像データの階調数に応じて、前記主走査方向の前後２つの画像データを一部重複して読み込めるようなアドレスを指定するアドレス指定手段と、前記アドレス指定手段により指定されたアドレスから、前記主走査方向に従って、当該主走査方向のライン上で、前記設定記憶手段に記憶された前記画素の数の画素のデータの読み込み要求を行う読込手段と、光ビームによる画像の書き込み制御を行う書込制御手段に出力する画像データを記憶する出力記憶手段に対して、前記読込手段により読み込まれた画素のデータを、書き込む書込手段と、を備えることを特徴とする。 
【０００８】
この発明による画像処理方法は、画像形成装置で実行される画像処理方法において、前記画像形成装置は、画像を光学的に読み込んだ画像データに含まれる各画素を、読み込んだ位置に応じて記憶する記憶手段と、前記記憶手段に記憶された前記画像データのスキューの角度に応じた、光学的に読み込んだ主走査方向と直交する副走査方向の一方向又はその逆方向に対応する前記記憶手段上のシフト方向と、前記主走査方向における読み出し開始位置又はシフト後の位置から、前記主走査方向に直線的に前記記憶手段から読み出す画素の数と、を記憶する設定記憶手段と、を備え、シフト手段が、前記記憶手段に記憶された各画素が格納されたアドレスを指定する際、前記設定記憶手段に記憶された前記シフト方向と前記画素の数とに基づいて、前記シフト方向にアドレスを一定量シフトするシフトステップと、アドレス指定手段が、前記記憶手段に記憶された前記画像データの、読み出す対象となる各画素が格納されたアドレスを指定し、前記シフト手段により前記アドレスをシフトした場合に、前記画像データの階調数に応じて、前記主走査方向の前後２つの画像データを一部重複して読み込めるようなアドレスを指定するアドレス指定ステップと、読込手段が、前記アドレス指定ステップにより指定されたアドレスから、前記主走査方向に従って、当該主走査方向のライン上で、前記設定記憶手段に記憶された前記画素の数の画素のデータの読み込み要求を行う読込ステップと、書込手段が、光ビームによる画像の書き込み制御を行う書込制御手段に出力する画像データを記憶する出力記憶手段に対して、前記読込手段により読み込まれた画素のデータを、書き込む書込ステップと、を有することを特徴とする。 
【０００９】
この発明による画像処理プログラムは、コンピュータで実行される画像処理プログラムにおいて、前記コンピュータは、画像を光学的に読み込んだ画像データに含まれる各画素を、読み込んだ位置に応じて記憶する記憶手段と、前記記憶手段に記憶された前記画像データのスキューの角度に応じた、光学的に読み込んだ主走査方向と直交する副走査方向の一方向又はその逆方向に対応する前記記憶手段上のシフト方向と、前記主走査方向における読み出し開始位置又はシフト後の位置から、前記主走査方向に直線的に前記記憶手段から読み出す画素の数と、を記憶する設定記憶手段と、を備え、前記記憶手段に記憶された各画素が格納されたアドレスを指定する際、前記設定記憶手段に記憶された前記シフト方向と前記画素の数とに基づいて、前記シフト方向にアドレスを一定量シフトするシフトステップと、前記記憶手段に記憶された前記画像データの、読み出す対象となる各画素が格納されたアドレスを指定し、前記シフト手段により前記アドレスをシフトした場合に、前記画像データの階調数に応じて、前記主走査方向の前後２つの画像データを一部重複して読み込めるようなアドレスを指定するアドレス指定ステップと、前記アドレス指定ステップにより指定されたアドレスから、前記主走査方向に従って、当該主走査方向のライン上で、前記設定記憶手段に記憶された前記画素の数の画素のデータの読み込み要求を行う読込ステップと、光ビームによる画像の書き込み制御を行う書込制御手段に出力する画像データを記憶する出力記憶手段に対して、前記読込手段により読み込まれた画素のデータを、書き込む書込ステップと、をコンピュータに実行させる。
この発明による記憶したコンピュータ読み取り可能な記憶媒体は、上記の画像処理プログラムを記憶したことを特徴とする。
【発明の効果】
【００１０】
この発明によれば、画像データ読み込み時の記憶装置上のアドレスを指定する際に、前記アドレス指定手段が指定するアドレスを、前記主走査方向と直交する副走査方向、又は副走査方向と逆方向に一定量シフトさせることで、副走査方向のズレ補正用の高価な内蔵メモリが不要であり、且つ内蔵メモリのサイズに制約を受けることなく、書き込み画像のスキュー補正（副走査方向のズレ補正）を行うことができる。つまり、書き込み画像のスキュー補正を低コストで確実に行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、この発明を実施するための最良の形態を図面に基づいて具体的に説明する。
〔画像形成装置の基本構成〕
まず、本発明の一実施形態である画像形成装置の基本構成について、図１を参照して説明する。なお、本発明の画像形成装置は、書込制御装置及び光書込装置を搭載した電子写真方式のレーザプリンタ、デジタル複写機、ファクシミリ装置、ＭＦＰ（デジタル複合機）等の様々な機器に適用できる。
【００１２】
図１は、その画像形成装置の基本構成例を示すブロック図である。
【００１３】
この画像形成装置は、ＭＦＰであり、エンジン部１とコントローラ部２（画像処理装置）とを備えている。なお、ＭＦＰの代わりに、レーザプリンタ，デジタル複写機，又はファクシミリ装置等の他の画像形成装置を用いてもよい。
【００１４】
エンジン部１は、スキャナ１０１，プロッタ１０２，読み取り制御部１０３，書き込み制御部１０４，およびエンジン制御ＣＰＵ１０５等によって構成されている。
スキャナ１０１は、原稿の画像を読み取る画像読取手段である。
【００１５】
プロッタ１０２は、コントローラ部２のメモリ１１５に展開された画像データをＡＳＩＣ１１２および書き込み制御部１０４を介して受け取り、可視画像として用紙（他の記録媒体でもよい）上に印刷する画像形成手段である。
【００１６】
このプロッタ１０２は、ＣＭＹＫの４色版のレーザビームを出力できる光書込装置を搭載しており、ＣＭＹＫカラープリントの場合には、各色１ビームでポリゴンミラーよる１回の走査により１ラインの画像書き込みを行うことができる。なお、このレーザビームによる画像の書き込みは、周知であるため、詳細は省略する。また、「ＣＭＹＫ」のＣはシアン、Ｍはマゼンタ、Ｙはイエロー、Ｋはブラックをそれぞれ示す。
【００１７】
読み取り制御部１０３は、スキャナ１０１による原稿画像の読み取りを制御するものである。
【００１８】
書き込み制御部１０４は、複数のレーザ光源であるレーザダイオードからの複数のレーザビームによる画像の書き込みを行う光書込装置を制御する書き込み制御手段（書込制御装置）である。
【００１９】
エンジン制御ＣＰＵ１０５は、図示しないＲＯＭ内のプログラムに従って動作することにより、エンジン部１の各部を統括的に制御するものである。
【００２０】
コントローラ部２は、コントローラ制御ＣＰＵ１１１，ＡＳＩＣ１１２，操作部１１３，ＨＤＤ１１４，メモリ１１５，およびネットワークインタフェース（以下「インタフェース」を「Ｉ／Ｆ」ともいう）１１６等によって構成されている。なお、操作部１１３は実際にはコントローラ部２の外側に配置されている。
コントローラ制御ＣＰＵ１１１は、図示しないＲＯＭ内の固定プログラムおよびメモリ１１５上に展開したプログラムに従って動作することにより、コントローラ部２の各部を統括的に制御するものである。
【００２１】
ＡＳＩＣ１１２は、多機能デバイスボードであり、コントローラ制御ＣＰＵ１１１の制御対象となるデバイスの共有化を図り、アーキテクチャの面からアプリケーションプログラム等の開発の高効率化を支援するものである。
操作部１１３は、画像形成装置により提供される画像処理機能の選択に基づくエンジン部１に対する動作指示等のデータを入力するための各種の操作キー（操作スイッチ又は操作ボタンともいう）およびＬＣＤ又はＣＲＴ等の表示器を有するものである。
【００２２】
ＨＤＤ１１４は、大量のデータを記憶保持する不揮発性の記憶手段（記憶装置）であり、ＯＳ（オペレーティングシステム）を含むプログラムや、後述する各ＤＭＡコントローラのレジスタブロックに設定するパラメータの値の一部（固定値）の他、画像データ（デジタル画像信号）等の各種データを蓄積することができる。なお、このＨＤＤ１１４に、メモリ１１５内のデータを蓄積しておくこともできる。
【００２３】
メモリ１１５は、各種プログラムを記憶するプログラムメモリや、コントローラ制御ＣＰＵ１１１がデータ処理を行う際に使用するワークメモリ、後述する補正パラメータを一時的に蓄積するパラメータメモリ、および画像データを展開する画像メモリ等として使用するＲＡＭ等の記憶手段である。メモリ１１５は、画像を光学的に読み込んだ位置に応じて各画素のデータ（色情報等）を記憶する。具体的には、メモリ１１５は、後述するメモリコントローラ２１３が、画像データについて、光学的な読み込みが行われた主走査方向、及び副走査方向を特定し、特定した方向にシフトして各画素のデータを読み込み可能に記憶する。なお、このような記憶手法については、周知の手法を問わず、あらゆる手法を用いて良い。
【００２４】
ネットワークＩ／Ｆ１１６は、図示しないネットワークを介して外部装置と通信を行うためのものである。
【００２５】
ここで、プリント（画像形成）対象となる画像データは、スキャナ１０１からの読み取りデータ（ＲＧＢの画像データ）、ネットワークＩ／Ｆ１１６からの入力データ、ＨＤＤ１０４の蓄積データと様々であるが、プリント動作を行う場合、カラーの場合にはＣＭＹＫの各色版の画像データに、モノクロの場合はグレイスケールの画像データにそれぞれ予め変換し、メモリ１０９に展開する。
【００２６】
このように構成された画像形成装置において、コントローラ部２のコントローラ制御ＣＰＵ１１１は、電源投入時に、ＲＯＭ内のブートプログラムに従い、ＨＤＤ１１４内のＯＳ（オペレーションシステム），アプリケーションソフトウェアを含む各種プログラムを読み出してメモリ１１５に展開した後、その各種プログラムに従って動作し（各種プログラムを必要に応じて選択的に実行し）、装置を制御することにより、この発明に関する設定手段としての機能を含む各種機能を実現することができる。
【００２７】
〔ＡＳＩＣの内部構成〕
次に、図１のＡＳＩＣ１１２の内部構成について、図２を参照して説明する。
図２は、図１のＡＳＩＣ１１２の内部構成およびその周辺デバイスとの接続関係の一例を示すブロック図である。
【００２８】
このＡＳＩＣ１１２は、各色版別のＤＭＡ（Direct Memory Access）コントローラ２０１〜２０４，フィルタ２０５〜２０８，出力バッファ２０９〜２１２と、メモリコントローラ２１３と、ＣＰＵインタフェース２１４と、それらを相互に接続するレジスタバス２１５と、速度変換バッファ２１６とによって構成されている。
ＤＭＡコントローラ２０１〜２０４は、メモリコントローラ２１３経由でメモリ１１５に対してリードアドレスを発行することにより、メモリ１１５内の各色版の画像データをそれぞれ読み込んで後段のフィルタ２０５〜２０８へ転送する。これを、ＤＭＡ転送という。
【００２９】
メモリコントローラ２１３は、ＤＭＡコントローラ２０１〜２０４およびエンジン制御ＣＰＵ１０５からの要求に対する調停（アービトレーション）を行い、メモリ１１５へアクセスして画像データの入出力を行う調停回路である。
ここで、図１のコントローラ制御ＣＰＵ１１１が、ＣＭＹＫカラープリント時には、ＡＳＩＣ１１２のＤＭＡコントローラ２０１〜２０４とメモリコントローラ２１３とによってＣＭＹＫそれぞれの画像データを、グレイスケール（モノクロ）プリント時には、ＤＭＡコントローラ２０１〜２０４のいずれかとメモリコントローラ２１３とによってグレイスケール画像データをそれぞれメモリ１１５から読み込ませることができる。以下の説明は、ＣＭＹＫカラープリントを行う場合に対応するものである。
【００３０】
フィルタ２０５〜２０８は、ＤＭＡコントローラ２０１〜２０４からの画像データに対してエッジ検出とその平滑化の処理であるフィルタ処理を行い、そのフィルタ処理を行った画像データを後段の速度変換バッファ２１６へ出力する。
速度変換バッファ２１６は、レーザビームによる画像書き込みの速度（以下「書き込み速度」ともいう）とメモリ１１５へのアクセスの速度（以下「メモリアクセス速度」ともいう）の速度差を吸収するために、フィルタ２０９〜２１２からの画像データを一時的に保存し、所定のタイミングで後段の出力バッファ２０９〜２１２へ出力する。
【００３１】
出力バッファ２０９〜２１２は、速度変換バッファ２１６からの画像データをエンジン部１の書き込み制御部１０４（図１）へ出力する。
それによって、その書き込み制御部１０４が、プロッタ１０２内の光書込装置の各レーザダイオードを画像データに応じて変調駆動することにより、対応するレーザビームを出力させ、そのレーザビームをポリゴンミラーによって走査して書き込み処理を行わせる。
【００３２】
なお、この実施形態におけるＡＳＩＣ１１２では、ＣＰＵインタフェース２１４およびレジスタバス２１５を備えているため、コントローラ制御ＣＰＵ１１１がＤＭＡコントローラ２０１〜２０４内のレジスタにアクセスすることができる。
メモリコントローラ２１３は、バースト境界アドレスおよびバーストアクセス長（以下単に「バースト長」ともいう）の指定情報をＤＭＡコントローラ２０１〜２０４より受け取り、バースト境界アドレスから始まる画像データを返す。バースト境界アドレスは、通常バイト単位よりも大きく、例えば３２ｂｉｔバス（４バイト）の１６バーストの場合は６４バイト（５１２ｂｉｔ）単位に配置されるアドレスとなる。
【００３３】
バースト境界アドレスとは、メモリ１１５上のアドレスであって、メモリコントローラ２１３により、読み込み開始の起点となり得るアドレスをいう。つまり、メモリ１１５上のどのアドレスから読み込みが可能というわけではなく、バースト境界アドレスからに限り、読み込みが可能となる。また、バースト境界アドレスは、所定のデータ長毎（例えば５１２ｂｉｔ単位に）に配置されており、ある種メモリの境界となり得るアドレスとなる。
【００３４】
また、バースト境界からデータを読み込む場合に、要求に応じて好きな長さのデータを読み込めるわけではない。読み込みは、予め定められているデータ長単位で可能となる。本実施の形態では、この予め定められているデータ長を、バーストアクセス長（バースト長）とする。つまり、バースト境界アドレスから、バースト長×Ｎのデータ長だけ読み込み可能となる。
【００３５】
図３に示すように、本実施の形態ではバースト境界を５１２ｂｉｔ単位とする。つまり、８ｂｉｔ単位のアドレッシングの場合、アドレス下位６ｂｉｔが‘０’のときがバースト境界となる（アドレス０番地の次はアドレス６４番地(０ｘ４０)がバースト境界）。
【００３６】
また、バースト長としてアクセス要求を発行できるデータ単位を、３２ｂｉｔとする。（アドレスの下位２ｂｉｔは０固定）。また、読み込みが可能なのは次のバースト境界アドレスまでとする。つまり、バースト境界アドレスから、次のバースト境界アドレスまで、最大１６バーストの連続アクセスが可能となる。
【００３７】
これにより、図４に示すように、画像の読み込み開始アドレスの下位６ｂｉｔが０の場合、バースト境界から読み込み開始となり、最大１６バースト(５１２ｂｉｔ)アクセスが可能となる。
【００３８】
さらに、図５に示すように、画像の読み込み開始アドレスの下位６ｂｉｔが０ｘ３ｃの場合、１６バースト目から読み込み開始となり、次のバースト境界までにアクセスできるのは１バースト(３２ｂｉｔ)のみとなる。なお、バースト境界アドレスからしか読み込み開始できないため、１〜１５バーストのデータは、例えばダミーデータ等を埋め込んでおき、後にダミーデータの部分をマスクして、１６バースト目からのデータを取得する。
【００３９】
そして、本実施の形態のＡＳＩＣ１１２においては、後述するＤＭＡコントローラ２０１〜２０４を備えることで、メモリ１１５に記憶された画像データを、スキャナ１０１が光学的に読み込む際に、感光体の軸のずれ等の物理的なずれによって生じるスキューの補正を可能とする。当該補正は、従来、メンテナンス作業者が行っていたが、ＤＭＡコントローラ２０１〜２０４による構成及び処理で可能とした。
【００４０】
〔ＤＭＡＣの内部構成〕
次に、図５のＤＭＡコントローラ２０１〜２０４の内部構成について、図６を参照して説明する。図６は、図５のＤＭＡコントローラ２０１〜２０４の内部構成例を示すブロック図である。
【００４１】
このＤＭＡコントローラ２０１〜２０４はそれぞれ、レジスタブロック３０１，リクエスト生成制御部３０２，データ受信部３０３，およびラインバッファ３０４等によって構成されている。
レジスタブロック３０１は、レジスタバス２１５からアクセスされるレジスタ群によって構成されている。
【００４２】
リクエスト生成制御部３０２は、アドレス指定部３１１と、読込要求部３１２と、シフト部３１３と、生成部３１４と、を備え、メモリアクセスリクエストを生成し、それをメモリコントローラ２１３に対して発行する。
【００４３】
アドレス指定部３１１は、メモリコントローラ２１２による制御に基づき、メモリ１１５上のアドレスを指定する。具体的には、アドレス指定部３１１は、バースト境界アドレスと、バースト長に基づく読み込みを行うデータ長と、を計算し、それらをメモリコントローラ２１３に対して読み込みの開始となるアドレスを指定する。
【００４４】
読込要求部３１２は、アドレス指定部３１１により指定されたアドレスから、アドレス指定部３１１により算出されたデータ長の読込要求を行うメモリアクセスリクエストを生成し、それをメモリコントローラ２１３に対して出力する。このバースト境界アドレスから算出されたデータ長の読込要求に従って、メモリコントローラ２１３が、主走査方向について、直進画素数の画素を含むデータの読み込み制御を行う。なお、直進画素数とは、当該主走査方向のライン上で、書き込みの際に同一ラインとなる画素数を示す。
【００４５】
シフト部３１３は、読込要求部３１２によるメモリアクセスリクエストが発行された後、直進画素数やバースト境界アドレス等に基づいて、次に読み込みを行うためのバースト境界アドレス及びデータ長を算出し、アドレス指定部３１１が指定するアドレスを、前記主走査方向と直交する副走査方向の一方向、又はその逆方向に一定量シフトさせる。なお、詳細な処理手順については、後述する。
【００４６】
生成部３１４は、バースト境界アドレス、及び読み込み処理の終了アドレス（リクエストしようとしたアドレス）が画像領域外（非画像領域）であった場合に、画像データを補完するダミーデータ（例えば白データ）を生成し、それをリードデータの替わりにデータ受信部３０３へ入力する。
【００４７】
データ受信部３０３は、論理和回路４０１とラインバッファ書き込み制御部４０２とを備えている。
論理和回路４０１は、リクエスト生成制御部３０２からのダミーデータおよびメモリコントローラ２１３からのリードデータ（画像データ）をそれぞれラインバッファ書き込み制御部４０２へ入力する。
【００４８】
ラインバッファ書き込み制御部４０２は、論理和回路４０１からのデータを受け取り、ラインバッファ３０４に書き込む。つまり、ラインバッファ書き込み制御部４０２は、読込要求部３１２が発行したメモリアクセスリクエストに従って読み込まれた、所定の数の画素のデータを、ラインバッファ３０４に書き込むことになる。
【００４９】
また、リクエスト生成制御部３０２で発生したメモリアクセスリクエスト生成の毎回の画素数をリクエスト生成制御部３０２から受け取る。
ラインバッファ３０４は、フィルタ処理に必要なライン数分のデータを保持し、それを後段のフィルタに対して渡す。つまり、ラインバッファ３０４は、フィルタより後に備えられている書込制御部１０４に出力するための、ライン数分の画像データを記憶する。
【００５０】
〔ＤＭＡコントローラのレジスタ値のメモリマップ〕
次に、図６のＤＭＡコントローラ２０１〜２０４のレジスタブロック３０１をそれぞれ構成するレジスタ群に設定するパラメータについて、図７〜図１５を参照して説明する。
図７は、図１のメモリ１１５（パラメータメモリ）に蓄積されているＤＭＡコントローラ２０１〜２０４のレジスタ群に設定するパラメータの一例を示すメモリマップ図である。
図７〜図１５は、そのレジスタ群に設定する各パラメータの一例を示す図である。
【００５１】
この実施形態では、ＤＭＡコントローラ２０１〜２０４（ＤＭＡＣの各チャネル）毎の後述するレジスタ群に設定するパラメータを図７の（ａ）に示すようにメモリ１１５に蓄積している。
【００５２】
そのレジスタ群に設定するパラメータとしては、図７の（ｂ）に示す開始アドレスレジスタ，主走査バイト長レジスタ，ライン数レジスタ，モードレジスタ，起動レジスタにそれぞれ設定するパラメータ、および同図の（ｃ）に示す補正領域（画像のスキュー補正を行う領域）毎の直進画素数レジスタ，補正方向レジスタ，補正繰り返し数レジスタにそれぞれ設定するパラメータがある。
【００５３】
開始アドレスレジスタには、図８に示すようなＤＭＡの先頭（開始）アドレスを設定できる。
主走査バイト長レジスタには、図９に示すような主走査方向のバイト長を設定できる。
【００５４】
ライン数レジスタは、図１０に示すようなライン数を設定できる。
モードレジスタには、図１１に示すような画素（画像データ）の階調数を設定できる。その設定値が「０」で１ｂｉｔ、「１」で２ｂｉｔ、「２」で４ｂｉｔ、「３」で８ｂｉｔとする。このモードレジスタには、画像の１８０度回転を指示するためのビット（ROT_180）も設定できる。
【００５５】
起動レジスタには、図１２に示すようなＤＭＡコントローラを起動させるためのパラメータ「１」を設定できる。起動レジスタに対して「１」が設定されると、ＤＭＡコントローラが起動し、リクエスト生成制御部３０２が動作を開始する。
【００５６】
直進画素数レジスタ，補正方向レジスタ，補正繰り返し数レジスタは、画像スキュー補正を行う補正領域の数の分だけ用意され、その各補正領域に対してそれぞれ備えられている。そして、これら３つのレジスタにそれぞれ設定される図１３〜図１５に示すような直進画素数，補正方向，補正繰り返し数の各補正パラメータは、この画像形成装置の出荷時にＨＤＤ１１４（又は図示しないＲＯＭ）に固定データとして記憶保持され、電源投入時にメモリ１１５にコピーされるようになっている。
【００５７】
図１６は、これらの補正パラメータによる補正アクセスを説明するための図である。
ＤＭＡコントローラ２０１〜２０４はそれぞれ、メモリ１１５に対し、直進画素数レジスタに設定された直進画素数の値（設定値）の分だけ主走査方向にまっすぐアクセスして画像データを読み込み、その後補正方向レジスタで決められた副走査方向に１画素分だけ上（副走査方向の一方向）もしくは下（その逆方向）へ移動してアクセスし、画像データを読み込む。この補正アクセスの動作は、補正繰り返し数レジスタに設定された補正繰り返し数の値（設定値）の分だけ繰り返し行う。直進画素数レジスタの設定値が「０」もしくは補正繰り返し数レジスタの設定値が「０」の場合には、補正領域が定義されていないとして無視する。
【００５８】
補正アクセスの動作を行う場合、Ｎ個の補正領域に対して補正領域０〜補正領域Ｎ−１番を設置して、対応する各レジスタへの設定を行う。
【００５９】
そして、補正領域毎に異なる補正を行うこととする。つまり、画像データの主走査方向でずれの角度が異なる領域毎に補正領域が設定されていることになる。例えば、画像データ全体で全くずれていない場合には補正領域の数が‘０’となり、画像データ全体で同じ角度でずれているには補正領域の数が‘１’となる。
【００６０】
また、仮想的に補正領域Ｎ番を設けて、このときの補正繰り返し数を「１」、直進画素数を無限大の設定とする。もし、画像データの主走査長に対して補正領域設定の直進画素数が満たない場合は、この仮想的な補正領域Ｎ番の設定に従う。つまり、通常のＤＭＡ転送と同様、補正無しの直線的なメモリアクセスになる。
【００６１】
図１７は、画像のスキューの様子と補正アクセスのイメージの異なる例を示す図である。図１７の（ａ）に示す理想的な画像に対し、同図の（ｂ）に示す左下にずれる画像の場合には、ＤＭＡコントローラ２０１〜２０４はそれぞれ同図の（ｃ）に示すように予め左下方向にメモリアクセス（読み出しアドレス）をずらしてゆき、ズレを相殺することにより、その補正アクセスによる仮想的な画像が同図の（ｄ）に示すようになり、プロッタ１０２から最終的に出力される画像（補正結果画像）は同図の（ｅ）に示すように理想的な画像となる。
【００６２】
図１７の（ｆ）に示す右下にズレる画像の場合には、ＤＭＡコントローラ２０１〜２０４はそれぞれ同図の（ｇ）に示すように予め右下方向にメモリアクセスをずらしてゆき、ズレを相殺することにより、その補正アクセスによる仮想的な画像が同図の（ｈ）に示すようになり、プロッタ１０２から最終的に出力される画像は同図の（ｅ）に示すように理想的な画像となる。
【００６３】
これら（ｂ）及び（ｆ）の場合には、ずれる角度が一定であることから、画面全体で補正領域の数が‘１’となる。
【００６４】
また、各補正領域の直進画素数を自由に設定できるため、補正方向の設定と組み合わせると、傾きが線形でないアーチ状にずれている形式に対しても補正が可能となる（図１７の（ｉ）〜（ｎ）参照）。この（ｉ）及び（ｌ）の場合には、傾きの角度毎に補正領域を設定し、補正領域毎に上述した処理を行うことで、適切な補正を行うことができる。
【００６５】
図１８は、図６のリクエスト生成制御部３０２の動作例を示すフローチャートである。
図１９は、図１８のステップＳ８のメモリアクセスリクエスト発行処理のサブルーチンの一例を示すフローチャートである。
【００６６】
本実施の形態にかかる画像形成装置においては、レジスタブロック３０１内の起動レジスタに「１」が設定されると、図１８に示す動作を開始する。まず、リクエスト生成制御部３０２のシフト部３１３は、開始アドレスシフト量Ｘ１を計算する（ステップＳ１）。
【００６７】
ここで、この開始アドレスシフト量Ｘ１について、図２０〜図２２を参照して具体的に説明する。
図２０及び図２１は、図７の開始アドレスレジスタに設定される開始アドレス（以下「画像開始アドレス」ともいう）と、実際にアクセスが開始されるアドレス（以下「補正開始アドレス」ともいう）との位置関係を示す図である。図２０は傾きが線形の場合であり、図２１は傾きがアーチ型の場合とする。
【００６８】
ＤＭＡコントローラ２０１〜２０４が、例えば図２０に示すように右下方向にアドレスをずらしながら画像データを読み込む場合、開始アドレスレジスタに設定された画像開始アドレスＡ１よりも上方からアクセスが始める必要がある。このため、シフト部３１３は、この実際にアクセスを開始する補正開始アドレスＡ２１までのシフト量である開始アドレスシフト量Ｘ１１を計算する。また、図２１に示す例においても、シフト部３１３が、この実際にアクセスを開始する補正開始アドレスＡ２２までのシフト量である開始アドレスシフト量Ｘ１２を計算する。
【００６９】
図２２は、図７の開始アドレスレジスタに設定される画像開始アドレスと補正開始アドレスとの間の副走査方向長の算出方法を説明するための図である。
例えば、図２２に示すように、補正開始アドレスＡ２３を含む先頭ラインの補正アクセスの下側ピーク位置Ｃはメモリ１１５上の画像データの先頭ラインに必ず接する。このため、シフト部３１３が、補正開始アドレスＡ２３から補正アクセスの下側ピーク位置Ｃまでの副走査方向長（補正量）を算出することで開始アドレスシフト量Ｘ１３を計算することができる。その計算式は、数１の（１）に示す通りである。
【００７０】
【数１】
0004491027.tif 000002
【００７１】
ここで、Ｍは、先頭の補正領域０から先頭ラインの補正アクセスの下側ピーク位置Ｃにある補正領域（Ｍ−１）までの領域数を示す。但し、画像データの主走査が収まる領域数Ｎとの関係は、Ｍ＜Ｎとなる。
【００７２】
補正領域ｎ（ｎ＝０，１，・・・，Ｍ−１）の補正量は、上方向の場合には−補正領域ｎの補正繰り返し数、下方向の場合には補正領域ｎの補正繰り返し数となる。
【００７３】
よって、例えば補正領域ｎを補正領域０〜補正領域４（Ｍ−１）までの５（Ｍ）個、その各補正領域ｎの補正量をいずれも「１０」と仮定した場合には、開始アドレスシフト量Ｘ１は「主走査バイト数×５０」となる。また、主走査バイト数は、数２の（２）に示す計算式によって計算することができる。
【００７４】
【数２】
0004491027.tif 000003
【００７５】
リクエスト生成制御部３０２のシフト部３１３は、上述したようにして開始アドレスシフト量（例えば、Ｘ１１、Ｘ１２又はＸ１３）を計算した後、図１８のステップＳ２以降の処理を行う。
【００７６】
ステップＳ２〜Ｓ１８は、画像の先頭ラインから最終ラインまでの全ライン数分の処理を行うためのループである。
【００７７】
アドレス指定部３１１は、アクセスアドレスをライン先頭にセットする（ステップＳ３）。最初は先頭ラインなので、アドレス指定部３１１は、ステップＳ１で計算された開始アドレスシフト量Ｘ１に基づいて先頭ラインの先頭アドレス（補正開始アドレス）を計算し、それをアクセスアドレスとする。次のラインに移行した場合、アドレス指定部３１１は、直前ラインの先頭アドレスに基づいて次のラインの先頭アドレスを計算し、それをアクセスアドレスとする。
【００７８】
次に、アドレス指定部３１１は、主走査カウンタ値を「０」にする（ステップＳ４）。主走査カウンタ値とは、主走査方向に配置された画素をカウントする値とする。
【００７９】
ステップＳ５〜Ｓ１６は、先頭の補正領域０から最終の補正領域Ｎまでの全補正領域数分の処理を行うためのループとする。
【００８０】
ステップＳ６〜Ｓ１５は、補正繰り返し数分の処理を行うためのループとする。なお、補正領域Ｎは無補正とするため、補正繰り返し数は「１」としている。また、補正繰り返し数が「０」の場合は次の補正領域にスキップするため、このループを終了する。
【００８１】
ステップＳ７〜Ｓ１１は、直進画素数分の処理を行うためのループである。なお、補正領域Ｎは無補正とするため、直進画素数は無限大としている。また、直進画素数が「０」の場合は、このループを終了する。
【００８２】
そして、読込要求部３１２が、メモリアクセスリクエスト発行処理を行う（ステップＳ８）。そこで、メモリアクセスリクエストまでの発行処理を、図１９を用いて説明する。
【００８３】
まず、アドレス指定部３１１は、バースト境界アドレスを計算し（ステップＳ２１）、バースト長を計算した後（ステップＳ２２）、アクセス対象となるアドレスが画像領域内であるか否かを判断する（ステップＳ２３）。
【００８４】
バースト境界アドレスから読み込み処理の最後のアドレスまで順にアクセス対象となるアドレスが存在する。そして、アドレス指定部３１１は、アクセス対象となるアドレスが、画像開始アドレスより小さいか否か判断する。アドレス指定部３１１が小さいと判断した場合には、画像領域外と判断する。また、アドレス指定部３１１は、アクセス対象となるアドレスが、画像終了アドレス（画像開始アドレス＋主走査バイト長×ライン数―１）より大きいか否か判断する。アドレス指定部３１１が大きいと判断した場合には、画像領域外と判断する。そして、これら２つの条件に該当しない場合には、画像領域内と判断する。
【００８５】
そして、アドレス指定部３１１が、アクセス対象となるアドレスが画像領域内と判断した場合（ステップＳ２３：Ｙｅｓ）、先に計算したバースト境界アドレスおよびバーストアクセス長（バースト長）をメモリコントローラ２１３に対して指定し、読込要求部３１２が、メモリ１１５上で指定されたアドレスへのメモリアクセスを要求する（ステップＳ２４）。それによって、メモリ１１５から対応するリードデータが読み出され、メモリコントローラ２１３からデータ受信部３０３に送られる。そして、ラインバッファ書き込み制御部４０２が、送られたリードデータを、ラインバッファ３０４に書き込む。
【００８６】
ここで、例えば図２３に示すように、アクセスアドレスＡ３からの直進バイト数Ｘ２分のメモリアクセスは、メモリアクセスの効率向上のため、バースト境界アドレス（Ａ４ａ）から次のバースト境界アドレス（Ａ４ｂ）までのバーストアクセス（Ｘ３）と、バースト境界（Ａ４ｂ）からのバーストアクセス長（Ｘ４）によるメモリアクセスに変換する。そして、読込要求部３１２は、変換されたメモリアクセスに従ってメモリアクセスリクエストを発行する。
【００８７】
このように、ライン毎に、必要な直進バイト数のメモリアクセスが行われるまた、直進バイト数は、数３の（３）に示す計算式によって計算することができる。
【００８８】
【数３】
0004491027.tif 000004
【００８９】
しかしながら、バースト境界アドレス（Ａ４ａ）と画像の開始アドレス（Ａ３）が異なる。このため、アドレス指定部３１１が、アクセスアドレスＡ３をライン先頭にセットした後に、１回目のメモリアクセスリクエスト発行処理として、バースト境界アドレスＡ４ａとバーストアクセス長Ｘ３とを指定した場合に、バースト境界アドレス（Ａ４ａ）から画像開始アドレス（Ａ３）までの不要なダミーアクセス部分（Ｘ５）が生じる。
【００９０】
また、読み込み可能なバースト長が３２ｂｉｔ単位なので、画像終了アドレス（Ａ５）と、バースト長の最後のアドレス（Ａ６）とが異なる場合もある。このため、アドレス指定部３１１が、２回目のメモリアクセスリクエスト発行処理として、バースト境界アドレスＡ４ｂとバーストアクセス長Ｘ４とを指定した場合に、画像終了アドレス（Ａ５）から次のバースト境界アドレス（Ａ６）までの不要なダミーアクセス部分（Ｘ６）が生じる。
【００９１】
生成部３１４が、必要に応じてダミーアクセス部分（ダミーリード部分）をマスクするマスクデータを生成し、それをデータ受信部３０３へ送信する（ステップＳ２５）。
【００９２】
データ受信部３０３のラインバッファ書き込み制御部４０２は、ラインバッファ３０４へのリードデータの書き込み時に、マスクデータを受信すると、そのマスクデータによってダミーアクセス部分をマスクする。
【００９３】
一方、ステップＳ２３において、アドレス指定部３１１が、上述した２つの条件を共に満たし、アクセス対象となるアドレス全てが画像領域外と判断した場合（ステップＳ２３：Ｎｏ）、ステップＳ２６へ移行する。
【００９４】
ここで、例えば図２４の網掛け部分に対するアクセスが画像領域外（非画像領域）であるため、実際にアクセスが発生すると、アクセスサイクル自体がムダになる。
【００９５】
そこで、メモリコントローラ２１３によるメモリ１１５へのメモリアクセスを実行せず、生成部３１４が、ダミーデータを生成し、それをデータ受信部３０３のラインバッファ書き込み制御部４０２へ送信する（ステップＳ２６）。それによって、メモリコントローラ２１３からはリードデータの出力がなく、ラインバッファ書き込み制御部４０２はラインバッファ３０４にダミーデータを書き込む。
【００９６】
図１８に戻り、リクエスト生成制御部３０２が、ステップＳ８でメモリアクセスリクエスト発行処理を行った後は、ステップＳ９で主走査カウンタ値を更新する（リードデータ分のカウンタ値を加える）。この主走査カウンタ値は、メモリアクセスが行われたデータ（バースト長×Ｎのデータ）のうち、原則的には、画像データが含まれている画素数で更新する。これにより、主走査カウンタ値には、ライン移動した後、読込対象となるラインにおける画像開始アドレスが設定されていることになる。そして、アドレス指定部３１１は、主走査カウンタ値（換言すれば画像開始アドレス）に対応するバースト境界及びバースト長を算出し、読込要求部３１２が、算出されたバースト境界及びバースト長に基づくメモリアクセスリクエストを発行する。
【００９７】
その後、リクエスト生成制御部３０２が、ステップＳ１０で主走査（１ライン分のレーザ書き込み）が完了したか否かを判断する（ステップＳ１０）。主走査が完了したと判断した場合（ステップＳ１０：Ｙｅｓ）、ステップＳ１７へ移行するが、主走査が完了していないと判断した場合（ステップＳ１０：Ｎｏ）、ステップＳ１１へ移行する。
【００９８】
そして、リクエスト生成制御部３０２のシフト部３１３が、現在の補正領域ｎに対応する補正方向レジスタの設定値が「１」か（補正方向が上方向）否かを判断する（ステップＳ１２）。
【００９９】
そして、シフト部３１３が、現在の補正領域ｎに対応する補正方向レジスタの設定値が「１」であると判断した場合、ステップＳ１３でアクセスアドレスを１ライン上に、「０」であればステップＳ１４でアクセス対象となるアドレスを１ライン下にそれぞれ移動させる。次に、ライン移動とライン毎に行われるメモリアクセスとの関係について説明する。なお、本実施の形態では、シフト部３１３が１ライン毎にシフトすることとしたが、スキューの傾き幅に応じた一定量のラインシフトを行えばよい。
【０１００】
図２５に示す例は、画像開始アドレスとバースト境界アドレスとが一致し、直進画素数が１２ｂｉｔであり、補正方向が上方向である場合に、行われるメモリアクセスを示している。斜線領域が取得したい画像データであり、ライン２５０１ａ〜ｎが、実際にメモリアクセスが行われるデータ長である。そして、ライン２５０１ａからライン２５０１ｎまで、シフト部３１３により副走査方向に一ライン毎にシフトしながら、メモリアクセスが行われる。
【０１０１】
次に、ライン毎に具体的に説明する。まず、ライン２５０１ａ及び２５０１ｂは、画像データが含まれている最初のバースト長のみメモリアクセスリクエストがなされ、ライン２５０１ｃでは、最初から２個のバースト長のメモリアクセスリクエストがなされる。さらに、ライン２５０１ｄでは、２個目のバースト長にしか画像データは含まれていないが、バースト境界アドレスの関係から、最初から２個のバースト長のメモリアクセスリクエストがなされる。そして、ライン２５０１ｎでは、画像データは５０４ｂｉｔから格納されているが、バースト境界アドレスＢ１からバースト起点アドレスＢ２までのメモリに対するメモリアクセスリクエストがなされる。
【０１０２】
図１８に戻り、ステップＳ１７では、リクエスト生成制御部３０２が、画像のライン位置を更新する（次のラインに移動する）と共に、データ受信部３０３のラインバッファ書き込み制御部４０２に対してラインバッファクリアを指示する。
【０１０３】
ラインバッファ書き込み制御部４０２は、ラインバッファクリアが指示されると、ラインバッファ３０４内のデータをクリアする。
【０１０４】
なお、モードレジスタに画像の１８０度回転を指示するためのビット（ROT_180）が設定された場合には、画像開始アドレスＡ１を画像右下のアドレスとする。補正領域の順序は左右逆となり、右端の補正領域を補正領域０として補正処理を行う。主走査の逆順アクセスを行うために、例えば図２６に示すように、画像開始アドレスＡ１からバースト境界アドレスＡ４を算出し、主走査の順方向へのバーストを逆方向に遡りながらメモリアクセスを行う。リードデータ（応答データ）およびマスクデータは、左右を反転してラインバッファ３０４に書き込む。また、図１８のステップＳ１７でのライン位置更新では、ひとつ上のラインに更新する。なお、図２６のＷは非画像領域を示している。
【０１０５】
ところで、カラー画像やグレースケール画像においては、通常、一画素を表現するためには多段階調で表現している。この場合、画像データは１画素当たりのビット数に応じて、１ｂｉｔ／２ｂｉｔ／４ｂｉｔ／８ｂｉｔ単位でメモリ上に配置されている。本実施の形態では、１画素が８階調とし、一画素を表現するために３ビット用いられるものとする。
【０１０６】
そして、上述したマスク処理により、メモリアクセスはバースト単位(３２ｂｉｔ)で可能だが、このため、バースト長のデータから必要な画像データのみを適切に取得する必要がある。つまり、アドレスの分解能よりも、さらに細かいｂｉｔ単位で読み込むデータの長さの調整を行う必要がある。
【０１０７】
例えば、図２７に示すように、３２ｂｉｔ単位で取得したデータのうち、画像の最終アドレスが、開始アドレス下位２ｂｉｔで３番地の場合、ラインバッファ書き込み制御部４０２は、バースト単位でアクセスされた前半２４ｂｉｔを読み捨て、残りの有効データである８ｂｉｔをラインバッファ３０４先頭に格納する。
【０１０８】
他の例としては、図２８に示すように、３２ｂｉｔ単位で取得したデータのうち、画像の最終アドレスが、最初から所定のビット数（例えば４ｂｉｔ）目のアドレスの場合、当該バースト長の最初から所定のビット数までの有効データのみラインバッファ３０４に格納し、他のビット（例えば２８ｂｉｔ）は読み捨てる。なお、読み捨てるのではなく、ラインバッファ３０４の無効領域に書き込んでも良い。（ラインバッファから読み出す際に切り捨てるため。）
【０１０９】
なお、図１８のステップＳ９においては、原則的に画素毎に主走査カウンタ値を更新することとした。しかしながら、上述したようなｂｉｔ毎の処理を行う場合には、主走査カウンタ値では、画像開始アドレスを適切に表現することができない。
【０１１０】
例えば、リクエスト生成制御部３０２は、モードレジスタの設定値（画素の階調数）が「３（８ｂｉｔ）」未満の場合、つまり「０（１ｂｉｔ）」，「１（２ｂｉｔ）」，又は「２（４ｂｉｔ）」の場合に、例えば図２９に示すような副走査方向の上方向又は下方向にシフトさせる際に、領域Ｇ付近において、主走査方向の前後２つの画像データＤ１，Ｄ２において、当該主走査方向の座標上で一部重複したアドレスをメモリコントローラ２１３に対して指定することもできる。なお、図２９のＢ１、Ｂ２及びＢ３はバースト境界を示している。
【０１１１】
この場合、斜線ラインＤ１とＤ２の画像データをとる際に、ライン２２０１の領域Ｇと、ライン２２０２の領域Ｇとのメモリアクセスを行う場合、当該領域Ｇの画素分の主走査カウンタ値の更新を行わず、重複アドレスのデータを取得し、適切に各画素の階調をとれるようにｂｉｔ単位で、ラインバッファ３０４への書き込み及び読み捨て制御を行う。それによって、メモリコントローラ２１３によってメモリ１１５から読み込んだ画像データ（リードデータ）Ｄ１，Ｄ２を、補正の継ぎ目部分Ｇの端数部分を損なうことなく、ラインバッファ３０４に書き込むことができる。
【０１１２】
このように、ＤＭＡコントローラ２０１〜２０４がそれぞれ、画像データ読み込み時のメモリ１１５上のアドレスをメモリコントローラ２１３によって指定する際に、そのアドレスを設定された主走査方向の直進画素数毎に副走査方向の上方向又は下方向に一定量ずつシフトさせることにより、タンデム構成によってカラー画像形成を行うような場合（感光体毎に歪み特性が異なる場合）でも、副走査のズレ補正用の高価な内蔵メモリが不要であり、且つ内蔵メモリのサイズに制約を受けることなく、色版の異なる書き込み画像の副走査方向のズレ補正（スキュー補正）を行うことができる。
【０１１３】
また、書き込み画像の歪みが線形的でない場合に、メモリ１１５上の主走査方向の読み込み領域を複数の領域に分割し、その各分割領域（補正領域）毎に主走査方向の直進画素数，指定するアドレスをシフトさせる方向，およびそのアドレスのシフト動作の繰り返し数をＤＭＡコントローラ２０１〜２０４に対して予め設定しておき、そのＤＭＡコントローラ２０１〜２０４がそれぞれ、画像データ読み込み時のメモリ１１５上のアドレスをメモリコントローラ２１３によって指定する際に、上記設定内容に基づいて、上記各分割領域毎に、その指定するアドレスを設定された直進画素数毎に設定された方向（副走査方向の上方向又は下方向）に一定量ずつシフトさせる動作を設定された繰り返し数分だけ繰り返し行うことにより、部分的に細かい単位の補正を行えるので、副走査方向の非線形なズレの補正を行うこともできる。
【０１１４】
さらに、指定しようとしたアドレスが画像領域外であった場合に、画像データを補完するダミーデータを生成することにより、画像領域外の不要なメモリアクセスを省略できるので、より速い時間で画像データの読み込みができる。
さらにまた、画像データの階調数に応じて（実施形態では８ビット未満の場合に）、副走査方向の上方向又は下方向にシフトさせる際の主走査方向の前後２つの画像データを一部重複して読み込めるようなアドレスを指定することにより、次のような効果も得られる。
【０１１５】
すなわち、バイト（８ビット）単位が基本となるメモリアクセスに対して、副走査方向にシフトする主走査方向の位置を画素単位で設定でき、副走査方向にシフトする主走査方向の位置がバイト単位丁度にならないときに、この主走査方向の前後２つの画像データを副走査方向へのシフト前後で一部重複して読み込み、その重複データを論理和すれば、８ビット未満の階調の画像に対しても副走査方向のズレ補正を行うことができる。
【０１１６】
また、メモリ１１５上の画像データを主走査方向および副走査方向の後端から読み出して１８０度回転した画像を形成するべく、その画像データの読み込み時のメモリ１１５上のアドレスを指定することにより、印刷媒体の両面に画像を形成する両面モードの画像形成を行うような場合に、印刷媒体の裏面への画像形成時等に１８０度回転した画像データに対して副走査方向のズレ補正を行うことができる。
【０１１７】
なお、従来の画像形成装置では、コントローラ部に画像処理用のＡＳＩＣを、エンジン部に書き込み処理用のＡＳＩＣをそれぞれ備えていたが、その各ＡＳＩＣを別個にしていたのは開発効率の点等からであり、別々の部署でそれぞれのＡＳＩＣを開発するのが一般的であった。
【０１１８】
しかし近年、ＡＳＩＣの微細化が進み、コスト面で有利であることから、コントローラ部とエンジン部でそれぞれ使用していたＡＳＩＣを１つにまとめ、それをコントローラ部側に搭載した画像形成装置が開発されるようになった。
上述した実施形態は、そのような画像形成装置にこの発明を適用したものである。
【０１１９】
以上の実施形態では、ＤＭＡコントローラが、画像データの読み込み時のメモリ上のアドレスを指定する際に、そのアドレスを設定された主走査方向の直進画素数毎に副走査方向の上方向又は下方向に一定量ずつシフトさせるなど、この発明に関わる処理を行っているが、ＤＭＡコントローラを省略し、当該処理をコントローラ部（画像処理装置）を制御するコンピュータ（ＣＰＵ）が行うようにしてもよい。
【０１２０】
その場合、制御に用いられるプログラムは、コントローラ部を制御するコンピュータに、この発明に関するアドレス制御手段，設定手段としての機能を含む各機能をそれぞれ実現させるためのプログラムとなり、このようなプログラムをコンピュータに実行させることにより、上述したような効果を得ることができる。
【０１２１】
このようなプログラムは、はじめからＲＯＭあるいはＨＤＤ（ハードディスク装置）等の記憶手段に格納しておいてもよいが、記録媒体であるＣＤ−ＲＯＭあるいはフレキシブルディスク，ＭＯ，ＣＤ−Ｒ，ＣＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，又はＤＶＤ−ＲＡＭや、ＥＥＰＲＯＭ、メモリカード等の不揮発性記録媒体（メモリ）に記録して提供することもできる。その不揮発性記録媒体に記録されたプログラムをコントローラ部にインストールしてＣＰＵに実行させるか、ＣＰＵにその不揮発性記録媒体からこのプログラムを読み出して実行させることにより、上述した各手順を実行させることができる。
【０１２２】
さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部機器あるいはプログラムを記憶手段に記憶した外部機器からダウンロードして実行させることも可能である。
【産業上の利用可能性】
【０１２３】
以上の説明から明らかなように、この発明によれば、書き込み画像のスキュー補正を低コストで確実に行うことができる。したがって、高品質画像を低コストで出力可能な画像形成装置、画像処理方法、プログラム及び記憶媒体を提供することができる。 
【図面の簡単な説明】
【０１２４】
【図１】一実施形態である画像形成装置の基本構成例を示す図である。
【図２】図１のＡＳＩＣの内部構成およびその周辺デバイスとの接続関係の一例を示すブロック図である。
【図３】バースト境界及びバースト単位を示した説明図である。
【図４】画像の読込開始アドレスと、バースト境界が一致した場合に、読み込み可能なデータ範囲を示した説明図である。
【図５】画像の読込開始アドレスが下位0x3Cの場合に、読み込み可能なデータ範囲を示した説明図である。
【図６】図２のＤＭＡコントローラ２０１〜２０４の内部構成例を示すブロック図である。
【図７】図１のメモリ１１５に蓄積されているＤＭＡコントローラ２０１〜２０４のレジスタ群に設定するパラメータの一例を示すメモリマップ図である。
【図８】図７の開始アドレスレジスタに設定するパラメータの一例を示す図である。
【図９】図７の主走査バイト長レジスタに設定するパラメータの一例を示す図である。
【図１０】図７のライン数レジスタに設定するパラメータの一例を示す図である。
【図１１】図７のモードレジスタに設定するパラメータの一例を示す図である。
【図１２】図７の起動レジスタに設定するパラメータの一例を示す図である。
【図１３】図７の補正領域０直進画素数レジスタに設定するパラメータの一例を示す図である。
【図１４】図７の補正領域０補正方向レジスタに設定するパラメータの一例を示す図である。
【図１５】図７の補正領域０補正繰り返し数レジスタに設定するパラメータの一例を示す図である。
【図１６】図１３〜図１５に示した直進画素数，補正方向，補正繰り返し数の各補正パラメータによる補正アクセスを説明するための図である。
【図１７】画像のスキューの様子と補正アクセスのイメージの異なる例を示す図である。
【図１８】リクエスト生成制御部の動作例を示すフロー図である。
【図１９】図１８のメモリアクセスリクエスト発行処理のサブルーチンの一例を示すフロー図である。
【図２０】スキューの傾きが線形の場合において、図７の開始アドレスレジスタに設定される画像開始アドレスと補正開始アドレスとの位置関係の例を示す図である。
【図２１】スキューの傾きがアーチ型の場合において、図７の開始アドレスレジスタに設定される画像開始アドレスと補正開始アドレスとの位置関係の例を示す図である。
【図２２】図７の開始アドレスレジスタに設定される画像開始アドレスと補正開始アドレスとの間の副走査方向長の算出方法を説明するための図である。
【図２３】図１９に示したメモリアクセスリクエスト発行処理のステップＳ２４の処理を説明するための図である。
【図２４】図１９のステップＳ２３，Ｓ２６の処理を説明するための図である。
【図２５】図１８のステップＳ１２，Ｓ１３によるアクセスアドレスのラインシフトとライン毎に読み込むデータを示した説明図である。
【図２６】図７のモードレジスタに画像の１８０度回転を指示するためのビットが設定された場合の処理を説明するための図である。
【図２７】３２ｂｉｔ単位で取得したデータのうち、ｂｉｔ単位で画像読み込みの開始アドレスを指定する場合の処理を説明する概念図である。
【図２８】３２ｂｉｔ単位で取得したデータのうち、ｂｉｔ単位で画像読み込みの終了アドレスを指定する場合の処理を説明する概念図である。
【図２９】図７のモードレジスタの設定値（画素の階調数）が「３」未満の場合の処理を説明するための図である。
【符号の説明】
【０１２５】
１  エンジン部
２  コントローラ部
１０１  スキャナ
１０２  プロッタ
１０３  読み取り制御部
１０４  書き込み制御部
１０５  エンジン制御ＣＰＵ
１１１  コントローラ制御ＣＰＵ
１１２  ＡＳＩＣ
１１３  操作部
１１４  ＨＤＤ
１１５  メモリ
１１６  ネットワークＩ／Ｆ
２０１〜２０４  ＤＭＡコントローラ
２０５〜２０８  フィルタ
２０９〜２１２  出力バッファ
２１３  メモリコントローラ
２１４  ＣＰＵインタフェース
２１５  レジスタバス
２１６  速度変換バッファ
３０１  レジスタブロック
３０２  リクエスト生成制御部
３０３  データ受信部
３０４  ラインバッファ
３１１  アドレス指定部
３１２  読込要求部
３１３  シフト部
３１４  生成部
４０１  論理和回路
４０２  ラインバッファ書き込み制御部
【図１】
0004491027.tif 000005
【図２】
0004491027.tif 000006
【図３】
0004491027.tif 000007
【図４】
0004491027.tif 000008
【図５】
0004491027.tif 000009
【図６】
0004491027.tif 000010
【図７】
0004491027.tif 000011
【図８】
0004491027.tif 000012
【図９】
0004491027.tif 000013
【図１０】
0004491027.tif 000014
【図１１】
0004491027.tif 000015
【図１２】
0004491027.tif 000016
【図１３】
0004491027.tif 000017
【図１４】
0004491027.tif 000018
【図１５】
0004491027.tif 000019
【図１６】
0004491027.tif 000020
【図１７】
0004491027.tif 000021
【図１８】
0004491027.tif 000022
【図１９】
0004491027.tif 000023
【図２０】
0004491027.tif 000024
【図２１】
0004491027.tif 000025
【図２２】
0004491027.tif 000026
【図２３】
0004491027.tif 000027
【図２４】
0004491027.tif 000028
【図２５】
0004491027.tif 000029
【図２６】
0004491027.tif 000030
【図２７】
0004491027.tif 000031
【図２８】
0004491027.tif 000032
【図２９】
0004491027.tif 000033