Main Content

chromadapt

色順応によって RGB イメージのカラー バランスを調整します

説明

B = chromadapt(A,illuminant) は、シーンの光源に応じて sRGB イメージ A のカラー バランスを調整します。光源は入力イメージと同じ色空間になければなりません。

B = chromadapt(A,illuminant,Name,Value) は、追加オプションを制御するために名前と値の引数を使用して A のカラー バランスを調整します。

すべて折りたたむ

黄色の色かぶりが著しいイメージを読み取って表示します。

A = imread('hallway.jpg');
imshow(A)
title('Original Image')

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

柱上の点など、イメージ内で白色またはグレーに見えるピクセルを選択します。天井灯の上の点など、飽和ピクセルを選択しないでください。選択した点を緑色で表示します。

x = 2800;
y = 1000;
gray_val = impixel(A,x,y);
drawpoint('Position',[x y],'Color','g');

Figure contains an axes object. The axes object with title Original Image contains 2 objects of type image, images.roi.point.

選択した色をシーン照度の基準として使用し、イメージのホワイト バランスを修正します。

B = chromadapt(A,gray_val);

補正したイメージを表示します。これで柱が予想どおり白色に表示され、残りのイメージの黄ばみがなくなりました。

imshow(B)
title('White-Balanced Image')

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

最小限に処理された線形 RGB 強度を含むイメージ ファイルを開きます。

A = imread("foosballraw.tiff");

イメージ データは、黒のレベルを補正し、ピクセルごとに 16 ビットにスケーリングした後の生のセンサー データです。強度を内挿して色を再構成します。カラー フィルターの配列パターンは RGGB です。

A = demosaic(A,"rggb");

イメージを表示します。イメージは線形 RGB 色空間であるため、ガンマ補正を適用してイメージが画面上に正しく表示されるようにします。

A_sRGB = lin2rgb(A);
imshow(A_sRGB)
title("Original Image")

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

イメージにはシーン内に ColorChecker® チャートがあります。周囲光の色を取得するには、チャートのニュートラル パッチの 1 つでピクセルの RGB 値を表示します。赤のチャネルの強度は、他の 2 つのチャネルの強度よりも低くなります。これは、光が青緑色であることを示します。

x = 1510;
y = 1250;
light_color = [A(y,x,1) A(y,x,2) A(y,x,3)]
light_color = 1x3 uint16 row vector

    7361   14968   10258

イメージのカラー チャネルのバランスを修正します。名前と値の引数 ColorSpace を使用して、イメージと光源が線形 RGB で表現されるように指定します。

B = chromadapt(A,light_color,"ColorSpace","linear-rgb");

ガンマ補正でカラー バランス済みのイメージを表示します。

B_sRGB = lin2rgb(B);
imshow(B_sRGB)
title("Color-Balanced Image")

Figure contains an axes object. The axes object with title Color-Balanced Image contains an object of type image.

グレー パッチがカラー バランス済みであることを確認します。カラー バランス済みのグレー パッチでは、3 つのカラー チャネルの強度は予想どおり相似しています。

patch_color = [B(y,x,1) B(y,x,2) B(y,x,3)]
patch_color = 1x3 uint16 row vector

   13010   13010   13010

入力引数

すべて折りたたむ

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

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

シーンの光源。3 要素数値ベクトルとして指定します。光源は入力イメージ A と同じ色空間になければなりません。

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

名前と値の引数

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

例: I2 = chromadapt(I,uint8([22 97 118]),ColorSpace="linear-rgb") は、線形 RGB 色空間でイメージ I のカラー バランスを調整します。

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

例: I2 = chromadapt(I,uint8([22 97 118]),"ColorSpace","linear-rgb") は、線形 RGB 色空間でイメージ I のカラー バランスを調整します。

入力イメージおよび光源の色空間。"srgb""adobe-rgb-1998""prophoto-rgb"、または "linear-rgb" として指定します。"linear-rgb" オプションを使用して、強度が線形である RGB イメージのカラー バランスを調整します。

データ型: char | string

A の RGB 値をスケーリングするのに使用される色順応法。以下のいずれかの値として指定します。

  • "bradford"—ブラッドフォード錐体応答モデルを使用したスケーリング

  • "vonkries"—フォン・クリース錐体応答モデルを使用したスケーリング

  • "simple"—光源を使用したスケーリング

データ型: char | string

出力引数

すべて折りたたむ

カラー バランス済みの RGB イメージ。A と同じデータ型の m x n x 3 の数値配列として返されます。

参照

[1] Lindbloom, Bruce. Chromatic Adaptation. http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html.

バージョン履歴

R2017b で導入

すべて展開する