以下、本発明の実施の形態を図面に基づき説明する。
<色知覚モデルを用いたカラーマッチングの処理>
図1は、本実施例における、色知覚モデルを用いたカラーマッチングの処理の概念を説明する概念図である。図1において、101は入力デバイスに依存する色信号を、入力側の環境光の白色点基準に基づくデバイスに依存しない色空間データへ変換するための変換マトリクスまたは変換ルックアップテーブル(LUT)である。104および105は入力観察条件(D50光源の白色点、照度レベル、周囲光の状態など)に基づいて人間の知覚信号JCHまたはQMHへ変換を行う色知覚モデル順変換部である。106および107は出力観察条件(D65光源の白色点、照度レベル、周囲光の状態など)に基づいて人間の知覚信号JCHまたはQMHよりデバイスに依存しない色信号であるXYZ信号へ変換する色知覚モデル逆変換部である。108は、出力側の環境光の白色点基準に基づくデバイスに依存しない色空間データより出力デバイスに依存する色信号へ変換するための変換マトリクスまたは変換ルックアップテーブル(LUT)である。102、103は入力色空間値を出力デバイスの色再現範囲に応じて色空間値に変換を行う色空間変換部である。
RGBまたはCMYKの入力色信号は、変換LUT101により入力デバイスの色信号から入力観察条件におけるデバイスに依存しない色信号であるXYZ信号へ変換される。次に、XYZ信号は、色知覚モデル順変換部104および105により観察条件1(D50光源の白色点、照度レベル、周囲光の状態など)に基づいて人間の知覚信号JCHまたはQMHへ変換される。相対的カラーマッチングの場合はJCH空間が、絶対的カラーマッチングの場合はQMH空間がそれぞれ選択される。
色知覚信号JCHおよびQMHは色空間変換部102または103により出力デバイスの色再現範囲内へ圧縮される。色空間圧縮された色知覚信号JCHおよびQMHは、色知覚モデル逆変換部106および107により、出力観察条件(D65光源の白色点、照度レベル、周囲光の状態など)に基づいて出力観察条件におけるデバイスに依存しない色信号であるXYZ信号へ変換される。そして、XYZ信号は変換LUT106により出力デバイスに依存する色信号へ変換される。
以上の処理によって得られたRGBまたはCMYK信号は出力デバイスへ送られて、その色信号によって示される画像が出力される。出力結果であるプリント物あるいは画面表示は出力観察条件下で観察すれば、入力観察条件下で観察されるオリジナル原稿と、同じ色味に見える。
なお、一般に観察条件における環境光の白色点は、カラーターゲットやカラーパッチなどの色票を測色した際の標準光源の白色点とは異なる。例えば、測色の際に使用される標準光源はD50やD65であるが、実際に画像を観察する場合の環境光はライトブースのD50やD65とは限らず、白熱電球や蛍光灯などの照明光や、照明光と太陽光とが混合した光になる場合が多い。以下の説明では、簡単化のために、観察条件における環境光の光源特性をD50、D65およびD93とするが、実際にはメディア上の白色点のXYZ値を白色点として設定する。
<機能構成>
図2は本発明の実施形態の一例であるカラーマッチングモジュールの機能構成を示すブロック図である。本図においては、図1と等価な構成は同一符号を用いている。
201は、変換LUT101を用いて、入力デバイスに依存する色信号(RGBやCMYK)をデバイスに依存しない色空間データ(XYZ)へ変換を行う入力変換部である。入力変換部201は、デバイス情報より測色値を取得し変換LUTを生成する機能、ならびに前記入力観察条件を色知覚モデル順変換部104(105)へ提供する機能を有する。デバイス情報は、デバイス色信号とデバイスに依存しない色空間データ(XYZ)の対応関係を示す情報である。
202は、変換LUT108を用いて、デバイスに依存しない色空間データ(XYZ)を出力デバイスに依存する色信号(RGBやCMYK)へ変換する出力変換部である。出力変換部202は、デバイス情報から変換LUTを生成する機能、出力観察条件を色知覚モデル逆変換部順変換部106(107)へ提供する機能、および出力デバイス色再現領域を色空間変換部102(103)へ提供する機能を有する。
なお、本実施例において、デバイスに応じた処理の切り替えや上記説明した機能以外の拡張機能などを提供することが可能となるように、入力変換部201、出力変換部202はプラグイン(デバイスプラグイン)で提供される。
また、色空間の圧縮方法(ICCのレンダリングインテントに相当)に応じた切り替え等に応ずる事が可能となるように、色空間変換部102(103)も色空間変換プラグインで提供される。
デバイス情報203は、前記入力変換部201および出力変換部202に対して事前に測定したデバイス色信号とデバイスに依存しない色空間データ(XYZ)の対応関係ならびに観察条件を示す。
デバイス情報管理部204は、デバイス情報の格納場所の管理を行う。
入出力・色空間変換管理部(プラグイン管理部)205は、デバイスプラグイン、色空間変換プラグインのバージョン、格納場所の管理を行う。
デバイス・CAMキャッシュ管理部206は、「入力変換部201あるいは出力変換部202において生成された変換LUT101、108」、「色知覚モデル順変換部104(105)あるいは色知覚モデル逆変換部106(107)で生成されたCAMテーブル、CAM−1テーブルを管理する。さらに、デバイス・CAMキャッシュ管理部206は、変換LUT101、108の生成条件ならびCAMテーブル、CAM−1テーブルの生成条件を管理する。デバイス・CAMキャッシュ管理部で管理されているデータを使用することにより、各変換処理の作成処理を省略することができ、カラーマッチングの高速化を行うことが可能となる。
なお、本実施例においては、CAMテーブル、CAM−1テーブルをデバイスプラグインならびにデバイス情報と関連付けている。CAMテーブル、CAM−1テーブルは、XYZとJCh空間の対応は観察条件(光源の白色点、照度レベル、周囲光の状態など)と対応していれば良いので、CAMテーブル、CAM−1テーブルを観察条件と関連付けて管理することも可能である。
また、入力・出力デバイスプラグイン、入力・出力デバイス情報ならびに色空間変換プラグインの組み合わせに対応させてLUT(システムキャッシュ)を生成し格納する。
システムキャッシュ作成部207は、システムキャッシュの作成を行うである。
システムキャッシュ管理部208は、システムキャッシュ作成部において作成されたシステムキャッシュの管理を行う。
サンプル画209はシステムキャッシュの生成やプレビューに用いるために使用される。
入力結合処理部210は、システムキャッシュを用いてカラーマッチング処理を行う。
履歴管理部211は、使用した入力デバイスプラグイン、出力デバイスプラグイン、入出力デバイス情報ならびに色空間変換プラグインの組み合わせをカラーマッチング履歴として管理する。
制御部212は、上記各構成の管理し、外部からのカラーマッチング指示を受け付け、カラーマッチング処理の実行を制御する。
インストール制御部213は、デバイス情報、デバイスプラグイン、色空間変換プラグインのインストールの制御を行う。
<装置の構成>
図3は図2に示される機能構成を実現する装置の構成例を示すブロック図である。図3に示すような装置は、例えばパーソナルコンピュータのような汎用のコンピュータ装置に、図2に示す機能を実現するソフトウェアを供給することによって実現することができる。その場合、本実施形態の機能を実現するソフトウェアは、コンピュータ装置のOS(基本システム)に含まれていても構わないし、OSとは別に例えば入出力デバイスのドライバソフトウェアに含まれていても構わない。
CPU301は、ROM302およびハードディスク(HD)307などに格納されたプログラムに従い、RAM303をワークメモリに利用して、装置全体の動作を制御する。さらにCPU301は、上述したカラーマッチングに関連する処理をはじめとする各種の処理を実行する。入力インタフェイス304は入力デバイス305を接続するためのインターフェースである。ハードディスクインタフェイス306はHD307を接続するためのインターフェースである。ビデオインタフェイス308はモニタ309を接続する。出力インタフェイス310は出力デバイス311を接続するためのインターフェースである。
なお、入力デバイスには、ディジタルスチルカメラおよびディジタルビデオカメラなどの撮影機器、並びに、イメージスキャナおよびフィルムスキャナなどイメージリーダをはじめとする各種の画像入力機器が含まれる。また、出力デバイスには、CRTやLCDなどのカラーモニタ、カラープリンタおよびフィルムレコーダなどの画像出力機器が含まれる。
また、インターフェースとして汎用のインターフェースが利用できる。その用途に応じて、例えば、RS232C、RS422、USBおよびIEEE1394などのシリアルインターフェース、並びに、SCSIおよびセントロニクスなどのパラレルインターフェースが利用可能である。
本実施例では、カラーマッチングを行うためのデバイス情報やプラグイン他のプログラムはHD307に格納されるが、ハードディスクに限らず、他の記憶媒体を用いても構わない。
<データ構成>
次に、図2に示されるカラーマッチング機能に関わる主要なデータ構成を、図4を用いて説明する。
なお、図4で説明する以外の項目も各データに含まれていても構わない。
図4は、デバイス情報ならびにデバイスプラグイン、色空間変換プラグインの模式図である。
401は、デバイス情報の模式図である。デバイス情報401は、変換LUT101、108を生成するためのデバイス信号とデバイスに依存しない色空間の対応データ、CAM変換テーブル、CAM−1テーブルを生成するための観察条件、適用可能なデバイスプラグインを特定するためのプラグインを一意に特定するプラグインID、プラグインを制御するためのパラメタなどを格納するプライベートデータ等により構成される。デバイスプラグインIDを構成項目格納とされる理由としては、デバイスプラグインは入出力デバイスに応じてプラグインが提供されるため、測定デバイスに応じたデバイスプラグインを選定する必要があるためである。
402は、デバイスプラグインの模式図である。デバイスプラグイン402は、本実施例に用いるプラグインを一意に特定するためのプラグインID、プラグイン名称、改定履歴を管理するためのバージョン情報、適用可能なデバイスを特定するための適用可能デバイス情報、変換処理等の入力変換部201、出力変換部202における機能を実行するプログラムから構成される。プラグインIDは例えばUUIDなどを用いる。またデバイス情報は、ディジタルカメラ、プリンタといった一般的なデバイス分類や特定の機種など適用範囲を指定することが可能である。
403は、色空間変換プラグインの模式図である。色空間変換プラグイン403は、本実施例に用いるプラグインを一意に特定するためのプラグインID、プラグイン名称、改定履歴を管理するためのバージョン情報、レンダリングインテントに相当する色空間変換方法ならびに色空間変換部102(103)における機能を実行するプログラムより構成される。プラグインIDは、デバイスプラグインと同様に、例えばUUIDなどを用いる。
<デバイス情報>
図8、図9及び図28は、図2に示したデバイス情報204(デバイス情報401)の一例である。デバイス情報には重み付け設定データおよび標本点データが含まれる。
図8における、「RATE=“GRAY”」は、後述する重み付け設定データ1111の一例である。
図9における、「RATE_0_0_0=1」と「RATE_0_0_32=0」は、後述する重み付け設定データ1111の一例である。
図28における、「RATE=”DYNAMIC”」と「RATE_OPTION=”INC_JET_PRINTER”」と「RATE=“GRAY”」は、後述する重み付け設定データ1111の一例である。
図8、図9及び図28における「DATA_START」と「DATA_END」で挟まれる部分は、デバイス色信号とデバイスに依存しない色空間データ(XYZ値)の対応値を示す標本点データ1110である。図8及び図9では、デバイス色信号としてRGB、デバイス依存しない色空間データとしてXYZを用いている。
なお、重み付け設定データ1111は、図8、9、28に示されるように標本点データと独立に管理されるのではなく、標本点データ列内で管理されても構わない。例えば、標本点データ列の最後に重み付け設定データを記述するようにしても構わない。
本実施例では、デバイス情報はテキスト形式で示されるが、XML形式など他の形式で示しても構わない。
<入力変換部201の構成>
図5は、図2に示した入力変換部201の構成例を示すブロック図である。図27と図5の違いは、図5には重み付け最適化部1105があり図27にはないことであり、図5における色変換装置の説明を後述しているため、ここでは図27の説明は省略する。
本実施例では、変換部として、四面体補間を行う変換部(以下、変換部(四面体補間)と呼ぶ)およびスプライン補間を行う変換部(以下、変換部(スプライン補間))を有する例を用いて説明する。
まず、変換部で行われる四面体補間およびスプライン補間の処理について説明する。
(四面体補間)
変換部(四面体補間)1102で使用する四面体補間は、初期化部1101によって標本点データ1110から作成されたルックアップテーブル(図10)を用いて、入力データ(RGB)を出力データ(L*a*b*)に変換する。
ルックアップテーブル(LUT)は、標本点データ(図14、図15)における「DATA_START」と「DATA_END」で挟まれた部分に記述されているデバイス色信号(RGB)とデバイスに依存しない色空間データ(XYZ)の対応値から作成される。具体的には、標本点データのXYZ値を所定式に基づきL*a*b*値に変換する。次に、LUTの格子点のRGB値に対応する標本点データから選択し、選択された標本点データのL*a*b*値を格納することにより、LUTは作成される。
例えば、L*a*b*変換後の標本点データが図7に示されるような場合は、図10に示されるような5*5*5の格子点を有するRGB→L*a*b*_LUTが作成される。
変換部(四面体補間)1102は、入力データが含まれる四面体領域を構成する四頂点に対応する格子点データを用いて線形補間処理を行う。四面体領域は、図11に示されるように、隣接する八つの色で囲まれる六面体領域を、六つに分割したものである。本実施例では、R=G=Bの軸を基準に六面体領域を六つの四面体領域に分割している。したがって、本実施例の変換部(四面体補間)1102では、グレイを高精度に再現することができる。
(スプライン補間)
変換部(スプライン補間)1102で使用するスプライン補間について説明する。
本実施例のB−スプライン体は、次の区分的多項式を基底関数とする多重総和演算式で定義される。
λ=ΣiΣjΣkcλijkNri(rr)Ngj(gg)Nbk(bb)
a=ΣiΣjΣkcaijkNri(rr)Ngj(gg)Nbk(bb)
b=ΣiΣjΣkcbijkNri(rr)Ngj(gg)Nbk(bb)
ここで、rr、gg、bbはRGB値
λ、a、bはL*a*b*値
NrはR軸方向での基底関数
NgはG軸方向での基底関数
NbはB軸方向での基底関数
cλijk、caijk、cbijkは係数
Nr、Ng、Nbに付属するサフィクスi、j、kはそれぞれの軸に対する
基底における基底関数番号
変換部(スプライン補間)は、多重総和演算式を用いて、入力データ(RGB)を出力データ(L*a*b*)に変換する。
本実施例のスプライン補間によれば、図15の模式図に示すように、RGB値に対するL*a*b*値の変化を滑らかに表現することができる。なお、図15はスプライン補間の算出結果をL*a*b*空間における分布として表現したものである。図15に示す軸以外の線は、RGB値の何れか一つが変化した際のL*a*b*値の変化の軌跡を表す。
図13に、初期化部1101で行われるB−スプライン体の係数および基底関数の算出処理を説明するフローチャートを示す。標本データとして図7を用いた場合を説明する。
まず、標本点データからRGB値とL*a*b*値との対応関係を取得する(S1801)。以後、RGB値とL*a*b*値の対応データを、i番目の編集色のRGB値をrri、ggi、bbi、L*a*b*値をλi、ai、biと説明する。
標本点データにおいて、R値とG値が0のときのB値の並びをB値のステップと呼ぶ。図7におけるB値のステップは(0、64、128、192、255)であり、B値はステップ値以外はとらない。同様に、R値、G値のステップも同じステップ(0、64、128、192、255)である。
次に、図7に示される標本点データから、R/G/B値のステップに基づいて基底関数を算出し、記憶する(S1802)。基底関数の算出には、一般的なDeBoor−Coxのアルゴリズムを用いる。R/G/B値のステップが同一であり、基底関数Nr、Ng、Nbが何れも三位のB−スプライン基底である場合は、何れの基底関数も図14に示すようなξ0〜ξ3の四節点の基底関数になる。なお、図14はR軸の基底関数Nrを示している。以下、基底関数は何れも三位のB−スプライン基底であるとして説明する。
次に、算出した基底関数と、RGB値とL*a*b*値との対応関係とを用いて、LU分解によって、行列方程式f=MCをλ*成分、a*成分、b*成分それぞれについて解くことにより、各係数を算出する。
以下、上記方程式による係数算出について詳しく説明する。
まず、行列Mのs行t列成分mstを次のように算出する。
mst=Nri(rrs)Ngj(ggs)Nbk(bbs)
ここで、t=25(i−1)+5(j−1)+k
i、j、kは1から5までの整数
なお、tとi、j、kの関係は、節点数と基底関数の位数によって変化する。例えば三位B−スプライン基底であり、六節点である場合はt=49(i−1)+7(j−1)+kという関係になる。
次に、係数cλijk、caijk、cbijkそれぞれの算出について説明する。
まず、係数cλijkを算出するために、次の行列方程式をLU分解を用いて解く。
fλ=[λ1,λ2,…,λ125]
cλ=[cλ111,cλ112,…,cλ115,cλ121,…,cλ155,cλ211,…,cλ554,cλ555]
fλ=M・cλ
次に、係数caijkを算出するために、次の行列方程式をLU分解を用いて解く。
fa=[a1,a2,…,a125]
ca=[ca111,ca112,…,ca115,ca121,…,ca155,ca211,…,ca554,ca555]
fa=M・ca …(4)
次に、係数cbijkを算出するために、次の行列方程式をLU分解を用いて解く。
fb=[b1,b2,…,b125]
cb=[cb111,cb112,…,cb115,cb121,…,cb155,cb211,…,cb554,cb555]
fb=M・cb …(5)
そして、算出した係数を記憶する(S1804)。
以上で算出されたB−スプライン体を用いることで、図15に示すように、RGB値に対するL*a*b値の変化を滑らかに表現することができる。なお、図15はB−スプライン体の算出結果をL*a*b*空間における分布として表現したもので、図15に示す軸以外の線は、RGB値の何れか一つが変化した際のL*a*b*値の軌跡を表す。
上記実施例では、R/G/B値のステップが同一の(0、64、128、192、255)の場合を説明したが、異なっていてもかまわない。例えば、R値とG値のステップの数は5でステップが(0、64、128、192、255)の場合に、B値のステップの数は9でステップが(0、32、64、96、128、144、192、224、255)であってもかまわない。
<Solid表現における、B−Spline基底関数の他の区分多項式での置き換え>
上記実施例では、Solid表現における基底関数としてB−Spline を用いて説明した。しかしながら、基底関数としてはRational B−Spline、Non Uniform Rational B−Spline、Bezier、Rational Bezier等、あらゆる区分的関数を用いることが出来る。
<Solid表現における各基底の節点数>
上記実施例では、各基底の節点数が同一であるとして説明した。しかしながら容易に推測できるように、基底毎に節点数を変更することも可能である。
<推定する色の次元数>
前記実施例では、いずれもRGB三次元よりL*a*b*三次元を算出していた。しかしながら、推定する色の次元数になんら拘束は無い。
<Solid表現の拡張>
前記実施例では、推定元の色空間としてRGB三次元によるSolid表現を用いてきた。しかしながら、この推定元の色空間の次元数になんら拘束は無い。
以下、図5および図6を用いて、入力変換部201の構成および処理手順を説明する。
ステップS2001では、初期化部1101が変換部初期化データ1116と重み付け部初期化データ1117を作成し、変換部1102および重み付け部1103を初期化する。
初期化部1101は、デバイス情報から標本点データ1110および重み付け設定データ1111を取得する。そして、初期化部101は、変換部(四面体補間)のための変換部初期化データ1116と、変換部(スプライン補間)のための変換部初期化データ1116を作成する。
変換部(四面体補間)のための変換部初期化データ(四面体補間)は、図10に示されるルックアップテーブルである。変換部(スプライン補間)のための変換部初期化データ(スプライン補間)は、図13の処理によって求められるB−スプライン体の計数値である。
さらに、初期化部1101は、重み付け部初期化データ1117を作成する。
重み付け部初期化データ1117の1例を、図12に示す。図12における、RGB_R、RGB_G、RGB_Bは、デバイス色信号であるRGB値のR値、G値、B値のそれぞれに相当する。RATE1は変換部(四面体補間)の重みデータである。RATE2は変換部(スプライン補間)の重みデータである。RATEは0以上、1以下の数が設定され、RATE1とRATE2の合計が1になるように設定されている。
ここで、重み付け部初期化データ1117におけるRATEの値は以下のように算出される。
デバイス情報において、重み付け設定データ1111が、図8のように「RATE=“GRAY”」として記述されている場合は、以下のように重み付け部初期化データを作成する。R,G,Bの各値が同じ値つまりグレーの標本点に対しては、「RATE1=1、RATE2=0」を設定する。そして、R,G,Bの各値が同じ値でない標本点に対しては、「RATE1=0、RATE2=1」を設定する。図8の例によれば、グレイという特定の条件を満たす標本点に対して、簡単に重み付けデータを設定することができる。
一方、重み付け設定データ1111が、デバイス情報において、図9のように指定されたRGB値に対して記述されている場合は、以下のように重み付け部初期化データを作成する。図9のように、指定されたRGBに対して重み付け設定データが記載されている場合は、デバイス情報にて指定されていないRGBに対する重み付けデータとして「RATE1=0.5、RATE2=0.5」を設定する。
デバイス情報に記述されているRATE情報を抽出する。そして、RATE情報にて指定されたRGB値のRATE1の値を、RATE情報にて指定された値に設定する。例えば、「RATE_0_0_0=1」を抽出した場合は、R=0、G=0、B=0の標本点に対して、「RATE1=1、RATE2=0」を設定する。「RATE_0_0_32=0」を抽出した場合、R=0、G=0、B=32の標本点に対して、「RATE1=0、RATE2=1」を設定する。図9の例によれば、各標本点に対して個別に重み付けデータを設定することができる。この場合、特にグレーだけではなくて、任意の標本点に対して四面体補間の割合を設定することが可能となり柔軟性が向上する。例えば、図12に示されるように各標本点における重み付けデータを設定することができる。
さらに、重み付け設定データ1111が、デバイス情報において、図28のように「RATE=”DYNAMIC”」として記述されている場合は、次のように設定する。RGB色空間上で隣接しているまたはその近傍にある標本点同士のL*a*b*色空間上での幾何学的な関係を用いて、重み付け部初期化データ1117を作成する。
以下、図22、23、24、25、26を用いて、図28のように「RATE=”DYNAMIC”」として記述されている場合における、重み付け最適化部1105での処理手順を説明する。
ステップS2201では、重み付け最適化部1105が、標本点データ1110を元に幾何学的な関係(図23、24、25)を算出する。図23、24、25の「○印」は標本点であり、L*a*b*色空間上に標本点をプロットした図である。点線、二重線、実線はRGB色空間上で隣接する標本点を結ぶ線であり、隣接している関係を表す。点線は、RGB色空間上で、R軸方向に隣接する関係であることを表す。二重線は、RGB色空間上で、G軸方向に隣接する関係であることを表す。実線は、RGB色空間上で、B軸方向に隣接する関係であることを表す。標本点同士のL*a*b*色空間上での幾何学的な関係の1つとして、図24の角度θbがあげられる。点線は標本点C、B2を通る直線であり、角度θbはその点線と標本点C、B1を結ぶ直線との角度である。その他の幾何学的な関係としては、例えば、図25の標本点C、R2、B2、BR2、G2、RG2、GB2、RGB2の8点を結ぶ六面体の体積や、六面体を対角線で結ぶ標本点同士の距離や隣接する標本点同士の距離などがある。また、この六面体は、図11と同様に六つの四面体領域に分割できるが、その四面体領域の体積なども幾何学的な関係である。これらの幾何学的な関係はデバイスの性質を表す指標となり、この指標に基づいてデバイスの性質を判断し最適な補間方法の重み設定することで、エリア毎に異なる最適な補間の割合を設定することが可能となる。例えば、図24の角度θbが大きい場合は非線形性が強く、0に近ければ線形性が強い。また、四面体領域や六面体領域の体積が小さい場合や、隣接する標本点の距離が0に近い場合などは、デバイスの性質を高精度に近似する非線形補間の効果は小さいと判断できる。逆に大きいと、非線形補間の効果が大きいと判断することも可能となる。
ステップS2202では、重み付け最適化部1105が、ステップS2201において算出した幾何学的な関係を元に重み付け部初期化データ1117を算出する。図24の角度θbはB軸方向の標本点同士のなす角度であり、標本点Cに属する幾何学的な関係の1つである。同様にR軸方向、G軸方向の標本点同士の角度θr、θgも、標本点Cに属する幾何学的な関係である。この時、標本点Cにおける重み付け部初期化データ1117を算出方法の一例を、図26を用いて説明する。ステップS2601では、標本点Cに属する幾何学的な関係である角度θr、θg、θbの最大値θmaxを算出する。ステップS2602では、最大値θmax<10度であるかを判定し、真であるならば、ステップS2603に進み、偽であるならば、ステップS2604に進む。RATE1は変換部(四面体補間)の重みデータであり、RATE2は変換部(スプライン補間)の重みデータである。ステップS2603では、標本点Cにおける重み付け部初期化データ1117の値を「RATE1=0.9、RATE2=0.1」に設定する。ステップS2604では、最大値θmax<50度であるかを判定し、真であるならば、ステップS2605に進み、偽であるならば、ステップS2606に進む。ステップS2605では、標本点Cにおける重み付け部初期化データ1117の値を「RATE1=0.5、RATE2=0.5」に設定する。ステップS2606では、標本点Cにおける重み付け部初期化データ1117の値を「RATE1=0.1、RATE2=0.9」に設定する。
つまり、最大値θmaxが大きいときはデバイスの性質として非線形性が強いと判断し、変換部(スプライン補間)の重みRATE2を高くする。逆に、最大値θmaxが小さいときはデバイスの性質として線形性が強いと判断し、変換部(四面体補間)の重みRATE1を高くする。標本点Cが色域境界の場合は、色域の内側に隣接する標本点の重みや近傍の標本点に設定した重みを元に設定してもよいし、その他の方法を用いて設定してもよい。
標本点Cに属する幾何学的な関係の1つである、標本点Cの近傍の四面体領域の体積に着目した場合の標本点Cにおける重み付け部初期化データ1117を算出方法の一例を、図30を用いて説明する。ステップS2901では、標本点Cに隣接する最大24個の四面体領域で最も体積が大きい四面体領域の体積である最大値Vmaxを算出する。ステップS2902では、最大値Vmax<100(L*a*b*色空間上での体積)であるかを判定し、真であるならば、ステップS2903に進み、偽であるならば、ステップS2904に進む。ステップS2903では、標本点Cにおける重み付け部初期化データ1117の値を「RATE1=0.9、RATE2=0.1」に設定する。ステップS2604では、最大値Vmax<500であるかを判定し、真であるならば、ステップS2905に進み、偽であるならば、ステップS2906に進む。ステップS2905では、標本点Cにおける重み付け部初期化データ1117の値を「RATE1=0.5、RATE2=0.5」に設定する。ステップS2906では、標本点Cにおける重み付け部初期化データ1117の値を「RATE1=0.1、RATE2=0.9」に設定する。
つまり、最大値Vmaxが大きいときはデバイスの性質として非線形性が強い可能性が高いと判断し、変換部(スプライン補間)の重みRATE2を高くする。逆に、最大値Vmaxが小さいときはデバイスの性質として線形性が強い可能性が高いと判断し、変換部(四面体補間)の重みRATE1を高くする。
他の実施の形態として、ステップS2602、ステップS2604、またはステップS2902、ステップS2904の条件を他の幾何学的な関係をパラメタに使用してもよい。また、条件分岐もステップS2602、ステップS2604、またはステップS2902、ステップS2904の2つ以外にあってもよいし、1つに減らしてもよい。ステップS2603、ステップS2605、ステップS2606、またはステップS2903、ステップS2905、ステップS2906で設定する割合は別の値でもかまわない。なお、標本点、角度、距離、体積などを引数にとり重み付け初期化データ1117を計算するような計算式になっていてもよい。
また、ステップS2601、ステップS2901では、最大値を算出したが、平均値でも合計でも、その他の値でも、それらを組み合わせてもかまわない。
例えば、図26と図30を組み合わせてもよい。また、標本点Cの近傍にある六面体領域の体積や、標本点Cと隣接する標本点との距離などの他の幾何学的な関係をパラメタしてもよいし、それら複数の幾何学的な関係を組み合わせてもよい。
また、他の実施の形態では、色域のエリア毎にパラメタを独自に設定することで、エリアに固有の性質を反映することが可能となる。例えば、色相境界近傍のエリアでは、変換部(四面体補間)の重みが高めに算出されるようにパラメタを設定する。
図28のように、「RATE_OPTION=”INC_JET_PRINTER”」が「RATE=”GRAY”」と同時に記述されて場合には、次のように設定する。図26のフローチャートに沿って求める重み付け部初期化データ1117によらずに、R,G,Bの各値が同じ値つまりグレーの標本点に対しては、「RATE1=1、RATE2=0」を設定する。そして、R,G,Bの各値が同じ値でない標本点に対しては、「RATE1=0、RATE2=1」を設定する。
図28のように「RATE_OPTION=”INC_JET_PRINTER”」が記述されている場合には、デバイスの基本特性がインクジェットプリンターであることを示している。よって、インクジェットプリンターの性質にあうような特別に設定するパラメタを使い、重み付け部初期化データ1117を算出する。このとき、図28のように「RATE=”DYNAMIC”」と同時に記述されている場合には、ステップS2602、ステップS2604に記載の10度や50度といった値をインクジェットプリンターのデバイスの性質に適切な値に変えるといったことが可能になる。
ここまでは、重み付け最適化部1105が初期化部1101内にある場合を説明してきたが、別の実施の形態では、図5にあるように初期下部1101とは独立に構成される。この場合は、ステップS2202では、重み付け最適化部1105が、ステップS2201において算出した幾何学的な関係を元に重み付け部初期化データ1117を算出するかわりに次のように重み付けデータを作成する。図9のような、指定されたRGBに対して重み付け設定データを記載している重み付け設定データ1111を作成する。
ステップS2002では、各変換部1102が入力データを変換するとともに、重み付け部1103が入力データに対応する重み付けデータを計算する。
変換部(四面体補間)1102および変換部(スプライン補間)1102のそれぞれが、入力データ1112を変換する。そして、L*a*b*で示される変換データ(四面体補間)1113およびL*a*b*で示される変換データ(スプライン補間)を生成する。
重み付け部1103は、入力データ1112に対応する重み付けデータ1114を算出する。
重み付け部1103は、重み付け部初期化データ1117のデータを使用して内部にルックアップテーブル(LUT)を作成する。例えば図12に示す重み付け部初期化データ1117を用いた場合、RGB値に対してRATE_1およびRATE_2を対応付けるLUTを作成する。そして、この作成されたLUTを用いた線形補間(例えば、四面体補間)により、入力データに対する重み付けデータ1114(RATE1およびRATE2)を作成する。
ステップS2003では、変換データ(四面体補間)および変換データ(スプライン補間)を混合し、出力データを算出する。 混合部1104は、変換データ(四面体補間)および変換データ(スプライン補間)を、重み付けデータ(RATE1、RATE2)を用いて、以下のように、混合することにより出力データ1115を算出する。
出力データ=RATE1*変換データ(四面体補間)+RATE2*変換データ(スプライン補間)
そして、出力データ(L*a*b*)を所定の演算式を用いてXYZに変換し、出力する。
各変換部は異なる特徴を有している。本実施例によれば、入力データの色領域に適した特徴を有する変換部の重みを大きくすることができる。つまり、特定の色領域に適した色再現を実現することができる。そして、重みデータも重み付け部1103において補間処理されるので、重みデータも隣接の重みデータに基づき徐々に変化する。したがって、色領域全体において色の連続性を保つことができる。
例えば、本実施例では、変換部において四面体補間を用いる変換部と、スプライン補間を用いる変換部とを有している。本実施例の四面体補間は、線形補間を用いるとともにグレー軸を基準として六つの四面体領域に分割しているので、グレーの再現性およびグレーの階調性にすぐれている。これに対して、スプライン補間は非線形補間であり、図15に示されるように入力値に対する出力値の変化を滑らかに表現することができ、デバイスの性質を高精度に近似することができる。しかし、グレー軸に関しては、非線形補間を使用すると、軸をゆがんで補間してしまうことがありグレーの再現を低下させてしまう場合がある。
よって、重み付け設定データを図8のように設定することにより、グレー軸付近は変換データ(四面体補間)の割合が1になり、グレー軸からはなれると変換データ(スプライン補間)の割合を大きくすることが実現できる。これにより、グレー軸付近での出力データ1115は、変換データ(四面体補間)の値に近くなり、グレー軸から離れるにつれて出力データは変換データ(スプライン補間)の値に近くすることができる。
スプライン補間は非線形補間であり、一般的なデバイスの性質をよく近似して補間することが可能である。グレー軸に関しては、非線形補間を使用すると、軸をゆがんで補間してしまうことがある。図8によれば、グレー近辺を四面体補間とすることにより、グレーの色再現性を向上することが可能になる。なお、重み付けデータは補間により求めているので、色空間の中で重み付けは連続的に変わるため、出力データも連続的に変化し、階調性を保つことが可能となっている。
よって、線形補間によりグレー軸の色再現性を向上させ、非線形補間により色空間全域にわたる色再現性の向上させることを、階調性を保ちながら実現することができる。
また、標本点同士の幾何学的な関係を元にデバイスの性質を判断することにより、次のことを実現することができる。デバイスの非線形性が強いと判断したときには、その性質をよく近似して補間することが可能な非線形補間の重みを高くすることができ。そして、デバイスの線形性が強いときには、非線形補間によりゆがんで補間するリスクを減少させるために線形補間の重みを高くすることができる。
それにより、デバイス毎に最適な重みデータを算出することが可能となり、線形性が強いエリアでも非線形性が強いエリアでもデバイスによらずに色再現性を向上させることが可能になる。
<出力変換部202の構成>
出力変換部202は、入力変換部201と同様な処理を行う。出力変換部202において、入力変換部201と異なる点は、出力変換部202ではデバイス情報203を用いて、デバイスに依存しない色空間データをデバイス色信号に変換することである。これに基づき、初期化部1101において変換部初期化データを作成する処理が異なる。
本実施例における特徴の1つである、重み付け部初期化データ1117の作成方法、変換部1102、重み付け部1103、混合部1104における処理は、入力変換部202と同様である。
(変形例)
上記実施例では、デバイスに依存しない色空間データとして、L*a*bを使用したが、L*u*vや、XYZ、Jabなど他の色空間を使用しても構わない。
上記実施例では、重み付け部初期化データとして図12のようなデータを作成した。しかしながら、重み付け部初期化データとして、図16のような他のようなデータ形式を使用してもかまわない。図16の重み付け部初期化データにおけるRATEは変換部(四面体補間)に対するRATEのみを記載している。上記実施例では、RATE1とRATE2の合計を1としているので、RATE1からRATE2を簡単に算出することができる。
さらに、図16の例では、格子点に対応するRGBに対応するL*a*b*も格納されているので、図16のデータは、変換部初期化データ(四面体補間)と重み付け部初期化データを兼ねることができる。
また、上記実施例では、2つの変換部を用いた場合の実施例を説明した。しかしながら、N個(N>2)の変換部を使用しても構わない。この場合の重み付け部初期化データの1例を、図17に示す。RATE_1、RATE_2、RATE_3はRATEと同じ意味であり、以下RATE_*と記す。RATE_*は変換部1102が2種類以上の場合に使用する。図ではRATE_3までであるが、変換部1102の数に応じて増やすことが可能である。また、該当するデバイス色信号における各RATE_*に設定する値の合計を1になるように設定する。例えば、変換部1102が3種類の場合は、該当するデバイス色信号におけるRATE_1からRATE_3の合計が1になるように設定する。このとき、RATE_3の項目を作成せずにRATE_1とRATE_2の項目だけ作成し、RATE_3に相当する値は、1からRATE_1とRATE_2に設定する値を引いた値を使用することも可能である。
また、重み付け部初期化データのデバイス色信号であるRGB値の間隔と、変換部初期化データのデバイス色信号であるRGB値の間隔とを異ならせることも可能である。このように重み付け部初期化データの標本点と変換部初期化データの標本点を独立に定義することで、より柔軟な設定が可能である。
また、重み付け部初期化データとして、図18に示すデータを使用しても構わない。図18に示す変換部初期化データは、2種類の変換部を使用する場合の例である。そして、図18に示す変換部初期化データは、RATE_1_L,RATE_1_A,RATE_1_Bを用いて、L,a,b独立に重み付けを設定することができる。これにより、例えば、グレー部分のa値、b値を四面体補間で行い、L値をスプライン補間にすることができる。これによれば、色相をぶれずにかつなめらかにL値を変化させることができ、よりグレーの再現性を向上させることが可能となる。
また、変換部(四面体補間)と変換部(スプライン補間)とにおいて、標本点データを異ならせても良い。
ステップS2001において、図19に示すような標本点データ1116を使用して、変換部(四面体補間)1102を初期化する。また、図20に示すような標本点データ1116を使用して、変換部(スプライン補間)1102を初期化する。そして、図12に示される重み付け部初期化データを使用して、重み付け部を初期化する。
図19に示す標本点データはデバイス色信号であるR値が0から64、G値が0から64、B値が0から255の範囲のみ定義している。図12における重み付け部初期化データ1117のRATE_1は、変換部(スプライン補間)1102の割り合いであり、RATE_2は、変換部(四面体補間)1102の割り合いである。R値が0から64、G値が0から64、B値が0から255の範囲以外および境界部分はRATE_1には0が設定されており、それ以外はRATE_1に0より大きい値が設定されている。つまり上記範囲内では、変換部(スプライン補間)1102の割合が高い。しかも上記範囲外の標本点の間隔はRGB値で32であるが、上記範囲内の標本点の間隔はRGB値で16であり、細かく設定されている。
例えば、上記範囲内の線形性が特に低い場合に、本実施の形態のように、その部分だけ非線形補間を行い、その他は線形補間で高速に処理することで、変換精度を向上することができる。
また、例えば、上記範囲を四面体補間で行う場合でも、上記範囲内の標本点が細かいため変換精度を向上することが可能である。このとき、全体的に標本点を細かくするより、精度がよくない範囲を限定して標本点を細かくすることにより、色変換精度の向上、および色変換速度の低下を最小限に抑えることが、階調性を保ちつつも可能となっている。
また、変換部で使用する補間のアルゴリズムは、他の8点補間や体心立方格子を用いた補間、プリズム補間など他の方法を使用しても構わない。
カラーマネージメントを実現する技術の一例として、ICC(International Color Consortium)により定められた、ICCカラープロファイルに基づきカラーマネージメントを行うシステム(Color Management System:CMS)が存在する。このシステムでは、カラーマッチングを行う為のデバイスインディペンデントなハブ色空間あるいはPCS(Profile Connection Space)を定義する。そして、デバイス色空間からハブ色空間/PCSへの色変換を規定するソース側プロファイル、ならびにハブ色空間/PCSからデバイス色空間への色変換を規定するディスティネーション側プロファイルを用いてカラーマネージメントを実現する。処理系は、ソース側プロファイルにより入力された画像の入力側デバイスに適合したデバイス色空間での色信号値をハブ色空間/PCSでの色信号値に変換した後、さらにディスティネーション側プロファイルにより、出力側デバイスに適合したデバイス色空間での色信号に変換する、という2つの大きな変換処理より構成される。上記変換処理にも本発明が適用可能なのはいうまでもない。
また、PCSを介さないような、例えば、モニタ−プリンタの色空間での直接の色変換にも本発明は適用可能である。
以上、説明したように本実施例によれば、標本点データを元に標本点同士の幾何学的な関係を算出することにより、色空間上のエリア毎に異なるデバイスの性質を判定して該当するエリアに最適な各補間方法の割合を算出することが可能となる。その結果、異なる性質をもつデバイスに対しても、該当するデバイスに最適な各補間方法の割合を算出することが可能となり、デバイスの性質によらず自動的に色域全域にわたり色再現性が向上するという効果がえられ、本発明を達することとなる。
なお、本発明を適用する計算機は、パーソナルコンピュータ、携帯電話を含む携帯端末、画像形成装置など、その形態を問わないのは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。