Modelo de cores HSL e HSV

HSL (Hue, Saturation, Lightness) e HSV (Hue, Saturation, Value) são duas representações alternativas do modelo de cores RGB, projetado na década de 1970 por pesquisadores de computação gráfica para se alinharem mais de perto com a maneira pela qual a visão humana percebe os atributos de criação de cores. Nestes modelos, as cores de cada matiz são dispostas em uma fatia radial, em torno de um eixo central de cores neutras que varia de preto no fundo ao branco na parte superior. A representação do HSV modela a forma como as tintas de diferentes cores se misturam, com a dimensão da saturação, que se assemelha a vários tons de tinta de cores vivas e a dimensão de valor que se assemelha à mistura dessas pinturas com diferentes quantidades de tinta preta ou branca. O modelo HSL tenta se parecer com modelos de cores mais perceptivos, como NCS ou Munsell, colocando cores totalmente saturadas em torno de um círculo com um valor de leveza de 1/2, onde um valor de leveza de 0 ou 1 é totalmente preto ou branco, respectivamente.

Principio básico
HSL e HSV são geometrias cilíndricas, com tonalidade, sua dimensão angular, começando no primário vermelho a 0 °, passando pelo primário verde a 120 ° e o primário azul a 240 °, e depois envoltando de volta ao vermelho a 360 °. Em cada geometria, o eixo vertical central compreende as cores neutras, acromáticas ou cinzentas, variando de preto a leveza 0 ou valor 0, a parte inferior, a branco na leveza 1 ou valor 1, na parte superior.

Em ambas as geometrias, as cores aditivas primárias e secundárias – as misturas vermelhas, amarelas, verdes, cianas, azuis e magentas – e lineares entre pares adjacentes, às vezes chamadas de cores puras, estão dispostas em torno da borda externa do cilindro com saturação 1. Essas cores saturadas têm leveza ½ em HSL, enquanto que no HSV eles têm valor 1. Misturando essas cores puras com a produção negra, o que denomina tons, deixa a saturação inalterada. Na HSL, a saturação também é inalterada por tingir com branco, e apenas misturas com tons chamados preto e branco – têm uma saturação inferior a 1. No HSV, o matiz sozinho reduz a saturação.

Como essas definições de saturação – nas quais cores muito escuras (em ambos os modelos) ou muito pequenas (em HSL) quase neutras são consideradas totalmente saturadas (por exemplo, da parte inferior direita no cilindro HSL cortado ou do canto superior direito) conflito com a noção intuitiva de pureza de cor, muitas vezes um sólido cônico ou bi-cônico é desenhado em vez disso, com o que este artigo chama de croma como sua dimensão radial, em vez de saturação. Confusamente, esses diagramas normalmente rotulam esta dimensão radial de “saturação”, desfocando ou apagando a distinção entre saturação e croma. Conforme descrito abaixo, o chroma de computação é um passo útil na derivação de cada modelo. Como esse modelo intermediário – com dimensões de matiz, croma e valor HSV ou leveza HSL – toma a forma de um cone ou bicone, o HSV geralmente é chamado de “modelo hexcone”, enquanto o HSL é chamado de “modelo bi-hexcone”.

Motivação
O espaço de cores HSL foi inventado em 1938 por Georges Valensi como um método para adicionar codificações de cores às transmissões monocromáticas existentes (ou seja, apenas contendo o sinal L), permitindo que os receptores existentes recebam novas transmissões de cores (em preto e branco) sem modificação, à medida que o Luminance (preto e branco) é transmitido não modificado. Ele foi usado em todas as principais codificações de televisão de transmissão analógica, incluindo NTSC, PAL e SECAM e todos os principais sistemas de transmissão digital e é a base para o vídeo composto.

A maioria dos televisores, monitores de computador e projetores produzem cores ao combinar luz vermelha, verde e azul em diferentes intensidades – as chamadas cores primárias RGB aditivas. As misturas resultantes no espaço de cores RGB podem reproduzir uma grande variedade de cores (chamada de gama); no entanto, a relação entre as quantidades constituintes de luz vermelha, verde e azul e a cor resultante não é intuitiva, especialmente para usuários inexperientes e para usuários familiarizados com a mistura de cores subtrativas de pinturas ou modelos de artistas tradicionais com base em tons e tons. Além disso, nem os modelos de cores aditivos nem subtractivos definem as relações de cores da mesma maneira que o olho humano.

Por exemplo, imagine que temos uma tela RGB cuja cor é controlada por três controles deslizantes que variam de 0-255, um que controla a intensidade de cada uma das primárias vermelha, verde e azul. Se começarmos com uma laranja relativamente colorida, com os valores SRGB R = 217, G = 118, B = 33 e quer reduzir a coloração por metade para uma laranja menos saturada, precisamos arrastar os controles deslizantes para diminuir R até 31 , aumentar G por 24 e aumentar B em 59.

Na tentativa de acomodar modelos de mistura de cores mais tradicionais e intuitivos, os pioneiros em informática no PARC e NYIT desenvolveram o modelo HSV em meados da década de 1970, formalmente descrito por Alvy Ray Smith na edição de agosto de 1978 da Computer Graphics. Na mesma questão, Joblove e Greenberg descreveram o modelo HSL – cujas dimensões eles chamaram de matiz, croma relativa e intensidade – e comparou-o com HSV. Seu modelo baseou-se mais em como as cores são organizadas e conceitualizadas na visão humana em termos de outros atributos de criação de cores, como tonalidade, leveza e croma; bem como sobre métodos tradicionais de mistura de cor – por exemplo, na pintura – que envolvem a mistura de pigmentos de cores vivas com preto ou branco para obter cores mais claras, escuras ou menos coloridas.

No ano seguinte, 1979, na SIGGRAPH, a Tektronix introduziu terminais gráficos usando HSL para designação de cores, e o Computer Graphics Standards Committee recomendou em seu relatório de status anual. Esses modelos eram úteis não apenas porque eram mais intuitivos do que os valores brutos de RGB, mas também porque as conversões de e para RGB eram extremamente rápidas para calcular: podiam ser executadas em tempo real no hardware dos anos 70. Conseqüentemente, esses modelos e similares se tornaram onipresentes em toda a edição de imagens e software de gráficos desde então. Alguns dos seus usos são descritos abaixo.

Derivação formal

Atributos de criação de cores
Veja também: Visão de cores
As dimensões das geometrias HSL e HSV – transformações simples do modelo RGB não perceptivo – não estão diretamente relacionadas aos atributos fotométricos de cores dos mesmos nomes, conforme definido por cientistas como o CIE ou ASTM. No entanto, vale a pena rever essas definições antes de avançar para a derivação de nossos modelos. Para as definições dos atributos de criação de cores que se seguem, veja:

Matiz
O “atributo de uma sensação visual segundo a qual uma área parece ser semelhante a uma das cores percebidas: vermelho, amarelo, verde e azul, ou a uma combinação de duas delas”.

Radiance (Le, Ω)
O poder radiante da luz que passa por uma superfície particular por unidade de ângulo sólido por unidade de área projetada, medida em unidades SI em watt por steradian por metro quadrado (W • sr-1 • m-2).

Luminância (Y ou Lv, Ω)
O brilho ponderado pelo efeito de cada comprimento de onda em um observador humano típico, medido em unidades SI em candela por metro quadrado (cd / m2). Muitas vezes, o termo luminância é usado para a luminância relativa, Y / Yn, onde Yn é a luminância do ponto branco de referência.

Luma (Y ‘)
A soma ponderada dos valores R ‘, G’ e B ‘corrigidos por gama, e usada em Y’CbCr, para compressão JPEG e transmissão de vídeo.

Brilho
O “atributo de uma sensação visual segundo a qual uma área parece emitir mais ou menos luz”.

Leveza, valor
O “brilho relativo ao brilho de um branco igualmente iluminado”.

Coloridez
O “atributo de uma sensação visual segundo a qual a cor percebida de uma área parece ser mais ou menos cromática”.

Chroma
O “colorido em relação ao brilho de um branco igualmente iluminado”.

Saturação
O “colorido de um estímulo em relação ao seu próprio brilho”.

