Entwickler-Ecke
Sonstiges (Delphi) - Dithering Algorithmen
Gausi - Fr 21.05.04 13:25
Titel: Dithering Algorithmen
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.
Gausi - Fr 21.05.04 20:06
hmm...die seite hatte ich auch schon gefunden. Aber beim 2. Mal hab ich mir die Textdateien nochmal durchgelesen, und da eine Variante von "nächste Farbe nehmen" gefunden: Bestimme die zwei nächsten Farben und wähle aus denen per Zufall eine aus. Ist leider sehr langsam, da mehr berechnet werden muss (Zufi nicht 50-50, sondern davon abhängig, wie weit die beiden Farben vom Originalpixel entfernt sind). Alle Dithering-Masken, die ich bisher ausprobiert habe, pixeln zu stark und sind unbrauchbar (dann muss man so viele Ministeck-Steinchen zerschneiden, und das mag ich nicht...)
Muss mal sehn, wie ich da weiterkomme. Evtl muss ich die Farbauswahl nochmal überarbeiten. Nur mit Pytagoras is das nicht das Wahre. Besser wird wohl sein, wenn ich schon im Vorfeld Farbton etc untersuche und nur die vom Ton her passenden Farben zulasse..
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!