RGB to HLS

Last-modified: 2008-12-02 (火) 03:39:41

HLS

以下にHLSの返還式を載せます

定義と成り立ち

オストワルト表色系に基づいた双六角錐の表色系です。

HSLと基本的に同義ですが、HLSのL=lightness、HSLのL=luminanceと別のものと考えることもあるようです。

各成分の意味

H:色相(hue)

L:明度(lightness)

S:彩度(saturation)

各成分の範囲

H:[0..359 degrees](ただし赤が0degrees)

L:[0.0..1.0]

S:[0.0..1.0]

R:[0.0..1.0]

G:[0.0..1.0]

B:[0.0..1.0]

返還式

RGB => HLS

MAX = max(R,G,B);

MIN = min(R,G,B);

L = (MAX + MIN)/2;

MAX == MINの場合

S = 0

H = 0

MAX = MIN以外の場合

L <= 0.5 : S = (MAX - MIN )/(MAX + MIN)

L > 0.5 : S = (MAX - MIN )/(2 -MAX - MIN)

Cr = (MAX - R) / (MAX - MIN);

Cg = (MAX - G) / (MAX - MIN);

Cb = (MAX - B) / (MAX - MIN);

R == MAX : H = Cb -Cg;

G == MAX : H = 2 + Cr -Cb;

B == MAX : H = 4 + Cg -Cr;

H = 60 x H

H < 0

H = H + 360

HLS => RGB

MAX = L * (1 +S) L <= 0.5

MAX = L * (1 - S) + S L > 0.5

MIN = 2 * L -MAX

S == 0の場合

R = G = B = L

S == 0以外の場合

h = H + 120

h >= 360 : h = h - 360

0 <= h < 60 : R = MIN + (MAX - MIN ) * h/60

60 <= h < 180 : R = MAX

180 <= h < 240 : R = MIN + (MAX - MIN ) * (240 - h)/60

240 <= h < 360 : R = MIN

h = H

0 <= h < 60 : G = MIN + (MAX - MIN ) * h/60

60 <= h < 180 : G = MAX

180 <= h < 240 : G = MIN + (MAX - MIN ) * (240 - h)/60

240 <= h < 360 : G = MIN

h = H - 120

h < 0 : h = h + 360

0 <= h < 60 : B = MIN + (MAX - MIN ) * h/60

60 <= h < 180 : B = MAX

180 <= h < 240 : B = MIN + (MAX - MIN ) * (240 - h)/60

240 <= h < 360 : B = MIN