O brilho e a coloração são medidas absolutas, que geralmente descrevem a distribuição espectral da luz que entra no olho, enquanto a leveza e o croma são medidos em relação a algum ponto branco e, portanto, são freqüentemente usados ​​para descrever as cores da superfície, permanecendo aproximadamente constante mesmo como brilho e colorido mudar com iluminação diferente. A saturação pode ser definida como a proporção de colorido para brilho ou de croma para leveza.

Abordagem geral
HSL, HSV e modelos relacionados podem ser derivados através de estratégias geométricas, ou podem ser considerados instâncias específicas de um “modelo LHS generalizado”. Os construtores de modelos HSL e HSV tomaram um cubo RGB – com quantidades constituintes de luz vermelha, verde e azul em uma cor denotada R, G, B ∈ [0, 1] – e inclinou-a em seu canto, de modo que o preto descansou na origem com branco diretamente acima dele ao longo do eixo vertical, então mediu a tonalidade das cores no cubo pelo ângulo em torno desse eixo, começando com vermelho a 0 °. Em seguida, eles apresentaram uma caracterização de brilho / valor / leveza e definiram saturação para variar de 0 ao longo do eixo para 1 no ponto mais colorido para cada par de outros parâmetros.

Em cada um dos nossos modelos, calculamos a tonalidade e o que este artigo chamará de croma, depois de Joblove e Greenberg (1978), da mesma forma – ou seja, a tonalidade de uma cor tem os mesmos valores numéricos em todos esses modelos, assim como o seu croma. Se tomarmos o nosso cubo RGB inclinado e projetá-lo no “plano de cromaticidade” perpendicular ao eixo neutro, nossa projeção assume a forma de um hexágono, com vermelho, amarelo, verde, ciano, azul e magenta nos cantos. Hue é aproximadamente o ângulo do vetor para um ponto na projeção, com vermelho a 0 °, enquanto o croma é aproximadamente a distância do ponto da origem.

Mais precisamente, tanto o matiz quanto o croma neste modelo são definidos em relação à forma hexagonal da projeção. O croma é a proporção da distância da origem à borda do hexágono. Na parte inferior do diagrama adjacente, esta é a razão dos comprimentos OP / OP ‘, ou alternadamente a razão dos raios dos dois hexágonos. Essa relação é a diferença entre os maiores e os menores valores entre R, G ou B em uma cor. Para tornar nossas definições mais fáceis de escrever, definiremos esses valores máximos, mínimos e de componentes cromáticos como M, m e C, respectivamente.


Para entender por que o croma pode ser escrito como M – m, note que qualquer cor neutra, com R = G = B, se projeta na origem e, portanto, possui 0 croma. Assim, se somarmos ou subtrair a mesma quantidade dos três R, G e B, nos movemos verticalmente dentro do nosso cubo inclinado e não alteramos a projeção. Portanto, duas cores (R, G, B) e (R – m, G – m, B – m) se projetam no mesmo ponto e têm o mesmo croma. O croma de uma cor com um dos seus componentes igual a zero (m = 0) é simplesmente o máximo dos outros dois componentes. Esta croma é M no caso particular de uma cor com um componente zero e M – m em geral.

A tonalidade é a proporção da distância ao redor da borda do hexágono que passa pelo ponto projetado, originalmente medido na faixa [0, 1], mas agora normalmente medido em graus [0 °, 360 °]. Para pontos que se projetam sobre a origem no plano de cromaticidade (ou seja, cinzas), a tonalidade é indefinida. Matematicamente, esta definição de tonalidade é escrita por partes:


Às vezes, cores neutras (ou seja, com C = 0) recebem uma tonalidade de 0 ° para conveniência de representação.

Essas definições equivalem a uma deformação geométrica de hexágonos em círculos: cada lado do hexágono é mapeado linearmente em um arco de 60 ° do círculo (figura 10). Após tal transformação, o matiz é precisamente o ângulo em torno da origem e cromar a distância da origem: o ângulo e a magnitude do vetor apontando para uma cor.

Em vez de medir tonalidade e croma com referência à borda hexagonal da projeção do cubo RGB no plano perpendicular ao seu eixo neutro, podemos definir coordenadas de cromaticidade alfa e beta no plano – com alfa apontando na direção do vermelho e beta perpendicular a ele – e depois defina o matiz H2 e o croma C2 como as coordenadas polares destes. Ou seja, a tangente da tonalidade é beta em relação ao alfa, e o croma quadrado é alfa ao quadrado mais o quadrado beta.

