What the brain does

White turns a hue, and the models part at blue

Mix a saturated light with white and its hue changes as well as its saturation — the Abney effect, and the reason lines of constant perceived hue curve in a chromaticity diagram. Asked what adding white does to the twenty-four most saturated colours a display makes, CIECAM16, CIELAB and Oklab all turn the hue. About reds they agree: CIECAM16 turns within a degree of Oklab, whose hue was fitted to observers' constant-hue judgements. About the display's blue they do not: Oklab turns sixteen degrees, CIECAM16 four, and CIELAB nine the other way.

Assumes The model has a hue shift it was never given, The hue scale has four corners and No mapping preserves everything.

The model has a hue shift it was never given found that CIECAM16 changes the hue of a monochromatic light as the light is made brighter — the Bezold–Brücke effect — and puts the effect’s invariant wavelengths near where observers find them, although nothing in the model was fitted to it. The effect came out too small, by a large factor, and in roughly the right shape.

There is a second classical hue shift, and it concerns purity rather than brightness. Mix a saturated light with white and its perceived hue changes, not only its saturation. Abney described it at the start of the twentieth century; it is why, in any chromaticity diagram, a line of constant perceived hue from a saturated colour to the white point is a curve rather than a straight line. Every operation that takes a colour towards grey while trying to hold its hue — a desaturation slider, a gamut mapping, a pale tint on a display — depends on getting that curve right.

The question here is what the models used for those operations say about it. It needs a reference, and one is available without running an experiment. Oklab takes its hue behaviour from IPT, which was built to straighten the constant-hue loci measured by Hung and Berns: a physical mixture whose hue angle turns in Oklab is one those observers’ judgements say turns in appearance. So Oklab’s turn is the yardstick, CIECAM16 and CIELAB are the models, and what matters is where they depart from it.

Agreement at red, disagreement at blue

All three models turn the hue of a display colour as white is added. From a saturated red to a fifth of its purity, CIECAM16 turns −9.4° and Oklab −10.2°, while CIELAB turns −18.1°. From the display’s blue, Oklab turns +16.3°, CIECAM16 +3.6° and CIELAB −8.9° — the opposite direction.

  • Across the reds and oranges CIECAM16 stays within a degree and a half of Oklab. CIELAB turns about twice as far.
  • Through the blues CIECAM16 falls short of Oklab by up to 13 degrees; CIELAB departs by up to 25 and turns the wrong way.
  • Through the greens CIECAM16 turns about 5 degrees further than Oklab, a smaller disagreement in the other direction.
  • Every turn grows smoothly with the added white; none of the models has a threshold purity at which hue starts to move.
  • “The same hue, less chroma” is a straight line in Oklab, a mild curve in CIECAM16 and a strong one in CIELAB when drawn from the display’s blue — the path a desaturation would take in each.

Twenty-four colours, three models

The colours are the most saturated an sRGB display can make, one every fifteen degrees of HSV hue from red round through yellow, green, cyan, blue and magenta. Each is mixed with the display’s white at the same luminance — so only purity changes — in steps down to a fifth of its purity, where four fifths of the light is white. At each step the hue angle is read in three places: CIECAM16’s hue under an average surround adapted to the display’s white, CIELAB’s hue angle against the same white, and Oklab’s.

How far each model turns a display colour's hue as white is added. The twenty-four most saturated colours an sRGB display makes, one every 15° of HSV hue across, each mixed with the display's white at the same luminance down to a fifth of its purity. Up, how far that mixture's hue angle turns in CIECAM16, CIELAB and Oklab. From red to a fifth of its purity CIECAM16 turns −9.4° and Oklab −10.2°; CIELAB −18.1°. From the display's blue, Oklab turns +16.3°, CIECAM16 +3.6° and CIELAB −8.9°.
Fig. 1 How far CIECAM16, CIELAB and Oklab turn the hue of twenty-four display colours mixed with white down to a fifth of their purity.

