2013년 8월 22일 목요일

Converting RGB to HSV

Converting RGB to HSV

Given three numbers R, G, and B (each between 0 and 255), you can first define m and M with the relations

M = max{R, G, B}
m = min{R, G, B}.

And then V and S are defined by the equations

V = M/255
S = 1 - m/M     if M > 0
S = 0              if M = 0.

As in the HSI and HSL color schemes, the hue H is defined by the equations

H = cos-1[ (R - ½G - ½B)/√R² + G² + B² - RG - RB - GB ]            if G ≥ B, or
H = 360 - cos-1[ (R - ½G - ½B)/√R² + G² + B² - RG - RB - GB ]    if B > G.

Inverse cosine is calculated in degrees.

Converting HSV to RGB

Given the values of H, S, and V, you can first compute m and M with the equations

M = 255V
m = M(1-S).

Now compute another number, z, defined by the equation

z = (M-m)[1 - |(H/60)mod_2 - 1|],

where mod_2 means division modulo 2. For example, if H = 135, then (H/60)mod_2 = (2.25)mod_2 = 0.25. In modulo 2 division, the output is the remainder of the quantity when you divide it by 2.

Now you can compute R, G, and B according to the angle measure of H. There are six cases. When 0 ≤ H < 60,

R = M
G = z + m
B = m.

If 60 ≤ H < 120,

R = z + m
G = M
B = m.

If 120 ≤ H < 180,

R = m
G = M
B = z + m.

When 180 ≤ H < 240,

R = m
G = z + m
B = M.

When 240 ≤ H < 300,

R = z + m
G = m
B = M.

And if 300 ≤ H < 360,

R = M
G = m
B = z + m.

from
http://www.had2know.com/technology/hsv-rgb-conversion-formula-calculator.html