Às vezes, para aplicações de análise de imagem, esta transformação hexagonal para círculo é ignorada, e tonalidade e croma (vamos denotar estes H2 e C2) são definidas pelas transformações de coordenadas cartesiano a polar convencionais. A maneira mais fácil de derivar é através de um par de coordenadas de cromaticidade cartesiana que chamaremos α e β:

Observe que essas duas definições de matiz (H e H2) quase coincidem, com uma diferença máxima entre elas para qualquer cor de cerca de 1,12 ° – que ocorre em doze tons particulares, por exemplo H = 13,38 °, H2 = 12,26 ° e com H = H2 para cada múltiplo de 30 °. As duas definições de croma (C e C2) diferem mais substancialmente: são iguais nos cantos do nosso hexágono, mas em pontos a meio caminho entre dois cantos, como H = H2 = 30 °, temos C = 1, mas C2 = √¾ ≈ 0,866, uma diferença de cerca de 13,4%.

Leveza
Quando traçamos o valor HSV contra a croma, o resultado, independentemente da tonalidade, é um triângulo isósceles de cabeça para baixo, com preto na parte inferior e branco na parte superior encadernado pelas cores mais cromáticas de dois tons complementares no canto superior direito e esquerdo cantos. Quando traçamos a leveza de HSL contra a croma, o resultado é um rombo, novamente com preto na parte inferior e branco na parte superior, mas com os complementos coloridos nas extremidades horizontais da linha a meio caminho entre eles. Quando traçamos a média do componente, às vezes chamada de intensidade HSI, contra a croma, o resultado é um paralelogramo cuja forma muda dependendo da tonalidade, pois as cores mais cromáticas para cada matiz variam entre um terço e dois terços entre preto e branco. O loma de trama contra o croma produz um paralelogramo de forma muito mais diversificada: o azul encontra-se cerca de 10 por cento do caminho do preto ao branco, enquanto o seu complemento amarelo está 90 por cento do caminho; em contraste, o verde é cerca de 60% do caminho do preto ao branco, enquanto o magenta do complemento é 40% do caminho.

Embora a definição de matiz seja relativamente incontroversa – satisfaz de forma aproximada o critério de que as cores da mesma tonalidade percebida devem ter a mesma tonalidade numérica – a definição de uma dimensão de leveza ou valor é menos óbvia: existem várias possibilidades dependendo da finalidade e dos objetivos da representação. Aqui estão quatro dos mais comuns:

A definição mais simples é apenas a média dos três componentes, no modelo HSI chamado de intensidade. Esta é simplesmente a projeção de um ponto no eixo neutro – a altura vertical de um ponto em nosso cubo inclinado. A vantagem é que, juntamente com os cálculos euclídeos da distância e da croma, essa representação preserva distâncias e ângulos da geometria do cubo RGB.

No modelo HSV “hexcone”, o valor é definido como o maior componente de uma cor, o nosso M acima. Isso coloca as três primárias, e também todas as “cores secundárias” – cã, amarelas e magentas – em um plano com branco, formando uma pirâmide hexagonal fora do cubo RGB.

No modelo HSL “bi-hexcone”, a leveza é definida como a média dos maiores e menores componentes de cor. Esta definição também coloca as cores primárias e secundárias em um plano, mas um plano que passa a meio caminho entre branco e preto. O sólido de cor resultante é um cone duplo semelhante ao de Ostwald, mostrado acima.

Uma alternativa mais relevante para a percepção é usar luma, Y ‘, como uma dimensão de leveza. Luma é a média ponderada de R, G e B corrigida por gama, com base na sua contribuição para a leveza percebida, usada há muito tempo como a dimensão monocromática na transmissão de televisão a cores. Para a Rec. 709 primárias usadas em sRGB, Y’709 = 0,21R + 0,72G + 0,07B; para o Rec. 601 primárias NTSC, Y’601 ≈ 0,30R + 0,59G + 0,11B; Para outras primárias, devem ser utilizados diferentes coeficientes.

Todos estes quatro deixam o eixo neutro sozinho. Isto é, para cores com R = G = B, qualquer uma das quatro formulações produz uma leveza igual ao valor de R, G ou B.