The figure above is the turn at a fifth of the purity, colour by colour. The three curves share a shape and not a scale. All three turn the reds and oranges negatively — towards magenta — and the greens positively, and all three pass near zero around cyan and again around magenta. Where they part is the blue region, from about 195 to 270 degrees of HSV hue, and there Oklab rises to its largest turn while CIELAB falls to one of its largest in the opposite direction, with CIECAM16 between them and much nearer zero.

That shared shape is worth noticing before the disagreement. None of the three models treats a mixture with white as a line of constant hue, and all three turn reds towards magenta. The Abney effect is not a feature one model has and the others lack; it is present in all of them, in different amounts. A hex code is not a colour made the point that a display value names a colour only once a model is chosen; the same holds for a display colour’s hue once white is added, and the models give three answers.

The reds: agreement

The display's red, mixed with white a step at a time. The hue turn of the display's red as white of the same luminance is added, from full purity on the left to a fifth on the right, in the three models. At a fifth of its purity CIECAM16 has turned −9.4°, CIELAB −18.1° and Oklab −10.2°. Each curve bends smoothly: the turn grows with the white rather than jumping at some purity.
Fig. 2 The display’s red mixed with white a step at a time, from full purity to a fifth, and how far its hue turns in each model.

For the display’s red, CIECAM16 and Oklab trace nearly the same curve: −4.2 and −3.2 degrees at four fifths of full purity, −8.1 and −8.1 at two fifths, −9.4 and −10.2 at a fifth. CIELAB turns faster from the start and reaches −18.1.

The agreement holds across the reds and oranges — at 0, 15, 30 and 45 degrees of HSV hue CIECAM16’s turn is within 0.8 of a degree of Oklab’s — and it is a genuine agreement between independent constructions. CIECAM16’s hue comes from an opponent transform of compressed cone-like signals fitted mostly to colour-appearance scaling data; Oklab’s comes from IPT’s fit to constant-hue loci. They arrive at the same answer about what white does to a red.

One reason for CIELAB’s doubling is visible in its construction. It divides each tristimulus value by the white’s before taking a cube root, and a saturated red has very little Z; adding white therefore raises the red’s Z by a far larger proportion than its X or Y, and b*, which is built from the Y and Z terms, moves fastest. Oklab and CIECAM16 both mix the three values into cone-like signals before compressing them, and neither has a channel that starts near zero in the same way. A pale pink specified by holding a red’s CIELAB hue angle is corrected for a turn twice the size of the one the constant-hue data describe, so it is not held on the hue those data would hold it on. The path figures further down show how far apart the two paths run, and for red the gap is small in chroma terms, because the reds’ paths all run close together; it is at blue that the same mistake becomes large.

The blues: disagreement

The display's blue, mixed with white a step at a time. The hue turn of the display's blue as white of the same luminance is added, from full purity on the left to a fifth on the right, in the three models. At a fifth of its purity CIECAM16 has turned +3.6°, CIELAB −8.9° and Oklab +16.3°. Each curve bends smoothly: the turn grows with the white rather than jumping at some purity.
Fig. 3 The display’s blue mixed with white a step at a time, and how far its hue turns in each model.

For the display’s blue the three models go three ways. Oklab turns steadily positive — +3.5 degrees at four fifths of the purity, +11.5 at two fifths, +16.3 at a fifth. CIECAM16 turns positive too but a quarter as far, +3.6 at a fifth. CIELAB turns negative, to −8.9.

The direction matters because of where the blue sits. The display’s blue has a hue angle near 283 degrees in CIECAM16, with magenta near 335 and cyan near 196, and the other two spaces are arranged the same way round; so a positive turn from blue is a turn towards violet and magenta, and a negative one a turn towards cyan. Oklab says a blue mixed with white drifts towards violet, CIELAB says it drifts towards cyan, and CIECAM16 says it drifts a little towards violet. A correction designed in CIELAB, rotating a pale blue back towards violet to undo a cyan drift that CIELAB reports, would push it further in the direction Oklab says it had already gone.

How far CIECAM16 and CIELAB turn from what Oklab turns, colour by colour. For each of twenty-four display colours, the difference between each model's hue turn and Oklab's, from full purity to a fifth of it. CIECAM16 stays within a degree and a half of Oklab through the reds and oranges and departs through the blues by up to 13 degrees; CIELAB departs in both places, by up to 25 degrees at blue.
Fig. 4 For each display colour, how far each model’s turn departs from Oklab’s, from full purity to a fifth.

