What it takes to deliver it

The inverse table errs dark

A profile's forward table predicts a print lighter than the press makes, and refitting its nodes removes the bias. The table a colour engine actually uses to separate an image is the other one — the inverse, from colour to ink — and it errs the opposite way: filled exactly from the press it asks for too much ink and prints dark, and built by inverting the ordinary forward table it prints darker still. Inverting the refitted forward table removes the inherited part and leaves the inverse's own. The round trip through both tables improves only when each is refitted against its own error, and then the two are no longer each other's inverse.

Assumes A profile interpolates light, A profile is a table and A second conversion is not a repeat.

A profile interpolates light found that a printer profile’s forward table — the direction from ink coverages to colour, the one a soft proof uses — is wrong between its nodes in a consistent direction: it predicts a print lighter than the press makes, because a press’s response to ink is convex and a straight line between two points on a convex curve lies above it. It then refitted a tone ramp’s node values against the error between the nodes, and the bias vanished.

That repair touched half of the profile. A colour engine converting an image into the press’s inks uses the other table, from colour to coverages, and in most profiling workflows that table is built by inverting the first. An inversion is not a linear operation, so a forward table that has been repaired does not obviously give an inverse that has been repaired. The essay that did the refit named the question and left it: either the refit is one change that improves the whole chain, or a profile’s two tables need two refits against two different objectives.

It is the second, and the reason is that the two tables err in opposite directions for the same geometric reason.

Two tables, two directions of error

The ordinary forward table errs light between its nodes; the inverse table errs dark, even when every node is filled exactly from the press. Refitting the forward table and inverting it removes most of the error the inverse inherited and none of its own. Refitting the inverse against its own objective removes its bias and halves its error — and only when both tables are refitted does the round trip through them improve.

  • On a five-node cyan ramp the forward table errs by +0.21 in lightness; an inverse filled from the press by −0.32.
  • An inverse built by inverting the ordinary forward table errs by −0.55 — both errors, stacked — and its mean separation error is 1.7 times that of an inverse filled from the press.
  • Inverting the refitted forward table brings it to −0.37, removing four fifths of what was inherited; the inverse’s own −0.32 remains.
  • An inverse refitted against its own error averages 0.14, against 0.32 filled from the press, with a bias of −0.002.
  • The round trip through the ordinary pair averages 0.35; through the refitted forward and its inversion, 0.37 — no better; through both refitted tables, 0.19. The same pattern holds for all four inks and at every lattice size tried.

Why one bend gives two opposite errors

The geometry is the same in both directions, and it is worth drawing because the conclusion depends on it.

Why the forward table errs light and the inverse errs dark. Left, the press's lightness against cyan coverage, with the 5-node forward table's straight segments over it: the curve is convex, so every segment lies above it and the table predicts a lighter print than the press makes. Right, the same relation turned round — coverage against the lightness asked for — with the inverse table's segments between nodes spaced evenly in lightness. Turned round, the curve is still convex, every segment again lies above it, and here lying above means asking for more ink than the colour needs, which the press prints darker than was asked for. The same bend, interpolated in each direction, puts one table's error on the light side and the other's on the dark.
Fig. 1 Left, the press’s lightness against cyan coverage with the forward table’s straight segments; right, the same curve turned round — coverage against the lightness asked for — with the inverse table’s segments.

A press’s lightness falls with coverage along a convex curve: the first drop of ink on white paper removes more light than the last drop on a nearly solid patch. Two mechanisms put that bend there — ink spreading under pressure and light scattering sideways in the paper — and a halftone is not a mixture is why neither is a straight average of paper and ink. A forward table stores the curve at its nodes and draws straight segments between them, and every segment lies above the curve. Above, for a forward table, means a higher lightness — so between its nodes the table predicts a print lighter than the press makes.

Turned round, the curve is still convex. Coverage as a function of the lightness asked for rises slowly near the paper and steeply near the solid. An inverse table stores that curve at nodes spaced evenly in lightness, draws straight segments between them, and every segment again lies above the curve. But above, for an inverse table, means more coverage — so between its nodes the table asks for more ink than the colour needs, and the press prints it darker than was asked for.

