最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

HSV 色空間から RGB 色空間への変換

HSV 色空間 (色相、彩度、明度) は、カラー ホイルまたはパレットから (ペイント、インクなどの) 色を選択する場合によく使われます。これは、RGB 色空間よりも感覚をベースにしたものによく対応しているからです。関数 rgb2hsv および hsv2rgb は RGB 色空間と HSV 色空間間の変換を行います。

メモ

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

色相が 0 から 1.0 まで変化するにつれて、対応する色は赤から黄、緑、シアン、青、マゼンタと変わり赤に戻るため、赤の値には 0 と 1.0 の両方があります。彩度が 0 から 1.0 まで変化するにつれて、対応する色 (色相) は彩度が満たされていないグレーから白要素をもたないものに変化します。明度は、0 から 1.0 に変化すると対応する色の明るさが増加します。

次の図は、HSV 色空間を示しています。

HSV 色空間の図

RGB イメージの HSV への変換と HSV 色空間の調査

この例では、関数 rgb2hsv を使用して RGB イメージを HSV 色空間に変換する方法を示します。その後、合成イメージの個々の HSV 色平面 (色相、彩度、明度) を表示します。

RGB イメージの HSV イメージへの変換

RGB イメージをワークスペースに読み取ります。

RGB = imread('peppers.png');

それを HSV 色空間に変換します。

HSV = rgb2hsv(RGB);

HSV 色空間の詳細調査

HSV 色空間をさらに調べるために、合成 RGB イメージを作成します。

RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);

合成 RGB イメージを HSV 色空間に変換します。

HSV=rgb2hsv(RGB);

HSV バージョンの合成イメージをその成分平面 (色相、彩度、明度) に分割します。

[h s v] = imsplit(HSV);

個々の HSV 色平面と元のイメージを並べて表示します。

montage({h, s, v, RGB}, 'BorderSize', 10);

前の図の色相平面イメージが示すように、色相値は、高いものから低いものへ線形で変化していきます。元のイメージと色相平面イメージを比べると、濃い青の階調が最高値を示し、濃い赤の階調が最低値を示していることがわかります (前述のとおり、色相スケールの両端に赤が存在します。混乱を避けるために、サンプルのイメージは色相範囲の始めの値のみを赤として使用しています)。

彩度は、色の純度と考えられます。彩度平面イメージが示すように、最高の彩度をもつ色は最高値になり、白を表します。彩度イメージの中心にグレーのさまざまな階調が存在することに注意してください。これらは、混合色に対応します。つまり、シアン、緑、黄の階調は、トゥルーカラーを混合したものです。明度は輝度にほぼ等しく、明度平面の最も明るい部分が、元のイメージの中の最も明るい色に対応します。