The gaps make the pattern clean. CIECAM16’s departure from Oklab is under a degree and a half through the reds and oranges, rises to about five degrees through the greens, and reaches 13 degrees at the blues. CIELAB’s departure is several degrees at the reds and 25 at the blues. The blue region is where both models are least like the constant-hue data, and it is the region CIELAB is best known for getting wrong.

“Same hue, less chroma” in each model

The practical form of the question is an operation, not a turn. A desaturation that holds hue picks a colour’s lightness and hue angle in some space and scales its chroma towards zero. Each model’s version of that operation is a path, and drawing the three paths in one space shows what each does.

"The same hue, less chroma" from the display's blue, in three models. Starting from the display's blue, each model's own path of constant lightness and constant hue angle towards the neutral, all drawn on Oklab's a–b plane so they can be compared. Oklab's is the straight line to the centre. CIECAM16's bows away from it by up to 0.029 and CIELAB's by 0.073 in Oklab units. A gamut mapping or a desaturation control that holds hue in CIELAB travels along the most curved of the three.
Fig. 5 From the display’s blue, each model’s own path of constant lightness and hue angle towards the neutral, drawn on Oklab’s a–b plane.

Oklab’s path is a straight line to the neutral, because in its own coordinates constant hue angle is a straight line. CIECAM16’s bows away from it by up to 0.029 and CIELAB’s by 0.073, both towards positive a — the red–magenta side. In words: holding CIELAB’s hue angle while taking the display’s blue towards grey passes through colours Oklab would call violet, which is the familiar complaint that CIELAB desaturations turn blues purple. CIECAM16 does it too, at two fifths the size.

"The same hue, less chroma" from the display's red, in three models. Starting from the display's red, each model's own path of constant lightness and constant hue angle towards the neutral, all drawn on Oklab's a–b plane so they can be compared. Oklab's is the straight line to the centre. CIECAM16's bows away from it by up to 0.003 and CIELAB's by 0.013 in Oklab units. A gamut mapping or a desaturation control that holds hue in CIELAB travels along the most curved of the three.
Fig. 6 The same three paths from the display’s red.

From the red, the three paths nearly coincide: CIECAM16 bows by 0.003 and CIELAB by 0.013. The agreement about what white does to red and the agreement about what “the same hue” means for red are the same fact seen two ways. A gamut mapping that holds hue in CIECAM16 treats reds as the constant-hue data would and treats blues roughly halfway between those data and CIELAB.

What this means for a colour pipeline

Three things, in order of how often they bite.

Desaturate blues in Oklab or IPT rather than in CIELAB, if hue is meant to hold. No mapping preserves everything set out the trade a gamut mapping makes between preserving colours and preserving gradients; this adds that “preserve hue” is not one instruction but three, depending on the space, and that for the blues of a wide-gamut display the choice of space moves the result by more than ten degrees.

Treat CIECAM16’s hue as reliable for reds and oranges and approximate for blues. Why there are four unique hues set out how the model’s hue scale is fixed at the unique hues; those four hold the scale at four points and say nothing about how hue moves between saturated and pale versions of a colour, which is the question here. The model agrees with the constant-hue data within a degree through the warm half of the display’s range and is short by up to thirteen through the blues. The hue scale has four corners showed that CIECAM16’s reported hue quadrature is piecewise, built through four unique hues; the blue region is also where the underlying hue angle departs most from constant-hue judgements, so a hue tolerance written in CIECAM16 for blues is looser in appearance than the same tolerance for reds.

And do not use CIELAB’s hue for pale colours at all where it can be avoided. A gradient that runs from a saturated colour to white is a mixture with white by construction, and a gradient is a path is the reminder that the path it takes through appearance depends on the space it was interpolated in. It doubles the red turn and reverses the blue one. The diagram was replaced in 1976 is the history of why CIELAB was adopted; hue linearity for tints was not among its design goals, and a palette of tints generated by holding CIELAB hue is a palette whose light end has drifted from its dark end in a way nobody chose.

