Perceptually uniform colour spaces are better for generating ramps
Aliases: uniform colour space · CIELAB · OKLab · even colour steps
What it is
Take a blue from pale to deep in ten stops. If each stop is made by adding a fixed increment to sRGB channel values, the middle stops pile up and the ends leap. Adjacent steps look evenly spaced only when they are sampled in a perceptually uniform colour space, not in a device encoding. The usual candidates are CIELAB, CIELUV, CAM16-UCS, and OKLab.
This is about how large a step looks, not whether a display can reproduce a given colour, and not which coordinates a blend should use.
Why it happens
sRGB and HSV were not calibrated to equal perceived difference. RGB is close to drive levels for display primaries: the same ΔR/ΔG/ΔB is nearly invisible in the darks and harsh in the lights. HSV’s V is roughly the max channel, and hue around the wheel is not an equal-perception walk — blues in particular are cramped.
A uniform space tries to make Euclidean distance track just-noticeable colour difference. CIELAB applies a cube-root lightness compression that rounds MacAdam ellipses, but residual warps remain, which is why CIEDE2000, CAM16-UCS, and OKLab exist. Equal steps along L in Lab or OKLab, then converted back to the display encoding, keep a ten-stop blue from collapsing at the dark end.
RGB linear interpolation also wanders in hue. Mid-stops between blue and cyan often go purple because the RGB chord does not follow a constant-hue locus. Interpolation that holds C and h in an LCh-like space is what keeps the ramp from drifting.
Studying it
Use paired comparison or partition scaling: observers judge which of two adjacent gaps is larger, or sort a set of swatches into equal steps. Independent variables: sampling space (sRGB / HSV / CIELAB / OKLab) and number of stops. Dependent variables: equality judgements, ΔE between neighbours, and reports of hue drift.
In interface work this is how generated ramps are accepted: not by how smooth the curve looks in a plot, but by whether people can say which stop they are looking at. Lab lighting and a fixed white point do not match a laptop at night; ΔE rank order is not a ship-or-not threshold.
Where it stops holding
- No space is uniform over the whole gamut. CIELAB still jumps in blue and at high chroma; OKLab is better for typical interface colours, not a promise for spot inks.
- With only three or four stops, simultaneous contrast and background luminance swamp the choice of space.
- Observers with colour-vision deficiency do not share the standard observer’s equality judgements; CIE ΔE is not a substitute.
- Uniformity in the generation space does not survive clipping into a smaller gamut — high-chroma stops get crushed.
Applying it
- Sample ramps along lightness or chroma in Lab, OKLab, or CAM16-UCS, then convert into the working gamut.
- Do not equally divide RGB sliders, and do not treat HSV’s V as a lightness axis.
- Lay the whole ramp on one neutral grey and look for stuck darks, exploding lights, and mid-ramp hue shifts.
- How to check: hide the stop numbers, show someone who did not mix the palette two neighbouring pairs, and ask which gap is larger. If the bias sits at one end, resample in the uniform space rather than nudging a single hex.
Related
- Same group: F5.01.2 Identical numbers look different across gamuts · F5.01.3 Colour calculations must be done in a declared colour space
- Nearby: F5.09 Perceptual requirements of palettes · F5.13 Building and maintaining colour scales
- Search terms:
perceptual uniformity·CIELAB·OKLab·colour ramp