(57)【要約】      （修正有）【課題】フレームバッファを用いずに、画像のサイズを拡大又は縮小する画像処理を行うことができる画像形成装置を提供する。【解決手段】ＣＰＵ５１は、受け付けた画像データを複数のエリアに分割する。ＣＰＵ５１は、また、分割された各エリア毎に画素を挿入又は削除する位置を特定するための乱数値を生成する。ＣＰＵ５１は、乱数値で定めた位置へ画素を挿入し、又は、当該位置の画素を削除する画像処理を行う。ラインバッファ５３は、分割されたエリアに含まれるライン数を超える数のラインデータが格納できるサイズで構成されており、ＣＰＵ５１による画像処理の際にライン単位で読み出されたラインデータを順次格納する。【選択図】図３
2015195472.tif 000002
【特許請求の範囲】
【請求項１】
受け付けた画像データを複数のエリアに分割する分割手段と、
前記分割された各エリア毎に画素を挿入又は削除する位置を特定するための乱数値を生成する乱数生成手段と、
前記乱数値で定めた位置へ画素を挿入し、又は、当該位置の画素を削除する画像処理を行う画像処理手段と、
前記画像処理の際に前記画像データを主走査方向に走査してライン単位で読み出したラインデータを順次格納する格納手段と、を備え、
前記格納手段は、前記エリアに含まれるライン数を超える数の前記ラインデータを格納できるサイズに構成されることを特徴とする、
画像形成装置。
【請求項２】
前記画像データは、画像の主走査方向及び副走査方向に配列された画素の集合であり、
前記エリアに含まれるライン数は、当該エリアにおける副走査方向の画素数であることを特徴とする、
請求項１に記載の画像形成装置。
【請求項３】
前記格納手段は、一回の前記走査において処理される前記エリア全ての副走査方向の画素数に応じた前記ラインデータを格納できるサイズに構成されることを特徴とする、
請求項２に記載の画像形成装置。
【請求項４】
前記格納手段は、前記画像処理手段による画像処理が行われる前記エリアに隣接するエリアの前記ラインデータを格納領域の一部に格納することを特徴とする、
請求項１、２又は３に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、静電潜像により画像を形成する画像形成装置に関する。
【背景技術】
【０００２】
静電潜像により画像を形成する画像形成装置では、構成部品の取り付け位置のばらつき、又は、形成された画像を定着する際の熱などの影響を受け、転写部材上に形成された画像の画像サイズと本来意図する画像の画像サイズとが異なってしまうという問題がある。
【０００３】
このような問題に対し、特許文献１に開示された画像処理装置では、出力された画像の画像サイズと本来意図する画像サイズとを比較し、比較した結果に基づいて画像の形成過程における変倍率を測定する。そして、入力画像の画像データに対して測定された倍率で補正を行い、補正後の補正画像データに基づいて画像を形成する。その結果、最終的には、本来意図する画像サイズで画像が出力されるというものである。
【０００４】
例えば、画像形成を行った際に、入力画像の画像サイズに対して、出力された画像の画像サイズが副走査方向（感光体の回転方向）に１０１［％］のサイズとなってしまう画像形成装置があるとする。この場合、入力画像と同じ画像サイズで出力するには、測定された倍率の逆数を積算した画像サイズで画像形成が行われるように画像データを補正する。具体的には、副走査方向に０．９９００９９…（１０１の逆数＝１００／１０１）倍した画像が形成されるようにする。その結果、出力画像の画像サイズは、主走査方向１．０１０１０１…×９９［％］＝１００［％］、副走査方向０．９９００９９…×１０１［％］＝１００［％］となる。
【０００５】
特許文献１に記載された画像処理装置における入力画像データの倍率変更方法は、副走査方向における所望の画像サイズと、補正処理せずに出力した出力画像の画像サイズとの差分に相当する画素数を算出する。そして、この画素数に基づいて、副走査方向の画像領域を複数のエリアに分割する。
【０００６】
図２３は、処理対象の入力画像を模式的に示した図である。図２３に示す入力画像は、主走査方向及び副走査方向に配列された画素の集合である。例えば、所望の画像サイズと、補正処理せずに出力した出力画像のサイズとの差分が１０画素であったとする。この場合、図２３中の点線で示すように、入力画像を副走査方向に１０分割する。更に、分割された各エリア（領域）毎に、乱数発生器が生成した乱数値に基づいて、主走査方向の各座標位置（主走査位置）につき１ヶ所ずつランダムな位置を決定する。同一エリア内であっても、副走査位置が異なれば、ランダムな位置は異なる。そして、決定されたランダムな位置において、画像サイズを副走査方向に拡大する場合には画素を挿入し、又、縮小する場合には画素を削除する。画素が挿入されると、それ以降は同エリアにおいて副走査方向に１ライン分遅れた位置の画素が出力される。画素が削除されると、それ以降は同エリアにおいて副走査方向に１ライン分早めた位置の画素が出力される。なお、画素の挿入又は削除に伴って発生する、これらの「遅れ」、「早め」の状態は、エリアが切り替わるとその状態が初期化される。
【０００７】
図２４は、あるエリアについて、乱数発生器が生成した乱数値に基づいて決定されたランダムな位置を視覚化して表した模式図である。図２４に示すように、エリアの主走査位置を表す座標値を「ｘ」、ラインＮｏ（副走査位置）を表す座標値を「ｙ」とする。図２４において、主走査方向と平行する点線は、エリアの境界線（エリア境界）であり、図２３で示した点線に相当する。
例えば、入力画像の画像サイズを副走査方向に拡大する場合、決定されたランダムな位置で画素を挿入する。画素が挿入された結果、図２５（ａ）に示すような画像（拡大前の画像）が、図２５（ｂ）に示すように、補正処理（拡大処理）により画像サイズが拡大されて出力されることになる。この補正処理は、１つのエリアにおいて、副走査方向に１ライン分画像サイズを拡大する変倍処理である。
【０００８】
また、画像サイズを副走査方向に縮小する場合、決定されたランダムな位置で画素を削除する。画素が削除された結果、図２５（ｃ）に示すような画像（縮小前の画像）が、図２５（ｄ）に示すように、補正処理（縮小処理）により画像サイズが縮小されて出力されることになる。この補正処理は、１つのエリアにおいて、副走査方向に１ライン分画像サイズを縮小する変倍処理である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−９９１１４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
画像形成装置によっては、画像データを保持するためのフレームバッファを備えるものがある。この場合、フレームバッファに格納された入力画像データに対して補正処理を行うことにより、副走査方向の変倍処理を行う。しかしながら、フレームバッファは高価であり、そのため画像形成装置の製造コストが大幅に増加してしまう、という課題が残る。
【００１１】
本発明は、フレームバッファを用いずに、画像のサイズを拡大又は縮小する画像処理を行うことができる画像形成装置を提供することを、主たる目的とする。
【課題を解決するための手段】
【００１２】
本発明の画像形成装置は、受け付けた画像データを複数のエリアに分割する分割手段と、前記分割された各エリア毎に画素を挿入又は削除する位置を特定するための乱数値を生成する乱数生成手段と、前記乱数値で定めた位置へ画素を挿入し、又は、当該位置の画素を削除する画像処理を行う画像処理手段と、前記画像処理の際に前記画像データを主走査方向に走査してライン単位で読み出したラインデータを順次格納する格納手段と、を備え、前記格納手段は、前記エリアに含まれるライン数を超える数の前記ラインデータを格納できるサイズに構成されることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、フレームバッファを用いずに、画像のサイズを拡大又は縮小する画像処理（画素の挿入又は削除による副走査方向の変倍処理）を行うことができる。これにより、画像形成装置の製造コストを大幅に低減することができる。
【図面の簡単な説明】
【００１４】
【図１】画像形成装置の概略縦断面図。
【図２】露光制御部及び感光体の構成例を示す図。
【図３】画像処理部とその周辺の構成例を示すブロック図。
【図４】処理対象である入力画像を模式的に表した図。
【図５】走査毎に４ラインずつの画像データが出力されることを示す図。
【図６】変倍処理のために必要なラインバッファ数（ライン数）を説明するための図。
【図７】エリアの副走査方向の長さ（副走査エリア長）が９画素である入力画像の一部を示した図。
【図８】エリアＡとエリアＢにおいて、画素を削除するランダムな位置が特定された様子を表した図。
【図９】画像サイズを縮小する変倍処理を行った結果を示した図。
【図１０】４ラインのバンド処理幅でバンド処理した場合の出力画像データと、変倍処理に必要なラインデータ及びラインバッファ数を表した図。
【図１１】画像サイズを縮小又は拡大する処理の処理手順例を示すフローチャート。
【図１２】ステップＳ５１１からステップＳ５１５それぞれの処理の前後の、ラインバッファＬ０、Ｌ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５それぞれの格納データを模式的に表した図。
【図１３】各走査目毎のカウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）それぞれの値を示す図。
【図１４】乱数値を生成する処理手順例を示すフローチャート。
【図１５】（ａ）は、１６次の原始多項式を回路化した乱数出力回路を模式的に示した図。（ｂ）は、シフト後の乱数出力回路のシード値を示す図。
【図１６】画像出力処理の具体的な処理手順の一例を示すフローチャート。
【図１７】縮小処理における一連のフローを整理して表した図。
【図１８】拡大処理における一連のフローを整理して表した図。
【図１９】バンド処理幅及び分割エリアの副走査長、最大エリア数の関係を説明するための模式図。
【図２０】（ａ）、（ｂ）は、「ｄ−ｍ＝０」であるときの最大エリア数を説明するための図。
【図２１】（ａ）、（ｂ）は、「ｄ−ｍ＝１」であるときの最大エリア数を説明するための図。
【図２２】（ａ）、（ｂ）は、「ｄ−ｍ＝２」であるときの最大エリア数を説明するための図。
【図２３】処理対象の入力画像を模式的に示した図。
【図２４】あるエリアについて、乱数発生器が生成した乱数値に基づいて決定されたランダムな位置を視覚化して表した模式図。
【図２５】（ａ）は、拡大処理前の画像を示す図。（ｂ）は、拡大処理後の画像を示す図。（ｃ）は、縮小処理前の画像を示す図。（ｄ）は、縮小処理後の画像を示す図。
【発明を実施するための形態】
【００１５】
以下、図面を参照しながら実施形態例を説明する。
【００１６】
［第１実施形態例］
図１は、本実施形態に係る画像形成装置の概略縦断面図である。
この画像形成装置１１０は、原稿を所定の読取り部位まで給送する原稿給送部１１１、給送された原稿を読取る画像読取り部１１２、画像データに基づき作像する画像形成部１１３を含んで構成される。なお、画像形成装置１１０は、コピーモードとプリンタモードの２つのモードを有する。コピーモードは、画像読取り部１１２で読み取って得た画像信号（画像データ）を受け付け、受け付けた画像データを印刷するモードである。また、プリンタモードは、後述する外部ＰＣ４８から出力された画像信号（画像データ）を受け付け、受け付けた画像データを印刷するモードである。
以下、画像形成装置１１０の基本的な動作について、図１を参照しながら説明する。
【００１７】
コピーモードの場合、原稿給送部１１１の原稿給紙装置１に積載された原稿は、１枚ずつ、画像読取り部１１２の原稿台ガラス面２上まで給送される。原稿が給送されると、画像読取り部１１２のスキャナユニット４に備わるランプ３が点灯し、原稿表面に光を照射すると共に、スキャナユニット４が副走査方向へと移動する。原稿表面からの反射光は、スキャナユニット４に備わるミラー５、ミラー６、７を介して集光部８を通過し、その後、イメージセンサ９に入力される。イメージセンサ９は、反射光を画像信号（画像データ）へ変換し、変換した画像データを画像形成部１１３の露光制御部１０へ出力する。
また、プリンタモードの場合、外部ＰＣ４８から受け付けた画像データが露光制御部１０へと出力される。
【００１８】
露光制御部１０は、受け付けた画像データに応じて、露光制御部１０に搭載されたレーザ駆動装置を制御し、レーザ光を発生させる。レーザ光の照射により感光体１１上に作られた潜像は、電位センサ１００において、感光体１１上の電位が所望の値になっているかどうかが監視される。所望の値のときは、現像器１３により現像される。
感光体１１は、露光制御部１０の出力ライン毎に同期するように回転駆動され、簾状のライン走査を繰り返すことにより、画像を形成する。また、潜像タイミングにあわせて、転写部材積載部１４又は１５から転写部材が搬送され、転写部１６に於いて、上記現像されたトナー像が転写部材の表面に転写される。転写されたトナー像は、定着部１７で転写部材に定着された後、排出ローラ対１８より装置外部に排出される。
転写後の感光体１１の表面は、クリーナ２５により清掃される。清掃された感光体１１の表面は、補助帯電器２６で除電され、１次帯電器２８により良好な帯電を得られるように調整される。その上で、感光体１１上の残留電荷を露光ランプ２７により消去させて、１次帯電器２８により感光体１１の表面を帯電させる。画像形成装置１１０は、この工程を繰り返して複数枚の画像形成を行う。
【００１９】
転写部材の両面に画像を形成する場合は、転写部材の表面に画像が形成された後、定着部１７から搬送された転写部材の後端がシート検知部１９により検知されたときに、排出ローラ対１８の回転を停止する。排出通路２１に設けられたフラッパー２０は、通路を反転通路２２へ切り替える。その後、排出ローラ対１８が逆転して、転写部材を反転通路２２へ搬送する。転写部材は、反転通路２２から反転搬送路入口２３を経由して反転搬送路２４へ搬送される。転写部材は、反転搬送路２４から再び転写部１６へ搬送されて、前記した画像形成動作と同様にして、転写部材の裏面に画像が形成される。
【００２０】
図２は、露光制御部１０及び感光体１１の構成例を示す図である。露光制御部１０は、半導体レーザ４３と、レーザ駆動装置３１、絞り３２、回転多面鏡（以下、ポリゴンミラーという。）３３、ｆ−θレンズ３４、コリメータレンズ３５、ビームディテクトセンサ（以下、ＢＤセンサという。）３６を含んで構成される。露光制御部１０は、また、画像処理部５０を有する。露光制御部１０は、画像データに従ってパルス幅変調されたレーザ光を主走査方向に走査することにより、感光体１１の表面を露光する。
【００２１】
イメージセンサ９又は外部ＰＣ４８から受け付けた画像データは、画像処理部５０に入力される。画像処理部５０は、画像データに対して画像形成装置１１０の作像モードに応じたＰＷＭ（パルス幅変調）テーブル変換を行い、レーザ駆動信号としてレーザ駆動装置３１に出力する。レーザ駆動装置３１は、画像処理部５０からレーザ駆動信号を受信し、レーザ駆動信号に基づいて半導体レーザ４３を駆動する。
【００２２】
半導体レーザ４３の内部には、レーザ光の一部を検出するＰＤ（フォト・ダイオード）センサ（図示せず）が設けられている。画像処理部５０は、ＰＤセンサの検出信号を用いてレーザダイオードのオートパワーコントロール制御を行う。半導体レーザ４３から発せられたレーザ光は、コリメータレンズ３５及び絞り３２によりほぼ平行光となり、所定の光径でポリゴンミラー３３に入射する。ポリゴンミラー３３は、矢印Ｑで示す方向に等角速度の回転をするように、図示しない駆動装置により駆動される。この回転に伴い、入射したレーザ光は、連続的に角度が変位された偏向ビームとなって反射される。
【００２３】
偏向ビームは、ｆ−θレンズ３４により集光する。その際、ｆ−θレンズ３４は、偏向ビームの歪曲収差の補正を行う。そのため、偏向ビームは、像担持体としての感光体１１上に矢印Ｐの方向に向けて等速で結合走査される。
ＢＤセンサ３６は、ポリゴンミラー３３からの反射光を検出する。ＢＤセンサ３６が出力する検出信号は、主走査方向の画像形成位置を一定にするために、ポリゴンミラー３３の回転と画像データの書き込みを同期させるための同期信号（主走査同期信号）である。
【００２４】
上記プロセスにより、転写部材の表面に画像が形成される。画像が形成される際、転写されたトナー像を定着部１７で定着する際に加えられる熱により、転写部材が伸縮してしまう場合がある。転写部材の伸縮率は、転写部材の材質によってほぼ一定である。そのため、例えば印刷前に転写部材の種類をユーザが指定し、この指定に応じて画像処理部５０が伸縮率の逆数の変倍処理を行うことで対処することができる。また、転写部材の種類の指定は、例えば後述するコントロールパネル４９を介して行ったり、外部ＰＣ４８から行ったりすることができる。
【００２５】
図３は、画像処理部５０とその周辺の構成例を示すブロック図である。画像処理部５０は、ＣＰＵ（Central Processing Unit）５１、画像セレクタ５２、ラインバッファ５３、乱数バッファＡ５４、乱数バッファＢ５５を含んで構成される。画像処理部５０は、また、スキャナユニット４、イメージセンサ９、レーザ駆動装置３１、ＢＤセンサ３６、外部ＰＣ４８、コントロールパネル４９と接続される。
ＣＰＵ５１は、画像処理部５０及び画像形成装置１１０が有する各構成機器を制御する。画像セレクタ５２は、コピーモード又はプリンタモードに応じて、受け付ける画像データを選択する。具体的には、コピーモードの場合では、図３に示すようにイメージセンサ９から出力される画像データＣを選択するように動作する。また、プリンタモードの場合では、図３に示すように外部ＰＣ４８から出力される画像データＰを選択するように動作する。
【００２６】
外部ＰＣ４８は、ユーザからのプリント開始指示の受け付けを契機に、画像形成開始信号Ｐを出力する。外部ＰＣ４８は、また、ユーザが設定した倍率Ｐを出力する。この倍率Ｐは、例えば１０［％］縮小して印刷したり、１０［％］拡大して印刷したりする場合にユーザが設定する。外部ＰＣ４８は、ＣＰＵ５１からの画像データ要求信号Ｐの受け付けを契機に、１ライン分の画像データＰの出力を行う。
ＢＤセンサ３６は、主走査同期信号を出力する。コントロールパネル４９は、ユーザからのコピー開始指示の受け付けを契機に、画像形成開始信号Ｃを出力する。コントロールパネル４９は、また、ユーザが設定した倍率Ｃを出力する。この倍率Ｃは、例えば１０［％］縮小して印刷したり、１０［％］拡大して印刷したりする場合にユーザが設定する。
【００２７】
スキャナユニット４は、ＣＰＵ５１からの画像データ要求信号Ｃの受け付けを契機に、１ライン分の画像データをイメージセンサ９から出力するために副走査方向へ移動する。スキャナユニット４の副走査方向の移動について、画像形成装置１１０の解像度が６００［ｄｐｉ］である場合を例に挙げて説明する。解像度６００［ｄｐｉ］の場合の１ラインの長さは、２５．４［ｍｍ］／６００［ｄｐｉ］により求められる。この場合の１ラインの長さは０．０４２３３［ｍｍ］である。スキャナユニット４が副走査方向へ０．０４２３３［ｍｍ］移動すれば、解像度６００［ｄｐｉ］の場合における１ライン相当分を移動したことになる。イメージセンサ９は、移動後のスキャン位置でスキャンした結果を画像信号に変換する。変換された画像信号は、画像データＣとして出力される。
なお、画像データ要求信号Ｃ及び、画像データ要求信号Ｐは、１ページ分の作像動作中に複数回発生する。例えば、副走査が２１０［ｍｍ］のページ全体を作像する場合は、２１０［ｍｍ］／０．０４２３３［ｍｍ］≒４９６０［回］の要求信号が発生する。発生タイミングについては後述する。
【００２８】
乱数バッファＡ５４及び乱数バッファＢ５５は、ＣＰＵ５１が生成した１エリア分の乱数を格納する。２つの乱数バッファの使い分けの詳細は後述する。
ラインバッファ５３は、所定のライン分だけ画像データを順次格納する。ラインバッファ５３は、格納手段として機能する。本実施形態においては、ラインバッファ５３は６ライン（６ｌｉｎｅ）分の容量（格納領域）を有する。ラインバッファ５３の各ラインをそれぞれ、ラインバッファＬ０、Ｌ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５とする。以下、ラインバッファ５３を６ラインとする根拠について説明する。
【００２９】
初めに、本実施形態の画像形成装置１１０が行うバンド処理の概要について説明する。図４は、処理対象である入力画像を模式的に表した図である。図４に示す入力画像は、主走査方向に１４画素、副走査方向に２０画素が配列されており、１マスが１画素を表している。各マス中に示された文字は、補正処理前の画素それぞれについて、副走査方向の位置を便宜上区別するためのものである。
バンド処理とは、入力画像全体を表す画像データの中から、一回の走査において所定のライン数（バンド処理幅）だけ画像データを読み出し、読み出した画像データに対して画像処理を行う方法である。この方法では、入力画像全体の処理が終了するまで、画像データの読み出しと、読み出した分の画像処理とが繰り返し行われる。
一例として、図４に示す入力画像において、一回の走査で読み出すライン数が４ラインであれば、図５に示すように、走査毎（図５中の走査１から走査５）に４ラインずつの画像データが出力されることになる。入力画像（図４）は、副走査方向に２０ラインあるため、４ライン単位の読み出しを計５回行えば、入力画像全体の読み出しは完了する。なお、実際の処理においては、各走査毎に例えば副走査方向の変倍処理のような画像処理が行われる。
【００３０】
例えば、４ラインずつ読み出すバンド処理においては、入力画像を４ライン分取得した後に４ライン分出力するということを繰り返すため、一般的には、ラインバッファは４ライン分あれば良いことになる。しかしながら、処理において４ライン分のラインバッファだけでは不足する場合がある。一例として、図５中に示す走査２の画像データ出力に対して、変倍処理を行う場合について説明する。
【００３１】
図６は、変倍処理のために必要なラインバッファ数（ライン数）を説明するための図である。図６に示すように、例えば副走査位置Ａのラインで画素を挿入する場合には、走査１（図５）の最終ラインである副走査位置Ｘのラインデータが必要となる。また、副走査位置Ｄのラインで画素を削除する場合には、走査３（図５）の最初のラインである副走査位置Ｙのラインデータが必要となる。変倍処理は、拡大するか又は縮小するかのいずれか一方の処理であることから、必要なラインバッファ数は、４＋１＝５ライン分あれば良いことになる。
【００３２】
さらに、分割された各エリアのエリア境界を含む走査においてバンド処理を行う場合、「バンド処理幅＋１」を超える数のラインバッファを必要とする場合がある。以下、この場合について具体的に説明する。
図７は、エリアの副走査方向の長さ（副走査エリア長）が９画素である入力画像の一部を示した図である。図７中の点線は、エリアの境界線を示しており、画素Ｘ（マス中の文字がＸ）と画素１（マス中の文字が１）の間、画素９（マス中の文字が９）と画素１の間、画素９と画素Ｙ（マスの中の文字がＹ）の間それぞれがエリア境界である。図７を正面から見て、上方のエリアをエリアＡ、下方のエリアをエリアＢとする。以下、エリアＡ、エリアＢに対して、４ラインのバンド処理幅で、画像サイズを縮小する変倍処理を行った場合の例について説明する。
【００３３】
図８は、図７に示すエリアＡとエリアＢにおいて、画素を削除するランダムな位置が特定された様子を表した図である。図９は、図８に示した位置で画素を削除した結果、つまり、画像サイズを縮小する変倍処理を行った結果を示した図である。図９に示す網線で塗られた位置のマスは、縮小する変倍処理によって画素が削除された位置を示している。図９では、変倍処理によりエリアＡ、エリアＢともに副走査方向に１ライン減算され、その結果、副走査エリア長が９画素から８画素となっている様子が見てとれる。
【００３４】
図１０は、図９に示す画像を４ラインのバンド処理幅でバンド処理した場合の出力画像データ（走査１から走査５）と、変倍処理に必要なラインデータ及びラインバッファ数を表した図である。なお、画像形成装置の副走査方向の変倍率が十分小さく、画素の挿入又は削除の頻度がバンド処理幅より小さい場合を例に挙げて説明する。具体的には、例えばバンド処理幅が４ラインの場合であれば、画素の挿入又は削除が４ラインに１回未満の頻度で行われる変倍率である。
【００３５】
画素の挿入が４ラインに１回の頻度で行われる倍率は、４ライン分の画像データが５ライン分に変換されるため、５／４＝１．２５となる。つまり、変倍率は１２５［％］である。また、画素の削除が４ラインに１回の頻度で行われる倍率は、４ライン分の画像データが３ライン分に変換されるため、３／４＝０．７５となる。つまり、変倍率は７５［％］である。変倍率が７５［％］から１２５［％］の範囲にあるとして説明する。
なお、既知の画像形成装置において多く使用される変倍率は、９９［％］から１０１［％］の範囲である。また、バンド処理幅が異なる画像形成装置では、上記した倍率範囲が異なる場合がある。しかし、その場合においてもバンド処理幅は最大でも３２ライン程度であり、９９［％］から１０１［％］に対して、上記した７５［％］から１２５［％］は十分に大きな範囲となる。
【００３６】
図１０に示すように、走査１、走査２、走査４、走査５では、必要なラインバッファ数は５ライン（５ｌｉｎｅ）である。これとは異なり、走査３では、必要なラインバッファ数が６ライン（６ｌｉｎｅ）であることが見て取れる。走査１から走査５の中で、走査３のみ必要なラインバッファ数が１多くなる理由は、走査３がエリアＡとエリアＢに跨っており、このラインをバンド処理していることに起因する。通常は、一回の走査中に発生する画素の挿入又は削除の回数は、主走査位置毎に１回である。しかし、エリアを跨いだ走査では、エリアＡの処理に用いられる乱数値と、エリアＢの処理に用いられる乱数値の組み合わせによっては、画素の挿入又は削除が同じ主走査位置で２回発生する場合がある。
【００３７】
例えば、図１０に示す走査３の主走査位置Ｐにおいては、画素の削除が２回発生している。また、エリアＡとエリアＢに跨るラインをバンド処理する場合には、エリアＡとエリアＢの両方の乱数値を生成し、生成した乱数値を保持しなければならない。なお、拡大処理においては、１回の走査で２回以上の画素の追加が発生したとしても、ラインバッファ数は５ラインで問題はない。なぜなら、画素の追加を行う際に４ライン以外のラインデータを必要とするのは、図６に示す副走査位置Ａのラインで画素の追加を行う場合のみである。なお、図６に示す副走査位置Ｂ、Ｃ、Ｄのラインにおける画素の追加は、それぞれ副走査位置Ａ、Ｂ、Ｃのラインデータに基づき行われる。
【００３８】
このように、エリアを跨る走査において必要なラインバッファ数は４＋２＝６となり、６ライン分必要になる。また、エリアを跨ぐ走査においては、乱数バッファも跨るエリアの数だけ必要となる。乱数バッファの動作の詳細については後述する。
【００３９】
図１１は、画像サイズを縮小又は拡大する処理の処理手順例を示すフローチャートである。初めに、プリンタモード時における縮小処理について説明する。
画像形成装置１１０、外部ＰＣ４８から画像形成開始信号Ｐの受信及び画像データＰの受け付けを契機に、作像を開始する。なお、画像データＰとして受け付けた入力画像は、主走査方向及び副走査方向に配列された画素の集合である。なお、説明の便宜上、主走査方向の長さを表す主走査方向入力画像サイズｉｎ_ｘが１４画素、副走査方向の長さを表す副走査方向入力画像サイズｉｎ_ｙが２０画素である場合を例に挙げて説明する。また、バンド処理幅ｄを４画素（４ライン）、倍率ｐを９０．９０９０・・・［％］とする。また、ラインバッファ５３のライン数Ｌを６（ｄ＋２＝４＋２＝６）、分割エリアの最小副走査幅を５（ｄ＋１＝５）とする。
【００４０】
ＣＰＵ５１は、入力画像の画像サイズ（走査方向入力画像サイズｉｎ_ｘの値及び副走査方向入力画像サイズｉｎ_ｙの値）を取得する（Ｓ５０１）。具体的には、主走査方向に１４画素、副走査方向に２０画素である。
ＣＰＵ５１は、外部ＰＣ４８から倍率情報（倍率ｐの値）を取得する（Ｓ５０２）。具体的には、９０．９０９０・・・［％］である。
ＣＰＵ５１は、入力画像を副走査方向に分割し、分割された各エリアの副走査長ａｙの画素数を演算する（Ｓ５０３）。縮小処理の場合は、各エリア内で副走査方向に１画素削除されることから、式１で求めることができる。
【００４１】
ａｙ−１／ａｙ ＝ ｐ／１００・・・（式１）
また、式１を整理すると式２のようになる。
【００４２】
ａｙ＝１００／（１００−ｐ）・・・（式２）
縮小処理における副走査長ａｙは、ａｙ ＝ １００／（１００−９０.９０９０…）＝１１［画素］となる。つまり、１１ラインに１回の頻度で画素の削除が行われる。
【００４３】
ＣＰＵ５１は、副走査カウンタｖｃｎｔ及びカウンタｖａｃｎｔ、フラグｖａｆｌａｇそれぞれを初期化する（Ｓ５０４）。副走査カウンタｖｃｎｔは、出力画像の総出力ライン数をカウントするためのものである。ステップＳ５０４の処理により、副走査カウンタｖｃｎｔの値は０（ゼロ。以下同じ。）に初期化される。カウンタｖａｃｎｔは、各エリアでの出力ライン数をカウントするためのものである。縮小処理の場合のカウンタｖａｃｎｔの最大値ｖａｃｎｔ（ｍａｘ）は、ｖａｃｎｔ（ｍａｘ）＝ａｙ−１−１で表される。これは、カウンタｖａｃｎｔは「０」からカウントが開始されることに対する「−１」と、当初１１画素であった副走査長ａｙが１０画素となり、１画素早くエリアが終了することに対する「−１」を反映している。なお、拡大処理におけるカウンタｖａｃｎｔの最大値ｖａｃｎｔ（ｍａｘ）は、ｖａｃｎｔ（ｍａｘ）＝ａｙ−１＋１となる。詳細は後述する。フラグｖａｆｌａｇは、出力ラインのそれぞれを画像処理する際に、乱数バッファＡ５４あるいは乱数バッファＢ５５に格納された乱数を使用するかを決定するためのフラグである。フラグｖａｆｌａｇの詳細は後述する。
【００４４】
また、バンド処理幅ｄが４ラインであることから、一回の走査毎にカウンタｖａｃｎｔの値に４が加算（＋４）される。ただし、加算した結果、最大値ｖａｃｎｔ（ｍａｘ）の値を超えた場合は、その超えた分について０からカウントし直す。
ここでは、バンド処理により出力された画像データにおいて、カウンタｖａｃｎｔの１ライン目をカウンタｖａｃｎｔ（０）、２ライン目をカウンタｖａｃｎｔ（１）、３ライン目をカウンタｖａｃｎｔ（２）、４ライン目をカウンタｖａｃｎｔ（３）とする。カウンタｖａｃｎｔを初期化すると、カウンタｖａｃｎｔ（０）＝０、カウンタｖａｃｎｔ（１）＝１、カウンタｖａｃｎｔ（２）＝２、カウンタｖａｃｎｔ（３）＝３となる。
また、バンド処理により出力された画像データにおいて、フラグｖａｆｌａｇの１ライン目をフラグｖａｆｌａｇ（０）、２ライン目をフラグｖａｆｌａｇ（１）、３ライン目をフラグｖａｆｌａｇ（２）、４ライン目をフラグｖａｆｌａｇ（３）とする。フラグｖａｆｌａｇを初期化すると、フラグｖａｆｌａｇ（０）＝０、フラグｖａｆｌａｇ（１）＝０、フラグｖａｆｌａｇ（２）＝０、フラグｖａｆｌａｇ（３）＝０となる。
【００４５】
ＣＰＵ５１は、ラインバッファ５３を初期化する（Ｓ５０５）。具体的には、ラインバッファＬ０、Ｌ１、Ｌ２、Ｌ３、Ｌ４の全てのバッファに対して、データ０で上書きを行う。
ＣＰＵ５１は、ＢＤセンサ３６から主走査同期信号を受け付けたか否かを判別する（Ｓ５０６）。主走査同期信号の受け付けを契機に（Ｓ５０６：ｙｅｓ）、ＣＰＵ５１はエリア更新、つまり、新しいエリアで処理が開始されるか否かを判別する（Ｓ５０７）。具体的には、カウントｖａｃｎｔ（０）からカウントｖａｃｎｔ（３）までのいずれかの値が０であれば、エリア更新したと判別する。エリア更新したと判別した場合（Ｓ５０７：ｙｅｓ）、ステップＳ５０８の処理へ進む。また、そうでない場合（Ｓ５０７：ｎｏ）、ステップＳ５１５の処理へ進む。
【００４６】
ＣＰＵ５１は、画像の出力が１走査目（一回目の走査）であるか否かを判別する（Ｓ５０８）。具体的には、副走査カウンタｖｃｎｔの値が０であれば、１走査目であると判別する。１走査目であると判別した場合（Ｓ５０８：ｙｅｓ）、ステップＳ５１０の処理へ進む。また、そうでない場合（Ｓ５０８：ｎｏ）、ステップＳ５０９の処理へ進む。
ＣＰＵ５１は、倍率ｐの値に基づいて、縮小処理又は拡大処理のいずれの処理であるかを判別する（Ｓ５０９）。縮小処理であると判別した場合（Ｓ５０９：ｙｅｓ）、ステップＳ５１１の処理へ進む。また、そうでない場合（Ｓ５０９：ｎｏ）、ステップＳ５１２の処理へ進む。
ＣＰＵ５１は、倍率ｐの値に基づいて、縮小処理又は拡大処理のいずれの処理であるかを判別する（Ｓ５１０）。縮小処理であると判別した場合（Ｓ５１０：ｙｅｓ）、ステップＳ５１３の処理へ進む。また、そうでない場合（Ｓ５１０：ｎｏ）、ステップＳ５１４の処理へ進む。
【００４７】
ＣＰＵ５１は、ラインバッファ５３の更新を行う（Ｓ５１１）。具体的には、ＣＰＵ５１は、ラインバッファＬ５に格納されている画像データをコピーし、コピーした画像データをラインバッファＬ０に格納する。また、ＣＰＵ５１は、外部ＰＣ４８に対して画像データ要求信号Ｐを５回出力する。そして、画像データ要求信号Ｐに応答して外部ＰＣ４８から出力された５ライン分の画像データを、ラインバッファＬ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５の順番で格納する。
【００４８】
ＣＰＵ５１は、ラインバッファ５３の更新を行う（Ｓ５１２）。具体的には、ＣＰＵ５１は、ラインバッファＬ３に格納されている画像データをコピーし、コピーした画像データをラインバッファＬ０に格納する。また、ラインバッファＬ４に格納されている画像データをコピーし、コピーした画像データをラインバッファＬ１に格納する。さらに、ラインバッファＬ５に格納されている画像データをコピーし、コピーした画像データをラインバッファＬ２に格納する。そして、外部ＰＣ４８に対して画像データ要求Ｐ信号を３回出力する。ＣＰＵ５１は、画像データ要求信号Ｐに応答して外部ＰＣ４８から出力された３ライン分の画像データを、ラインバッファＬ３、Ｌ４、Ｌ５の順番で格納させる。
【００４９】
ＣＰＵ５１は、ラインバッファ５３の準備を行う（Ｓ５１３）。ステップＳ５１３の処理は、一回目の走査における縮小処理を行うため、ラインバッファ５３に画像データを格納する処理である。具体的には、ＣＰＵ５１は、外部ＰＣ４８に対して画像データ要求Ｐ信号を６回出力する。そして、画像データ要求信号Ｐに応答して外部ＰＣ４８から出力された６ライン分の画像データを、ラインバッファＬ０、Ｌ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５の順番で格納する。
【００５０】
ＣＰＵ５１は、ラインバッファの準備を行う（Ｓ５１４）。ステップＳ５１４の処理は、一回目の走査における拡大処理を行うため、ラインバッファ５３に画像データを格納する処理である。具体的には、ＣＰＵ５１は、ラインバッファＬ０に格納されている画像データをデータ０で上書きを行い、全てのデータをクリアする。ＣＰＵ５１は、外部ＰＣ４８に対して画像データ要求Ｐ信号を５回出力する。そして、画像データ要求信号Ｐに応答して外部ＰＣ４８から出力された５ライン分のデータを、ラインバッファＬ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５の順番で格納する。
【００５１】
ＣＰＵ５１は、ラインバッファ５３の更新を行う（Ｓ５１５）。具体的には、ＣＰＵ５１は、ラインバッファＬ４に格納されている画像データをコピーし、コピーした画像データをラインバッファＬ０に格納する。また、ラインバッファＬ５に格納されている画像データをコピーし、コピーした画像データをラインバッファＬ１に格納する。ＣＰＵ５１は、外部ＰＣ４８に対して画像データ要求Ｐ信号を４回出力する。そして、画像データ要求信号Ｐに応答して外部ＰＣ４８から出力された４ライン分の画像データを、ラインバッファＬ２、Ｌ３、Ｌ４、Ｌ５の順番で格納する。
【００５２】
ここで、ステップＳ５１１からステップＳ５１５それぞれの処理の前後における、ラインバッファＬ０、Ｌ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５それぞれに格納されている画像データについて説明する。図１２は、ステップＳ５１１からステップＳ５１５それぞれの処理の前後の、ラインバッファＬ０、Ｌ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５それぞれの格納データを模式的に表した図である。図１２では、各ステップの処理前を「更新・準備前」とし、処理後を「更新・準備後」として示している。例えば、図１２中に示す「ｌｉｎｅ１」は、入力画像の先頭ラインの画像データである。また、図１２中に示す「Ｎ」は、１以上の任意の整数である。図１２中に示す「０（データ０）」は、入力画像とは無関係に、全てのデータが０であることを示している。なお、図１２中の網線で囲まれているラインは、処理の前後で共通して使用される画像データである。例えば、ステップＳ５１２の処理では、「ｌｉｎｅＮ＋３」、「ｌｉｎｅＮ＋４」、「ｌｉｎｅＮ＋５」である。
【００５３】
図１１に戻り、ＣＰＵ５１は、一回の走査における全ての主走査位置に対する乱数ｒｎｄを生成する（Ｓ５１６）。本実施形態の画像形成装置１１０では、生成する乱数値ｒｎｄの範囲は、分割エリアの副走査位置すべてをとり得るため、「０」から「副走査長ａｙ−１」の範囲となる。具体的な乱数発生手順については、後述するステップＳ６０１からステップＳ６１２（図１４）の処理において説明する。
【００５４】
ステップＳ５１７からステップＳ５２４の各処理は、一回の走査における画像処理である。
ＣＰＵ５１は、主走査位置ｘを０に初期化する（Ｓ５１７）。ＣＰＵ５１は、主走査位置ｘに対応する乱数値ｒｎｄを、乱数バッファＡ５４又は乱数バッファＢ５５から取得する（Ｓ５１８）。具体的には、フラグｖａｌｆａｇが「０」であれば乱数バッファＡ５４から取得する。また、フラグｖａｆｌａｇが「１」であれば、乱数バッファＢ５５から取得する。
【００５５】
ＣＰＵ５１は、取得した乱数値ｒｎｄと、カウンタｖａｃｎｔ（０）からｖａｃｎｔ（３）の各値、倍率ｐの値に基づいて、変倍処理を行う（Ｓ５１９）。具体的な変倍処理順については、後述するステップＳ７０１からステップＳ７１１（図１６）の各処理において説明する。
ＣＰＵ５１は、主走査位置ｘを更新する（Ｓ５２０）。具体的には、主走査位置ｘの値に１を加算（＋１）する。
ＣＰＵ５１は、主走査位置ｘの値と、入力画像の主走査方向入力画像サイズｉｎ_ｘの値とを比較して、全ての主走査位置で画像処理が行われたか否かを判別する（Ｓ５２１）。
具体的には、「ｘ≧ｉｎ_ｘ−１」が満たされたとき、全ての主走査位置で画像処理が行われたと判別する。全ての主走査位置で画像処理が行われたと判別した場合（Ｓ５２１：ｙｅｓ）、ステップＳ５２２の処理へ進む。また、そうでない場合（Ｓ５２１：ｎｏ）、ステップＳ５１８の処理へ戻る。
【００５６】
ＣＰＵ５１は、カウンタｖａｃｎｔ及びフラグｖａｆｌａｇを更新する（Ｓ５２２）。具体的には、カウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）それぞれの値に４を加算（＋４）する。ただし、前述した通り、縮小処理時のカウンタｖａｃｎｔの最大値ｖａｃｎｔ（ｍａｘ）は、ｖａｃｎｔ（ｍａｘ）＝ａｙ−１−１である。そのため、最大値を超えた場合は、その超えた分を０からカウントし直す。
【００５７】
一例として、ａｙ＝１１、ｖａｃｎｔ（ｍａｘ）＝９、ｖａｃｎｔ（０）＝５、ｖａｃｎｔ（１）＝６、ｖａｃｎｔ（２）＝７、ｖａｃｎｔ（３）＝８である場合の更新について説明する。この場合に、カウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）を更新すると、以下に示す（ａ）から（ｄ）のようになる。
【００５８】
（ａ）ｖａｃｎｔ（０）＝５＋４＝９
（ｂ）ｖａｃｎｔ（１）＝６＋４＝１０、よって、ｖａｃｎｔ（１）＝０
（ｃ）ｖａｃｎｔ（２）＝７＋４＝１１、よって、ｖａｃｎｔ（２）＝１
（ｄ）ｖａｃｎｔ（３）＝８＋４＝１２、よって、ｖａｃｎｔ（３）＝２
【００５９】
各走査目毎のカウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）それぞれの値を図１３に示す。図１３に示すように、例えばカウンタｖａｃｎｔ（０）の値は、５走査目においては６、６走査目においては０となっている。
【００６０】
また、カウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）を更新した結果、その値が「０」から「ｄ−１」の範囲に含まれることになった場合には、当該ラインは次の分割エリアに処理に移行したと判別する。この場合には、フラグｖａｆｌａｇ（０）からフラグｖａｆｌａｇ（３）を反転（更新）する。
具体的には、フラグｖａｆｌａｇ＝０のときはフラグｖａｆｌａｇ＝１と反転し、フラグｖａｆｌａｇ＝１のときはフラグｖａｆｌａｇ＝０と反転する。
【００６１】
例えば、上記したカウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）の更新の際に、フラグｖａｆｌａｇ＝０であれば、フラグｖａｆｌａｇ（０）からフラグｖａｆｌａｇ（３）の更新結果は以下に示す（ａ）から（ｄ）のようになる。
【００６２】
（ａ）ｖａｃｎｔ（０）＝９であり、「０」から「ｄ−１」の範囲に含まれない。その結果、フラグｖａｆｌａｇ（０）は更新されず、フラグｖａｆｌａｇ（０）＝０
（ｂ）ｖａｃｎｔ（１）＝０であり、「０」から「ｄ−１」の範囲に含まれる。その結果、フラグｖａｆｌａｇ（１）は更新され、フラグｖａｆｌａｇ（０）＝１
（ｃ）ｖａｃｎｔ（２）＝１であり、「０」から「ｄ−１」の範囲に含まれる。その結果、フラグｖａｆｌａｇ（２）は更新され、フラグｖａｆｌａｇ（２）＝１
（ｄ）ｖａｃｎｔ（３）＝２であり、「０」から「ｄ−１」の範囲に含まれる。その結果、フラグｖａｆｌａｇ（３）は更新され、フラグｖａｆｌａｇ（３）＝１
【００６３】
ＣＰＵ５１は、副走査カウンタｖｃｎｔを更新する（Ｓ５２３）。具体的には、副走査カウンタｖｃｎｔの値に４を加算（＋４）する。
ＣＰＵ５１は、画像出力が全て終了したか否かを判別する（Ｓ５２４）。出力画像の総ライン数は、副走査方向入力画像サイズｉｎ_ｙの値に倍率ｐの値を乗算したものである。具体的には、「ｖｃｎｔ≧［ｉｎ_ｙ×ｐ］（[ ]は、中の値を超える最小の整数を表わす記号である。）」が満たされた場合、画像出力が全て終了したと判別する。画像出力が全て終了したと判別した場合（Ｓ５２４：ｙｅｓ）、一連の作像を終了する。また、そうでない場合（Ｓ５２４：ｎｏ）、ステップＳ５０６の処理へ戻り、次走査の画像処理を行う。なお、副走査方向入力画像サイズｉｎ_ｙは１からカウントが開始され、副走査カウンタｖｃｎｔは０からカウントが開始される。
【００６４】
ここで、ステップＳ５１６の処理について具体的に説明する。図１４は、ステップＳ５１６の処理（乱数値ｒｎｄを生成する処理）の具体的な処理手順の一例を示すフローチャートである。
ＣＰＵ５１は、主走査カウンタｘｘを初期化（ｘｘ=０）する（Ｓ６０１）。ＣＰＵ５１は、乱数を１つ生成する（Ｓ６０２）。
ここで、乱数値について詳しく説明する。本実施形態では、乱数出力回路の一例として、原始多項式を利用した疑似乱数生成法を使用して乱数値を生成し、生成した乱数値を出力するものについて説明する。図１５（ａ）、（ｂ）は、１６次の原始多項式を回路化した乱数出力回路を模式的に示した図である。
乱数出力回路は、１６個の２値データの記録素子を縦列接続するとともに、いずれかの記録素子間に３つの論理演算回路を介在させて構成される。複数個の記録素子を、それぞれｂｉｔ（ビット）１５からｂｉｔ０（図９（ａ）中では、１５、１４・・・と示している）と定義する。また、ｂｉｔ１４とｂｉｔ１３、ｂｉｔ１３とｂｉｔ１２、ｂｉｔ１１とｂｉｔ１０の間には、それぞれ論理演算回路の一例であるＥＸＯＲゲートが介在する。シード値は、乱数値の種となるもので、乱数出力回路の各ｂｉｔの２値データの集合として定義される。
【００６５】
図１５（ａ）において、乱数出力回路のシード値は「１１１１０１１０１１００１００１」である。ここで、２＾ｎが乱数値の最大値を超える最小の指数ｎを求める。本実施形態においては、乱数値の最大値が１０（ａｙ−１＝１０）であることから、ｎ＝４となる。この指数ｎの値は、図１５（ａ）に示される乱数出力回路から、何ｂｉｔ分のデータを取得すれば良いかに対応する。本実施形態においては、ｂｉｔ３からｂｉｔ０までの計４ｂｉｔを取得する。
【００６６】
例えば、生成される乱数値は、このシード値のｂｉｔ３からｂｉｔ０の出力で決定される。図１５（ａ）において、ｂｉｔ３からｂｉｔ０の値を順に並べると、「１００１」となる。これを１０進数化することにより、乱数値「９」が生成される。乱数値を再度生成したい場合は、記録素子が保持する２値データをそれぞれ所定方向に隣接する他の記録素子に移行させ、これにより変化したシード値に基づいて次の乱数値を生成する。具体的は、乱数出力回路のシード値を右側にシフトさせる。乱数出力回路のシード値を右側にシフトさせて、乱数値を再度生成するときの具体的な手順は以下の通りである。
【００６７】
（ａ）ｂｉｔ０の値を一時変数ｔｅｍｐ（図示省略）に保存する。
（ｂ）ｂｉｔ０の値にｂｉｔ１の値を代入する。
（ｃ）ｂｉｔ１の値にｂｉｔ２の値を代入する。
（ｄ）ｂｉｔ２の値にｂｉｔ３の値を代入する。
（ｅ）ｂｉｔ３の値にｂｉｔ４の値を代入する。
（ｆ）ｂｉｔ４の値にｂｉｔ５の値を代入する。
（ｇ）ｂｉｔ５の値にｂｉｔ６の値を代入する。
（ｈ）ｂｉｔ６の値にｂｉｔ７の値を代入する。
（ｉ）ｂｉｔ７の値にｂｉｔ８の値を代入する。
（ｊ）ｂｉｔ８の値にｂｉｔ９の値を代入する。
（ｋ）ｂｉｔ９の値にｂｉｔ１０の値を代入する。
（ｌ）ｂｉｔ１０の値に一時変数ｔｅｍｐとｂｉｔ１１のＥＸＯＲ値を代入する。
（ｍ）ｂｉｔ１１の値にｂｉｔ１２の値を代入する。
（ｎ）ｂｉｔ１２の値に一時変数ｔｅｍｐとｂｉｔ１３のＥＸＯＲ値を代入する。
（ｏ）ｂｉｔ１３の値に一時変数ｔｅｍｐとｂｉｔ１４のＥＸＯＲ値を代入する。
（ｐ）ｂｉｔ１４の値にｂｉｔ１５の値を代入する。
（ｑ）ｂｉｔ１５の値に一時変数ｔｅｍｐの値を代入する。
このように、（ａ）から（ｑ）まで処理されて、次の乱数値が生成される。
【００６８】
図１５（ｂ）は、シフト後の乱数出力回路のシード値を示す図である。ここで、先ほどと同様に、このシード値のｂｉｔ３からｂｉｔ０の出力で決定されるとする。図１５（ｂ）において、ｂｉｔ３からｂｉｔ０の値を順に並べると、「０１００」となる。これを１０進数化することにより、乱数値「４」が生成される。
【００６９】
図１４に戻り、ＣＰＵ５１は、ステップＳ６０２の処理で生成された乱数値ｒｎｄが、決定された範囲を満たすものであるか否かを判別する（Ｓ６０３）。本実施形態においては、生成された乱数値ｒｎｄが「０」から「１０」の範囲内であるか否かが判別される。範囲外であった場合（Ｓ６０３：ｎｏ）、ＣＰＵ５１は、乱数出力回路のシード値をシフトさせる（Ｓ６０４）。その後、改めて乱数値ｒｎｄを生成させる。また、そうでない場合（Ｓ６０３：ｙｅｓ）、つまり、生成された乱数値ｒｎｄが「１０」以下であれば、ＣＰＵ５１は、この乱数値ｒｎｄの格納先を決定するフラグａが「０」又は「１」のいずれであるかを判別する（Ｓ６０５）。フラグａが「０」であると判別した場合（Ｓ６０５：ｙｅｓ）、生成された乱数値ｒｎｄを乱数バッファＡ５４に格納する（Ｓ６０６）。また、フラグａが「１」であると判別した場合（Ｓ６０６：ｎｏ）、生成された乱数値ｒｎｄを乱数バッファＢ５５に格納する（Ｓ６０７）。
【００７０】
ＣＰＵ５１は、主走査カウンタｘｘを１進める（Ｓ６０８）。具体的には、主走査カウンタｘｘの値を、ｘｘ＝ｘｘ＋１にする。
ＣＰＵ５１は、全ての主走査位置に対応する乱数値の生成が終了したか否かを判別する（Ｓ６０９）。なお、主走査方向入力画像サイズｉｎ_ｘは１からカウントが開始され、主走査カウンタｘｘは０からカウントが開始される。「主走査位置ｘｘ≧ 主走査方向入力画像サイズｉｎ_ｘ−１」となったときに、全ての主走査位置に対応する乱数値の生成が終了したと判別する。生成が終了したと判別した場合（Ｓ６０９：ｙｅｓ）、ステップＳ６１０の処理へ進む。また、そうでない場合（Ｓ６０９：ｎｏ）、ステップＳ６０２の処理へ戻る。
【００７１】
ステップＳ６１０からステップＳ６１２までの各処理は、乱数値ｒｎｄを格納する乱数バッファＡ５４又は乱数バッファＢ５５を切り替えるためのフラグａを反転させる処理である。
ＣＰＵ５１は、フラグａが「０」又は「１」のいずれであるかを判別する（Ｓ６１０）。フラグａが「０」であると判別した場合（Ｓ６１０：ｙｅｓ）、フラグａ＝１とする（Ｓ６１１）。また、そうでない場合（Ｓ６１０：ｎｏ）、フラグａ＝０とする（Ｓ６１２）。
このように、ステップＳ６０１からステップＳ６１２の各処理により、各主走査位置に対応した乱数値ｒｎｄの全てが、フラグａの値に応じて乱数バッファＡ５４あるいは乱数バッファＢ５５に格納される。
【００７２】
図１１に示すステップＳ５１９の処理について具体的に説明する。図１６は、ステップＳ５１９の処理（画像出力処理）の具体的な処理手順の一例を示すフローチャートである。図１６に示す処理は、カウンタｖａｃｎｔ（０）、カウンタ ｖａｃｎｔ（１）、カウンタ ｖａｃｎｔ（２）、カウンタｖａｃｎｔ（３）それぞれに対して行われる。つまり、カウンタｖａｃｎｔ（０）を用いた処理は、出力画像の１ライン目のデータを決定し、カウンタｖａｃｎｔ（１）を用いた処理は、出力画像の２ライン目のデータを決定する。また、カウンタｖａｃｎｔ（２）を用いた処理は３ライン目、カウンタｖａｃｎｔ（３）を用いた処理は４ライン目のデータを決定する。ここでは、代表してカウンタｖａｃｎｔ（０）を例に挙げて説明する。なお、カウンタｖａｃｎｔ（１）、カウンタｖａｃｎｔ（２）、カウンタｖａｃｎｔ（３）に対しても同様に処理される。
【００７３】
ＣＰＵ５１は、倍率ｐの値に基づいて、縮小処理又は拡大処理のいずれの処理であるかを判別する（Ｓ７０１）。縮小処理であると判別した場合（Ｓ７０１：ｙｅｓ）、ステップＳ７０２の処理へ進む。また、そうでない場合（Ｓ７０１：ｎｏ）、ステップＳ７０７の処理へ進む。ここでは、縮小処理であることから（Ｓ７０１：ｙｅｓ）、ステップＳ７０２の処理へ進む。
なお、ステップＳ７０７からステップＳ７１１の各処理は、後述する拡大処理の処理手順である。
【００７４】
ＣＰＵ５１は、ステップＳ５１８（図１１）の処理で取得した、主走査位置ｘに対応する乱数値ｒｎｄの値と、カウンタｖａｃｎｔ（０）の値とを比較する（Ｓ７０２）。比較した結果、「ｒｎｄ＜ｖａｃｎｔ（０）」である場合（Ｓ７０２：ｙｅｓ）、ステップＳ７０３の処理へ進む。また、そうでない場合（Ｓ７０２：ｎｏ）、ステップＳ７０６の処理へ進む。
ＣＰＵ５１は、ステップＳ５１８（図１１）の処理で取得した、主走査位置ｘに対応する乱数値ｒｎｄの値と、カウンタｖａｃｎｔ（０）の値とを比較する（Ｓ７０３）。比較の結果、「ｒｎｄ＝ｖａｃｎｔ（０）」である場合（Ｓ７０３：ｙｅｓ）、ステップＳ７０４の処理へ進む。また、そうでない場合（Ｓ７０３：ｎｏ）、ステップＳ７０５の処理へ進む。
【００７５】
ＣＰＵ５１は、縮小処理（変倍出力処理）を行う（Ｓ７０４）。ステップ７０４の処理は、同一走査中の同一主走査位置において画素の削除が１回だけ行われるケースと、２回行われるケースとで処理が異なる。ここでは、バンド処理の４ラインそれぞれに対応する乱数を、乱数ｒｎｄ（０）、ｒｎｄ（１）、ｒｎｄ（２）ｒｎｄ（３）と定義する。
カウンタｖａｃｎｔ（０）に関する処理では、ラインバッファＬ１から主走査位置ｘに対応するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（１）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」である場合にはラインバッファＬ３から、そうでない場合には、ラインバッファＬ２から主走査位置ｘに対応するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（２）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」又は「ｖａｃｎｔ（１）＝ｒｎｄ（１）」である場合には、ラインバッファＬ４から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ３から主走査位置ｘに対応するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（３）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」、「ｖａｃｎｔ（１）＝ｒｎｄ（１）」、「ｖａｃｎｔ（２）＝ｒｎｄ（２）」のいずれかを満たすが否かで処理が異なる。いずれかを満たす場合には、ラインバッファＬ５から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ４から主走査位置ｘに対応するデータを取得し、これを出力する。これらの処理により、エリア内において乱数値ｒｎｄで特定された位置で１画素削除したことになる。
【００７６】
ＣＰＵ５１は、乱数前出力処理を行う（Ｓ７０５）。ステップ７０５の処理は、同一走査中の同一主走査位置において、処理を行うライン前に画素の削除が行われたか否かにより処理が異なる。
カウンタｖａｃｎｔ（０）に関する処理では、ラインバッファＬ０から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（１）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」である場合にはラインバッファＬ２から、そうでない場合には、ラインバッファＬ１から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（２）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」又は「ｖａｃｎｔ（１）＝ｒｎｄ（１）」である場合には、ラインバッファＬ３から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ２から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（３）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」、「ｖａｃｎｔ（１）＝ｒｎｄ（１）」、「ｖａｃｎｔ（２）＝ｒｎｄ（２）」のいずれかを満たすが否かで処理が異なる。いずれかを満たす場合には、ラインバッファＬ４から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ３から主走査位置ｘに相当するデータを取得し、これを出力する。
【００７７】
ＣＰＵ５１は、乱数後出力処理を行う（Ｓ７０６）。ステップ７０６の処理は、同一走査中の同一主走査位置において、処理を行うライン前に画素の削除が行われたか否かにより処理が異なる。
カウンタｖａｃｎｔ（０）に関する処理では、ラインバッファＬ１から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（１）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」である場合にはラインバッファＬ３から、そうでない場合には、ラインバッファＬ２から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（２）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」又は「ｖａｃｎｔ（１）＝ｒｎｄ（１）」である場合には、ラインバッファＬ４から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ３から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（３）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」、「ｖａｃｎｔ（１）＝ｒｎｄ（１）」、「ｖａｃｎｔ（２）＝ｒｎｄ（２）」のいずれかを満たすが否かで処理が異なる。いずれかを満たす場合には、ラインバッファＬ５から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ４から主走査位置ｘに相当するデータを取得し、これを出力する。
【００７８】
図１７は、本実施形態の縮小処理における一連のフローを整理して表した図である。図１７では、入力画像、ラインバッファＬ０、Ｌ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５それぞれに格納される画像データ、乱数値（Ａ、Ｂ）を模式的に表している。図１７は、さらに、出力画像データ、カウンタｖａｃｎｔ（０）からｖａｃｎｔ（３）の値を示した上で、各走査毎（走査１から走査５）に整理したものである。なお、図中の網点の掛けられているラインバッファ（line buf）のデータは、処理中の走査においては使用されないデータである。
【００７９】
次に、プリンタモード時における画像の拡大処理について説明する。基本的な処理手順は縮小処理の場合に準じて行われる。以下、縮小処理の場合の処理手順とは異なる点を中心に説明する。
なお、主走査方向入力画像サイズｉｎ_ｘを１４画素、副走査方向入力画像サイズｉｎ_ｙを２０画素、バンド処理幅ｄを４画素(４ライン)、倍率ｐを１１１．１１１１１１・・・［%］である場合を例に挙げて説明する。また、ラインバッファ５３のライン数Ｌを６（ｄ＋２＝４＋２＝６）、分割エリアの最小副走査幅を５（ｄ＋１＝５）とする。
【００８０】
ステップＳ５０２（図１１）の処理において、ＣＰＵ５１は、外部ＰＣ４８から倍率情報（倍率ｐの値）を取得する。具体的には、１１１．１１１１１１・・・［％］である。
ステップＳ５０３（図１１）の処理において、ＣＰＵ５１は、入力画像を副走査方向に分割し、分割された各エリアの副走査長ａｙの画素数を演算する。拡大処理の場合は、各エリア内で副走査方向に１画素挿入されることから、下記の式３で求めることができる。
【００８１】
ａｙ＋１／ａｙ＝ｐ／１００・・・（式３）
また、式３を整理すると式４のようになる。
【００８２】
ａｙ＝１００／（ｐ−１００）・・・（式４）
拡大処理における副走査長ａｙは、ａｙ＝１００／（１１１．１１１１１１・・・−１００）＝９［画素］となる。つまり、９ラインに１回の頻度で画素の挿入が行われる。
【００８３】
ステップＳ５２２（図１１）の処理において、ＣＰＵ５１は、カウンタｖａｃｎｔ、フラグｖａｆｌａｇそれぞれを更新する。具体的には、カウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）それぞれの値に４を加算（＋４）する。ただし、拡大処理時のカウンタｖａｃｎｔの最大値ｖａｃｎｔ（ｍａｘ）は、ｖａｃｎｔ（ｍａｘ）＝ａｙ−１＋１である。そのため、最大値を超えた場合は、その超えた分を０からカウントし直す。
一例として、ａｙ＝９、ｖａｃｎｔ（ｍａｘ）＝９、ｖａｃｎｔ（０）＝５、ｖａｃｎｔ（１）＝６、ｖａｃｎｔ（２）＝７、ｖａｃｎｔ（３）＝８である場合の更新について説明する。この場合に、カウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）を更新すると、以下に示す（ａ）から（ｄ）のようになる。
【００８４】
（ａ）ｖａｃｎｔ（０）＝５＋４＝９
（ｂ）ｖａｃｎｔ（１）＝６＋４＝１０、よって、ｖａｃｎｔ（１）＝０
（ｃ）ｖａｃｎｔ（２）＝７＋４＝１１、よって、ｖａｃｎｔ（２）＝１
（ｄ）ｖａｃｎｔ（３）＝８＋４＝１２、よって、ｖａｃｎｔ（３）＝２
【００８５】
また、カウンタｖａｃｎｔ（０）からカウンタｖａｃｎｔ（３）を更新した結果、その値が「０」から「ｄ−１」の範囲に含まれることになった場合には、当該ラインは次の分割エリアに処理に移行したと判別する。この場合には、縮小処理の場合と同様に、フラグｖａｆｌａｇ（０）からフラグｖａｆｌａｇ（３）を反転（更新）する。
【００８６】
拡大処理における、図１１に示すステップＳ５１９の処理（画像出力処理）について、図１６を参照しながら具体的に説明する。なお、縮小処理の場合と同様に、拡大処理においてもカウンタｖａｃｎｔ（０）、カウンタ ｖａｃｎｔ（１）、カウンタ ｖａｃｎｔ（２）、カウンタｖａｃｎｔ（３）それぞれに対して処理が行われる。
ステップＳ７０１の処理において、ＣＰＵ５１は、倍率ｐの値に基づいて、縮小処理又は拡大処理のいずれの処理であるかを判別する。ここでは、拡大処理であることから（Ｓ７０１：ｎｏ）、ステップＳ７０７の処理へ進む。以下、ステップＳ７０７からステップＳ７１１の各処理について説明する。
【００８７】
ＣＰＵ５１は、ステップＳ５１８（図１１）の処理で取得した、主走査位置ｘに対応する乱数値ｒｎｄの値と、カウントｖａｃｎｔ（０）の値とを比較する（Ｓ７０９）。比較した結果、「ｒｎｄ＜ｖａｃｎｔ（０）」である場合（Ｓ７０７：ｙｅｓ）、ステップＳ７０８の処理へ進む。また、そうでない場合（Ｓ７０７：ｎｏ）、ステップＳ７１１の処理へ進む。
ＣＰＵ５１は、ステップＳ５１８（図１１）の処理で取得した、主走査位置ｘに対応する乱数値ｒｎｄの値とカウンタｖａｃｎｔ（０）の値とを比較する（Ｓ７１０）。比較した結果、「ｒｎｄ＝ｖａｃｎｔ（０）」である場合（Ｓ７０８：ｙｅｓ）、ステップＳ７１０の処理へ進む。また、そうでない場合（Ｓ７０８：ｎｏ）、ステップＳ７１０の処理へ進む。
【００８８】
ＣＰＵ５１は、拡大処理（変倍出力処理）を行う（Ｓ７０９）。ステップ７０９の処理は、同一走査中の同一主走査位置において画素の挿入が１回だけ行われるケースと、２回行われるケースとで処理が異なる。ここでは、バンド処理の４ラインそれぞれに対応する乱数を、乱数ｒｎｄ（０）、ｒｎｄ（１）、ｒｎｄ（２）ｒｎｄ（３）と定義する。
【００８９】
カウンタｖａｃｎｔ（０）に関する処理では、ラインバッファＬ０から主走査位置ｘに対応するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（１）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」である場合にはラインバッファＬ０から、そうでない場合には、ラインバッファＬ１から主走査位置ｘに対応するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（２）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」又は「ｖａｃｎｔ（１）＝ｒｎｄ（１）」である場合には、ラインバッファＬ１から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ２から主走査位置ｘに対応するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（３）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」、「ｖａｃｎｔ（１）＝ｒｎｄ（１）」、「ｖａｃｎｔ（２）＝ｒｎｄ（２）」のいずれかを満たすが否かで処理が異なる。いずれかを満たす場合には、ラインバッファＬ２から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ３から主走査位置ｘに対応するデータを取得し、これを出力する。これらの処理により、エリア内において乱数値ｒｎｄで特定された位置で１画素挿入したことになる。
【００９０】
ＣＰＵ５１は、乱数前出力処理を行う（Ｓ７１０）。ステップ７０５の処理は、同一走査中の同一主走査位置において、処理を行うライン前に画素の挿入が行われたか否かにより処理が異なる。
カウンタｖａｃｎｔ（０）に関する処理では、ラインバッファＬ１から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（１）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」である場合にはラインバッファＬ１から、そうでない場合には、ラインバッファＬ２から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（２）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」又は「ｖａｃｎｔ（１）＝ｒｎｄ（１）」である場合には、ラインバッファＬ２から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ３から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（３）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」、「ｖａｃｎｔ（１）＝ｒｎｄ（１）」、「ｖａｃｎｔ（２）＝ｒｎｄ（２）」のいずれかを満たすが否かで処理が異なる。いずれかを満たす場合には、ラインバッファＬ３から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ４から主走査位置ｘに相当するデータを取得し、これを出力する。
【００９１】
ＣＰＵ５１は、乱数後出力処理を行う（Ｓ７１１）。ステップ７１１の処理は、同一走査中の同一主走査位置において、処理を行うライン前に画素の挿入が行われたか否かにより処理が異なる。
カウンタｖａｃｎｔ（０）に関する処理では、ラインバッファＬ０から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（１）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」である場合にはラインバッファＬ０から、そうでない場合には、ラインバッファＬ１から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（２）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」又は「ｖａｃｎｔ（１）＝ｒｎｄ（１）」である場合には、ラインバッファＬ１から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ２から主走査位置ｘに相当するデータを取得し、これを出力する。
カウンタｖａｃｎｔ（３）に関する処理では、「ｖａｃｎｔ（０）＝ｒｎｄ（０）」、「ｖａｃｎｔ（１）＝ｒｎｄ（１）」、「ｖａｃｎｔ（２）＝ｒｎｄ（２）」のいずれかを満たすが否かで処理が異なる。いずれかを満たす場合には、ラインバッファＬ２から主走査位置ｘに対応するデータを取得し、これを出力する。また、そうでない場合には、ラインバッファＬ３から主走査位置ｘに相当するデータを取得し、これを出力する。
【００９２】
図１８は、本実施形態の拡大処理における一連のフローを整理して表した図である。図１８では、入力画像（エリアＡ、Ｂ、Ｃ）、ラインバッファＬ０、Ｌ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５それぞれに格納される画像データ、乱数値（Ａ、Ｂ、Ｃ）を模式的に表している。図１８は、さらに、出力画像データ、カウンタｖａｃｎｔ（０）からｖａｃｎｔ（３）の値を示した上で、各走査毎（走査１から走査６）に整理したものである。
【００９３】
なお、画像形成装置１１０がコピーモードである場合でも、プリンタモードの場合に準じて、入力画像の縮小処理又は拡大処理が行われる。なお、プリンタモードの場合と異なる点は、信号及び各種データの授受の対象が外部ＰＣ４８に代えて、コントロールパネル４９、スキャナユニット４及びイメージセンサ９になる点である。この場合、プリンタモードにおける画像形成開始信号Ｐは、コピーモードにおける画像形成開始信号Ｃとなる。また、プリンタモードにおける倍率Ｐはコピーモードにおける倍率Ｃとなる。プリンタモードにおける画像データ要求信号Ｐは、コピーモードにおける画像データ要求信号Ｃとなる。プリンタモードにおける画像データＰは、コピーモードにおける画像データＣとなる。
【００９４】
このように、本実施形態の画像形成装置１１０では、フレームバッファを用いずに、ラインバッファ５３にラインデータを格納して画像のサイズを拡大又は縮小する画像処理を行うことができる。これにより、画像形成装置の製造コストを大幅に低減することができる。
【００９５】
本実施形態の説明においては、分割された各エリアの副走査長ａｙの値が一定である場合を例に挙げて説明した。これに限らず、副走査長ａｙの値は各エリアで異なるものであっても良い。その際、副走査長ａｙの値を用いる演算式においては、処理対象のエリアの副走査長ａｙの値を用いることになる。また、副走査長ａｙの値が小数点以下の値を含む場合、例えば演算結果がａｙ＝１０．５となったときには、ａｙ＝１０のエリアと、ａｙ＝１１のエリアとを交互に配置すれば良い。
【００９６】
また、図１４に示すステップＳ６０２からステップＳ６０４の各処理において生成された乱数値ｒｎｄが、決定された範囲を外れる場合には、この範囲に収まるまで生成フローを繰り返す構成について説明した。この他、そもそも範囲を外れた乱数値ｒｎｄが生成されないように、ｂｉｔを決定してしまっても良い。例えば、乱数値ｒｎｄの範囲を０から６と決定した場合、２^ｎが乱数値の最大値をこえる最小のｎを求めることに代えて、２^ｎが乱数値の最大値をこえない最大のｎを求めても良い。すると、ｎ＝３となり、これは３ｂｉｔの乱数値を生成することを表す。つまり、乱数値ｒｎｄが生成される範囲は、０から７の範囲になる。こうして生成された乱数値ｒｎｄは、最大値９より必ず小さな値となるため、ステップＳ６０４（図１４）を経由することがなくなる。
【００９７】
また、本実施形態の説明においては、バンド処理幅４（ｄ＝４）、分割エリアの副走査長９又は１１（ａｙ＝９、１１）の場合を例に挙げて説明した。この場合、２つのエリアを１回の走査で同時に処理する場合があることについては既に説明したとおりである。以下、１回の走査で同時に処理することができる最大エリア数Ｚと、バンド処理幅ｄ及び分割エリアの副走査長ａｙとの関係について説明する。
【００９８】
図１９は、バンド処理幅ｄ及び分割エリアの副走査長ａｙ、最大エリア数Ｚの関係を説明するための模式図である。
図１９に示す副走査長合計ｍは、バンド処理幅ｄの１回の走査において含まれる各エリア全ての副走査長を合計したものである。具体的には、副走査長合計ｍは、ｍ＝ａｙ（０）＋ａｙ（１）＋…＋ａｙ（ｎ−２）＋ａｙ（ｎ−１）となる。また、副走査長合計ｍに含まれるエリアの数をエリア個数ｋとすると、以下に示す（ａ）から（ｃ）のようになる。
【００９９】
（ａ）ｄ−ｍ＝０であるとき、Ｚ＝ｋ＋１
（ｂ）ｄ−ｍ＝１であるとき、Ｚ＝ｋ＋１
（ｃ）ｄ−ｍ＝２以上であるとき、Ｚ＝ｋ＋２
以下、それぞれについて具体的に説明する。
【０１００】
図２０（ａ）、（ｂ）は、「ｄ−ｍ＝０」であるときの最大エリア数Ｚを説明するための図である。図２０（ａ）に示すようなバンド処理幅ｄ、副走査長合計ｍである場合には、図２０（ｂ）に示すように、１回の走査においてエリア０からエリアＤまで跨って処理する場合がある。この場合に最大エリア数Ｚは、Ｚ＝ｋ＋１となる。その他にも、例えばエリアＣからエリアｎ−１まで跨って処理する場合も、最大エリア数Ｚは、Ｚ＝ｋ＋１となる。
【０１０１】
図２１（ａ）、（ｂ）は、「ｄ−ｍ＝１」であるときの最大エリア数Ｚを説明するための図である。図２１（ａ）に示すようなバンド処理幅ｄ、副走査長合計ｍである場合には、図２１（ｂ）に示すように、１回の走査においてエリア０からエリアＤまで跨って処理する場合がある。この場合に最大エリア数Ｚは、Ｚ＝ｋ＋１となる。その他にも、例えばエリアＣからエリアｎ−１まで跨って処理する場合も、最大エリア数Ｚは、Ｚ＝ｋ＋１となる。
【０１０２】
図２２（ａ）、（ｂ）は、「ｄ−ｍ＝２」であるときの最大エリア数Ｚを説明するための図である。図２２（ａ）に示すようなバンド処理幅ｄ、副走査長合計ｍである場合には、図２２（ｂ）に示すように、１回の走査においてエリアＣからエリアＤまで跨って処理する場合がある。この場合に最大エリア数Ｚは、Ｚ＝ｋ＋２となる。
【０１０３】
なお、副走査長ａｙがエリア毎に異なる値をとる場合は、副走査長合計ｍは様々な組み合わせパターン（ａｙ（０）、ａｙ（１）、…、ａｙ（ｎ−１））における最大値を用いる必要がある。例えば、副走査長ａｙの値が、「１０、１０、１１、１０、１０、１１、１０、１０、１１、・・・」などと一定の規則性を持って出現する場合について説明する。
【０１０４】
例えば、エリア個数ｋがｋ＝２であるときの組み合わせは、｛ａｙ（０）,ａｙ（１）｝＝｛１０、１０｝、｛１０、１１｝、｛１１、１０｝の組み合わせがある。この場合には、｛ａｙ（０）、ａｙ（１）｝＝｛１０、１０｝が最小となる。
また、例えば、エリア個数ｋがｋ＝３であるときの組み合わせは、｛ａｙ（０）、ａｙ（１）、ａｙ（２）｝＝｛１０、１０、１１｝、｛１０、１１、１０｝、｛１１、１０、１０｝の組み合わせがある。この場合には、結果的にはどれを採用しても同じである。
【０１０５】
このように、一回の走査において同時に処理される最大エリア数（Ｚ）に応じたラインバッファ及び乱数バッファが必要となる。なお、ここでのラインバッファ数には、変倍処理に必要ではないラインバッファの数は含まれない。変倍処理に必要ではないラインバッファとは、変倍処理を行わない場合であってもバンド処理のために必要なラインバッファであり、その数はバンド処理ライン数と同一である。
【０１０６】
また、上記した数のラインバッファ全てが使用されるのは、最大数の分割エリアに関する処理を同一走査で行った場合であり、且つ、同一走査内の全てのエリアで画素を削除する処理（縮小処理）が行われる場合である。
なお、拡大処理の場合は、縮小処理とは異なり、拡大処理は画素の複製処理である。そのため、何回画素の追加が行われようともそれに応じて新たに必要なラインデータが増えるわけではない。ただし、走査の先頭ラインに関しては、前回走査の最終ラインが必要であり、その分のバッファとして１ラインが必要となる。
【０１０７】
また、本実施形態の説明においては、同一走査で処理を行うエリア数が２である場合を例に説明した。これに限らず、例えばエリア数が３以上となる場合は、乱数バッファの識別値であるフラグａの値を、０又は１の２値でなく、３値またはそれ以上の値で区別しすることで対応することができる。
【０１０８】
また、本実施形態の説明においては、ステップＳ６０４の処理のシードシフトを１回として説明した。例えば、生成する乱数値の関連性が発生する懸念がある場合は、乱数取得ｂｉｔ数分だけシフトしても良い。例えば、ｂｉｔ３からｂｉｔ０が乱数値となる場合は、４回シフトを行う。
【０１０９】
上記説明した実施形態は、本発明をより具体的に説明するためのものであり、本発明の範囲が、これらの例に限定されるものではない。
【符号の説明】
【０１１０】
１・・・原稿給紙装置、２・・・原稿台ガラス面、３・・・ランプ、４・・・スキャナユニット、５、６、７・・・ミラー、８・・・集光部、９・・・イメージセンサ部、１０・・・露光制御部、１１・・・感光体、１３・・・現像器、１４、１５・・・転写部材積載部、１６・・・転写部、１７・・・定着部、１８・・・排紙部、２０・・・フラッパー、２１・・・排出通路、２２・・・反転通路、２３・・・反転搬送路入口、２４・・・反転搬送路、２５・・・クリーナ、２６・・・補助帯電器、２７・・・露光ランプ、２８・・・１次帯電器、３１・・・レーザ駆動装置、３２・・・絞り、３３・・・ポリゴンミラー、３４・・・ｆ−θレンズ、３５・・・コリメータレンズ、３６・・・ＢＤセンサ、４３・・・半導体レーザ、４８・・・外部ＰＣ、４９・・・コントロールパネル、５０・・・画像処理部、５１・・・ＣＰＵ、５２・・・画像セレクタ、５３・・・ラインバッファ、５４・・・乱数バッファＡ、５５・・・乱数バッファＢ、１００・・・電位センサ、１１０・・・画像形成装置。
【図１】
2015195472.tif 000003
【図２】
2015195472.tif 000004
【図３】
2015195472.tif 000005
【図４】
2015195472.tif 000006
【図５】
2015195472.tif 000007
【図６】
2015195472.tif 000008
【図７】
2015195472.tif 000009
【図８】
2015195472.tif 000010
【図１１】
2015195472.tif 000011
【図１３】
2015195472.tif 000012
【図１４】
2015195472.tif 000013
【図１５】
2015195472.tif 000014
【図１６】
2015195472.tif 000015
【図１９】
2015195472.tif 000016
【図２０】
2015195472.tif 000017
【図２１】
2015195472.tif 000018
【図２２】
2015195472.tif 000019
【図２３】
2015195472.tif 000020
【図９】
2015195472.tif 000021
【図１０】
2015195472.tif 000022
【図１２】
2015195472.tif 000023
【図１７】
2015195472.tif 000024
【図１８】
2015195472.tif 000025
【図２４】
2015195472.tif 000026
【図２５】
2015195472.tif 000027