説明

画像形成装置、画像形成方法、及びコンピュータプログラム

【課題】 1ページを複数のブロックに分割するための処理の負荷を分散させる。
【解決手段】 PDLデータから中間データを生成する処理と、中間データを画像データに変換する処理とを、別々のハードウェア(CPU106、描画処理H/W109)で実現する。CPU106は、複数のバンドに分割された中間データを生成する。描画処理H/W109は、1つのバンドを複数のブロックに分割し、各ブロックの画像データを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像形成装置、画像形成方法、及びコンピュータプログラムに関し、特に、ホストコンピュータで生成された描画データを解釈して、実際の画像データを生成するために用いて好適なものである。
【背景技術】
【0002】
ホストコンピュータ等から、複数のオブジェクトを含むPDL(Page Description Language:ページ記述言語)データや電子ドキュメントを受信し、画像の形成を行う画像形成装置がある。画像形成装置でカラーの画像データ(1200dpi/A4/RGB)を生成する場合には、400MByteといった大きなメモリ容量が必要になる。一方で、高速に印刷することが求められる。このため、画像の形成のために仮想メモリ等を利用することは好ましくない。そこで、画像を形成する時に使用されるメモリを少なくするために、1ページを複数のブロックの小領域に分割してから画像を形成する技術が知られている。1ページを複数のブロックに分割する場合、当該複数のブロックを管理する必要がある。しかしながら、前述したカラーの画像データ(1200dpi/A4/RGB)を、幅方向を64、高さ方向を64に分割して、64×64個のブロックの小領域に分割すると、1ページを300000個以上の領域に分割する必要がある。そのため、1ページを複数のブロックに分割する処理と、複数のブロックを管理する処理に、非常に多くの時間を要する。よって、画像を形成するのに時間がかかるという問題がある。そこで、特許文献1には、PDLデータや電子ドキュメントに含まれるオブジェクトと各ブロックとの重なりを関連付けて管理する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−221567号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載の技術では、画像データを生成する際に、既に、ブロックとオブジェクトとの関連付けが明確になっている。このため、特許文献1に記載の技術では、画像を形成する処理が容易になるという利点はある。しかしながら、特許文献1に記載の技術では、1ページを複数のブロックに分割するための処理の負荷が、一か所(CPU)に集中してしまう。よって、画像を形成する処理を十分に速めることが困難であるという課題がある。
本発明は、このような問題点に鑑みてなされたものであり、1ページを複数のブロックに分割するための処理の負荷を分散させることを目的とする。
【課題を解決するための手段】
【0005】
本発明の画像形成装置は、ホストコンピュータにより生成された描画データから、ページごとに中間データを生成する中間データ生成手段と、前記中間データに対して描画処理を行って実際の画像データを生成する描画処理手段と、を有し、前記中間データ生成手段は、1ページが複数のバンドに分割された中間データを生成し、前記描画処理手段は、前記複数のバンドに分割された中間データを、複数のブロックに分割し、複数に分割したブロックの中間データに対して描画処理を行って、各ブロックの画像データを生成し、前記中間データ生成手段と、前記描画処理手段は、別々のハードウェアであることを特徴とする。
【発明の効果】
【0006】
本発明によれば、1ページが複数のバンドに分割された中間データを生成する手段と、当該中間データを、複数のブロックに分割し、複数に分割したブロックの中間データに対して描画処理を行って、各ブロックの画像データを生成する手段とを設ける。そして、これらの手段を別々のハードウェアで構成する。したがって、描画データから中間データを生成して、中間データを複数のブロックに分割し、分割した複数のブロックの描画処理を行って画像データを生成するに際し、1ページを複数のブロックに分割するための処理の負荷を分散させることができる。よって、1ページを複数のブロックに分割する処理負荷を抑えることができ、画像データを高速に形成することが可能になる。
【図面の簡単な説明】
【0007】
【図1】画像形成装置の構成を示す図である。
【図2】画像形成装置内のモジュール構成を示す図である。
【図3】中間データを複数のブロックに分割する処理の負荷を説明する図である。
【図4】画像形成装置で扱う座標系とブロックIDの一例を示す図である。
【図5】ブロック分割補足情報を示す図である。
【図6】命令IDの内容を示す図である。
【図7】中間データ生成部の処理を説明するフローチャートである。
【図8】ページ管理情報とバンド管理情報を示す図である。
【図9】ブロック分割補足情報生成処理を説明するフローチャートである。
【図10】ブロック分割補足情報生成終了処理を説明するフローチャートである。
【図11】ブロック分割補足情報生成継続処理を説明するフローチャートである。
【図12】描画処理H/Wの処理を説明するフローチャートである。
【図13】変形例1のブロック分割補足情報の作成方法を概念的に示す図である。
【図14】変形例1の描画処理H/Wの処理を説明するフローチャートである。
【図15】変形例2の描画処理H/Wの構成を示す図である。
【図16】矩形オブジェクトを示す図である。
【図17】変形例3の描画処理H/Wの処理を説明するフローチャートである。
【図18】バンドを複数のブロックに分割する処理を説明する図である。
【図19】矩形オブジェクト以外のオブジェクトを示す図である。
【図20】変形例4のバンド管理情報を示す図である。
【発明を実施するための形態】
【0008】
以下、図面を用いて本発明を実施するための一形態を説明する。
図1は、画像形成装置の構成の一例を示す図である。
画像形成装置101には、画像形成装置101を制御するコントローラ102が搭載されている。コントローラ102には、CPU106が搭載されている。CPU106は、制御プログラム等に基づいて、システムバス103に接続されている印刷部I/F113を介し、印刷部(プリンタエンジン)114に出力情報としての画像信号を出力する。尚、制御プログラムは、ROM108内のプログラム用ROMや、メモリコントローラ116を介して接続されている外部メモリ117等に記憶される。ROM108には、プログラム用ROMの他に、データROMが含まれている。データROMは、各種プログラムが動作するために必要な初期値を格納している。
【0009】
画像形成装置101は、ネットワーク104等を介してホストコンピュータ等の外部装置と相互に通信可能に接続されている。CPU106は、外部I/F105を介して、ホストコンピュータ等から、描画データを受信することが可能である。描画データは、ホストコンピュータにより生成されるデータである。描画データには、画像形成装置101で描画される内容が記述されている。具体的に、描画データは、PDLデータや電子ドキュメント等である。以下の説明では、描画データがPDLデータである場合を例に挙げて説明する。
【0010】
RAM107は、CPU106の主メモリやワークエリア等として機能する。図示しない増設ポートに接続されるオプションRAMにより、画像形成装置101のメモリ容量を拡張することができる。尚、RAM107は、中間データや画像データの展開領域、及びプリンタモード設定情報の格納領域等に用いられる。外部メモリ117は、例えば、ハードディスク(HDD)又はICカードである。外部メモリ117とのアクセスは、メモリコントローラ116により制御される。また、コントローラ102には、描画処理H/W(ハードウェア)109が搭載される。尚、本実施形態では、描画処理H/W109を用いて描画処理を行う場合を例に挙げて説明する。しかしながら、必ずしもこのようにする必要はない。例えば、CPU106とは別のCPUをコントローラ102に搭載し、そのCPUが、描画処理を行うプログラムを実行することにより、描画処理を行ってもよい。
【0011】
CPU106は、中間処理プログラムを実行することにより、PDLデータから中間データを生成してRAM107に格納する。描画処理H/W109は、中間データを画像データに変換する処理を行う。描画処理H/W109で生成された複数のブロックの画像データは、RAM107(メインメモリ)とは別のブロックRAM110(ブロックメモリ)に個別に出力される。1つのブロックRAM110には、1つのブロックの画像データが出力される。ここで、1つのブロックの形状は、バンドの長辺の方向(横方向)を一辺とし、バンドの短辺の方向(縦方向)を他の一辺とする正方形である。ブロックRAM110内の画像データは、圧縮処理H/W111によって圧縮される。圧縮処理H/W111によって圧縮された画像データは、RAM107に格納される。このような構成にするのは、画像形成装置101の処理の高速化および低価格化のためである。特に、カラーの画像を形成する場合には、画像データの容量が膨大になる。そこで、システムバス103やRAM107が、高速な動作に対応できるものである必要がある。ただし、システムバス103やRAM107を高価なものにしてしまうと、画像形成装置101が非常に高価なものになってしまう。
【0012】
これに対し、前述したようにブロックRAM110を用いる構成を採用すると、ブロックRAM110のみを高価なものにすればよい。このため、システムバス103やRAM107を高価なものにする場合よりも低価格の画像形成装置を実現できる。しかも、システムバス103やRAM107を高価なものにする場合と同程度の速度で高速に処理を行うことができる画像形成装置を実現できる。ブロックRAM110は、描画処理H/W109と圧縮処理H/W111とを並列に動作させるために、複数個用意される。
【0013】
描画処理H/W109が、1つ目のブロックRAM110を用いて描画処理をして、1つのブロックの画像データを形成し終えると、圧縮処理H/W111は、そのブロックRAM110を利用して、次のブロックの画像データの圧縮処理を行う。圧縮処理H/W111は、圧縮処理を行った画像データをRAM107に格納する。その間、描画処理H/W109は、圧縮処理H/W111が使用しているブロックRAM110を利用できない。そのため、描画処理H/W109は複数用意されたブロックRAM110のうち、圧縮処理H/W111が利用していないブロックRAM110を利用して、次のブロックの画像データの描画処理を行う。これにより、描画処理H/W109がブロックRAM110の空きを待つ必要がなくなる。よって、描画処理H/W109と圧縮処理H/W111とを並列に動作させることができる。このため、画像データの形成を高速に行うことができる。圧縮されてRAM107に格納された画像データは、伸長処理H/W112によって伸長処理される。伸長処理H/W112によって伸長処理された画像データは、印刷部I/F113を介して、印刷部(プリンタエンジン)114に出力される。
【0014】
外部メモリ117は、オプションとして画像形成装置101に接続される。外部メモリ117は、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。外部メモリ117は、1個に限らない。内蔵フォントに追加されるオプションフォントや、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した複数の外部メモリを画像形成装置101に接続できるようにしてもよい。
操作部115は、ユーザが操作するためのスイッチおよびLED表示器等が配された操作パネルを有する。画像形成装置101は、図示しないNVRAMを有していてもよい。このNVRAMに、操作部115の操作により設定されるプリンタモード設定情報等を記憶するようにしてもよい。
【0015】
図2は、画像形成装置101内のモジュール構成の一例を示す図である。尚、図2において、ハードウェア以外のモジュールが動作するためのプログラムは、ROM108に格納されている。このプログラムは、画像形成装置101の起動時にRAM107に展開され、CPU106により実行される。
図2において、PDLデータ受信部201は、外部I/F105を介して、ホストコンピュータからのPDLデータを受信する。PDLデータ受信部201は、受信したPDLデータをPDL処理部202へ渡す。
【0016】
PDL処理部202は、PDLデータを解釈し、その結果を中間データ生成部203に渡す。中間データ生成部203は、PDL処理部202から渡された情報を元に、複数のバンドに分割された状態の中間データ204を作成し、RAM107に格納する。また、中間データ生成部203は、描画処理H/W109が描画処理を行うときに使用されるブロック分割補足情報205を生成し、中間データ204と同様にRAM107に格納する。
【0017】
描画処理H/W109は、中間データ204とブロック分割補足情報205とをRAM107から読み出す。描画処理H/W109は、中間データ204とブロック分割補足情報205とに基づいて、各ブロックの画像データ206を生成し、ブロックRAM110に個別に格納する。尚、以下の説明では、ブロック分割補足情報205が中間データとして、中間データ204に含まれる場合を例に挙げて説明する。
圧縮処理H/W109は、ブロックの画像データ206をブロックRAM110から読み出して圧縮し、圧縮データ207を生成する。圧縮処理H/W109は、圧縮データ207をRAM107に格納する。
【0018】
伸長処理H/W112は、圧縮データ207をRAM107から読み出す。伸長処理H/W112は、圧縮データ207を伸長し、伸長した画像データを印刷処理I/F113に渡す。印刷処理I/F113は、伸長処理H/W112から渡された画像データを印刷部114に渡す。印刷部114は、印刷処理I/F113から渡された画像データに基づく画像を実際の用紙に形成する。
【0019】
ここで、図2に示す例では、中間データをバンド単位で分割する処理は、CPU106により行われる。バンドに分割された中間データ204を複数のブロックに分割する処理は、描画処理H/W109により行われる。そのため、中間データを複数のブロックに分割する処理の負荷が、CPU106と描画処理H/W109とに分散される。これにより、画像を形成する処理を高速にすることができる。描画処理H/W109は、中間データ生成部203により生成されたブロック分割補足情報205を使用して処理を行う。これにより、描画処理H/W109が、バンドに分割された中間データ204を複数のブロックに分割する処理の負荷を下げることができる。
【0020】
図3は、中間データを複数のブロックに分割する処理の負荷の一例を説明する図である。図3の上の図が従来技術による処理を示し、図3の下の図が本実施形態による処理を示す。
従来技術では、1ページ目のブロック分割処理301の時間が長い。このため、2ページ目のブロック分割処理304が、本実施形態の中間データ生成処理305よりも遅れて開始される。
【0021】
本実施形態では、従来技術におけるブロック分割処理301を、バンド分割処理302とブロック分割処理303とに分ける。すなわち、CPU106がバンド分割処理302を行い、描画処理H/W109がブロック分割処理303を行う。このように、従来技術におけるブロック分割処理301を、CPU106と描画処理H/W109とに分散する。これにより、最終的に、2ページ目の描画処理307が終了するタイミングが、従来技術の描画処理306が終了するタイミングよりも早くなる。その結果、本実施形態の方が、従来技術よりも、画像を形成するための時間を時間Tだけ短くすることができる。このように、本実施形態の方が、従来技術よりも、画像を高速に形成することができる。
【0022】
図4は、画像形成装置101で扱う座標系とブロックIDの一例を示す図である。
図4に示すように、本実施形態では、ページの左上を座標の原点とし、横軸をX軸、縦軸をY軸とする。図に向かって右の方向をX軸の正の方向とする。図に向かって下の方向をY軸の正の方向とする。図4に示すように、本実施形態では、バンドのX軸方向(横方向)の長さは、ページのX軸方向の全体の長さと一致する。すなわち、バンドは、ページをY軸方向において分割したものである。図4に示す例では、バンドは、ページをY軸方向において等間隔に6つに分割したものである。ブロックのY軸方向の長さは、バンドのY軸方向(縦方向)の全体の長さと一致する。すなわち、ブロックは、バンドをX軸方向において分割したものである。図4に示す例では、ブロックは、バンドをX軸方向において等間隔に5つに分割したものである(ブロック401a〜401eを参照)。
【0023】
画像形成装置101が、それぞれのブロック401a〜401eを認識するために、それぞれのブロック401a〜401eには、ブロックIDが付加される。ブロックIDは、バンドの左から1、2、3、4、5というように昇順に付けられるものとする(図4のブロック401a〜401eの中に示されている数字を参照)。また、本実施形態では、ブロックIDの小さいブロック401から順番に処理されるものとする。
【0024】
図5は、ブロック分割補足情報205の一例を示す図である。前述したように、ブロック分割補足情報205は、バンドに分割された中間データ204に含まれる。
「あ」および「い」のオブジェクト501は、ブロックIDが「1」以外のブロックでは利用されない。よって、中間データ生成部203は、ブロック分割補足情報205の中間データ502を、バンドに分割された中間データ204の中に生成する。ブロック分割補足情報205の中間データ502は、描画処理H/W109における処理対象のブロックが、ブロックIDが「1」以外のブロックであるときには、オブジェクト501が読み飛ばされるようにするための情報である。命令ID503は、中間データが、ブロック分割補足情報205の中間データ502であることを示す命令IDである。図6は、命令IDの内容の一例を示す図である。図6に示すように、命令IDには、ブロック分割補足情報を示す命令IDの他に、バンドの終了を示す命令IDと、オブジェクトの描画処理を示す命令IDとが存在する。
【0025】
描画処理H/W109は、バンドに分割された中間データ204に含まれるブロック分割補足情報205の中間データ502から、命令ID503を読み出す。これにより、描画処理H/W109は、ブロック分割補足情報205の中間データ502が、バンドに分割された中間データ204の中にあることを認識する。描画処理H/W109は、現在処理中のブロックのブロックIDが、ブロックID504に示されている値でない場合、アドレス505に示されているオブジェクト507まで、オブジェクトの読み飛ばしを行う。この処理によって描画処理H/W109は、中間データが複数のバンドに分割された状態であっても、現在処理中のブロックに含まれないオブジェクトの処理を行う必要がなくなる。このため、バンドを複数のブロックに分割する処理を効率的に行うことができる。
【0026】
また、中間データ生成部203は、相互に隣接する複数のブロックに跨るオブジェクトである「う」のオブジェクト507に関しては、ブロックIDが「1」のブロックに属するようにし、分割処理等を実施しない。つまり、中間データ生成部203は、相互に隣接する2つのブロックに跨るオブジェクトを複数のブロックに分割しない。このため、複数のブロックに分割した中間データを生成するよりも大幅に処理を高速化することができる。
【0027】
次に、図7のフローチャートを参照しながら、中間データ生成部203の詳細な処理の一例を説明する。図7のフローチャートに含まれる処理は全て中間データ生成部203の処理であり、そのプログラムは、ROM108からRAM107に展開されてCPU106によって実行される。
まず、ステップS701において、中間データ生成部203は、全てのバンド管理情報を初期化する。図8は、ページ管理情報とバンド管理情報の一例を示す図である。バンド管理情報は、アドレス802〜804とブロックID805とを含む。アドレス802は、バンドに分割された中間データ204の先頭のアドレスである。アドレス803は、空き領域(次の中間データの作成のための空きメモリ)の先頭のアドレスである。アドレス804は、バンドに分割された中間データ204に含まれる「生成中のブロック分割補足情報」のアドレスである。生成中のブロック分割補足情報がない場合には、ブロック分割補足情報の中間データが生成されることがないことを示すアドレス等(本実施形態では0x00000000)を、アドレス804に設定する。これにより、ブロック分割補足情報が生成中でないことが表される。
【0028】
ブロックID805は、生成中のブロック分割補足情報が、どのブロックID用のものであるかを示す。生成中のブロック分割補足情報がない場合には、ブロックID805として、そのことを示すID(例えば0x0)が設定される。生成中のブロック分割補足情報が、全てのブロックに該当する場合には、ブロックID805として、そのことを示すID(0xFFFFFFFF)が設定される。
以上の情報を含むバンド管理情報は、1ページ内に含まれる複数のバンドのそれぞれに必要となる。このため、ページ管理情報801によって、1ページ内の複数のバンド管理情報が管理される。
【0029】
本実施形態では、次のようにしてバンド管理情報を初期化する。
まず、中間データ生成部203は、ページ管理情報801及びバンド管理情報のためのメモリをRAM107に確保する。次に、中間データ生成部203は、それぞれのバンドの中間データ204のための空きメモリをRAM107から取得する。そして、中間データ生成部203は、その空きメモリの先頭のアドレスを、バンドに分割された中間データ204の先頭のアドレス802及び空き領域の先頭のアドレス803として設定する。また、中間データ生成部203は、生成中のブロック分割補足情報のアドレス804として、ブロック分割補足情報が生成中でないことを示す0x00000000に設定する。また、ブロック分割補足情報が生成中でないので、前述したように、中間データ生成部203は、ブロックID805として0x0に設定する。
【0030】
中間データ生成部203は、以上のようにしてバンド管理情報の初期化が終了すると、実際の中間データの生成を開始する。
図7において、中間データ生成部203は、PDL処理部202から受け取った情報から、1オブジェクトの情報を取得する(ステップS702)。次に、中間データ生成部203は、1ページを複数のバンドに分割する(ステップS703)。
中間データ生成部203は、1ページを複数のバンドに分割することによって、ステップS702で取得したオブジェクトに関連するバンドに対して、ステップS704〜S712の処理を行う。その処理の中で、中間データ生成部203は、バンドに分割された中間データ204を生成する。さらに、中間データ生成部203は、描画処理H/W109で行われる処理(バンドを複数のブロックに分割する処理)を高速化するためのブロック分割補足情報205の中間データ502を生成する。
【0031】
中間データ生成部203は、複数のバンドに分割された後に、ステップS702で取得したオブジェクトの「左側のエッジ(左端)のX座標と右側のエッジ(右端)のX座標」を取得する(ステップS704)。左端のエッジおよび右端のエッジは、オブジェクトを外接矩形で囲んだときの、当該外接矩形の左側のエッジおよび右側のエッジである。中間データ生成部203は、左側のエッジのX座標と右側のエッジのX座標とが、同一のブロック内に収まっているか否かを判断する(ステップS705)。この判断の結果、左側のエッジのX座標と右側のエッジのX座標とが、同一のブロック内に収まっていない場合、中間データ生成部203は、ブロック分割補足情報を生成中であるか否かを判断する(ステップS706)。ブロック分割補足情報を生成中であるか否かは、バンド管理情報に含まれるアドレス804が0x00000000であるか否かで判断することができる。
【0032】
この判断の結果、ブロック分割補足情報を生成中でない場合、中間データ生成部203は、ステップS702で取得したオブジェクトを描画する中間データの生成のみを行う(ステップS711)。このステップS711の処理を具体的に説明すると、まず、中間データ生成部203は、バンド管理情報に含まれるアドレス803(空き領域の先頭アドレス)から、オブジェクトを描画する中間データを生成するのに必要なメモリを確保する。これにより、空き領域の先頭アドレスが変わるので、中間データ生成部203は、アドレス803を更新する。その後、中間データ生成部203は、確保したメモリ領域に、オブジェクトを描画する中間データを生成する。
【0033】
ステップS706の判断の結果、ブロック分割補足情報を生成中の場合、ブロック分割補足情報を確定することができる。すなわち、描画処理H/W109は、ステップS702で取得したオブジェクトの1つ前のオブジェクトまで読み飛ばすことができる。そこで、中間データ生成部203は、ブロック分割補足情報生成終了処理を行う(ステップS707)。ブロック分割補足情報生成終了処理の詳細については後述する(図10)。そして、中間データ生成部203は、ステップS702で取得したオブジェクトを描画する中間データを生成する(ステップS711)。
【0034】
ステップS705の判断の結果、左側のエッジのX座標と右側のエッジのX座標とが、同一のブロック内に収まっている場合、中間データ生成部203は、ブロック分割補足情報を生成中であるか否かを判断する(ステップS709)。この判断の結果、ブロック分割補足情報を生成中でない場合、中間データ生成部203は、ブロック分割補足情報生成開始処理を行う(ステップS710)。ブロック分割補足情報生成開始処理の詳細については後述する(図9を参照)。一方、ブロック分割補足情報を生成中の場合、中間データ生成部203は、ブロック分割補足情報生成継続処理を行う(ステップS709)。ブロック分割補足情報生成継続処理の詳細については後述する。
ブロック分割補足情報生成開始処理又はブロック分割補足情報生成継続処理が終了した後、中間データ生成部203は、ステップS702で取得したオブジェクトを描画する中間データを生成する(ステップS711)。
【0035】
そして、中間データ生成部203は、ステップS702で取得したオブジェクトに関連するバンドの処理が全て終了したか否かを判断する(ステップS712)。この判断の結果、ステップS702で取得したオブジェクトに関連するバンドの処理が全て終了していない場合には、未処理のバンドについてステップS704〜S711の処理を行う。そして、ステップS702で取得したオブジェクトに関連するバンドの処理が全て終了するまで、ステップS704〜S712の処理を繰り返し行う。
【0036】
ステップS702で取得したオブジェクトに関連するバンドの処理が全て終了すると、中間データ生成部203は、1ページ内に含まれる全てのオブジェクトの処理が終了したか否かを判断する(ステップS713)。この判断の結果、1ページ内に含まれる全てのオブジェクトの処理が終了していない場合、未処理のオブジェクトについてステップS702〜ステップS712の処理を行う。そして、1ページ内に含まれる全てのオブジェクトの処理が終了するまで、ステップS702〜S713の処理を繰り返し行う。
【0037】
1ページ内に含まれる全てのオブジェクトの処理が終了すると、中間データ生成部203は、全てのバンドの中間データに対して、ステップS714〜S716の処理を行う。まず、ステップS714において、中間データ生成部203は、ブロック分割補足情報を生成中であるか否かを判断する。この判断を行うのは、ブロック分割補足情報を生成中のまま、ステップS713までの処理が終わっている場合があるためである。この判断の結果、ブロック分割補足情報を生成中の場合、中間データ生成部203は、ブロック分割補足情報生成終了処理を行う(ステップS715)。そして、中間データ生成部203は、中間データの最後に、バンドの終了を示す中間データを生成する(ステップS716)。
以上のようにして、バンドに分割された中間データ204が生成される。
【0038】
次に、図9〜図11のフローチャートを参照しながら、図7のステップS707、S709、S710、S715の処理の詳細を説明する。
図9は、図7のステップS710のブロック分割補足情報生成処理の詳細を説明するフローチャートである。
まず、中間データ生成部203は、バンド管理情報のアドレス803(空き領域の先頭のアドレス)から、ブロック分割補足情報の中間データを作成するのに必要なメモリ領域を確保する。これにより、空き領域の先頭のアドレスが変わるので、中間データ生成部203は、アドレス803を更新する(ステップS901)。
【0039】
次に、中間データ生成部203は、バンド管理情報のアドレス804(生成中のブロック分割補足情報のアドレス)を、ステップS901で確保したメモリ領域のアドレスに設定する(ステップS902)。
次に、中間データ生成部203は、ステップS901で確保したメモリ領域に、ブロック分割補足情報を示す命令IDおよびブロックIDを書き込む(ステップS903)。このブロックIDは、図7のステップS705において、ステップS702で取得したオブジェクトの左側のエッジのX座標と右側のエッジのX座標とが収まっていると判定されたブロックのブロックIDである。
【0040】
次に、中間データ生成部203は、ステップS903で書き込んだものと同一のブロックIDを、バンド管理情報内のブロックID805にも書き込む(ステップS904)。バンド管理情報にもブロックIDを記載するのは、処理の簡易化のためである。すなわち、生成中のブロック分割補足情報が、どのブロックID用のものであるのかを確認するために、中間データ生成部203が、ブロック分割補足情報の中間データ内のブロックIDまで見に行く必要をなくすためである。そして、図7のフローチャートに戻る。
【0041】
図10は、図7のステップS707、S715のブロック分割補足情報生成終了処理の詳細を説明するフローチャートである。
中間データ生成部203は、バンド管理情報から、アドレス804(生成中のブロック分割補足情報のアドレス)を取得する(ステップS1001)。
次に、中間データ生成部203は、ブロック分割補足情報の中間データに含まれるアドレス505を、バンド管理情報のアドレス803(空き領域の先頭のアドレス)に書き換える(ステップS1002)。その後、中間データ生成部203は、バンド管理情報に含まれるアドレス804(生成中のブロック分割補足情報のアドレス)を、ブロック分割補足情報を生成中でないことを示す値(0x00000000)に書き換える(ステップS1003)。このようにして書き換えられた値により、ブロック分割補足情報を生成中でないことが示される。そして、図7のフローチャートに戻る。
【0042】
図11は、図7のステップS709のブロック分割補足情報生成継続処理の詳細を説明するフローチャートである。
まず、中間データ生成部203は、バンド管理情報から、ブロックID805(生成中のブロック分割補足情報に対応するブロックID)を取得する。そして、中間データ生成部203は、現在処理しているオブジェクトが、取得したブロックID805が示すブロック内のものであるか否かを判断する(ステップS1101)。この判断の結果、現在処理しているオブジェクトが、ブロックID805が示すブロック内のものである場合には、図7のフローチャートに戻る。
【0043】
一方、現在処理しているオブジェクトが、ブロックID805が示すブロック内のものでない場合、中間データ生成部203は、生成中のブロック分割補足情報の中間データについて、ブロック分割補足情報終了処理を行う(ステップS1102)。
次に、中間データ生成部203は、現在処理中のオブジェクトのためのブロック分割補足情報開始処理を行う(ステップS1103)。そして、図7のフローチャートに戻る。
ステップS1102、S1103の処理は、それぞれ図9、図10の処理と同じである。
以上のようにして、中間データ生成部203によって、描画処理H/W109の入力データとして、バンドを複数のブロックに分割する際の補足情報の一例であるブロック分割補足情報205を含む「バンドに分割された中間データ204」が生成される。
【0044】
次に、図12のフローチャートを参照しながら、中間データ生成部203が生成した「バンドに分割された中間データ204」を描画処理H/W109が複数のブロックに分割しながら、画像データを生成する処理の一例を説明する。図12のフローチャートは、描画処理H/W109の1バンドの処理の流れを示している。よって、1ページ分の画像データを生成するには、1ページに含まれるバンド数分だけ、図12のフローチャートを繰り返し実行する必要がある。
【0045】
描画処理H/W109は、変数iを「1」に初期化する(ステップS1201)。この「i」は、描画処理するブロックIDを示すものである。
次に、描画処理H/W109は、処理対象のバンドに含まれる全てのブロックの画像データの生成が終了したか否かを判断する(ステップS1202)。この判断の結果、全てのブロックの画像データの生成が終了した場合には、図12のフローチャートによる処理を終了する。この判断は、例えば、描画処理H/W109が、バンドに含まれるブロックの数を保持しておき、その数と変数iとを比較することにより行うことができる。変数iは、後述するステップS1219でインクリメントされる。このため、描画処理H/W109は、変数iが、処理対象のバンドに含まれるブロックの数以上になったら、バンドに含まれる全てのブロックの画像データを生成したと判断する。
【0046】
一方、全てのブロックの画像データの生成が終了していない場合、描画処理H/W109は、変数iで示される処理対象のブロックの「左側のエッジ(左端)と右側のエッジ(右端)のX座標」を求める(ステップS1203)。これらのX座標は、後述するステップS1212、S1215で、オブジェクトがブロックからはみ出るか否かを判断する際に利用される。
次に、描画処理H/W109は、バンド管理情報に含まれるアドレス802(バンドに分割された中間データ204の先頭のアドレス)と、空いているブロックRAM110(ブロックメモリ)とを取得する(ステップS1204)。
【0047】
描画処理H/W109は、ステップS1204で取得したアドレス802(バンドに分割された中間データ204の先頭のアドレス)から順番に、バンドに分割された中間データ204を解釈することによって、ステップS1205以降の処理を行う。
まず、描画処理H/W109は、バンドに分割された中間データ204から読み出した命令IDが、バンドの終了を示す命令ID(「0」)であるか否かを判断する。この判断の結果、バンドに分割された中間データ204から読み出した命令IDが、バンドの終了を示す命令IDであれば、1ブロックの画像データの生成が終了したことになる。そこで、描画処理H/W109は、1ブロックの画像データの生成が終了したことを圧縮処理H/W111に終了を通知する(ステップS1219)。また、描画処理H/W109は、変数iをインクリメントする(ステップS1219)。そして、ステップS1202に戻る。
【0048】
一方、バンドに分割された中間データ204から読み出した命令IDが、バンドの終了を示す命令IDでない場合、描画H/W109は、次の処理を行う。すなわち、描画H/W109は、バンドに分割された中間データ204から読み出した命令IDが、ブロック分割補足情報を示す命令ID(「2」)であるか否かを判断する(ステップS1206)。この判断の結果、バンドに分割された中間データ204から読み出した命令IDが、ブロック分割補足情報を示す命令IDである場合、描画H/W109は、次の処理を行う。すなわち、描画H/W109は、ブロック分割補足情報205の中間データ502から、ブロックID504を取得する(ステップS1207)。
【0049】
次に、描画処理H/W109は、ステップS1207で取得したブロックIDが、現在処理中のブロックID(i)、すなわち、変数iで示されるブロックのブロックIDであるか否かを判断する(ステップS1208)。この判断の結果、ステップS1207で取得したブロックIDが、現在処理中のブロックID(i)でない場合、描画処理H/W109は、ブロック分割補足情報205の中間データ502から、アドレス505を取得する(ステップS1209)。
【0050】
次に、描画処理H/W109は、アドレス505に示されているオブジェクトを、処理する中間データとして設定する(ステップS1210)。この処理により、描画処理H/W109は、前述したオブジェクトの読み飛ばしを行うことができる。よって、描画処理H/W109は、バンドの中間データからのブロックへの分割を効率良く行うことができる。
ステップS1206において、ブロック分割補足情報205の中間データ502の命令IDが、ブロック分割補足情報を示す命令IDでないと判定された場合には、ステップS1211に進む。また、ステップS1208において、ステップS1207で取得したブロックIDが、現在処理中のブロックID(i)であると判定された場合にも、ステップS1211に進む。そして、描画処理H/W109は、オブジェクトをブロックに分割しながら描画処理し、ブロックの単位で画像データを生成する。
【0051】
具体的に説明すると、まず、描画処理H/W109は、現在処理中のブロックに含まれる最も左側のオブジェクトの左側のエッジ(左端)のX座標を求める(ステップS1211)。
次に、描画処理H/W109は、ステップS1211で求めた「オブジェクトの左側のエッジのX座標」が、ステップS1203で求めた「現在処理中のブロックの左側のエッジのX座標」よりも小さいか否かを判断する(ステップS1212)。この判断の結果、オブジェクトの左側のエッジのX座標が、現在処理中のブロックの左側のエッジのX座標よりも小さい場合、描画処理H/W109は、オブジェクトの左側のエッジのX座標を、ブロックの左側のX座標にする(ステップS1213)。
【0052】
同様に、描画処理H/W109は、現在処理中のブロックに含まれる最も右側のオブジェクトの右側のエッジ(右端)のX座標を求める(ステップS1214)。そして、描画処理H/W109は、ステップS1214で求めた「オブジェクトの右側のエッジのX座標」が、ステップS1203で求めた「現在処理中のブロックの右側のエッジのX座標」よりも大きいか否かを判断する(ステップS1215)。この判断の結果、オブジェクトの右側のエッジのX座標が、現在処理中のブロックの右側のエッジのX座標よりも大きい場合、描画処理H/W109は、オブジェクトの右側のエッジのX座標を、ブロックの右側のX座標にする(ステップS1216)。
以上の処理により、現在処理しているブロック以外の部分(オブジェクト)が削除され、バンドが複数のブロックに分割される。描画H/W109は、以上のようにして求めたブロックの左側のエッジのX座標と右側のエッジのX座標との間の画像を描画処理する(ステップS1217)。
【0053】
そして、描画処理H/W109は、オブジェクトの高さ分(ライン分)の処理が終了したか否かを判定する(ステップS1218)。この判定の結果、オブジェクトの高さ分の処理が終了していない場合には、ステップS1211の処理に戻る。そして、オブジェクトの高さ分の処理が終了するまで、ステップS1217〜S1218の処理を繰り返し行う。すなわち、描画処理H/W109は、オブジェクトの高さ方向(縦方向)の異なる位置で、オブジェクトの左右のエッジのX座標(横方向の位置)を求め、そのX座標に基づいて、バンドを複数のブロックに分割し、ブロックの単位で描画処理を行う。そして、オブジェクトの高さ分の処理が終了すると、現在処理しているブロックに該当するオブジェクトの描画処理が完了する。以上の処理フローにより、描画処理H/W109は、ブロック分割補足情報205を含む「バンドに分割された中間データ204」を読み出し、当該バンドを効率的に複数のブロックに分割しながら描画処理を実行することができる。
【0054】
以上のように本実施形態では、PDLデータから中間データを生成する処理と、中間データを画像データに変換する処理とを、別々のハードウェア(CPU106、描画処理H/W109)で実現する。CPU106は、複数のバンドに分割された中間データを生成する。描画処理H/W109は、1つのバンドを(正方形の)複数のブロックに分割し、各ブロックの画像データを生成する。CPU106は、ブロックを識別するブロックID504と、次に処理されるブロックの先頭のオブジェクトを指定するアドレス505とを含むブロック分割補足情報205の中間データ502を、バンドに分割された中間データの204の中に生成する。描画処理H/W109は、処理対象のブロックが、ブロックID504で示されるブロックでない場合、ブロック分割補足情報205の中間データ502に基づき、当該ブロック内のオブジェクトを読み飛ばす。そして、描画処理H/W109は、次に処理されるブロックの先頭のオブジェクトの描画処理を行う。
したがって、1ページを複数のブロックに分割して、PDLデータや電子データから、画像データを形成する際に、複数のブロックに分割する処理の負荷を分散することができる。また、描画処理において、バンドを複数のブロックに分割する際のオブジェクトの過剰な読み出しを抑制することができる。よって、高速に画像を形成することが可能になる。
【0055】
(変形例1)
オブジェクトの描画処理を実行した後に、描画処理H/W109が、オブジェクトを描画する中間データから、ブロック分割補足情報205を含む中間データに中間データを変換して、バンドを複数のブロックに分割する処理を効率化することができる。
図13は、オブジェクトの描画処理を実行した後に、オブジェクトを描画する中間データから、ブロック分割補足情報205を含む中間データに中間データを変換する様子の一例を概念的に示す図である。具体的に図13(a)は、中間データ生成部203でブロック分割補足情報を設定することができないオブジェクトの一例を示す図である。また、図13(b)は、描画処理H/W109でブロック分割補足情報を設定する前(左側の図)と後(右側の図)の中間データの一例を示す図である。
【0056】
図13において、ブロックIDが「2」のブロックの最後のオブジェクト(「あ」の文字)1301は、隣の(次の)ブロック(ブロックIDが「3」のブロック)に跨って存在している。このため、中間データ生成部203では、このオブジェクト1301に対してブロック分割補足情報をつけられない。そこで、描画処理H/W109が、ブロック1302の描画処理が終了した時点で、オブジェクトを描画する中間データ1304を、ブロック分割補足情報の中間データ1305を含む中間データに書き換える。図13(b)に示す例では、描画処理H/W109は、ブロックID1306として「3」を設定する。このようにしておけば、描画処理H/W109は、ブロックIDが4以降のブロック1303に関しては、オブジェクトを描画する中間データ1304の処理を省略することができる。これにより、ブロックに分割する処理を効率化することができる。
【0057】
次に、図14のフローチャートを参照しながら、本変形例における描画処理H/W109の処理の一例を説明する。図14のフローチャートは、図12のステップS1211〜S1218の代わりに実施されるものである。
まず、描画処理H/W109は、Flagの値を「0」に初期化する(ステップS1401)。
次に、描画処理H/W109は、現在処理中のブロックに含まれる最も左側のオブジェクトの左側のエッジ(左端)のX座標を求める(ステップS1402)。
次に、描画処理H/W109は、ステップS1402で求めた「オブジェクトの左側のエッジのX座標」が、ステップS1203で求めた「現在処理中のブロックの左側のエッジのX座標」よりも小さいか否かを判断する(ステップS1403)。この判断の結果、オブジェクトの左側のエッジのX座標が、現在処理中のブロックの左側のエッジのX座標よりも小さい場合、描画処理H/W109は、オブジェクトの左側のエッジのX座標を、ブロックの左側のX座標にする(ステップS1404)。
【0058】
同様に、描画処理H/W109は、現在処理中のブロックに含まれる最も右側のオブジェクトの右側のエッジ(右端)のX座標を求める(ステップS1405)。そして、描画処理H/W109は、ステップS1405で求めた「オブジェクトの右側のエッジのX座標」が、ステップS1203で求めた「現在処理中のブロックの右側のエッジのX座標」よりも大きいか否かを判断する(ステップS1406)。この判断の結果、オブジェクトの右側のエッジのX座標が、現在処理中のブロックの右側のエッジのX座標よりも大きい場合、描画処理H/W109は、オブジェクトの右側のエッジのX座標を、ブロックの右側のX座標にする(ステップS1407)。そして、描画処理H/W109は、Flagの値を「1」に設定する(ステップS1408)。ステップS1406において、オブジェクトの右側のエッジのX座標が、現在処理中のブロックの右側のエッジのX座標よりも大きくない場合には、ステップS1407、S1408の処理を省略してステップS1409に進む。
【0059】
描画H/W109は、以上のようにして求めた左側のエッジのX座標と右側のエッジのX座標との間の画像を描画処理する(ステップS1409)。そして、描画処理H/W109は、オブジェクトの高さ分(ライン分)の処理が終了したか否かを判定する(ステップS1410)。この判定の結果、オブジェクトの高さ分の処理が終了していない場合には、ステップS1402の処理に戻る。そして、オブジェクトの高さ分の処理が終了するまで、ステップS1402〜S1410の処理を繰り返し行う。オブジェクトの高さ分の処理が終了すると、現在処理しているブロックに該当するオブジェクトの描画処理を完了する。
【0060】
その後、描画処理H/W109は、Flagの値が「1」であるか否かを判断する(ステップS1411)。この判断の結果、Flagの値が「1」である場合、現在処理しているブロックよりも右にあるオブジェクトは、当該ブロックとは関連しないことが解る。そこで、描画処理H/W109は、オブジェクトを描画する中間データ1304を、ブロック分割補足情報の中間データ1305を含む中間データに書き換える(ステップS1412)。そして、図14のフローチャートによる処理を終了する。一方、Flagの値が「1」でない場合には、ステップS1412の処理を行わずに、図14のフローチャートによる処理を終了する。
【0061】
(変形例2)
本実施形態では、ブロック分割補足情報を用いて、バンドを複数のブロックへ分割する際の処理の効率化を図るようにした。本変形例では、さらに、描画処理H/W109の構成や処理によって、当該処理の効率化を図るようにする。
図15は、本変形例における描画処理H/W109の詳細な構成の一例を示す図である。描画処理H/W109は、ブロックの切り出しを行う複数のブロック切り出し処理部1501、1502を搭載する。これらのブロック切り出し処理部1501、1502が並列処理を行うことによって、ブロックへの分割処理の高速化を行う。描画処理H/W109の処理は、図12のフローチャートと同様になる。
【0062】
振り分け処理部1500が、図12のフローチャートのS1201〜S1210、S1219の処理を実行する。振り分け処理部1500は、処理の対象となる中間データが、オブジェクトを描画する中間データである場合、ステップS1211〜S1216の処理を、ブロック切り出し処理部1501、1502の何れかに実行させる。ブロック切り出し処理部1501、1502の何れにこの処理に行わせるかは、振り分け処理部1500が動作状況(ブロック切り出し処理部が動作中であるか否か)をみて判断する。
【0063】
その後、振り分け処理部1500は、次の中間データを取得し、処理の対象となる中間データが、オブジェクトを描画する中間データである場合、先ほど振り分けたブロック切り出し処理部とは異なるブロック切り出し処理部に、当該中間データの処理を振り分ける。
このような処理を行うことにより、描画処理H/W109は、バンドを複数のブロックに分割する処理を並列に行うことができる。よって、バンドを複数のブロックに分割する処理の効率化を図ることができる。
【0064】
ブロック切り出し処理部1501、1502は、図12のステップS1211〜S1216のブロック分割処理を行い、その結果を、FIFOメモリ1503、1504に格納する。書き出し処理部1505は、図12のフローチャートのステップS1217の処理を実行するモジュールである。書き出し処理部1505は、FIFOメモリ1503、1504に格納された情報を元に、ブロックRAM110へ描画処理し、画像データの生成を行う。
【0065】
(変形例3)
次に、オブジェクトが矩形オブジェクトである場合に、描画処理H/W109が、バンドを複数のブロックへ分割する処理の効率化を図る方法の一例について説明する。
図16は、描画処理される矩形オブジェクトの一例を示す図である。
図16に示すように、描画処理されるオブジェクトが矩形オブジェクト1601である場合、ブロック1602に対する左右のエッジ1603、1604のX座標は一定である。よって、左右のエッジのX座標を1回だけ算出すれば、左右のエッジのX座標をラインごとに算出しなす必要はない。そのため、描画処理H/W109は、図17のフローチャートのように処理する。図17は、本変形例における描画処理H/W109の処理の一例を説明するフローチャートである。図17のフローチャートは、図12のステップS1211〜S1218の代わりに実施されるものである。
【0066】
まず、描画処理H/W109は、図12のステップS1211〜S1216の処理を行う(ステップS1701)。そして、描画処理H/W109は、ステップS1217と同様に、ブロックの左側のエッジのX座標と右側のエッジのX座標との間の画像を描画処理する(ステップS1702)。
そして、描画処理H/W109は、ステップS1218と同様に、オブジェクトの高さ分(ライン分)の処理が終了したか否かを判断する(ステップS1218)。この判断の結果、オブジェクトの高さ分の処理が終了していない場合、描画処理H/W109は、処理の対象となっているオブジェクトが矩形オブジェクトであるか否かを判断する(ステップS1704)。この判断の結果、処理の対象となっているオブジェクトが矩形オブジェクトである場合には、ステップS1702の処理に戻る。この場合には、ステップS1701の処理を行わない。すなわち、オブジェクトの左右のエッジのX座標を再度算出せずに、次のラインの描画処理を行う。これにより、バンドを複数のブロックに分割する処理を効率的に行って、矩形オブジェクトの描画処理を行うことができる。
一方、オブジェクトが矩形オブジェクトでない場合には、ステップS1701に戻る。そして、描画処理H/W109は、図12のフローチャートと同様に、各ラインにおいて、オブジェクトの左右のエッジのX座標を算出する。
【0067】
(変形例4)
ブロックRAM110が複数あることを利用して、描画処理H/W109が、バンドを複数のブロックに分割する処理を効率化する方法の一例について説明する。
図18は、本変形例において、バンドを複数のブロックに分割する処理の一例を説明する図である。
図18に示すように、複数のブロックがある場合に、描画処理H/W109は、複数の正方形のブロックを纏めた長方形の1つのブロック1801、1803としてブロックの描画処理を実行する。
図18に示す例では、描画処理H/W109は、ブロック1801、1803を、2つの正方形のブロックを1つに纏めた長方形のブロックとして処理する。ここでは、2つの正方形のブロックを1つに纏めている。描画処理H/W109は、2つの正方形のブロックを1つのブロックとし、当該ブロックについて、2つのブロックRAM110を用いて、例えば図12のフローチャートによる処理を行う。一方、ブロック1802は、正方形のブロックであるので、前述したのと同じ処理が行われる。
【0068】
このようにすることにより、描画処理H/W109が、バンドを複数のブロックに分割する処理を、効率良く行うことができる。このようにすると、利用可能なブロックRAM110の数が減ることになる。前述したように、描画処理H/W109と圧縮処理H/W111との並列処理により、処理の効率化を図ることができる。しかしながら、描画処理H/W109が使用するブロックRAM110の空き待ち等によって、前記並列処理を行うことができず、処理の効率が逆に低下する可能性がある。よって、処理の対象のブロックを、複数の正方形のブロックを纏めた1つの長方形のブロックとして処理することによって、描画処理H/W109が、バンドを複数のブロックに分割する処理をより効率良く行えるバンドにのみ、当該処理を適用する。
【0069】
また、変形例3において、矩形のオブジェクトについては、バンドを複数のブロックに分割することが比較的容易であることを説明した(図16を参照)。図19は、描画処理される矩形オブジェクト以外のオブジェクトの一例を示す図である。図19に示すように、矩形以外のオブジェクト1901と、ブロックの左右のエッジとの交差が複雑となる。よって、1ラインごとに、左右のエッジのX座標を求め直す必要がある。このため、ハンドを複数のブロックに分割するのに時間がかかる。
【0070】
図20は、矩形オブジェクト以外のオブジェクトを含む場合のバンド管理情報の一例を示す図である。
図20に示すように、バンド管理情報に、矩形以外のオブジェクトの数2001を書き込む領域を設ける。中間データ生成部203は、1つのバンドに含まれる矩形以外のオブジェクトの数2001をカウントして、この領域に書き込んでおく。描画処理H/W109は、矩形以外のオブジェクトの数を、バンド管理情報から読み出す。そして、矩形以外のオブジェクト数が閾値以上であれば、描画処理H/W109は、長方形のブロックとして処理を行う。このとき、バンドの全体を1つの長方形のブロックとして処理を行っても、バンドの一部を1つの長方形のブロックとして処理を行ってもよい。矩形以外のオブジェクトの数と閾値との差に応じて、これらの何れの処理を採用するかを決めることができる。また、バンドの一部を1つの長方形のブロックとして処理する場合、例えば、矩形のオブジェクトのみを含む領域を長方形のブロックとし、矩形以外のオブジェクトを含む領域を正方形のブロックとすることができる。
一方、矩形以外のオブジェクト数が閾値未満であれば、描画処理H/W109は、正方形のブロックとして処理を行う。
【0071】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0072】
(その他の実施例)
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)が当該コンピュータプログラムを読み出して実行する。

