What it takes to deliver it

A budget drawn through one hue

The three-stage error budget this collection publishes for a colour-management chain is computed over twenty-four colours of a single hue at a single lightness. The quantity that actually varies with hue — how many distinguishable colours a rendering intent destroys — runs from nothing at all to more than a third, and the hue the budget uses is near the bottom of that range.

Assumes A constraint costs what it points at, A mean has a set under it and Saturation is nearly everything.

A colour-management chain has three places it can go wrong, and this collection publishes a budget saying how much each is worth. Every number in it is computed on one ramp of one hue at one lightness, and the choice is invisible in the result.

A gradient of one hue, mapped into a press's gamut 2 waysChroma asked for along the bottom, chroma delivered up the side, for a ramp at lightness 55 and hue angle 25°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards — the flat part is a gradient arriving as a single colour. The perceptual intent is under the diagonal from the start, which is the price of never going flat.20406080asked for = deliveredrelative-colorimetricperceptual024487297chroma asked for2 intentsCIE 1931 2° observer · D50
Fig. 1 What a rendering intent does to colours that will not fit, on the one ramp the budget is computed along: lightness 55 at hue 25°, chroma asked for against chroma delivered. The colorimetric intent follows the diagonal until the press runs out and is flat afterwards; the perceptual one is under the diagonal from the start.

The budget is drawn at one hue and one lightness, and both are arguments. Moving them shows how much of the answer belongs to the intent and how much to where the ramp was taken.

A gradient of one hue, mapped into a press's gamut 2 ways. Chroma asked for along the bottom, chroma delivered up the side, for a ramp at lightness 65 and hue angle 200°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards — the flat part is a gradient arriving as a single colour. The perceptual intent is under the diagonal from the start, which is the price of never going flat.
Fig. 2 The same two intents on a light cyan ramp, which is a hue the press reaches further into than the display does. The budget nearly vanishes here, and nothing about either intent has changed.

A different pair of intents on a darker ramp is the next thing to vary, because a policy that spends a budget is not the same thing as the budget itself.

A gradient of one hue, mapped into a press's gamut 2 ways. Chroma asked for along the bottom, chroma delivered up the side, for a ramp at lightness 45 and hue angle 25°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards — the flat part is a gradient arriving as a single colour. The perceptual intent is under the diagonal from the start, which is the price of never going flat.
Fig. 3 A dark orange ramp under a different pair of intents. The saturation intent spends its budget differently from the perceptual one and it spends the same amount, because the amount is set by the gamut rather than by the policy.
A gradient of one hue, mapped into a press's gamut 2 ways. Chroma asked for along the bottom, chroma delivered up the side, for a ramp at lightness 55 and hue angle 300°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards — the flat part is a gradient arriving as a single colour. The perceptual intent is under the diagonal from the start, which is the price of never going flat.
Fig. 4 And the violet ramp, where the press is at its worst, under the two intents that both remap rather than clip. Whichever is chosen, what is being divided up is the same shortfall.

Two more hues complete the circuit, and one of them is the case where the two colorimetric intents part company rather than the two remapping ones.

A gradient of one hue, mapped into a press's gamut 2 ways. Chroma asked for along the bottom, chroma delivered up the side, for a ramp at lightness 45 and hue angle 140°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards — the flat part is a gradient arriving as a single colour. The perceptual intent is under the diagonal from the start, which is the price of never going flat.
Fig. 5 A dark green ramp, which is a hue the press handles comfortably until the very end. Most of the budget is spent in the last few steps, so a summary that quotes an average over the ramp is quoting nothing.
A gradient of one hue, mapped into a press's gamut 2 ways. Chroma asked for along the bottom, chroma delivered up the side, for a ramp at lightness 70 and hue angle 90°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards — the flat part is a gradient arriving as a single colour. The perceptual intent is under the diagonal from the start, which is the price of never going flat.
Fig. 6 And the two colorimetric intents on a light ramp, where the difference between them is the paper. The budget is the same; what changes is who pays it, which is the decision an intent actually is.

The claim

