texto retirado da tese de Everest Mathias
>>>>
O espaço de cor HSV é uma forma natural e intuitiva para formação das cores, assim como o CIE-LAB e CIE-LUV. A transformação do RGB para o HSV não é linear, mas tem a vantagem de que o processo de reversão e converão ao RGB ser facilmente realizado.
Para fazer a transformação usa-se o seguinte algoritmo, onde os valores RGB devem ser normalizados, isto é, devem estar entre um valor mínimo zero e um máximo de um:
//Primeiro calcule os valores máximos e mínimos:
max = máximo(R,G,B), min = mínimo(R,G,B)
//depois os valores de saturação e brilho:
V = max , S = (max - min) / max
//ai passe a calcular as cores ou H:
if S = 0 /* H passa a ser irrelevante, a cor no HSV será : (0,0,V)*/
else
R1 = (R-min) / (max-min)
G1 = (G-min) / (max-min)
B1 = (B-min) / (max-min)
if R1 = max , H = G1 - B1
else if G1 = max , H = 2 + B1 - R1
else if B1 = max , H = 4 + R1 - G1
//(converte-se H em graus)
H = H*60
//usa-se H variando de 0 a 360° , S e V variando entre 0 e 1
if H < 0 , H=H+360
// a cor no HSV será : (H,S,V)*/
A tabela 1, resume as propriedades observadas na literatura, entre o espaço de cor RGB e os espaços OPP, HSV e LUV , e o tipo de transformação usada para cada espaço. O símbolo * significa que a inversão apesar de não ser linear é obtida com facilidade.
Tabela 1 - Comparação entre as propriedades dos espaços de cor
Atributos |
RGB |
OPP |
HSV |
LUV |
Uniforme |
N |
N |
S |
N |
Compacto |
N |
N |
S |
N |
Completo |
S |
S |
S |
S |
Natural |
N |
N |
S |
S |
Transf. Linear |
- |
S |
N* |
N |