0% found this document useful (0 votes)
35K views4 pages

1 Converting RGB To HSV

1. The document describes the process of converting between RGB (red, green, blue) and HSV (hue, saturation, value) color models. It involves calculating hue, saturation, and value based on the maximum and minimum color channel values. 2. To convert to HSV, the hue is determined by which channel is highest, the saturation is the color difference divided by value, and value is the highest channel. 3. To convert to RGB, the hue angle is used to determine which channel should be highest in the resulting color, with the other two channels calculated relative to the value and saturation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35K views4 pages

1 Converting RGB To HSV

1. The document describes the process of converting between RGB (red, green, blue) and HSV (hue, saturation, value) color models. It involves calculating hue, saturation, and value based on the maximum and minimum color channel values. 2. To convert to HSV, the hue is determined by which channel is highest, the saturation is the color difference divided by value, and value is the highest channel. 3. To convert to RGB, the hue angle is used to determine which channel should be highest in the resulting color, with the other two channels calculated relative to the value and saturation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

1 Converting RGB to HSV

We start out by retrieving the red (R), green (G), blue (B) values, in a scale
from 0 to 1, inclusively, as well as the largest and smallest of the R, G, B,
values, and the difference between the two.
The ”scalex ” variable, below, represents the channel scale, e.g. 255.

R0 G0 B0
R= ,G = ,B = (1)
scaler scaleg scaleb
mmax = max(R, G, B) (2)
mmin = min(R, G, B) (3)
∆ = mmax − mmin (4)
(5)

Now, we get the hue, H, value. To do that, we look at the largest of the R,
G, B, values. The smallest two are subtracted off, and divided by the difference
between the largest and the smallest. We then normalize the hue by adding
either 0, 2, or 4. The resulting H is any real number. However, any arbitrary
number below 0, and above 6 is considered redundant, and you may as well
derive a value H mod 6, or if H is negative, then (H mod 6) + 6, but it’s not
necessary, since a relatively decent HSV to RGB conversion algorithm should
be able to work with any values of H.


 undefined, if ∆ = 0
 G−B

∆ if mmax = R
H= B−R (6)

 ∆ +2 if mmax = G
R−G
+4 if mmax = B


0
H = H × scaleh (7)

The brightness, V , is based on the brightest colour channel.

V = mmax (8)
0
V = V × scalev (9)
(10)

The saturation, S, is the difference between the largest and smallest colour
channel values, divided by the brightness, V . If V is 0, then the resulting
saturation is 0.


0, if V = 0
S= ∆ (11)
V otherwise
S 0 = S × scales (12)

1
2 Converting HSV to RGB
First, we get the hue (H), saturation (S), brightness (V ), where H is in a scale
between 0 to 6 inclusively, and S and V in a scale between 0 to 1.
Incidentally, the brightness, V , also happens to represent the brightest chan-
nel in our resulting RGB colour.


 undefined
 if H 0 is undefined
H0
H= ( scaleh mod 6) + 6 if H 0 < 0 (13)
0
 H mod 6

otherwise
scaleh
S0 V0
S= ,V = (14)
scales scalev
Next, get some channel values in decreasing brightness. Whether any of the
below α, β, γ values represent either red, green, or blue, will be decided shortly
afterwards.

α = V × (1 − S) (15)

undefined if His undefined
β= (16)
V × (1 − (H − bHc) × S) otherwise

undefined if His undefined
γ= (17)
V × (1 − (1 − (H − bHc)) × S) otherwise

Now, you can imagine a colour wheel—represented by figure 1 (on the next
page)—and H, being a magnitude from 0 to 6 of the rotation within the wheel.
When H is less than 1, then the colour is more red leaning. Hence, below, you
see that the brightest value in the resulting (R, G, B) triple will be R = V .
When it is greater than 1 and less than 2, then G = V will be the largest, and
so on, and so fourth.



 (V, V, V ) if H is undefined
(V, γ, α) if 0 ≤ H < 1




 (β, V, α) if 1 ≤ H < 2


(R, G, B) = (α, V, γ) if 2 ≤ H < 3 (18)
(α, β, V ) if 3 ≤ H < 4




(γ, α, V ) if 4 ≤ H < 5




(V, α, β) if 5 ≤ H < 6

(R0 , G0 , B 0 ) = (R × scaler , G × scaleg , B × scaleb ) (19)

2
Figure 1: The colour represented by 0 degrees is red. By 60, yellow; 120, green;
180, cyan; 240, blue; 300, magenta. [1]

3
[1] http://www.hobbitsandhobos.com/wp-content/uploads/2011/06/colorWheel.png

You might also like