The delivery budget’s mapping stage is measured on one hue, the quantity it should be measuring runs from zero to 37 per cent across hues, and the hue it uses sits near the bottom.

  • The samples are chromaRamp(L = 55, h = 30) — twenty-four colours of one hue, at one lightness, from neutral outward.
  • The relative-colorimetric intent’s reported error is 0.000 at every hue, because that intent by definition moves nothing that was already inside the destination gamut.
  • The quantity that varies is the collapse: how many pairs of distinguishable colours arrive indistinguishable. It runs 0.0% at h = 90–210 and 36.7% at h = 330.
  • The budget’s hue gives 8.1%.
  • And which intent is better changes with hue, so a chain-wide recommendation cannot be made from one ramp.

What the budget is

Three stages, each with a knob somebody sets:

stage what it is the knob
profile a lookup table’s interpolation error how many grid nodes
mapping what a rendering intent does to colours that fit which intent
room what the viewing condition does to a colour that arrived right booth, office, screen

The published budget reports profile 0.129, mapping 0.000, room 4.296 ΔE*₀₀ — a chain in which one knob has almost no reach, and its headline conclusion — that the room dominates the chain by a factor of thirty over the largest device-side term — is right, is robust, and is not what this essay is about.

The mapping row is what this essay is about, and the reason is that 0.000 is not a small error; it is a quantity that is exactly zero by definition and is therefore measuring nothing.

Why the mapping stage reports zero

The relative-colorimetric intent maps colours outside the destination gamut onto its boundary and leaves everything inside untouched. The budget’s mapping error is defined as what the intent moves that did not need moving, which for this intent is nothing, exactly, at every hue and every lightness.

The round before this one found the same thing from a different direction, while auditing what a published number rests on, and recorded it as a gotcha: a leverage divided by a contribution is a division by nothing when a stage contributes exactly zero, and the fix there was to divide by the total instead. That fix is right and it repairs the arithmetic. What it does not do is ask whether the quantity is the right one.

A stage whose contribution is exactly zero and whose reach is the largest in the table is the interesting case, and the round that found it said so. This is the follow-through: if the quantity being summed is zero for the standard intent, the stage’s real cost is somewhere else.

Where the cost actually is

It is in the pairs of colours that arrive indistinguishable.

A gamut mapping that moves nothing inside the gamut still destroys information, because it maps everything outside onto the boundary — and two source colours that differed by more than a just-noticeable amount can land on the same boundary point. The number of such pairs is what the reader of a printed gradient sees as banding, and it is what a rendering intent is chosen to control.

The machinery already computes it, as collapsed: the fraction of pairs distinguishable in the source that are not distinguishable after mapping. It is not in the budget.

hue colours outside the gamut relative-colorimetric collapse perceptual collapse
7 of 24 7.8% 2.6%
30° 7 of 24 8.1% 3.7%
60° 2 of 24 0.4% 0.4%
90° 0 of 24 0.0% 0.0%
150° 0 of 24 0.0% 0.0%
210° 0 of 24 0.0% 0.0%
270° 11 of 24 21.3% 9.4%
330° 14 of 24 36.7% 14.4%

Nothing at all to more than a third, across a full turn of hue. And the budget’s own hue, 30°, sits at 8.1 — in the lower quarter of the range.

Why the hue matters so much

Because a destination gamut is not round.

At L = 55 the printing gamut this collection models reaches further in the greens and cyans than the source space does, so a ramp at 90° to 210° never leaves it and nothing is clipped: zero outside, zero collapse, and a mapping stage with genuinely nothing to report. At 330° — the magentas — the destination is much smaller, fourteen of twenty-four samples are outside, and clipping them onto the boundary destroys more than a third of the distinguishable pairs.

So the mapping stage’s cost is a property of where in the gamut the content is, and averaging it over one ramp is averaging over one place. A budget for a job of green landscapes and a budget for a job of magenta packaging are different budgets, and the published one is neither.

And which intent to use changes with hue

The sharper consequence, because it is a recommendation rather than a number.

At 90° to 210°, nothing is outside the gamut. Relative-colorimetric collapses nothing and moves nothing. Perceptual collapses nothing and moves everything inside the gamut by 2.86 ΔE*₀₀ to make room for colours that were never there. Relative-colorimetric is strictly better, and by a visible margin.