【特許請求の範囲】
【請求項1】
ホストコンピュータにより生成された描画データから、ページごとに中間データを生成する中間データ生成手段と、
前記中間データに対して描画処理を行って実際の画像データを生成する描画処理手段と、を有し、
前記中間データ生成手段は、1ページが複数のバンドに分割された中間データを生成し、
前記描画処理手段は、前記複数のバンドに分割された中間データを、複数のブロックに分割し、複数に分割したブロックの中間データに対して描画処理を行って、各ブロックの画像データを生成し、
前記中間データ生成手段と、前記描画処理手段は、別々のハードウェアであることを特徴とする画像形成装置。
【請求項2】
前記中間データ生成手段は、ブロックを識別する情報と、当該ブロックに全てが含まれるオブジェクトを読み飛ばすための情報とを含む補足情報の中間データを生成し、
前記描画処理手段は、前記描画処理を行うブロックが、前記補足情報で識別されるブロックでない場合、当該補足情報に基づいて、当該補足情報で識別されるブロックに全てが含まれるオブジェクトを読み飛ばすことを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記ブロックに全てが含まれるオブジェクトを読み飛ばすための情報は、当該ブロックの次に処理されるブロックの先頭のオブジェクトを指定するアドレスを含むことを特徴とする請求項2に記載の画像形成装置。
【請求項4】
前記描画処理手段は、ブロックの中間データに対して描画処理を行った後、当該ブロックの最後のオブジェクトが、隣のブロックに跨って存在する場合、当該隣のブロックを識別する情報と、当該オブジェクトを読み飛ばすための情報とを含む補足情報の中間データを生成することを特徴とする請求項2または3に記載の画像形成装置。
【請求項5】
前記描画処理手段は、描画処理を行うブロックに含まれるオブジェクトの横方向のエッジの位置を求め、当該位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割する複数のブロック切り出し処理手段と、
前記複数のバンドに分割された中間データを、前記複数のブロック切り出し処理手段の何れで複数のブロックに分割するのかを判断する振り分け処理手段と、を有し、
前記複数のブロック切り出し処理手段は、前記複数のバンドに分割された中間データであって、相互に異なる中間データを複数のブロックに分割することを、並列に行うことが可能であることを特徴とする請求項1〜4の何れか1項に記載の画像形成装置。
【請求項6】
前記描画処理手段は、描画処理を行うブロックに含まれるオブジェクトが矩形のオブジェクトでない場合には、当該オブジェクトの横方向のエッジの位置を縦方向の異なる位置において求め、求めた位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割し、
描画処理を行うブロックに含まれるオブジェクトが矩形のオブジェクトである場合には、当該オブジェクトの横方向のエッジの位置が縦方向において同じであるとし、当該オブジェクトの横方向のエッジの位置を1回だけ求め、求めた位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割することを特徴とする請求項1〜5の何れか1項に記載の画像形成装置。
【請求項7】
前記描画処理手段により生成された、ブロックの画像データに対して圧縮処理を行う圧縮処理手段と、
メインメモリとは別のメモリであって、前記描画処理手段により生成された、ブロックの画像データが個別に格納されるブロックメモリとを有し、
前記描画処理手段は、前記ブロックメモリを利用して、前記ブロックの画像データを生成し、
前記圧縮処理手段は、前記ブロックメモリに格納された、ブロックの画像データに対して圧縮処理を行い、圧縮処理を行った、ブロックの画像データを前記メインメモリに出力することを特徴とする請求項1〜6の何れか1項に記載の画像形成装置。
【請求項8】
前記ブロックメモリは、複数あり、
前記描画処理手段は、前記複数のブロックメモリのうち、前記圧縮処理手段により利用されていないブロックメモリを使用し、
前記圧縮処理手段は、前記複数のブロックメモリのうち、前記描画処理手段により利用されていないブロックメモリを使用することを特徴とする請求項7に記載の画像形成装置。
【請求項9】
前記描画処理手段は、複数のブロックを1つのブロックとし、当該複数のブロックと同じ数のブロックメモリを利用して、当該複数のブロックの画像データを生成することを特徴とする請求項8に記載の画像形成装置。
【請求項10】
前記描画処理手段は、前記複数のバンドに分割された中間データに含まれる矩形のオブジェクト以外のオブジェクトの数が閾値以上である場合には、複数のブロックを1つのブロックとし、当該複数のブロックと同じ数のブロックメモリを利用して、当該複数のブロックの画像データを生成することを特徴とする請求項9に記載の画像形成装置。
【請求項11】
ホストコンピュータにより生成された描画データから、ページごとに中間データを生成する中間データ生成工程と、
前記中間データに対して描画処理を行って実際の画像データを生成する描画処理工程と、を有し、
前記中間データ生成工程は、1ページが複数のバンドに分割された中間データを生成し、
前記描画処理工程は、前記複数のバンドに分割された中間データを、複数のブロックに分割し、複数に分割したブロックの中間データに対して描画処理を行って、各ブロックの画像データを生成し、
前記中間データ生成工程と、前記描画処理工程は、別々のハードウェアで実行されることを特徴とする画像形成方法。
【請求項12】
前記中間データ生成工程は、ブロックを識別する情報と、当該ブロックに全てが含まれるオブジェクトを読み飛ばすための情報とを含む補足情報の中間データを生成し、
前記描画処理工程は、前記描画処理を行うブロックが、前記補足情報で識別されるブロックでない場合、当該補足情報に基づいて、当該補足情報で識別されるブロックに全てが含まれるオブジェクトを読み飛ばすことを特徴とする請求項11に記載の画像形成方法。
【請求項13】
前記ブロックに全てが含まれるオブジェクトを読み飛ばすための情報は、当該ブロックの次に処理されるブロックの先頭のオブジェクトを指定するアドレスを含むことを特徴とする請求項12に記載の画像形成方法。
【請求項14】
前記描画処理工程は、ブロックの中間データに対して描画処理を行った後、当該ブロックの最後のオブジェクトが、隣のブロックに跨って存在する場合、当該隣のブロックを識別する情報と、当該オブジェクトを読み飛ばすための情報とを含む補足情報の中間データを生成することを特徴とする請求項12または13に記載の画像形成方法。
【請求項15】
前記描画処理工程は、描画処理を行うブロックに含まれるオブジェクトの横方向のエッジの位置を求め、当該位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割する複数のブロック切り出し処理工程と、
前記複数のバンドに分割された中間データを、前記複数のブロック切り出し処理工程の何れで複数のブロックに分割するのかを判断する振り分け処理工程と、を有し、
前記複数のブロック切り出し処理工程は、前記複数のバンドに分割された中間データであって、相互に異なる中間データを複数のブロックに分割することを、並列に行うことが可能であることを特徴とする請求項11〜14の何れか1項に記載の画像形成方法。
【請求項16】
前記描画処理工程は、描画処理を行うブロックに含まれるオブジェクトが矩形のオブジェクトでない場合には、当該オブジェクトの横方向のエッジの位置を縦方向の異なる位置において求め、求めた位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割し、
描画処理を行うブロックに含まれるオブジェクトが矩形のオブジェクトである場合には、当該オブジェクトの横方向のエッジの位置が縦方向において同じであるとし、当該オブジェクトの横方向のエッジの位置を1回だけ求め、求めた位置に基づいて、前記複数のバンドに分割された中間データを、複数のブロックに分割することを特徴とする請求項11〜15の何れか1項に記載の画像形成方法。
【請求項17】
前記描画処理工程により生成された、ブロックの画像データに対して圧縮処理を行う圧縮処理工程を有し、
前記描画処理工程は、メインメモリとは別のメモリであって、前記描画処理工程により生成された、ブロックの画像データが個別に格納されるブロックメモリを利用して、前記ブロックの画像データを生成し、
前記圧縮処理工程は、前記ブロックメモリに格納された、ブロックの画像データに対して圧縮処理を行い、圧縮処理を行った、ブロックの画像データを前記メインメモリに出力することを特徴とする請求項11〜16の何れか1項に記載の画像形成方法。
【請求項18】
前記ブロックメモリは、複数あり、
前記描画処理工程は、前記複数のブロックメモリのうち、前記圧縮処理工程により利用されていないブロックメモリを使用し、
前記圧縮処理工程は、前記複数のブロックメモリのうち、前記描画処理工程により利用されていないブロックメモリを使用することを特徴とする請求項17に記載の画像形成方法。
【請求項19】
前記描画処理工程は、複数のブロックを1つのブロックとし、当該複数のブロックと同じ数のブロックメモリを利用して、当該複数のブロックの画像データを生成することを特徴とする請求項18に記載の画像形成方法。
【請求項20】
前記描画処理工程は、前記複数のバンドに分割された中間データに含まれる矩形のオブジェクト以外のオブジェクトの数が閾値以上である場合には、複数のブロックを1つのブロックとし、当該複数のブロックと同じ数のブロックメモリを利用して、当該複数のブロックの画像データを生成することを特徴とする請求項19に記載の画像形成方法。
【請求項21】
請求項11〜20の何れか1項に記載の画像形成方法の各工程をコンピュータに実行させることを特徴とするコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2012−254583(P2012−254583A)
【公開日】平成24年12月27日(2012.12.27)
【国際特許分類】
【出願番号】特願2011−129405(P2011−129405)
【出願日】平成23年6月9日(2011.6.9)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】