Por que usamos o espaço de cores HSV com tanta frequência no processamento de visão e imagem?


64

Eu vejo o espaço de cores do HSV usado em todo o lugar: para rastreamento, detecção humana, etc ... Estou me perguntando, por que? O que é esse espaço de cores que o torna melhor do que usar RGB?


3
Esta é uma pergunta muito boa. Na minha opinião, seria um pouco mais detalhado: o que é HSV, o que é RGB. Como a maioria das respostas compara HSV a RGB, o título pode ser reformulado para comparar esses dois espaços de cores.
PhilMacKay

2
Outra boa pergunta pode ser: "Por que o HSV está sendo usado em todo o lugar em vez do HSL?"
posfan12

Respostas:


60

A resposta simples é que, diferentemente do RGB , o HSV separa o luma , ou a intensidade da imagem, do chroma ou das informações de cores. Isso é muito útil em muitas aplicações. Por exemplo, se você deseja fazer a equalização do histograma de uma imagem colorida, provavelmente deseja fazê-lo apenas no componente de intensidade e deixe os componentes de cor em paz. Caso contrário, você obterá cores muito estranhas.

Na visão computacional, muitas vezes você deseja separar os componentes de cores da intensidade por vários motivos, como robustez às mudanças de iluminação ou remoção de sombras.

Observe, no entanto, que o HSV é um dos muitos espaços de cores que separam a cor da intensidade (consulte YCbCr, laboratório etc.). O HSV é frequentemente usado simplesmente porque o código para conversão entre RGB e HSV está amplamente disponível e também pode ser facilmente implementado. Por exemplo, a Image Processing Toolbox for MATLAB inclui funções rgb2hsve hsv2rgb.


42

As informações de cores geralmente são muito mais barulhentas que as informações de HSV.

Deixe-me dar um exemplo: eu e alguns amigos estávamos envolvidos em um projeto que tratava do reconhecimento de sinais de trânsito em vídeos de cenas reais (ruídos, sombras e às vezes oclusão presentes). Era parte de um projeto maior, portanto, tivemos tempo para experimentar abordagens diferentes para esse problema específico (e reutilizar abordagens antigas). Não tentei me basear em cores, mas lembro-me de uma informação interessante: _O componente RGB dominante em um sinal de STOP geralmente não era vermelho! (principalmente devido a sombras)

Geralmente, você pode obter melhores informações em um espaço de cores HSV . Deixe-me tentar dar um exemplo de experiência pessoal novamente: tente imaginar que você tem uma imagem de um plano de cor única com uma sombra nele. No espaço de cores RGB, a parte da sombra provavelmente terá características muito diferentes da parte sem sombras. No espaço de cores HSV, é mais provável que o componente de matiz de ambos os patches seja semelhante: a sombra influenciará principalmente o valor , ou talvez o componente de satuação , enquanto o matiz , indicando a "cor" primária (sem brilho e diluição do branco) / preto) não deve mudar muito.

Se essas explicações não lhe parecerem intuitivas, sugiro:

  • tente entender melhor os componentes usados ​​para representar uma cor no espaço de cores HSV e renove seu conhecimento sobre RGB
  • tente e veja as razões pelas quais esses tipos de representação de cores foram desenvolvidos: é sempre, de alguma forma, baseado em alguma visão da interpretação humana da cor

    por exemplo, as crianças não gostam de objetos com valor == altamente colorido , eles preferem objetos altamente saturados , objetos em que a cor é intensa e não diluída

  • depois de conseguir isso e desenvolver alguma intuição, você deve brincar com imagens: tente decompor várias imagens em seus componentes RGB e HSV

    Seu objetivo seria ver e entender a diferença nessas decomposições para imagens que contenham sombras, iluminação forte, reflexão da luz.

  • se você tem um tipo específico de imagens com as quais gosta de brincar, tente decompô-las: quem sabe, talvez o RGB seja realmente mais adequado às suas necessidades do que o HSV :)


11
Se for uma sombra, deve mudar apenas o brilho - não a saturação.
21812 Andrey Rubshtein

