Dithering: Unterschied zwischen den Versionen
SHWDSA (Diskussion | Beiträge) |
SHWDSA (Diskussion | Beiträge) |
||
Zeile 9: | Zeile 9: | ||
== Technischer Hintergrund == | == Technischer Hintergrund == | ||
+ | Aus Gründen der Übersichtlichkeit wird Dithering anhand von 256 Graustufen erläutert. Um Dithering auf Farbe anzuwenden, werden die vorgestellten Techniken auf jeden Farbkanal angewandt. | ||
+ | |||
+ | === Naive Ansätze === | ||
+ | ==== Down Scaling ==== | ||
+ | Im einfachsten Ansatz wird für jeden Pixel eine Entscheidung getroffen, welchen Wert er zugewiesen bekommt. Das heißt die Originalfarben werden gleichmäßig auf die reduzierte Palette aufgeteilt. Bei einer Reduktion auf Schwarz und Weiss werden z.B. Pixel mit einem Grauwert >= 128 auf Weisse Pixel und alle anderen Pixel auf Schwarz abgebildet. | ||
+ | ==== Random Decision ==== | ||
+ | Eine deutliche Verbesserung erzielt man wenn die Entscheidung nicht über den Wert des Pixels getroffen wird, sondern dieser Wert als Wahrscheinlichkeit betrachtet wird ob ein Pixel gesetzt wird oder nicht. So wird ein Pixel mit einem Wert von 152 mit der Wahrscheinlichkeit 152/256 durch einen weissen Pixel ersetzt. | ||
+ | Die harten Kanten zwischen Weiss und Schwarz werden durch diese Weise zwar ersetzt, aber es ist ein ziemlich guter Zufallszahlen-Generator erforderlich um akzeptable Ergebnisse zu erhalten. | ||
+ | ==== Filling Patterns ==== | ||
+ | Filling Patterns sind reguläre Muster, die dazu verwendet werden eine gewisse Anzahl an Graustufen abzubilden. Mit einem nxn Muster ist es möglich n*n+1 verschiedene Graustufen darzustellen. Als Beispiel die Muster für ein 2x2 (5 Graustufen) Muster. | ||
+ | {|border="1" cellspacing="1" align="center" | ||
+ | |+2x2 Muster = 5 Graustufen | ||
+ | !0% | ||
+ | ! 25% | ||
+ | ! 50% | ||
+ | ! 75% | ||
+ | ! 100% | ||
+ | |- | ||
+ | |00||10||01||11||11 | ||
+ | |00||00||10||01||11 | ||
+ | |} | ||
=== Dispersed Dot Dithering === | === Dispersed Dot Dithering === | ||
Zeile 14: | Zeile 35: | ||
== Literatur == | == Literatur == | ||
+ | *OpenGL Superbible, 3rd. Edition, Wright & Lipchak, SAMS | ||
+ | *Computer Graphics - Principles and Practice, Second Edition in C, Foley & van Dam & Feiner & Hughes, Addison Wesley | ||
+ | *Skript zur Vorlesung Computer Graphics I, 1st Edit. 3rd Rev., Kobbelt & Sar-Dessai, Lehrstuhl für Informatik 8 - RWTH Aachen |
Version vom 17. April 2005, 13:23 Uhr
(Mehr Informationen/weitere Artikel) {{{1}}} |
Inhaltsverzeichnis
Übersicht
Dithering wird verwendet um mit wenigen Farben viele Farben zu simulieren. In den Printmedien wird Dithering häufig auch als Halftoning bezeichnet und verwendet. Hierbei werden schwarze und weisse Bildpunkte so angeordnet, dass man den Eindruck eines Graustufen-Bildes erhält. Nachteil an der Sache ist, das meistens die Auflösung reduziert wird.
Dithering und OpenGL
Der verwendete Dithering-Algorithmus ist abhängig von der OpenGL-Implementierung. Allerdings kann ein guter Dithering-Algorithmus die Bildqualität auf Displays mit kleiner Farbzahl stark erhöhen. Dithering ist standardmässig eingeschaltet und kann mit glEnable bzw. glDisable und dem Parameter GL_DITHER kontrolliert werden. Bei hoher Farbzahl ist Dithering nicht zwingend erforderlich und kann aus Perfomance-Gründen abgeschaltet werden.
Technischer Hintergrund
Aus Gründen der Übersichtlichkeit wird Dithering anhand von 256 Graustufen erläutert. Um Dithering auf Farbe anzuwenden, werden die vorgestellten Techniken auf jeden Farbkanal angewandt.
Naive Ansätze
Down Scaling
Im einfachsten Ansatz wird für jeden Pixel eine Entscheidung getroffen, welchen Wert er zugewiesen bekommt. Das heißt die Originalfarben werden gleichmäßig auf die reduzierte Palette aufgeteilt. Bei einer Reduktion auf Schwarz und Weiss werden z.B. Pixel mit einem Grauwert >= 128 auf Weisse Pixel und alle anderen Pixel auf Schwarz abgebildet.
Random Decision
Eine deutliche Verbesserung erzielt man wenn die Entscheidung nicht über den Wert des Pixels getroffen wird, sondern dieser Wert als Wahrscheinlichkeit betrachtet wird ob ein Pixel gesetzt wird oder nicht. So wird ein Pixel mit einem Wert von 152 mit der Wahrscheinlichkeit 152/256 durch einen weissen Pixel ersetzt. Die harten Kanten zwischen Weiss und Schwarz werden durch diese Weise zwar ersetzt, aber es ist ein ziemlich guter Zufallszahlen-Generator erforderlich um akzeptable Ergebnisse zu erhalten.
Filling Patterns
Filling Patterns sind reguläre Muster, die dazu verwendet werden eine gewisse Anzahl an Graustufen abzubilden. Mit einem nxn Muster ist es möglich n*n+1 verschiedene Graustufen darzustellen. Als Beispiel die Muster für ein 2x2 (5 Graustufen) Muster.
0% | 25% | 50% | 75% | 100% | |||||
---|---|---|---|---|---|---|---|---|---|
00 | 10 | 01 | 11 | 11 | 00 | 00 | 10 | 01 | 11 |
Dispersed Dot Dithering
Floyd-Steinberg Error Distribution
Literatur
- OpenGL Superbible, 3rd. Edition, Wright & Lipchak, SAMS
- Computer Graphics - Principles and Practice, Second Edition in C, Foley & van Dam & Feiner & Hughes, Addison Wesley
- Skript zur Vorlesung Computer Graphics I, 1st Edit. 3rd Rev., Kobbelt & Sar-Dessai, Lehrstuhl für Informatik 8 - RWTH Aachen