Het Error Diffusion-algoritme
Floyd-Steinberg-dithering werkt door elke pixel van links naar rechts en van boven naar beneden te verwerken. Wanneer een pixel wordt gekwantiseerd naar de dichtstbijzijnde beschikbare paletkleur, wordt de kwantisatiefout (het verschil tussen origineel en gekwantiseerd) verdeeld over vier naburige, nog niet verwerkte pixels.
for (let y = 0; y < height; y++) {
for (let x = 0; x < width; x++) {
const old = pixels[y][x];
const new_ = nearestPaletteColor(old);
pixels[y][x] = new_;
const err = old - new_;
pixels[y][x+1] += err * 7/16;
pixels[y+1][x-1] += err * 3/16;
pixels[y+1][x] += err * 5/16;
pixels[y+1][x+1] += err * 1/16;
}
}Waarom het werkt
Het verdelingspatroon creëert organische, ruisachtige patronen die het menselijk oog waarneemt als vloeiende overgangen. Het cruciale inzicht is dat fout nooit verloren gaat — hij wordt altijd doorgeschoven naar nog niet verwerkte pixels, zodat de algehele helderheid en kleur van gebieden behouden blijft, zelfs met een piepklein palet.
Esthetische toepassingen
Veel gebruikt in vroege computergrafiek (Mac OS, Game Boy, krantenprint), wordt Floyd-Steinberg-dithering nu gewaardeerd in algoritmische kunst vanwege het vermogen om rijke texturen uit beperkte paletten. Gecombineerd met een zorgvuldige paletkeuze levert het een kenmerkende retro-esthetiek op die zowel nostalgisch als visueel opvallend is.