@Andrey, como eu disse, não trabalhei pessoalmente na abordagem baseada em cores, mas posso especular que se não fosse apenas uma sombra - provavelmente alguma iluminação indireta do ambiente ou algo semelhante também desempenhou um papel.
Penelope

11
Você está certo. No entanto, no caso de iluminação indireta, o matiz também pode mudar.
Andrey Rubshtein 19/10/12

11
@Andrey Daí a minha redação: "mais provável", "similar", "primariamente influenciar", ... Afinal, eu não estava explicando o HSV, apenas dando alguns exemplos e palpites fundamentados com base na experiência. E, a melhor maneira de escolher a cor-espaço mais adequado para qualquer aplicação é para brincar com seu banco de dados de imagem e diferentes cores-espaços
penelope

3
Qualquer coisa na sombra e, portanto, não iluminada pela fonte de luz primária (o sol) está sendo iluminada pela fonte de luz secundária - o céu, que é uma luz gigante, brilhante e muito azul. Para os olhos humanos, o vermelho ainda parece vermelho, já que nossos olhos fazem medições de cores relativas em vez de cores absolutas, e é por isso que suas fotos internas, sem flash, parecem mais amarelas do que você imagina. E estou de total acordo em brincar com o seu banco de dados de imagens.
John Robertson

8

Usar apenas o componente Hue torna o algoritmo menos sensível (se não invariável) às variações de iluminação.

Outra opção popular é o espaço de cores LAB, onde os canais AB representam a cor e as distâncias euclidianas no espaço AB combinam melhor com a percepção humana da cor. Mais uma vez, ignorar o canal L (Luminância) torna o algoritmo mais robusto às diferenças de iluminação.


7

A melhor resposta que posso descobrir é: RGB tem a ver com "detalhes de implementação" em relação à maneira como o RGB exibe cores, e HSV tem a ver com os componentes "reais". Outra maneira de dizer que isso seria RGB é a maneira como os computadores tratam as cores, e o HSV tenta capturar os componentes da maneira como os seres humanos percebem as cores.

Vou elaborar:

A cor é uma percepção baseada em ondas eletromagnéticas. As propriedades naturais dessas ondas são, por exemplo, intensidade e frequência. Se varrermos a frequência de uma onda de luz do infravermelho para o ultravioleta, perceberemos visualmente uma variação de cores ao longo das cores do arco-íris. As cores do arco-íris podem ser consideradas "cores puras" porque são representadas por ondas de frequência única.

Agora, o olho humano pode apenas responder, ou "ressoar" a três freqüências principais de luz, não surpreendentemente vermelhas, verdes e azuis. O fato é que essa resposta é não linear, de modo que a retina pode distinguir uma determinada cor pura (e implicitamente sua "frequência") pela resposta combinada dos três componentes de cor .

O espaço de cores RGB existe como tal apenas para imitar o funcionamento interno de nossa retina, de modo que uma grande maioria de cores pode ser representada nos monitores de computador por meio de uma cor conveniente (do ponto de vista do computador) de 24 bits por pixel codificação. O espaço de cores RGB não tem relação intrínseca às propriedades naturais das cores, nem à interpretação humana das cores.

Por exemplo, qualquer operação aritmética realizada em canal no espaço RGB (por exemplo, geração de gradientes de cores) fornece resultados muito brutos ou claramente "errados". É por isso que é recomendável criar mapas de cores convertendo as paradas de cores de RGB em outros espaços de cores (HLS, Lab etc.), executando as interpolações e convertendo os valores interpolados novamente em RGB.

Espero que isto ajude!


2
Eu discordo. Existem três domínios, não dois: humano, computador e física. O modelo RGB é derivado do olho humano, que possui três receptores de cores.
MSalters

@ MSalters Acho que estamos falando das mesmas coisas (embora talvez eu não tenha me deixado completamente claro). As telas RGB são feitas para combinar com nosso sistema de percepção de cores. Eles têm uma contraparte de computador, as "coordenadas" (R, G, B). Como essas coordenadas são mapeadas para implementação e não para as propriedades físicas da "natureza real" da cor, elas não são adequadas para executar algum processamento matemático, por exemplo, interpolação de gradiente perceptivamente linear, correção de cores, operações de brilho e saturação etc.
heltonbiker