Saturação
Ao codificar as cores de um modelo de matiz / leveza / croma ou matiz / valor / croma (usando as definições das duas seções anteriores) modelo, nem todas as combinações de leveza (ou valor) e croma são significativas: ou seja, metade das cores denotable usando H ∈ [0 °, 360 °], C ∈ [0, 1] e V ∈ [0, 1] caem fora da gama RGB (as partes cinzas das fatias na figura 14). Os criadores desses modelos consideraram isso um problema para alguns usos. Por exemplo, em uma interface de seleção de cores com duas das dimensões em um retângulo e a terceira em um controle deslizante, a metade desse retângulo é feita de espaço não utilizado. Agora imagine que temos um controle deslizante para leveza: a intenção do usuário ao ajustar esse controle deslizante é potencialmente ambígua: como o software deve lidar com cores fora da gama? Ou, inversamente, se o usuário selecionou o mais colorido possível um roxo escuro e, em seguida, desloca o controle deslizante de leveza para cima, o que deve ser feito: o usuário preferiria ver um roxo mais claro ainda tão colorido quanto possível para a tonalidade e leveza, ou um roxo mais claro de exatamente o mesmo croma que a cor original?

Para resolver problemas como estes, os modelos HSL e HSV escalam o croma para que ele sempre se encaixa no intervalo [0, 1] para cada combinação de tonalidade e leveza ou valor, chamando a saturação do novo atributo em ambos os casos. Para calcular, simplesmente, divida o croma pelo croma máxima por esse valor ou leveza.

O modelo HSI comumente usado para a visão por computador, que toma H2 como uma dimensão de matiz e a média de componente I (“intensidade”) como uma dimensão de leveza, não tenta “preencher” um cilindro por sua definição de saturação. Em vez de apresentar opções de escolha de cor ou modificação para usuários finais, o objetivo da HSI é facilitar a separação de formas em uma imagem. A saturação é, portanto, definida de acordo com a definição psicométrica: croma em relação à leveza. Veja a seção Usar em análise de imagem deste artigo.


Usar o mesmo nome para essas três diferentes definições de saturação leva a alguma confusão, uma vez que os três atributos descrevem relações de cor substancialmente diferentes; em HSV e HSI, o termo combina com a definição psicométrica, de um croma de uma cor em relação à sua própria leveza, mas na HSL não se aproxima. Pior ainda, a saturação de palavras também é freqüentemente usada para uma das medidas que chamamos de croma acima (C ou C2).

Uso no software do usuário final
O propósito original da HSL e HSV e modelos similares, e sua aplicação atual mais comum, é em ferramentas de seleção de cores. Na sua maioria, alguns desses criadores de cores fornecem três controles deslizantes, um para cada atributo. A maioria, no entanto, mostra uma fatia bidimensional através do modelo, juntamente com um controle deslizante que controla qual fatia particular é mostrada. O último tipo de GUI exibe grande variedade, devido à escolha de cilindros, prismas hexagonais ou cones / bicones que os modelos sugerem. Vários escolhedores de cores da década de 1990 são mostrados à direita, a maioria dos quais permaneceu praticamente inalterada no tempo intermediário: hoje, quase todos os escolhedores de cores do computador usam HSL ou HSV, pelo menos como uma opção. Algumas variantes mais sofisticadas são projetadas para escolher conjuntos inteiros de cores, baseando suas sugestões de cores compatíveis nas relações HSL ou HSV entre elas.

A maioria dos aplicativos da web que necessitam de seleção de cores também baseiam suas ferramentas em HSL ou HSV e existem opções de cores abertas pré-embaladas para a maioria das principais estruturas de front-end da web. A especificação CSS 3 permite aos autores da Web especificar cores para suas páginas diretamente com as coordenadas HSL.

HSL e HSV às vezes são usados ​​para definir gradientes para visualização de dados, como em mapas ou imagens médicas. Por exemplo, o popular programa GIS ArcGIS historicamente aplicou gradientes baseados em HSV personalizáveis ​​para dados geográficos numéricos.

