以下,図面にしたがって本発明の実施の形態について説明する。但し,本発明の技術的範囲はこれらの実施の形態に限定されず,特許請求の範囲に記載された事項とその均等物まで及ぶものである。
図1は,ページ画像を所定の印刷領域であるバンドに分割した場合の,画像オブジェクト例とバンドとの関係を説明する図である。(ページ画像とは、たとえば印刷用紙1枚の所定面に印刷される画像のことで、印刷プレーンともいう。印刷エンジンが1回の印刷処理(露光、現像、転写、定着)で印刷できる画像単位である。)
ページ画像PG1内には,赤色(#ff0000)の文字「T」,緑色(#00ff00)の文字「e」,青色(#0000ff)の文字「x」,及び黒色(#000000)の文字「t」から成る文字列1と,黄色(#ffff00)の矩形である図形2と,カラーの自然画イメージ3と,青色(#0000ff)から黄色(#ffff00)へグラデーションする複数の矩形であるグラデーション図形4と,赤色(#ff0000)から白色(#ffffff)へグラデーションする複数の矩形であるグラデーション図形5と,赤色(#ff00000)から黄色(#ffff00)へグラデーションするグラデーション図形6という画像オブジェクトが存在する。括弧内の数字は,それぞれの画像オブジェクトの色をR(赤),G(緑),B(青)の階調値を各8ビットの24ビットで表現し16進表記したものである。
このページ画像を6つのバンドBND1〜BND6に分割すると,第1バンドBND1は文字列1の上部を,第2バンドBND2は文字列1の下部と図形2の上部を,第3バンドBND3は図形2の下部と自然画イメージ3を,第4バンドBND4はグラデーション図形4の上部を,第5バンドBND5はグラデーション図形4の下部とグラデーション図形5を,そして第6バンドBND6はグラデーション図形6をそれぞれ含んでいることになる。
次に,バンドごとに使用されている色数について説明する。例えば,第1バンドBND1には,赤色(#ff0000)の「T」,緑色(#00ff00)の「e」,青色(#0000ff)の「x」及び黒色(#000000)の「t」から構成される文字列1の上部が含まれているので,文字列1で使用される色数は4色であり,背景色の白色(#ffffff)を加えると合計5色になる。第2バンドBND2には,文字列1の下部と図形2の上部が含まれているので,文字列1の4色に図形2の黄色(#ffff00)1色と背景の白色(#ffffff)1色を加え,合計6色となる。第3バンドBND3には,図形2の下部と256色を超えるカラーの自然画イメージ3が含まれており,色数は256色超となる。
第4バンドBND4,第5バンドBND5に含まれているグラデーション図形4,5はそれぞれ色が段階的に異なる複数の矩形により構成されグラデーションを表現しているので,個々の図形の色をカウントすることにより色数をカウントする。ここでは,グラデーション図形4,5ともに色数は16色超かつ256色以下とし,2つの図形の色数を加えると256色超になるものとする。したがって,第4バンドBND4にはグラデーション図形4の上部が含まれるので色数は256色以下となり,第5バンドBND5にはグラデーション図形4の下部及び図形5が含まれるので色数は256色超となる。そして,第6バンドBND6には,グラデーション図形6が含まれており,その描画方法は,後述するように排他的論理和を利用して描画されるので,色数の特定ができないものとされ色数は256色超とされる。
上述のように,第1〜6バンドで使用される色数は5色から256色超まで幅がある。従来の技術では,例えば5色の第1バンドBND1においても256色超の第5バンドBND5においても,画像オブジェクトは,一律に1画素あたりRGB各8ビットの24ビットで色を表現するビットマップ画像データを展開していた。
そこで,本実施の形態における画像処理装置では,まず上記バンドごとに,ページ記述言語で記述された各画像オブジェクトの印刷コマンドをビットマップ画像データに展開しやすい中間コードに変換する段階で,バンドごとに使用する色データを要素とする配列である,パレットなるものを作成する。そして,バンドごとの中間コードに基づきビットマップ画像データを展開する段階で,画素ごとの色データではなく,パレットの色データが対応づけられたインデックス番号を参照する参照データを展開する。さらに,このようにビットマップ画像が参照データで展開されるときには,パレットに登録されたバンドで使用される色の数に応じたデータ量で展開する。そうすることにより,メモリ資源の節約と画像処理の負荷軽減を図ることが可能となる。
図2は,パレットとバンド単位に変換されるビットマップ画像データのデプスの関係について説明する図である。ここで,デプスとは,ビットマップ画像データに展開した場合に1画素あたりに要するビット数をいう。パレットには参照データに相当するインデックス番号0,1,…,4と,各インデックス番号に対応づけられたRGB階調値が登録される。図2(A)に第1バンドBND1のパレットの例を示す。インデックスの括弧内はインデックス番号を4ビットの2進数で表現したものであり,RGB階調値はそれぞれ8ビットを16進数で表現したものである。
図2(B)は,中間コードからパレットの色データに対応つけられたインデックス番号で展開され,1画素4ビットで表現された,第1バンドBND1のビットマップ画像データを概念的に説明する図である。文字列1の一部である各画素P1〜P4及び背景の一部である画素P5は,4ビットで表現された図2(A)のパレットのインデックス番号を有しており,RGB階調値は有していない。すなわち,パレットを参照する参照データがビットマップ画像データとして展開されたことを示している。例えば,文字「T」の一部である画素P1は,図2(A)のパレットの赤色(#ff0000)に対応するインデックス1(0001)で展開されている。このように,第1バンドBND1の各画素はパレットに登録された色のインデックス番号0(2進数で0000)〜4(2進数で0100)を参照するために必要なビット数を持てばよく,1画素あたり4ビットの参照データをビットマップ画像データとして展開することができる。そして,参照データによって,パレットを参照することにより,実際の色のデータを得ることができる。
図2(C)は,バンドで使用される色数,ビットマップ画像データの展開に必要なデプス,及びパレットの要素数を対応づけた表である。パレットを参照する参照データをビットマップ画像データとして展開する場合は,バンドごとに使用される色データを登録したパレットの要素数を表現することのできるビット数が,そのバンドに必要なデプスである。よって,上述の第1バンドBND1で使用される色数は5色であるので,2色超16色以下に対応する4ビットのデプスが割り当てられている。この対応関係に基づくと,図3で示すように,各バンドの色数に応じて,パレットの色データを参照する参照データをビットマップ画像データとして展開するのに必要なデプスが割り当てられる。
図3は,図1のページ画像PG1の各バンドで使用される色数と,色数に応じて展開されるビットマップ画像データのデータ量の対応関係を説明する図である。例えば第1バンドBND1には5色が使用されているので,5色を登録したパレットの要素数を表現するのに十分な4ビットのデプスが対応付けられている。6色の第2バンドBND2には4ビットのデプスが,256色以下の第4バンドBND4には8ビットのデプスが,256色超の第3,5,6バンドには24ビットのデプスが対応づけられる。
上述のようにして,バンドごとに使用される色データを有するパレットを作成し,パレットの色データの要素数に応じたデプスで参照データをビットマップ画像データとして展開すれば,すべてのカラーバンドに一律24ビットのデプスを使用する従来の技術に比べて,メモリ資源を節約することができる。また,ビットマップ画像データとして展開するデータの量も少量にできるので,各種処理の負荷も軽減することが可能になる。
ただし,本実施の形態では,次のような理由によりバンドごとの色数が基準値である256色を上回った場合にはパレットを用いない。まず,パレットの要素数が増加すれば,パレットを格納するためにより多くのメモリ資源が必要となる。また,256色までパレットに登録した場合はインデックス番号0〜255を8ビットで表現できるので,バンドに必要なデプスは8ビットである。しかし,256を超える要素数を持つパレットを作成すると,その分参照すべきインデックス番号を表現するのに必要な画素あたりのビット数,つまりデプスが増加してしまう。よって,参照データと,それに対応づけられた色のデータを記憶するために多くのメモリ資源が必要となる。すると,画像処理全体としてのメモリ資源の節約という効果が減少してしまう。
よって,バンドで使用される色数が256色を上回る場合は,パレットを用いずに,1画素あたりRGB各8ビットの色データでビットマップ画像データを表現し,従って,ビットマップ画像データを24ビットのデプスで展開する。これにより,画像処理工程全体としてのメモリ資源の最適な配分を図ることができる。
ただし,かかる基準値は画像処理全体としてのメモリ資源の最適化や処理効率の観点から設定されたものであり,前記256色に限定されるものではない。
また,画像オブジェクトの印刷コマンドにおける画像合成方法が,排他的論理和など,背景や複数の画像オブジェクトとの論理演算により色を決定するものである場合は,次のような理由により,バンドで使用される色数は256色を上回るものとし,パレットを用いずに1画素あたり24ビットのデプスで画素ごとの色データをビットマップ画像データとして展開する。
印刷コマンドに含まれる画像合成方法は,マイクロソフト社のウインドウズ(登録商標)OSが提供するROP(RasterOperation )や,アルファブレンド方式などの画像合成方法を用いることができ,これらの画像合成方法には「上書き」による方法と,「論理演算」あるいは「算術演算」による方法が存在する。「上書き」による画像合成方法の場合は,画像オブジェクトが描かれる位置の背景や既存の画像オブジェクトに対して,描き込もうとする画像オブジェクトの有する色を上書きする。つまり,ビットマップ画像に変換する対象の中間コードがビットマップ画像データとして書き込まれるところに,背景やビットマップ画像として既に中間コードから変換されている既存の画像オブジェクトなどがあったとき,既存の描き込み先の画素が有している色,つまり背景色を,書き込み対象の中間コードが指定する色で置換する処理を行う。このため,その画像オブジェクトが描かれている位置の画素の色データは,印刷コマンドを中間コードに変換する時点で特定でき,従って,色データをパレットに登録することが可能である。
一方,「論理演算」および「算術演算」による画像合成方法は,ビットマップ展開時に,背景や既存の画像オブジェクトの色,つまり背景色と,書き込もうとするオブジェクトの色との排他的論理和などの論理演算あるいは算術演算により,描画する色が算出される。よって,中間コードを登録する時点では,その画像オブジェクトを描画する色,すなわち,ビットマップメモリに書き込む色がわからないので,パレットに色を登録できず,従って,パレットを作成することができない。よって,論理演算あるいは算術演算による画像合成方法を指定した画像オブジェクトを含むときには,最終的にそのバンドで使用する色数が基準値を超えない場合でも,パレットの生成を省略する。この場合,バンドで使用される色数は256色超であるとして扱う。
図1で説明したページ画像PG1上の画像オブジェクトについて画像合成方法を説明しておくと,文字列1,図形2,自然画イメージ3,グラデーション図形4及び5については,「上書き」による画像合成方法を用いている。よって,これらの画像オブジェクトについては色が特定できるので色数のカウントも可能であり,それぞれの色数は図1の説明において述べたとおりである。しかし,グラデーション図形6は背景や複数の画像オブジェクトとの論理演算により色を指定する画像合成方法により描画されるので,色数が特定できず,上記のとおり256色超として処理される。
図4は,上述した画像処理を行う画像処理装置の概略構成図である。図4(A)では,ページ記述言語で記述された一連の印刷コマンドから成る印刷データPDLが,ホストコンピュータHOSTから画像形成装置の一例であるプリンタ10のコントローラ12に供給される。コントローラ12は印刷データPDLの印刷コマンドを中間コードに変換し,中間コードからビットマップ画像データをビットマップメモリ領域であるバンドバッファB−BUF内に展開し,展開されたビットマップ画像データから生成した画像再生信号16を印刷エンジン26に供給する。この場合,コントローラ12が画像処理装置に対応する。また,コントローラ12内のメモリユニットに格納されコントローラ12の処理内容を記述したプログラムは画像処理プログラムに対応する。さらに,コントローラ12による処理の方法は,画像処理方法に対応する。
図4(B)では,ホストコンピュータHOST内のプリンタドライバP−DRが,印刷データからバンド領域ごとに中間コードを生成し,その中間コードIC,バンドで使用される色データを有するパレットBPをプリンタ10のコントローラ12に供給する。コントローラ12は,供給された中間コードIC等に基づいてビットマップ画像データをバンドバッファB−BUFに展開し,展開されたビットマップ画像データから生成した画像再生信号16を印刷エンジン26に供給する。この場合は,ホストコンピュータHOSTとコントローラ12が画像処理装置に対応する。また,プリンタドライバP−DRが実行する工程とコントローラ12が実行する工程とが画像処理方法に対応する。
さらに,図4(C)では,ホストコンピュータHOST内のプリンタドライバP−DRが,印刷データからバンド領域内の中間コードを生成し,その中間コードに基づいてビットマップ画像データをバンドバッファB−BUF内に展開し,必要に応じて色空間変換,圧縮をして,圧縮されたビットマップ画像データBMをプリンタ10内のコントローラ12に出力する。コントローラ12は,必要に応じて色空間変換,階調値変換処理を行い,画像再生信号16を印刷エンジン26に出力する。この場合は,プログラムであるプリンタドライバP−DRが画像処理プログラムに対応する。また,ホストコンピュータHOSTが、あるいは、ホストコンピュータHOSTとコントローラ12とが画像処理装置に対応する。さらに,プリンタドライバP−DRがホストコンピュータHOSTに実行させる方法は画像処理方法に対応する。
図5は,本実施の形態におけるプリンタの構成図である。図5のプリンタ10は,図4(A)のプリンタ10に対応する。プリンタ10は,画像処理装置に対応するコントローラ12と,印刷エンジン26とで構成される。
コントローラ12は,ホストコンピュータから画像オブジェクトの印刷コマンドから成る印刷データPDLを受信するインターフェースIFと,印刷データをバンド領域ごとの中間コードICに変換する中央処理ユニットCPUと,中間コードに基づいてビットマップ画像データを展開する展開ユニット18と,ビットマップ画像データをRGB色空間からCMYK色空間に変換する色変換ユニット20と,ビットマップ画像データを圧縮・解凍する圧縮・解凍ユニット22と,ビットマップ画像データを階調値変換する階調値変換ユニット24と,階調値変換されたビットマップ画像データを画像再生信号であるパルス信号に変換するパルス幅変調ユニットPWMとを有し,パルス幅変調ユニットにより生成される画像処理信号16が印刷エンジン26に供給される。
さらに,コントローラ12は,メモリユニット14を有し,メモリユニット14には,中間コードが格納される中間コードバッファIC−BUFと,ビットマップ画像データとしての参照データや画素ごとの色データが展開されるビットマップメモリとしてバンドバッファB−BUFとが確保される。さらに,メモリユニット14には,バンド毎の色データを格納するパレット用の領域PLTと,コントローラ12による画像処理に用いられ図7で詳述する各種変数を格納するテーブルTBLとが確保される。
図5のプリンタ10が,図4(B)のプリンタ10に対応する場合は,コントローラ12のインターフェースIFがホストコンピュータから中間コードICおよびバンド毎の色データを有するパレットBPを受信し,中間コードバッファIC−BUFとパレット用の領域PLTにそれぞれ格納する。そして,コントローラ12は,展開ユニット18により中間コードに基づいてバンドバッファB−BUF内にビットマップ画像データを展開する。
図5のプリンタ10が,図4(C)のプリンタ10に対応する場合は,コントローラ12には,展開ユニット18,色変換ユニット20などは設けられておらず,受信したビットマップ画像データ階調値変換して,画像再生信号16を印刷エンジンに出力するだけである。
図6以降では,本実施の形態における画像処理の内容について詳述する。まず,ページ記述言語で記述された画像オブジェクトの印刷コマンドと,画像処理に用いられる各種の変数を図6,7で説明する。
図6は,画像オブジェクトの印刷コマンドを説明する図である。図1で示したページ画像PG1の画像オブジェクトの文字列1とグラデーション図形5についての印刷コマンド、また、改ページコマンドを例示してある。
コマンドC101〜C120は文字列1の印刷コマンドである。文字列1は,文字「T」,「e」,「x」,「t」ごとに,色設定コマンド,フォント選択コマンド,文字サイズ設定コマンド,テキスト描画位置指定コマンド,そして描画コマンドの各コマンドによって描画される。例えば,文字「T」については,色設定コマンドC101,フォント選択コマンドC102,文字サイズ設定コマンドC103,テキスト描画位置指定コマンドC104,及び文字描画コマンドC105により描画される。図6に示すように,この例では,コマンドC101が,後述する図9の処理に用いられる「設定コマンド」であり,コマンドC102〜C105が,後述する図8の工程S400で判定される「描画コマンド」に相当する。
コマンドC511〜C(n+2)はグラデーション図形5の印刷コマンドである。グラデーション図形5は,段階的に色が赤色(#FF0000)から白色(#ffffff)に変化する複数の矩形により構成されており,各矩形ごとの印刷コマンドにより描画される。よって,まず赤色の矩形が色設定コマンドC511,矩形塗りつぶしコマンドC512,矩形描画コマンドC513により描画される。同様のコマンドにより赤色(#ff0000)と白色(#ffffff)の中間の色の複数の矩形が描画され,最後は白色(#ffffff)の矩形が色設定コマンドCn,矩形塗りつぶしコマンドC(n+1),矩形描画コマンドC(n+2)により描画される。ここでは,コマンドC511及びCnが「設定コマンド」であり,コマンドC512,C513,C(n+1),及びC(n+2)が後述する図8の工程S400で判定される「描画コマンド」に相当する。
また、上記「設定コマンド」には,文字,図形,イメージの画像合成方法を設定するものがあり,これにより,前述した「上書き」や各種論理演算の内容が設定される。なお,これらの「設定コマンド」は,画像オブジェクト毎,1文字毎に必ず発行されなければならないものではなく,以前に発行されたコマンドの設定内容と同じである場合には発行されない。言い換えれば,以前に発行されたコマンドの設定内容と異なる場合に発行される。従って,図6に示した例において,文字“e”の色が文字“T”の色と同じ場合は,C106の文字色設定コマンドは発行されない。また,上記画像合成方法に関する設定は,後述するように,初期値として「上書き」が与えられるので,図1に示した図形6の印刷コマンドにおいては,所定の論理演算による画像合成方法の設定コマンドが発行されることになる。コントローラ12では,以上のような印刷コマンドの列を順次解析して中間コードに変換する。そして,ページ画像PG1を作成するための印刷コマンド列は改ページコマンドCendで終了する。
図7は,印刷コマンドを中間コードに変換し,パレットを作成する際に用いられる各種変数について説明する図である。図7(A)に示す文字色G1,図形色G2,文字の画像合成方法G3,図形の画像合成方法G4,及びイメージの画像合成方法G5は,一種のグローバル変数として,印刷コマンドの設定コマンドにより設定される画像オブジェクトの色と画像合成方法を格納する。これらの変数G1〜G5は,新たに中間コードをバンドごとの中間コードバッファIC−BUFに登録する時に,各バンドにおいて新たに登録される中間コードの前に最後に登録された中間コードの文字色,または図形色等と比較するために参照される。なお,これらの変数G1〜G5は,メモリユニット14内のテーブルTBLに格納されている。
また,文字色G1,図形色G2はいずれも,後述する図8の工程S100で「黒色(#000000)」が初期値設定され,図8の工程S700では適宜初期値が上書きされる。画像合成方法G3〜G5には文字色や図形色による「上書き」による画像合成方法が初期設定されており,画像オブジェクトの印刷コマンドにより画像合成方法が設定されなければ,初期設定の「上書き」による画像合成が行われる。
図7(B)に示すバンド文字色B1,バンド図形色B2,バンド文字の画像合成方法B3,バンド図形の画像合成方法B4,バンドイメージの画像合成方法B5,パレットの登録色数B6,及びパレットB7の各変数は,バンドごとに用意される変数である。バンド文字色B1,バンド図形色B2,バンド文字の画像合成方法B3,バンド図形の画像合成方法B4,及びバンドイメージの画像合成方法B5は,そのバンドで最後に中間コード登録された文字・図形の色や画像合成方法を格納する。パレットの登録色数B6は,そのバンドのパレットB7に登録された色数(配列の要素数)を,パレットB7は,図2(A)のパレットに相当し,そのバンドで使用される色とインデックス番号を格納する。
これらの変数B1〜B7は,当該バンド内の新たな画像オブジェクトに対する中間コードを中間コードバッファIC−BUFへ登録する時に参照される。図7(A)の各変数G1〜G5に格納される,バンド内で新たに登録される画像オブジェクトの中間コードの色,画像合成方法等が,変数B1〜B5の内容と異なっていれば,新たな画像オブジェクトの中間コードを中間コードバッファIC−BUFに登録した後に,変数B1〜B5の内容を新たな色・画像合成方法等に変更し,色が追加されれば,パレット登録色数B6を更新するとともにパレットB7に色を追加する。
各変数B1〜B7は,メモリユニット14内のテーブルTBLに格納されており,後述する図8の工程S200では次のような初期値が設定される。バンド文字色B1,バンド図形色B2には「黒色(#000000)」が,画像合成方法についての変数B3〜B5には,「上書き」が,パレットB7には第1の要素として各バンドの背景色「白色(#ffffff)」が,パレット登録色数B6の初期値にはパレットの初期設定に応じて1が,初期設定される。新たに中間コードを登録しようとする画像オブジェクトの色や画像合成方法が,各変数B1〜B7の初期値や最後に設定された値に等しければ,変数の書き換えや更新,追加等の処理を省略する。そうすることにより,処理の効率化を図ることができる。
図8〜図16では,画像処理全体の手順を説明する。以下に示す手順は,図4(A)に示した構成を例としてコントローラ12の動作について説明するが,図4(B)または図4(C)における構成にも適用できる。
図8は,1ページの印刷について,印刷コマンドを中間コードに変換して登録する手順を含む画像処理手順全体を説明するフローチャート図である。まず,文字色G1,図形色G2及び各画像合成方法G3〜G5の各変数に初期値を設定する(S100)。次に,全バンドのバンド文字色B1,バンド図形色B2,各画像合成方法B3〜B5,パレット登録色数B6,及びパレットB7の第1要素に初期値を設定する(S200)。
次に,ページ画像内の各画像オブジェクトについて図6に示したような印刷コマンドを順次読み込み中間コードに変換するために解析する(S300)。画像オブジェクトの印刷コマンドのうち,前述した「描画コマンド」に相当するものではないときには(S400のNO),工程S600へ進む。そして,さらに改ページコマンドでない場合には(S600のNO),すなわち,前述した「設定コマンド」である場合には,工程S700へ進む。例えば,色設定コマンドのときには,工程S600へ進み,さらに工程S700へ進む。
そして,工程S400で描画コマンドが来たら(S400のYES),画像オブジェクトの色や画像合成方法が設定された図7(A)の各変数G1〜G5を参照しながら処理中の画像オブジェクトに対する中間コードを中間コードバッファIC−BUFに登録するとともに,各バンドのパレットを生成する(S500)。
さらに,ページ内の全ての印刷コマンドの処理を終了して改ページコマンドが来たら,(S600のYES),当該ページについて登録された中間コードをビットマップ画像データに変換し,ビットマップ画像をバンドバッファB−BUFに書き込む。中間コードが登録された時点では,バンド内に使用された色数に応じたパレットが作成されているので,バンドバッファB−BUFには,バンド毎に必要なデプス(ビット数)でパレットを参照する参照データ,もしくは画素ごとの色データがビットマップ画像データとして展開される。
その後,ビットマップ画像データに対し、必要に応じて色空間の変換,圧縮・解凍処理を行う(S800)。最後に,バンドバッファB−BUFに展開されたビットマップ画像データは画像形成信号として印刷エンジンに出力される(S900)。
上記手順を,図1で示した文字列1を例に説明する。文字列1は,文字「T」,「e」,「x」,「t」ごとに,文字色設定、フォント選択,文字サイズ設定,テキスト描画位置指定,文字の描画などのコマンドが順次解析され,中間コードに変換される。すなわち,まず文字「T」について,図6の印刷コマンドC101〜C105までが解析され,中間コードに変換される(S300)。文字色設定コマンドC101は文字「T」の描画コマンドではなく(S400のNO),改ページコマンドでもない(S600のNO)ので,各種設定工程S700へ進む。そして,フォント選択コマンドC102以降のコマンドが来たら描画コマンドと判定されて(S400のYES),中間コード登録工程S500へ進む。
以上の工程が文字「T」について実行されてから,同じ工程が文字「e」についても実行され,以降文字「x」,「t」についても順次実行される。その後,他の画像オブジェクトについての処理がなされ,最後に改ページコマンドCendが来たら(S600のYES),画像展開・色空間変換・圧縮処理工程S800に進み,最後に印刷工程S900へ進む。
図9は,各画像オブジェクトの各種変数の設定の手順を説明するフローチャート図である。図8の工程S700に対応する。ここでは,解析した印刷コマンド(「設定コマンド」)に基づき,各画像オブジェクトについての色及び画像合成方法を図7(A)で示した各変数G1〜G5に設定する。すなわち,図8の工程S300で読み込まれた印刷コマンドが文字の画像オブジェクトの印刷コマンドである場合は,文字色設定コマンドが来たら(S720のYES)図7(B)の文字色G1を、文字色設定コマンドで設定されている設定色に変更する(S722)。また,図形オブジェクトについての印刷コマンドである場合は,図形色設定コマンドが来たら(S740のYES),図形色G2を図形色設定コマンドで設定されている設定色に変更する(S742)。さらに,画像オブジェクトの種類によらず画像合成方法設定コマンドが来たら(S760のYES),画像合成方法G3〜G5のいずれかを画像合成法設定コマンドの指定する画像合成方法に変更する(S762)。
図1の文字列1の文字「T」の例では,文字色設定コマンドC101は文字「T」の文字色設定コマンドであるので(S720のYES),図7(A)に示した文字色G1に文字色設定コマンドC101が指定する文字色「赤色(#ff0000)」を設定する(S722)。また,グラデーション図形5の例では,図形色設定コマンドC511は,文字色設定コマンドではなく(S720のNO),図形色設定コマンドであるので(S740のYES),図7(A)に示した図形色G2に図形色設定コマンドC511が指定する図形色「赤色(#ff0000)」を設定する(S742)。さらに,グラデーション図形6の例では,図6には示さない画像合成方法設定コマンドが来るので,工程S762に進み,図7(A)に示した図形の画像合成方法G4に「排他的論理和(PATINVERT)」を設定する。
図10は,中間コード登録の手順を説明するフローチャート図である。図8の工程S500に対応する。コントローラ12は,まず受け取った画像オブジェクトの「描画コマンド」から中間コードとして登録される対象の画像オブジェクトが文字であるかを判断し(S502),文字であれば中間コードバッファIC−BUFに,文字中間コード登録を行う(S520)。次に,文字でない場合,画像オブジェクトが図形であるかを判断し(S504),図形であれば図形中間コード登録を行う(S540)。最後に,文字でも図形でもない場合は(S504のNO),画像オブジェクトをイメージと判断し,イメージ中間コード登録を行う(S560)。
ここで,図8,図9及び図10で説明した工程に,再度,図1に示した画像オブジェクトの例を当てはめてみる。
まず,文字列1の例では,文字「T」について図6の印刷コマンドC101〜C105が解析される(図8のS300)。文字色設定コマンドC101は文字「T」の「描画コマンド」ではなく(図8のS400のNO),改ページコマンドでもない(S600のNO)ので,各種設定工程S700(図9)へ進む。
図9の各種設定工程において,印刷コマンドC101は文字「T」の文字色設定コマンドであるので(S720のYES),図7(A)に示した文字色G1に文字色設定コマンドC101が指定する文字色「赤色(#ff0000)」を設定する(S722)。
図8へ戻ると,文字「T」の「描画コマンド」に相当するフォント選択コマンドC102が来た時点で(S400のYES),中間コード登録工程S500へ進む。そして,図10の中間コード登録工程において,処理中のオブジェクトは文字「T」であるので(S502のYES),文字中間コード登録工程S520へ進む。
上記のように,文字「T」について各種設定工程S700(図9)と中間コード登録工程S500(図10)が実行された後,文字「e」について,各種設定S700(図9)と中間コード登録工程S500(図10)の処理がされる。以降文字「x」,「t」についても同様である。
次に,グラデーション図形5の例では,段階的に色が変化する複数の矩形ごとに印刷コマンドが解析される。まず,赤色の矩形を描画するための色設定コマンドC511,矩形塗りつぶしコマンドC512,矩形描画コマンドC513が順に解析される(図8のS300)。印刷コマンドC511は図形色設定コマンドであって矩形の「描画コマンド」ではなく(図8のS400のNO),改ページコマンドでもない(S600のNO)ので,各種設定工程S700(図9)へ進む。
図9の各種設定工程において,図形色設定C511は矩形の図形色設定コマンドであるので(S740のYES),図7(A)に示した図形色G2に図形色設定コマンドC511が指定する図形色「赤色(#ff0000)」を設定する(S742)。
図8へ戻ると,「描画コマンド」に相当する矩形塗りつぶしコマンドC512が来た時点で(S400のYES),中間コード登録工程S500(図10)へ進む。そして,図10の中間コード登録工程において,処理中のオブジェクトは図形であるので(S504のYES),図形中間コード登録工程S540へ進む。
上記のような手順で,ページ画像PG1の全ての画像オブジェクトについてグラデーション図形6の印刷コマンドにいたるまで中間コードへの変換,登録がなされる。そして,最後に改ページコマンドCendが来たら(S600のYES),画像展開・色空間変換・圧縮処理工程S800に進み,最後に印刷工程S900へ進む。
図11は,文字中間コード登録の手順を説明するフローチャート図である。図10の工程S520に対応する。まず,コントローラ12は,1つの文字オブジェクトごとに文字中間コードが登録されるべき登録先頭バンド番号と登録最終バンド番号を算出する(S5 21)。次に,登録先頭バンドから登録最終バンドについて順番に,当該バンドのバンド文字色B1の判断(S523〜S525),バンド文字の画像合成方法の判断(S526〜528),当該バンドで使用される色データのパレットへの登録(S529〜535),及び中間コードバッファIC−BUFへの文字中間コードの登録(S536)を行う。
まず解析された文字オブジェクトの色設定コマンドにより文字色G1に設定された色をバンド文字色B1の色と比較する(S523)。両者が同じなら工程S526に進む。両者が異なれば,当該バンドに文字色G1に格納された色を設定する文字色設定中間コードを登録し(S524),バンド文字色B1を文字色G1に設定された色に変更する(S525)。例えば,図1の文字列1の文字“T”がページの中で一番最初に読み込まれた印刷コマンドであるとすると,文字色設定コマンドC101により文字色G1に設定された色とバンド文字色B1の初期値「黒色(#000000)」とは異なるので,バンドに文字色G1に格納された色を設定する文字色設定中間コードを登録する。
次に,文字“T”の画像合成方法の変数G3(図7(A))に格納された画像合成方法を,バンド文字の画像合成方法の変数B3と比較する(S526)。両者が同じなら工程S529に進む。両者が異なれば,当該バンドに文字の画像合成方法を設定する中間コードを登録し(S527),バンド文字の画像合成方法B3を文字の画像合成方法G3(図7(A))に設定された画像合成方法に変更する(S528)。
そして,バンド文字の画像合成方法変数B3に格納された画像合成方法が,バンドバッファの背景色や複数の画像オブジェクトとの論理演算により色を指定するものであるかを判断する(S529)。工程S529の判断結果がYESの場合は,工程S534に進み,処理中のバンドのパレット登録色数B6を「257」に設定し,そのバンドに文字中間コードを登録する(S535)。これにより、当該バンドについては,後述する画像展開処理において,パレットを用いずに,画素ごとの色データを直接ビットマップ画像データとして展開することになる。
なお,この時点で,当該バンドについて,既にパレットが作成されている場合には,そのパレットを削除してもよい。
工程S529の判断結果がNOの場合は,バンド文字色B1の色がそのバンドのパレットにすでに格納された色であるかを,パレットB7を参照して判断する(S530)。工程S530の判断結果がYESの場合は,工程S535に進み,そのバンドに文字中間コードを登録する。工程S530の判断結果がNOの場合は,そのバンドのパレットの登録色数B6が256色以上であるかを判断する(S531)。
工程S531の判断結果がYESの場合は,工程S534に進み,処理中のバンドのパレット登録色数を「257」に設定し,そのバンドに文字中間コードを登録する(S535)。この場合は,後の工程で画素ごとの色データをビットマップ画像データとして展開することになる。工程S531の判断結果がNOの場合は,そのバンドのパレットB7にバンド文字色B1の色を新たに登録し(S532),バンドのパレット登録数変数B6の値を1つ増やす(S533)。そして,そのバンドに文字中間コードを登録する(S535)。以上の手順を,文字中間コードを登録しようとする最終バンドまで繰り返す。
上述した手順を,図1で示したページ画像PG1の文字の画像オブジェクトに当てはめてみる。例えば,文字列1「Text」の文字「T」については,各種設定工程(図9)で文字色G1に「赤色(#ff0000)」を設定した後(図9のS722),フォント選択コマンドC102を「描画コマンド」と判定し(図8のS400のYES),それ以降,文字「T」を描画する中間コードを登録する処理を行う。
図11において,文字「T」は第1バンドBND1と第2バンドBND2に位置するので,文字中間コード登録先頭バンド番号「1」(第1バンドBND1),登録最終バンド番号「2」(第2バンドBND2)が算出される(S521)。そして,登録先頭バンド番号「1」から登録最終バンド番号「2」について各々工程S523からS535が実行される。まず、第1バンドBND1のバンド文字色B1と,文字色G1に格納された文字列1の「T」の文字色とが比較される(S523)。
ここで,文字列1の「T」は「赤色(#ff0000)」であるので,文字色G1には図9の工程S722において「赤色(#ff0000)」が格納されている。一方,バンド文字色B1は図8の工程S200で「黒色(#000000)」に初期値設定されている。すると第1バンドBND1のバンド文字色B1と文字色G1は異なるので,第1バンドBND1の中間コードバッファIC−BUFに「赤色(#ff0000)」の文字色設定中間コードが登録され(S524),第1バンドBND1のバンド文字色B1は,文字色G1の「赤色(#ff0000)」に変更される(S525)。
次に,第1バンドBND1のバンド文字の画像合成方法B3と,文字列「T」についての画像合成方法とが比較される(S526)。ここで,文字の画像合成方法G3は図9の各種設定工程で変更されず初期設定「上書き」による画像合成方法であり,一方バンド文字の画像合成方法B3も「上書き」に初期値設定されている。すると第1バンドBND1のバンド文字の画像合成方法B3と文字の画像合成方法G3は等しいので,バンド文字の画像合成方法B3の値は変更されず,工程S529へ進む。
すると,バンド文字の画像合成方法B3に格納された画像合成方法は「上書き」であるので,バンドバッファの背景色や複数の画像オブジェクトとの論理演算により色を指定するものではなく工程S529の判断結果はNOとなる。工程S530では,パレットB7の第1要素は「白色(#ffffff)」が初期設定されている(図8の工程S200)が,バンド文字色B1の色である「赤色(#ff0000)」は登録されていないので,判断結果はNOとなる。工程S531では,第1バンドBND1のパレットの登録色数B6は「1」に初期設定されており(図8の工程S200),256以上ではないので,判断結果はNOとなる。
そこで,第1バンドBND1のパレットB7にバンド文字色B1の「赤色(#ff0000)」を初期設定された白に加えて登録し(S532),第1バンドBND1のパレットの登録色数B6を「2」に増加させ上書きする(S533)。最後に,第1バンドBND1に文字中間コードを登録する(S535)。
次に、S521で、文字“T”はバンド2にも属していると判断されているので、中間コード登録ループ工程S522〜工程S537が,バンド2についても同様に実行される。
上記の手順を,文字列1の全ての文字について実行する。すなわち,文字「e」についても第1バンドBND1に中間コードを登録し,さらに第2バンドBND2にも中間コードを登録する。文字「x」,「t」についても同じ処理を行う。
図12は,図形中間コード登録の手順を説明するフローチャート図である。図10の工程S540に対応する。まず,コントローラ12は,1つの図形オブジェクトごとに図形中間コードが登録されるべき登録先頭バンド番号と登録最終バンド番号を算出し(S541),登録先頭バンドから登録最終バンドについて順番に,バンド図形色B2の判断(S543〜S545),バンド図形の画像合成方法の判断(S546〜548),そのバンドで使用される色データのパレットへの登録(S549〜555),及び中間コードバッファIC−BUFへの図形中間コードの登録(S556)を行う。なお,グラデーション図形5のように複数の図形により構成される図形オブジェクトの場合には,それぞれの構成単位の図形オブジェクトごとに前記手順を実行する。
各工程の詳細については,対象となる画像オブジェクトが「文字」から「図形」に変わっただけで図11と同様であるので説明を省略し,図1で示したページ画像PG1の図
形の画像オブジェクトに当てはめてみる。
例えば,グラデーション図形5については,グラデーション図形5は,段階的に色が変化する複数の矩形により構成されており,各矩形ごと1つの画像オブジェクトとして印刷コマンドが解析され中間コードに変換される。まず,第1の赤色(#ff0000)の矩形について各種設定工程(図9)で図形色B2(図7(A))に「赤色(#ff0000)」を設定した後(図9のS742),矩形塗りつぶしコマンドC512が来たら「描画コマンド」と判定し(図8のS400のYES),工程S500へ進み,赤色の矩形を描画する中間コードを登録する処理を実行する。
赤色の矩形は第5バンドBND5に位置するので,図形中間コード登録先頭バンド番号,登録最終バンド番号ともに「5」(第5バンドBND5)が算出される(図12のS541)。よって,バンド番号「5」についてのみ(S541,S557),工程S543からS555が実行される。
まず,第5バンドBND5のバンド図形色B2と,図形色G2の色とが比較される(S544)。上述のとおり図形色G2は図9の各種設定工程S742において「赤色(#ff0000)」に設定されている。ここで,同一バンドにはグラデーション図形4が含まれており,グラデーション図形5の印刷コマンドに先んじてグラデーション図形4の印刷コマンドが処理されているので,グラデーション図形4を構成する最後の矩形の設定色がバンド図形色B2に最後に設定されていることになる。
すると,グラデーション図形4の最後に中間コード登録された矩形はグラデーション図形5の最初に中間コード登録される矩形(赤の矩形)とは異なる色で構成されているので,第5バンドBND5のバンド図形色B2と図形色G2に格納された色は異なることになる(S543のNO)。よって,第5バンドBND5に「赤色(#ff0000)」の図形色設定中間コードが登録され(S544),第5バンドBND5のバンド図形色B2は,図形色G2の「赤色(#ff0000)」に変更される(S545)。
次に,第5バンドBND5のバンド図形の画像合成方法B4と,グラデーション図形5の第1の矩形(最初に中間コード登録される矩形)についての画像合成方法とが比較される(S546)。ここで,グラデーション図形5の第1の矩形は背景に対して上書きされるものである。一方,バンド図形の画像合成方法B4については,同一バンドに含まれるグラデーション図形4の画像合成方法「上書き」が最後に設定されている。すると第5バンドBND5のバンド図形の画像合成方法B4と図形の画像合成方法G4は等しいので(S546のYES),バンド図形の画像合成方法B4の値は変更されず,工程S549へ進む。
すると,バンド図形の画像合成方法B4に格納された画像合成方法は「上書き」であるので,バンドバッファの背景色や複数の画像オブジェクトとの論理演算により色を指定するものではない(S549のNO)。そして,バンドのパレットB7には,すでにグラデーション図形4に使用される色が登録されているが,グラデーション図形4はグラデーション図形5と異なる色を用いているため,バンド図形色B2の色である「赤色(#ff0000)」は登録されていない(S550のNO)。さらに,第5バンドBND5のパレットの登録色数B6は,グラデーション図形4に使用される色数である256以下のいずれかの値に設定されているが,256以上ではない(S531のNO)。
そこで,第5バンドBND5のパレットB7にバンド図形色B2の「赤色(#ff0000)」を登録し(S552),第5バンドBND5のパレットの登録色数B6を1つ増加させて上書きする(S553)。そして,第5バンドBND5の図形中間コードを登録する(S555)。
上述の手順を,グラデーション図形5を構成する全ての矩形について実行すると,工程 S551において,当該バンド番号「5」について,登録色数B6が256を上回る時点がある。その場合には(S551のYES),パレットに図形色を登録せずに中間コードを登録する処理に切り替わる(S555)。
別の図形オブジェクト例として,グラデーション図形6について見てみると,第6バンドBND6について上記同様の処理が行われる。ただし,図形の画像合成方法G4には,背景色や複数の図形の色の論理演算により色が設定される画像合成方法が設定される。よって,工程S546の判断結果はNOとなり,第6バンドの中間コードバッファIC−BUFに「論理演算」による画像合成方法を設定する画像合成方法設定中間コードが登録され(S547),第6バンドBND6のバンド図形の画像合成方法B4は,初期設定された「上書き」から,図形の画像合成方法G4に設定された画像合成方法に書き換えられる(S527)。すると,工程S549の判断結果はYESとなり,処理中のバンドのパレット登録色数を「257」に設定するとともに(S554),そのバンドに図形中間コードを登録する(S555)。
図13は,イメージ中間コード登録の手順を説明するフローチャート図である。図10の工程S560に対応する。イメージの印刷コマンドの一例としては,上書きのイメージ画像合成方法設定コマンド,イメージ描画位置指定コマンド,イメージ描画コマンドからなるコマンド列が順次図8の工程S300において解析される。イメージ画像合成方法設定コマンドは,「描画コマンド」ではなく(図8のS400のNO),改ページコマンドでもないため(図8のS600のNO),図9の各種設定工程に進む。図9の各種設定工程ではS762の画像合成方法設定に進み,イメージの画像合成方法G5に「上書き」による画像合成方法が設定される。
続くイメージ描画位置指定コマンド,イメージ描画コマンドは図8のS400で「描画コマンド」と判定されるので,中間コード登録工程(図10)に進み,図10の中間コード登録工程ではS560のイメージ中間コード登録工程に進み,以下の手順が実行される。
図13においては,まず,イメージ中間コードが登録されるべき登録先頭バンド番号と登録最終バンド番号を算出する(S560)。次に,登録先頭バンドから登録最終バンドについて順番に,当該バンドのバンドイメージの画像合成方法の判断(S563),当該バンドで使用される色データのパレットへの登録(S564〜568),及び中間コードバッファIC−BUFへのイメージ中間コードの登録(S569)を行う。
バンドのイメージ画像合成方法の判断においては,イメージの画像合成方法G5に格納された画像合成方法が,バンドバッファの背景色や複数の画像オブジェクトとの論理演算により色を指定するものであるかを判断する(S563)。工程S563の判断結果がYESの場合は,工程S570に進み処理中のバンドのパレット登録色数B6を「257」に設定し,そのバンドの中間コードバッファIC−BUFにイメージ中間コードを登録する(S569)。
工程S563の判断結果がNOの場合は,イメージを構成するすべての画素について,パレットの登録色数B6が256以下の間は次の処理を行う。まず,画素の色がそのバンドのパレットにすでに格納された色であるかを判断する(S565)。工程S565の判断結果がYESの場合は,次の画素についてパレットに格納された色であるかを判断する。工程S565の判断結果がNOの場合は,そのバンドのパレットB7に画素で使用される色を新たに登録し(S566),バンドのパレット登録色数B6の値を1つ増やす(S567)。
そして,全ての画素について処理を終えたら,そのバンド中間コードバッファIC−B UFにイメージ中間コードを登録する(S569)。以上の手順を,イメージ中間コードを登録しようとする最終バンドまで繰り返す。なお,パレット登録色数が257以上になった場合、257に設定された場合には,当該バンドについては,後述する画像展開処理において,パレットを用いずに,画素ごとの色データを直接ビットマップ画像データとして展開することになる。この時点で,当該バンドについて,既にパレットが作成されている場合には,そのパレットを削除してもよい。
上述した手順を,図1で示したページ画像PG1の自然画イメージ3の例に当てはめてみる。自然画イメージ3は,第3バンドBND3に位置するので,イメージ中間コード登録先頭バンド番号,登録最終バンド番号ともに「3」(第3バンドBND3)が算出される(S561)。よって,バンド番号「3」についてのみ(S562),工程S563からS569が実行される。
まず,イメージの画像合成方法G5に格納された画像合成方法はバンドバッファの背景色や複数の画像オブジェクトとの論理演算により色を指定するものではなく「上書き」であるので(S563のNO),イメージを構成するすべての画素について,色を判断する。パレット登録色数B6が256以内である間は,画素の色がそのバンドのパレットにすでに格納された色であるかを判断しつつ(S565),登録がされていなければ,第3バンドBND3のパレットB7に色を新たに登録し(S566),バンドのパレット登録数変数B6の値を1つ増やす(S567)。そして,全ての画素について処理を終えたら,第3バンドBND3の中間コードバッファIC−BUFにイメージ中間コードを登録する(S569)。
以上のようにして中間コードバッファIC−BUFには中間コードが登録され,バンドごとのパレットもメモリユニット14に記憶される。
図14は,中間コードバッファIC−BUFに登録された中間コードとパレット登録色数をバンドごとに例示した図である。例として,第1,第3,第5及び第6バンドの中間コードを図示している。第1バンドBND1には,文字列1を構成する「T」,「e」,「x」,「t」の各文字の色を設定する文字色設定中間コードと,それぞれの文字の上部を生成する文字中間コードが登録されており,パレットへは背景色の白色(#ffffff)に各文字の色を加えた合計5色が登録されている。
第3バンドBND3は,図形2の色を設定する図形色設定中間コードと矩形の上部を生成する矩形中間コード,及びカラーの自然画イメージ3を生成するイメージ中間コードが登録されており,パレット登録色数は256超となっている。
第5バンドBND5は,グラデーション図形4を構成する色毎の矩形の各々につき,各々の色を設定する図形色設定中間コードとそれぞれの矩形の下部を生成する矩形中間コードが登録され,同様にグラデーション図形5を構成する色毎の矩形の各々につき,各々の色を設定する図形色設定中間コードとそれぞれの矩形を生成する矩形中間コードが登録されている。パレット登録色数は図12において説明したとおり256超となっている。
第6バンドBND6は,複数の図形の画像合成によるグラデーション図形6の色を生成するために,図形色設定中間コードや排他的論理和による画像合成を設定する中間コードなどが登録されており,バンドで使用される色は中間コードに基づきビットマップ画像データを展開する時点で論理演算により決まるので,パレット登録色数は特定できず256超となっている。
上記のような中間コードに基づきビットマップ画像データを展開する時点で,パレット登録色数に応じたデプスでビットマップメモリ領域であるバンドバッファB−BUFを確保し,パレットを参照するインデックスを有する参照データまたは画素ごとの色データをビットマップ画像データとして展開する。そうすることにより処理全体としてメモリ資源と処理負荷の最適配分を図ることができる。
図15は,ビットマップ画像データ展開のフローチャート図である。図8の工程S800に対応する。展開ユニット18は,ページ画像内のすべてのバンドについて(S810,S812),中間コードを順次ビットマップ画像データに展開しバンドごとに確保したバンドバッファB−BUFに登録する。
まず,各バンドのパレットの登録色数からバンドごとに割り当てるデプスを判断する(S820,S840,S860)。パレットの登録色数が2の場合は(S820のYES),1画素当たり1ビットのデプスを割り当て,工程S821へ進む。パレットの登録色数が256色超の場合は(S840のYES),1画素当たり24ビットのデプスを割り当て,工程S841へ進む。パレットの登録色数が256以下で16色超の場合は(S860のYES),1画素当たり8ビットのデプスを割り当て,工程S861へ進む。そして,パレットの登録色数が16色以下の場合は(S860のNO),1画素当たり4ビットのデプスを割り当て,工程S871へ進む。
上記のようにしてパレットの登録色数により工程が分岐するが,パレットの登録色数が256以下の場合は,同様の工程が実行される。まず,割り当てられたデプスのビットマップメモリを確保し初期化する(S821,S861,S871)。そして確保したビットマップメモリへ中間コードに基づくビットマップ画像データを展開する。つまり,各画素がパレットのインデックス番号を有するように,パレットの色データを参照する参照データを各画素に展開する(S822,S862,S872)。次に,色変換ユニット20がパレットに登録された色をRGB色空間からCMYK色空間へ変換する(S823,S863,S873)。そして,圧縮・解凍ユニット22は展開した参照データを圧縮しメモリユニット14に記憶させる(S824,S864,S874)。
パレットの登録色数が256超の場合は,割り当てられた1画素24ビットのデプスのビットマップメモリを確保し初期化する(S841)。そして確保したビットマップメモリへ中間コードに基づくビットマップ画像データ,つまり画素ごとのRGB各8ビットの色データによるビットマップ画像データを展開する(S842)。次に,色変換ユニット20がパレットに登録された色ではなく,展開された画素ごとの色データをRGB色空間からCMYK色空間へ変換する(S843)。そして,圧縮・解凍ユニット22はCMYKのビットマップ画像データを圧縮しメモリユニット14に記憶させる(S844)。ここで,上記の工程S823,S863,またはS873において,色変換ユニット20が色空間変換するパレットについて図16を用いて説明する。
図16は,色空間変換前後のパレットの対応関係を説明する図である。図16(A)は中間コード登録時に作成されるパレットを例示している。このパレットは,インデックス番号0から(n−1)までの要素数nのパレットであり,インデックスに対応付けられて,RGB階調値が登録されている。このパレットの色空間を変換すると,図16(B)に示すCMYK値を有するパレットとなる。つまり,各インデックス番号に対応する色の値がRGB階調値からCMYK階調値に変換される。例えば,インデックス番号「0」に対応するRGB階調値(R0,G0,B0)は,インデックス番号を変えずに,CMYK階調値(C0,M0,Y0,K0)に変換される。
ここで,色空間変換の前後でインデックス番号は変化しないので,参照データの画素が変換前のRGB階調値による色データを指すインデックスと同じインデックスを変換後に参照すれば,そのRGB階調値に対応するCMYK階調値による色データを参照することができる。従って,画素が有する参照データを変更する必要はない。すなわち,色データを有するパレットを参照する参照データを展開することにより,色空間変換処理はパレットのみを対象とすればよくなる。よって,画素ごとの色データであるビットマップ画像データの全ての画素についての色空間変換処理を行う場合と比べて,処理の負荷を軽減することが可能となる。
図15に戻り,上述の手順を具体的にページ画像PG1のバンドに当てはめて見ると次のとおりとなる。
例えば,第1バンドBND1は5色のパレットを有するので(S860のNO),1画素当たり4ビットのデプスのビットマップメモリが確保されて初期化される(S871)。そして,確保されたビットマップメモリには,図14で示したような中間コードに基づき5色が登録されたパレットの色データを参照する参照データがビットマップ画像データとして展開される(S872)。そして,このパレットの各要素がRGB色空間からCMYK色空間へ変換される(S873)。そして,色空間変換後のパレットにおける同一のインデックス番号を参照する参照データを圧縮し記憶する(S874)。
また,第6バンドBND6について見てみると,パレット登録色数は256色超であるので(S840のYES),1画素当たり24ビットのデプスのビットマップメモリが確保されて初期化される(S841)。そして,確保されたビットマップメモリに図14で示したような中間コードに基づくビットマップ画像データが展開される(S842)。その際,グラデーション図形6の色は論理演算により設定され,展開されたビットマップ画像の各画素は,RGB階調値により表現される色データである。そして,すべての画素の色データについてRGB階調値がCMYK階調値に変換される(S843)。そして,色空間変換後のCMYKビットマップ画像データを圧縮し記憶する(S844)。
なお,以上説明した実施の形態においては,1つのページ画像を6つのバンドに分割した例を用いているが,バンドの数は前記に限られない。また,複数のバンドが共通のパレットを用いることができる。すなわち,複数のバンドにおいて使用される色が同一である場合または重複する色が多い場合などに,パレットを共有することによりパレットを確保するためのメモリ資源を節約することができる。
以上のように,本実施の形態によれば,バンド単位でビットマップ画像データのデータ量を抑制することができ,画像処理全体としてメモリ資源と処理負担の最適配分が可能となる。