カテゴリー:
色変換
閲覧数:1050 配信日:2016-05-22 10:30
前提
最も大きな値
・MAX
最も小さな値
・MIN
H
Rが最大値の場合
・色相 H = 60 × ((G - B) ÷ (MAX - MIN))
Gが最大値の場合
・色相 H = 60 × ((B - R) ÷ (MAX - MIN)) +120
Bが最大値の場合
・色相 H = 60 × ((R - G) ÷ (MAX - MIN)) +240
3つとも同じ値の場合
・色相 H = 0
※求められた色相がマイナス値だった場合
・360を加算して0~360の範囲に収める
S
収束値
収束値 CNT = (MAX + MIN) ÷ 2
変動幅収束値 CNTが127以下の場合 変動幅 = CNT
収束値 CNTが128以上の場合 変動幅 = 255 - CNT
計算式収束値 CNTが128以上の場合 変動幅 = 255 - CNT
・0%から100%までの変動幅が分かれば、後は(現在値-収束値)/変動幅で彩度を求めることが可能
収束値 CNTが127以下の場合 彩度 S = (CNT - MIN) ÷ CNT
= 2(CNT - MIN) ÷ 2CNT
= (MAX + MIN - 2MIN) ÷ (MAX + MIN)
= (MAX - MIN) ÷ (MAX + MIN)
収束値 CNTが128以上の場合 彩度 S = (MAX - CNT) ÷ (255 - CNT)
= 2(MAX - CNT) ÷ 2(255 - CNT)
= 2MAX - MAX - MIN ÷ (510 - MAX - MIN)
= (MAX - MIN) ÷ (510 - MAX - MIN)
= 2(CNT - MIN) ÷ 2CNT
= (MAX + MIN - 2MIN) ÷ (MAX + MIN)
= (MAX - MIN) ÷ (MAX + MIN)
収束値 CNTが128以上の場合 彩度 S = (MAX - CNT) ÷ (255 - CNT)
= 2(MAX - CNT) ÷ 2(255 - CNT)
= 2MAX - MAX - MIN ÷ (510 - MAX - MIN)
= (MAX - MIN) ÷ (510 - MAX - MIN)
最終的な彩度計算式
収束値 CNT = (MAX + MIN) ÷ 2
収束値 CNTが127以下の場合 彩度 S = (MAX - MIN) ÷ (MAX + MIN)
収束値 CNTが128以上の場合 彩度 S = (MAX - MIN) ÷ (510 - MAX - MIN)
収束値 CNTが127以下の場合 彩度 S = (MAX - MIN) ÷ (MAX + MIN)
収束値 CNTが128以上の場合 彩度 S = (MAX - MIN) ÷ (510 - MAX - MIN)
L
輝度 L = (MAX + MIN) ÷ 2
・RGBとHSLの相互変換ツールと変換計算式