Matching and measuring

The yellow is sharp where the tolerance unit does not compress

A safety margin moves each corner of a display's gamut inward by a multiple of itself that depends on the corner's shape. In CIELAB, sRGB's blue is its sharpest corner and its yellow among its bluntest; carried into ΔE₀₀, the order turns over, and the yellow becomes the sharpest corner of both sRGB and BT.2020. The prediction was that the yellow keeps its sharpness because its faces run along lightness, where ΔE₀₀'s weighting is largest at the yellow's L* of 97. Taking ΔE₀₀ apart length by length says otherwise. Its lightness weighting changes the yellow's move by nothing. Its chroma compression — the term that opens every other corner — does, on its own, bring every other corner of both displays under 1.35 times a margin, and leaves the yellow at 1.78. Of the yellow's three directions only one runs along chroma; at the other corners two or three do, and a metric that compresses chroma pulls those together and flattens the corner between them.

Assumes A display's blue is sharp where the rotation is not, The tolerance unit opens every edge and A tolerance's own unit rounds the corners.

Keep every colour a stated distance inside what a device can reproduce, and the colours on its boundary have to move inward. On a flat face a margin moves a colour exactly the margin; at a corner, where faces meet at an acute angle, it moves it several times further, and how many times is set by the corner’s tangent shape — the directions the device’s controls can move it in, carried into whatever unit the margin is stated in. A display’s blue is sharp where the rotation is not read every corner of an sRGB and a BT.2020 display that way and found each tangent shape predicting the move of the curved gamut solid itself to within a per cent.

It also found the corners’ order turning over between the units. In CIELAB, sRGB’s blue is its sharpest corner, a margin moving it 3.35 times itself, and its yellow is among its bluntest at 2.40, four of its six corners sharper. Carried into ΔE₀₀, the unit a colour tolerance is usually stated in, every corner of both displays lies between 1.18 and 1.78 times a margin — and the yellow, at 1.75 on sRGB and 1.78 on BT.2020, is the sharpest corner of both. A ΔE₀₀ margin costs a display most at its yellow.

That essay closed on why. ΔE₀₀ divides each small step by a length along lightness, one along chroma and one along hue, and at a display’s yellow, L* 97 and chroma 97, the lightness length is at its largest, about 1.7, while the chroma length is 5.4. The prediction was that the yellow keeps its sharpness because its faces run along lightness, where ΔE₀₀ compresses least relative to CIELAB’s own lightness steps, so that the edges running down from the yellow towards green and red open less than any other; and that it is the lightness weighting, not the chroma one, that makes the yellow where a ΔE₀₀ margin costs most.

It is not the lightness; it is what the chroma length cannot reach

Rebuilt from its lengths one at a time, ΔE₀₀’s chroma length alone brings every corner of both displays but the yellow under 1.35 times a margin, and leaves the yellow at 1.78 and 1.80 — as sharp as the full metric makes it. Leaving the lightness length out changes the yellow’s move by nothing on sRGB and by five hundredths on BT.2020. What sets the yellow apart is the make-up of its corner: of the three directions a display’s drive can move it in, only one — adding blue, back towards white — runs mostly along chroma. At eight of the other ten corners two or three of the directions do, and a metric that divides chroma by five to ten pulls such directions together and opens the corner between them. The yellow’s two sharp edges, towards red and towards green, close to 58 and 51 degrees in CIELAB on sRGB and ΔE₀₀ opens them only to 72 and 81, where it opened the blue’s sharpest edge from 47 to 117.

  • The prediction is wrong about the cause. ΔE₀₀’s lightness weighting is irrelevant to the yellow’s sharpness.
  • The cause is the one term that does all the work elsewhere. ΔE₀₀ blunts corners by compressing chroma; the yellow is the corner that term cannot blunt.
  • The yellow’s sharpness lies across hue. Its two sharp edges run along the face of fully saturated colours, spanned by two directions that move it round the hue circle.
  • The construction holds at the yellow: inset directly, the curved solid’s yellow moves within a per cent of its tangent shape in CIELAB and within three in ΔE₀₀, a little rounder at each wider margin.
What ΔE₀₀'s chroma length alone does to each corner of two displays. For the six corners of sRGB and BT.2020, the move per unit of margin their tangent shapes predict in CIELAB, with ΔE₀₀'s chroma length alone, and with its lengths along lightness, chroma and hue together. The chroma length alone brings every corner but the yellow under ×1.35; it leaves the yellow at ×1.78 and ×1.80, and the full metric at ×1.75 and ×1.78.
Fig. 1 For the six corners of sRGB and BT.2020, the move per unit of margin their tangent shapes predict in CIELAB, with ΔE₀₀’s chroma length alone, and with its three lengths together.

