HSV

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Tento článek pojednává o barevném modelu. Další významy jsou uvedeny v článku HSV (rozcestník).
Grafické zobrazení HSV

HSV (Hue, Saturation, Value), také známý jako HSB (Hue, Saturation, Brightness), je barevný model, který vytvořil v roce 1978 Alvy Ray Smith. Tento barevný model nejvíce odpovídá lidskému vnímání barev. Sestávající ze tří složek (nejsou to základní barvy), u nichž je nutno hlídat hodnoty (možné nesmyslné kombinace):

  • Hue - barevný tón, převládající. Neboli odstín - barva odražená nebo procházející objektem. Měří se jako poloha na standardním barevném kole (0° až 360°). Obecně se odstín označuje názvem barvy.
  • Saturation - sytost barvy, příměs jiné barvy. Někdy též chroma, síla nebo čistota barvy, představuje množství šedi v poměru k odstínu, měří se v procentech od 0% (šedá) do 100% (plně sytá barva). Na barevném kole vzrůstá sytost od středu k okrajům. Např. červená s 50% sytostí bude růžová.
  • Value - hodnota jasu, množství bílého světla. Relativní světlost nebo tmavost barvy. Jas vyjadřuje kolik světla barva odráží, dalo by se také říct přidávání černé do základní barvy.

HSL, HSV a SSB[editovat | editovat zdroj]

HSL mapované do koule (s vyříznutým rohem)

HSL a HSV (také nazývané HSB) jsou dvě příbuzné reprezentace bodů v barevném prostoru RGB, který se pokouší popisovat vnímání barevných vztahů přesněji než RGB, přesto zůstává vypočtově jednoduchý. HSL stojí na odstínu, saturaci, světlosti, zatímco HSV stojí na odstínu, saturaci, hodnotě a HSB stojí na odstínu, saturaci, jasu.

HSL i HSV popisují barvy jako body ve válci jehož centrální osa sahá od černé až dolů k bílé a nahoru k neutrální barvě mezi nimi, kde úhel kolem osy odpovídá „odstínu“, vzdálenost od osy odpovídá „saturaci“, a vzdálenost podél osy odpovídá „světlosti“, „hodnotě“ nebo „jasu“.

Tyto dvě reprezentace jsou podobné v účelu, ale liší se poněkud v přístupu. Oba jsou matematicky válcovité, ale zatímco HSV (odstín, saturace, hodnota) můžou být myšleny jako převrácený kužel barev (s černým bodem dole, a plně syté barvy kolem kruhu nahoře), HSL reprezentuje dvojitý kužel nebo koule (s bílou nahoře, černou dole, a syté barvy kolem okraje vodorovného typického vzorku s šedým středem). Všimněte si chvíle, kdy se „odstín“ v HSL a HSV odkazuje na stejný atribut, jejich definice „saturace“ se liší dramaticky.

Použití[editovat | editovat zdroj]

HSV kruh umožňuje rychle vybrat množství barev.

Model HSV je obvykle používán v grafických aplikacích, když je potřeba změnit barvu působící specifický grafický element. K tomu se používá HSV kruh (trojúhelník). Je vzhled je prezentován oběžnou oblastí a separovanou trojhrannou oblastí. Typicky vertikální osy trojúhelníka ukazují nasycení, zatímco horizontální osy korespondující hodnoty. Takto může být barva vybrána prvním výběrem z kruhové oblasti a poté výběrem požadovaného nasycení a hodnoty z trojúhelníkové oblasti.

Kuželová (konická) reprezentace HSV modelu je vhodná k zobrazení celého HSV barevného prostor v jediném objektu.

Další vizualizační metoda HSV modelu je kužel. V této prezentaci je odstín líčen jako trojrozměrné konické tvoření barevného kola. Saturace je reprezentována vzdáleností od centra kruhového průřezu kuželem a hodnota je vzdálenost od špičatého konce kužele. Některé reprezentace používají šestiúhelníkový kužel, místo kruhového kužele. Tato metoda je vhodná k zobrazení celého HSV barevného prostoru v jediném objektu; nicméně, kvůli jeho trojrozměrnému prostředí, to není vhodné k výběru barvy v dvojrozměrných počítačových rozhraních.

Motivace[editovat | editovat zdroj]

Umělci dříve preferovali k použití barevný model HSV víc než modely jako RGB nebo CMYK, protože tento barevný model (HSV) více odpovídá lidskému vnímání barev. RGB a CMYK jsou aditivní a subtraktivní modely, samostatně definující barvy v podmínkách kombinující barvy primární. Podobným barevným modelem je HSL.

Přeměna z HSV k RGB[editovat | editovat zdroj]

