## Wednesday, 20 February 2013

### HSL/HSV/HSI Blog

Cylindrical Coordinate System:-Cylindrical co-ordinate system is a three dimensional co-ordinate system that specifies point positions by the distance from a chosen reference axis,the direction from the axis relative to a chosen reference direction & the distance from a chosen reference plane perpendicular to the axis.The latter distance is given as a positive or negative no depending on which side of reference plane faces the point.
HSL & HSV are the two most common cylindrical co-ordinate system.HSL & HSV are developed  in 1970.They are widely used today in color pickers in image editing software,less commonly in image analysis
& computer vision.

HSV:-HSV stands for Hue,saturation & value.often also called HSB ,B for brightness. It is also called hex cone model.
HSL:- HSL stands for hue,saturation & light ,often also callled HLS.It is also called double hex cone model.

*We can calculate Chroma from RGB with the following formula :-

\begin{align} M &= \operatorname{max}(R, G, B) \\ m &= \operatorname{min}(R, G, B) \\ C &= M - m \end{align}

*We can calculate Hue from RGB with the following formula :-

\begin{align} H^\prime &= \begin{cases} \mathrm{undefined}, &\mbox{if } C = 0 \\ \frac{G - B}{C} \;\bmod 6, &\mbox{if } M = R \\ \frac{B - R}{C} + 2, &\mbox{if } M = G \\ \frac{R - G}{C} + 4, &\mbox{if } M = B \end{cases} \\ H &= 60^\circ \times H^\prime \end{align}

*We can calculate Lightness from following formula :-

(i)In the HSI model intensity is defined as average of three components:

I = 1/3(R+G+B)

(ii)In the HSV "hexcone" model value is defined as the largest component of color.

V=M=max(R,G,B)
(iii)In the bi-hexcone model lightness is defined as the average of largest & smallest color component.

L= 1/2(M+m)

(iv)Luma is the weighted average of gamma corrected R,G & B

$Y^\prime_{601} = 0.30R + 0.59G + 0.11B\,\!$

* Following are the formula for the saturation for HSV,HSL & HSI:-

\begin{align} S_{HSV} &= \begin{cases} 0, &\mbox{if } C = 0 \\ \frac{C}{V}, &\mbox{otherwise} \end{cases} \\ S_{HSL} &= \begin{cases} 0, &\mbox{if } C = 0 \\ \frac{C}{1 - |2L - 1|}, &\mbox{otherwise} \end{cases} \end{align}

$S_{HSI} = \begin{cases} 0, &\mbox{if } C=0 \\ 1 - \frac{m}{I}, &\mbox{otherwise} \end{cases}$

Uses of HSI,HSV & HSL:-HSI ,HSV & HSL are often used computer vision,Image analysis for feature detection & image segmentation.It is used in robot vision ,object recognition,content based image analysis & analysis of medical images.It is also used in color pickers of image editors.

HSL to RGB:-
For converting HSL to RGB ,First of all ,we need to compute chroma:-

C = \begin{align} (1 - \left\vert 2 L - 1 \right\vert) \times S_{HSL} \end{align}

where C is Chroma
L for Lightness
Shsl for saturation

Next,we find the point on one of the bottom three faces of the RGB cube which has the same hue & chroma as our color.

\begin{align} H^\prime &= \frac{H}{60^\circ} \\ X &= C (1 - |H^\prime \;\bmod 2 - 1|) \end{align}

$(R_1, G_1, B_1) = \begin{cases} (0, 0, 0) &\mbox{if } H \mbox{ is undefined} \\ (C, X, 0) &\mbox{if } 0 \leq H^\prime < 1 \\ (X, C, 0) &\mbox{if } 1 \leq H^\prime < 2 \\ (0, C, X) &\mbox{if } 2 \leq H^\prime < 3 \\ (0, X, C) &\mbox{if } 3 \leq H^\prime < 4 \\ (X, 0, C) &\mbox{if } 4 \leq H^\prime < 5 \\ (C, 0, X) &\mbox{if } 5 \leq H^\prime < 6 \end{cases}$

Finally ,we add the equal amounts of R,G & B to reach the proper value.

\begin{align} &m = L - \textstyle{\frac{1}{2}}C \\ &(R, G, B) = (R_1 + m, G_1 + m, B_1 + m) \end{align}

HSV to RGB:-

For converting HSV to RGB ,First of all ,we need to compute chroma,by multiplying saturation by the maximum chroma for a given value.

where C is Chroma
V for value
Shsv for saturation

Next,we find the point on one of the bottom three faces of the RGB cube which has the same hue & chroma as our color.

\begin{align} H^\prime &= \frac{H}{60^\circ} \\ X &= C (1 - |H^\prime \;\bmod 2 - 1|) \end{align}

$(R_1, G_1, B_1) = \begin{cases} (0, 0, 0) &\mbox{if } H \mbox{ is undefined} \\ (C, X, 0) &\mbox{if } 0 \leq H^\prime < 1 \\ (X, C, 0) &\mbox{if } 1 \leq H^\prime < 2 \\ (0, C, X) &\mbox{if } 2 \leq H^\prime < 3 \\ (0, X, C) &\mbox{if } 3 \leq H^\prime < 4 \\ (X, 0, C) &\mbox{if } 4 \leq H^\prime < 5 \\ (C, 0, X) &\mbox{if } 5 \leq H^\prime < 6 \end{cases}$

Finally ,we add the equal amounts of R,G & B to reach the proper value.

\begin{align} &m = V - C \\ &(R, G, B) = (R_1 + m, G_1 + m, B_1 + m) \end{align}

Luma/Chroma/Hue to RGB:-

Here we already have Hue & Chroma so we use same strategy:-

\begin{align} H^\prime &= \frac{H}{60^\circ} \\ X &= C (1 - |H^\prime \;\bmod 2 - 1|) \end{align}

$(R_1, G_1, B_1) = \begin{cases} (0, 0, 0) &\mbox{if } H \mbox{ is undefined} \\ (C, X, 0) &\mbox{if } 0 \leq H^\prime < 1 \\ (X, C, 0) &\mbox{if } 1 \leq H^\prime < 2 \\ (0, C, X) &\mbox{if } 2 \leq H^\prime < 3 \\ (0, X, C) &\mbox{if } 3 \leq H^\prime < 4 \\ (X, 0, C) &\mbox{if } 4 \leq H^\prime < 5 \\ (C, 0, X) &\mbox{if } 5 \leq H^\prime < 6 \end{cases}$

Finally ,we add the equal amounts of R,G & B to reach the proper value.

\begin{align} &m = Y^\prime_{601} - (.30R_1 + .59G_1 + .11B_1) \\ &(R, G, B) = (R_1 + m, G_1 + m, B_1 + m) \end{align}