Each group of three bars is one corner read three ways. The upper bar is CIELAB, where the corners spread from 1.67 to 4.39. The middle bar keeps only ΔE₀₀’s chroma length — lightness and hue steps left at their CIELAB size — and it is nearly the whole story: every corner but the yellow drops to between 1.09 and 1.34, and the yellow, highlighted, stays where it was. The lower bar is ΔE₀₀ entire. For eleven corners of twelve, the chroma length does most of what ΔE₀₀ does. For the yellow it does nothing, and the yellow’s place at the top of the ΔE₀₀ ranking is simply where the one corner the dominant term leaves alone ends up.

ΔE₀₀’s three lengths

ΔE₀₀'s three lengths at each corner of two displays. At each corner, how many CIELAB units one ΔE₀₀ unit spans along lightness, chroma and hue. Chroma is compressed most everywhere — by 5.4 at sRGB's yellow and up to 10.4 at BT.2020's green — and lightness least; the yellow's lightness length, 1.70, is the largest of sRGB's corners and still the smallest of its own three.
Fig. 2 At each corner of both displays, how many CIELAB units one ΔE₀₀ unit spans along lightness, chroma and hue.

ΔE₀₀ was fitted to how observers judge small differences, and what it says about a display’s corners is that observers are least sensitive to chroma differences where chroma is greatest. At every corner of both displays the chroma length is the largest of the three: 5.4 CIELAB units to one ΔE₀₀ unit at sRGB’s yellow, 7.0 at its blue, 10.4 at BT.2020’s green. The hue length runs from 1.7 to 5.3 and the lightness length from 1.03 to 1.71. The yellow’s lightness length, 1.70, is the largest of sRGB’s six corners — which is what the prediction noticed — and still the smallest of its own three. A lightness step at the yellow is compressed by 1.7 where a chroma step is compressed by 5.4; if lightness were what mattered, the chroma compression would still be three times the larger effect.

The three lengths can be taken apart because at the corners of a display ΔE₀₀’s local matrix has almost no coupling between them: the blue corner has nothing to twist and the display’s blue essay found the rotation term moving no corner’s prediction by more than two hundredths. Rebuilding the metric from its three lengths reproduces its predictions to within that, and rebuilding it with one length set to one — that step left at its CIELAB size — shows what the length does. With the lightness length left out, sRGB’s yellow still moves 1.75 times a margin and BT.2020’s 1.73. With the hue length left out it moves 1.82 and 1.84, a little sharper: the hue compression, by about 2.1 and 2.5, is the only length that opens the yellow at all.

Why chroma compression opens a corner

A corner’s sharpness is the angle its faces make, and a metric changes that angle by stretching some directions against others. Compressing chroma pulls together any two directions that both run back along chroma, because it shrinks the part of each that they share and leaves the parts in which they differ. Two directions that leave a corner mostly down the chroma axis, one tilted up in lightness and one tilted down, meet at a narrow angle in CIELAB; divide their common chroma component by seven and they meet at a wide one.

How much of each corner's three directions runs along chroma. For the six corners of both displays, the cosine between each of the corner's three directions — a drive raised or lowered — and the chroma axis at the corner. At the yellow only one of the three runs mostly along chroma: lowering red moves it almost purely across hue, lowering green across hue and partly down and back, and only adding blue moves it straight back towards white. At most other corners two or three run mostly along chroma, so a metric that compresses chroma squashes them together and opens the corner.
Fig. 3 For the six corners of both displays, how far each of the corner’s three directions runs along chroma.

That is what happens at the blue. From sRGB’s blue, lowering blue and adding green both run mostly back along its chroma, 0.94 and 0.87 of the way, and they are 44 degrees apart; ΔE₀₀’s chroma compression swings them wide open. At eight of the other ten corners — all but sRGB’s cyan, which is blunt in CIELAB already, and BT.2020’s magenta, whose second direction falls just short — two or three of the corner’s three directions run more than six tenths along chroma. At the yellow only one does. Adding blue moves a display’s yellow straight back towards white, almost purely along chroma. Lowering red moves it round the hue circle towards green, almost purely across hue; lowering green moves it round towards red, mostly across hue and partly down. The two directions that do not run along chroma are the ones the corner’s sharpness lies between, and a chroma compression has almost nothing of them to act on.

