2025.08.24
HSV色空間について
HSVとは
HSVは、色を色相(Hue)と彩度(Saturation)と明度(Value)の3つの要素で表現したものです。
これは、人間の感覚に近い要素で色を表現するために、人が色を表現するニュアンスを定量化したものです。例えば、HSVで「明るい淡いピンク」を表現するには、色相を「ピンク」、彩度を「淡い」、明度を「明るい」にします。
一般的に、RGBの値で色を指定しますが、それらの組み合わせで色調を調整することは難しいです。HSVを使うと、色調の調整が容易に行えます。
色相(Hue)
下の図は、代表的な色相環の1つで、0°が「赤」、60°が「黄色」、120°が「緑」、180°が「シアン(水色)」、240°が「青」、300°が「マゼンタ(紫)」を配置しています。

白、グレー(灰色)、黒には色相はなく、無彩色と呼ばれます。
彩度(Saturation,Chroma)
彩度は、色の鮮やかさの度合いです。飽和度ともいいます。
0~100%または0.0~1.0で指定します。この値が大きいほど鮮やかな色になり、値が小さいほどくすんだ色になります。白、グレー(灰色)、黒の彩度は0です。

明度(Value,Brightness)
明度は、色の明るさの度合いです。輝度ともいいます。
0~100%または0.0~1.0で指定します。この値が大きいほど明るく、この値が小さいほど色は暗くなります。白の明度は高く、黒は明度が低いです。

HSVとHSBの違い
HSVとHSBは、基本的には同じです。
HSBは、色を色相(Hue)と彩度(Saturation)と明度(Brightness)の3つの要素で表現したものです。
HSVとの違いは、明度を表す英語「Value」か「Brightness」の違いだけです。
RGBからHSV(HSB)へ変換
ここでは、RGBの値をHSVに変換する方法を説明します。
準備
色相H、彩度S、明度Vを計算する準備として、RGBの値の最小を0.0、最大を1.0にします。
一般的にRGBの値は0~255で指定されることが多いので、255で割ることで0.0~1.0の範囲に収めます。
R、G、Bの値が0~255の場合 R = R ÷ 255.0 G = G ÷ 255.0 B = B ÷ 255.0
R、G、Bの最小値CMINを求める R、G、Bの最大値CMAXを求める
色相(Hue)の計算
RGBの値とCMINとCMAXを使って色相Hを計算します。
計算方法は以下のとおりです。
RとGとBが同じ値の場合 H = 0 R=CMAXの場合 色相 H = 60 × ( ( G - B ) ÷ ( CMAX - CMIN ) ) G=CMAXの場合 色相 H = 60 × ( ( B - R ) ÷ ( CMAX - CMIN ) ) + 120 B=CMAXの場合 色相 H = 60 × ( ( R - G ) ÷ ( CMAX - CMIN ) ) + 240 計算したHの値がマイナスの場合、Hの360を足してプラスの値にします。
計算された色相Hの値の範囲は0~360になります。
彩度(Saturation)の計算
CMINとCMAXで彩度Sを計算します。
計算方法は以下のとおりです。
CMAX=0の場合 S = 0 CMAXが0でない場合 S = ( CMAX - CMIN ) ÷ CMAX
計算された彩度Sの値の範囲は0.0~1.0になります。また、この値に100を掛ければ0~100%の範囲になります。
明度(Value)の計算
CMAXで明度Vを計算します。
計算方法は以下のとおりです。
V = CMAX
計算された明度Vの値の範囲は0.0~1.0になります。また、この値に100を掛ければ0~100%の範囲になります。
HSV(HSB)からRGBへ変換
ここでは、HSVの値をRGBに変換する方法を説明します。
準備
CMAX = V × 255.0 CMIN = ( 1 - S ) × CMAX × 255.0
計算されたCMINとCMAXの値の範囲は0.0~255.0になります。
RGBの計算
CMINとCMAXでRGBを計算します。
計算方法は以下のとおりです。
Hが0~60の場合 R = CMAX G = ( H ÷ 60 ) × ( CMAX - CMIN ) + CMIN B = CMIN Hが60~120の場合 R = ( ( 120 - H ) ÷ 60 ) × ( CMAX - CMIN ) + CMIN G = CMAX B = CMIN Hが120~180の場合 R = CMIN G = CMAX B = ( ( H - 120 ) ÷ 60 ) × ( CMAX - CMIN ) + CMIN Hが180~240の場合 R = CMIN G = ( ( 240 - H ) ÷ 60 ) × ( CMAX - CMIN ) + CMIN B = CMAX Hが240~300の場合 R = ( ( H - 240 ) ÷ 60 ) × ( CMAX - CMIN ) + CMIN G = CMIN B = CMAX Hが300~360の場合 R = CMAX G = CMIN B = ( ( 360 - H ) ÷ 60 ) × ( CMAX - CMIN ) + CMIN
計算されたRGB値の範囲は0.0~255.0になります。
まとめ
HSVに関するコンテンツ
「HSV」に関係があるコンテンツをまとめています。
- アルファ値(透過)
- 2値化
- 2値化 その2
- 色見本
- 光と色の3原色
- テーブルによる色変換 その1
- カラーマップ
- 色をARGB値に分解
- 画像の新規作成
- 画像の新規作成 その2
- 縁付き画像変換
- エッジ(境界)検出
- 画像の2倍拡大
- グラデーション画像(横方向)
- グラデーション画像(放射状)
- グラデーション画像(4隅の色)
- グレースケール変換
- より自然なグレースケール変換
- 8ビットのグレースケールに変換
- 画像の色
- 画像ファイル形式
- 画像処理とは
- RGBの平均値
- インデックスカラー
- 画像をセピア色にする
- 画像の一部を切り出す
- 画像を操作するクラスの作成
- N値化
- 画像の色反転
- ノイズ画像の作成
- 画像にノイズを加える
- 正確な割合のノイズ画像作成
- 指定色の画素数取得
- 画像をぼかす
- 空間フィルタリング
- 非圧縮