(I'm somewhat new to this, so please forgive me if there are errors in this question.)

In optical flow visualisation, where a vector field is visualised with colours, it is common to use the the Hue, Saturation, Value (HSV) colour model, then set hue for the direction and the value/brightness for the magnitude.

optical flow example
Source: tomrunia on github

For example, see this Stack Overflow question or this github package. The saturation is kept constant. This cylindrical-coordinate colour model may be considered suitable for this purpose because:

  1. Any combination of H, S, and V maps to a valid colour, and;
  2. when V=0, all is black, which is good, because the direction has no meaning when magnitude is zero.

This can be seen quite easily by playing around with colorizer.org.

However, not every hue actually looks equally bright to the human eye in the HSV colour space, as pointed out in this article:

Christopher T. Howlett, Why I Love HSV, and Why It’s Totally Useless, 2017-07-17

But there’s only one problem. HSV doesn’t actually let you choose the real brightness of a color.
Notice how [Yellow, Cyan, and Magenta] are each pumping twice as much light into your eyes as Red, Green and Blue.
Your brain doesn’t consider Red, Green, and Blue to be equally bright—and the differences are very significant. Red light is perceived to be ~62% brighter than Blue light, and Green light ~127% brighter than Blue light.

He continues to describe the HCL colourspace:

Introducing Hue Chroma Lightness (HCL). Some very smart people have been working on these sorts of problems for over one hundred years now, and their efforts have been quite fruitful. HCL is a color space that similar to HSV in every respect but one: changes in the Hue dimension in no way effect the Lightness dimension.

So it would appear to be more perceptually uniform.

Unfortunately, as playing around with the HCL Wizard readily shows, neither of the two aforementioned desirable conditions are met. Only a limited subset of HCL values maps to an existing colour, and based on my limited understanding, I don't appear to see see a way to readily alter the brightness between fully unsaturated to fully saturated, for the same colour.

Is there an alternative to the HSV colour model where one coordinate maps to a circle of colours, and another coordinate to some form of colourfulness, chroma, or saturation, with the hues being perceptually uniform, and all combinations of coordinates existing?

  • It might not meet your conditions, but have you looked into the HSL color space (hue, saturation, lightness)? – Wolff Dec 6 '19 at 18:03
  • HCL should be a good one for your purposes. The unfortunate thing is that our RGB screens cannot show everything which is both presentable in HCL and visually recognizable. Bright and dark colors cannot be especially colorful (=have high chroma) because R,G and B should all be nearly 255 or all nearly zero.But you can scale the ranges narrower. – user287001 Dec 7 '19 at 11:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.