Ga naar hoofdinhoud
BVDART Logo
← Alle gidsenDithering & paletten

Floyd–Steinberg-foutdiffusie

Floyd–Steinberg geeft quantisatiefout door aan vier volgende buren met gewichten die samen één zijn.

Geef de fout met teken door aan de volgende vier buren

Volg de scan, één beslissing tegelijk10 / 48

Zwart-witte cellen zijn vastgelegd. Grijze cellen tonen de bron plus opgetelde fout; alleen hun voorbeeld wordt begrensd, terwijl berekeningen breuken met teken bewaren.

Stuur de fout naar toekomstige buren
Foutdiffusiestencil en bijdragen met tekene47.957/16+20.983/16+8.995/16+14.991/16+3.00

Vervaagde bestemmingen liggen buiten het beeld en ontvangen niets. Het stencil hoort bij een scan van links naar rechts.

112 + -64.05 = 47.95 → 0
e = 47.95 − 0 = 47.95
Totaal stencilgewicht100%
Foutverlies aan de rand0.00
Bewust niet doorgegeven0.00

Vervolg de scan tot de laatste pixel; volg de fout met teken naar latere buren. Opnieuw afspelen begint een nieuwe scan. Gebruik een regelaar om het over te nemen.

Wat je kunt proberen
  1. Ga naar de volgende pixel en volg bron + inkomende fout → gekozen waarde.
  2. Vergelijk Floyd–Steinberg met Atkinson en bekijk daarna een pixel aan de rechter- of onderrand.
Open in het Lab ↗

Waar je op kunt letten: De volgende beslissing bevat eerdere fractionele fouten. Floyd–Steinberg geeft 100% door via zijn stencil; Atkinson 75%, en bestemmingen buiten het beeld ontvangen niets.

Zo werkt het

Bij scannen van links naar rechts gaat 7/16 naar rechts, 3/16 linksonder, 5/16 naar beneden en 1/16 rechtsonder. De volgende beslissing gebruikt bron plus opgebouwde fout. Getekende fractionele tussenwaarden voorkomen vertekening door te vroeg afronden.

De methode is causaal: één pixel kan latere beslissingen beïnvloeden. Scanvolgorde en randen tellen daarom mee. Atkinson vergelijkt goed: zes gewichten van 1/8 tellen op tot 3/4 en geven een andere balans tussen detail en toon.

Gebruik het in het Lab

Gebruik Floyd–Steinberg voor gedetailleerde paletreductie en beoordeel of de diffusietextuur het beeld helpt. Probeer Atkinson voor een hardere toonscheiding.

Grenzen & verschillen

Onafhankelijke RGB-diffusie kan meer totaal­kleuren geven dan het aantal niveaus per kanaal. Gebruik Geïndexeerd palet voor een strikt totaalpalet.

Verdieping

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.

Floyd-Steinberg-gewichten

Foutverdelingsgewichten: → rechts: 7/16 ↙ linksonder: 3/16 ↓ onder: 5/16 ↘ rechtsonder: 1/16 Deze gewichten tellen exact op tot 1,0, waardoor de totale beeldhelderheid behouden blijft.

floyd-steinberg.js
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;
  }
}
javascript

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.

Voor een meer uniforme look kun je Bayer (ordered) dithering gebruiken. Voor organische texturen: Floyd-Steinberg. Voor meer artistieke controle: Atkinson dithering — het verspreidt slechts 6/8 van de fout, wat zorgt voor resultaten met hoger contrast.

Artikelen

Verwante kunstwerken

Verwante Lab-categorieën

Bronnen & naslag

Gids bijgewerkt