The yellow’s edges

The yellow's edges and the blue's sharpest, in both units. Next to each display's yellow, the angle between the two faces of its edges towards red, green and white, in CIELAB and in ΔE₀₀, beside the blue's edge towards magenta. The yellow's two sides close to about forty to sixty degrees in CIELAB and ΔE₀₀ opens them to seventy to eighty-five; the blue's magenta edge, as sharp in CIELAB, ΔE₀₀ opens past a hundred and fifteen.
Fig. 4 Next to each display’s yellow, the angle between the faces of its edges towards red, green and white, in CIELAB and in ΔE₀₀, beside the blue’s edge towards magenta.

The edges say the same thing along the corner’s length. The yellow’s two side edges — towards red and towards green, along the face of fully saturated colours that has no blue in it — close to 58 and 51 degrees in CIELAB on sRGB and 42 and 40 on BT.2020, and ΔE₀₀ opens them to between 69 and 81 degrees. The edge towards white, which runs along chroma, is nearly flat in both units, 139 degrees in CIELAB and 130 in ΔE₀₀. The blue’s sharpest edge, towards magenta, was as sharp in CIELAB, 47 degrees on sRGB, and ΔE₀₀ opened it to 117.

The face of fully saturated colours is the one where a display shows its brightest yellows, oranges and yellow-greens — the colours with no blue in them — and the yellow is where that face meets the two faces running in towards white. The yellow is sharp because that face is steep in lightness against the others: moving round the hue circle from yellow loses lightness fast, since the eye’s sensitivity falls away on either side of the yellow. That is a statement about hue and lightness, and ΔE₀₀’s chroma length — its largest term — says nothing about either. The yellow stays sharp because it leans found a press’s yellow keeping its sharpness in ΔE₀₀ for a related reason, its lean in lightness; the display’s yellow does the same with more to keep.

A press agrees

The display’s yellow is not the first yellow in the collection to keep its sharpness in ΔE₀₀. A margin costs a press its corners found a coated press’s solid yellow its sharpest corner in CIELAB, moving 3.2 times a four-unit margin on the finely sampled press, and the press’s yellow stayed its sharpest in ΔE₀₀ too, where every other corner of the press opened towards a face. On a press the yellow is sharp in both units; on a display it becomes sharpest only in ΔE₀₀, because a display’s additive blue and green primaries are sharper still in CIELAB and ΔE₀₀ takes that sharpness away.

The two devices end at the same answer for the same reason. The yellow stays sharp because it leans took ΔE₀₀ apart at the press’s yellow and found its lightness weight and its hue function both rounding the corner, not sharpening it — as the hue length does here, and as the lightness length fails to do anything here — and the yellow kept sharp because its tongue leans out of the chroma axis, towards lightness, so that ΔE₀₀’s chroma compression acts on it less than on a spike straight out in chroma. A display’s yellow, two primaries at full drive, is the same shape carried further: its sharpness lies almost wholly off the chroma axis, across hue and down in lightness, and the chroma compression finds only one of its three directions to act on. Both sit at the top of the saturated face, where lightness falls fastest round the hue circle, and in both it is that fall, and not any weighting of ΔE₀₀’s, that keeps the corner sharp.

Insetting the yellow

The yellow corner inset directly, against its tangent shape. The distance from each display's yellow corner to the nearest colour lying at least a margin inside the curved solid, per unit of margin, at one, two and four units of CIELAB and ΔE₀₀, with each tangent shape's prediction dotted. sRGB moves 2.41, 2.41, 2.41 in CIELAB and 1.74, 1.73, 1.71 in ΔE₀₀; BT.2020 2.98, 2.98, 2.98 and 1.77, 1.76, 1.73.
Fig. 5 Each display’s yellow corner inset directly — the nearest colour a margin inside the curved solid, per unit of margin — at one, two and four units of CIELAB and ΔE₀₀, against the tangent shape’s prediction.

The census checks the tangent shape against the curved solid as the blue essay did: for each display, unit and margin it finds the nearest colour to the yellow that lies at least the margin inside the gamut, searching every direction into the solid against the boundary sampled densely near the corner. sRGB’s yellow moves 2.41 times margins of one, two and four in CIELAB against its tangent shape’s 2.40, and BT.2020’s 2.98 against 2.98. In ΔE₀₀ the yellow rounds a little as the margin grows: sRGB’s moves 1.741, 1.729 and 1.708 times margins of one, two and four against its shape’s 1.753, BT.2020’s 1.774, 1.763 and 1.731 against 1.78. The blue kept its ΔE₀₀ shape to within a per cent at four units; the yellow drifts two to three per cent below it. The census does not take that drift apart; the likeliest cause is that ΔE₀₀’s own lengths change faster along the yellow’s faces than along the blue’s, so that the metric is less constant over four units there. Even at four units the yellow’s move, 1.71 and 1.73, is well above every other corner’s tangent shape.

