Main Content

deltaE

CIE76 標準に基づく色差

R2020b 以降

説明

dE = deltaE(I1,I2) は、CIE76 標準を使用して 2 つの RGB イメージ、RGB イメージと基準色、または 2 組の色のセットの色差を計算します。

また、dE = deltaE(I1,I2,isInputLab=isLab) は、入力カラー データが RGB 色空間にあるか、L*a*b* 色空間にあるかを指定します。

すべて折りたたむ

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

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

色の色差を計算します。

dE = deltaE(pureRed,darkRed)
dE = single
    18.6206

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

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.

イメージの色差を計算します。

dE = deltaE(I1,I2);

色差をイメージとして表示します。dE の最大値が、データ型 single のイメージに期待できる範囲 [0, 1] を超えているため、データの表示範囲全体を使用してイメージを表示します。明るいピクセルは大きな色差を示し、そのためにコントラスト強調の量が多くなります。

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.2;
lab2(:,:,2) = scaleFactor*lab(:,:,2);

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

dE = deltaE(lab,lab2,"isInputLab",true);

色差をイメージとして表示します。表示範囲をスケーリングして、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 は同じ色空間になければなりません。既定では、関数 deltaE はカラー データを RGB カラー値として解釈します。L*a*b* 色空間における色差を計算するには、引数 isLabtrue として指定します。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 は同じ色空間になければなりません。既定では、関数 deltaE はカラー データを RGB カラー値として解釈します。L*a*b* 色空間における色差を計算するには、引数 isLabtrue として指定します。L*a*b* カラー値のデータ型にできるのは single または double のみです。

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

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

出力引数

すべて折りたたむ

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

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

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

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

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

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

データ型: single | double

ヒント

  • 色差計算の精度を高めるには、関数 imcolordiff を使用します。この関数は CIE94 標準および CIEDE2000 標準に準拠しており、異なるアプリケーションにおける知覚的均一性を向上させるためのパラメーターがあります。

バージョン履歴

R2020b で導入

すべて展開する