2

HSV significa Hue-Saturation-Value. Na verdade, é um tipo de representação do plano de cores (como RGB, YCbCr etc.).

É um formato de representação de cores independente do dispositivo: A representação de cores HSV é útil para detectar tipos de cores específicos, por exemplo: cor da pele, cor do fogo etc.

Matlabfunção para converter uma imagem RGB em plano HSV é rgb2hsv('/inputimage_name').


1

Vou te dar um exemplo para entender. Como a nossa mão tem muitas partes da palma da mão, palma da mão traseira e abaixo dela. podemos ver diferentes variações de cores nessas áreas, mas o matiz para todas essas regiões não varia muito, portanto, o valor do matiz pode ser útil na segmentação manual.


1

Não há nada que eu saiba que seja especialmente melhor com o HSV em comparação com o YUV ou o LAB que o tornaria melhor para a extração de recursos e invariância ou visualização da iluminação. Eu acho que o HSV é o mais comum por causa de convenções e continuidade: é mais fácil comparar resultados e se comunicar se os dois usarem o mesmo espaço de cores.

Com isso dito, o HSV (em oposição ao RGB) é usado na visão computacional por 2 razões que conheço:

  1. Visualização . Sempre que você tiver informações direcionais densamente sobre uma imagem, o HSV é um bom espaço de cores para visualização. Em vez de plotar pequenos vetores sobre uma imagem (eles atrapalharão tudo), você pode plotar cores com HSV, colocando o vetor direcional mapeado para H (ângulo do vetor) e S (magnitude do vetor). Isso deixa o componente Valor, que pode ser definido de várias maneiras, dependendo do que você deseja alcançar. Veja abaixo o exemplo do conjunto de dados de fluxo óptico de Middlebury. O HSV é usado para exibir direções densamente.

Exemplo do DB Middlebury no fluxo óptico

  1. Extração de recursos e invariância de iluminação , conforme explicado nas outras respostas.

0

Como outros mencionados, é benéfico separar a luma do croma. A luma varia bastante na cena com base na quantidade de luz que cai sobre o objeto. O croma, por outro lado, se correlaciona melhor com as propriedades intrínsecas do objeto e, para imagens adequadamente com equilíbrio de branco, é mais ou menos invariável.

No entanto, gostaria de acrescentar que HSV, HSL, ou de fato qualquer espaço de cor com parametrização polar do plano de croma, são más escolhas para esse fim. Isso ocorre porque eles introduzem uma singularidade na linha dos cinzas (que matiz é cinza?), Tornando-os muito sensíveis ao ruído e ao balanço de branco. Além disso, comparar duas cores em um sistema de coordenadas polares não é tão simples. Observe também que nem o valor no HSV nem a luminosidade no HSL correspondem à luminosidade percebida pelo homem ou a qualquer outra medida física de energia.

Existem muitos espaços de cores lineares que oferecem a mesma separação luma-croma e preservam a linearidade (YCbCr, YUV) ou modelam a visão humana adequadamente (LUV, LAB). Com eles, você pode comparar duas cores usando uma norma Euclidean L2 em suas cromaticidades, resultando em um algoritmo mais robusto em geral.

Por que HSV / HSL são usados ​​com tanta frequência então? Difícil de dar uma resposta objetiva. Pela minha experiência, isso se deve principalmente à ignorância e à disponibilidade das rotinas de conversão RGB-> HSV. Tinha que trabalhar com código cujos autores não entendiam correção de gama, muito menos espaços de cores diferentes. O código visto que converteu RGB em HSV segmentou a imagem com base no matiz, desconsiderando o fato de ser uma quantidade modular. Acho que podemos concordar que essas não foram decisões conscientes apoiadas por qualquer motivo.


-1

O modelo de cores HSV está mais correlacionado com a forma como os seres humanos veem objetos coloridos, em comparação com RGB, YUV, Lab etc.

Vemos qual a cor do objeto (Matiz), quanto ele está saturado (Saturação) e quanta luz branca está caindo sobre ele (Intesidade).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.