algorithmgraphicslanguage-agnosticcolor-space

Best algorithm for matching colours.


I have an array of around 200 colours in RGB format. I want to write a program that takes any RGB colour and tries to match a colour from the array that is most "similar".

I need a good definition for "similar", which is as close as possible to human perception.

I also want to show some information about matching accuracy. For example black-white: 100% and for a similar colour with a slightly different hue: -4%.

Do I need to use neural networks? Is there an easier alternative?


Solution

  • Convert all of the colors to the CIE Lab color space and compute the distance in that space

    deltaE = sqrt(deltaL^2 + deltaA^2 + deltaB^2)
    

    Colors with the lowest deltaE are the most perceptually similar to each other.