イメージのハーフトーン化の方法
イメージのハーフトーン化の方法に関し、第1の数のビットで付与された少なくとも1つの入力明度が各ピクセルに割り当てられる、第1のピクセル配列の形でイメージを表現するソースファイル(18)が、電子的に処理され、第2の数のビットで付与された少なくとも1つの出力明度が第2のピクセル配列の各ピクセルに割り当てられる第2のピクセル配列の形で出力ファイル(20)を計算し、前記第2の数は第1の数未満であり、処理はグラフィックスプロセッシングユニット(GPU)(16)で行われる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、イメージのハーフトーン化の方法に関し、第1の数のビットで付与された少なくとも1つの入力明度が各ピクセルに割り当てられる、第1のピクセル配列の形でイメージを表現するソースファイルが、電子的に処理され、第2の数のビットで付与された少なくとも1つの出力明度が第2のピクセル配列の各ピクセルに割り当てられる第2のピクセル配列の形で出力ファイルを計算し、前記第2の数は第1の数未満である。
【背景技術】
【0002】
デジタルイメージ処理および印刷の技術分野では、イメージは通常、電子ラスターイメージファイルの形で表現される。ラスターイメージはピクセルの複数の行と列に分割され、ピクセル配列の形を取る。ここで、輝度または明度を示す1つまたは複数の値がそれぞれ個々のピクセルに割り当てられる。黒と白のイメージの場合、単一の色(黒)しかないので、個々のピクセルに割り当てられた「明度」の値は、それぞれのピクセルのグレーレベルを示す。例えば、8ビットの明度では、0(白)から255(黒)の範囲の256の異なるグレーレベルを定義できる。カラーイメージの場合、各ピクセルには、割り当てられた通常3〜4の明度があり、それは例えば、RGBシステムでは赤色(R)、緑色(G)、および青色(B)で、CMYKカラーシステムでは、シアン(C)、マゼンタ(M)、黄色(Y)、および黒色(K)である。コンピュータで作成されたり、スキャナーで取り込まれたイメージでは、例えば、各明度は再度8ビットを有する場合がある。
【0003】
しかしながら、ほとんどのデジタルプリンターは、256の異なるグレーレベルまたはカラーレベルを、対応する数の異なるサイズまたは密度レベルで印刷されたドットに直接変換することはできない。多くのプリンターができるのは、一定のサイズおよび密度でドットを印刷するか、印刷しないかのいずれかだけである。他のプリンターの場合、わずかな数、例えば、ピクセルおよび色ごとに4つの異なるサイズまたは密度で、ドットを生成することができる。例えば、プリンターが異なる3つのドットサイズを生成できる場合には、イメージは、ピクセル配列の形でプリンターに提示される必要があり、ここで、各明度は2ビットまでである。
【0004】
結果的に、例えば、明度ごとにビットの数を8から2へ低減化し、一方、印刷されたイメージの光学的印象を可能な限り保持するプロセスが必要とされる。このプロセスは、ビットの低減化数が1より大きい場合には、「ハーフトーン化」または「マルチレベルハーフトーン化」と呼ばれる。
【0005】
知られているハーフトーン化アルゴリズムには通常、閾値化ステップが含まれ、ここでは、ソースイメージのピクセルの明度が閾値または一組の閾値と比較される。例えば、明度は異なる3つの閾値と比較される場合があり、結果としての明度は、いくつの閾値が超過されるかに応じて、0、1、2、または3となる。
【0006】
ハーフトーン処理で得られる第2のピクセル配列の明度が、異なる4つの密度値を表す、例えば2ビットというわずかな値しかない場合でも、印刷されたイメージでより多数の異なる密度値を生成することは可能である。このことは、第2のピクセル配列の明度を、異なる明度を有する隣接したピクセルの組み合わせた作用が中間の密度レベルに対応する視覚的印象になるように配列することによって達成される。一般に、このようにして得られるハーフトーンイメージの解像度は、ソースイメージの解像度より少なくなる。
【0007】
そのようなハーフトーン処理の通常の例は、いわゆるディザー法であり、それでは、ソースイメージの明度がいくつかの隣接するピクセルをカバーする閾値マトリックス(ディザー法マトリックス)のマトリックス要素と比較される。その結果、一定の密度であるソースイメージの領域であっても、ハーフトーン処理の2ビット明度では、マトリックスの閾値の分布に応じて、特定の広がりを示すことになる。
【0008】
知られているハーフトーン処理の別の例は、いわゆる誤差拡散で、それでは、ソースイメージの明度(8ビット)が、例えば、2ビットの出力明度で概算され、誤差が隣り合ったピクセルの出力明度を適切に計算することによって補正される。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】欧州特許出願公開第08154135号明細書
【発明の概要】
【発明が解決しようとする課題】
【0010】
従来のプリンターの場合、ハーフトーン処理はいわゆるプリンターのフロントエンドの中央処理装置(CPU)で行われる。しかしながら、ハーフトーン化は、とりわけ大型のフォーマットカラーイメージの場合、かなりの量の処理能力および時間を必要とするプロセスである。CPUのハーフトーン処理を高速化するためのいくつかの技術が知られているが、これらの技術は一般に、ソースイメージの特定の特性に依存しており、そのため、ハーフトーン処理が高速化される程度は、処理される特定のイメージにより異なる。その結果、プリンターの動作全体のスケジューリングに望ましい、事前に必要な処理時間を概算することは困難である。
【0011】
より短いおよび/またはより予測可能な処理時間内に実行されることが可能なハーフトーン化方法を提供することが本発明の目的である。
【課題を解決するための手段】
【0012】
上記の目的を達成するために、本発明による本方法は、処理がグラフィックスプロセッシングユニット(GPU)で行われることを特徴としている。
【0013】
今日、GPUは画面上に表示されるレンダリングイメージ向けのコンピュータシステムで使用される。GPUの技術は、主にエンターテイメント業界の主導で急速な進歩を経験しており、その結果、市販されているGPUは比較的安価であるが、それにもかかわらず、イメージ処理に必要な大量のデータを処理する点で非常に強力である。特に、GPUには高度な並列アーキテクチャがあり、そのため、多数のスレッドが並行して処理されることができる。GPUの通常のタスクには、例えば、様々な視点からのシーンを表示するための座標変更、例えば、照明効果などを表現するピクセルシェーディングが含まれる。
【0014】
これらのタスクはハーフトーン化プロセスで直面するタスクとはまったく異なっているが、同様にこれらのタスクも非常に効率的なやり方で行うために、使用可能なGPUはプログラムされるようにすることができることになる。
【0015】
1つのスレッドが同時に処理される別のスレッドで得られる結果に依存していないという意味で、スレッドが互いに独立していることが並列処理の前提条件である。誤差拡散に基づくハーフトーン化プロセスでは、誤差の伝搬が一般的に直近のピクセルに限定されることができる場合には、この状態は少なくとも、十分な距離、隔てられているピクセルで実現される。閾値マトリックスに基づくハーフトーン化プロセスでは、異なるピクセルを処理するスレッドは、この意味で互いに独立しており、その結果、並列度の度合いはGPUの能力によってのみ限定される。いずれの場合でも、イメージのピクセルの総数およびGPUの能力が知られている場合、処理されるイメージの内容に関係なく、ハーフトーン処理に必要とされる時間を概算することが常に可能になる。
【0016】
本発明はさらに、本発明による方法を実装するプリンターおよびコンピュータプログラム製品にも関する。
【0017】
本発明のより具体的な光学的機能は、従属請求項で示される。
【0018】
好適な実施形態はこれから、次の図面に関連して説明される。
【図面の簡単な説明】
【0019】
【図1】本発明による方法を行うようになされたプリンターのブロック図である。
【図2】プリンターのCPU上で実行するGPU処理ドライバーの流れ図である。
【図3】タイリング手順を例示する図である。
【図4】GPUのタイルのピクセルの並行処理の構造を例示する図である。
【図5】GPU上で実行するカーネルの流れ図である。
【図6】異なる1つのタイプの入力データに対して、テクスチャーから明度をフェッチするステップを例示する図である。
【図7】異なる1つのタイプの入力データに対して、テクスチャーから明度をフェッチするステップを例示する図である。
【図8】異なる1つのタイプの入力データに対して、テクスチャーから明度をフェッチするステップを例示する図である。
【図9】複数の閾値マトリックスを含むテクスチャーを例示する図である。
【図10】閾値マトリックスでイメージをタイリングするためのスキームを例示する図である。
【図11】カーネルで実行される閾値化ステップを例示する図である。
【図12】閾値化ステップで使用されるステップ関数を例示する図である。
【発明を実施するための形態】
【0020】
図1に略示されているプリンターは、フロントエンド10および印刷エンジン12を備えている。フロントエンド10には、プリンターに供給される電子印刷データを、印刷エンジン12を使用して印刷されるのに適切なフォーマットに変換するタスクがある。当該分野で一般的に知られているように、フロントエンド10は、CPU14のほか、プログラムコードとデータを格納するためのメモリー空間も備え、さらに、ここではそのどちらも示していないが、入力および制御手段も備えている。
【0021】
示されている実施形態の場合、フロントエンド10は、ディスプレイ画面でイメージを表現するため、現代のパーソナルコンピュータ、ゲームコンソール、またはワークステーションで通常使用されるタイプのグラフィックスプロセッシングユニット(GPU)16を備えている。GPU16は、別個の集積回路で形成されることも、同じ基板にCPU14および他の回路そしてメモリーも一体化されることも可能である。
【0022】
図1ではさらに、フロントエンド10で受領され処理されるイメージデータを含むソースファイル18も示している。例として、ソースファイルにエンコードされたイメージはカラーイメージで、カラーはRGBまたはCMYKなどのよく使用される色空間で指定されるものとする。ソースファイルの色空間は、プリンターで使用される色空間とは異なる場合がある。そのため、例えば、欧州特許出願公開第08154135号明細書に記述されているように、フロントエンド10は、ソースファイル18の色空間を印刷エンジン12の色空間に適合させるための適切な色管理アルゴリズムを行うことができる。
【0023】
例として、ここでは、ソースファイル18の各ピクセルの色は、それぞれが8ビットの幅を有する3つまたは4つの明度で定義されるものとする。マルチレベルハーフトーンプロセスは、ソースファイルによって表現されるピクセル配列を、各ピクセルの色が4つの明度C、M、Y、Kによって定義され、それぞれの幅が2ビットのみである、ピクセル配列に変換するために適用されるものである。したがって、各明度は、印刷エンジン12が再生できる異なる4つのレベルであるものとする。このプロセスの結果は、印刷エンジン12に送られることができる出力ファイル20である。
【0024】
ここに記述されている例では、閾値アルゴリズムがハーフトーン化に使用されている。さらに、説明を簡単にするために、ソースファイル18および出力ファイル20で表現されるピクセル配列は同一の形状およびサイズであるものとし、そのため、ソースファイルのピクセルと出力ファイルのピクセル間には一対一の対応関係が存在し、ソースファイルの各ピクセルは、ピクセル配列の特定の領域をカバーする、閾値マトリックスで付与された閾値と比較される。
【0025】
ハーフトーン化の目的のために、CPU14はGPU処理ドライバー22と呼ばれる特定のソフトウェアを実行して、GPU16のパラメータを設定し、それからGPU16で実行されるいわゆるカーネル、すなわちプログラムを呼び出す。GPU16の処理パート24には、カーネルで指定された命令を同時に、多数のデータオブジェクトに適用するいくつかのマルチプロセッサが含まれ、現在の例の場合、これらデータオブジェクトには、ソースファイルの全部または少なくとも多数のピクセルが並列スレッドで処理されるようなソースファイルの個々のピクセルのデータが含まれる。
【0026】
さらにGPU16には、いわゆるテクスチャーを格納するために使用される、いくつかの固定メモリー、すなわち固定サイズの複数のメモリーを収容するように構成されることができるメモリーパート26が含まれる。テクスチャーは、CPU上で処理されるデータ配列と同様の1、2、または3次元データ配列であるが、データ配列の要素が浮動小数点インデックスで指定される場合のある特定の機能を伴う。このことは、プロセッサパート24がテクスチャーに格納された不連続データ間を補間するための強力なプロセスを提供するために起きる可能性がある。
【0027】
示されている例では、テクスチャーは、ソースファイルで表現される入力イメージ(入力ピクセル配列)を格納する入力テクスチャー28、RGBカラーをCMYKカラーに変換するために必要とされるブラック生成テーブル30、4色C、M、Y、Kのそれぞれにつき1つの、4つの閾値テクスチャー32、34、36、38、および必要に応じて、出力ピクセル配列が出力ファイル20としてフロントエンドのシステムメモリーに転送される前に、出力ピクセル配列をバッファリングするための出力テクスチャー40を備えている。代替形態として、出力ファイルを生成するために、カーネルが直接結果をシステムメモリーに返すこともできる。ダウンロードおよびアップロード手順を高速化するために、直接アクセスメモリー(DMA)が使用されることが好適である。
【0028】
GPU処理ドライバー22の機能については、図2を参照してこれから説明される。
【0029】
第1ステップS1では、ドライバーは処理されるソースイメージのサイズをチェックし、GPU16の容量、特にストレージ容量が1つのバッチでイメージ全体を処理するのに十分かどうかを判定する。十分ではない場合、イメージは複数のタイルに分割され、次いで、GPU16により順々に処理されることになる。図3は、イメージ全体を表し、各タイルが特定の幅Wと特定の高さHを有する、いくつかのタイル44に分割される、ピクセル配列42の一部を例示している。
【0030】
ステップS2では、ドライバーはGPU16のいくつかのパラメータを設定する。これには、例えば、ソースファイル18で使用されるカラーシステムを識別すること、GPUをそのカラーシステムに設定すること、RGBカラーからCMYKカラーへの変換のために下色除去(UCR)係数を指定すること、テクスチャーおよびそのサイズを指定すること、タイプを指定することなどが含まれる。
【0031】
ステップS3では、ソースファイル、閾値マトリックス、およびブラック生成テーブルのデータを含むデータ配列が対応するテクスチャー28〜38にバインドされ、その結果、データは直ちにGPUのテクスチャーにアップロードされることができる。
【0032】
ステップS4では、ピクセル配列のX方向とY方向でブロックのピクセルの数を示すことによってブロックサイズが定義される。ブロックの概念は、GPU16のメモリー階層構造に関係している。各スレッドには、専用のローカルメモリー、同じブロックのすべてのスレッドから可視可能な共有メモリー、およびグローバルメモリーがある。ブロックサイズは、使用可能なメモリーの最適な使用法およびスレッドの最適なメモリーアクセスを考慮して選択される。ブロックは、XおよびY方向に延びるグリッドに配置される。
【0033】
ステップS5では、グリッドサイズ、すなわち、X方向およびY方向のブロックの数がタイル44の幅Wおよび高さH、ならびにステップS4で定義されたブロックサイズに基づき計算され、その結果、グリッドはタイル全体をカバーする。
【0034】
図4は、ブロック46のオーバーレイグリッドとともにタイル44の左上隅を示している。この例では、ブロックサイズは16x4である。各ブロック46は、一組のID(Block_ID_X、Block_ID_Y)で識別される。同様に、ブロック内のスレッド48は一組のスレッドID(Thread_ID_X、Thread_ID_Y)で識別される。したがって例えば、図4でハッチングされて示されているスレッド48はBlock_ID_X=1、Block_ID_Y=0、Thread_ID_X=3、およびThread_ID_Y=2で識別される。
【0035】
図2の次のステップはステップS6で、ここでは、GPUカーネルが呼び出されて実行され、それについては、図5に関連して以下で説明される。
【0036】
イメージ全体がタイルに分割されており、その結果、S6ではイメージの単一のハーフトーン処理済みタイルとなっている場合には、ステップS6の次にステップS7が続き、ここでは、カーネルから返された結果が正しいタイル位置の出力ファイル20に貼り付けられ、その結果、出力イメージ全体は、すべてのタイルが図2で示されている仕方で処理されると直ぐに完成される。
【0037】
図5では、ステップS6で呼び出され、GPU16によって実行されるカーネルの基本的なステップを示している。図5で示される動作は、タイル44の内、GPU16が同時に処理できるだけのスレッド、理想的にはすべてのスレッド(すなわち、すべてのピクセル)に当てはまる。
【0038】
ステップS61は、タイル44を基準としたピクセル位置(ix、iy)および入力テクスチャー28の座標位置(X、Y)の計算するための機能を果たす。ピクセル位置(ix、iy)は整数で付与され、次のように計算される。
ix=Block_ID_X*Block_Size_X+Thread_ID_X
iy=Block_ID_Y*Block_Size_Y+Thread_ID_Y
ここで、Block_Size_XとBlock_Size_Yは、XおよびY方向のブロック46の寸法である。したがって、図4のハッチングされたピクセル48の場合、その結果は、ix=1*16+3=19、およびiy=0*4+2=2である。図4で確認することができるように、(ix、iy)は、タイルの左上隅からピクセルを計数することにより、ピクセルまたはスレッドの位置を示している。
【0039】
入力テクスチャー28を基準としたピクセルの座標の計算は、ソースファイルのカラーシステムおよび入力テクスチャー28でどのように明度が編成されるかの方法で異なる。
【0040】
図6では、RGBカラーシステムのイメージデータを使ってロードされる入力テクスチャー28の一部を示している。ピクセル位置ix=0およびiy=0の明度R0、0、G0、0、およびB0、0は、ライン0(すなわち、Y座標の位置0)の最初の3つのx座標位置0、1、および2を占める。同様に、他のすべてのピクセルの3つの明度は、x方向の隣接する3つの座標位置に付与される。図6ではさらに、ピクセル位置(ix、iy)のスレッドがテクスチャー座標(x、y)上にどのようにマッピングされるかも例示しており、次のとおりである。
x=3*ix+0.5
y=iy+0.5
【0041】
「0.5」の加算で、データがテクスチャーのそれぞれのセルの中心からサンプリングされることを確実にする。
【0042】
図5のステップS62では、図6の式(I)で例示されているように、明度が入力テクスチャー28からフェッチされる。この式のtexi(x、y)は、入力テクスチャー28の座標位置(x、y)から明度をフェッチする関数である。3つの明度(R、G、B)で3つのベクトルを形成し、その成分は入力テクスチャー28のそれぞれ、座標位置x、x+1、およびx+2から読み取られる。
【0043】
図7は、図6に類似した図で、入力テクスチャー28のデータが、イメージ処理でよく使用される別のシステムである、BGRカラーシステムの場合を例示している。この場合、各ピクセルの明度B0、0、G0、0、R0、0が入力テクスチャーの隣り合った3つのx座標位置に反対の順序で書き込まれる。ステップS62でデータがテクスチャーから読み取られると、そのデータは、図7の式(II)で示されているように、ベクトル(R、G、B)の成分がx座標位置から読み取られる順序を反転することによって、RGBシステムに変換される。
【0044】
図8では、入力テクスチャー28のデータがCMYKカラーシステムである場合を例示している。この場合、テクスチャーは、ピクセルごとに4つの明度C、M、Y、およびKを収容するために、係数4でx方向に並べられる。したがって明度は、図8の式(III)で示されているように、テクスチャーから読み取られる4つのベクトル(C、M、Y、K)を形成する。
【0045】
入力テクスチャー28のデータがRGBまたはBGRカラーシステムの場合、図5のステップS63でCMYKシステムに変換する必要がある。この変換は、よく知られているやり方で行われる。例えば、明度が8ビットの単語で付与されている場合には、シアンの明度Cを取得するために、最大値255からBを減じる必要がある。明度MおよびYは、同じ方法でそれぞれの補色から計算される。これらすべての減算は、単一のベクトル演算で行われることができる。次いで、ピクセルのグレー値を取得するために、その結果のベクトル(C、M、Y)の3つの成分の最小値が検索される。次いで、対応するK値(ブラック)がブラック生成テクスチャー30で調べられる。最終的に、明度C、M、およびYが、K値(下色除去)の特定のパーセント(UCR係数)だけ低減化される。図6の式(VI)では、これらの演算は、ベクトル(C、M、Y、K)を生じさせるために、ベクトル(R、G、B)に適用される関数fによりまとめられており、ここで、関数fは、別の引数としてUCR係数を有しており、ブラック生成テクスチャー30にバインドされている。
【0046】
図7のようにソースデータがBGRシステムの場合にも、同じ変換が行われるが、一方、データがすでにCMYKシステムの場合には(図8)、変換は必要ない。
【0047】
図5のステップS64では、ピクセルのCMYK明度と比較されるために、閾値が閾値テクスチャー32〜38からフェッチされる。図9では、例えば、シアンの閾値テクスチャー32である、閾値テクスチャーの1つの左上隅を示している。図6および図7と同様に、ピクセルごとに3つの閾値T1、T2、およびT3を収容するために、テクスチャーがx方向に係数3によって並べられる。したがって、閾値テクスチャーは、入力テクスチャー28を指定するために図6および図7で使用されたものと同じ座標(x、y)によって指定されることができる。
【0048】
しかしながら、閾値テクスチャー32〜38のサイズは入力テクスチャー28のサイズより小さい。その理由は、閾値テクスチャーはイメージ全体またはタイル全体の小さな部分(マクロピクセル)のみをカバーする閾値マトリックスを表すからである。より正確には、各閾値テクスチャーは3つの閾値マトリックスまたは3つの層(それぞれ、閾値T1、T2、およびT3を示す)を伴う単一の閾値マトリックスを表すものである。図10で示されているように、タイル44は、閾値マトリックスのコピーからなる反復型のパターンにより完全にカバーされている。図10のマトリックス要素は「T1、1、...Tn、1」、「T1、m」、「Tn、m」として示されており、ここで、「T」は閾値または図9で示されている層T1、T2、またはT3のいずれかを表す。反復型のパターンは、ピクセルモジュロのixおよびiy座標、それぞれの方向の閾値マトリックスのサイズを取り、次にテクスチャーマトリックス32〜38を指定するための結果を使用することにより生成されることができる。y座標の場合、図10で示しているように、タイル44を基準として閾値マトリックスのパターンを移動するため、特定の垂直オフセットvOが追加される場合がある。
【0049】
処理されるピクセルの3つの閾値T1、T2、およびT3をフェッチするため、図6に関連して述べられたものと同様に、閾値テクスチャーがx座標位置x、x+1、およびx+2で読み取られる。
【0050】
4つすべての閾値テクスチャー32〜38も同じように指定されることができる。そのため、ステップS64では最終的に、各カラー成分の3つの閾値を示す3つの4ベクトル(TC1、TM1、TY1、TK1)、(TC2、TM2、TY2、TK2)、(TC3、TM3、TY3、TK3)が生じる。
【0051】
図5のステップS65では、成分は可能性のある4つの値「0」、「1」、「2」、および「3」の内の1つのみを有する、4ベクトル(HC、HM、HY、HK)を形成するハーフトーンされた出力明度を取得するために、ピクセルのCMYK明度が閾値と比較される。計算は図11および図12に示されている。図11によると、計算は4ベクトル(3、3、3、3)から開始し、次にそれから、それぞれベクトル(C、M、Y、K)と(TC1、TM1、TY1、TK1)、(C、M、Y、K)と(TC2、TM2、TY2、TK2)、および(C、M、Y、K)と(TC3、TM3、TY3、TK3)に適用される(4ベクトル)ステップ関数「step」の結果を減算する。
【0052】
ステップ関数の結果は図12に例示されている。ステップ形状グラフ50では、関数(この例ではC成分のみが示されている)の結果がどのようにピクセル位置(ix、iy)の明度Cに依存しているかを例示している。確認されることができるように、関数では、閾値TC1により示される位置で、ステップを値「0」から値「1」にする。ステップ関数のM、Y、およびK成分も類似したやり方で構成される。
【0053】
したがって、各ステップ関数の出力の成分は、対応する明度が閾値より大きいかどうかに応じて、「0」または「1」のいずれかの値を有している。そのような訳で、図11で示されている3つの減算ステップは、開始ベクトル(3、3、3、3)の成分「3」が各減算ステップの1つにより低減化される場合の結果も、されない場合の結果もあり、そのため、結果は、「0」、「1」、「2」、および「3」の値の内の1つになる。結果として、ベクトル(HC、HM、HY、HK)は、タイル44内の各ピクセルのハーフトーンプロセスの結果として取得される3つのレベルのハーフトーンベクトルである(ixがWより大きい、またはiyがHより大きいピクセル位置は評価されない)。
【0054】
ステップS65で取得されたベクトル(HC、HM、HY、HK)の成分は引き続き、浮動小数点値である。これは、結果を再フォーマットするため、すなわち、4つの出力明度を単一の8ビットの単語に短縮するための最後のステップS66(図5)が適用される理由である。ここで、最初の2ビットはK値(「0」、「1」、「2」、または「3」のいずれか)を示し、次の2ビットはC値を示し、次の2ビットはM値を示し、そして最後の2ビットはY値を示している。このフォーマットで、ピクセルごとの結果が出力ファイル20にダウンロードされる。
【0055】
上述された例では、入力ピクセル配列の各ピクセルが対応する閾値の組と直接比較されるものとしている。しかしながら変更された実施形態では、入力テクスチャーのピクセルに追加の動作を適用することも可能である。例えば、明度はマクロピクセルにより平均されることもでき、その結果、平均だけが閾値と比較される必要がある。そのような平均化手順は、GPU16上で容易に行われることができ、とりわけ、マクロピクセルとブロックが、同じマクロピクセルに属するスレッドも同じブロックに属するように定義される場合である。
【技術分野】
【0001】
本発明は、イメージのハーフトーン化の方法に関し、第1の数のビットで付与された少なくとも1つの入力明度が各ピクセルに割り当てられる、第1のピクセル配列の形でイメージを表現するソースファイルが、電子的に処理され、第2の数のビットで付与された少なくとも1つの出力明度が第2のピクセル配列の各ピクセルに割り当てられる第2のピクセル配列の形で出力ファイルを計算し、前記第2の数は第1の数未満である。
【背景技術】
【0002】
デジタルイメージ処理および印刷の技術分野では、イメージは通常、電子ラスターイメージファイルの形で表現される。ラスターイメージはピクセルの複数の行と列に分割され、ピクセル配列の形を取る。ここで、輝度または明度を示す1つまたは複数の値がそれぞれ個々のピクセルに割り当てられる。黒と白のイメージの場合、単一の色(黒)しかないので、個々のピクセルに割り当てられた「明度」の値は、それぞれのピクセルのグレーレベルを示す。例えば、8ビットの明度では、0(白)から255(黒)の範囲の256の異なるグレーレベルを定義できる。カラーイメージの場合、各ピクセルには、割り当てられた通常3〜4の明度があり、それは例えば、RGBシステムでは赤色(R)、緑色(G)、および青色(B)で、CMYKカラーシステムでは、シアン(C)、マゼンタ(M)、黄色(Y)、および黒色(K)である。コンピュータで作成されたり、スキャナーで取り込まれたイメージでは、例えば、各明度は再度8ビットを有する場合がある。
【0003】
しかしながら、ほとんどのデジタルプリンターは、256の異なるグレーレベルまたはカラーレベルを、対応する数の異なるサイズまたは密度レベルで印刷されたドットに直接変換することはできない。多くのプリンターができるのは、一定のサイズおよび密度でドットを印刷するか、印刷しないかのいずれかだけである。他のプリンターの場合、わずかな数、例えば、ピクセルおよび色ごとに4つの異なるサイズまたは密度で、ドットを生成することができる。例えば、プリンターが異なる3つのドットサイズを生成できる場合には、イメージは、ピクセル配列の形でプリンターに提示される必要があり、ここで、各明度は2ビットまでである。
【0004】
結果的に、例えば、明度ごとにビットの数を8から2へ低減化し、一方、印刷されたイメージの光学的印象を可能な限り保持するプロセスが必要とされる。このプロセスは、ビットの低減化数が1より大きい場合には、「ハーフトーン化」または「マルチレベルハーフトーン化」と呼ばれる。
【0005】
知られているハーフトーン化アルゴリズムには通常、閾値化ステップが含まれ、ここでは、ソースイメージのピクセルの明度が閾値または一組の閾値と比較される。例えば、明度は異なる3つの閾値と比較される場合があり、結果としての明度は、いくつの閾値が超過されるかに応じて、0、1、2、または3となる。
【0006】
ハーフトーン処理で得られる第2のピクセル配列の明度が、異なる4つの密度値を表す、例えば2ビットというわずかな値しかない場合でも、印刷されたイメージでより多数の異なる密度値を生成することは可能である。このことは、第2のピクセル配列の明度を、異なる明度を有する隣接したピクセルの組み合わせた作用が中間の密度レベルに対応する視覚的印象になるように配列することによって達成される。一般に、このようにして得られるハーフトーンイメージの解像度は、ソースイメージの解像度より少なくなる。
【0007】
そのようなハーフトーン処理の通常の例は、いわゆるディザー法であり、それでは、ソースイメージの明度がいくつかの隣接するピクセルをカバーする閾値マトリックス(ディザー法マトリックス)のマトリックス要素と比較される。その結果、一定の密度であるソースイメージの領域であっても、ハーフトーン処理の2ビット明度では、マトリックスの閾値の分布に応じて、特定の広がりを示すことになる。
【0008】
知られているハーフトーン処理の別の例は、いわゆる誤差拡散で、それでは、ソースイメージの明度(8ビット)が、例えば、2ビットの出力明度で概算され、誤差が隣り合ったピクセルの出力明度を適切に計算することによって補正される。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】欧州特許出願公開第08154135号明細書
【発明の概要】
【発明が解決しようとする課題】
【0010】
従来のプリンターの場合、ハーフトーン処理はいわゆるプリンターのフロントエンドの中央処理装置(CPU)で行われる。しかしながら、ハーフトーン化は、とりわけ大型のフォーマットカラーイメージの場合、かなりの量の処理能力および時間を必要とするプロセスである。CPUのハーフトーン処理を高速化するためのいくつかの技術が知られているが、これらの技術は一般に、ソースイメージの特定の特性に依存しており、そのため、ハーフトーン処理が高速化される程度は、処理される特定のイメージにより異なる。その結果、プリンターの動作全体のスケジューリングに望ましい、事前に必要な処理時間を概算することは困難である。
【0011】
より短いおよび/またはより予測可能な処理時間内に実行されることが可能なハーフトーン化方法を提供することが本発明の目的である。
【課題を解決するための手段】
【0012】
上記の目的を達成するために、本発明による本方法は、処理がグラフィックスプロセッシングユニット(GPU)で行われることを特徴としている。
【0013】
今日、GPUは画面上に表示されるレンダリングイメージ向けのコンピュータシステムで使用される。GPUの技術は、主にエンターテイメント業界の主導で急速な進歩を経験しており、その結果、市販されているGPUは比較的安価であるが、それにもかかわらず、イメージ処理に必要な大量のデータを処理する点で非常に強力である。特に、GPUには高度な並列アーキテクチャがあり、そのため、多数のスレッドが並行して処理されることができる。GPUの通常のタスクには、例えば、様々な視点からのシーンを表示するための座標変更、例えば、照明効果などを表現するピクセルシェーディングが含まれる。
【0014】
これらのタスクはハーフトーン化プロセスで直面するタスクとはまったく異なっているが、同様にこれらのタスクも非常に効率的なやり方で行うために、使用可能なGPUはプログラムされるようにすることができることになる。
【0015】
1つのスレッドが同時に処理される別のスレッドで得られる結果に依存していないという意味で、スレッドが互いに独立していることが並列処理の前提条件である。誤差拡散に基づくハーフトーン化プロセスでは、誤差の伝搬が一般的に直近のピクセルに限定されることができる場合には、この状態は少なくとも、十分な距離、隔てられているピクセルで実現される。閾値マトリックスに基づくハーフトーン化プロセスでは、異なるピクセルを処理するスレッドは、この意味で互いに独立しており、その結果、並列度の度合いはGPUの能力によってのみ限定される。いずれの場合でも、イメージのピクセルの総数およびGPUの能力が知られている場合、処理されるイメージの内容に関係なく、ハーフトーン処理に必要とされる時間を概算することが常に可能になる。
【0016】
本発明はさらに、本発明による方法を実装するプリンターおよびコンピュータプログラム製品にも関する。
【0017】
本発明のより具体的な光学的機能は、従属請求項で示される。
【0018】
好適な実施形態はこれから、次の図面に関連して説明される。
【図面の簡単な説明】
【0019】
【図1】本発明による方法を行うようになされたプリンターのブロック図である。
【図2】プリンターのCPU上で実行するGPU処理ドライバーの流れ図である。
【図3】タイリング手順を例示する図である。
【図4】GPUのタイルのピクセルの並行処理の構造を例示する図である。
【図5】GPU上で実行するカーネルの流れ図である。
【図6】異なる1つのタイプの入力データに対して、テクスチャーから明度をフェッチするステップを例示する図である。
【図7】異なる1つのタイプの入力データに対して、テクスチャーから明度をフェッチするステップを例示する図である。
【図8】異なる1つのタイプの入力データに対して、テクスチャーから明度をフェッチするステップを例示する図である。
【図9】複数の閾値マトリックスを含むテクスチャーを例示する図である。
【図10】閾値マトリックスでイメージをタイリングするためのスキームを例示する図である。
【図11】カーネルで実行される閾値化ステップを例示する図である。
【図12】閾値化ステップで使用されるステップ関数を例示する図である。
【発明を実施するための形態】
【0020】
図1に略示されているプリンターは、フロントエンド10および印刷エンジン12を備えている。フロントエンド10には、プリンターに供給される電子印刷データを、印刷エンジン12を使用して印刷されるのに適切なフォーマットに変換するタスクがある。当該分野で一般的に知られているように、フロントエンド10は、CPU14のほか、プログラムコードとデータを格納するためのメモリー空間も備え、さらに、ここではそのどちらも示していないが、入力および制御手段も備えている。
【0021】
示されている実施形態の場合、フロントエンド10は、ディスプレイ画面でイメージを表現するため、現代のパーソナルコンピュータ、ゲームコンソール、またはワークステーションで通常使用されるタイプのグラフィックスプロセッシングユニット(GPU)16を備えている。GPU16は、別個の集積回路で形成されることも、同じ基板にCPU14および他の回路そしてメモリーも一体化されることも可能である。
【0022】
図1ではさらに、フロントエンド10で受領され処理されるイメージデータを含むソースファイル18も示している。例として、ソースファイルにエンコードされたイメージはカラーイメージで、カラーはRGBまたはCMYKなどのよく使用される色空間で指定されるものとする。ソースファイルの色空間は、プリンターで使用される色空間とは異なる場合がある。そのため、例えば、欧州特許出願公開第08154135号明細書に記述されているように、フロントエンド10は、ソースファイル18の色空間を印刷エンジン12の色空間に適合させるための適切な色管理アルゴリズムを行うことができる。
【0023】
例として、ここでは、ソースファイル18の各ピクセルの色は、それぞれが8ビットの幅を有する3つまたは4つの明度で定義されるものとする。マルチレベルハーフトーンプロセスは、ソースファイルによって表現されるピクセル配列を、各ピクセルの色が4つの明度C、M、Y、Kによって定義され、それぞれの幅が2ビットのみである、ピクセル配列に変換するために適用されるものである。したがって、各明度は、印刷エンジン12が再生できる異なる4つのレベルであるものとする。このプロセスの結果は、印刷エンジン12に送られることができる出力ファイル20である。
【0024】
ここに記述されている例では、閾値アルゴリズムがハーフトーン化に使用されている。さらに、説明を簡単にするために、ソースファイル18および出力ファイル20で表現されるピクセル配列は同一の形状およびサイズであるものとし、そのため、ソースファイルのピクセルと出力ファイルのピクセル間には一対一の対応関係が存在し、ソースファイルの各ピクセルは、ピクセル配列の特定の領域をカバーする、閾値マトリックスで付与された閾値と比較される。
【0025】
ハーフトーン化の目的のために、CPU14はGPU処理ドライバー22と呼ばれる特定のソフトウェアを実行して、GPU16のパラメータを設定し、それからGPU16で実行されるいわゆるカーネル、すなわちプログラムを呼び出す。GPU16の処理パート24には、カーネルで指定された命令を同時に、多数のデータオブジェクトに適用するいくつかのマルチプロセッサが含まれ、現在の例の場合、これらデータオブジェクトには、ソースファイルの全部または少なくとも多数のピクセルが並列スレッドで処理されるようなソースファイルの個々のピクセルのデータが含まれる。
【0026】
さらにGPU16には、いわゆるテクスチャーを格納するために使用される、いくつかの固定メモリー、すなわち固定サイズの複数のメモリーを収容するように構成されることができるメモリーパート26が含まれる。テクスチャーは、CPU上で処理されるデータ配列と同様の1、2、または3次元データ配列であるが、データ配列の要素が浮動小数点インデックスで指定される場合のある特定の機能を伴う。このことは、プロセッサパート24がテクスチャーに格納された不連続データ間を補間するための強力なプロセスを提供するために起きる可能性がある。
【0027】
示されている例では、テクスチャーは、ソースファイルで表現される入力イメージ(入力ピクセル配列)を格納する入力テクスチャー28、RGBカラーをCMYKカラーに変換するために必要とされるブラック生成テーブル30、4色C、M、Y、Kのそれぞれにつき1つの、4つの閾値テクスチャー32、34、36、38、および必要に応じて、出力ピクセル配列が出力ファイル20としてフロントエンドのシステムメモリーに転送される前に、出力ピクセル配列をバッファリングするための出力テクスチャー40を備えている。代替形態として、出力ファイルを生成するために、カーネルが直接結果をシステムメモリーに返すこともできる。ダウンロードおよびアップロード手順を高速化するために、直接アクセスメモリー(DMA)が使用されることが好適である。
【0028】
GPU処理ドライバー22の機能については、図2を参照してこれから説明される。
【0029】
第1ステップS1では、ドライバーは処理されるソースイメージのサイズをチェックし、GPU16の容量、特にストレージ容量が1つのバッチでイメージ全体を処理するのに十分かどうかを判定する。十分ではない場合、イメージは複数のタイルに分割され、次いで、GPU16により順々に処理されることになる。図3は、イメージ全体を表し、各タイルが特定の幅Wと特定の高さHを有する、いくつかのタイル44に分割される、ピクセル配列42の一部を例示している。
【0030】
ステップS2では、ドライバーはGPU16のいくつかのパラメータを設定する。これには、例えば、ソースファイル18で使用されるカラーシステムを識別すること、GPUをそのカラーシステムに設定すること、RGBカラーからCMYKカラーへの変換のために下色除去(UCR)係数を指定すること、テクスチャーおよびそのサイズを指定すること、タイプを指定することなどが含まれる。
【0031】
ステップS3では、ソースファイル、閾値マトリックス、およびブラック生成テーブルのデータを含むデータ配列が対応するテクスチャー28〜38にバインドされ、その結果、データは直ちにGPUのテクスチャーにアップロードされることができる。
【0032】
ステップS4では、ピクセル配列のX方向とY方向でブロックのピクセルの数を示すことによってブロックサイズが定義される。ブロックの概念は、GPU16のメモリー階層構造に関係している。各スレッドには、専用のローカルメモリー、同じブロックのすべてのスレッドから可視可能な共有メモリー、およびグローバルメモリーがある。ブロックサイズは、使用可能なメモリーの最適な使用法およびスレッドの最適なメモリーアクセスを考慮して選択される。ブロックは、XおよびY方向に延びるグリッドに配置される。
【0033】
ステップS5では、グリッドサイズ、すなわち、X方向およびY方向のブロックの数がタイル44の幅Wおよび高さH、ならびにステップS4で定義されたブロックサイズに基づき計算され、その結果、グリッドはタイル全体をカバーする。
【0034】
図4は、ブロック46のオーバーレイグリッドとともにタイル44の左上隅を示している。この例では、ブロックサイズは16x4である。各ブロック46は、一組のID(Block_ID_X、Block_ID_Y)で識別される。同様に、ブロック内のスレッド48は一組のスレッドID(Thread_ID_X、Thread_ID_Y)で識別される。したがって例えば、図4でハッチングされて示されているスレッド48はBlock_ID_X=1、Block_ID_Y=0、Thread_ID_X=3、およびThread_ID_Y=2で識別される。
【0035】
図2の次のステップはステップS6で、ここでは、GPUカーネルが呼び出されて実行され、それについては、図5に関連して以下で説明される。
【0036】
イメージ全体がタイルに分割されており、その結果、S6ではイメージの単一のハーフトーン処理済みタイルとなっている場合には、ステップS6の次にステップS7が続き、ここでは、カーネルから返された結果が正しいタイル位置の出力ファイル20に貼り付けられ、その結果、出力イメージ全体は、すべてのタイルが図2で示されている仕方で処理されると直ぐに完成される。
【0037】
図5では、ステップS6で呼び出され、GPU16によって実行されるカーネルの基本的なステップを示している。図5で示される動作は、タイル44の内、GPU16が同時に処理できるだけのスレッド、理想的にはすべてのスレッド(すなわち、すべてのピクセル)に当てはまる。
【0038】
ステップS61は、タイル44を基準としたピクセル位置(ix、iy)および入力テクスチャー28の座標位置(X、Y)の計算するための機能を果たす。ピクセル位置(ix、iy)は整数で付与され、次のように計算される。
ix=Block_ID_X*Block_Size_X+Thread_ID_X
iy=Block_ID_Y*Block_Size_Y+Thread_ID_Y
ここで、Block_Size_XとBlock_Size_Yは、XおよびY方向のブロック46の寸法である。したがって、図4のハッチングされたピクセル48の場合、その結果は、ix=1*16+3=19、およびiy=0*4+2=2である。図4で確認することができるように、(ix、iy)は、タイルの左上隅からピクセルを計数することにより、ピクセルまたはスレッドの位置を示している。
【0039】
入力テクスチャー28を基準としたピクセルの座標の計算は、ソースファイルのカラーシステムおよび入力テクスチャー28でどのように明度が編成されるかの方法で異なる。
【0040】
図6では、RGBカラーシステムのイメージデータを使ってロードされる入力テクスチャー28の一部を示している。ピクセル位置ix=0およびiy=0の明度R0、0、G0、0、およびB0、0は、ライン0(すなわち、Y座標の位置0)の最初の3つのx座標位置0、1、および2を占める。同様に、他のすべてのピクセルの3つの明度は、x方向の隣接する3つの座標位置に付与される。図6ではさらに、ピクセル位置(ix、iy)のスレッドがテクスチャー座標(x、y)上にどのようにマッピングされるかも例示しており、次のとおりである。
x=3*ix+0.5
y=iy+0.5
【0041】
「0.5」の加算で、データがテクスチャーのそれぞれのセルの中心からサンプリングされることを確実にする。
【0042】
図5のステップS62では、図6の式(I)で例示されているように、明度が入力テクスチャー28からフェッチされる。この式のtexi(x、y)は、入力テクスチャー28の座標位置(x、y)から明度をフェッチする関数である。3つの明度(R、G、B)で3つのベクトルを形成し、その成分は入力テクスチャー28のそれぞれ、座標位置x、x+1、およびx+2から読み取られる。
【0043】
図7は、図6に類似した図で、入力テクスチャー28のデータが、イメージ処理でよく使用される別のシステムである、BGRカラーシステムの場合を例示している。この場合、各ピクセルの明度B0、0、G0、0、R0、0が入力テクスチャーの隣り合った3つのx座標位置に反対の順序で書き込まれる。ステップS62でデータがテクスチャーから読み取られると、そのデータは、図7の式(II)で示されているように、ベクトル(R、G、B)の成分がx座標位置から読み取られる順序を反転することによって、RGBシステムに変換される。
【0044】
図8では、入力テクスチャー28のデータがCMYKカラーシステムである場合を例示している。この場合、テクスチャーは、ピクセルごとに4つの明度C、M、Y、およびKを収容するために、係数4でx方向に並べられる。したがって明度は、図8の式(III)で示されているように、テクスチャーから読み取られる4つのベクトル(C、M、Y、K)を形成する。
【0045】
入力テクスチャー28のデータがRGBまたはBGRカラーシステムの場合、図5のステップS63でCMYKシステムに変換する必要がある。この変換は、よく知られているやり方で行われる。例えば、明度が8ビットの単語で付与されている場合には、シアンの明度Cを取得するために、最大値255からBを減じる必要がある。明度MおよびYは、同じ方法でそれぞれの補色から計算される。これらすべての減算は、単一のベクトル演算で行われることができる。次いで、ピクセルのグレー値を取得するために、その結果のベクトル(C、M、Y)の3つの成分の最小値が検索される。次いで、対応するK値(ブラック)がブラック生成テクスチャー30で調べられる。最終的に、明度C、M、およびYが、K値(下色除去)の特定のパーセント(UCR係数)だけ低減化される。図6の式(VI)では、これらの演算は、ベクトル(C、M、Y、K)を生じさせるために、ベクトル(R、G、B)に適用される関数fによりまとめられており、ここで、関数fは、別の引数としてUCR係数を有しており、ブラック生成テクスチャー30にバインドされている。
【0046】
図7のようにソースデータがBGRシステムの場合にも、同じ変換が行われるが、一方、データがすでにCMYKシステムの場合には(図8)、変換は必要ない。
【0047】
図5のステップS64では、ピクセルのCMYK明度と比較されるために、閾値が閾値テクスチャー32〜38からフェッチされる。図9では、例えば、シアンの閾値テクスチャー32である、閾値テクスチャーの1つの左上隅を示している。図6および図7と同様に、ピクセルごとに3つの閾値T1、T2、およびT3を収容するために、テクスチャーがx方向に係数3によって並べられる。したがって、閾値テクスチャーは、入力テクスチャー28を指定するために図6および図7で使用されたものと同じ座標(x、y)によって指定されることができる。
【0048】
しかしながら、閾値テクスチャー32〜38のサイズは入力テクスチャー28のサイズより小さい。その理由は、閾値テクスチャーはイメージ全体またはタイル全体の小さな部分(マクロピクセル)のみをカバーする閾値マトリックスを表すからである。より正確には、各閾値テクスチャーは3つの閾値マトリックスまたは3つの層(それぞれ、閾値T1、T2、およびT3を示す)を伴う単一の閾値マトリックスを表すものである。図10で示されているように、タイル44は、閾値マトリックスのコピーからなる反復型のパターンにより完全にカバーされている。図10のマトリックス要素は「T1、1、...Tn、1」、「T1、m」、「Tn、m」として示されており、ここで、「T」は閾値または図9で示されている層T1、T2、またはT3のいずれかを表す。反復型のパターンは、ピクセルモジュロのixおよびiy座標、それぞれの方向の閾値マトリックスのサイズを取り、次にテクスチャーマトリックス32〜38を指定するための結果を使用することにより生成されることができる。y座標の場合、図10で示しているように、タイル44を基準として閾値マトリックスのパターンを移動するため、特定の垂直オフセットvOが追加される場合がある。
【0049】
処理されるピクセルの3つの閾値T1、T2、およびT3をフェッチするため、図6に関連して述べられたものと同様に、閾値テクスチャーがx座標位置x、x+1、およびx+2で読み取られる。
【0050】
4つすべての閾値テクスチャー32〜38も同じように指定されることができる。そのため、ステップS64では最終的に、各カラー成分の3つの閾値を示す3つの4ベクトル(TC1、TM1、TY1、TK1)、(TC2、TM2、TY2、TK2)、(TC3、TM3、TY3、TK3)が生じる。
【0051】
図5のステップS65では、成分は可能性のある4つの値「0」、「1」、「2」、および「3」の内の1つのみを有する、4ベクトル(HC、HM、HY、HK)を形成するハーフトーンされた出力明度を取得するために、ピクセルのCMYK明度が閾値と比較される。計算は図11および図12に示されている。図11によると、計算は4ベクトル(3、3、3、3)から開始し、次にそれから、それぞれベクトル(C、M、Y、K)と(TC1、TM1、TY1、TK1)、(C、M、Y、K)と(TC2、TM2、TY2、TK2)、および(C、M、Y、K)と(TC3、TM3、TY3、TK3)に適用される(4ベクトル)ステップ関数「step」の結果を減算する。
【0052】
ステップ関数の結果は図12に例示されている。ステップ形状グラフ50では、関数(この例ではC成分のみが示されている)の結果がどのようにピクセル位置(ix、iy)の明度Cに依存しているかを例示している。確認されることができるように、関数では、閾値TC1により示される位置で、ステップを値「0」から値「1」にする。ステップ関数のM、Y、およびK成分も類似したやり方で構成される。
【0053】
したがって、各ステップ関数の出力の成分は、対応する明度が閾値より大きいかどうかに応じて、「0」または「1」のいずれかの値を有している。そのような訳で、図11で示されている3つの減算ステップは、開始ベクトル(3、3、3、3)の成分「3」が各減算ステップの1つにより低減化される場合の結果も、されない場合の結果もあり、そのため、結果は、「0」、「1」、「2」、および「3」の値の内の1つになる。結果として、ベクトル(HC、HM、HY、HK)は、タイル44内の各ピクセルのハーフトーンプロセスの結果として取得される3つのレベルのハーフトーンベクトルである(ixがWより大きい、またはiyがHより大きいピクセル位置は評価されない)。
【0054】
ステップS65で取得されたベクトル(HC、HM、HY、HK)の成分は引き続き、浮動小数点値である。これは、結果を再フォーマットするため、すなわち、4つの出力明度を単一の8ビットの単語に短縮するための最後のステップS66(図5)が適用される理由である。ここで、最初の2ビットはK値(「0」、「1」、「2」、または「3」のいずれか)を示し、次の2ビットはC値を示し、次の2ビットはM値を示し、そして最後の2ビットはY値を示している。このフォーマットで、ピクセルごとの結果が出力ファイル20にダウンロードされる。
【0055】
上述された例では、入力ピクセル配列の各ピクセルが対応する閾値の組と直接比較されるものとしている。しかしながら変更された実施形態では、入力テクスチャーのピクセルに追加の動作を適用することも可能である。例えば、明度はマクロピクセルにより平均されることもでき、その結果、平均だけが閾値と比較される必要がある。そのような平均化手順は、GPU16上で容易に行われることができ、とりわけ、マクロピクセルとブロックが、同じマクロピクセルに属するスレッドも同じブロックに属するように定義される場合である。
【特許請求の範囲】
【請求項1】
イメージのハーフトーン化の方法であって、第1の数のビットで付与された少なくとも1つの入力明度が各ピクセルに割り当てられる、第1のピクセル配列の形でイメージを表現するソースファイル(18)が、電子的に処理され、第2の数のビットで付与された少なくとも1つの出力明度が第2のピクセル配列の各ピクセルに割り当てられる第2のピクセル配列の形で出力ファイル(20)を計算し、前記第2の数は第1の数未満であって、処理がグラフィックスプロセッシングユニット(GPU)(16)で行われることを特徴とする、方法。
【請求項2】
第1のピクセル配列がGPU(16)の2次元入力テクスチャー(28)にロードされる、請求項1に記載の方法。
【請求項3】
複数の明度が第1のピクセル配列の各ピクセルに割り当てられ、明度を入力テクスチャー(28)に収容するために、このテクスチャーが、ピクセルごとの明度の数に対応する係数により1つの次元で拡大され、明度がこの入力テクスチャー(28)の隣接する座標位置(x、x+1、x+2)に書き込まれる、請求項2に記載の方法。
【請求項4】
明度を1つのカラーシステム(RGB;BGR)から別のもの(CMYK)に変換するステップを含み、前記ステップがGPU(16)で行われる、請求項1から3のいずれか一項に記載の方法。
【請求項5】
カラー変換ステップが、GPU(16)に格納された1次元のブラック生成テクスチャー(30)を参照してブラックカラー成分(K)を生成するステップを含む、請求項4に記載の方法。
【請求項6】
ハーフトーン処理が、ピクセルごとに少なくとも1つの閾値の比較を含む、請求項1から5のいずれか一項に記載の方法。
【請求項7】
少なくとも1つの閾値マトリックスがGPU(16)の閾値テクスチャー(32、34、36、38)にロードされる、請求項6に記載の方法。
【請求項8】
閾値マトリックスがピクセルごとに複数の閾値(T1、T2、T3)を含む、請求項7に記載の方法。
【請求項9】
ピクセルごとの閾値の数が少なくとも1つのカラーシステムでのピクセルごとの明度の数に対応し、閾値は、明度が入力テクスチャー(28)に配列されるものと同じパターンで閾値マトリックス(32〜38)に配列され、その結果、入力テクスチャー(28)からの明度のフェッチと閾値テクスチャー(32〜38)からの閾値のフェッチに、同じアドレス座標(x、y)が使用されることが可能である、請求項8に記載の方法。
【請求項10】
閾値の比較に、ステップ関数を一組の明度(C、M、Y、K)と対応する閾値(TC1〜TC3、TM1〜TM3、TY1〜TY3、TK1〜TK3)に適用するステップが含まれる、請求項6から9のいずれか一項に記載の方法。
【請求項11】
ステップ関数が、その各成分が異なる明度で動作するベクトルのステップ関数である、請求項10に記載の方法。
【請求項12】
rが各ピクセルの閾値の数である場合、出力明度(HC、HM、HY、HK)は、その各成分が値「r」を有する開始ベクトルで開始し、ステップ関数をr回、入力明度と異なる閾値の組み合わせに適用し、前記開始ベクトルからステップ関数の結果を減算することで計算される、請求項8および11に記載の方法。
【請求項13】
フロントエンド(10)および印刷エンジン(12)を備えるデジタルプリンターであって、フロントエンド(10)が請求項1から12のいずれか一項に記載の方法を実行するようになされていることを特徴とするデジタルプリンター。
【請求項14】
CPU(14)およびGPU(16)を有するデータ処理システムでの実行時に、CPUおよびGPUが請求項1から12のいずれか一項に記載の方法を実行するようにさせるプログラムコードを含むコンピュータプログラム製品。
【請求項1】
イメージのハーフトーン化の方法であって、第1の数のビットで付与された少なくとも1つの入力明度が各ピクセルに割り当てられる、第1のピクセル配列の形でイメージを表現するソースファイル(18)が、電子的に処理され、第2の数のビットで付与された少なくとも1つの出力明度が第2のピクセル配列の各ピクセルに割り当てられる第2のピクセル配列の形で出力ファイル(20)を計算し、前記第2の数は第1の数未満であって、処理がグラフィックスプロセッシングユニット(GPU)(16)で行われることを特徴とする、方法。
【請求項2】
第1のピクセル配列がGPU(16)の2次元入力テクスチャー(28)にロードされる、請求項1に記載の方法。
【請求項3】
複数の明度が第1のピクセル配列の各ピクセルに割り当てられ、明度を入力テクスチャー(28)に収容するために、このテクスチャーが、ピクセルごとの明度の数に対応する係数により1つの次元で拡大され、明度がこの入力テクスチャー(28)の隣接する座標位置(x、x+1、x+2)に書き込まれる、請求項2に記載の方法。
【請求項4】
明度を1つのカラーシステム(RGB;BGR)から別のもの(CMYK)に変換するステップを含み、前記ステップがGPU(16)で行われる、請求項1から3のいずれか一項に記載の方法。
【請求項5】
カラー変換ステップが、GPU(16)に格納された1次元のブラック生成テクスチャー(30)を参照してブラックカラー成分(K)を生成するステップを含む、請求項4に記載の方法。
【請求項6】
ハーフトーン処理が、ピクセルごとに少なくとも1つの閾値の比較を含む、請求項1から5のいずれか一項に記載の方法。
【請求項7】
少なくとも1つの閾値マトリックスがGPU(16)の閾値テクスチャー(32、34、36、38)にロードされる、請求項6に記載の方法。
【請求項8】
閾値マトリックスがピクセルごとに複数の閾値(T1、T2、T3)を含む、請求項7に記載の方法。
【請求項9】
ピクセルごとの閾値の数が少なくとも1つのカラーシステムでのピクセルごとの明度の数に対応し、閾値は、明度が入力テクスチャー(28)に配列されるものと同じパターンで閾値マトリックス(32〜38)に配列され、その結果、入力テクスチャー(28)からの明度のフェッチと閾値テクスチャー(32〜38)からの閾値のフェッチに、同じアドレス座標(x、y)が使用されることが可能である、請求項8に記載の方法。
【請求項10】
閾値の比較に、ステップ関数を一組の明度(C、M、Y、K)と対応する閾値(TC1〜TC3、TM1〜TM3、TY1〜TY3、TK1〜TK3)に適用するステップが含まれる、請求項6から9のいずれか一項に記載の方法。
【請求項11】
ステップ関数が、その各成分が異なる明度で動作するベクトルのステップ関数である、請求項10に記載の方法。
【請求項12】
rが各ピクセルの閾値の数である場合、出力明度(HC、HM、HY、HK)は、その各成分が値「r」を有する開始ベクトルで開始し、ステップ関数をr回、入力明度と異なる閾値の組み合わせに適用し、前記開始ベクトルからステップ関数の結果を減算することで計算される、請求項8および11に記載の方法。
【請求項13】
フロントエンド(10)および印刷エンジン(12)を備えるデジタルプリンターであって、フロントエンド(10)が請求項1から12のいずれか一項に記載の方法を実行するようになされていることを特徴とするデジタルプリンター。
【請求項14】
CPU(14)およびGPU(16)を有するデータ処理システムでの実行時に、CPUおよびGPUが請求項1から12のいずれか一項に記載の方法を実行するようにさせるプログラムコードを含むコンピュータプログラム製品。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公表番号】特表2013−511179(P2013−511179A)
【公表日】平成25年3月28日(2013.3.28)
【国際特許分類】
【出願番号】特願2012−538295(P2012−538295)
【出願日】平成22年11月8日(2010.11.8)
【国際出願番号】PCT/EP2010/066998
【国際公開番号】WO2011/057981
【国際公開日】平成23年5月19日(2011.5.19)
【出願人】(390039435)オセ−テクノロジーズ・ベー・ヴエー (103)
【氏名又は名称原語表記】OCE’−NEDERLAND BESLOTEN VENNOOTSHAP
【Fターム(参考)】
【公表日】平成25年3月28日(2013.3.28)
【国際特許分類】
【出願日】平成22年11月8日(2010.11.8)
【国際出願番号】PCT/EP2010/066998
【国際公開番号】WO2011/057981
【国際公開日】平成23年5月19日(2011.5.19)
【出願人】(390039435)オセ−テクノロジーズ・ベー・ヴエー (103)
【氏名又は名称原語表記】OCE’−NEDERLAND BESLOTEN VENNOOTSHAP
【Fターム(参考)】
[ Back to top ]