Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

chromadapt

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

説明

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

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

すべて折りたたむ

黄色の色かぶりが著しいイメージを読み取ります。表示するイメージのサイズを縮小するオプションの倍率を指定してイメージを表示します。

A = imread('hallway.jpg');
figure
imshow(A,'InitialMagnification',25)
title('Original Image')

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

x = 2800;
y = 1000;
gray_val = [A(y,x,1) A(y,x,2) A(y,x,3)];

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

B = chromadapt(A,gray_val);

オプションの初期倍率を設定して、補正後のイメージを表示します。

figure
imshow(B,'InitialMagnification',25)
title('White-Balanced Image')

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

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

A = imread('foosballraw.tiff');

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

A = demosaic(A,'rggb');

イメージを表示します。イメージは線形 RGB 色空間であるため、ガンマ補正を適用してイメージが画面上に正しく表示されるようにします。画面上に全体が表示されるようにイメージを縮小するには、オプションの初期倍率を 100 未満の値に設定します

A_sRGB = lin2rgb(A);
figure
imshow(A_sRGB,'InitialMagnification',25)
title('Original Image')

イメージにはシーン内に ColorChecker チャートがあります。周囲光の色を取得するには、チャートのニュートラル パッチの 1 つでピクセルを選択します。

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

赤のチャネルの強度は、他の 2 つのチャネルの強度よりも低くなります。これは、光が青緑色であることを示します。

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

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

補正したイメージを表示し、ガンマ補正を適用して初期倍率を設定します。

B_sRGB = lin2rgb(B);
figure
imshow(B_sRGB,'InitialMagnification',25)
title('White-Balanced Image')

グレー パッチがカラー バランス済みであることを確認します。

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

   13010   13010   13010

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

入力引数

すべて折りたたむ

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

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

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

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

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

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

入力イメージおよび光源の色空間。'ColorSpace''srgb''adobe-rgb-1998'、または 'linear-rgb' から構成されるコンマ区切りのペアとして指定します。'linear-rgb' オプションを使用して、強度が線形である RGB イメージのカラー バランスを調整します。

データ型: char | string

A の RGB 値をスケーリングするのに使用される色順応法。'Method' と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

  • '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 で導入