本発明は、ソース色空間の色値を黒色チャンネルを有するデスティネーション色空間の色値に変換する色処理に関する。
色管理システムは、デバイスに依存する色空間からデバイスに依存しない色空間へ色を変換し、デバイスに依存しない色空間からデバイスに依存する色空間へ色を変換するために、色変換を利用する。種々のデバイスが様々な方法で色を表示するため、この方法は有益である。例えば、表示装置は、赤色、緑色、青色(RGB)の光を混合して色を表示する。一方、プリンタは、シアン、マゼンタ、イエローと黒色(CMYK)のインクの混合を、色の印刷に利用する。RGBディスプレイに表示した画像が、CMYKプリンタで印刷した画像と同一に見えるようにするには、二つの異なるデバイス間において色の忠実性を維持することが有益である。色の忠実性を維持するためには、RGB値をデバイスに依存しないカラーアピアランス空間に変換し、その後、デバイスに依存しない色空間の色をCMYK値に変換する。このようにして、異なるデバイス間で、色が正確にマッピングされ再現される。
このマッピングは、一般的に、色変換により達成される。従来から、色変換は、複数の既知の入力に対する特定のデバイスの出力を測定することにより作成される。例えば、CMYKプリンタ用の色変換は、複数のCMYK値に対してプリンタが印刷する色パッチを測定することで算出することができる。測定値は、測色計または分光測光器等の色測定装置によって取得される。そして測定値は、CIEXYZ、CIELab、CIECAMまたはCIELuv等のデバイスに依存しない色空間にある。色管理システムは、測定値を使用して、特定のCMYK値に対してプリンタが生成するデバイスに依存しない色を予測することができる。
しかし、色管理システムは、デバイスに依存しない三次元の色値からデバイスに依存する四次元のCMYK値への逆方向の変換に依拠する。この変換は、黒(K)チャネルによって追加される自由度のために複雑である。四つ以上の色成分を有する他の色空間と同様に、三次元のデバイスに依存しない色空間の観点からは、CMYK空間を充分に特定することはできない(under-specified)。言い換えれば、理論上、異なる量のシアン、マゼンタ、イエロー(CMY)と、異なる量の黒色インク(K)を使用して、デバイスに依存しない空間における同一色を生成することができる。従って、デバイスに依存しないカラーアピアランス空間からCMYK空間への唯一の、一対一のマッピングは数学的に不可能であり、不充分な規定が与えるインク値の選択の融通性は望ましいものではない。しかし、あるレベルの黒色インクは視覚的に不満足な色を生成する可能性があるので、この融通性は、潜在的に、不満足な変換を招くことがある。例えば、少量の黒色インクで数学的に正確な変換が見付かったとしても、グレイ等の無彩色は、黒色インクの量が多い法がより好ましく見える。一方、鮮やかな有彩色は、黒色インクの量が少ない方がより鮮明に見える。従って、二つのデバイスにより生成された色がより類似して見えるように、CMYKデバイスにおいて、ソースデバイスの黒色インク特性を再現することが望ましい。
さらに、他の理由により、黒色インク量を制御することが望ましい場合がある。例えば、一般に黒色インクは最も安価であるから、できる限り多くの黒色インクを常に使用するのが望ましい。あるいは、より少ない黒色インクと、より多くのカラーインクの使用は、カラートラッピング処理の結果を向上することができ、有益であろう。
RGBデバイス空間から、または、別のCMYKデバイス空間からの変換等、CMYKデバイス空間への変換におけるKレベルの制御が試みられた。しかし、それら試みは、カラーアピアランス空間からCMYK空間への変換におけるKレベルの制御に関する問題を満足に解決していない。無彩カラーアピアランス空間と有彩カラーアピアランス空間において異なる方法で値を変換する試みもあるが、それらも不満足なものである。さらに、そのようなすべての従来の試みは、ソースデバイス空間として黒色チャネルを含まないデバイス空間(RGB等)と黒色チャネルを含むデバイス空間(CMYK等)がある可能性には充分に対処していない。
本発明にかかる色処理は、ソースデバイス色空間の色値から黒色重み情報を生成し、ソースデバイス変換を用いて、前記ソースデバイス色空間の色値をカラーアピアランス空間の色値に変換し、前記カラーアピアランス空間の色値に色域マッピングを施し、前記黒色重み情報からデスティネーションデバイス色空間の黒色成分値を設定し、前記設定されたデスティネーションデバイス色空間の黒色成分値に応じて、前記色域マッピングされた色値を、黒色チャネルを有する前記デスティネーションデバイス色空間の色値に変換する際に、前記生成手段は、前記ソースデバイス色空間が黒色チャネルを有する場合は前記ソースデバイス色空間の色値の黒色成分値から前記黒色重み情報を生成し、前記ソースデバイス色空間が黒色チャネルを有さない場合は前記ソースデバイス色空間の色値が含む複数の色成分の最大値と最小値の差分から算出した色純度から前記黒色重み情報を生成することを特徴とする。
本発明によれば、ソースデバイス色空間の色値から生成される黒色重み情報を効果的に使用して、ソースデバイスが使用する黒色の量を、デスティネーションデバイスにおいて、より正確に反映することができる。さらに、ソースデバイス色空間が黒色チャネルを有さない場合も黒色重み情報を生成して、種々のソースデバイス色空間に対応する場合の融通性を達成することができる。
実施例1は、カラーアピアランス空間値をCMYK値に変換する色管理方法を提供する。ここで、Kチャネルに対する制御は維持される。
通常、実施例1は、コンピュータ環境において実行される。典型的なコンピュータシステムは、コンピュータ装置、周辺装置およびディジタル装置を含む。コンピュータ装置はホストプロセッサを有する。ホストプロセッサは、パーソナルコンピュータ(以下「PC」と呼ぶ)で、好ましくはMicrosoft(登録商標)Windows(登録商標)98、2000、Me、XPまたはNTなどのウィンドウ処理環境、または、LINUXなどの他のウィンドウ処理システムを有するIBM(登録商標)PC互換のコンピュータを含む。あるいは、ホストプロセッサは、Apple(登録商標)コンピュータまたは他の非ウィンドウベースのコンピュータでもよい。コンピュータ装置は、表示画面をもつカラーモニタ、テキストデータとユーザコマンドを入力するためのキーボード、ポインティングデバイスを有する。ポインティングデバイスは、表示画面上に表示されるオブジェクトをポインティングおよび操作するためにマウスが好ましい。
コンピュータ装置は、固定ディスクやフレキシブルディスク(FD)のようなコンピュータが読み取り可能なメモリ媒体のディスクドライブを有する。FDドライブは、リムーバブルメモリ媒体に格納された画像データ、コンピュータが実行可能な処理ステップ(以下、単に処理ステップ)およびアプリケーションプログラムなどの情報に、コンピュータ装置がアクセスするための手段を提供する。あるいは、USBポートに接続されたUSB記憶装置などの他の手段を介して、または、ネットワークインタフェイスを介して、上記の情報を検索し取得することが可能である。また、コンピュータ装置に組み込まれたCD-ROMドライブおよび/またはDVDドライブによって、コンピュータ装置は、リムーバブルなCD-ROMおよびDVD媒体に格納された情報にアクセスすることができる。
一般に、種々の周辺装置がコンピュータシステムにおいて使用される。例えば、紙またはOHPフィルム等の記録媒体にカラー画像を形成するバブルジェット(登録商標)プリンタやカラーレーザプリンタが使用される。プリンタは、シアン、マゼンタ、イエローおよび黒色のインクを使用してカラー画像を形成することが好ましい。
コンピュータ装置のホストプロセッサの内部アーキテクチャは、コンピュータバスと接続する中央演算装置(CPU)を有する。コンピュータバスと接続するものには、固定ディスク、ネットワークインタフェイス、実行時の一時主記憶として使用されるランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、FDインタフェイスがある。さらに、モニタ用のディスプレイインタフェイス(I/F)、キーボード用のキーボードI/F、ポインティングデバイス用のマウスI/F、スキャナ用のスキャナI/F、プリンタ用のプリンタI/F、ディジタルカメラ用のデジタルカメラI/Fがある。
オペレーティングシステム(OS)などのソフトウェアプログラム、色管理モジュールなどのアプリケーションプログラム(AP)、および、デバイスドライバの実行中、RAMは、RAMに格納された情報をCPUに供給するために、コンピュータバスとインタフェイスする。具体的には、CPUは、まず、処理ステップを固定ディスクまたは別の記憶装置からRAMの領域にロードする。そして、CPUは、ロードした処理ステップを実行するために、RAMに格納した処理ステップを実行する。カラー画像、測色値、色変換または他の情報のようなデータにアクセスし、および/または、当該データを変更する必要がある処理ステップの実行中、CPUによる当該データのアクセスを可能にするために、当該データをRAMに格納することができる。
固定ディスクは、OSおよび色管理システムプログラムなどのAPを記憶する。固定ディスクは、さらにデジタルカメラドライバ、モニタドライバ、プリンタドライバ、スキャナドライバ、その他のデバイスドライバを記憶する。さらに、固定ディスクは、画像ファイル、その他のファイル、後述する変換ベースのデバイスプロファイル、色管理モジュールを記憶する。
実施例1の色管理方法は、アプリケーションプログラムの一つのであるプリンタドライバやOSのような、CPUが実行する、固定ディスクに格納された処理ステップにより実行されることが好ましい。色管理方法は、プリンタ内に含まれるソフトウェアまたはハードウェアにより実行することもできる。以下では、Kチャネルを制御して、カラーアピアランス空間値をCMYK値に変換する処理ステップを、さらに詳細に説明する。
図1はデスティネーションデバイスがCMYKデバイスである色管理システムを示す図である。色管理モジュール(CMM) 100は、ソースデバイス変換102を利用して、ソースデバイス101によって出力されたデバイスに依存する色値を内部カラーアピアランス空間に変換する。カラーアピアランス空間は、CIELab、CIECAM、CIELuvを含む様々な形式で実現可能である。CMM 100は、一般的に、カラーアピアランス空間の色データに色域マッピング等の色処理操作を行う。CMM 100は、カラーアピアランス空間→CMYK変換103を利用して、カラーアピアランス空間値をCMYKデバイス104によって使用可能なCMYK値に変換する。
実施例1は、K(黒色インク)チャネルによる制御(control over the K channel)を整備(maintain)して、カラーアピアランス空間からCMYKへ変換する方法を提示する。通常、グレイのような無彩色は、黒色インクを多くした方がより好ましく見え、鮮やかな有彩色は、黒色インクの量が少ない方がより鮮明に見える。従って、Kチャネルによる制御を整備して変換することは有益である。CMYK色空間は過剰(overspecified)に特定される。つまり、同一色を生成するために、シアン、マゼンタ、イエロー(CMY)の量を変更して、異なる量の黒色インク(K)を使用することができる。そのため、カラーアピアランス空間からCMYK空間に変換する場合、二つ以上の定義が存在する。すなわち、四から三への変換であるCMYK→カラーアピアランス空間変換を反転して、逆変換を生成することはできない。
従って、第一のステップにおいて、それぞれがCMYをカラーアピアランス空間にマッピングする複数のLUTを作成する。各テーブルは、Kの一定値の下の三次元LUT(3D LUT)である。図2は複数のテーブルを作成する一方法を示す図である。CMYK色サンプル201は、CMYK→カラーアピアランス空間変換202に入力される。変換202は、カラーアピアランス空間からCMYKへの変換が要求されたデバイスに関連する順方向(つまり、CMYKからカラーアピアランス空間への)変換である。実際には、CMYK色サンプル201を変換202に通すことで、関連するCMYKデバイスの「擬似測色値(pseudo color measurments)」を作成する。
測色値は、サンプルのK値に対応するLUT 203に入力される。LUT 203の一つのLUTの各エントリは、一定のK値とCMY色成分により定義される色をカラーアピアランス空間の色にマッピングする。実施例1においては51個のLUTを作成する。LUTのK値は、K=0〜255の範囲を五刻みにした十進値である。Kチャネルに対して望まれる制御度に応じて、より多くの、または、より少ないテーブルが使用される。各LUT 203は、関連するK値に従い、LUTに含まれるカラーアピアランス空間値の最小の明度値と最大の明度値を格納する。例えば、CIECAM(Jab)カラーアピアランス空間の場合は、最小のJ値と最大のJ値を格納する。CIELabカラーアピアランス空間の場合は、最小のL値と最大のL値を格納する。
所望のCMYKデバイスの実際の測色値が入手可能な場合、図2に示すCMY→カラーアピアランス空間の51個のLUTを作成するための方法は不要かもしれない。そのような測色値は、K値に基づき異なるLUTに単純にグループ化することができる。そして、各LUTに最小と最大の明度値が格納される。
作成したLUT 203を、後で使用するために固定ディスクに格納してもよい。あるいは、ディスクスペースを節約するために、必要とする都度、LUT 203を再作成してもよい。勿論、LUT 203を記憶媒体内に配置し、アクセスする好ましい方法は多数存在する。
望む変換を生成するために、CMY→カラーアピアランス空間のLUT 203は反転可能である。図3は、その処理を示すフローチャートである。まず、ステップS301で、目標カラーアピアランス空間値(目標色値)を取得する。この目標色値は、CMYKに変換すべきカラーアピアランス空間値を表す。例えば、目標色値は、画像ファイルの一つの画素を表す。
次に、ステップS302で、目標色値の無彩色度(neutrality)と明度を判定する。Jab、Lab、Luvカラーアピアランス空間の場合、明度は単純にJ値またはL値である。目標色値の無彩色度は、無彩色軸からの所定の距離を参照して規定する。例えば、Jabカラーアピアランス空間において、Jは、a=b=0の無彩色軸である。a、bチャネル双方の絶対値が所定値より小さい色は無彩色と定義する。例えば、内部色値のa、bチャネルの範囲が-100〜+100の場合、無彩色は|a|<3、かつ、|b|<3である任意の内部色値と定義される。a、bチャネルの絶対値が3以上の場合、その色は有彩色として決定される。
ステップS303で、目標色値が無彩色か有彩色かを決定する。目標色値が無彩色である場合、ステップS305で、51個のLUTから目標色を含む可能性がある、最大のK値を有する一つのLUTを選択する。同様に、ステップS303で目標色値が有彩色であると決定した場合は、ステップS304で、51個のLUTから目標色を含む可能性がある、最小のK値を有する一つのLUTを選択する。ステップS304とS305においては、目標色値の明度がLUTに格納された明度の範囲内にある場合、そのLUTに目標色値が含まれるだろうと判定する。
次に、目標色値が無彩色でも有彩色でも、それぞれステップS306とS307で、目標色値に基づき、選択したテーブルからCMY値を補間する。補間処理は、以下で、さらに詳細に説明する。
図4はステップS306において、無彩色の目標色値に基づき、選択したテーブルからCMY値を補間する処理を示すフローチャートである。使用する補間処理はニュートン法である。まず、ステップS401で、CMYを初期推量する。C、M、Yの範囲が0.0〜1.0の場合、CMYの初期推量値は(0.3, 0.3, 0.3)が好ましい。これは、CMY各チャネル30%に対応する。
ステップS402で、CMY推量値(gC, gM, gY)を選択したLUTに入力して、カラーアピアランス空間値を取得する。カラーアピアランス空間と目標色値がLab形式の場合、LUTはCMY→LabのLUTである。同様に、カラーアピアランス空間がJab形式の場合、LUTはCMY→JabのLUTである。Labカラーアピアランス空間の場合、CMY推量は、Lab推量値(gL, ga, gb)を返す。取得したLab推量値を、目標色値(tL, ta, tb)と比較する。ステップS403で、誤差を計算し格納する。誤差は、Lab推量値と目標色値の間のユークリッド距離として定義する。
ステップS404で、計算された誤差を、この例では0.001に設定された、所定の誤差閾値と比較する。誤差が所定の誤差閾値より小さい場合、補間は正確であると考えられ、ステップS404からS409に進む。なお、この比較には、誤差の二乗と閾値の二乗を使用すれば充分である。これにより、平方根の計算が不要になり、精度を犠牲にせずに、速度が向上する。ステップS409で、現在のCMYの推量値を、補間したCMY値として、図3のステップS308に供給する。
誤差が所定の誤差閾値よりも大きい場合、ステップS404からS405に進む。ステップS405で、推量を十回行ったか否かを判定する。なお、十回の推量は、好ましい繰り返し数である。収束するという条件の下、より大きい値、または、より小さい値を使用することができる。十回の推量が行われていない場合、ステップS405からS406とS407に進む。それらステップで、現在のCMY推量値における、LUTのヤコビアン(j)または三次元導関数(three dimensional derivative)を計算する。計算したヤコビアンと、誤差を、新たな推量値の計算に使用する。
新たな推量値は、以下の式に従い、ニュートンステップの差分(d)を算出することにより計算される。
(d) = (tL - gL, ta - ga, tb - gb)
ニュートンステップは、jを計算したヤコビアンとすると、xに対して以下の式を解くことで算出する。
j・x = (d)
CMYの新たな推量値は、前の推量値にxを加算することにより計算される。そして、処理はステップS402に戻り、CMYの新たな推量値をLUTに入力する。
他方、推量値が所定の誤差閾値を満すことなく、推量(つまり繰り返し)が既に十回行われた場合は、ステップS405からS408に進む。この時点で、選択したLUTに目標色値が含まれる可能性があるとしても、望む精度で目標色値にマッピングするCMY値は見付けられないと判定する。従って、ステップS408では、前に選択したLUTに比べて、次に小さいK値を有するLUTを選択する。例えば、ステップS305においてK=225のLUTを選択した場合、ステップS408ではK=220のLUTを選択する。そして、新しく選択したLUTに基づく補間を実行するために、処理をステップS401に戻す。
処理は誤差閾値を満足するまで継続し、ステップS409で、補間したCMY値を供給する。すべての可能性があるLUTを試しても、誤差閾値を満足しない可能性がある。その場合、テーブルに関連するKに沿って、最小の誤差を返すCMY推量値を、補間した値として使用する。
図5はステップS307において、有彩色のCMY値を補間する処理を示すフローチャートである。この処理は、ステップS508を除いて、図4に示す処理と同じである。ステップS508では、前に選択したLUTに比べて、次に大きいK値を有するLUTを選択する。例えば、ステップS304においてK=15のLUTを選択した場合、ステップS508ではK=20のLUTを選択する。
最後に、図3に戻り、ステップS308で、補間したCMY値と、CMY値の補間に使用したテーブルに関連するKとを、変換したCMYK値として供給する。全体の処理が、CMYKに変換すべき目標色値ごとに繰り返される。
上述した、Kチャネルを制御して、カラーアピアランス空間値をCMYK値に変換する処理は、色管理システムにおいて使用される。例えば、上述の処理は、図1に示す変換103の代わりに使用することができる。さらに、実施例1は、プリンタドライバまたはプリンタ自体の処理ステップとして、カラーアピアランス空間値をCMYK値に変換する際に使用することができる。
実施例2は、ソースデバイス色値の黒色重み情報を使用して、ソースデバイス色空間から黒色(K)チャネルを含むデスティネーションデバイス色空間に色値を変換する色管理システムを提供する。
実施例2の色管理システムは、デバイスドライバまたはコンピュータOSに含まれる色管理モジュール(CMM)等のコンピュータ環境において実行される。色管理システムは、コンピュータが読み取り可能な記憶媒体に格納された実行可能なコードとして構成される。CMMは、前記コードを利用して、ソースデバイス色空間からデスティネーションデバイス色空間への色変換を実行し、CMYKプリンタ等のデスティネーションデバイスに提供する。
実施例2は、ソースデバイス色空間からKチャネルを含むデスティネーションデバイス色空間への色変換に関連する。とくに、変換に関連する。その変換において、デスティネーションデバイスにおいて使用される黒色の量を選択するために使用される。黒色重みは、Kチャネルを含むソースデバイスと、Kチャネルを含まないソースデバイスの双方に対して計算される。ソースデバイス色空間の画素の黒色重みを取得し、デスティネーション色値の計算に黒色重みを利用する。実施例2では、デスティネーション空間の黒色チャネルに対する「暗示(hint)」として、ソース色空間の黒色重みを効果的に使用する。その結果、ソースデバイスが使用する黒色の量を、デスティネーションデバイスにおいて、より正確に反映することができる。さらに、ソースが黒色チャネルを含まない場合でも、黒色重みが計算されるため、種々のソース空間に対応する場合の融通性が達成される。
図6は実施例2の特徴を強調するのに有用な色管理システムを示す図である。CMM 600は、ソースデバイス変換602を利用して、ソースデバイス601によって出力されたデバイスに依存する色値を内部カラーアピアランス空間に変換する。カラーアピアランス空間は、CIELab、CIECAM、CIELuvを含む様々な形式で実現可能である。また、CMM 600は、一般的に、カラーアピアランス空間の色データに色域マッピング等の色処理操作を行う。例えば、色域マッピングモジュール603は、カラーアピアランス空間データをデスティネーションデバイス605の色域にマッピングする。色域マッピングされたカラーアピアランス空間データは、デスティネーションデバイス変換604により、デスティネーションデバイス色空間に変換される。
図7は実施例2の色管理システムを示す図である。ソースデバイスモジュール(以下、SDM)701は、色画素をソースデバイス色空間からカラーアピアランス空間の色に変換する。色域マッピングモジュール(以下、GMM)702は、カラーアピアランス空間のデータをデスティネーションデバイスの色域にマッピングする。また、SDM 701は、ソースデバイス色空間の画素ごとに黒色重み情報を計算する。黒色重みは、(技術的な正確さを欠くが)黒色プレーンにおける色画素の明度として解釈可能である。
CMYK色空間のようなKチャネルを含むソースデバイスの場合、SDM 701は、ソースデバイスと媒体の物理特性により、ソース画像において使用される黒色色材の量から、黒色重みを決定する。より詳しくは、SDM 701は、ソースデバイスの色変換を使用して、ソース画素のK値をデバイスに依存しない明度値に変換する。Kチャネルを含むソース色空間のソース画素の黒色重みは、本質的に、カラーアピアランス空間におけるソースKチャネルの明度である。
RGB色空間のようなKチャネルを含まないソースデバイスの場合、SDM 701は、ソースデバイス色空間の画素の色純度(color purity)から黒色重みを決定する。デバイス色材空間の色純度は、デバイス無彩色軸からの画素の距離である。RGB等の三色空間の色純度(CP)は、下式を使用して計算してもよい。
CP = {最大値(RGB) - 最小値(RGB)}/最大値(RGB)
例えば、色座標がRGB = (0.80, 0.10, 0.20)の画素の場合、最大値はR=0.80、最小値はG=0.10であるから、色純度CPは(0.80 - 0.10)/0.80 = 0.875である。色純度が比較的大きな値は、画素の黒色の量が少ないことを示す傾向にある。この色純度を黒色重みとして表すために、1から色純度を減算する。
黒色重み = (1 - CP)
従って、SDM 701は、(0.80, 0.10, 0.20)のRGB値を有する画素の黒色重みとして0.125を算出する。
SDM 701がソース画素の黒色重みを算出すると、黒色重み情報は、「枠を超えて(out-of-bounds)」、直接、デスティネーションデバイスモジュール(以下、DDM)703に渡される。つまり、黒色重み情報は、GMM 702のような中間モジュールおよび/またはオブジェクトをスキップし、直接、DMM 703によってSDM 701から取得される。SDM 701からDDM 703に黒色重み情報を直接入力する一方法は、マイクロソフト(登録商標)のWindows(登録商標)のコンポーネントオブジェクトモデル(COM)システムを使用することである。COMを使用すると、DDM 703は、SDM 701に対してQueryInterfaceコールを実行し、黒色重み情報を提供するインタフェイスのポインタを取得する。そして、DDM 703は、当該インタフェイスにおいてGetBlackWeightInformationメソッドをコールして、算出された黒色重みデータを取得する。処理する色データの画素または色ごとの浮動小数点数の配列により、黒色重み情報を表すことを推奨する。浮動小数点数の範囲は0.0〜1.0であるべきで、1.0は完全な黒色を、0.0は黒色ではないことを表す。
黒色重み情報を受信すると、DDM 703は、黒色重み情報に基づき、デスティネーションデバイス色空間において、画素ごとにK値を選択する。例えば、DDM 703は、デスティネーションデバイス変換を使用して、黒色重み値をデスティネーション色空間のK値に変換してもよい。そして、DDM 703は、選択したK値と色域マッピングされたカラーアピアランス空間データとに基づき、(CMYK空間のCMYのような)デスティネーション色空間の残るチャネルを計算する。なお、DDM 703は、黒色重み情報をクエリしても何も受信しない場合、または、QueryInterfaceコールに対して黒色重み情報に関するインタフェイスが取得できない場合、従来の方法によってデスティネーション色空間への変換を行う。このようにして、実施例2のDDM 703は、黒色重み情報を算出しないSDMや適切なCOMインタフェイスを提供しないSDMとの互換性を維持する。
また、DDM 703は、例えば、クエリが成功せず、または、QueryInterfaceコールに対して黒色重み情報に関するインタフェイスを取得できず、黒色重み情報が取得できない場合、実施例1に従いデスティネーション色空間への変換を行ってもよい。つまり、SDM 701から黒色重み情報を取得できない場合、DDM 703は、カラーアピアランス空間の色値の無彩色度に基づき、図3に示すステップS302〜S308に従い、デスティネーションデバイス空間の目標CMYK色を計算する。
以下では、デスティネーションデバイス605がCMYKデバイスである場合に、色域マッピングされたカラーアピアランス空間データをデスティネーションデバイス色値に変換する一処理を説明する。色域マッピングされたカラーアピアランス空間データをCMYK値に変換する第一のステップにおいて、三次元(3-D)のCMY→カラーアピアランス空間の複数のルックアップテーブル(LUT)を作成する。各テーブルは、Kの一定値の下の三次元LUT(3-D LUT)である。図8はLUTを作成する一方法を示すフローチャートである。CMYK色サンプル801は、CMYK→カラーアピアランス空間変換802に入力される。変換802は、カラーアピアランス空間からCMYKへの変換が要求されるデバイスに関連する順方向(つまり、CMYKからカラーアピアランス空間への)変換である。実際には、CMYK色サンプル801を変換802に通すことで、関連するCMYKデバイスの「擬似測色値」を作成する。
複数のCMY LUT 803を作成するために、擬似測色値は、サンプルのK値に対応するLUTに配置される。LUTの各エントリは、一定のK値とCMY色成分により定義される色をカラーアピアランス空間の色にマッピングする。実施例2においては51個のLUTを作成する。LUTのK値は、K=0〜K=255の範囲を五刻みにした十進値である。Kチャネルに対して望まれる制御度に応じて、より多くの、または、より少ないテーブルが使用される。各LUTは、関連するK値に従い、LUTに含まれるカラーアピアランス空間値の最小の明度値と最大の明度値を格納する。例えば、CIECAM(Jab)カラーアピアランス空間の場合は、最小のJ値と最大のJ値が格納される。CIELabカラーアピアランス空間の場合は、最小のL値と最大のL値が格納される。
所望のCMYKデバイスの実際の測色値が入手可能な場合、図8に示すCMY→カラーアピアランス空間の51個のLUTを作成するための方法は不要かもしれない。そのような測色値は、K値に基づき異なるLUTに単純にグループ化することができる。各LUTに最小と最大の明度値が格納される。
作成したLUTを、後で使用するために固定ディスクに格納してよもい。あるいは、ディスクスペースを節約するために、必要とする都度、LUTを再作成してもよい。勿論、LUTを記憶媒体内に配置し、アクセスする好ましい方法は多数存在する。
望む変換を生成するために、三次元のCMY→カラーアピアランス空間のLUTは反転可能である。図9は、その処理を示すフローチャートである。図9に示すフローシーケンスは、実行可能コードとしてコンピュータが読み取り可能なメモリ媒体に格納され、図9に示すシーケンスを遂行するためにプロセッサによって実行される。簡単に説明すると、まず、黒色重み情報を受信することで変換を開始する。次に、黒色重み情報に基づき、複数のCMYルックアップテーブルの一つを選択する。最後に、選択したルックアップテーブルによる補間に基づき、CMYK値が供給される。
ステップS901で、SDMから黒色重み情報を取得する。次に、ステップS902で、黒色重み情報に基づきK値を計算し、計算したK値に関連する一つのLUTを複数のLUTから選択する。黒色重み情報は、デスティネーションデバイスにおける所望のKの比率を表す。黒色重み情報に255(Kの範囲の最大値)を乗算し、その積にK値が最も近いLUTを選択する。つまり、処理は、黒色重みに最も近いK値の比率を有する一つのテーブルを複数のルックアップテーブルから選択する。例えば、黒色重み0.55は、0.55×255=140.25であるから、K=140のLUTに対応する。
次に、ステップS903で、選択したLUTからCMY値を補間する。図10は、ステップ903の処理をさらに詳細に示すフローチャートである。まず、ステップS1001で、CMYを初期推量する。C、M、Yの範囲が0.0〜1.0の場合、CMYの初期推量は(0.3, 0.3, 0.3)でもよく、この推量値を、値に関係なくすべての画素に使用する。この初期推量値は、CMY各チャネル30%に対応する。
ステップS1002で、CMY推量値(gC, gM, gY)を選択したLUTに入力して、対応するカラーアピアランス空間値を取得する。例えば、カラーアピアランス空間と目標色値がLab形式の場合、LUTはCMY→LabのLUTである。同様に、カラーアピアランス空間がJab形式の場合、LUTはCMY→JabのLUTである。Labカラーアピアランス空間の場合、CMY推量値は、選択したLUTのLab推量値(gL, ga, gb)に対応する。ステップS1003で、取得したLab推量値を目標色値(tL, ta, tb)と比較し、誤差を計算して格納する。誤差は、Lab推量値と目標色値の間のユークリッド距離として定義される。
ステップS1004で、誤差を、例えば0.001である所定の誤差閾値と比較する。誤差が所定の誤差閾値より小さい場合、補間は正確であると考えられ、処理はステップS1009に進む。なお、この比較には、誤差の二乗と閾値の二乗を使用すればよい。これにより、平方根の計算が不要になり、精度を犠牲にせずに、速度が向上する。ステップS1009で、現在のCMYの推量値を、補間したCMY値として、図9に示すステップS904に供給する。
ステップS1004の比較で、誤差が所定の誤差閾値より大きい場合、処理はステップS1004からS1005に進む。ステップS1005では、繰り返しを十回行ったか否かを判定する。なお、十回の繰り返しは、好ましい繰り返し数である。収束するという条件の下、より大きい値、または、より小さい値を使用することができる。十回の繰り返しが行われていない場合、処理はステップS1006に進む。ステップS1006では、現在の繰り返しのCMY推量値における、LUTのヤコビアン(j)または三次元導関数を計算する。ステップS1007では、計算したヤコビアンと、誤差を、新たな繰り返しのCMY値の計算に使用する。
新たなCMY値は、以下の式に従い、ニュートンステップの差分(d)を算出することにより計算される。
(d) = (tL-gL, ta-ga, tb-gb)
ニュートンステップは、jを計算したヤコビアンとすると、xに対して以下の式を解くことで算出する。
j・x = (d)
この繰り返しに対する新たなCMY値は、前の繰り返しのCMY値にxを加算することにより計算される。そして、処理はステップS1002に戻り、新たなCMY値を現在選択しているLUTに入力する。
他方、所定の誤差閾値を満すことなく、繰り返しが十回行われた場合、処理はステップS1005からS1008に進む。この時点で、先の十回の繰り返しから、最小の誤差を有するCMY値を選択する。そして、ステップS1009で、現在の繰り返しのCMY値を、補間したCMY値として図9に示すステップS904に供給する。
図9に戻り、ステップS904で、ステップS1009で補間したCMY値と、現在選択しているLUTのK値を、CMYK値として供給する。この値は、印刷のようなCMYKデバイスによる描画のために出力される。処理は、画像の全画素に対して繰り返される。値のキャッシュは、コンピュータグラフィック画像にみられるようなソース画像において、色値の反復が非常に多い場合に、処理を高速化するために実行される。
補間されたCMY値は他の方法でも計算することができる。例えば、ステップS903において、ある範囲のCMY値を、選択したLUTのK値に近いK値をもつLUTから補間する。そして、最終的な補間したCMY値を生成するために、選択したLUTから補間したCMY値を含む、ある範囲の複数の補間したCMY値を平均化してもよい。
色管理システムにおける、Kチャネルを制御してカラーアピアランス空間値をCMYKの値に変換する処理を説明した。さらに、実施例2は、プリンタドライバまたはプリンタ自体の処理ステップとして、カラーアピアランス空間値をCMYK値に変換する際に使用することができる。
実施例2のデスティネーションデバイスモジュール(DDM)は、黒色重み情報が入手可能な場合、ソースデバイスモジュール(SDM)から供給される黒色重み情報にある程度基づきカラーアピアランス空間の色値をデスティネーションCMYK空間の色値に変換する。また、黒色重み情報がSDMから入手不可能な場合、実施例1で説明したようにカラーアピアランス空間の色値の無彩色度に基づき変換する。実施例3が実施例2と異なる点は、SDMから黒色重み情報が入手可能か否かに関わらず、黒色重み情報をDDMに供給する黒色重みインタフェイスを提供することである。SDMが黒色重み情報を提供する場合、黒色重みインタフェイスはSDMが提供する黒色重み情報をDDMに供給し、DDMは色値をカラーアピアランス空間からデスティネーションデバイス空間に変換する。一方、SDMが黒色重み情報を提供しない場合、黒色重みインタフェイスは、カラーアピアランス空間の色値の無彩色度に基づき、最適な黒色重みを予測する。無彩色度は、カラーアピアランス空間の色値の明度と彩度(colorfulness)に基づいてもよい。予測された黒色重み情報はDDMに供給され、DDMは、カラーアピアランス空間からデスティネーションデバイス空間への色値の変換において、SDMから黒色重み情報が供給されたかのように、黒色重み情報を利用する。以下では、さらに詳細に説明する。
図11は実施例3の色管理システムを示す図である。図示するように、ソースデバイス色空間の色値は、ソースデバイス変換モジュール(以下、SDTM)1102によってカラーアピアランス色空間に変換され、色域マッピングモジュール(GMM) 1103によって色域マッピングされる。デスティネーションデバイス変換モジュール(以下、DDTM)1104は、色域マッピングされたカラーアピアランス空間データを変換して、デスティネーションデバイス色空間の色値を得る。DDTM 1104は、黒色重みインタフェイス1104aによって供給される黒色重み情報に依存する。黒色重みインタフェイス1104aは、SDTM 1102から黒色重み情報が入手可能な場合は、SDTM 1102から黒色重み情報を取得する。また、SDTM 1102から黒色重み情報が入手不可能な場合は、カラーアピアランス空間の色値の明度および彩度(colorfulness)に基づき、黒色重み情報を計算する。
上記のアーキテクチャは、オブジェクト指向フレームワークまたはプラグインフレームワークにおいて提供される各モジュールを認識する。そのような各モジュールは最小限の機能性を提供すると推測され、機能の拡張性は提供されてもされなくてもよい。例えば、SDTM 1102は、ソースデバイス色空間からカラーアピアランス空間に色値を変換する最小限の機能を提供すると推測される。しかし、SDTM 1102は、拡張機能として、黒色重み情報の計算、および、DDTM 1104への黒色重み情報の提供に対応しない。同様に、GMM 1103は、色域マッピングの最小限の機能を提供すると推測されるが、オブジェクト指向またはプラグインアーキテクチャにおいて、厳密な特性および最小限の機能の実現は、システムの他のオブジェクトに対して透過的である。従って、DDTM 1104がSDTM 1102により実行される色変換の最小限の機能に依存する場合でも、DDTM 1104からみると、SDTM 1102から黒色重み情報が提供されない可能性がある。実施例3によれば、DDTM 1104は、黒色重み情報を提供する黒色重みインタフェイス1104aに依存する。その結果、黒色重みインタフェイス1104aは、入手可能な場合はSDTM 1102から黒色重み情報を取得し、入手不可能な場合は最適な黒色重み値を予測する。黒色重みの情報源はDDTM 1104に対して透過的であるから、DDTM 1104は、黒色重みの情報源に関わらず変化しない一貫した実装(consistent implementation)を使用して、機能を実行することができ、情報源の認識(knowledge)に依存しない。
特定の好適な実装(implementations)において、DDTM 1104は、デスティネーションデバイス色空間のCMY値をカラーアピアランス空間にマップする複数の三次元ルックアップテーブル(3-D LUT)を使用して色値を変換する。各3-D LUTは、実施例1および実施例2において説明したように、Kの一定値の下の三次元LUT (3D-LUT)である。各3-D LUTは、順方向変換(つまりデスティネーションデバイスのCMYK空間→カラーアピアランス空間)である。従って、デスティネーションデバイス色空間のデスティネーションデバイス色値を取得するために、カラーアピアランス空間の色値を考慮すると、3-D LUTのうち、選択したLUTを反転する必要がある。この目的に、実施例1および実施例2による逆補間を採用する。
補間される3-D LUTのうち、選択された一つ以上のLUTを識別するために、黒色重み情報を利用する。実施例3において、黒色重み情報は黒色重みインタフェイス1104aから取得される。上述したように、黒色重みインタフェイス1104aは、SDTM 1102から黒色重み情報を取得するか、最適な黒色重みを予測する。黒色重み情報はGMM 1103をバイパスさせて、色域マッピング結果に関わらず黒色重み情報を維持することが好ましい。
図12は実施例3の処理を示すフローチャートである。SDTM 1102は、ステップS1201でソースデバイス色空間の色値を受信し、ステップS1202で、ソースデバイス色空間の色値に基づき黒色重みを計算する。黒色重み情報を得るために任意の計測値を使用できるが、実施例2のソースデバイスモジュール701の機能に従い黒色重み情報を取得するのが好ましい。従って、ステップS1202において、SDTM 1102は、ソースデバイス色空間が(CMYK色空間のように)黒色(K)チャネルを含むか、(RGB色空間のように)Kチャネルを含まないかに応じて、異なる方法で黒色重みを計算する。ソースデバイス色空間がKチャネルを含む場合、SDTM 1102は、ソースデバイスの色変換を使用した、ソース画素のK値からデバイスに依存しない明度値への変換に基づき、黒色重みを計算する。Kチャネルを含まないソース色空間の場合、ソースデバイス変換モジュール1102は、色純度により黒色重みを計算して、ソースデバイス色空間の画素の色純度から黒色重みを決定する。これらの方法は、実施例2において充分に説明した。
その後、処理はステップS1203に進み、SDTM 1102は、色値をソースデバイス色空間からカラーアピアランス色空間に変換する。ステップS1204で、GMM 1103は、ソースデバイス1101の色域とデスティネーションデバイス1105の色域の違いを考慮して、カラーアピアランス空間の色値を色域マッピングする。GMM 1103が利用する色域マッピングアルゴリズムは、任意の周知の色域マッピングアルゴリズム、または、まだ開発されていない色域マッピングアルゴリズムから選択してもよいし、ユーザの描画目的(rendering intent)の指示に基づき選択してもよい。
DDTM 1104は、カラーアピアランス空間の色域マッピングされた色値をデスティネーションデバイス色空間の色値に変換する。ステップS1205〜S1210は、この処理を説明する。
ステップS1205で、黒色重みインタフェイス1104aは、黒色重み情報がSDTM 1102から入手可能か否かを判定する。この判定の好ましい一方法は、SDTM 1102に対するCOMクエリの使用である。例えば、SDTM 1102においてIQueryInterfaceメソッドがコールされ、その結果を検査することで、SDTM 1102が黒色重み情報を提供するか否かを判定する。黒色重み情報が入手可能か否かを判定する別の方法は、SDTM 1102から黒色重み情報に対する候補値を取得して、-1など、黒色重み情報に逆らう無効のデフォルト値と、候補値を比較することである。候補値が無効のデフォルト値と等しい場合は黒色重み情報は入手不可能であり、候補値が無効のデフォルト値と異なる場合は黒色重み情報は入手可能である。
SDTM 1102から黒色重み情報が入手可能か否かに応じて処理は分岐する。黒色重み情報が入手可能な場合はステップS1206へ、入手不可能な場合はステップS1207へ分岐する。ステップS1206では、SDTM 1102から黒色重み情報が入手可能と判定されたため、黒色重みインタフェイス1104aは、SDTM 1102から黒色重みを取得する。SDTM 1102から黒色重み情報を提供する一方法は、実施例2で説明したように、コンポーネントオブジェクトモデル(COM)システムを使用することである。上述したように、COMは、SDTM 1102が黒色重みを計算しない従来のモジュールか、黒色重みをDDTM 1104に提供できない状況にある場合に、単純なデフォルト機構を提供するために好ましい。当然、DDTM 1104に黒色重みを提供するために、他の方法を利用してもよい。
一方、ステップS1205において、黒色重みインタフェイス1104aが黒色重み情報は入手不可能と判定した場合、処理はステップS1207に分岐する。そして、黒色重みインタフェイス1104aは、現在、カラーアピアランス空間において表現されている、GMM 1103から提供される色値に基づき、最適な黒色重みを予測する。黒色重みインタフェイス1104aは、カラーアピアランス空間の色値の無彩色度に基づき、黒色重み情報を計算するのが好ましい。無彩色度は、色値の明度と彩度の組み合せ値から予測してもよい。高無彩色(つまり、任意の有効な彩度がない色値)は、カラー色材ではなく、主に黒色色材によって描画するのが最も好ましいから、黒色重み情報は色の明度に関わらず、ほぼ1に対応すべきである。逆に、高彩度色は、黒色色材を殆ど使用せず、主にカラー色材で描画すべきであるから、黒色重みはほぼ0に対応すべきである。黒色重みインタフェイス1104aは、両極端の間で、組み合せに基づき黒色重みを計算する。例えば、ある彩度の暗い色は、カラー色材を少量使用して、主に黒色色材で描画されるべきであるから、黒色重み情報は1に近く、1よりはある程度小さい値に計算する。他方、色値が非常に高い明度を有する僅かに色が付いた明るい色は、黒色色材を少量使用して、殆どがカラー色材を使用して描画されるべきと考えられるから、僅かな彩度であっても、0に近く、0よりはある程度大きい、小さな黒色重みを提供すべきである。
黒色重みの情報源(つまり、黒色重み情報がSDTM 1102から提供されるか、最適な値に基づき計算されるか)に関わらず、黒色重みインタフェイス1104aは、黒色重み情報をデスティネーションデバイス変換1104に供給する。処理はステップS1208に進み、黒色重み情報が使用される。
ステップS1208で、DDTM 1104は黒色重みからK値を決定する。他の技術を使用してもよいが、複数の3-D CMY LUTのK値の範囲によってスケーリングされた黒色重み(0〜1の範囲)とする単純な技術が好ましい。実施例3において、K値は0〜255の範囲であるから、黒色重みと255を単純に乗算して、デスティネーションデバイスに出力する目標K値を得る。
ステップS1209で、目標K値に基づき、逆補間用の一つ以上の3-D CMY LUTを選択する。目標K値に最も近いK値を有する一つの3-D CMY LUTを単純に選択することでも、良好な結果が得られる。計算労力(computation effort)はかかるが、目標K値を括るK値を有する二つの3-D CMY LUTを選択することで、より高精度の結果が得られる。
ステップ1210で、選択した一つ以上のLUTに基づき、DDTM 1104は、選択した一つ以上のLUTを反転するために補間を行って、デスティネーションデバイス色座標のCMY値を取得する。反転のために一つのLUTを補間した場合、デスティネーションデバイス色空間のK値は、選択したLUTのK値と同一である。一方、複数のLUTを選択した場合、K値は、ステップS1207で計算された目標K値を使用するなど、代替手段によって選択してもよい。
ステップS1211で、デスティネーションデバイス1105によって描画するために、デスティネーションデバイス色空間のCMYK色値を出力する。
本発明の特定の実施例に関して上述した。本発明は、上述した実施例に限定されず、本発明の趣旨の範囲から逸脱せずに、当業者により様々な変更および変形が行われてもよいことが理解される。
実施例1の色管理システムの動作を示すブロック図、
実施例1のKに基づくルックアップテーブルの作成を示すブロック図、
実施例1のカラーアピアランス空間値をCMYKに変換する処理を示すフローチャート、
実施例1の無彩色に対してCMY値を補間する処理を示すフローチャート、
実施例1の有彩色に対してCMY値を補間する処理を示すフローチャート、
実施例2の特徴を強調する色管理システムを示すブロック図、
実施例2の色管理システムを示すブロック図、
実施例2のKに基づく複数のCMYルックアップテーブルの作成を示すブロック図、
実施例2のカラーアピアランス空間値をCMYK値に変換する処理を示すフローチャート、
実施例2の選択されたルックアップテーブルからCMYK値を補間する処理を示すフローチャート、
実施例3の特徴を強調する色管理システムを示すブロック図、
実施例3の色値をデスティネーションデバイス色空間に変換する処理を示すフローチャートである。