phaの日記

毎日寝て暮らしたい

RGBの数値と色相/彩度/明度の対応について

 色の要素とRGBの数値の続き。
 RGBの数値がどういう風に色相・彩度・明度(HSV)に対応するかは、たぶんこれを見ればいいんだな。

MAXを(R,G,B)値の最大値と等しく、MINをその最小値と等しいとする。この式は次のように書ける。
H(色相) = (記述がめんどいので省略。リンク先を見てください)
S(彩度) = MAX - MIN
V(明度) = MAX


※円錐モデル(リンク先参照)を使った場合

 色相はRGBのうち最大のものと最小のものとの数値の差と、最大のもの以外の2つの数値の差で決まる。
 彩度はRGBのうち最大のものと最小のものとの数値の差で決まる(円錐モデル)。
 明度はRGBのうち最大のものの数値で決まる。
 ということか。
 この計算方法だったら#cc0000と#ff3333なら、彩度は同じだけど明度が違うのね。
 (円錐モデルで考えることにしたのでちょっと書き直した)(円柱モデルより円錐モデルのほうが人間の視覚的実感に近いらしい)

#cc0000

#ff3333



 そう言われてみるとそんなもんか。
 この4つならどうなる?

#ff0000

#ff3333

#cc3333

#cc0000


#ff0000#ff3333#cc3333#cc0000
色相 0000
彩度 1 0.8125 0.625 0.8125
明度 1 1 0.8125 0.8125
※色相は0〜360の間の値を、彩度、明度は0〜1の間の値を取るとした場合の数値
※色相の計算はこれでいいのかな。Rが最大でG=Bだったら常に値は0となるのだけど、じゃあこの4つの色は全部色相一緒でいいのかな?

  • 明度はRGBのうち最大のものの値で決まる
    • RGBのうち最大のものの値を変えると明度が変わる。彩度も変わる。
    • RGBのうち、最大のもの以外の2つを変えなかったら色相は変わらない?
      • いや、数式から考えると、それが成り立つのは最大のもの以外の2つの数値が等しい場合だけなんじゃないか
      • 色相のうち「赤」「緑」「青」の3つ、RGBの数値で言うと最大値以外の2つの数値が等しい色相は、RGB表記をするに当たってはちょっと例外なのかな。例外的にわかりやすくなってる。他の色相はRGB空間の中でもうちょっとややこしい動きをするとかそんなん。
  • 彩度はRGBのうち最大のものの数値と最小のものの数値の差で決まる(円錐モデルの場合)