イメージの種類
インデックス付きイメージ
インデックス付きイメージは、データ行列 X
とカラーマップ行列 map
から構成されています。map
は、[0,1] の範囲の浮動小数点値を含むクラス double
の m 行 3 列の配列です。map
の各行は、単一色を構成する赤、緑、青の成分を指定するものです。インデックス付きイメージは、ピクセル値をカラーマップ値に “直接マッピング” したものを使います。各イメージ ピクセルの色が、X
の対応する値を map
のインデックスとして使用することにより決定されます。そのため X
の値は整数になります。値 1 はmap
の中の 1 番目の行を示し、値 2 は 2 番目の行のように示します。インデックス付きイメージを、以下のステートメントで表示します。
image(X); colormap(map)
カラーマップはインデックス付きイメージと共に保存されることが多く、関数 imread
を使用すると、自動的にイメージと共に読み込まれます。しかし、既定のカラーマップを使わなければならないという制限はなく、選択した任意のカラーマップを使うことができます。CDataMapping
プロパティに関する記述は、使用するマッピングのタイプの変更法を記述します。
次の図は、インデックス付きイメージの構造を示しています。イメージ内のピクセルは整数で表されます。この整数は、カラーマップに格納されている色値へのポインター (インデックス) です。
イメージ行列の値とカラーマップとの関係は、イメージ行列のクラスに依存しています。イメージ行列がクラス double
の場合、値 1 はカラーマップの最初の行を示し、値 2 は 2 行目を示します。イメージ行列がクラス uint8
または uint16
のいずれかの場合、オフセットが存在します。値 0 は、カラーマップの最初の行を示し、値 1 は、カラーマップの 2 行目を示します。オフセットは、グラフィックス ファイル形式の中でも使われ、サポートできるカラー数を最大にします。上のイメージでは、イメージ行列はクラス double
です。オフセットが存在しないので、値 5 は、カラーマップの 5 行目を示します。
グレースケール (強度) イメージ
グレースケール イメージは "強度" イメージと呼ばれることもあるデータ行列 I
で、その値は何らかの範囲内の強度を表します。グレースケール イメージは単一の行列として表され、その行列の各要素が 1 つのイメージ ピクセルに対応します。この行列のクラスは double
、uint8
または uint16
のいずれかになります。グレースケール イメージがカラーマップと共に保存されることはまれですが、グレースケール イメージの表示にカラーマップが使われることはあります。基本的に、グレースケール イメージはインデックス付きイメージとして取り扱われます。
次の図は、クラス double
のグレースケール イメージを示しています。
グレースケール イメージを表示するには関数 imagesc
("image scale") を使用しますが、これにより強度値の範囲を設定できるようになります。imagesc
によってイメージ データがスケーリングされ、フル カラーマップが使用できるようになります。たとえば、imagesc
の 2 入力形式を使用して、グレースケール イメージを表示します。
imagesc(I,[0 1]); colormap(gray);
imagesc
の 2 番目の入力引数は、必要な強度の範囲を指定します。関数 imagesc
は、範囲内の最初の値 (通常 0) を 1 番目のカラーマップのエントリにマッピングし、2 番目の値 (通常 1) を最後のカラーマップのエントリにマッピングして I
を表示します。これらの間の値は、カラーマップの残りの色に線形分布されます。
通常、グレースケール カラーマップを使用してグレースケール イメージを表示しますが、他のカラーマップを使うこともできます。たとえば、次のステートメントは、グレースケール イメージ I
を青と緑の色調で表示します。
imagesc(I,[0 1]); colormap(winter);
任意の値の範囲をもつ行列 A
をグレースケール イメージとして表示するには、引数 1 つの形式の imagesc
を使用します。入力引数が 1 つである場合、imagesc
により、データ行列の最小値がカラーマップの最初の要素にマッピングされ、最大値がカラーマップの最後の要素にマッピングされます。たとえば、次の 2 行は同じものになります。
imagesc(A); colormap(gray) imagesc(A,[min(A(:)) max(A(:))]); colormap(gray)
RGB (トゥルーカラー) イメージ
RGB イメージは、しばしばトゥルーカラー イメージと言われ、各ピクセルの赤、緑、青成分を定義する m×n×3 のデータ配列として保存されます。RGB イメージは、パレットを使いません。各ピクセルのカラーは、ピクセルの位置での各色平面に格納されている赤、緑、青の強度の組み合わせで決定されます。グラフィックス ファイル形式では、RGB イメージが 24 ビット イメージ (赤、緑、青の成分がそれぞれ 8 ビット) として保存されます。これにより、1600 万色を表す可能性を示しています。実物のイメージを再現できる精度であるということから、"トゥルーカラー イメージ" という名前が付けられています。
RGB MATLAB® 配列は、クラス double
、uint8
、uint16
のいずれかです。クラス double
の RGB 配列の場合、各色成分は 0 ~ 1 の値です。色成分が (0,0,0) であるピクセルは黒として表示され、色成分が (1,1,1) であるピクセルは白として表示されます。各ピクセルの 3 つの色成分は、データ配列の 3 番目の次元に沿って保存されます。たとえば、ピクセル (10,5) の赤、緑、青の色成分は、それぞれ、RGB(10,5,1)
、RGB(10,5,2)
、RGB(10,5,3)
に保存されます。
トゥルーカラー イメージ RGB
を表示するには、関数 image
を使用します。
image(RGB)
次の図は、クラス double
の RGB イメージを示しています。
(2, 3) のピクセルのカラーを決定するには、(2, 3, 1:3) に格納されている RGB 3 成分を調べてください。(2,3,1) に値 0.5176
が含まれていると仮定すると、(2,3,2) には 0.1608
が、(2,3,3) には 0.0627
が含まれています。(2, 3) でのピクセルのカラーは、次のようになります。
0.5176 0.1608 0.0627