www.mikrocontroller.net

Dithering

Dithering (engl. to dither, verwischen) bezeichnet eine Methode zur Reduzierung der negativen Auswirkungen von Quantisierungsrauschen, die beim Digitalisieren analoger Werte entsteht. Dabei versucht man, die Fehler über eine größere Anzahl von Datenpunkten zu verteilen und damit den Fehler zu verwischen. Damit klingt z.B. Audio weicher und nicht so kratzig oder ein Bild sieht weicher und weniger körnig aus.

Inhaltsverzeichnis

[Bearbeiten] Problem

Wenn analoge Werte z.B. mit einem DA-Wandler gesampelt werden, oder hochaufgelöste digitale Werte mit geringerer Auflösung weiterverarbeitet werden, wird das letzte Bit (LSB) naturgemäß gerundet. Der digitale Wert ist dabei mit einem Fehler von bis zu 0,5 digit behaftet. Diese Rundungen sind meist mathematisch präzise, wodurch ein Wert von 0,4 permanent auf 0 und ein Wert von 0,6 immer auf 1 gerundet wird. Ändern sich sich frequenzbedingt die analogen Werte während einer längeren Zeitdauer nicht genügend, entstehen dadurch mehrere falsche Wert hintereinander, zudem können minimale Änderungen im Analogsignal um den 0,5 - Punkt herum seltsame Muster generieren, die man als digitales Rauschen bezeichnet. Kumulieren diese Werte nun zu stark, so prägen sie in das Rekonstruktionsfilter, welches jeder DA-Wandlung nachgeschaltet sein muss, niederfrequente Schwingungen auf, die unterhalb der Nyquistfrequenz liegen und zu unerwünschten Signalanteilen führen.

[Bearbeiten] Lösung

Anstatt wie üblich 0,5 zum Wert zu addieren und den Restvektor abzuschneiden, wird ein kontinuierliches Rauschen auf den Wert gegeben. Damit werden Werte > 0,5 statistisch eher aufgerundet und Werte unterhalb von 0,5 eher abgerundet. Bei der späteren Filterung entsteht damit, wie bei einer PWM, ein analoger Zwischenwert, den man nicht digital hätte abbilden können.

[Bearbeiten] Beispiel 1

Im einfachsten Fall nutzt man bei Aufnahmen eine Wechselspannung in der Größenordnung des letzten Bits, die der halben Abtastfrequenz entspricht. Die Quantisierung wird damit gewissermassen "durchtunnelt". Digital kann man vor der Ausgabe auf dem DAC einfach die Wertefolge {0 / 0,5} abwechselnd addieren. Der theoretische Zwischenwert 0,5 führt dann jeweils zu einem 01010101 Muster.

[Bearbeiten] Beispiel 2

Die nachfolgenden Schaubilder zeigen einen oberwellenbehafteten Sinus mit ca. 1/100 der Abtastfrequenz, der infolge geringer Aussteuerung nur mit 4 Bit codiert wird. Das hier sehr einfach gehaltene Rekonstruktionsfilter bildet Bögen und adaptiert auf die Treppen[1]. Mit künstlichem Verrauschen gelingt eine wesentlich bessere Rekonstruktion des Signals (blau), obwohl es in der digitalen Repräsentation (orange) zunächst viel unsauberer aussieht, als im linken Beispiel. Mit einem guten Filter lässt sich das Rauschen weiter eliminieren, während die gröberen Bögen im linken Bild Frequenzanteile weit unterhalb der Samplefrequenz darstellen und z.B. bei Audio hörbare Artefakte beisteuern. Die Phasenverschiebung ist bei beiden rekonstruierten Wellen ähnlich.

[Bearbeiten] Beispiel 3

Die nachfolgenden Schaubilder zeigen den Effekt des Dithering bei einer 1-Bit-Wandlung. Der Pegel wird von oben nach unten und rechts nach links kontinuierlich von 0 auf 1.0 erhöht. Der eigentliche Sinus wird mit diesem Signal überlagert und vom 1-Bit-Wandler entsprechend gerundet. Diese 2D-Bild visualisiert den 1-dimenionalen Fall eines Sinussignal etwas besser, da sich durch den Sinus-Quadrat einfach zu beobachtende Schnitte von Halbkugeln bilden.


[Bearbeiten] Beispiel 4

Verbesserte Ansteuerung mit verrauschtem Sinus (4 Punkte):

[Bearbeiten] Fazit

Durch das Dithering lassen sich durch das letzte Bit (ähnlich der PWM) quasi analoge Zwischenwerte und Zeitverläufe darstellen. Je geringer die abzubildende Frequenz = Änderung des Wertes, desto besser wird sie dargestellt. Der Extremfall der Gleichspannung wird praktisch 100%ig richtig abgebildet.

Massgeblich ist, dass das Rauschen noch von der Filterbandbreite des Rekonstruktionsfilters erfasst wird. Dies ist anschaulich der Fall, da es sich um Rechteckimpulse handelt, deren grosser Oberwellenanteil weit jenseits der Filtergrenzfrequenz liegt. Beispiel: Audio-Dither@24kHz (48k/2). Gemäss LaPlace liegen 60% der Information jenseits von 48kHz, während die Grundwelle selber noch im Unhörbaren liegt.

[Bearbeiten] Anwendungen

[Bearbeiten] Analog-Digital-Wandler

Hochwertiges Analogequipment produziert wie oben angedeutet, ein Rauschen, das unabhängig vom Signalpegel exakt in der Grössenordnung des LSB liegt, um bereits am Eingang das zufällige Quantisierungsrauschen zu reduzieren. Moderne AD-Wandler nutzen derartige Verfahren, in dem sie die Abtastfrequenz variieren, was ähnliche Effekte hat.

[Bearbeiten] Noise Shaping

Eine Erweiterung ist das noise shaping, bei dem optimierte Rauschmuster verwendet werden. Dadurch entstehen bei Audio z.B. auch Frequenzen im hörbaren Bereich, wodurch sich eigentlich die Signalqualität verschlechtert, aber dadurch können auch die höheren Frequenzen besser abgebildet werden.

Eine Möglichkeit, dies in einem FPGA umzusetzen, beschreibt dieser Artikel: Digitaler Rauschgenerator im FPGA

[Bearbeiten] Bildverbesserung

Um analoge Bilder mit geringerer Auflösung oder gar digital mit 0/1 darzustellen, werden diese mit Ditheralgorithmen bearbeitet, um über die Dichte der Punkte einen analogen Farbeindruck zu erzeugen.

[Bearbeiten] Real Time Dithering

Als besonderen Anwendungsfall kann man bei einer digitalen Ausgabe von Videodaten, die zunächst nur 7 Farben+Schwarz ermöglicht, das dithern einsetzen, um Zwischenwerte zu erzeugen. Bei einer simplen Abwechslung der Farben während der Darstellung des Pixels kann eine Mischfarbe erzeugt werden.

Beispiel für das Digilent Spartan 3E Developmentboard: http://www.mikrocontroller.net/articles/Datei:Vga_test.bit

[Bearbeiten] Fußnoten

  1. Mehrfachausgabe desselben DAC-Wertes aufgrund geringer Frequenz
webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net