So the same bend, interpolated in each direction, puts one table’s error on the light side and the other’s on the dark. Nothing about the inverse table’s construction is careless; a node filled exactly from the press is as good as a node can be, and the error lives between the nodes where straight lines stand in for a curve.

The inverse built the ordinary way inherits both

In practice an inverse is rarely filled from the press. A profile is characterised in the forward direction — patches are printed at known coverages and measured — and the inverse is computed from the forward table by searching it for the coverage that produces each colour. That inverse is an inversion of a table, not of a press.

The hero figure at the top of the page draws every ink’s signed lightness error for the forward table and four inverses, at five nodes. The inverse inverted from the ordinary forward table is the longest dark bar for every ink: −0.55 on cyan, −0.73 on magenta, −0.28 on black. It carries the inverse’s own dark error, and on top of it the forward table’s light error, turned into a dark one — a forward table that predicts too light a print makes a search for a given colour choose too much ink.

The separation error along a cyan ramp, for four inverse tables. Ask for a colour on the cyan ramp, look up the coverage in the inverse table, print it, and measure how far the print is from what was asked for: that is the separation error, drawn along the ramp for four ways of filling a 5-node inverse. Built by inverting the ordinary forward table it averages 0.563; filled from the press, 0.324; inverted from the refitted forward table, 0.374; refitted against its own error, 0.142.
Fig. 2 The separation error along a cyan ramp — ask for a colour, look up its coverage, print it — for a five-node inverse filled four ways.

The separation error along the ramp shows where it lands. The inverse filled from the press is exact at its own nodes and wrong between them, in arches; the inverse inverted from the ordinary table is wrong at its nodes as well, because the nodes themselves were found by searching a table that is wrong, and its arches sit on a raised floor. Its mean is 0.563, against 0.324 for the inverse filled from the press. Across four inks and three lattice sizes the ordinary inverse is between 1.5 and 2.0 times as wrong as one filled from the press.

What refitting the forward table does to its inverse

The refitted forward table predicts the press almost without bias. Inverting it should therefore remove what the ordinary inverse inherited, and the question is whether it removes anything else.

It does not. Inverting the refitted forward table brings cyan’s inverse from −0.55 to −0.37, which is close to the −0.32 of an inverse filled from the press and on the same side of it. Across twelve combinations of ink and lattice the refit removes between 57 and 192 per cent of the inherited bias — more than all of it in four cases, because the refitted forward table is slightly wrong in the other direction — and in every case the inverse that results still errs dark.

That is the answer to half the question. A refit of the forward table survives inversion, in the sense that its gain is not destroyed: the inverse built from it is much better than the inverse built from the ordinary table. But it does not survive in the sense that mattered, because what remains is the inverse’s own error, which the forward table never contained and no repair of the forward table can reach.

The separation error along a magenta ramp, for four inverse tables. Ask for a colour on the magenta ramp, look up the coverage in the inverse table, print it, and measure how far the print is from what was asked for: that is the separation error, drawn along the ramp for four ways of filling a 5-node inverse. Built by inverting the ordinary forward table it averages 0.779; filled from the press, 0.493; inverted from the refitted forward table, 0.526; refitted against its own error, 0.217.
Fig. 3 The same four inverses along a magenta ramp, where the arches are tallest.

Magenta makes the structure easiest to see, because its arches are tallest. Filled from the press it averages 0.49; inverted from the ordinary table, 0.78; inverted from the refitted table, 0.53. The third curve sits almost on the first. The refit has taken the inverse back to where an inverse filled exactly from the press would be, and no further.

An inverse refitted in its own right

The repair the forward table got can be given to the inverse directly: choose its coverages not to be exact at its nodes but to minimise the separation error between them, by the same shrinking coordinate search.