At 330°, fourteen of twenty-four samples are outside. Relative-colorimetric collapses 36.7 per cent of the distinguishable pairs; perceptual collapses 14.4 per cent, at a cost of 3.13 ΔE*₀₀ of movement on the colours that fitted. Perceptual is better by a factor of two and a half on the thing that matters, and the price it pays is a shift a viewer with no reference cannot see.

The two intents change places somewhere between 60° and 270°, and no measurement on a single ramp can say that. The budget’s ramp at 30° gives 8.1 against 3.7 — perceptual ahead, but by a factor of two rather than two and a half, on a hue where only seven samples are outside.

A clipped channel turns the hue of what is leftCIELAB hue shift against exposure for one saturated stimulus, measured against the same stimulus rendered without clipping. Nothing moves until the first channel reaches the ceiling at 0.25 stops; after that the recorded hue rotates by as much as 40 degrees, with nothing in the scene having changed colour.-24°24°first channel clips0123exposure / stops0.0 stops, 0 clipped1.5 stops, 2 clipped3.0 stops, 2 clippedceiling at 1.0, 13 exposuresCIELAB hue angle, D65
Fig. 7 What happens at the far end of a ramp the destination cannot reach: a saturated orange with one channel at the ceiling, whose recorded hue rotates by as much as 40 degrees with nothing in the scene having changed colour. A gamut-mapping intent is a choice about which of the ramp’s properties to spend, and this is what spending none of them costs.

And lightness, less

Hue is the axis that matters and it is worth measuring the other one to be able to say so.

Sweeping lightness at the budget’s own hue of 30° moves the count of samples outside the destination gamut from 23 of 24 at L = 25 to 14 at L = 85, with the budget’s L = 55 at 17. So lightness moves the clipped fraction by about a third across the whole range, against hue moving it from 0 of 24 to 14 of 24 — from nothing to more than half.

A factor of about two on one axis and a factor of infinity on the other. That is a clean enough separation to give an ordering: a budget that had to fix one coordinate should fix lightness and sweep hue, and the published one does the opposite.

The reason is the shape of a print gamut. Its cross-section at fixed lightness varies enormously with hue — the yellows reach far, the cyans and magentas do not — while its extent at fixed hue varies with lightness in the smooth way any solid does, growing towards the middle and shrinking at both ends. Hue is where the shape is; lightness is where the size is, and a clipping intent is a fact about shape.

The collapse is the square of the clipped fraction

The two columns of the hue table are not independent, and the relation between them is close enough to be a law.

If k of twenty-four samples are pushed onto the gamut boundary and land near one another, every pair among them collapses — C(k,2) pairs out of C(24,2) = 276, which for a moderate k is very nearly (k/24)². Against the measured relative-colorimetric column:

hue outside (k/24)² measured ratio
7 8.5 % 7.8 % 0.92
30° 7 8.5 % 8.1 % 0.95
270° 11 21.0 % 21.3 % 1.01
330° 14 34.0 % 36.7 % 1.08

Within eight per cent on every row, with nothing fitted. So the collapse curve is the clipping curve squared, and the essay’s the two intents’ ranking follows this curve is true of the shape and understates the concentration: a hue where twice as much of the ramp is clipped loses four times as many pairs.

The perceptual column follows the same law with a different constant. Its collapse against (k/24)² gives ratios of 0.31, 0.44, 0.45 and 0.42 — call it 0.42 against relative-colorimetric’s 1.0.

That reduces the whole eight-row table to two numbers and makes the intent question answerable without sweeping anything. Count what fraction of the ramp is outside, square it, and multiply by 1.0 or 0.42. The perceptual intent saves about 0.58 (k/24)² of the distinguishable pairs and costs about 3 ΔE₀₀ of movement on the ones that fitted, so the crossover is at a clipped count rather than at a hue — which is the more portable form of the recommendation, since it survives a change of destination gamut and a hue sweep does not.

Seven or seventeen at the budget’s own point

The two sweeps disagree about the case they share.

The hue table says 7 of 24 samples are outside the destination gamut at L = 55, h = 30. The lightness paragraph says the same point is at 17 of 24. One is the budget’s own operating point, measured twice.

