(57)【特許請求の範囲】
【請求項１】
印刷データから所定の高さの第１の矩形領域のラスタデータを生成し、当該生成された前記第１の矩形領域のラスタデータを記憶手段に記憶する複数の描画手段と、
前記記憶手段に記憶された前記第１の矩形領域のラスタデータから前記所定の高さの第２の矩形領域のラスタデータを取得し、当該取得された前記第２の矩形領域のラスタデータに画像処理を行う処理手段と、
を有し、
前記複数の描画手段のそれぞれは、前記第１の矩形領域のラスタデータに含まれる別々の部分のラスタデータを生成し、
前記複数の描画手段に含まれる描画手段は、前記印刷データのうち該描画手段がラスタデータを生成する対象ではない領域に含まれるオブジェクトの位置情報を取得し、取得した前記位置情報に基づいて、該描画手段がラスタデータを生成する対象である部分のラスタデータを生成することを特徴とする画像処理装置。
【請求項２】
前記複数の描画手段のそれぞれは、前記第２の矩形領域のラスタデータに含まれる別々の部分のラスタデータを生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記複数の描画手段のそれぞれは、前記所定の高さよりも小さい高さ、且つ、前記第１の矩形領域の幅と等しい幅の矩形領域のラスタデータを生成することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記所定の高さよりも小さい高さは、前記複数の描画手段の数に基づいて決定されることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記所定の高さよりも小さい高さは、前記所定の高さを前記複数の描画手段の数で割った高さであることを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記所定の高さよりも小さい高さは、前記所定の高さよりも小さい該高さ、且つ、前記第１の矩形領域の幅と等しい前記幅の矩形領域のラスタデータを生成する描画手段の描画処理能力に基づいて決定されることを特徴とする請求項３に記載の画像処理装置。
【請求項７】
前記複数の描画手段のそれぞれは、それぞれに対応する矩形領域のラスタデータを、高さ方向に沿って順番に繰り返して生成することを特徴とする請求項３乃至６の何れか１項に記載の画像処理装置。
【請求項８】
前記第１の矩形領域の幅は、前記印刷データに対応するページの幅と等しいことを特徴とする請求項１乃至７の何れか１項に記載の画像処理装置。
【請求項９】
前記第１の矩形領域の幅は、前記印刷データに対応するページの幅よりも小さいことを特徴とする請求項１乃至７の何れか１項に記載の画像処理装置。
【請求項１０】
前記第１の矩形領域の幅は、前記第２の矩形領域の幅以上であることを特徴とする請求項１乃至９の何れか１項に記載の画像処理装置。
【請求項１１】
前記複数の描画手段によって前記第１の矩形領域のラスタデータが前記記憶手段に記憶されたことを検知すると、前記処理手段に所定の情報を通知する検知手段を有し、
前記処理手段は、前記所定の情報の通知に基づいて、前記画像処理を開始することを特徴とする請求項１乃至１０の何れか１項に記載の画像処理装置。
【請求項１２】
前記検知手段は、前記処理手段によって前記第２の矩形領域のラスタデータが前記記憶手段から取得されたことを検知すると、前記複数の描画手段に前記所定の情報とは異なる別の情報を通知し、
前記複数の描画手段は、前記別の情報の通知に基づいて、前記印刷データから、前記第１の矩形領域とは異なる前記所定の高さの矩形領域のラスタデータの生成を開始し、
前記複数の描画手段のそれぞれは、前記異なる矩形領域のラスタデータに含まれる別々の部分のラスタデータを生成することを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記複数の描画手段の数は、２つであることを特徴とする請求項１乃至１２の何れか１項に記載の画像処理装置。
【請求項１４】
前記画像処理は、圧縮処理であることを特徴とする請求項１乃至１３の何れか１項に記載の画像処理装置。
【請求項１５】
印刷データからラスタデータを生成する複数の描画手段と、
前記生成されたラスタデータを複数の矩形領域のラスタデータに分割する分割手段と、
前記分割された矩形領域のラスタデータ単位で画像処理を行う処理手段と、
を有し、
前記複数の描画手段のそれぞれは、前記分割により得られる１つの矩形領域のラスタデータに含まれる別々の部分のラスタデータを生成し、
前記複数の描画手段に含まれる描画手段は、前記印刷データのうち該描画手段がラスタデータを生成する対象ではない領域に含まれるオブジェクトの位置情報を取得し、取得した前記位置情報に基づいて、当該描画手段がラスタデータを生成する対象である部分のラスタデータを生成することを特徴とする画像形成装置。
【請求項１６】
前記複数の描画手段のそれぞれは、前記印刷データに対応するページが副走査方向に分割された複数のバンドのうち、他の描画手段が描画対象とするバンドとは異なるバンドのラスタデータを生成することで、前記別々の部分のラスタデータを生成することを特徴とする請求項１５に記載の画像形成装置。
【請求項１７】
複数の描画手段が、印刷データから所定の高さの第１の矩形領域のラスタデータを生成し、当該生成された前記第１の矩形領域のラスタデータを記憶手段に記憶させる描画工程と、
処理手段が、前記記憶手段に記憶された前記第１の矩形領域のラスタデータから前記所定の高さの第２の矩形領域のラスタデータを取得し、当該取得された前記第２の矩形領域のラスタデータに画像処理を行う処理工程と、
を有し、
前記複数の描画手段のそれぞれは、並列して、前記第１の矩形領域のラスタデータに含まれる別々の部分のラスタデータを生成し、
前記複数の描画手段に含まれる描画手段は、前記印刷データのうち該描画手段がラスタデータを生成する対象ではない領域に含まれるオブジェクトの位置情報を取得し、取得した前記位置情報に基づいて、該描画手段がラスタデータを生成する対象である部分のラスタデータを生成することを特徴とする画像処理方法。
【請求項１８】
コンピュータに、
複数の描画手段が、印刷データから所定の高さの第１の矩形領域のラスタデータを生成し、当該生成された前記第１の矩形領域のラスタデータを記憶手段に記憶させる描画工程と、
処理手段が、前記記憶手段に記憶された前記第１の矩形領域のラスタデータから前記所定の高さの第２の矩形領域のラスタデータを取得し、当該取得された前記第２の矩形領域のラスタデータに画像処理を行う処理工程と、
を実行させるためのプログラムであって、
前記描画工程において、前記複数の描画手段のそれぞれが、並列して、前記第１の矩形領域のラスタデータに含まれる別々の部分のラスタデータを生成し、
前記複数の描画手段に含まれる描画手段が、前記印刷データのうち該描画手段がラスタデータを生成する対象ではない領域に含まれるオブジェクトの位置情報を取得し、取得した前記位置情報に基づいて、該描画手段がラスタデータを生成する対象である部分のラスタデータを生成する処理を、前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の描画処理部で並列に描画処理を実行する技術に関する。
【背景技術】
【０００２】
ビットマップ等のラスタデータを、回転処理等の画像処理に適した矩形形状（例：３２画素×３２画素）のラスタデータに分割することが従来より行われている。この矩形形状（タイル）のラスタデータは、タイルデータとも呼ばれる。
【０００３】
特許文献１は、以下の処理を開示する。（１）レンダラーが、ページ記述言語（ＰＤＬ）で記述された単一ページの画像データ（印刷データ）から、タイルの高さ（例：３２画素）と等しい高さを持つバンドのラスタデータを生成する。（２）タイル分割部が、その生成されたバンドのラスタデータを、回転処理等の画像処理を行う際に好適なタイルデータに分割する。すなわち特許文献１の技術は、１つのレンダラーが生成したタイル高さのバンドのラスタデータを、１つのタイル分割部が複数のタイルデータに分割する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−５３８２２
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、ラスタデータの生成処理（描画処理）の高速化のために、複数のレンダラーを用いることは考慮されていなかった。
【０００６】
複数のレンダラーのそれぞれが、タイル高さと等しい高さを持つバンドのラスタデータを並列して生成すると、生成された複数バンドのラスタデータをタイル分割が行われるまで記憶しておくメモリが必要となる。すなわち、複数のタイルデータに分割されることになるタイル高さのバンドのラスタデータに、一のレンダラーが生成したラスタデータは含まれるが、別のレンダラーが生成したラスタデータは含まれないので、タイル分割に必要なメモリ量が多くなる。
【課題を解決するための手段】
【０００７】
本発明の画像処理装置は、印刷データから所定の高さの第１の矩形領域のラスタデータを生成し、当該生成された前記第１の矩形領域のラスタデータを記憶手段に記憶する複数の描画手段と、前記記憶手段に記憶された前記第１の矩形領域のラスタデータから前記所定の高さの第２の矩形領域のラスタデータを取得し、当該取得された前記第２の矩形領域のラスタデータに画像処理を行う処理手段と、を有し、前記複数の描画手段のそれぞれは、前記第１の矩形領域のラスタデータに含まれる別々の部分のラスタデータを生成し、前記複数の描画手段に含まれる描画手段は、前記印刷データのうち該描画手段がラスタデータを生成する対象ではない領域に含まれるオブジェクトの位置情報を取得し、取得した前記位置情報に基づいて、該描画手段がラスタデータを生成する対象である部分のラスタデータを生成することを特徴とする。
【発明の効果】
【０００８】
並列化された描画処理によって生成されるラスタデータを記憶するためのメモリ量を抑えることができる。
【図面の簡単な説明】
【０００９】
【図１】画像形成装置の構成を示す図である。
【図２】画像形成装置におけるＰＤＬ印刷処理のデータフローを示す図である。
【図３】画像形成装置で扱うページ内での矩形領域の座標系の一例を示す図である。
【図４】描画処理に関わるブロック構成を示す図である。
【図５】描画処理に関わるブロック構成の一部が停止した状態を示す図である。
【図６】ＰＤＬ印刷処理を示すフローチャートである。
【図７】第１の実施例の描画処理設定を示すフローチャートである。
【図８】第２の実施例の描画処理設定を示すフローチャートである。
【図９】並列描画処理を示すフローチャートである。
【図１０】バンド単位のライトとブロック単位のリードのアクセス制御を示す図である。
【図１１】バンド単位と矩形領域ブロック単位の矩形領域の位置関係を示す図である。
【図１２】ディスプレイリストに含まれる描画オブジェクトの座標更新を説明する図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。
【００１１】
図１は、本発明の実施例の画像形成装置の構成例を示す図である。図１に示すように、画像形成装置１００は、コントローラ１０１、ネットワーク１０２、操作部１０３、読取部１０４、印刷部１０５で構成される。ネットワーク１０２は、ＬＡＮやＷＡＮ（公衆回線）等で実現され、ホストコンピュータやサーバ等の外部装置と画像形成装置１００との間で画像データやデバイス情報を送受信する通信部である。操作部１０３は、ユーザーによる操作を画像処理の制御情報として取得したり、ユーザーに対して画像処理の制御情報を表示したりする処理部である。読取部（スキャナエンジン）１０４は、画像入力デバイスであって、光学センサ等を用いて画像形成装置１００の内部に画像データを取り込む処理部である。印刷部（プリンタエンジン）１０５は、画像出力デバイスであって、画像形成装置１００の内部の画像データを記録媒体に印字して出力する処理部である。
【００１２】
コントローラ１０１は、ネットワーク１０２、操作部１０３、読取部１０４、印刷部１０５と接続され、画像形成装置１００全体の制御を行う制御部である。コントローラ１０１は、システムバス１０６、通信部Ｉ／Ｆ１０７、ＣＰＵ１０８、ＲＡＭ１０９、ＲＯＭ１１０、ＨＤＤ１１１、操作部Ｉ／Ｆ１１２、読取部Ｉ／Ｆ１１３、画像処理部１１４〜１１７、印刷部Ｉ／Ｆ１１８で構成される。
【００１３】
システムバス１０６は、コントローラ１０１を構成する各部を接続し、各部の間で画像データや制御情報の送受信を行うための通信路である。通信部Ｉ／Ｆ１０７は、例えばＬＡＮカード等で実現され、ネットワーク１０２を介してホストコンピュータやサーバ等の外部装置と画像形成装置１００との間で画像データやデバイス情報を送受信するためのインタフェースである。
【００１４】
ＣＰＵ１０８は、画像形成装置１００全体を制御する処理部である。このＣＰＵ１０８は、特に、ＰＤＬ印刷処理においては、ネットワーク１０２を介して外部装置から受信したＰＤＬデータ（印刷データの一例である）を解釈して、ＤＬ（ディスプレイリスト）と呼ばれる中間データに変換する。ＲＡＭ（ＲａｎｄｏｍＡｃｃｅｓｓＭｅｍｏｒｙ）１０９は揮発性メモリであり、ＣＰＵ１０８がシステム上で動作するためのワーク領域として使用されたり、画像データを一次記憶するためのバッファ領域として使用されたりする。ＲＯＭ（ＲｅａｄＯｎｌｙＭｅｍｏｒｙ）１１０は不揮発性メモリであり、ＣＰＵ１０８がシステムを起動するためのプログラムが格納されている一次記憶部である。このプログラムは、画像形成装置１００の起動時にＲＡＭ１０９に展開され、ＣＰＵ１０８により実行される。ＨＤＤ（ハードディスクドライブ）１１１は、画像形成装置１００の内部で画像データを格納しておくための大容量記憶部である。
【００１５】
操作部Ｉ／Ｆ１１２は、ユーザーによる操作を画像処理の制御情報として取得したり、ユーザーに対して画像処理の制御情報を表示したりするためのインタフェースである。読取部Ｉ／Ｆ（スキャン画像処理部）１１３は、読取部（スキャナエンジン）１０４と接続され、読取部１０４から入力された画像データに対して、読取部１０４のデバイス特性に合わせた補正のための画像処理を行う画像処理部である。
【００１６】
描画処理部１１４は、ＰＤＬデータからＣＰＵ１０８が生成したベクタ形式の中間データ（ＤＬ）に基づいた描画処理を行い、ラスタ形式の画像データ（ラスタデータ）をブロックＲＡＭ１１５に出力する。描画処理部１１４は、内部にレジスタ（内部レジスタと呼ぶ）、および、複数の描画処理部（第１描画処理部４０１、第２描画処理部４０２）を備えている。その内部レジスタは描画処理に関する各情報を記憶する。また複数の描画処理部は、描画処理を並列して行うことが可能である。また、各描画処理部は、起動時に内部レジスタの事前に決められた別々のアドレスを参照しにいくことで、自身の識別情報（ＩＤ）を取得する。ブロックＲＡＭ１１５は、ラスタデータを一次保持するメモリとアクセス検知装置を備えており、ブロックＲＡＭ１１５は、自身のメモリにおける特定のアドレスへのラスタデータの書き出し、および、読み出しを検知することができる。圧縮処理部１１６は、ブロックＲＡＭ１１５に一次保持されたラスタデータのうち、後述する矩形形状（タイル形状）のラスタデータ（タイルデータ）を抽出し、抽出したタイルデータに対して圧縮処理を行うことで圧縮画像データを生成する。つまり圧縮処理部１１６は、ブロックのラスタデータ単位でバンドを抽出（分割）し、そのラスタデータ単位で圧縮処理を行う。なお圧縮処理部１１６は、タイルデータに対する画像処理の一例として圧縮処理を行うもので、本発明は、画像処理を圧縮処理に限定しない。
【００１７】
なお、ＰＤＬ印刷時の描画処理に関わる描画処理部１１４、ブロックＲＡＭ１１５、圧縮処理部１１６の動作については、図４を用いて詳細に説明する。
【００１８】
伸張処理部１１７は、圧縮処理部１１６で圧縮処理が行われた圧縮画像データに対して伸張処理を行うことで伸張画像データを生成する。
【００１９】
印刷部Ｉ／Ｆ（プリント画像処理部）１１８は、印刷部（プリンタエンジン）１０５と接続されている。この印刷部Ｉ／Ｆ（プリント画像処理部）１１８は、伸張処理が行われた伸張画像データに対して印刷部１０５のデバイス特性に合わせた補正のための画像処理（例えばガンマ補正処理）を行った後に、印刷部１０５に補正後の画像データを出力する。
【００２０】
次に、図２及び図３を用いて、画像形成装置１００におけるＰＤＬ印刷処理のデータフロー及び画像データ単位の関係を説明する。図２は、画像形成装置１００におけるＰＤＬ印刷処理のデータフローを示す図である。図３は、画像形成装置１００で扱うページ内でのタイルデータの座標系の例を示す図である。このページとはＰＤＬデータによって表現される。なお、ＣＰＵ１０８が、画像形成装置１００の起動時に、ＨＤＤ１１１に記憶されているプログラムをＲＡＭ１０９に展開し、実行すると、図１に示される各部が統括的に制御されて図２のデータフローは実現される。
【００２１】
図２に示すように、画像形成装置１００の通信部Ｉ／Ｆ１０７は、ホストコンピュータからＰＤＬデータを受信し、ページ単位のＰＤＬデータ２０１としてＲＡＭ１０９に記憶する。次に、ＣＰＵ１０８は、受信したＰＤＬデータ２０１を解釈し、ページ単位の中間データ（ＤＬ）２０２を生成し、再びＲＡＭ１０９に記憶する。生成されたページ単位の中間データ（ＤＬ）２０２の一例を図１２（ａ）に示す。図１２（ａ）に例示される中間データ（ＤＬ）は、データの終わりを示す情報（ＥｎｄＯｆＰａｇｅ）および５つの描画オブジェクト１〜５を含む。各描画オブジェクト１〜５は、それぞれが描画される位置の情報を持ち、副走査方向の座標位置順（Ｙ座標の昇順）でソートされた状態で中間データに含まれる。
【００２２】
ＣＰＵ１０８は、中間データを生成すると、この中間データが記憶されるＲＡＭ１０９のアドレスの先頭アドレスを並列描画処理設定情報（単に描画処理設定情報とも呼ぶ）２０３として描画処理部１１４の内部レジスタに設定する。またこの際に、ＣＰＵ１０８は、描画処理部１１４の並列動作に関わる情報（例えば、並列動作させる描画処理部の数（並列動作数）や、各描画処理部によって描画されるバンドの副走査方向の画素数（高さ））も、描画処理設定情報２０３に含めておく。
【００２３】
ここで、バンド単位は、図３（ａ）及び図３（ｂ）に例示される。すなわち、単一ページ内を副走査方向で分割することで主走査方向（スキャンライン方向、あるいは幅方向とも呼ぶ）の画素数（幅）よりも副走査方向（高さ方向とも呼ぶ）の画素数（高さ）の方が小さい短冊状の矩形領域を意味する。一方で、ブロック単位（タイル単位とも呼ぶ）とは、図３（ａ）及び図３（ｂ）で示すように、画像形成装置１００において予め定めた主走査方向の画素数（幅）と副走査方向の画素数（高さ）が等しい正方形タイル形状の矩形領域を意味する。別の言い方をすると、バンドの幅は、ページの幅と等しく、且つ、ブロック（あるいはタイル）の幅以上である。
【００２４】
図３（ａ）と図３（ｂ）の違いは、ブロック単位の矩形領域がバンド単位の矩形領域に包含される位置関係にあるか否かである。すなわち、図３（ａ）は、ブロックがバンドに包含され、単一のバンドには複数のブロックが含まれる。一方で、図３（ｂ）は、描画処理を並列に実行する上で好適なバンド単位を示し、ブロックがバンドに包含されておらず、１つのブロックは少なくとも複数のバンドのデータを含んでいる。言い換えると、隣接するバンドのデータそれぞれは、１つのブロックの別々の部分のデータである。なお、図３（ｂ）での各バンドの副走査方向の画素数（高さ）は、ブロックの副走査方向の画素数（高さ）を並列動作数で割った数となっている。具体的には、図３（ｂ）に示すように、単一のページ１において、バンド１１あるいはバンド１２の高さは、単一のブロック１１の高さを、並列動作数「２」で割ったものである。
【００２５】
本実施例では、図３（ｂ）に示すように、１つの描画処理部によって描画されるバンドは、副走査方向で細かくページが分割されたものに相当する。この理由について説明する。描画処理の並列化において、複数の領域に分割される。ページに含まれる文字、写真、図形等の描画オブジェクトの複雑さにもよるが、一般に、単一の描画オブジェクトが異なる複数の矩形領域に分割されるので描画処理のオーバーヘッドが増えてしまう。この描画処理のオーバーヘッドを低減するために、本実施例は、描画処理アルゴリズムの特性を考慮する。例えば、本実施例の描画処理部が採用する描画処理アルゴリズムがスキャンライン方式（スキャンラインに沿って画素を順次描画する方式）であるとする。この場合、主走査方向でページを分割するよりも、副走査方向でページを分割した方が、描画処理のオーバーヘッドを抑えることができる。すなわち、スキャンライン方式による描画処理を行う描画処理部を複数用いて描画処理を並列化する場合、バンド単位で並列化するのが有効である。
【００２６】
以降の実施例においては、図３（ｂ）で規定されたページ内でのバンド単位、及び、ブロック単位に基づいて説明を行うものとする。
【００２７】
描画処理部（ＲＩＰ）１１４は、ＲＡＭ１０９に記憶された中間データ（ＤＬ）２０２を参照し、単一ページ内の複数のバンド単位の矩形領域に対する描画処理を並列に実行する。描画処理部１１４は、この並列描画によって複数のバンドのラスタ形式の画像データ（ラスタデータ）２０４を生成し、そのラスタデータをブロックＲＡＭ１１５に一次保持する。
【００２８】
続いて、圧縮処理部１１６は、ブロックＲＡＭ１１５に一次保持された複数のバンド単位のラスタデータを結合し、結合された複数バンドのラスタデータからブロック単位のラスタデータを読み出す。単一ブロックのラスタデータは、複数のバンドのラスタデータを含む。そして圧縮処理部１１６は、読みだしたブロック単位のラスタデータにＪＰＥＧ等の圧縮処理を行って圧縮画像データを生成し、その圧縮画像データを再びＲＡＭ１０９に記憶する。
【００２９】
更に、伸張処理部１１７は、ＲＡＭ１０９に記憶されている、単一ページを構成する全てのブロック単位の圧縮画像データに対してＪＰＥＧ等の伸張処理を行うことで、ページ単位のラスタデータを生成し、再びＲＡＭ１０９に一次記憶する。
【００３０】
この後、印刷部Ｉ／Ｆ１１８は、ＲＡＭ１０９に一次保持されたページ単位のラスタデータを読み出し、印刷部１０５のデバイス特性に合わせた補正のための画像処理を行った後に、印刷部１０５に対してその補正後の画像データを出力する。これを受けて、印刷部（プリンタエンジン）１０５は、印刷部Ｉ／Ｆ１１８から転送された画像データに基づいて印刷を行う。
【００３１】
次に、図４を用いて、本実施例におけるＰＤＬ印刷時の描画処理の動作を説明する。図４は、ＲＡＭ１０９に一次保持した中間データ（ＤＬ）２０２に対してバンド単位で並列に描画処理を実行した後に、ブロック単位の圧縮画像データ２０５を再びＲＡＭ１０９に記憶するまでの内部動作を示している。
【００３２】
図４（ａ）は、図３（ａ）のように、ブロック単位の矩形領域がバンド単位の矩形領域に包含される場合における例である。図４（ａ）において、画像形成装置１００は、描画処理部１１４に備わる第１描画処理部４０１及び第２描画処理部４０２を用いて、単一ページ内の複数バンドを並列に描画する。例えば、第１描画処理部４０１は、単一ページ内の奇数バンド目を描画処理し、偶数バンド目を描画処理しないで描画オブジェクトの輪郭のスキャンライン毎の位置座標更新を行う。また例えば、第２描画処理部４０２は、単一ページ内の偶数バンド目を描画処理し、奇数バンド目を描画処理しないで描画オブジェクトの輪郭のスキャンライン毎の位置座標更新のみを行う。
【００３３】
このように、第１描画処理部４０１及び第２描画処理部４０２は、それぞれバンド単位で描画処理対象とする描画オブジェクトを取得する。本実施例では、ＲＡＭ１０９に一次記憶された中間データ（ＤＬ）２０２は、ページ単位であるが、バンド単位で描画オブジェクトを取得しやすいバンド単位に予め分割された中間データ（ＤＬ）であっても良い。
【００３４】
次に、第１描画処理部４０１は、ブロックＲＡＭ１１５を構成する第１ブロックＲＡＭ４１１に対して図３（ａ）で示したバンド１及びバンド３の画像データを順に出力する。一方、第２描画処理部４０２は、ブロックＲＡＭ１１５を構成する第２ブロックＲＡＭ４１２に対して図３（ｂ）で示したバンド２及びバンド４の画像データを順に出力する。
【００３５】
続いて、圧縮処理部１１６を構成する第１圧縮処理部４２１は、第１ブロックＲＡＭ４１１に一次記憶された図３（ａ）で示したバンド１からブロック単位で画像データを順に読み出し、圧縮処理を実行した後にＲＡＭ１０９に転送する。一方、圧縮処理部１１６を構成する第２圧縮処理部４２２は、第２ブロックＲＡＭ４１２に一次記憶された図３（ａ）で示したバンド２からブロック単位で画像データを順に読み出し、圧縮処理を実行した後にＲＡＭ１０９に転送する。
【００３６】
ここで、第１ブロックＲＡＭ４１１は、第１描画処理部４０１による書き出し、および、圧縮処理部１１６による読み出しを同時に実行可能なダブルバッファで構成している。従って、例えば、第１描画処理部４０１によるバンド３の書き出し処理と第１圧縮処理部４２１によるバンド１内のブロック１１〜１４の読み出し処理を同時に実行できる。第２ブロックＲＡＭ４１２も、同様の構成である。
【００３７】
以上で説明したように、図４（ａ）の例では、描画処理部１１４の並列処理で必要とするリソースだけでなく、ブロックＲＡＭ１１５、及び、圧縮処理部１１６も描画処理部１１４の並列動作数に応じて複数のリソースを必要とすることが分かる。つまり、第１ブロックＲＡＭ４１１、第２ブロックＲＡＭ４１２、第１圧縮処理部４２１、第２圧縮処理部４２２が必要となる。
【００３８】
図４（ｂ）は、図３（ｂ）のように、ブロック単位の矩形領域がバンド単位の矩形領域に包含されずに、ブロック単位の副走査方向の画素数を描画処理部１１４の並列動作数に基づく複数のバンド単位の高さで分割した場合における例である。図４（ｂ）において、画像形成装置１００は、描画処理部１１４を構成する第１描画処理部４０１及び第２描画処理部４０２を用いて、単一ページ内の複数バンドを並列に描画する。すなわち描画処理設定情報２０３の並列動作数は「２」である。第１描画処理部４０１は、単一ページ内の奇数バンド目を描画処理し、偶数バンド目を描画処理せずに描画オブジェクトのスキャンライン毎の位置座標更新を行う。第２描画処理部４０２は、単一ページ内の偶数バンド目を描画処理し、奇数バンド目を描画処理せずに描画オブジェクトのスキャンライン毎の位置座標更新を行う。
【００３９】
このように、第１描画処理部４０１及び第２描画処理部４０２は、それぞれバンド単位で描画処理対象とする描画オブジェクトを取得する。本実施例では、ＲＡＭ１０９に一次記憶された中間データ（ＤＬ）２０２は、ページ単位であるが、バンド単位で描画オブジェクトを取得しやすいバンド単位に予め分割された中間データ（ＤＬ）であっても良い。
【００４０】
次に、第１描画処理部４０１は、ブロックＲＡＭ１１５を構成する第１ブロックＲＡＭ４１１に対して図３（ｂ）で示したバンド１１及びバンド２１の画像データを順に出力する。一方、第２描画処理部４０２は、ブロックＲＡＭ１１５を構成する第１ブロックＲＡＭ４１１に対して図３（ｂ）で示したバンド１２及びバンド２２の画像データを順に出力する。
【００４１】
続いて、圧縮処理部１１６の第１圧縮処理部４２１は、第１ブロックＲＡＭ４１１に一次記憶された図３（ｂ）で示したバンド１１及びバンド１２を結合したバンドからブロック単位で画像データを順に読み出す。そして第１圧縮処理部４２１は、読みだされたブロック単位の画像データに圧縮処理を実行した後、圧縮された画像データをＲＡＭ１０９に転送する。
【００４２】
ここでも、第１ブロックＲＡＭ４１１および第２ブロックＲＡＭ４１２は、描画処理部４０１、４０２による書き出しと圧縮処理部１１６による読み出しを同時に実行可能なダブルバッファで構成している。
【００４３】
以上で説明したように、図４（ｂ）の例では、描画処理部１１４の並列処理を実現するために、ブロックＲＡＭ１１５、及び、圧縮処理部１１６のリソースを変更することなく、描画処理部１１４の並列処理で必要とするリソースのみで良いことが分かる。
【００４４】
図５は、図４（ｂ）では、第２描画処理部４０２を停止して、第１描画処理部４０１のみを動作させた例である。この時、描画処理部１１４の並列動作数が１になるので、ブロック単位の矩形領域がバンド単位の矩形領域に包含される図３（ａ）と同様の位置関係になる。
【００４５】
図５において、画像形成装置１００は、描画処理部１１４を構成する第１描画処理部４０１のみを用いて、単一ページ内のバンド単位で順に描画する。すなわち描画処理設定情報２０３の並列動作数は「１」である。次に、第１描画処理部４０１は、ブロックＲＡＭ１１５を構成する第１ブロックＲＡＭ４１１に対して図３（ａ）で示したバンド１及びバンド２の画像データを順に出力する。続いて、圧縮処理部１１６を構成する第１圧縮処理部４２１は、第１ブロックＲＡＭ４１１に一次記憶された図３（ａ）で示したバンド１に対応するバンド単位からブロック単位で画像データを順に読み出し、圧縮処理を実行した後にＲＡＭ１０９に転送する。ここでも、第１ブロックＲＡＭ４１１は描画処理部４０１による書き出しと圧縮処理部１１６による読み出しを、同時に実行可能なダブルバッファで構成している。
【００４６】
以上で説明したように、図５の例では、描画処理部１１４の描画処理設定を変更し、複数の描画処理部のうちの一部を停止させた場合にも、描画処理の並列動作数とバンドの高さを対応させて変更することで、同様の描画処理を実現できる。
【００４７】
図６は、ＰＤＬ印刷処理を説明するためのフローチャートである。このフローチャートは、ＣＰＵ１０８がＲＯＭ１１０に格納されているプログラムを実行することで、図１に示される各部が統括的に制御されて実現される。
【００４８】
まず、ＣＰＵ１０８は、ホストコンピュータから送信されたＰＤＬデータを通信部Ｉ／Ｆ１０７を介して受信し、ページ単位のＰＤＬデータ２０１としてＲＡＭ１０９に記憶する（Ｓ６０１）。
【００４９】
次に、ＣＰＵ１０８は、受信したＰＤＬデータ２０１を解釈し（Ｓ６０２）、解釈した情報を元に中間データ（ＤＬ）２０２を生成する（Ｓ６０３）。この中間データ（ＤＬ）は前述のように図１２（ａ）に例示されるものである。
【００５０】
次に、ＣＰＵ１０８は、描画処理部１１４のための並列描画処理設定を行う（Ｓ６０４）。具体的には描画処理部１１４の描画対象とするバンドの高さの設定である。Ｓ６０４については、図７のフローチャートを用いて詳細に説明する。
【００５１】
次に、ＣＰＵ１０８は、描画処理部１１４を制御して描画処理を実行し、ラスタ形式の画像データ（ラスタデータ）２０４を生成する（Ｓ６０５）。Ｓ６０５については、図９のフローチャートを用いて詳細に説明する。
【００５２】
次に、ＣＰＵ１０８は、圧縮処理部１１６を制御して圧縮処理を実行した後に、ＲＡＭ１０９に圧縮画像データ２０５を記憶する（Ｓ６０６）。Ｓ６０６については、図１０を用いて詳細に説明する。
【００５３】
次に、ＣＰＵ１０８は、伸張処理部１１７を制御して、ＲＡＭ１０９に記憶された圧縮画像データ２０５に対して伸張処理を実行した後に、再びＲＡＭ１０９に画像データ２０６を記憶する（Ｓ６０７）。
【００５４】
次に、ＣＰＵ１０８は、印刷部Ｉ／Ｆ１１８を制御してＲＡＭ１０９から印刷部１０５に対して画像データ２０６を転送する。そして、ＣＰＵ１０８は、画像データ２０６に対して印刷部１０５のデバイス特性に合わせた補正の画像処理を行った後に、印刷部１０５に対して画像処理後の画像データを転送する（Ｓ６０８）。
【００５５】
その後、印刷部１０５は、印刷部Ｉ／Ｆ１１８から転送された画像データを記録媒体に印字して出力する（Ｓ６０９）。
【００５６】
図７は、Ｓ６０４の描画処理設定の処理を説明するためのフローチャートである。
【００５７】
まず、ＣＰＵ１０８は、画像形成装置１００の内部で扱う画像データ単位としてのブロックの高さをＲＯＭ１１０から取得する（Ｓ７０１）。本実施例では、このブロックの高さは事前に決められた所定の高さであるが、ユーザーの設定する画像形成装置の動作モードに応じて動的に決定されても良い。ここでは、説明を簡単にするために、ブロック単位を８画素×８画素の正方形タイル形状として説明を行う。
【００５８】
次に、ＣＰＵ１０８は、描画処理部１１４においてバンド単位の描画処理を行うリソースのうちの並列動作数を、描画処理部１１４の内部レジスタから取得する（Ｓ７０２）。この並列動作数は、ユーザーの設定する画像形成装置の動作モードに応じて異なる値が、Ｓ７０２の処理の前にＣＰＵ１０８によって内部レジスタに設定されている。例えば、ユーザーが動作モードとして省電力印刷モードを指定した場合に、描画処理部１１４の並列動作数は図５に示されるように「１」が内部レジスタに設定されている。また例えば、ユーザーが動作モードとして省電力印刷モードを指定しなかった場合に、描画処理部１１４の並列動作数は図４（ｂ）に示されるように「２」が内部レジスタに設定されている。また例えば、ユーザーが動作モードとして高速印刷モードを指定した場合に、描画処理部１１４の並列動作数は「４」（２以上）が内部レジスタに設定されている。
【００５９】
次に、ＣＰＵ１０８は、Ｓ７０２で取得した並列動作数が２以上であるか否かを判定する（Ｓ７０３）。Ｓ７０３で２以上であれば（ＹＥＳ）、Ｓ７０５に遷移し、Ｓ７０３で１であれば（ＮＯ）、Ｓ７０４に遷移する。
【００６０】
Ｓ７０４で、ＣＰＵ１０８は、Ｓ７０１で取得したブロックの高さを、描画処理部１１４で処理単位とするバンドの高さとして、内部レジスタの描画処理設定情報２０３に設定する。例えば、８画素×８画素のブロック単位に対して、並列動作数は１なので、バンドの高さを８画素として、これを描画処理部１１４の内部レジスタに設定する。
【００６１】
一方で、Ｓ７０５で、ＣＰＵ１０８は、Ｓ７０１で取得したブロックの高さを、Ｓ７０２で取得した並列動作数で均等分割するようにバンドの高さを内部レジスタの描画処理設定情報２０３に設定する（Ｓ７０６）。例えば、８画素×８画素のブロック単位に対して、並列動作数は２なので、バンドの高さを４画素として、これを描画処理部１１４の内部レジスタに設定する。
【００６２】
以上が描画処理設定の処理フローである。
【００６３】
図９は、描画処理を説明するためのフローチャートである。以下、ＣＰＵ１０８の制御に基づいて描画処理部１１４が動作するものとして説明する。
【００６４】
まず、描画処理部１１４で動作する各描画処理部の読み出し処理部（図４（ｂ）、図５参照）は、ＣＰＵ１０８によって描画処理部１１４の内部レジスタに描画処理設定情報２０３として設定された中間データ（ＤＬ）の先頭アドレスを取得する（Ｓ９０１）。
【００６５】
次に、描画処理部１１４は、Ｓ６０４でＣＰＵ１０８によって設定されたバンド高さを内部レジスタから取得する（Ｓ９０２）。
【００６６】
次に、描画処理部１１４における各描画処理部は、描画処理部１１４の内部でバンド単位の描画処理を実行する並列動作数と、自身のＩＤを内部レジスタから取得する（Ｓ９０３）。例えば、図４（ｂ）で示した描画処理部１１４における第１描画処理部４０１であれば、並列動作数として「２」、自身のＩＤとして「１」を取得し、第２描画処理部４０２であれば、並列動作数として「２」、自身のＩＤとして「２」を取得する。
【００６７】
以下で説明するＳ９０４からＳ９０９までの一連の処理は、中間データ（ＤＬ）に含まれる先頭のバンドから末尾のバンドまでバンドごとに繰り返される。現在処理の対象となっているバンドのことを、当該バンドと呼ぶ。
【００６８】
描画処理部１１４の各描画処理部は、当該バンド領域に含まれる描画オブジェクトを中間データ（ＤＬ）から取得する（Ｓ９０４）。本実施例では、各描画処理部４０１、４０２は、Ｓ９０１で取得された先頭アドレスから末尾アドレスに向かって、ページ単位の中間データ（ＤＬ）に順次アクセスすることで描画オブジェクトを取得する。なお本実施例の中間データ（ＤＬ）の概要は、図１２（ａ）に示される。すなわちページ単位の中間データ（ＤＬ）２０２は、描画される位置情報（Ｘ座標およびＹ座標）を持った描画オブジェクトが、先頭のバンドから末尾のバンドに向かってソートされた状態で格納されるように、ＣＰＵ１０８によって生成されている。そのため、中間データ（ＤＬ）の先頭から描画オブジェクトの位置座標（Ｙ座標）を確認することで、当該バンドのＸ座標およびＹ座標の範囲内に含まれる描画オブジェクトを、簡単に取得することができる。
【００６９】
次に、描画処理部１１４における各描画処理部は、当該バンドがＳ９０３で取得された自身のＩＤに対応するかを判定する（Ｓ９０５）。例えばこの判定は、当該バンドの先頭バンドからの順番を並列動作数で割った余りの値が、ＩＤの番号と一致するか否かで判定できる。なお判定方法はこれに限られず、本判定の主旨は、各描画処理部が当該バンドの描画処理を自身で行うか否かを判定することである。
【００７０】
例えば、図４（ｂ）で示した第１描画処理部４０１は、自身のＩＤが１であるので、第図３（ｂ）で示したバンド１１（バンドの順番で１番目）を描画対象であると判定する。一方で、図４（ｂ）で示した第２描画処理部４０２は、自身のＩＤが２であるので、図３（ｂ）で示したバンド１１を描画対象でないと判定する。
【００７１】
また、例えば、図４（ｂ）で示した第１描画処理部４０１は、自身のＩＤが１であるので、図３（ｂ）で示したバンド１２（バンドの順番で２番目）を描画対象でないと判定する。一方で、図４（ｂ）で示した第２描画処理部４０２は、自身のＩＤが２であるので、図３（ｂ）で示したバンド１２を描画対象であると判定する。
【００７２】
Ｓ９０５で描画対象であると判定した場合（ＹＥＳ）、Ｓ９０６に遷移し、Ｓ９０５で描画対象でないと判定した場合（ＮＯ）、Ｓ９０８に遷移する。
【００７３】
次に、Ｓ９０６で、描画処理部１１４の各描画処理部は、ブロックＲＡＭ１１５に空き領域があるか否かを判定する。空き領域があるか否かは、ブロックＲＡＭ１１５からの通知によって判定される。各描画処理部は、空き領域が無ければ（ＮＯ）、Ｓ９０６で空き領域ができるまで待ち状態となり、空き領域があれば（ＹＥＳ）、処理はＳ９０７に遷移する。この空き領域の有無の判定（すなわち圧縮処理部１１６によるラスタデータのブロックＲＡＭ１１５からの読み出しと、各描画処理部によるラスタデータのブロックＲＡＭ１１５への書き出しとの関係）については、図１０を用いて後述する。
【００７４】
Ｓ９０７に遷移した場合、描画処理部１１４の各描画処理部は、当該バンド領域に含まれる描画オブジェクトの輪郭と現在のスキャンライン（Ｙ座標）との交点の位置座標（Ｘ座標）を、ディスプレイリストの情報から求める。そして、描画処理部は、求められた位置情報に基づいて、描画オブジェクトを含んだ現在のスキャンラインの描画を行う。この描画は、ラスタデータの生成およびその生成されたラスタデータのブロックＲＡＭ１１５の空き領域への出力（書き出し）を、スキャンラインの画素毎に繰返し行う。そして描画処理部は、次のスキャンラインにおける描画オブジェクトの輪郭の位置座標（Ｘ座標）を求め、同様に次のスキャンラインにおける描画を行う。各描画処理部によるラスタデータのブロックＲＡＭ１１５への書き出しと、圧縮処理部１１６によるラスタデータのブロックＲＡＭ１１５からの読み出しとの関係は、図１０を用いて後述される。
【００７５】
なお、次のスキャンラインにおける描画オブジェクトの輪郭の位置座標は、現在のスキャンラインにおいて求められた描画オブジェクトの輪郭の位置情報と、その輪郭の傾き（スキャンライン（Ｙ座標）が進むたびのＸ座標の移動量）とに基づいて求められる。
【００７６】
一方で、Ｓ９０８に遷移した場合、描画処理部１１４の各描画処理部は、当該バンド領域に含まれる描画オブジェクトの輪郭とスキャンライン（Ｙ座標）との交点の位置座標（Ｘ座標）を、ディスプレイリストの情報から求める。次のスキャンラインにおける描画オブジェクトの輪郭の位置情報は、直前のスキャンラインにおける描画オブジェクトの輪郭の位置情報と、その輪郭の傾き（スキャンライン（Ｙ座標）が進むたびのＸ座標の移動量）とで求められる。描画処理部は、この新たに求められた位置座標で描画オブジェクトの輪郭の位置座標をスキャンラインごとに逐次、更新していく。なお、この場合の当該バンドは描画処理部の描画対象ではないので、描画処理部は描画処理（ラスタデータの生成）までは行わない。
【００７７】
このように、描画対象でないバンドについても描画オブジェクトの位置座標を求めて更新するのは、その描画オブジェクトが描画対象となる次のバンドにも含まれることになる場合でも、描画オブジェクトを正しい位置に描画するためである。この様子は図１２（ａ）、（ｂ）に例示される。まず第２描画処理部４０２は、中間データ（ＤＬ）２０２に記載されている三角形の描画オブジェクト４の左辺の傾きｌｓ４を、スキャンラインが進むたびに、描画オブジェクトの輪郭の位置座標に加算していく。そうすることで、描画オブジェクト４の左辺の正しい位置が求められる。そして第２描画処理部４０２は、描画対象ではないバンド３１の最終スキャンラインにおける描画オブジェクト４の輪郭のＸ座標を求めることで、バンド３２の先頭スキャンラインを描画する際に、描画オブジェクト４の輪郭の正しい位置を求めることができる。
【００７８】
Ｓ９０９で、描画処理部１１４の各描画処理部は、ＲＡＭ１０９に記憶された中間データ（ＤＬ）に描画対象の次のバンドがあるか否かを判定し、次のバンドがあれば（ＹＥＳ）、描画処理を繰り返し、次のバンドが無ければ（ＮＯ）、描画処理を終了する。中間データ（ＤＬ）は最後（ＥｎｄＯｆＰａｇｅ）まで読みだされていれば、次のバンドが無いと判定される。中間データ（ＤＬ）が最後まで読みだされていなければ、次のバンドがあると判定される。
【００７９】
図１０は、バンド単位の書き出しとブロック単位の読み出しのアクセス制御を示す図である。図１０（ａ）は、ブロックＲＡＭ１１５を構成するメモリ（第１ブロックＲＡＭ４１１と呼ぶ）にバンド単位で並列に書き込まれる画像データを示す図である。図１０（ａ）に示される図１０（ｂ）は、ブロックＲＡＭ１１５からブロック単位で読み出される画像データを示す図である。
【００８０】
図１０（ａ）に示すように、バンド１１のラスタデータは、描画処理部１１４の第１描画処理部４０１によって第１ブロックＲＡＭ４１１に書き込まれる。また、バンド１２のラスタデータは、描画処理部１１４の第２描画処理部４０２によって第１ブロックＲＡＭ４１１に書き込まれる。ここで、ブロックＲＡＭ１１５は、アクセス検知装置によって、図１０（ａ）でライトアクセス検知と示した複数のアドレス（画素位置）の全てにラスタデータが書き出されたことを検知する。特にブロックＲＡＭ１１５は、第１ブロックＲＡＭ４１１のアドレス１０１１および１０１２にラスタデータが書き出されたことを検知する。なぜなら本実施例では、スキャンラインの画素順にラスタデータが第１ブロックＲＡＭ４１１に書き出されるため、各バンドのラスタデータが書き出される最後のアドレスへの書き出しを検知すれば、各バンドの描画が完了したと判定できるからである。
【００８１】
上記した全てのアドレスに対してラスタデータの書き出しが検知された場合、ブロックＲＡＭ１１５は、圧縮処理部１１６にブロック単位の読み出しの準備が可能となったことを示す情報を通知する。この通知を受けた圧縮処理部１１６（第１圧縮処理部４２１）は、第１ブロックＲＡＭ４１１からのブロック単位（例：８画素×８画素）でのラスタデータの読み出しを開始する。すなわち、圧縮処理部１１６は、図１０（ｂ）に示すように、ブロック１１〜ブロック１４の順で、ラスタデータを読み出す。この読み出しにおいて、ブロックＲＡＭ１１５は、アクセス検知装置によって、図１０（ｂ）でリードアクセス検知と示した複数のアドレス（画素位置）１０１１、１０１２からラスタデータが読み出されたことを検知する。なぜなら、第１ブロックＲＡＭ４１１のアドレス１０１１、１０１２からラスタデータが読み出されたということは、各バンドのラスタデータの全てがブロック単位に分割されて読みだされということを示す。そしてつまりは、第１ブロックＲＡＭ４１１に空き領域ができたと判定できるからである。
【００８２】
この両アドレス１０１１、１０１２からラスタデータが読み出されたことを検知すると、ブロックＲＡＭ１１５は、描画処理部１１４の各描画処理部にブロックＲＡＭ１１５に空き領域があることを示す情報を通知する。この通知に基づいて、Ｓ９０６の判定が行われる。すなわちこの通知が出されると、描画処理部１１４の各描画処理部は、図１０（ａ）に示したように、バンド単位の書き込みを開始する。
【００８３】
以上述べたように、本実施例によれば、コストアップを抑え、描画処理の並列化するための最小限のハードリソース拡張のみで描画処理を高速化できる。すなわち、ブロックＲＡＭ１１５を構成する第１ブロックＲＡＭ４１１、圧縮処理部１１６を構成する第１圧縮処理部４２１のハードリソースを拡張せずに、描画処理部１１４を構成する第１描画処理部４０１、第２描画処理部４０２の並列動作を可能とする。
【００８４】
（変形例１）
図８は、実施例１の変形例おける描画処理設定を説明するためのフローチャートである。図８は、図７で説明したフローチャートにおける変形例であるため、図７と共通する部分の説明を省略し、図７との差分のみを説明する。図８において、Ｓ８０１〜Ｓ８０４は、Ｓ７０１〜Ｓ７０４と同様であるため、説明を省略する。
【００８５】
次に、ＣＰＵ１０８は、Ｓ８０５で、並列動作する描画処理部１１４の各画像処理部の性能仕様差（描画処理能力の差）を示す情報を内部レジスタから取得する。この情報は内部レジスタにＣＰＵ１０８が事前に記憶している。ここで、性能仕様差とは、例えば、第１描画処理部４０１に対する第２描画処理部４０２の動作周波数の比率を意味する。また、性能仕様差とは、例えば、第１描画処理部４０１に対する第２描画処理部４０２の構成するプロセッサコア数、あるいは、ハードモジュールコア数の比率を意味する。
【００８６】
次に、ＣＰＵ１０８は、Ｓ８０６において、Ｓ８０５で取得した性能仕様差の比率を元に、性能仕様差の有無を判定する。ここで、性能仕様差が１：１の比率で、性能仕様差が無いと判定されれば（Ｓ８０６でＮＯ）、Ｓ８０７に遷移し、図７におけるＳ７０５〜Ｓ７０６と同様に、Ｓ８０７〜Ｓ８０８の処理を実施する。
【００８７】
一方で、性能仕様差が例えば３：１の比率で、性能仕様差がある（つまり第１描画処理部４０１の描画処理能力は第２描画処理部４０２の描画処理能力の３倍である）と判定されれば（Ｓ８０７でＹＥＳ）、Ｓ８０９に遷移する。
【００８８】
ＣＰＵ１０８は、Ｓ８０９において、単一ブロックの高さを並列動作する描画処理部の性能仕様差となる情報に基づいて重み付けて分割する。すなわち、例えば、前述した通り、性能仕様差が例えば３：１の比率で、性能仕様差があると判定されたならば、図１０（ｃ）で示すバンド１１とバンド１２のように、性能仕様差の比率に合わせて、単一ブロックの高さを重み付けて分割する。つまり、ＣＰＵ１０８は、描画処理能力がより高い描画処理部には、設定されるバンド高さをより大きいものに決定する。例えば、ＣＰＵ１０８は、単一ブロックの高さを８画素とした場合、第１描画処理部４０１の描画領域の高さを６画素分、第２描画処理部４０２の描画領域の高さを２画素分、のように分割する。
【００８９】
以上述べたように、本変形例によれば、描画処理部１１４で並列に動作する複数の描画処理部の性能差を鑑みて、描画速度の差が小さくなるように描画領域を分割することで、並列動作の効率を高めることが可能になる。すなわち、バンド単位の描画処理を並列に実行する場合において、第１描画処理部４０１と第２描画処理部４０２のいずれか遅い方に律速した場合に生じる待ち時間を短縮することができる。
【００９０】
（変形例２）
図１０（ａ）に示した単一ブロックの高さを並列動作数で均等に分割する方法として、図１０（ｄ）あるいは図１０（ｅ）に示すように並列動作数の更に整数倍をもって均等に分割する方法を採用しても良い。すなわち、バンド高さが小さくなるので、バンド単位が細かくなる。例えば、図１０（ｄ）の場合、８画素×８画素のブロック単位を描画する描画処理部の並列動作数が２であるのに対して、その２倍の４で均等に分割する。そこにおいて、第１描画処理部４０１がバンド１１及びバンド１３を描画し、第２描画処理部４０２がバンド１２及びバンド１４を描画するように制御する。あるいは、例えば、図１０（ｅ）の場合、８画素×８画素のブロック単位を描画する描画処理部の並列動作数が２であるのに対して、その４倍の８で均等に分割する。そこにおいて、第１描画処理部４０１がバンド１１、バンド１３、バンド１５、バンド１７を描画し、第２描画処理部４０２がバンド１２、バンド１４、バンド１６、バンド１８を描画するように制御する。すなわち、複数の描画処理部は、高さ方向に沿った順番で、繰り返して（交互に）バンドのラスタデータを生成している。
【００９１】
以上述べたように、本変形例によれば、描画処理部１１４で並列に動作する複数の描画処理部の演算量の差が小さくなるように描画領域を分割することで、並列動作の効率を高めることが可能になる。すなわち、バンド単位の描画処理を並列に実行する場合において、バンドの高さを小さくしていくことで、各バンドに含まれるオブジェクトの数のばらつきを緩和することができる。こうすることで、第１描画処理部４０１と第２描画処理部４０２の描画処理にかかる演算量が均一化され、第１描画処理部４０１と第２描画処理部４０２のいずれか遅い方に律速した場合に生じる待ち時間を短縮することができる。
【００９２】
（変形例３）
図１１は、実施例１の本変形例で定義したページ内のブロックとバンドの関係の例を示すものである。前述した通り、ブロックとは、ページ単位の画像データを画像形成装置内で分割して扱う単位としての矩形領域であって、例えば、３２画素×３２画素の正方形タイル形状を有するものである。一方で、バンドとは、前述した通り、ブロックよりも主走査方向の画素数が大きく、副走査方向の画素数が小さい矩形領域であって、例えば、図１１（ｂ）や図１１（ｄ）に示すものである。ここで、図１１（ａ）の関係は、ブロックがバンドに包含される位置関係であるが、本変形例は、図１１（ａ）、図１１（ｂ）、図１１（ｄ）を画像形成装置の描画処理設定によって切り替えることを含むものとする。なお図１１（ａ）、（ｂ）、（ｄ）に示されるいずれのバンドの幅は、印刷データに対応するページの幅と等しい。
【００９３】
また、本発明は、描画処理のバンドのバンド幅をページの幅に限定せず、バンド幅がページ幅よりも小さくても良い。すなわち図１１（ｃ）や図１１（ｅ）のように、バンド単位を主走査方向で分割しても良い。この場合、主走査方向に分割されたバンドを図（ｃ）、（ｅ）に示されるところの、左側の複数のバンドをブロックＲＡＭ１１５に描画し、その左側の複数のバンドのラスタデータについて圧縮処理部１１６によるブロック分割を行うことができる。そしてブロック分割が完了した後に、右側の複数のバンドについても同様に、ブロックＲＡＭ１１５に複数のバンドを描画し、ブロック分割を行うようにする。このように、描画処理の対象となるバンド単位を主走査方向に分割することで、ブロックＲＡＭ１１５で必要とするメモリ容量を更に削減することができる。
【００９４】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
0006544905.tif 000002
【図２】
0006544905.tif 000003
【図３】
0006544905.tif 000004
【図４】
0006544905.tif 000005
【図５】
0006544905.tif 000006
【図６】
0006544905.tif 000007
【図７】
0006544905.tif 000008
【図８】
0006544905.tif 000009
【図９】
0006544905.tif 000010
【図１０】
0006544905.tif 000011
【図１１】
0006544905.tif 000012
【図１２】
0006544905.tif 000013