Main Content

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

colorangle

2 つの RGB ベクトル間の角度

説明

angle = colorangle(rgb1,rgb2) は、2 つの RGB ベクトルの間の角度を計算します。

すべて折りたたむ

テスト イメージを開きます。イメージは、Canon EOS 30D デジタル カメラで撮影した、黒のレベルを補正し、ピクセルごとに 16 ビットにスケーリングした後の生のセンサー データです。デモザイキング、ホワイト バランシング、色強調、ノイズ フィルタリング、またはガンマ補正は適用されていません。

A = imread('foosballraw.tiff');

関数demosaicを使用して内挿し、カラー イメージを取得します。カラー フィルターの配列パターンは RGGB です。

A_demosaiced = demosaic(A,'rggb');

イメージは ColorChecker チャートを含みます。チャートのニュートラル パッチを使用し、事前に計算されたグラウンド トゥルースの光源を指定します。

illuminant_groundtruth = [0.0717 0.1472 0.0975];

光源の推定にずれが生じないように、マスクを作成して ColorChecker チャートを除外します。

mask = true(size(A_demosaiced,1), size(A_demosaiced,2));
mask(920:1330,1360:1900) = false;

illumwhiteillumgray、およびillumpcaの 3 つの異なる光源推定アルゴリズムを実行します。

illuminant_whitepatch = illumwhite(A_demosaiced,'Mask',mask);
illuminant_grayworld = illumgray(A_demosaiced,'Mask',mask);
illuminant_pca = illumpca(A_demosaiced,'Mask',mask);

関数 colorangle を使用して、それぞれの推定された光源とグラウンド トゥルースとの間の角度を計算することによって、各推定値をグラウンド トゥルースと比較します。角度が小さいほど、推定の精度が上がります。推定の大きさは重要ではありません。なぜなら、光源の方向のみが色順応によるイメージのホワイト バランスに使用されるからです。

angle_whitepatch = colorangle(illuminant_whitepatch, illuminant_groundtruth)
angle_whitepatch = 5.0921
angle_grayworld = colorangle(illuminant_grayworld, illuminant_groundtruth)
angle_grayworld = 5.1036
angle_pca = colorangle(illuminant_pca, illuminant_groundtruth)
angle_pca = 5.0134

angle_pca の値は最小です。これは、PCA 光源推定アルゴリズムがこのイメージのグラウンド トゥルース照度に最も近いことを示します。

入力引数

すべて折りたたむ

1 番目の RGB ベクトル。3 要素の数値ベクトルとして指定します。

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

2 番目の RGB ベクトル。3 要素の数値ベクトルとして指定します。

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

出力引数

すべて折りたたむ

RGB ベクトル間の角度。数値スカラーとして返されます。

データ型: double

詳細

すべて折りたたむ

角度誤差

角度誤差は、グラウンド トゥルースに対する光源の推定を評価するのに役立つメトリクスです。グラウンド トゥルースの光源と推定された光源との間の角度が小さいほど、推定の精度は高くなります。

R2017b で導入