Color Matching and you and paintRack

v18 of paintRack went live today.

It includes new support for Createx air brush paints, a long lasting request of our users.

It also contains two bug fixes: paint sets with multiple of the same paint now record their order properly and Color Tools color matching is way better.

Let’s talk about the latter.

For a long time the main complaint with the Color Tools is the matches sometimes seemed off. The truth is we used a primarily Hue based matching system which was naive. The way it worked was we’d check the Hue of the target color then look for paints that were close to that Hue. Only on a tie break did we go to Saturation or Value in the HSV triplet.

This method works pretty well maybe 70% of the time. But sometimes you’d get erratic results, especially around black/red barrier as zero hue could be black OR red. Sometimes matches didn’t line up with the DakkaDakka tables. To compensate, we put in some special logic to handle extremely S or V cases, which maybe helped another 5% of the time, but still this wasn’t good enough.

To make the problem even more exacerbated, paints are inherently discrete color values on an infinite spectrum. Some paint lines have very few paints, so a ‘match’ might be way off even when it’s truly the closest color.

So then what is the solution? What is color distance? Turns out that’s not really straight forward.

The obvious choice was to move to a Euclidean distance based on the RGB values (R = x, G = y, B = z). A common shortcut, but in our tests proved to be similarly flawed.

Now we’re going down the rabbit hole of research into color distance. Enter CIEDE2000, a non-linear mapping of colors to other colors based on human perception. As you can see from the equation, there’s a lot going on there. Ultimately, it makes complementary colors more close to what feels right to the human eye. And it makes matching not-quite-the-same colors easier.

We’re pleased with the results. Be aware that some paint lines like P3 have very few paints so sometimes there can be some weird results due to the limited discrete values, but over all everything feels more ‘right’.

As an added bonus, we made things faster due to fixing a major bug during color distance calculation! Huzzah!

Check it out and as always, we value your feedback.

https://play.google.com/store/apps/details?id=com.courageousoctopus.paintrack