(57)【要約】【課題】  写像を行う上で正確に色域を求めることは非常に重要であり、写像方法を選択するに当たってはデバイスの特性を解析することが必要になるが、その解析において正確な色域を得ることが求められる。【解決手段】  RGB色空間上の色を指定するRGB値と、印刷時の再現色を表すL*a*b*値（測色値）の組を示す色分布データを読み込み(S302)、色分布データを用いて、色域算出用のBスプライン体の係数および基底関数を算出し(S303)、Bスプライン体を用いて色域データを作成する(S304)。【選択図】    図3
2006081024.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置により、所定の表色系の色域を算出する色処理方法であって、
第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算を設定し、
前記第一の表色系の複数の色信号値と、それら色信号値に対する測色結果である第二の表色系の複数の色信号値との組み合わせを示すデータに基づき前記区分的多項式の係数を求め、
前記多重総和演算を用いて、前記第一の表色系の色域に対応する前記第二の表色系の色域を算出することを特徴とする色処理方法。
【請求項２】
画像処理装置により、所定の表色系の色域を算出する色処理方法であって、
第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算を設定し、
前記第一の表色系の複数の色信号値と、それら色信号値に対する測色結果である第二の表色系の複数の色信号値との組み合わせを示すデータに基づき、前記第二の表色系の複数の信号値の並びに近似する曲面、あるいは、前記複数の色信号値を結ぶ曲面に対応する前記区分的多項式の係数を求め、
前記多重総和演算を用いて、前記第一の表色系の色域に対応する前記第二の表色系の色域を算出することを特徴とする色処理方法。
【請求項３】
前記色域の算出は、前記第一の表色系の色域境界に対応する前記第二の表色系の色域境界を算出することを特徴とする請求項1または請求項2に記載された色処理方法。
【請求項４】
前記色域の算出は、前記第一の表色系の色域境界に位置する複数点を、前記第二の表色系に変換した複数点を用いた色域表現として前記色域を算出することを特徴とする請求項1または請求項2に記載された色処理方法。
【請求項５】
前記色域表現は三角パッチ表現またはポリゴン表現であることを特徴とする請求項4に記載された色処理方法。
【請求項６】
さらに、前記色域の境界に対応する擬似三次元表示用のオブジェクトを生成することを特徴とする請求項1から請求項5の何れかに記載された色処理方法。
【請求項７】
画像処理装置を制御して、請求項1から請求項6の何れかに記載された色処理を実現することを特徴とするプログラム。
【請求項８】
請求項7に記載されたプログラムが記録されたことを特徴とする記録媒体。
【請求項９】
所定の表色系の色域を算出する画像処理装置であって、
第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算を設定する設定手段と、
前記第一の表色系の複数の色信号値と、それら色信号値に対する測色結果である第二の表色系の複数の色信号値との組み合わせを示すデータに基づき前記区分的多項式の係数を求める演算手段と、
前記多重総和演算を用いて、前記第一の表色系の色域に対する前記第二の表色系の色域を算出する算出手段とを有することを特徴とする色処理装置。
【請求項１０】
所定の表色系の色域を算出する画像処理装置であって、
第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算を設定する設定手段と、
前記第一の表色系の複数の色信号値と、それら色信号値に対する測色結果である第二の表色系の複数の色信号値との組み合わせを示すデータに基づき、前記第二の表色系の複数の信号値の並びに近似する曲面、あるいは、前記複数の色信号値を結ぶ曲面に対応する前記区分的多項式の係数を求める演算手段と、
前記多重総和演算を用いて、前記第一の表色系の色域に対応する前記第二の表色系の色域を算出する算出手段とを有することを特徴とする色処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は色処理装置およびその方法に関し、例えば、色域の算出に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータやワークステーションの普及に伴い、デスクトップパブリッシング(DTP)やディジタル画像管理が広く一般に利用されるようになった。DTP用の、カラーモニタとカラープリンタを有するコンピュータシステムにおいては、モニタ上においてカラー画像の作成・編集・加工などを行い、プレビューにより出力イメージのチェックを行った後、カラープリンタでカラー画像を出力する。あるいは、ディジタルカメラにより撮影された画像は、色調整を施した後、カラーモニタへ表示したり、カラープリンタで出力する。その際、ユーザは、モニタ上のカラー画像と、プリンタの出力画像とが知覚的に一致することを強く望む。
【０００３】
しかし、色再現技術において、カラー画像とプリンタの出力画像において知覚上の一致を図るには、以下の理由による困難を伴う。
【０００４】
CRTのカラーモニタは、蛍光体を用いて、特定波長の光を発光することでカラー画像を表現する。他方、カラープリンタは、インクなどを用いて特定波長の光を吸収し、残りの反射光によってカラー画像を表現する。このような画像表示形態の違いによって、両者は、その色域が大きく異なる。さらに、カラーモニタであっても液晶、電子銃方式のCRT、プラズマ方式では、その色域が異なる。勿論、カラープリンタも、紙質の相違、インクの使用量の相違などにより色域が異なる。このため、カラーモニタ上の画像とカラープリンタの出力画像、あるいは、複数のプリンタ機種、複数の紙質により出力したカラープリンタの出力画像相互において、これらの画像の色を測色的な意味において完全に一致させることは不可能である。従って、各表示・出力媒体におけるカラー画像を人間が知覚するとき、各画像間に大きな違いが知覚されることになる。
【０００５】
そこで、色域が異なる表示・出力媒体の間において、カラー画像の知覚上の相違を吸収し、カラー画像の知覚的なマッチングを図るガマットマッピング技術が存在する。ガマットマッピング技術は、均等表色系を用いて、ある色域を別の色域内へ写像するものである。ガマットマッピング技術の一例としては、無彩色軸上の一点へ向けて色域を圧縮する方式、明度-彩度次元でアフィン変換などの線形写像を施す方式などが知られている。さらに、特開2001-94799公報のように、一から三次元の写像を複数段に渡って施す技術、あるいは、特開2002-33929公報のように、色の変化としての階調を曲線表現に帰着したガマットマッピングを実現する技術がある。
【０００６】
これらの写像を行う上で正確に色域を求めることは非常に重要である。また、写像方法を選択するに当たってはデバイスの特性を解析することが必要になるが、その解析において正確な色域を得ることが求められる。
【０００７】
【特許文献１】特開2001-94799公報
【特許文献２】特開2002-33929公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上述の問題を個々にまたはまとめて解決するもので、色域を正確に算出することを目的とする。
【０００９】
また、色域を滑らかに算出することを他の目的とする。
【課題を解決するための手段】
【００１０】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１１】
本発明は、所定の表色系の色域を算出する際に、第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算を設定し、前記第一の表色系の複数の色信号値と、それら色信号値に対する測色結果である第二の表色系の複数の色信号値との組み合わせを示すデータに基づき前記区分的多項式の係数を求め、前記多重総和演算を用いて、前記第一の表色系の色域に対応する前記第二の表色系の色域を算出することを特徴とする。
【００１２】
また、所定の表色系の色域を算出する際に、第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算を設定し、前記第一の表色系の複数の色信号値と、それら色信号値に対する測色結果である第二の表色系の複数の色信号値との組み合わせを示すデータに基づき、前記第二の表色系の複数の信号値の並びに近似する曲面、あるいは、前記複数の色信号値を結ぶ曲面に対応する前記区分的多項式の係数を求め、前記多重総和演算を用いて、前記第一の表色系の色域に対応する前記第二の表色系の色域を算出することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、色域を正確に算出することができる。
【００１４】
また、色域を滑らかに算出することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明にかかる実施例の色処理を図面を参照して詳細に説明する。
【実施例１】
【００１６】
［構成］
図1は実施例の色処理装置の構成例を示すブロック図である。
【００１７】
図1において、CPU 101は、ROMやRAMからなるメインメモリ102やハードディスクドライブ(HDD) 105に格納されたプログラムに従い、メインメモリ102をワークメモリとして、システムバス（およびPCIバス）114を介して後述する構成を制御して、後述する各種処理および制御を実行する。
【００１８】
SCSIなどの汎用パラレルインタフェイス(I/F) 103は、HDD 105とシステムバス114をインタフェイスする。グラフィックアクセラレータ106は、カラーモニタ107とシステムバス114をインタフェイスする。USBコントローラ108は、カラープリンタ109とシステムバス114をインタフェイスする。キーボード/マウスコントローラ110は、キーボード111やマウス112などの入力デバイスとシステムバス114をインタフェイスする。なお、SCSI I/F 103、キーボード/マウスコントローラ110などに代わりUSBコントローラ108やIEEE 1394などのシリアルバスインタフェイスによって、HDD 105、キーボード111およびマウス112とシステムバス114をインタフェイスしてもよい。ネットワークインタフェイス(I/F) 104は、ローカルエリアネットワーク(LAN) 113とシステムバスをインタフェイスする。
【００１９】
［色域の解析］
上記構成における、色分布データを用いて色域を算出し解析する一連の動作を説明する。
【００２０】
まず、ユーザの操作およびCPU 101の指令により、HDD 105に格納された色域解析アプリケーションが起動される。続いて、色域解析アプリケーションの処理に従いHDD 105に格納された初期プロファイルと初期編集色データが、CPU 101の指令に基づきSCSI I/F 103、システムバス114を経由して、メインメモリ102に転送される。そして、色域解析アプリケーションにより、図2に示す色解析ツールのユーザインタフェイスがカラーモニタ107に表示される。
【００２１】
図2に示すユーザインタフェイスには、色分布データの読み込みを指示するための分布データ読み込みボタン201、色分布データの記憶を指示するための色域記憶ボタン202、色域の三次元表示領域203、記憶した色域に対する操作を指示するための操作エリア204、色域解析アプリケーションの終了を指示する終了ボタン208がある。
【００２２】
操作エリア204には、記憶した色域を選択するためのリストボックス205、リストボックス205で選択した色域の三次元表示をオン/オフするためのチェックボックス206、リストボックス205で選択した色域をメインメモリ102の記憶領域から削除するための色域削除ボタン207がある。
【００２３】
ユーザが分布データ読み込みボタン201をマウス112などでクリックして（または押して）、色分布データの読み込みを指示すると、色域解析アプリケーションの処理に従い、色分布データが、CPU 101の指令に基づき、HDD 105からSCSI I/F 103、システムバス114を経由して、メインメモリ102に転送される。
【００２４】
色域解析アプリケーションは、メインメモリ102に格納された色分布データから色域を算出し、算出した色域を三次元表示領域203に擬似三次元表示する。ここで、ユーザが色域記憶ボタン202を押すと、擬似三次元表示された色域はメインメモリ102に記憶（退避）される。
【００２５】
ユーザは、リストボックス205を操作することで、メインメモリ102に記憶（退避）した色域の中から操作対象の色域を選択し、選択した色域の三次元表示をチェックボックス206で設定する。チェックボックス206がオンに設定された色域は、三次元表示領域203に表示中の他のオブジェクトに重畳して表示される。
【００２６】
また、ユーザが終了ボタン208を押すと、色域解析アプリケーションは、処理に使用した総てのデータの記憶領域やワーク領域を解放し、処理を終了する。
【００２７】
［色域解析アプリケーションの動作］
次に、色解析アプリケーション動作を説明する。図3は色解析アプリケーションの動作を説明する状態遷移図である。
【００２８】
まず、動作に必要な各種メモリ領域の確保など初期化を行い(S301)、色分布データをHDD 105から読み込み、メインメモリ102に記憶にする(S302)。メインメモリ102に保持される色分布データは、RGB色空間上の色を指定するRGB値と、印刷時の再現色を表すL*a*b*値（測色値）の組を示す色分布データ、および、色分布データの総数からなる、図4に示すようなデータ構造を有する。その先頭には色分布データの総数が記述され、その後に、色分布データの総数分、RGB値とL*a*b*値の組が記述される。
【００２９】
次に、メインメモリ102に記憶された色分布データを用いて、後述する処理により色域算出用のBスプライン体に対する係数並びに基底関数を算出し(S303)、後述する処理に従って、Bスプライン体を用いて色域データを作成してメインメモリ102に記憶し(S304)、後述する処理に従って、色域データから擬似三次元表示用の3Dオブジェクトデータを算出し(S305)、その後、ユーザの操作を待つ状態になる(S306)。
【００３０】
ユーザの操作待ち状態(S306)で、図2に示す色分布データ読み込みボタン201が押されると、読み込むべき色分布データファイルをユーザが指定するためのダイアログを表示し、色分布データファイルが指定されると、指定された色分布データファイルがオープン可能か否かを判定し、オープン可能であればその色分布データファイルを読み込んでメインメモリ102に記憶し、色分布データファイルのフォーマットが正しいか否かを判定する(S307)。そして、オープン可能かつ正しいフォーマットであればステップS303へ遷移するが、オープン不可または不正なフォーマットの場合は、その旨を表示してステップS306へ戻る。
【００３１】
また、図2に示す色域記憶ボタン202が押されると、メインメモリ102に記憶した色域の3Dオブジェクトデータをメインメモリ102（またはHDD 105）の所定領域に退避し(S308)、ステップS306へ戻る。
【００３２】
また、図2に示す色域選択リストボックス205が操作されると、選択された色域に対応する番号をメインメモリ102の所定領域に記憶し(S309)、ステップS306へ戻る。
【００３３】
また、図2に示すチェックボックス206が操作されると、メインメモリ102に記憶された選択色域の番号に対応する色域の3Dオブジェクトデータの表示をオンまたはオフに設定し(S310)、ステップS306へ戻る。
【００３４】
また、図2に示す色域削除ボタン207が押されると、メインメモリ102に記憶された選択色域の番号に対応する色域の3Dオブジェクトデータをメインメモリ102（またはHDD 105）から削除し(S311)、ステップS306へ戻る。
【００３５】
また、図2に示す三次元表示領域203内におけるマウス操作を検出すると、ユーザのマウス操作に応じて、三次元表示領域203に表示中の3Dオブジェクトのズームイン、ズームアウト、回転処理を行い(S312)、ステップS306へ戻る。
【００３６】
また、図2に示す終了ボタン208が押されると、メモリ解放などの終了動作を行った後、色解析アプリケーション動作を終了する。
【００３７】
［色域算出用のBスプライン体の設定(S303)］
次に、色域算出用のBスプライン体の係数および基底関数の算出処理(S303)を説明するが、以後の説明のために、予め色算出用のBスプライン体の式を説明する。色域算出用のBスプライン体は式(1)で定義される。
λ = ΣiΣjΣkcλijkNri(rr)Ngj(gg)Nbk(bb)
a = ΣiΣjΣkcaijkNri(rr)Ngj(gg)Nbk(bb)    …(1)
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は
それぞれの軸に対する基底における基底関数番号
【００３８】
図5は色域算出用のBスプライン体の係数および基底関数の算出処理(S303)を説明するフローチャートである。
【００３９】
まず、図4に示すデータ構造で表される色分布データから、RGB値とL*a*b*値の対応関係を、すべての組について取得する(S501)。以後、RGB値とL*a*b*値の対応関係を、i番目の編集色のRGB値をrri、ggi、bbi、L*a*b*値をλi、ai、biと説明する。
【００４０】
次に、Bスプライン体の基底関数を算出してメインメモリ102に記憶する(S502)。例えば、基底関数Nr、Ng、Nbが何れも三位のBスプライン基底であり、かつ、節点数が4であれば、何れも図6に示すようなξ0〜ξ3の四節点の基底関数になる。なお、図6はR軸の基底関数Nrを示している。以下、基底関数は何れも四節点の三位のBスプライン基底として説明する。
【００４１】
次に、算出した基底関数と、図4に示す色分布データから取得した、RGB値とL*a*b*値の対応関係を示す分布データを用いて、Bスプライン体の各係数を算出する(S503)。この処理は、行列方程式f=MCを、L*成分、a*成分、b*成分それぞれについてLU分解を用いて解き、各係数を算出することで行う。以下、上記方程式による係数算出について詳しく説明する。
【００４２】
まず、行列Mのs行t列成分mstを次のように算出する。
mst = Nri(rrs)Ngj(ggs)Nbk(bbs)    …(2)
ここで、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を算出するために、列ベクトルfλのs行成分fλsを次のように算出し、列ベクトルfλを定める。
fλ = [λ1, λ2, …, λ124, λ125]
cλ= [cλ111, cλ112, …, cλ115, cλ121,
…, cλ155, cλ211, …, cλ554, cλ555]    …(3)
fλ= M・cλ
【００４５】
次に、係数caijkを算出するため、次の行列方程式をLU分解を用いて解く。
fa = [a1, a2, …, a124, a125]
ca = [ca111, ca112, …, ca115, ca121,
…, ca155, ca211, …, ca554, ca555]    …(4)
fa = M・ca
【００４６】
次に、係数cbijkを算出するため、次の行列方程式をLU分解を用いて解く。
fb = [b1, b2, …, b124, b125]
cb = [cb111, cb112, …, cb115, cb121,
…, cb155, cb211, …, cb554, cb555]    …(5)
fb = M・cb
【００４７】
そして、算出した係数をメインメモリ102に記憶する(S504)。
【００４８】
［3Dオブジェクトの生成(S305)］
RGB立方体表面が色域境界であるとして、次のように色域を構成する六面を色域として算出する。
【００４９】
● R=0平面
λ = ΣjΣkcλ1jkNgj(gg)Nbk(bb)
a = ΣjΣkca1jkNgj(gg)Nbk(bb)    …(6)
b = ΣjΣkcb1jkNgj(gg)Nbk(bb)
● R=255平面
λ = ΣjΣkcλ5jkNgj(gg)Nbk(bb)
a = ΣjΣkca5jkNgj(gg)Nbk(bb)    …(7)
b = ΣjΣkcb5jkNgj(gg)Nbk(bb)
● G=0平面
λ = ΣiΣkcλi1kNri(rr)Nbk(bb)
a = ΣiΣkcai1kNri(rr)Nbk(bb)    …(8)
b = ΣiΣkcbi1kNri(rr)Nbk(bb)
● G=255平面
λ = ΣiΣkcλi5kNri(rr)Nbk(bb)
a = ΣiΣkcai5kNri(rr)Nbk(bb)    …(9)
b = ΣiΣkcbi5kNri(rr)Nbk(bb)
● B=0平面
λ = ΣiΣjcλij1Nri(rr)Ngj(gg)
a = ΣiΣjcaij1Nri(rr)Ngj(gg)    …(10)
b = ΣiΣjcbij1Nri(rr)Ngj(gg)
● B=255平面
λ = ΣiΣjcλij5Nri(rr)Ngj(gg)
a = ΣiΣjcaij5Nri(rr)Ngj(gg)    …(11)
b = ΣiΣjcbij5Nri(rr)Ngj(gg)
以上のように、Bスプライン体の式の係数をそのままBスプライン面の式の係数に用いることで、色域の表面を算出することが可能である。算出された六つのBスプライン面は、表面データとしてメインメモリ102に格納する。そして、メインメモリ102に格納された表面データを読み込み、3Dオブジェクトデータ用のスムースシェーディング表示用データに変換する。
【００５０】
このように、色域を正確かつ滑らかに算出することが可能になる。さらに、然るべき数のRGB値とL*a*b*値の対応関係さえ得られれば、RGB色域表面のL*a*b*値が一切得られずとも、対応関係から非線型演算を行い色域を推定することが可能になる。この非線型演算は色域の変化のトレンドを反映するので、算出される色域は正確性に富んだものになる。
【実施例２】
【００５１】
以下、本発明にかかる実施例2の色処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００５２】
実施例2は、ステップS304における色域の算出処理、並びに、ステップS305における3Dオブジェクトの生成処理を変更して、三角パッチによる色域表現を実施するものである。
【００５３】
図7は色域の算出処理(S304)を示すフローチャートである。
【００５４】
まず、作業用のメモリ領域確保し、変数を初期化するなど、初期化動作を行い(S701)、然るべき順序に従い一つの三角パッチを選択し、三頂点のRGB値を取得する(S702)。ここで、三頂点のRGB値はRGB色空間における色域境界、すなわちRGB立方体表面に位置する。
【００５５】
次に、メインメモリ102から色域算出用のBスプライン体の基底関数と係数値を取得し、下式を用いて三頂点のRGB値をL*a*b*値に変換する(S703)。
λ = Σi=15Σj=15Σk=15cλijkNri(rr)Ngj(gg)Nbk(bb)
a = Σi=15Σj=15Σk=15caijkNri(rr)Ngj(gg)Nbk(bb)    …(12)
b = Σi=15Σj=15Σk=15cbijkNri(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は
それぞれの軸に対する基底における基底関数番号
【００５６】
次に、算出した三頂点のL*a*b*値を図8に示すデータ構造にしてメインメモリ102の所定アドレスに格納する(S704)。図8に示すデータ構造の先頭には三角パッチの総数が記述され、その後に三角パッチの総数分、各三角パッチの三頂点のL*a*b*値の組が色域データとして記述される。
【００５７】
次に、総ての三角パッチについて色域を算出したか否かを判断し(S705)、未了であればステップS702からS704の処理を繰り返す。また、色域の算出が終了した場合は、作業用メモリの解放などの終了動作を行う(S706)。
【００５８】
続く、ステップS305の3Dオブジェクトの生成処理では、メインメモリ102に格納された三角パッチの色域データを読み込み、3Dオブジェクトデータ用のポリゴンデータに変換する。これにより図2に示す三次元表示領域203に擬似三次元表示される色域は、図9に示すようにパッチ境界が認識できるものになる。
【実施例３】
【００５９】
以下、本発明にかかる実施例3の色処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６０】
実施例1では、ステップS303における色域算出用のBスプライン体の設定処理おいて、色分布データに記された複数の色信号値の間を補間するようにBスプライン体を定めたが、実施例3では、それら複数の色信号値の並びに近似する曲面になるように（あるいは、それら複数の色信号値を結ぶ曲面を平滑化したような）Bスプライン体を設定する。以下、相違点である図5のフローチャートについて説明する。
【００６１】
まず、実施例1と同様に、図4に示すデータ構造で表される色分布データから、RGB値とL*a*b*値の対応関係を、すべての組について取得する(S501)。
【００６２】
次に、適切に節点を決定した後、それら節点に基づいて基底関数を算出し、メインメモリ102に記憶する(S502)。節点の決定方法としては、予め節点数および座標を決めておいてもよいし、あるいは、L*a*b*値の変化より節点を決定しても構わない。ただし、以下では、基底関数は何れも四節点の三位のBスプライン基底として説明する。
【００６３】
次に、算出した基底関数と、図4に示す色分布データから取得した、RGB値とL*a*b*値の対応関係を示す分布データを用いて、Bスプライン体によって算出される色と、色分布データに記された色の距離の総和が最小になるように、Bスプライン体の各係数を算出する(S503)。この処理は、行列方程式f=MCをL*成分、a*成分、b*成分についてそれぞれLU分解を用いて解くことで行う。以下、上記方程式による係数算出について詳しく説明する。
【００６４】
まず、行列Mのs行t列成分mstを次のように算出する。
mst = Σx{Nri(rrx)Ngj(ggx)Nbk(bbx)
・Nrl(rrx)Ngm(ggx)Nbn(bbx)}    …(13)
ここで、sに対してi、j、kとの間にs = 25(i - 1) + 5(j - 1) + kが成り立つ
tに対してl、m、nとの間にt =25(l - 1) + 5(m - 1) + nがなり立つ
【００６５】
なお、上記関係は節点数と基底関数の位数によって変化する。
【００６６】
次に、係数cλijkを算出するために、列ベクトルfλのs行成分fλsを次のように算出し、列ベクトルfλを定める。
fλs = ΣxNri(rrx)Ngj(ggx)Nbk(bbx)・λx    …(14)
【００６７】
ここでも先と同様に、sに対してi、j、kとの間にs = 25(i - 1) + 5(j - 1) + kが成り立つが、この関係は、節点数と基底関数の位数によって変化する。そして、LU分解を用いて、次の行列方程式を解き、係数cλijkを算出する。
cλ= [cλ111, cλ112, …, cλ115, cλ121,
…, cλ155, cλ211, …, cλ554, cλ555]    …(15)
fλ= M・cλ
【００６８】
次に、係数caijkを算出するために、列ベクトルfaのs行成分fasを次のように算出し、列ベクトルfaを定める。
fas = ΣxNri(rrx)Ngj(ggx)Nbk(bbx)・ax    …(16)
【００６９】
この後、次の行列方程式をLU分解を用いて解く。
ca = [ca111, ca112, …, ca115, ca121,
…, ca155, ca211, …, ca554, ca555]    …(17)
fa = M・ca
【００７０】
次に、係数cbijkを算出するために、列ベクトルfbのs行成分fbsを次のように算出し、列ベクトルfbを定める。
fbs = ΣxNri(rrx)Ngj(ggx)Nbk(bbx)・bx    …(18)
【００７１】
この後、次の行列方程式をLU分解を用いて解く。
cb = [cb111, cb112, …, cb115, cb121,
…, cb155, cb211, …, cb554, cb555]    …(19)
fb = M・cb
【００７２】
そして、算出した係数をメインメモリ102に記憶する(S504)。
【００７３】
［変形例］
●ソリッド表現における、Bスプライン基底関数の他の区分多項式での置き換え
上記の実施例1、2、3では、ソリッド表現における基底関数としてBスプラインを用いる例を説明した。しかし、基底関数としては有理(rational) Bスプライン、不均一有理(non uniform rational) Bスプライン、ベジェ(Bezier)、有理ベジェ(Rational Bezier)など、あらゆる区分的関数を用いることができる。なお、基底関数の局所性が存在するとより望ましいことから、最も代表的なBスプラインを用いて実施例を説明した。
【００７４】
●用いる色空間
実施例1、2、3は、色空間に何ら制限はなく、CMYK色空間、L*a*b*色空間、JCH色空間、XYZ色空間、xy色空間などを用いることができる。さらに、インク色分解などにも適用可能であり、CMYKに淡シアンならびに淡マゼンタを加えた六次元色空間、さらに、レッドインクおよびグリーンインクを加えた八次元色空間なども用いることができる。また、式に与える色空間と、式より算出される色空間とが同一の色空間であってもよい。
【００７５】
●色域表現
実施例2においては、色域表現に三角パッチを用いたが、これをポリゴン表現に拡張することも可能である。
【００７６】
［他の実施例］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００７７】
また、本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００７８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００７９】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００８０】
【図１】実施例の色処理装置の構成例を示すブロック図、
【図２】色域解析アプリケーションが表示するユーザインタフェイスを示す図、
【図３】色解析アプリケーションの動作を説明する状態遷移図、
【図４】色分布データのデータ構造を示す図、
【図５】色域算出用のBスプライン体の係数および基底関数の算出処理を説明するフローチャート、
【図６】Bスプライン基底関数を表す図、
【図７】実施例2の色域の算出処理を示すフローチャート、
【図８】色域を表現する三角パッチデータのデータ構造を示す図、
【図９】実施例2における色域の擬似三次元表示を示す図である。
【図１】
2006081024.tif 000003
【図２】
2006081024.tif 000004
【図３】
2006081024.tif 000005
【図４】
2006081024.tif 000006
【図５】
2006081024.tif 000007
【図６】
2006081024.tif 000008
【図７】
2006081024.tif 000009
【図８】
2006081024.tif 000010
【図９】
2006081024.tif 000011