The squared law says which. A collapse of 8.1 per cent corresponds to k = 7, since (7/24)² = 8.5; k = 17 would give 50 per cent, six times what the table reports. The hue table is internally consistent and the lightness sweep’s anchor is not, so the seven is the number the collapse figure corroborates and the lightness row needs re-running before anything is read off it.

That matters because a recommendation rests on it. A budget that had to fix one coordinate should fix lightness and sweep hue is argued from the clipped counts — a factor of about two across lightness against nothing-to-more-than-half across hue — and the argument is made in the currency the essay elsewhere recommends replacing.

Converted by the squared law, the lightness sweep as quoted would run from 92 per cent collapse at L = 25 to 34 at L = 85: an absolute swing of 58 points, against hue’s 36.7. In the quantity that matters, lightness would be the larger axis, not the smaller one, and the recommendation would reverse.

Whether it does reverse cannot be settled here, because the sweep it rests on disagrees with the hue table at their one common point. What can be settled is that the ordering of the two axes was decided in one currency and the reporting recommendation made in another, and that the two currencies are not monotone versions of each other — squaring a fraction changes which of two ranges is wider whenever one starts nearer zero.

The corrected recommendation is therefore to sweep both, which is twelve hues by four lightnesses of a computation that takes milliseconds, and to report the surface rather than either section of it.

What the sample set was chosen for

Worth stating, because the choice was deliberate and the docstring gives its reason.

chromaRamp’s comment says it is deliberately not a random sample, because the failure is concentrated on gradients that run out of the destination gamut, and a uniform sample of the source solid dilutes it into an average that says nothing.

That reasoning is correct and it is the same reasoning the adaptation census gives for using a lattice: a deliberate structure beats a random draw when the quantity of interest is concentrated. What it justifies is not sampling uniformly. It does not justify sampling one hue, and the two are different decisions that the same sentence covers.

This is the pattern the round keeps finding. The interesting decision about a test set gets a paragraph; the values get a default argument; and the paragraph is then read as covering both.

What to publish

The budget per hue, or the budget at the worst hue, and say which. A three-row table with one number each is a chain-wide summary and there is no chain-wide summary to be had for the mapping stage — its cost is between nothing and a third depending on content.

And report the collapse rather than the movement. The mapping stage’s current quantity is what the intent moved that did not need moving, which is zero for the standard intent everywhere. The quantity a reader cares about is what the intent made indistinguishable, which is neither zero nor constant, and it is already computed.

Neither change touches the budget’s headline, which is that the room dominates the chain by more than an order of magnitude. That conclusion survives every hue tested, because the room’s contribution does not depend on hue at all.

What a per-hue budget looks like

The replacement is not complicated and is worth stating concretely, because report it per hue is the kind of recommendation that sounds expensive and is not.

The mapping stage’s cost is already computed per ramp. Running it at twelve hues rather than one is twelve times a computation that takes milliseconds, and the output is a curve rather than a number. That curve has three readings a specification can use:

The maximum, which is what a worst-case job faces — 36.7 per cent collapse at 330° under relative-colorimetric intent.

The fraction of hue at which the stage costs nothing, which is a third of the circle here and is the useful reassurance: for most greens and blues in this destination gamut, the mapping stage genuinely is free and the budget’s 0.000 is right for the right reason.

And the hue at which the two intents change places, which is between 60° and 270° and is the only reading of the three that is a decision rather than a magnitude.

None of the three is available from one ramp, all three are available from twelve, and the third is the one that changes what somebody does.

A dark orange is the hue where a press runs out soonest, and it is where the intents part company earliest.

A gradient of one hue, mapped into a press's gamut 2 ways. Chroma asked for along the bottom, chroma delivered up the side, for a ramp at lightness 35 and hue angle 60°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards — the flat part is a gradient arriving as a single colour. The perceptual intent is under the diagonal from the start, which is the price of never going flat.
Fig. 8 Chroma asked for along the bottom against chroma delivered up the side, at lightness 35 and hue 60°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards, and the flat part is a gradient arriving as one colour.

Where the model stops

