ここでは、下記の順序に従って本発明の実施の形態について説明する。
(1)本発明の概略:
(2)色変換テーブル作成装置の構成:
(2−1)スプライン補間演算式の修正および最適化:
(2−2)2次元空間への拡張:
(2−3)3次元空間への拡張:
(2−4)作成された色変換テーブルデータに基づく色変換処理:
(3)他の実施形態:
(1)本発明の概略:
図1は、本発明にかかる色変換テーブル(LUT)の作成を概略的に示す図である。本発明は、当該LUTの作成に際して従来実施されていたスプライン補間では得られない顕著な効果、すなわち、高精度化および高速化を実現している。LUTを作成するためには種々の手法を採用可能であるが、ここでは、プリンタで使用する記録材(インクやトナー)の量を直接的に指定するデータと機器非依存色空間中のデータとの対応関係を規定するLUTについて説明する。
さらに、同図においてはプリンタにCMYKlclm(シアン,マゼンタ,イエロー,ブラック,ライトシアン,ライトマゼンタ)の各インクを搭載し、機器非依存色空間としてL*a*b*色空間を利用する態様について説明する。CMYKlclmの各インク量は、通常、階調値(例えば、256階調の階調値)にて指定され、CMYKlclmのそれぞれについて階調値を0〜255まで独立に変化させることによって多数の色を表現する。
これらの階調値を指定するCMYKlclmデータにおいては、インク量を指定することによって特定の色を示すことができるが、各階調値によって出力されるインクの量等はプリンタの機種や印刷モード等によって異なるので、このCMYKlclmデータにて指定される色はいわゆる機器依存色である。従って、単にCMYKlclmデータを決めただけでは、出力色がどのような色であるかを客観的に特定することができない。そこで、コンピュータから印刷指示がなされた画像の色を忠実に再現して印刷を行うために、LUTを参照して指定通りの色を印刷させるためのCMYKlclmデータを算出する。
このために、LUTでは客観的に色を特定可能なL*a*b*データとCMYKlclmデータとの対応関係を規定する。但し、任意のCMYKlclmデータの組合せに対してL*a*b*データを対応づけると膨大な数となり、コンピュータにて扱う際のリソースが無駄になる。そこで、一定数(例えば、173個や323個)のCMYKlclmデータとL*a*b*データとについて対応関係を規定したLUTを作成し、任意のCMYKlclmデータに対応するL*a*b*データは、演算によって求める。
上述のようにCMYKlclmデータにて指定される色は機器依存色であるため、一般的には、CMYKlclmデータにて色を特定した複数のパッチを実際に印刷し、印刷結果を測色することによって正確なL*a*b*値を取得してLUTを作成する。このとき、上述のような173個程度のパッチを印刷し、誤りなく測色を行うのは大変な労力であるため、通常、印刷/測色作業を行える現実的な数、例えば103個程度のパッチ数を測色対象数としている。
測色数が最終的なLUTにおけるCMYKlclmデータの数より少なくても、測色したデータに基づいて補間演算を行えば、それより多数の点についてCMYKlclmデータとL*a*b*データとの対応関係を規定することができる。ここで、LUTに規定する各CMYKlclmデータは、プリンタの色域を網羅したり、印刷媒体上に記録できるインク量の上限を超えないようにしたり、インク滴によって生じる粒状感を抑えるようにするなど、種々の制約に基づいて決められる必要がある。
CMYKlclmの6次元データにおいて、各色成分毎の階調値を自由に組み合わせてこれらの制約を満たすようにすることは困難である。また、6次元のCMYKlclmデータから補間演算によってL*a*b*値を算出するのは煩雑である。そこで、より低次元の色空間であるとともに色域を単純な形状で表現可能な色空間で階調値を決定したあと、分版処理と呼ばれる手法によって6次元のCMYKlclmデータを生成する。
すなわち、まず、図1の左上に示すように、仮想的に形成するCMY空間(仮想CMY)で、各色成分毎の階調値を決定する。ここで、仮想CMYはCMYの各色についてその濃さに相当する階調値を仮想的に考えたものである。尚、このCMYの階調値はプリンタに搭載されたCMYKlclmの各色インクのうち、CMYインクの量に対応すると考えることもできるが、各階調値の組合せによってどのような出力色になるのか定義する必要はなく、実際の出力色を示す必要のない色空間という意味で仮想CMY空間と呼んでいる。
仮想CMYのように、3次元であれば、各色の階調値域を網羅するように色を選択することによって仮想CMYにおける色域の全域を網羅することは容易であり、例えば、各色の階調値域を均等に9等分し、値を組み合わせれば容易に103個のCMYデータを生成することができる。分版処理は、特定の規則によって3次元で表現された色を6次元に変換する処理である。例えば、CMYの各色のインクを印刷媒体に記録することを想定すると、CMY各色インクを略等量記録することによってほぼ無彩色、すなわちブラックを表現することができる。そこで、仮想CMY階調値の一部を特定の規則でKに置き換えると考えれば、CMY階調値からほぼ同じ色に相当するCMYK階調値を生成したと考えることができる。
さらに、lcは淡いシアン、lmは淡いマゼンタであるため、濃いシアンであるC階調値の一部を特定の規則でlcに置き換え、濃いマゼンタであるM階調値の一部を特定の規則でlmに置き換えることにより、CMYK階調値からほぼ同じ色に相当するCMYKlclm階調値を生成したと考えることができる。尚、このような置き換えの際に上述のように印刷媒体上に記録できるインク量の上限を超えないようにしたり、インク滴によって生じる粒状感を抑えるようにすることが可能である。このような分版処理によれば、仮想CMYとCMYKlclmデータとを一対一に対応づけることができる。
従って、上述のように階調値域を等分して仮想CMY階調値を特定し、当該仮想CMY階調値を分版処理した後のCMYKlclmデータに基づいて印刷し、測色を行うことによって、仮想CMY階調値とL*a*b*値とを対応づけることができる。以上のような分版処理の規則を適切に設定しておけば、上述の例のように仮想CMY空間内で階調値域を均等に分割して得られる値の組合せを測色対象とすることができる。従って、仮想CMY空間の色域に均等に配置された格子点から、図1のLUT1に示すように103個の仮想CMY階調値と測色値(L*a*b*)とを対応づけたテーブル1を作成することができる。ここで、仮想CMY空間を3次元直交空間と考えると、この値の組合せは、空間に均等に配列した直交格子点となる。
従来は、このテーブル1からスプライン補間演算によって所望の数(例えば、173個や323個)の仮想CMY階調値についてL*a*b*値との対応関係を取得し、当該仮想CMY階調値を分版規則によってCMYKlclmデータに変換することで、LUTを作成していた。すなわち、CMYKlclmデータとL*a*b*データとを対応づけて従来のLUT2を作成していた。むろん、分版規則が確定している限り、仮想CMY値とL*a*b*値との対応関係を規定したLUTであっても従来のLUT2と同等である。
ここで、LUT2の実用性はスプライン補間の精度に依存しており、精度良くCMYKlclmデータに対応するL*a*b*値を算出できるか否かによって判断することができる。このため、一般的には、最も精度が低下すると考えられる点で、スプライン補間によって得られたL*a*b*値とその実測値とを比較し、実用に耐える精度であるか否かを判断している。例えば、上記103個の仮想CMY階調値から各色成分毎に隣接する2つの値を抽出し、その中間に相当する値をCMY各色で組み合わせることによって検証用の仮想CMY階調値を生成する。すなわち、上記直交格子点の中央に相当する仮想CMY階調値を取得する。
この仮想CMY階調値に対して上記分版処理を実施し、得られたCMYKlclmデータで印刷を行い、得られた印刷物を測色すれば、この仮想CMY階調値に対応したL*a*b*値が得られる。すなわち、図1に示すテーブル3を作成したことになる。尚、この例においては、テーブル3にて登録される測色値の数は93個である。
このテーブル3を取得したら、当該テーブル3に規定される仮想CMY階調値と同じ値の仮想CMY階調値に対応するL*a*b*値をテーブル1に基づいてスプライン補間演算で算出する。この結果、テーブル3に規定された実測値とテーブル1に基づく補間演算値とを比較することができ、当該比較によって従来のLUT2が実用に耐える精度であるか否かを判断することができる。
このような従来のLUT2においては、実用に耐える精度でなかった場合に分版処理の規則を変更するなどの対応が考えられるが、この対応では、補間精度を直接的に制御するのではないため、実際に補間精度を向上することが非常に困難である。また、実際には(103+93)個の測色値を取得しているが、スプライン補間演算に使用可能な測色値は103個であり、93個の測色値は、補間精度の向上に直接寄与していない。さらに、精度向上のために93個の測色値を利用するとしても、通常のスプライン補間演算では、1次元毎に補間演算を実施して多次元の補間値を取得するため、103個の直交格子点同士を結ぶ線上に存在しない93個の測色値を利用するのは困難であった。
図2は、多次元空間におけるスプライン補間演算を説明するための図である。同図においては、簡単のために2次元空間における補間値をスプライン補間によって算出する様子を示しており、xが独立変数であるとともに2次元空間の位置に相当し、yが各位置に対応づけられた従属変数である。この例では独立変数の各値が直交格子を形成しており、上記テーブル1の仮想CMYが当該独立変数、L*a*b*値が当該従属変数に相当すると考えることができる。尚、多次元の従属変数値(例えばL*a*b*値)を算出する際には、各次元毎に従属変数値を与える補間関数(L*,a*,b*を与える別個の補間関数)を想定すればよい(以下同じ)。
図2において、x1は紙面横軸(X1方向)に沿って値が変化する変数を示し、x2は紙面縦軸(X2方向)に沿って値が変化する変数を示している。また、添字iによってX1方向の格子点位置、添字jによってX2方向の格子点位置を区別している。各格子点上の従属変数値は添字ijによって区別している。2次元空間上の任意位置(x1,x2)について、その従属変数yをスプライン補間演算で算出するためには、まず、X1方向でスプライン補間を行い、続いてX2方向でスプライン補間を行う。
尚、1次元のスプライン補間演算は下記式(1)によって定義される。
ここで、従属変数値y
j,y
j+1は、それぞれ独立変数値x
j,x
j+1に対応づけられた値であり、y''
j,y''
j+1は、それぞれ独立変数値x
j,x
j+1におけるx方向の2次微分値である。
また、上記式(1)内のAおよびBは下記式(2)のように定義され、
上記式(1)内のCおよびDは下記式(3)のように定義される。
また、上記式(1)における2次微分値y''
jは、式(1)のxによる1次微分値が区間の境界で連続であるという条件を課すことにより求めることができる。式(1)をxにより1次微分すると、以下の式(4)のように表すことができる。
ここで、区間x
j-1〜x
jで式(4)を評価した値と、区間x
j〜x
j+1で式(4)を評価した値が、x=x
jで等しいとするなら、以下の式(5)に示す方程式を得ることができる。
式(5)で表す境界条件は、x=x
1〜x
N-2における、(N−2)連立方程式を表しており、当該連立方程式を解くことにより、y''
jを求めることができる。ここで、Nはx方向の格子点数を示している。尚、本明細書において、通常x
1はX
1方向の任意位置を示すが、前述のx
1〜x
N-2ではX
1方向の格子点に対して端から順に0〜N−1と番号を付け、その両端を除いた格子点の位置をx
1〜x
N-2としている。
以上の式(5)において、未知の2次微分値y''jはN個存在するが、上記連立方程式は(N−2)連立方程式であるので、さらに2個の条件を必要とする。典型的にはy''0およびy''N-1の値を指定すればよい。(例えば、一般に自然スプラインと呼ばれるy''0=0、y''N-1=0という条件を採用すればよい)詳細は、例えば、「NUMERICAL RECIPES in C(日本語版)」,技術評論社,p.105等に記述されている。
以上のようにして、2次微分値を算出することができれば、上記式(1)に示すスプライン関数を定義することができ、定義された区間における任意の独立変数値に対応する従属変数値を算出することが可能になる。従って、同式(1)のスプライン補間演算式を算出するためには、N個の独立変数x0〜xN-1および対応する従属変数y0〜yN-1が必要である。
すなわち、上記図2における位置(x1,x2)に相当する従属変数値yをX2方向のスプライン補間演算式から算出するには同図に白丸で示す位置を含めた(x1,x20),・・・,(x1,x2j),・・・,(x1,x2N2-1)における従属変数値y10,・・・,y1j,・・・,y1N2-1が必要である。(ただし、N2はX2方向の格子点数を表す。また、図2の説明において、x1は端の格子点位置ではなく同図に示すようなX1方向の任意位置を示す。)
さらに、それぞれの白丸で示す位置の従属変数値を取得するには、X1方向のスプライン補間演算が必要である。例えば、従属変数値y1j-1を算出するには、位置(x10,x2j-1),・・・,(x1i,x2j-1),・・・,(x1N1-1,x2j-1)における従属変数値y0j-1,・・・,yij-1,・・・,yN1-1j-1が必要である。(ただし、N1はX1方向のグリッド数を示す。)
結局、任意位置(x1,x2)について、その従属変数yをスプライン補間演算で算出するためには、まず、図2に示す実線の交点に相当するN1×N2個の格子点の独立変数および従属変数を利用してX1方向でスプライン補間演算を実施し、位置x1における従属変数値を算出することになる。そして、得られたN2個の従属変数値に基づき、X2方向でスプライン補間演算を実施し、位置x2における従属変数値yを取得することになる。むろん、スプライン補間演算を適用する方向はX2方向,X1方向の順でも良い。
以上のように、スプライン補間においては、1次元のスプライン補間演算を繰り返して多次元空間における任意の位置の従属変数値を取得可能であるが、この補間演算の精度は、一般に実際の測色値(図2の格子点)から離れるほど低下する。そこで、上述のように、テーブル1に規定された仮想CMY階調値から各色成分毎に隣接する2つの値を抽出し、その中間に相当する値をCMY各色で組み合わせることにより、テーブル1に規定された仮想CMY階調値からの距離が一定になる位置を検証用測色値としている。
従来は、この検証用測色値と上記多次元空間におけるスプライン補間演算結果とを比較することで上述の検証を行い、実用に耐えなければ分版規則を修正するなどしていた。しかし、スプライン補間演算を行う際に利用した元の測色値(図1の例では103個の測色値)と検証用測色値は正確な値であるため、前者を利用して後者を算出できなければ、補間精度が非常に高精度であるとは言えない。補間である以上、誤差は発生し得るし、スプライン補間演算の精度を超えるのは困難であると考えられていたが、本願出願人は、最適化によってこの困難な課題を克服し、より高精度の補間を実現した。
すなわち、図1の右側中央に示すように、スプライン補間演算の関数形による補間演算を想定するが、この補間式にて独立変数に依存する項を一般的なスプライン補間演算式における項より高次の関数で表現する。そして、当該高次の関数の関数形を最適化することによって、上記元の測色値から検証用測色値もできるだけ正確に補間できるような補間演算式を導出する。
このような補間演算式によれば、従来のスプライン補間演算式よりも高い精度で補間を行うことができ、上記元の測色値に基づいて、所望の数(例えば、173個や323個)の仮想CMY階調値に対応するL*a*b*値を取得し、当該仮想CMY階調値を分版規則によってCMYKlclmデータに変換することで、LUT4を作成する。尚、本発明においては、LUT4を作成するにあたり高速に補間演算を実施できるよう構成してあるが、詳細は後述する。
また、図1に示すLUTの構成は一例であり、むろん、コンピュータで使用する表色系(例えばsRGB表色系)とプリンタで使用する表色系との対応関係を規定するLUTであっても良い。sRGB表色系における座標値は演算によってL*a*b*値と対応づけることができるので、この対応関係と図1に示すLUT4における対応関係とを参照すれば、sRGB表色系とCMYKlclm表色系とを対応づけたLUTを容易に作成することが可能である。
(2)色変換テーブル作成装置の構成:
次に、本発明におけるLUTを作成する装置およびその処理について具体的に説明する。図3は本発明にかかる色変換テーブル作成装置を示すブロック図であり、図4,図5は当該色変換テーブル作成装置にて実施する処理のフローチャートである。本実施形態は、LUTを作成するためのLUT作成プログラムを実行させることができるコンピュータ10によって実現される。
図3では、当該コンピュータ10の概略構成を示している。同図においてコンピュータ10は汎用的なパーソナルコンピュータ等にて構成することができ、当該コンピュータ10はディスプレイ11やキーボード12,マウス13等のユーザインタフェースを備えるとともに、所定のプログラム実行系を備えている。すなわち、CPU14,RAM15,ROM16およびHDD17等を備えており、図示しないオペレーティングシステムの制御下においてLUT作成プログラム20を実行可能である。
当該LUT作成プログラム20は、2次微分値算出部20aとブロック設定部20bと目的関数算出部20cと最適化処理部20dと高速化スプライン補間部20eとLUT作成部20fとを備えている。このLUT作成プログラム20は、HDD17に予め記録されたデータあるいは適宜生成したデータを用いてLUTを作成する。尚、図3のHDD17においては、予めHDD17に記録されるデータを実線の矩形で示し、処理の過程で生成されるデータを破線の矩形で示している。
LUTの作成においては、予め測色データを用意しておく。すなわち、作成後のLUTを参照して印刷を実施すべきプリンタにおいて予め上述の仮想CMY階調値に基づいてパッチを印刷し、印刷されたパッチを測色しておく。この結果は、仮想CMY階調値および仮想CMY階調値に対応づけられた測色値を示すデータとしてHDD17に記録される。図3に示す例では、測色データ17aが上記図1に示す103個の測色値に相当し、CMYの各色毎に階調値域を均等に分割し、得られた値を組み合わせてCMY階調値を生成するとともに、その階調値における印刷結果を測色し対応づけたデータである。当該測色データ17aにおける階調値は仮想CMY空間で直交格子を形成する。
検証用測色データ17bは、当該測色データ17aにて形成される仮想CMY空間中の直交格子の中央に相当する仮想CMY階調値とその測色値とを対応づけたデータである。尚、測色データ17aにおける格子点位置と、検証用測色データ17bにおける格子点位置との関係は、図8の様な関係である。すなわち、測色データ17aに規定された仮想CMY階調値によって白丸のような格子点が形成されるとき、検証用測色データ17bに規定された仮想CMY階調値は当該立方体の中央に位置する黒丸に相当する。この実施形態においては、測色データ17aによって仮想CMY空間に形成される格子点が上記第1格子点に相当し、検証用測色データ17bによって仮想CMY空間に形成される格子点が上記第2格子点に相当する。但し、本明細書では、簡単のため、1次元で本発明の基本的考え方を説明し、この1次元における考え方を容易に2次元空間へ適用可能であることを示し、最後に3次元空間に対する適用を説明する。
図6は、測色データ17aの格子点と検証用測色データ17bの格子点の位置関係を示す図であり、図3に示す実施形態では仮想CMY空間が3次元空間であるところ、図6では簡単のために2次元空間で示している。図6においては、測色データ17aに記述された仮想CMY階調値による格子点の位置を白丸で示しており、検証用測色データ17bに記述された仮想CMY階調値による格子点の位置を黒丸で示している。検証用測色データ17bにおける仮想CMY階調値の格子点位置は、測色データ17aの格子点位置の中間であるため、2次元においては図6に黒丸で示すように白丸で形成される正方形の中央に相当する。
本実施形態においては、後の補間演算にて使用する微分値を予め算出するようにしており、LUT作成プログラム20の2次微分値算出部20aは、当該微分値を算出するモジュールであり、上記測色データ17aと検証用測色データ17bとを取得し(ステップS100)、これらの値から2次微分値を算出してHDD17に記録する(ステップS105)。より具体的には、微分値の算出対象は図6に白丸で示す各格子点であり、各白丸の測色値についてスプライン補間演算を実施する場合と同様にして算出することができる。
すなわち、2次微分値算出部20aが、各格子点における境界条件から得られる上記式(5)につき、上述のような連立方程式を解くことにより、スプライン補間式に含まれる2次微分値を算出する。尚、このステップS105における処理は、上記図6に白丸で示すような測色データ17aの全格子点について各方向に対して実施され、HDD17に記録される(2次微分値データ17c)。さらに、2次微分値算出部20aは、ある方向について2次微分した値に対して他の方向について2次微分した値、例えば、従属変数値yijをX1方向に2次微分し、さらにX2方向にも2次微分した値を算出する。
尚、本明細書においては、この微分値をクロス2次微分値と呼ぶ。当該クロス2次微分値は、式(5)における従属変数値および2次微分値をそれぞれ2次微分値およびクロス2次微分値で読み替えることによって算出することができる。すなわち、X1方向の2次微分値を従属変数値と考え、この従属変数値を算出するためのX2方向での1次元スプライン関数を考えると、当該1次元スプライン関数における2次微分値がクロス2次微分値になっている。例えば、式(1)の第3項に相当する2次微分値の実体が従属変数をX1方向とX2方向とで2階微分した値になっている。このクロス2次微分値も上記2次微分値算出部20aによって算出され、算出結果を示すデータはクロス2次微分値データ17dとしてHDD17に記録される。
上記2次微分値データ17cとクロス2次微分値データ17dと測色データ17aとを利用すれば、図6に示すように白丸を頂点とする正方形内の格子点について、スプライン補間によって対応するL*a*b*値を算出することができる。しかし、本発明は当該スプライン補間による補間精度を超えたより高精度の補間演算を実施する発明であり、当該スプライン補間関数における独立変数をより多次の関数で表現し、最適化を行う。
(2−1)スプライン補間演算式の修正および最適化:
ここで、当該最適化における基本的な考え方を説明する。尚、ここではまず1次元のスプライン補間に対する修正および最適化を説明する。1次元のスプライン補間式は、上述のように式(1)〜式(3)にて表現される。また、このスプライン補間式においては、式(1)を2階微分することによって下記式(6)が得られる。詳細は、例えば、ニューメリカルレシピ・イン・シー(日本語版),技術評論社,p.105等に記述されている。
本願出願人は、このスプライン補間演算式において、上記A〜Dを修正することによって当該スプライン補間演算より高精度の補間を実施する手法を具現化した。すなわち、式(1)においては、区間の境界で1次微分値と2次微分値が連続であるという非常に理にかなった関数形で各区間における独立変数と従属変数との対応関係を定義できる。しかし、各区間において、格子点の間における従属変数の挙動は境界条件から決定してしまい、積極的に制御することはできない。そこで、本願出願人は上記A〜Dの修正を行うことで、スプライン補間演算と同様の境界条件を満たしながらも独立変数と従属変数との対応関係をより柔軟に定義する手法を提供した。
図7は、この考え方を説明するための説明図であり、同図における横軸は独立変数x,縦軸は従属変数yである。このとき、区間xj〜xj+1のスプライン関数は上記式(1)によって定義される。例えば、区間xj〜xj+1でスプライン補間によって得られる従属変数値が図7に示す実線のように変動するとき、この挙動はスプライン関数の境界条件等によって規定される。このとき、特に区間xj〜xj+1の中点である位置xaでの従属変数の真値が図7の黒矩形であり、スプライン関数での補間結果が白矩形であるとすれば、同位置xaでの補間精度は低下し得る。
そこで、本願出願人は、補間演算結果が上記黒矩形で示す真値を通る(あるいはできるだけ近くを通る)ようにして上記A〜Dの修正を行った。すなわち、図7に実線で示すスプライン補間よりも正確に、破線に示す従属変数の真値に近づけられるようにした。本実施形態においては、後述するように上記A〜Dに含まれる独立変数の次数を増加させている。
まず、上記A〜Dを修正しながらも上記スプライン補間演算式と同様の境界条件を充足させられることを示す。上記A〜Dの修正は以下の式(7)によって行う。
すなわち、上記式(2)におけるAが未知の関数A'(=f(A))であるとし、さらに、この関数f(A)を各種の条件下で最適化を行う。
この修正においても上記スプライン補間演算式と同様であるようにするため、修正後の補間式が下記式(8)のように表現され、その2階微分が下記式(9)を満たすと考える。
ここで、各区間の境界は空間内の格子点に相当し、対応する従属変数値は上述の測色値(測色データ17a)に相当するので、正確な値である。従って、格子点に対応する従属変数値および従属変数値から算出される2次微分値には修正の影響がないように以下の条件1,2を充足させる。
条件1:格子点Lj,Lj+1の従属変数値は測色値yj,yj+1である。
条件2:格子点Lj,Lj+1の2次微分値は測色値から上記式(5)に基づいて算出されるy''j,y''j+1である。
さらに、上記関数f(A)を導入することによって、より高精度の補間を実施できるようにするため、下記条件3を充足させる。
条件3:補間結果が検証用測色データ17bと一致する。
尚、この条件3を常に厳格に適用すると、得られる補間関数に振動が生じ、補間結果が非現実的なものとなる場合がある。このような場合に条件3を適用するのは好ましくないため、後述する制約条件を課すことによって非現実的な補間を防止する。
条件1を充足させるための条件式を導出するため、式(8)にて独立変数xがx
jである場合を想定すると、A'=1であれば、独立変数xがx
jであるときに従属変数yがy
jであるという関係が任意の格子に対して満たされる。式(2)により、独立変数xがx
jである場合にはA=1であると言えるので、結局A’の条件式としては、下記式(10)の第1式が得られる。同様に独立変数xがx
j+1である場合を想定すると、A’=0,A=0であり、A’の条件式としては式(10)の第2式が得られる。
次に、上記条件2を充足させるための条件式を導出するため、式(8)を2階微分すると、下記式(11)が得られる。
このとき、f(A)をAで1階微分した値が1,2階微分した値が0であれば、任意の従属変数値およびその2次微分値に対して式(9)と式(11)とが一致する。従って、独立変数xがx
j,x
j+1である時にf(A)をAで1階微分した値が1,2階微分した値が0になるようにすれば、上記条件2を満たす。すなわち、条件2を充足させるための条件式は以下の式(12)になる。
さらに、条件3を充足するためには、独立変数xにx
p(x
pは検証用測色データ17bにおける格子点位置を指定する値)を代入したときに下記式(13)を満たす必要がある。ここで、y
pは上記検証用測色データ17bに相当する従属変数である。
以上のように、式(10),式(12),式(13)の条件を満たす関数f(A)が定義できれば、スプライン補間演算より高精度の補間を実施可能であることが期待できる。本件出願人はこの関数f(A)が多項式であると想定してスプライン補間を修正しており、当該多項式による修正を行えば実際に補間精度が向上したことが確認されている。関数f(A)が多項式であると想定し、その関数形を決定するにあたり、条件式から算出可能な次数に設定する。すなわち、上記式(10),式(12),式(13)が7個の条件式であることから7個の係数k
0〜k
6を含む6次式(14)を想定する。
条件式(10),式(12)によって係数k0〜k5を解けば、k0=0,k1=1,k2=0,k3=−k6,k4=3k6,k5=−3k6となる。得られた結果を式(14)に代入し、その結果を式(7)に代入し、さらに式(13)に代入すれば、係数k6を算出するための式を取得することができる。但し、本発明の適用対象は1次元に限られず、本実施形態のように多次元であることも想定し、ここでは最適化によって係数k6を算出する。
最適化の手法は各種の手法を採用可能であるが、ここでは、関数f(A)の導入に伴って過度に非線形になることを防ぐために目的関数Eを導入し、制約条件を課しながら当該目的関数Eを最小化する。すなわち、上記式(13)を満たすような係数k6の値は多数存在することが予想されるため、目的関数Eを最小化する係数k6が理想的な解であるとする。尚、上記制約条件には上記式(13)を充足させるための条件(制約条件1)が含まれるが、むろん、他の制約条件を含めることも可能である。本実施形態においては、当該式(13)を充足させるための条件に加え、関数f(A)が単調に増加するように条件(制約条件2)を課して最適化を行う。また、この最小化においては準ニュートン法など種々の手法を採用可能であり、後述する2次元以上での最適解の導出に特に有用である。
より具体的には、まず、式(13)を満たすようなA'を算出するにあたり、通常のスプライン補間演算式(1)に含まれる上記Aの値と修正後(式(13))のA'の値とができるだけ近い値になるように目的関数Eを設定する。この目的関数としては、例えば以下の式(15)を採用可能である。
ここで、A
pは上記式(2)の第1式において独立変数xにx
pを代入して得られる値である。式(15)におけるA'
pは、最適解を探索している過程でA'の候補として得られる値である。すなわち、この目的関数Eをできるだけ小さくするようにA'の3次式である式(13)の解を求めることによって、A'
pを修正後のA'として最適な値に収束させる。
最適解A'
pが得られたら、上記式(14)に対して当該最適解A'
pと上記係数k
0〜k
5の値とを代入し、変形すると、下記式(16)の様にして独立変数x
pにおける係数k
6を算出することができる。
尚、本実施形態においては、当該係数k6が算出されてから上記制約条件2を充足するか否かを検証することができる。上記制約条件2は、関数f(A)が単調に増加するように決められた条件であり、この条件を課すことによって補間結果の破綻を防止している。すなわち、スプライン補間演算式(1)において第1項と第2項は線形補間分の寄与を示し、Aは式(2)の第1式から明らかなように任意の独立変数xと既知の独立変数値xj,xj+1との相対関係を示している。
従って、スプライン補間演算式における第1項で、Aの値は独立変数xの変化に対して線形的に変化する。ここで、上記関数f(A)の導入した後に、A'(=f(A))がAに対して単調増加でなければ、修正後の関数式(13)の性質は、大きくスプライン補間演算式の性質と異なってしまう。すなわち、A'(=f(A))がAに対して単調増加でなければ、同じA'に対して複数のAが存在することになり、格子点から遠ざかるほどその格子点からの寄与が小さくなるという補間の物理的意味から大きく外れることになる。この場合、関数f(A)を求めたとしても補間演算式としては不適当な式となり、理にかなった補間結果が得られにくい。
いずれにしても、以上のように制約条件1および制約条件2を課しながらA'の最適解A'
pを算出すると、関数f(A)の非線形性をできるだけ抑えた状態(Aに対するf(A)の複雑な依存性をできるだけ抑えた状態)で係数k
6を算出することができる。より具体的には、関数f(A)が単調増加であるための条件は当該関数f(A)のAに関する1次微分値が常に正の値であることであり、以下の式(17)で表現される。
ここで、同式において係数k
6に乗ぜられている式をg(A)とおく。
当該g(A)は、A=0,0.5,1においてg(A)=0であり、0<A<0.5において負の値、0.5<A<1において正の値を取る。従って、g(A)は、0<A<0.5におけるあるAで負の最小値を取り、0.5<A<1におけるあるAで正の最大値を取ることになる。従って、上記式(17)は式(18)の様に書き換えられる。
ここで、0<A<0.5においてg(A)の最小値を与えるAをA
q1,0.5<A<1においてg(A)の最大値を与えるAをA
q2とすれば、式(18)をさらに式(19)に変形することができる。
尚、0<A<0.5におけるg(A)の最小値および0.5<A<1におけるg(A)の最大値は極値であるので、当該g(A)の1階微分値を0とおくことによってAq1およびAq2を算出することができる。具体的には、Aq1=(5−5-1/2)/10およびAq2=(5+5-1/2)/10である。
上記式(16)によって算出した係数k6がこの制約条件2を満たす限り、関数f(A)が単調増加であることを保証することができる。そこで、上記最適解A'pを算出した後に係数k6を算出し、式(16)を満たすか否かをチェックすればよい。尚、制約条件1と制約条件2との双方が常に満たされるとは限らないが、本実施形態では制約条件2を優先している。すなわち、補間結果が厳密に検証用測色データ17bと一致しなくても、関数f(A)が単調増加であることを優先している。
この結果、補間演算結果に破綻が生じることを防止している。尚、低明度域の色においては、仮想CMY階調値の増加に対してL*a*b*値の変化量が小さくなり、補間関数の振動や急激な変化が生じると、理にかなわない補間結果が得られやすい。すなわち、低明度域においては、特に独立変数の変化に対して変化し得る従属変数の値域が狭いので、関数f(A)の導入によって破綻が生じやすい。しかし、制約条件2を課することにより、確実に当該破綻を防止することができる。
(2−2)2次元空間への拡張:
以上の説明は、1次元スプライン補間についての修正であったが、2次元あるいはそれ以上のスプライン補間についても同様の考え方を容易に適用することができる。そこで、次に2次元空間におけるスプライン補間の修正を説明する。このために、まず2次元空間におけるスプライン補間式を説明する。上述のように、1次元スプライン補間を繰り返すことによって2次元のスプライン補間を実施することができるが、本発明においては、予め1次元の補間演算を繰り返すことなく多次元空間での補間値を取得するための処理を行っており、この処理を高速化スプライン補間演算と呼ぶ。
当該高速化スプライン補間は、多次元空間での補間を行う場合に計算すべき補間式を予め求めておき、上記2次微分値等を適用することによって実現される。2次元空間における当該高速化スプライン補間演算は、測色データ17aとこのデータによる格子点での2次微分値とクロス2次微分値とを利用して実施され、ここでは、図2に示す2次元空間を例に説明する。この例に則して表現すると、格子点位置(x1i,x2j),(x1i+1,x2j),(x1i,x2j+1),(x1i+1,x2j+1)に囲まれた任意の位置(x1,x2)における従属変数値yを各格子点位置およびその従属変数値と2次微分値とから算出できるような式を予め算出することになる。
ここで、位置(x
1,x
2j)と位置(x
1,x
2j+1)の従属変数値はX
1方向のスプライン補間を考えると、式(20),式(21)によって与えられる。
一方、位置(x
1,x
2)は、位置(x
1,x
2j)と位置(x
1,x
2j+1)とにおける従属変数および2次微分値を利用してX
2方向のスプライン補間を考えると、式(22),式(23)のように表現される。
ここで、式(22)の右辺第3項、第4項における2次微分値は、式(20)をx
2で2階微分したものであり、実際に2階微分を行うことにより、式(24)のように定義することができる。
そこで、式(20),式(24)を式(22)に代入し、変形すると、下記式(25)が得られる。
この式(25)には、格子点位置(x1i,x2j),(x1i+1,x2j),(x1i,x2j+1),(x1i+1,x2j+1)および当該格子点に囲まれた矩形内で任意の位置(x1,x2)とそれぞれの従属変数値,2次微分値,クロス2次微分値のみが含まれる。従って、予めこれらの値を算出しておけば、単なる代数演算によって任意の位置(x1,x2)の従属変数値を算出することができる。
すなわち、図6に示すような2次元空間において、白丸を頂点とする最小の正方格子(測色データ17aが形成する格子)の位置を上記図2に示す格子点位置と同様に定義すると、式(25)によって当該正方格子内の任意位置の従属変数値を算出することができる。そこで、本発明においては、この高速化スプライン補間演算式についてさらなる修正を施すことによって、より高精度に高速化スプライン補間を行う。修正は下記式(26)にて与えられる。
ここで、添字1,2は式(21),式(23)と同様にそれぞれX
1方向に関する式、X
2方向に関する式に対応させてある。すなわち、式(26)の第1式は、式(21)の第1式に対する修正であり、式(26)の第2式は、式(23)の第1式に対する修正である。このため、各式におけるB〜Dも修正され、上記式(25)内のA
1〜D
1およびA
2〜D
2がA'
1〜D'
1およびA'
2〜D'
2に修正されることになり、修正後の補間演算式は下記式(27)で表現される。
ここにおいても6次の多項式を想定し、X
1方向に関する係数k
11〜k
16,X
2方向に関する係数k
21〜k
26によって下記式(28)を導入する。
そして、上述の1次元における条件1〜条件3と同様の条件を充足するように目的関数Eを最小化する。ここで、2次元空間における目的関数Eは、例えば、下記式(29)のように表現できる。
ここで、検証用測色データ17bにおける格子点位置を指定する値を(x1p,x2p)とし、A1pは、式(21)の第1式の独立変数x1に当該x1pを代入して得られる値であり、A2pは、式(23)の第1式の独立変数x2に上記x2pを代入して得られる値である。また、A'1p,A'2pは、A'1,A'2を上記条件3、すなわち、式(27)の独立変数に(x1p,x2p)を代入した結果得られる補間結果が検証用測色データ17bの測色値ypであるという条件で最適化する際に適宜変更される値である。
以上の目的関数Eによって最適化後のA'
1p,A'
2pが算出されると、残りの係数が下記式(30)の様にして算出可能になる。
ここで、A'
1p,A'
2pは、上記条件3を制約条件として最適化を行った後の値である。
このように、係数k
16,k
26を算出したら、上述の場合と同様に下記式(31)によって制約条件2を充足するか否か検証する。
尚、A
q1およびA
q2は上記式(19)における値と同値である。
以上のようにすれば、上記図6に示すような2次元空間において、白丸を頂点とする最小の正方格子(ブロックと呼ぶ)を利用して各正方格子内の任意位置の従属変数値を高精度に算出することが可能になる。但し、以上の修正において、境界条件(上記条件1,条件2)は、各方向毎に定義されているので、これらの条件のみで2方向について補間結果の連続性を保証することはできない。そこで、2次元以上の空間では、係数k16,k26に位置依存性を持たせ、ブロックの境界でこれらの係数を連続にすることで、式(27)による補間演算結果の連続性を保証している。
図6を参照し、係数k26を例にして考えると、当該係数k26を算出するにあたり適用される条件1は、X2方向に垂直な境界B2(図6に示す太線)上で修正後のA'2が修正前のA2に一致するという条件によって充足する。微分値についての条件2も同様であり、境界B2で修正後のA'2の1次微分値および2次微分値が修正前のスプライン補間演算式と同様の境界条件を満たすことになる。
以上の条件によって上記式(28)の第2式が導出されるのであるが、当該第2式にはX
1方向の変数を含まないので、境界B
1上で関数が連続するとは限らない。例えば、境界B
1上の独立変数x
1iから上記A
1を算出するとその値は1になり、A'
1も1になる。この結果、B'
1=0,C'
1=0,D'
1=0となり、これらを式(27)に代入すると下記式(32)が得られる。
この式は、X2方向における1次元スプライン補間に修正A'2を導入した状態である。従って、ブロックBL1において算出した係数k26とブロックBL2において算出した係数k26とが一致していれば、上記式(32)によって算出される値はブロックBL1,ブロックBL2の境界で連続である。しかし、上記式(30)による係数の算出はブロック毎に独立して行われるため、一般的に、ブロック間で係数k26が一致するとは言えない。この状況は、係数k16についても同様であり、条件1,条件2に基づいて式(30)の第1式にて当該係数k16が決定されたとき、境界B1における補間結果の連続性は保証できるが、境界B2における補間結果の連続性は保証できない。
そこで、本実施形態においては、一旦式(30)に基づいて係数k16,係数k26を決定した後、必要に応じて境界上で係数を連続にすることによって式(27)による補間結果の連続性を保証する。ここでは、係数k16がX2方向に連続であり、係数k26がX1方向に連続であればよく、係数k16が独立変数x2に従って連続的に変化し、係数k26が独立変数x1に従って連続的に変化すればよい。尚、これは、係数k16がA2に従って連続的に変化し、係数k26がA1に従って連続的に変化することと同様である。
以上の連続性を充足させるため、本実施形態では、上記式(30)によって算出される係数k16,係数k26の値は検証用測色データ17bにおける格子点における値であるとし、この値から境界上の係数値を算出するとともに境界に向かって連続的に変化するように定義する。例えば、係数k26がA1に従って連続的に変化するようにするため、境界上の係数値は隣接するブロックにおいて算出済みの係数値から補間演算によって算出する。
図6に示す例でブロックBL1,BL2,BL3における検証用測色データ17bの位置(x1p,x2p)1,(x1p,x2p)2,(x1p,x2p)3について係数k26が算出済みである場合、中間の境界上の係数値を補間演算によって算出する。すなわち、独立変数値がx1iである境界B1における係数k26を位置(x1p,x2p)1,(x1p,x2p)2について算出された係数値から補間する。独立変数値がx1i+1である境界B1における係数k26を位置(x1p,x2p)2,(x1p,x2p)3について算出された係数値から補間する。
この結果、ブロックBL
2においては、中央の位置(x
1p,x
2p)における係数k
26の値とX
2方向の両端を構成する2つの境界B
1上の係数値が算出される。そこで、係数k
26を式(33)によって表現し、この式(33)における関数hの値が上記各位置における係数値と一致すると考える。
すなわち、X1方向の位置x1i,x1p,x1i+1における係数値をk26i,k26p,k26i+1とし、上記式(33)のA1に各位置x1i,x1p,x1i+1をそれぞれ代入する。そして、それぞれの左辺が係数値k26i,k26p,k26i+1に等しいとすれば、3個の連立方程式を取得することができ、これらに基づいて係数m0〜m2を算出することができる。
以上のように、境界上で係数k26が連続になるように定義すると、上記式(32)において定義される境界上の従属変数値は、その境界が含まれる2つのブロックのいずれを使用しても同じ値となり、連続性が保証される。尚、2次元の場合、変数A2に依存する関数h(A2)を上記式(33)と同様に定義して同様の処理を係数k16に対しても実施する。これにより、修正後の式(27)による補間結果がブロックの境界で連続になるようにして補間演算式が定義されたことになる。
本発明の基本的な考え方は、以上で示したように測色データ17aを利用して算出されるスプライン補間演算式を検証用測色データ17bに基づいて修正するところにある。この修正を行うためには、上記式(16)や式(30)あるいは3次元にてこれらの式に相当する式を取得することができればよい。そこで、図3に示す本実施形態においては、以上のような処理を行うために予めスプライン補間演算式データ17eと目的関数データ17fとを用意しておく。
ここで、スプライン補間演算式データ17eは、修正後の補間演算式であり、1次元であれば式(13)、2次元であれば式(27)に相当する式を示すデータであり、各格子点における独立変数値と従属変数値と2次微分値(クロス2次微分値を含む)および任意の独立変数の代数演算によって補間結果(従属変数値)が得られるような式を示すデータである。但し、このデータにおいては、多項式による修正における最高次の係数(1次元であれば係数k6,2次元であれば係数k16および係数k26)が未定である。
目的関数データ17fは、当該係数を決定するために必要な式を示すデータであり、本実施形態においては、目的関数Eを示す式と係数を算出する式と制約条件を示す式とを含む。例えば、1次元であれば式(15),式(16),式(19)に相当する式を示すデータであり、2次元であれば式(29),式(30),式(31)に相当する式を示すデータである。また、2次元以上の場合に補間演算結果の連続性を保証するための式(33)に相当する式を示すデータを含む。尚、上述の制約条件1は、スプライン補間演算式データ17eの独立変数に対して検証用測色データ17bの格子点位置を代入することによって表現可能である。従って、以上のスプライン補間演算式データ17eと目的関数データ17fとによって上述の最適化を実施可能である。
目的関数算出部20cは、これらのデータを参照して各ブロック毎にスプライン補間演算式における上記A〜Dを最適化する。すなわち、各ブロック毎の係数値を算出する。このために、ブロック設定部20bは、まず測色データ17aに基づいて処理対象となる着目ブロックを設定する。図6に示すように2次元で考えると、このブロックは、上記測色データ17aの仮想CMY階調値による格子点が形成する最小の正方形であり、白丸によって形成される最小の正方形である。すなわち、ブロック設定部20bは、上記測色データ17aを取得し、仮想CMY階調値の各格子点からブロックを形成し、所定の順序における最初のブロックを処理対象の着目ブロックとして設定する(ステップS115)。
目的関数算出部20cは、着目ブロック毎に目的関数Eを最小化して測色データにおける色空間の次元数と同数個の係数kを算出する(ステップS120〜ステップS135)。ステップS120においては、目的関数データ17fを参照して式(15)や式(29)に相当する式にその時点での変数値A’を代入して目的関数Eの値を算出する。この繰り返し処理では変数値A’を更新していくため、ステップS120では繰り返し処理の初期では所定の初期値を変数値A’とするし、2回目以降では所定の最適化アルゴリズムによって得られる値を変数値A’とする。
ステップS120にて目的関数Eの値を算出したら、ステップS122において上記目的関数データ17fを参照して式(16)や式(30)に相当する係数の算出式を取得し、その時点での変数値A’を代入して上記係数kを算出する。続いてステップS125では、目的関数データ17fを参照して式(19)や式(31)に相当する制約条件(制約条件2)を取得し、ステップS122で得られた係数kがこの制約条件を充足するか否か判別する。
同ステップS125にて係数kがこの制約条件を充足すると判別されないときには、ステップS130をスキップしてステップS135の処理を行う。ステップS125にて係数kが上記制約条件を充足すると判別されたときには、ステップS130にて目的関数Eが最適化されたか否か判別する。尚、最適化されたか否か、すなわち、目的関数Eが最小化されたか否かを判別するためには種々の判別が可能である(例えば、ニューメリカルレシピ・イン・シー(日本語版),技術評論社参照,p.282〜p.338))。
ステップS130にて目的関数Eが最適化されたと判別されないときには、ステップS135にて最適化処理部20dが変数値A’を更新する。すなわち、最適化処理部20dは変数値A’を更新して最適化処理を行うモジュールであり、スプライン補間演算式データ17eを参照して上記式(13)や式(27)に相当する式を取得し、検証用測色データ17bを参照して着目ブロック内の検証用測色データの格子点位置を代入して制約条件1を取得し、この制約条件1を満たす範囲内で変数値A’を変更する。尚、本実施形態においては、制約条件1,制約条件2を同時に満たす変数値A’を算出できない場合の措置として上述のように制約条件2を優先することとしている。例えば、所定回数の繰り返し処理によって制約条件1,制約条件2を同時に満たす係数が発見されないときには、制約条件2を満たす係数であってそれまでに得られた最小の目的関数Eとなるように係数kを決定する。
このようにして係数kを決定した場合およびステップS130にて目的関数Eが最適化されたと判別された場合には、その時点における係数kをRAM15に一時記録する(ステップS140)。係数kを記録したら、以上の処理を全ブロックについて実施したか否かを判別し(ステップS145)、総てのブロックについて処理を行ったと判別されるまで処理を繰り返す。すなわち、ステップS145で総てのブロックについて処理を行ったと判別されなければ着目ブロックを未処理のブロックに変更し(ステップS150)、ステップS120以降の処理を繰り返す。尚、以上の処理手順は一例であり、目的関数Eを最小化する修正を実施可能である限りにおいて種々の手順を採用可能である。
さらに、最適化処理部20dは、補間演算結果の連続性を保証するため、上記目的関数データ17fを参照し、係数が満たすべき式(33)に相当する式であって次元数と同数個の式を取得する。そして、線形補間等の補間演算式によって係数が算出済みのブロックの境界に相当する係数を算出し、得られた境界上の係数値と検証用測色データ17bの格子点位置について算出された係数値とを利用し、連立方程式によって上記式(33)に相当する式の係数m0〜m2を算出する(ステップS155)。むろん、ここでは、次元数と同数の関数hについて係数を算出する。以上の処理により、スプライン補間演算式における修正を示す多項式(1次元における式(14)、2次元における式(28))に相当する式の係数が総て算出されたことになり、高精度の補間演算を実施することが可能になる。この多項式を示すデータは最適化多項式データ17gとしてHDD17に記録される(ステップS160)。
高速化スプライン補間部20eとLUT作成部20fとは、ステップS170以降でLUTを作成する。このためにまず、LUT作成部20fがLUTとして登録すべき格子点を仮想CMY空間内で抽出する(ステップS170)。ここでは、予め決められた格子点を抽出することができれば良く、上記図1に示す例のように173個のデータを登録するのであれば、例えば、仮想CMY階調値の値域を16等分し、得られた17個の階調値を任意に組み合わせればよい。尚、本明細書ではこの格子点をLUT格子点と呼ぶ。
当該LUT格子点を仮想CMY空間内で抽出したらその中の一つを選択し(ステップS175)、ステップS180〜S188にて多項式による修正を加味した高速化スプライン補間を実施する。まず、高速化スプライン補間部20eは、高速化スプライン補間演算を実施するために、HDD17を参照して測色データ17aと検証用測色データ17bと2次微分値データ17cとクロス2次微分値データ17dとスプライン補間演算式データ17eと最適化多項式データ17gとを取得する(ステップS180)。これにより、スプライン補間演算式データ17eが示す式に最適化多項式データ17gによる修正を加えた状態で、任意の位置について高速化スプライン補間を実施可能になる。
ステップS180にて各データを取得したら、修正を反映した高速化スプライン補間演算により、処理対象として選択されているLUT格子点に対応する従属変数値(L*a*b*値)を算出する(ステップS182)。この補間演算によれば、LUT格子点の仮想CMY階調値に対応する従属変数(L*a*b*値)を取得することができる。そこで、LUT作成部20fはこれらの対応関係をRAM15に一時記録する(ステップS184)。この対応関係の算出は、上記LUT格子点の総てについて実施される。すなわち、LUT作成部20fは、総てのLUT格子点について処理が終了したか否かを判別し(ステップS186)、総てのLUT格子点について処理が終了したと判別されなければ処理対象を未処理のLUT格子点に変更し(ステップS188)、ステップS180以降の処理を繰り返す。
ステップS186で、総てのLUT格子点について処理が終了したと判別されると、総てのLUT格子点について仮想CMY階調値とL*a*b*値との対応関係が定義されていることになるので、LUT作成部20fは、予め決められた上記分版規則に従って仮想CMY階調値をCMYKlclmデータに変換する。そして、変換後のCMYKlclmデータとL*a*b*値とを対応づけたLUTを作成し、LUT17hとしてHDD17に記録する(ステップS190)。
(2−3)3次元空間への拡張:
上述の例においては、主に2次元空間について説明したが、次元を3次元以上の多次元に拡張することは容易である。従って、上述の例で説明した技術事項を多次元に適用し高精度かつ高速の補間演算を実施することが可能であり、高精度に色変換可能なLUTを作成することができる。ここでは、上記図3に示す測色データ17aの実例である3次元への拡張を説明する。
図8は、3次元空間におけるブロックおよび測色データ17a,検証用測色データ17bを説明する説明図である。すなわち、測色データ17aは、実際には仮想CMY空間の階調値を備えており、当該仮想CMY空間は3次元空間である。同図においても、測色データ17aによる格子点を白丸、検証用測色データ17bによる格子点を黒丸で示している。同図に示すように、仮想CMY空間において、測色データ17aによる格子点は立方体(立方格子)を形成し、検証用測色データ17bによる格子点は当該立方体の中央に位置する。尚、測色データ17aによる格子点のみで形成される最小の立方体(図8にて実線で示す立方体)が3次元におけるブロックに相当する。
この状況において以下の式(34)に示すように3次元の高速化スプライン補間演算式を考え、その式を修正する。
尚、ここでは上記白丸の位置を(i,j,k),(i+1,j,k),(i,j+1,k),(i+1,j+1,k),(i,j,k+1),(i+1,j,k+1),(i,j+1,k+1),(i+1,j+1,k+1)としてある。また、独立変数(x1,x2,x3)における各方向の係数をA1〜D1、A2〜D2、A3〜D3としてある。従って、本発明による修正後は、式(34)内のA1〜D1,A2〜D2,A3〜D3がA'1〜D'1,A'2〜D'2,A'3〜D'3と表現される。
修正は、上記式(14)と同様のものが各独立変数(x1,x2,x3)に対して実施されることになる。目的関数Eは、式(15)と同様の式を独立変数の次元数分加え合わせるなどして形成可能である。係数の算出も式(16)と同様の演算を独立変数の次元数分実施すればよいし、制約条件2に相当する条件も(19)と同様である。むろん、制約条件1に相当する条件は式(34)と検証用測色データ17bとから算出可能である。
最適化を行って係数を算出したら、係数に位置依存性を持たせ、ブロックの境界でこれらの係数を連続にすることで、式(34)による補間演算結果の連続性を保証する。ある独立変数x
bに対して算出された係数k
b6に対しては、この独立変数以外の2つの独立変数に依存するように係数を定義する関数hを定義することができる。例えば、独立変数x
3について算出した係数k
36は、下記式(35)のように関数hを定義する。
尚、ここでは、(A1 2+A1+1)×(A2 2+A2+1)で算出される関数の各項に係数mij(i,jは0〜2の自然数)を乗じて関数hとしている。従って、N次元の場合(A1 2+A1+1)N-1の多項式に係数mを乗じた関数を想定すればよい。式(35)に示す関数の場合、未定の係数mijは9個であり、図8に示すように検証用測色データ17bの格子点位置における係数k36は算出済みであることから、x3軸(X3方向の軸)に垂直な面とブロックの境界との交点上の位置(例えば、図8にて黒矩形で示す位置)での係数値を補間演算で算出すれば、これら9個の係数値から式(35)における係数mijを決定することができる。
むろん、独立変数x1,x2についての係数も同様に算出することができる。以上のように、係数値を算出することができれば、高速化スプライン補間に対して導入した修正の内容が確定するので、任意の位置について高速かつ高精度に補間演算を行うことができる。従って、高精度に色変換可能なLUT17hを作成することができる。
(2−4)作成された色変換テーブルデータに基づく色変換処理:
以上のようにして作成されたLUTは、汎用的なコンピュータにて汎用的に行われている印刷処理にて使用される。図9は、印刷時に当該LUTを使用するコンピュータ構成例を示すブロック図である。コンピュータ110は汎用的なパーソナルコンピュータであり、プリンタドライバ(PRTDRV)210と入力機器ドライバ(DRV)220とディスプレイドライバ(DRV)230とがOS200に組み込まれている。ディスプレイDRV230はディスプレイ180における画像データ等の表示を制御するドライバであり、入力機器DRV220はシリアル通信用I/F190aを介して入力される上記キーボード310やマウス320からのコード信号を受信して所定の入力操作を受け付けるドライバである。
APL250は、カラー画像のレタッチ等を実行可能なアプリケーションプログラムであり、利用者は当該APL250の実行下において上記操作用入力機器を操作して当該カラー画像を印刷装置400にて印刷させることができる。このようなカラー画像の印刷時に本発明によって作成されたLUTが参照される。APL250にて作成される画像を示す画像データ150aはRGBの各色成分を階調表現したドットマトリクス状のデータであり、sRGB規格に準拠したデータであるとともに、HDD150に保存される。
上記PRTDRV210は印刷を実行するために、画像データ取得モジュール210aと色変換モジュール210bとハーフトーン処理モジュール210cと印刷データ生成モジュール210dとを備えている。また、本発明によって作成されたLUT17hとsRGBデータをL*a*b*データに変換するためのLUT150bとはHDD150に保存されている。APL250実行時に利用者が印刷実行指示を行うと、印刷にかかる画像データ150aが画像データ取得モジュール210aに取得され、画像データ取得モジュール210aは上記色変換モジュール210bを起動する。
色変換モジュール210bは、sRGBデータをCMYKlclmデータに変換するモジュールであり、LUT150bを参照し、補間演算によって任意のsRGBデータをL*a*b*データに変換する。さらに、LUT17hを参照し、補間演算によって当該L*a*b*データをCMYKlclmデータに変換する。すなわち、当該色変換モジュール210bは、sRGB表色系における任意の格子点(色成分値)を印刷装置にて使用するCMYKlclm表色系における格子点(色成分値)に変換する。
色変換モジュール210bが色変換を行ってCMYKlclmデータを生成すると、当該CMYKlclmデータは上記ハーフトーン処理モジュール210cに受け渡される。ハーフトーン処理モジュール210cは、各ドット毎のCMYKlclmデータをより低階調のハーフトーンデータに変換する。印刷データ生成モジュール210dはかかるハーフトーンデータを受け取って、印刷装置400で使用される順番に並べ替える並べ替え処理を行う。この並べ替え処理の後、画像の解像度などの所定の情報を付加して印刷データを生成し、USB用I/F190bを介して印刷装置400に出力する。印刷装置400においては当該印刷データに基づいて上記ディスプレイ180に表示された画像を印刷する。
この印刷処理において、色変換は本発明によって作成されたLUTを参照して行われる。このLUTは、上述のようにスプライン補間演算式に修正を加えて最適化を行った補間演算式に基づいて作成されているので、色変換モジュール210bでは非常に高精度に色変換を行うことができる。尚、以上のPRTDRV210の構成はPRTDRV210による非常に汎用的な印刷処理である。従って、本発明にかかる色変換テーブル作成方法にてLUTを作成すれば、従来の印刷処理にて使用されていたLUTを本発明によるLUTに置き換えるだけで多くの印刷装置にてハードウェア構成を全く変えることなく、非常に高画質の印刷を実行可能にすることができる。
尚、上述の構成においてはコンピュータ110によって印刷制御装置を構成しているが、印刷装置に搭載するプログラム実行環境によって本発明にかかる印刷制御処理を実施可能に構成し、印刷装置400に対して直接的に接続されるデジタルカメラ等の画像機器から画像データを取得して印刷制御処理を行ってもよい。むろん、同様の構成においてデジタルカメラにて印刷制御処理を実施してもよいし、他にも分散処理によって本発明にかかる印刷制御処理を実施するなど種々の構成を採用可能である。画像を取り込むスキャナと画像を印刷するプリンタとが一体となったいわゆる複合機において本発明にかかる印刷制御処理を行ってもよい。
(3)他の実施形態:
以上説明したように、本発明においては、スプライン補間演算式に修正を加えて最適化を行った補間演算式によって従来のスプライン補間より高精度に補間演算を実施できるようにしており、このような最適化を実施可能である限り、他にも種々の構成を採用可能である。例えば、処理対象となる着目ブロックの設定順序は特に限定されない。
さらに、本発明においては、測色データ17aや検証用測色データ17bに基づいて所定の制約条件を課しながら最適化を実施することができれば良い。従って、上述の関数Eの関数形は他の関数形を採用し得る。さらに、上記実施形態においては、仮想CMY空間とL*a*b*空間との対応関係を規定したLUTを作成する構成を説明したが、本発明の適用対象は仮想CMY空間や3次元空間に限られない。
すなわち、上述の測色データ17aと検証用測色データ17bとの関係をより多次元に適用することも可能である。例えば、測色データ17aと検証用測色データ17bとにおいてCMYKlclmデータとL*a*b*データとの対応を規定しておき、CMYKlclm空間を直交6次元空間と考えれば、上述の図6や図8に規定した格子点と同様の位置関係を定義することができ、この位置関係に対して適用するスプライン補間に本発明の修正を適用することも可能である。