HSL je podobný HSV. Pro některé lidi, HSL lépe odráží intuitivní ponětí o „saturaci“ a „světlosti“ jako o dvou nezávislých parametrech, ale pro ostatní je jeho definice saturace špatná, jako například u velmi pastelových barev, téměř bílá barva může být vymezena jak úplně nasycená v HSL. To by mohlo být sporné, jestliže HSV nebo HSL je více vhodný pro použití v lidských uživatelských rozhraních.

Výhody HSL jsou v symetričnosti světlosti a tmy, to znamená:

  • V HSL, komponenta saturace jde vždy od plně plné barvy k ekvivalentu šedé (v HSV, s V na maximum, to jde od syté barvy k bílé).
  • Světlost v HSL vždy měří celé rozmezí od černé přes zvolený odstín až k bílé (v HSV, V komponenta jde poloviční cestou, od černé k volenému odstínu).

V softwaru, odstínem založený barevný model (HSV nebo HSL) je obvykle představován uživateli ve formě lineárního nebo kruhového odstínového výběru a dvojrozměrné oblasti (obvykle čtverec nebo trojúhelník) kde si můžete vybrat saturaci a hodnotu světlosti pro vybraný odstín. S touto reprezentací je rozdíl mezi HSV a HSL vedlejší. Nicméně mnoho programů vás nechá si vybrat barvu přes lineární posouvátka nebo numerický vstup a pro ty je obvykle používán jeden z HSL nebo HSV (ne oba) modelů. HSV je tradičně více používání.

Tady jsou některé příklady:

Srovnání s jinými barevnými modely[editovat | editovat zdroj]

HSV prostor (tristimulus) technicky nepodporuje osobní mapování k psychickému zobrazovacímu zařízení (je elektrickému spektru měřeném v radiometrii). Není obecně moudré pokoušet se dělat přímá srovnání mezi HSV osami a fyzickými vlastnostmi jako je vlnová délka nebo amplituda.

Formální specifikace[editovat | editovat zdroj]

RGB obraz Johna Moultona -představa o stodole na základně rozsahu Tenton, podél s jeho H, S a L komponenty.
obraz, podél s jeho H, S a V komponenty. Porovnejte tmavý na levé straně střechy stodoly a bělosti sněhu; jeden je hodně ostřejší než jiný, tito se blíží neutrálním barvám oba mají nízkou saturaci. Poznamenáváme, že zelená tráva je velmi naplněna jasností, zatímco modrá hora má stejný odstín, ale lze měnit jasnost a saturaci a obloha má konstantní odstín a jasnost, ale mění saturaci.

HSL a HSV jsou definovány matematicky transformováním souřadnic R, G, a B z barevného prostoru RGB.

Přeměna z RGB do HSL nebo HSV[editovat | editovat zdroj]

ilustrace vztahu mezi „odstínem“ barev s maximální saturací v HSV a HSL s jejich odpovídáním RGB.

Složky r, g, b jsou příslušně červená, zelená a modrá osa barvy, jejichž hodnoty jsou reálná čísla mezitím 0 a 1. Maximální hodnota se rovná největší r, g a b. Minimální hodnota se rovná nejmenší z těchto hodnot. Následně se spočítají hodnoty (h, s, l) v HSL prostoru, kde h ∈ [0, 360) je úhel odstínu v mírách, a s, l ∈ [0,1] jsou saturace a světlost. Vypočítáme:


h =
\begin{cases}
\mbox{nedefinovan}, & \mbox{jestlize } max = min \\
60^\circ \times \frac{g - b}{max - min} + 0^\circ,   & \mbox{jestlize } max = r \mbox{ a } g \ge b \\
60^\circ \times \frac{g - b}{max - min} + 360^\circ,   & \mbox{jestlize } max = r \mbox{ a } g < b \\
60^\circ \times \frac{b - r}{max - min} + 120^\circ, & \mbox{jestlize } max = g \\
60^\circ \times \frac{r - g}{max - min} + 240^\circ, & \mbox{jestlize } max = b
\end{cases}
l = \begin{matrix} \frac{1}{2} \end{matrix} (max + min)

s = 
\begin{cases}
0, & \mbox{jestlize } l = 0 \mbox{ nebo } max = min \\
\frac{max-min}{max+min} = \frac{max-min}{2l}, & \mbox{jestlize } 0 < l \leq \frac{1}{2} \\
\frac{max-min}{2-(max+min)} = \frac{max-min}{2-2l}, & \mbox{jestlize } l > \frac{1}{2}
\end{cases}

Hodnota h je obecně normalizována na interval 0 až 360°. Hodnota h = 0 je používána, když se maximální hodnota rovná minimální místo toho, aby se h stalo nedefinované. HSL a HSV má stejnou definici odstínu, ale ostatní součásti se liší. Hodnoty pro s a v pro HSV jsou barvy definovány takto:

