Main Content

異なる色空間間での変換について

通常、Image Processing Toolbox™ ソフトウェアは赤、緑および青 (RGB) の数値で色を表現します。しかし、色を数値的に表現するためには、RGB 以外の他のモデルもあります。種々のモデルは、"色空間" として考えます。これは、ほとんどの色が、2 次元、3 次元、4 次元の座標系にマッピングされているからです。

種々の色空間は、ある計算をより簡単に行うように色情報を表現したり、または個々の色をより鮮明にするように、色を識別する方法を提供するために存在しています。たとえば、RGB色空間は、赤、緑、青の色相の混ざりの割合を定義します。他のカラー モデルは、色相 (色の陰影)、彩度 (灰色または純色の量) および輝度 (強度または全体的な明度) で色を記述します。

ツールボックスは、数学的変換を通じてある色空間から別の色空間へのカラー データの変換を可能にします。

RGB

RGB 色空間は、要素が赤、緑および青のカラー チャネルの強度値を指定する m x n x 3 の数値配列としてイメージを表現します。数値の範囲はイメージのデータ型によって異なります。

  • single または double の配列では、RGB 値の範囲は [0, 1] になります。

  • uint8 の配列では、RGB 値の範囲は [0, 255] になります。

  • uint16 の配列では、RGB 値の範囲は [0, 65535] になります。

ツールボックスは、RGB 色空間の差異をサポートします。

RGB 色空間説明
線形 RGB線形 RGB 値はカメラのセンサーから取得した生データです。R、G、B の値は、センサーに当たる光の量に正比例します。ホワイト バランス、カラー バランス、色収差補正などのイメージの生データの前処理は、線形 RGB 値で実行されます。
sRGB

sRGB 値では、ガンマ補正と呼ばれる非線形関数が線形 RGB 値に適用されます。イメージが明るく表示され、色を区別しやすいため、イメージが sRGB 色空間で表示されることはよくあります。線形 RGB 値から sRGB 色空間への変換に使用されるパラメトリック曲線は、次のとおりです。

f(u) = -f(-u), u < 0

f(u) = c ⋅ u, 0 ≤ u < d

f(u) = a ⋅ uɣ + b, u ≥ d,

ここで u は以下のパラメーターを持つ R、G、B のいずれかのカラー値を表します。

a = 1.055

b = –0.055

c = 12.92

d = 0.0031308

ɣ = 1/2.4

Adobe RGB (1998)

Adobe RGB (1998) RGB 値では、以下の単純なべき関数を使用してガンマ補正を線形 RGB 値に適用します。

v = uɣ, u ≥ 0

v = -(-u)ɣ, u < 0,

ここで

ɣ = 1/2.19921875

HSV

HSV (色相、彩度、明度) 色空間は、RGB 色空間よりも感覚をベースにしたものによく対応しています。たとえば、この色空間は色相環またはカラー パレットからペイントやインクの色を選択する場合によく使用されます。

属性説明
H色相。カラー ホイール上の色の位置に対応します。H の範囲は [0, 1] です。H が増加するにつれて、色は赤から、オレンジ、黄、緑、シアン、青、マゼンタと変化し、最後に赤に戻ります。0 および 1 はどちらも赤を示します。
S彩度。色相の量またはニュートラルからのずれです。S の範囲は [0, 1] です。S が増加するにつれて、色は彩度が満たされていないグレーから白要素をもたないものに変化します。
V

明度。特定の色に含まれる赤、緑、青の成分の中で最大の値です。V の範囲は [0, 1] です。V が増加するにつれて、対応する色の明るさが増加します。

HSV 色空間の図

The HSV color space is an inverted cone, where hue relates to the angle, saturation to the radius, and value to the height from the origin. The color white is at the origin and the color white is the furthest point along the value axis.

メモ

MATLAB® および Image Processing Toolbox ソフトウェアは HSI 色空間 (色相、彩度、明度) をサポートしていません。ただし、色相、彩度、明度についてカラー データの作業を行う場合、HSV 色空間と非常に似ています。LCH 色空間 (輝度、彩度、色相) を使用する方法もあります。これは CIE L*a*b* 色空間の極変換です。デバイス非依存の色空間を参照してください。

関数 rgb2hsv および hsv2rgb を使用して、RGB 色空間と HSV 色空間間の変換を行います。

CIE 1976 XYZ および CIE 1976 L*a*b*

CIE 1976 XYZ および CIE 1976 L*a*b* は、国際照明委員会 (CIE の頭字語で知られる) の開発したデバイス非依存の色空間です。これらの色空間は、人間の目にある 3 種類の錐体細胞の一般的な感度に従って色をモデル化します。

XYZ 色空間は、CIE が開発した独自のモデルです。Y チャネルは色の輝度を表します。Z チャネルはイメージの青の量とほぼ関係しますが、XYZ 色空間の Z の値は RGB 色空間の B の値と同じではありません。X チャネルには明確な色の類似がありません。ただし、XYZ 色空間を 3 次元の座標系とみなす場合、X の値は Y (輝度) 軸と Z 軸に直交する軸に沿う位置にあります。

L*a*b* 色空間は、XYZ モデルより知覚的に一様な色空間を提供します。L*a*b* 色空間の色は、RGB の "色域" (有効な RGB カラーのセット) の外に存在することがあります。たとえば、L*a*b* 値 [100, 100, 100] を RGB 色空間に変換すると、戻り値は [1.7682, 0.5746, 0.1940] となりますが、これは有効な RGB カラーではありません。詳細については、L*a*b* 値が RGB の色域にあるかどうかの判定を参照してください。

属性説明
L*イメージの輝度または明度。値は [0, 100] の範囲内にあり、0 が黒、100 が白を指します。L* が増加するにつれて、色の明度が増します。
a*イメージの赤または緑の色合いの量。大きい正の a* 値は赤/マゼンタに対応します。大きい負の a* 値は緑に対応します。a* に共通の範囲はありませんが、一般的に値は [-100, 100] または [-128, 127) の範囲内に収まります。
b*イメージの黄または青の色合いの量。大きい正の b* 値は黄に対応します。大きい負の b* 値は青に対応します。b* に共通の範囲はありませんが、一般的に値は [-100, 100] または [-128, 127) の範囲内に収まります。

デバイス非依存の色空間には、基準白色点と呼ばれる照明光源の影響が含まれています。光源は、光源の色温度に従ってイメージの生データに色相を与えます。たとえば、日の出または日の入りの際の日光はイメージに黄の色相を与えますが、正午頃の日光は青の色相を与えます。

関数 rgb2xyz および xyz2rgb を使用して、RGB 色空間と XYZ 色空間間の変換を行います。関数 rgb2lab および lab2rgb を使用して、RGB 色空間と L*a*b* 色空間間の変換を行います。

ツールボックスは、いくつかの目的に対しては、XYZ より便利な他の色表現を与えるいくつかの関連する色空間をサポートしています。詳細については、デバイス非依存の色空間を参照してください。

YCbCr

YCbCr 色空間は、デジタル ビデオで広く使用されています。この形式では、輝度情報が単一要素 (Y) として格納され、色差情報は 2 つの色成分 (Cb と Cr) として格納されます。Cb と Cr はそれぞれ青要素または赤要素とリファレンス値の違いを表します (デジタル ビデオで広く使用されているもう 1 つの色空間である YUV は YCbCr と非常によく似ていますが同じではありません)。

属性説明
Yイメージの輝度または明度。Y が増加するにつれて、色の明度が増します。
Cb青要素とリファレンス値の違いを示す色差値。
Cr赤要素とリファレンス値の違いを示す色差値。

数値の範囲はイメージのデータ型によって異なります。YCbCr は、ビデオ ストリームに追加 (非イメージ) 情報を含めることができるように、イメージのデータ型の範囲全体を使用しません。

  • single または double の配列の場合、Y の範囲は [16/255, 235/255]、Cb と Cr の範囲は [16/255, 240/255] です。

  • uint8 の配列の場合、Y の範囲は [16, 235]、Cb と Cr の範囲は [16, 240] です。

  • uint16 の配列の場合、Y の範囲は [4112, 60395]、Cb と Cr の範囲は [4112, 61680] です。

関数 rgb2ycbcr および ycbcr2rgb を使用して、RGB 色空間と YCbCr 色空間間の変換を行います。

YIQ

National Television Systems Committee (NTSC) は、YIQ として知られる色空間を定義しています。この色空間は、米国のテレビで使われている方式です。この色空間は、グレースケール情報がカラー データから分離しているため、同じ信号をカラーと白黒のテレビ受像機の両方で使用できます。

属性説明
Yイメージの輝度または明度。値は [0, 1] の範囲内にあり、0 が黒、1 が白を指します。Y が増加するにつれて、色の明度が増します。
I"同位相"、つまりイメージの青またはオレンジの色合いのおおよその量です。I は [-0.5959, 0.5959] の範囲内にあり、負の数値は青の色合いを示し、正の数値はオレンジの色合いを示します。I の大きさが増えるにつれて、色の彩度が高くなります。
Q"直角位相"、つまりイメージの緑または紫の色合いのおおよその量です。Q は [-0.5229, 0.5229] の範囲内にあり、負の数値は緑の色合いを示し、正の数値は紫の色合いを示します。Q の大きさが増えるにつれて、色の彩度が高くなります。

関数 rgb2ntsc および ntsc2rgb を使用して、RGB 色空間と YIQ 色空間間の変換を行います。

輝度は、NTSC 形式の要素の 1 つであるため、RGB から NTSC への変換はあるイメージ内のグレー レベル情報を分離するときにも役に立ちます。ツールボックス関数 rgb2gray および ind2gray は、カラー イメージからグレースケール情報を抽出するときに関数 rgb2ntsc を使用します。

関連するトピック