JPEG

DCT & Quantisierung

Im nächsten Schritt wird das Bild in 8x8 große Pixelblöcke aufgetrennt. Jeder dieser Blöcke wird der diskreten Cosinus-Transformation unterzogen. Diese ist mit der Fourier-Transformation verwandt und wandelt die räumliche Information der Helligkeitswerte in eine Frequenz-Darstellung um. Die Umwandlung selbst ist verlustlos bis auf Rundungsfehler.

Auf diese Weise ergeben sich 64 DCT-Koeffizienten für jeden Pixelblock. Der oben links im Block stehende Koeffizient wird DC-Komponente oder Gleichanteil genannt. Je weiter man sich von ihm entfernt, desto höher werden die zugehörigen Frequenzen. Da das menschliche Auge für höhere Frequenzen weniger empfindlich ist, kann man diese Anteile je nach Höhe des Kompressionsfaktors vernachlässigen. Diese Aufgabe kommt dem Quantisierer zu.

Quantisierung

Um die Anzahl der DCT-Koeffizienten zu verringern, wird jeder Wert durch einen zugeordneten Q(uantisierungs)-Wert dividiert und auf die nächste ganze Zahl gerundet. Die Q-Werte werden dabei Tabellen entnommen, die das JPEG-Komitee anhand psycho-visueller Tests an einer Vielzahl von Personen ermittelt hat. Somit wird beim JPEG-Verfahren der Kompressionsfaktor nicht direkt eingestellt, sondern ein Q-Faktor ausgewählt, der einer bestimmten Kompression entspricht.

Die verlustbehaftete Quantisierung ist in Kombination mit der DCT dafür verantwortlich, dass in stark komprimierten Bildern störende Artefakte entstehen. Da sich die Bildinformationen bei einem hohen Q-Wert sprunghaft ändern, divergieren auch die DCT-Koeffizienten entsprechend stark. Soll bei der Dekompression versucht werden, diesen Sprung zu berechnen, stößt man mit Cosinus-Funktionen an die mathematische Grenze, da aufsummierte Cosinus-Teilfunktionen einen Sprung nur durch Einschwingen approximieren können. Dieser Effekt wird auch als Gibb'sches Phänomen bezeichnet.

Nach der Quantisierung sind die Daten stark reduziert. Durch die Abtrennung der hohen Frequenzanteile entsteht immer eine Reihe von Null-Werten, die durch Abzählen zusammengefasst werden. Die von Null verschiedenen quantisierten DCT-Koeffizienten werden durch ein Zick-Zack-Schema in eine lineare Zahlenfolge umgesetzt, die im letzten Schritt der Entropie-Kodierung unterworfen wird.