What a specification should take from this

A ΔE₀₀ margin on a display costs most at the yellow, and it will on any display. The yellow is a display’s lightest corner and sits at the top of the saturated face, and its sharpness comes from how fast lightness falls round the hue circle from it — a property of the eye’s luminous efficiency, not of any display’s primaries. Both displays here put their yellow at the top of the ΔE₀₀ ranking, from quite different CIELAB rankings.

A tolerance unit is three stretches, and a question about it is a question about which one. The prediction reached for the stretch that was largest at the yellow among the corners, lightness, and the answer was the stretch that was largest at every corner, chroma, acting everywhere except there. A tolerance unit rounds the corners and the tolerance unit opens every edge found ΔE₀₀ levelling a press’s corners; this is the same levelling, and the yellow is what it cannot level.

The yellows of a proof are where a ΔE₀₀ tolerance bites. A proofing tolerance stated in ΔE₀₀ and applied as a gamut margin removes more of a display’s yellows, relative to the margin, than of any other colour; the saturated yellows and yellow-greens along the saturated face are where a margined gamut falls furthest inside the display’s.

How the corners were read

The gamuts, tangent shapes and moves are those of the blue essay: each display’s gamut the image of the cube of linear drive under its primary matrix, in CIELAB against its D65 white; a corner’s three directions the finite-difference images of its drive moved by a ten-thousandth; a cone’s move per unit margin the shortest vector with every face’s inward component at least one. ΔE₀₀ is rebuilt at each corner from its own lengths along lightness, chroma and hue, read off its local quadratic form: with all three it is the metric without its rotation, which at these corners it barely has; with one length set to one, that step is left at its CIELAB size; with one kept and two set to one, only that length acts. A direction’s make-up is its cosine with each of the corner’s lightness, chroma and hue axes. The edges’ dihedral angles are read two hundredths of drive along each edge. The inset is the blue essay’s census at the yellow: the boundary sampled near the corner, 1,600 directions searched by bisection for the first point a margin deep, refined with a seeded search, and its depth checked against the faces directly.

What the census leaves out

Two displays, both D65. Other primaries move every corner, but the yellow’s sharpness is set by lightness falling round the hue circle, and that belongs to the observer.

ΔE₀₀ alone. ΔEITP and CAM16-UCS weight lightness, chroma and hue differently, and the units disagree in the dim found them parting company on exactly such questions. Whether they also leave the yellow sharpest is a separate census.

Small margins. One to four units is where a tangent shape holds, and it holds; the yellow’s saturated face curves, and a margin of twenty would reach where it has.

Still open: whether CAM16-UCS keeps the yellow sharpest

ΔE₀₀ blunts a display’s corners by compressing chroma and leaves the yellow because its sharpness lies across hue. CAM16-UCS compresses colourfulness too, logarithmically rather than by a length that grows with chroma, and it treats hue through an appearance model’s hue quadrature rather than a fitted weighting.

The calculation is this census with the margin stated in CAM16-UCS — each corner’s tangent shape carried by CAM16-UCS’s local metric at the display’s white and an average surround, and the corners inset directly. The prediction is that CAM16-UCS levels the corners less than ΔE₀₀ does, because its logarithmic colourfulness compresses high chroma less steeply, so the blue stays sharper than the yellow; and that the yellow’s two side edges open about as much as in ΔE₀₀, since hue is weighted similarly. If so, which corner a tolerance costs most depends on the unit it is written in, and a specification that names its margin in one unit and checks it in another is checking a different gamut.

The term that does the work is not always the term that matters

The habit here is about where to look for a cause.

The prediction looked for what was special about the yellow among ΔE₀₀’s terms and found the lightness length at its largest there. But a term that is largest at one corner can still be small against the term that is large everywhere. What made the yellow special was not a term it had more of; it was the one term that acted on every other corner and had nothing to act on at the yellow.

The failure mode is to explain an exception by what is present at it, when the explanation is what is absent. The test is to take the metric apart term by term and ask, for each, which cases it moves — and then to look at the case it does not.

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.

CIELABConvexityΔEDisplay primariesGamutModelling assumptionToleranceWorst case