(57)【要約】【課題】  人間の視覚が鋭敏なグレイ付近に多くの標本点を配置することが可能とし、色再現の精度が向上させる。そして、高彩度の色に対しては標本点がまばらにし、非線型の関数によって算出されすることにより滑らかに色が変化するようにし、階調性を向上させる。【解決手段】  少なくとも色相値を入力とし、少なくとも色相値を算出する手段を有し、前記色相値の算出は、入力された色相値に対して加算すべき量を補間算出し、算出した値を入力された色相値に対して加算することで色相値を算出する。【選択図】  図４
2008072477.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも色相値を入力とし、少なくとも色相値を算出する手段を有する色処理装置であって、
前記色相値の算出は、入力された色相値に対して加算すべき量を補間算出し、算出した値を入力された色相値に対して加算することで色相値を算出する
ことを特徴とする色処理装置。
【請求項２】
請求項１に記載の色処理装置であって、加算すべき量の補間算出値に当たっては、色相以外の成分からも算出することを特徴とする色処理装置。
【請求項３】
請求項２に記載の色処理装置であって、
第1の表色系で表現される色信号値より第2の表色系の色信号を算出する際、第１の表色系が３次元でありそのうち１つの次元が周期的であり、他の２つの次元が非周期的である第1の表色系に関して、区分的多項式を基底関数とする多重総和演算を用いて第2の表色系の色信号を算出する手段を有し、上記基底関数のうち１つの次元が周期的な関数であり、他の２つの次元が非周期的な関数である多重総和演算を用いて第２の表色系の色信号値を算出するものであって、
第1と第２の表色系は少なくとも色相成分をその基底として有し、
加算すべき量の補間算出に前記多重総和演算を用いる
ことを特徴とする色処理装置。
【請求項４】
請求項３に記載の色処理装置であって
前記第1の表色系で表現される色信号値に対して変換を施した値より総和演算における基底関数値を算出し、前記第2の表色系の色信号値を算出する手段を有すると共に、
前記第1の表色系で表現される複数の色信号値に対して算出されるべき前記第２の表色系で表現される色信号値を定めた組に対し、第1の表色系で表現される色信号値に対して前記変換を施し、前記変換が施された色信号の組を用いて多重総和演算の係数を求める係数算出手段を有する
ことを特徴とし、さらに
係数算出手段に於ける、前記第２の表色系で表現される色信号値を定めた組の色相成分は、あらかじめ前記第1の表色系で表現される色信号値の色相値が減じてある
ことを特徴とする色処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、色を算出するための色処理装置に関する。
【背景技術】
【０００２】
近年、カラー画像を扱うデバイスの普及により、同じカラー画像を異なるデバイスで扱う機会が増加している。例えば、ディジタルカメラで撮影した画像の出力先としてモニタやプリンタが考えられる。しかし、デバイス毎に色再現が可能な範囲（以下、色域という）が異なるため、同じ画像であってもモニタで表示される色とプリンタで出力される色が異なるという問題がある。そこで、異なるデバイス間での色域の差を吸収し、可能な限り同等の色再現を実現するためのCMS（Color Management System）が重要になっている。
【０００３】
一般的なCMSはデバイス非依存の色空間（XYZ、CIELABなど）であるPCS（Profile Connection Space）を共通色空間とする変換システムとして構成される。デバイス依存の色空間（RGB、CMYKなど）とPCSとの相互変換には、変換式あるいは変換テーブル（LUT：Look Up Table）が記述されたプロファイルを用いる。CMSにおける変換処理についてより詳細に説明すると、まず、入力デバイスに対応したプロファイル（以下、Srcプロファイルという）を用いて入力デバイス依存の色空間をPCSに変換する。次に、PCS上で入力デバイスの色域を出力デバイスの色域に変換する。そして、出力デバイスに対応したプロファイル（以下、Dstプロファイルという）でPCSから出力デバイス依存の色空間に変換する、という処理を実行することで入力デバイスの色域と出力デバイスの色域の差を吸収する。
【０００４】
このようなCMSで用いられるプロファイルとしては、例えば、モニタ等の加法混色で表現するデバイスの場合、マトリクス演算とガンマ演算の係数を記述したプロファイルが主に用いられる。一方、印刷機器等の減法混色で表現されるデバイスの場合、一般にデバイス色空間とPCSとの関係が非常に複雑であるので、その関係をより高精度に表現するためにLUTを記述したプロファイルが用いられる。一般的なLUTは、色空間において格子状に値を持つものとして記述されているため、LUTに表現されていない色に関しては補間によって色を算出する。この補間演算には立方体補間や四面体補間といった線形補間が広く用いられている。図12に示すように、立方体補間は算出する色を囲むLUT上の八点（P1、P2、P3、P4、P5、P6、P7、P8）の値から色を算出する方法であり、四面体補間は立方体補間で用いる八点で構成される立方体を六分割して得られる四面体を用いて四点の値から色を算出する方法である。例えば四面体補間の場合、（P1、P3、P4、P8）で構成される四面体に属する点Pの値は次式で得られる。
【０００５】
P＝P1＋DL*（P8−P1）＋Da*（P3−P1）＋Db*（P4−P1）
ここで、DL、Da、Dbは点Pを囲む立方体において、点Pの位置を示す正規化した各軸方向の距離である。
【０００６】
しかしながら、LUTの格子間隔が粗い場合に線形補間を用いると、立方体や四面体で囲まれた局所的な領域から値を算出するため、色算出精度が低下する。また、立方体や四面体の表面を境界として線形補間が切り替わることに起因して、値が急峻に変化して滑らかさが失われ、再現画像に擬似輪郭が現れることがある。
【０００７】
このような問題を解決する手法として、特開2005−176203において非線型演算による色算出法が提案されている。この手法では複数の代表色から色を算出する際に、色の変化の傾向を自然に反映して滑らかな変化で色を算出するため、少ない代表色でも精度良く色を算出することが可能である。また、この手法は色域写像、RGBからCMYKへの色分解、プロファイル作成、キャリブレーション等の画像処理に関するさまざまな用途に応用可能である。
【０００８】
ここで特開2005−176203の色処理装置で開示されている技術によれば、RGBやL*a*b*等の直交座標系に対して非線型演算が定められている。一方、L*C*h色空間やJCh色空間等の円筒座標系を持つ色空間では、与えられる色の変化の傾向を自然に反映するため、明度方向、彩度方向、色相方向それぞれの変化の傾向を反映することが望ましい。しかしながら、従来技術を円筒座標系の色空間に適用した場合、色相方向の変化が環状であるため、前述のように与えられる色の変化の傾向を望ましい形で自然に反映することは難しい。また、人間の視覚的に良好な色再現を実現することを考慮すると、グレイ近辺の色の色相や彩度の変化に対して人間の視覚は非常に鋭敏であるため、その色再現は画像全体における主観的印象を左右する重要な要素であり、高精度な色再現が要求される。
【０００９】
そこで、上述のような問題を解決する技術として、円筒座標系上で補間する方法が提案されている。本技術によれば、色の明度、彩度、色相の変化を考慮した円筒形の非線型演算を適用することで人間の視覚的に良好な色再現を実現したものである。
【特許文献１】特開特開2005−176203号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、このような従来技術によれば、円筒座標系の円周成分、より具体的には色相成分を補間算出する場合に次のような問題が発生する。
【００１１】
このような場合、補間算出ならびに補間係数算出に用いられる算出値も円環的でなければならない。しかしながら前記従来技術は、一般的な円環的でない値の算出に適したものであるため、直接に従来技術を用いると図１３の様に色相成分の算出に於いて算出値が振動する、といった問題を引き起こす。これは、円環するところに於いて補間すべき値が急峻に変化していることに起因する。
【課題を解決するための手段】
【００１２】
少なくとも色相値を入力とし、少なくとも色相値を算出する手段を有する色処理装置であって、
前記色相値の算出は、入力された色相値に対して加算すべき量を補間算出し、算出した値を入力された色相値に対して加算することで色相値を算出する
ことで色相も滑らかに補間することができる。
【発明の効果】
【００１３】
本発明では、円筒形の色域に分布する色の明度、彩度、色相の変化にしたがって、標本点を滑らかに接続する非線型な関数を用いて色を算出する。よって、人間の視覚が鋭敏なグレイ付近に多くの標本点を配置することが可能となり、色再現の精度が向上する。その一方、高彩度の色に対しては標本点がまばらになることで、非線型の関数によって算出される色が相対的に増加して滑らかに色が変化するため、階調性が向上する。以上の特性により、人間の視覚的に良好な色再現を得ることが可能となる。
【発明を実施するための最良の形態】
【００１４】
＜第1実施例＞
図１は、本発明である色処理装置のブロック図である。前記構成において、101はCPU、102はメインメモリ、103はSCSIインタフェース、104はネットワークインタフェース、105はHDD、106はグラフィックアクセラレータ、107はカラーモニタ、108はUSBコントローラ、109はカラープリンタ、110はキーボード/マウスコントローラ、111はキーボード、112はマウス、113はローカルエリアネットワーク、114はPCIバスである。
【００１５】
上記構成において、プロファイルを読み込み、LUTから色を算出して画像の色を変換する処理について詳細に説明する。
【００１６】
本実施例では、色変換アプリケーションを用いて画像の色を変換する。
【００１７】
ユーザが上記色処理装置に対して色変換アプリケーションの起動を指示すると、ユーザの指示を受けたOSプログラムはHDD105に格納されている色変換アプリケーションを起動し、メインメモリ102に展開する。色変換アプリケーションが起動されると図2に示すウィンドウがカラーモニタ107上に表示される。
【００１８】
以下では、図2に示した色変換アプリケーションのウィンドウについて説明する。
【００１９】
201は変換する画像ファイルの入力を指示するためのボタン、202はSrcプロファイルの入力を指示するためのボタン、203はDstプロファイルの入力を指示するためのボタン、204は色変換後の画像の出力を指示するためのボタン、205は画像の色変換の様子を表示するための表示領域、206は画像の色変換を指示するためのボタン、207はアプリケーションの終了ボタンである。
【００２０】
以下では、色変換アプリケーションの動作について図2と図4を用いて説明する。
【００２１】
ステップ401では、色変換する画像ファイルを読み込む。色変換アプリケーションにおいて、ユーザが画像ファイル入力ボタン201により画像の読み込みを指示すると、色変換アプリケーションの指示に従って、指定された画像がHDD105もしくはネットワークI/F104経由で読み込まれる。読み込まれた画像は205（a）の表示領域に表示される。
【００２２】
ステップ402では、画像を表現するデバイス依存色（RGB）をPCS（ここでは用いるデバイス非依存色をL*C*hとする）に変換するLUTを持つSrcプロファイルを読み込む。色変換アプリケーションにおいて、ユーザがSrcプロファイル入力ボタン202よりSrcプロファイルの読み込みを指示すると色変換アプリケーションの指示に従って指定されたプロファイルがHDD105もしくはネットワークI/F104経由で読み込まれる。ここで、SrcプロファイルのLUTがR、G、B各5スライス、計125個のRGB値とL*C*h値との組を持つとすると、図3（a）のようなデータ構造で構成される。
【００２３】
ステップ403では、PCSから画像を表現するデバイス依存色（RGB）に変換するLUTを持つDstプロファイルを読み込む。色変換アプリケーションにおいて、ユーザがDstプロファイル入力ボタン203よりDstプロファイルの読み込みを指示すると色変換アプリケーションの指示に従って指定されたプロファイルがHDD105もしくはネットワークI/F104経由で読み込まれる。ここで、DstプロファイルのLUTはL*C*h値とRGB値との組を持ち、図3（b）のようなデータ構造で構成される。
【００２４】
以上の処理に続き、色変換アプリケーションにおいて、ユーザは変換実行ボタン206より読み込んだ画像の色変換を実行する。
【００２５】
ステップ404では、色変換で用いるスプライン関数の係数を算出する。係数の算出方法については後述する。
【００２６】
ステップ405では、ステップ404で求めたスプライン係数を用いて、スプライン関数により入力された画像の色を変換する。変換方法については後述する。
【００２７】
ステップ406では、変換後の画像が205（b）の表示領域に表示される。
【００２８】
その後、色変換アプリケーションにおいて、ユーザが画像ファイル出力ボタン204より変換後の画像を出力する。そして、終了ボタン207によりアプリケーション終了を指示すると全てのデータ、並びにアプリケーションがメインメモリ102から消去され、アプリケーションを終了する。
【００２９】
以下では、ステップ404におけるスプライン係数の算出について、図6のフローチャートを用いて説明する。
【００３０】
まず、色算出で用いるスプライン関数について説明する。ここで、入力値（l0,c0,h0）に対する（L0,C0,H0）出力値をとすると、スプライン関数は次式で表される。ただし、色相の出力値H0＝h0＋ΔH0とする。
【００３１】
【数１】
2008072477.tif 000003
ここで、ＢｉおよびＢｊは非周期的な基底関数、
【００３２】
【数２】
2008072477.tif 000004
は周期的な基底関数である。従って、入力値（l0,c0,h0）は図5に示すような円筒座標で表される。またα、β、γ、はそれぞれの次元のスプライン係数でありi、j、k、はそれぞれの次元における基底関数番号である。
【００３３】
以下、フローチャートの説明に戻る。
【００３４】
ステップ601では、図3のデータ構造で表されるLUTより、SrcプロファイルのL*C*h値とDstプロファイルのL*C*h値との対応関係を、全ての組について取得する。ここで、以降の説明においてL*C*h値は各次元それぞれ5つ、計125個のデータであるとし、ｉ番目のデータに関して、入力色域のL*C*h値をli、ci、hi、出力色域のL*C*h値をLi、Ci、Hkと表すこととする。
【００３５】
ステップ602では、図7のように入力色域を囲むようにして標本点の入力値を設定し、LUTから標本点の出力値を得る。標本点の設定方法の詳細は後述する。
【００３６】
ステップ603では、適当となるように節点を決定し、その節点に基づいて基底関数を算出してメインメモリ102に記憶する。節点の決定方法としては、あらかじめ節点数並びに座標を決めておいてもよいし、あるいは入力値の変化より節点を決定してもかまわない。節点が定まった後の基底関数の算出には一般的なDe Boor-Coxのアルゴリズムを用いる。基底関数が3位のB-Spline基底であるとすると、非周期B-Spline基底は4つの節点（q0,q1,q2,q3）に対して図8のようになる。また、周期B-Spline基底は5つの節点（q0,q1,q2,q3,q4、但し，q０＝q4）に対して図9のようになる。以下、基底関数は非周期の場合は節点数4、周期の場合は節点数5の3位B-Spline基底として説明する。
【００３７】
ステップ604では、ステップ603で算出した基底関数と、ステップ602で求めた標本点を用いてスプライン係数を求める。そこで、行列方程式
Ｙ＝ＭＣ
をL*成分、C*成分、h成分についてそれぞれ解く。ここで、Mは基底関数と標本点の入力値から生成される行列、Cはスプライン係数を表すベクトル、Yは標本点の出力値を表すベクトルである。
【００３８】
以下、上記方程式によるスプライン係数α、β、γの算出について詳しく説明する。
【００３９】
行列Ｍは125×125の行列であり、s行t列mst成分を次のように設定する。
【００４０】
【数３】
2008072477.tif 000005
従って、s番目の出力Lsを上記スプライン関数を用いて表すと次のようになる。
【００４１】
【数４】
2008072477.tif 000006
これを行列式に変換すると
Ｌ＝Ｍα
そして、この行列式をLU分解で解き、スプライン係数のベクトルαを算出する。
【００４２】
α＝［α0，α1，Λ，α124］
同様に、s番目の出力Csを上記スプライン関数で表すと次のようになる。
【００４３】
【数５】
2008072477.tif 000007
これを行列式に変換すると
Ｃ＝Ｍβ
この行列式をLU分解で解き、スプライン係数ベクトルβを算出する。
【００４４】
β＝［β0，β1，Λ，β124］
さらに、s番目の出力Δhsを上記スプライン関数で表すと次のようになる。
【００４５】
【数６】
2008072477.tif 000008
これを行列式に変換すると
Δｈ＝Ｍγ
この行列式をLU分解で解き、スプライン係数ベクトルγを算出する。
【００４６】
γ＝［γ0，γ1，Λ，γ124］
ステップ605では、算出した係数をメインメモリ102に記憶する。
【００４７】
以下では、ステップ602における標本点の設定方法の詳細を図10のフローチャートを用いて説明する。
【００４８】
ステップ1001では、SrcプロファイルのLUTから最大彩度の値を求める。
【００４９】
ステップ1002では、ステップ1001で求めた最大彩度を用いて図7に示したように入力色域を囲む標本点を円筒形に設定する。
【００５０】
ステップ1003では、標本点について入力色域の外部にある場合はステップ1004に移行し、入力色域の内部にある場合はステップ1005に移行する。
【００５１】
ステップ1004では、標本点を色差最小となる入力色域表面にクリッピングする。
【００５２】
ステップ1005では、SrcプロファイルとDst プロファイルから標本点の出力値を算出する。
【００５３】
ステップ1006では、全ての標本点の出力値が算出されたかどうかを判定する。全ての出力値が算出されている場合は処理を終了し、算出されていない場合はステップ1003へ戻る。
【００５４】
以下では、図6のフローチャートより求めたスプライン係数値を用いて405において画像の色変換をする処理を図11のフローチャートを用いて説明する。
【００５５】
ステップ1101では、入力された画像より、あるピクセルのRGB値を読み込む。
【００５６】
ステップ1102では、読み込んだRGB値をL*C*h値に変換する。
【００５７】
ステップ1103では、入力されたL*C*h値がステップ602で設定した標本点に囲まれる領域（以下、入力空間とする）内に存在するかどうかを判定する。存在しない場合はステップ1104へ移行し、存在する場合はステップ1105へ移行する。
【００５８】
ステップ1104では、入力されたL*C*h値を入力空間の表面に色差最小となるようにクリッピングする。
【００５９】
ステップ1105では、スプライン関数に入力されたL*C*hを代入して色を変換する。入力値を（l,c,h）、出力値を（L,C,H）とするとスプライン関数は次式になる。ただし色相の出力値H＝h＋ΔHである。
【００６０】
【数７】
2008072477.tif 000009
ステップ1106では、ステップ1105で算出されたL*C*h値をDstプロファイルによりRGB値に変換する。
【００６１】
ステップ1107では、入力された画像の全ピクセルの色が変換されたかどうか確認する。全ピクセルの色変換が終了していれば処理を終了し、色変換が終了していなければステップ1101に移行する。
【００６２】
＜スプライン関数における、B-Spline基底関数の他の区分多項式での置き換え＞
上記実施例では、基底関数としてB-Spline を用いて説明した。しかしながら、基底関数にはRational B-Spline、Non Uniform Rational B-Spline、Bezier、Rational Bezier等、あらゆる区分的関数を用いることが出来る。基底関数の局所性が存在するとより望ましいことから、最も代表的なB-Splineを用いて前記実施例を説明した。
【００６３】
＜用いる色空間＞
上記実施例では標本点の入力値に対応する色空間としてL*C*h色空間を用いた。だが、円筒座標系を利用して表現可能な色空間であれば他の色空間であっても用いることは可能である。また、出力値に対応する色空間に関しては用いる色空間になんら制限は無く、CMYK色空間、L*a*b*色空間、JCh色空間、XYZ色空間、xy色空間等を用いることが可能である。さらに、インク色分解などにも適用可能であり、CMYKに淡シアンならびに淡マゼンタを加えた6次元色空間等も用いることができる。また、式に与える色空間と、式より算出される色空間は実施例のように同一であっても良いし、異なってもよい。
【００６４】
上記実施例は、色の算出における基本的算出方法を実施し、且つ、その算出方法の応用例を示したものである。従って、実施例のような画像の色変換に限らず、色域写像やキャリブレーション等の画像処理に関する様々な用途に応用可能である。
【図面の簡単な説明】
【００６５】
【図１】色処理装置のブロック図である。
【図２】色処理アプリケーションのインタフェースを表す図である。
【図３】プロファイルのLUTのフォーマットを表す図である
【図４】色算出アプリケーション動作を表すフローチャート図である。
【図５】円筒座標系を表す図である。
【図６】スプライン係数の算出方法を示すフローチャート図である。
【図７】標本点の設定方法を示す図である。
【図８】非周期的なスプライン基底関数を表す図である。
【図９】周期的なスプライン基底関数を表す図である。
【図１０】標本点の設定方法を示すフローチャート図である。
【図１１】スプライン関数を用いた色算出演算のフローチャート図である。
【図１２】四面体補間における四面体の生成方法を示す図である。
【図１３】周期関数をスプライン変換した時の振動を表す模式図である。
【図１】
2008072477.tif 000010
【図２】
2008072477.tif 000011
【図３】
2008072477.tif 000012
【図４】
2008072477.tif 000013
【図５】
2008072477.tif 000014
【図６】
2008072477.tif 000015
【図７】
2008072477.tif 000016
【図８】
2008072477.tif 000017
【図９】
2008072477.tif 000018
【図１０】
2008072477.tif 000019
【図１１】
2008072477.tif 000020
【図１２】
2008072477.tif 000021
【図１３】
2008072477.tif 000022