説明

画像処理装置及びプログラム

【課題】透過処理によるメモリの消費及び演算量の少なくとも一方を抑制する。
【解決手段】印刷装置1は、Destデータ11の上にSrcデータ12を重ねて描画する場合に透過処理を施す処理を行うCPU2を備え、CPU2は、バンド単位でDestデータ11とSrcデータ12の重複領域を検出し、検出した重複領域を示すアルファデータ13を生成してRAM3に格納し、アルファデータの示す領域に対して透過演算処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【0002】
近年、XPS(XML Paper Specification)データやPDF(Portable Document Format)データ等の電子文書フォーマットによるデータをダイレクトプリント可能な画像形成装置が増えてきている。また、これらのデータによる描画機能もより複雑になってきており、その描画機能の1つとして、トランスペアレンシー(Transparency)機能がある。
【0003】
図9は、トランスペアレンシー機能によるビットマップデータの生成を示す説明図である。
トランスペアレンシー機能とは、図9に示すように、背景となるDestinationデータ(以下、Destデータという。)に対し、新規に追加するSourceデータ(以下、Srcデータという。)を、不透明度を示すアルファデータに応じて透過処理する機能をいう。
【0004】
図10は、透過処理を行うために必要なリソースを示す説明図である。
透過処理を行う場合には、図10に示すように、Destデータ、Srcデータ、アルファデータ、透過処理結果データを全てメモリ上に保持する必要があるため、膨大なメモリ量が必要となる。カラーの画像形成装置の場合、Destデータ、Srcデータ、透過処理結果データについては、CMYK4プレーン分あるため、
{(W×H×4)+(W×H×4)+(W×H)+(W×H×4)}[Byte]
のメモリ量がさらに必要となる。
【0005】
例えば、図10に示すように、用紙サイズがA4の600dpi(dot per inch)の印刷データ(幅:4960画素、ライン数:7000ライン)を、ライン数256ラインのバンド単位で処理する場合には、1バンド分のビットマップデータを保持するために必要なメモリ量は、CMYK4プレーン分で、
(4960×256×4)[Byte]=4.8[MByte]
となる。
【0006】
透過処理を行う場合には、図12に示すように、さらに、
{Destデータ分(4960×256×4)}[Byte]
+{Srcデータ分(4960×256×4)}[Byte]
+{アルファデータ分(4960×256)}[Byte]
+{透過処理結果データ分(4960×256×4)}[Byte]
=15.7[MByte]
のメモリ量が必要となる。
【0007】
また、透過処理を施す為の演算処理(以下「透過演算処理」と記載する)を1ページの全画素に対して施す場合、演算量が膨大となってビットマップデータを出力するスループットが著しく低下する。
【0008】
そこで、透過処理によるメモリの消費及び演算量を抑制する技術が提案されている。透過処理によるメモリの消費及び演算量を抑制する技術として、例えば、透過処理が必要か否かの判定を印刷データの全描画領域に対して行い、透過処理が必要と判定された場合には透過処理を行い、透過処理が不要と判定された場合には透過処理を行わずにROP処理(ROP:Raster Operation)を行う画像形成装置がある(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2005−182692号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、特許文献1に記載の画像形成装置では、透過処理によるメモリの消費及び演算量を十分に抑制することができなかった。なぜならば、特許文献1に記載の画像形成装置は、透過処理が不要と判定された場合に透過処理を行わないことでメモリの消費及び演算量を抑制するものであり、透過処理が必要と判定された場合には一切メモリの消費及び演算量を抑制することができなかったためである。
【0011】
本発明の課題は、透過処理によるメモリの消費及び演算量の少なくとも一方を抑制することである。
【課題を解決するための手段】
【0012】
請求項1に記載の発明は、一のオブジェクトの上に他のオブジェクトを重ねて描画する場合に前記他のオブジェクトに透過処理を施す画像処理装置であって、描画単位となる領域のうち前記一のオブジェクトと前記他のオブジェクトとの重複領域を検出し、検出した前記重複領域を示すデータを生成してメモリに格納し、前記重複領域を示すデータの領域に対してのみ前記透過処理を行って前記一のオブジェクトと前記他のオブジェクトとを重ねて描画する制御部を備えることを特徴とする。
【0013】
請求項2に記載の発明は、請求項1に記載の画像処理装置であって、前記重複領域を示すデータは、前記透過処理における前記他のオブジェクトの不透明度を示すパラメータを含み、前記制御部は、前記重複領域を示すデータに含まれる前記不透明度に基づいて前記透過処理を行うことを特徴とする。
【0014】
請求項3に記載の発明は、請求項2に記載の画像処理装置であって、前記制御部は、前記描画単位となる領域のうち前記重複領域のみについて前記他のオブジェクトの不透明度を示すパラメータを前記メモリに格納することを特徴とする。
【0015】
請求項4に記載の発明は、請求項1乃至3の何れか一項に記載の画像処理装置であって、前記重複領域を示すデータは、前記描画単位において前記一のオブジェクトと前記他のオブジェクトの重複領域を内包する最小限の矩形領域を示すデータであることを特徴とする。
【0016】
請求項5に記載の発明は、請求項4に記載の画像処理装置であって、前記制御部は、前記描画単位において前記一のオブジェクトと前記他のオブジェクトとの重複の有無を検出し、前記一のオブジェクトと前記他のオブジェクトとの重複がある場合、前記重複領域を内包する最小限の矩形領域の四角のうちいずれかの頂点の位置及び前記重複領域を内包する最小限の矩形領域の直行する二辺のそれぞれの長さを算出し、算出された前記頂点の位置及び前記二辺のそれぞれの長さに基づいて前記重複領域を示すデータを生成し、生成した前記重複領域を示すデータを前記メモリに格納することを特徴とする。
【0017】
請求項6に記載の発明によるプログラムは、一のオブジェクトの上に他のオブジェクトを重ねて描画する場合に前記他のオブジェクトに透過処理を施す画像処理装置のコンピュータを、描画単位となる領域のうち前記一のオブジェクトと前記他のオブジェクトとの重複領域を検出する手段、検出した前記重複領域を示すデータを生成してメモリに格納する手段、前記重複領域を示すデータの領域に対してのみ前記透過処理を行って前記一のオブジェクトと前記他のオブジェクトとを重ねて描画する手段、として機能させることを特徴とする。
【0018】
請求項7に記載の発明は、請求項6に記載のプログラムであって、前記重複領域を示すデータは、前記透過処理における前記他のオブジェクトの不透明度を示すパラメータを含み、前記コンピュータを、前記重複領域を示すデータに含まれる前記不透明度に基づいて前記透過処理を行う手段、として機能させることを特徴とする。
【0019】
請求項8に記載の発明は、請求項7に記載のプログラムであって、前記描画単位となる領域のうち前記重複領域のみについて前記他のオブジェクトの不透明度を示すパラメータを前記メモリに格納することを特徴とする。
【0020】
請求項9に記載の発明は、請求項6及至8の何れか一項に記載のプログラムであって、前記重複領域を示すデータは、前記描画単位において前記一のオブジェクトと前記他のオブジェクトの重複領域を内包する最小限の矩形領域を示すデータであることを特徴とする。
【0021】
請求項10に記載の発明は、請求項9に記載のプログラムであって、前記コンピュータを、前記描画単位において前記一のオブジェクトと前記他のオブジェクトとの重複の有無を検出する手段、前記一のオブジェクトと前記他のオブジェクトとの重複がある場合、前記重複領域を内包する最小限の矩形領域の四角のうちいずれかの頂点の位置及び前記重複領域を内包する最小限の矩形領域の直行する二辺のそれぞれの長さを算出する手段、算出された前記頂点の位置及び前記二辺のそれぞれの長さに基づいて前記重複領域を示すデータを生成する手段、生成した前記重複領域を示すデータを前記メモリに格納する手段、として機能させることを特徴とする。
【発明の効果】
【0022】
本発明によれば、透過処理によるメモリの消費及び演算量の少なくとも一方を抑制することができる。
【図面の簡単な説明】
【0023】
【図1】本発明の一実施形態である印刷装置のブロック図である。
【図2】透過処理を伴う描画の進行例を示す説明図である。
【図3】アルファデータを生成する範囲となる矩形領域の一例を示す説明図である。
【図4】アルファデータの構成の一例を示す説明図である。
【図5】アルファデータとラスタライズ処理におけるバンドとの関係を示す説明図である。
【図6】印刷装置が行う処理全体の流れを示すフローチャートである。
【図7】図6のステップS2に示す解析処理の流れを示すフローチャートである。
【図8】図6のステップS3に示すラスタライズ処理の流れを示すフローチャートである。
【図9】トランスペアレンシー機能によるビットマップデータの生成を示す説明図である。
【図10】透過処理を行うために必要なリソースを示す説明図である。
【発明を実施するための形態】
【0024】
以下、図を参照して本発明の実施の形態の例を詳細に説明する。
図1は、本発明の一実施形態である印刷装置1のブロック図である。
印刷装置1は、CPU2、RAM3、ROM4、ストレージデバイス5、入力インタフェース(I/F)6及び画像印刷部7を備える。CPU2、RAM3、ROM4、ストレージデバイス5、入力I/F6及び画像印刷部7は、バス8により接続されている。
【0025】
CPU2は、ROM4やストレージデバイス5から処理内容に応じたプログラム、データ等を読み出して実行処理し、印刷装置1の動作に関する各種の処理及び印刷装置1の各部の動作制御を行う。
【0026】
RAM3は、CPU2によって読み出されたプログラム、データ等及びCPU2の処理によって生じたパラメータ等を記憶する一次記憶装置であり、所謂メモリである。
【0027】
ROM4は、CPU2によって読み出されるプログラム、データ等を記憶する記憶装置である。本実施形態のROM4は、記憶するデータの書き換えが不可能な不揮発メモリであるが、ROM4の代わりに記憶するデータの書き換えを可能とする不揮発性の記憶装置を用いても良い。
【0028】
ストレージデバイス5は、CPU2によって読み出されるプログラム、データ等を記憶する記憶装置である。ストレージデバイス5は、記憶内容を書き換えることができる記憶装置であり、印刷装置1の設定に関するパラメータ等、状況に応じて変更、更新されることがあるデータを記憶する機能も有する。本実施形態のストレージデバイス5は、ハードディスクドライブ(Hard Disk Drive、HDD)であるが、記憶内容を書き換え可能な不揮発性の記憶装置であればその種類を問わない。
【0029】
入力I/F6は、外部の機器からの入力を受け付けるインタフェースである。入力I/F6には、回線102を介して外部入力装置101が接続される。外部入力装置101は、入力I/F6を介して印刷装置1に対してプリントジョブ等のデータを入力する。本実施形態では、外部入力装置101としてPCを用いるが、PCに限らず、少なくともプリントジョブを印刷装置1に対して入力可能な機器であれば何でも良い。入力I/F6は、外部入力装置101からプリントジョブ等のデータを受信することができるインタフェースならばその形態を問わない。例えば、USBやIEEE1394、その他のバスインタフェースでも良いし、イーサネット(登録商標)やBluetooth(登録商標)、その他のネットワークインタフェースでも良い。回線102は、有線/無線を問わない。
【0030】
入力I/F6を介し、外部入力装置101から印刷装置1に対してプリントジョブの入力が行われると、CPU2は、プリントジョブに基づいて解析処理を行い、中間言語データ(DLデータ)を生成する。そして、CPU2は、DLデータに基づいてラスタライズ処理を行い、印刷データ(ビットマップデータ)を生成し、画像印刷部7へビットマップデータを出力する。
【0031】
画像印刷部7は、ビットマップデータに基づいて印刷媒体(例えば紙等)に対して画像を形成するエンジンとして機能する。以下、画像印刷部7による印刷媒体に対する画像の形成を単に「印刷」と記載する。
【0032】
印刷装置1は、CPU2、RAM3、ROM4の協働により、入力されたプリントジョブに基づいて画像印刷部7へ印刷データを出力する画像処理装置として機能する。
【0033】
次に、本実施形態におけるラスタライズ処理について説明する。なお、本実施形態における解析処理は、従来のプリンタの解析処理と同様であるのでその詳細を省略する。
【0034】
図2は、透過処理を伴う描画の進行例を示す説明図である。
CPU2は、プリントジョブに含まれるページ記述言語(Page Description Language、PDL)に基づいてDLデータを生成する。ラスタライズ処理では、DLデータに基づいて画像印刷部7に出力するためのビットマップデータを生成する。
【0035】
1ページ分の印刷内容に対応するDLデータは複数生成される。DLデータは、オブジェクトを描画するための情報を含んでいる。DLデータに基づいて描画されるオブジェクトは、例えば図2に示すDestデータ11、14及びSrcデータ12、15等のような矩形、円形、三角形その他のオブジェクトであり、オブジェクトの形状はプリントジョブに含まれるPDLデータに基づいて矩形、円形、三角形以外にも様々な形をとりうる。
【0036】
ビットマップデータは、DLデータに基づく各オブジェクトを組み合わせて生成される。オブジェクトの組み合わせにおいて、図2に示すように、CPU2は、ビットマップデータ17の生成において一のオブジェクトの上に他のオブジェクトを重ねて描画する場合がある。そして、一のオブジェクトの上に他のオブジェクトを重ねて描画する場合において、他のオブジェクトに対して透過処理を施す命令を伴う場合がある。
【0037】
透過処理を伴う場合、重なりの下側になる一のオブジェクトのデータがDestデータ(例えば図2に示すDestデータ11、14等)、重なりの上側になる他のオブジェクトのデータがSrcデータ(例えば図2に示すSrcデータ12、15等)となる。
【0038】
DestデータとSrcデータとを重ねて描画する際に透過処理を伴う場合、解析処理において、DestデータのオブジェクトとSrcデータのオブジェクトとが重なり合う領域(以下「重複領域」と記載する)に対応するアルファデータ(例えば図2に示すアルファデータ13、16等)が生成される。
【0039】
アルファデータは、透過処理を施す範囲を示すデータであり、ラスタライズ処理においてCPU2はアルファデータに基づいて透過処理を施す範囲を決定する。アルファデータは、解析処理において生成される。
CPU2は、重複領域に基づいてアルファデータを生成する範囲を決定する。本実施形態では、重複領域を内包する最小限の矩形領域を示すアルファデータを生成する。
【0040】
図3は、アルファデータ13を生成する範囲となる矩形領域の一例を示す説明図である。以下の説明及び図3においては、Destデータ、Srcデータ及びアルファデータの一例として、図2に示すDestデータ11、Srcデータ12及びアルファデータ13を用いている。
アルファデータ13は、始点(x3,y3)と、始点(x3,y3)からの幅(width3)及び高さ(height3)によって決定される領域である。アルファデータ13の始点(x3,y3)、幅(width3)及び高さ(height3)は、Destデータ11及びSrcデータ12によって描画されるオブジェクトのそれぞれを内包する矩形領域に基づいて決定される。
【0041】
以下の説明及び図3において、Destデータ11によって描画されるオブジェクトを内包する最小限の矩形領域の始点を(x1、y1)、幅を(width1)、高さを(heigth1)と記載し、Srcデータ12によって描画されるオブジェクトを内包する最小限の矩形領域の始点を(x2、y2)、幅を(width2)、高さを(heigth2)と記載する。
【0042】
なお、始点とは、描画領域を内包する矩形領域の左上角の位置を示す座標である。アルファデータの始点ならびにDestデータ及びSrcデータによって描画されるオブジェクトの始点は、1ページ分の印刷を行うための全描画領域の始点(例えば図3に示す始点(x0,y0)等)に対する位置を示す。幅は矩形領域における始点からの一方向(例えば図3に示す横方向)の辺の長さを、高さは幅と直行する別の一方向(例えば図3に示す縦方向)の辺の長さを示す。
【0043】
CPU2は、以下の式(1)〜(8)に基づいてアルファデータ13の始点(x3,y3)、幅(width3)及び高さ(height3)を求める。
CPU2は、x1とx2との比較結果に基づいて、アルファデータ13の始点におけるX座標(x3)及びアルファデータ13の幅(width3)を求める式を決定する。
【0044】
x1>x2の場合、CPU2はアルファデータ13の始点におけるX座標(x3)を以下の式(1)によって求める。
x3=x1……(1)
x1<x2の場合、CPU2はアルファデータ13の始点におけるX座標(x3)を以下の式(2)によって求める。
x3=x2……(2)
【0045】
x1=x2の場合、式(1)又は式(2)のいずれを用いてもよいが、本実施形態では式(1)を用いる。即ち、アルファデータの始点におけるX座標(x3)を求めるとき、x1≧x2の場合、CPU2は式(1)を用い、x1<x2の場合、CPU2は式(2)を用いる。
【0046】
x1>x2の場合、CPU2はアルファデータ13の幅(width3)を以下の式(3)によって求める。
width3=width2+x2−x1……(3)
x1<x2の場合、CPU2はアルファデータ13の幅(width3)を以下の式(4)によって求める。
width3=width1+x1−x2……(4)
【0047】
x1=x2の場合、式(3)又は式(4)のいずれを用いてもよいが、本実施形態では式(3)を用いる。即ち、アルファデータ13の幅(width3)を求めるとき、x1≧x2の場合、CPU2は式(3)を用い、x1<x2の場合、CPU2は式(4)を用いる。
【0048】
CPU2は、y1とy2との比較結果に基づいて、アルファデータ13の始点におけるY座標(y3)及びアルファデータ13の高さ(height3)を求める式を決定する。
【0049】
y1>y2の場合、CPU2はアルファデータ13の始点におけるY座標(y3)を以下の式(5)によって求める。
y3=y1……(5)
y1<y2の場合、CPU2はアルファデータ13の始点におけるY座標(y3)を以下の式(6)によって求める。
y3=y2……(6)
【0050】
y1=y2の場合、式(5)又は式(6)のいずれを用いてもよいが、本実施形態では式(5)を用いる。即ち、アルファデータ13の始点におけるY座標(y3)を求めるとき、y1≧y2の場合、CPU2は式(5)を用い、y1<y2の場合、CPU2は式(6)を用いる。
【0051】
y1>y2の場合、CPU2はアルファデータ13の高さ(height3)を以下の式(7)によって求める。
height3=height2+y2−y1……(7)
y1<y2の場合、CPU2はアルファデータ13の高さ(height3)を以下の式(8)によって求める。
height3=height1+y1−y2……(8)
【0052】
y1=y2の場合、式(7)又は式(8)のいずれを用いてもよいが、本実施形態では式(7)を用いる。即ち、アルファデータ13の高さ(height3)を求めるとき、y1≧y2の場合、CPU2は式(7)を用い、y1<y2の場合、CPU2は式(8)を用いる。
【0053】
図4は、アルファデータ13の構成の一例を示す説明図である。
CPU2は、アルファデータ13の始点(x3,y3)、幅(width3)及び高さ(height3)をヘッダHの情報として含むDLデータをアルファデータ13として生成する。アルファデータ13には、不透明度を示すデータDが含まれる。
【0054】
不透明度は、Srcデータ12の透明度を示す値である。不透明度が最低(例えば0(%))である場合、重複領域におけるSrcデータ12のオブジェクトは完全に透明であり、Destデータ11のオブジェクトが100%Srcデータを透過して見える。不透明度が最高(例えば100(%))である場合、重複領域におけるSrcデータ12のオブジェクトは全くDestデータ11を透過させない。
【0055】
本実施形態において、不透明度は、アルファデータ13の領域の各画素に対して個別に設定されており、例えば図4のデータDに示す”50,0,0,…”のコンマで区切られた各数値は不透明度をパーセント(0〜100(%))で表した値である。
アルファデータは、図4に示すように画素毎に不透明度を指定するものであってもよいし、一定の不透明度をアルファデータに含まれる所定の領域に対して均一に適用するようにしてもよい。
図4に示すアルファデータ13はあくまで例示であり、不透明度をパーセント(0〜100(%))で表しているが、不透明度の表現方法は図4に示す例に限らず不透明度の大小をCPU2が適宜プログラムに従って解釈することができるものであればよい。例えば、不透明度を0〜255の範囲内で表してもよい。
【0056】
アルファデータ13の領域をDestデータ11のオブジェクトとSrcデータ12のオブジェクトの重複領域を内包する最小限の領域とすることで、アルファデータ13のデータ容量を小さくすることができる。
仮に、従来のようにアルファデータを描画領域全体に対して生成した場合、描画領域全体(例えば、バンド単位で描画処理する場合は、当該バンドに相当する描画領域全体)の各画素に対して不透明度を示すパラメータを設定しなければならず、アルファデータのデータ容量が非常に大きくなる。このため、アルファチャンネル用に用意すべき作業領域としては、描画領域全体分のデータを格納するのに必要な容量となる。一方、本実施形態ではアルファデータ13の領域をDestデータ11のオブジェクトとSrcデータ12のオブジェクトの重複領域を内包する最小限の矩形領域としているので、当該最小限の矩形領域内に対してのみ不透明度を示すパラメータを設定すれば足り、従来に比してアルファデータのデータ容量を非常に小さくすることができる。従って、本実施形態においては、アルファチャンネル用に用意すべき作業メモリ領域としては、描画領域全体ではなく、前記の最小矩形領域分のデータを格納するのに必要な容量で済む。
このように、従来に比してアルファデータ13のデータ容量を小さくすることにより、アルファデータ13によるメモリの消費を抑制することができる。
【0057】
なお、3つ以上のオブジェクトが重なる場合、CPU2は重なりにおいて最も下に位置する2つのオブジェクトについてラスタライズ処理を行い、その過程で透過処理を伴う場合はアルファデータを生成する。そして、当該2つのオブジェクトに基づいて生成されたオブジェクトをDestデータ、生成されたオブジェクトの上に重なるオブジェクトをSrcデータとして扱い、透過処理を伴う場合にはアルファデータを生成する。以降、オブジェクトの重なりにおいて一番上のオブジェクトを含むビットマップデータの生成まで同様の処理を繰り返す。
図2に示す例の場合、まず、Destデータ11とSrcデータ12に基づくオブジェクトとして、Destデータ14が生成される。このとき、アルファデータ13が生成される。そして、Destデータ14と、Destデータ14を構成する2つのオブジェクトの上に重なるオブジェクトであるSrcデータ15に基づいてビットマップデータ17が生成される。このとき、アルファデータ16が生成される。
【0058】
なお、解析処理において、CPU2は透過処理を伴わない各オブジェクトに対応するDLデータの生成も行う。以下の記載において、透過処理を伴わない各オブジェクトに対応するDLデータの生成を「通常のDLデータ生成処理」と記載することがある。
【0059】
ラスタライズ処理において、CPU2は、Destデータ、Srcデータ及びアルファデータに基づいてビットマップデータを生成する。
【0060】
図5は、アルファデータ13とラスタライズ処理におけるバンドとの関係を示す説明図である。
図5に示すように、CPU2は、複数のバンド(例えば図5に示すバンドB1、B2、B3、B4等)に基づいて1ページ分のビットマップデータを生成する。本実施形態では、描画単位としてバンド単位を用いている。つまり、描画単位としての領域は、1バンド分の描画領域である。
CPU2は、バンド単位でラスタライズ処理を行う。図5に示すバンドB1〜B4はあくまで例示であり、1ページを構成するバンド数や1バンドを構成するライン数は適宜設定することが可能である。
【0061】
ラスタライズ処理において、まず、CPU2は、1バンド分のDLデータを読み込み、RAM3に格納する。
RAM3のメモリ領域の確保において、CPU2は、各バンドのラスタライズに用いるDestデータ及びSrcデータに対応するDLデータを読み込むためのメモリ領域を確保する。そして、バンド内にアルファデータ(例えば図5に示すアルファデータの領域13A、13B等)がある場合、CPU2は、アルファデータ13を読み込むためのメモリ領域を確保する。
【0062】
図5に示すように、本実施形態では、前述のアルファデータの生成処理は、バンド単位でのラスタライズ処理において必要な最小限の領域について行われる。つまり、図5に示すアルファデータの領域13A、13Bのように、各バンド内におけるDestデータとSrcデータとの重複領域に対してアルファデータが個別に生成され、重複領域に対するアルファデータを格納するのに足りる作業領域がアルファチャンネル用に確保される。
これによって、アルファデータのデータ容量をさらに小さくすることができ、アルファデータによるメモリの消費をより抑制することができる。
従来のようにアルファデータを描画領域全体に対して生成した場合、バンド単位でのラスタライズ処理においても1バンド分の描画領域全体を占めるアルファデータをメモリに格納する必要があり、アルファデータによるメモリ消費量は非常に大きくなる。一方、本実施形態ではバンド単位でのラスタライズ処理において必要な最小限の矩形領域についてアルファデータの生成が行われるので、アルファデータによるメモリ消費は従来に比して大幅に抑制される。アルファデータが複数のバンドに跨る場合、アルファデータをバンド単位でのラスタライズ処理において必要な最小限の領域に限ることによるメモリ消費の抑制の効果は複数のバンドのラスタライズ処理に対して発揮され、より顕著となる。
【0063】
1バンド分のDLデータの読み込み後、CPU2は、ビットマップデータを生成するための処理を行う。
アルファデータの領域(例えば図5に示すアルファデータの領域13A、13B)に対して、CPU2は、透過演算処理を行う。
アルファデータの領域外に対して、CPU2は、透過演算処理を行わない。以下の説明において、アルファデータの領域外に対して行われるビットマップデータの生成処理を「通常のラスタライズ処理」と記載する。通常のラスタライズ処理として、例えばROP処理が挙げられる。本実施形態において、透過演算処理又は通常のラスタライズ処理のいずれを用いるかの判定は、ビットマップデータの各画素に対して個別に行われる。このように、アルファデータの領域内のみ透過演算処理を行うようにすることで、1バンド分全体に対して透過演算処理を行っていた従来に比して透過処理による演算量を大幅に抑制することができる。
CPU2は、生成したビットマップデータをRAM3に格納する。
【0064】
ラスタライズ処理によるビットマップデータの生成後、CPU2は画像印刷部7に対してビットマップデータを出力する。
本実施形態では、CPU2は1バンド分のラスタライズ処理の完了毎に1バンド分のビットマップデータを画像印刷部7に対して出力するが、複数のバンド分又は1ページ分のビットマップデータの生成を完了してからビットマップデータを画像印刷部7に対して出力するようにしてもよい。
【0065】
本実施形態において、透過処理を施す命令は、プリントジョブに含まれるPJL(Printer Job Language)に含まれており、CPU2は透過処理を施すオブジェクトをPJLに基づいて管理する。つまり、CPU2は、解析処理やラスタライズ処理と並行して透過処理を施すオブジェクトの管理を行い、透過処理を施すオブジェクトに対応するアルファデータを生成し、透過処理を施すオブジェクトに対応するDLデータに基づくラスタライズ処理において該オブジェクトのアルファデータを読み出して透過演算処理を行う。透過処理を施す命令は、一のオブジェクトに対して他のオブジェクトを重ねて描画する場合に併せて処理される命令であるので、透過処理を施す命令がある場合、一のオブジェクト(Destオブジェクト)と他のオブジェクト(Srcオブジェクト)は重なり合っている。
以下の説明において、CPU2が解析処理及びラスタライズ処理においてオブジェクトが透過処理を施される領域を含むか否かを判定するとき、その根拠はPJLに基づいた透過処理を施すオブジェクトの管理による。
【0066】
次に、印刷装置1が行う処理の流れを、図6及至図8のフローチャートを用いて説明する。
図6は、印刷装置1が行う処理全体の流れを示すフローチャートである。
まず、印刷装置1は、プリントジョブを受信する(ステップS1)。CPU2は、ステップS1において受信したプリントジョブに基づいて、解析処理(ステップS2)、ラスタライズ処理(ステップS3)、印刷(ステップS4)を順次行う。
【0067】
図7は、図6のステップS2に示す解析処理の流れを示すフローチャートである。
まず、CPU2は、プリントジョブに含まれるPDLに基づいて描画されるオブジェクトが透過処理を施される領域を含むか否かを判定する(ステップS11)。
【0068】
ステップS11において、オブジェクトが透過処理を施される領域を含む場合(ステップS11:YES)、CPU2は、Destデータに対応するDLデータの生成(ステップS12)及びSrcデータに対応するDLデータの生成(ステップS13)を行う。ステップS12、13は順不同であり、図7に示す例と逆の順序で行ってもよい。
【0069】
ステップS12、13においてDestデータ及びSrcデータのDLデータを生成した後、CPU2は、そのDestデータに対応するオブジェクトとSrcデータに対応するオブジェクトとの重複領域に基づくアルファデータの始点、幅及び高さを算出する(ステップS14)。そして、CPU2は、ステップS14において算出された始点、幅及び高さに基づいて、透過処理に必要な最小限の領域のアルファデータを生成する(ステップS15)。ステップS15で生成されるアルファデータは、バンド単位でのラスタライズ処理において必要な最小限の矩形領域について行われる。これによって、バンド単位の描画領域全体に対してアルファデータを生成する必要があった従来に比してアルファデータのデータ容量を小さくすることができ、アルファデータによるメモリの消費を抑制することができる。
【0070】
ステップS11において、オブジェクトが透過処理を施される領域を含まない場合(ステップS11:NO)、CPU2は通常のDLデータ生成処理を行う(ステップS16)。
ステップS15又はステップS16の処理後、CPU2は生成したDLデータをRAM3へ格納する(ステップS17)。そして、CPU2は、1ページ分の印刷に用いる全オブジェクトについてDLデータの生成を完了したか否かを判定する(ステップS18)。1ページ分の印刷に用いる全オブジェクトについてDLデータの生成を完了した場合(ステップS18:YES)、CPU2は解析処理を終了する。1ページ分の印刷に用いる全オブジェクトについてDLデータの生成を完了していない場合(ステップS18:NO)、ステップS11の判定に戻る。
【0071】
図8は、図6のステップS3に示すラスタライズ処理の流れを示すフローチャートである。
CPU2は、RAM3からDLデータをバンド単位で読み出す(ステップS21)。次に、CPU2は、ステップS21で読み出したDLデータに対応するオブジェクトが透過処理を施される領域を含むか否かを判定する(ステップS22)。
【0072】
ステップS22において、オブジェクトが透過処理を施される領域を含む場合(ステップS22:YES)、CPU2はラスタライズ処理の対象となる領域(画素)がアルファデータの領域であるか否かを判定する(ステップS23)。アルファデータの領域である場合(ステップS23:YES)、CPU2は透過演算処理を行う(ステップS24)。一方、アルファデータの領域でない場合(ステップS23:NO)、CPU2は通常のラスタライズ処理を行う(ステップS25)。このように、アルファデータの領域内のみ透過演算処理を行うようにすることで、1バンド分全体に対して透過演算処理を行っていた従来に比して透過処理による演算量を大幅に抑制することができる。
【0073】
ステップS24又はステップS25の処理後、CPU2は1バンド分のラスタライズ処理を完了したか否かを判定する(ステップS26)。1バンド分のラスタライズ処理を完了していない場合(ステップS26:NO)、ステップS23に戻る。
【0074】
ステップS22において、オブジェクトが透過処理を施される領域を含まない場合(ステップS22:NO)、CPU2は通常のラスタライズ処理を行う(ステップS27)。ステップS27における通常のラスタライズ処理は、ステップS21で読み出した1バンド分のDLデータ全てに対して行われる。
【0075】
ステップS26において1バンド分のラスタライズ処理を完了した場合(ステップS26:YES)又はステップS27の処理後、CPU2は1バンド分のラスタライズ処理によって生成されたビットマップデータを画像印刷部7に対して出力し(ステップS29)、ラスタライズ処理の対象となる全てのバンドについてラスタライズ処理を完了したか否かを判定する(ステップS30)。ラスタライズ処理の対象となる全てのバンドについてラスタライズ処理を完了した場合(ステップS30:YES)、CPU2はラスタライズ処理を終了する。ラスタライズ処理の対象となる全てのバンドについてラスタライズ処理を完了していない場合(ステップS30:NO)、ステップS21の処理に戻る。
【0076】
なお、1ページ分のビットマップデータの生成を完了してからビットマップデータを画像印刷部7に対して出力する場合、ステップS29の処理は省略される。そして、1ページ分の印刷内容に対応する全てのバンドについてラスタライズ処理を完了したと判定された後、1ページ分のビットマップデータを画像印刷部7に対して出力される。
【0077】
本実施形態によれば、CPU2は、DestデータとSrcデータとの重複領域を検出し、検出した重複領域を示すアルファデータを生成してメモリに格納し、アルファデータが示す領域に対して透過演算処理を行う。これによって、重複領域に応じて最適な範囲に限定されたアルファデータの生成を行うことができ、従来において透過処理を施さない範囲にまで及んでいた無駄なアルファデータの生成及び無駄なアルファデータによる透過演算処理を抑制することができる。つまり、従来において透過処理を施さない範囲に及んで生成されていたアルファデータによるメモリの消費を大幅に抑止することができる。加えて、従来において透過処理を施さない範囲に及んで行われていた透過処理による演算の負荷及び演算時間によって生ずるスループットの低下を大幅に抑制することができる。従って、透過処理によるメモリの消費及び演算量を抑制することができる。
【0078】
さらに、アルファデータは、透過処理におけるSrcデータの不透明度を示すパラメータを含み、CPU2は、アルファデータに含まれる不透明度に基づいて透過演算処理を行う。これによって、CPU2は、透過処理を施す範囲及び不透明度を示す情報の両方をアルファデータから取得することができる。
【0079】
さらに、アルファデータは、DestデータとSrcデータとの重複領域を内包する最小限の矩形領域である。矩形領域は、一点と二辺の長さによって表すことができるので、矩形領域を求める演算に伴うCPU2の負荷は他の形状の領域を求める演算に比して小さくなる。このため、重複領域の形状に関らず、アルファデータの生成における処理負荷を低減することができる。
【0080】
さらに、CPU2は、解析処理において、透過処理を施される領域を含むか否か即ち重複領域の有無を検出し、透過処理を施される領域を含む場合、重複領域を内包する最小限の矩形領域の始点、幅及び高さを算出し、算出された始点、幅及び高さに基づいてアルファデータを生成し、生成したアルファデータを前記メモリに格納する。これによって、アルファデータを生成するか否かの判定及び重複領域を内包する最小限の矩形領域の位置及び範囲の決定を機械的に行うことができる。
【0081】
なお、本発明の実施の形態は、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および領域でのすべての変更が含まれることが意図される。
【0082】
例えば、前述の実施形態では、印刷装置1のCPU2が画像処理装置としての機能を有するが、必ずしも印刷装置に画像処理装置としての機能を併せ持たせる必要はない。例えば、本発明による画像処理装置を印刷装置と別個に設け、画像処理装置が透過処理を施したビットマップデータを印刷装置に対して出力するようにしてもよい。
【0083】
アルファデータは重複領域を内包していればよく、生成されるアルファデータは矩形領域に限定されない。例えば、重複領域そのものに対応する範囲をアルファデータの範囲としてもよいし、重複領域を内包する多角形や円形等にしてもよい。
アルファデータの範囲を示す始点の位置は、左上角に限らず、矩形領域の四角のうちいずれかであればよい。アルファデータの範囲を表す方法は、四角のいずれかと二辺の長さに基づく方法に限らない。例えば、四角のうち対向する二つの角の座標によって矩形領域を示す等の方法を用いてもよい。
【0084】
描画単位はバンド単位に限らず、適宜変更可能である。例えば、描画単位としてページ単位やライン単位等の他の描画単位を用いてもよいし、その他の描画単位を専用に設けてもよい。
【0085】
以上の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体としてROMを使用した例を開示したが、この例に限定されない。その他のコンピュータ読み取り可能な媒体として、フラッシュメモリ等の不揮発性メモリ、CD-ROM等の可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も本発明に適用される。
【符号の説明】
【0086】
2 CPU
3 RAM
4 ROM
5 ストレージデバイス
6 入力I/F
7 画像印刷部
11、14 Destデータ
12、15 Srcデータ
13、16 アルファデータ
17 ビットマップデータ

【特許請求の範囲】
【請求項1】
一のオブジェクトの上に他のオブジェクトを重ねて描画する場合に前記他のオブジェクトに透過処理を施す画像処理装置であって、
描画単位となる領域のうち前記一のオブジェクトと前記他のオブジェクトとの重複領域を検出し、検出した前記重複領域を示すデータを生成してメモリに格納し、前記重複領域を示すデータの領域に対してのみ前記透過処理を行って前記一のオブジェクトと前記他のオブジェクトとを重ねて描画する制御部を備えることを特徴とする画像処理装置。
【請求項2】
前記重複領域を示すデータは、前記透過処理における前記他のオブジェクトの不透明度を示すパラメータを含み、
前記制御部は、前記重複領域を示すデータに含まれる前記不透明度に基づいて前記透過処理を行うことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記制御部は、前記描画単位となる領域のうち前記重複領域のみについて前記他のオブジェクトの不透明度を示すパラメータを前記メモリに格納することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記重複領域を示すデータは、前記描画単位において前記一のオブジェクトと前記他のオブジェクトの重複領域を内包する最小限の矩形領域を示すデータであることを特徴とする請求項1乃至3の何れか一項に記載の画像処理装置。
【請求項5】
前記制御部は、前記描画単位において前記一のオブジェクトと前記他のオブジェクトとの重複の有無を検出し、前記一のオブジェクトと前記他のオブジェクトとの重複がある場合、前記重複領域を内包する最小限の矩形領域の四角のうちいずれかの頂点の位置及び前記重複領域を内包する最小限の矩形領域の直行する二辺のそれぞれの長さを算出し、算出された前記頂点の位置及び前記二辺のそれぞれの長さに基づいて前記重複領域を示すデータを生成し、生成した前記重複領域を示すデータを前記メモリに格納することを特徴とする請求項4に記載の画像処理装置。
【請求項6】
一のオブジェクトの上に他のオブジェクトを重ねて描画する場合に前記他のオブジェクトに透過処理を施す画像処理装置のコンピュータを、
描画単位となる領域のうち前記一のオブジェクトと前記他のオブジェクトとの重複領域を検出する手段、
検出した前記重複領域を示すデータを生成してメモリに格納する手段、
前記重複領域を示すデータの領域に対してのみ前記透過処理を行って前記一のオブジェクトと前記他のオブジェクトとを重ねて描画する手段、として機能させることを特徴とするプログラム。
【請求項7】
前記重複領域を示すデータは、前記透過処理における前記他のオブジェクトの不透明度を示すパラメータを含み、
前記コンピュータを、
前記重複領域を示すデータに含まれる前記不透明度に基づいて前記透過処理を行う手段、として機能させることを特徴とする請求項6に記載のプログラム。
【請求項8】
前記描画単位となる領域のうち前記重複領域のみについて前記他のオブジェクトの不透明度を示すパラメータを前記メモリに格納することを特徴とする請求項7に記載のプログラム。
【請求項9】
前記重複領域を示すデータは、前記描画単位において前記一のオブジェクトと前記他のオブジェクトの重複領域を内包する最小限の矩形領域を示すデータであることを特徴とする請求項6及至8の何れか一項に記載のプログラム。
【請求項10】
前記コンピュータを、
前記描画単位において前記一のオブジェクトと前記他のオブジェクトとの重複の有無を検出する手段、
前記一のオブジェクトと前記他のオブジェクトとの重複がある場合、前記重複領域を内包する最小限の矩形領域の四角のうちいずれかの頂点の位置及び前記重複領域を内包する最小限の矩形領域の直行する二辺のそれぞれの長さを算出する手段、
算出された前記頂点の位置及び前記二辺のそれぞれの長さに基づいて前記重複領域を示すデータを生成する手段、
生成した前記重複領域を示すデータを前記メモリに格納する手段、として機能させることを特徴とする請求項9に記載のプログラム。



【図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


【公開番号】特開2011−28341(P2011−28341A)
【公開日】平成23年2月10日(2011.2.10)
【国際特許分類】
【出願番号】特願2009−170661(P2009−170661)
【出願日】平成21年7月22日(2009.7.22)
【出願人】(303000372)コニカミノルタビジネステクノロジーズ株式会社 (12,802)
【Fターム(参考)】