Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

イメージの種類

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

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

image(X); colormap(map)

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

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

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

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

グレースケール イメージは"強度"イメージと呼ばれることもあるデータ行列Iで、その値は何らかの範囲内の強度を表します。グレースケール イメージは単一の行列として表され、その行列の各要素が 1 つのイメージ ピクセルに対応します。この行列のクラスはdoubleuint8または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 イメージは、しばしばトゥルーカラーイメージと言われ、各ピクセルの赤、緑、青成分を定義するmxnx 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 イメージを示しています。

(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