説明

印刷可能なラスタ画像ファイルを作成する方法

PDLファイル(20)から印刷可能なラスタ画像ファイル(34)を作成する方法であって、PDLファイル(20)を解釈し、それによって表示リスト(28)を作成するステップと、表示リスト(28)にラスタ画像処理を適用し、それによって4つの分解色(C、M、Y、K)の印刷可能なラスタ画像ファイル(34)を作成するステップとを含み、ラスタ画像処理が、3つの色チャンネル(R、G、B)および透明度用アルファチャンネル(A)を有するグラフィックス処理ユニット(GPU)(18)内で実行され、3つの色チャンネルおよびアルファチャンネルが、4つの分解色(C、M、Y、K)上へマッピングされる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、PDLファイルから印刷可能なラスタ画像ファイルを作成する方法であって、
PDLファイルを解釈し、それによって表示リストを作成するステップと、
表示リストにラスタ画像処理を適用し、それによって4つの分解色の印刷可能なラスタ画像ファイルを作成するステップとを含む方法に関する。
【背景技術】
【0002】
デジタル印刷の技術分野では、印刷される画像は、通常は、例えばインクジェットプリンタまたはレーザプリンタなどの印刷エンジンへ、電子ラスタ画像ファイルの形式で提供される。ラスタ画像は、ピクセル(画素)から成る複数の行および列へ分割され、輝度または色(カラー)を指し示す1つ以上の値が、個々のピクセルに割り当てられる。白黒印刷では、ラスタ画像は、単に、個々のピクセルがブラックで印刷されることになるか否かを指し示す1ビットだけのサイズを、各ピクセルに割り当てられた値が有するビットマップとすることができる。カラー印刷では、典型的な画像は、4つの色分解、例えば分解色のシアン(C)、マゼンタ(M)、イエロー(Y)およびブラック(K)を含み、結果として少なくとも4ビットが各ピクセルに必要となる。可変サイズまたは可変密度のドットを印刷することができるプリンタの場合には、ラスタ画像は、各ピクセルおよび各色に対して多値を含むことになる。
【0003】
特に、大判形式で高解像度の画像の場合には、ラスタ画像は、画像が電子データ処理システムおよびネットワーク内で記憶されまたは伝送されるときに、処理するのに困難な多量のデータを含むことになる。
【0004】
こういう訳で、印刷される画像またはページは、しばしばポストスクリプトまたはPDFなどのページ記述言語(PDL:Page Description Language)で記述される。このようなPDLでは、画像は、線または多角形などの比較的単純な複数の幾何学的オブジェクトで構成され、PDLファイル内に格納されるものは、これらのオブジェクトの頂点の座標およびこれらのオブジェクトが塗りつぶされることになる一種類または複数の色だけである。ラスタ画像処理(RIP:Raster Image Processing)と呼ばれるプロセスは、PDLファイルをラスタ画像ファイルへ変換するのに用いられる。
【0005】
ラスタ画像処理は、典型的には、プリンタのいわゆるフロントエンドであって、その処理のためにラスタ画像プロセッサを備えているフロントエンド内でなされる。従来、ラスタ画像プロセッサとして用いられるプロセッサは、多目的コンピュータの中央処理装置(CPU:Central Processing Unit)であり、または少なくとも同じアーキテクチャを有して、CPUと同様にプログラミングされる。
【0006】
現代のパーソナルコンピュータまたはデスクトップコンピュータは、特にコンピュータゲームにも利用される場合、典型的には、コンピュータのディスプレイ画面上にコンピュータ生成グラフィックスをレンダリングするのに用いられる、強力なグラフィックスボードまたはグラフィックス処理ユニット(GPU:Graphics Processing Unit)を備える。米国特許第6860203B号明細書は、ゲーム機のディスプレイ画面上に画像をレンダリングするのに、GPUなどが用いられるゲーム機を開示する。さらに、このゲーム機は、ディスプレイ上に示される画像も印刷できるように、デジタルプリンタに接続可能である。GPUは、画面上に表示されるラスタ画像だけでなくプリンタへ送信されるラスタ画像も、作成するのに用いられる。プリンタがディスプレイ画面よりもより高い解像度を有するので、タイリングプロシージャが、印刷される画像をGPUによって処理されるほどに小さい複数のタイルへ細分化するのに適用され、次いでこれらのタイルがいっしょに「縫い合わされ」て、プリンタに対して高解像度のラスタ画像を作成する。しかしながら、GPUが、モニタ画面上に表示される3つの色、レッド(R)、グリーン(G)およびブルー(B)だけを処理するので、GPUによってレンダリングされるラスタ画像は、プリンタ内で用いられる分解色CMYKへ、さらに変換しなければならない。この変換は、ゲーム機のCPU内でなされ、かなりの時間および処理電力を必要とする。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】米国特許第6860203号明細書
【特許文献2】欧州特許出願第08154135号明細書
【発明の概要】
【発明が解決しようとする課題】
【0008】
PDLファイルから印刷可能なラスタ画像ファイルを作成するのにさらに効率的な方法を提供することが、本発明の目的である。さらに具体的には、本方法は、例えば600dpiの高解像度で印刷することができ、かつA4、A3形式でまたはさらに高スループット(例えば65ページ/分以上)でページを印刷することができる、高性能デジタルプリンタで利用可能であるものとする。
【課題を解決するための手段】
【0009】
この目的を達成するために、本発明に従う方法は、ラスタ画像処理が、3つの色チャンネル(R、G、B)および透明度用アルファチャンネルを有するグラフィックス処理ユニット(GPU)内で実行され、3つの色チャンネルおよびアルファチャンネルが、4つの分解色(C、M、Y、K)上へマッピングされ、各分解色が、3つの色チャンネルおよびアルファチャンネルのうちの異なる1つに割り当てられることで特徴付けられる。
【0010】
それゆえに本発明は、一部の市販のGPUが、3つの色チャンネルRGBに加えて4番目のチャンネル、いわゆるアルファチャンネルを有するということを利用する。GPUが、一般に、モニタ画面上に表示される3つの色RGBだけを処理するように設計されるのに対して、アルファチャンネルは、必要に応じて画像の一定の透明度量を指定するのに用いられる。それゆえに、各ピクセルのアルファチャンネルに適切な値を割り当てることによって、画面上に表示される画像は、多かれ少なかれ透明のように見えることになる。アルファ値は、ちょうど3つの「標準」色の値としてのピクセルの特性であるので、本質的には色と同様に処理され、すなわち座標変換、シェーディングなどの動作に、ちょうど色の値として関与する。本発明は、単純にアルファ値を4番目の色の値として再解釈することによって、このことを利用する。それゆえに、プリンタによって必要となる4つの分解色は、GPUの3つの色チャンネルおよびアルファチャンネル上へマッピングされ、次いでGPUは、ラスタ画像処理タスクの主要な部分を実行することになり、最終的にはピクセルごとの4つの出力値を有するラスタ画像を出力することになって、これらの出力値は、プリンタ内で用いられる分解色として解釈されることになる。
【0011】
本発明に従うラスタ画像処理に用いられるGPU技術は、主に娯楽産業によって推進されて長足の進捗を経験してきており、結果として市販のGPUは、比較的安価であるにもかかわらず、ラスタ画像処理に必要な多量のデータを処理するのに極めて強力となっている。特に、GPUは、高度に並列化されたアーキテクチャを有し、したがって多数のピクセルに対するデータは並列に処理することができ、処理時間を大いに低減している。他方で、入手可能なGPUおよびこれらのGPU向けに特に開発されてきたプログラミング言語は、高性能デジタルプリンタにおける効率的なラスタ画像処理の要求を満たすのに適切にプログラミングされるために、十分な柔軟性を有している。結果として、ラスタ画像処理向けにGPUを利用することによって、ハードウェアに必要な処理時間およびコストが、著しく低減することができる。
【0012】
本発明はさらに、本発明に従う方法を実装するプリンタおよびコンピュータプログラムに関する。
【0013】
本発明についてさらに具体的な任意選択の特徴が、従属項において指し示される。
【0014】
次に好ましい実施形態が、以下の図面と連動して説明されることになる。
【図面の簡単な説明】
【0015】
【図1】本発明に従う方法を実行するように構成されるプリンタのブロック図である。
【図2】本発明の第1の実施形態に従う方法のフロー図である。
【図3】本発明の第2の実施形態に従う方法のフロー図である。
【図4】本発明に従う方法のさらなる展開を図示するフロー図である。
【発明を実施するための形態】
【0016】
図1に模式的に図示されたプリンタは、フロントエンド10および印刷エンジン12を含む。フロントエンド10は、プリンタへ供給される電子印刷データを、印刷エンジン12を用いて印刷されるのに適した形式へ、変換するタスクを有する。一般に当技術分野で知られているように、フロントエンド10は、CPU14、プログラムコードおよびデータを格納するメモリ空間16、ならびに図1に示されていない制御手段を含む。
【0017】
示されている実施形態では、フロントエンド10は、ディスプレイ画面上に画像をレンダリングする、現代のパーソナルコンピュータ、ゲーム機またはワークステーションにおいて典型的に使用されるタイプのグラフィックス処理ユニット(GPU)18を、さらに含む。GPUは、独立した集積回路によって形成されてもよく、またはCPU14および同一基板上の他の回路およびメモリと一体化されてもよい。
【0018】
印刷されるデータは、典型的には、ポストスクリプトまたはPDFなどの、一般に使用されるプログラミング記述言語(PDL)の形式で、フロントエンド10によって受信される。それゆえに、図1は、フロントエンド10によって受信され、処理されるPDLファイル20を示す。例として、PDLファイル内の符号化された画像が色画像であり、印刷エンジン12内でも使用されるCMYK色空間において、色がすでに指定されていると仮定する。一般に、PDLファイル内の色は、他の何らかの色空間において指定されてもよい。必要ならば、フロントエンド10は、例えば欧州特許出願第08154135.1号明細書に記載されたように、PDLファイル20の色空間を印刷エンジン12の色空間へ適合させる、適切な色管理アルゴリズムを実行してもよい。
【0019】
CPU14の機能は、図1に、3つのモジュール:インタープリタ22、GLコンバータ24(GL:Graphics Language)およびグラフィックスドライバ26によって表された。
【0020】
PDLファイル22内に与えられる情報に基づいて、インタープリタ22は、いわゆる表示リスト28をコンパイルする。この表示リストは、プリミティブ、すなわち印刷される画像を構成するグラフィカルオブジェクトの位置および外観を定義する命令、のリストである。このようなプリミティブは、中でも以下を含むことができる:
【0021】
不等辺四辺形を塗りつぶす
不等辺四辺形の形状および位置は、その頂点の座標(コーナー)によって定義される。長方形および三角形は、不等辺四辺形の特別な場合として含まれる。ソース色が設定されると、不等辺四辺形の全領域がソース色で塗りつぶされる。不等辺四辺形は、任意の形状の多角形を構成するのに用いることができる。修正された実装では、プリミティブ「多角形を塗りつぶす」が使用されてもよい。
【0022】
ソース色を設定する
すべての不等辺四辺形およびランアレイが、ソース色を用いて、別のソース色が設定されるまで続いて塗りつぶされることになり、そのソース色としてCMYK色空間内の色が定義される。
【0023】
ソース画像を設定する
ソース画像は、変換行列に関連付けられたラスタ画像(ピクセルごとに指定された色の値)である。例えば不等辺四辺形は、不等辺四辺形の外側でソース画像をクリッピングする適切な座標変換にソース画像を委ねることによって、ソース画像で塗りつぶされてもよい。
【0024】
画像マスクを設定する
画像マスクは、ビットマップによって定義され、変換行列に関連付けられる。マスクビットマップ内に値「1」を有するあらゆるピクセルは、ソース色で塗りつぶされることになり、一方で値「0」を有するピクセルは、変化しないままとなる。
【0025】
ビットマップマスクを設定する
ビットマップマスクは、画像マスクと類似しているが、変換行列を有していない。ビットマップマスクは、例えばテキストをレンダリングするのに使用される。
【0026】
マスクプリミティブまたはソースプリミティブが設定されると、別のマスクまたはソースプリミティブが設定されるまで、または表示リストが終了するまで、マスクまたはソースプリミティブは有効のままである。
【0027】
画像内部の指定された位置に依存して、不等辺四辺形に類似のプリミティブが重なってもよい。遅れて処理されるプリミティブが、以前に処理された全プリミティブを上書きすることは、通例、指定することができる。代替策として、プリミティブの頂点は3次元座標によって与えられてもよく、したがってプリミティブの一部は別のプリミティブの後に隠蔽されてもよい。本明細書で提示される実施形態では、GPU18は、このような隠蔽された表面を特定して除去するアルゴリズムを、効率的に実行することができる。
【0028】
不等辺四辺形などのプリミティブは、プリミティブの一部が印刷される画像の外側に位置するように、印刷可能領域のエッジに配置されてもよい。そうであれば、プリミティブを画像の領域にクリッピングするために、クリッピングアルゴリズムが提供される。
【0029】
GLコンバータ24は、表示リスト28の命令をグラフィックス言語(GL)、すなわちGPU18でプログラミングするのに用いられる言語へ変換するモジュールである。いくつかのグラフィックス言語、例えばOpenGL、CUDAまたはDirectXが、市場で入手することができる。OpenGLが、本例で使用される。
【0030】
メモリ空間16は、中でもコンバータ24が利用できるグラフィックス言語ライブラリ(GLライブラリ、この場合にはOpenGLライブラリ)を含んでおり、したがってコンバータは、ライブラリから所定の関数およびルーチンを呼び出すようにGPU18に命令することができる。メモリ空間16はさらに、「ピクセルシェーダ」と呼ばれる特定のタイプのプログラムを格納し、個々のピクセルの色および/または輝度を変更するために、各ピクセルについて特定の動作を実行するようにGPU18に命令する。
【0031】
それゆえにGLコンバータ24は、表示リスト28内にリストされたプリミティブを、GPU18向けに「GLコール」と呼ばれる命令へ変換する。グラフィックスドライバ26は、CPU14をGPU18にインターフェースで接続し、これらのGLコールをGPUへ送る。
【0032】
インタープリタ22、GLコンバータ24およびグラフィックスドライバ26では、色は常にCMYK色空間内で定義される。しかしながら、GPU18は、本来はRGBモニタ画面を駆動する特定の目的のために設計されたデバイスであり、それゆえに3つの基本色RGBだけを処理するように構成される。
【0033】
本例で使用されるGPU18は、4番目の色チャンネル、いわゆるアルファチャンネル(A)を有しており、アルファチャンネルは、ピクセルの一定の透明度を指定するように意図されている。それに対応して、CPU18用のプログラミング言語(例えばopenGL)は、画像を透明にする特定のコールを含む。このようなコールがなされ、ピクセルが背景に重畳しなければならないとき、ピクセルのA値は、ピクセルのRGB値が背景色にどれほど混ぜ合わせられるかを決定するはずである。A値が大きくなればなるほど、背景は、重ね合わされた画像を「透き通す」はずである。
【0034】
本実施形態では、GPU18の3つの色チャンネルRGBおよびアルファチャンネルAが、CPU10内でおよびさらに印刷エンジン12内で使用される4つの分解色CMYKを処理するのに用いられる。例えば、図1に象徴的に示されたように、色CはGPUのRチャンネルに割り当てられ、色MはGチャンネルに割り当てられ、色YはBチャンネルに割り当てられ、色K(ブラック)はアルファチャンネルAに割り当てられる。もちろん、他の割り当ても起こりうる。RGBAシステム、またはGPUの色チャンネルへのRGB色の割り当てが逆にされるBGRAシステムにおいて、GPU18が色を処理するように構成することができることが、さらに気づかれる。
【0035】
GPU18は、プロセッサ部分30およびメモリ部分32を含む。示される例では、メモリ部分32は固定のメモリ、すなわち固定サイズのメモリ空間が、格納されるデータに予約されるようなメモリとして構成される。これらの固定メモリ空間内に格納されたデータは、「テクスチャ」と呼ばれる。これらのテクスチャは、通常のCPUプログラミングにおける配列に似ているが、浮動小数点インデックスを有するという特定の特徴、すなわち極めて速い補間ルーチンを実行するプロセッサ部分30の能力に関する特徴を有する。
【0036】
テクスチャは、3次元(3D)テクスチャ(通常は本印刷用途では使用されない)、画像を格納する2Dテクスチャ、および1Dテクスチャを含んでもよい。例えば、上述したソース画像、画像マスクおよびビットマップマスクは、2Dテクスチャとして格納することができ、1Dテクスチャは、ソース陰影を定義する色変換テーブルを格納するのに用いることができる。
【0037】
メモリ部分32の特定のメモリ空間は、「フレームバッファ」と呼ばれ、GPUによって作成されることになっているラスタ画像ファイル34を格納するのに用いられる。GPUのプロセッサ部分30は、GLコールを処理し、対応するプリミティブを、フレームバッファ内の適切な場所に配置するのに必要な動作を実行する。そのために、GPU18のプロセッサ部分30は高度に並列なプロセッサアーキテクチャを有しており、したがって多くのピクセルは並列に処理することができる。
【0038】
表示リスト28によって指定された全画像がレンダリングされ、対応するラスタ画像がフレームバッファ内で完全なものになると、グラフィックスドライバ26は、フレームバッファの内容すなわちラスタ画像ファイル34を、CPU14のシステムメモリまたは印刷エンジン12(バッファ)のメモリのいずれでもよい印刷メモリ36内へ、ダウンロードするようにGPU18に命令することになる。
【0039】
透明度機能が使用されていないので、GPU18のAチャンネルはまるでピクセルの4番目の色のように処理され、ラスタ画像ファイル34がCPU14を経由して印刷エンジン12へダウンロードされると、CPUおよび印刷エンジンは、単にA値をピクセルのK値として処理するだけになり、一方でピクセルのR、GおよびB値は、分解色C、MおよびYとして処理されることに留意されたい。
【0040】
示される例では、フレームバッファは、GPU18のメモリ部分32に含まれる。修正された実施形態では、外部メモリがフレームバッファとして使用されてもよい。ダウンロードプロシージャをさらに加速するために、CPU14または印刷エンジン12がフレームバッファに直接にメモリアクセスできるアーキテクチャを用いることも、可能である。
【0041】
本発明の第1の実施形態に従う方法は、図2に示されるフロー図と連動して、次に説明される。
【0042】
ステップS1において、CPU14のインタープリタ22は、PDLファイル20を解釈し、表示リスト28を作成する。
【0043】
ステップS2において、CPUは、GPU18を初期化するルーチンを実行する。この初期化ルーチンは、例えばフレームバッファのサイズを指定するステップ、フレームバッファの過去の内容を消去するステップ、座標変換行列を「1」に設定するステップなどを含む。
【0044】
次いでステップS3において、GLコンバータ24は、表示リスト28から最初のプリミティブをフェッチすることになり、このプリミティブを指定する命令は、ステップS4においてGLコールへ変換される。
【0045】
ステップS5において、GLコールは、次いでプリミティブをフレームバッファ内の適切なピクセル位置に配置するのに必要な動作を実行することになるGPU18へ、送られる。
【0046】
ステップS6において、CPUは、表示リスト内のまだ処理されていないプリミティブがこれ以上残っているかどうかを検査する。これが(Y)の場合には、次いでルーチンはステップS3に戻って、次のプリミティブを処理する。
【0047】
表示リスト28内の全プリミティブが処理されると、ループはステップS7で終了し、ラスタ画像ファイル34はGPU18(または外部のフレームバッファ)から印刷メモリへダウンロードされる。次いでラスタ画像は、今後の利用のため、印刷メモリに格納されてもよく、または最後のステップS8において印刷エンジン12を用いて直接に印刷されてもよい。
【0048】
図3は、修正された実施形態のフロー図である。ステップS11〜S13は、図2に示されたステップS1〜S3と同一である。
【0049】
ステップS14は、図2のステップS4に対応し、ステップS14において、GLコールがCPU14のメモリ空間16内のバッチファイルに格納される点が相違している。
【0050】
図3のステップS15は、全プリミティブが処理されたかどうかを決定する、図2のステップS6に対応する。
【0051】
図3において、ステップS13、S14およびS15のループは、全プリミティブ用のGLコールを含むバッチファイルがGPU18へ送られるステップであるステップS16を経由して終了する。
【0052】
図3のステップS17およびS18は、この場合も図2のステップS7およびS8と同一である。
【0053】
現在の市販のGPUでは、処理能力および記憶容量は、A4に相当するサイズおよび600dpiの解像度を有するラスタ画像を処理するのに十分である。図4は、印刷される画像およびしたがってラスタ画像が、さらに大判のサイズ(A3以上)であり、600dpiの解像度を有し、結果としてGPU18の能力を越えるはずであるときに、適用することができる方法を図示する。
【0054】
ステップS21は、上述した実施形態のステップS1およびS11に対応する。
【0055】
ステップS22において、GPU14は、PDLファイルおよび表示リストにサイズがそれぞれ指し示される画像が、GPU18の能力を越えるか否かを決定する。
【0056】
そうであれば、ステップS23が実行され、タイリングプロシージャが、PDLファイルによって指定される画像に適用される。このタイリングプロシージャでは、画像は、行および/または列に並んで境を接して配置される複数のサブ画像すなわちタイルへ分割され、結果として個々のタイルが、GPUで処理されるのに十分に小さいサイズを有しているのに、タイルは画像全体をカバーしている。元の画像がGPUによって直接に処理することができる場合(ステップS22において「N」)、次いでステップS23は飛ばされる。
【0057】
次いでステップS24において、GPU18は、最初のタイル(ステップS23が実行されたとき)または全画像(ステップS23が飛ばされたとき)用に初期化される。
【0058】
ステップS25において、タイルまたは画像は、図2のステップS3からS6または図3のステップS13からS16と同様に、レンダリングされる。
【0059】
ステップS26において、ただ1個のタイルのサイズを有するラスタ画像が、印刷メモリ36へダウンロードされる。
【0060】
ステップS27は、まだ処理されていないタイルが(ステップS23が実行されたという条件で)さらにあるかどうかを検査する。この場合には、プログラムはステップS24に戻って、次のタイル用にGPU18を初期化する。このタイルがステップS25においてレンダリングされ、ステップS26において印刷メモリ36へダウンロードされると、印刷メモリは、最初のタイルおよび最新のタイルのラスタ画像が、印刷メモリ内で途切れなく「いっしょに縫い合わされる」ように、アドレス指定される。タイルは、さらに残されている場合、ステップS24〜S27を通したループにより同じ方法で処理される。
【0061】
全タイルが走査されると、ループはステップS28で終了し、画像は印刷メモリ36から印刷される。

