Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

イメージの種類

インデックス付きイメージ

インデックス付きイメージは、データ行列 X とカラーマップ行列 map から構成されています。map は、[0,1] の範囲の浮動小数点値を含むクラス doublem 行 3 列の配列です。map の各行は、単一色を構成する赤、緑、青の成分を指定するものです。インデックス付きイメージは、ピクセル値をカラーマップ値に “直接マッピング” したものを使います。各イメージ ピクセルの色が、X の対応する値を map のインデックスとして使用することにより決定されます。そのため X の値は整数になります。値 1 はmap の中の 1 番目の行を示し、値 2 は 2 番目の行のように示します。インデックス付きイメージを、以下のステートメントで表示します。

image(X); colormap(map)

カラーマップはインデックス付きイメージと共に保存されることが多く、関数 imread を使用すると、自動的にイメージと共に読み込まれます。しかし、既定のカラーマップを使わなければならないという制限はなく、選択した任意のカラーマップを使うことができます。CDataMapping プロパティに関する記述は、使用するマッピングのタイプの変更法を記述します。

次の図は、インデックス付きイメージの構造を示しています。イメージ内のピクセルは整数で表されます。この整数は、カラーマップに格納されている色値へのポインター (インデックス) です。

Indexed image and inset showing the pixel index values for a selected region and the mapping of one index to a color in the colormap

イメージ行列の値とカラーマップとの関係は、イメージ行列のクラスに依存しています。イメージ行列がクラス double の場合、値 1 はカラーマップの最初の行を示し、値 2 は 2 行目を示します。イメージ行列がクラス uint8 または uint16 のいずれかの場合、オフセットが存在します。値 0 は、カラーマップの最初の行を示し、値 1 は、カラーマップの 2 行目を示します。オフセットは、グラフィックス ファイル形式の中でも使われ、サポートできるカラー数を最大にします。上のイメージでは、イメージ行列はクラス double です。オフセットが存在しないので、値 5 は、カラーマップの 5 行目を示します。

グレースケール (強度) イメージ

グレースケール イメージは "強度" イメージと呼ばれることもあるデータ行列 I で、その値は何らかの範囲内の強度を表します。グレースケール イメージは単一の行列として表され、その行列の各要素が 1 つのイメージ ピクセルに対応します。この行列のクラスは doubleuint8 または uint16 のいずれかになります。グレースケール イメージがカラーマップと共に保存されることはまれですが、グレースケール イメージの表示にカラーマップが使われることはあります。基本的に、グレースケール イメージはインデックス付きイメージとして取り扱われます。

次の図は、クラス double のグレースケール イメージを示しています。

Grayscale image and inset showing the pixel values for a selected region

グレースケール イメージを表示するには関数 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® 配列は、クラス doubleuint8uint16 のいずれかです。クラス 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 イメージを示しています。

RGB color image and inset showing the red, green, and blue pixel values for a selected region

(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