(57)【要約】【課題】処理を高速化する。【解決手段】画像形成装置１０は、入力画像が記憶されているメモリ２０から補正する傾きに応じて始点座標を変えながら１ページのサイズよりも小さいブロック単位に画像を順次読み出すスキューブロック読み出し部１２と、スキューブロック読み出し部１２で順次読み出されたブロック単位の画像各々の傾きを修正し、傾きが修正された画像をブロック単位に出力するブロック傾き修正部１４と、ブロック傾き修正部１４が出力するブロック単位の画像に対して周辺の画素参照が必要なフィルタ処理を行うフィルタ処理部１６と、フィルタ処理部１６で処理された画像をメモリ２０に順次書き込むブロック書き出し部１８とを設ける。【選択図】図１
2017134659.tif 000002
【特許請求の範囲】
【請求項１】
入力画像が記憶されているメモリから補正する傾きに応じて始点座標を変えながら１ページのサイズよりも小さいブロック単位に画像を順次読み出すスキューブロック読み出し部と、
前記スキューブロック読み出し部で順次読み出されたブロック単位の画像各々の傾きを修正し、傾きが修正された画像をブロック単位に出力するブロック傾き修正部と、
前記ブロック傾き修正部が出力するブロック単位の画像に対して周辺の画素参照が必要なフィルタ処理を行うフィルタ処理部と、
前記フィルタ処理部で処理された画像を前記メモリに順次書き込むブロック書き出し部と
を有する画像形成装置。
【請求項２】
前記ブロック傾き修正部は、所定のサイズのバッファを備え、前記バッファを用いて傾きの補正を行い、その際、補正する傾きが大きくなると処理可能な画像のサイズが小さくなり、補正する傾きが小さくなると処理可能な画像のサイズが大きくなるように構成され、
前記スキューブロック読み出し部で読み出すブロック単位の画像のサイズは、前記ブロック傾き修正部で処理可能なサイズである
請求項１に記載の画像形成装置。
【請求項３】
前記フィルタ処理部は、１ページ分の幅より小さい幅の画像の処理に対応するためのラインバッファを備え、
前記スキューブロック読み出し部で読み出すブロック単位の画像のサイズは、前記ブロック傾き修正部で処理可能かつ前記フィルタ処理部で処理可能なサイズである
請求項１又は請求項２に記載の画像形成装置。
【請求項４】
前記ブロック傾き修正部が備えるバッファのサイズは、入力画像の傾きが４５度より小さい場合において、前記フィルタ処理部が処理可能な最大幅のブロック単位の画像を出力可能なサイズである
請求項１乃至請求項３の何れかに記載の画像形成装置。
【請求項５】
前記ブロック傾き修正部は、傾きが修正された画像を前記メモリに書き込むことなくブロック単位で出力し、
前記フィルタ処理部は、出力されたブロック単位の画像に対して前記フィルタ処理を行う
請求項１乃至請求項４の何れかに記載の画像形成装置。
【請求項６】
入力画像が記憶されているメモリから補正する傾きに応じて始点座標を変えながら１ページのサイズよりも小さいブロック単位に画像を順次読み出すスキューブロック読み出し部と、
前記スキューブロック読み出し部で順次読み出されたブロック単位の画像各々の傾きを修正し、傾きが修正された画像をブロック単位に出力するブロック傾き修正部と、
入力されるブロック単位の画像に対して周辺の画素参照が必要なフィルタ処理を行うフィルタ処理部と、
前記フィルタ処理部で処理された画像を前記メモリに順次書き込むブロック書き出し部と、
入力されるブロック単位の画像を前記メモリに順次書き込む第２のブロック書き出し部と、
画像が記憶されている前記メモリから始点座標を変えながら１ページのサイズより小さいブロック単位に画像を順次読み出すブロック読み出し部と、
前記スキューブロック読み出し部と前記ブロック傾き修正部と前記フィルタ処理部と前記ブロック書き出し部とを連結した構成で処理を行う第１の処理構成か、前記スキューブロック読み出し部と前記ブロック傾き修正部と前記第２のブロック書き出し部とを連結した構成と、前記ブロック読み出し部と前記フィルタ処理部と前記ブロック書き出し部とを連結した構成とを前記メモリを介して連結して処理を行う第２の処理構成かの何れかを選択する制御部と
を有する画像形成装置。
【請求項７】
前記制御部は、前記第１の処理構成と前記第２の処理構成とのうち、メモリアクセス量が少なくなる方の処理構成を選択する
請求項６に記載の画像形成装置。
【請求項８】
前記第１の処理構成が選択された場合、前記ブロック傾き修正部は、傾きが修正された画像を前記メモリに書き込むことなくブロック単位で出力し、前記フィルタ処理部は、出力されたブロック単位の画像に対して前記フィルタ処理を行う
請求項６又は請求項７に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像形成装置に関し、例えば、スキュー補正（傾き補正）及びフィルタ処理等の画像加工機能を有する画像形成装置に適用して好適なものである。
【背景技術】
【０００２】
従来、複写機や複合機等の画像形成装置において、読み取り時に発生した原稿のスキュー（傾き）の解消を目的としてスキュー補正を行う画像形成装置が提案されている（例えば、特許文献１参照）。
【０００３】
スキュー補正を行う方法としては、画像の一部を矩形に切り出したブロック単位に画像をメモリより読み出してブロック単位の画像をバッファに一時的に保持し、該バッファに保持されたデータを傾きに応じて読み出すことでブロック単位の画像に対して傾きの補正を行い、補正を行った画像をブロック単位にメモリに書き出すことを、書き出す際のブロックの重なりがないように読み込みブロックのサイズを決めて、補正する傾きに応じて読み出しブロックの開始座標を変えながら画像全体にわたって行うことで、傾きを補正した画像を得る方法が知られている。画像形成装置においては、画像全体を保持するメモリを大容量低速メモリで構成し、画像の傾きの補正に使用するバッファを小容量高速メモリで構成することにより、処理にかかる構成コストを抑えながら、高速に傾きの補正を行う。この大容量低速メモリは、例えばＤＲＡＭ（Dynamic Random Access Memory）等で構成され、コストが安く、シーケンシャルアクセスは高速だがランダムアクセスは低速である。また小容量高速メモリは、例えばＳＲＡＭ（Static Random Access Memory）等で構成され、コストが高く、シーケンシャルアクセスもランダムアクセスも高速である。以後では、大容量低速メモリをメモリと標記し、小容量高速メモリをバッファと標記する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３５２７０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、複写機や複合機等の画像形成装置では、読み取り原稿のボケの解消や、読み取り原稿と出力原稿とのスクリーン干渉によるモアレ発生の抑止を目的とした種々のフィルタ処理を行うことが通常行われる。このためスキュー補正を行う画像形成装置では、読み取った原稿の画像に対して、スキュー補正とフィルタ処理の両方の処理が行われることになる。この場合、画像形成装置は、メモリに書き込まれたスキュー補正後の画像に対してフィルタ処理を行うことになる。したがって、メモリに書き込まれたスキュー補正後の画像に対してフィルタ処理を行う処理構成では、スキュー補正にかかわる画像の読み出し書き出しによるメモリアクセスが原稿画像分増えるため、スキュー補正を行わずフィルタ処理のみを行う場合よりも処理が遅くなるという問題があった。
【０００６】
本発明は以上の点を考慮してなされたもので、処理を高速化し得る画像形成装置を提案しようとするものである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するため本発明の画像形成装置においては、入力画像が記憶されているメモリから補正する傾きに応じて始点座標を変えながら１ページのサイズよりも小さいブロック単位に画像を順次読み出すスキューブロック読み出し部と、スキューブロック読み出し部で順次読み出されたブロック単位の画像各々の傾きを修正し、傾きが修正された画像をブロック単位に出力するブロック傾き修正部と、ブロック傾き修正部が出力するブロック単位の画像に対して周辺の画素参照が必要なフィルタ処理を行うフィルタ処理部と、フィルタ処理部で処理された画像をメモリに順次書き込むブロック書き出し部とを設けるようにした。
【０００８】
また本発明の画像形成装置においては、入力画像が記憶されているメモリから補正する傾きに応じて始点座標を変えながら１ページのサイズよりも小さいブロック単位に画像を順次読み出すスキューブロック読み出し部と、スキューブロック読み出し部で順次読み出されたブロック単位の画像各々の傾きを修正し、傾きが修正された画像をブロック単位に出力するブロック傾き修正部と、入力されるブロック単位の画像に対して周辺の画素参照が必要なフィルタ処理を行うフィルタ処理部と、フィルタ処理部で処理された画像をメモリに順次書き込むブロック書き出し部と、入力されるブロック単位の画像をメモリに順次書き込む第２のブロック書き出し部と、画像が記憶されているメモリから始点座標を変えながら１ページのサイズより小さいブロック単位に画像を順次読み出すブロック読み出し部と、スキューブロック読み出し部とブロック傾き修正部とフィルタ処理部とブロック書き出し部とを連結した構成で処理を行う第１の処理構成か、スキューブロック読み出し部とブロック傾き修正部と第２のブロック書き出し部とを連結した構成と、ブロック読み出し部とフィルタ処理部とブロック書き出し部とを連結した構成とをメモリを介して連結して処理を行う第２の処理構成かの何れかを選択する制御部とを設けるようにした。
【０００９】
本発明は、画像の傾き修正処理とフィルタ処理との間でメモリアクセスを発生させないようにできるため、画像の傾き修正処理を行わずフィルタ処理のみを行う場合よりも処理が遅くなることを抑えることができる。
【発明の効果】
【００１０】
本発明によれば、処理を高速化し得る画像形成装置を実現できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態による画像形成装置の構成を示すブロック図である。
【図２】メモリ上の入力画像及び出力画像を示す図である。
【図３】スキューブロック読み出し部の動作概略を示す図である。
【図４】ブロック傾き修正部の動作概略を示す図である。
【図５】ブロック傾き修正部における座標移動を示す図である。
【図６】Ｘ方向差分値及びＹ方向差分値を示す図である。
【図７】フィルタ処理部の構成を示す図である。
【図８】ブロック書き出し部の動作概略を示す図である。
【図９】フィルタ処理部がない場合の読み出し開始ブロックの決定を示す図である。
【図１０】フィルタ処理部がある場合の読み出し開始ブロックの決定を示す図である。
【図１１】次ブロック始点座標の決定を示す図である。
【図１２】ブロック傾き修正処理手順（１）を示すフローチャートである。
【図１３】ブロック傾き修正処理手順（２）を示すフローチャートである。
【図１４】ブロック傾き修正処理手順（３）を示すフローチャートである。
【図１５】従来の画像形成装置の構成を示すブロック図である。
【図１６】第１の実施の形態によるメモリアクセス量概算を示す表及びグラフである。
【図１７】第２の実施の形態による画像形成装置の構成を示すブロック図である。
【図１８】第２の実施の形態による画像形成装置の動作説明を示すブロック図である。
【図１９】第２の実施の形態によるメモリアクセス量概算を示す表及びグラフである。
【図２０】他の実施の形態によるブロック傾き修正処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、発明を実施するための形態（以下実施の形態とする）について、図面を用いて説明する。
【００１３】
［１．第１の実施の形態］
［１−１．画像形成装置の構成］
図１に示すように画像形成装置１０は複写機や複合機等であり、制御部１１、スキューブロック読み出し部１２、ブロック傾き修正部１４、フィルタ処理部１６、ブロック書き出し部１８及びメモリ２０により構成される。制御部１１は、図示しないＣＰＵ（Central Processing Unit）を中心に構成されており、メモリ２０から所定のプログラムを読み出して実行することにより、画像形成装置１０を統轄制御する。スキューブロック読み出し部１２は、メモリ２０に置かれた入力画像ＩＭＧｉ（図２）を補正する傾きに応じて始点座標を変えながらブロック単位に読み出し、ブロック単位の画像をブロック傾き修正部１４に入力する。
【００１４】
図２（Ａ）は、メモリ２０上に置かれた入力画像ＩＭＧｉの例を示し、クロスハッチングされた領域が原稿を示す原稿領域ＡＰであり、傾いた状態の矩形原稿画像である。画像形成装置１０は、このような傾いた矩形原稿画像を図２（Ｂ）に示すようにそれぞれの辺がＸ方向又はＹ方向に沿うように傾きを補正し、出力画像ＩＭＧｏとして出力する。
【００１５】
図３は、図２の入力画像ＩＭＧｉを例に、スキューブロック読み出し部１２でブロック単位に読み出しを行う様子を示したものである。図３の破線枠のブロックはスキューブロック読み出し部１２が読み出すブロック単位の画像に対応する読み出しブロックＢＬｒであり、実線枠のブロックはブロック傾き修正部１４が出力する出力ブロックＢＬｏ１（図４）単位の画像の領域に対応するブロックである。スキューブロック読み出し部１２は、ブロック傾き修正部１４に入力するブロック各々に対して外接する矩形の範囲を読み出しブロックＢＬｒのブロック単位に読み出す。またスキューブロック読み出し部１２は、各ブロックの読み出し順番として、図の矢印で示すように、原稿領域ＡＰの出力左上に対応する読み出しブロックＢＬｒから読み出しを開始し、この読み出しブロックＢＬｒの読み出しが完了したら、この読み出しブロックＢＬｒの出力右方向に対応する読み出しブロックＢＬｒを読み出し、出力右端に対応する読み出しブロックＢＬｒまで順番に読み出す。またスキューブロック読み出し部１２は、出力右端に対応する読み出しブロックＢＬｒの読み出しが完了したら、出力の下方向に一段下がり、これらを繰り返し、原稿領域ＡＰ全体に対応する画像を読み出しブロックＢＬｒ単位に全面読み出す。さらにスキューブロック読み出し部１２は、各読み出しブロックＢＬｒ内の画素の読み出しもラスタースキャン順に左上の画素から順に読み出す。すなわちスキューブロック読み出し部１２は、左上から右方向に順番に読み、端までいったら一段下に下がって、これを繰り返し、読み出しブロックＢＬｒの全画素を読み出す。読み出しブロックＢＬｒのサイズや各読み出しブロックＢＬｒの始点座標の決定方法については後述する。
【００１６】
ブロック傾き修正部１４は、上述のスキューブロック読み出し部１２で読み出され入力される読み出しブロックＢＬｒ単位の画像各々の傾きを修正し、傾きを修正した画像各々をブロック単位に出力する。
【００１７】
図４は、ブロック傾き修正部１４で行う傾き修正の概略を示したものである。図４における入力ブロックＢＬｉ１は、図３における読み出しブロックＢＬｒに対応している。図４に示すように、入力ブロックＢＬｉ１中の実線枠で囲まれた出力領域Ａｏに対応する画素群から、図４の右図に示すように、傾きを修正したブロックの画像を生成し出力ブロックＢＬｏ１として出力する。出力ブロックＢＬｏ１の画素の出力順はラスタースキャン順であり、出力ブロックＢＬｏ１の出力は左上の画素を始点として順に出力されるため、ブロック傾き修正部１４は、図４中の斜線で示すように、補正する傾きと入力ブロックＢＬｉ１のＸ方向（横方向）の幅とに応じたサイズのバッファＢｆを持つ必要がある。
【００１８】
このようにブロック傾き修正部１４は、補正する傾きが大きいほど大きなサイズのバッファＢｆが必要になるため、バッファＢｆのサイズが一定である場合、補正する傾きが大きくなると、入力ブロックＢＬｉ１に内接する出力領域Ａｏ、すなわち処理可能な画像のサイズが小さくなる一方、補正する傾きが小さくなると、入力ブロックＢＬｉ１に内接する出力領域Ａｏ、すなわち処理可能な画像のサイズが大きくなる。またブロック傾き修正部１４のバッファＢｆのサイズは、補正する傾きが４５度より小さい場合において、フィルタ処理部１６が処理可能な最大幅のブロック単位の画像を出力可能になるように決定される。
【００１９】
ブロック傾き修正部１４は、ラスタースキャン順に入力される入力ブロックＢＬｉ１の画像をバッファＢｆに蓄積していき、バッファＢｆに蓄積した入力ブロックＢＬｉ１の画像が出力ブロックＢＬｏ１の１ラインに対応する画素を連続して読み出せるだけ蓄積された段階で出力ブロックＢＬｏ１の１ラインに対応する画素を修正する傾き方向（図４の左図の矢印方向）に読み出し、出力の１ラインを生成して出力する。ブロック傾き修正部１４は、１ラインの出力が終わったら、出力に関与しなくなったバッファＢｆを未保持の入力画素の蓄積に割り当てるとともに、次のラインの出力を行っていき、これを繰り返し行うことで出力ブロックＢＬｏ１に対応する全画素を順次生成して出力する。
【００２０】
図５は、傾き方向の読み出しについて、より具体的に説明するための図である。図５に示すように入力の各画素に対応する座標である入力対応座標Ｃｉに対して、出力に対応する各画素の座標である出力対応座標Ｃｏは傾いており、ブロック傾き修正部１４は、出力する画素を右方向に移動する場合には、図５（Ａ）に示すように現画素Ｐｐの座標のＸ座標及びＹ座標に対して△ｘ１及び△ｙ１を加算して次画素Ｐｎの座標を求めることができる。この△ｘ１及び△ｙ１は、出力の横方向に対応する１画素の移動ベクトル△ｘｙ１をＸ方向とＹ方向とに分解した移動量で、出力する原稿全体の横方向の画素数（以後ではｏｕｔｗ（図２）と標記する）と、図６に示す入力画像ＩＭＧｉ中の、出力画像ＩＭＧｏ（図２（Ｂ））に対応する原稿領域ＡＰの右上と左上の頂点座標のＸ方向及びＹ方向の差分値（それぞれｄｉｗｘ及びｄｉｗｙと以後標記する）をもとに求めることができ、下式のように表現できる。
△ｘ１＝ｄｉｗｘ／ｏｕｔｗ
△ｙ１＝ｄｉｗｙ／ｏｕｔｗ
ブロック傾き修正部１４は、出力する画素を下方向に移動する場合には、図５（Ｂ）に示すように現ライン画素Ｐｐｌの座標のＸ座標及びＹ座標に対して△ｘ２及び△ｙ２を加算して次ライン画素Ｐｎｌの座標を求めることができる。△ｘ２及び△ｙ２は、出力の縦方向に対応する１画素の移動ベクトル△ｘｙ２をＸ方向とＹ方向に分解した移動量で、出力する原稿全体の縦方向の画素数（以後ではｏｕｔｈ（図２）と標記する）と、図６に示す入力画像ＩＭＧｉ中の、出力画像ＩＭＧｏ（図２（Ｂ））に対応する原稿領域ＡＰの左下と左上の頂点座標のＸ方向及びＹ方向の差分値（以後ではそれぞれｄｉｈｘ及びｄｉｈｙと標記する）をもとに求めることができ、下式のように表現できる。
△ｘ２＝ｄｉｈｘ／ｏｕｔｈ
△ｙ２＝ｄｉｈｙ／ｏｕｔｈ
また、△ｘ２及び△ｙ２は、△ｘ１及び△ｙ１と、入力画像ＩＭＧｉのＸ方向の解像度とＹ方向の解像度と（以後では、ｉｎｘｒｅｓｏｌとｉｎｙｒｅｓｏｌと標記する）と出力画像ＩＭＧｏのＸ方向の解像度とＹ方向の解像度（以後では、ｏｕｔｘｒｅｓｏｌとｏｕｔｙｒｅｓｏｌと標記する）を使って下式のようにも表現できる。
△ｘ２＝−△ｙ１×（ｉｎｘｒｅｓｏｌ／ｉｎｙｒｅｓｏｌ）／（ｏｕｔｙｒｅｓｏｌ／ｏｕｔｘｒｅｓｏｌ）
＝（−ｄｉｗｙ×ｉｎｘｒｅｓｏｌ／ｉｎｙｒｅｓｏｌ）／（ｏｕｔｗ×ｏｕｔｙｒｅｓｏｌ／ｏｕｔｘｒｅｓｏｌ）
△ｙ２＝△ｘ１×（ｉｎｙｒｅｓｏｌ／ｉｎｘｒｅｓｏｌ）／（ｏｕｔｙｒｅｓｏｌ／ｏｕｔｘｒｅｓｏｌ）
＝（ｄｉｗｘ×ｉｎｙｒｅｓｏｌ／ｉｎｘｒｅｓｏｌ）／（ｏｕｔｗ×ｏｕｔｙｒｅｓｏｌ／ｏｕｔｘｒｅｓｏｌ）
【００２１】
入力解像度や出力解像度が逓倍関係になっていれば最小の解像度を使って、上式の分母及び分子の規格化を行うことができる。例えば、入力画像ＩＭＧｉのＸ方向解像度が６００、Ｙ方向解像度が６００、出力画像ＩＭＧｏのＸ方向解像度が６００、Ｙ方向解像度が６００であれば上式は下式（１）のように規格化でき、入力画像ＩＭＧｉのＸ方向解像度が３００、Ｙ方向解像度が６００、出力画像ＩＭＧｏのＸ方向解像度が６００、Ｙ方向解像度が６００であれば、上式は下式（２）のように規格化できる。
【００２２】
式（１）
△ｘ１＝ｄｉｗｘ／ｏｕｔｗ
△ｙ１＝ｄｉｗｙ／ｏｕｔｗ
△ｘ２＝−ｄｉｗｙ／ｏｕｔｗ
△ｙ２＝ｄｉｗｘ／ｏｕｔｗ
式（２）
△ｘ１＝（ｄｉｗｘ×２）／（ｏｕｔｗ×２）
△ｙ１＝（ｄｉｗｙ×２）／（ｏｕｔｗ×２）
△ｘ２＝−ｄｉｗｙ／（ｏｕｔｗ×２）
△ｙ２＝（ｄｉｗｘ×４）／（ｏｕｔｗ×２）
【００２３】
上式のようにすることで、入力画像ＩＭＧｉ上の座標のＸ方向座標及びＹ方向座標の小数点に該当する値（式の分母の値）と、出力の横移動及び縦移動それぞれのＸ方向及びＹ方向の移動量の分母の値とについて、Ｘ方向及びＹ方向それぞれ共通化できる。なお、上式の分子及び分母の値について、以降の説明を簡単にするため、△ｘ１、△ｙ１、△ｘ２及び△ｙ２の分子に該当する値をそれぞれｖｘ１、ｖｙ１、ｖｘ２及びｖｙ２と以後は標記し、△ｘ１及び△ｘ２の共通の分母をｘｖｂａｓｅ、△ｙ１及び△ｙ２の共通の分母をｙｖｂａｓｅと以後では標記する。
【００２４】
以上説明した△ｘ１、△ｙ１、△ｘ２及び△ｙ２を使用して、ブロック傾き修正部１４は、各入力ブロックＢＬｉ１において、各入力ブロックＢＬｉ１の出力の始点に対応する座標から、出力の１画素に対応する読み出し座標をラスタースキャン順に順次決定し、予め決められた出力ブロックＢＬｏ１のサイズ分の画素を生成し出力する。なお、出力ブロックＢＬｏ１のサイズや各出力ブロックＢＬｏ１の出力始点座標Ｃｏｓに対応する入力ブロックＢＬｉ１の出力始点対応座標Ｃｃｏｓ、具備するバッファＢｆのサイズの決め方、画素生成についてのより詳細な説明については後述する。
【００２５】
フィルタ処理部１６は、前段のブロック傾き修正部１４から入力された入力ブロックＢＬｉ２単位の画像に対して周辺の画素参照が必要な処理を含む処理を行い、図７に示すように出力ブロックＢＬｏ２として出力する。例えば、複写機や複合機等であれば、読み取り原稿のボケの解消や、読み取り原稿と出力原稿のスクリーン干渉によるモアレ発生の抑止を目的とした種々のフィルタ処理を行うことが通常行われる。図７（Ａ）は、このような種々のフィルタ処理の構成例を示すものであり、フィルタ処理部１６は、文字部と文字以外の判定を画素毎に行う像域分離フィルタ３０と、像域分離フィルタ３０で文字以外と判定された画素に対して平滑化を行う平滑化フィルタ３２と、像域分離フィルタ３０で文字と判定された画素に対して強調を行う強調フィルタ３４とで構成される。各フィルタとも注目する１画素を処理するために、周辺の画素参照が必要であり、平滑化フィルタ３２を例に挙げると、注目する１画素の処理に注目画素を含む周辺９×９の画素の平均値を算出し、この平均値を注目画素の出力画素値として出力を行うことを入力される各画素に対して行っていく。周辺画素参照が必要なフィルタ処理は、１ページのライン単位で処理を行うと前後の画素を保持するためのラインバッファＬＢｆが大きくなってしまうため、フィルタ処理部１６は、１ページを幅方向（Ｘ方向）に分割した入力ブロックＢＬｉ２単位分のラインバッファＬＢｆのみを有する構成とすることにより、ラインバッファＬＢｆのサイズを小さくでき、フィルタを構成するためのコストを抑えることができる。このような処理を行う場合、出力ブロックＢＬｏ１（図４）に対応した入力ブロックＢＬｉ２（図７）の境界付近の画素については、参照する画素が境界外となり、無効な画素出力となる。したがってフィルタ処理部１６は、無効となる画素分大きなサイズの入力ブロックＢＬｉ２を予め入力し、各フィルタ処理や全フィルタ処理後の画素から無効な画素を削除して有効な画素のみを得る必要がある。例えば、図７のフィルタ処理部１６の例では、１４画素幅（像域分離フィルタ５画素＋平滑化フィルタ４画素＋強調フィルタ５画素）の無効な画素が上下左右の入力ブロックＢＬｉ２境界に発生するため、１４画素幅分大きなサイズの入力ブロックＢＬｉ２を予めフィルタ処理部１６に入力する必要がある。また、入力される入力ブロックＢＬｉ２に対して無効な画素の割合が大きくなると読み出しのオーバーヘッドが増えるため、フィルタ処理部１６が有するラインバッファＬＢｆはオーバーヘッドが少なくなるように、かつ、大きくなりすぎないように決める必要がある。本実施の形態においては、縦横の出力サイズが同じ場合にオーバーヘッドが１０％程度となるよう、フィルタ処理部１６のラインバッファＬＢｆの幅を２８４（有効出力幅は２５６）と定めた場合を仮定して以後の説明を行う。オーバーヘッドとは、無効となる画素分だけ余分に読み出しが必要になる画素数であり、この場合のオーバーヘッドは２８４×２８４−２５６×２５６により求められる。
【００２６】
ブロック書き出し部１８は、前段のフィルタ処理部１６で処理された画像を図８に示す書き出しブロックＢＬｗ単位でメモリ２０に書き出す。ここでの各書き出しブロックＢＬｗの入力順番は、上述したように、左上の書き出しブロックＢＬｗからラスタースキャン順に入力され、書き出しブロックＢＬｗ内の画素入力についてもラスタースキャン順に入力される。出力の原稿領域外（出力画像ＩＭＧｏ外）の画素が入力ブロックに含まれる場合には、ブロック書き出し部１８は、原稿領域外の画素以外の画像のみメモリ２０に書き出す（すなわち図８中のクロスハッチングされた原稿領域内の画素のみメモリ２０に書き込む）ようにしながら、全ブロックをメモリ２０に書き込むことにより、原稿全体の画像を得る。
【００２７】
［１−２．ブロック及びバッファのサイズの計算方法］
次に、スキューブロック読み出し部１２の読み出しブロックＢＬｒのサイズや各読み出しブロックＢＬｒの始点座標の決定方法、ブロック傾き修正部１４の出力ブロックＢＬｏ１のサイズや各出力ブロックＢＬｏ１の出力始点座標Ｃｏｓに対応する座標、具備するバッファＢｆに必要なサイズの計算方法について説明する。
【００２８】
図９及び図１０は、スキューブロック読み出し部１２で最初に読み出すブロックである読み出し開始ブロックの詳細を説明するものである。図９は、フィルタ処理部１６がない場合の読み出しブロックＢＬｒを説明するもので、図１０は、フィルタ処理部１６がある場合の読み出しブロックＢＬｒを説明するものである。本実施の形態では、フィルタ処理部１６がある構成を実施の形態としているが、説明を明確にするために、先にフィルタ処理部１６がない構成について図９（Ａ）及び図９（Ｂ）を用いて説明する。
【００２９】
図９中に実線で示す枠が後段のブロック傾き修正部１４の出力に対応する領域である出力領域Ａｏであり、上述した通りこの出力領域Ａｏに外接する図９中に破線で示す矩形の枠を読み出しブロックＢＬｒとして設定し、スキューブロック読み出し部１２は読み出しを行う。読み出しブロックＢＬｒの始点座標であるブロック始点座標ＣＢＬｓ（ｘｔｏｐ及びｙｔｏｐ）は、ｖｙ１が負の場合（傾き０〜−４５度）（図９（Ａ））と、ｖｙ１が正の場合（傾き０〜４５度）（図９（Ｂ））とで、ブロック傾き修正部１４の出力始点対応座標Ｃｃｏｓ（図４）が接する読み出しブロックＢＬｒの辺が異なるため、スキューブロック読み出し部１２はそれぞれ、原稿始点座標ＣＡＰｓ（ｘｏｒｇ及びｙｏｒｇ）、後段のブロック傾き修正部１４の出力ブロックサイズ（ｏｕｔｂｗ及びｏｕｔｂｈ）、移動量に関連する値（ｖｘ１、ｖｙ１、ｖｘ２、ｖｙ２、ｘｖｂａｓｅ及びｙｖｂａｓｅ）を用いて下式（３）で計算して決定する。
【００３０】
式（３）
ｖｙ１が負の場合：
ｘｔｏｐ＝ｘｏｒｇ
ｙｔｏｐ＝ｙｏｒｇ＋ｖｙ１×（ｏｕｔｂｗ−１）／ｙｖｂａｓｅ
ｖｙ１が正の場合：
ｘｔｏｐ＝ｘｏｒｇ＋ｖｘ２×（ｏｕｔｂｈ−１）／ｘｖｂａｓｅ
ｙｔｏｐ＝ｙｏｒｇ
【００３１】
次にフィルタ処理部１６がある本実施の形態の構成について図１０（Ａ）及び図１０（Ｂ）を用いて説明する。先のフィルタ処理部１６がない構成同様、図１０中に実線で示す枠が後段のブロック傾き修正部１４の出力に対応する領域で出力領域Ａｏであり、上述した通りこの出力領域Ａｏに外接する図１０中に破線で示す矩形の枠を読み出しブロックＢＬｒとして設定し、スキューブロック読み出し部１２は読み出しを行う。ここで、ブロック傾き修正部１４の出力領域Ａｏは、フィルタ処理部１６の処理で生じる無効画素分大きなサイズとなっており、最終的に有効な出力となる領域である出力有効領域Ａｏｖは図１０中に一点鎖線で示す枠の領域となり、原稿始点座標ＣＡＰｓはこの出力有効領域Ａｏｖの左上に存在する。したがって、スキューブロック読み出し部１２は、読み出しブロックＢＬｒの始点座標を、原稿始点座標ＣＡＰｓから無効画素分ずれた位置から読み出す必要があり、原稿始点座標ＣＡＰｓ（ｘｏｒｇ及びｙｏｒｇ）、後段のブロック傾き修正部１４の出力ブロックサイズ（ｏｕｔｂｗ及びｏｕｔｂｈ）、移動量に関連する値（ｖｘ１、ｖｙ１、ｖｘ２、ｖｙ２、ｘｖｂａｓｅ及びｙｖｂａｓｅ）に加え、フィルタ処理部１６の処理においてブロックの左端と上端で発生する無効画素の幅（ｏｂｎｗ及びｏｂｎｈ）を用いて下式（４）で計算して決定する。
【００３２】
式（４）
ｖｙ１が負の場合：
ｘｔｏｐ＝ｘｏｒｇ＋（−ｏｂｎｗ×ｖｘ１−ｏｂｎｈ×ｖｘ２）／ｘｖｂａｓｅ
ｙｔｏｐ＝ｙｏｒｇ＋（−ｏｂｎｗ×ｖｙ１−ｏｂｎｈ×ｖｙ２＋ｖｙ１×（ｏｕｔｂｗ−１））／ｙｖｂａｓｅ
ｖｙ１が正の場合：
ｘｔｏｐ＝ｘｏｒｇ＋（−ｏｂｎｗ×ｖｘ１−ｏｂｎｈ×ｖｘ２＋ｖｘ２×（ｏｕｔｂｈ−１））／ｘｖｂａｓｅ
ｙｔｏｐ＝ｙｏｒｇ＋（−ｏｂｎｗ×ｖｙ１−ｏｂｎｈ×ｖｙ２）／ｙｖｂａｓｅ
【００３３】
スキューブロック読み出し部１２は、上式で算出したＸ座標及びＹ座標の整数値に対応する座標を最初の読み出しブロックＢＬｒの始点座標（例えば、−１．４であれば−２、２．５であれば２）として使用する。
【００３４】
読み出しブロックＢＬｒのサイズ（ｉｎｂｗ及びｉｎｂｈ）は、下式（５）で計算することで決定できる。
【００３５】
式（５）
ｖｙ１が負の場合：
ｉｎｂｗ＝（ｖｘ１×ｏｕｔｂｗ＋ｖｘ２×ｏｕｔｂｈ）／ｘｖｂａｓｅ＋α
ｉｎｂｈ＝（−ｖｙ１×ｏｕｔｂｗ＋ｖｙ２×ｏｕｔｂｈ）／ｙｖｂａｓｅ＋α
ｖｙ１が正の場合：
ｉｎｂｗ＝（ｖｘ１×ｏｕｔｂｗ−ｖｘ２×ｏｕｔｂｈ）／ｘｖｂａｓｅ＋α
ｉｎｂｈ＝（ｖｙ１×ｏｕｔｂｗ＋ｖｙ２×ｏｕｔｂｈ）／ｙｖｂａｓｅ＋α
【００３６】
上式のαは、後段のブロック傾き修正部１４で行う処理での補間演算（入力４画素で出力画素を補間して生成）や、開始座標の量子化による影響で必要となる画素入力に対応するためのマージンで、必要となる画素数以上の値（おおよそ２以上の値）を使えばよい。
【００３７】
また、スキューブロック読み出し部１２は、次ブロックの始点座標である次ブロック始点座標ＣＢＬｎｓについて、図１１で示すように、右方向への移動については左に隣接する読み出しブロックＢＬｒの始点座標を出力有効領域Ａｏｖの幅（ｓｔｒｉｄｅｗ）分ずらした位置を、下方向への移動については上に隣接する読み出しブロックＢＬｒの始点座標を出力有効領域Ａｏｖの高さ（ｓｔｒｉｄｅｈ）分ずらした位置を求めることで決定でき、左に隣接する読み出しブロックＢＬｒの始点座標を左ブロック始点座標ＣＢＬｌｓ（ｌｅｆｔ＿ｘｔｏｐ及びｌｅｆｔ＿ｙｔｏｐ）、上に隣接する読み出しブロックＢＬｒの始点座標を上ブロック始点座標ＣＢＬｕｓ（ｕｐ＿ｘｔｏｐ及びｕｐ＿ｙｔｏｐ）として下式（６）で計算する。
【００３８】
式（６）
（右へのブロック移動）
ｘｔｏｐ＝ｌｅｆｔ＿ｘｔｏｐ＋ｓｔｒｉｄｅｗ×ｖｘ１／ｘｖｂａｓｅ
ｙｔｏｐ＝ｌｅｆｔ＿ｙｔｏｐ＋ｓｔｒｉｄｅｗ×ｖｙ１／ｙｖｂａｓｅ
（下へのブロック移動）
ｘｔｏｐ＝ｕｐ＿ｘｔｏｐ＋ｓｔｒｉｄｅｈ×ｖｘ２／ｘｖｂａｓｅ
ｙｔｏｐ＝ｕｐ＿ｙｔｏｐ＋ｓｔｒｉｄｅｈ×ｖｙ２／ｙｖｂａｓｅ
【００３９】
なお、ブロック傾き修正部１４の出力ブロックＢＬｏ１のサイズや各出力ブロックＢＬｏ１の出力始点に対応する座標である出力始点対応座標Ｃｃｏｓ、具備するバッファＢｆに必要なサイズは、出力ブロックＢＬｏ１のサイズは上式のｏｕｔｂｗ及びｏｕｔｂｈとなり、各入力ブロックＢＬｉ１の出力始点対応座標Ｃｃｏｓは、図９及び図１０に実線枠で示したブロック傾き修正部１４の出力に対応する出力領域Ａｏの左上の座標（ｘｓｔａｒｔ及びｙｓｔａｒｔ）となり、具備するバッファＢｆに必要なサイズは出力に対応する出力領域Ａｏの上辺のＹ座標値の差分値と入力ブロックＢＬｉ１の幅（ｉｎｂｗ）より求まり、下式（７）で計算される。
【００４０】
式（７）
バッファサイズ＝（ａｂｓ［ｖｙ１×ｏｕｔｂｗ／ｙｖｂａｓｅ］＋β）×ｉｎｂｗ
ｖｙ１が負の場合：
ｘｓｔａｒｔ＝０
ｙｓｔａｒｔ＝−ｆｌｏｏｒ［（ｙｃｎｔ００＋ｖｙ１×（ｏｕｔｂｗ−１））／ｙｖｂａｓｅ］
ｖｙ１が正の場合：
ｘｓｔａｒｔ＝−ｆｌｏｏｒ［（ｘｃｎｔ００＋ｖｘ２×（ｏｕｔｂｈ−１））／ｘｖｂａｓｅ］
ｙｓｔａｒｔ＝０
ここで、ａｂｓ［］は［］内の絶対値を表す
【００４１】
上式のβは、補間演算（入力４画素で出力画素を補間して生成）や、開始座標の量子化による影響で必要となる画素入力に対応するためのマージンでおおよそ２以上の値を使えば良い。また、ｆｌｏｏｒ［］は整数値にするための床関数（例えば、ｆｌｏｏｒ［−１．４］＝−２、ｆｌｏｏｒ［２．５］＝２）で、ｘｃｎｔ００、ｙｃｎｔ００は各入力ブロックＢＬｉ１の出力始点対応座標ＣｃｏｓのＸ方向、Ｙ方向の座標の小数値に対応する値である。最初の読み出しブロックＢＬｒのｘｃｎｔ００及びｙｃｎｔ００は下式で計算できる。
ｘｃｎｔ００＝（−ｏｂｎｗ×ｖｘ１−ｏｂｎｈ×ｖｘ２）％ｘｖｂａｓｅ
ｙｃｎｔ００＝（−ｏｂｎｗ×ｖｙ１−ｏｂｎｈ×ｖｙ２）％ｙｖｂａｓｅ
（「％」は剰余演算を表す）
また、次ブロック（右へのブロック移動）、次段ブロック（下へのブロック移動）のｘｃｎｔ００及びｙｃｎｔ００は左に隣接する読み出しブロックＢＬｒのｘｃｎｔ００、ｙｃｎｔ００をｌｅｆｔ＿ｘｃｎｔ００、ｌｅｆｔ＿ｙｃｎｔ００、上に隣接する読み出しブロックＢＬｒのｘｃｎｔ００、ｙｃｎｔ００をｕｐ＿ｘｃｎｔ００、ｕｐ＿ｙｃｎｔ００として下式で求めることができる。
（右へのブロック移動）
ｘｃｎｔ００＝
（ｌｅｆｔ＿ｘｃｎｔ００＋（ｓｔｒｉｄｅｗ×ｖｘ１）％ｘｖｂａｓｅ）％ｘｖｂａｓｅ
ｙｃｎｔ００＝
（ｌｅｆｔ＿ｙｃｎｔ００＋（ｓｔｒｉｄｅｗ×ｖｙ１）％ｙｖｂａｓｅ）％ｙｖｂａｓｅ
（下へのブロック移動）
ｘｃｎｔ００＝
（ｕｐ＿ｘｃｎｔ００＋（ｓｔｒｉｄｅｈ×ｖｘ２）％ｘｖｂａｓｅ）％ｘｖｂａｓｅ
ｙｃｎｔ００＝
（ｕｐ＿ｙｃｎｔ００＋（ｓｔｒｉｄｅｈ×ｖｙ２）％ｙｖｂａｓｅ）％ｙｖｂａｓｅ
【００４２】
以上により、スキューブロック読み出し部１２の読み出しブロックＢＬｒのサイズや各読み出しブロックＢＬｒの始点座標の決定方法、ブロック傾き修正部１４の出力ブロックＢＬｏ１のサイズや各入力ブロックＢＬｉ１の出力始点対応座標Ｃｃｏｓ、具備するバッファＢｆに必要なサイズを求めることができる。
【００４３】
［１−３．ブロック傾き修正処理手順］
また、ブロック傾き修正部１４で行う画素生成についてのより詳細な説明について、上式で決定した値をもとに、図１２、図１３及び図１４に示すフローチャートにしたがって説明する。
【００４４】
まずブロック傾き修正部１４は、ｘｃｎｔ００及びｙｃｎｔ００より、各入力ブロックＢＬｉ１の出力に対応する始点座標の整数値（ｘｓｔａｒｔ及びｙｓｔａｒｔ）を求めてライン先頭の座標値管理パラメータのｘｃｎｔ＿ｌｔｏｐ、ｙｃｎｔ＿ｌｔｏｐ、ｘｐｏｓ＿ｌｔｏｐ及びｙｐｏｓ＿ｌｔｏｐを設定し、Ｙ方向の出力ライン数カウンタ（ｙｏｃｎｔ）を０に設定する（ＳＰ１）。
【００４５】
次にブロック傾き修正部１４は、現座標値管理パラメータｘｃｎｔ、ｙｃｎｔ、ｘｐｏｓ及びｙｐｏｓを設定し、Ｘ方向の出力画素数カウンタ（ｘｏｃｎｔ）を０に設定する（ＳＰ２）。
【００４６】
次にブロック傾き修正部１４は、現座標値管理パラメータｘｐｏｓ及びｙｐｏｓに対応する画素をバッファＢｆより読み出し、出力画素を生成して対応する１画素を出力する（ＳＰ３）。ブロック傾き修正部１４は、入力４画素で出力画素を補間して生成する場合には、例えば、下式を用いて計算する。
出力画素値＝
（
（ｐ［ｘｐｏｓ、ｙｐｏｓ］×（ｘｖｂａｓｅ−ｘｃｎｔ）＋
ｐ［ｘｐｏｓ＋１、ｙｐｏｓ］×ｘｃｎｔ）／ｘｖｂａｓｅ×（ｙｖｂａｓｅ−ｙｃｎｔ）
＋（ｐ［ｘｐｏｓ、ｙｐｏｓ＋１］×（ｘｖｂａｓｅ−ｘｃｎｔ）＋
ｐ［ｘｐｏｓ＋１、ｙｐｏｓ＋１］×ｘｃｎｔ）／ｘｖｂａｓｅ×ｙｃｎｔ）／ｙｖｂａｓｅ
上式のｐ［］はｘｐｏｓ、ｙｐｏｓに対応する画素値である。
【００４７】
次にブロック傾き修正部１４は、Ｘ方向の出力画素数カウンタ（ｘｏｃｎｔ）に１を加算し、ｘｃｎｔ及びｙｃｎｔにそれぞれｖｘ１及びｖｙ１を加算する。ｖｘ１加算後のｘｃｎｔがｘｖｂａｓｅ以上の場合は、ｘｃｎｔからｘｖｂａｓｅを減算するとともにｘｐｏｓに１を加算する。一方ブロック傾き修正部１４は、ｖｘ１加算後のｘｃｎｔがｘｖｂａｓｅ未満でかつｘｃｎｔが０より小さい場合は、ｘｃｎｔにｘｖｂａｓｅを加算するとともにｘｐｏｓから１を減算する。ｙｃｎｔについてもブロック傾き修正部１４は同様に行う。これにより、次画素（現画素の右隣りの画素）の座標が計算される（ＳＰ４）。
【００４８】
次にブロック傾き修正部１４は、ｘｏｃｎｔがｏｕｔｂｗと一致するか判定し、一致しない場合はＳＰ３からの処理を行う（ＳＰ５）。
【００４９】
ＳＰ５の判断にてｘｏｃｎｔがｏｕｔｂｗと一致した場合は出力に対応する１ラインの出力が完了したことになるため、ブロック傾き修正部１４は、Ｙ方向の出力ライン数カウンタ（ｙｏｃｎｔ）に１を加算し、次ラインの先頭座標の計算を行う（ＳＰ６）。
【００５０】
次にブロック傾き修正部１４は、ｙｏｃｎｔがｏｕｔｂｈと一致するか判定し、一致しない場合はＳＰ２から処理を行い、この判定が一致するまで処理を繰り返す（ＳＰ７）。
【００５１】
ブロック傾き修正部１４は、以上を該ブロック傾き修正部１４に入力される各入力ブロックＢＬｉ１に対して行うことにより、原稿全体のブロックの出力処理を行う。
【００５２】
［１−４．メモリアクセス量及びバッファサイズについて］
次に画像形成装置１０における、メモリ２０のメモリアクセス量と、ブロック傾き修正部１４で用意すべきバッファサイズについて説明する。
【００５３】
対比のため従来の画像形成装置２１０を図１５に示すように、従来の画像形成装置２１０は、原稿の傾き修正を行う原稿傾き修正処理部５０と、フィルタ処理を行う原稿フィルタ処理部５２とがメモリ２０（中間メモリ）を介して連結されて処理を行う構成であるため、原稿傾き修正処理部５０の入出力のための画像読み出しと書き出しと、原稿フィルタ処理部５２の入出力のための画像読み出しと書き出しとがそれぞれ必要である。このため従来の画像形成装置２１０は、第１の実施の形態による画像形成装置１０（図１）と比べて、原稿傾き修正処理部５０から画像をメモリ２０に書き出すブロック書き出し部５４と、メモリ２０から原稿フィルタ処理部５２に画像を読み出すブロック読み出し部５６とが追加されたような構成となっている。これに対し画像形成装置１０は、上述したようにブロック傾き修正部１４とフィルタ処理部１６とがメモリ２０を介さず連結して処理可能な構成であるため、スキューブロック読み出し部１２での画像読み出し時と、ブロック書き出し部１８での画像書き出し時にのみ、メモリ２０に対するメモリアクセスが発生する。これにより画像形成装置１０は、画像形成装置２１０よりもメモリ２０への読み出し書き出しの回数が少なくなる分、メモリアクセス量が少なくなるとともに、中間メモリも不要となる。
【００５４】
図１６に示す表及びグラフは、本実施の形態と従来例とにおけるメモリ２０に対する画像の読み込みと書き込みに関わるメモリアクセス量を、補正する原稿の傾き毎に概算したものである。
【００５５】
このメモリアクセス量の概算は、Ｘ方向の解像度が６００、Ｙ方向の解像度が６００で各画素が８ｂｉｔ（１Ｂｙｔｅ）の３ＣＨ（例えば、ＲＧＢの３ＣＨデータ）の入力画像を処理し、幅４９９２、高さ６４００でＸ方向の解像度が６００、Ｙ方向の解像度が６００で各画素が１ｂｉｔの４ＣＨ（例えば、ＣＭＹＫの４ＣＨデータ）の出力画像を得る場合を仮定して行ったものである。また、フィルタ処理部１６へ入力する画像の解像度については、Ｘ方向の解像度が６００、Ｙ方向の解像度が６００を仮定し、上述したようにフィルタ処理部１６へ入力可能なブロック画像の幅は最大で２８４を仮定し概算を行っている。
【００５６】
表（ａ）は、ブロック傾き修正部１４が具備するバッファＢｆのサイズを１９３６Ｋｂｉｔと仮定して傾き毎のメモリアクセス量を概算したもので、バッファサイズは入力する原稿の傾き４５度までの処理でブロック傾き修正部１４の出力ブロックの幅（表のｏｕｔｂｗ）が、フィルタ処理部１６への入力可能な最大幅（２８４）になるように決定した構成での概算である。メモリアクセス量の概算は、入力する原稿の傾きが０度、３度、７度、１５度、３０度、４５度それぞれで１３２．２４、１４４．８４、１６０．８０、１９０．４７、２３２．８２、２４８．７２ＭＢｙｔｅである。従来例の表に示すように従来例のメモリアクセス量の概算は、入力する原稿の傾きが０度、３度、７度、１５度、３０度、４５度それぞれで３１６．９５、３２７．２３、３４０．０１、３６４．１４、３９９．２７、４１５.３４ＭＢｙｔｅであるため、本実施の形態の構成で処理を行った場合には従来例よりもメモリアクセス量が大幅に少なくなることが分かる。なお０度時はスキュー補正の必要はないが、０度近辺の傾きの代表値として記載を行っている。
【００５７】
また、表（ｂ）及び表（ｃ）は、ブロック傾き修正部１４の具備するバッファＢｆのサイズをそれぞれ９６０Ｋｂｉｔ、４８０Ｋｂｉｔと仮定して傾き毎のメモリアクセス量を概算したもので、バッファＢｆのサイズは、表（ｂ）については入力する原稿の傾き１５度までの処理でブロック傾き修正部１４の出力ブロックの幅（表のｏｕｔｂｗ）が、フィルタ処理部１６への入力可能な最大幅（２８４）になるように決定し、表（ｃ）については入力する原稿の傾き７度までの処理でブロック傾き修正部１４の出力ブロックの幅（表のｏｕｔｂｗ）が、フィルタ処理部１６への入力可能な最大幅（２８４）になるように決定した構成での概算である。表（ａ）の構成でのメモリアクセス量に対して、表（ｂ）及び表（ｃ）では入力する原稿の傾きが大きくなるとメモリアクセス量が増えるが、その代わり、ブロック傾き修正部１４の具備するバッファＢｆのサイズは表（ａ）の構成でのバッファサイズに対して約１／２、１／４と小さくでき、バッファＢｆにかかるハードウェアコストを削減できる。複写機や複合機等の装置の入力原稿のスキューの補正が目的であれば、傾きの大きい原稿の補正が行われる頻度は少ないと考えられるため、表（ｂ）及び表（ｃ）の構成のように、傾きが小さい場合の処理に最適化することでバッファサイズを削減する方が良いと考えられる。図１６の下側のグラフは、メモリアクセス量の概算をグラフ化したものであるが、この図１６のグラフを見ても、従来例に対してメモリアクセス量が十分に少なくなっていることが分かる。また、表の本実施の形態の傾き０度のメモリアクセス量は、傾き補正（スキュー補正）を行わずフィルタ処理のみを行う場合のメモリアクセス量と同じである。従来例でのメモリアクセス量は、スキュー補正を行わずフィルタ処理のみを行う場合のメモリアクセス量に対して大幅にメモリアクセス量が増えるのに対し、本実施の形態ではメモリアクセス量の増加が抑えられることが分かる。
【００５８】
［１−５．効果等］
以上の構成において画像形成装置１０は、スキュー補正後の画像をメモリ２０に書き込んだ後に該画像をメモリ２０から読み出してフィルタ処理を行うのではなく、補正する傾きに応じてメモリ２０上の入力画像ＩＭＧｉから読み出しブロックＢＬｒ単位に画像を読み出して読み出しブロックＢＬｒ単位毎に画像の傾きを修正し、傾きが修正された画像をブロック単位の画像に対してフィルタ処理を行った後に、フィルタ処理が行われた画像をメモリ２０に書き込むようにした。これにより画像形成装置１０は、スキュー補正とフィルタ処理との間でメモリアクセスを発生させないようにできるため、スキュー補正を行わずフィルタ処理のみを行う場合よりも処理が遅くなることを抑えることができる。
【００５９】
また従来のような、メモリに書き込まれたスキュー補正後の画像に対してフィルタ処理を行う処理構成の場合は、スキュー補正とフィルタ処理との間で中間メモリが必要となるため、スキュー補正を行わずフィルタ処理のみを行う場合よりも必要なメモリが増えてしまった。これに対し画像形成装置１０は、スキュー補正とフィルタ処理との間の中間メモリが不要であるため、スキュー補正とフィルタ処理との両方の処理を行った場合でも処理にかかるメモリを少なくできる。
【００６０】
またブロック傾き修正部１４は、所定のサイズのバッファＢｆを有し、該バッファＢｆを用いて傾きの補正を行い、その際、補正する傾きが大きくなると処理可能な画像のサイズが小さくなり、補正する傾きが小さくなると処理可能な画像のサイズが大きくなるように構成されているとともに、スキューブロック読み出し部１２は、ブロック傾き修正部１４で処理可能なサイズで、読み出しブロックＢＬｒ単位の画像を読み出すようにした。すなわち画像形成装置１０は、ブロック傾き修正部１４で用いられるバッファＢｆのサイズに合わせて（すなわち上回らないように）、入力ブロックＢＬｉ１のサイズを設定するようにした。
【００６１】
さらにフィルタ処理部１６は、１ページ分の幅より小さい幅の画像の処理に対応するラインバッファＬＢｆを有するとともに、スキューブロック読み出し部１２は、ブロック傾き修正部１４で処理可能であり、かつフィルタ処理部１６で処理可能なサイズで、読み出しブロックＢＬｒ単位の画像を読み出すようにした。すなわち画像形成装置１０は、ブロック傾き修正部１４よりも処理負荷が大きいフィルタ処理部１６で用いられるラインバッファＬＢｆのサイズに合わせて（すなわち上回らないように）、ブロック傾き修正部１４で用いられるバッファＢｆのサイズを設定するようにした。
【００６２】
以上の構成によれば画像形成装置１０は、入力画像ＩＭＧｉが記憶されているメモリ２０から補正する傾きに応じて始点座標を変えながら１ページのサイズよりも小さい読み出しブロックＢＬｒ単位に画像をバッファＢｆに順次読み出すスキューブロック読み出し部１２と、スキューブロック読み出し部１２で順次読み出された読み出しブロックＢＬｒ単位の画像各々の傾きを修正し、傾きが修正された画像をバッファＢｆにブロック単位に出力ブロックＢＬｏ１として出力するブロック傾き修正部１４と、ブロック傾き修正部１４が出力する出力ブロックＢＬｏ１単位の画像に対して周辺の画素参照が必要なフィルタ処理を行うフィルタ処理部１６と、フィルタ処理部１６で処理された画像をメモリ２０に順次書き込むブロック書き出し部１８とを設けるようにした。これにより画像形成装置１０は、スキュー補正処理とフィルタ処理との間でメモリアクセスを発生させないようにできるため、スキュー補正処理を行わずフィルタ処理のみを行う場合よりも処理が遅くなることを抑えることができる。
【００６３】
［２．第２の実施の形態］
［２−１．画像形成装置の構成］
図１と対応する部材に同一符号を付した図１７に示すように、第２の実施の形態による画像形成装置１１０は、制御部１１１、スキューブロック読み出し部１２、ブロック傾き修正部１４、フィルタ処理部１６、ブロック書き出し部１８、メモリ２０、第２のブロック書き出し部４０、ブロック読み出し部４２、デマルチプレクサ４４及びマルチプレクサ４６により構成される。
【００６４】
第２の実施の形態による画像形成装置１１０は、第１の実施の形態による画像形成装置１０と比べて、制御部１１１が制御部１１と異なっているとともに、第２のブロック書き出し部４０、ブロック読み出し部４２、デマルチプレクサ４４及びマルチプレクサ４６が追加されているものの、それ以外は同様に構成されている。制御部１１１は、後述する第１の処理構成又は第２の処理構成の何れかを、メモリ２０に記憶された、図１９に示す表に基づき選択する（後述する）。第１の処理構成が選択された場合、デマルチプレクサ４４及びマルチプレクサ４６は、図１８（Ａ）に破線で示すように、ブロック傾き修正部１４の出力をフィルタ処理部１６の入力に連結するように動作する。一方第２の処理構成が選択された場合、デマルチプレクサ４４及びマルチプレクサ４６は、図１８（Ｂ）に破線で示すように、ブロック傾き修正部１４の出力を第２のブロック書き出し部４０の入力に連結し、ブロック読み出し部４２の出力をフィルタ処理部１６の入力に連結するように動作する。
【００６５】
第１の処理構成が選択された場合は、第１の実施の形態の構成及び動作と同様であり、画像形成装置１１０は、メモリ２０に書き込まれた入力画像ＩＭＧｉをスキューブロック読み出し部１２で読み出しブロックＢＬｒ単位に順次読み出し、読み出しブロックＢＬｒ単位に読み出された画像を後段のブロック傾き修正部１４とフィルタ処理部１６とで処理を行い、処理後の出力ブロックＢＬｏ２単位の画像をブロック書き出し部１８でメモリ２０に順次書き出す。
【００６６】
第２の処理構成が選択された場合は、従来例の構成及び動作と同様であり、画像形成装置１１０は、最初に、メモリ２０に書き込まれた入力画像ＩＭＧｉをスキューブロック読み出し部１２でブロック単位に順次読み出し、ブロック単位に読み出された画像を後段のブロック傾き修正部１４で処理を行い、処理後のブロック単位の画像を第２のブロック書き出し部４０でメモリ２０に順次書き出し、次に、メモリ２０に書き込まれた画像をブロック読み出し部４２でブロック単位に順次読み出し、ブロック単位に読み出された画像を後段のフィルタ処理部１６で処理を行い、処理後のブロック単位の画像をブロック書き出し部１８でメモリ２０に順次書き出す。
【００６７】
［２−２．処理構成選択処理］
次に第１の処理構成と第２の処理構成との選択について説明する。図１９に示す表及びグラフは、第１の処理構成選択時と第２の処理構成選択時とのそれぞれにおいて、メモリ２０に対する画像の読み込みと書き込みに関わるメモリアクセス量を、補正する原稿の傾き毎に概算したものである。
【００６８】
このメモリアクセス量の概算は、Ｘ方向の解像度が６００、Ｙ方向の解像度が６００で各画素が８ｂｉｔ（１Ｂｙｔｅ）の３ＣＨ（例えば、ＲＧＢの３ＣＨデータ）の入力画像ＩＭＧｉを処理し、幅２４９６、高さ３２００でＸ方向の解像度が３００、Ｙ方向の解像度が３００で各画素が８ｂｉｔの３ＣＨ（例えば、ＲＧＢの３ＣＨデータ）の出力画像ＩＭＧｏを得る場合を仮定して行ったものである。また、フィルタ処理部１６へ入力する画像の解像度については、Ｘ方向の解像度が３００、Ｙ方向の解像度が３００を仮定し、ブロック傾き修正部１４の具備するバッファＢｆのサイズは４８０Ｋｂｉｔを仮定して概算を行ったものである。
【００６９】
表（ａ）は、第１の処理構成選択時のメモリアクセス量の概算で、入力する原稿の傾きが０度、３度、７度、１５度、３０度、４５度それぞれで１４３．６９、１５６．３０、１９０．５６、２５７．２３、４１９．１２、５５１．５７ＭＢｙｔｅである。表（ｂ）は、第２の処理構成選択時のメモリアクセス量の概算で、入力する原稿の傾きが０度、３度、７度、１５度、３０度、４５度それぞれで１７０．０４、１８９．９１、２００．４４、２１７．７５、２５５．８２、２６５．２２ＭＢｙｔｅである。図１９の下側のグラフは、メモリアクセス量の概算をグラフ化したものであるが、グラフを見てわかる通り、表（ａ）の第１の処理構成時のメモリアクセス量と表（ｂ）の処理構成時のメモリアクセス量は傾き１５度あたりを境にして大小が逆転している。また、表（ａ）の第１の処理構成時のメモリアクセス量は傾き１５度から傾きが大きくなるにしたがい急激に大きくなっていることが分かる。表（ａ）の第１の処理構成は第１の実施の形態と同様の処理であり、表（ｂ）の第２の処理構成は従来例と同様の処理であり、第１の実施の形態の構成で処理を行った場合、傾き１５度を超えた辺りで従来例よりもメモリアクセス量が増えることになる。
【００７０】
制御部１１１は、メモリ２０に記憶された図１９に示した表に基づき、入力する原稿の傾き等に応じて、第１の処理構成又は第２の処理構成の何れかのうち、メモリアクセス量が少ない方を選択する。このように画像形成装置１１０は、第１の処理構成と第２の処理構成の何れかを選択して処理できるため、例えば、図１９で概算した処理ケースでは、傾き１５度未満の処理については第１の処理構成を選択して処理を行い、傾き１５度を超える処理については第２の処理構成を選択して処理を行うことで、従来例よりもメモリアクセス量が増えるといった問題を解消することが可能となる。
【００７１】
［２−３．効果等］
第１の実施の形態による画像形成装置１０は、スキューブロック読み出し部１２とブロック傾き修正部１４とフィルタ処理部１６とブロック書き出し部１８とをメモリ２０を介さず連結させて処理を行うことで、従来のようにブロック傾き修正部１４とフィルタ処理部１６とをメモリ２０を介して連結させて処理を行う場合に比べてメモリアクセス量を減らしていた。しかしながら、スキューブロック読み出し部１２とブロック傾き修正部１４とフィルタ処理部１６とブロック書き出し部１８とをメモリ２０を介さず連結させて処理を行った場合に、入力画像ＩＭＧｉの解像度とフィルタ処理部１６への入力解像度の組み合わせやブロック傾き修正部１４に具備するバッファＢｆのサイズや補正する傾きによっては、メモリアクセス量が従来よりも増える場合があった。
【００７２】
これに対し第２の実施の形態による画像形成装置１１０は、第１の処理構成と第２の処理構成とのうち、入力する原稿の傾き等に応じて、メモリアクセス量が少なくなる処理構成を選択して処理を行うことにより、スキュー補正処理とフィルタ処理にかかるメモリアクセスを抑えることができる。
【００７３】
［３．他の実施の形態］
なお上述した実施の形態においては、フィルタ処理部１６を像域分離フィルタ３０、平滑化フィルタ３２及び強調フィルタ３４により構成する場合について述べた。本発明はこれに限らず、フィルタ処理部１６を、ＲＧＢデータからＣＭＹＫデータへの色変換処理等を行う色変換処理、Ｎ値化処理、背景検出処理、白紙検出処理、原稿カラー判定処理等、複写機や複合機等で必要な他の処理を含んだ構成にしても良い。特にＣＭＹＫデータへの色変換処理とＮ値化処理とについては、複写機や複合機等で紙等の記録媒体上にトナー等によるドットパターン形成を行うために必須の処理であり、ドットパターンへの変換により変換前の画素データ量が減る場合（例えば、１画素８ｂｉｔのデータを１ｂｉｔのデータに変換）は、最終的にメモリに書き込むデータ量を減らすことができるため、色変換処理及びＮ値化処理を含んだ構成とすることが望ましい。
【００７４】
また上述した実施の形態においては、ｘｓｔａｒｔ及びｙｓｔａｒｔ（図９及び図１０）を各読み出しブロックＢＬｒで各々算出することにより各読み出しブロックＢＬｒのｘｃｎｔ００及びｙｃｎｔ００を設定する場合について述べた。本発明はこれに限らず、最初に入力される読み出しブロックＢＬｒについてのｘｃｎｔ００及びｙｃｎｔ００のみを最初に算出して設定し、以降の読み出しブロックＢＬｒのｘｃｎｔ００及びｙｃｎｔ００については、図２０に示すＳＰ８及びＳＰ９をＳＰ５（図１３）の前とＳＰ７（図１４）の前とにそれぞれ追加することにより、右に位置する次ブロックと下段先頭の次段ブロックとのｘｃｎｔ００及びｙｃｎｔ００を求めて利用しても良い。その場合、読み出しブロックＢＬｒ毎に毎回ｘｓｔａｒｔ及びｙｓｔａｒｔからｘｃｎｔ００及びｙｃｎｔ００を算出しなくて済み、処理を簡略化できる。
【００７５】
さらに上述した第２の実施の形態においては、メモリ２０に記憶された図１９に示した表に基づき、入力する原稿の傾きに応じて、第１の処理構成又は第２の処理構成の何れのうち、メモリアクセス量が少ない方を選択する場合について述べた。本発明はこれに限らず、ユーザが第１の処理構成又は第２の処理構成の何れかを適宜選択しても良い。
【００７６】
さらに上述した実施の形態においては、複写機や複合機等の画像形成装置に本発明を適用する場合について述べた。本発明はこれに限らず、例えばプリンタやＦＡＸ機等の種々の機器に本発明を適用しても良い。
【００７７】
さらに上述した第１の実施の形態においては、スキューブロック読み出し部としてのスキューブロック読み出し部１２と、ブロック傾き修正部としてのブロック傾き修正部１４と、フィルタ処理部としてのフィルタ処理部１６と、ブロック書き出し部としてのブロック書き出し部１８とによって、画像形成装置としての画像形成装置１０を構成する場合について述べた。本発明はこれに限らず、その他種々の構成でなるスキューブロック読み出し部と、ブロック傾き修正部と、フィルタ処理部と、ブロック書き出し部とによって、画像形成装置を構成しても良い。
【００７８】
さらに上述した第２の実施の形態においては、スキューブロック読み出し部としてのスキューブロック読み出し部１２と、ブロック傾き修正部としてのブロック傾き修正部１４と、フィルタ処理部としてのフィルタ処理部１６と、ブロック書き出し部としてのブロック書き出し部１８と、第２のブロック書き出し部としての第２のブロック書き出し部４０と、ブロック読み出し部としてのブロック読み出し部４２と、制御部としての制御部１１１とによって、画像形成装置としての画像形成装置１１０を構成する場合について述べた。本発明はこれに限らず、その他種々の構成でなるスキューブロック読み出し部と、ブロック傾き修正部と、フィルタ処理部と、ブロック書き出し部と、第２のブロック書き出し部と、ブロック読み出し部と、制御部とによって、画像形成装置を構成しても良い。
【産業上の利用可能性】
【００７９】
本発明は、イメージスキャナやファクシミリ装置等、画像に関する種々の処理を行う種々の電子機器でも利用できる。
【符号の説明】
【００８０】
１０、１１０、２１０……画像形成装置、１１、１１１……制御部、１２……スキューブロック読み出し部、１４……ブロック傾き修正部、１６……フィルタ処理部、１８……ブロック書き出し部、２０……メモリ、３０……像域分離フィルタ、３２……平滑化フィルタ、３４……強調フィルタ、４０……第２のブロック書き出し部、４２……ブロック読み出し部、４４……デマルチプレクサ、４６……マルチプレクサ、５０……原稿傾き修正処理部、５２……原稿フィルタ処理部、５４……ブロック書き出し部、５６……ブロック読み出し部、ＩＭＧｉ……入力画像、ＩＭＧｏ……出力画像、ＢＬｒ……読み出しブロック、ＢＬｗ……書き出しブロック、ＢＬｉ１……入力ブロック、ＢＬｏ１……出力ブロック、ＢＬｉ２……入力ブロック、ＢＬｏ２……出力ブロック、ＡＰ……原稿領域、Ａｏ……出力領域、Ａｏｖ……出力有効領域、Ｂｆ……バッファ、ＬＢｆ……ラインバッファ、ＣＡＰｓ……原稿始点座標、ＣＢＬｓ……ブロック始点座標、Ｃｏｓ……出力始点座標、Ｃｃｏｓ……出力始点対応座標、Ｃｉ……入力対応座標、Ｃｏ……出力対応座標、Ｐｐ……現画素、Ｐｎ……次画素、Ｐｐｌ……現ライン画素、Ｐｎｌ……次ライン画素。
【図１】
2017134659.tif 000003
【図２】
2017134659.tif 000004
【図３】
2017134659.tif 000005
【図４】
2017134659.tif 000006
【図５】
2017134659.tif 000007
【図６】
2017134659.tif 000008
【図７】
2017134659.tif 000009
【図８】
2017134659.tif 000010
【図９】
2017134659.tif 000011
【図１０】
2017134659.tif 000012
【図１１】
2017134659.tif 000013
【図１２】
2017134659.tif 000014
【図１３】
2017134659.tif 000015
【図１４】
2017134659.tif 000016
【図１５】
2017134659.tif 000017
【図１６】
2017134659.tif 000018
【図１７】
2017134659.tif 000019
【図１８】
2017134659.tif 000020
【図１９】
2017134659.tif 000021
【図２０】
2017134659.tif 000022