THE FOLD / CO-OP / THE BROADCAST / THE FLOYD-STEINBERG
THE FLOYD-STEINBERG
dither by broadcasting rounding error to neighbors
1 WHAT IT IS · WHAT IT DOES · FACT OR FICTION
Floyd–Steinberg dithering makes a few colours look like many. Quantise each pixel to the nearest available level, then take the rounding error and spread it to the not-yet-processed neighbours (7/16 right, 3/16 down-left, 5/16 down, 1/16 down-right). The eye averages the scattered dots back into the original shade, so a 1-bit image can portray smooth gradients.
The key invariant: error is never discarded, only passed on — so the average brightness is preserved exactly, up to a tiny boundary residual.
LIT verified live: dithering a smooth signal to 2 levels, the sum of outputs differs from the sum of inputs by exactly the leftover residual (one un-diffused error), and the running error never exceeds one quantisation step (window.__floydsteinberg). FIG no framing; exact error accounting.
The key invariant: error is never discarded, only passed on — so the average brightness is preserved exactly, up to a tiny boundary residual.
LIT verified live: dithering a smooth signal to 2 levels, the sum of outputs differs from the sum of inputs by exactly the leftover residual (one un-diffused error), and the running error never exceeds one quantisation step (window.__floydsteinberg). FIG no framing; exact error accounting.
2 HOW IT WAS WEAVED · AI + HUMAN
David (human) seated this at the-broadcast — spreading a signal outward to the neighbours. Floyd–Steinberg is a broadcast: each pixel’s rounding error is transmitted to those around it. AVAN (AI) built the instrument: the error-diffusion pass, the brightness-conservation check, the comparison with naive thresholding.
Credit as content: Robert W. Floyd & Louis Steinberg (1976), An Adaptive Algorithm for Spatial Greyscale. The weave: David names the broadcast; I diffuse each pixel’s error to its neighbours, prove the total brightness is conserved, and show the gradient a 1-bit palette can now fake.
Credit as content: Robert W. Floyd & Louis Steinberg (1976), An Adaptive Algorithm for Spatial Greyscale. The weave: David names the broadcast; I diffuse each pixel’s error to its neighbours, prove the total brightness is conserved, and show the gradient a 1-bit palette can now fake.
3 ONE DIMENSION
A smooth signal quantised to two levels, the rounding error carried forward to the next sample. The running error stays bounded — it is redistributed, never allowed to accumulate or vanish.
4 TWO DIMENSIONS · INTERACTIVE
A grey gradient dithered to pure black and white, beside the same gradient naively thresholded. The dither preserves the average brightness of every region; the threshold crushes it to two bands.
5 THREE DIMENSIONS + AVAN’S INVERSE
The green forward object: the error flowing from each pixel to its neighbours, the total brightness held constant as it scatters.
AVAN’s addition (the inverse-companion): total brightness is conserved because rounding here is not lossy destruction but redistribution. The error a naive quantiser would throw away is instead accounted for, dot by dot, so Σoutput = Σinput exactly, minus a single sub-pixel residual. The inverse of ‘lose precision by rounding’ is ‘move the lost precision to a neighbour and keep the total.’ It is a trade: magenta is the per-pixel rounding error, large and jagged locally; green is its running sum, pinned near zero. Dithering swaps local accuracy for global fidelity — spatial noise you can see up close in exchange for a mean the eye reads as exact.
LIT Genuine Floyd-Steinberg error diffusion (Floyd & Steinberg 1976). Verified live: for a smooth signal dithered to 2 levels, the difference |sum(input) - sum(output)| equals the final un-diffused residual (< one quantization step), and the running prefix error stays bounded below one step (window.__floydsteinberg.meanPreserved && .errorBounded) — total brightness is redistributed, not lost.
FIG No framing: the error-diffusion pass and the conservation check run in-browser and are exact. The AVAN inverse is honest — rounding here is redistribution not destruction, so sum(output) equals sum(input) minus a sub-pixel residual; magenta is the large per-pixel errors, green their bounded running sum.
FIG No framing: the error-diffusion pass and the conservation check run in-browser and are exact. The AVAN inverse is honest — rounding here is redistribution not destruction, so sum(output) equals sum(input) minus a sub-pixel residual; magenta is the large per-pixel errors, green their bounded running sum.
◆ sealed .dlw.fold → folded to ROOT_0 · a sphere of THE BROADCAST · David Lee Wise (ROOT0), with AVAN