Refitted against its own error, cyan’s inverse averages 0.142 and errs by −0.002. Magenta’s averages 0.217, yellow’s 0.106, black’s 0.067, and none errs by more than 0.008 in either direction. At every ink and every lattice the refitted inverse is less than half as wrong as one filled exactly from the press.

The inverse's error against the size of its table, cyan. Mean separation error, on a logarithmic scale, for a cyan inverse table of 5, 9, 17 nodes, filled four ways. Every curve falls steeply as the table grows, and the gaps between them stay nearly constant: an inverse refitted against its own error is 2.3 to 2.5 times better than one filled from the press at every size, which is the same kind of constant factor the forward table's refit bought.
Fig. 4 The cyan inverse’s mean separation error against the number of nodes, for the four ways of filling it, on a logarithmic scale.

The gain is a constant factor across lattice sizes. At five nodes the refitted inverse is 2.3 times better than one filled from the press; at nine and seventeen, 2.5. That is the same shape a profile interpolates light found for the forward table’s refit: a larger table makes every error smaller, and the refit keeps its proportional advantage at every size. So a refitted inverse at nine nodes, at 0.032, sits much nearer an ordinary one at seventeen nodes, at 0.020, than an ordinary one at nine, at 0.080 — and a profile’s size is a separate decision from whether its inverse is refitted. A profile is a fit between its nodes priced adding patches to a forward table at twenty-seven times the work for eight times the accuracy; refitting the inverse buys a factor of two and a half for no patches at all.

Yellow is the partial exception worth noting. Its inverse’s bias is small even filled from the press — −0.05 at five nodes, against −0.32 for cyan — because a yellow ink changes lightness very little and its errors are mostly errors of chroma. The refit still halves yellow’s mean error, but it does so by correcting chroma, and the lightness argument above explains only part of it.

The round trip needs both

The last test is the one a colour engine actually performs when an image goes into a device and a proof comes back out: forward table, then inverse, then the press.

The round trip through both tables, three ways. A coverage taken through a 5-node forward table to a lightness, back through an inverse table to a coverage, and printed: the bar is the mean colour difference from printing the original coverage. With the ordinary pair, cyan averages 0.352. Refitting the forward table and inverting it gives 0.368 — no better — because the inverse's own dark error is untouched and the forward table's gain is spent on it. Refitting both tables, each against its own error, gives 0.193. The same holds on all four inks.
Fig. 5 The round trip — coverage through a five-node forward table to a lightness, back through an inverse to a coverage, and printed — for three pairs of tables and four inks.

Refitting only the forward table does not improve the round trip. Cyan through the ordinary pair averages 0.352; through the refitted forward table and its inversion, 0.368. The forward table’s error has been removed from the first leg and the inverse’s own error is untouched on the second, and the inverse’s own error is the larger of the two. Magenta, yellow and black behave the same way: the middle bar is never shorter than the first.

Refitting both tables, each against its own objective, cuts the round trip nearly in half: 0.193 on cyan, 0.266 on magenta, 0.153 on yellow, 0.104 on black. And the two refitted tables are not each other’s inverse. A coverage sent through the refitted forward table and back through the refitted inverse returns displaced by up to three per cent of full coverage on cyan at five nodes — but so does a coverage through the ordinary pair, by four. Neither pair of tables was ever an exact inverse pair between the nodes; the refitted pair is simply the pair whose disagreement costs less colour.

What a profile would have to carry

The profile format already holds two separate tables, and nothing in it requires one to be the inverse of the other. What the measurement says is that they should not be.

The forward table should be fitted against the error a soft proof makes: the difference between the colour the table predicts for a set of coverages and the colour the press prints. The inverse should be fitted against the error a separation makes: the difference between the colour asked for and the colour printed from the coverages the table returns. Those are different objectives because they integrate over different sets — coverages evenly spread in one case, colours evenly spread in the other — and they are penalised by errors on opposite sides of the press’s curve.

