イメージ データをカラーマップに関連付ける方法
関数 image
を使用してイメージを表示するとき、ピクセル値の範囲をどのようにカラーマップの範囲にマッピングするかを制御できます。たとえば、次の 5 行 5 列の魔方陣は既定のカラーマップを使用してイメージとして表示されます。
A = magic(5)
A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
im = image(A);
axis off
colorbar
A
は 1 から 25 の値を含んでいます。MATLAB® では、それらの値が、64 のエントリがあるカラーマップへのインデックスとして処理されます。したがって、前述のイメージのすべてのピクセルがカラーマップの最初の 25 エントリにマッピングされます (ほぼカラー バーの青色の領域)。
このマッピングは、Image
オブジェクトの CDataMapping
プロパティによって制御できます。前の図に示されている既定の動作は、このプロパティの 'direct'
オプションに対応します。独自のカラーマップを含んだイメージ (GIF イメージなど) を表示するときには、直接マッピングが役に立ちます。ただし、イメージで特定の物理単位 (メートルや度など) の測定値を表現する場合、CDataMapping
プロパティを 'scaled'
に設定します。スケーリングによるマッピングは色の全範囲を使用するため、データの相対的な差異を可視化できます。
im.CDataMapping = 'scaled';
'scaled'
オプションは、A
の最小値をカラーマップの最初のエントリにマッピングし、A
の最大値をカラーマップの最後のエントリにマッピングします。A
のすべての中間の値は、カラーマップに対して線形にスケーリングされます。
CDataMapping
プロパティを 'scaled'
に設定する代わりとして、関数 imagesc
を呼び出して同じ効果を得ることができます。
imagesc(A)
axis off
colorbar
カラーマップを変更した場合、A
の値が新しいカラーマップに対してスケーリングされます。
colormap(gray)
スケーリングによるマッピングは、カラーマップのない図形イメージを表示する場合や、図形イメージのカラーマップを変更する場合にも役立ちます。次のコマンドは、gray
カラーマップを使用してイメージを表示します。このカラーマップは、このイメージと共に格納された元のカラーマップとは異なるものです。
load clown image(X,'CDataMapping','scaled') colormap(gray) axis off colorbar