-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HSLuv seems to have too much cyan to me/hues don't seem subjectively equally spread #41
Comments
Hi Caleb. Thanks for using HSLuv in projects 👍 I've noticed this too. I don't believe this is a problem with HSLuv's reproduction of CIELUV or an issue with monitors. My hypothesis is the following. Notice how for L < 75%, cyan has the lowest maximum chroma. Now, consider that the perceptual distance between colors is greatest at high saturation and is lowered as saturation is lowered (blue and yellow are identical with saturation = 0%). This dip in saturation lowers the perceptual distance between colors around cyan. If you move the lightness slider to around 85%, you'll notice the same issue with pink/salmon, for the same reason. This is one of many artifacts that is created by HSLuv's imperfect saturation component. I think getting rid of these artifacts entirely is impossible due to the nature of human color vision (as you must know by now, colors are not created equal), however, it may be possible to ameliorate them. I welcome any attempts to do so! |
Aha, that makes a lot of sense now that I play with the color picker on the site some. Around a lightness of 40%, there are sharp divisions in the blue area, corresponding with its high chroma. It almost feels like the right thing to do is not to map hue by angle, but by perimeter of the max-chroma quadrilateral. |
Is there a way to do that with the current API? |
This is the biggest problem I see with this otherwise great color space.
I'm tempted to just try to define some sort of warping adjustments to hue under various combination values of lightness and tweak until the changes seem right, but this seems highly unprincipled. Edit: I have found that browsers already implement OKLCH color space. I have more experimentation to do esp around finding if there are similar problems with this one, but it certainly does look like the future to me, and this palette maker looks useful too: https://huetone.ardov.me I will note that OKLCH while providing an HSL-like interface much like HSLuv does, it does NOT guarantee workable colors for your given display out of all possible inputs in the space, which is a big difference. |
Looking at this example from the site:
If I were going to name these colors, I'd probably go: red, orange, yellow, green/chartreuse, green/cyan, cyan, cyan, blue, violet/lavender, magenta.
In other words, the 5th, 6th, and 7th all look very similar to me. Staring at them, I almost have trouble distinguishing their bars. This isn't the case for the other colors in the spectrum. Especially for the last three, I can see sharp, clearly distinguished colors.
This isn't just on the example page either; I've used HSLuv in projects, and noticed that it's harder to distinguish values in that range before.
Is this something subjective and I'm just observing it differently? Is this an artifact of CIELUV? An artifact of monitor color limitations? Or a problem with HSLuv?
Sorry if this is naive; I know very little about color theory besides what I've read about online over the years. But it's always bothered me.
Thanks!
The text was updated successfully, but these errors were encountered: