Ein wichtiger Teil meines aktuellen Projektes besteht darin, ein Bild (in der Regel 24Bit Farbtiefe) auf 24 vorgegebene Farben zu reduzieren. Der erste Ansatz war, einfach für jeden Pixel die nächstbeste Farbe aus meiner Palette zu bestimmen. Das is natürlich Murks, und so bin ich auf Dithering gestoßen. Ich verwende zur Zeit das Floyd-Steinberg Dithering
Quelltext
1: 2: 3:
| Floyd-Steinberg-Dithering-Maske: X 7 1 5 3 |
wobei X der aktuell betrachtete Pixel ist und die Zahlen angeben, zu welchen Anteilen der Fehler auf die anderen Pixel verteilt wird. (Z.B. kommt auf den Pixel rechts daneben 7/16 des Fehlers, bevor für diesen die nächstbeste Farbe gesucht wird)
Den Quellcode poste ich hier nicht, da alles wunderbar funzt. Allerdings ist das Ergebnis für meine Zwecke unbrachbar, da zu viele "Einzelpixel" entstehen, d.h. es entstehen keine kleinen zusammenhängenden Gebiete (so 2-3Pixel derselben Farbe am Stück würden reichen). Zoomt mal da rein (geditherter Ausschnitt von der Erde), dann wird hoffentlich klar, was ich meine.
Kennt jemand nen anderen Dithering-Algorithmus, der dann wohl etwas schlechter "dithert", aber dafür nicht so stark "pixelt"? Ansonsten muss ich n Stück zurückgehen, und mir ne andere Filtemaske zurechbasteln...
Bin für jeden Tip dankbar.
We are, we were and will not be.