(57)【要約】【課題】画像データの欠落なくスキュー補正などの元画像の回転処理を行う。【解決手段】スキュー検知部１で元原稿のスキュー角や余白幅、用紙サイズを検出して回転処理部２に供給する。アドレス生成部１２は、大容量低速メモリ１０に記憶された元原稿の画像データをブロック単位で読み出すべく読み出しアドレスを生成する。アドレス生成部１２は、ブロック単位で画像データを読み出す際に、元原稿の上下左右の余白幅に応じて読み出しアドレスを設定し、元原稿の画像データの欠落を抑制する。【選択図】図１
2006005499.tif 000002
【特許請求の範囲】
【請求項１】
入力画像を回転して出力する画像処理装置であって、
入力画像を記憶する第１記憶手段と、
前記第１記憶手段に記憶された画像データをブロック単位で読み出すための第１読み出しアドレスを生成する第１アドレス生成手段と、
前記第１読み出しアドレスに従い前記第１記憶手段から読み出された画像データを記憶する第２記憶手段と、
前記第２記憶手段に記憶された画像データを読み出すための第２読み出しアドレスを生成する第２アドレス生成手段と、
前記第２読み出しアドレスに従い前記第２記憶手段から読み出された画像データに対して回転処理を行う演算手段と、
回転処理された画像データを記憶する第３記憶手段と、
を有し、
前記第１アドレス生成手段は、前記入力画像の回転角度、前記入力画像のサイズ、及び前記入力画像の余白幅に応じて前記第１読み出しアドレスを生成する
ことを特徴とする画像処理装置。
【請求項２】
請求項１記載の装置において、
前記第１アドレス生成手段は、前記入力画像の左右の余白幅をそれぞれＲ，Ｌとした場合、前記第１読み出しアドレスの主走査方向の開始点をＲ／（Ｒ＋Ｌ）に応じて生成する
ことを特徴とする画像処理装置。
【請求項３】
請求項１記載の装置において、
前記第１アドレス生成手段は、前記入力画像の上下の余白幅をそれぞれＵ、Ｄとした場合、前記第１読み出しアドレスの副走査方向の開始点をＵ／（Ｕ＋Ｄ）に応じて生成する
ことを特徴とする画像処理装置。
【請求項４】
請求項１記載の装置において、
前記第１アドレス生成手段は、前記入力画像の回転角度、前記入力画像のサイズ、及び前記入力画像の余白幅に応じて生成された前記第１読み出しアドレスで指定される前記第１記憶手段内の位置が前記画像データの存在領域以外である場合には、前記第１読み出しアドレスを前記第１記憶手段内において白データが予め格納された位置に対応するアドレスに変更する
ことを特徴とする画像処理装置。
【請求項５】
請求項１記載の装置において、
前記第１アドレス生成手段は、前記入力画像の回転角度、前記入力画像のサイズ、及び
前記入力画像の余白幅に応じて生成された前記第１読み出しアドレスで指定される前記第１記憶手段内の位置が前記画像データの存在領域以外である場合には、前記第１読み出しアドレスを前記第１記憶手段内において前記画像データが存在する最も近い位置に対応するアドレスに変更する
ことを特徴とする画像処理装置。
【請求項６】
請求項１記載の装置において、
前記第１アドレス生成手段は、前記入力画像の左右上下の余白幅をそれぞれＲ，Ｌ、Ｕ、Ｄとした場合、前記入力画像の一点を基準として回転処理する場合の読み出しアドレスに対して主走査方向にＲ／（Ｒ＋Ｌ）に応じた量だけシフトさせ、副走査方向にＵ／（Ｕ＋Ｄ）に応じた量だけシフトさせたアドレスを前記第１読み出しアドレスとして生成することを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置、特にスキュー補正（傾き補正）等の画像回転機能を備える複写機等の装置に関する。
【背景技術】
【０００２】
従来より、複写機等の画像処理装置において、入力画像に対して回転処理を行うことが知られている。
【０００３】
例えば、下記に示す特許文献には、画像の傾き角度を検出し、検出された傾き角度に対応するシフト量で所定のライン数毎に画像データを主走査方向にシフトさせ、シフトさせた画像データを画像メモリに記憶させることが記載されている。そして、検出された傾き角度に応じて傾き補正を行うことにより生じる倍率誤差を、画像データ読み取り時に補正する倍率補正手段を備えることが記載されている。この倍率補正手段は、傾き角度をθとした場合に、傾き補正時に元画像に対してｃｏｓθを乗じる演算を行うため補正後の画像は元画像に対してｃｏｓθだけ縮小していることに鑑み、元画像読み取り時に１／ｃｏｓθだけ拡大することで倍率誤差をキャンセルするものである。
【０００４】
【特許文献１】特開２０００−１８８６７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように、回転処理において、回転角が大きい場合には倍率誤差が無視できなくなるため元画像の拡大処理が必要となるが、回転角が小さい場合には元画像の拡大処理はそれほど必要としないと考えられる。その一方で、元画像の回転処理を行う際、単に元画像の所定位置を基準として回転処理したのでは、補正後の用紙領域と元画像の用紙領域との相対的位置関係が異なるため、元画像における画像データが補正後の画像領域に含まれない場合が生じて元画像の一部が欠落する問題が生じ、この問題を解決するために元画像を一律に縮小する処理が必要となる。
【０００６】
もちろん、元画像の用紙に十分な余白領域が存在する場合には、たとえ両用紙領域の相対的位置関係が異なっていても元画像を縮小することなく元画像の画像領域自体が補正後の用紙領域に含まれるため画像データの欠落は生じないが、全ての用紙において十分な余白があることは保証されず、特に余白が小さいか、ほとんどない場合には画像データの一部が欠落する問題が生じ得る。
【０００７】
本発明の目的は、拡大あるいは縮小回路等のハードウェアを付加することなく、画像データの欠落等の画質劣化を防いで元画像の回転処理を行うことができる装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、入力画像を回転して出力する画像処理装置であって、入力画像を記憶する第１記憶手段と、前記第１記憶手段に記憶された画像データをブロック単位で読み出すための第１読み出しアドレスを生成する第１アドレス生成手段と、前記第１読み出しアドレスに従い前記第１記憶手段から読み出された画像データを記憶する第２記憶手段と、前記第２記憶手段に記憶された画像データを読み出すための第２読み出しアドレスを生成する第２アドレス生成手段と、前記第２読み出しアドレスに従い前記第２記憶手段から読み出された画像データに対して回転処理を行う演算手段と、回転処理された画像データを記憶する第３記憶手段とを有し、前記第１アドレス生成手段は、前記入力画像の回転角度、前記入力画像のサイズ、及び前記入力画像の余白幅に応じて前記第１読み出しアドレスを生成する。
【０００９】
本発明において、前記第１アドレス生成手段は、前記入力画像の左右の余白幅をそれぞれＲ，Ｌとした場合、前記第１読み出しアドレスの主走査方向の開始点をＲ／（Ｒ＋Ｌ）に応じて生成できる。
【００１０】
また、本発明において、前記第１アドレス生成手段は、前記入力画像の上下の余白幅をそれぞれＵ、Ｄとした場合、前記第１読み出しアドレスの副走査方向の開始点をＵ／（Ｕ＋Ｄ）に応じて生成できる。
【００１１】
また、本発明において、前記第１アドレス生成手段は、前記入力画像の回転角度、前記入力画像のサイズ、及び前記入力画像の余白幅に応じて生成された前記第１読み出しアドレスで指定される前記第１記憶手段内の位置が前記画像データの存在領域以外である場合には、前記第１読み出しアドレスを前記第１記憶手段内において白データが予め格納された位置に対応するアドレスに変更してもよい。
【００１２】
また、本発明において、前記第１アドレス生成手段は、前記入力画像の回転角度、前記入力画像のサイズ、及び前記入力画像の余白幅に応じて生成された前記第１読み出しアドレスで指定される前記第１記憶手段内の位置が前記画像データの存在領域以外である場合には、前記第１読み出しアドレスを前記第１記憶手段内において前記画像データが存在する最も近い位置に対応するアドレスに変更してもよい。
【００１３】
また、本発明において、前記第１アドレス生成手段は、前記入力画像の左右上下の余白幅をそれぞれＲ，Ｌ、Ｕ、Ｄとした場合、前記入力画像の一点を基準として回転処理する場合の読み出しアドレスに対して主走査方向にＲ／（Ｒ＋Ｌ）に応じた量だけシフトさせ、副走査方向にＵ／（Ｕ＋Ｄ）に応じた量だけシフトさせたアドレスを前記第１読み出しアドレスとして生成してもよい。
【発明を実施するための最良の形態】
【００１４】
以下、図面に基づき本発明の実施形態について、回転処理として原稿のスキュー補正を例にとり説明する。
【００１５】
図１には、本実施形態に係る画像処理装置の構成ブロック図が示されている。スキャナ等の画像データ入力部でスキャンされて得られた画像データ、すなわち原稿のデジタルデータは、スキュー検知部１を介して回転処理部２に供給される。画像データとしては、図形や写真などの他、文字も含まれる。原稿はＡ４やＢ５、Ａ３等の任意のサイズでよい。
【００１６】
スキュー検知部１は、スキャンした原稿の傾き角（スキュー角）θを検出し、検出したスキュー角を回転処理部２に供給する。また、スキュー検知部１は、スキャンした原稿の余白幅及び用紙サイズ（原稿サイズ）を検出して回転処理部２に供給する。スキュー角の検知方法は任意であるが、例えば原稿の４つの頂点座標を検出し、これらの頂点座標の位置関係から検出する。また、原稿の余白幅検出方法も任意であるが、例えばスキャンした原稿においてその画像データが背景データから白データに変わり、さらに白データから黒データに変わるまでの距離を算出することで検出する。原稿の余白は、一般に原稿の上下及び左右に存在するため、これら４ヵ所の余白を検出して回転処理部２に供給する。用紙サイズは、Ａ４あるいはＢ５等と検出する。余白幅や用紙サイズは、ユーザが手操作で入力してもよい。複写機等において、操作パネルを用いたユーザによる用紙サイズ入力や原稿のプリスキャンによるスキュー角検出及び用紙サイズ検出は公知である。処理すべき原稿が文書データである場合、一般にその余白は予め定められている場合もあるため、原稿の種類を入力するようにしてもよい。原稿が文書である場合には所定の余白幅とし、原稿がイメージの場合には余白幅を検出するように原稿の書類に応じて余白幅の検出／非検出を切り替えてもよい。
【００１７】
本実施形態における余白幅の検出は、原稿における画像データ領域（原稿のうち背景部分を除いた文書あるいは画像の存在領域）の片寄り度合いを検出することにあるため、必ずしも正確な余白幅を検出する必要はない。したがって、例えば検出した余白幅を所定の下限値と比較し、（検出余白幅）＜（下限値）である場合には余白幅を０としてもよく、複数値のいずれかに近似してもよい。余白幅を０、１ｃｍ、２ｃｍ、３ｃｍのいずれか近い値に近似する等である。さらに、上下左右の余白幅の精度は必ずしも同一である必要はなく異なっていてもよい。上下方向に重要なデータが存在する画像データの場合には、上下の余白幅を左右の余白幅よりも高精度で検出する等が好適である。
【００１８】
回転処理部２は、大容量低速メモリ１０、アドレス生成部１２、小容量高速メモリ１４、アドレス生成部１６、演算部１８、大容量低速メモリ２０及びアドレス生成部２２を有する。スキュー検知部１から供給された画像データは、ページメモリ等の大容量低速メモリ１０に記憶される。大容量低速メモリ１０に記憶された画像データは、アドレス生成部１２で生成されたブロック読み出しアドレスに従って順次読み出され、小容量高速メモリ１４に格納される。小容量高速メモリ１４に格納された画像データは、アドレス生成部１６により生成された局所回転用読み出しアドレスに従って順次読み出され、補間処理を行う演算部１８に供給される。演算部１８は、元画像（ソース画像）における対応画素近傍の複数の画素データを用いて補間処理を行い、処理結果を大容量低速メモリ２０に格納する。ここで、対応画素とは、回転処理（スキュー補正処理）を行って得られるデスティネーション画像における着目画素に対応するソース画像の画素であり、両者はアフィン変換で対応付けられる。大容量低速メモリ２０への書き込みは、アドレス生成部２２により生成されるブロック書き込みアドレスに従って行われる。
【００１９】
スキュー検知部１からのスキュー角度や余白幅データ、用紙サイズは、ブロック読み出しアドレスを生成するアドレス生成部１２に供給される。アドレス生成部１２は、スキュー角度や余白幅、用紙サイズ（原稿サイズ）に応じてブロック読み出しアドレスを決定する。
【００２０】
以下、本実施形態において処理の前提となる、ブロック読み出しの基本動作について説明する。
【００２１】
図２及び図３には、大容量低速メモリ１０からブロック１００単位で画像データを読み出す際の処理が示されている。アドレス生成部１２は、ブロック読み出しアドレスを順次生成して主走査方向（Ｘ方向）及び副走査方向（Ｙ方向）にブロック１００単位で画像データを読み出していく（図２における矢印参照）。図中、主走査方向に左から右に走査し、次に副走査方向に移動し、さらに主走査方向に左から右に走査していく。図では、ブロック１００は略正方領域であるが、これに限定されるものではない。ブロック１００の主走査方向の幅をＷｘ、副走査方向の幅をＷｙとする。スキュー補正などの回転処理を行う際には、上記のようにソース画像における対応画素近傍の複数の画素データを用いた補間演算が必要となるため、ブロック１００単位で画像データを読み出す際にはブロック間で互いにその一部をオーバラップさせて読み出す。オーバラップさせるべき領域は回転角θに応じて変化し、オーバラップデータを読み出すためのブロック読み出し開始点が異なってくる。図３において、例えば４８画素×４０画素のブロック１００の読み出し開始点ＳをＳ１、Ｓ２・・・とすると、読み出し開始点Ｓ１を有するブロック１００に対し、次に読み出すべきブロック１００の読み出し開始点Ｓ２は、Ｘ方向（主走査方向）移動量＝Ｂｙ×ｓｉｎθであり、Ｙ方向（副走査方向）移動量＝Ｂｘ×ｓｉｎθで規定される。ここで、Ｂｘ、Ｂｙは、補正後画像（デスティネーション画像）における出力ブロック２００のサイズである。ブロック２００は、ブロック１００に含有される画像領域であり、アドレス生成部１６が生成する読み出しアドレスによりその領域が決定される。回転処理の対象となるブロックはブロック２００である。
【００２２】
図４には、ブロック１００の読み出し開始位置Ｓ１、Ｓ２、・・・Ｓｎ、Ｓｎ＋１が示されている。回転角θに応じたＹ方向の移動量で読み出し開始点が決定されるため、図中矢印で示されるように大容量低速メモリ１０から斜め方向にブロック１００が順次読み出されていく。
【００２３】
図５には、アドレス生成部１６におけるアドレス生成の原理が示されている。図５（Ａ）は、大容量低速メモリ１０から読み出されたブロック１００及びこのブロック１００から出力ブロック２００を傾けて抽出することが示されており、図５（Ｂ）には、この出力ブロック２００を更にθだけ回転させることが示されている。
【００２４】
具体的には、ブロック１００内におけるブロック２００の画像データを（ｘ，ｙ)、回転角度θで補正した後のブロック２００の画像データを（Ｘ，Ｙ）とすると、アフィン逆行列を用いて
ｘ＝ｃｏｓθ（Ｘ−ｍ）＋ｓｉｎθ（Ｙ−ｎ）
ｙ＝−ｓｉｎθ（Ｘ−ｍ）＋ｃｏｓ（Ｙ−ｎ）
で与えられる。ここで、ｍ，ｎはオフセット量である。これにより、図６に示されるように元画像の画素Ｎｏ．２３は出力画像の画素Ｎｏ．１に写像され、元画像の画素Ｎｏ．１７は画素Ｎｏ．１０に写像される。読み出された画像データは演算部１８に供給される。演算部１８は、供給された画素データを用いて補間演算を行う。すなわち、図７に示されるように、補正後の画素データを、元画像において対応する画素Ｎに隣接する４点Ｐ１〜Ｐ４の画素データから
Ｎ１＝ｘＰ２＋（１−ｘ）Ｐ１
Ｎ２＝ｘＰ４＋（１−ｘ）Ｐ３
Ｎ＝（１−ｙ）Ｎ１＋ｙＮ２
で算出する。
【００２５】
以上の基本原理により、元画像（ソース画像）に対して回転処理した補正後画像（デスティネーション画像）が得られるが、図２に示されるように、単に元画像の所定位置、例えば右上の頂点を基準として回転処理するのでは、補正後画像の原稿サイズのうち、元画像の原稿サイズと重複しない部分が生じる。図２において、補正後原稿サイズの元原稿サイズからのＸ方向（主走査方向）のはみ出し量をＸｏｖｒとし、Ｙ方向（副走査方向）のはみ出し量をＹｏｖｒとしている。補正後原稿サイズでカバーされない元原稿サイズの領域は、その多くがブロック１００内に存在しないため大容量低速メモリ１０から読み出されることがなく、仮にこの領域に画像データが存在するとデスティネーション画像においても当該画像データが存在せず欠落することになる。もちろん、回転角θが小さい場合、画像データが元原稿サイズの中央近傍にのみ存在する場合、あるいは元原稿において余白が十分存在する場合には図２の場合でも画像データが欠落することはないが、そうではない場合には画像データの欠落を防止するために元画像を縮小処理する必要が生じ、回路構成の複雑化を招く。
【００２６】
そこで、本実施形態においては、図２に示されるように単に元画像に対し回転角θで回転処理するのではなく、補正後の原稿位置をＸ方向、及びＹ方向に調整することで、元画像の画像データの欠落を防いで画質劣化を防止する。補正後の原稿位置のＸ方向、Ｙ方向の調整は、ブロック１００の読み出しアドレスをＸ方向及びＹ方向に変化させることで実現でき、具体的にはアドレス生成部１２がスキュー角、余白幅、用紙サイズに基づいて設定する。基本的な考えは、原稿には余白部分が存在することが多いことから、これを利用し、図２において補正後原稿サイズでカバーされない領域を元の原稿の余白領域に割り当てるように調整することにある。
【００２７】
図８には、本実施形態における読み出し処理が示されている。図２と対比すると、補正後原稿は−Ｘ方向及び−Ｙ方向に移動され、図２においては上部及び左部のみに集中して存在していた非カバー領域が、図８では上下及び左右に分配されている点が異なる。すなわち、Ｘ方向に関しては、はみ出し量Ｘｏｖｒが元原稿に対する左側のはみ出し量Ｘｏｖｒ１と元原稿に対する右側のはみ出し量Ｘｏｖｒ２に分配され、かつ、Ｙ方向のはみ出し量Ｙｏｖｒが元原稿に対する上側のはみ出し量Ｙｏｖｒ１と元原稿に対する下側のはみ出し量Ｙｏｖｒ２に分配されている。Ｘｏｖｒに対するＸｏｖｒ１、Ｘｏｖｒ２の関係は、
Ｘｏｖｒ＝Ｘｏｖｒ１＋Ｘｏｖｒ２
であり、元原稿における左右の余白幅の比率をＲ：Ｌ（左余白幅をＲ、右余白幅をＬ）とすると
Ｒ：Ｌ＝Ｘｏｖｒ１：Ｘｏｖｒ２
の関係、すなわち左右の余白幅の量に応じて分配される。同様に、
Ｙｏｖｒ＝Ｙｏｖｒ１＋Ｙｏｖｒ２
であり、元原稿における上下の余白幅の比率をＵ：Ｄ（上余白幅をＵ、下余白幅をＤ）とすると、
Ｕ：Ｄ＝Ｙｏｖｒ１：Ｙｏｖｒ２
の関係、すなわち上下の余白幅の量に応じて分配される。これらの相違は、ブロック１００の読み出しアドレス（Ｘ，Ｙ）のＸ方向及びＹ方向の変化で表現される。図２のようなブロック読み出しアドレスに対し、Ｘ方向及びＹ方向に余白幅に応じた分だけシフトさせる、あるいはオフセットを設けるということもできよう。
【００２８】
このようにブロック１００の読み出しアドレスを変化させることで、ブロック１００の読み出し時に元原稿の画像データを全て読み出す確率が増大し、元原稿における画像データの欠落を防止でき、したがって縮小処理が不要となる。なお、このように読み出しアドレスを変化させても、例えば元原稿の余白幅が小さい場合には画像データの欠落が生じる場合もあるが、例えば余白幅が一定値以下の場合には縮小処理を実行する等して、縮小処理をケースバイケースで（常に行うのではなく）行うことも可能である。
【００２９】
なお、図８において、補正後原稿が元原稿からはみ出した「はみ出し」領域は、元原稿において画像データが本来存在しない領域であるから、ブロック１００の読み出し時には、これらの領域に相当する画像データは特定の値とする必要がある。具体的には、図９に示されるように、補正後原稿のうち元原稿が存在しない領域である「はみ出し領域」を領域３００、３１０、３２０、３３０とする（左上を領域３００、右上を領域３１０、左下を領域３２０、右下を領域３３０とする）と、領域３００では元原稿の画像データが存在しないため背景の白とすべく、大容量低速メモリ１０において白に相当するデータを格納するアドレスを指定するように設定する。例えば、大容量低速メモリのアドレスＡに白データを予め格納しておき、アドレス生成部１２で生成されたアドレスが領域３００内を指定するアドレスである場合には、当該アドレスを一律にＡに変更する等である。より詳細には、元原稿のＸ方向の範囲を０≦Ｘ≦ｆｓとすると、アドレス生成部１２で生成されたアドレスのＸ方向アドレスと０とを比較し、Ｘ方向アドレス＜０の関係を満たす場合には、当該アドレスが領域３００を指定するアドレスであると判定し、アドレス生成部１２は当該アドレスをＡに変更する。ここに、ｆｓは原稿のＸ方向画素数である。大容量低速メモリ１０に元原稿の画像データを格納するにあたり、まず大容量低速メモリ１０に白データを格納して「初期化」してもよい。
【００３０】
あるいは、アドレス生成部１２は、Ｘ方向のアドレスを元原稿が存在する最も近いＸ方向アドレスに一律にシフトさせてもよい。元原稿の４つの頂点位置が（０，０）、（ｆｓ，０）、（０，ｓｓ）、（ｆｓ，ｓｓ）であるとすると、領域３００におけるＸ方向アドレスは上記のようにＸ＜０となるため、一律にＸ＝０として元原稿の左端の画像データを読み出すようにする。元原稿の左端が背景の白である場合には、領域３００、３１０、３２０、３３０はいずれも白データを読み出すようにアドレス変換されることになる。
【００３１】
領域３１０についても領域３００と同様であり、上側のはみ出し領域３１０は画像データが存在しないため背景の白とすべく、大容量低速メモリ１０において白に相当するデータを格納するアドレスを指定するように設定する。あるいは、Ｙ方向のアドレスを元原稿が存在する最も近いＹ方向アドレスに一律にシフトさせる。領域３１０におけるＹ方向アドレスはＹ＜０となるため、領域３１０では一律にＹ＝０として元原稿の上端の画像データを読み出すようにする。
【００３２】
領域３２０についても同様であり、下側のはみ出し領域３２０は画像データが存在しないため背景の白とすべく、大容量低速メモリ１０において白に相当するデータを格納するアドレスを指定するように設定する。あるいは、Ｙ方向のアドレスを元原稿が存在する最も近いＹ方向アドレスに一律にシフトさせる。領域３２０におけるＹ方向アドレスはＹ＞ｓｓとなるため、領域３２０では一律にＹ＝ｓｓとして元原稿の下端の画像データを読み出すようにする。
【００３３】
領域３３０についても同様であり、右側のはみ出し領域３３０は画像データが存在しないため背景の白とすべく、大容量低速メモリ１０において白に相当するデータを格納するアドレスを指定するように設定する。あるいは、Ｘ方向のアドレスを元原稿が存在する最も近いＸ方向アドレスに一律にシフトさせる。領域３３０におけるＸ方向アドレスはＸ＞ｆｓとなるため、領域３３０では一律にＸ＝ｆｓとして元原稿の右端の画像データを読み出すようにする。
【００３４】
一般に、原稿の端部は用紙の色（通常白と考えられる）であるため、この処理により領域３００、３１０、３２０、３３０はいずれも用紙の色（白）データが読み出されるようにアドレス変換されることとなるが、例えば元原稿の左端が白で右端が黒である場合、領域３００では白データが読み出され、領域３３０では黒データが読み出されるようにアドレス変換されることとなり、元原稿の画像データが反映される。
【００３５】
図１０には、本実施形態の処理フローチャートが示されている。まず、アドレス生成部１２は、スキュー検知部１から回転角θ、余白幅及び用紙サイズを入力する。そして、用紙サイズと回転角θから図２におけるＸ方向のはみ出し量Ｘｏｖｒ及びＹ方向のはみ出し量Ｙｏｖｒを算出する。具体的には、用紙サイズがＡ４の場合には、Ａ４縦サイズ（２９７ｍｍ）×ｓｉｎθでＸｏｖｒが算出され、Ａ４横サイズ（２１０ｍｍ）×ｓｉｎθでＹｏｖｒが算出される。
【００３６】
次に、算出されたＸｏｖｒとＹｏｖｒ及び余白幅Ｒ、Ｌ、Ｕ、Ｄから図８におけるＸｏｖｒ１、Ｘｏｖｒ２、Ｙｏｖｒ１、Ｙｏｖｒ２を算出する（Ｓ１０２）。具体的には、
Ｘｏｖｒ１＝Ｒ／（Ｒ＋Ｌ）・Ｘｏｖｒ
Ｘｏｖｒ２＝Ｌ／（Ｒ＋Ｌ）・Ｘｏｖｒ
Ｙｏｖｒ１＝Ｕ／（Ｕ＋Ｄ）・Ｙｏｖｒ
Ｙｏｖｒ２＝Ｄ／（Ｕ＋Ｄ）・Ｙｏｖｒ
で算出される。なお、図ではこれらの代表としてＸｏｖｒ１、Ｘｏｖｒ２を示している。
アドレス生成部１２は、上記の式を用いて算出してもよいが、予めこれらの算出結果をテーブルとしてメモリ等に記憶しておき、検出された用紙サイズや余白幅に対応するＸｏｖｒ１等を当該テーブルから読み出して処理の高速化を図ることもできる。
【００３７】
余白幅ではみ出し量を分配した後、アドレス生成部１２はこれらに基づいてブロック１００の読み出しアドレスを生成し（Ｓ１０３）、大容量低速メモリ１０からブロック１００単位で画像データを読み出して小容量高速メモリ１４に格納する。すなわち、図８に即して説明すると、図２に示されたブロック読み出しにおける読み出し開始アドレス（Ｘ，Ｙ）に対し、−Ｘ方向にＸｏｖｒ１だけオフセットさせ、−Ｙ方向にＹｏｖｒ１だけオフセットさせた読み出しアドレスを生成して読み出す。したがって、アドレス生成部１２の構成としては、従来のアドレス生成部の構成に、さらにオフセット回路及びアドレス変換回路を付加するだけで本実施形態のアドレス生成部１２を構成し得る。オフセット回路にはスキュー検知部１からの回転角、余白幅、用紙サイズが供給され、オフセット回路はこれらに基づいてアドレスをオフセットさせる。オフセット回路は、アドレス生成部１２がカウンタで構成される場合、当該カウンタの初期値やリミット値をシフトさせることでこれに代えることができる。例えば、従来のアドレス生成部１２におけるカウンタが、Ｘ方向に０からｆｓまでカウントするカウンタを備えているとした場合、本実施形態のカウンタは−｜Ｘｏｖｒ１｜からｆｓ＋｜Ｘｏｖｒ｜までカウントするカウンタとすればよい。Ｙ方向についても同様である。すなわち、オフセット回路は具体的なハードウェア構成として用いる必要はない。アドレス変換回路は、オフセットされたアドレスが「はみ出し」領域に相当するアドレスであるか否かを判定し、「はみ出し」領域アドレスである場合には、上記のように白データあるいは元原稿の直近端部のデータを読み出すようにアドレスを変換する。その後、アドレス生成部１６で生成されたアドレスに従ってブロック２００を読み出し、演算部１８で補間演算を行い回転処理を実行する（Ｓ１０４）。アドレス生成部１６における読み出しアドレスは従来と同一である。
【００３８】
アドレス生成部１２は、Ｘ方向アドレス生成部及びＹ方向アドレス生成部から構成され、それぞれは複数のカウンタから構成される。以下、アドレス生成部１２の具体的な構成について説明する。
【００３９】
図１１には、アドレス生成部１２におけるＸ方向アドレス生成の構成ブロック図が示されている。Ｘ方向アドレス生成部は、ブロック内Ｘ方向アドレス計算カウンタ３０、ブロック内行数カウンタ３２、ブロック移動時Ｘ方向アドレス増分カウンタ３４、バンド移動時Ｘ方向アドレス増分カウンタ３６、加算器３８、及びアドレス変換器４０、４２を有して構成される。各カウンタ３０〜３６は加算器３８に対して並列に接続されるとともに、それぞれは前段のカウンタのキャリー信号が後段のカウンタのクロック端子に供給されるようにカスケード接続される。
【００４０】
カウンタ３０は、ブロック１００内のＸ方向アドレスを計算するカウンタであり、１ずつカウントしてブロック１００内のＸ方向の画素数分までカウントする。カウンタの初期値は上記のように算出されたＸｏｖｒ１に設定される。Ｗｘ／Ｎｗｏｒｄ−１はブロック１００内の画素数であり、Ｗｘはブロック１００のＸ方向の幅、Ｎｗｏｒｄは１ワードのＸ方向幅である。１ワードが２画素分で構成される場合、Ｗｘ／２−１でブロック１００内で読み出すべき画素数が算出される。カウント値は加算器３８に供給され、カウントアップしたキャリー信号はカウンタ３２に供給される。キャリー信号は、ブロック１００内において次の行に移行するトリガ信号として機能する。
【００４１】
カウンタ３２は、ブロック１００内の行数計算カウンタであり、１ずつカウントしてブロック１００の全行数までカウントする。初期値は０であり、リミット値はブロック１００のＹ方向の幅Ｗｙ−１である。カウント値は加算器３８に供給され、カウントアップした場合のキャリー信号はカウンタ３４に供給される。カウンタ３２からのキャリー信号は、１つのブロック１００における処理が完了し次のブロックに移行するトリガ信号として機能する。
【００４２】
カウンタ３４は、ブロック移動時のＸ方向アドレスの増分を計算するカウンタであり、次のブロック１００の処理に移行する際の読み出し開始アドレスを与えるカウンタである。初期値は０であり、ステップ幅はＳｂｌｋに設定される。Ｓｂｌｋは回転角θに応じた値であり、上記におけるＸ方向移動量Ｂｙ×ｓｉｎθに等しい。Ｓｂｌｋとして、Ｂｙ×ｓｉｎθの整数部を用いて理論値を近似してもよい。リミットはＳｂｌｋ×（ｆｓ／Ｗｘ−１）であり、これは原稿のＸ方向サイズｆｓに応じたＸ方向の総移動量である。カウンタ３４のカウント値は加算器３８に供給され、キャリー信号はカウンタ３６に供給される。カウンタ３４のキャリー信号は、１つのＸ方向走査が完了し、次のＸ方向走査に移行するトリガ信号として機能する。
【００４３】
カウンタ３６は、バンド移動時Ｘ方向アドレスの増分を計算するカウンタであり、あるバンド（ブロック１００をＸ方向に走査する場合の、１走査当たりのブロック群）から次のバンドに移行するときのＸ方向の移動量を与えるものである。初期値は０であり、ステップ幅はＳｂｎｄｘ、すなわちＢｙ×ｓｉｎθである。Ｓｂｌｋのうち、各バンドの先頭のＳｂｌｋがＳｂｎｄに対応する。Ｓｂｎｄとして、Ｓｂｌｋｘと同様に、理論値の整数部を用いることで近似してもよい。カウント値は加算器３８に供給される。
【００４４】
加算器３８は、カウンタ３０、３４、３６からのカウント値を加算して出力する。カウンタ３６により、あるバンドの先頭ブロックのＸ方向アドレスが与えられ、カウンタ３４で当該バンドにおけるブロック１００のＸ方向アドレスが与えられ、カウンタ３０で当該ブロック内のＸ方向アドレスが与えられる。最初の読み出しＸ方向アドレスを例示すると、カウンタ３６、３４、３２のカウント値はいずれも０であり、カウンタ３０のカウント値はＸｏｖｒ１であることから、Ｘ方向アドレス＝Ｘｏｖｒ１（その符号は負）となる。
【００４５】
加算器３８の出力はアドレス変換器４０、４２に順次供給される。アドレス変換器４０は、加算器３８からの出力アドレスと０とを比較し、いずれか大きい方を出力する。加算器３８からＸｏｖｒが出力された場合、Ｘｏｖｒ＜０であるから０が出力されることとなる。加算器３８から出力されたＸ方向アドレスが０より小さい場合には、すべて０に置換される。これは、図９に示された領域３００において、Ｘ方向アドレスを一律にＸ＝０に置換することに対応する。
【００４６】
一方、アドレス変換器４２は、加算器３８からの出力アドレスとｆｓとを比較し、いずれか小さい方を出力する。したがって、加算器３８からの出力アドレスがｆｓより大きい場合には、全てｆｓに置換されることになる。これは、図９に示された領域３３０において、Ｘ方向アドレスを一律にＸ＝ｆｓに置換することに対応する。
【００４７】
図１２には、アドレス生成部１２のＹ方向アドレス生成の構成ブロック図が示されている。Ｙ方向アドレス生成部は、ブロック内Ｘ方向アドレス計算カウンタ５０、ブロック内行番号計算カウンタ５２、ブロック移動時Ｙ方向アドレス増分カウンタ５４、バンド移動時Ｙ方向アドレス増分カウンタ５６、加算器５８、及びアドレス変換器６０、６２を有して構成される。カウンタ５０〜５６は加算器５８に並列に接続され、各カウンタは前段のキャリー信号が後段のクロック端子に供給されるようにカスケードに接続される。
【００４８】
カウンタ５０は、ブロック内におけるＸ方向アドレスがＸ方向に全画素分カウントされたか否かを確認するためのカウンタであり、そのカウント値自体はＹ方向アドレスとは無関係であり、そのキャリー信号のみをカウンタ５２に供給する。
【００４９】
カウンタ５２は、ブロック１００における複数行のうちの何番目の行であるかを計算するカウンタであり、初期値はｆｓ×ｓｉｎθ−Ｙｏｖｒ１である。行番号はこの初期値からカウントし、Ｗｙでカウントアップする。カウント値は加算器５８に供給され、キャリー信号はカウンタ５４に供給される。
【００５０】
カウンタ５４は、ブロック移動時Ｙ方向アドレスの増分を計算するカウンタであり、ステップはＳｂｌｋｙ、すなわちＢｘ×ｓｉｎθである。理論値であるＢｘ×ｓｉｎθの整数部を用いて近似してもよい。リミットはＳｂｌｋ×（ｆｓ／Ｗｘ−１）、すなわちＸ方向のブロック数分である。カウント値は加算器５８に供給され、キャリー信号はカウンタ５６に供給される。
【００５１】
カウンタ５６は、バンド移動時のＹ方向アドレスの増分を計算するカウンタであり、ステップはＳｂｎｄｙ、すなわちバンドの先頭ブロックのＢｘ×ｓｉｎθである。カウント値は加算器５８である。
【００５２】
加算器５８は、カウンタ５２、５４、５６からのカウント値を加算して出力する。カウンタ５６のカウント値によりバンドの先頭ブロックのＹ方向アドレスが与えられ、カウンタ５４のカウント値により当該バンド内におけるブロック１００のＹ方向アドレスが与えられ、カウンタ５２のカウント値により当該ブロック内のＹ方向アドレスが与えられる。
最初の読み出しＹ方向アドレスを例示すると、カウンタ５６、５４のカウント値は０であり、カウンタ５２からｆｓ×ｓｉｎθ−Ｙｏｖｒ１が入力されるから、Ｙ方向アドレス＝ｆｓ×ｓｉｎθ−Ｙｏｖｒ１となる。
【００５３】
加算器５８の出力は、アドレス変換器６０、６２に順次供給される。アドレス変換器６０は、加算器５８の出力アドレスと０とを比較し、いずれか大きい方を出力する。加算器５８から出力されたＹ方向アドレスが０より小さい場合には、すべて０に置換される。これは、図９に示された領域３１０において、Ｙ方向アドレスを一律にＹ＝０に置換することに対応する。
【００５４】
一方、アドレス変換器６２は、加算器５８からの出力アドレスとｓｓとを比較し、いずれか小さい方を出力する。加算器５８から出力されたＹ方向アドレスがｓｓより大きい場合には、全てｓｓに置換される。これは、図９に示された領域３２０において、Ｙ方向アドレスを一律にＹ＝ｓｓに置換することに対応する。
【００５５】
このように、本実施形態では、元原稿を回転処理する際に、回転角、元原稿の用紙サイズ、及び余白幅に応じ、元原稿に対して補正後の原稿がはみ出す部分を上下及び左右に分配することで、元原稿の縮小処理を実行することなく元原稿の画像データ欠落を防ぎ画質劣化を抑制できる。
【００５６】
なお、本実施形態では、基本的に元原稿の縮小処理を不要なものとしたが、上記のようにケースバイケースで縮小処理を実行してもよく、また、回転角が所定値以上の場合には縮小処理を常に実行してもよい。この場合においても、本実施形態では縮小の倍率を抑制することができるため、縮小処理及びその後の拡大処理に伴う画質劣化を抑制し得る。
【００５７】
さらに、本実施形態ではスキュー補正を例示したが、これに限らず一般の回転処理にも適用できることは云うまでもない。
【図面の簡単な説明】
【００５８】
【図１】実施形態の全体構成図である。
【図２】回転処理の基本原理説明図である。
【図３】ブロック単位の読み出し処理説明図である。
【図４】ブロック読み出し開始点の説明図である。
【図５】ブロックの回転処理説明図である。
【図６】回転処理の対応関係（写像）説明図である。
【図７】補間演算説明図である。
【図８】実施形態の回転処理説明図（はみ出し量の分配）である。
【図９】実施形態のはみ出し領域のアドレス設定説明図である。
【図１０】実施形態の処理フローチャートである。
【図１１】アドレス生成部１２内のＸ方向アドレス生成ブロック図である。
【図１２】アドレス生成部１２内のＹ方向アドレス生成ブロック図である。
【符号の説明】
【００５９】
１  スキュー検知部、２  回転処理部、１０  大容量低速メモリ、１２  アドレス生成部、１４  小容量高速メモリ、１６  アドレス生成部、１８  演算部、２０  大容量低速メモリ、２２  アドレス生成部。
【図１】
2006005499.tif 000003
【図２】
2006005499.tif 000004
【図３】
2006005499.tif 000005
【図４】
2006005499.tif 000006
【図５】
2006005499.tif 000007
【図６】
2006005499.tif 000008
【図７】
2006005499.tif 000009
【図８】
2006005499.tif 000010
【図９】
2006005499.tif 000011
【図１０】
2006005499.tif 000012
【図１１】
2006005499.tif 000013
【図１２】
2006005499.tif 000014