O que é uma boa métrica de similaridade de cores?

8

Eu tenho algumas cores em RGB em [0,1] e quero encontrar uma maneira de avaliar sua semelhança, conforme percebida por um humano.

Tenho duas idéias em mente, mas tenho certeza de que há outras opções também, mas não tenho certeza qual é a melhor, ou se talvez não exista melhor, mas apenas as compensações.

Minha primeira idéia é tratar as cores RGB como pontos XYZ e calcular sua distância.

Outra idéia que tenho é tratar os valores RGB como um histograma e usar o produto escalar para obter um valor de similaridade entre eles, onde um valor maior é melhor.

Eu sei, no entanto, que nem todos os canais de cores têm o mesmo brilho percebido, então talvez eu deva ponderar os canais de cores de maneira diferente nos dois casos?

Também estou pensando que talvez precise fazer a correção sRGB nos valores das cores (como sqrt em cada canal de cores).

Sei também que existem outros espaços de cores, então talvez um deles seja melhor em fornecer um valor de similaridade.

Outro desafio para isso pode ser que diferentes telas exibam os mesmos valores de cores de maneira diferente. Não tenho certeza se isso é relevante neste caso.

Alguém capaz de fornecer alguma ajuda / orientação?

Alan Wolfe
fonte
4
Você já deu uma olhada nisso ? RGB não é um ótimo espaço de cores para fazer comparações relacionadas à percepção humana.
Aces #
Boa informação, obrigado! Eu estava olhando para o cielab, mas esse artigo diz que não é o melhor. Infelizmente, estou trabalhando com dados de origem RGB, então tenho que descobrir como converter de RGB para algo melhor, mas o desafio parece ser que o RGB depende do dispositivo, enquanto, por exemplo, o cielab não. Felizmente, uma aproximação menor é boa o suficiente para minhas necessidades, se a independência do dispositivo não for realmente viável com dados de origem RGB.
Alan Wolfe
Confira o site de Bruce Lindbloom, especialmente as várias métricas da DeltaE
David Kuri
Existe um pacote Python completo para a ciência das cores que inclui algumas transformações: colour-science.org .
KAE

Respostas:

3

Eu tenho algumas cores em RGB em [0,1] e quero encontrar uma maneira de avaliar sua semelhança, conforme percebida por um humano.

Esse é um assunto imenso e pouco encontrado sob a bandeira dos modelos de aparência de cores . Por que não é estritamente uma formação mais simples, é devido à natureza psicofísica da cor em que a cor não existe além do organismo humano?

Minha primeira idéia é tratar as cores RGB como pontos XYZ e calcular sua distância.

Outra idéia que tenho é tratar os valores RGB como um histograma e usar o produto escalar para obter um valor de similaridade entre eles, onde um valor maior é melhor.

No entanto, eu sei que nem todos os canais de cores têm o mesmo brilho percebido, então talvez eu deva ponderar os canais de cores de maneira diferente nos dois casos?

O melhor conselho é que, assim como a criptografia, não crie o seu próprio; é provável que você chegue a um sistema subótimo que, na melhor das hipóteses, atingirá paredes já atingidas por outros pesquisadores no campo. Se você basear seu trabalho em modelos e pesquisas existentes, poderá achar que ele é mais preciso para suas necessidades [1].

Pode-se apontar os desenvolvimentos históricos em torno das CAMs, mas é mais fácil sugerir aqui que você pesquise o modelo de codificação de cores IPT e seu equivalente cilíndrico que modela a cor e a tonalidade como um ângulo. As evoluções no modelo IPT superam a maioria dos problemas do modelo anterior do laboratório e simplificam parte do trabalho envolvido no CIECAM02.

Outro desafio para isso pode ser que diferentes telas exibam os mesmos valores de cores de maneira diferente. Não tenho certeza se isso é relevante neste caso.

O IPT e todos os espaços de cores RGB estão ancorados na pesquisa da CIE de 1931. Como tal, esses tipos de problemas são resolvidos em um nível inferior.

[1] Essa resposta expandida se deve ao comentário do Sr. Wolfe abaixo, na tentativa de explicar por que lançar sua própria solução pode ser uma abordagem subótima.

troy_s
fonte
3
É ridículo desencorajar as pessoas a experimentar gráficos e colocá-los em pé de igualdade com os algoritmos de criptografia artesanais.
27417 Alan Wolfe
@AlanWolfe Dado que existem alguns tipos de doutorado extremamente brilhantes por aí que já passaram incontáveis ​​horas e esforço resolvendo os problemas da pergunta original, considero seu contexto ridículo. Para não desencorajar alguém de encher as botas e tentar reinventar a roda.
troy_s
Você deve ouvir os hacks simples recomendados pelos pesquisadores gráficos ativos. Como "produto com pontos RGB, ele realmente funciona incrivelmente bem" de Peter Shirley.
27617 Alan Wolfe
2
Eu segui em frente, mas há a aplicação do colapso da função de onda para criação de imagem e conteúdo procedural. Funciona em parte por pixels correspondentes exatos, portanto funciona melhor com pixel art. Eu estava olhando para ver uma correspondência mais suave para usar com imagens mais realistas ou para regras de conteúdo processual menos estritas. Confira neste link para a coisa básica: github.com/mxgmn/WaveFunctionCollapse
Alan Wolfe
2
Não é meu trabalho, mas eu estava tentando estendê-lo. Eu concordo totalmente, é uma coisa legal! Fora do tópico, mas aqui está o meu trabalho não relacionado, hehe. blog.demofox.org/2016/02/22/…
Alan Wolfe
4

Se métricas complexas forem aceitáveis, sugiro examinar a abordagem baseada na percepção descrita aqui . A métrica foi projetada para selecionar a diferença de percepção de duas imagens. Existem dois testes principais para isso: com base na luminância e na cor. Primeiro, é possível responder à pergunta sobre a importância da mudança de luminância, estimando um fator limiar não uniforme com base na sensibilidade às alterações de contraste, dependendo das frequências espaciais da imagem. O segundo é baseado na distância euclidiana no espaço de cores do CIE LAB, mas ligeiramente modificado para tornar a diferença de cores menos importante quando a luminância está nas faixas mesópica e escotópica. Uma lista de documentos relacionados a essa métrica pode ser encontrada aqui .

reintegrar
fonte
3
Bem-vindo ao Computer Graphics SE! Em geral, as respostas somente de link são fortemente desencorajadas no SE, porque podem se tornar inúteis caso esses links ocorram. Inclua um breve resumo de seu conteúdo, para que as pessoas ainda possam descobrir o que exatamente você está sugerindo sem precisar confiar nos links.
Martin Ender