How the turns were computed

The display colours are the sRGB primaries’ boundary colours at each HSV hue with saturation and value one, converted to XYZ with sRGB’s matrix and scaled so that the display’s white has a luminance of 100. A mixture at purity p is p times the colour’s tristimulus values plus 1 − p times the white’s, with the white scaled to the colour’s own luminance, so the mixture’s luminance equals the colour’s at every step. Purities are 1, 0.8, 0.6, 0.4 and 0.2.

CIECAM16 is evaluated with the display’s white adopted, an adapting luminance of 100 cd/m², a background of 20 and an average surround; its hue is the angle h. CIELAB’s hue angle is taken against the display’s white. Oklab’s is taken from its own a and b. A turn is the wrapped difference between a mixture’s hue angle and the pure colour’s. The constant-hue paths hold each model’s lightness and hue angle and scale its chroma in eight steps to zero, convert each step to XYZ through that model’s inverse, and convert the result to Oklab.

What this leaves out

Oklab is a stand-in for observers, not observers. Its hue comes from IPT, and IPT was fitted to one set of constant-hue loci measured on a display under one set of conditions, with a limited number of hue directions. Where those data are thin — very saturated blues and violets, near the edge of what that display could show — the reference is weakest, and the display blue here is close to that edge. The finding that CIECAM16 and CIELAB depart from Oklab at blue is solid; how large the true perceptual turn is at the display’s blue is the part that rests most on the reference.

The mixtures are additive, with white light. A tint made by adding white paint to a coloured one follows a different path, for physical reasons that have nothing to do with any of these models, and a tint in paint turns the other way measures it.

The disagreement between CIECAM16 and Oklab here is also not the same thing as the disagreement two uniform spaces disagree about between measured. That essay compared the paths two spaces call shortest; this compares the paths they call constant in hue. The two can part in different places, and at blue both do.

And everything is at one adapting luminance and one surround. The model has a hue shift it was never given found CIECAM16’s hue moving with luminance as well, so a pale colour on a dim display turns by an amount that combines both shifts, and nothing here combines them.

Still open: a direct test at the blues

The disagreement is sharpest at one place, and that place can be tested without trusting any of the three models.

The experiment is a constant-hue matching task: an observer is shown the display’s blue and a series of paler colours of the same luminance, and adjusts each paler colour until its hue matches the saturated one. The settings trace the observer’s own constant-hue path from the blue to white. The three models make three distinct predictions about it — nearly straight towards the white point in CIECAM16’s terms, bowing towards violet in CIELAB’s, and bowing the other way in Oklab’s frame of reference — and the difference between the Oklab and CIELAB predictions at a fifth of the purity is about twenty-five degrees, large enough for a small number of observers to settle.

The same session run at a red would check the part that already agrees. A red should come out as all three models except CIELAB predict, and if it does not, the agreement between CIECAM16 and Oklab at red is a coincidence of two fits rather than a property of perception.

Agreement is evidence only where the models are independent

The habit is about what agreement between models means.

Two models agreeing about a prediction is usually taken as support for the prediction. It is support only in proportion to how independently the two arrived at it. CIECAM16 and Oklab agreeing about reds is meaningful because they were fitted to different data by different constructions; CIECAM16 and CIELAB would not be independent in the same way for a question both were built around.

The move is to find a reference whose construction encodes the phenomenon directly — here, a space fitted to constant-hue judgements — and to read the other models’ disagreement with it as a map of where they are untested. The map here says reds are well tested and blues are not.

The failure mode is to average the models, or to pick the one that is standard, and to report a hue turn with no statement of which model produced it. A reported hue angle for a pale blue is a statement about a model, and at blue the three models’ answers are further apart than most hue tolerances.

What this makes readable

Essays that name this one as a prerequisite.

Named alongside this one

Essays reaching for the same objects. Nobody chose these; they are what the index of named objects makes visible.

What links here

Every essay whose body links to this one.

The objects this essay names

Each one links to every other essay that touches it.

ChromaCIECAM16CIELABColour appearanceGamut mappingHueModelling assumptionOklabSaturationUnique hues