A profile is a table
Assumes What the instrument reports and A halftone is not a mixture.
The file that tells a computer what a printer does is called a profile, and the word suggests a description — a characterisation, a model, a summary of the device’s behaviour.
It is a table. A lattice of ink combinations was printed on a real press, dried, and read on a spectrophotometer, and the numbers that came back are in the file. Nothing else about the press is in there at all.
The claim
A device profile is exact where it was measured and interpolated everywhere else, so its error is invisible to any check made at its own patches — and the size of that error is set by the lattice rather than by the quality of the measurement.
There is a second half, which is that the table above is only the forward direction. The direction anybody actually uses is the other one, and it does not exist as a measurement at all.
What is in the file
An output profile carries two tables and some tags. The forward one, called A2B, maps device values to colours: for each combination of ink coverages on a lattice, the CIELAB coordinates that combination produced. The reverse, B2A, maps colours back to ink values.
The forward table is a measurement. Somebody printed an IT8.7/4 target — 1,617 patches, in the common case — measured every one, and fitted a lattice through them.
The lattice sizes in use are 9 nodes per axis for a small profile and 17 for a large one, with the black axis carried at a similar resolution. Nine cubed times five black levels is 3,645 nodes; seventeen cubed times nine is 24,565, which is more patches than anybody prints, so the lattice is fitted from a smaller measured set and the fitting is a second approximation nobody reports.
What was computed, and how
The experiment here is possible only because this site has a model of the press as well as a table of it. A real profile can be compared with nothing: the press is gone, the sheet is in a drawer, and the only record of what happened is the table itself.
Here the press is the site’s own spectral halftone model, so a table can be built from it at a stated lattice size and then interrogated at points the lattice does not contain. Four hundred ink combinations were drawn at random, the table interpolated at each — quadrilinearly, which is what a colour engine does — and the answer compared with the press.
| lattice | patches | mean ΔE00 | 95th percentile | worst |
|---|---|---|---|---|
| 3³ × 5 | 135 | 1.33 | 2.17 | 2.93 |
| 5³ × 5 | 625 | 0.38 | 0.66 | 0.85 |
| 9³ × 5 | 3,645 | 0.13 | 0.26 | 0.36 |
| 13³ × 5 | 10,985 | 0.10 | 0.23 | 0.31 |
| 17³ × 5 | 24,565 | 0.09 | 0.22 | 0.30 |
Two things in that table are worth more than the numbers.
The error is exactly zero at every node, at every lattice size, which is why the sampling had to be done deliberately between them. A profile validated by re-measuring its own target is measuring the instrument’s repeatability and nothing else.
And the sequence stops improving. Going from 13 steps to 17 — from eleven thousand nodes to twenty-four thousand — buys 0.01 ΔE00. Something other than the chromatic lattice is setting the floor.
The axis nobody refines
The something is the black.
The table is one stage of a chain, and its own error is worth reading against the two stages that follow it.
| lattice | patches | worst ΔE00 |
|---|---|---|
| 9³ × 3 | 2,187 | 0.66 |
| 9³ × 5 | 3,645 | 0.36 |
| 9³ × 9 | 6,561 | 0.22 |
| 13³ × 5 | 10,985 | 0.31 |
| 13³ × 9 | 19,773 | 0.12 |
| 17³ × 9 | 44,217 | 0.10 |
A 9³ × 9 table has 6,561 nodes and beats a 13³ × 5 table with 10,985 of them. Forty per cent fewer patches, thirty per cent less error, because the patches are in the right place.
The reason is not mysterious once stated. Black moves lightness fast and moves nothing else; it is the axis along which the device’s response is least like a smooth product of the others, because it is the axis where an entirely different ink is being substituted for a combination of three. Interpolating across a coarse black axis interpolates across a substitution.
Where to put the patches is a more consequential decision than how many to print, and it is made once, by the person who designed the target.
The inverse is the hard half
Everything above concerns the forward table, which is a measurement. The table anybody actually uses maps the other way — a colour comes in, ink values come out — and there was never a measurement in that direction, because the press cannot be run backwards.
The inverse has to be constructed, and it has two difficulties that the forward direction does not.
It is not a function. Four inks produce three numbers, so most colours are reachable by a whole family of ink combinations — which is the central surprise of this field and is where the black generation policy lives. Building a B2A table means choosing one member of that family for every entry, and the choice is a policy rather than a measurement.
And much of the space has no answer at all. Over half the sRGB solid lies outside what the press can make, so a B2A table has entries for colours that do not exist on that device, and what goes in them is the output of a gamut mapping — which is a separate decision with its own costs, baked into the file at the moment it was built.
A profile therefore contains one measurement and at least two policies, and the file format does not distinguish them.
What the round trip does and does not prove
A pleasant check is available and it is worth being careful about what it establishes. Take an ink combination, compute the colour, then solve for the ink combination that produces that colour — the same journey a picture makes through a profile pair.
Round trip on five combinations: worst ΔE00 0.0034, mean 0.0015.
That number is a statement about the solver, not about the profile. It says the map from ink to colour is smooth and locally invertible, and that a numerical search finds its way back. It says nothing about interpolation error, because the search was run against the model rather than against the table; and nothing about the family, because it was handed the black level to keep fixed.
A round trip that passes through the same approximation twice can only report the approximation’s self-consistency. This is the same shape as the check that caught a chroma error in this site’s appearance model — there the round trip was informative, because the forward and inverse were derived independently and had to agree. Here they are the same table read in two directions, and agreement is guaranteed.
Quantisation, which turns out not to be the problem
One suspicion worth eliminating. The connection space between the two tables is encoded, and the legacy 8-bit Lab encoding is coarse: L* in 256 steps over 0 to 100, a* and b* in 256 steps over −128 to 127.
Measured over 400 random colours, the worst error that encoding introduces is ΔE00 = 0.58, and the 16-bit encoding introduces 7 × 10⁻⁴.
So on a modern profile quantisation is four orders below the interpolation error and can be ignored; on an 8-bit one it is comparable to a good lattice’s error and worth knowing about. Neither is where the ΔE goes. The error in a profile is geometric — it is where the patches were put — and no amount of precision in the numbers changes it.
Where this model stops
Real profiles are not lattices of measurements. They are lattices fitted through a measured target that does not coincide with them, usually by a proprietary method involving smoothing, extrapolation at the gamut boundary and a good deal of judgement about outliers. The interpolation error measured here is a lower bound on a real profile’s error, and the fitting adds an unknown amount on top of it.
Tetrahedral interpolation, not quadrilinear, is what most engines use. It is faster and gives a slightly different error, larger in some places and smaller in others. The claim being made here — that the error is zero at nodes and set by the lattice — is true of both.
The press does not stay still. A profile is a photograph of a press on the day the target was printed, and ink, paper, humidity and press condition all move. In practice the drift between characterisations is comparable to everything measured in this essay, which is an argument for re-profiling rather than an argument against profiles.
Nothing here is about display profiles. A well-behaved display is nearly a matrix and three curves, so its profile can be nine numbers plus three tables and is exact everywhere rather than at a lattice. That is a much stronger kind of description, and it is available only because the device is much simpler.
What a target costs, and why lattices are as coarse as they are
The obvious response to everything above is to print more patches, and it is worth seeing why nobody does.
A patch has to be printed, dried, and read. An IT8.7/4 target’s 1,617 patches occupy most of a sheet and take a strip-reading instrument some minutes; a 4,000-patch target needs several sheets, which introduces sheet-to-sheet variation into a measurement whose whole purpose is to characterise the press, and the variation between sheets on a running press is comparable to the interpolation error being chased.
Past a certain size, more patches make the profile worse. That is the constraint the lattice sizes reflect, and it is why the choice of where the patches go has the leverage that it does: the 9³ × 9 result above buys a thirty per cent error reduction for forty per cent fewer patches, entirely by moving them.
Fewer black levels with a wider spread of grids is the shape a profile shipped with a press actually has.
The profile that describes a press from last March
One more property of a table with no model in it: it cannot notice that it has gone out of date.
A profile is a photograph of a press on the day its target was printed. Ink lots change, paper lots change, the blanket wears, the humidity in the shop moves the paper’s dimensions and its absorbency. A model-based description might at least carry a parameter that could be re-measured cheaply; a table of three thousand measured colours has nothing that can be updated except by measuring three thousand colours again.
The industry’s answer is a small verification strip — a few dozen patches printed on every job and read — and its logic is exactly the held-out-sample argument of the section above, applied to time rather than to space. The verification patches are useful precisely because they are not in the profile.
The generalisation
A lookup table’s error is invisible to any test drawn from the same set as its entries, and the same is true of everything else fitted to a sample.
This site has now met the pattern three times in three fields, and the third makes the shape unmistakable. A camera’s colour matrix is exact on the surfaces it was fitted to and worse elsewhere — mean ΔE00 0.65 on its own set against 1.75 off it. A press’s two dot-gain mechanisms are fitted to a tone ramp and disagree about a patch that was not in it. And a profile is exact at its nodes and wrong between them.
In every case the honest measurement requires a held-out sample, and in every case the industry’s standard validation uses the fitting set. There is a reason for that and it is not laziness: the fitting set is the only thing that was measured. Holding patches out means printing more of them, and the number of patches is what the whole exercise is trying to keep down.
The general remedy is the one this essay’s second section reports: spend the patches where the response is least smooth rather than spreading them evenly. A 9³ × 9 lattice beats a 13³ × 5 one with forty per cent fewer patches, which is a better return than any improvement in instrument or method.
Who found it, and when
The International Color Consortium was formed in 1993 by eight companies with incompatible colour systems, and the profile format it published is the reason a file can move between them at all. The design decision that matters here was made at the outset: the profile describes a device by tabulating it rather than by parameterising it, because no parameterisation could cover printers, presses, displays and film scanners at once.
That decision bought universality and it fixed the error structure of the whole field. Everything since — better targets, finer lattices, tetrahedral interpolation, 16-bit encodings — has been work inside a frame where the description of a device is a lookup table, and the argument about where to put its entries has been running for thirty years.
The IT8.7/4 target, standardised in 2005, is the current answer for printing: 1,617 patches, laid out with more of them where the response is nonlinear. The target’s design is the profile’s most important component and it is chosen by somebody who will never see the job.
The convergence rate says which axis is the floor
The two tables above can be read for more than their entries. Quadrilinear interpolation is second-order accurate on a smooth function — halve the spacing between nodes and the error should fall by four — so the rate at which each sequence actually falls is a measurement of how smooth the press’s response is along the axis being refined.
Taking each consecutive pair and solving for the exponent that relates the error ratio to the step ratio:
| refinement | error ratio | order |
|---|---|---|
| chromatic 3 → 5, five black levels | 3.45 | 1.79 |
| chromatic 5 → 9, five black levels | 2.36 | 1.24 |
| chromatic 9 → 13, five black levels | 1.16 | 0.37 |
| chromatic 13 → 17, five black levels | 1.03 | 0.11 |
| chromatic 9 → 13, nine black levels | 1.83 | 1.49 |
| chromatic 13 → 17, nine black levels | 1.20 | 0.63 |
| black 3 → 5, chromatic 9 | 1.83 | 0.87 |
| black 5 → 9, chromatic 9 | 1.64 | 0.71 |
The first refinement in the table converges at 1.79, which is second order within the noise of four hundred random samples, and it is the only one that does. Everything below it decays, and the decay is the finding.
A refinement of one axis cannot converge past the error the other axis is contributing. The five-black sequence looks like an interpolation scheme running out of accuracy — orders of 0.37 and then 0.11 — and it is nothing of the kind: the chromatic interpolation is still second-order the whole way, and what has happened is that the black axis’s fixed contribution has become the whole of the residual, so refining anything else moves a number that is no longer the one being measured. Restated at nine black levels, the same 9 → 13 step recovers 1.49.
That is the quantitative form of the section above, and it changes what its conclusion is about. “The sequence stops improving past thirteen steps” reads as a fact about the chromatic lattice. It is a fact about the black axis, stated in the chromatic lattice’s units, and it would have moved if the black axis had.
The reverse reading is available and is weaker for the same reason. Refining black at a chromatic 9 gives orders of 0.87 and 0.71 — near first order, which under a multilinear scheme is the signature of a response with a kink rather than a bend, and a substitution of one ink for three is exactly a kink. But refining black at a chromatic 13 gives 1.37 instead, so the low figure is partly the chromatic floor showing through in the other direction. Each axis floors the other, and neither order can be measured cleanly while the other axis is held coarse. The honest range for the black axis is somewhere between first and second order, and settling it would need a sequence that refines black while the chromatic lattice is fine enough to be invisible.
The design rule this yields is sharper than “spend the patches where the response is least smooth”, because it says how to find out where that is: refine one axis, and if the error barely moves, the answer has been about a different axis all along. A profile whose convergence has flattened is not a profile at its accuracy limit. It is a profile with one starved dimension, and the flat sequence is the diagnostic rather than the verdict.
At nine black levels the sequence has still not flattened — 0.22, 0.12, 0.10 — so the residual on this model sits at or below a tenth of a unit, and the last doubling of patches bought two hundredths of it. That is the point at which the argument in the section on target cost takes over from the argument about lattices.
Where the ladder goes next
This is the second entry point into the field, beside the halftone: the halftone is what a press does, and the profile is what anybody outside the pressroom knows about it.
Immediately above sit the two things the inverse table cannot avoid deciding. The separation is not unique is the first — a family of ink combinations per colour, one of which has to be written down. No mapping preserves everything is the second, and it is what fills the entries for colours the press cannot make.
Beside it, the paper is the white point explains what the numbers in the table are measured against, which turns out to be a choice as well.
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.
- The scale hangs from one measurement colour management · the icc profile · measurement uncertainty · quality control · specification
- The fifth ink buys a corner halftone · quality control · separation · specification
- The fourth ink is not for colour halftone · quality control · separation · specification
- A black that is not black halftone · quality control · specification
- A brand colour for a population colour management · quality control · specification
- A chain measured in a unit that cannot add colour management · the icc profile · specification
What links here
The 8 essays that link to this one and share the most of its objects, of 15 that link here.
The objects this essay names
Each one links to every other essay that touches it.
Colour managementHalftoneThe ICC profileInterpolationMeasurement uncertaintyProfile inversionQuality controlQuantisationSeparationSpecification