(57)【要約】【課題】  色調整に伴う色再現の修正において四面体補間を用いる場合、四面体の表面が境界条件になることに起因して、擬似輪郭などの画像障害が発生する場合がある。【解決手段】  ディジタル画像データの画素位置を算出し、その画素位置のRGB値を取得し(S801)、取得したRGB値をRGB値表示領域に表示し(S802)、色算出用B-スプライン体の基底関数と係数値によってL*a*b*値を算出し(S803)、算出したL*a*b*値をL*a*b*値表示領域に表示する(S804)。【選択図】    図10
2006109394.tif 000002
【特許請求の範囲】
【請求項１】
第一の表色系で表される色信号値から第二の表色系の色信号値を算出する色処理方法であって、
前記第一の表色系の次元数と同じ重度の、区分的多項式を基底関数とする多重総和演算を用いて前記第二の表色系の色信号値を算出する第一の算出ステップを有することを特徴とする色処理方法。
【請求項２】
前記基底関数は、B-スプライン、有理B-スプライン、不均一有理B-スプライン、ベジェまたは有理ベジェであることを特徴とする請求項1に記載された色処理方法。
【請求項３】
前記多重総和演算における各総和項の総和演算数はすべて同一であることを特徴とする請求項1または請求項2に記載された色処理方法。
【請求項４】
前記多重総和演算における各総和項の総和演算数は少なくとも一つが異なることを特徴とする請求項1から請求項3の何れかに記載された色処理方法。
【請求項５】
さらに、前記第一の表色系の各次元上で定義される前記多重総和演算の基底関数値を前記第一の表色系の各次元の値から算出する第二の算出ステップと、
算出した前記基底関数値を使用する前記多重総和演算によって、前記第二の表色系の色信号値を算出する第三の算出ステップとを有することを特徴とする請求項1から請求項4の何れかに記載された色処理方法。
【請求項６】
さらに、前記第一の表色系で表される色信号値に変換を施す第一の変換ステップと、
前記変換後の色信号値の空間の基本軸上で定義される前記多重総和演算の基底関数値を前記変換後の色信号値から算出する第二の算出ステップと、
算出した前記基底関数値を使用する前記多重総和演算によって、前記第二の表色系の色信号値を算出する第三の算出ステップとを有することを特徴とする請求項1から請求項4の何れかに記載された色処理方法。
【請求項７】
前記第一の表色系で表される複数の色信号値に対し、算出されるべき前記第二の表色系で表される色信号値を定めた組から、前記多重総和演算の係数を求めることを特徴とする請求項5に記載された色処理方法。
【請求項８】
さらに、前記第一の表色系で表される複数の色信号値に対し、算出されるべき前記第二の表色系で表される色信号値を定めた組の、前記第一の表色系で表される複数の色信号値に前記変換を施す第二の変換ステップと、
前記第二の変換ステップで変換後の色信号値の組から前記多重総和演算の係数を求めることを特徴とする請求項6に記載された色処理方法。
【請求項９】
前記多重総和演算の係数は前記第二の表色系に応じた次元を有することを特徴とする請求項7に記載された色処理方法。
【請求項１０】
前記第二の表色系の次元ごとに総和演算スカラ係数の組を有し、前記第二の表色系の色信号値を算出する際は前記第二の表色系の次元ごとに総和演算を行うことを特徴とする請求項8に記載された色処理方法。
【請求項１１】
第一の表色系で表される色信号値から第二の表色系の色信号値を算出する色処理装置であって、
前記第一の表色系の次元数と同じ重度の、区分的多項式を基底関数とする多重総和演算を用いて前記第二の表色系の色信号値を算出する計算手段を有することを特徴とする色処理装置。
【請求項１２】
所定の表色系の色信号値を算出する色処理方法であって、
第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算による変換式を設定する設定ステップと、
前記第一の表色系で表される複数の色信号値と、それら色信号値に対して算出されるべき第二の表色系の複数の色信号値との組み合わせを定めたデータに基づき、前記組み合わせの並びに近似する変換式、あるいは、前記組み合わせを結ぶ曲面集合、多面体集合または超多面体集合を平滑化する変換式に対応する前記区分的多項式の係数を求める第一の計算ステップと、
前記多重総和演算を用いて、前記第一の表色系で表現される色信号値に対応する前記第二の表色系の色信号値を算出する第二の計算ステップとを有することを特徴とする色処理方法。
【請求項１３】
前記複数の色信号値の組み合わせごとに重みを付けて、前記係数を算出することを特徴とする請求項12に記載された色処理方法。
【請求項１４】
前記基底関数は、Bスプライン、有理Bスプライン、不均一有理Bスプライン、ベジェ、有理ベジェの何れかであることを特徴とする請求項12または請求項13に記載された色処理方法。
【請求項１５】
前記係数は前記第二の表色系に応じた次元を有することを特徴とする請求項12から請求項14の何れかに記載された色処理方法。
【請求項１６】
所定の表色系の色信号値を算出する色処理装置であって、
第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算による変換式を設定する設定手段と、
前記第一の表色系で表される複数の色信号値と、それら色信号値に対して算出されるべき第二の表色系の複数の色信号値との組み合わせを定めたデータに基づき、前記組み合わせの並びに近似する変換式、あるいは、前記組み合わせを結ぶ曲面集合、多面体集合または超多面体集合を平滑化する変換式に対応する前記区分的多項式の係数を求める第一の計算手段と、
前記多重総和演算を用いて、前記第一の表色系で表現される色信号値に対応する前記第二の表色系の色信号値を算出する第二の計算手段とを有することを特徴とする色処理装置。
【請求項１７】
画像処理装置を制御して、請求項1から請求項10および請求項12から請求項15の何れかに記載された色処理を実行することを特徴とするプログラム。
【請求項１８】
請求項17に記載されたプログラムが格納されたことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は色処理装置およびその方法に関し、例えば、第一の表色系で表される色信号値から第二の表色系の色信号値を算出する色処理、並びに、プロファイルを作成するための色信号値の算出または予測に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータやワークステーションの普及に伴い、デスクトップパブリッシング(DTP)やディジタル画像管理が広く一般に利用されるようになった。DTP用のカラーモニタとカラープリンタを有するコンピュータシステムにおいては、モニタ上においてカラー画像の作成・編集・加工などを行い、プレビューにより出力イメージのチェックを行った後、カラープリンタでカラー画像を出力する。あるいは、ディジタルカメラにより撮影された画像は、色調整を施した後、カラーモニタへ表示したり、カラープリンタで出力する。このような画像処理の分野において、所期の色処理を実現するために、目的に応じて様々な色算出方法が用いられる。
【０００３】
DTPにおけるプリント出力のプレビューでは、印刷機器のカラープロファイルを基に、RGB画像を印刷した際にどのような色再現になるかを示すL*a*b*値を算出し、このL*a*b*値から例えばsRGB値を算出してモニタにプレビュー表示する。ここで、印刷機器のカラープロファイルには、一般にルックアップテーブル(LUT)が用いられる。このLUTを用いてL*a*b*値を算出する際、四点で囲まれる小領域内において線形補間演算を行う四面体補間が広く用いられる。とくに、LUTを用いる四面体補間は、隣接する八つの色で囲まれる六面体領域を、さらに四面体領域に六分割し、各領域ごとに線形補間演算を行う。図1は四面体への六分割を模式的に示す図である。
【０００４】
また、ディジタルカメラ画像の色調整は、ある色を調整した際に、その調整色の周囲の色が変化するよう色再現を修正する。この色再現の修正には幾つもの方法が存在するが、代表的な方法として、RGBの階調特性を変更する方法が知られている。しかし、このような方法は、色再現の修正を局所領域に限定することが不可能である。そこで、さらに進んだ修正方法として、色域写像を用いた方法が用いられる。この方法によれば、例えば特開2002-33929号公報に開示された技術のように、写像パラメータを変更することで色再現を修正することができる。また、別の修正方法としては、色再現を複数の代表色で近似表現し、この代表色の変更と、代表色を用いた四面体補間を組み合わせて実現する方法がある。この方法によれば、調整色を含む四面体領域のみに影響範囲を限定し、色再現を修正することが可能である。
【０００５】
しかし、四面体補間を用いる場合、四面体表面を境界として線形補間が切り替わることに起因し、画像障害が発生する場合がある。例えばプリント出力のプレビューでは、線形補間の切り替えに起因してL*a*b*値の算出精度の低下によるプレビュー表示精度の低下、または、擬似輪郭の発生といった画像障害が発生する場合がある。とくに、LUTの格子間隔が粗い場合は、四面体の表面を境界として値が急峻に変化して、画像障害が顕著に現れる傾向にある。
【０００６】
また、色調整に伴う色再現の修正において四面体補間を用いる場合、同様に、四面体の表面が境界条件になることに起因して、擬似輪郭などの画像障害が発生する場合がある。とくに、四面体の表面を境界として明度の変化率が変動する場合、グラデーション画像などの滑らかな階調変化が失われ、変化率の変動が急峻であれば擬似輪郭など画像障害が一層顕著に現れる。
【０００７】
また、色調整に伴う色再現の修正において色域写像を行う場合、調整後の色を直接指定するのが困難という問題がある。例えば、一般によく用いられるL軸上の一点を目標点として圧縮写像を行うような写像方法によれば、ガマット境界近辺で色の変化が急峻になり擬似輪郭などの画像障害が発生する場合がある。図2(a)および(b)はガマット境界近辺で色の変化が急峻になる様子を示す図で、図2(a)に一点鎖線で示すのがモニタ色再現、図2(b)に実線で示すのが写像後のプリンタ色再現、図2(b)に点線で示すのがプリンタ色域である。
【０００８】
また、上述したDTPやCADのような分野においては、ディジタル画像を印刷または表示した際の、実際の物理刺激値を予測する色予測技術が必須になる。
【０００９】
この色予測技術が必須の技術として、例えば、カラーマネージメントがある。例えば、カラーモニタ上でカラー画像の作成・編集・加工などを行い、カラープリンタで出力する際、モニタやプリンタのカラー特性の如何にかかわらず、モニタ上のカラー画像とプリンタの出力画像とを知覚的にマッチングさせることが要求される。このような要求を満たすカラーマネージメントを実現する技術の一例として、ICC (International Color Consortium)により定められた、ICCカラープロファイルに基づきカラーマネージメントを行うCMS (Color Management System)が存在する。
【００１０】
CMSは、カラーマッチングを行うための、デバイスに独立なハブ色空間あるいはPCS (Profile Connection Space)を定義し、その色空間上で、デバイス色空間からハブ色空間（またはPCS）への色変換を規定するソース側プロファイル、並びに、ハブ色空間（またはPCS）からデバイス色空間への色変換を規定するディスティネーション側プロファイルを用いてカラーマネージメントを実現する。
【００１１】
処理系は、入力デバイスに依存するデバイス色空間の入力色信号値を、ソース側プロファイルによりハブ色空間（またはPCS）の色信号値に変換し、さらに、ディスティネーション側プロファイルにより出力デバイスに適合したデバイス色空間の出力色信号に変換する、という二つの大きな変換処理より構成される。このシステムは、スキャナからプリンタにおけるカラーマッチングや、モニタからプリンタにおけるカラーマッチングなど、幅広く柔軟に対応することができる。例えば、DTPシステムにおいては、ソース側プロファイルにモニタプロファイルを指定し、ディスティネーション側プロファイルにプリンタプロファイルを指定すれば、モニタ上のカラー画像とプリンタの出力画像の間の知覚的なマッチングが可能になる。
【００１２】
ここで、知覚的なマッチングの良否はプロファイルに左右されるため、デバイスに依存する色と、ハブ色空間またはPCSの色とをできるだけ正確に対応付けたプロファイルを作成しなければならない。そのために、デバイスに依存する色を、実際に印刷または表示した際の物理刺激値を予測する、色予測を正確に行う必要がある。
【００１３】
色予測技術として、パッチの測色値と線形補間を用いるテーブル型の色予測技術が存在し、その線形補間には四面体補間、立方体補間、三角柱補間など様々な補間方法が提案されている。しかし、これらの補間方法による予測精度は、テーブルの格子密度に依存する。そのため、高い精度を必要とする場合は格子数を増やして、非常に多くのパッチを測色する多大な労力が必要になる。
【００１４】
【特許文献１】特開2002-33929号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、色再現を修正する際に、色の変化の傾向を反映した滑らかな変化で色を算出することを目的とする。
【００１６】
また、ユーザが制御し易い色調整用のインタフェイスを提供することを他の目的とする。
【００１７】
また、所定の色座標値を通過するように基底関数の係数値を定める際に、後述する振動（図23(a)参照）の発生を抑えることを目的とする。
【００１８】
また、少ないパッチの測色結果から正確に色信号値を予測することを他の目的とする。
【課題を解決するための手段】
【００１９】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００２０】
本発明の第一の面では、第一の表色系で表される色信号値から第二の表色系の色信号値を算出する際に、第一の表色系の次元数と同じ重度の、区分的多項式を基底関数とする多重総和演算を用いて前記第二の表色系の色信号値を算出することが開示される。
【００２１】
また、本発明の第二の面では、色の修正後の値を指定し、修正後の値に応じて色再現を計算し、色再現の計算結果に応じて、色再現の変化を擬似三次元表示するためのデータを生成することが開示される。
【００２２】
また、本発明の第三の面では、所定の表色系の色信号値を算出する際に、第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算による変換式を設定し、第一の表色系で表される複数の色信号値と、それら色信号値に対して算出されるべき第二の表色系の複数の色信号値との組み合わせを定めたデータに基づき、組み合わせの並びに近似する変換式、あるいは、組み合わせを結ぶ曲面集合、多面体集合または超多面体集合を平滑化する変換式に対応する区分的多項式の係数を求め、多重総和演算を用いて、第一の表色系で表現される色信号値に対応する第二の表色系の色信号値を算出することが開示される。
【００２３】
また、本発明の第四の面では、所定の表色系の色信号値を算出する際に、第一の表色系の次元数と同じ多重度の区分的多項式を基底関数とする多重総和演算を設定し、第一の表色系で表される複数の色信号値と、それら色信号値に対する測色結果である第二の表色系の複数の色信号値との組み合わせを示すデータに基づき区分的多項式の係数を求め、多重総和演算を用いて、第一の表色系で表される複数の色信号値に対応する第二の表色系の複数の色信号値を算出することが開示される。
【発明の効果】
【００２４】
本発明によれば、色再現を修正する際に、色の変化の傾向を反映した滑らかな変化で色を算出することができる。
【００２５】
また、ユーザが制御し易い色調整用のインタフェイスを提供することができる。
【００２６】
また、所定の色座標値を通過するように基底関数の係数値を定める際に、後述する振動（図23(a)参照）の発生を抑えることができる。
【００２７】
また、少ないパッチの測色結果から正確に色信号値を予測することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例１】
【００２９】
［構成］
図3は実施例1の色処理装置の構成例を示すブロック図である。
【００３０】
図3において、CPU 101は、ROMやRAMからなるメインメモリ102やハードディスクドライブ(HDD) 105に格納されたプログラムに従い、メインメモリ102をワークメモリとして、システムバス（およびPCIバス）114を介して後述する構成を制御して、後述する各種処理および制御を実行する。
【００３１】
SCSI (Small Computer Standard Interface)などの汎用パラレルインタフェイス(I/F) 103は、HDD 105とシステムバス114をインタフェイスする。グラフィックアクセラレータ106は、カラーモニタ107とシステムバス114をインタフェイスする。USBコントローラ108は、カラープリンタ109とシステムバス114をインタフェイスする。キーボード/マウスコントローラ110は、キーボード111やマウス112などの入力デバイスとシステムバス114をインタフェイスする。なお、SCSI I/F 103、キーボード/マウスコントローラ110などに代わりUSBコントローラ108やIEEE1394などのシリアルバスインタフェイスによって、HDD 105、キーボード111およびマウス112とシステムバス114をインタフェイスしてもよい。ネットワークインタフェイス(I/F) 104は、ローカルエリアネットワーク(LAN) 113とシステムバスをインタフェイスする。
【００３２】
［プレビュー動作］
上記の構成における、プリント画像のプレビュー動作を説明する。図4はプレビューを行う際のユーザインタフェイスの一例を示す図である。
【００３３】
まず、CPU 101の指令により、HDD 105に格納された画像プレビューアプリケーションが起動される。続いて、画像プレビューアプリケーションの処理に従いHDD 105に格納された初期プロファイルと初期ディジタル画像データが、CPU 101の指令に基づきSCSI I/F103、システムバス114を経由して、メインメモリ102に転送される。そして、CPU 101により、図4に示すウィンドウがカラーモニタ107に表示される。ユーザは、表示されたウィンドウ内の画像プレビュー203とL*a*b*値表示205を用いて、プリント画像の色再現を確認する。
【００３４】
図4に示すウィンドウには、プロファイルの読み込みを指示するためのボタン201、プレビュー表示用の画像ファイルを読み込むためのボタン202、画像プレビュー表示領域203、RGB値表示領域204、L*a*b*値表示領域205、並びに、アプリケーション終了ボタン206がある。
【００３５】
ユーザが画像ファイルの読込ボタン202をマウス112などでクリックして（または押して）、画像の読み込みを指示すると、画像プレビューアプリケーションの処理に従いHDD 105に格納されたディジタル画像データが、CPU 101の指令に基づきSCSI I/F103、システムバス114を経由して、メインメモリ102に転送される。あるいは、LAN 113に接続されたサーバに格納されたディジタル画像データまたはインターネット上のディジタル画像データが、CPU 101の指令により、ネットワークI/F 104、システムバス114を経由してメインメモリ102に転送される。そして、メインメモリ102に記憶されたディジタル画像データは然るべく処理された後、新たにプレビュー表示用の画像データとしてメインメモリ102に記憶されるとともに、表示領域203に表示される。
【００３６】
また、ユーザがプロファイルの読込ボタン201をマウス112などでクリックして、プロファイルの読み込みを指示すると、画像プレビューアプリケーションの処理に従い、指定されたプロファイルがHDD 105から、もしくは、ネットワーク経由で読み込まれ、色算出処理が設定される。そして、メインメモリ102に記憶されたディジタル画像データに然るべき処理を施してプレビュー表示用の画像データを作成し、プレビュー表示用の画像データは、メインメモリ102に記憶されるとともに、表示領域203に表示される。
【００３７】
さらに、ユーザが色再現を確認するために表示領域203の任意位置をマウス112でクリックすると、画像プレビューアプリケーションは、クリック位置に対応する画素のRGB値をメインメモリ102に記憶されたディジタル画像データから取得し、後述する色算出処理によりL*a*b*値を算出し、RGB値表示領域204にRGB値を、L*a*b*値表示領域205にL*a*b*値を表示する。
【００３８】
また、ユーザが終了ボタン206をマウス112などでクリックすると、画像プレビューアプリケーションは、メインメモリ102のディジタル画像データ、プレビュー表示用画像データの記憶領域やワーク領域を解放し、処理を終了する。
【００３９】
［画像プレビューアプリケーションの動作］
図5は画像プレビューアプリケーションの動作を説明する状態遷移図である。
【００４０】
まず、動作に必要な各種メモリ領域の確保など初期化を行い(S301)、初期ディジタル画像ファイルおよび色算出用のプロファイルとして初期プロファイルをHDD 105より読み込み、メインメモリ102に記憶する(S302)。なお、メインメモリ102に保持されるディジタル画像データは、RGB各色信号が符号無し8ビットで表現される画像データとして説明する。また、プロファイルは、RGB色空間の格子点の色座標ステップと、格子点が再現するL*a*b*色空間の座標値との対応を記した、図6Bに示すようなデータ構造を有する。その先頭には、R/G/B値のステップが記述され、その後に、各格子点に対応するL*a*b*色座標がR、G、Bの順にネストされて記述される。図6Aはプロファイルのデータ構造をRGB色空間で模式的に示す図である。
【００４１】
次に、記憶したプロファイルを用いて、後述する処理により色算出用のB-スプライン体(B-Spline Solid)に対する係数および基底関数を算出し(S303)、後述する処理に従って、色算出用のB-スプライン体を用いて記憶したディジタル画像データをプレビュー用の画像データに変換し、表示領域203に表示し(S304)、ユーザの操作を待つ状態になる(S305)。
【００４２】
ユーザの操作待ち状態(S305)で、プロファイルの読込ボタン201が押されると、読み込むべきプロファイルをユーザが指定するためのダイアログを表示し、プロファイルが指定されると、そのプロファイルがオープン可能か否かを判定し、オープン可能であればそのプロファイルを読み込んでメインメモリ102に記憶し、プロファイルのフォーマットが正しいか否かを判定する(S306)。オープン可能かつ正しいフォーマットであればステップS303へ遷移するが、オープン不可または不正なフォーマットの場合は、その旨を表示してステップS305へ戻る。
【００４３】
また、画像ファイルの読込ボタン202が押されると、読み込むべき画像ファイルをユーザが指定するためのダイアログを表示し、画像ファイルが指定されると、その画像ファイルがオープン可能か否かを判定し、オープン可能であればその画像ファイルを読み込んでメインメモリ102に記憶し、画像ファイルのフォーマットか正しいか否かを判定する(S307)。オープン可能かつ正しいフォーマットであればステップS304へ遷移するが、オープン不可または不正なフォーマットの場合は、その旨を表示してステップS305へ戻る。
【００４４】
また、表示領域203でマウスがクリックされると、表示領域203上のマウスポインタの位置を記憶した後、後述する処理に従って、マウスポインタ位置に対応する画素のRGB値をRGB値表示領域204に、そのRGB値をプリントした際のL*a*b*値をL*a*b*値表示領域205に表示し(S308)、ステップS305へ戻る。
【００４５】
また、終了ボタン206が押されると、メモリ解放などの終了動作を行い、画像プレビューアプリケーションを終了する。
【００４６】
［色算出用B-スプライン体の設定(S303)］
色算出用のB-スプライン体は、次の区分的多項式を基底関数とする多重総和演算式で定義される。
λ= Σ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はそれぞれの軸に対する
基底における基底関数番号
【００４７】
図7は色算出用B-スプライン体の係数および基底関数の算出処理を説明するフローチャートである。
【００４８】
まず、図6Bに示すデータ構造で表されるプロファイルからRGB値とL*a*b*値との対応関係を取得する(S401)。RGB値は、ネストの順番とR/G/B値のステップ値に従い算出され、L*a*b*値はプロファイルに記述された値である。以後、RGB値とL*a*b*値の対応データを、i番目の編集色のRGB値をrri、ggi、bbi、L*a*b*値をλi、ai、biと説明する。
【００４９】
次に、図6Bに示すデータ構造で表されるプロファイルより、R/G/B値のステップに基づいて基底関数を算出し、メインメモリ102に記憶する(S402)。基底関数の算出には、一般的なDeBoor-Coxのアルゴリズムを用いる。R/G/B値のステップが図6Bに示すように同一である場合、基底関数Nr、Ng、Nbが何れも三位のB-スプライン基底であれば、何れも図8に示すようなξ0〜ξ3の四節点の基底関数になる。なお、図8はR軸の基底関数Nrを示している。以下、基底関数は何れも三位のB-スプライン基底であるとして説明する。
【００５０】
次に、算出した基底関数と、取得したRGB値とL*a*b*値との対応関係を用いて、行列方程式f=MCを、λ*成分、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を算出するために、次の行列方程式をLU分解を用いて解く。
fλ= [λ1, λ2, …, λ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, …, 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)
【００５６】
そして、算出した係数をメインメモリ102に記憶する(S404)。
【００５７】
以上で算出されたB-スプライン体を用いることで、図9の模式図に示すように、RGB値に対するL*a*b値の変化を滑らかに表現することができる。なお、図9はB-スプライン体の算出結果をL*a*b*空間における分布として表現したもので、図9に示す軸以外の線は、RGB値の何れか一つが変化した際のL*a*b*値の軌跡を表す。
【００５８】
［RGB値とL*a*b*値の表示(S303)］
図10は指定された画像位置のRGB値とL*a*b*値の表示処理を説明するフローチャートである。
【００５９】
まず、マウスポインタの位置に対応するディジタル画像データの画素位置を算出し、その画素位置のRGB値を取得し(S801)、取得したRGB値をRGB値表示領域204に表示し(S802)、メインメモリ102から色算出用B-スプライン体の基底関数と係数値を取得して、下式によってL*a*b*値を算出し(S803)、算出したL*a*b*値をL*a*b*値表示領域205に表示する(S804)。
λ= Σi5Σj5Σk5cλijkNri(rr)Ngj(gg)Nbk(bb)
a = Σi5Σj5Σk5caijkNri(rr)Ngj(gg)Nbk(bb)      …(6)
b = Σi5Σj5Σk5cbijkNri(rr)Ngj(gg)Nbk(bb)
ここで、rr、gg、bbはRGB値
λ、a、bはL*a*b*値
【００６０】
［プレビュー用画像の生成(S304)］
図11はプレビュー用画像データの生成処理を説明するフローチャートである。
【００６１】
まず、既存のプレビュー用画像データを破棄してプレビュー用画像データを生成する作業用のメモリ領域確保し、変数を初期化するなど、初期化動作を行い(S901)、ラスタスキャンの順に従ってメインメモリ102に記憶されたディジタル画像データから画素値(RGB値)を一つ取得し(S902)、メインメモリ102から色算出用B-スプライン体の基底関数と係数値を取得して、ステップS803と同様にして、色算出用B-スプライン体を用いてRGB値からL*a*b*値を算出する(S903)。
【００６２】
次に、算出したL*a*b*値をsRGBに基づくRGB値に変換し(S904)、そのRGB値を画素位置に応じたメモリアドレス(メインメモリ102)に格納し(S905)、ディジタル画像データの総ての画素に対して上記変換を施したか否かを判断し(S906)、総ての画素に変換を施すまでステップS902からS905を繰り返す。
【００６３】
総ての画素に変換を施すと、メインメモリ102に格納された変換後の画像データをプレビュー用画像データとしてメインメモリ102の所定領域に格納し(S907)、プレビュー用画像データを画像プレビューの表示領域203に表示し(S908)、作業用メモリを解放するなど終了処理を行い(S909)、プレビュー用画像の生成を終了する。
【００６４】
このように、複数の代表色から色を算出する際、値の変化の傾向を自然に反映して滑らかな変化で色を算出するため、少ない代表色でも精度よく色を算出することができる。さらに、この色の算出を色調整に応用すれば、基底の局所性を利用して色修正の影響範囲を局所領域に限定することが可能になるとともに、調整後の色を直接指定することが可能になる。その修正に伴い、滑らかに色が変化するから階調性が非常に良好な色の修正が可能になる。
【実施例２】
【００６５】
以下、本発明にかかる実施例2の画像処理を説明する。なお、本実施例において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６６】
実施例2では、色修正およびそのユーザインタフェイスを提供する色処理装置を説明する。なお、装置構成は図3と同じである。
【００６７】
［プロファイルの作成動作］
図12は色修正してプロファイルを作成するためのユーザインタフェイスを示す図である。
【００６８】
まず、ユーザの操作およびCPU 101の指令により、HDD 105に格納された色再現編集アプリケーションが起動される。続いて、色再現編集アプリケーションの処理に従いHDD 105に格納された初期プロファイルと初期編集色データが、CPU 101の指令に基づきSCSI I/F 103、システムバス114を経由して、メインメモリ102に転送される。そして、CPU 101により、図12に示すウィンドウがカラーモニタ107に表示される。ユーザは、ウィンドウ内の色再現の三次元表示を参照して、編集対象の色を修正することで、色再現を編集する。
【００６９】
図12に示すウィンドウには、編集色データの読み込みを指示するためのボタン1001、編集色データの保存を指示するためのボタン1002、色再現の編集結果をプロファイルとして保存するためのボタン1003、色再現の三次元表示領域1004、編集対象である色に関し、色番号、RGB値、L*a*b*値を表示または入力するための編集領域1005、色域表示のオンオフを指示するためのチェックボックス1006は、編集色のポイント表示をオンオフするためのチェックボックス1007、色再現編集結果である色再現表示のオンオフを指示するためのチェックボックス1008、プロファイル色分布の三次元表示をオンオフするためのチェックボックス1009、並びに、アプリケーション終了ボタン1010がある。
【００７０】
ユーザが編集色データの読込ボタン1001をマウス112などでクリックして（または押して）、編集色データの読み込みを指示すると、色再現編集アプリケーションの処理に従いHDD 105に格納され編集色データが、CPU 101の指令に基づきSCSI I/F 103、システムバス114を経由して、メインメモリ102に転送される。あるいは、LAN 113に接続されたサーバに格納された編集色データまたはインターネット上の編集色データが、CPU 101の指令により、ネットワークI/F 104、システムバス114を経由してメインメモリ102に転送される。そして、色再現の算出処理が実行される。また、ユーザが編集領域1005で色の編集を行った場合も色再現の算出処理が実行される。
【００７１】
色再現の算出処理結果は、各チェックボックスの設定に従って、色再現の三次元表示領域1004に擬似三次元表示される。色域表示チェックボックス1006がチェックされている場合は編集色データの色域の三次元形状が表示され、編集色表示チェックボックス1007がチェックされている場合は総ての編集色がポイントとして表示され、色再現表示チェックボックス1008がチェックされている場合は現在の編集色のRGB値に従って構成された色再現情報が表示される。また、プロファイル分布表示チェックボックス1009がチェックされている場合はプロファイルのLUT値が点表示される。勿論、チェックボックス1006〜1009がそれぞれオンオフされた場合、表示領域1004は前記のような表示形態に更新される。
【００７２】
また、ユーザが編集色データの保存ボタン1002を押して、編集色データの保存を指示すると、色再現編集アプリケーションは編集中の編集色データをHDD 105に保存する。
【００７３】
また、ユーザがプロファイルの保存ボタン1003を押して、プロファイル保存を指示すると、色再現編集アプリケーションは生成したプロファイルをHDD 105に保存する。
【００７４】
また、ユーザが終了ボタン1010を押すと、色再現編集アプリケーションは、処理に使用した総てのデータの記憶領域やワーク領域を解放し、処理を終了する。
【００７５】
［色再現編集アプリケーションの動作］
図13は色再現編集アプリケーションの動作を説明する状態遷移図である。
【００７６】
まず、動作に必要な各種メモリ領域の確保など初期化を行い(S1101)、初期色編集データをHDD 105より読み込み、メインメモリ102に記憶する(S1102)。なお、メインメモリ102に保持される色編集データは、RGB色空間上の色を指定するRGB値と印刷時の再現色を表すL*a*b*色座標の組、および、色域を表す三角パッチデータからなる、図14に示すようなデータ構造を有する。その先頭には総データ数が記述され、その後にデータ総数だけ、RGB値とL*a*b*色座標の組が記述される。続いて、色域を表す三角パッチデータの総数が記述され、その後にパッチ総数だけ、三角形の三頂点を表す三つのL*a*b*値からなる三角パッチデータが記述される。
【００７７】
次に、メインメモリ102に記憶した色編集データを用いて、後述する処理により色算出用のB-スプライン体に対する係数および基底関数を算出し(S1103)、後述する処理に従って、色算出用のB-スプライン体を用いてプロファイルを作成し、メインメモリ102に記憶し(S1104)、後述する処理に従って、色算出用B-スプライン体およびプロファイルを用いて、擬似三次元表示用の3Dオブジェクトデータを算出する(S1105)。なお、3Dオブジェクトデータとして、色域表示用のソリッドデータ、編集色表示用のポイントデータ、色再現表示用のソリッドデータおよびプロファイル表示用のポイントデータを生成する。
【００７８】
続いて、ユーザの操作を待つ状態になる(S1106)。この状態で、図12に示す編集色データの読込ボタン1001が押されると、読み込むべき色編集データファイルをユーザが指定するためのダイアログを表示し、ファイルが指定されると、そのファイルがオープン可能か否かを判定し、オープン可能であればそのファイルを読み込んでメインメモリ102に記憶し、色編集データのフォーマットとして正しいか否か判定する(S1108)。オープン可能かつ正しいフォーマットであればステップS1103へ遷移するが、オープン不可または不正なフォーマットの場合は、その旨を表示してステップS1106へ戻る。
【００７９】
また、図12に示す編集色データの保存ボタン1002が押されると、メインメモリ102に記憶した編集色データを所定のフォーマットでHDD 105へ保存し(S1109)、ステップS1106へ戻る。
【００８０】
また、図12に示すプロファイルの保存ボタン1003が押されると、メインメモリ102に記憶したプロファイルを所定のフォーマットにてHDD 105へ保存し(S1110)、ステップS1106へ戻る。
【００８１】
また、図12に示す色域表示のチェックボックス1006が操作され、チェックされた場合は色域表示用のソリッドデータを表示し、チェックが外された場合は同ソリッドデータを非表示にし(S1111)、ステップS1106へ戻る。色域表示をオンにすると図12に示す三次元表示領域1004内のような図形が表示される。なお、図12は色再現表示用のソリッドデータの単体表示例を示し、他の3Dオブジェクトデータが重畳して表示される場合がある。
【００８２】
また、図12に示す編集色表示のチェックボックス1007が操作され、チェックされた場合は編集色表示用のポイントデータを表示し、チェックが外された場合は同ポイントデータを非表示にし(S1112)、ステップS1106へ戻る。編集色表示をオンにすると図15に示す三次元表示領域1004内のような図形が表示される。なお、図14は編集色表示用のポイントデータの単体表示例を示し、他の3Dオブジェクトデータが重畳して表示される場合がある。
【００８３】
また、図12に示す色再現表示のチェックボックス1008が操作され、チェックされた場合は色再現表示用のソリッドデータを表示し、チェックが外された場合は同ソリッドデータを非表示にし(S1113)、ステップS1106へ戻る。色再現表示をオンにすると図16に示す三次元表示領域1004内のような図形が表示される。なお、図15は色再現表示用のソリッドデータの単体表示例を示し、他の3Dオブジェクトデータが重畳して表示される場合がある。
【００８４】
また、図12に示すプロファイル分布表示のチェックボックス1009が操作され、チェックされた場合はプロファイル表示用のポイントデータを表示し、チェックが外された場合は同ポイントデータを非表示にし(S1114)、ステップS1106へ戻る。プロファイル分布表示をオンにすると図17に示す三次元表示領域1004内のような図形が表示される。なお、図17はプロファイル表示用のポイントデータの単体表示例を示し、他の3Dオブジェクトデータが重畳して表示される場合がある。
【００８５】
また、図12に示す編集領域1005の色番号、RGB値、L*a*b*値の何れかが入力されると、その入力に基づき、指定された色番号のRGB値およびL*a*b*値を修正し、さらに、後述するL*a*b*値の修正を行い(S1107)、ステップS1103へ遷移する。
【００８６】
また、図12に示す終了ボタン1010が押されると、メモリ解放などの終了動作を行い、色再現編集アプリケーションを終了する。
【００８７】
［色算出用B-スプライン体の設定(S1103)］
以下では、簡単のためにB-スプライン体の式を下のように表記する。なお、下式において、CijkはL*a*b*係数を表す三次元の列ベクトルで、実施例1において図7のフローチャートを用いて説明した係数cλijk、caijk、cbijkを列ベクトルにまとめたものである。
┌  ┐
│λ│
│ a│= ΣiΣjΣkCijkNri(rr)Ngj(gg)Nbk(bb)      …(7)
│ b│
└  ┘
【００８８】
図18は色算出用B-スプライン体に対する係数および基底関数を算出処理を説明するフローチャートである。
【００８９】
まず、図14に示すデータ構造で表される編集色データから、編集色のRGB値とL*a*b*値の対応関係を、総ての組について取得し(S1201)、取得した総ての組においてRGB値にγ=2.2のガンマ補正演算を施し(S1202)、基底関数を算出してメインメモリ102に記憶する(S1203)。ただし、編集色データの編集色データ総数n3より、節点数はn-1になる。
【００９０】
次に、図7に示すステップS403と同様にして、行列方程式の算出と、その方程式を用いたB-スプライン体の係数算出を行い(S1204)、算出した係数をメインメモリ102に記憶する(S1205)。
【００９１】
［プロファイルの算出(S1104)］
図19は色算出用のB-スプライン体を用いたプロファイルの作成を説明するフローチャートである。
【００９２】
まず、作業用のメモリ領域確保し、変数を初期化するなど、初期化動作を行い(S1401)、然るべき順序に従って、プロファイルのLUT格子点に相当するRGB値を一つ取得し(S1402)、インメモリ102から色算出用B-スプライン体の基底関数および係数値を取得し、下式を用いてL*a*b*値を算出する(S1403)。下式において、rr、gg、bbはそれぞれ、ステップS1402で取得したR値、G値、B値にγ=2.2のガンマ補正演算を施した値である。
┌  ┐
│λ│
│ a│= ΣiΣjΣkCijkNri(rr)Ngj(gg)Nbk(bb)      …(8)
│ b│
└  ┘
【００９３】
次に、LUT格子点位置に対応するメモリアドレス（メインメモリ102）に、算出したL*a*b*値を格納し(S1404)、LUT格子点の総てに対し上記の変換を施したか否かを判断し(S1405)、LUT格子点の総てに対し上記の変換を施すまでステップS1402からS1404を繰り返す。
【００９４】
LUT格子点の総てに対し変換を施すと、メインメモリ102に格納された変換後のLUTデータをプロファイルデータとしてメインメモリ102の所定領域に格納し(S1406)、作業用メモリを解放するなど終了動作を行い(S1407)、プロファイルの作成処理を終了する。
【００９５】
［3Dオブジェクト生成(S1105)］
色域表示用のソリッドデータは、色編集データに付随する三角パッチデータを総て用いて、ポリゴン表記のソリッドデータを生成する。編集色表示用のポイントデータは、総ての編集データのL*a*b*値をポイントとし、ポイントデータを生成する。プロファイル表示用のポイントデータは、LUTにおける総てのL*a*b*テーブル値をポイントとし、ポイントデータを生成する。また、色再現表示用のソリッドデータは、次のように生成する。
【００９６】
まず、ステップが[0, 64, 128, 192, 255]からなる5×5×5の格子を生成し、格子立方体の頂点および編集色に隣接する格子点を頂点とする、体積が最大になる直方体を取得する。次に、直方体上の総ての格子点について、ステップS1403と同様にして、RGB値からL*a*b*値を算出し、最後に、算出されたL*a*b*値の組からポリゴン表記の色再現表示用のソリッドデータを生成する。
【００９７】
［編集色の編集(S1107)］
図20は、図12に示す編集領域1005において指定された番号の色編集データについて、RGB値、L*a*b*値またはその両方を修正する処理を説明するフローチャートである。
【００９８】
まず、指定されたL*a*b*値が色域外か否かを判定し(S1501)、色域外であれば、指定されたL*a*b*値と、L*a*b*値(50, 0, 0)の色を結ぶ直線が色域と交差する交点を算出し、図21に示すように、算出した交点の値を目標色にする(S1502)。また、色域外でなければ指定されたL*a*b*値を目標色にする。そして、指定された番号の色編集データとして、RGB値および目標値のL*a*b*値をメインメモリ102に記憶する(S1503)。
【００９９】
このように、ユーザが制御し易い色調整用のインタフェイスを提供することができる。
【０１００】
また、上記の各実施例では、色の算出における基本的な算出方法を説明し、その算出方法の応用例を説明した。従って、実施例に示すようなプレビューや色再現修正に限らず、色域写像、RGBからCMYKへの色分解、プロファイル作成、キャリブレーションなど画像処理に関する様々な用途に、本発明は応用可能である。
【０１０１】
［変形例］
上記の実施例では、ソリッド(solid)表現における基底関数としてB-スプラインを用いる例を説明した。しかし、基底関数としては有理(rational) B-スプライン、不均一有理(non uniform rational) B-スプライン、ベジェ(Bezier)、有理ベジェ(Rational Bezier)など、あらゆる区分的関数を用いることができる。なお、基底関数の局所性が存在するとより望ましいことから、最も代表的なB-スプラインを用いて実施例を説明した。
【０１０２】
上記の実施例では、各基底の節点数が同一であるとして説明した。しかし、容易に推測できるように、基底ごとに節点数を変更することも可能である。ただし、実施例1においてR軸方向の節点数をl、G軸方向の節点数をm、B軸方向の節点数をnとすると、プロファイルのデータ数は(l + 1)×(m + 1)×(n + 1)であるとともに、プロファイルのネスト数はRに対しては「l + 1」、Gに対しては「m + 1」、Bに対しては「n + 1」になる。また、実施例2においてR軸方向の節点数をl、G軸方向の節点数をm、B軸方向の節点数をnとすると、色編集データのデータ数は(l + 1)×(m + 1)×(n + 1)になる。
【０１０３】
前記の実施例では、RGB三次元よりL*a*b*三次元を算出した。しかし、算出される次元に何ら拘束はない。例えば、RGB値よりグレー値（スカラ値）を算出する場合は、下式のように表現することができる。
gray = ΣiΣjΣkcijkNri(rr)Ngj(gg)Nbk(bb)      …(9)
【０１０４】
また、例えば、RGB値よりCMYK値を算出する場合は、下式のように表現することができる。
┌ ┐
│c│
│m│= ΣiΣjΣkCijkNri(rr)Ngj(gg)Nbk(bb)    …(10)
│y│
│k│
└ ┘
ここで、Cijkはcmyk係数を表す四次元の列ベクトル
【０１０５】
前記の実施例では、式に与える色空間としてRGB三次元によるソリッド表現を用いた。しかし、容易に推測できるように、xy色度のような二次元によるsurface表現、あるいは、cmykのような四次元以上の表現に拡張することができる。例えば、xy色度から一つのRGB値を算出するような場合は下式を用いればよい。
┌ ┐
│R│
│G│= ΣiΣjCijNxi(x)Nyj(y)    …(11)
│B│
└ ┘
【０１０６】
あるいは、CMYK値からL*a*b*値を算出する場合は下式を用いればよい。
┌  ┐
│λ│
│ a│= ΣiΣjΣkΣlCijklNci(c)Nmj(m)Nyk(y)Nbkl(bk)    …(12)
│ b│
└  ┘
【０１０７】
ただし、上記の式から明白であるように、総和演算の多重度は式に与える色空間、すなわち入力色信号値の次元数に等しくなければならない。また、総和式内の係数を求めるためには、ソリッド表現の拡張に伴い行列方程式を変更しなければならない。
【０１０８】
以上の実施例から明らかなように、用いる色空間に何ら制限はなく、CMYK、L*a*b*、JCH、XYZ、xyなどの色空間を用いることができる。さらに、インク色分解などにも適用可能で、CMYKに淡シアンならびに淡マゼンタを加えた六次元色空間なども用いることができる。また、式に与える色空間と、式より算出される色空間は同一の色空間であってもよい。
【０１０９】
実施例2では、B-スプライン体に与える前に、式にガンマ補正演算を施したが、この変換はもちろん他の高次変換や、RGB→RGBのアフィン変換などで置き換えることが可能である。
【実施例３】
【０１１０】
以下、本発明にかかる実施例3の色処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１１１】
［概要］
実施例1、2で説明した非線型演算で色の算出を実現する技術によれば、複数の代表色から色を算出する際に色値の変化のトレンドを自然に反映して滑らかな変化で色を算出するため、少ない代表色でも精度よく色を算出することができる。この技術を、さらに色調整に応用すれば、基底の局所性を利用して色修正の影響範囲を自然に局所領域に限定可能であるとともに、調整後の色を直接指定することが可能である。さらに、修正に伴い色が滑らかに変化するため、階調性が非常に良好な色の修正が可能である。勿論、この技術は、色域写像、RGBからCMYKへの色分解、プロファイル作成、キャリブレーションなど、画像処理に関する様々な用途に応用可能である。
【０１１２】
しかし、非線型演算を定める際に、所定の色座標値を通過するように非線型演算の基底関数の係数値を定める。このような算出方法によれば、非線型演算は滑らかな演算特性を有するが、他方、一次元のスプライン関数から容易に推察できるように振動が発生する場合がある。
【０１１３】
図23(a)および(b)は上記の振動を一次元のBスプライン関数を例に説明する図である。所定の色座標値を通過するように基底関数の係数値を定めることは、図23(a)または(b)に示すように、所定の値を通るように一次元Bスプライン関数を定めることに相当し、図23(a)に示すように、たとえ若干であっても振動が発生する場合がある。このような振動は、算出する色信号によって問題になる場合がある。例えば、明度信号での振動は画像の輝度（または濃度）むらとして現れ、画像障害として容易に知覚される。
【０１１４】
［色算出用のBスプライン体の設定(S1103)］
まず、図13の色算出用のBスプライン体の係数および基底関数の算出処理(S1103)を説明するが、以後、色算出用のBスプライン体は式(13)で定義される。
λ = ΣiΣjΣkcλijkNri(rr)Ngj(gg)Nbk(bb)
a = ΣiΣjΣkcaijkNri(rr)Ngj(gg)Nbk(bb)    …(13)
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は
それぞれの軸に対する基底における基底関数番号
【０１１５】
図22は色算出用のBスプライン体の係数および基底関数の算出処理(S1103)を説明するフローチャートである。
【０１１６】
まず、図14に示すデータ構造で表される編集色データから、編集色のRGB値とL*a*b*値の対応データを、すべての組について取得する(S401)。以後、RGB値とL*a*b*値の対応データを、i番目の編集色のRGB値をrri、ggi、bbi、L*a*b*値をλi、ai、biと説明する。
【０１１７】
次に、適切に節点を決定した後、それら節点に基づき基底関数を算出し、メインメモリ102に記憶する(S402)。節点の決定方法は、予め節点数および座標を決めておいてもよいし、あるいは、L*a*b*値の変化から節点を決定しても構わない。節点が定まった後の基底関数の算出には、一般的なDeBoor-Coxのアルゴリズムを用いる。例えば、基底関数Nr、Ng、Nbが何れも三位のBスプライン基底であり、かつ、節点数が4であれば、何れも図8に示すようなξ0〜ξ3の四節点の基底関数になる。なお、図8はR軸の基底関数Nrを示している。以下、基底関数は何れも四節点の三位のBスプライン基底として説明する。
【０１１８】
次に、算出した基底関数と、図14に示す編集色データから取得した、RGB値とL*a*b*値の対応データの並びに近似する（あるいは、それら対応データを結ぶ多面体集合を平滑化したような）特性を有するBスプライン体の各係数を算出する(S403)。例えば、一次元的に観ると、図23(a)に生じている振動やリプルが抑制された、図23(b)に示されるようなBスプライン関数を求めることに相当する。
【０１１９】
この処理は、行列方程式f=MCを、L*成分、a*成分、b*成分それぞれについてLU分解を用いて解き、各係数を算出することで行う。以下、上記方程式による係数算出について詳しく説明する。
【０１２０】
まず、行列Mのs行t列成分mstを次のように算出する。
mst = Σx{Nri(rrx)Ngj(ggx)Nbk(bbx)
・Nrl(rrx)Ngm(ggx)Nbn(bbx)}    …(14)
【０１２１】
ここで、sに対してi、j、kとの間にs = 25(I - 1) + 5(j- 1) + kがなり立ち、tに対してl、m、nとの間にt=25(l - 1) + 5(m - 1) + nがなり立つ。なお、この関係は、節点数と基底関数の位数によって変化する。例えば、三位のBスプライン基底で六節点の場合、t=49(I - 1) + 7(j - 1) + kという関係になる。
【０１２２】
次に、係数cλijk、caijk、cbijkの算出をそれぞれ説明する。まず、係数cλijkを算出するために、列ベクトルfλのs行成分fλsを次のように算出し、列ベクトルfλを定める。
fλs = ΣxNri(rrx)Ngj(ggx)Nbk(bbx)・λx    …(15)
【０１２３】
ここでも先と同様に、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]    …(16)
fλ= M・cλ
【０１２４】
次に、係数caijkを算出するために、列ベクトルfaのs行成分fasを次のように算出し、列ベクトルfaを定める。
fas = ΣxNri(rrx)Ngj(ggx)Nbk(bbx)・ax    …(17)
【０１２５】
この後、次の行列方程式をLU分解を用いて解く。
ca = [ca111, ca112, …, ca115, ca121,
…, ca155, ca211, …, ca554, ca555]    …(18)
fa = M・ca
【０１２６】
次に、係数cbijkを算出するために、列ベクトルfbのs行成分fbsを次のように算出し、列ベクトルfbを定める。
fbs = ΣxNri(rrx)Ngj(ggx)Nbk(bbx)・bx    …(19)
【０１２７】
この後、次の行列方程式をLU分解を用いて解く。
cb = [cb111, cb112, …, cb115, cb121,
…, cb155, cb211, …, cb554, cb555]    …(20)
fb = M・cb
【０１２８】
そして、算出した係数をメインメモリ102に記憶する(S404)。上述の式(15)および(17)を用いることで、誤差の二乗和を小さくすることができる。その結果、振動やリプルを抑制することができる。
【０１２９】
［プロファイルの算出(S1104)］
次に、色算出用のBスプライン体を用いたプロファイルの作成(S1104)を、図19を用いて説明する。
【０１３０】
まず、作業用のメモリ領域確保し、変数を初期化するなど、初期化動作を行い(S1401)、然るべき順序に従って、プロファイルのLUT格子点に相当するRGB値を一つ取得し(S1402)、インメモリ102から色算出用のBスプライン体の基底関数および係数値を取得し、下式を用いてL*a*b*値を算出する(S1403)。
λ = Σi=15Σj=15Σk=15cλijkNri(rr)Ngj(gg)Nbk(bb)
a = Σi=15Σj=15Σk=15caijkNri(rr)Ngj(gg)Nbk(bb)    …(21)
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は
それぞれの軸に対する基底における基底関数番号
【０１３１】
次に、LUT格子点位置に対応するメモリアドレス（メインメモリ102）に、算出したL*a*b*値を格納し(S1404)、LUT格子点の総てに対し上記の変換を施したか否かを判断し(S1405)、LUT格子点の総てに対し上記の変換を施すまでステップS1402からS1404を繰り返す。
【０１３２】
LUT格子点の総てに対し変換を施すと、メインメモリ102に格納された変換後のLUTデータをプロファイルデータとしてメインメモリ102の所定領域に格納し(S1406)、作業用メモリを解放するなど終了動作を行い(S1407)、プロファイルの作成処理を終了する。
【０１３３】
［3Dオブジェクト生成(S1105)］
ステップS1105における色域表示用のソリッドデータの生成は、実施例1と同様の処理であるから詳細説明を省略する。
【０１３４】
［編集色の編集(S1107)］
ステップS1107における編集色の編集は、実施例1と同様の処理であるから詳細説明を省略する。
【０１３５】
このように、分布する色を近似/平滑化するよう非線型演算を行うため、上述した非線型演算の振動やリプルを抑制して、良好な色再現を得ることができる。つまり、一次元Bスプライン関数を例にとると、図23(b)に示すような、振動やリプルを抑制した滑らかな関数を算出することができる。さらに、誤差の総和が最小になるよう非線型演算を定めるため、色再現の忠実性においても良好な結果が得られる。
【０１３６】
従って、実施例3は、色信号値の変化のトレンドを自然に反映するとともに、振動やリプルが生じない滑らかな非線型演算を実現することができるため、色の算出に極めて有用である。
【０１３７】
なお、上記では、色の算出における基本的算出方法を説明し、かつ、その算出方法の応用例を示したが、本実施例は、上記の色再現修正に限らず、色域写像やキャリブレーションなどの画像処理に関する様々な用途に応用可能である。
【実施例４】
【０１３８】
以下、本発明にかかる実施例4の色処理を説明する。なお、実施例4において、実施例1〜3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１３９】
実施例4においては、Bスプライン体を用いる色算出方法を変更する。具体的には、RGB値に対してガンマ補正演算を施した後にBスプライン体を用いて色を算出する。そこで以下では、実施例3との差異である、ステップS1103における色算出用のBスプライン体に対する係数および基底関数の算出処理、ステップS1104におけるプロファイル作成処理について、その変更点を説明する。
【０１４０】
［色算出用のBスプライン体の設定(S1103)］
以下では、簡単のためにB-スプライン体の式を下のように表記する。なお、下式において、CijkはL*a*b*係数を表す三次元の列ベクトルで、実施例1において図7のフローチャートを用いて説明した係数cλijk、caijk、cbijkを列ベクトルにまとめたものである。
┌  ┐
│λ│
│ a│= ΣiΣjΣkCijkNri(rr)Ngj(gg)Nbk(bb)    …(22)
│ b│
└  ┘
【０１４１】
次に、色算出用のBスプライン体に対する係数および基底関数を算出処理を図18に示すフローチャートを参照して説明する。
【０１４２】
sRGB式では、RGB値にガンマ演算とマトリクス演算を施してXYZ値に変換するよう規定されている。従って、sRGBにおけるRGB再現色は、L*a*b*色空間上では、ある傾向をもって偏った分布を示す。そこで、Bスプライン体による色算出精度を向上するためには、予めRGB値をガンマ演算により補正しておくことが望ましい。
【０１４３】
まず、図14に示すデータ構造で表される編集色データから、編集色のRGB値とL*a*b*値の対応関係を、総ての組について取得し(S1201)、取得した総ての組においてRGB値にγ=2.2のガンマ補正演算を施し(S1202)、適切になるように節点を決定した後、それら節点に基づいて基底関数を算出してメインメモリ102に記憶する(S1203)。以下、基底関数は何れも四節点の三位のBスプライン基底として説明する。
【０１４４】
次に、図7に示すステップS403と同様にして、行列方程式の算出と、その方程式を用いたBスプライン体の係数算出を行い(S1204)、算出した係数をメインメモリ102に記憶する(S1205)。ただし、基底関数に代入する媒介変数値が、RGB値そのものではなくRGB値にガンマ補正演算を施した値になるところがステップS403と異なる。
【０１４５】
なお、ここでのガンマ係数は、sRGB式におけるガンマ相当値2.2とは直接に関係しない。従って、2.2に限らず1.7などの値を用いた場合に、より色算出精度が向上する場合がある。
【０１４６】
［プロファイルの算出(S1104)］
色算出用のBスプライン体を用いたプロファイルの作成手順は、図19に示した実施例1のフローチャートと同じである。従って、作業用のメモリ領域確保し、変数を初期化するなど、初期化動作を行い(S1401)、然るべき順序に従って、プロファイルのLUT格子点に相当するRGB値を一つ取得し(S1402)、インメモリ102から色算出用B-スプライン体の基底関数および係数値を取得し、下式を用いてL*a*b*値を算出する(S1403)。ただし、下式のrr、gg、bbはそれぞれステップS1402で取得したR値、G値、B値にγ=2.2のガンマ補正演算を施した値である。
┌  ┐
│λ│
│ a│= ΣiΣjΣkCijkNri(rr)Ngj(gg)Nbk(bb)    …(23)
│ b│
└  ┘
【０１４７】
次に、LUT格子点位置に対応するメモリアドレス(メインメモリ102)に、算出したL*a*b*値を格納し(S1404)、LUT格子点の総てに対し上記の変換を施したか否かを判断し(S1405)、LUT格子点の総てに対し上記の変換を施すまでステップS1402からS1404を繰り返す。
【０１４８】
［変形例］
●重み付け近似
上記の実施例3、4では、重み付けを行わず、Bスプライン体により算出される色と編集色の距離の総和が最小になるよう、Bスプライン体を算出した。しかし、各編集色に対して重み付けを行い、重み付き距離の総和が最小になるよう算出することも可能である。この際、行列方程式は例えば実施例1における明度算出用係数の算出を例にすると、行列要素および方程式の左辺のベクトル要素は下式のようになる。
mst = Σx{wxNri(rrx)Ngj(ggx)Nbk(bbx)
・Nrl(rrx)Ngm(ggx)Nbn(bbx)}    …(24)
fλs = Σx{wxNri(rrx)Ngj(ggx)Nbk(bbx)・λx
【０１４９】
ここで、wxはx番目の編集色に対する重み値で、重み値が大きいほど当該色の近似が改善される。
【０１５０】
重み係数の設定方法としては、例えばユーザが肌色近辺の編集色などに対して手動で重み係数を指定してもよい。重み係数をユーザが調整することにより、周辺への影響を観察しながら肌色などの重要色の近辺における色再現性の向上を図ることができる。
【０１５１】
あるいは、別の重み係数の設定方法として、編集色の彩度に応じ、例えばwx=1/√(a2+b2)のように自動的に設定してもよい。CIEΔE94式からも明らかなように、人の視覚は高彩度付近で鈍感になるため、高彩度色において高い色再現性を得るよりも、低彩度色において高い色再現性を得た方が、色再現として効果的である。そこで、前述したように、自動的に重みを設定することで、低彩度付近で高い色再現性を獲得し、より視覚的に好ましい色再現を得ることが可能になる。
【０１５２】
●ソリッド表現における、Bスプライン基底関数の他の区分多項式での置き換え
上記の実施例3、4では、ソリッド表現における基底関数としてBスプラインを用いる例を説明した。しかし、基底関数としては有理(rational) Bスプライン、不均一有理(non uniform rational) Bスプライン、ベジェ(Bezier)、有理ベジェ(Rational Bezier)など、あらゆる区分的関数を用いることができる。なお、基底関数の局所性が存在するとより望ましいことから、最も代表的なBスプラインを用いて実施例を説明した。
【０１５３】
●ソリッド表現の拡張
前記の実施例3、4では、式に与える色空間としてRGB三次元によるソリッド表現を用いた。しかし、xy色度のような二次元によるsurface表現、あるいは、cmykのような四次元以上の表現に拡張することができる。例えば、xy色度から一つのRGB値を算出するような場合は下式を用いればよい。
┌ ┐
│R│
│G│= ΣiΣjCijNxi(x)Nyj(y)    …(25)
│B│
└ ┘
【０１５４】
あるいは、cmyk値からxy色度値を算出するような場合には下式を用いればよい。
┌ ┐
│x│
│ │= ΣiΣjΣkΣlCijklNci(c)Nmj(m)Nyk(y)Nbkl(bk)    …(26)
│y│
└ ┘
【０１５５】
ただし、上記の式から明白であるように、総和演算の多重度は式に与える色空間すなわち入力色信号値の次元数に等しくなければならない。
【０１５６】
また、総和式内の係数を求めるためには、ソリッド表現の拡張に伴い、行列方程式を変更しなければならない。例えば、二次元による面(surface)表現の場合に、xy色度から算出する場合、R値係数に対して行列方程式は、下式のように、行列Mとベクトルfを定めなければならない。
mst = ΣaNxi(xa)Nyj(ya)Nxl(xa)Nym(ya)    …(27)
frs = ΣaNxi(xa)Nyj(ya)・ra
【０１５７】
ここで、節点数が5の場合は、sに対してi、jとの間にs=5(i - 1) + jが、tに対してl、mとの間にも同様にt=5(l - 1) + mがなり立つ。
【０１５８】
また、cmykのような四次元表現に対して、x値係数に対する行列方程式は、下式のように、行列Mとベクトルfを定めなければならない。
mst = Σaci(ca)Nmj(ma)Nyk(ya)Nbkl(bka)
・Nco(ca)Nmp(ma)Nyq(ya)Nbkr(bka)}    …(28)
fxs = ΣaNci(ca)Nmj(ma)Nyk(ya)Nbkl(bka)・xa
【０１５９】
ここで、節点数が5の場合は、sに対してi、j、k、lとの間にs=125(i - 1) + 25(j - 1) + 5(k - 1) + lが、tに対してo、p、q、rとの間にも同様にt=125(o - 1) + 25(p - 1) + 5(q - 1) + rがなり立つ。
【０１６０】
勿論、次元数が五次元以上になる場合も、同様に、行列方程式を変更しなければならない。
【０１６１】
●用いる色空間
実施例3、4は、色空間に何ら制限はなく、CMYK色空間、L*a*b*色空間、JCH色空間、XYZ色空間、xy色空間などを用いることができる。さらに、インク色分解などにも適用可能であり、CMYKに淡シアンならびに淡マゼンタを加えた六次元色空間、さらに、レッドインクおよびグリーンインクを加えた八次元色空間なども用いることができる。また、式に与える色空間と、式より算出される色空間とが同一の色空間であってもよい。
【実施例５】
【０１６２】
以下、本発明にかかる実施例5の色処理を説明する。なお、実施例5において、実施例1-4と同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１６３】
［構成および動作］
図24は実施例5の色処理装置の構成を示すブロック図である。図3に示す色処理装置との違いは、測色器115を有する点である。
【０１６４】
上記の構成において、カラーパッチを印刷し、カラーパッチを測色した結果に基づき、RGB値に対するL*a*b*値を予測してプロファイルを作成する一連の動作について説明する。
【０１６５】
まず、CPU 101の指令により、HDD 105に格納されたプロファイル作成アプリケーションが起動される。プロファイルアプリケーションは、図25に示すユーザインタフェイスをカラーモニタ107に表示する。
【０１６６】
図25に示すユーザインタフェイスには、ユーザが、カラーパッチの印刷を指示するためのパッチ印刷ボタン2201、カラーパッチの測色を指示するためのパッチ測色ボタン2202、プロファイルを保存するためのプロファイル保存ボタン2203、および、プロファイル作成アプリケーションを終了させるための終了ボタン2204がある。
【０１６７】
プロファイル作成アプリケーションは、ユーザがパッチ印刷ボタン2201を押すとプリンタ109にパッチ画像を印刷させる。続いて、ユーザがパッチ画像を測色器115の然るべき位置にセットした後、測色ボタン2202を押すと、測色器115により測定されたカラーパッチの分光反射率がUSBコントローラ108を介してメインメモリ102に格納される。
【０１６８】
プロファイル作成アプリケーションは、メインメモリ102に格納されたカラーパッチの分光反射率をL*a*b*値へ変換し、変換したL*a*b*値をカラーパッチのRGB値と組み合わせてメインメモリ102に格納する。図26は測色データのL*a*b*値とRGB値と組み合わせのデータ形式例を示す図である。この後、プロファイル作成アプリケーションは、プロファイル保存ボタン2203をイネーブル（ユーザが押せる状態）にする。プロファイル保存ボタン2203のイネーブル後、ユーザがプロファイル作成ボタン2203を押すと、後述する手順によりプリンタ109のプロファイルを作成する。
【０１６９】
プロファイル作成アプリケーションは、ユーザが終了ボタン2204を押すと処理を終了し、メインメモリ102の作業用メモリ領域およびアプリケーションメモリ領域がクリアされる。
【０１７０】
［プロファイルの作成動作］
図27は色予測用のBスプライン体の係数および基底関数を算出する処理を示すフローチャートである。なお、色予測用のBスプライン体は上述した式(13)で表される。
【０１７１】
まず、図26に示すデータ構造で表される測色データから、RGB値とL*a*b*値の対応関係を、すべての組について取得する(S2401)。以後、RGB値とL*a*b*値の対応関係を、i番目のRGB値をrri、ggi、bbi、L*a*b*値をλi、ai、biと説明する。
【０１７２】
次に、測色データのデータ総数（パッチ総数）n3に対して節点数をn-1とし、節点に基づき基底関数を算出し、メインメモリ102に記憶する(S2402)。図26に示す例はパッチ数125だから節点数は4になる。節点が定まった後の基底関数の算出には、実施例1で説明したように、一般的なDeBoor-Coxのアルゴリズムを用いる。以下、基底関数は何れも四節点の三位のBスプライン基底として説明する。
【０１７３】
次に、算出した基底関数と、図26に示す測色データから取得した、RGB値とL*a*b*値の対応関係を示す対応データを用いて、行列方程式f=MCを、L*成分、a*成分、b*成分それぞれについてLU分解を用いて解き、Bスプライン体の各係数を算出する(S2403)。以下、上記方程式による係数算出について詳しく説明する。
【０１７４】
まず、行列Mのs行t列成分mstを次のように算出する。
mst = Nri(rrs)Ngj(ggs)Nbk(bbs)    …(29)
ここで、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, …, λ124, λ125]
cλ= [cλ111, cλ112, …, cλ115, cλ121,
…, cλ155, cλ211, …, cλ554, cλ555]    …(30)
fλ= M・cλ
【０１７７】
次に、係数caijkを算出するため、次の行列方程式をLU分解を用いて解く。
fa = [a1, a2, …, a124, a125]
ca = [ca111, ca112, …, ca115, ca121,
…, ca155, ca211, …, ca554, ca555]    …(31)
fa = M・ca
【０１７８】
次に、係数cbijkを算出するため、次の行列方程式をLU分解を用いて解く。
fb = [b1, b2, …, b124, b125]
cb = [cb111, cb112, …, cb115, cb121,
…, cb155, cb211, …, cb554, cb555]    …(32)
fb = M・cb
【０１７９】
そして、算出した係数をメインメモリ102に記憶する(S2404)。
【０１８０】
図28は色予測用のBスプライン体を用いて再現色を予測してプロファイルを作成する処理を説明するフローチャートである。
【０１８１】
まず、作業用のメモリ領域確保し、変数を初期化するなど、初期化動作を行い(S601)、然るべき順序に従って、プロファイルのLUT格子点に相当するRGB値を一つ取得し(S602)、メインメモリ102から色予測用のBスプライン体の基底関数および係数値を取得し、下式を用いて、RGB値で与えられる色を印刷した場合にどのような色になるかをL*a*b*値として予測する(S603)。
【０１８２】
λ = Σi=15Σj=15Σk=15cλijkNri(rr)Ngj(gg)Nbk(bb)
a = Σi=15Σj=15Σk=15caijkNri(rr)Ngj(gg)Nbk(bb)    …(33)
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は
それぞれの軸に対する基底における基底関数番号
【０１８３】
次に、LUT格子点位置に対応するメモリアドレス（メインメモリ102）に、予測したL*a*b*値を格納し(S604)、LUT格子点の総てを予測したか否かを判断し(S605)、LUT格子点の総てを予測するまでステップS602からS604を繰り返す。
【０１８４】
LUT格子点の総てを予測すると、メインメモリ102に格納されたLUTデータをプロファイルデータとしてメインメモリ102の所定領域に格納し(S606)、作業用メモリを解放するなど終了動作を行い(S607)、プロファイルの作成処理を終了する。
【０１８５】
図29はプロファイルのデータ構造を示す図で、RGB色空間の格子点の色座標と、その格子点が再現するL*a*b*色空間の座標値の対応を記す。データ構造の先頭には、R/G/B値のステップを記述し、この後に、各格子点に対応するL*a*b*値の色座標がR、G、Bの順でネストされ記述されている。
【０１８６】
このように、値の変化のトレンドを自然に反映して滑らかな変化で色を算出することが可能なBスプラインを応用することで、少ないカラーパッチ数の測色でも、正確な色予測を実現することができる。
【０１８７】
［変形例］
●ソリッド表現における、Bスプライン基底関数の他の区分多項式での置き換え
実施例5では、ソリッド表現における基底関数としてBスプラインを用いる例を説明した。しかし、基底関数としては有理(rational) Bスプライン、不均一有理(non uniform rational) Bスプライン、ベジェ(Bezier)、有理ベジェ(Rational Bezier)など、あらゆる区分的関数を用いることができる。
【０１８８】
●ソリッド表現における各基底の節点数
実施例5では、各基底の節点数が同一であるとして説明したが、基底ごとに節点数を変更することも可能である。
【０１８９】
●予測する色の次元数
実施例5では、RGB三次元空間からL*a*b*三次元空間の物理刺激値を予測したが、予測する色の次元数に何ら拘束はない。
【０１９０】
●ソリッド表現の拡張
実施例5では、予測元の色空間としてRGB三次元色空間のソリッド表現を用いたが、この予測元の色空間の次元数に何ら拘束はない。
【０１９１】
［他の実施例］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１９２】
また、本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０１９３】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０１９４】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１９５】
【図１】四面体への六分割を模式的に示す図、
【図２】ガマット境界近辺で色の変化が急峻になる様子を示す図、
【図３】色処理装置の構成例を示すブロック図、
【図４】プレビューを行う際のユーザインタフェイスの一例を示す図、
【図５】画像プレビューアプリケーションの動作を説明する状態遷移図、
【図６Ａ】プロファイルのデータ構造をRGB色空間で模式的に示す図、
【図６Ｂ】プロファイルのデータ構造を説明する図、
【図７】色算出用B-スプライン体の係数および基底関数の算出処理を説明するフローチャート、
【図８】R軸の基底関数Nrを示す図、
【図９】B-スプライン体の算出結果をL*a*b*空間における分布として表現した様子を示す図、
【図１０】指定された画像位置のRGB値とL*a*b*値の表示処理を説明するフローチャート、
【図１１】プレビュー用画像データの生成処理を説明するフローチャート、
【図１２】色修正してプロファイルを作成するためのユーザインタフェイスを示す図、
【図１３】色再現編集アプリケーションの動作を説明する状態遷移図、
【図１４】色編集データのデータ構造を説明する図、
【図１５】ユーザインタフェイスの操作に応じて三次元表示領域に表示される図形を示す図、
【図１６】ユーザインタフェイスの操作に応じて三次元表示領域に表示される図形を示す図、
【図１７】ユーザインタフェイスの操作に応じて三次元表示領域に表示される図形を示す図、
【図１８】色算出用B-スプライン体に対する係数および基底関数を算出処理を説明するフローチャート、
【図１９】色算出用のB-スプライン体を用いたプロファイルの作成を説明するフローチャート、
【図２０】色編集データについて、RGB値、L*a*b*値またはその両方を修正する処理を説明するフローチャート、
【図２１】色域外のL*a*b*値が指定された場合に目標色を設定する方法を説明する図、
【図２２】実施例2における色算出用のBスプライン体の係数および基底関数の算出処理を説明するフローチャート、
【図２３】一次元のスプライン関数に発生する振動を説明する図、
【図２４】実施例5の色処理装置の構成例を示すブロック図、
【図２５】プロファイル作成アプリケーションが表示するユーザインタフェイスの一例を示す図、
【図２６】測色データのL*a*b*値とRGB値と組み合わせのデータ形式を示す図、
【図２７】色予測用のBスプライン体の係数および基底関数を算出する処理を示すフローチャート、
【図２８】色予測用のBスプライン体を用いて再現色を予測してプロファイルを作成する処理を説明するフローチャート、
【図２９】プロファイルのデータ構造を示す図である。
【図１】
2006109394.tif 000003
【図２】
2006109394.tif 000004
【図３】
2006109394.tif 000005
【図４】
2006109394.tif 000006
【図５】
2006109394.tif 000007
【図６Ａ】
2006109394.tif 000008
【図６Ｂ】
2006109394.tif 000009
【図７】
2006109394.tif 000010
【図８】
2006109394.tif 000011
【図９】
2006109394.tif 000012
【図１０】
2006109394.tif 000013
【図１１】
2006109394.tif 000014
【図１２】
2006109394.tif 000015
【図１３】
2006109394.tif 000016
【図１４】
2006109394.tif 000017
【図１５】
2006109394.tif 000018
【図１６】
2006109394.tif 000019
【図１７】
2006109394.tif 000020
【図１８】
2006109394.tif 000021
【図１９】
2006109394.tif 000022
【図２０】
2006109394.tif 000023
【図２１】
2006109394.tif 000024
【図２２】
2006109394.tif 000025
【図２３】
2006109394.tif 000026
【図２４】
2006109394.tif 000027
【図２５】
2006109394.tif 000028
【図２６】
2006109394.tif 000029
【図２７】
2006109394.tif 000030
【図２８】
2006109394.tif 000031
【図２９】
2006109394.tif 000032