RGB โ HSL ๋ณํ๊ธฐ๋?
์ด ๋๊ตฌ๋ RGB ๋ชจ๋ธ(๋นจ๊ฐยท์ด๋กยทํ๋, ๊ฐ 0~255)๋ก ํํ๋ ์์์ HSL ๋ชจ๋ธ(์์ยท์ฑ๋ยท๋ช ๋)๋ก ๋ณํํฉ๋๋ค. HSL์ ์์ ์์กฐ(Hue)์ ์ ๋ช ํจ(์ฑ๋), ๋ฐ๊ณ ์ด๋์ด ์ ๋(๋ช ๋)๋ฅผ ๋ถ๋ฆฌํด์ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ๋์์ด๋์๊ฒ ๋ ์ง๊ด์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด ๋ณํ์ ํน์ ๊ธฐ๊ธฐ๋ ๊ตญ๊ฐ์ ์ข ์๋์ง ์๋ ๋ณดํธ์ ์ธ ๊ณ์ฐ ๋ฐฉ์์ ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
๋ณํํ ์์์ ๋นจ๊ฐยท์ด๋กยทํ๋ ๊ฐ์ ๊ฐ๊ฐ 0~255 ์ฌ์ด๋ก ์
๋ ฅํ์ธ์. ๊ณ์ฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋์ํ๋ HSL ๊ฐ์ด ๋์ค๋ฉฐ, CSS์ hsl(H, S%, L%) ํ์์ผ๋ก ๋ฐ๋ก ๋ถ์ฌ ๋ฃ์ ์ ์์ต๋๋ค.
๋ณํ ๊ณต์ ์ค๋ช
๋จผ์ ๊ฐ ์ฑ๋์ 255๋ก ๋๋ 0~1 ๋ฒ์๋ก ์ ๊ทํํฉ๋๋ค. ์ธ ๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ max, ๊ฐ์ฅ ์์ ๊ฐ์ min์ด๋ผ ํ๊ณ \(\Delta = \max - \min\)์ผ๋ก ๋ก๋๋ค. ๋ช ๋๋ \(L = (\max + \min) / 2\) ์ ๋๋ค. ์ฑ๋๋ \(S = \Delta / (1 - \lvert 2L - 1 \rvert)\) ์ด๋ฉฐ, \(\Delta = 0\)์ผ ๋(์ฆ ํ์์ผ ๋)๋ 0์ด ๋ฉ๋๋ค. ์์(Hue)์ ์ด๋ ์ฑ๋์ด ๊ฐ์ฅ ํฐ์ง์ ๋ฐ๋ผ ๊ณ์ฐํ ๋ค 60ยฐ๋ฅผ ๊ณฑํ๊ณ , 0~360ยฐ ๋ฒ์๋ก ๋ง์ถฐ ์ค๋๋ค.
$$ L = \frac{C_{\max} + C_{\min}}{2}, \quad S = \frac{C_{\max} - C_{\min}}{1 - \lvert 2L - 1 \rvert} $$ $$ \text{where}\quad \left\{ \begin{aligned} R^{\prime} &= \frac{\text{Red}}{255}, \;\; G^{\prime} = \frac{\text{Green}}{255}, \;\; B^{\prime} = \frac{\text{Blue}}{255} \\ C_{\max} &= \max(R^{\prime}, G^{\prime}, B^{\prime}), \;\; C_{\min} = \min(R^{\prime}, G^{\prime}, B^{\prime}) \end{aligned} \right. $$ $$ H = 60^{\circ} \times \begin{cases} \dfrac{G^{\prime} - B^{\prime}}{\Delta} \bmod 6 & C_{\max} = R^{\prime} \\[0.6em] \dfrac{B^{\prime} - R^{\prime}}{\Delta} + 2 & C_{\max} = G^{\prime} \\[0.6em] \dfrac{R^{\prime} - G^{\prime}}{\Delta} + 4 & C_{\max} = B^{\prime} \end{cases} $$
๊ณ์ฐ ์์
ํ ๋งํ ๋ ๋ RGB(255, 99, 71)์ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ ๊ทํํ๋ฉด \(R=1\), \(G=0.388\), \(B=0.278\) ์ ๋๋ค. \(\max=1\), \(\min=0.278\), \(\Delta=0.722\) ๊ฐ ๋ฉ๋๋ค.
$$ L = (1 + 0.278)/2 = 0.639 \rightarrow 63.9\% $$ $$ S = \frac{0.722}{1 - \lvert 2 \cdot 0.639 - 1 \rvert} = \frac{0.722}{0.722} = 1 \rightarrow 100\% $$max๊ฐ R์ด๋ฏ๋ก
$$ H = 60 \times \left( \frac{0.388 - 0.278}{0.722} \right) = 60 \times 0.1525 \approx 9.13^{\circ} $$๊ฒฐ๊ณผ: hsl(9.13, 100%, 63.92%).
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
ํ์์ ์ ์ฑ๋๊ฐ 0์ธ๊ฐ์? ์ธ ์ฑ๋ ๊ฐ์ด ๋ชจ๋ ๊ฐ์ผ๋ฉด \(\Delta = 0\)์ด ๋์ด ์ ์ ๋ณด๊ฐ ์์ต๋๋ค. ์ด๋ ์ฑ๋๋ ์ํ์ ์ผ๋ก ์ ์๋์ง ์์ผ๋ฏ๋ก ๊ด๋ก์ ๋ฐ๋ผ 0์ผ๋ก ๋ก๋๋ค.
H, S, L ๊ฐ์ ๋ฐ์ฌ๋ฆผ๋๋์? ํ๋ฉด์๋ ์์์ ๋์งธ ์๋ฆฌ๊น์ง ํ์๋์ง๋ง, ์ค์ ๊ณ์ฐ๊ฐ์ ์ ์ฒด ์ ๋ฐ๋๋ฅผ ๊ทธ๋๋ก ์ ์งํฉ๋๋ค.
๋ค์ RGB๋ก ๋๋๋ฆด ์ ์๋์? ๋ค. HSL โ RGB๋ ์์ ๊ตฌ๊ฐ(sector)๊ณผ ์ฑ๋(chroma)๋ฅผ ์ด์ฉํ ์ญ๋ณํ ๊ณผ์ ์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค.