Main Content

illumpca

主成分分析 (PCA) を使用した光源の推定

説明

illuminant = illumpca(A) は主成分分析 (PCA) を使用して、大きな色差から RGB イメージ A 内のシーン照度を推定します。

illuminant = illumpca(A,percentage) は最も暗いピクセルと最も明るいピクセルの指定した割合を使用して照度を推定します。

illuminant = illumpca(___,'Mask',mask) はバイナリ マスクで定義された ROI 内のピクセルのみを使用して照度を推定します。

すべて折りたたむ

イメージを開いて、不適切なホワイト バランスで表示します。

A = imread("foosball.jpg");
imshow(A)
title("Original Image")

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

主成分分析 (PCA) では、RGB 値が線形であると仮定します。ただし、JPEG ファイル形式はガンマ補正された sRGB 色空間にイメージを保存します。関数rgb2linを使用してガンマ補正を元に戻します。

A_lin = rgb2lin(A);

最も暗いおよび明るい 3.5% のピクセル (既定の割合) からシーン照度を推定します。入力イメージは線形であるため、関数 illumpca は線形 RGB 色空間で光源を返します。

illuminant = illumpca(A_lin)
illuminant = 1×3

    0.4075    0.5547    0.7254

illuminant の 3 番目の係数が最大です。これはイメージの青みがかった色調と一致します。

関数chromadaptに推定された光源を入力することで色を補正します。

B_lin = chromadapt(A_lin,illuminant,ColorSpace="linear-rgb");

関数lin2rgbを使用してガンマ補正を適用することで、画面にホワイト バランス済みのイメージを正しく表示します。

B = lin2rgb(B_lin);

補正したイメージを表示します。

imshow(B)
title("White-Balanced Image Using PCA")

Figure contains an axes object. The axes object with title White-Balanced Image Using PCA contains an object of type image.

入力引数

すべて折りたたむ

RGB イメージ。m x n x 3 の数値配列として指定します。

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

光源推定のために保持するピクセルの割合。[0, 50] の範囲で数値スカラーとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

イメージ マスク。m 行 n 列の logical または数値の行列として指定します。マスクは、光源を推定するときに入力イメージ A のどのピクセルを使用するかを示します。計算では、マスク値 0 に対応する A 内のピクセルが除外されます。既定では、マスクはすべて 1 を持ち、A 内のすべてのピクセルが推定に含まれます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

出力引数

すべて折りたたむ

シーン照度の推定。3 要素の数値の行ベクトルとして返されます。3 つの要素は、光源の赤、緑、青の値に対応しています。

データ型: double

ヒント

  • アルゴリズムは一様な明るさと線形の RGB 値を仮定します。非線形の sRGB または Adobe RGB イメージを使用して作業している場合は、関数 rgb2lin でガンマ補正を元に戻してから illumpca を使用します。また、関数 lin2rgb を使用して、色順応したイメージを sRGB または Adobe RGB に必ず戻してください。

アルゴリズム

ピクセルの色は、RGB 色空間内のベクトルとして表されます。アルゴリズムは、イメージ内の平均色に対する投影の明度またはノルムに従って色を順序付けます。アルゴリズムは、この順序に従って、最も暗い色と最も明るい色のみを保持します。その後、色のサブセットに対して主成分分析 (PCA) が実行されます。PCA の最初の要素は、光源の推定を示します。

参照

[1] Cheng, Dongliang, Dilip K. Prasad, and Michael S. Brown. "Illuminant Estimation for Color Constancy: Why spatial-domain methods work and the role of the color distribution." Journal of the Optical Society of America A. Vol. 31, Number 5, 2014, pp. 1049–1058.

バージョン履歴

R2017b で導入