Main Content

imcolordiff

CIE94 標準または CIE2000 標準に基づく色差

R2020b 以降

説明

dE = imcolordiff(I1,I2) は、CIE94 標準を使用して 2 つの RGB イメージまたはカラーマップの色差を計算します。

dE = imcolordiff(I1,I2,Name=Value) では、1 つ以上の名前と値の引数を使用して、入力色空間や CIE 標準など追加の計算の特性を指定します。

すべて折りたたむ

カラー イメージをワークスペースに読み取ります。

I1 = imread('peppers.png');
imshow(I1)

Figure contains an axes object. The axes object contains an object of type image.

イメージの局所的な色のコントラストを変更します。

I2 = localcontrast(I1);
imshow(I2)

Figure contains an axes object. The axes object contains an object of type image.

既定の色標準 CIE94 を使用してイメージの色差を計算します。

dE = imcolordiff(I1,I2);

色差をイメージとして表示します。表示範囲をスケーリングして、dE のピクセル値の範囲全体を使用します。

imshow(dE,[])

Figure contains an axes object. The axes object contains an object of type image.

ヘマトキシリンとエオシン (H&E) で染色された組織のイメージを読み取って表示します。

he = imread('hestain.png');
imshow(he)

Figure contains an axes object. The axes object contains an object of type image.

イメージを L*a*b* 色空間に変換します。

lab = rgb2lab(he);

イメージのコピーを作成し、a* チャネルの信号を増やします。イメージ内の赤の色合いは彩度が高くなりますが、イメージ全体の明度と青の色合いは変わりません。

lab2 = lab;
scaleFactor = 1.1;
lab2(:,:,2) = scaleFactor*lab(:,:,2);

L*a*b* 色空間における元のイメージと強調されたイメージの色差を計算します。

dE = imcolordiff(lab,lab2,'isInputLab',true);

色差をイメージとして表示します。表示範囲をスケーリングして、dE のピクセル値の範囲に合わせます。明るい領域は最も色差が大きいことを示し、組織のピンクの領域に対応しています。

imshow(dE,[])

Figure contains an axes object. The axes object contains an object of type image.

2 つの RGB カラー値を指定します。

pureRed = uint8([255,0,0]);
darkRed = uint8([255,10,50]);

CIEDE2000 標準を使用して色の色差を計算します。

dE = imcolordiff(pureRed,darkRed,"Standard","CIEDE2000")
dE = single
    7.4449

布地の RGB イメージを読み取って表示します。

fabric = imread('fabric.png');
imshow(fabric)

Figure contains an axes object. The axes object contains an object of type image.

イメージの局所的な色のコントラストを変更することで、布地の 2 つ目のイメージのシミュレーションを行います。

fabric2 = localcontrast(fabric);
imshow(fabric2)

Figure contains an axes object. The axes object contains an object of type image.

CIEDE2000 標準を使用して 2 つのイメージの色差を計算します。テキスタイルに合った輝度の係数と K1 および K2 重み係数を指定します。

dE = imcolordiff(fabric,fabric2,'Standard','CIEDE2000', ...
    'kL',2,'K1',0.048,'K2',0.014);

色差を表示します。表示範囲を dE のピクセル値の範囲全体にスケーリングします。

imshow(dE,[])

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

1 番目のカラー データ セット。次のいずれかの形式で指定します。

  • 基準色を表す 1 行 3 列の数値ベクトル。

  • c 個の色のセットを表す c 行 3 列の数値行列。

  • カラー イメージを表す m×n×3 の数値配列。

  • カラー イメージのバッチを表す、配列 m×n×3×p などの多次元数値配列。3 番目の次元はカラー チャネルに対応し、3 個のチャネルがなければなりません。

I2 が基準色でない場合は、I1 が基準色、または I2 と同じサイズの数値配列でなければなりません。

I1 および I2 は同じ色空間になければなりません。既定では、関数 imcolordiff はカラー データを RGB カラー値として解釈します。L*a*b* 色空間における色差を計算するには、引数 isInputLabtrue として指定します。L*a*b* カラー値のデータ型にできるのは single または double のみです。

データ型: single | double | uint8 | uint16