【特許請求の範囲】
【請求項1】
PDLファイル(20)から印刷可能なラスタ画像ファイル(34)を作成する方法であって、
PDLファイル(20)を解釈し、それによって表示リスト(28)を作成するステップと、
表示リスト(28)にラスタ画像処理を適用し、それによって4つの分解色(C、M、Y、K)の印刷可能なラスタ画像ファイル(34)を作成するステップとを含み、
ラスタ画像処理が、3つの色チャンネル(R、G、B)および透明度用アルファチャンネル(A)を有するグラフィックス処理ユニット(GPU)(18)内で実行され、3つの色チャンネルおよびアルファチャンネルが、4つの分解色(C、M、Y、K)を処理するのに用いられ、各分解色が、3つの色チャンネルおよびアルファチャンネルのうちの異なる1つに割り当てられることで特徴付けられる、方法。
【請求項2】
PDLファイル(20)をグラフィックス言語(GL)内の命令へ変換するのにCPU(14)が用いられ、前記命令が、GPU(18)によって実行される、請求項1に記載の方法。
【請求項3】
フロントエンド(10)および印刷エンジン(12)を含み、フロントエンド(10)が、請求項1または2に記載の方法を実行するように構成されることで特徴付けられる、デジタルプリンタ。
【請求項4】
CPU(14)およびGPU(18)を有するデータ処理システム上で動作するとき、CPUおよびGPUに請求項1または2に記載の方法を実行させる、プログラムコードを含む、コンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2013−505854(P2013−505854A)
【公表日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2012−530213(P2012−530213)
【出願日】平成22年9月14日(2010.9.14)
【国際出願番号】PCT/EP2010/063447
【国際公開番号】WO2011/036069
【国際公開日】平成23年3月31日(2011.3.31)
【出願人】(390039435)オセ−テクノロジーズ・ベー・ヴエー (103)
【氏名又は名称原語表記】OCE’−NEDERLAND BESLOTEN VENNOOTSHAP
【Fターム(参考)】