s = 
\begin{cases}
0, & \mbox{if } max = 0 \\
\frac{max - min}{max} = 1 - \frac{min}{max}, & \mbox{jinak}
\end{cases}
v = max \,

Přeměna z HSL do RGB[editovat | editovat zdroj]

Daná barva vymezila hodnoty (h, s, l) v prostoru HSL, s h v dosahu [0, 360), ukazatel úhlu, v mírách odstínu, a s s a l v dosahu [0, 1], reprezentovat saturaci a světlost, příslušně odpovídající tripletu (r, g, b) v prostoru RGB, s r, g, a b také v dosahu [0, 1], a odpovídající červené, zelené a modré příslušně, můžeme počítat takto:

Nejprve, jestliže s = 0, pak je výsledná barva bezbarvá nebo šedá. V tomto zvláštním případě se všechny složky r, g, a b rovnají l. Všimněte si, že tato hodnota je v této situaci nedefinovaná.

Když s ≠ 0, k postupu může být použito toto:

q=
\begin{cases}
l \times (1+s), & \mbox{if } l < \frac{1}{2} \\
l+s-(l \times s), & \mbox{if } l \ge \frac{1}{2}
\end{cases}
p = 2 \times l - q \,
h_k = {h \over 360} \, (h normalizováno v rozmezí [0,1))
t_R = h_k+\frac{1}{3} \,
t_G = h_k \,
t_B = h_k-\frac{1}{3} \,
\mbox{if } t_C < 0 \rightarrow t_C = t_C + 1.0 \quad \mbox{pro kazde}\,C \in \{R,G,B\}
\mbox{if } t_C > 1 \rightarrow t_C = t_C - 1.0 \quad \mbox{pro kazde}\,C \in \{R,G,B\}

Pro každý barevný vektor - barva = (barvaR, barvaG, barvaB) = (r, g, b),

{Barva}_C =
\begin{cases}
p+ \left((q-p) \times 6 \times t_C\right), & \mbox{if } t_C < \frac{1}{6}  \\
q, & \mbox{if } \frac{1}{6} \le t_C < \frac{1}{2}  \\
p+\left((q-p) \times 6 \times (\frac{2}{3} - t_C) \right), & \mbox{if } \frac{1}{2} \le t_C < \frac{2}{3} \\
p, & \mbox{jinak }
\end{cases}
\mbox{pro kazdou}\,barvu \in \{R,G,B\}

Přeměna z HSV do RGB[editovat | editovat zdroj]

Podobně, daná barva vymezila hodnoty (h, s, v) v prostoru HSV, s h jak je uvedeno výše, a s s a v v rozmezí mezi 0 a 1, reprezentují saturaci a hodnotu. Odpovídající složky (r, g, b) v RGB prostoru mohou být počítány takto:

h_i = \left\lfloor \frac{h}{60} \right\rfloor \mod 6
f = \frac{h}{60} - h_i
p = v \times (1 - s) \,
q = v \times (1 - f \times s) \,
t = v \times (1 - (1 - f) \times s) \,

Pro každý barevný vektor (r, g, b):

(r, g, b) = 
\begin{cases}
(v, t, p), & \mbox{if } h_i = 0  \\
(q, v, p), & \mbox{if } h_i = 1  \\
(p, v, t), & \mbox{if } h_i = 2  \\
(p, q, v), & \mbox{if } h_i = 3  \\
(t, p, v), & \mbox{if } h_i = 4  \\
(v, p, q), & \mbox{if } h_i = 5  \\
\end{cases}

Terminologie[editovat | editovat zdroj]

Požadavky připsané ke složce „L“ v barevného prostoru HSL můhou být klamné tam, kde se požadují barevné vědní definice termínů.

  • Světlost – se odkazuje na vnímanou odraznost povrchu.
  • Světelnost - typicky (a nesprávně) se odkazuje na poměrný jas. Toto použití bylo programováno v programu Adobe Photoshop; v dokumentaci CS3 verze, režim světelnosti směšováním ho prezentuje, ale je popisován v podmínkách jasu: „Světelnost: Vytvoří barvu výsledku s odstínem a saturací barvy základu a luminance míchat barvu.“

Příklad[editovat | editovat zdroj]

RGB hodnoty jsou v rozsahu od 0.0 do 1.0.

RGB HSL HSV Výsledek
(1, 0, 0) (0°, 1, 0.5) (0°, 1, 1)  
(0.5, 1, 0.5) (120°, 1, 0.75) (120°, 0.5, 1)  
(0, 0, 0.5) (240°, 1, 0.25) (240°, 1, 0.5)