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?