(57)【要約】【課題】  効率的に画像のサイズ変更を行う画像処理装置を提供する。【解決手段】  本発明は、入力画像を所定倍率でサイズ変更する画像処理装置に関する。そして、画像処理装置は、入力画像から、複数のブロック画像を抽出して、順次読み出す手段と、ブロック画像読み出し手段が読み出したブロック画像のそれぞれについて、所定の倍率でサイズ変更処理を行う手段と、サイズ変更が行われたブロック画像に基づいて、入力画像を所定の倍率でサイズ変更処理したサイズ変更画像を生成する手段とを有することを特徴とする。【選択図】      図１
2014131262.tif 000002
【特許請求の範囲】
【請求項１】
入力画像から、複数のブロック画像を抽出して、順次読み出すブロック画像読み出し手段と、
前記ブロック画像読み出し手段が読み出したブロック画像のそれぞれについて、所定の倍率でサイズ変更処理を行うサイズ変更手段と、
前記サイズ変更手段でサイズ変更が行われたブロック画像に基づいて、前記入力画像を前記所定の倍率でサイズ変更処理したサイズ変更画像を生成するサイズ変更画像生成手段と
を有することを特徴とする画像処理装置。
【請求項２】
前記サイズ変更手段は、ブロック画像を構成するラインごとに、サイズ変更処理を行い、
前記サイズ変更手段は、サイズ変更処理前のブロック画像のラインを構成する画素の位置と、サイズ変更処理後のブロック画像のラインを構成する画素の位置との位置関係を管理するサイズ変更カウンタを用いて、ラインごとのサイズ変更処理を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記サイズ変更手段は、ブロック画像ごとに前記サイズ変更カウンタの初期値を求め、各ブロックを構成するラインについてサイズ変更処理を行う場合、各ラインの先頭の処理時に前記サイズ変更カウンタの値を、当該ブロックに係る初期値にリセットすることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
当該画像処理装置で処理される各ブロック画像のサイズを管理するものであって、前記サイズ変更手段による変換処理後のブロック画像のサイズが、前記サイズ変更手段の処理上限を超えない範囲となるように、前記ブロック画像読み出し手段が読み出すブロック画像のサイズを決定するブロック管理手段をさらに備えることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記ブロック画像読み出し手段が読み出すブロック画像のそれぞれには、当該ブロック画像と隣接するブロック画像と間で重複する領域が存在し、
前記サイズ変更画像生成手段は、サイズ変更処理後の各ブロック画像について無効部分の出力を除外する処理を行うことを特徴とする請求項２〜４のいずれかに記載の画像処理装置。
【請求項６】
前記ブロック画像読み出し手段に供給される入力画像について、前記ブロック画像読み出し手段の処理前に、前フィルタ処理を行う前フィルタ処理手段と、
前記サイズ変更画像生成手段が生成したサイズ変更画像について、後フィルタ処理を行う後フィルタ処理手段と
をさらに有することを特徴とする請求項１〜５のいずれかに記載の画像処理装置。
【請求項７】
前記ブロック画像読み出し手段により読み出されたブロック画像について、フィルタ処理対象の領域の周辺画素の参照が必要な前フィルタ処理を行う前フィルタ処理手段と、
前記サイズ変更手段がサイズ変更処理を行ったブロック画像のそれぞれについて、フィルタ処理対象の領域の周辺画素の参照が必要な後フィルタ処理を行う後フィルタ処理手段と
有することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項８】
前記ブロック画像読み出し手段が読み出すブロック画像のそれぞれには、当該ブロック画像と隣接するブロック画像との間で重複する領域が存在し、
前記サイズ変更画像生成手段は、サイズ変更処理後の各ブロック画像について、隣接するブロック画像と重複する第１の無効領域の出力を除外する処理を行い、
前記後フィルタ処理手段の処理後のブロック画像について、隣接するブロック画像と重複する第２の無効領域の出力を除外するブロックカット手段をさらに備える
ことを特徴とする請求項７に記載の画像処理装置。
【請求項９】
当該画像処理装置で処理される各ブロック画像のサイズを管理するものであって、前記前フィルタ処理手段に供給されるブロック画像のサイズ、前記サイズ変更手段による変換処理後のブロック画像のサイズ、前記後フィルタ処理手段に供給されるブロック画像のサイズ、及び前記ブロックカット手段に供給されるブロック画像のサイズが、それぞれの処理に係る処理上限を超えない範囲となるように、前記ブロック画像読み出し手段が読み出すブロック画像のサイズを決定するブロック管理手段をさらに備えることを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記サイズ変更手段よりも前段、及び又は、前記サイズ変更手段よりも後段で、ブロック画像の解像度変換を行う解像度変換手段をさらに有することを特徴とする請求項１に記載の画像処理装置。
【請求項１１】
前記サイズ変更画像生成手段に供給されるブロック画像に対して、量子化処理を行う量子化処理部をさらに備えることを特徴とする請求項１０に記載の画像処理装置。
【請求項１２】
前記サイズ変更手段よりも後段で、ブロック画像のサイズを再度変更するサイズ再変更処理を行うサイズ再変更手段と、
前記サイズ再変更手段でサイズ再変更処理が施されたブロック画像に基づいて、前記サイズ変更画像と異なるサイズのサイズ再変更画像を生成するサイズ再変更画像生成手段と
をさらに備えることを特徴とする請求項１０又は１１に記載の画像処理装置。
【請求項１３】
前記サイズ再変更手段は、ブロック画像の縮小処理を行うことを特徴とする請求項１２に記載の画像処理装置。
【請求項１４】
画像処理装置が行う画像処理方法において、
ブロック画像読み出し手段、サイズ変更手段、サイズ変更画像生成手段を備え、
前記ブロック画像読み出し手段は、入力画像から、複数のブロック画像を抽出して、順次読み出し、
前記サイズ変更手段は、前記ブロック画像読み出し手段が読み出したブロック画像のそれぞれについて、所定の倍率でサイズ変更処理を行い、
前記サイズ変更画像生成手段は、前記サイズ変更手段でサイズ変更が行われたブロック画像に基づいて、前記入力画像を前記所定の倍率でサイズ変更処理したサイズ変更画像を生成する
ことを特徴とする画像処理方法。
【請求項１５】
入力画像を処理する画像処理装置と、前記画像処理装置が処理した画像を媒体に形成する画像形成手段とを備える画像形成装置において、
前記画像処理装置は、
入力画像から、複数のブロック画像を抽出して、順次読み出すブロック画像読み出し手段と、
前記ブロック画像読み出し手段が読み出したブロック画像のそれぞれについて、所定の倍率でサイズ変更処理を行うサイズ変更手段と、
前記サイズ変更手段でサイズ変更が行われたブロック画像に基づいて、前記入力画像を前記所定の倍率でサイズ変更処理したサイズ変更画像を生成するサイズ変更画像生成手段とを有する
ことを特徴とする画像形成装置。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び方法、並びに、画像形成装置に関し、例えば、複写機やプリンタ等の画像処理装置に適用し得る。
【背景技術】
【０００２】
従来の複写機やプリンタなどの画像処理装置（画像形成装置）では、ユーザ指定の倍率への拡大・縮小処理や、入力された画像を指定範囲に収めるために拡大・縮小処理が行われる場合がある。例えば、複写機の場合には、ユーザ指定により２５％〜４００％までの任意の倍率で拡大・縮小が行われるものが存在する。
【０００３】
従来の画像の拡大・縮小処理方法としては、例えば、単純拡大法（単純縮小法）、補間拡大・縮小法（ｂｉ−ｌｉｎｅａｒ）法、平均縮小法、Ｃｕｂｉｃ  ｃｏｎｖｏｌｕｔｉｏｎ法などが知られている。これらの画像の拡大・縮小方法は、いずれも隣接画素を使用した補間方式が採用されている。そして、従来の画像処理装置では、この補間方式の違いが拡大・縮小処理後の画像データの画質を決定することになる。
【０００４】
例えば、特許文献１では、ｂｉ−ｌｉｎｅａｒ法による画像の拡大をハードウェアで実現した画像処理装置について記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６１−２２７４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の装置を実現するには、画像幅分のラインメモリを用意する必要があり、処理する画像のサイズが大きくなるにつれ、ハードウェアのコストも高くなるという問題があった。
【０００７】
そのため、効率的に画像のサイズ変更（拡大及び又は縮小）を行うことができる画像処理装置及び方法、並びに、画像形成装置が望まれている。
【課題を解決するための手段】
【０００８】
第１の本発明の画像処理装置は、（１）入力画像から、複数のブロック画像を抽出して、順次読み出すブロック画像読み出し手段と、（２）前記ブロック画像読み出し手段が読み出したブロック画像のそれぞれについて、所定の倍率でサイズ変更処理を行うサイズ変更手段と、（３）前記サイズ変更手段でサイズ変更が行われたブロック画像に基づいて、前記入力画像を前記所定の倍率でサイズ変更処理したサイズ変更画像を生成するサイズ変更画像生成手段とを有することを特徴とする。
【０００９】
第２の本発明は、画像処理装置が行う画像処理方法において、（１）ブロック画像読み出し手段、サイズ変更手段、サイズ変更画像生成手段を備え、（２）前記ブロック画像読み出し手段は、入力画像から、複数のブロック画像を抽出して、順次読み出し、（３）前記サイズ変更手段は、前記ブロック画像読み出し手段が読み出したブロック画像のそれぞれについて、所定の倍率でサイズ変更処理を行い、（４）前記サイズ変更画像生成手段は、前記サイズ変更手段でサイズ変更が行われたブロック画像に基づいて、前記入力画像を前記所定の倍率でサイズ変更処理したサイズ変更画像を生成することを特徴とする。
【００１０】
第３の本発明は、入力画像を処理する画像処理装置と、前記画像処理装置が処理した画像を媒体に形成する画像形成手段とを備える画像形成装置において、（１）前記画像処理装置は、（１−１）入力画像から、複数のブロック画像を抽出して、順次読み出すブロック画像読み出し手段と、（１−２）前記ブロック画像読み出し手段が読み出したブロック画像のそれぞれについて、所定の倍率でサイズ変更処理を行うサイズ変更手段と、（１−３）前記サイズ変更手段でサイズ変更が行われたブロック画像に基づいて、前記入力画像を前記所定の倍率でサイズ変更処理したサイズ変更画像を生成するサイズ変更画像生成手段とを有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、効率的に画像のサイズ変更を行うことができる画像処理装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態に係る画像処理装置を搭載した画像形成装置の機能的構成について示したブロック図である。
【図２】第１の実施形態に係るブロック読み出し部の処理について示した説明図（その１）である。
【図３】第１の実施形態に係る画像形成装置の処理について示したフローチャートである。
【図４】第１の実施形態に係る拡大・縮小部のパラメータ算出処理について示したフローチャートである。
【図５】第１の実施形態に係るブロック読み出し部の処理について示した説明図（その２）である。
【図６】第１の実施形態に係るブロック拡大・縮小部の処理の例について示した説明図である。
【図７】第１の実施形態に係るブロック書き出し部の処理について示した説明図である。
【図８】第１の実施形態に係るブロック拡大・縮小部が１ライン分の拡大・縮小処理を行う際の処理について示したフローチャートである。
【図９】第２の実施形態に係る画像処理装置を搭載した画像形成装置の機能的構成について示したブロック図である。
【図１０】第２の実施形態に係る画像形成装置の処理について示したフローチャートである。
【図１１】第２の実施形態に係る画像形成装置の各ブロック画像処理部の処理制限について示した説明図である。
【図１２】第２の実施形態に係るブロック拡大・縮小部で算出される各ブロック画像のサイズ算出について示したフローチャートである。
【図１３】第２の実施形態に係るブロック拡大・縮小部が算出した各ブロック画像のサイズの具体例について示した説明図である。
【図１４】第２の実施形態に係るブロック読み出し部の処理について示した説明図である。
【図１５】第２の実施形態に係るブロック拡大・縮小部の処理の例について示した説明図である。
【図１６】第２の実施形態に係るブロック書き出し部の処理について示した説明図である。
【図１７】第３の実施形態に係る画像処理装置を搭載した画像形成装置の機能的構成について示したブロック図である。
【図１８】第３の実施形態に係るＸ方向拡大・縮小部１２１Ｂの動作の例について示した説明図である。
【図１９】第３の実施形態に係る画像形成装置１Ｂの全体の動作について示したフローチャートである。
【図２０】第３の実施形態に係る拡大・縮小処理部１００Ｂの各部位に必要なパラメータの算出方法の全体処理について図２０のフローチャートを用いて説明する。
【図２１】第３の実施形態に係る画像形成装置の各ブロック画像処理部の処理制限について示した説明図である。
【図２２】第３の実施形態に係るブロック拡大・縮小部が算出した各ブロック画像のサイズの具体例について示した説明図である。
【図２３】第３の実施形態に係るブロック読み出し部の動作について示した説明図である。
【図２４】第３の実施形態に係る前解像度変換部で１つのブロック画像に対して実行される処理について示した説明図である。
【図２５】第３の実施形態に係るブロック拡大・縮小部で実行される画像ブロックに対する拡大処理の例について示した説明図である。
【図２６】第３の実施形態に係る後フィルタ処理部、後解像度変換部、及びブロックカット処理部によるブロック画像の処理について示した説明図である。
【図２７】第４実施形態に係る画像形成装置の機能的構成を示すブロック図である。
【図２８】第４の実施形態に係るサムネイル画像出力部のディスプレイに表示される画像データに基づく画像について示した説明図である。
【図２９】第４の実施形態に係るサムネイル縮小部で行われるＸ方向とＹ方向の縮小処理の詳細について示したフローチャートである。
【発明を実施するための形態】
【００１３】
（Ａ）第１の実施形態
以下、本発明による画像処理装置及び方法、並びに、画像形成装置の第１の実施形態を、図面を参照しながら詳述する。
【００１４】
（Ａ−１）第１の実施形態の構成
図１（ａ）は、第１の実施形態の画像形成装置１の機能的構成について示したブロック図である。図１（ｂ）は、第１の実施形態の画像形成装置１を構成するブロック拡大・縮小部１２０の機能的構成について示したブロック図である。
【００１５】
画像形成装置１は、画像入力部１０、前フィルタ処理部２０、拡大・縮小処理部１００、後フィルタ処理部３０、画像出力部５０、及び画像メモリ６０を有している。
【００１６】
なお、画像形成装置１では、画像入力部１０及び画像出力部５０を除いた構成要素（前フィルタ処理部２０、拡大・縮小処理部１００、後フィルタ処理部３０及び画像メモリ６０）によりこの実施形態の画像処理装置を構成することができる。また、画像形成装置１では、少なくとも、拡大・縮小処理部１００については、ハードウェア（例えば、ＡＳＩＣ等の集積回路）により構成されているものとする。
【００１７】
画像入力部１０は、当該画像形成装置１で処理する画像の入力を受付ける機能を担っている。画像入力部１０が、入力画像を保持する方法については限定されないものであるが、例えば、スキャナやホストＰＣ等の外部装置から、ネットワークや各種インタフェース（例えば、ＵＳＢ等）を介して入力される画像を取得するようにしてもよい。そして、画像入力部１０は取得した画像のデータを画像メモリ６０に格納する。図１では、画像入力部１０が入力を受付けた画像を画像Ｇ１０１と図示している。
【００１８】
前フィルタ処理手段としての前フィルタ処理部２０は、画像Ｇ１０１に対して、拡大・縮小処理部１００の処理前に行われるフィルタ処理を行うものである。前フィルタ処理部２０は、画像メモリ６０に格納された画像Ｇ１０１のデータに対して、フィルタ処理を行い、処理後の画像データを画像メモリ６０に書き込む。前フィルタ処理部２０は、例えば、ガウシアンフィルタや原稿のスクリーン箇所等を判定する判定処理で構成され、入力原稿と出力原稿のスクリーン干渉によるモアレ発生を抑えるためのフィルタ処理を行う。図１では、前フィルタ処理部２０が処理した後の画像を画像Ｇ１０２と図示している。
【００１９】
拡大・縮小処理部１００は、前フィルタ処理部２０で処理された画像Ｇ１０２について、拡大又は縮小の処理（サイズ変更処理）を行うものであり、ブロック読み出し部１１０、ブロック拡大・縮小部１２０、及びブロック書き出し部１３０を有している。図１では、拡大・縮小処理部１００が処理した後の画像を画像Ｇ１０３として図示している。
【００２０】
拡大・縮小処理部１００が行う拡大・縮小に係る倍率（以下、「設定倍率」と呼ぶ）は、例えば、ユーザの操作により決定するようにしてもよいし、外部装置（例えば、スキャナやホストＰＣ等）からの指示に基づいて決定するようにしてもよい。
【００２１】
ブロック画像読み出し手段としてのブロック読み出し部１１０は、前フィルタ処理部２０で処理され、画像メモリ６０に書き込まれた１ページの画像Ｇ１０２のデータを、水平（幅）方向（以下、「Ｘ方向」とも呼ぶ）および垂直（縦）方向（以下、「Ｙ方向」とも呼ぶ）に複数に分割したブロック画像として順次読み出し、ブロック拡大・縮小部１２０に供給する。
【００２２】
図２は、ブロック読み出し部１１０で行われる画像のブロック単位の分割について示した説明図である。
【００２３】
図２で示すように、ブロック読み出し部１１０では、１ページの画像Ｇ１０２について、Ｘ方向にＮ個、Ｙ方向にＭ個に分割されたブロック画像がＭ×Ｎ個生成される。ブロック読み出し部１１０は、各ブロック画像を読み出す際に、左上の画素より順番にＸ方向にライン走査され順次読み出すものとする。具体的には、ブロック読み出し部１１０は、図２に示す左上のブロック画像（０、０）から（０、１）、・・・（０、Ｎ）、（１、０）、・・・（Ｍ、Ｎ）の順に読み出されるものとする。ブロック読み出し部１１０は、ブロック単位で画像の読み出しを行う際には、Ｘ方向の読み出し位置と、Ｙ方向の読み出し位置を逐次変更して行う。
【００２４】
上述の通り、拡大・縮小処理部１００では、画像Ｇ１０２をブロック画像単位で拡大・縮小の処理を行うが、単純に図２に示すように画像Ｇ１０２を分割して、拡大・縮小の処理を行うと、各ブロック画像の境界周辺の画質が劣化する（１ページ分の画像単位で処理した場合と異なる画素値となる）恐れがある。そのため、この実施形態のブロック読み出し部１１０は、拡大・縮小の処理を行う対象のブロック画像（図２に示すブロック画像）の周辺の画素も含めた画像を読み出すものとする。すなわち、拡大・縮小処理部１００は、各画像ブロック画像について、隣接ブロックと重複部分を持つように読み出すものとする。ブロック読み出し部１１０の各ブロック画像の読み出し処理の具体例については、後述する動作説明で詳述する。
【００２５】
サイズ変更手段及びブロック管理手段としてのブロック拡大・縮小部１２０は、ブロック読み出し部１１０で読み出された各ブロック画像に対して任意倍率の拡大・縮小処理（サイズ変更処理）を行う。ブロック拡大・縮小部１２０は、Ｘ方向の拡大・縮小を行うＸ方向拡大・縮小部１２１とＹ方向の拡大・縮小を行うＹ方向拡大・縮小部１２２で構成され、入力されたブロック画像に対して最初にＸ方向の拡大・縮小を行い、次にＹ方向の拡大・縮小を行うものとする。
【００２６】
Ｘ方向拡大・縮小部１２１は、Ｘ方向拡大・縮小カウンタ１２１ａと、Ｘ方向出力カウンタ１２１ｂを備えている。
【００２７】
Ｘ方向拡大・縮小部１２１は、入力ブロック画像を構成するＸ方向の任意の１ラインについて、出力ブロック画像のラインに変換する際に、Ｘ方向出力カウンタ１２１ｂを用いて、出力ブロック画像側の処理中の画素を管理する。そして、Ｘ方向拡大・縮小部１２１は、Ｘ方向拡大・縮小カウンタ１２１ａを用いて、Ｘ方向出力カウンタ１２１ｂで示される画素と、入力ブロック画像に係るライン上の画素との相対的な位置関係を管理する。
【００２８】
Ｘ方向拡大・縮小部１２１のＸ方向拡大・縮小カウンタ１２１ａの値は、ライン先頭（ブロック画像のライン先頭）で、ブロック画像毎にあらかじめ決定されたカウンタ初期値に設定される。そして、Ｘ方向拡大・縮小部１２１は、入力ブロック画像のラインを、Ｘ方向拡大・縮小カウンタ１２１ａにしたがって拡大・縮小し、出力するライン（出力ブロック画像側のライン）の画素数をＸ方向出力カウンタ１２１ｂでカウントする。そして、Ｘ方向拡大・縮小部１２１は、Ｘ方向出力カウンタ１２１ｂによりあらかじめ決定された所定の値の範囲内の画素のみを出力することで、入力されたブロック画像をＸ方向に拡大・縮小する。そしてＸ方向拡大・縮小部１２１は、Ｘ方向に拡大・縮小処理されたブロック画像をＹ方向拡大・縮小部１２２に入力する。
【００２９】
Ｙ方向拡大・縮小部１２２は、Ｘ方向拡大・縮小部１２１と同様、Ｙ方向拡大・縮小カウンタ１２２ａと、Ｙ方向出力カウンタ１２２ｂを備えている。
【００３０】
Ｙ方向拡大・縮小部１２２のＹ方向拡大・縮小カウンタ１２２ａの値は、ライン先頭（ブロック画像のライン先頭）で、ブロック画像毎にあらかじめ決定されたカウンタ初期値に設定される。そして、Ｙ方向拡大・縮小部１２２は、入力ブロック画像のラインを、Ｙ方向拡大・縮小カウンタ１２２ａにしたがって拡大・縮小し、出力する画素数（出力ブロック画像側のライン数）を、Ｙ方向出力カウンタ１２２ｂでカウントする。そして、Ｙ方向拡大・縮小部１２２は、Ｙ方向出力カウンタ１２２ｂによりあらかじめ決定された所定の値の範囲内の画素（ライン）のみを出力することで、入力されたブロック画像をＹ方向に拡大・縮小し、出力ブロック画像としてブロック書き出し部１３０へ供給する。
【００３１】
なお、Ｙ方向拡大・縮小部１２２は、単純縮小以外の拡大・縮小方法（例えば、補間拡大・縮小法）により、拡大・縮小処理を行う場合には、１ブロック画像分のメモリ（ラインメモリ）を複数備える必要がある。
【００３２】
サイズ変更画像生成手段としてのブロック書き出し部１３０は、ブロック拡大・縮小部１２０で拡大・縮小が行われたブロック画像を画像メモリ６０（画像Ｇ１０３の領域）に順次書き込む。ブロック書き出し部１３０へ入力されるブロック画像は、前段の処理（ブロック拡大・縮小部１２０の処理）により、ブロック間で重複する画素がカットされる。
【００３３】
また、各ブロックの幅と高さは一定となっているので、ブロック書き出し部１２０は、Ｘ方向とＹ方向に一定の間隔でブロック画像を画像メモリ６０に書き出すことで１ページ分の画像Ｇ１０３のデータを作成する。
【００３４】
後フィルタ処理手段としての後フィルタ処理部３０は、拡大・縮小処理部１００の処理後に行われるフィルタ処理を行うものであり、画像メモリ６０から拡大・縮小部１０によって入力された画像Ｇ１０３のデータを読み出してフィルタ処理を行い、処理後の画像のデータを画像メモリ６０に書き込む。後フィルタ処理部３０は、例えば、色変換処理やエッジ強調処理等で構成され、画像データをＣＭＹＫの４色に変換し、原稿中の文字等をくっきりだすためにエッジ強調を行うなどのフィルタ処理を行う。図１では、後フィルタ処理部３０が処理した後の画像をＧ１０４として図示している。
【００３５】
画像出力部５０は、後フィルタ処理部３０が生成した画像Ｇ１０４のデータを画像メモリ６０より読み出して出力する機能を担っている。画像出力部５０による出力手段は限定されないものであり、例えば、画像Ｇ１０４を、電子写真式の画像形成部（印刷部）により記録媒体（印刷用紙等）に印刷出力（画像形成）するようにしてもよい。
【００３６】
なお、この実施形態では、説明を簡易にするため、画像形成装置１で処理される各画像（Ｇ１０１〜Ｇ１０４）を構成する各画素の画素値は１つの成分（例えば、明度）で示される画像であるものとして説明するが、画像形成装置１で処理される各画像の成分の数は限定されないものである。例えば、画像形成装置１で処理される各画像を、Ｒ、Ｇ、Ｂの３つの成分で示される場合、３つの成分画像についてそれぞれ拡大・縮小処理等を行い、画像出力部５０で３つの成分画像に基づいた出力を行うようにしてもよい。
【００３７】
（Ａ−２）第１の実施形態の動作
次に、以上のような構成を有する第１の実施形態の画像形成装置１の動作（実施形態の画像処理方法）を説明する。
【００３８】
（Ａ−２−１）画像形成装置１全体の動作の概要
図３は、画像形成装置１の全体の動作について示したフローチャートである。
【００３９】
まず、画像形成装置１では、画像入力部１０に画像データが入力されて、画像メモリ６０に、画像Ｇ１０１として書き込まれたものとする。そして、拡大・縮小処理部１００に設定倍率がセットされたものとする（Ｓ１０１）。
【００４０】
ここでは、画像Ｇ１０１は、幅７６８０画素、高さ５１２０画素の画像であるものとする。またここでは、拡大・縮小処理部１００に設定倍率として１３３％（１３３／１００で拡大）が設定された場合と、４１％（４１／１００で縮小）が設定された場合とで、場合分けして説明する。
【００４１】
次に、前フィルタ処理部２０により画像Ｇ１０１に対して前フィルタ処理が実行され、画像メモリ６０に処理後の画像Ｇ１０２が書き込まれる（Ｓ１０２）。なお、前フィルタ処理部２０の処理では画像サイズの変化はないものとする（すなわち、画像Ｇ１０２のサイズは、画像Ｇ１０１と同じであるものとする）。
【００４２】
そして、拡大・縮小処理部１００（ブロック拡大・縮小部１２０）により、拡大・縮小処理を行う画像Ｇ１０２のサイズと、設定倍率に基づいて、拡大・縮小に係る各パラメータ算出等の準備が行われる（Ｓ１０３）。
【００４３】
そして、拡大・縮小処理部１００により、ブロック単位で、読み出し処理、拡大・縮小処理、及び書き出し処理が実行され、画像メモリ６０に処理後の画像Ｇ１０３が書き込まれる（Ｓ１０４）。
【００４４】
そして、後フィルタ処理部３０により、拡大・縮小処理後の画像Ｇ１０３について後フィルタ処理が実行され、画像メモリ６０に処理後の画像Ｇ１０４が書き込まれる（Ｓ１０５）。なお、後フィルタ処理部３０の処理では画像サイズの変化はないものとする（すなわち、画像Ｇ１０４のサイズは、画像Ｇ１０３と同じであるものとする）。
【００４５】
そして、画像出力部５０により、後フィルタ処理後の画像Ｇ１０４が出力されることになる（Ｓ１０６）。
【００４６】
（Ａ−２−２）拡大・縮小に係る各パラメータ算出（ステップＳ１０３）
次に、上述のステップＳ１０３において、ブロック拡大・縮小部１２０で行われるパラメータ算出処理の詳細について、図４のフローチャートを用いて説明する。
【００４７】
まず、ブロック拡大・縮小部１２０は、画像Ｇ１０２と設定倍率に基づいて、拡大・縮小処理後に出力する画像Ｇ１０３のサイズ（１ページの出力画像の幅と高さ）を算出する（Ｓ２０１）。具体的には、ブロック拡大・縮小部１２０は、以下の（１）、（２）式により、画像Ｇ１０３のサイズを算出することができる。
【００４８】
なお、以下の（１）、（２）式において、ＸＯは出力する画像Ｇ１０３の幅（Ｘ方向）の画素数である。また、ＸＩは、処理対象の画像Ｇ１０２の幅（Ｘ方向）の画素数である。さらにＹＯは出力する画像Ｇ１０３の高さ（Ｙ方向）の画素数である。さらにまた、ＹＩは、処理対象の画像Ｇ１０２の高さ（Ｙ方向）の画素数である。また、ｘｒａｔｉｏ、ｙｒａｔｉｏは、それぞれＸ方向、Ｙ方向に係る設定倍率の分子である。さらに、ｘｂａｓｅ、ｙｂａｓｅは、それぞれＸ方向、Ｙ方向の設定倍率の分母である。
【００４９】
ＸＯ＝（ＸＩ）×（ｘｒａｔｉｏ）／（ｘｂａｓｅ）…（１）
ＹＯ＝（ＹＩ）×（ｙｒａｔｉｏ）／（ｙｂａｓｅ）…（２）
なお、ブロック拡大・縮小部１２０は、上記の（１）、（２）式の計算を行う際に、小数点以下の値が発生する場合は小数点以下を切り捨てるものとする。なお、以下に記載の数式は特に断りなく小数点以下を切り捨てて演算を行うものとして説明する。
【００５０】
ここでの例では、上述の通り、入力する画像Ｇ１０２のサイズは、幅７６８０、高さ５１２０であり、設定倍率は１３３％である。したがって、出力する画像Ｇ１０３の幅ＸＯは、上記の（１）式により、７６８０×１３３／１００＝１０２１４となる。また、出力する画像Ｇ１０３の高さＹＯは、上記の（２）式により、５１２０×１３３／１００＝６８０９となる。また、設定倍率を４１％とした場合、出力する画像Ｇ１０３の幅ＸＯは７６８０×４１／１００＝３１４８、高さＹＯは、５１２０×４１／１００＝２０９９となる。
【００５１】
次に、ブロック拡大・縮小部１２０は、ブロック拡大・縮小部１２０に入力される入力ブロック画像のサイズと、ブロック拡大・縮小部１２０から出力される出力ブロック画像のサイズを算出する（Ｓ１０２）。言い換えると、第１の実施形態では、入力ブロック画像のサイズは、ブロック読み出し部１１０が画像Ｇ１０２から読み出すブロック画像のサイズとなる。また、第１の実施形態では、出力ブロック画像のサイズは、ブロック書き出し部１３０が画像Ｇ１０３に書き出すブロック画像のサイズとなる。
【００５２】
ブロック拡大・縮小部１２０が算出する、入力ブロック画像及び出力ブロック画像のサイズは、設定倍率と、拡大・縮小処理部１００を構成する各処理部で処理可能なブロック画像サイズの上限によって変動する。上述のブロック画像サイズ（ブロック画像の幅又は高さ）の上限は、例えば、ブロック拡大・縮小部１２０が備えるメモリ（例えば、ラインメモリ）等のリソースで保持可能な画素数が上限となる。例えば、ブロック拡大・縮小部１２０は、各画像ブロックについて、Ｘ方向及びＹ方向のライン単位で処理するため、ブロック拡大・縮小部１２０が備えるメモリに格納可能な画素数が、処理するブロック画像の幅及び高さの上限となる。そして、ここでは、ブロック拡大・縮小部１２０のラインメモリで保持可能な画素数は、２５６であるものとする。また、以下では、各ブロック画像の幅と高さは同一の画素数であるものとするが、各ブロック画像の幅と高さの比率は限定されないものである。
【００５３】
以上のように、ブロック拡大・縮小部１２０は、拡大・縮小処理部１００がブロック画像単位で処理する際の処理上限を超えないように、拡大・縮小処理部１００に入力するブロック画像のサイズを決定する。
【００５４】
以下では、ブロック拡大・縮小部１２０で処理する出力ブロック画像について、幅及び高さの上限をいずれも２５６画素とする。したがって、ブロック拡大・縮小部１２０では、入力ブロック画像について拡大処理をする場合、拡大処理後に幅及び高さが２５６を超えないように、入力ブロック画像のサイズを決定する必要がある。
【００５５】
具体的には、ブロック拡大・縮小部１２０は、例えば、以下のような処理により、適切な入力ブロック画像及び出力ブロック画像のサイズを決定することができる。
【００５６】
まず、ブロック拡大・縮小部１２０が出力するブロック画像サイズは上述の条件であれば幅２５６、高さ２５６となる。上述の幅、高さは、拡大・縮小部１２０のＸ方向出力カウンタ１２１ｂとＹ方向出力カウンタ１２２ｂのカウント上限の値として用いる。したがって、ブロック読み出し部１１０で読み出すブロック画像サイズは、以下の（３）、（４）式で決定することができる。
【００５７】
以下の（３）、（４）式において、ｉｎｂｗ、ｉｎｂｈはブロック拡大・縮小部１２０に入力されるブロック画像の幅、高さである。また、ｏｕｔｂｗ、ｏｕｔｂｈはブロック拡大・縮小部１２０が出力するブロック画像の幅、高さである。さらに、ｎｕｌｗＲ、ｎｕｌｈＤはブロック拡大・縮小部１２０での拡大・縮小時にブロック画像の右端と下端に発生する無効画素（隣接するブロック画像と重複する部分の領域）の幅、高さを表す。ブロック拡大・縮小部１２０が行う拡大・縮小に補間拡大・縮小法が用いられる場合、ｎｕｌｗＲ、ｎｕｌｈＤには、例えば、「１」を適用することができる。
【００５８】
ｉｎｂｗ＝（ｏｕｔｂｗ×ｘｂａｓｅ＋ｘｒａｔｉｏ−１）
／ｘｒａｔｉｏ＋ｎｕｌｗＲ  …（３）
ｉｎｂｈ＝（ｏｕｔｂｈ×ｙｂａｓｅ＋ｙｒａｔｉｏ−１）
／ｙｒａｔｉｏ＋ｎｕｌｈＤ  …（４）
ここでの例では、上述の通り、入力する画像Ｇ１０２のサイズは、幅７６８０、高さ５１２０であり、設定倍率は１３３％である。したがって、入力ブロック画像の幅及び高さは１９４となる。また、設定倍率を４１％とした場合、入力ブロック画像の幅及び高さは６２６となる。
【００５９】
次に、ブロック拡大・縮小部１２０は、ステップＳ２０２で算出した入力ブロック画像のサイズに基づいて、画像Ｇ１０２に対するブロック画像の分割数を算出する（Ｓ２０３）。
【００６０】
具体的には、ブロック拡大・縮小部１２０は、以下の（５）、（６）式により、画像Ｇ１０２に対するＸ方向およびＹ方向の分割数を算出することができる。
【００６１】
（Ｘ方向分割数）＝（ＸＯ−１）／（ｏｕｔｂｗ）＋１  …（５）
（Ｙ方向分割数）＝（ＹＯ−１）／（ｏｕｔｂｈ）＋１  …（６）
ここでの例では、上述の通り、入力する画像Ｇ１０２のサイズは、幅７６８０、高さ５１２０である。したがって、設定倍率が１３３％（１３３／１００）の場合、入力ブロック画像の幅及び高さは１９４であるため、Ｘ方向の分割数は４０、Ｙ方向の分割数は２７となる。また、設定倍率を４１％（４１／１００）とした場合、入力ブロック画像の幅及び高さは６２６であるため、Ｘ方向の分割数は１３、Ｙ方向の分割数は９となる。
【００６２】
そして、次に、ブロック拡大・縮小部１２０は、ブロック画像ごとに、Ｘ方向拡大・縮小カウンタ１２１ａ、及びＹ方向拡大・縮小カウンタ１２２ａの初期値と、ブロック読み出し部１１０が読み出す各ブロック画像のＸ方向とＹ方向の読み出し位置を算出する（Ｓ２０４）。Ｙ方向拡大・縮小カウンタ１２２ａの初期値、Ｙ方向拡大・縮小カウンタ１２２ａの初期値、Ｘ方向の読み出し位置、及びＹ方向の読み出し位置はそれぞれ以下の（７）〜（１４）式で算出することができる。
【００６３】
以下の（７）〜（１４）式において、ｘｎｏ、ｙｎｏは、それぞれＸ方向のブロック番号、Ｙ方向のブロック番号を表す。また、ｘｃｎｔ０［？］、ｙｃｎｔ０［？］は、それぞれ、Ｘ方向のブロック番号に対応するＸ方向拡大・縮小カウンタ１２１ａの初期値、Ｙ方向のブロック番号に対応するＹ方向拡大・縮小カウンタ１２２ａの初期値をあらわす。
【００６４】
なお、上述の「？」は任意のブロック番号を表すものである（以下同様）。さらに、ｘｐｏＳ０［？］、ｙｐｏＳ０［？］は、それぞれ、Ｘ方向のブロック番号に対応するＸ方向の読み出し位置、Ｙ方向のブロック番号に対応するＹ方向の読み出し位置をあらわす。さらにまた、ｏｕｔｂｗ、ｏｕｔｂｈは、上述のステップＳ２０２で算出した、出力ブロック画像の幅、高さである。また、以下の（７）〜（１４）式における「％」は剰余演算を表す演算子である。ブロック拡大・縮小部１２０は、以下の（７）〜（１４）式を用いて、Ｘ方向であれば左端のブロックから順番に、Ｙ方向であれば最上段のブロックから順番に拡大・縮小カウンタの初期値と読み出し位置を算出する。
【００６５】
[Ｘ方向の拡大・縮小カウンタの算出式]
ｘｃｎｔ０［０］＝０  …（７）
ｘｃｎｔ０［ｘｎｏ］＝
（ｏｕｔｂｗ×ｘｂａｓｅ＋ｘｃｎｔ０［ｘｎｏ−１］）％ｘｒａｔｉｏ…（８）[Ｙ方向の拡大・縮小カウンタの算出式]
ｙｃｎｔ０［０］＝０…（９）
ｙｃｎｔ０［ｙｎｏ］＝
（ｏｕｔｂｈ×ｙｂａｓｅ＋ｙｃｎｔ０［ｙｎｏ−１］）％ｙｒａｔｉｏ…（１０）
[Ｘ方向の読み出し位置]
ｘｐｏＳ０［０］＝０  …（１１）
ｘｐｏＳ０［ｘｎｏ］＝ｘｐｏＳ０［ｘｎｏ−１］
＋（ｏｕｔｂｗ×ｘｂａｓｅ＋ｘｃｎｔ０［ｘｎｏ−１］）／ｘｒａｔｉｏ…（１２）
[Ｙ方向の読み出し位置]
ｙｐｏｓ０［０］＝０  …（１３）
ｙｐｏｓ０［ｙｎｏ］＝ｙｐｏＳ０［ｙｎｏ−１］
＋（ｏｕｔｂｈ×ｙｂａｓｅ＋ｙｃｎｔ０［ｙｎｏ−１］）／ｙｒａｔｉｏ…（１４）
以上のように、ブロック拡大・縮小部１２０では、拡大・縮小に係る各パラメータが算出される。
【００６６】
（Ａ−２−３）ブロック読み出し部１１０による入力ブロック画像の読み出し処理
次に、上述のステップＳ１０４において、ブロック読み出し部１１０で行われる入力ブロックの読み出し処理の詳細について、図５を用いて説明する。
【００６７】
図５は、ブロック読み出し部１１０が、上述のステップＳ１０３で決定したパラメータに従って、拡大・縮小処理部１００に入力される画像Ｇ１０２を、入力ブロック単位で読み出す場合の処理について示した説明図である。なお、図５では、入力する画像Ｇ１０２のサイズは、幅７６８０、高さ５１２０、設定倍率が１３３％の場合について示している。
【００６８】
図５（ａ）で示されるように、ブロック読み出し部１１０で読み出される入力ブロック画像は、隣接する入力ブロック画像と、重複部分を持つように読み出される。図５（ａ）では、入力される画像Ｇ１０２の最も左の画素のＸ方向の位置を０、最も上の画素のＹ方向の位置を０として表している。そして、ブロック読み出し部１１０が分割する入力ブロック画像のＸ方向の読み出し開始位置についてはＸ方向のブロック番号０、１、２、３、４、・・・に対応して、０、１９２、３８４、５７７、７６９、・・・となる。また、ブロック読み出し部１１０が分割する入力ブロック画像のＹ方向の読み出し開始位置については、Ｙ方向のブロック番号０、１、・・・に対応して、０、１９２、・・・となる。例えば、Ｘ方向のブロック番号が２、Ｙ方向のブロック番号が１の入力ブロック画像であれば、Ｘ方向とＹ方向の読み出し位置は（３８４、１９２）になる。また、読み出される各入力ブロック画像のサイズは、全ての入力ブロック画像で共通である（図５（ｂ）の例では、幅１９４×高さ１９４）。そして、ブロック読み出し部１１０は、各入力ブロック画像について、各入力ブロック画像のＸ方向とＹ方向のブロック番号にしたがって、Ｘ方向とＹ方向の読み出し位置を変更しながら読み出し、読み出した入力ブロック画像をブロック拡大・縮小部１２０に供給する。
【００６９】
（Ａ−２−４）ブロック拡大・縮小部１２０による拡大・縮小処理
次に、上述のステップＳ１０４において、ブロック拡大・縮小部１２０で行われる各入力ブロック画像に対する拡大・縮小処理について説明する。
【００７０】
図６は、ブロック拡大・縮小部１２０で行われる各入力ブロック画像に対する拡大・縮小処理の例について示した説明図である。図６では、図５に示す入力ブロック画像（幅１９４×高さ１９４）について、設定倍率を１３３％とする拡大・縮小処理が行われ、出力ブロック画像（幅２５６×高さ２５６）に変換される場合の例について示している。
【００７１】
まず、ブロック拡大・縮小部１２０では、図６（ａ）に示す入力ブロック画像（幅１９４×高さ１９４）について、Ｘ方向拡大・縮小部１２１により、Ｘ方向に拡大されたブロック画像（ブロック画像サイズは幅２５６×高さ１９４）が生成される（図６（ｂ）参照）。
【００７２】
そして、ブロック拡大・縮小部１２０では、Ｘ方向について拡大処理されたブロック画像（図６（ｂ）に示す画像ブロック）について、Ｙ方向拡大・縮小部１２２により、Ｙ方向に拡大されたブロック画像（ブロック画像サイズは幅２５６×高さ２５６）が生成される（図６（ｃ）参照）。そして、ブロック拡大・縮小部１２０では、Ｙ方向拡大・縮小部１２２により処理されたブロック画像が、出力ブロック画像として、ブロック書き出し部１３０に供給される。
【００７３】
次に、Ｘ方向拡大・縮小部１２１の処理の詳細について説明する。
【００７４】
上述のＸ方向拡大・縮小部１２１による処理では、Ｘ方向拡大・縮小カウンタ１２１ａが、各ブロック画像のライン先頭で、当該ブロック画像に係るＸ方向のブロック番号に対応する拡大・縮小カウンタの初期値（ｘｃｎｔ０［ｘｎｏ］）に設定される。例えば、Ｘ方向のブロック番号が２であれば１２８に設定される。上述の拡大・縮小カウンタにしたがってライン毎に拡大処理が行われ、Ｘ方向出力カウンタ１２１ｂが所定の値（例では２５６）になるまで拡大して出力される。また、図６（ｄ）に示すように、Ｘ方向の拡大・縮小処理においては、ブロック画像右端に余分な画素（無効画素）がある場合は無視（除外）される。
【００７５】
次に、Ｙ方向拡大・縮小部１２２の処理の詳細について説明する。
【００７６】
上述のＹ方向拡大・縮小部１２２による処理では、Ｙ方向拡大・縮小カウンタ１２２ａが各ブロック画像の先頭ラインで、当該ブロック画像に係るＹ方向のブロック番号に対応する拡大・縮小カウンタの初期値（ｙｃｎｔ０［ｙｎｏ］）に設定される。例えば、Ｙ方向のブロック番号が１であれば６４に設定される。上述の拡大・縮小カウンタにしたがって、ライン毎に拡大処理が行われ、出力カウンタが所定の値（例では２５６）になるまで拡大して出力する。また、図６（ｅ）に示すように、Ｘ方向の拡大・縮小処理においては、ブロック下端に余分な画素（無効画素）がある場合は無視（除外）される。
【００７７】
そして、上述のＸ方向拡大・縮小部１２１による１ライン分の拡大・縮小処理は、具体的には、図８のようなフローチャートにより表すことができる。Ｙ方向拡大・縮小部１２２の処理についても、処理対象となるラインの方向が異なるだけで、Ｘ方向拡大・縮小部１２１とほぼ同様の処理を適用することができるため、フローチャートを用いた説明については省略する。
【００７８】
図８において、ｘｏｃｎｔはＸ方向出力カウンタ１２１ｂ、ｘｃｎｔはＸ方向拡大・縮小カウンタ１２１ａ、ｘｃｎｔ０は処理対象のブロック画像に係るＸ方向拡大・縮小カウンタ１２１ａの初期値を表すものとする。また、図８において、ｘｉｃｎｔは、参照する入力ブロック画像側のＸ方向のライン上の位置（画素）を管理するカウンタである。さらに、図８において、ｖｏ［ｘｏｃｎｔ］は、出力ブロック画像側のＸ方向のライン上で、ｘｏｃｎｔの位置の画素値（左端から数えてｘｏｃｎｔ番目の画素の画素値）を示している。
【００７９】
まず、Ｘ方向拡大・縮小部１２１は、入力ブロック画像からＸ方向の１ライン分の画素値を抽出したものとする。そして、Ｘ方向拡大・縮小部１２１は、各変数の初期化（ｘｏｃｎｔ＝０、ｘｃｎｔ＝ｘｃｎｔ０、ｘｉｃｎｔ＝０）を行う（Ｓ３０１）。
【００８０】
そして、Ｘ方向拡大・縮小部１２１は、ｘｃｎｔ（拡大・縮小カウンタの値）がｘｒａｔｉｏ（設定倍率の分子の値）より小さいか否かを判定する。Ｘ方向拡大・縮小部１２１は、ｘｃｎｔがｘｒａｔｉｏよりも小さい場合は、後述するステップＳ３０３の処理から動作し、そうでない場合には、後述するステップＳ３０５の処理から動作する。
【００８１】
上述のステップＳ３０２で、ｘｃｎｔがｘｒａｔｉｏよりも小さいと判定された場合は、Ｘ方向拡大・縮小部１２１は、出力画素の画素値ｖｏ［ｘｏｃｎｔ］を求めて、ｘｏｃｎｔをインクリメント（１加算）し、さらに、ｘｃｎｔにｘｂａｓｅを加算する処理を行う（Ｓ３０３）。
【００８２】
ここで、出力画素の画素値ｖｏ［ｘｏｃｎｔ］は、例えば、補間拡大・縮小法であれば、以下の（１５）式により求めることができる。なお、以下の（１５）式において、ｖｉ［ｘｉｃｎｔ］は、入力ブロック画像側のＸ方向のライン上で、ｘｉｃｎｔの位置の画素値（左端から数えてｘｉｃｎｔ番目の画素の画素値）を示している。また、ｖｉ［ｘｉｃｎｔ＋１］は、入力ブロック側のＸ方向のライン上で、ｘｉｃｎｔ＋１の位置の画素値（左端から数えてｘｉｃｎｔ＋１番目の画素の画素値）を示している。
【００８３】
ｖｏ［ｘｏｃｎｔ］＝
（（ｖｉ［ｘｉｃｎｔ］）×（ｘｒａｔｉｏ−ｘｃｎｔ）
＋（ｖｉ［ｘｉｃｎｔ＋１］）×（ｘｃｎｔ））／（ｘｂａｓｅ）…（１５）
そして、Ｘ方向拡大・縮小部１２１は、ｘｃｎｔの値がｘｒａｔｉｏ以上であるか否かを判定し、ｘｃｎｔの値がｘｒａｔｉｏ以上の場合のみ、ｘｃｎｔからｘｒａｔｉｏを減算する処理、及び、入力画素位置の更新処理（ｘｉｃｎｔのインクリメント）を行う（Ｓ３０５）。
【００８４】
そして、Ｘ方向拡大・縮小部１２１は、出力カウンタｘｏｃｎｔの値が、ｏｕｔｂｗ（１出力ブロック画像におけるＸ方向のラインの出力画素数）に達したか否かが判定される（Ｓ３０６）。Ｘ方向拡大・縮小部１２１は、ｘｏｃｎｔがｏｕｔｂｗに達している場合には、当該ラインに係る処理を終了し、ｘｏｃｎｔがｏｕｔｂｗに達していない場合には、上述のステップＳ３０２に戻って当該ラインに係る処理を継続する。
【００８５】
Ｘ方向拡大・縮小部１２１は、各ブロック画像に係るすべてのＸ方向のラインについて上述のフローチャートの処理を行って、入力ブロック画像についてＸ方向に拡大・縮小を行うことができる。
【００８６】
（Ａ−２−５）ブロック書き出し部１３０による書き出し処理
次に、上述のステップＳ１０４において、ブロック書き出し部１３０で行われるブロック画像の書き出し処理について説明する。
【００８７】
図７は、ブロック書き出し部１３０による画像メモリ６０へのブロック画像の書き出し動作について示した説明図である。
【００８８】
図７に示すように、ブロック書き出し部１３０に入力されたブロック画像はＸ方向とＹ方向に一定の間隔（Ｘ方向については２５６、Ｙ方向については２５６）で１ページ分の画像Ｇ１０３として、画像メモリ６０に書き込まれる。
【００８９】
（Ａ−３）第１の実施形態の効果
第１の実施形態によれば、以下のような効果を奏することができる。
【００９０】
画像形成装置１では、ページ幅又は高さ分（出力する画像Ｇ１０４の幅又は高さ）の画素を保持するラインメモリではなく、ページを分割したブロック画像の幅分の画素を保持するラインメモリで、任意倍率の拡大・縮小処理を行うことができる。したがって、画像形成装置１では、入力又は出力する画像のサイズ（画素数）が大きくなっても、メモリ等のリソースを追加せずに（効率的に）処理することができる。
【００９１】
（Ｂ）第２の実施形態
以下、本発明による画像処理装置及び方法、並びに、画像形成装置の第２の実施形態を、図面を参照しながら詳述する。
【００９２】
（Ｂ−１）第２の実施形態の構成
第１の実施形態では、拡大・縮小処理部１００の前段及び後段でフィルタ処理が行われ、各フィルタ処理において、それぞれ画像メモリ６０に対する画像データの読み出し及び書込みが発生している。したがって、第１の実施形態の画像形成装置１では、画像メモリ６０にフィルタ処理ごとに画像データを保持するためのメモリ領域を確保する必要がある。また、画像処理装置において、画像データを記憶するメモリは、通常、ＤＲＡＭ等の大規模なメモリが一つだけ使用されることが考えられ、単位時間当たりにアクセス可能なデータ量は有限となる。したがって、第１の実施形態の画像形成装置１において、画像メモリ６０に対する画像データの読込回数及び書込み回数を低減することにより、効率的な画像処理が可能となる。
【００９３】
そこで、図９に示す第２の実施形態の画像形成装置１Ａでは、フィルタ処理についてもブロック画像単位で行うことにより、画像メモリ６０へのアクセス回数を低減する構成となっている。
【００９４】
図９（ａ）は、第２の実施形態に係る画像形成装置１Ａの機能的構成について示したブロック図であり、上述の図１（ａ）と同一又は対応する部分には、同一又は対応する符号を付している。図９（ｂ）は、第２の実施形態に係る画像形成装置１Ａが備えるブロック拡大・縮小部１２０Ａの機能的構成について示したブロック図である、上述の図１（ｂ）と同一又は対応する部分には、同一又は対応する符号を付している。
【００９５】
以下では、第２の実施形態について、第１の実施形態との差異を説明する。
【００９６】
第２の実施形態の画像形成装置１Ａは、画像入力部１０、拡大・縮小処理部１００Ａ、画像出力部５０及び画像メモリ６０を有している。また、拡大・縮小処理部１００Ａには、前段から順に、ブロック読み出し部１１０Ａ、前フィルタ処理部１４０、ブロック拡大・縮小部１２０Ａ、後フィルタ処理部１５０、ブロックカット処理部１６０、及びブロック書き出し部１３０Ａが配置されている。以下では、拡大・縮小処理部１００Ａ内でブロック画像を処理する各構成要素（ブロック読み出し部１１０Ａ、前フィルタ処理部１４０、ブロック拡大・縮小部１２０Ａ、後フィルタ処理部１５０、ブロックカット処理部１６０、及びブロック書き出し部１３０Ａ）を総称して「ブロック画像処理部」と呼ぶものとする。
【００９７】
すなわち、第２の実施形態の画像形成装置１Ａでは、拡大・縮小処理部１００Ａに、ブロック単位で前フィルタ処理及び後フィルタ処理を行う構成要素が挿入されている点で、第１の実施形態と異なっている。具体的には、第２の実施形態の画像形成装置１Ａでは、拡大・縮小処理部１００Ａにおいて、ブロック読み出し部１１０Ａとブロック拡大・縮小部１２０Ａとの間に、ブロック画像単位で前フィルタ処理を行う前フィルタ処理部１４０が挿入されている。また、第２の実施形態の拡大・縮小処理部１００Ａでは、ブロック拡大・縮小部１２０Ａとブロック書き出し部１３０Ａとの間に、ブロック単位で後フィルタ処理を行う後フィルタ処理部１５０、及び、後フィルタ処理に利用した不要部分をカットするブロックカット処理部１６０が挿入されている。なお、ブロック読み出し部１１０Ａは、入力された画像Ｇ１０１について直接ブロック画像の読み出しを行う点で、第１の実施形態と異なっている。したがって、第２の実施形態では、拡大・縮小処理部１００Ａにより画像処理装置が構成されている。
【００９８】
これにより、第２の実施形態の画像入力部１０Ａでは、第１の実施形態と異なり、前フィルタ処理を行った画像Ｇ１０２及び、拡大・縮小処理後の画像Ｇ１０３を画像メモリ６０に書き込まずに処理を完了することができるので、メモリアクセスの点で効率的な処理が可能となる。
【００９９】
ブロック読み出し部１１０Ａは、ブロック拡大・縮小部１２０Ａで決定されたパラメータに従って、画像Ｇ１０１をブロック画像単位で読み出し、前フィルタ処理部１４０に供給する。
【０１００】
そして、第２の実施形態における前フィルタ処理手段としての前フィルタ処理部１４０は、ブロック画像単位でフィルタ処理を行い、フィルタ処理したブロック画像を、ブロック拡大・縮小部１２０Ａに供給する。前フィルタ処理部１４０が行う、具体的なフィルタ処理については、種々の画像データのフィルタ処理（ブロック画像単位のフィルタ処理）を適用することができるため、詳しい説明を省略する。
【０１０１】
ブロック拡大・縮小部１２０Ａは、前フィルタ処理部１４０から供給されたブロック画像について、拡大・縮小処理を行って、後フィルタ処理部１５０に供給する。そして、ブロック拡大・縮小部１２０Ａは、Ｘ方向拡大・縮小部１２１Ａ及びＹ方向拡大・縮小部１２２Ａを有している。Ｘ方向拡大・縮小部１２１Ａ（Ｙ方向拡大・縮小部１２２Ａ）では、前フィルタ処理部１４０の挿入に伴って、Ｘ方向スキップカウンタ１２１ｃ（Ｙ方向スキップカウンタ１２２ｃ）が追加されている点で、第１の実施形態と異なっている。Ｘ方向スキップカウンタ１２１ｃ及びＹ方向スキップカウンタ１２２ｃは、ブロック拡大・縮小部１２０Ａに入力される各ブロック画像の左端と上端の無効画素（第１の無効領域）をスキップする（除外する；無視する）ためのカウンタであり、出力カウンタと同様、ブロック画像のライン先頭でリセットされる。
【０１０２】
そして、ブロック拡大・縮小部１２０Ａは、入力されたブロック画像について、上述のスキップカウンタ（Ｘ方向スキップカウンタ１２１ｃ、Ｙ方向スキップカウンタ１２２ｃ）によりスキップされた領域を除外した領域について、第１の実施形態と同様の拡大・縮小処理を実行して、拡大・縮小処理後のブロック画像を、後フィルタ処理部１５０に供給する。
【０１０３】
そして、第２の実施形態における後フィルタ処理手段としての後フィルタ処理部１５０は、後フィルタ処理部１５０から供給されたブロック画像について、後フィルタ処理を行い、後フィルタ処理したブロック画像を、ブロックカット処理部１６０に供給する。後フィルタ処理部１５０が行う、具体的なフィルタ処理については、種々の画像データのフィルタ処理（ブロック画像単位のフィルタ処理）を適用することができるため、詳しい説明を省略する。
【０１０４】
そして、ブロックカット手段としてのブロックカット処理部１６０は、後フィルタ処理部１５０から供給されたブロック画像について、後フィルタ処理で発生するブロック画像外周の無効画素（第２の無効領域）をカット（除外）する処理を行い、ブロック書き出し部１３０Ａに供給する。
【０１０５】
そして、ブロック書き出し部１３０Ａは、ブロックカット処理されたブロック画像について、画像メモリ６０（画像Ｇ１０４の領域）に順次書き込み、画像Ｇ１０４のデータを作成する。ブロック書き出し部１３０Ａが、個々のブロック画像について行う書き出し処理自体は、第１の実施形態と同様の処理であるため、詳しい説明は省略する。
【０１０６】
（Ｂ−２）第２の実施形態の動作
次に、以上のような構成を有する第２の実施形態の画像形成装置１Ａの動作（実施形態の画像処理方法）を説明する。
【０１０７】
（Ｂ−２−１）画像形成装置１Ａ全体の動作の概要
図１０は、画像形成装置１Ａの全体の動作について示したフローチャートである。
【０１０８】
まず、画像形成装置１Ａでは、画像入力部１０に画像Ｇ１０１のデータが入力されて、画像メモリ６０に、画像Ｇ１０１として書き込まれたものとする。そして、拡大・縮小処理部１００Ａに設定倍率がセットされたものとする（Ｓ４０１）。
【０１０９】
ここでは、画像Ｇ１０１は、幅７６８０画素、高さ５１２０画素の画像であるものとする。またここでは、拡大・縮小処理部１００に設定倍率として１３３％設定された場合と、４１％が設定された場合とで、場合分けして説明する。
【０１１０】
そして、拡大・縮小処理部１００Ａ（ブロック拡大・縮小部１２０Ａ）により、拡大・縮小処理を行う画像Ｇ１０１のサイズと、設定倍率に基づいて、拡大・縮小に係る各パラメータ算出等の準備が行われる（Ｓ４０２）。
【０１１１】
そして、拡大・縮小処理部１００Ａにより、ブロック単位で、読み出し処理、前フィルタ処理、拡大・縮小処理、後フィルタ処理、ブロックカット処理、及び書き出し処理が行われ、画像メモリ６０に処理後の画像Ｇ１０４が書き込まれる（Ｓ４０３）。
【０１１２】
そして、画像出力部５０により、処理後の画像Ｇ１０４が出力されることになる（Ｓ４０４）。
【０１１３】
（Ｂ−２−２）拡大・縮小に係る各パラメータ算出（ステップＳ４０２）
次に、上述のステップＳ４０２において、ブロック拡大・縮小部１２０Ａで行われるパラメータ算出処理の詳細について説明する。
【０１１４】
ここでは、前フィルタ処理部１４０、ブロック拡大・縮小部１２０Ａ、後フィルタ処理部１５０は、それぞれ、２８８、２６４、２６２画素分の画素を保持するラインメモリを備え、前記の画素数が各処理部における出力可能なブロック画像幅の上限があるものとする。また、ここでは、前フィルタ処理部１４０では注目画素を中心に２５×２５の画素参照を行うフィルタ処理が行われ、後フィルタ処理部１５０では注目画素を中心に７×７の画素参照を行うフィルタ処理が行われるものとする。
【０１１５】
ブロック拡大・縮小部１２０Ａによるパラメータ算出処理も、上述の図４のフローチャートにより説明することができる。
【０１１６】
まず、ステップＳ２０１において、ブロック拡大・縮小部１２０Ａは、画像Ｇ１０１と設定倍率に基づいて、拡大・縮小処理後に出力する画像Ｇ１０４のサイズ（１ページの出力画像の幅と高さ）を、第１の実施形態と同様に上記の（１）、（２）式を用いて算出する。
【０１１７】
ここでの例では、上述の通り、入力する画像Ｇ１０１のサイズは、幅７６８０、高さ５１２０であり、設定倍率は１３３％である。したがって、出力する画像Ｇ１０４の幅ＸＯが１０２１４、高さがＹＯが６８０９となる。さらに、設定倍率を４１％とした場合、出力する画像Ｇ１０４の幅ＸＯが３１４８、高さＹＯが２０９９となる。
【０１１８】
次に、ステップＳ２０２で、ブロック拡大・縮小部１２０は、拡大・縮小処理部１００Ａ内の各ブロック画像処理部で入出力されるブロック画像のそれぞれについてサイズの算出を行う。
【０１１９】
入出力ブロック画像サイズは、拡大・縮小処理部１００Ａの各ブロック画像処理部における入出力ブロック画像の幅と高さであり、第２の実施形態では、ブロック読み出し部１１０Ａで読み出すブロック画像サイズ、前フィルタフィルタ処理部２０が出力するブロック画像サイズ、ブロック拡大・縮小部１２０Ａが出力するブロック画像サイズ、後フィルタ処理部１５０が出力するブロック画像サイズ、及びブロックカット処理部１６０が出力するブロック画像サイズ（ブロック書き出し部１３０で書き出すブロック画像サイズ）が該当する。なお、拡大・縮小処理部１００Ａが算出するブロック画像サイズは、拡大・縮小の倍率と各ブロック画像処理部で出力可能ブロック画像サイズの上限と各ブロック画像処理部で発生するブロック画像外周の無効部分の画素幅と高さによって変動する。
【０１２０】
図１１は、第２の実施形態の例において、拡大・縮小処理部１００Ａの各ブロック画像処理部で出力可能なブロック画像サイズの上限と、ブロック画像外周で発生する無効部分の画素幅と高さを示した説明図である。
【０１２１】
ブロック画像幅の上限については、上述した通り、前フィルタ処理部１４０、ブロック拡大・縮小部１２０Ａ、及び後フィルタ処理部１５０に設定されるものであり、それぞれ、２８８、２６４、２６２である。ブロック画像高さの上限については、第１の実施形態と同様の制約を仮定し、ブロック書き出し部１３０の書き出しにおいて２５６の高さ制限があるものとする。
【０１２２】
また、ブロック画像外周に発生する無効画素は、前フィルタ処理部１４０、後フィルタ処理部２０、及びブロック拡大・縮小部１２０Ａで発生する。具体的には、ここでの例では、前フィルタ処理部１４０では左端と右端と上端と下端に１２画素発生し、後フィルタ処理部１５０では左端と右端と上端と下端に３画素発生し、ブロック拡大・縮小部１２０Ａでは右端と下端に１画素（補間拡大・縮小法を用いた場合）発生するものとする。
【０１２３】
このように、上述のステップＳ２０２において、ブロック拡大・縮小部１２０Ａでは、拡大・縮小処理部１００Ａ内の各ブロック画像処理部で入出力されるブロック画像サイズ上限と、ブロック画像外周で発生する無効画素数と、設定倍率とを用いて、各ブロック画像処理部における出力ブロック画像サイズが算出される。
【０１２４】
図１２は、ブロック拡大・縮小部１２０Ａが、上述のステップＳ２０２で各パラメータを算出する動作について示したフローチャートである。
【０１２５】
図１２における変数ｐは、ブロック拡大・縮小部１２０Ａが拡大・縮小処理部１００Ａ内の構成要素（各処理段）に係る処理番号を管理するために用いられる変数である。ｐは、図１１における処理番号に該当する。したがって、図１１に示すように、ブロック読み出し部１１０Ａでは、１段目（最前段）の処理段（ｐ＝０）がブロック読み出し部１１０Ａ、２段目の処理段（ｐ＝１）が前フィルタ処理部１４０、３段目の処理段（ｐ＝２）がブロック拡大・縮小部１２０Ａ、４段目の処理段（ｐ＝３）が後フィルタ処理部１５０、５段目の処理段（ｐ＝４）がブロックカット処理部１６０、６段目（最後段）の処理段（ｐ＝５）がブロック書き出し部１３０Ａとなっている。
【０１２６】
まず、ブロック拡大・縮小部１２０Ａは、最後段の処理の出力ブロック画像サイズを仮決めする（Ｓ５０１）。この場合、ブロック拡大・縮小部１２０Ａが仮決めに使用する値は、例えば、上述のステップＳ２０１で求めた出力画像サイズを用いるものとする。
【０１２７】
次に、ブロック拡大・縮小部１２０Ａは、ｐに最後段の処理番号として「５」を設定する（Ｓ５０２）。
【０１２８】
次に、ブロック拡大・縮小部１２０Ａは、処理番号ｐの処理の出力ブロック画像サイズを算出する（Ｓ５０３）。ここで各ブロック画像処理部における出力ブロック画像サイズの算出を行うことになるが、ブロック拡大・縮小部１２０Ａの出力ブロック画像サイズは前段の処理の出力ブロック画像サイズから算出することができないため、各ブロック画像処理部における出力ブロック画像サイズの算出はその後段の処理における出力ブロック画像サイズより順に算出する必要がある。第２の実施形態における各処理番号ごと（ブロック画像処理部ごと）の出力ブロック画像サイズの算出は、以下の（１６）〜（２７）式によりもとめることができる。
【０１２９】
［ブロック書き出し部１３０Ａ、ｐ＝５]   
ｏｕｔｂｗ［ｐ］＝任意の値  …（１６）
ｏｕｔｂｈ［ｐ］＝任意の値  …（１７）
[ブロックカット処理部１６０、ｐ＝４]
ｏｕｔｂｗ［ｐ］＝ｏｕｔｂｗ［ｐ＋１］  …（１８）
ｏｕｔｂｈ［ｐ］＝ｏｕｔｂｈ［ｐ＋１］  …（１９）
［後フィルタ処理部１５０、ｐ＝３］
ｏｕｔｂｗ［ｐ］＝
ｏｕｔｂｗ［ｐ＋１］＋ｎｕｌｗＬ［ｐ］＋ｎｕｌｗＲ［ｐ］  …（２０）
ｏｕｔｂｈ［ｐ］＝
ｏｕｔｂｈ［ｐ＋１］＋ｎｕｌｈＵ［ｐ］＋ｎｕｌｈＤ［ｐ］  …（２１）
[ブロック拡大・縮小部１２０Ａ、ｐ＝２]
ｏｕｔｂｗ［ｐ］＝ｏｕｔｂｗ［ｐ＋１］  …（２２）
ｏｕｔｂｈ［ｐ］＝ｏｕｔｂｈ［ｐ＋１］  …（２３）
[前フィルタ処理部１４０、ｐ＝１]
ｏｕｔｂｗ［ｐ］＝
（ｏｕｔｂｗ［ｐ＋１］×ｘｂａｓｅ＋ｘｒａｔｉｏ−１）／ｘｒａｔｉｏ
＋ｎｕｌｗＬ［ｐ］＋ｎｕｌｗＲ［ｐ］＋ｎｕｌｗＬ［ｐ＋１］
＋ｎｕｌｗＲ［ｐ＋１］  …（２４）
ｏｕｔｂｈ［ｐ］＝
（ｏｕｔｂｈ［ｐ＋１］×ｙｂａｓｅ＋ｙｒａｔｉｏ−１）／ｙｒａｔｉｏ
＋ｎｕｌｈＵ［ｐ］＋ｎｕｌｈＤ［ｐ］＋ｎｕｌｈＵ［ｐ＋１］
＋ｎｕｌｈＤ［ｐ＋１］  …（２５）
[ブロック読み出し部１１０Ａ、ｐ＝０]
ｏｕｔｂｗ［ｐ］＝ｏｕｔｂｗ［ｐ＋１］  …（２６）
ｏｕｔｂｈ［ｐ］＝ｏｕｔｂｈ［ｐ＋１］  …（２７）
上式のように各ブロック画像処理部における出力ブロック画像の幅（ｏｕｔｂｗ［ｐ］）と出力画像の高さ（ｏｕｔｂｗ［ｐ］）が算出される。なお、最後段の処理であるブロック書き出し部１３０の出力ブロック画像サイズは、直近にステップＳ５０１、又はＳ５０６で決定された値とする。
【０１３０】
そして、ブロック拡大・縮小部１２０Ａは、各処理番号ｐに係る出力ブロック画像サイズが、各ブロック画像処理部において出力可能なブロック画像サイズの上限を超えていないかを判定し（Ｓ５０４）、上限を超えていると判定した場合には後述するステップＳ５０５から動作し、そうでない場合には、後述するステップＳ５０６から動作する。
【０１３１】
そして、処理番号ｐに係る出力ブロック画像サイズが、上述の上限を超えている場合、ブロック拡大・縮小部１２０Ａは、最後段の出力ブロック画像サイズの変更（例えば、幅及び高さで１画素ずつ小さいサイズへの変更）を行ってから（Ｓ５０６）、上述のステップＳ５０２に戻って動作する。
【０１３２】
そして、ブロック拡大・縮小部１２０Ａは、処理番号ｐに係る出力ブロック画像サイズが、上述の上限を超えていない場合、全ての処理番号について、出力ブロック画像サイズの算出が終了したか否かを判定（ｐが０かを判定）する（Ｓ５０５）。
【０１３３】
ブロック拡大・縮小部１２０Ａは、全ての処理番号について出力ブロック画像サイズの算出が終了した場合には処理を終了し、そうでない場合には、ｐをデクリメント（１減算）して（Ｓ５０７）、上述のステップＳ５０３から動作する。
【０１３４】
以上のように、ブロック拡大・縮小部１２０Ａは、拡大・縮小処理部１００Ａ内の各ブロック画像処理部の出力ブロック画像のサイズを、最後段の処理部から順に算出し、全ての処理部について制限内になるまで上述の図１２のフローチャートのループ処理を繰り返す。
【０１３５】
上述の図１１の制限に基づいて、ブロック拡大・縮小部１２０Ａが、上述の図１２のフローチャートの処理を行い、各ブロック画像処理部の出力ブロック画像のサイズを算出した結果は、例えば、図１３のような内容となる。
【０１３６】
そして、ステップＳ２０３において、ブロック拡大・縮小部１２０Ａは、上述のステップＳ２０２で算出した入力ブロック画像のサイズに基づいて、第１の実施形態と同様の処理により、画像Ｇ１０１に対するブロック画像の分割数を算出する。
【０１３７】
ここでの例では、上述の通り、入力する画像Ｇ１０１のサイズは、幅７６８０、高さ５１２０である。したがって、設定倍率が１３３％の場合、入力ブロック画像の幅及び高さは１９４であるため、Ｘ方向の分割数は４０、Ｙ方向の分割数は２７となる。また、設定倍率を４１％とした場合、入力ブロック画像の幅及び高さは６２６であるため、Ｘ方向の分割数は１３、Ｙ方向の分割数は９となる。
【０１３８】
そして、ステップＳ２０４において、ブロック拡大・縮小部１２０Ａは、ブロック画像ごとに、Ｘ方向拡大・縮小カウンタ１２１ａ、及びＹ方向拡大・縮小カウンタ１２２ａの初期値と、ブロック読み出し部１１０が読み出す各ブロック画像のＸ方向とＹ方向の読み出し位置を算出する。ブロック拡大・縮小部１２０ＡによるステップＳ２０４の処理は、第１の実施形態とほぼ同様であるが、前フィルタ処理部１４０と後フィルタ処理部１５０が、拡大・縮小処理部１００Ａに挿入されたことを考慮して、各値を求める必要がある。
【０１３９】
第２の実施形態において、Ｙ方向拡大・縮小カウンタ１２２ａの初期値、Ｙ方向拡大・縮小カウンタ１２２ａの初期値、Ｘ方向の読み出し位置、及びＹ方向の読み出し位置はそれぞれ以下の（２８）〜（３１）式で算出することができる。
【０１４０】
以下の（２８）〜（３１）式において、ｂｎｕｌｗとｂｎｕｌｈは、ブロック拡大・縮小部１２０Ａの処理でブロック画像左端と上端に発生する無効画素数を表している。また、ａｎｕｌｗとａｎｕｌｈはブロック拡大・縮小部１２０Ａの後段の処理でブロック画像左端と上端に発生する無効画素数を表している。
【０１４１】
[Ｘ方向の拡大・縮小カウンタの算出式]
ｘｃｎｔ０［０］＝（ｘｒａｔｉｏ−（ａｎｕｌｗ×ｘｂａｓｅ）％ｘｒａｔｉｏ）％ｘｒａｔｉｏ  …（２８）
[Ｙ方向の拡大・縮小カウンタの算出式]
ｙｃｎｔ０［０］＝（ｙｒａｔｉｏ−（ａｎｕｌｈ×ｙｂａｓｅ）％ｙｒａｔｉｏ）％ｙｒａｔｉｏ  …（２９）
[Ｘ方向の読み出し位置]
ｘｐｏｓ０［０］＝  −（ａｎｕｌｗ×ｘｂａｓｅ＋ｘｒａｔｉｏ−１）
／ｘｒａｔｉｏ−ｂｎｕｌｗ  …（３０）
[Ｙ方向の読み出し位置]
ｙｐｏｓ０［０］＝−（ａｎｕｌｈ×ｙｂａｓｅ＋ｙｒａｔｉｏ−１）
／ｙｒａｔｉｏ−ｂｎｕｌｈ  …（３１）
以上説明したＳ２０１〜Ｓ２０４で算出したパラメータを使用して、拡大・縮小処理部１００Ａを動作させることで、１ページの画像データを複数のブロックに分割して任意倍率の拡大・縮小と前後のフィルタ処理を行うことができる。
【０１４２】
（Ｂ−２−３）ブロック読み出し部１１０Ａによる入力ブロック画像の読み出し処理
次に、上述のステップＳ４０３において、ブロック読み出し部１１０Ａで行われる入力ブロックの読み出し処理の詳細について、図１４を用いて説明する。
【０１４３】
図１４は、ブロック読み出し部１１０Ａが、上述のステップＳ４０３で決定したパラメータに従って、拡大・縮小処理部１００Ａに入力される画像Ｇ１０１を、入力ブロック単位で読み出す場合の処理について示した説明図である。なお、図１４では、入力する画像Ｇ１０１のサイズは、幅７６８０、高さ５１２０、設定倍率が１３３％の場合について示している。
【０１４４】
図１４に示すように、ブロック読み出し部１１０Ａで読み出されるブロック画像は、隣接ブロックと重複部分を持つように読み出される。図１４では、読み出す１ページの画像データの最も左の画素のＸ方向の位置を０、最も上の画素のＹ方向の位置を０としている。そして、ブロック読み出し部１１０Ａが、分割するブロック画像のＸ方向とＹ方向の読み出し開始位置は、Ｘ方向の読み出し開始位置についてはＸ方向のブロック番号０、１、２、３、４、・・・に対応して、−１５、１７８、３７０、５６３、７５５、・・・となり、Ｙ方向の読み出し開始位置についてはＹ方向のブロック番号０、１、・・・に対応して、−１５、１７８となる。例えば、Ｘ方向のブロック番号が２、Ｙ方向のブロック番号が１であれば、Ｘ方向とＹ方向の読み出し位置は（３７０、１７８）になる。また、図１４では、ブロック読み出し部１１０Ａにより読み出される各ブロック画像のサイズは、全てのブロック画像で共通である（例では、幅２２２×高さ２２２）。なお、図１４に示すように、ブロック読み出し部１１０Ａは、ページの外周近辺で読み出されるブロック画像については、ページ外の領域より読み出す必要があり、上述のページ外の領域のデータは、白データ（白色の画素値）で置換したり、ページ外との境界に位置する画素を使って置換するようにしてもよい。
【０１４５】
そして、ブロック読み出し部１１０Ａは、各ブロック画像について、各ブロック画像のＸ方向とＹ方向のブロック番号にしたがって、Ｘ方向とＹ方向の読み出し位置を変更しながら読み出し、読み出したブロック画像を前フィルタ処理部１４０に供給する。
【０１４６】
（Ｂ−２−４）ブロック拡大・縮小部１２０Ａによる拡大・縮小処理
次に、上述のステップＳ４０３においてブロック拡大・縮小部１２０Ａで行われる処理の詳細について説明する。
【０１４７】
図１５は、ブロック拡大・縮小部１２０Ａで行われる各ブロック画像に対する処理の例について示した説明図である。なお、図１５では、入力する画像Ｇ１０１のサイズは、幅７６８０、高さ５１２０、設定倍率が１３３％の場合について示している。
【０１４８】
前フィルタ処理部１４０に入力されたブロック画像（図１５（ａ）参照、ブロック画像のサイズは幅２２２×高さ２２２）は、前フィルタ処理部１４０で、注目画素を中心に２５×２５の画素参照を行うフィルタ処理が行われ、フィルタ処理された画像がブロック拡大・縮小部１２０Ａに供給される。
【０１４９】
前フィルタ処理部１４０によるフィルタ処理により前フィルタ処理部１４０の処理後のブロック画像は、図１５（ｂ）に示すように左端、右端、上端、下端に無効な画素が各１２画素発生する。
【０１５０】
そして、ブロック拡大・縮小部１２０Ａに入力されたブロック画像は、拡大・縮小部で拡大処理が行われ、拡大されたブロック画像が、後フィルタ処理部１５０に供給される。
【０１５１】
ブロック拡大・縮小部１２０Ａに入力されたブロック画像（幅２２２×高さ２２２）は、まず、Ｘ方向拡大・縮小部１２１ＡによりＸ方向について拡大され（図１５（ｃ）参照、ブロック画像サイズは幅２６２×高さ２２２）、さらに、Ｙ方向拡大・縮小部１２２Ａにより、Ｙ方向ついて拡大されて出力される（図１５（ｄ）参照、ブロック画像サイズは幅２６２×高さ２６２）。
【０１５２】
Ｘ方向拡大・縮小部１２１Ａによる前記のＸ方向の拡大では、Ｘ方向拡大・縮小カウンタ１２１ａが各ブロックのライン先頭で、当該ブロック画像のＸ方向のブロック番号に対応する初期値に設定される。例えば、Ｘ方向のブロック番号が２であれば９４に設定される。ブロック左端よりカウントが開始されるＸ方向スキップカウンタ１２１ｃが所定の値（例では１２）になるまで入力画素を無視した後（前段の処理で発生したブロック左端の無効画素１２画素は前記の動作により削除される）、Ｘ方向拡大・縮小カウンタ１２１ａにしたがってライン毎拡大が行われ、Ｘ方向出力カウンタ１２１ｂが所定の値（例では２６２）になるまで拡大して出力する（図１５（ｅ）参照、前記の動作により前段の処理で発生したブロック右端の無効画素１２画素および余分な画素が削除される）。
【０１５３】
Ｙ方向拡大・縮小部１２２ＡによるＹ方向の拡大では、Ｙ方向拡大・縮小カウンタ１２２ａが各ブロックの先頭ラインで、当該ブロック画像のＹ方向のブロック番号に対応する初期値に設定される。例えば、Ｙ方向のブロック番号が１であれば３０に設定される。ブロック上端よりカウントが開始されるＹ方向スキップカウンタ１２２ｃが所定の値（例では１２）になるまで入力画素を無視した後（前段の処理で発生したブロック上端の無効画素１２画素は前記の動作により削除される）、Ｙ方向拡大・縮小カウンタ１２２ａにしたがって拡大が行われ、Ｙ方向出力カウンタ１２２ｂが所定の値（例では２６２）になるまで拡大して出力する（図１５（ｆ）参照、前記の動作により前段の処理で発生したブロック下端の無効画素１２画素および余分な画素が削除される）。
【０１５４】
以上説明したように、ブロック拡大・縮小部１２０Ａは入力されるブロック画像を拡大するとともに、前段の前フィルタ処理部１４０のフィルタ処理により生じたブロック画像端部の無効画素を削除し、各ブロック画像のサイズを同じ大きさにして出力する。出力されたブロック画像は後フィルタ処理部１５０に供給される。
【０１５５】
（Ｂ−２−５）後フィルタ処理部１５０及びブロックカット処理部１６０の処理
次に、上述のステップＳ４０３において、後フィルタ処理部１５０及びブロックカット処理部１６０で行われる処理の詳細について説明する。
【０１５６】
図１６は、後フィルタ処理部１５０及びブロックカット処理部１６０で行われる各ブロック画像に対する処理の例について示した説明図である。
【０１５７】
後フィルタ処理部１５０に入力されたブロック画像（図１６（ａ）参照、ブロック画像のサイズは幅２６２×高さ２６２）は、後フィルタ処理部１５０で注目画素を中心に７×７の画素参照を行うフィルタ処理を行われる。そして、後フィルタ処理部１５０で、後フィルタ処理された画像が、ブロックカット処理部１６０に供給される。後フィルタ処理部１５０による後フィルタ処理により、処理後のブロック画像には、図１６（ｂ）に示すように、左端、右端、上端、及び下端に無効な画素が各３画素発生する。
【０１５８】
ブロックカット処理部１６０に入力されたブロック画像（ブロック画像のサイズは幅２６２×高さ２６２）は、ブロックカット処理部１６０で前段の処理で発生したブロック画像端部の無効画素（例では左端、右端、上端、下端に各３画素）が削除（カット）され、無効画素がカットされたブロック画像（図１６（ｃ）参照；サイズは幅２５６×高さ２５６）がブロック書き出し部１３０Ａに供給される。
【０１５９】
（Ｂ−２−６）ブロック書き出し部１３０Ａによる書き出し処理
ブロック書き出し部１３０Ａは、第１の実施形態と同様の処理により、供給されたブロック画像をＸ方向とＹ方向に一定の間隔（Ｘ方向については２５６、Ｙ方向については２５６）で画像メモリ６０に書き込み、１ページ分の画像Ｇ１０４のデータを作成する。
【０１６０】
（Ｂ−３）第２の実施形態の効果
第２の実施形態によれば、第１の実施形態の効果に加えて以下のような効果を奏することができる。
【０１６１】
第２の実施形態では、前フィルタ処理及び後フィルタ処理についても、ブロック拡大・縮小部１２０Ａで、ブロック画像単位に処理している。したがって、第１の実施形態の画像形成装置１では、図１に示すように画像データが入力されてから出力されるまで、画像メモリ６０に対して４つ画像データ（Ｇ１０１〜Ｇ１０４）の処理（読み書き）が発生しているが、第２の実施形態の画像形成装置１Ａでは、図９に示すように、２つの画像データ（Ｇ１０１、Ｇ１０４）の処理だけで処理が完了する。
【０１６２】
したがって、第２の実施形態の画像形成装置１Ａでは、第１の実施形態よりも、画像メモリ６０へのアクセス量を低減して処理を高速化することができる。また、第２の実施形態の画像形成装置１Ａでは、画像メモリ６０に確保必要な容量を低減することができる。
【０１６３】
（Ｃ）第３の実施形態
以下、本発明による画像処理装置及び方法、並びに、画像形成装置の第３の実施形態を、図面を参照しながら詳述する。
【０１６４】
（Ｃ−１）第３の実施形態の構成
図１７は、本発明の第３の実施形態における画像形成装置の構成を示す概略図であり、上述の図９と同一又は対応する部分に同一又は対応する符号を付している。
【０１６５】
以下、第３の実施形態について第２の実施形態と異なる点について説明する。
【０１６６】
第３の実施形態では、拡大・縮小処理部１００Ａが拡大・縮小処理部１００Ｂに置き換わっている点で第２の実施形態と異なっている。また、第３の実施形態の拡大・縮小処理部１００Ｂでは、ブロック拡大・縮小部１２０Ａがブロック拡大・縮小部１２０Ｂに置き換わり、さらに、前解像度変換部１７０、後解像度変換部１８０、及び量子化処理部１９０が追加されている点で第２の実施形態と異なっている。また、第３の実施形態のブロック拡大・縮小部１２０Ｂでは、Ｘ方向拡大・縮小部１２１Ａ及びＹ方向拡大・縮小部１２２Ａが、Ｘ方向拡大・縮小部１２１Ｂ及びＹ方向拡大・縮小部１２２Ｂに置き換わっている点で第２の実施形態と異なっている。
【０１６７】
拡大・縮小処理部１００Ｂでは、ブロック読み出し部１１０Ａと前フィルタ処理部１４０との間（ブロック拡大・縮小部１２０Ｂより前段の位置）に、前解像度変換部１７０が挿入されている。また、拡大・縮小処理部１００Ｂでは、後フィルタ処理部１５０とブロックカット処理部１６０との間（ブロック拡大・縮小部１２０Ｂより後段の位置）に、後解像度変換部１８０が挿入されている。さらに、拡大・縮小処理部１００Ｂでは、ブロックカット処理部１６０とブロック書き出し部１３０Ａとの間（ブロック拡大・縮小部１２０Ｂより後段の位置）に、量子化処理部１９０が挿入されている。
【０１６８】
第１の実施形態や第２の実施形態の前フィルタ処理部１４０で特定の解像度の画像データに対して処理を行いたい場合には解像度変換処理（逓倍の解像度変換または逓倍分の１の解像度変換）を前フィルタ処理の前に行う必要がある（例えば、画像データの縦と横の解像度を同じにすることで原稿のスクリーン判定やモアレ発生を抑えるフィルタ処理について縦横で同じ処理にできるので処理設定や構成が簡易になる）。また、後フィルタ処理部１５０の処理後の画像データの解像度や画素当たりのビット数が画像出力部５０の期待する解像度や画素当たりのビット数と異なる場合には後フィルタ処理の後に解像度変換（逓倍の解像度変換）や量子化処理を行う必要がある。前記の解像度変換や量子化処理についておのおの画像メモリから画像データの読み出しや書き出しを行った場合には、画像メモリに必要なサイズが大きくなるうえに、処理速度の低下を招く。そのため、第３の実施形態では、ブロック拡大・縮小部１２０Ｂ及び前フィルタ処理部１４０の前段に前フィルタ処理部１４０を挿入して、切り出されたブロック画像について出力したいサイズのブロック画像と比率だけを合せる解像度変換をおこなっている。そして、第３の実施形態では、ブロック拡大・縮小部１２０Ｂ及び後フィルタ処理部１５０の後段に、後解像度変換部１８０を挿入して、ブロック拡大・縮小部１２０Ｂから出力されたブロック画像について出力したいサイズの画像に変換する解像度変換をしている。
【０１６９】
前解像度変換部１７０は、ブロック読み出し部１１０Ａより入力されるブロック画像データの解像度変換（逓倍の解像度変換または逓倍分の１の解像度変換）を行うものである。前解像度変換部１７０は、例えば、入力された横３００ＤＰＩ×縦６００ＤＰＩの解像度のブロック画像データを横６００ＤＰＩ×縦６００ＤＰＩの解像度の画像データに変換する。そして、解像度が変換されたブロック画像データは前フィルタ処理部１４０に供給される。
【０１７０】
ブロック拡大・縮小部１２０ＢのＸ方向拡大・縮小部１２１Ｂ及びＹ方向拡大・縮小部１２２Ｂは、前解像度変換部１７０の追加に伴い、Ｘ方向とＹ方向の画像ブロック毎にスキップ幅を微調整する値（以下、「微調整スキップ値」と呼ぶ）により微調整されたスキップ幅を、スキップカウンタ（Ｘ方向スキップカウンタ１２１ｃ、Ｙ方向スキップカウンタ１２２ｃ）にセットする点で第２の実施形態と異なっている。
【０１７１】
言い換えると、ブロック拡大・縮小部１２０Ｂ（Ｘ方向拡大・縮小部１２１Ｂ及びＹ方向拡大・縮小部１２２Ｂ）は、第２の実施形態と同様、入力されたブロック画像の左端と上端の画素について、スキップカウンタが所定の値の範囲の画素を無視して残りの画素のみを拡大・縮小カウンタにしたがって拡大・縮小し、出力カウンタが所定の値の範囲内の場合のみ出力を行うよう動作する。但し、ブロック拡大・縮小部１２０Ｂは、スキップカウンタの値により無視する所定の値の範囲は、全ての画像ブロックで共通の所定値に、Ｘ方向とＹ方向のブロック毎の微調整スキップ値を加算した値の範囲を無視（スキップ）する処理（以下、この微調整処理を「スキップ値微調整処理」とも呼ぶものとする）するものとする。言い換えると、ブロック拡大・縮小部１２０Ｂでは、ブロックごとにスキップカウンタに設定される値が可変となる（共通の所定値に対して微調整（補正）された値が設定される）。
【０１７２】
図１８は、Ｘ方向拡大・縮小部１２１Ｂの動作の例について示した説明図である。図１８では前解像度変換がない場合と前解像度変換がある場合（Ｘ方向の解像度を２倍に変換）のそれぞれについて、ブロック拡大縮小部１２０Ｂに入力されるブロック画像のＸ方向の読み出し位置とＸ方向のスキップ範囲を記載する。
【０１７３】
図１８（ａ）〜図１８（ｃ）は、それぞれ異なる画像ブロック（Ｘ方向の読み出し位置が−１４、１７８、３７１のブロック画像（Ｘ方向０、１、２番目のブロック画像））について、Ｘ方向拡大・縮小部１２１Ｂがスキップ値微調整処理をおこなわずに、Ｘ方向の読み出し位置を設定した場合（第２の実施形態と同様の処理を行った場合の処理）について示した説明図である。図１８（ｄ）〜図１８（ｆ）は、それぞれ図１８（ａ）〜図１８（ｃ）と同様の画像ブロックについて、Ｘ方向拡大・縮小部１２１Ｂがスキップ値微調整処理を行った上で、Ｘ方向の読み出し位置を設定した場合について示した説明図である。
【０１７４】
図１８（ａ）〜図１８（ｃ）に示すように、Ｘ方向の読み出し位置が−１４、１７８、３７１のブロック画像（Ｘ方向０、１、２番目のブロック画像）をＸ方向拡大・縮小部１２１Ｂで左端の１２画素を無視して拡大・縮小を行う場合には、前解像度変換がない場合については、Ｘ方向スキップカウンタ１２１ｃで無視する所定の値の範囲を１２とすれば良い。
【０１７５】
しかし、前記と同様の処理を前解像度変換部１７０でＸ方向の解像度を２倍に変換して行う場合には、前解像度変換がない場合の読み出し位置を１／２した位置より読み出せば良いが、整数とならない位置（２番目のブロックの読み出し位置３７１を１／２すると１８５．５になる）からは読み出せないため、Ｘ方向の読み出し位置−７、８９、１８５から読み出す。したがって、０番目と１番目のブロック画像については、前解像度変換がない場合と同様、スキップカウンタで無視する所定の値の範囲を１２とすれば良いが、２番目のブロック画像は、ブロック拡大縮小部１２０Ｂで換算した読み出し位置が１ずれるため、スキップカウンタで無視する所定の値の範囲を１３とする必要がある。前記の所定の値とのずれ分をＸ方向とＹ方向のブロック毎の微調整スキップ値に設定することで、前解像度変換部１７０による解像度変換に対応できる。
【０１７６】
後解像度変換部１８０は、後フィルタ処理部１５０より入力される画像データの解像度変換（逓倍の解像度変換）を行うものであり、例えば、入力された横６００ＤＰＩ×縦６００ＤＰＩの解像度の画像データを横６００ＤＰＩ×縦１２００ＤＰＩの解像度の画像データに変換する。後解像度変換部１８０は、解像度を変換したブロック画像をブロックカット処理部１６０に供給する。
【０１７７】
量子化処理部１９０は、ブロックカット処理部１６０より供給されたブロック画像に対して量子化処理を行う。例えば、量子化処理部１９０に供給された画素当たり８ｂｉｔのブロック画像をあらかじめ設定された閾値等と比較することで画素当たり１ｂｉｔの画像データに量子化するようにしてもよい。１ｂｉｔに量子化された画像データは８画素単位で８ｂｉｔのデータにまとめられ、ブロック書き出し部１３０Ａへ供給される。例えば、画像出力部５０が電子写真式のプリンタ等である場合には、画像処理装置１に、量子化処理部１９０を搭載し、現像剤（トナー剤）の色ごとの画像データを生成することができる。
【０１７８】
（Ｃ−２）第３の実施形態の動作
次に、以上のような構成を有する第３の実施形態の画像形成装置１Ｂの動作（実施形態の画像処理方法）を説明する。以下では、第３の実施形態の画像形成装置１Ｂの動作について、第２の実施形態の動作との差異を中心に説明する。
【０１７９】
（Ｃ−２−１）画像形成装置１Ｂ全体の動作の概要
図１９は、画像形成装置１Ｂの全体の動作について示したフローチャートである。
【０１８０】
まず、画像形成装置１Ａでは、画像入力部１０に画像Ｇ１０１のデータが入力されて、画像メモリ６０に、画像Ｇ１０１として書き込まれたものとする。そして、拡大・縮小処理部１００Ｂに設定倍率がセットされたものとする（Ｓ５０１）。
【０１８１】
ここでは、画像Ｇ１０１は、幅７６８０画素、高さ５１２０画素の画像であるものとする。またここでは、拡大・縮小処理部１００Ｂに設定倍率として１３３％設定された場合と、４１％が設定された場合とで、場合分けして説明する。
【０１８２】
次に、拡大・縮小処理部１００Ｂにより、拡大・縮小処理を行う画像Ｇ１０１のサイズと、設定倍率に基づいて、拡大・縮小に係る各パラメータ算出等の準備が行われる（Ｓ５０２）。
【０１８３】
次に、拡大・縮小処理部１００Ｂの各処理部により、ブロック単位で、読み出し処理、前フィルタ処理、前解像度変換処理、拡大・縮小処理、後フィルタ処理、後解像度変換処理、ブロックカット処理、量子化処理、及び書き出し処理が行われ、画像メモリ６０に処理後の画像データＧ１０４が書き込まれる（Ｓ５０３）。
【０１８４】
そして、画像出力部５０により、処理後の画像データＧ１０４が出力されることになる（Ｓ５０４）。
【０１８５】
（Ｃ−２−２）拡大・縮小に係る各パラメータ算出（ステップＳ５０２）
次に第３の実施形態の拡大・縮小部３００に必要なパラメータの算出方法について、幅３８４０ピクセル、高さ５１２０ピクセルの画像データ（横３００ＤＰＩ×縦６００ＤＰＩ）を１３３％の倍率で拡大する場合と４１％の倍率で縮小する場合を例に挙げ説明する。
【０１８６】
また、前フィルタ処理部１４０では注目画素を中心に２５×２５の画素参照を行うフィルタ処理が行われ、後フィルタ処理部１５０では注目画素を中心に５×５の画素参照を行うフィルタ処理が行われ、前解像度変換部１７０ではＸ方向の解像度を２倍にする処理が行われ、後解像度変換部１８０ではＹ方向の解像度を２倍にする処理が行われ、量子化処理部１９０では画素当たり８ｂｉｔの画像データを画素当たり１ｂｉｔの画像データに変換する処理が行われるものとする。
【０１８７】
さらに、前フィルタ処理部１４０、ブロック拡大・縮小部１２０Ｂ、後フィルタ処理部１５０、後解像度変換処理部３３０は、それぞれ、２８８、２６４、２６２、２６２画素分の画像を保持するラインメモリを備え、各処理部における出力可能なブロック幅は前記の値が上限であるものとする。
【０１８８】
拡大・縮小処理部１００Ｂの各部位に必要なパラメータの算出方法の全体処理について図２０のフローチャートを用いて説明する。
【０１８９】
まず、ステップＳ６０１において、ブロック拡大・縮小部１２０Ｂは、画像Ｇ１０１と設定倍率に基づいて、拡大・縮小処理後に出力する画像データＧ１０４のサイズ（１ページの出力画像の幅と高さ）を算出する。
【０１９０】
第３の実施形態のブロック拡大・縮小部１２０Ｂでは、拡大・縮小によるサイズ変動に加え、前解像度変換部１７０、後解像度変換部１８０、量子化処理部１９０の各処理部によるサイズ変動を考慮する必要がある。以下の説明では、上述の各処理部のＸ方向の入力画像幅と出力画像幅（ＢＹＴＥ数）の比をｘｂａｓｅ、ｘｒａｔｉｏ、Ｙ方向の入力画像高さと出力画像高さの比をｙｂａｓｅ、ｙｒａｔｉｏとして説明する。なお、以下では、上述の各処理部のそれぞれに係る、前記の各パラメー夕（ｘｂａｓｅ、ｘｒａｔｉｏ、ｙｂａｓｅ、ｙｒａｔｉｏ）については、図２１の表の通りとなっているものとする。
【０１９１】
したがって、ブロック拡大・縮小部１２０Ｂでは、前記の各パラメー夕（ｘｂａｓｅ、ｘｒａｔｉｏ、ｙｂａｓｅ、ｙｒａｔｉｏ）について、上述の各処理部のパラメータを累乗して、処理全体でのＸ方向倍率の分母（以下、「ｘｂａｓｅ＿ｔ」と呼ぶ）と分子（以下、「ｘｒａｔｉｏ＿ｔ」と呼ぶ）、Ｙ方向倍率の分母（以下、「ｙｂａｓｅ＿ｔ」と呼ぶ）と分子（以下、「ｘｒａｔｉｏ＿ｙ」と呼ぶ）を求める。そして、ブロック拡大・縮小部１２０Ｂは、拡大・縮小処理後に出力する画像データＧ１０４のサイズ（１ページの出力画像の幅と高さ）を、以下の（３２）、（３３）式を用いて算出する。
【０１９２】
なお、以下の（３２）、（３３）式において、ＸＯは出力する画像データＧ１０４の幅（Ｘ方向）の画素数である。また、ＸＩは、処理対象の画像Ｇ１０１の幅（Ｘ方向）の画素数である。さらにＹＯは出力する画像データＧ１０４の高さ（Ｙ方向）の画素数である。さらにまた、ＹＩは、処理対象の画像Ｇ１０１の高さ（Ｙ方向）の画素数である。
【０１９３】
ＸＯ＝（ＸＩ）×（ｘｒａｔｉｏ＿ｓ）／（ｘｂａｓｅ＿ｓ）…（３２）
ＹＯ＝（ＹＩ）×（ｙｒａｔｉｏ＿ｓ）／（ｙｂａｓｅ＿ｓ）…（３３）
前述した入力画像Ｇ１０１（幅３８４０、高さ５１２０）を１３３％に拡大する場合の例では、出力画像幅ＸＯが３８４０×（２×１３３×１×１）／（１×１００×１×８）＝１２７６、出力画像高さＹＯが５１２０×（１×１３３×２×１）／（１×１００×１×１）＝１３６１９となる。また、４１％に縮小する場合の例では、出力画像幅ＸＯが３８４０×（２×４１×１×１）／（１×１００×１×８）＝３９３、出力画像高さＹＯが５１２０×（１×４１×２×１）／（１×１００×１×１）＝４１９８となる。
【０１９４】
次に、ステップＳ６０２において、ブロック拡大・縮小部１２０Ｂは、入力ブロック累積無効サイズを算出する。入力ブロック累積無効サイズは、各処理部に入力されるブロック画像に含まれる無効画素のサイズであり、各処理部において、各処理部の上流（前段）の処理部で発生する無効画素のサイズを累積することで求まる。また、各処理部では、前段の処理部が解像度変換を行う処理の場合には、その解像度変換の内容も考慮する必要がある。さらに、各処理部では、前段の処理部がブロック拡大・縮小部１２０Ｂやブロックカット処理部１６０である場合は、その処理部で累積して発生した無効画素は削除されるため０となる。したがって、下式を使って上流のブロック読み出し部１１０Ａから順番に算出を行うことで各処理部の累積無効サイズを算出できる。
【０１９５】
したがって、ブロック拡大・縮小部１２０Ｂでは、「前段の処理部がブロック拡大・縮小部１２０Ｂやブロックカット処理部１６０である場合」には、左端、右端、上端、下端のそれぞれの累積無効サイズを、以下の（３４）式〜（３７）式により求めることができる。
【０１９６】
以下の（３４）式〜（３７）式のｎｕｌｗＬ、ｎｕｌｗＲ、ｎｕｌｈＵ、ｎｕｌｈＤは各処理部で発生する無効画素のサイズである（図２１の表参照）。第３の実施形態の動作例（図２１の表に従う例）においては、各処理部の左端／右端／上端／下端の累積無効サイズは、ブロック読み出し部１１０Ａと前解像度変換部１７０で０／０／０／０、前フィルタ処理部１４０で０／１／０／０、ブロック拡大縮小部１２０Ｂが１２／１３／１２／１２、後フィルタ処理部１５０で０／０／０／０、後解像度変換部１８０で２／２／２／２、ブロックカット処理部１６０で２／２／４／４、量子化処理部１９０とブロック書き出し部１３０Ａで０／０／０／０となる。なお、前記の累積無効サイズの左端と上端の値の範囲がブロック拡大縮小部１２０Ｂにおいてブロック画像の左端と上端で（微調整スキップ値による無視する部分を除く）無視する範囲である。
【０１９７】
[前段処理部がブロック拡大縮小部１２０Ｂ又はブロックカット処理部１６０以外の場合]
（左端累積無効サイズ）＝
（（前段処理部の左端累積無効サイズ）×（前段処理部のｘｒａｔｉｏ）
＋（前段処理部のｘｂａｓｅ）−１）／（前段処理部のｘｂａｓｅ）
＋（前段処理部のｎｕｌｗＬ）  …（３４）
（右端累積無効サイズ）＝
（（前段処理部の右端累積無効サイズ）×（前段処理部のｘｒａｔｉｏ）
＋（前段処理部のｘｂａｓｅ）−１）／（前段処理部のｘｂａｓｅ）
＋（前段処理部のｎｕｌｗＲ）  …（３５）
（上端累積無効サイズ）＝
（（前段処理部の上端累積無効サイズ）×（前段処理部のｙｒａｔｉｏ）
＋（前段処理部のｙｂａｓｅ）−１）／（前段処理部のｙｂａｓｅ）
＋（前段処理部のｎｕｌｈＵ）  …（３６）
（下端累積無効サイズ）＝
（（前段処理部の下端累積無効サイズ）×（前段処理部のｙｒａｔｉｏ）
＋（前段処理部のｙｂａｓｅ）−１）／（前段処理部のｙｂａｓｅ）
＋（前段処理部のｎｕｌｈＤ）  …（３７）
上述のように、前段の処理部がブロック拡大・縮小部１２０Ｂやブロックカット処理部１６０である場合は、その処理部で累積して発生した無効画素は削除されるため０となるため、左端、右端、上端、下端のそれぞれの累積無効サイズは、以下の（３８）式〜（４１）式のようになる。
【０１９８】
[前段処理部がブロック拡大縮小部１２０Ｂまたブロックカット処理部１６０の場合]
（左端累積無効サイズ）＝０  …（３８）
（右端累積無効サイズ）＝０  …（３９）
（上端累積無効サイズ）＝０  …（４０）
（下端累積無効サイズ）＝０  …（４１）
次にＳ６０３では、拡大・縮小処理部１００Ｂは、各処理部の入出力ブロック画像サイズを算出する。拡大・縮小処理部１００Ｂは、第２の実施形態とほぼ同様の処理(上述の図４のステップＳ２０２、図１２のフローチャートの処理)により、各処理部における出力ブロック画像サイズを最後段の処理部より算出し、算出した各処理部における出力ブロック画像サイズが全ての処理部で制限内になるまで算出を繰り返し行うことで、各処理部における出力ブロック画像サイズを算出する。なお、第３の実施形態の拡大・縮小処理部１００Ｂでは、前解像度変換部１７０、後解像度変換部１８０、量子化処理部１９０が追加されたことで、各処理部における出力ブロック画像に係る算出処理を変更する必要があるため、以下ではその差異部分を中心に説明する。
【０１９９】
第３の実施形態における各処理番号ごと（ブロック画像処理部ごと）の出力ブロック画像サイズについて、上述の図１２のフローチャートに従って算出すると以下の（４２）〜（４７）式により求めることができる。
【０２００】
なお、以下の（４２）式〜（４７）式において、ｉｎｃ＿ｎｕｌｗＬ／Ｒ［ｐ］、ｉｎｃ＿ｎｕｌｈＵ／Ｄ［ｐ］は、上述のステップＳ６０２で求めた各処理部の左端／右端／上端／下端の累積無効サイズである。また、ｏｕｔｂｗ［ｐ］、ｏｕｔｂｈ［ｐ］は、第２の実施形態と同様、各処理部で出力するブロック画像の幅と高さである。
【０２０１】
ブロック書き出し部１３０Ａの出力ブロックサイズは、以下の（４２）式、（４３）式のように任意の値を設定することができる。
【０２０２】
ｏｕｔｂｗ［ｐ］＝任意の値  …（４２）
ｏｕｔｂｈ［ｐ］＝任意の値  …（４３）
後フィルタ処理部１５０、及び前フィルタ処理部１４０の出力ブロックサイズは以下の（４４）式、（４５）式により求めることができる。
【０２０３】
ｏｕｔｂｗ［ｐ］＝（ｏｕｔｂｗ［ｐ＋１］×ｘｂａｓｅ［ｐ＋１］
＋ｘｒａｔｉｏ［ｐ＋１］−１）／ｘｒａｔｉｏ［ｐ＋１］
＋ｉｎｃ＿ｎｕｌｗＬ［ｐ＋１］＋ｉｎｃ＿ｎｕｌｗＲ［ｐ＋１］
＋ｎｕｌｗＬ［ｐ＋１］＋ｎｕｌｗＲ［ｐ＋１］…（４４）
ｏｕｔｂｈ［ｐ］＝（ｏｕｔｂｈ［ｐ＋１］×ｙｂａｓｅ［ｐ＋１］
＋ｙｒａｔｉｏ［ｐ＋１］−１）／ｙｒａｔｉｏ［ｐ＋１］
＋ｉｎｃ＿ｎｕｌｈＵ［ｐ＋１］＋ｉｎｃ＿ｎｕｌｈＤ［ｐ＋１］
＋ｎｕｌｈＵ［ｐ＋１］＋ｎｕｌｈＤ［ｐ＋１］…（４５）
量子化処理部１９０、ブロックカット処理部１６０、後フィルタ処理部１５０、ブロック拡大縮小部１２０Ｂ、前解像度変換部１７０、及びブロック読み出し部１１０Ａの出力ブロックサイズは以下の（４６）式、（４７）式により求めることができる。
【０２０４】
ｏｕｔｂｗ［ｐ］＝（ｏｕｔｂｗ［ｐ＋１］×ｘｂａｓｅ［ｐ＋１］
＋ｘｒａｔｉｏ［ｐ＋１］−１）／ｘｒａｔｉｏ［ｐ＋１］…（４６）
ｏｕｔｂｈ［ｐ］＝（ｏｕｔｂｈ［ｐ＋１］×ｙｂａｓｅ［ｐ＋１］
＋ｙｒａｔｉｏ［ｐ＋１］−１）／ｙｒａｔｉｏ［ｐ＋１］…（４７）
以上のような処理により、拡大・縮小処理部１００Ｂで算出される各処理部の出力ブロック画像サイズは、例えば、図２２のようになる。
【０２０５】
ステップＳ６０４では、ブロック拡大縮小部１２０Ｂは、Ｘ方向およびＹ方向の分割数を算出する（第１の実施形態と同様）。第３の実施形態においては、１３３％に拡大する場合の例では、Ｘ方向の分割数は４０、Ｙ方向の分割数は５４、４１％に縮小する場合の例では、Ｘ方向の分割数は３３、Ｙ方向の分割数は１７になる。
【０２０６】
ステップＳ６０５では、拡大・縮小処理部１００Ｂは、各処理部に係るストライド値を算出する。ストライド値とは、拡大・縮小処理部１００Ｂの各処理部に入力されるブロック画像のデータの中で、隣接ブロックと重複なく出力される部分（最終的にブロック書き出し部１３０Ａで書き込まれる有効部分）の幅と高さである。拡大・縮小処理部１００Ｂは、各処理部におけるストライド値は、ブロック書き出し部１３０Ａが出力するブロック画像サイズを用いて、例えば、以下の（４８）式〜（５１）式を用いて求めることができる。
【０２０７】
なお、以下の（４８）式〜（５１）式において、ｘｓｔｒｉｄｅ［ｐ］、ｙｓｔｒｉｄｅ［ｐ］はそれぞれ、各処理部のＸ方向とＹ方向のストライド値である。
【０２０８】
ブロック書き出し部１３０Ａのストライド値は、以下の（４８）式、（４９）式を用いて求めることができる。
【０２０９】
ｘｓｔｒｉｄｅ［ｐ］＝（出力ブロック幅）  …（４８）
ｙｓｔｒｉｄｅ［ｐ］＝（出力ブロック幅）  …（４９）
ブロック書き出し部１３０Ａのストライド値は、以下の（４８）式、（４９）式を用いて求めることができる。
【０２１０】
拡大・縮小処理部１００Ｂを構成するブロック書き出し部１３０Ａ以外の各処理部のストライド値は、以下の（５０）式、（５１）式を用いて求めることができる。
【０２１１】
ｘｓｔｒｉｄｅ［ｐ］＝（ｘｓｔｒｉｄｅ［ｐ＋１］×ｘｂａｓｅ［ｐ］
＋ｘｒａｔｉｏ［ｐ］−１）／ｘｒａｔｉｏ［ｐ］  …（５０）
ｙｓｔｒｉｄｅ［ｐ］＝（ｙｓｔｒｉｄｅ［ｐ＋１］×ｙｂａｓｅ［ｐ］
＋ｙｒａｔｉｏ［ｐ］−１）／ｙｒａｔｉｏ［ｐ］  …（５１）
以下、拡大・縮小処理部１００Ｂで、１３３％に拡大する場合と４１％に縮小する場合とに分けて、各処理部のＸ方向とＹ方向のストライド値について説明する。
【０２１２】
まず、拡大・縮小処理部１００Ｂで、１３３％に拡大する場合の各処理部のＸ方向でのストライド値（ｘｓｔｒｉｄｅ）、及びＹ方向のストライド値（ｙｓｔｒｉｄｅ）の例について説明する。この場合、ブロック書き出し部１３０Ａ及び量子化処理部１９０では、ｘｓｔｒｉｄｅ＝３２、ｙｓｔｒｉｄｅ＝２５６となる。また、この場合、ブロックカット処理部１６０では、ｘｓｔｒｉｄｅ＝２５６、ｙｓｔｒｉｄｅ＝２５６となる。さらに、この場合、後解像度変換部１８０及び後フィルタ処理部１５０では、ｘｓｔｒｉｄｅ＝２５６、ｙｓｔｒｉｄｅ＝１２８となる。さらにまた、ブロック拡大縮小部１２０Ｂ、及び前フィルタ処理部１４０では、ｘｓｔｒｉｄｅ＝１９３、ｙｓｔｒｉｄｅ＝９７となる。また、前解像度変換部１７０、及びブロック読み出し部１１０Ａでは、ｘｓｔｒｉｄｅ＝９７、ｙｓｔｒｉｄｅ＝９７となる。
【０２１３】
次に、拡大・縮小処理部１００Ｂで、４１％に縮小する場合の各処理部のＸ方向でのストライド値（ｘｓｔｒｉｄｅ）、及びＹ方向のストライド値（ｙｓｔｒｉｄｅ）の例について説明する。この場合、ブロック書き出し部１３０Ａ、及び量子化処理部１９０では、ｘｓｔｒｉｄｅ＝１２、ｙｓｔｒｉｄｅ＝２５６となる。また、この場合、ブロックカット処理部１６０では、ｘｓｔｒｉｄｅ＝９６、ｙｓｔｒｉｄｅ＝２５６となる。さらに、この場合、後解像度変換部１８０、及び後フィルタ処理部１５０では、ｘｓｔｒｉｄｅ＝９６、ｙｓｔｒｉｄｅ＝１２８となる。さらにまた、この場合、ブロック拡大縮小部１２０Ｂ、及び前フィルタ処理部１４０では、ｘｓｔｒｉｄｅ＝２３５、ｙｓｔｒｉｄｅ＝３１３となる。また、この場合、前解像度変換部１７０、及びブロック読み出し部１１０Ａでは、ｘｓｔｒｉｄｅ＝１１８、ｙｓｔｒｉｄｅ＝３１３となる。
【０２１４】
次に、ステップＳ６０６では、拡大・縮小処理部１００Ｂは、ブロック画像毎のＸ方向とＹ方向の拡大・縮小カウンタ初期値、ブロック読み出し部１１０Ａが読み出す各ブロック画像のＸ方向とＹ方向の読み出し位置、及びブロック画像毎のＸ方向とＹ方向の微調整スキップ値を算出する。拡大・縮小処理部１００Ｂは、例えば、以下の（５２）式〜（６５）式を用いて、上述の各値を算出することができる。
【０２１５】
なお、以下の（５２）式〜（６５）式において、ｘｎｏ、ｙｎｏはＸ方向のブロック番号とＹ方向のブロック番号をあらわし、ｘｃｎｔ［］、ｙｃｎｔ［］はＸ方向の拡大・縮小カウンタの初期値とＹ方向の拡大・縮小カウンタをあらわす。また、ｘｐｏｓ０［］、ｙｐｏｓ０［］はＸ方向の読み出し位置とＹ方向の読み出し位置をあらわす。さらに、ｍｏｄｗ［］、ｍｏｄｈ［］はＸ方向の微調整スキップ値とＹ方向の微調整スキップ値をあらわす。さらにまた、ｘｓｔｒｉｄｅ、ｙｓｔｉｒｄｅはブロック拡大縮小部１２０Ｂの後段処理部のストライド値をあらわす。また、ｘｂａｓｅ、ｘｒａｔｉｏはブロック拡大縮小部１２０ＢのＸ方向の倍率の分母と分子をあらわし、ｙｂａｓｅ、ｙｒａｔｉｏはブロック拡大縮小部１２０ＢのＹ方向の倍率の分母と分子をあらわす。さらに、ｂｎｕｌｗとｂｎｕｌｈはブロック拡大縮小部１２０Ｂに入力されるブロック画像に含まれる左端と上端の無効画素の幅と高さ（左端累積無効サイズと上端累積無効サイズと同じ）である。さらにまた、ａｎｕｌｗとａｎｕｌｈはブロック拡大縮小部１２０Ｂの後段の処理でブロック画像に発生する無効画素数をあらわす。
【０２１６】
拡大・縮小処理部１００Ｂは、例えば、以下の（５２）式、（５３）式を用いて、ブロック画像毎のＸ方向の拡大・縮小カウンタ初期値を求めることができる。
【０２１７】
ｘｃｎｔ０［０］＝（ｘｒａｔｉｏ−（ａｎｕｌｗ×ｘｂａｓｅ）
％ｘｒａｔｉｏ）％ｘｒａｔｉｏ  …（５２）
ｘｃｎｔ０［ｘｎｏ］＝（ｘｓｔｒｉｄｅ×ｘｂａｓｅ＋ｘｃｎｔ０［ｘｎｏ−１］）
％ｘｒａｔｉｏ  …（５３）
拡大・縮小処理部１００Ｂは、例えば、以下の（５４）式、（５５）式を用いて、ブロック画像毎のＸ方向の拡大・縮小カウンタ初期値を求めることができる。
【０２１８】
ｙｃｎｔ０［０］＝（ｙｒａｔｉｏ−（ａｎｕｌｈ×ｙｂａｓｅ）
％ｙｒａｔｉｏ）％ｙｒａｔｉｏ  …（５４）
ｙｃｎｔ０［ｙｎｏ］＝（ｙｓｔｒｉｄｅ×ｙｂａｓｅ＋ｙｃｎｔ０［ｙｎｏ−１］）
％ｙｒａｔｉｏ  …（５５）
拡大・縮小処理部１００Ｂは、例えば、以下の（５６）式〜（５７）式を用いて、ブロック読み出し部１１０Ａが読み出す各ブロック画像のＸ方向の読み出し位置を求めることができる
ｘｐｏｓ０’［０］＝−（ａｎｕｌｗ×ｘｂａｓｅ＋ｘｒａｔｉｏ−１）
／ｘｒａｔｉｏ−ｂｎｕｌｗ  …（５６）
ｘｐｏｓ０’［ｘｎｏ］＝ｘｐｏｓ０’［ｘｎｏ−１］
＋（ｘｓｔｒｉｄｅ×ｘｂａｓｅ＋ｘｃｎｔ０［ｘｎｏ−１］）
／ｘｒａｔｉｏ  …（５７）
ｘｐｏｓ０［ｘｎｏ］＝（ｘｐｏｓ０’［ｘｎｏ］
×（前解像度変換部１７０のｘｂａｓｅ））
／（前解像度変換部１７０のｘｒａｔｉｏ）  …（５８）
拡大・縮小処理部１００Ｂは、例えば、以下の（５９）式〜（６１）式を用いて、ブロック読み出し部１１０Ａが読み出す各ブロック画像のＸ方向の読み出し位置を求めることができる。
【０２１９】
ｙｐｏｓ０’［０］＝−（ａｎｕｌｈ×ｙｂａｓｅ＋ｙｒａｔｉｏ−１）
／ｙｒａｔｉｏ−ｂｎｕｌｈ  …（５９）
ｙｐｏｓ０’［ｙｎｏ］＝ｙｐｏｓ０’［ｙｎｏ−１］
＋（ｙｓｔｒｉｄｅ×ｙｂａｓｅ＋ｙｃｎｔ０Ｏ［ｙｎｏ−１］）
／ｙｒａｔｉｏ  …（６０）
ｙｐｏｓ０［ｙｎｏ］＝（ｙｐｏｓ０’［ｙｎｏ］
×（前解像度変換部１７０のｙｂａｓｅ））
／（前解像度変換部１７０のｙｒａｔｉｏ）  …（６１）
拡大・縮小処理部１００Ｂは、例えば、以下の（６２）式、（６３）式を用いて、Ｘ方向の微調整スキップ値を求めることができる。
【０２２０】
ｍｏｄｗ［０］＝（（ａｎｕｌｗ×ｘｂａｓｅ＋ｘｒａｔｉｏ−１）
／ｘｒａｔｉｏ）％（前解像度変換部１７０のｘｒａｔｉｏ）
ｍｏｄｗ［ｘｎｏ］＝（ｍｏｄｗ［ｘｎｏ−１］  …（６２）
＋（ｘｓｔｒｉｄｅ×ｘｂａｓｅ＋ｘｃｎｔ０［ｘｎｏ−１］）
／ｘｒａｔｉｏ）％（前解像度変換部１７０ｘのｒａｔｉｏ）  …（６３）
拡大・縮小処理部１００Ｂは、例えば、以下の（６４）式、（６５）式を用いて、Ｙ方向の微調整スキップ値を求めることができる。
【０２２１】
ｍｏｄｈ［０］＝（（ａｎｕｌｈ×ｙｂａｓｅ＋ｙｒａｔｉｏ−１）
／ｙｒａｔｉｏ）％（前解像度変換部１７０のｙｒａｔｉｏ）
ｍｏｄｈ［ｙｎｏ］＝（ｍｏｄｈ［ｙｎｏ−１］  …（６４）
＋（ｙｓｔｒｉｄｅ×ｙｂａｓｅ＋ｙｃｎｔ０［ｙｎｏ−１］）
／ｙｒａｔｉｏ）％（前解像度変換部１７０のｙｒａｔｉｏ）  …（６５）
以上のように、ブロック拡大・縮小部１２０Ｂでは、上記の式を用いて、第１、第２の実施形態と同様に、Ｘ方向であれば左端のブロックから順番に、Ｙ方向であれば上端のブロックから順番に上述の各値を算出する。
【０２２２】
画像処理装置１では、以上説明したステップＳ６０１〜Ｓ６０６で算出したパラメータを使用して、拡大・縮小処理部１００Ｂを動作させることで、１ページの画像データを複数のブロックに分割して任意倍率の拡大・縮小と前後のフィルタ処理と前後の解像度変換処理と量子化処理を行うことができる。
【０２２３】
次に、拡大・縮小処理部１００Ｂが、上述のステップＳ６０１〜Ｓ６０６で算出した各パラメータを用いた具体的な動作（１３３％に拡大する場合の例）について説明する。
【０２２４】
まず、ブロック読み出し部１１０Ａの動作について図２３を用いて説明する。
【０２２５】
図２３は、拡大・縮小処理部１００Ｂで１３３％の拡大処理を実行する場合において、ブロック読み出し部１１０Ａにより、画像メモリ６０に記憶された１ページの画像をＸ方向とＹ方向に分割したブロック画像として読み出す動作の具体例である。
【０２２６】
図２３に示すように、で示すように、ブロック読み出し部１１０Ａで読み出されるブロック画像は隣接ブロックと重複部分を持つように読み出される。ブロック読み出し部１１０Ａで、読み出す１ページの画像データの最も左の画素のＸ方向の位置を０、最も上の画素のＹ方向の位置を０とすると、分割したブロック画像のＸ方向とＹ方向の読み出し開始位置は、Ｘ方向の読み出し開始位置についてはＸ方向のブロック番号０、１、２、３、４、・・・に対応して、−７、８９、１８５、２８１、３７８、・・・とＹ方向の読み出し開始位置についてはＹ方向のブロック番号０、１、・・・に対応して、−１４、８２となる。例えば、Ｘ方向のブロック番号が２、Ｙ方向のブロック番号が１であれば、Ｘ方向とＹ方向の読み出し位置は（１８５、８２）になる。また、読み出される各ブロック画像のサイズは、全てのブロック画像で共通である（例では、横１１２×縦１２５）。なお、ページの外周近辺で読み出されるブロック画像については、ページ外の領域より読み出す必要があり、前記のページ外の領域のデータは、白データ（ダミーデータ）で置換したり、ページ外との境界に位置する画素を使って置換する。
【０２２７】
ブロック読み出し部１１０Ａは、各ブロック画像について、各ブロック画像のＸ方向とＹ方向のブロック番号にしたがって、Ｘ方向とＹ方向の読み出し位置を変更しながら読み出し、読み出したブロック画像を前解像度変換部１７０に供給する。
【０２２８】
前解像度変換部１７０に入力されたブロック画像（ブロック画像のサイズは横１１２×縦１２５）は、前解像度変換部１７０でＸ方向に２倍に拡大され、拡大された画像が前フィルタ処理部１４０に供給される。
【０２２９】
図２４は、前解像度変換部１７０で１つのブロック画像に対して実行される処理について示した説明図である。
【０２３０】
図２４（ａ）は、前解像度変換部１７０に供給されるブロック画像について示した説明図である。図２４（ｂ）は、前解像度変換部１７０で解像度の拡大処理（Ｘ方向の拡大処理）が行われたブロック画像について示した説明図である。図２４（ｃ）は、前フィルタ処理部１４０における画像ブロックの処理について示した説明図である。
【０２３１】
図２４（ａ）、図２４（ｂ）に示すように、解像度変換後のブロック画像のサイズは横２２４×縦１２５になる。また、この実施形態では、前解像度変換部１７０は、上述の拡大処理（Ｘ方向の解像度を２倍拡大する処理）を線形補間拡大法で行うものとする。この場合、前解像度変換部１７０は、ブロック画像の右端に１画素無効画素が発生する（右端の１画素は右隣りの画素を参照できないため）。
【０２３２】
そして、図２４（ｃ）に示すように、前フィルタ処理部１４０に入力されたブロック画像（ブロック画像のサイズは横２２４×縦１２５）は、前フィルタ処理部１４０により、注目画素を中心に２５×２５の画素参照を行うフィルタ処理が施される。そして、前フィルタ処理部１４０は、そのフィルタ処理後のブロック画像を、ブロック拡大・縮小部２２０に供給する。図２３（ｃ）に示すように、上述のフィルタ処理により前フィルタ処理部１４０の処理後のブロック画像には、左端、右端、上端、下端に無効な画素が各１２画素発生する。また、上述の通り、右端については前段の前解像度変換部１７０でも無効画素が１画素発生するため、前解像度変換部１７０と前フィルタ処理部１４０とで、あわせて１３画素が無効画素となる。
【０２３３】
ブロック拡大・縮小部２２０に供給されたブロック画像は、ブロック拡大縮小部１２０Ｂで拡大・縮小処理（ここでは１３３％拡大の処理）が行われ、拡大されたブロック画像が後フィルタ処理部１５０に供給される。
【０２３４】
図２５は、ブロック拡大・縮小部１２０Ｂで実行される画像ブロックに対する拡大処理の例について示した説明図である。
【０２３５】
図２５（ａ）は、ブロック拡大・縮小部１２０Ｂに供給されたブロック画像について示した説明図である。図２５（ｂ）は、ブロック拡大・縮小部１２０ＢでＸ方向について拡大処理されたブロック画像の例について示した説明図である。図２５（ｃ）は、ブロック拡大・縮小部１２０ＢでＹ方向について拡大処理されたブロック画像の例について示した説明図である。図２５（ｄ）は、ブロック拡大・縮小部１２０Ｂで行われるＸ方向の拡大処理の例について示した説明図である。図２５（ｅ）は、ブロック拡大・縮小部１２０Ｂで行われるＹ方向の拡大処理の例について示した説明図である。
【０２３６】
図２５（ａ）〜図２５（ｃ）に示すように、ブロック拡大・縮小部１２０Ｂに供給されたブロック画像（横２２４×縦１２５）は、まず、Ｘ方向拡大・縮小部１２１ＢによりＸ方向について拡大され（ブロック画像サイズは横２６０×縦１２５）、次にＹ方向拡大・縮小部１２２ＢによりＹ方向ついて拡大されて出力される（ブロック画像サイズは横２６０×縦１２５）。
【０２３７】
図２５（ｄ）に示すように、Ｘ方向拡大・縮小部１２１Ｂで行われるＸ方向の拡大では、Ｘ方向のＸ方向拡大・縮小カウンタ１２１ａが各ブロック画像のライン先頭で、当該ブロックのＸ方向のブロック番号に対応する拡大・縮小カウンタの初期値に設定される。Ｘ方向拡大・縮小部１２１Ｂでは、例えば、Ｘ方向のブロック番号が２であれば、Ｘ方向拡大・縮小カウンタ１２１ａが６１に設定される。
【０２３８】
Ｘ方向拡大・縮小部１２１Ｂは、ブロック画像の左端よりカウントが開始されるＸ方向スキップカウンタ１２１ｃが全ブロックで共通の所定の値（ここでの例では１２）と、当該ブロック画像のＸ方向のブロック番号に対応する微調整スキップ値（例では１）の合計値（ここでの例では１２＋１＝１３）になるまで入力画素を無視した後（前段の処理で発生したブロック画像左端の無効画素１２画素と読み出し位置の都合により発生する余分な１画素は前記の動作により削除される）、及びＸ方向拡大・縮小カウンタ１２１ａにしたがってライン毎に拡大が行われる。そして、Ｘ方向拡大・縮小部１２１Ｂは、Ｘ方向出力カウンタ１２１ｂが所定の値（ここでの例では、２６０）になるまで拡大して出力する（前記の動作により前段の処理で発生したブロック右端の無効画素１２画素および余分な画素が削除される）。
【０２３９】
Ｙ方向拡大・縮小部１２２Ｂは、Ｙ方向の拡大処理を行う際に、Ｙ方向拡大・縮小カウンタ１２２ａが各ブロックの先頭ラインで当該ブロック画像のＹ方向のブロック番号に対応するＹ方向拡大・縮小カウンタ１２２ａの初期値に設定される。例えば、Ｙ方向のブロック番号が１であれば、Ｙ方向拡大・縮小カウンタ１２２ａの初期値は９８に設定される。Ｙ方向拡大・縮小部１２２Ｂは、ブロック上端よりカウントが開始されるスキップカウンタが所定の値（例では１２）になるまで入力画素を無視した後（前段の処理で発生したブロック上端の無効画素１２画素は前記の動作により削除される）、Ｙ方向拡大・縮小カウンタ１２２ａにしたがって拡大が行われる。そして、Ｙ方向拡大・縮小部１２２Ｂでは、Ｙ方向出力カウンタ１２２ｂが所定の値（例では１３２）になるまで拡大して出力する（前記の動作により前段の処理で発生したブロック画像下端の無効画素１２画素および余分な画素が削除される）。
【０２４０】
以上のように、ブロック拡大・縮小部１２０Ｂは供給されるブロック画像を拡大するとともに、前段の前フィルタ処理部１４０のフィルタ処理により生じたブロック画像端部の無効画素と読み出しの都合により発生する余分な画素を削除する。そして、ブロック拡大・縮小部１２０Ｂは、各ブロック画像のサイズを同じ大きさにして出力する。そして、ブロック拡大・縮小部１２０Ｂから出力されるブロック画像は後フィルタ処理部１５０に供給される。
【０２４１】
図２６は、後フィルタ処理部１５０、後解像度変換部１８０、及びブロックカット処理部１６０によるブロック画像の処理について示した説明図である。
【０２４２】
図２６（ａ）は、後フィルタ処理部１５０に供給されるブロック画像について示した説明図である。図２６（ｂ）は、後フィルタ処理部１５０で後フィルタ処理されたブロック画像について示した説明図である。図２６（ｃ）は、後解像度変換部１８０により解像度変換されたブロック画像について示した説明図である。図２６（ｄ）は、ブロックカット処理部１６０により一部がカット処理されたブロック画像について示した説明図である。
【０２４３】
図２６（ａ）、図２６（ｂ）に示すように、後フィルタ処理部１５０は、供給されたブロック画像（ブロック画像のサイズは横２６０×縦１３２）について、注目画素を中心に５×５の画素参照を行うフィルタ処理を行う。そして、後フィルタ処理部１５０は、そのフィルタ処理されたブロック画像を後解像度変換部１８０に供給する。図２６（ｂ）に示すように、後フィルタ処理部１５０によるブロック画像のフィルタ処理により、処理後のブロック画像には、左端、右端、上端、下端に無効な画素が各２画素発生する。
【０２４４】
図２６（ｃ）に示すように、後解像度変換部１８０は、供給されたブロック画像（ブロック画像のサイズは横２６０×縦１３２）について、Ｙ方向に２倍に拡大し、拡大さしたブロック画像を、ブロックカット処理部１６０に供給する。図２６（ｃ）に示すように、後解像度変換部１８０により解像度変換されたブロック画像のサイズは、横２６０×縦２６４になる。また、この実施形態では、後解像度変換部１８０は、ブロック画像について、上述の２倍拡大処理を単純拡大法により行うようにしてもよい。この場合、後解像度変換部１８０により拡大処理されるブロック画像で、その拡大処理に伴って無効となる画素は発生しない。なお、後解像度変換部１８０により拡大処理されたブロック画像の上端および下端の無効画素については、前記のＹ方向の拡大によって引き伸ばされるため、上端および下端で各４画素の無効画素が発生することになる。
【０２４５】
図２６（ｄ）に示すように、ブロックカット処理部１６０は、供給されたブロック画像（ブロック画像のサイズは横２６０×縦２６４）について、前段の処理で発生したブロック画像端部の無効画素（ここでは、左端及び右端に各２画素、上端及び下端に各４画素）が削除（カット）される。そして、ブロックカット処理部１６０は、無効画素がカットされたブロック画像（ブロック画像のサイズは横２５６×縦２５６）を、ブロック書き出し部１３０Ａに供給する。
【０２４６】
ブロック書き出し部１３０Ａは、第１の実施形態、第２の実施形態と同様、供給されたブロック画像をＸ方向とＹ方向に一定の間隔（Ｘ方向については２５６、Ｙ方向については２５６）で画像メモリ６０に書き込み、１ページ分の画像データＧ１０４を作成する。
【０２４７】
（Ｃ−３）第３の実施形態の効果
第３の実施形態によれば、以下のような効果を奏することができる。
【０２４８】
第３の実施形態の画像処理装置１Ｂでは、任意倍率の拡大・縮小処理（拡大・縮小処理部１００Ｂ）の前後で、解像度変換や量子化処理（前解像度変換部１７０、後解像度変換部１８０、及び量子化処理部１９０による処理）を行う場合でも、第２の実施形態と同様に、画像メモリ６０から画像データの読み出しや書き出しについては、２つの画像データ（Ｇ１０１、Ｇ１０４）の処理だけで良い。したがって、第３の実施形態の画像形成装置１Ｂでは、任意倍率の拡大・縮小処理の前後で、解像度変換や量子化処理を行う場合に、第２の実施形態と同様に、画像メモリ６０へのアクセス量を低減して処理の高速化及び必要なメモリ容量の低減を実現することができる。言い換えると、第３の実施形態の画像処理装置１Ｂでは、任意倍率の拡大・縮小処理の前後で、解像度変換や量子化処理を行う場合に、像画像メモリ６０で必要となるメモリ容量を小さくでき、処理を高速化できる。
【０２４９】
また、第３の実施形態の画像処理装置１Ｂでは、解像度変換処理（前解像度変換部１７０、後解像度変換部１８０による処理）により、画像入力部１０が出力する画像データの解像度や画像出力部５０が期待する画像データの解像度に合わせて処理を行うことが可能である。
【０２５０】
（Ｄ）第４の実施形態
以下、本発明による画像処理装置及び方法、並びに、画像形成装置の第４の実施形態を、図面を参照しながら詳述する。
【０２５１】
（Ｄ−１）第４の実施形態の構成
図２７は、本発明の第４実施形態における画像形成装置１Ｃの機能的構成を示すブロック図であり、上述の図１７と同一又は対応する部分に同一又は対応する符号を付している。
【０２５２】
第４の実施形態では、拡大・縮小処理部１００Ｂが拡大・縮小処理部１００Ｃに置き換わり、サムネイル画像出力部７０が追加されている点で第３の実施形態と異なっている。そして、第３の実施形態のブロック拡大・縮小部１２０Ｃには、サイズ再変更手段としてのサムネイル縮小部２００、及び再変更画像生成手段としてのサムネイル書き出し部２１０が追加されている点で第３の実施形態と異なっている。
【０２５３】
例えば、本発明の画像処理装置を複合機に適用した場合を想定する。そして、当該画像処理装置で、印刷用紙（媒体）に印刷（画像形成）するための画像出力部の他に、ディスプレイ（オペレーションパネルのタッチパネルディスプレイ）等の表示装置を備える場合、スキャンした原稿のサムネイル（縮小画像）を当該ディスプレイに表示出力する構成が必要となる場合がある。この場合、当該画像処理装置ででは、印刷用紙に印刷するために必要な画像データの他に、ディスプレイに表示するためのサムネイルの画像データも生成する必要がある。
【０２５４】
そこで、第４の実施形態の画像処理装置１Ｃは、画像出力部５０とは異なる形式の画像データを生成して出力するための構成要素として、サムネイル縮小部２００、サムネイル書き出し部２１０、及びサムネイル画像出力部７０を有している。
【０２５５】
ここでは、例として、画像出力部５０は、印刷用紙（媒体）に印刷（画像形成）する画像形成手段として機能するものとする。そして、サムネイル画像出力部７０は、サムネイル画像（画像出力部５０に供給される画像データＧ１０４に対応する縮小画像）をディスプレイに表示出力する表示出力手段として機能するものとして説明する。すなわち、サムネイル画像出力部７０では、画像出力部５０で出力される画像よりも小さいサイズに縮小された画像が出力されるものとして説明する。
【０２５６】
サムネイル縮小部２００は、ブロックカット処理部１６０から供給されるブロック画像についてブロック画像毎にサムネイル用の縮小を行い、縮小を行ったブロック画像をサムネイル書き出し部２１０に供給する。
【０２５７】
サムネイル書き出し部２１０は、サムネイル縮小部２００で縮小されたブロック画像を、画像メモリ６０に順次書き込み、１画面分の画像データＧ２０１として生成する。
【０２５８】
サムネイル書き出し部２１０に入力されるブロック画像は、前段の処理（この実施形態ではブロック処理部２３０）の動作により、ブロック間で重複する画素がカットされる。また、サムネイル書き出し部２１０に供給される各ブロック画像の幅と高さは一定となっているので、サムネイル書き出し部２１０は、Ｘ方向とＹ方向に一定の間隔でブロック画像を画像メモリ６０に書き出すことで１ページ分の画像データＧ２０１を作成することができる。
【０２５９】
サムネイル画像出力部７０としてのディスプレイは、例えば、コピー機や複合機等のオペレーションパネル等に用いられる表示装置であり、サムネイル書き出し部２１０が書き出した画像データＧ２０１を画像メモリ６０より読み出し、画像データＧ２０１に対応するサムネイル画像を表示出力する。
【０２６０】
図２８は、サムネイル画像出力部７０のディスプレイに表示される画像データＧ２０１に基づく画像について示した説明図である。
【０２６１】
なお、ここでは、例えば、ユーザ操作（例えば、画像処理装置１Ｃが備えるサムネイル画像出力部７０としてのディスプレイ等を含むオペレーションパネルに対する操作）に応じて、ブロック拡大・縮小部１２０Ｃに設定される画像データＧ１０４の倍率を受付けるようにしてもよい。
【０２６２】
図２８（ａ）、図２８（ｂ）、図２８（ｃ）は、それぞれ、ブロック拡大・縮小部１２０Ｃに設定する倍率（例えば、ユーザに指定された倍率）を１００％、４１％、１３３％とした場合に、サムネイル画像出力部７０に表示される画像データＧ２０１の画像について示している。
【０２６３】
すなわち、サムネイル縮小部２００では、入力されるブロック画像を、サムネイル画像出力部７０のディスプレイのサイズ（垂直方向及び水平方向の画素数）に応じた解像度に縮小する（通常ディスプレイに表示される画像の解像度は印刷に用いられる画像の解像度より低いため縮小のみ行われる）。サムネイル縮小部２００のディスプレイの解像度は、適用するデバイスによって異なるため、サムネイル縮小部２００では、任意倍率の縮小を行う必要が生じる。しかし、サムネイル縮小部２００が、完全に任意の倍率での縮小を行うことに対応してしまうと、出力するブロック画像のサイズがブロック画像毎に変わったり、前段のブロック拡大縮小部１２０Ｂ同様にブロック毎に拡大・縮小カウンタの初期値等が必要となる等複雑な構成（例えば、ブロック拡大・縮小部１２０Ｂと同様の公正）が必要となる。そのため、サムネイル縮小部２００では、下記のように、入力されるブロック画像のサイズに基づいて、倍率の分母を決定し、決定した倍率の分母と目標とする倍率（ユーザから設定を受付けた倍率、すなわち、ブロック拡大・縮小部１２０Ｃに設定される倍率）より倍率の分子を決定することが好ましい。
【０２６４】
なお、以下の（６６）式〜（６９）式において、ｘｂａｓｅ＿ｔ、ｘｒａｔｉｏ＿ｔは、それぞれサムネイル縮小部２００に適用されるＸ方向の倍率の分母と分子の値を表している。また、ｙｂａｓｅ＿ｔ、ｙｒａｔｉｏ＿ｔは、それぞれサムネイル縮小部２００に適用されるＹ方向の倍率の分母と分子の値を表している。さらに、ｘｓｃａｌｅ、ｙｓｃａｌｅは、それぞれ、サムネイル縮小部２００で目標となるＸ方向の倍率、Ｙ方向の倍率を示している。ここでは、ｘｓｃａｌｅ、ｙｓｃａｌｅに、それぞれサムネイル縮小部２００に供給されるブロック画像の解像度（すなわち、画像出力部５０に供給される画像データＧ１０４の解像度）と、サムネイル画像出力部７０のディスプレイの解像度との比率に基づく倍率が適用されるものとする。
【０２６５】
（サムネイル縮小部２００のＸ方向の倍率分母ｘｂａｓｅ＿ｔ）＝
（サムネイル縮小部２００に入力されるブロック幅）  …（６６）
（サムネイル縮小部２００のＸ方向の倍率分子ｘｒａｔｉｏ＿ｔ）＝
（サムネイル縮小部２００のＸ方向の倍率分母ｘｂａｓｅ＿ｔ）
×（目標とするＸ方向の倍率ｘｓｃａｌｅ）  …（６７）
（サムネイル縮小部２００のＹ方向の倍率分母ｙｂａｓｅ＿ｔ）＝
（サムネイル縮小部２００に入力されるブロック高さ）  …（６８）
（サムネイル縮小部２００のＹ方向の倍率分子ｙｒａｔｉｏ＿ｔ）＝
（サムネイル縮小部２００のＹ方向の倍率分母ｙｂａｓｅ＿ｔ）
×（目標とするＹ方向の倍率ｙｓｃａｌｅ）  …（６９）
サムネイル縮小部２００では、上記の倍率を適用することで、ブロック毎の拡大・縮小カウンタの初期値は全てのブロックで一定となる。したがって、サムネイル縮小部２００は、Ｘ方向の縮小カウンタとＹ方向の縮小カウンタのみの簡易な構成でＸ方向とＹ方向について各々任意倍率に近い縮小処理を行うことができる（サムネイル画像は、ユーザに対して補助的な表示を行うのが目的であり、前記の表示装置が期待する解像度に近い解像度に縮小できれば支障がない）。
【０２６６】
（Ｄ−２）第４の実施形態の動作
以下では、第４の実施形態の画像形成装置１Ｃの動作について、第３の実施形態の動作との差異を中心に説明する。第４の実施形態では、上述の通り、第３の実施形態の画像形成装置１Ｂに、サムネイル画像の処理構成（サムネイル縮小部２００、サムネイル書き出し部２１０、及びサムネイル画像出力部７０）が追加されただけであるので、これらの構成要素の動作についてのみ説明する。
【０２６７】
まず、サムネイル縮小部２００で行われるＸ方向とＹ方向の縮小処理の詳細について、図２９のフローチャートを用いて説明する。
【０２６８】
図２９のフローチャートは、サムネイル縮小部２００が行うブロック画像の１ライン分のデータについてのＸ方向の縮小処理を説明するものである。なお、図２９において、ｘｃｎｔ＿ｔは、サムネイル縮小部２００の処理で用いられる縮小カウンタである。
【０２６９】
まず、ステップＳ７０１では、サムネイル縮小部２００は、ライン先頭で縮小カウンタｘｃｎｔ＿ｔを０にリセットする。
【０２７０】
ステップＳ７０２で、サムネイル縮小部２００は、縮小カウンタｘｃｎｔ＿ｔの値が倍率の分子（ｘｒａｔｉｏ＿ｔ）の値より小さいか判定を行い、小さければステップＳ７０３へ進み画素の出力を行い、それ以外の場合は画素の出力を行わずにステップＳ７０５へ進む。
【０２７１】
ステップＳ７０３では、サムネイル縮小部２００は、画素の出力を行い、縮小カウンタｘｃｎｔ＿ｔに倍率の分母値ｘｂａｓｅ＿ｔを加算し、ステップＳ７０４へ進む。サムネイル縮小部２００が出力する画素（画素値）は、例えば、単純縮小法であれば現画素となる。
【０２７２】
ステップＳ７０４では、サムネイル縮小部２００は、上述のＳステップ７０３で更新された縮小カウンタｘｃｎｔ＿ｔの値が倍率の分子の値ｘｂａｓｅ＿ｔ以上であるか判定を行い、ｘｂａｓｅ＿ｔ以上であればステップＳ７０５（入力画素位置の更新）へ進み、それ以外の場合はステップＳ７０６へ進む。
【０２７３】
ステップＳ７０５では、サムネイル縮小部２００は、縮小カウンタｘｃｎｔ＿ｔの値から倍率の分子ｘｒａｓｉｏ＿ｔの値を減算し、入力画素位置を更新し（現画素の右隣りの画素を次の現画素とし）、ステップＳ７０６へ進む。
【０２７４】
ステップＳ７０６では、サムネイル縮小部２００は、１ライン終了したか判定（処理中のラインの全ての画素を出力したか否かの判定）を行い、１ライン終了した場合は１ライン処理を終了し（次の入力画素ラインの処理を行う）、達していない場合は上述のステップＳ７０２に戻る。
【０２７５】
以上のように、サムネイル縮小部２００は、１つのブロック画像の全てのＸ方向のラインについて縮小処理を行う。サムネイル縮小部２００は、同様の処理を各ブロック画像のＸ方向及びＹ方向について行い、各ブロック画像を縮小して出力することになる。
【０２７６】
次に、ブロック拡大・縮小部１２０Ｃの全体の具体的動作について説明する。
【０２７７】
以下の動作説明では、第３の実施形態と同様に、幅３８４０ピクセル、高さ５１２０ピクセルの画像データＧ１０１（横３００ＤＰＩ×縦６００ＤＰＩ）を１３３％の倍率で拡大する場合と４１％の倍率で縮小する場合を例に挙げ説明する。
【０２７８】
なお、以下では、また、ｘｂａｓｅ＿ｔ、ｘｒａｔｉｏ＿ｔは、それぞれＸ方向の倍率の分母と分子の値を表すものとする。また、ｙｂａｓｅ＿ｔ、ｙｒａｔｉｏ＿ｔは、それぞれＹ方向の倍率の分母と分子の値を表すものとする。
【０２７９】
また、以下の動作説明では、第３の実施形態と同様、前フィルタ処理部１４０では注目画素を中心に２５×２５の画素参照を行うフィルタ処理が行われ、後フィルタ処理部１５０では注目画素を中心に５×５の画素参照を行うフィルタ処理が行われ、前解像度変換部１７０ではＸ方向の解像度を２倍にする処理が行われ、後解像度変換部１８０ではＹ方向の解像度を２倍にする処理が行われ、量子化処理部１９０では画素当たり８ｂｉｔの画像データを画素当たり１ｂｉｔの画像データに変換する処理が行われるもとする。また、以下の動作説明では、前フィルタ処理部１４０、ブロック拡大・縮小部１２０Ｂ、後フィルタ処理部１５０、後解像度変換処理部３３０は、それぞれ、２８８、２６４、２６２、２６２画素分の画像データ（画素値）を保持するラインメモリを備え、各処理部における出力可能なブロック幅は前記の値が上限であるものとする。
【０２８０】
なお、拡大・縮小処理部１００Ｃのサムネイル縮小部２００、サムネイル書き出し部２１０以外の処理部に必要なパラメータの算出や動作については、第３の実施形態と同様であるので説明を省略する。
【０２８１】
また、以下では、拡大・縮小処理部１００Ｃのサムネイル縮小部２００およびサムネイル書き出し部２１０の動作について、サムネイル画像出力部７０の期待する画像データの解像度（ディスプレイの仕様としての解像度）が横６０ＤＰＩ、縦６０ＤＰＩであった場合を例に挙げ説明する。
【０２８２】
ブロック拡大・縮小部１２０Ｃで１３３％の拡大処理が行われる場合、サムネイル縮小部２００に供給されるブロック画像サイズ（ブロックカット処理部１６０から出力されるブロック画像のサイズ）は、横２５６×縦２５６（上述の図２２（ａ）に記載の通り）となる。また、ブロック拡大・縮小部１２０Ｃで４１％の縮小処理が行われる場合、サムネイル縮小部２００に供給されるブロック画像サイズは、横９６×縦２５６（上述の図２２（ｂ）に記載の通り）となる。
【０２８３】
ブロック拡大・縮小部１２０Ｃで１３３％の拡大処理が行われる場合、サムネイル縮小部２００で適用される倍率の分母は、Ｘ方向の倍率の分母ｘｂａｓｅ＿ｔが２５６、Ｙ方向の倍率の分母ｙｂａｓｅ＿ｔが２５６となる。また、ブロック拡大・縮小部１２０Ｃで４１％の縮小処理が行われる場合、サムネイル縮小部２００で適用される倍率の分母は、Ｘ方向の倍率の分母ｘｂａｓｅ＿ｔが９６、Ｙ方向の倍率の分母ｙｂａｓｅ＿ｔが２５６となる。
【０２８４】
ここでは、上述の通りサムネイル縮小部２００に供給されるブロック画像の解像度は横６００ＤＰＩ、縦１２００ＤＰＩである。したがって、この場合、サムネイル縮小部２００で行う縮小のＸ方向の目標倍率ｘｓｃａｌｅは０．１、Ｙ方向の目標倍率ｙｓｃａｌｅは０．０５となる。
【０２８５】
したがってここでは、ブロック拡大・縮小部１２０Ｃで１３３％の拡大処理が行われる場合、サムネイル縮小部２００で適用されるＸ方向の倍率の分子ｘｒａｔｉｏ＿ｔは２５６×０．１＝２５、Ｙ方向の倍率の分子ｙｒａｔｉｏ＿ｔは２５６×０．０５＝１２となる。また、ブロック拡大・縮小部１２０Ｃで４１％の縮小処理が行われる場合、Ｘ方向の倍率の分子ｘｒａｔｉｏ＿ｔは９６×０．１＝９、Ｙ方向の倍率の分子ｙｒａｔｉｏ＿ｔは２５６×０．０５＝１２となる。
【０２８６】
したがって、ブロック拡大・縮小部１２０Ｃで１３３％の拡大処理が行われる場合、サムネイル縮小部２００で行うＸ方向の縮小の倍率の値（ｘｒａｔｉｏ＿ｔ／ｘｂａｓｅ＿ｔ）が０．０９７６５６２５、Ｙ方向の縮小の倍率の値（ｙｒａｔｉｏ＿ｔ／ｙｂａｓｅ＿ｔ）が０．０４６８７５となる。また、ブロック拡大・縮小部１２０Ｃで４１％の縮小処理が行われる場合、サムネイル縮小部２００で行うＸ方向の縮小の倍率の値（ｘｒａｔｉｏ＿ｔ／ｘｂａｓｅ＿ｔ）が０．０９３７５、Ｙ方向の縮小の倍率の値（ｙｒａｔｉｏ＿ｔ／ｙｂａｓｅ＿ｔ）が０．０４６８７５となる。
【０２８７】
したがって、ブロック拡大・縮小部１２０Ｃで１３３％の拡大処理が行われる場合、サムネイル縮小部２００が出力するブロック画像サイズは、横２５×縦１２となる。
【０２８８】
また、ブロック拡大・縮小部１２０Ｃで４１％の縮小処理が行われる場合、サムネイル縮小部２００が出力するブロック画像サイズは、横９×縦１２となる。
【０２８９】
そして、サムネイル縮小部２００が出力するブロック画像が、サムネイル書き出し部２１０に供給される。
【０２９０】
ブロック拡大・縮小部１２０Ｃで１３３％の拡大処理が行われる場合、サムネイル書き出し部２１０は、Ｘ方向に２５、Ｙ方向に１２の一定の間隔で画素値（各ブロック画像の画素値）をメモリ６０に書き出し、１ページ分のサムネイル表示用の画像データＧ２０１を作成する。また、ブロック拡大・縮小部１２０Ｃで４１％の縮小処理が行われる場合、サムネイル書き出し部２１０は、Ｘ方向に９、Ｙ方向に１２の一定の間隔で画素値（各ブロック画像の画素値）をメモリ６０に書き出し、１ページ分のサムネイル表示用の画像データＧ２０１を作成する。
【０２９１】
以上の処理により、ブロック拡大・縮小部１２０Ｃで１３３％の拡大処理が行われる場合、サムネイル表示用の画像データＧ２０１の画像は、横９９８×縦６３９の画像となる。また、ブロック拡大・縮小部１２０Ｃで４１％の縮小処理が行われる場合、サムネイル表示用の画像データＧ２０１の画像は、横２９６×縦１９７の画像となる。
【０２９２】
（Ｄ−３）第４の実施形態の効果
第４の実施形態によれば、以下のような効果を奏することができる。
【０２９３】
第４の実施形態の画像処理装置１Ｃでは、印刷用の画像データとサムネイル用の画像データなど複数の異なる解像度の画像データを作成する場合においても、各々を作成するためだけにメモリ６０から、画像データを読み込んで処理する必要がない。
【０２９４】
例えば、第１〜第３の実施形態において、画像出力部５０とは別に、画像出力部５０が期待する画像データと解像度等が異なる画像データを期待する画像出力部（例えば、サムネイル画像出力部７０）があった場合、各ブロック画像の処理部は、その解像度等が異なる画像出力部が期待する画像データに係るブロック画像についても処理する必要がある。しかし、第４の実施形態の画像処理装置１Ｃでは、ブロックカット処理部１６０までの段は、画像出力部５０とサムネイル画像出力部７０とで共有しているため、それ以後の段の処理部（サムネイル縮小部２００、サムネイル書き出し部２１０）のみを備えることにより、サムネイル画像出力部７０が期待する解像度の画像データを生成することができる。
【０２９５】
したがって、画像処理装置１Ｃでは、複数の異なる解像度の画像データを作成する場合において、画像メモリ６０で必要となるメモリ容量の低減や、処理の高速化を実現することができる。
【０２９６】
また、画像処理装置１Ｃにおいて、作成されるサムネイル用の画像データは、ユーザの倍率指定等の処理結果が反映されたデータとなるので、ユーザが取得する印刷等の内容を適切に表示出力することができる。
【０２９７】
（Ｄ）他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【０２９８】
（Ｄ−１）上記の各実施形態の画像形成装置としては、例えば、コピー機、複合機、ＦＡＸ等の画像データに対して任意倍率を含む画像処理を行う装置に適用可能である。
【０２９９】
また、本発明の画像処理装置で処理した画像を出力する手段は、印刷等の画像形成に限定されず、ディスプレイに表示出力したり、電子データとして外部装置（例えばホストＰＣ等）や記録媒体（例えば、ＣＤ−ＲＯＭやＨＤＤ等）に記録するようにしてもよい。例えば、上記の各実施形態の画像形成装置に搭載された画像処理装置は、画像形成装置に限定されず、他の画像処理を行う装置（例えば、デジタルカメラ、スキャナ、デジタルビデオレコーダ等）に適用するようにしてもよい。
【０３００】
（Ｄ−２）上記の各実施形態の画像形成装置（画像処理装置）では、画像をブロック画像に分割する際に、Ｘ方向及びＹ方向について拡大・縮小処理を行っているが、いずれか一方の方向（Ｘ方向又はＹ方向）に対してのみ拡大・縮小処理を行うようにしてもよい。その場合、当該画像形成装置(画像処理装置)では、拡大・縮小処理を行う方向（Ｘ方向又はＹ方向）についてのみブロック画像単位の分割を行うようにしてもよい。（Ｄ−３）上記の各実施形態の画像形成装置（画像処理装置）において、前フィルタ処理部及び又は後フィルタ処理部については、省略するようにしてもよい。
【０３０１】
（Ｄ−３）第３の実施形態では、前解像度変換部１７０、後フィルタ処理部１５０、及び量子化処理部１９０を有しているが、これらのうち一部を省略するようにしてもよい。
【符号の説明】
【０３０２】
１…画像形成装置、１０…画像入力部、２０…前フィルタ処理部、１００…拡大・縮小処理部、１１０…ブロック読み出し部、１２０…ブロック拡大・縮小部、１２１…Ｘ方向拡大・縮小部、１２１ａ…Ｘ方向拡大・縮小カウンタ、１２１ｂ…Ｘ方向出力カウンタ、１２２…Ｙ方向拡大・縮小部、１２２ａ…Ｙ方向拡大・縮小カウンタ、１２２ｂ…Ｙ方向出力カウンタ、１３０…ブロック書き出し部、３０…後フィルタ処理部、５０…画像出力部、６０…画像メモリ。
【図１】
2014131262.tif 000003
【図２】
2014131262.tif 000004
【図３】
2014131262.tif 000005
【図４】
2014131262.tif 000006
【図５】
2014131262.tif 000007
【図６】
2014131262.tif 000008
【図７】
2014131262.tif 000009
【図８】
2014131262.tif 000010
【図９】
2014131262.tif 000011
【図１０】
2014131262.tif 000012
【図１１】
2014131262.tif 000013
【図１２】
2014131262.tif 000014
【図１３】
2014131262.tif 000015
【図１４】
2014131262.tif 000016
【図１５】
2014131262.tif 000017
【図１６】
2014131262.tif 000018
【図１７】
2014131262.tif 000019
【図１８】
2014131262.tif 000020
【図１９】
2014131262.tif 000021
【図２０】
2014131262.tif 000022
【図２１】
2014131262.tif 000023
【図２２】
2014131262.tif 000024
【図２３】
2014131262.tif 000025
【図２４】
2014131262.tif 000026
【図２５】
2014131262.tif 000027
【図２６】
2014131262.tif 000028
【図２７】
2014131262.tif 000029
【図２８】
2014131262.tif 000030
【図２９】
2014131262.tif 000031