(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
(第1の実施の形態)
−色変換システムの構成−
図1は、本発明の第1の実施の形態に係る色変換システムの構成を例示する図である。パーソナルコンピュータ(PC)2は、接続インターフェースを介して、デジタルカメラ1、ディスプレイ3、プリンタ4などの外部装置と接続される。PC2は、デジタルカメラ1から、または撮影画像が記録されたメモリカードからRAW画像データを取り込む。
【0011】
デジタルカメラ1により撮影されたRAW画像データは、デジタルカメラ1に依存する色空間(RGB)で記録されている。デジタルカメラ1による撮影画像をディスプレイ3に出力する場合、PC2は、デジタルカメラ1による撮影画像をディスプレイ3に適した色データに変換する。また、デジタルカメラ1による撮影画像をプリンタ4に出力する場合、PC2は、デジタルカメラ1による撮影画像をプリンタ4に適した色データに変換する。
【0012】
−デジタルカメラの構成−
図2は、デジタルカメラ1の構成例を説明するブロック図である。デジタルカメラ1は、撮影光学系10と、撮像素子11と、画像処理部12と、画像記憶部13と、マトリックス記憶部14と、3DLUT記憶部15と、カメラ制御装置16と、接続インターフェース17と、カードインターフェース18と、を備える。カードインターフェース18には、着脱可能な記録媒体であるメモリカード19が装着される。
【0013】
デジタルカメラ1は、接続インターフェース17を介して、PC2(
図1)などの外部装置と接続される。接続インターフェース17は、たとえば、有線接続を行うUSBインターフェースや、無線接続を行う無線LANモジュールを含む。
【0014】
カメラ制御装置16は、CPU、メモリ、およびその他の周辺回路により構成され、メモリが記憶するプログラムを実行することによってデジタルカメラ1の動作を制御する。
【0015】
撮影光学系10は、ズームレンズやフォーカシングレンズを含む複数のレンズ群で構成され、被写体像を撮像素子11の受光面に結像させる。なお、
図2を簡単にするため、撮影光学系10を単レンズとして図示している。
【0016】
撮像素子11は、CMOSイメージセンサなどによって構成される。撮像素子11は、被写体像を光電変換して画像信号を生成する。撮像素子11の受光面には、周知のモザイクカラーフィルターが設けられている。モザイクカラーフィルターは、赤(R)色、青(B)色、および緑(G)色のいずれかの光を通過させる原色フィルタが画素位置に対応してモザイク状の配列(たとえば、ベイヤー配列)で構成された色分解フィルタである。撮像素子11は、このようなカラーフィルターを通して被写体像を撮像することにより、光の3原色ごとのカラー画像信号を出力する。
【0017】
撮像素子11で生成された画像信号は、不図示のA/D変換部でデジタル信号に変換され、RAW画像データとして、または画像処理部12を経てJPEG画像データとして、画像記憶部13に記憶される。RAW画像データとは、入射光の光量と出力信号値との関係が線形の関係となるデジタル画像であり、デモザイク、ホワイトバランス変換やγ変換などが施されていない画像データである。なお、このRAW画像データは、欠陥画素の補正処理が施されたものであってもよい。また、RAW画像データは、デモザイクが施された後のカラー画像であってもよい。
【0018】
マトリックス記憶部14には、RGB値であるRAW画像データを、三刺激値XYZへ変換するための変換マトリックス(RGB→XYZ変換マトリックス)が予め記憶されている。
【0019】
3DLUT記憶部15には、上記RGB→XYZ変換マトリクスにより変換された三刺激値XYZを可視光域内の色を示す三刺激値XYZに補正するためのルックアップテーブル(第1XYZ→第2XYZ変換LUT)が予め記憶されている。なお、本説明では、補正前の三刺激値XYZ(すなわちRGB→XYZ変換マトリクスにより変換された三刺激値XYZ)を第1三刺激値XYZと呼び、補正後の三刺激値XYZ(すなわち第1XYZ→第2XYZ変換LUTにより変換された三刺激値XYZ)を第2三刺激値XYZと呼ぶ。
【0020】
カメラ制御装置16は、画像記憶部13に記憶されたRAW画像データを、カードインターフェース18を介してメモリカード19に記録する。このときカメラ制御装置16は、マトリックス記憶部14に記憶されたRGB→XYZ変換マトリックスと、3DLUT記憶部15に記憶された第1XYZ→第2XYZ変換LUTとを、RAW画像データのメタデータとして、RAW画像データと同一のファイルに記録する。
【0021】
本実施形態において、RGB→XYZ変換マトリックスに加えて第1XYZ→第2XYZ変換LUTを記録する理由は、以下の通りである。高彩度の被写体を撮影したRAW画像データは、RGBいずれかの値が大きく、その他の値は小さくなる。その場合、RGB→XYZ変換マトリックスのパラメータのうちの1つのパラメータが色データの変換に大きく寄与することになる。そのパラメータが負である場合、XYZ値は負の値が想定されていないにもかかわらず、変換結果のXYZ値のいずれかが負の値となり、可視光域の外側になることがある。このような場合、RAW画像データをRGB→XYZ変換マトリックスを用いてXYZ値に変換して、変換したXYZ値を用いて画像処理を行う画像処理プログラム等において、可視光域外のXYZ値をどのように扱うべきか判断が困難になってしまう。また、可視光域外のXYZ値の扱いが各画像処理プログラムによって異なると、一貫して画像データを扱うことができなくなる。
【0022】
そこで、本実施の形態では、RAW画像データおよびRGB→XYZ変換マトリックスと共に、第1の三刺激値XYZを可視光域内の値に補正する第1XYZ→第2XYZ変換LUTを記録することにより、画像処理プログラムにおいて、判断に困ることなくRAW画像データを扱うことができる。
【0023】
−RGB→XYZ変換マトリックス生成処理−
次に、上記RGB→XYZ変換マトリックスの生成処理について説明する。なお、RGB→XYZ変換マトリックスの生成は、一般的にはデジタルカメラ1の製造者によって行われる。そして、生成されたRGB→XYZ変換マトリックスは、デジタルカメラ1の製造工程等においてマトリックス記憶部14に記憶される。
【0024】
まず、複数色から構成されるカラーパッチをデジタルカメラ1で撮像することにより、カラーパッチのRAW画像データ(カラーパッチデータ)を取得する。次に、上記カラーパッチを測色器で測定した測定データ(XYZ値)を取得する。そして、カラーパッチデータ(RGB値)をRGB→XYZ変換マトリックスによって変換したXYZ値と、上記測定データ(XYZ値)との差異が小さくなるようなRGB→XYZ変換マトリックスを最小二乗法などで最適化することにより生成する。
【0025】
なお、撮像素子11の分光感度データと公知の標準被写体分光データベースとを用いてRGB→XYZ変換マトリックスを生成してもよい。この場合、撮像素子11の分光感度データと公知の標準被写体分光データベースとに基づいて、デジタルカメラ1でカラーパッチを撮像したカラーパッチデータ(RGB値)に相当するデータを求める。また、等色関数と公知の標準被写体分光データベースとに基づいて、測色器で測定した測定データ(XYZ値)に相当するデータを求める。そしてこれらのデータから上述と同様にしてRGB→XYZ変換マトリックスを生成することができる。
【0026】
−第1XYZ→第2XYZ変換LUT生成処理−
次に、
図3および
図4を用いて、上記第1XYZ→第2XYZ変換LUTの生成処理について説明する。なお、第1XYZ→第2XYZ変換LUTの生成も、一般的にはデジタルカメラ1の製造者によって行われる。そして、
図3および
図4の処理で生成された第1XYZ→第2XYZ変換LUTは、デジタルカメラ1の製造工程等において3DLUT記憶部15に記憶される。
【0027】
ステップS1において、可視光波長域におけるデジタルカメラ1の応答限界(カメラ色域限界)を、xy色度座標上で算出する。なお、このカメラ色域限界の内部を、カメラ色域と呼ぶ。
【0028】
具体的には、
図5に示すようなデジタルカメラ1の撮像素子11の分光感度データを参照して、可視光波長域で単色光に相当する応答を求める。例えば、可視光波長域の短波長側限界380[nm]に対する撮像素子11の分光感度の値を(R
380,G
380,B
380)とする。これをRGB→XYZマトリックスにより第1三刺激値(X
380,Y
380,Z
380)に変換する。RGB→XYZマトリックスによる変換式を、次式(1)に示す。なお、以下、RGB→XYZマトリックスのパラメータをa1〜a9で示す。
【0030】
さらに、第1三刺激値(X
380,Y
380,Z
380)に対応するxy色度座標(x
380,y
380)を、次式(2)および(3)を用いて算出する。これにより、380[nm]の単色光に対応するデジタルカメラ1の応答をxy色度座標で取得することができる。
【0032】
同様にして、385[nm]、390[nm]、・・・780[nm]の単色光に対応するデジタルカメラ1の応答のxy色度座標をそれぞれ算出する。そして、
図6の実線で示すように、xy色度座標上で、これら算出した各点を結んでできる閉曲線をカメラ色域限界Caとして求める。なお、
図6の点線は、可視光域限界Eyを示す。このようにしてカメラ色域限界Caを取得すると、ステップS2に進む。
【0033】
ステップS2において、第1XYZ→第2XYZ変換LUTの入力レンジを算出する。本実施形態において、第1XYZ→第2XYZ変換LUTの入力レンジは、RGB→XYZ変換マトリックスの出力レンジと合致させるため、ここではRGB→XYZ変換マトリックスの出力レンジを求める。
【0034】
撮像素子11から出力されるRGB値のデータレンジは、AD変換のbit数が12bitである場合、RGBそれぞれ0〜4095となる。まず、このデータレンジが0〜1.0となるように正規化する。
【0035】
そして、入力するRGB値のデータレンジを0〜1.0とした場合において、RGB→XYZ変換マトリックスによる変換後のXYZ値(第1の三刺激値)のデータレンジを求める。第1の三刺激値は、上記式(1)で算出されるため、X=a1・R+a2・G+a3・Bである。したがって、例えば、a1>0、a2<0、a3<0である場合、Xのとり得る最大値はa1であり、最小値は(a2+a3)である。同様にして、Y、Zに対しても最大値、最小値を取得する。この結果、RGB→XYZ変換マトリックスによる変換後のXYZ(第1三刺激値)のデータレンジを求めることができる。これを、第1XYZ→第2XYZ変換LUTの入力レンジとして設定する。その後、ステップS3に進む。
【0036】
ステップS3において、第1XYZ→第2XYZ変換LUTの入力値を生成する。入力値は、第1三刺激値XYZ各々のデータレンジ(X
min〜X
max、Y
min〜Y
max、Z
min〜Z
max)を等間隔に区切った格子点とする。例えば、XYZそれぞれ32段階に区切ると、(X,Y,Z)=(X[0],Y[0],Z[0])、(X[0],Y[0],Z[1])、・・・(X[0],Y[0],Z[31])、(X[0],Y[1],Z[0])、(X[0],Y[1],Z[1])、・・・(X[0],Y[1],Z[31])、・・・(X[31],Y[31],Z[0])、(X[31],Y[31],Z[1])、・・・(X[31],Y[31],Z[31])という複数の入力値が生成される。なお、(X[0],Y[0],Z[0])=(X
min,Y
min,Z
min)であり、(X[31],Y[31],Z[31])=(X
max、Y
max、Z
max)である。このようにして入力値を生成すると、ステップS4へ進む。
【0037】
ステップS4において、ステップS5以降で行うループ処理のカウンタ(i,j,k)を、初期値(i=j=k=0)にセットして、ステップS5に進む。
【0038】
ステップS5において、次式(4)により、入力値X[i],Y[j],Z[k]を、RGB→XYZマトリックスの逆変換となるマトリックスを用いてRGB値に変換し、ステップS6に進む。
【0040】
ステップS6において、ステップS5の変換結果のRGB値が0〜1.0の範囲にあるか否か、すなわちRGB値として正当な値か否かを判定する。これらRGB値の全てが0〜1.0の範囲にある場合は、ステップS6を肯定判定してステップS7に進む。一方、これらRGB値のうちいずれかひとつでも、データレンジ0〜1.0の範囲にない場合は、ステップS6を否定判定してステップS8に進む。
【0041】
ステップS8に進む場合、入力値X[i],Y[j],Z[k]を不正データとみなす。ステップS2において求めた第1XYZ→第2XYZ変換LUTの入力レンジは、RGBそれぞれのデータレンジとして算出されたものであり、XYZの組み合わせとして算出されたものではない。そのため、XYZの組み合わせによっては、RGB値としてありえない値となっていることが考えられる。したがって、ステップS8において、不正なデータとみなした入力値X[i],Y[j],Z[k]をLUTの入力値から除外し、ステップS17(
図4)に進む。
【0042】
ステップS7において、入力値X[i],Y[j],Z[k]を、上記式(2)および(3)により、xy色度座標上の点P(x,y)に変換して、ステップS9に進む。
【0043】
ステップS9において、上記ステップS7で求めた点Pが、ステップS1で求めたカメラ色域(カメラ色域限界Caの内部)にあるか否かを判定する。点Pがカメラ色域外である場合は、ステップS10に進む。一方、点Pがカメラ色域内である場合は、ステップS10をスキップして、ステップS11に進む。
【0044】
ステップS10において、
図7に示すように、点Pから白色点Wに向かう線Sが最初にカメラ色域限界Caと交差する点を新たな点Pとして設定し、ステップS11へ進む。なお、白色点とは、xy色度座標上において白色光に対応する点である。
【0045】
ステップS11において、
図8に示すように、白色点Wを端点とし、点Pを通る半直線Lを求めて、ステップS12(
図4)へ進む。
【0046】
ステップS12において、半直線Lとカメラ色域限界Caとの交点Pcを求めて、ステップS13へ進む。
【0047】
ステップS13において、半直線Lと可視光域限界Eyとの交点Pvを求めて、ステップS14へ進む。
【0048】
ステップS14において、白色点Wと交点Pcとの間の距離WPcが白色点Wと交点Pvとの間の距離WPv以上(WPc≧WPv)であるか否かを判定する。WPc≧WPvである場合は、ステップS15へ進む。WPc<WPvである場合は、点Pが必ず可視光域内であるため、出力値(第2の三刺激値)に対応する点P’=点Pとして、ステップS15をスキップし(すなわち色度の圧縮変換を行わず)、ステップS16へ進む。
【0049】
ステップS15において、点Pにおける色度の圧縮変換を行う。具体的には、まず、白色点Wと変換後の点P’との距離WP’を、白色点Wと点Pとの距離WPを用いて、
図9にグラフで示す変換式WP’=f(WP)により算出する。この変換式は、距離WPが長い場合(特に点Pが可視光域外にある場合)はWP’<WPとし、距離WPが短い場合はWP’=WPとするものである。なお、
図9に示す変換式では、点Pが可視光域限界Ey上に位置する(すなわちWP=WPvとなる)手前からWP’<WPとして色度を段階的に圧縮している。
【0050】
そして、
図10に示すように、半直線L上で白色点Wとの距離がWP’となる点P’を求める。この結果、WP’<WPである場合は、点Pの色度が圧縮変換された点P’が求まる。すなわち、点Pが可視光域外である場合に、可視光域内の点P’に変換できる。なお、半直線Lに沿って変換することで、色相を極力変化させずに色度を圧縮変換できる。また、WP’=WPである場合は、点P=点P’となる。このようにして点P’を求めると、ステップS16に進む。
【0051】
ステップS16において、ステップS15で変換した点P’、またはステップS15をスキップした場合はステップS14における点P’を、色の見えが意図された値に対応する点P”に変換する。色の見えが意図された値とは、例えば、実際の見た目により近い色や、ユーザの好みの色に対応する値である。実際の見た目により近い色に変換する場合には、点P’が示す色と実際の被写体の見た目の色とを比較し、
図11に示すように、点P’が示す色よりも実際の被写体の見た目に近い色に対応する点P”を求める。すなわち、点P’を、点P’が示す色よりも被写体の自然の色に近くなる点P”に変換する。その後、ステップS17へ進む。
【0052】
ステップS17において、ステップS16で変換した点P”(x”、y”)の値を、次式(5)、(6)および(7)によりXYZ値に変換する。
【0054】
この結果、入力値(第1の三刺激値)X[i],Y[j],Z[k]に対応する出力値(第2の三刺激値)X’[i],Y’[j],Z’[k]を取得することができる。その後、ステップS18に進む。
【0055】
ステップS18において、ループ処理のカウンタ(i,j,k)が終了値(i=j=k=31)か否かを判定する。終了値である場合とは、ステップS8(
図3)で除外されたものを除き、ステップS3(
図3)で生成した全ての入力値に対応する出力値が取得された場合である。この場合、ステップS18を肯定判定してステップS19へ進む。終了値でない場合は、ステップS18を否定判定してステップS20へ進む。
【0056】
ステップS20において、ループ処理のカウンタ(i,j,k)をインクリメントして、ステップS5(
図3)へ戻る。
【0057】
ステップS19において、各入力値とこれに対応する出力値のセット(入出力データセット)を第1XYZ→第2XYZ変換LUTとして、デジタルカメラ1の3DLUT記憶部15に記憶させ、
図3および
図4の処理を終了する。なお、この入出力データセットには、ステップS8(
図3)で除外されたものは除かれる。
【0058】
このようにして、第1の三刺激値XYZが可視光域外の色を示す場合に、可視光域内の色を示す第2の三刺激値XYZに変換し、且つ第1の三刺激値XYZを、色の見えが意図された第2の三刺激値へ変換するための第1XYZ→第2XYZ変換LUTが生成される。
【0059】
−PCの構成−
次に、PC2(
図1)の構成例を、
図12を用いて説明する。PC2は、PC制御装置20と、接続インターフェース21と、ハードディスクなどの記録媒体22と、を備える。PC2は、接続インターフェース21を介して、デジタルカメラ1、ディスプレイ3、プリンタ4などの外部装置と接続される。接続インターフェース21は、たとえば、有線接続を行うUSBインターフェースや、無線接続を行う無線LANモジュールを含む。PC制御装置20は、CPU、メモリ、およびその他の周辺回路により構成され、メモリが記憶するプログラムを実行することによってPC2の動作を制御する。
【0060】
PC制御装置20は、接続インターフェース21を介してデジタルカメラ1に装着されたメモリカード17(
図2)から、デジタルカメラ1による撮影画像を取り込む。なお、PC制御装置20は、デジタルカメラ1による撮影画像が記録されたメモリカードがPC2に装着されている場合には、不図示のカードインターフェースを介してデジタルカメラ1による撮影画像を取り込んでもよい。
【0061】
上述したようにデジタルカメラ1による撮影画像は、RAW形式の画像ファイルとしても記録されており、RAW画像データのメタデータとしてRGB→XYZ変換マトリックスと第1XYZ→第2XYZ変換LUTとが記録されている。
【0062】
−色変換処理−
ここで、RGB値であるRAW画像データを、各画像出力機器(ディスプレイ3、プリンタ4など)に適した色空間の画像データに変換する色変換処理について説明する。この色変換処理は、PC制御装置20が不図示のメモリに記憶されたプログラムを実行することによって行う。
【0063】
以下、プリンタ4に適した色空間CMYKの画像データに変換する処理について説明する。まず、PC制御装置20は、デジタルカメラ1による撮影画像の画像ファイルを取得して、RAW画像データと、RGB→XYZ変換マトリックスと、第1XYZ→第2XYZ変換LUTとを取得する。
【0064】
次に、PC制御装置20は、RGB値であるRAW画像データを、RGB→XYZ変換マトリックスを用いて第1の三刺激値XYZに変換する。その後、PC制御装置20は、第1の三刺激値XYZに変換された画像データを、第1XYZ→第2XYZ変換LUTを用いて第2の三刺激値XYZに変換する。これにより、第1の三刺激値XYZを可視光域内の色を示す第2の三刺激値XYZに補正することができる。
【0065】
次にPC制御装置20は、第2の三刺激値XYZに変換されたデータを、公知の変換式を用いてL
*a
*b
*値に変換する。プリンタ4のカラープロファイルには、一例として、プリンタ4に依存しない(デバイスインディペンデントな)色空間L
*a
*b
*と、プリンタ4に依存する(デバイスディペンデントな)色空間CMYKとの関係が記述されているとする。
【0066】
XYZ値からL
*a
*b
*値への変換の場合、公知の変換式には累乗の計算が伴うため、XYZ値が負であると変換を行うことができず、エラーとなってしまう。しかしながら本実施形態では、第1XYZ→第2XYZ変換LUTを用いて可視光域内の色を示す値である第2の三刺激値XYZに変換するので、第2の三刺激値XYZが必ず正の値となり、L
*a
*b
*値への変換を行うことができる。
【0067】
そしてPC制御装置20は、L
*a
*b
*値に変換したデータを、上記カラープロファイルを用いてCMYK値に変換する。このようにして、PC制御装置20は、RGB値のRAW画像データを、プリンタ4に適したCMYK値のデータに変換する。
【0068】
次に、ディスプレイ3に適した色空間RGBの画像データに変換する処理について説明する。PC制御装置20は、デジタルカメラ1依存のRGB値であるRAW画像データを、RGB→XYZ変換マトリックスを用いて第1の三刺激値XYZに変換する。そしてPC制御装置20は、色空間XYZとディスプレイ3に依存する色空間RGBとの関係を記述した、ディスプレイ3のカラープロファイルを用いて、第1の三刺激値XYZをディスプレイ3に依存するRGB値に変換する。なお、色空間XYZからディスプレイ3に依存する色空間RGBへの変換は、累乗の計算を伴わないとする。
【0069】
このようにPC制御装置20は、RAW画像データをディスプレイ3に適した色データに変換する場合には、第1XYZ→第2XYZ変換LUTを用いず、RGB→XYZ変換マトリックスのみを用いて変換を行う。これは、変換に累乗の計算を伴わないため、XYZ値が負の値であっても変換を行うことができるためである。また、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTの双方を用いた変換処理よりも、RGB→XYZ変換マトリックスのみを用いた変換処理の方が高速である。そこで、PC制御装置20は、RAW画像データをディスプレイ3に適した色データに変換する場合には、RGB→XYZ変換マトリックスのみを用いた変換処理を行うことで、変換処理を高速に行うことができる。
【0070】
以上説明した第1の実施の形態によれば、次の作用効果が得られる。
(1)デジタルカメラ1は、被写体像を撮像する撮像素子11と、撮像素子11により撮像されたRAW画像データを第1の三刺激値XYZに変換するためのRGB→XYZ変換マトリックスを記憶するマトリックス記憶部14と、RGB→XYZ変換マトリックスにより変換される第1の三刺激値XYZを補正して第2の三刺激値XYZとするための第1XYZ→第2XYZ変換LUTを記憶する3DLUT記憶部15と、撮像素子11により撮像されたRAW画像データとRGB→XYZ変換マトリックスと第1XYZ→第2XYZ変換LUTとを対応づけてメモリカード19に記録するカメラ制御装置16と、を備える。これにより、RAW画像データの色データを変換する場合に、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを用いて適切に色データを変換できる。
【0071】
(2)上記(1)のデジタルカメラ1において、第1XYZ→第2XYZ変換LUTは、RGB→XYZ変換マトリックスにより変換される第1の三刺激値XYZが可視光域外の色を示す場合に、可視光域内の色を示す第2の三刺激値XYZに変換するためのルックアップテーブルであるように構成した。これにより、第1XYZ→第2XYZ変換LUTを用いて、第1の三刺激値XYZを後の色変換処理(出力機器に依存する色データへの変換処理、特にL
*a
*b
*値への変換)に適した値に変換することができる。
【0072】
(3)上記(1)または(2)のデジタルカメラ1において、第1XYZ→第2XYZ変換LUTは、RGB→XYZ変換マトリックスにより変換される第1の三刺激値XYZを、色の見えが意図された値である第2の三刺激値XYZに変換するためのルックアップテーブルであるように構成した。これにより、第1XYZ→第2XYZ変換LUTを用いた色変換処理において、例えばカメラの製造者が意図したように被写体の色を再現することができる。
【0073】
(4)上記(1)〜(3)のデジタルカメラ1において、第1XYZ→第2XYZ変換LUTの入力レンジは、RGB→XYZマトリックスの出力レンジと合致するように構成した。これにより、RGB→XYZマトリックスの出力値(第1の三刺激値XYZ)を過不足なく第1XYZ→第2XYZ変換LUTを用いて変換できる。
【0074】
(5)PC2は、上記(1)のデジタルカメラ1においてメモリカード19に記録されたRAW画像データとRGB→XYZマトリックスと第1XYZ→第2XYZ変換LUTとを入力する入力ステップと、RAW画像データをRGB→XYZマトリックスを用いて第1の三刺激値XYZに変換する第1の変換ステップと、第1の変換ステップにより変換された第1の三刺激値XYZを第1XYZ→第2XYZ変換LUTを用いて第2の三刺激値XYZに変換する第2の変換ステップとをPC制御装置20に実行させる色変換プログラムをメモリに格納した。これにより、第2の三刺激値を用いて、後の色変換処理(出力機器に依存する色データへの変換処理、特にL
*a
*b
*値への変換)を円滑に行うことができる。
【0075】
(6)上記(5)の色変換プログラムにおいて、RAW画像データを出力機器に依存する色空間の画像データに変換する際、当該変換が、L
*a
*b
*色空間と出力機器に依存する色空間との関係が記述された出力機器プロファイルを使用する変換(プリンタ4に依存する色データへの変換)である場合には、第1の変換ステップおよび第2の変換ステップを実行し、当該変換が、上記出力機器プロファイルを使用しない変換(ディスプレイ3に依存する色データへの変換)である場合には、第1の変換ステップのみを実行し第2の変換ステップを実行しないようにした。これにより、L
*a
*b
*色空間への変換を行わない場合に高速に処理を行うことができる。
【0076】
(第2の実施の形態)
第1の実施の形態では、デジタルカメラ1の製造工程においてRGB→XYZ変換マトリックスと第1XYZ→第2XYZ変換LUTとを生成する場合について説明した。第2の実施の形態では、PC2(
図11)がRGB→XYZ変換マトリックスと第1XYZ→第2XYZ変換LUTとを生成する場合について説明する。なお、第2の実施の形態において、第1の実施の形態と同様の箇所については説明を省略する。
【0077】
PC制御装置20は、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを生成するカラープロファイル生成処理を実行する。なお、このカラープロファイル生成処理を実行するコンピュータプログラムは、例えば、PC制御装置20内のメモリ(不図示)に記憶されているとする。
【0078】
カラープロファイル生成処理において、予め測定されたデジタルカメラ1の分光感度データを不図示の入力装置を介して作業者が入力することにより、PC制御装置20は、デジタルカメラ1の分光感度データを取得する。また、PC制御装置20は、外部装置(例えば他のPC)から、接続インターフェース21を介して、公知の標準被写体分光データベースを取得する。そしてPC制御装置20は、上述した第1の実施の形態と同様に、撮像素子11の分光感度データおよび公知の標準被写体分光データベースに基づいて、RGB→XYZ変換マトリックスを生成する。
【0079】
次にPC制御装置20は、外部装置から取得したデジタルカメラ1の分光感度データとPC2内で生成したRGB→XYZ変換マトリックスとを用いて、上述した
図3および
図4の処理を実行することにより、第1XYZ→第2XYZ変換LUTを生成する。
【0080】
PC制御装置20は、このようにして生成したRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを、デジタルカメラ1のカラープロファイルとして、記録媒体22に記録する。
【0081】
次に、第2の実施の形態における色変換処理について説明する。以下、プリンタ4に適した色空間CMYKの画像データに変換する処理について説明する。まず、PC制御装置20は、デジタルカメラ1により撮影されたRAW画像データを取得する。また、PC制御装置20は、デジタルカメラ1に対応するRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを記録媒体22から読み出す。
【0082】
そしてPC制御装置20は、RGB→XYZ変換マトリックスを用いてRAW画像データを第1の三刺激値XYZに変換し、第1XYZ→第2XYZ変換LUTを用いて第1の三刺激値XYZを第2の三刺激値XYZに変換する。その後、PC制御装置20は、上述した第1の実施の形態と同様にして、第2の三刺激値XYZをL
*a
*b
*値に変換し、L
*a
*b
*値をCMYK値に変換する。
【0083】
次に、ディスプレイ3に適した色空間RGBの画像データに変換する処理について説明する。まず、PC制御装置20は、デジタルカメラ1により撮影されたRAW画像データを取得する。また、PC制御装置20は、デジタルカメラ1に対応するRGB→XYZ変換マトリックスを記録媒体22から読み出す。
【0084】
そしてPC制御装置20は、RGB→XYZ変換マトリックスを用いて、デジタルカメラ1により撮影されたRAW画像データを、第1の三刺激値XYZに変換する。その後、PC制御装置20は、上述した第1の実施の形態と同様にして、第1の三刺激値XYZをディスプレイ3に依存するRGB値に変換する。
【0085】
なお、PC制御装置20は、デジタルカメラ1による撮影画像だけでなく、デジタルカメラ1の分光感度の特性と同特性の分光感度を有するデジタルカメラによる撮影画像についても、デジタルカメラ1に対応するRGB→XYZ変換マトリックスや第1XYZ→第2XYZ変換LUTを用いて色データの変換を行うようにしてもよい。
【0086】
さらに、PC制御装置20は、デジタルカメラ1から取得したRAW画像データに、PC2内で生成したRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTをメタデータとして付加した画像ファイルを生成して、記録媒体22に記録するようにしてもよい。
【0087】
以上説明した第2の実施の形態によれば、次の作用効果が得られる。
(1)PC2は、デジタルカメラ1の分光感度データを入力するステップと、分光感度データに基づいて、デジタルカメラ1により撮像されたRAW画像データを、第1の三刺激値XYZに変換するためのRGB→XYZ変換マトリックスを生成するステップと、分光感度データとRGB→XYZ変換マトリックスとに基づいて、RGB→XYZ変換マトリックスにより変換される第1の三刺激値XYZを補正して第2の三刺激値XYZとするための第1XYZ→第2XYZ変換LUTを生成するステップと、をPC制御装置20に実行させる色変換情報生成プログラムをメモリに格納した。これにより、RAW画像データの色データを変換する場合に、上記生成したRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを用いて適切に色データを変換できる。
【0088】
(2)PC2は、上記(1)の色変換情報生成プログラムにおいて生成されたRGB→XYZ変換マトリックスと第1XYZ→第2XYZ変換LUTとを入力するデータ入力ステップと、デジタルカメラ1、またはデジタルカメラ1の分光感度の特性と同特性とみなされる分光感度を有するデジタルカメラで撮影されたRAW画像データを入力する画像入力ステップと、RAW画像データを、RGB→XYZ変換マトリックスを用いて第1の三刺激値XYZに変換する第1の変換ステップと、第1の変換ステップにより変換された第1の三刺激値XYZを、第1XYZ→第2XYZ変換LUTを用いて第2の三刺激値XYZに変換する第2の変換ステップと、をPC制御装置20に実行させる色変換プログラムをメモリに格納した。これにより、第2の三刺激値XYZを用いて、後の色変換処理(出力機器に依存する色データへの変換処理、特にL
*a
*b
*値への変換)を円滑に行うことができる。
【0089】
(3)PC2は、デジタルカメラ1で撮影されたRAW画像データを入力するステップと、RAW画像データを、第1の三刺激値XYZに変換するためのRGB→XYZ変換マトリックスを入力するステップと、RGB→XYZ変換マトリックスにより変換される第1の三刺激値XYZを補正して第2の三刺激値XYZとするための第1XYZ→第2XYZ変換LUTを入力するステップと、RAW画像データと、RGB→XYZ変換マトリックスと、第1XYZ→第2XYZ変換LUTとを対応づけて記録媒体に記録する記録ステップと、をPC制御装置20に実行させる記録制御プログラムをメモリに格納した。これにより、RAW画像データの色データを変換する場合に、例えば、ユーザに操作部材を介して当該RAW画像データに対応するRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを指定させる操作などを行わせることなく、RAW画像データに対応付けられたRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを取得することができる。
【0090】
(変形例1)
上述した第1の実施の形態では、L
*a
*b
*色空間とプリンタ4に依存する色空間CMYKとの関係が記述されたプリンタプロファイルを用いてRAW画像データの色データを変換する際に、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを用いた変換を行う場合について説明した。しかしながら、L
*u
*v
*色空間と出力機器に依存する色空間の関係が記述された出力機器プロファイルを用いてRAW画像データの色データを変換する際にも、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを用いた変換を行うようにしてもよい。
【0091】
(変形例2)
上述した第2の実施の形態では、PC制御装置20が、デジタルカメラ1の分光感度データに基づいてRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを生成する場合について説明した。しかしながら、PC制御装置20が、複数色から構成されるカラーパッチをデジタルカメラ1で撮像して得られたカラーパッチデータと、当該カラーパッチを測色器で測定した測定データとに基づいて、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを生成するようにしてもよい。
【0092】
変形例2のPC制御装置20は、メモリに格納されたプログラムにしたがって、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを生成する。具体的には、PC制御装置20は、デジタルカメラ1から上記カラーパッチデータを入力する。また、PC制御装置20は、測色器(不図示)から上記測定データを入力する。そしてPC制御装置20は、上述した第1の実施の形態と同様に、上記カラーパッチデータおよび上記測定データに基づいて、RGB→XYZ変換マトリックスを生成する。
【0093】
次にPC制御装置20は、上記カラーパッチデータおよび上記測定データに基づいて、デジタルカメラ1の分光感度を推定する。この推定は、数多くのカラーパッチや高彩度の色を有するカラーパッチを用いることにより行う。そして、PC制御装置20は、推定したデジタルカメラ1の分光感度とRGB→XYZ変換マトリックスとを用いて、第1XYZ→第2XYZ変換LUTを生成する。
【0094】
変形例2によれば、デジタルカメラ1の分光感度データを取得できない場合であっても、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを生成することができる。
【0095】
(変形例3)
上述した第2の実施の形態では、PC制御装置20が、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを生成する場合について説明した。しかしながら、デジタルカメラ1のRAW画像データにRGB→XYZ変換マトリックスが予め付加されている場合などには、第1XYZ→第2XYZ変換LUTのみを生成するようにしてもよい。
【0096】
そして変形例3のPC制御装置20は、予め付加されたRGB→XYZ変換マトリックスと、PC2で生成した第1XYZ→第2XYZ変換LUTを用いて、RAW画像データの色データを変換するようにしてもよい。また、RGB→XYZ変換マトリックスが予め付加されたRAW画像データに、さらにPC2で生成した第1XYZ→第2XYZ変換LUTを付加するようにしてもよい。
【0097】
(変形例4)
上述した第1および第2の実施の形態では、第1XYZ→第2XYZ変換LUTが、第1の三刺激値XYZが可視光域外の色を示す場合に、可視光域内の色を示す第2の三刺激値XYZに変換するためのルックアップテーブルである場合について説明した。しかしながら、第1XYZ→第2XYZ変換LUTが、第1の三刺激値XYZの少なくとも一つが負の値である場合に、当該負の値を正の値とした第2の三刺激値XYZに変換するためのルックアップテーブルであるようにしてもよい。
【0098】
変形例4の第1XYZ→第2XYZ変換LUTを生成する方法について説明する。まず、上述した第1の実施の形態のステップS2およびS3と同様にして、第1XYZ→第2XYZ変換LUTの入力値を生成する。そして、第1XYZ→第2XYZ変換LUTの入力値(XYZ)の中で負の値を示す入力値を「0」に置き換えることにより、入力値に対応する出力値を生成する。なお、正の値を示す入力値は、値を変えずに出力値とする。
【0099】
変形例4の第1XYZ→第2XYZ変換LUTの生成処理は、第1および第2の実施の形態と比較して簡便に行うことができる。また、デジタルカメラ1の分光感度データを取得できない場合であっても、RGB→XYZ変換マトリックスに基づいて第1XYZ→第2XYZ変換LUTを生成できる。
【0100】
さらに、変形例4の第1XYZ→第2XYZ変換LUTを用いて変換を行うことにより、その後、L
*a
*b
*値へ変換する場合に累乗の計算でエラーとなることを避けることができる。なお、変形例4においても上述した第1の実施の形態と同様に、出力機器に依存する色データに変換する際に、L
*a
*b
*色空間への変換を伴う場合には、RGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを用いた変換を行い、L
*a
*b
*色空間への変換を伴わない場合には、RGB→XYZ変換マトリックスのみを用いた変換を行うようにしてもよい。
【0101】
(変形例5)
上述した第1および第2の実施の形態では、RAW画像データをディスプレイ3に適した色データに変換する場合には、第1XYZ→第2XYZ変換LUTを用いず、RGB→XYZ変換マトリックスのみを用いて変換を行う場合について説明した。しかしながら、RAW画像データをディスプレイ3に適した色データに変換する場合にも、第1XYZ→第2XYZ変換LUTを選択的に用いるようにしてもよい。
【0102】
変形例5のPC制御装置20は、高精細な変換を行う高精細処理モードと、高速に処理を行う高速処理モードのいずれかで色データの変換処理を行う。PC制御装置20は、ユーザにより不図示の操作部材を介して高精細処理モードに対応する操作信号が入力されると、RAW画像データをRGB→XYZ変換マトリックスを用いて第1の三刺激値XYZに変換し、当該第1の三刺激値XYZを第1XYZ→第2XYZ変換LUTを用いて第2の三刺激値XYZに変換する。そしてPC制御装置20は、ディスプレイ3のカラープロファイルを用いて、第2の三刺激値XYZをディスプレイ3に依存するRGB値に変換する。
【0103】
一方、PC制御装置20は、ユーザにより不図示の操作部材を介して高速処理モードに対応する操作信号が入力されると、RAW画像データをRGB→XYZ変換マトリックスを用いて第1の三刺激値XYZに変換する。そしてPC制御装置20は、ディスプレイ3のカラープロファイルを用いて、第1の三刺激値XYZをディスプレイ3に依存するRGB値に変換する。
【0104】
このようにPC制御装置20は、高精細処理モードの場合にはRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTの両方を用いて変換を行い、高速処理モードの場合にはRGB→XYZ変換マトリックスのみを用いて変換を行う。こうすることにより、高精細処理モードの場合には色の見えが意図された変換を行うことができ、高速処理モードの場合には、高速で変換を行うことができる。したがって、ユーザの要望を反映させた画像処理を行うことができる。
【0105】
(変形例6)
上述した第1および第2の実施の形態では、3色(RGB)のRAW画像データの色データをRGB→XYZ変換マトリックスおよび第1XYZ→第2XYZ変換LUTを用いて変換する場合について述べた。しかしながら、4色以上(例えば6色など)のRAW画像データの色データを、当該RAW画像データを第1の三刺激値XYZに変換するためのマトリックスと、第1の三刺激値XYZを第2の三刺激値XYZに変換するためのルックアップテーブルを用いて変換するようにしてもよい。
【0106】
仮に、上記マトリックスおよび上記ルックアップテーブルをマージしたルックアップテーブル、すなわちRAW画像データを第2の三刺激値XYZに変換するためのルックアップテーブルを用いる場合、色データの変換処理は、一度の処理ステップで行うことができる。しかしながら、例えば6色のRAW画像データを第2の三刺激値XYZに変換するためのルックアップテーブルを用いる場合、ルックアップテーブルのデータ量が膨大となってしまい、ルックアップテーブルを用いた変換における補間処理も複雑になってしまう。入力値の格子点数を各色32個とすると、データ数は、3×32
6=3221225472である。
【0107】
これに対して本発明のように、RAW画像データを第1の三刺激値XYZに変換するためのマトリックスと、第1の三刺激値XYZを第2の三刺激値XYZに変換するためのルックアップテーブルを用いる場合、マトリックスのデータ数は、6×3=18であり、ルックアップテーブルのデータ数は、3×32
3=98304である。したがって、本発明によれば、RAW画像データを第2の三刺激値XYZに変換するためのルックアップテーブルを用いる場合と比較して、少ないデータ量で色データを変換することができる。
【0108】
(変形例7)
上述した第1および第2の実施の形態では、第1XYZ→第2XYZ変換LUTが、第1の三刺激値XYZが可視光域外の色を示す場合に、可視光域内の色を示す第2の三刺激値XYZに変換し、且つ第1の三刺激値XYZを、色の見えが意図された第2の三刺激値へ変換するためのルックアップテーブルである場合について説明した。
【0109】
しかしながら、第1XYZ→第2XYZ変換LUTが、第1の三刺激値XYZが可視光域外の色を示す場合に可視光域内の色を示す第2の三刺激値XYZに変換するのみのルックアップテーブルであってもよい。また、第1XYZ→第2XYZ変換LUTが、第1の三刺激値XYZを、色の見えが意図された第2の三刺激値へ変換するのみのルックアップテーブルであってもよい。
【0110】
(変形例8)
上述した第1および第2の実施の形態では、色の見えが意図された値に変換するためのLUTを、XYZ値からXYZ値への変換LUT(第1XYZ→第2XYZ変換LUT)として説明した。しかしながら、変換LUTの出力は、第2の三刺激値XYZから定められた方法で変換されるL
*a
*b
*値やL
*u
*v
*値であってもよい。
【0111】
(変形例9)
上述した第1および第2の実施の形態では、PC制御装置20が各処理を実行するためのプログラムがPC制御装置20のメモリに格納されている場合について説明した。しかしながら、PC2に対するプログラムのローディングは、
図13に示すように、プログラムを格納したCD−ROMなどの記憶媒体25をPC2にセットして行ってもよいし、ネットワークなどの通信回線26を経由する方法でPC2へローディングしてもよい。通信回線26を経由する場合は、通信回線26に接続されたサーバー(コンピュータ)27のハードディスク装置28などにプログラムを格納しておく。プログラムは、記憶媒体25や通信回線26を介する提供など、種々の形態のコンピュータプログラム製品として供給することができる。
【0112】
以上の説明はあくまで一例であり、上記の実施形態の構成に何ら限定されるものではない。また、上記実施形態に各変形例の構成を適宜組み合わせてもかまわない。