I’m looking for a color space that gives me a color wheel where two pairs of hues each with the same number of degrees apart gives the same perceived distance of hue.
I found this for the CIELAB color space:
This is much better than what I get with the simple HSL/HSV spaces, but I still think it’s a bit off: I can hardly tell 28 and 27 apart, but on the opposite side, 100 and 90, is very different.
My use case isn’t compression but to chose colors for categories in a user interface. Their numbers can vary and I need good control over their perceived similarity.
Your image isn’t CIELab color wheel. Chroma values (=sqrt(a^2+b^2)) and the lightnesses are random, they seem like they are selected for good looks. Chroma and lightness should be the same in all samples AND also possible to be shown right in sRGB screens (see NOTE1) Otherwise the adjacent samples have random perceptual distances.
Conclusion: Do not use this image as an evidence which proves that CIELab is not peceptually uniform.
NOTE1: There are much colors in CIELab, which are impossible for normal computer screens (=out of the sRGB gamut)
I suggest you read the following: http://scanline.ca/hue/cielab.html as a first aid.
CIELab gives to you good tools for making such circle because it is designed to be perceptually uniform. Only have a stripe of color samples with uniform hue spacing, equal chroma and equal lightness. You must use chroma and lightness values which fit in all hues to sRGB range. At least Chroma=40% of max and Lightness=70% of max should be ok.
In Photoshop’s Lab color system you cannot input Hue nor Chroma values directly. GIMP has HCL which is a polar coordinate version of HCL.
I prepared the following stripe of samples in Photoshop’s Lab color system. The hues are from 0 to 360 degrees, step is 15 degrees. Lightness is 70% of max and chroma is 40% of 127. The first and the last sample are the same a=51, b=0
The values are calculated in the following table:
The greyed columns are only because sin and cos need radians and I wanted to see the real chroma when a and b were rounded to integers.
a = 0,01 * chroma% * 127 * cos (Hue)
b = 0,01 * chroma% * 127 * sin (Hue)
Chroma values of the samples can be increased without stepping out of the sRGB range, if the lightness are reduced. Here’s another stripe with higher chroma: