Image Dithering Algorithms

Bildrasterung bei eingeschränkter Farbauswahl

Vergleich von Bayer-, Knoll-, Floyd-Steinberg-Algorithmen

Noch vor wenigen Jahren war es nicht selbstverständlich, dass Computer Fotos farbrealistisch darstellen. Frühe Personal Coputer konnten entweder gar keine oder nur wenige Farben auf dem Bildschirm darstellen.

So konnte ein Computer mit "CGA" (Color Graphics Adapter) nur 4 Farben auf dem Monitor darstellen, die fest vorgegeben waren. "EGA" (Enhanced Graphics Adapter) immerhin schon 16 Farben. Wenn man nun versucht, ein Foto so umzurechnen, dass die "nächstbeste" Farbe für jeden Pixel gewählt wird, ist das Ergebnis eher mau.

CGA, 4-Farb-Palette 1

CGA, 4-Farb-Palette 2

EGA, 16 Standardfarben

Es war also erforderlich, sich Algorithmen zu überlegen, die das Auge austricksen und im Vorgaukeln, mehr Farben darzustellen, als man eigentlich zur Verfügung hat. Im Farb-Buchdruck werden ganz ähnliche Mechanismen genutzt. Heute bekommt man eher nostalgische Gefühle, wenn man diese Bilder sieht.

Im Folgenden werden einige der bekanntesten Algorithmen anhand einer eigenen Javascript-Implementierung vorgestellt. 

(Alle gezeigten Raster werden direkt im Browser berechnet.)

Experimente zur Darstellung von Bildern mit eingeschränkten Darstellungsmöglichkeiten.

Hier ein Mal das Originalbild. Die restlichen Bilder zeigen eine eingeschränkte Farbpalette und eine niedrigere Auflösung zur besseren Veranschaulichung.

 

Bayer-Dithering

Einfacher Algorithmus für geordnete Rasterung. Die Differenz der verfügbaren Farben zur Zielfarbe wird mit einer Fehlermatrix manipuliert. 

Error-Diffusion

Jeder Pixel erhält die Farbe, die der Zielfarbe am nächsten kommt; allerdings korrigiert um den Fehler (die Differenz), die man im Schritt vorher gemacht hat.

Knoll-Dithering

Komplexerer Algorithmus, der für jeden Pixel eine Liste möglicher Kandidaten berechnet. Jeder neue Kandidat wird mit dem Fehler (Differenz) des Vorgängerkandidaten korrigiert. 

Knoll-Dithering mit EGA-Palette

Der Knoll-Algorithmus bringt schon mit wenigen Farben erstaunliche Ergebnisse. Je nachdem, wie stark man die Korrektur durch den vorhergehenden Fehler einbezieht, lässt sich das "Rauschen" des Rasters kontrollieren.

Im ersten Bild zeigt sich, dass der Algorithmus auch erstaunlich "fremde" Farben einbezieht, um das Ergebnis zu verbessern, wie etwa die gelben und pinken Pixel im eigentlich schwarzen Pulli.

Bayer-Dithering mit EGA-Palette

Der einfachere Bayer-Algorithmus arbeitet mit voregebenen Fehler-Differenzen, bezieht so weniger Farbkanidaten in die Berechnung ein. Das Ergebnis wirkt flacher. Im ersten Bild zeigen sich z.B. im Pulli deutlich weniger gelbe und pinke Pixel als beim Knoll-Algorithmus. Der Himmel kommt sogar komplett ohne Blautöne aus.

Es ist auch zu erkennen: Je weniger der Fehler im Ergebnis berücksichtigt wird, desto mehr nähern sich Knoll und Bayer optisch an.