In practice that is a change to how a profiling tool computes the inverse, not to what it measures. A profile is a table described the file as holding measured patches and interpolation; what changes is only which numbers sit at the nodes. The patches are the same, the forward characterisation is the same, and the inverse is still built from it; what changes is that the inverse’s nodes are then adjusted against a dense sample of colours instead of being taken as exact inversions. A second conversion is not a repeat measured what repeated round trips do when a rendering intent moves colours on each pass; the interpolation error here is a separate source, present even under an intent that moves nothing, and refitting both tables is the repair that shortens it.

How the tables were computed

Each ink’s ramp is one ink of the modelled press on coated stock under D50, varied from nought to full coverage with the others at nought. Its dot gain — the effect a dot is larger than it was asked to be describes — is what bends the response. The forward tables are the ones a profile interpolates light built: nodes at even coverages, exact from the press, and a refitted copy whose node values minimise the mean squared colour difference over 301 test coverages. The inverse has the same number of nodes, spaced evenly in lightness between the paper and the solid; its node coverages are filled by bisection on the press, on the ordinary forward table or on the refitted one, or refitted by coordinate descent from the press values against the mean squared separation error over 301 test colours.

A lookup in either table interpolates linearly in its own input. The separation error of an inverse is the CIELAB ΔE₀₀ between a colour on the ramp and the press’s colour at the coverage the inverse returns for its lightness; its bias is the mean signed lightness difference. The round trip starts from 301 coverages.

What this leaves out

The ramps are one-dimensional. A real inverse table maps a three-dimensional colour to four inks through a separation strategy that chooses among many coverages producing the same colour — the separation is not unique measured how many — and a lookup there interpolates in three dimensions. The convexity that produces the opposite errors is a property of each ink’s response and should survive into more dimensions, but the size of the effect in a full table and the interaction with a separation strategy’s choices are not measured here.

The inverse’s nodes are spaced evenly in lightness. A profiling tool may space them in some other encoding of the colour, and spacing them in a coordinate in which the press’s curve is straighter would shrink the inverse’s own error before any refit — which is a second repair, of a different kind, and worth comparing with this one.

And the refit uses the same simple coordinate descent the forward refit used, which is chosen to show that some refit helps rather than to find the best one. A better optimiser can only lower the refitted inverse’s error, which strengthens the comparison.

Still open: whether the refitted pair survives a separation strategy

The measurement here is along a single ink. In a four-ink inverse the separation strategy — how much black replaces the other three, where grey balance is held — decides which of many coverages the inverse returns for a colour, and the refit would have to be done without changing that decision. The fourth ink is not for colour is where black’s part in that decision was priced.

The question is whether a refit constrained to leave the strategy intact keeps most of the gain. It probably keeps it where the strategy is smooth and loses it near the points where the strategy switches regimes, such as where black generation begins, because a refit there trades a smaller colour error for a coverage the strategy would not have chosen. The computation is the full four-ink inverse with the refit’s steps projected onto the strategy’s own surface, and the output worth having is the gain as a function of distance from those switching points.

One curve, two errors

The habit is about an operation that is assumed to carry a repair through it.

A forward model and its inverse share a curve, and it is natural to assume that a correction applied to one is a correction to both — that inverting a better table gives a better inverse. The assumption fails whenever the two directions are approximated separately, because each approximation has its own error, and here those errors come from the same curvature pointing opposite ways.

The move is to measure the error of each direction against its own use — the proof against the press for the forward table, the separation against the request for the inverse — rather than measuring the inverse through the forward table. Here that is two extra lines of computation and it turns a repair that seemed finished into one that was half done.

The failure mode is to validate a round trip by repairing one leg of it, see that leg improve, and assume the trip did. The trip is scored by both legs, and here the leg that was not repaired was the worse one — so the repair that looked like it had fixed the profile had fixed the smaller half of it. An intent is not a function of the colour is the same warning one level up: an operation that looks like a fixed map of colours can depend on what went into it, and has to be checked in the direction it is used.

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.

BoundColour managementΔEInterpolationInverse modelLightnessModelling assumptionProcess inksSpecificationTone reproduction