図1に、本発明の実施形態に係る画像処理装置の一例を示す。画像処理装置10は、パーソナルコンピュータやワークステーション等のホスト40から印刷データ(図1中の「PDL」)を受け取り、その印刷データをプリンタ50が取り扱うラスター画像データに変換する。
印刷データは、印刷対象の1以上のページの画像を描画するための描画コマンド群がページ記述言語(PDL)で記述されたデータである。ページ記述言語には、例えば、Post Script(登録商標)やPDF等の様々な言語がある。以下、ページ記述言語で記述された印刷データを「PDLデータ」と称することとする。
印刷対象のページの画像は、画像要素であるオブジェクトによって構成されている。オブジェクトは、例えばPDLの1つの描画コマンドによって描画される画像である。PDLデータには、同じ領域に対する描画コマンドが含まれている場合がある。PDLデータには、オブジェクトの属性情報が記述されている。オブジェクトの属性情報は、オブジェクトが有する様々な属性を示す情報である。例えば、オブジェクトの属性には、オブジェクトの色を表現する色空間、オブジェクトの種類、下側オブジェクトに対する当該オブジェクトの重ね方(オーバープリントやノックアウト等)等がある。オブジェクトの種類には、例えば、図形、文字、画像(写真等の連続調イメージ)等の種類がある。また、PDLデータとともに、当該PDLデータに対するプリントオプションを示す情報(例えば、オーバープリントの有無を示す情報)が、ホスト40から画像処理装置10に送られる場合がある。
第1中間データ生成部12は、上述の描画コマンドを含むPDLデータを解釈することにより、PDLデータを第1中間データ(図1中の「ランリスト」)に変換する。第1中間データは、PDLデータとラスター画像データとの中間のデータ形式で表現されるデータである。第1中間データは、一例として、以下に説明する「ランリスト形式の中間データ」である。
ここで、ランリスト形式の中間データについて説明する。PDLで記述されたオブジェクトを、ラスター画像データにおけるスキャンライン(ラスター走査線)に平行な辺とそれに垂直な辺とで囲まれた矩形の微小オブジェクトの集合(リスト)として表現する形式がある。この方式を「ランリスト(Run List)」形式と呼ぶ。ランリスト形式の中間データでは、画像内に含まれるオブジェクトがランオブジェクトの集合(リスト)として表現され、1ページの画像は、ページ内の各ランオブジェクトのランリストの集合として表現される。ランリスト形式では、中間データの個々のランオブジェクトは、そのランオブジェクトの形状及び大きさを示す情報(例えば、ランオブジェクトすなわち矩形の対角線上の2頂点の座標のペア)と、そのランオブジェクトの画素値属性とを含む。画素値属性は、例えば、そのランオブジェクトが文字や図形の場合は画素値(例えば濃度値)であり、連続調イメージの場合はそのランオブジェクトに描画されるイメージ(この例ではイメージ本体は別の場所に記憶される)のアドレス等である。
また、ランリスト形式の中間データには、ランオブジェクトを束ねた1つのオブジェクトの属性情報として、当該オブジェクトの種類(図形、文字、連続調イメージ等)を示す情報や、下側オブジェクトに対する当該オブジェクトの重ね方(オーバープリントやノックアウト等)を示す情報、当該オブジェクトのバウンディングボックス(BBox)を特定する情報等が含まれる。なお、オブジェクトの種類やオーバープリントの有無等の属性情報は、そのオブジェクト内の個々のランオブジェクトのデータに含まれてもよい。バウンディングボックス(BBox)は、オブジェクトを内包する矩形(各辺がページの縦・横方向に平行なもの)の領域である。例えば、PDLデータ内にはオブジェクトの属性情報としてバウンディングボックスを特定する情報(例えば、バウンディングボックスの左上と右下の頂点の座標)が設定されている。このようなPDLデータ内のバウンディングボックスの情報を、中間データ内に取り込めばよい。
ランリスト形式の中間データの形式は一例に過ぎない。第1中間データは、ページ内における各オブジェクト(当該第1中間データの形式によって規定されるオブジェクトであり、PDLデータのオブジェクトと同一でなくてもよい)につき、そのオブジェクトの幾何学的情報(すなわち、オブジェクトの形状、サイズ及びページ内の位置を示す情報)と色値(画素値)を規定するようなものであればよい。第1中間データの形式はPDLよりもラスター形式に近いので、PDLを直接取り扱うよりも、オブジェクト同士の重なり部分の幾何学的情報の計算等が高速で実行される。
第1中間データ生成部12は、PDLデータから、例えば、色版(例えばC,M,Y,Kの各版)毎に分版した第1中間データを生成する。
第1処理部14は、ラスター生成部16と第2中間データ生成部18とを含む。
ラスター生成部16は、第1中間データ(ランリスト形式の中間データ)をラスター画像データ(図1中の「ラスター」)に変換する。この変換の段階において、ラスター生成部16は、第1中間データに対してフラットニング処理を実行する。これにより、フラットニング処理が施された状態のラスター画像データが生成される。フラットニング処理については後で詳述する。
第2中間データ生成部18は、フラットニング処理が施された状態のラスター画像データを、第1中間データとは異なる形式の第2中間データ(図1中の「エッジリストα」)に変換する。第2中間データは、PDLデータとラスター画像データとの中間のデータ形式で表現されるデータである。第2中間データは、一例として、「エッジリスト形式の中間データ」である。第2中間データ(エッジリストα)は、出力処理部30に出力される。エッジリスト形式の中間データについては後で詳述する。
第2処理部20は、第3中間データ生成部22と中間データ処理部24とを含む。
第3中間データ生成部22は、第1中間データ(ランリスト形式の中間データ)を、第1中間データとは異なる形式の第3中間データ(図1中の「エッジリスト」)に変換する。第3中間データは、PDLデータとラスター画像データとの中間のデータ形式で表現されるデータである。第3中間データは、一例として、「エッジリスト形式の中間データ」である。第3中間データ生成部22は、第1中間データに規定されている個々のオブジェクト毎のエッジリストを生成する。
中間データ処理部24は、第3中間データに対してフラットニング処理を実行する。これにより、フラットニング処理が施された状態の第4中間データ(図1中の「エッジリストβ」)が生成される。第4中間データ(エッジリストβ)は、出力処理部30に出力される。
ここで、エッジリスト(Edge List)形式の中間データについて説明する。スキャンライン上に沿って連続しかつ属性が共通する画素群を表すエッジ情報の集合によって、スキャンライン上に配列された画素群を表現する方式がある。この方式を「エッジリスト(Edge List)」形式と呼ぶ。エッジ情報は、具体的には、画像を複数行及び複数列の画素群であるラスター画像データに変換した場合の各画素を、スキャンライン方向に沿って連続しかつ属性が共通するもの毎にまとめたものである。1ページ分のエッジリスト形式の中間データは、ラスター画像データにおけるスキャンライン数分のエッジリストというデータ構造を有する。エッジリスト(エッジ情報列)は、スキャンラインを表現する複数のエッジ(エッジ情報)からなる。例えば、エッジ情報は、エッジが開始する座標、エッジが終了する座標、エッジのタグ情報及び色情報によって構成される。タグ情報は、エッジがどのようなオブジェクトの一部であるかを示す情報であり、図形、文字、連続調イメージ等の種類を示す情報である。色情報は、タグの種別が図形又は文字の場合は、図形又は文字の色値そのものを示し、タグの種別が連続調イメージの場合は、エッジの長さ分の連続調イメージが保存されているメモリのアドレスを示す。すなわち、画像をラスター化した場合に、共通の属性(色情報、オブジェクトの種類)を有してスキャンライン方向に連続する画素群を検出し、それら画素群を特定するデータ(スキャンラインの番号、エッジの開始座標、終了座標)とそれら画素群に共通する属性情報(色情報、オブジェクトの種類)とを対応付けることにより、エッジリスト形式の中間データが生成される。
フラットニング処理(重畳処理)及び合成処理について説明する。フラットニング処理は、複数のオブジェクトが重畳する部分についての色値を、それら個々のオブジェクトの色値から決定する処理である。フラットニングの際の重畳部分の色値の求め方は、それらオブジェクト同士の重なり方(オーバープリント、ノックアウト等)によって決まる。フラットニング処理には、ノックアウトと合成処理がある。ノックアウトの場合、上側オブジェクトの色値が重畳部分の色値として採用され、下側オブジェクトの色値は重畳部分には反映されない。これに対して、オーバープリントの場合、合成処理が行われる。すなわち、上側オブジェクトの色値と下側オブジェクトの色値とが合成され、その合成された色値が、重畳部分の色値として採用される。これにより、上側及び下側オブジェクトの色値が、重畳部分の色値に反映される。重畳部分の色値の計算は、既存の技術と同様でよい。また、ノックアウトが指定されている場合であって、ノックアウトされるオブジェクト(下側オブジェクト)の色版に、ノックアウトするオブジェクト(上側オブジェクト)の色版とは異なる色版が含まれている場合に、重畳部分に対して合成処理が実行される。合成処理の一例として、上側及び下側オブジェクトに対してそれぞれ混合比率を設定しておき、その混合比率に応じて上側及び下側オブジェクトの色値を重み付け加算した結果を、重畳部分の色値として採用してもよい。本実施形態では、ラスター生成部16及び中間データ処理部24は、オーバープリントが指定されている場合、又は、ノックアウトが指定されている場合であってノックアウトされるオブジェクトの色版にノックアウトするオブジェクトの色版とは異なる色版が含まれている場合に、合成処理を実行する。ノックアウトが指定されている場合であって、ノックアウトされるオブジェクトの色版に、ノックアウトするオブジェクトの色版とは異なる色版が含まれていない場合、すなわち、ノックアウトするオブジェクトの色版に、ノックアウトされるオブジェクトの全色版が含まれている場合、ラスター生成部16及び中間データ処理部24は、合成処理を実行しない。この場合、ノックアウトが実行される。
解析部26は、PDLデータを解析することにより、上記の第1中間データ(ランリスト形式の中間データ)の構造を予測する。さらに、解析部26は、第1中間データに基づいて、エッジリスト形式の中間データにおけるエッジ情報に対する合成処理の有無、及び、その合成処理の回数を予測する。例えば、オーバープリントが指定されている場合、又は、ノックアウトが指定されている場合であってノックアウトされるオブジェクトの色版にノックアウトするオブジェクトの色版とは異なる色版が含まれている場合に、合成処理が「有り」であると判定される。それ以外の場合は、合成処理が「無し」であると判定される。また、解析部26は、上側及び下側オブジェクトの重畳部分の大きさに基づいて、合成処理の回数を予測する。例えば、重畳部分におけるスキャンラインの数が、合成処理の回数に対応する。
処理切替部28は、第1中間データに対する処理を切り替える。例えば、上側及び下側オブジェクトの重畳部分のエッジ情報に対して実行されるフラットニング処理が合成処理の場合であって、その合成処理の回数が基準回数以上となる場合、処理切替部28は、第1中間データを第1処理部14に出力する。これにより、第1中間データは、第1処理部14によって処理が施される。一方、合成処理の回数が基準回数未満となる場合、処理切替部28は、第1中間データを第2処理部20に出力する。これにより、第1中間データは、第2処理部20によって処理が施される。基準回数は予め決定された回数であり、ユーザによって変更されてもよい。
出力処理部30は、第2中間データ(エッジリストα)又は第4中間データ(エッジリストβ)をプリンタ50に出力する。このとき、出力処理部30は、第2中間データ又は第4中間データに含まれるエッジ情報がコマンド化されたデータを生成し、そのデータをプリンタ50に出力してもよい。
プリンタ50では、第2中間データ又は第4中間データがラスター画像データ(例えばビットマップ形式の画像データ)に変換される。または、プリンタ50では、エッジ情報がコマンド化されたデータからラスター画像データが生成される。ラスター画像データへの変換は、既存の技術と同じ技術を用いればよい。中間データがエッジリスト形式で規定されている場合、ページのエッジリストに含まれるエッジ情報に従って、画像をビットマップ上に描画していけばよい。プリンタ50は、ラスター画像データに従って印刷機構を制御することにより、ラスター画像データに応じた画像を、用紙等の記録媒体上に印刷する。印刷機構は、例えば、電子写真方式やインクジェット方式等の既存のプリントエンジンによって構成されている。
図2に、ランリスト形式の中間データの一例を示す。この中間データは、1ページ分の中間データである。この中間データには、一例として、オブジェクトA,B,C,D,・・・が規定されている。
オブジェクトA(Image Obj)の種類は、写真等の連続調イメージである。オブジェクトAの属性として、オブジェクトAの幅(Width)、高さ(Height)、バウンディングボックス(Bbox)、オブジェクトの重ね方(オーバープリントの有無、又は、ノックアウト)、ページ内におけるオブジェクトAの位置等が規定されている。オブジェクトAについては、オーバープリントが「有り」(true)となっている。
オブジェクトB(Text Obj)の種類は、文字である。オブジェクトBの属性として、オブジェクトBの長さ(Length)、文字列(String)、バウンディングボックス(Bbox)、オブジェクトBの重ね方(オーバープリントの有無、又は、ノックアウト)、ページ内におけるオブジェクトBの位置等が規定されている。オブジェクトBについては、オーバープリントが「有り」(true)となっている。
オブジェクトC(Line Art Obj)の種類は、図形(線図)である。オブジェクトCの属性として、オブジェクトCの長さ(Length)、バウンディングボックス(Bbox)、色(Color)、オブジェクトCの重ね方(オーバープリントの有無、又は、ノックアウト)、ページ内におけるオブジェクトCの位置等が規定されている。図形のオブジェクトは、ラスター画像データにおいて、属性として指定されている色(Color)で塗り潰される。オブジェクトCについては、オーバープリントが「無し」(false)となっている。
オブジェクトD(Smooth Shade Obj)の種類は、影付きの図形である。オブジェクトDの属性として、オブジェクトの幅(Width)、高さ(Height)、バウンディングボックス(Bbox)、オブジェクトDの重ね方(オーバープリントの有無、又は、ノックアウト)、ページ内におけるオブジェクトDの位置等が規定されている。オブジェクトDについては、オーバープリントが「有り」(true)となっている。
図3に、エッジリスト形式の中間データの一例を示す。図3(a)には、1ページ分のラスター画像データが示されている。図3(b)には、そのラスター画像データに対応するエッジリスト形式の中間データが示されている。ラスター画像データは、一例として、スキャンライン方向(X方向)に沿ったスキャンライン#1〜#N(Scanline#1〜#N)上の画素群によって構成されている。スキャンライン#1は、エッジ#1−1(Edge#1−1)〜#1−nによって構成されている。各エッジには、共通の属性を有してスキャンライン#1に沿って連続する画素群を示す情報が含まれている。例えば、エッジ#1−1は、エッジ#1−1の開始座標、終了座標、エッジ#1−1に含まれる画素群についてのタグ情報(オブジェクトの種類)、及び、色情報によって構成されている。他のエッジ及びスキャンラインについても同様である。図3(b)に示されているエッジリスト形式の中間データは、スキャンライン#1〜#Nに含まれる複数のエッジによって構成されている。なお、オブジェクトが存在しない部分については、エッジは存在しない。例えば、スキャンライン#3にはオブジェクトが存在しないので、その部分のエッジはエッジリストに規定されていない。
図4を参照して、エッジリスト形式の中間データに対するフラットニング処理について説明する。図4(a)は、合成処理を説明するための図である。図4(b)は、ノックアウトを説明するための図である。エッジ1(Edge1)が下側オブジェクトの一部であり、エッジ2(Edge2)が上側オブジェクトの一部であるとする。図中のX方向はスキャンライン方向である。エッジリスト形式の中間データに対するフラットニング処理は、中間データ処理部24によって実行される。
合成処理を行う場合、図4(a)に示されているように、中間データ処理部24は、エッジ1,2を、重畳部分と重畳していない部分(非重畳部分)とに分割する。例えば、中間データ処理部24は、エッジ1から非重畳部分のエッジ1aを分割し、エッジ2から非重畳部分のエッジ2aを分割する。また、中間データ処理部24は、エッジ1の重畳部分から新しいエッジ(ラスター画像データ)を生成し、その新しいエッジの色値に、エッジ2の重畳部分の色値を合成する。このとき、重畳部分の色値を正確に計算するために、中間データ処理部24は、エッジ2の重畳部分の解像度をプリンタ50の解像度に合わせながら、1画素ずつ重畳部分の色値を合成する。合成処理後のエッジは、エッジ1a(Edge1a)、エッジ3(Edge3)及びエッジ2a(Edge2a)によって構成される。
ノックアウトを行う場合、図4(b)に示されているように、中間データ処理部24は、下側オブジェクトを構成するエッジ1から非重畳部分のエッジ1aを分割する。上側オブジェクトを構成するエッジ2については、そのまま使用される。これにより、ノックアウト後のエッジは、エッジ1a(Edge1a)及びエッジ2(Edge2)によって構成される。
次に、図5及び図6を参照して、合成処理の有無の判定方法について説明する。この判定は解析部26によって実行される。
例えば図5に示すように、オブジェクトA,Bが重畳しているものとする。オーバープリントの属性が有効(オーバープリントが「有り」に設定されている)の場合、又は、プリントオプションとしてオーバープリントが指定されている場合、合成処理が必要である(合成処理が「有り」)と判定される。PDLデータには、ページ内の各オブジェクトの幾何学的情報が含まれているので、その幾何学的情報同士を比較することにより、重畳している複数のオブジェクトが検出される。例えば、オブジェクトが矩形の場合、各矩形オブジェクトの左上隅と右下隅の2頂点の座標から、重畳している複数の矩形オブジェクトが検出される。また、バウンディングボックス(Bbox)を利用して重畳部分を検出してもよい。
また、ノックアウトされるオブジェクト(下側オブジェクト)の色版に、ノックアウトするオブジェクト(上側オブジェクト)の色版とは異なる色版が含まれる場合、合成処理が必要であると判定される。図6を参照して、この判定処理について説明する。エッジについては、有効な色版が指定される場合がある。例えば、C,M,Y,Kの各色版のうち、K版のみを有効とした場合、C,M,Yの各色版には不定値が用いられる。例えば、エッジ1(Edge1)については、K版のみが有効であり、エッジ2(Edge2)については、C,M,Yの各色版が有効であるとする。例えば、エッジ1のK版の値が「50」であるとすると、エッジ1の各色版の値(C,M,Y,K)は(0,0,0,50)で表される。また、エッジ2のC版の値が「30」であり、M版の値が「20」であり、Y版の値が「60」の場合、エッジ2の各色版の値(C,M,Y,K)は(30,20,60,0)で表される。このとき、エッジ1の透過率が0(ゼロ)に指定され、エッジ1によってエッジ2をノックアウトする場合であっても、ノックアウトされるのはエッジ2のK版のみである。エッジ2のC,M,Yの各版はエッジ1によってノックアウトされない。従って、エッジ1,2の重畳部分のエッジ3(Edge3)においては、K版の値にエッジ1のK版の値が用いられるが、C,M,Yの各版の値には、エッジ1ではノックアウトされないエッジ2のC,M,Yの各色版の値が用いられることになる。このように、一方のエッジ1によって他方のエッジ2が完全にノックアウトされない場合には、エッジ1,2に対して合成処理を実行することにより、エッジ1,2の値から重畳部分の値を計算する必要がある。図6に示す例では、重畳部分のエッジ3の各色版の値(C,M,Y,K)は(30,20,60,50)となる。このように、ノックアウトされるオブジェクトの色版に、ノックアウトするオブジェクトの色版とは異なる色版が含まれる場合、合成処理が必要となる。一方、エッジ1において有効な色版がC,M,Kであり、エッジ2において有効な色版がC,Mである場合、エッジ1によってエッジ2が完全にノックアウトされるので、合成処理は不要である。この場合、ノックアウトが行われる。また、エッジ1において有効な色版がKであり、エッジ2において有効な色版がKである場合も、エッジ1によってエッジ2が完全にノックアウトされるので、合成処理は不要である。このように、ノックアウトするオブジェクト(エッジ1)の色版に、ノックアウトされるオブジェクト(エッジ2)の全色版が含まれている場合、合成処理は不要である。
次に、図7を参照して、合成処理の回数について説明する。合成処理の回数は、解析部26によって特定される。エッジに対する合成処理はスキャンライン毎に行われる。従って、合成処理が行われるスキャンラインの数が合成処理の数に対応する。合成処理の対象となっている部分が、より多くのスキャンラインにかけて存在するほど、合成処理の回数は増大する。解析部26は、合成処理が行われる部分(合成部分)の大きさに基づいて、合成処理の回数を特定する。具体的には、スキャンライン方向(X方向)に直交する方向をY方向とすると、解析部26は、合成部分の高さ(Y方向の長さ)に基づいて合成処理の回数を特定する。合成部分を交差するスキャンラインの数が合成処理の回数に対応するため、合成部分のY方向の長さが、合成処理の回数に対応する。それ故、Y方向の長さ(スキャンラインの数)に基づいて合成処理の回数が特定される。
このとき、解析部26は、画像の回転角度を考慮に入れて合成処理の回数を特定する。例えば、画像の回転が無い、又は、180度の回転が指定されている場合、合成部分は、回転無し又は180度回転した状態で描画される。図7(a)に、この状態の合成部分100を示す。回転無し又は180度回転後の合成部分100のY方向は、回転無し又は180度回転前の合成部分100のY方向と一致する。すなわち、回転無し又は180度回転前の合成部分100のY方向が、回転無し又は180度回転後のY方向に該当する。従って、解析部26は、回転無し又は180度回転前の合成部分100のY方向の長さを求め、その長さから合成処理の回数を特定する。
一方、90度又は270度回転が指定されている場合、合成部分は、90度又は270度回転した状態で描画される。図7(b)に、この状態の合成部分110を示す。90度又は270度回転後の合成部分110のY方向は、回転前の合成部分110のスキャンライン方向(X方向)に相当する。すなわち、90度又は270度回転前の合成部分110のスキャンライン方向(X方向)が、回転後の合成部分110のY方向に該当する。従って、解析部26は、回転前の合成部分110のスキャンライン方向(X方向)の長さを求め、その長さから合成処理の回数を特定する。
合成部分100,110の面積は同じであるが、合成部分100と合成部分110とでは、それぞれの部分を交差するスキャンラインの数が異なる。合成部分100を交差するスキャンラインの数Nは、合成部分110を交差するスキャンラインの数Mよりも多い。従って、合成部分100に対する合成処理の回数は、合成部分110に対する合成処理の回数よりも多くなる。
以上に説明したように、PDLデータからランリスト形式の中間データが生成され、そのランリスト形式の中間データからオブジェクト毎のエッジリスト形式の中間データが生成される。従って、PDLデータの構造からランリスト形式の中間データの構造が予測され、さらに、ランリスト形式の中間データからオブジェクト毎のエッジリスト形式の中間データの構造が予測される。このようにエッジリスト形式の中間データの構造が予測されるので、そのエッジリスト形式の中間データから、エッジ情報に対する合成処理の有無、及び、その合成処理の回数が予測される。なお、この予測は解析部26が行わずに、処理切替部28が行ってもよい。この場合、解析部26を画像処理装置10に設けなくてもよい。
次に、図8に示されているフローチャートを参照して、画像処理装置10による処理について説明する。ホスト40から画像処理装置10にPDLデータが送られると、解析部26は、そのPDLデータを解析することにより、エッジ情報に対する合成処理の有無、及び、その合成処理の回数を予測する(S01)。第1中間データ生成部12は、PDLデータを、ランリスト形式の中間データ(第1中間データ)に変換する(S02)。処理切替部28は、第1中間データ生成部12から、1ページ分の第1中間データ(ランリスト)を取得する(S03)。上側及び下側オブジェクトの重畳部分のエッジ情報に対するフラットニング処理が合成処理の場合であって、その合成処理の回数が基準回数以上となる場合(S04,Yes)、処理切替部28は、第1中間データを第1処理部14に出力する。この場合、処理はステップS05に移行する。一方、合成処理の回数が基準回数未満の場合(S04,No)、処理切替部28は、第1中間データを第2処理部20に出力する。この場合、処理はステップS07に移行する。また、合成処理が行われない場合も、処理切替部28は、第1中間データを第2処理部20に出力する。この場合も、処理はステップS07に移行する。
なお、ステップS04において、処理切替部28は、合成処理の回数に相当する合成部分の長さに基づいて、処理の切り替えを行ってもよい。例えば、画像の回転が無い、又は、180度の回転が指定されている場合であって、回転無し又は180度回転前の合成部分のY方向(スキャンライン方向に直交する方向)の長さが、基準長さ以上となる場合、処理切替部28は、第1中間データを第1処理部14に出力する。この場合、処理はステップS05に移行する。回転無し又は180度回転前の合成部分のY方向の長さが、基準長さ未満の場合、処理切替部28は、第1中間データを第2処理部20に出力する。この場合、処理はステップS07に移行する。また、90度又は270度回転が指定されている場合であって、90度又は270度回転前の合成部分のスキャンライン方向(X方向)の長さが、基準長さ以上となる場合、処理切替部28は、第1中間データを第1処理部14に出力する。この場合、処理はステップS05に移行する。90度又は270度回転前の合成部分のスキャンライン方向の長さが、基準長さ未満の場合、処理切替部28は、第1中間データを第2処理部20に出力する。この場合、処理はステップS07に移行する。なお、基準長さは予め決定された長さであり、ユーザによって変更されてもよい。
合成処理の回数が基準回数以上となる場合(S04,Yes)、ラスター生成部16は、第1中間データ(ランリスト形式の中間データ)からラスター画像データを生成する(S05)。ラスター生成部16は、ページのランリストの先頭から順に、各ランオブジェクトをビットマップ上に描画する。これにより、ラスター画像データが生成される。この生成の段階において、複数のオブジェクトにおいて重畳部分が存在する場合、ラスター生成部16は、第1中間データに対してフラットニング処理(合成処理、ノックアウト)を実行する。これにより、フラットニング処理が施された状態のラスター画像データが生成される。例えば、オーバープリントが指定されている場合、ラスター生成部16は、合成処理により、上側及び下側オブジェクトの重畳部分の色値を計算する。すなわち、ラスター生成部16は、上側及び下側オブジェクトの色値を合成することにより、重畳部分の色値を計算する。また、ノックアウトされるオブジェクトの色版に、ノックアウトするオブジェクトの色版とは異なる色版が含まれている場合、ラスター生成部16は、合成処理により、重畳部分の色を計算する。一方、ノックアウトが指定されている場合であって、ノックアウトされるオブジェクトの色版に、ノックアウトするオブジェクトの色版とは異なる色版が含まれていない場合、ラスター生成部16は、合成処理を実行しない。この場合、ラスター生成部16は、ノックアウトされるオブジェクトの色値を完全に無視し、重畳部分の色値として、ノックアウトするオブジェクトの色値を採用する。
そして、第2中間データ生成部18は、ラスター画像データから第2中間データ(エッジリスト形式の中間データ)を生成する(S06)。上記のように、ラスター画像データにはフラットニング処理が反映されているので、ステップS06の処理により、フラットニング処理が反映された第2中間データが生成される。
合成処理の回数が基準回数未満となる場合(S04,No)、第3中間データ生成部22は、第1中間データ(ランリスト形式の中間データ)から第3中間データ(エッジリスト形式の中間データ)を生成する(S07)。このとき、第3中間データ生成部22は、第1中間データに規定されている個々のオブジェクト毎のエッジリストを生成する。
そして、中間データ処理部24は、第3中間データに規定されている複数のオブジェクトの重畳部分に対してフラットニング処理(合成処理、ノックアウト)を実行する(S08)。これにより、フラットニング処理が施された状態の第4中間データが生成される。例えば図4を参照して説明したように、エッジリスト形式の中間データに対してフラットニング処理が実行される。例えば、オーバープリントが指定されている場合、又は、ノックアウトされるオブジェクトの色版にノックアウトするオブジェクトの色版とは異なる色版が含まれている場合、図4(a)に示すように、合成処理が実行される。一方、ノックアウトされるオブジェクトの色版にノックアウトするオブジェクトの色版とは異なる色版が含まれていない場合、図4(b)に示すように、ノックアウトが実行される。
そして、全ページについてステップS03〜S08の処理が完了した場合(S09、Yes)、エッジリスト生成処理は終了する。一方、ステップS03〜S08の処理が実行されていないページが存在する場合(S09,No)、処理はステップS03に戻る。
以上のように、合成処理の回数が基準回数以上の場合、第1中間データ(ランリスト形式の中間データ)からラスター画像データが生成され、そのラスター画像データから第2中間データ(エッジリスト形式の中間データ)が生成される。第1中間データからラスター画像データを生成する段階でフラットニング処理が施されるので、フラットニング処理が反映されたエッジリスト形式の中間データが生成される。一方、合成処理の回数が基準回数未満の場合、第1中間データ(ランリスト形式の中間データ)から第3中間データ(エッジリスト形式の中間データ)が生成され、第3中間データに対してフラットニング処理が実行される。これにより、フラットニング処理が反映されたエッジリスト形式の中間データ(第4中間データ)が生成される。このように、本実施形態では、第1処理部14又は第2処理部20によって、フラットニング処理が反映されたエッジリスト形式の中間データが生成される。
そして、出力処理部30は、フラットニング処理が反映されたエッジリスト形式の中間データ(第2中間データ又は第4中間データ)を、プリンタ50に出力する。プリンタ50では、その中間データからラスター画像データが生成され、そのラスター画像データに応じた画像が用紙に印刷される。または、出力処理部30は、第2中間データ又は第4中間データから、エッジ情報がコマンド化されたデータを生成し、そのデータをプリンタ50に出力してもよい。この場合、プリンタ50では、そのデータからラスター画像データが生成されて印刷が行われる。
エッジ情報に対する合成処理では、スキャンライン毎に合成処理が実行される。従って、合成処理の対象となっているスキャンラインの数が多いほど、合成処理の回数が多くなり、その結果、処理時間が増大する。これに対処するために、本実施形態では、合成処理の回数が基準回数以上となる場合に、ランリスト形式の中間データ(第1中間データ)からラスター画像データを生成する段階で合成処理を実行し、そのラスター画像データからエッジリスト形式の中間データ(第2中間データ)を生成する。これにより、エッジ情報同士の合成処理が不要となる。すなわち、スキャンライン毎に合成処理を実行せずに済む。そのため、エッジ情報に対して合成処理を実行する場合と比べて、フラットニング処理が反映されたエッジリスト形式の中間データ(第2中間データ)を生成するための処理時間が短縮される。
一方、エッジ情報に対する合成処理の回数が基準回数未満の場合、エッジ情報に対して合成処理を実行したとしても、合成処理の回数が基準回数以上の場合と比べて、処理時間の増大が抑制される。従って、ランリスト形式の中間データ(第1中間データ)からエッジリスト形式の中間データ(第3中間データ)を直接生成し、そのエッジリスト形式の中間データに対して合成処理を実行する。これにより、ランリスト形式の中間データからラスター画像データを一度生成し、そのラスター画像データからエッジリスト形式の中間データを生成する場合と比べて、フラットニング処理が反映されたエッジリスト形式の中間データ(第4中間データ)を生成するための処理時間が短縮される。
以上のように、本実施形態では、エッジリスト形式の中間データに対する合成処理の回数に応じて、第1処理部14又は第2処理部20のいずれかによって、フラットニング処理が反映されたエッジリスト形式の中間データを生成する。これにより、合成処理の回数にかかわらず、一律に、エッジリスト形式の中間データに対して合成処理を実行する場合、又は、ランリスト形式の中間データからラスター画像データを生成してラスター画像データからエッジリスト形式の中間データを生成する場合と比べて、フラットニング処理が反映されたエッジリスト形式の中間データを生成するための処理時間が短縮される。
本実施形態によると、ラスター画像データを画像処理装置10からプリンタ50に出力する場合と比べて、以下に示す利点がある。エッジリスト形式の中間データは、ラスター画像データよりもデータ量が少ない。そのため、エッジリスト形式の中間データをプリンタ50に出力することにより、ラスター画像データをプリンタ50に出力する場合と比べて、画像処理装置10からプリンタ50へのデータ転送に要する時間が短縮される。例えば、データ転送時間が増大した場合、プリンタ50による印刷に対して、画像処理装置10からのデータ供給が間に合わない事態が生じることがある。本実施形態によると、ラスター画像データを出力する場合と比べてデータ転送時間が短縮されるので、上記事態の発生が防止又は軽減される。また、フラットニング処理済みのエッジリスト形式の中間データが出力されるので、プリンタ50にてフラットニング処理を実行せずに済む。
また、エッジリスト形式の中間データは、ランリスト形式の中間データよりも、ラスター画像データの形式に近く、色処理やトナー制限処理等の処理に適している。従って、エッジリスト形式の中間データを生成することにより、中間データの段階で色処理やトナー制限処理等の処理が実行され得る。ラスター画像データに対して色処理等を実行するよりも、よりデータ量が少ないエッジリスト形式の中間データを対象にして色処理等が実行される。
また、プリンタ50にてラスター画像データに色処理等を実行した場合、プリンタ50の負荷が増大し、処理時間が増大することがある。これに対処するには、画像処理装置10にてエッジリスト形式の中間データを生成しておき、そのエッジリスト形式の画像データに対して色処理等を実行すればよい。プリンタ50にて色処理等を実行せずに済むため、プリンタ50の負荷が軽減される。
上述した画像処理装置10は、一例としてハードウェア資源とソフトウェアとの協働により実現される。具体的には、画像処理装置10は、図示しないCPU等のプロセッサを備えている。当該プロセッサが、図示しない記憶装置に記憶されたプログラムを読み出して実行することにより、画像処理装置10の各部の機能が実現される。上記プログラムは、CDやDVD等の記憶媒体を経由して、又は、ネットワーク等の通信経路を経由して、記憶装置に記憶される。または、画像処理装置10の各部は、回路等のハードウェア資源により実現されてもよい。