Main Content

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

RGB 色空間と HSV 色空間の間の変換

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

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

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

RGB = imread('peppers.png');
imshow(RGB)

Figure contains an axes object. The axes object contains an object of type image.

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

HSV = rgb2hsv(RGB);

HSV イメージを前処理します。この例では、S チャネルに倍率をかけてイメージの彩度を高くします。

[h,s,v] = imsplit(HSV);
saturationFactor = 2;
s_sat = s*saturationFactor;
HSV_sat = cat(3,h,s_sat,v);

処理された HSV イメージを RGB 色空間に変換し直します。新しい RGB イメージを表示します。処理されたイメージの色がより鮮やかになります。

RGB_sat = hsv2rgb(HSV_sat);
imshow(RGB_sat)

Figure contains an axes object. The axes object contains an object of type image.

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,"BackgroundColor",'w');

Figure contains an axes object. The axes object contains an object of type image.

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

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