DCT Text1

An einem Block von 8x8 Pixel wird die DCT (Discrete Cosinus Transformation) durchgeführt. Ein Verfahren, bei dem der Block in seine Frequenzbestandteile zerlegt wird. Was dabei entsteht und an Stelle der ursprünglichen Pixel gespeichert wird, ist eine Matrix aus Frequenzinterferenzen, wobei jede einzelne Zelle das Frequenzspektrum des gesamten ursprünglichen 8x8-Block repräsentiert. Allerdings gilt das nur sehr begrenzt, denn die erste Zelle allein kann quasi nur eine simple graue Fläche wiedergeben und steht somit für die durchschnittliche Helligkeit des gesamten Blocks. Nach rechts aufsteigend werden dann vertikale "Balken" hinzugefügt, so dass die achte Zelle ein Muster aus Gitterstäben enthält. Analog dazu verhält es sich mit den Zeilen. Von oben nach unten kommen immer mehr horizontale Balken hinzu, am Ende entsteht dadurch ein Streifenmuster.
Diagonal hat das die Auswirkung, dass ein immer komplexeres Gittermuster zur 64sten Zelle hin entsteht. Die Zellen mit höheren Zellennummern nehmen komplexere Spektren auf. Lässt man nun Spalten, Zeilen oder auch Zellen weg, um Speicherplatz zu sparen, dann nimmt man dem ursprünglichen Bild Schritt für Schritt an Komplexität. Theoretisch kann aus den Welleninterferenzen (Element der Blockmatrix nach der DCT) auf einem See (dem Block) berechnet werden, wie viele Steine (Pixel) wo ins Wasser geworfen wurden (Postion des Pixels) und wie schwer die waren (die Helligkeit), und auf die gleiche Weise wird später auch wieder das Bild erzeugt. Die DCT selbst ist vom Grundprinzip völlig verlustfrei und reversibel.

Geringfügige Einbußen entstehen aufgrund der Nachkommastellen und der Rundungsfehler. Eine eigentliche Einsparung an Daten liegt bisher aber noch nicht vor, dafür ist der nächste Schritt, die Quantisierung in der DCT verantwortlich: Die Aufgabe einer solchen Matrix ist es, die Zelleninhalte möglichst zu homogenisieren, also einander angleichen. Dieses aneinander Angleichen ist wichtig, da im folgenden Schritt die RLC folgt, die darauf angewiesen ist, dass möglichst viele gleiche Werte hintereinander folgen. Wie wir jetzt wissen, stehen zur Zeit die Zelleninhalte (Elemente) stellvertretend für die Komplexität des Blocks. Die Quantisierungs-Matrix selbst enthält Zahlen, die mit denen der Zelleninhalte verrechnet werden. Der Trick ist nun der, die Zahlen der Matrix so zu wählen, dass das gewünschte Ziel erreicht wird, nämlich möglichst viele Zellen auf gleiche Werte zu bringen. Aus den vorliegenden Wellenmustern (den Zelleninhalten) kann errechnet werden, was für Steine (die Pixel) wo ins Wasser (Position der Pixel) geworfen wurden. Dazu sind aber bei drei Steinen nur die Daten von zweien erforderlich, die Werte des dritten ergeben sich zwangsläufig aus denen der beiden ersten. Aus den bisherigen Daten und dem, was man da sonst noch hat, lässt sich ableiten, was wann und wo dazu geführt hat. Nichts anderes tut später die Umkehrung der DCT, die iDCT. Jede Zelle des Blocks ist also einer dieser Steine (Pixel), bzw. die Information über einen solchen mit Bezugname auf alle anderen: Jede Zelle ist eine der Wellen bzw. das Interferenzmuster mehrerer, die einer der Steine beim Aufschlag auf das Wasser erzeugt hat. Die Quantisierung sollte möglichst viele Zelleninhalte in der richtigen Reihenfolge auf gleiche Werte setzen, es dabei aber vermeiden, durch zu hohe Quantisierung zu viele Rundungsfehler als unbedingt nötig zu erzeugen. Quantisierungsmatrizen mit 99er Inhalten sind prima zum Komprimieren, aber sie führen zu starken Quantisierungsfehlern und unscharfen Bildern.