(57)【要約】【課題】スキュー補正機能を有する画像処理装置を提供する。【解決手段】画像データは大容量低速メモリ１０に格納され、アドレス生成部１２で生成されたアドレスに従ってブロック単位で読み出され小容量高速メモリ１４に格納される。アドレス生成部１６で生成されたアドレスに従ってさらに読み出され、補間演算を行う演算部１８でスキュー補正が行われる。アドレス生成部１２は、入力画像の傾きに応じた角度でメモリ１０から斜め方向にブロック単位で読み出すべく、その小数部を所定の精度で近似してアドレスを順次生成し、かつ、アドレスを精度に応じた周期で所定量だけ増減させることで近似によるアドレスの累積誤差を抑制する。【選択図】図１
2005352703.tif 000002
【特許請求の範囲】
【請求項１】
入力画像を回転して出力する画像処理装置であって、
入力画像を記憶する第１記憶手段と、
前記第１記憶手段に記憶された画像データをブロック単位で読み出すための第１読み出しアドレスを生成する第１アドレス生成手段と、
前記第１読み出しアドレスに従い前記第１記憶手段から読み出された画像データを記憶する第２記憶手段と、
前記第２記憶手段に記憶された画像データを読み出すための第２読み出しアドレスを生成する第２アドレス生成手段と、
前記第２読み出しアドレスに従い前記第２記憶手段から読み出された画像データに対し、前記入力画像の回転角度に応じた回転処理を行う演算手段と、
回転処理された画像データを記憶する第３記憶手段と、
を有し、
前記第１アドレス生成手段は、前記入力画像の回転角度に応じて前記第１記憶手段から斜め方向にブロック単位で読み出すべく、その小数部を所定の精度で近似して前記第１読み出しアドレスを順次生成し、かつ、前記第１読み出しアドレスを前記精度に応じた周期で所定量だけ増減させることで前記近似による前記第１読み出しアドレスの累積誤差を抑制する
ことを特徴とする画像処理装置。
【請求項２】
入力画像を回転して出力する画像処理装置であって、
入力画像を記憶する第１記憶手段と、
前記第１記憶手段に記憶された画像データをブロック単位で読み出すための第１読み出しアドレスを生成する第１アドレス生成手段と、
前記第１読み出しアドレスに従い前記第１記憶手段から読み出された画像データを記憶する第２記憶手段と、
前記第２記憶手段に記憶された画像データを読み出すための第２読み出しアドレスを生成する第２アドレス生成手段と、
前記第２読み出しアドレスに従い前記第２記憶手段から読み出された画像データに対し、前記入力画像の回転角度に応じた回転処理を行う演算手段と、
回転処理された画像データを記憶する第３記憶手段と、
を有し、
前記第１アドレス生成手段は、前記入力画像の回転角度に応じて前記第１記憶手段から斜め方向にブロック単位で読み出すべく、その小数部を所定の精度で近似して前記第１読み出しアドレスを順次生成し、
前記第２アドレス生成手段は、前記近似による前記第１読み出しアドレスの累積誤差が所定画素数より小さい場合に前記第２読み出しアドレスを前記精度に応じた周期で所定量だけ増減させることで前記近似による前記第１読み出しアドレスの累積誤差を抑制する
ことを特徴とする画像処理装置。
【請求項３】
請求項２記載の装置において、
前記第１アドレス生成手段は、前記第１読み出しアドレスの累積誤差が前記所定画素数以上の場合に前記第１読み出しアドレスを所定量だけ増減させることで前記近似による前記第１読み出しアドレスの累積誤差を抑制する
ことを特徴とする画像処理装置。
【請求項４】
請求項１〜３のいずれかに記載の装置において、
前記第１アドレス生成手段は、前記入力画像の回転角度をθ、前記ブロックサイズをＷとした場合にＷ×ｓｉｎθで前記第１読み出しアドレスの理論値を算出し、かつ、前記理論値の小数部を１／２ｎ（ｎは自然数）の精度で近似する
ことを特徴とする画像処理装置。
【請求項５】
請求項１記載の装置において、
前記第１アドレス生成手段は、前記入力画像の回転角度をθ、前記ブロックサイズをＷとした場合にＷ×ｓｉｎθで前記第１読み出しアドレスの理論値を算出し、かつ、前記理論値の小数部を０、０．２５、０．５、０．７５のいずれかに近似し、前記近似値に応じた周期で前記第１読み出しアドレスの整数部を１だけ増減させる
ことを特徴とする画像処理装置。
【請求項６】
請求項２記載の装置において、
前記第１アドレス生成手段は、前記入力画像の回転角度をθ、前記ブロックサイズをＷとした場合にＷ×ｓｉｎθで前記第１読み出しアドレスの理論値を算出し、かつ、前記理論値の小数部を０、０．２５、０．５、０．７５のいずれかに近似し、
前記第２アドレス生成手段は、前記近似値に応じた周期で前記第２読み出しアドレスを増減させる
ことを特徴とする画像処理装置。
【請求項７】
請求項１〜３のいずれかに記載の装置において、
前記第１アドレス生成手段は、主走査方向及び前記主走査方向に垂直な副走査方向のアドレスを前記第１読み出しアドレスとして生成し、前記主走査方向あるいは前記副走査方向の少なくともいずれかのアドレスに対して前記近似及び前記増減を実行することを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置、特にスキュー補正（傾き補正）等の画像加工機能を備える複写機などの装置に関する。
【背景技術】
【０００２】
従来より、複写機等の画像処理装置において、入力画像に対して回転操作等の加工処理を行うことが知られている。
【０００３】
例えば、下記に示す従来技術には、任意角度の図形回転処理を行う技術が記載されている。すなわち、矩形領域を形成する直線の回転後の傾きを表す傾斜パターンを生成して記憶させ、傾斜パターンと画像データバッファに格納された画像データに基づいて矩形領域の画像データを画素単位で回転処理する。
【０００４】
図１４には、この従来技術に開示された図形回転の様子が示されている。図において、ソース領域をθだけ回転させて得られた画像をデスティネーション領域とし、黒点は領域パターンをアフィン逆変換ｆ−１した場合のソース領域での位置を示している。回転角度θを傾斜パターン生成部に入力すると、傾斜パターン生成部は回転角度θに対応する傾斜パターンを生成する。例えば、回転角度θ＝ｔａｎ−１（６／１６）の場合には、図示のごとく「１０１００１００１０１００１００」なる傾斜パターンを生成する。傾斜パターンとデスティネーション領域の直線との関係は、パターンの「1」が割り当てられた座標で直線の画素がＹ方向に１だけずれるような関係である。このような傾斜パターンによってデスティネーション領域の注目画素を１画素ずつスキャンし、逆アフィン変換ｆ−１により注目画素に対応する対応画素をソース領域の画像データを参照することにより求める。具体的には、ソース領域の対応画素を用いて保管処理し、注目画素の色及び属性を定める。例えば、デスティネーション領域のＤ´２１の画素の色及び属性を決定するために注目画素Ｄ´２１（２，１）を逆変換したソース領域の点Ｄ´２１（２．２，０．２）の近傍の４つの対応画素Ｓ２０、Ｓ２１、Ｓ３０、Ｓ３１の色及び属性を参照する。
【０００５】
以上のようにして、ソース画像に対してθだけ回転させたデスティネーション画像を得ることができるが、同様にして予めスキューした（傾いた）画像を補正することもできる。図１４に即して説明すれば、予めθだけスキューしたソース画像に対し、−θだけ回転させることでスキューのないデスティネーション画像を得ることができる。
【０００６】
図１５には、スキュー補正の概念説明図が示されている。スキューした元画像（ソース画像）に対し、所定サイズのブロック１００単位で画像データを読出し、各ブロック内においてアフィン逆変換を行うことでスキュー補正を行う。図１５においてはＸ方向を主走査方向、Ｙ方向を副走査方向とし、ブロック１００のサイズをＷｘ×Ｗｙとしている。また、スキュー補正後のブロックサイズをＢｘ×Ｂｙとしている。ソース画像に対してスキュー角θに応じて斜めの方向に走査してブロック単位で画像データを読み出していく。
【０００７】
【特許文献１】特開平２−２８８９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記従来技術では、傾斜パターンをＸ方向、すなわち主走査方向にページ幅分格納する必要があり、傾斜パターン生成部が複雑化して回路規模も大きくなる問題がある。また、傾斜パターンとして有限数の傾斜パターンを格納する必要があるが、傾斜パターンに沿ってスキャンする際に、スキャンアドレス値を一定の精度で読み出す必要があるため、誤差が蓄積されて本来の理想的な傾斜パターンで規定される傾斜直線との間にずれが生じる問題がある。
【０００９】
図１６には、ブロック１００単位でソース画像からデータを読み出す際の、Ｙ方向の読出し開始位置の精度による傾き理論値と実際の読出し位置に生じる誤差が示されている。図において、点線は傾き理論値であり、スキュー角をθ、デスティネーション画像のブロックサイズをＢｘ×Ｂｙとすると、傾き理論値Ｓｂｌｋｙ（ｉｄｅａｌ）＝Ｂｘ×ｓｉｎθで算出される。ソース画像から順次ブロック単位で画像データを読み出す際の読出しアドレスとして、理論値Ｓｂｌｋｙ（ｉｄｅａｌ）を近似し、例えば小数第１位を四捨五入することで算出する場合、図示のようにブロック１００を順次読み出すにしたがって読出しアドレスの誤差が累積してしまい、本来の理論値から乖離してしまう。
【００１０】
このように本来の理論値からの誤差が生じると、スキュー補正した場合においても、本来直線であるべき画像データが不連続な直線となり、例えば図１７に示されるようなスキューした画像３００をスキュー補正した場合、図１８に示されるように段差がある不連続な画像４００となってしまう。
【００１１】
本発明の目的は、簡易な構成で、かつ、正確にスキュー補正等の回転処理を行うことができる装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明は、入力画像を回転して出力する画像処理装置であって、入力画像を記憶する第１記憶手段と、前記第１記憶手段に記憶された画像データをブロック単位で読み出すための第１読み出しアドレスを生成する第１アドレス生成手段と、前記第１読み出しアドレスに従い前記第１記憶手段から読み出された画像データを記憶する第２記憶手段と、前記第２記憶手段に記憶された画像データを読み出すための第２読み出しアドレスを生成する第２アドレス生成手段と、前記第２読み出しアドレスに従い前記第２記憶手段から読み出された画像データに対し、前記入力画像の回転角度に応じた回転処理を行う演算手段と、回転処理された画像データを記憶する第３記憶手段とを有し、前記第１アドレス生成手段は、前記入力画像の回転角度に応じて前記第１記憶手段から斜め方向にブロック単位で読み出すべく、その小数部を所定の精度で近似して前記第１読み出しアドレスを順次生成し、かつ、前記第１読み出しアドレスを前記精度に応じた周期で所定量だけ増減させることで前記近似による前記第１読み出しアドレスの累積誤差を抑制するものである。  
【００１３】
また、本発明は、入力画像を回転して出力する画像処理装置であって、入力画像を記憶する第１記憶手段と、前記第１記憶手段に記憶された画像データをブロック単位で読み出すための第１読み出しアドレスを生成する第１アドレス生成手段と、前記第１読み出しアドレスに従い前記第１記憶手段から読み出された画像データを記憶する第２記憶手段と、前記第２記憶手段に記憶された画像データを読み出すための第２読み出しアドレスを生成する第２アドレス生成手段と、前記第２読み出しアドレスに従い前記第２記憶手段から読み出された画像データに対し、前記入力画像の回転角度に応じた回転処理を行う演算手段と、回転処理された画像データを記憶する第３記憶手段とを有し、前記第１アドレス生成手段は、前記入力画像の回転角度に応じて前記第１記憶手段から斜め方向にブロック単位で読み出すべく、その小数部を所定の精度で近似して前記第１読み出しアドレスを順次生成し、前記第２アドレス生成手段は、前記近似による前記第１読み出しアドレスの累積誤差が所定画素数より小さい場合に前記第２読み出しアドレスを前記精度に応じた周期で所定量だけ増減させることで前記近似による前記第１読み出しアドレスの累積誤差を抑制するものである。
【００１４】
ここで、前記第１アドレス生成手段は、前記第１読み出しアドレスの累積誤差が前記所定画素数以上の場合に前記第１読み出しアドレスを所定量だけ増減させることで前記近似による前記第１読み出しアドレスの累積誤差を抑制してもよい。
【発明の効果】
【００１５】
本発明によれば、簡易な構成で高精度にスキュー補正等の回転処理を行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面に基づき本発明の実施形態について、スキュー補正を例にとり説明する。
【００１７】
図１には、本実施形態に係るスキュー補正機能を備えた画像処理装置の構成ブロック図が示されている。スキャナなどの画像データ入力部から入力された画像データはページメモリ等の大容量低速メモリ１０に記憶される。大容量低速メモリ１０に記憶された画像データは、アドレス生成部１２で生成されたブロック読出しアドレスに従い順次読み出されて小容量高速メモリ１４に格納される。小容量高速メモリ１４に格納された画像データは、アドレス生成部１６により生成された局所回転用読出しアドレスに従い順次読み出されて補間処理を行う演算部１８に供給される。演算部１８は、従来技術のようにソース画像における対応画素近傍の複数の画素データを用いて補間処理を行い、処理結果を大容量低速メモリ２０に格納する。大容量低速メモリ２０への書き込みは、アドレス生成部２２により生成されるブロック書き込みアドレスに従って行われる。
【００１８】
以下、本実施形態におけるブロック読出しの基本動作について説明する。
【００１９】
図２には、大容量低速メモリ１０からブロック１００単位で画像データを読み出す際の処理が示されている。上記したように、スキュー補正を行う際にはソース画像における対応画素近傍の複数の画素データが必要となるため、ブロック単位で画像データを読み出す際にオーバラップさせて読みだす。オーバラップさせるべき画像領域は傾き角θに応じて変化し、オーバラップデータを読み出すためのブロック読み出し開始点が異なってくる。一般に、傾き角θが増大するほどオーバラップデータ量は増大する。図２において、例えば４８画素×４０画素のブロック１００の読出し開始点ＳをＳ１、Ｓ２、Ｓ３・・・とすると、読み出し開始点Ｓ１を有するブロック１００に対し、次に読み出すべきブロック１００の読出し開始点Ｓ２は、Ｘ方向移動量＝Ｂｙ×ｓｉｎθであり、Ｙ方向移動量＝Ｂｘ×ｓｉｎθ（理論値）である。図中太線は、デスティネーション画像における出力ブロック２００を示したものであり、例えば３２画素×３２画素に設定される。図において、１マスは４画素×４画素でパッキングされている。
【００２０】
図３には、以上のようにして設定される読出し開始位置Ｓ１、Ｓ２、・・・Ｓｎ、Ｓｎ＋１が示されている。Ｙ方向の移動量で読出し開始点が決定されるため、図中矢印で示されるように大容量低速メモリ１０から斜め方向にブロック１００が順次読み出される。読出し開始位置Ｓ１、Ｓ２・・はアドレス生成部１２で生成される。
【００２１】
図４には、アドレス生成部１６におけるアドレス生成の原理が示されている。図４（Ａ）は、大容量低速メモリ１０から読み出されたブロック１００及びこのブロック１００から出力ブロック２００を傾けて抽出することが示されており、図４（Ｂ）には、この出力ブロック２００をさらにθだけ回転させて傾きを補正することが示されている。
【００２２】
具体的には、図５に示されるように、ブロック１００内におけるブロック２００の画像データを（ｘ、ｙ）、回転角度θを補正した後のブロック２００の画像データを（Ｘ，Ｙ）とすると、アフィン逆行列を用いて
ｘ＝ｃｏｓθ（Ｘ−ｍ）＋ｓｉｎθ（Ｙ−ｎ）
ｙ＝−ｓｉｎθ（Ｘ−ｍ）＋ｃｏｓ（Ｙ−ｎ）
で与えられる。ここで、ｍ，ｎはオフセット量である。これにより、スキュー補正前の画素Ｎｏ．２３は出力画像の画素Ｎｏ．１に写像され、スキュー補正前の画素Ｎｏ．１７は画素Ｎｏ．１０に写像される。読み出された画像データは演算部１８に供給され、図６に示されるように、スキュー補正後の画素データは、対応する画素Ｎに隣接する４点Ｐ１〜Ｐ４の画素データから
Ｎ１＝ｘＰ２＋（１−ｘ）Ｐ１
Ｎ２＝ｘＰ４＋（１−ｘ）Ｐ３
Ｎ＝（１−ｙ）Ｎ１＋ｙＮ２
で与えられる。
【００２３】
ところが、ブロック１００を順次読み出す場合の読み出し開始点Ｓ１、Ｓ２、・・のアドレスを単に理論値からの近似値とすると、図１６に示されるように読み出し開始アドレスの誤差が蓄積してしまう。
【００２４】
そこで、本実施形態では、アドレス生成部１２内に誤差補正部が設けられ、この誤差補正部により蓄積誤差を補正する。誤差補正部は、Ｙ方向の傾き理論値であるＳｂｌｋ（ｉｄｅａｌ）の小数部を四捨五入するのではなく１／２ｎの精度で近似して読み出し開始アドレスＳｂｌｋとし、かつ、小数部の値に応じて周期的にＳｂｌｋ＋１として蓄積誤差を解消する。
【００２５】
図７には、ｎ＝２とし、理論値Ｓｂｌｋ（ｉｄｅａｌ）の小数部を１／４の精度で近似した場合のＹ方向読み出し開始アドレスが示されている。小数部を１／４の精度で近似するため、Ｓｂｌｋ（ｉｄｅａｌ）の小数部が０〜０．１２５の範囲は０に近似され、小数部が０．１２５〜０．３７５の範囲は０．２５に近似され、小数部が０．３７５〜０．６２５の範囲は０．５に近似され、小数部が０．６２５〜０．８７５の範囲は０．７５に近似され、小数部が０．８７５〜の範囲は１に近似される。そして、Ｙ方向の読み出し開始アドレスの整数部をＳｙとすると、例えば小数部が０〜０．１２５の場合、最初の読み出し開始アドレス（ステップ量１）はＳｙとされ、次の読み出し開始アドレス（ステップ量２）もＳｙとされ、以下同様にＳｙで読み出し開始アドレスが決定される。この場合、誤差補正部では蓄積誤差の解消を行うことはないが、誤差量が０〜０．１２５と小さいため蓄積誤差も小さく問題は生じない。
【００２６】
一方、小数部が０．１２５〜０．３７５の場合、最初の読み出し開始アドレス（ステップ量１）はＳｙとされ、次の読み出し開始アドレス（ステップ量２）もＳｙとされる。しかし、次の読み出し開始アドレス（ステップ量３）では、Ｓｙ＋１とする。以下、ステップ量４ではＳｙ、ステップ量５ではＳｙ、ステップ量６ではＳｙ、ステップ量７ではＳｙ＋１と、基本的に３回のＳｙのステップの後の４回目の読み出しアドレスをＳｙ＋１とする。
【００２７】
図８には、この場合の処理が模式的に示されている。最初のブロック１００−１のＹ方向の読み出し開始点Ｓ１に対し、次のブロック１００−２の読み出し開始点Ｓ２のアドレスはＳ１に対してＳｙだけずれた位置となる。Ｓ１に対してＳｙだけずらすことで、ほぼ理論値に近い傾きの位置から読み出すことができるが、上記のようにＳｙは理論値の整数部であって誤差が存在する。次のブロック１００−３の読み出し開始点Ｓ３のアドレスはＳ２に対してさらにＳｙだけずれた位置となる。そして、次のブロック１００−４の読み出し開始点Ｓ４のアドレスを、仮にＳ３に対してさらにＳｙだけずれた位置に設定すると、近似した小数部である０．２５の累計が１に達するため（Ｓ２、Ｓ３、Ｓ４でそれぞれ約０．２５の小数分誤差が存在するため、０．２５×４＝１）、その累積誤差分を解消すべくＳｙに１を加えてＳｙ＋１とする。
【００２８】
また、小数部が０．５〜０．６２５の場合、最初の読み出し開始アドレス（ステップ量１）はＳｙとされ、次の読み出し開始アドレス（ステップ量２）はＳｙ＋１とされ、次の読み出し開始アドレス（ステップ量３）は再びＳｙとされ、次の読み出し開始アドレス（ステップ量４）は再びＳｙ＋１とされる。
【００２９】
また、小数部が０．６２５〜０．８７５の場合、最初の読み出し開始アドレスはＳｙ＋１とされ、次の読み出し開始アドレスもＳｙ＋１とされ、以下、Ｓｙ、Ｓｙ＋１、Ｓｙ＋１、Ｓｙ＋１、Ｓｙ、・・と、基本的に３回のＳｙ＋１のステップの後の４回目の読み出しアドレスをＳｙとする。
【００３０】
また、小数部が０．８７５〜の場合、全ての読み出し開始アドレスはＳｙ＋１とされる。つまり、最初のブロック１００−１の読み出し開始点Ｓ１に対し、次のブロック１００−２の読み出し開始点Ｓ２はＳ１に対してＳｙ＋１だけずれた位置となり、次のブロック１００−３の読み出し開始点Ｓ３はＳ２に対してさらにＳｙ＋１だけずれた位置となる。以下同様である。
【００３１】
以上のように、アドレス生成部１２内の誤差補正部は、理論値の小数第１位の近似値に応じた周期で読み出し開始アドレスを１ずつ変化させて蓄積誤差を解消する。具体的には、誤差補正部は、傾き角のデータを入力し、この傾き角に応じた小数近似値及びステップ量、あるいは１だけ増加させる周期を内蔵メモリ等に格納しておき、アドレス生成部１２で生成されたアドレスＳｙに対して補正を加えればよい。
【００３２】
このように、ブロック１００単位で順次画像データを読み出す際に、読み出し開始点のアドレスを周期的に変化させる、すなわち傾き角θに応じた周期で不連続的に１だけ変化させることで、累積誤差を抑制することができる。本実施形態のように、Ｓｂｌｋ（ｉｄｅａｌ）の小数部を１／２ｎの精度で近似した場合、主走査方向ブロック数×（１／２ｎ＋１）に抑えることが可能である。したがって、図１７に示されるようなスキュー画像を補正する場合でも、図９に示されるように累積誤差が解消され、不連続でない（ギザギザのない）直線画像を得ることができる。
【００３３】
なお、本実施形態では、Ｙ方向の読み出し開始アドレスについて説明したが、Ｘ方向についても同様に処理することができる。
【００３４】
すなわち、Ｘ方向の理論値は、Ｂｙ×ｓｉｎθであるが、この小数部の値に応じて０、０．２５、０．５、０．７５のいずれかに近似し、その近似値に応じて周期的に読み出し開始アドレスを１だけ変化させればよい。
【００３５】
また、図４に示されるように、ブロック１００からブロック２００を読み出し、このブロック２００に対してスキュー補正を行う構成であるため、ブロック１００の読み出し開始アドレスを周期的に変化させるとともに、ブロック２００の読み出し開始アドレスも周期的に変化させることで、より高精度に累積誤差を解消することもできる。特に、ページメモリやバンドメモリ等の大容量低速メモリ１０にワード単位で画像データを格納する際に、１ワードが複数画素（例えば２画素）から構成されている場合、ブロック１００の読み出し開始アドレスの調整では対応できない場合が生ずる（累積誤差が１ワード以内である場合）が、このような場合にはブロック２００の読み出し開始アドレスを調整して対応することが可能である。
【００３６】
以下、ブロック１００の読み出し開始アドレスとブロック２００の読み出し開始アドレスをともに周期的に変化させる場合について、Ｘ方向読み出し開始アドレスを例にとり説明する。
【００３７】
図１０には、本実施形態の画像処理装置の構成ブロック図が示されている。スキャナなどの画像データ入力部から入力された画像データはページメモリ等の大容量低速メモリ１０に記憶される。大容量低速メモリ１０に記憶された画像データは、アドレス生成部１２で生成されたブロック読出しアドレスに従い順次読み出されて小容量高速メモリ１４に格納される。小容量高速メモリ１４に格納された画像データは、アドレス生成部１６により生成された局所回転用読出しアドレスに従い順次読み出される。ここで、１ワード内に複数画素に相当する画像データをパッキングして格納された場合、アンパック部１３で１画素毎に分離して補間処理を行う演算部１８に供給される。演算部１８は、ソース画像における対応画素近傍の複数の画素データを用いて補間処理を行い、処理結果をパック部１９で再び複数画素をまとめてパッキングし、大容量低速メモリ２０に格納する。大容量低速メモリ２０への書き込みは、アドレス生成部２２により生成されるブロック書き込みアドレスに従って行われる。
【００３８】
本実施形態においては、上述したＹ方向の読み出し開始アドレスと同様に、アドレス生成部１２の誤差補正部が周期的に読み出し開始アドレスを変化させて累積誤差を解消するが、さらに、ブロック２００の読み出しアドレスを制御するアドレス生成部１６内にも誤差補正部を設け、この誤差補正部でブロック２００の読み出し開始アドレスの蓄積誤差を解消する。より詳しくは、理論理との誤差のうちの一定範囲内（１ワード以内）は、まずブロック２００の読み出し開始アドレス、すなわちブロック１００内における読み出し開始アドレスを変化させることで解消し、解消すべき誤差が一定以上となった場合、すなわち１ワードに格納すべき画素数に達した場合には、ブロック２００の読み出し開始アドレスはその位置で固定し、次にブロック１００の読み出し開始アドレスを変化させて誤差を解消する。
【００３９】
図１１には、Ｘ方向の読み出し開始アドレスが示されている。図において、ブロック１００の読み出し開始位置はＳ１、Ｓ２、・・で示されており、ブロック２００の読み出し開始位置はＢ１、Ｂ２、・・・で示されている。アドレス生成部１２で生成されたアドレスに従ってブロック１００−１が読み出され、アドレス生成部１６で生成されたアドレスに従ってブロック２００−１が読み出される。ブロック１００の読み出し開始位置の理論値は、上記のようにＢｙ×ｓｉｎθであり、その小数部を１／２ｎの精度、例えばｎ＝２として１／４の精度で近似する。また、大容量低速メモリ１０の１ワードに２画素分の画像データをパッキングして格納するものとする。
【００４０】
次のブロック１００−２の読み出し開始位置Ｓ２は、理論値の整数部をＳｘとし、小数部が０．２５に近似された場合、ＳｘだけＸ方向にずれた位置に設定される。また、ブロック１００−２内におけるブロック２００−２がアドレス生成部１６のアドレスに従って読み出される。読み出し開始位置Ｂ２は、ブロック２００−１の読み出し開始位置Ｂ１と同じである。図では、Ｂ１はブロック１００内においてＸ方向にオフセット量＝０として（０，ｎ）として示されている。ｎはＹ方向のオフセット量である。Ｂ２も、ブロック１００−２内における（０，ｎ）から読み出される。
【００４１】
次のブロック１００−３の読み出し開始位置Ｓ３は、Ｓ２に対してＳｘだけずれた位置に設定される。また、ブロック１００−３内においてブロック２００−３が読み出される。読み出し開始位置Ｂ３は、ブロック２００−２の読み出し開始位置Ｂ２と同じである。
【００４２】
次のブロック１００−４の読み出し開始位置Ｓ４は、上記の例に従えばＳ３に対してＳｘ＋１だけずれた位置に設定されて蓄積誤差が解消されることとなるが、この場合にはブロック１００−４の読み出し位置Ｓ４はＳ３に対して依然としてＳｘだけずれた位置とし、その代わりに、ブロック１００−４内におけるブロック２００−４の読み出し開始位置Ｂ４をＢ３に対して１だけＸ方向に変化させる。位置Ｓ４をＳ３に対して依然としてＳｘだけずれた位置とすると、理論値の小数部が０．２５に近似された場合にはその累積誤差は１画素分となる。そこで、ブロック１００−４内のブロック２００−４の読み出し開始位置Ｂ４をＸ方向に１だけ増分することで、この累積誤差が解消されることになる。画像データの読み出し位置は、実質的にはブロック１００−３の読み出し位置に対してＳｘ＋１だけずれた位置となる。
【００４３】
次のブロック１００−５の読み出し開始位置Ｓ５は、Ｓ４に対してＳｘだけずれた位置に設定される。また、ブロック１００−５内におけるブロック２００−５の読み出し開始位置Ｂ５は、Ｂ４と同じ位置、すなわち１だけＸ方向に変化させた位置に設定される。ブロック１００−６、１００−７の読み出し、及びブロック２００−６、２００−７の読み出しについても同様である。
【００４４】
そして、ブロック１００−８の読み出し開始位置Ｓ８及びブロック２００−８の読み出し開始位置Ｂ８については、上記のようなアルゴリズムに従うならば、Ｓ８はＳ７に対してＳｘだけずれた位置に設定され、Ｂ８はＢ７に対してさらに１だけずれた位置に設定されることとなるが、ブロック２００−８の読み出し開始位置が、ブロック１００−８に対してトータルとして２画素分だけ、つまり１ワードに格納する画素数分だけのずれ量に等しいことになるから、ブロック２００−８の読み出し開始位置Ｂ８をずらすのではなく、ブロック１００−８の読み出し開始位置Ｓ８をＳ７に対してＳｘ＋２だけずらせることで対応する。この場合、ブロック２００−８の読み出し開始位置Ｂ８はＢ１と同じ位置、すなわちＸ方向のオフセット量は再び０とする。
【００４５】
このように、１ワードに複数画素分だけ格納されてパッキングされる場合、ブロック１００単位で画像データを読み出す際に、１画素分だけずらせて読み出すことができないため、ワード以内のずれ量に関してはアンパック部１３で１画素毎に分離するとともにブロック２００を読み出す際に周期的に１画素ずつずらせて読み出すことで対応する。ブロック２００の読み出し位置で微調整し、ブロック１００の読み出し位置で粗調整するということもできよう。
【００４６】
図１２には、アドレス生成部１２の構成ブロック図が示されている。アドレス生成部１６は、複数のカウンタ３０〜４４、加算器４６を含んで構成される。
【００４７】
カウンタ３０は、ブロック１００内のＸ方向アドレス計算カウンタであり、１ずつカウントしてブロック１００のＸ方向（主走査方向）の画素数分までカウントする。カウント値は加算器４６に供給され、カウントアップした場合のキャリー信号はカウンタ３２に供給される。
【００４８】
カウンタ３２は、ブロック１００内の行数計算カウンタであり、１ずつカウントしてブロック１００の全行数までカウントする。カウント値は加算器４６に供給され、カウントアップした場合のキャリー信号はカウンタ３４に供給される。カウンタ３２からのキャリー信号により、１つのブロック１００における処理が完了したことを意味する。
【００４９】
カウンタ３４は、ブロック移動時Ｘ方向アドレス増分カウンタであり、次のブロック１００の処理に移行する際の読み出し開始アドレス（Ｂ１、Ｂ２等）を与えるカウンタである。Ｓｂｌｋｘ、すなわち理論値の小数部を１／４の精度で近似した値をステップ幅としてカウントし、Ｘ方向の画素数をｆｓとした場合にＳｂｌｋ×（ｆｓ／Ｗｘ−１）まで、すなわちＸ方向に存在するブロック１００の個数分に相当する移動量までカウントする。
【００５０】
カウント値は加算器４６に供給され、カウントアップした場合のキャリー信号はカウンタ３６のリセット信号として供給される。
【００５１】
カウンタ３６は、ブロック移動時Ｘ方向誤差補正周期カウンタであり、図１１で示される読み出し開始位置Ｂ１、Ｂ２・・・の読み出し開始アドレスの変化周期を算出するものである。変化周期は、理論値の小数部を近似する場合の精度２ｎにより定まるから、１ずつカウントして２ｎでカウントアップする。初期値Ｎｂｌｋｘは、理論値Ｓｂｌｋｘと２ｎから定まる整数である。カウントアップした場合のキャリー信号はカウンタ３８に供給される。
【００５２】
カウンタ３８は、ブロック移動時Ｘ方向誤差補正量カウンタであり、図１１で示される読み出し開始位置Ｂ１、Ｂ２・・の読み出し開始アドレスの変化周期における補正量を算出するものである。位置は１画素分ずつずらせるから、ステップは１（あるいは−１）としてカウントしていく。変化周期に達した時点でカウンタ３８からカウント値が出力されて加算器４６に供給される。カウント値は、カウンタ３４のキャリー信号によりリセットされる。
【００５３】
カウンタ４０〜４２はバンド移動時のＸ方向アドレスを制御するカウンタである。ここで、「バンド」とは、ブロック１００をＸ方向（主走査方向）に走査する場合の、１走査当たりのブロック群を意味する。
【００５４】
カウンタ４０は、バンド移動時Ｘ方向アドレス増分カウンタであり、あるバンドから次のバンドに移行するときのＸ方向のずれ量を与えるものである。これは、図１１のブロック１００群が各バンドの先頭ブロックである場合の、それぞれのＳｘに相当するものである。カウンタ４０の初期値は０であり、ステップ幅はＳｂｎｄｘ、すなわち理論値の整数部（図１１におけるＳｘ）に設定される。リミット値は、Ｙ方向（副走査方向）のブロック数ｓｓ／Ｗｙで定まる。ここで、ｓｓは副走査方向の画素数である。カウント値は加算器４６に供給される。
【００５５】
カウンタ４２は、バンド移動時Ｘ方向誤差補正周期カウンタであり、図１１のブロック１００群が各バンドの先頭ブロックである場合の、Ｓｘの変化周期を与えるものである。初期値Ｎｂｎｄｘは、Ｓｂｎｄｘの理論値と小数部の分割数（精度）から定まる整数である。キャリー信号はカウンタ４４に供給される。
【００５６】
カウンタ４４は、バンド移動時Ｘ方向誤差補正量カウンタであり、カウンタ４２からのキャリー信号、すなわち補正周期に達したときに読み出し開始アドレスを１あるいは−１だけ変化させるものである。カウント値は加算器４６に供給される。
【００５７】
図１３には、アドレス生成部１６のタイミングチャートが示されている。（ａ）は読み出しクロック（リードクロック）であり、カウンタ３０に供給される。（ｂ）はブロック内Ｘ方向アドレス値であり、カウンタ３０からの出力値である。ブロック１００内のＸ方向画素数をＮとすると０〜Ｎまでカウントする。（ｃ）はブロック内行数値であり、カウンタ３２からの出力値である。ブロック１００内の行数をＭとすると０〜Ｍまでカウントする。ブロック内カウント値がＮになるとそのキャリー信号が入力され、０から１ずつインクリメントされＭに至る。（ｄ）はブロック移動時Ｘ増分値であり、カウンタ３４からの出力値である。図では説明の都合上、０、１、２・・と示しているが、実際はこれらにＳｂｌｋｘを乗じた値、すなわち０、Ｓｂｌｋｘ、２・Ｓｂｌｋｘ、・・である。（ｅ）はＸ誤差補正周期であり、カウンタ３６からの出力値である。補正周期をＫとすると、Ｋまでカウントしたときにキャリー信号を出力する。（ｆ）はブロック移動Ｘ誤差補正値であり、カウンタ３８からのカウント値である。（ｅ）のカウント値がＫとなったタイミングでブロック移動誤差補正値、すなわち１あるいは−１が出力されてブロック２００の読み出し開始位置がずれて累積誤差が解消される。（ｇ）はバンド移動時Ｘ増分であり、カウンタ４０からの出力値である。バンド内のブロック数をＬとすると、（ｄ）のブロック移動時Ｘ増分がＬまでカウントアップした、つまり１つのバンドの処理が終了したタイミングでインクリメントする。図では説明の都合上、０、１、・・と示しているが、実際はこれらにＳｂｎｄｘである。Ｘ方向アドレスは、図１１に示されるように、カウンタ３０、３４、３８、４０、４４の加算値として与えられる。すなわち、カウンタ４０、４４によりあるバンドの先頭ブロックのＸ方向アドレスが与えられ、３４、３８で当該バンド内における各ブロックのＸ方向アドレスが与えられ、カウンタ３０で各ブロック内におけるＸ方向アドレスが与えられる。
【００５８】
以上説明したように、本実施形態では、Ｘ方向、Ｙ方向の少なくともいずれか（好適にはＸ方向及びＹ方向のいずれにも）において、スキュー角θに応じたブロック読み出し開始位置の理論値を近似するとともに、近似した小数部の値あるいは近似精度に応じて読み出し開始アドレスを周期的に変化させることで、累積誤差を解消することができる。
【００５９】
また、１ワード内に複数画素、例えば２画素分の画像データをパッキングして格納する場合においては、ブロック１００内で読み出すべきブロック２００の読み出し開始位置を周期的に変化させ、かつ、ブロック１００の読み出し開始位置を周期的に変化させることで、累積誤差を高精度に解消することができる。
【００６０】
アドレス制御の態様をまとめると、以下のようになる。
【００６１】
（１）Ｘ方向、Ｙ方向のそれぞれにおいてアドレス生成部１２にてアドレスを周期的に１画素分移動させる。
（２）Ｘ方向、Ｙ方向のそれぞれにおいてアドレス生成部１６でアドレスを周期的に１画素分移動させるとともに、アドレス生成部１２でアドレスを周期的に複数画素分（ワード内の画素分）移動させる。
（３）Ｘ方向においてアドレス生成部１６でアドレスを周期的に１画素分移動させ、アドレス生成部１２でアドレスを周期的に複数画素分（ワード内の画素分）移動させるとともに、Ｙ方向においてアドレス生成１２にてアドレスを周期的に１画素分移動させる。
【００６２】
なお、上記の（３）は、Ｘ方向の複数画素のみが１ワードとしてパッキングされていることを考慮したものである。Ｘ方向及びＹ方向に複数画素が１ワード内にパッキングされている場合には、（２）の態様が好適である。
【図面の簡単な説明】
【００６３】
【図１】実施形態の構成ブロック図である。
【図２】ブロック読み出しの概念説明図である。
【図３】ブロック読み出しの概念説明図である。
【図４】スキュー補正説明図である。
【図５】スキュー補正説明図である。
【図６】スキュー補正の補間説明図である。
【図７】スキューの傾き理論値と小数部近似値、及び周期変化を示す説明図である。
【図８】Ｙ方向の読み出し開始アドレスの周期変化説明図である。
【図９】実施形態のスキュー補正後の画像説明図である。
【図１０】他の実施形態の構成ブロック図である。
【図１１】Ｘ方向の読み出し開始アドレスの周期変化説明図である。
【図１２】アドレス生成部１２の構成ブロック図である。
【図１３】実施形態のタイミングチャートである。
【図１４】従来技術の回転処理説明図である。
【図１５】スキュー補正時のブロック読み出し説明図である。
【図１６】Ｙ方向の読み出し開始アドレスの誤差蓄積説明図である。
【図１７】スキューした入力画像説明図である。
【図１８】従来技術でスキュー補正した場合の画像説明図である。
【符号の説明】
【００６４】
１０  大容量低速メモリ（ページメモリあるいはバンドメモリ：第１記憶手段）、１２  アドレス生成部（第１アドレス生成部）、１４  小容量高速メモリ（第２記憶手段）、１６  アドレス生成部（第２アドレス生成部）、１８  演算部、２０  大容量低速メモリ（第３記憶手段）、２２  アドレス生成部。
【図１】
2005352703.tif 000003
【図２】
2005352703.tif 000004
【図３】
2005352703.tif 000005
【図４】
2005352703.tif 000006
【図５】
2005352703.tif 000007
【図６】
2005352703.tif 000008
【図７】
2005352703.tif 000009
【図８】
2005352703.tif 000010
【図９】
2005352703.tif 000011
【図１０】
2005352703.tif 000012
【図１１】
2005352703.tif 000013
【図１２】
2005352703.tif 000014
【図１３】
2005352703.tif 000015
【図１４】
2005352703.tif 000016
【図１５】
2005352703.tif 000017
【図１６】
2005352703.tif 000018
【図１７】
2005352703.tif 000019
【図１８】
2005352703.tif 000020