Main Content

カラーマップとトゥルーカラーの違い

表面、パッチ、イメージなどの多くのグラフィックス オブジェクトでは、色を指定する手法として、カラーマップ (インデックス付きカラーを使用) とトゥルーカラーの 2 種類がサポートされています。各手法には異なるワークフローがあり、視覚的表現に異なる影響を与えます。

ワークフローの違い

カラーマップは m 行 3 列の配列であり、各行で RGB 3 成分を指定します。グラフィカル表現でカラーマップを使用するには、グラフィックスのそれぞれの位置にインデックスを割り当てます。各インデックスは、グラフィックス内の指定した場所に色を表示するためにカラーマップの行を指定します。一方、トゥルーカラーを使用する場合、グラフィックス内のすべての場所に RGB 3 成分を指定します。

どちらの手法を使用するかを決めるときには、次のいくつかの点について検討します。

  • トゥルーカラーはより直接的です。グラフィックスの特定の場所に、特定の赤、緑、青の値を割り当てる場合は、通常、トゥルーカラーを使用して行う方が簡単です。

  • カラー パレットの領域内での変更は、カラーマップで行う方が簡単です。たとえば、青から緑へのグラデーションの遷移を明るくする場合、カラーマップでそれらの行を編集する方が、グラフィックスの個々の位置の色を編集するよりも簡単です。

  • データの形式が、いずれかのワークフローの方に、より適している可能性があります。たとえば、圧縮された GIF イメージの多くはインデックス付きカラーを使用して保存されます。

どちらのカラーリング手法でも、色配列 C を使用して色の情報を指定します。C の形状は、グラフィックス オブジェクトのタイプや選択したカラーリングの方法によって異なります。次の表は、相違点をまとめています。

グラフィックス オブジェクトのタイプ色配列 C を含むプロパティインデックス付きカラーの C の形状トゥルーカラーの C の形状
SurfaceCDataC は m 行 n 列の配列で、z 座標配列と同じサイズです。C(i,j) の値は、Z(i,j) のカラーマップ インデックスを指定します。C は m x n x 3 配列であり、C(:,:,i) は z 座標配列と同じサイズです。

C(i,j,1)Z(i,j) の赤の成分を指定します。

C(i,j,2)Z(i,j) の緑の成分を指定します。

C(i,j,3)Z(i,j) の青の成分を指定します。
ImageCDataC は m 行 n 列のイメージに対する m 行 n 列の配列です。C(i,j) の値は、ピクセル (i,j) のカラーマップ インデックスを指定します。C は m 行 n 列イメージの m x n x 3 配列です。

C(i,j,1) は、ピクセル (i,j) の赤の成分を指定します。

C(i,j,2) は、ピクセル (i,j) の緑の成分を指定します。

C(i,j,3) は、ピクセル (i,j) の青の成分を指定します。
Patch (x, y, z)CDataパッチ面に色を指定する場合、C は、m 個のパッチ面に対する 1 行 m 列配列です。C(i) は、面 i のカラーマップ インデックスを指定します。

パッチの頂点に色を指定する場合、C は m 行 n 列配列であり、m は面ごとの頂点の数で、n は面の数です。C(i,j) は面 j の頂点 i のカラーマップ インデックスを指定します。
パッチ面に色を指定する場合、C は m 個のパッチ面に対する m 行 3 列配列です。C(i,:) は、面 i の赤、緑、および青の値を指定します。

パッチの頂点に色を指定する場合、C は n 行 3 列配列であり、n は頂点の合計数です。C(i,:) は、頂点 i の赤、緑、および青の値を指定します。
Patch (面-頂点データ)FaceVertexCDataパッチ面に色を指定する場合、C は m 個のパッチ面に対する 1 行 m 列配列です。C(i) は面 i のカラーマップ インデックスを指定します。

パッチの頂点に色を指定する場合、C は 1 行 n 列配列であり、n は頂点の合計数です。C(i) は、頂点 i のカラーマップ インデックスを指定します。
パッチ面に色を指定する場合、C は m 個のパッチ面に対する m 行 3 列配列です。C(i,:) は、面 i の赤、緑、および青の値を指定します。

パッチの頂点に色を指定する場合、C は n 行 3 列配列であり、n は頂点の合計数です。C(i,:) は、頂点 i の赤、緑、および青の値を指定します。

視覚的表現の違い

カラーマップは、m 色のパレットを提供します (m はカラーマップの長さ)。一方、トゥルーカラーは、256 × 256 × 256 ≈ 1.68 百万色のカラー パレットを提供します。

必要なカラー パレットの大きさを決定するときには、次の要素について考慮してください。

  • 大きな領域を単色で塗りつぶすには、小さなカラー パレットが最も効率的な方法です。また、表面の輪郭を可視化する場合にも役に立ちます。

  • カラー パレットが大きくなるほど、遷移が精細になり、色のグラデーションが滑らかになります。

インデックス付きカラーとトゥルーカラーの差がより顕著になる状況の 1 つとして、パッチ面全体への頂点の色の内挿があります。次の 2 つのパッチは、極端な例を表しています。左側のパッチは小さなカラーマップを使用しているのに対して、右側のパッチはトゥルーカラーを使用しています。

Two triangular patches with interpolated color. One patch uses a 16-color colormap and the other patch uses truecolor. The transitions between colors are smoother in the patch that uses truecolor.

カラーマップのパレットの色数が限られていることに懸念がある場合は、さらに色を追加できます。カラーマップを使用したカラー スキームの変更は、特定の色数のカラーマップを使用する方法について説明しています。

関連するトピック