2 番目のカラー データ セット。次のいずれかの形式で指定します。

  • 基準色を表す 1 行 3 列の数値ベクトル。

  • c 個の色のセットを表す c 行 3 列の数値行列。

  • カラー イメージを表す m×n×3 の数値配列。

  • カラー イメージのバッチを表す、配列 m×n×3×p などの多次元数値配列。3 番目の次元はカラー チャネルに対応し、3 個のチャネルがなければなりません。

I1 が基準色でない場合は、I2 が基準色、または I1 と同じサイズの数値配列でなければなりません。

I1 および I2 は同じ色空間になければなりません。既定では、関数 imcolordiff はカラー データを RGB カラー値として解釈します。L*a*b* 色空間における色差を計算するには、引数 isInputLabtrue として指定します。L*a*b* カラー値のデータ型にできるのは single または double のみです。

データ型: single | double | uint8 | uint16

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: dE = imcolordiff(I1,I2,Standard="CIEDE2000") は、CIEDE2000 標準を使用して 2 つの RGB イメージの色差を計算します。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: dE = imcolordiff(I1,I2,"Standard","CIEDE2000") は、CIEDE2000 標準を使用して 2 つの RGB イメージの色差を計算します。

色差値を計算するために使用する CIE 標準。次のいずれかの値を指定します。

説明
"CIE94"CIE94 標準。この標準は、関数 deltaE に実装されている CIE76 標準の知覚的不均一性を改善します。
"CIEDE2000"CIEDE2000 標準。この標準は、色相回転項、中間色の補正、および明度、彩度、色相の補正という 5 つの追加補正により、知覚的均一性をさらに向上させます。

データ型: char | string

L*a*b* 色空間のカラー値。数値または logical の 0 (false) または 1 (true) として指定します。

輝度の係数。数値スカラーとして指定します。kL は通常、グラフィック アートに適用する場合は 1、テキスタイルに適用する場合は 2 です。

彩度補償係数。数値スカラーとして指定します。kC は通常 1 です。

色相補償係数。数値スカラーとして指定します。kH は通常 1 です。

K1 の重み係数。数値スカラーとして指定します。K1 の重み係数は CIE94 標準にのみ適用されます。この値は通常、グラフィック アートに適用する場合は 0.045、テキスタイルに適用する場合は 0.048 です。

K2 の重み係数。数値スカラーとして指定します。K2 の重み係数は CIE94 標準にのみ適用されます。この値は通常、グラフィック アートに適用する場合は 0.015、テキスタイルに適用する場合は 0.014 です。

出力引数

すべて折りたたむ

色差 (デルタ E)。次のいずれかとして返されます。

  • m 行 n 列の数値行列。この配列は、2 つのカラー イメージ、またはカラー イメージと基準色のピクセル単位の色差を表します。

  • c 行 1 列の数値列ベクトル。このベクトルは、2 組の c 個の色のセットの色差、または c 個の色のセットと基準色の色差を表します。

  • 2 つの基準色の色差を表す数値スカラー。

  • 多次元数値配列。この配列は、2 つのカラー イメージのバッチ、またはカラー イメージのバッチと基準色のピクセル単位の色差を表します。3 番目の次元の長さは 1 で、色差を示します。

I1 または I2 がデータ型 double の場合、dE のデータ型は double です。それ以外の場合、dE のデータ型は single です。

データ型: single | double

ヒント

  • CIE76 標準に従って色差を計算するには、関数 deltaE を使用します。この関数は関数 imcolordiff より高速ですが、精度は下がります。

  • 通常は、kLkCkHK1、および K2 の各引数の既定値をそのままにします。これらの値は、グラフィック アートやテキスタイルなどの特定の産業群について、その産業で経験的に検証されたライティング条件に基づいて変更されます。

参照

[1] Sharma, Gaurav, Wencheng Wu, and Edul N. Dalal, "The CIEDE2000 Color-Difference Formula: Implementation Notes, Supplementary Test Data, and Mathematical Observations." Color Research and Application 30, no. 1 (February 2005): 21–30. https://doi.org/10.1002/col.20070.

[2] ISO/CIE 11664-6:2014. "Colorimetry — Part 6: CIEDE2000 Colour-difference formula." International Organization for Standardization. URL: https://www.iso.org/standard/63731.html.

[3] CIE 116-1995. "Industrial Colour-Difference Evaluation (E)." International Commission on Illumination (CIE). URL: https://cie.co.at/publications/industrial-colour-difference-evaluation.

バージョン履歴

R2020b で導入

すべて展開する