ドキュメンテーション

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

rgb2ind

RGB イメージをインデックス付きイメージに変換

構文

[X,map] = rgb2ind(RGB,n)
X = rgb2ind(RGB, map)
[X,map] = rgb2ind(RGB, tol)
[___] = rgb2ind(___,dither_option)

説明

[X,map] = rgb2ind(RGB,n) は、最小分散量子化とディザリングを使用して、RGB イメージをインデックス付きイメージ X に変換します。map は、最大でも n 色しか含みません。n は、65,536 またはそれ以下でなければなりません。

X = rgb2ind(RGB, map) は、逆カラーマップ アルゴリズムとディザリングを使用したカラーマップ map を使って、RGB イメージをインデックス付きイメージ X に変換します。size(map,1) は、65,536 またはそれ以下でなければなりません。

[X,map] = rgb2ind(RGB, tol) は、一様量子化法とディザリングを使用して、RGB イメージをインデックス付き X に変換します。map は、最大でも (floor(1/tol)+1)^3 色しか含みません。tol は 0.0 と 1.0 の間でなければなりません。

[___] = rgb2ind(___,dither_option) は、ディザリングを適用するか、適用しないかを設定します。dither_option は、次の値のいずれかを使うことができる文字列です。

'dither' (既定の設定)

必要な場合は、空間的な解像度を犠牲にしても色の解像度を高めるためにディザリングを適用します。

'nodither'

元のイメージの色を新しいマップの最も近い色にマッピングします。ディザリングは適用されません。

    メモ:   結果のイメージ X の中の値は、カラーマップ map の中の値に対応します。そして、フィルター処理のような数学的な処理に使用してはなりません。

クラス サポート

入力イメージは、クラス uint8uint16single、または double のいずれかです。出力イメージは、map の長さが 256 以下の場合はクラス uint8 です。そうでない場合、出力イメージは、クラス uint16 です。

出力配列 X の値 0 はカラーマップの最初の色に対応します。

星雲のトゥルーカラー uint8 JPEG イメージを読み取って表示します。

RGB = imread('ngc6543a.jpg');
figure('Name','RGB Image')
imagesc(RGB)
axis image
zoom(4)

32 色のインデックス付きイメージへの RGB の変換

[IND,map] = rgb2ind(RGB,32);
figure('Name','Indexed image with 32 Colors')
imagesc(IND)
colormap(map)
axis image
zoom(4)

詳細

すべて折りたたむ

ヒント

  • tol を指定すると、rgb2ind は一様量子化を使用してイメージを変換します。この方法では、RGB カラー キューブを長さ tol よりも短い辺をもつ立方体に切り取ります。

  • n を指定すると、rgb2ind は最小分散量子化を使用します。この方法では、RGB カラー キューブをイメージ内の色の分布に応じてさまざまなサイズのより小さいボックス (立方体とは限りません) に切り取ります。入力イメージが指定した数よりも少ない色を使っている場合、出力カラーマップもより短くなります。

  • map を指定すると、rgb2ind ではカラーマップへのマッピングが行われます。この方法では、RGB イメージの色に最も近い色を map から見つけます。

アルゴリズム

  • 一様量子化 — 一様量子化では、RGB カラー キューブを長さ tol の小さいキューブに分割します。たとえば、tol を 0.1 に指定した場合、立方体の辺は RGB キューブの長さの 10 分の 1 になります。小さなキューブの総数は、以下のとおりです。

    n = (floor(1/tol)+1)^3
    

    各キューブは、出力イメージの単一の色を表します。したがって、カラーマップの最大長は n となります。rgb2ind は入力イメージに表示されない色をすべて削除するため、実際のカラーマップは n よりも小さくなることがあります。

  • 最小分散量子化 — 最小分散量子化では、イメージ内のカラー分布に応じて RGB カラー キューブをさまざまなサイズの小さいボックス (キューブとは限らない) に分割します。入力イメージが指定した数よりも少ない色を使っている場合、出力カラーマップもより短くなります。

  • 逆カラーマップ — 逆カラーマップ アルゴリズムは、指定されたカラーマップを色の成分ごとに 32 の個別レベルに量子化します。次に、入力イメージのピクセルごとに、量子化されたカラーマップ内で最も近い色が検出されます。

参照

[1] Spencer W. Thomas, "Efficient Inverse Color Map Computation", Graphics Gems II, (ed. James Arvo), Academic Press: Boston. 1991. (includes source code)

この情報は役に立ちましたか?