# HSV (kleurruimte)

HSV (van het Engels: hue, saturation, value) of KVW (Nederlands: kleurtoon, verzadiging, waarde) is een model om kleuren te kunnen beschrijven, met name in verband met de andere kleurruimte RGB. Omdat de beschrijving in drie dimensies gebeurt, spreekt men van een kleurruimte. Ditzelfde model wordt ook aangeduid met HSB (voor hue, saturation, brightness) of KVH (Nederlands: kleurtoon, verzadiging, helderheid).
De HSV-kleurruimte werd in 1978 opgezet door Alvy Ray Smith. Het is een niet-lineaire omzetting vanuit de kleurruimte RGB. 'HSV' en 'HSB' zijn twee namen voor ditzelfde model, echter HSL is een ander model.

## Drie dimensies

De volgende drie componenten, die onafhankelijk van elkaar vastgesteld kunnen worden, bepalen samen de kleur:
* Hue (Nederlands: tint of toon), is wat we gewoonlijk 'kleur' noemen, zeg een punt op de regenboog.
       In het HSV-model wordt de kleur uitgezet op een cirkel, en wordt de plek aangeduid in graden: hue loopt dus van 0 tot 360 (graden).
* Saturation (Nederlands: verzadiging) dit geeft een hoeveelheid (of felheid) van een kleur aan.
       Wordt uitgedrukt in procenten, en loopt van 0% (flets, grijs) naar 100% (volle kleur).
* Value of brightness (Nederlands: intensiteit): staat voor de lichtheid van de kleur.
       Wordt uitgedrukt in procenten, en loopt van 0% (zwart) naar 100% (wit).

## Weergave van het HSV-model

Het HSV-model wordt vaak gebruikt in computergebaseerd grafisch ontwerpen. De ontwerper kiest eerst de 'volle kleur' (hue) uit de kleurcirkel, en kan daarna de andere twee nuances (saturation en value) aangeven. Deze werkwijze sluit gewoonlijk aan bij het ontwerpproces, waarbij de basiskleur bepalend is. Na een dergelijk ontwerpkeuze is de technische omzetting naar RGB-waarden een eenduidige berekening.

## HSV en de menselijke kleurindruk

Een voordeel van HSV boven andere kleurruimtes als RGB of CMYK is dat HSV sterker overeenkomt met hoe mensen kleuren zien. RGB en CMYK gaan uit van basiskleuren (in licht of pigment) die gemengd worden. Voor beeldscherm of drukwerk is dit nuttig, maar het menselijk oog en de menselijke indruk is eerder gebaseerd op de drie HSV-dimensies (voor de mens: kleurnaam, helderheid, grijsheid). In dit opzicht is de kleurruimte HSL zelfs nog beter.

## Omzetting van RGB naar HSV

Voor deze omzetting geldt het volgende:
* De RGB-kleuren R, G, B hebben elk een waarde 0,0 - 1,0 (niet hexadecimaal 00 - FF)
* MAX en MIN zijn respectievelijk maximum en minimum van deze drie waarden (R, G, B).
* De drie waarden in H, S, V zijn dan als volgt te bepalen:
    $H=\left\{{\begin{matrix}\left(0+{\frac {G-B}{MAX-MIN}}\right)\times 60,&{\mbox{if }}R=MAX\\\left(2+{\frac {B-R}{MAX-MIN}}\right)\times 60,&{\mbox{if }}G=MAX\\\left(4+{\frac {R-G}{MAX-MIN}}\right)\times 60,&{\mbox{if }}B=MAX\end{matrix}}\right.$
    $S={\frac {MAX-MIN}{MAX}}$
    $V=MAX\,$
De resulterende waarden zijn H (0,0 - 360,0; of vaker rond = modulo 360), S en V (ieder 0,0 - 1,0).
Bijzondere uitkomsten:
    Als MAX = MIN, dan is S = 0. Dit is een grijskleur, waarin geen tint (H) zichtbaar is. Dit kan dan elke tint zijn zonder effect.
    Als MAX = 0 dan is V = 0. Dit is zwart, en zowel tint als verzadiging hebben geen effect. 'Er is maar één kleur zwart'.

## Omzetting van HSV naar RGB

De omzetting in deze richting verloopt als volgt:
* Een HSV-kleur heeft de waarden $H\in [0,360]$, $S\in [0,1]$ en $V\in [0,1]$.
* De RGB-waarden R, G en B zijn dan als volgt te bepalen:
* Als S = 0: R = G = B = V. Dit is een grijswaarde, H is irrelevant (kan alles zijn, is niet zichtbaar).
* Als S ≠ 0:
    $H_{i}=\left\lfloor {\tfrac {H}{60}}\right\rfloor$
    $f={\tfrac {H}{60}}-H_{i}$
    ${\begin{array}{rl}p&=V(1-S)\\q&=V(1-fS)\\t&=V\left(1-(1-f)S\right)\\\end{array}}$
    En gebruik dan de volgende tabel voor toekenning van RGB-waarden:
    H$_i$RGB 0Vtp 1qVp 2pVt 3pqV 4tpV 5Vpq
R, G en B zijn $\in [0,1]$. Dit kan eenvoudig worden omgezet naar 24-bits RGB door elke waarde te vermenigvuldigen met 255.

## Omzetting naar radiogolven

De HSV-kleurruimte heeft geen 1-op-1-vertaling met het warmteniveau zoals dat gemeten kan worden in met radiometrie, en die beschreven wordt in golflengtes en amplitudes. Maar er is wel een indicatieve benadering te geven:
* Hue (tint) is de dominante golflengte;
* Desaturation (non-verzadiging, dat wil zeggen grijsheid) is de spreiding om de dominante golflengte;
* Value (helderheid) is weergave van de amplitude.