The sweep is at one lightness. Sweeping L at fixed hue moves the count of outside samples from 23 of 24 at L = 25 to 14 at L = 85 on the budget’s own hue, so lightness matters too — less than hue, and not negligibly.

And the destination gamut is this collection’s constructed print gamut rather than a measured profile, which is the same absence of measured data the rest of the round keeps arriving at. A real printing condition’s gamut has a different shape, so the positions of the zero-collapse hues would move. The range would not: any destination gamut smaller than its source in some directions and larger in others produces a hue dependence of this kind, and a gamut that is smaller everywhere produces a worse one.

Comparing the two non-colorimetric intents against each other removes the diagonal from the picture and leaves only the two compromises.

A gradient of one hue, mapped into a press's gamut 2 ways. Chroma asked for along the bottom, chroma delivered up the side, for a ramp at lightness 70 and hue angle 180°. A colorimetric intent follows the diagonal until the press runs out and is flat afterwards — the flat part is a gradient arriving as a single colour. The perceptual intent is under the diagonal from the start, which is the price of never going flat.
Fig. 9 A light cyan ramp under the perceptual and saturation intents. Neither follows the diagonal anywhere, so neither can be checked against it — which is why the stage that reports no error is the one to be careful of.

Why the stage that reports zero is the one at risk

Worth stating as a general shape, because a budget with a zero in it is a common object and the zero is usually read as good news.

A budget decomposes an outcome into contributions and reports each. A stage whose contribution is exactly zero is doing one of two things: it is genuinely inert, or the quantity being decomposed is not the quantity the stage affects. The two look identical in the table and are opposite in what they mean.

Here it is the second. The relative-colorimetric intent contributes exactly zero to movement of colours that fitted, which is the budget’s quantity, while destroying up to 36.7 per cent of the distinguishable pairs among colours that did not — which is not in the budget at all. So the stage reads as the safest in the chain and contains the chain’s only irreversible operation.

Irreversible is the word that separates them. The profile stage’s interpolation error and the room stage’s appearance shift are both shifts: a colour arrives at the wrong place and could in principle be moved back. A collapse is not. Two colours that arrive identical cannot be separated by anything downstream, and no amount of budget elsewhere buys them back.

That is an argument for reporting the mapping stage in a different currency from the other two rather than in ΔE*₀₀ at all — and the currency exists, is computed, and is called collapsed.

Who found it, and when

That gamut mapping is hue-dependent is not a discovery; it is why gamut-mapping algorithms are specified in hue-preserving coordinates and why their evaluations use full-gamut test sets rather than ramps. The CIE’s own guidance on gamut-mapping evaluation asks for images and for a range of content, for exactly this reason.

What is new here is the measurement inside this collection’s own budget, and it arrived by asking a question the round had been asking of a completely different file: what set is this mean over? The delivery budget turned out to have the same answer shape as the adaptation census and the camera profile — a set chosen once, for a stated reason that covers its structure and not its values, and never varied.

The third instance of one question

This is the third part of the collection to be asked what set its numbers are means over, and the three answers rhyme closely enough to be worth putting side by side.

what the set what varying it is worth
the adaptation census 125 constructed reflectances a factor of 1.5 on the level
a camera profile a chart of constructed patches a factor of 5.4 on the error
this budget 24 colours of one hue 0 to 37% on the mapping stage

All three sets were chosen once, for a reason that justifies their structure and not their values, and none had been varied. The census’s docstring argues for a lattice and not for its size; the camera’s argues for a parametrised chroma and not for a value; this one argues against a random sample and not for one hue.

That the three are so alike is this round’s most general finding, and it is a finding about how modelling code is written rather than about colour. The interesting decision about a test set gets a paragraph, the values get a default argument, and the paragraph is then read as covering both.

The corollary is a cheap audit anybody can run on their own work: sweep the default arguments of every function that produces a published number. All three of these were found that way, in an afternoon, using an instrument built for something else.

Where the ladder goes next

Three parts of the collection have now had the same question asked of them and given the same kind of answer. What remains is to say plainly which structural choices the audit still cannot reach.

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.

ClippingColour differenceColour managementDeliveryGamut mappingHueRendering intentSpecificationTest setTolerance