O software de edição de imagens também inclui ferramentas para ajustar cores com referência a coordenadas HSL ou HSV, ou a coordenadas em um modelo com base na “intensidade” ou luma definida acima. Em particular, as ferramentas com um par de controles deslizantes de “tonalidade” e “saturação” são comuns, datando pelo menos até o final da década de 1980, mas várias ferramentas de cores mais complicadas também foram implementadas. Por exemplo, o visualizador de imagens do Unix e o editor de cores xv permitiram que seis intervalos de tonalidade definidas pelo usuário (H) fossem girados e redimensionados, incluíam um controle dial-like para saturação (SHSV) e uma interface de curvas para controle de valor (V ) -. O editor de imagens Picture Window Pro inclui uma ferramenta de “correção de cores” que permite o remapeamento complexo de pontos em um plano de saturação / saturação em relação ao espaço HSL ou HSV.

Os editores de vídeo também usam esses modelos. Por exemplo, tanto o Avid como o Final Cut Pro incluem ferramentas de cores com base em HSL ou uma geometria similar para uso, ajustando a cor no vídeo. Com a ferramenta Avid, os usuários escolhem um vetor clicando em um ponto dentro do círculo tonalidade / saturação para mudar todas as cores em algum nível de leveza (sombras, tons médios, destaques) desse vetor.

Desde a versão 4.0, as camadas compostas dos modos de mistura “Luminosidade”, “Hue”, “Saturação” e “Cor” da Adobe Photoshop, usando uma geometria de cores luma / chroma / tonalidade. Estes foram copiados amplamente, mas vários imitadores usam as geometrias HSL (por exemplo, PhotoImpact, Paint Shop Pro) ou HSV (por exemplo, GIMP).

Uso na análise de imagem
Os modelos HSL, HSV, HSI ou relacionados são freqüentemente usados ​​em visão de computador e análise de imagem para detecção de recursos ou segmentação de imagem. As aplicações de tais ferramentas incluem detecção de objetos, por exemplo, na visão do robô; reconhecimento de objetos, por exemplo, de caras, texto ou placas; recuperação de imagens baseada em conteúdo; e análise de imagens médicas.

Na maior parte, algoritmos de visão computacional utilizados em imagens a cores são extensões diretas para algoritmos projetados para imagens de escala de cinza, por exemplo k-means ou agrupamento difuso de cores de pixels ou detecção de borda simples. Ao mais simples, cada componente de cor é passada separadamente através do mesmo algoritmo. É importante, portanto, que as características de interesse possam ser distinguidas nas dimensões de cor usadas. Como os componentes R, G e B da cor de um objeto em uma imagem digital estão todos correlacionados com a quantidade de luz que atinge o objeto e, portanto, entre si, as descrições de imagem em termos desses componentes tornam difícil a discriminação de objeto. As descrições em termos de matiz / leveza / croma ou matiz / leveza / saturação são muitas vezes mais relevantes.

A partir do final da década de 1970, transformações como HSV ou HSI foram usadas como um compromisso entre eficácia para segmentação e complexidade computacional. Eles podem ser pensados ​​como semelhantes na abordagem e intenção do processamento neural usado pela visão de cor humana, sem concordar em particular: se o objetivo é a detecção de objetos, a separação de matiz, leveza e croma ou saturação é efetiva, mas não há razão particular para imitar rigorosamente a resposta de cor humana. A tese de mestrado de 1976 de John Kender propôs o modelo HSI. Ohta et al. (1980), em vez disso, usou um modelo composto de dimensões semelhantes às que chamamos de I, α e β. Nos últimos anos, esses modelos continuaram a ver um amplo uso, pois seu desempenho se compara favoravelmente com modelos mais complexos, e sua simplicidade computacional continua a ser atraente.

Charles Poynton, especialista em video digital, enumera os problemas acima com HSL e HSV em suas FAQ de cores e conclui que:

HSB e HLS foram desenvolvidos para especificar matiz, Saturação e Brilho numéricos (ou Hue, Lightness e Saturação) em uma época em que os usuários tiveram que especificar cores numericamente. As formulações usuais de HSB e HLS são falhas em relação às propriedades da visão colorida. Agora que os usuários podem escolher cores visualmente ou escolher cores relacionadas a outras mídias (como PANTONE), ou usar sistemas baseados na percepção como L * u * v * e L * a * b *, HSB e HLS devem ser abandonados.