DCT Text3

Die Grundlage von JPEG und MPEG bildet die DCT, welche über die direkten Helligkeitssignale der 8x8-Blöcke eine Frequenzanalyse durchführt: Ähnlich der Vorgehensweise eines Frequenzanalysators wird das Ausgangssignal auf »tiefe« und »hohe« Frequenzen untersucht; nur, daß bei die hier verwendete DCT zweidimensional ist. Unter einer »tiefen« Frequenz versteht man einen langsamen, allmählichen An- oder Abstieg der Helligkeitswerte von links nach rechts bzw. oben nach unten; eine »hohe« Frequenz entspricht schnellen Helligkeitswechseln.
Solch eine Frequenzzerlegung ist für die Kompression von Bedeutung, weil man auf diese Art die Bildschärfe genau reguliert beeinflussen kann: Werden die höheren Frequenzen weggelassen, entsteht einfach ein etwas verschwommeneres Bild. JPEG benutzt diesen Effekt dahingehend, daß die höherfrequenten Signale mit einer geringeren Genauigkeit gespeichert werden, mit dem Effekt, daß u.U. ein leichtes Bildrauschen entsteht.
Der mathematische Vorgang einer DCT läßt sich folgendermaßen beschreiben: Sei f(x,y) ein Feld aus 8x8 Elementen (0<=x<=7; 0<=y<=7), welches die ursprüngliche Helligkeitsinformation erhält, allerdings konvertiert von vorzeichenlosen Ganzzahlen (typischerweise 0 bis 255) in vorzeichenbehaftete Zahlen (-127 bis 128). Diese Konvertierung sorgt dafür, daß die Zahlen möglichst klein bleiben, damit bei der DCT keine unnötig großen Werte entstehen. F(u,v) sei ein weiteres Feld, welches die transformierten DCT-Koeffizienten enthält. Die mathematische Transformation von f(x,y) nach F(u,v) heißt FDCT (»Forward DCT«) und ist im Prinzip ein harmonischer Analysator (harmonic analyzer); die Transformation von F(u,v) nach f(x,y) wird IDCT (»Inverse DCT«) genannt und erfüllt die Funktion eines harmonischen Synthesizers. Die zweite Besonderheit ist die Tatsache, daß die DCT aus mathematischer Sicht keine Art der Datenreduktion darstellt: Die Information wird auch hier lediglich transformiert, nicht komprimiert.

Führt man eine FDCT und IDCT direkt hintereinander aus, erhält man exakt die selbe Information zurück (bis auf die Rundungsfehler natürlich). Aus informatischer Sicht hat sich durch die DCT die Informationsmenge aber drastisch erhöht, denn die DCT-Koeffizienten sind mit an Sicherheit grenzender Wahrscheinlichkeit nicht ganzzahlig und können zudem auch negative Werte annehmen. Konnte man im Feld f(x,y) noch alle Werte bequem mit 8-Bit-Ganzzahlen darstellen, sind in F(u,v) zur einigermaßen korrekten Reproduktion mindestens 32-Bit-Fließkommazahlen pro Koeffizient nötig. Das spielt aber keine Rolle, da im weiteren Verlauf die Informationen ohnehin noch viel stärker komprimiert werden als auf 8 Bit pro Koeffizient. Der einzige Schritt, der wirklich massiv die Bildqualität angreift, ist die Quantisierung der DCT-Koeffizienten. Dabei wird jeder der DCT-Ausgangswerte durch einen festen ganzzahligen Wert aus einer ebenfalls 8x8 großen Tabelle dividiert und auf eine ganze Zahl gerundet; jeder DCT-Wert mit dem entsprechenden Eintrag aus der Quantisierungstabelle. Der Decoder geht den genau umgekehrten Weg: er multipliziert die quantisierten Werte mit den Werten aus der Quantisierungstabelle (die ihm natürlich bekannt sein muß), um die Original-Koeffizienten zu erhalten.

Es ist ganz logisch, daß die Werte der Quantisierungstabelle einen großen Einfluß sowohl auf die Kompressionsrate als auch auf die Bildqualität hat: Im »günstigsten« Fall, daß die Tabelle nur aus Einsen besteht (die DCT-Koeffizienten faktisch nur auf ganze Zahlen gerundet werden) wird zwar eine nahezu perfekte Bildqualität erreicht, allerdings sind die einfach gerundeten Werte kaum redundant, was das Ziel, eine Datenkompression, nahezu unerreichbar macht. Werden hingegen größere Werte verwendet, sind die Chancen größer, daß einzelne Koeffizienten auf Null abgerundet werden, was einen starken Angriffspunkt für konventionelle Kompressionsverfahren darstellt. Allerdings muß diese Redundanz mit einem drastischen Verlust an Bildqualität erkauft werden. ei der DCT werden ähnlich wie bei der Laplace- oder Fourier-Transformation die