Transfer function — where it appears
Named by 19 essays across 5 fields — each of them below, with the objects they name alongside it.
The display is an unknown
This site is displayed on the very apparatus it is about, and it knows almost nothing about that apparatus. Two figures here stop assuming and ask instead — a probe for the transfer function and a probe for the gamut.
The midpoint is not half
Code 128 sits halfway along the sRGB scale and carries about a fifth of white's luminance. Half the luminance is code 188. Almost every gradient, blur and resize on the web gets this wrong, and the errors are visible once known.
A hex code is not a colour
Six hexadecimal digits identify three numbers. Turning three numbers into a colour needs a colour space, a transfer function, a white point and a display, and leaving any of them unstated is the everyday version of every confusion in colour management.
How bright is white
An sRGB value says a pixel is some fraction of whatever the display can manage. A PQ value says it is two hundred candelas. The change is the largest in display encoding since gamma, and what it removed was the honest admission that nobody knew.
Six numbers make a space
An RGB colour space is eight numbers — three primary chromaticities, a white point, and a transfer function — and everything else about it is derived. Deriving it rather than copying the matrix is the difference between having a colour space and having a table somebody else computed.
Raw is not a picture
A raw file is three integrals per site and a list of decisions nobody has taken yet. Every one of those decisions has a defensible answer and none of them has a correct one, which is why two converters open the same file and disagree.
A gradient is a path
Two colours fix the ends of a blend and nothing else. The middle is decided by the space the interpolation happens in, and four spaces in daily use put the halfway point of one ordinary gradient as much as thirty-seven units of colour difference apart.
Banding is not a bit depth
Eight bits bands at thirty times threshold in the shadows and at under three at mid grey, on the same ramp with the same encoding. What decides is where in the tone scale the gradient sits, how sharp each step's edge is, and how far away the reader is — and a bit count contains none of the three.
Every threshold was measured with a grating
An earlier essay here claimed that the model cannot explain why dither works, and named two missing pieces. One of them was real and worth thirteen times the guess; the other was not needed. The piece nobody named was the detector — and reading the same model two ways changes the answer by a factor of fifty.
A lattice has no derivative
Every departure priced here was priced by perturbing something and reading the answer, which requires the thing being perturbed to have a derivative. A file written on a code lattice does not have one — its output is flat almost everywhere and jumps on a set of measure zero — so quantisation can be bounded and never propagated. The bound is 1.15 colour differences at eight bits per channel against a mean of 0.19, and it is worst where the encoding spends fewest codes.
The order is not in the documentation
A raw converter performs a white balance, a colour matrix, a tone curve and a clip, and every account of the process lists them in that order without saying the order decides anything. Exchanging the first two moves the picture by nine colour differences at the mean and thirteen at the worst patch. The twenty-four arrangements collapse into five outcomes running out to sixty-five, and nothing a converter ships says which of them it is.
One step has no choice
Four of a raw converter's operations can be arranged twenty-four ways. The reconstruction cannot be arranged at all — a colour matrix needs three numbers and a mosaic site has one, so filling in the mosaic is forced to the front by arithmetic rather than by convention. What is not forced is whether it happens in linear light or after the curve, and that decision costs 5.8 colour differences at an ordinary edge and nothing at all four sites away from it.
A contrast control is three controls
A tone curve is a function of one number at a time and knows nothing about hue. Applied to each channel separately it rotates a hue circle by up to seventeen degrees, raises chroma by a factor of 1.27 at ordinary strength, and lifts lightness — so a photographer who moves a contrast slider has moved three things and the interface names one of them. All three scale with the curve's strength, monotonically, and the hue rotation depends on which hue it is.
A stop is not a stop afterwards
Doubling the light is exactly a factor of two in raw values and in tristimulus values, which is the one thing about exposure everybody is sure of. A stop taken after the tone curve is a factor of something else, and matching the two on an eighteen per cent grey leaves the rest of the frame between three and four colour differences apart at the mean and up to eleven at the worst patch. The gain that matches one stop is 2.47 rather than 2.
Two converters and one highlight
The clip is the only step in a raw pipeline that destroys information rather than moving it, and it is the step whose position varies most between converters. Below the sensor's ceiling its position changes nothing at all, exactly. Above it, clipping at the sensor and clipping after the matrix land twenty-one colour differences and seventy-eight degrees of hue apart, and which hues are affected is a property of the camera's own dyes.
An average on the stored values
A resize, an antialiased edge, a transparency composite and a chroma subsample are all averages, and in almost every pipeline they are taken on the numbers as stored. The numbers as stored are encoded, the encoding is a compression, and a half-and-half blend of black and white taken that way lands 18.7 colour differences from the half-and-half blend of the light — 22.7 units of lightness darker, on every pair, always in the same direction.
A resize with a negative weight in it
A blend taken on stored values is always darker than the blend of the light, because the encoding is concave and a convex combination of a concave function's values lies below the function of the combination. A bicubic or Lanczos resize is not a convex combination. Beside an edge its negative weights make the stored-value result lighter than the light's own — by up to 6.1 colour differences with bicubic and 12.2 with Lanczos on skin against its shadow — and on edges between full-scale values the clip hides the overshoot and the old guarantee appears to hold.
The corner of a resized patch is lighter than its edges
A resize taken on stored values is darker than the resize of the light wherever its weights are positive, and lighter beside an edge where a kernel's negative lobes fall. In two dimensions the kernel is a product, and just outside a patch's corner a Lanczos magnification of skin against its shadow comes out 14.5 colour differences lighter — more than along either edge. A reduction to a quarter is mostly an average and errs lighter by at most two. And an unsharp mask, whose negative weights are its whole purpose, is lighter on the stored values at every amount on every pair, and never darker.
The eye counts a corner's error, not its peak
A Lanczos-magnified patch errs a fifth more at its corner than along its edges, pixel by pixel, and an unsharp mask errs almost exactly as much at its corner as along its edges. Filtered by the eye over the plane rather than along a line, the two swap: the magnified corner is seen exactly as its edge is, and on a printed page the sharpened corner is seen at 2.4 times its edge. What decides it is whether the error changes sign. Ringing averages away and a one-sided halo does not, and a corner is where two edges' halos land on the same patch of retina.
Named alongside it
The objects these essays reach for when they reach for this one.
Colour managementSpecificationDeclared inputClippingLightnessStructural choiceGammaInterpolationQuantisationSpatial frequencyColour spaceGamut