Kompression

Theoretisch (laut Spezifikation) gibt es auch verlustfreie JPEG-Komprimierung, allerdings wird sie praktisch kaum verwendet. Die Kompression lässt sich steuern, d.h. der Benutzer kann die gewünschte Qualitätsstufe selbst einstellen, beginnend mit maximaler, was auf der anderen Seite eine niedrige Kompressionsrate bedeutet, und endend mit niedriger Qualität, wobei die Kompressionsrate entsprechend hoch ist. Bei Erhalt der maximalen Bildqualität kann in etwa eine Kompressionsrate von 1:4 erreicht werden, bei der niedrigsten Qualitätsstufe ist eine Komprimierung bis zum Faktor von 1:25 möglich. Verglichen mit verlustfreien Kompressionsmethoden ist das eine enorme Steigerung, da hier oftmals nur ein Faktor von etwa 1:2 erreicht wird. Visuell wahrnehmbar sind die Bildverluste ab mittlerer Qualitätsstufe, der Faktor der Kompression beträgt dann in etwa 1:10.

Die JGEP-Komprimierung erfolgt in mehreren Schritten.

Im ersten Schritt wird das Bild in den YUV-Farbraum übertragen, der die Helligkeitsinformationen unabhängig von den Farbwerten speichert. Dafür eignet sich prinzipiell der Lab-Farbraum, allerdings wurde dafür der, dem Lab ähnlichen YUV-Farbraum gewählt. Bei diesem Farbraum enthält die Y die Luminanzwerte (Helligkeit), die Komponenten U und V die Chrominanzwerte (Farbwerte).

Dahinter steht die Überlegung, dass das menschliche Auge für Helligkeitsunterschiede empfindlicher ist als für Farbunterschiede, sodass sich Farbinformationen stärker komprimieren lassen als die Helligkeitsstufen. Da zwei Komponenten Farbinformationen enthalten, können bei der Komprimierung bessere Ergebnisse erzielt werden. Die Reduktion der Farbinformation erfolgt über ein Verfahren, das als Downsampling bekannt ist. Dabei werden einzelne Pixel jeder Farbkomponente durch einen gemittelten Wert ersetzt.

Helligkeitsinformationen bleiben vollständig erhalten, daher lassen sich z.B. Graustufenbilder, die ja keine reduzierbaren Farbinformationen enthalten, weniger gut komprimieren.

Im zweiten Schritt findet das DCT-Verfahren statt. Dabei wird das Bild in 8x8 Pixel Blöcke zerlegt, anschließend werden die Pixel der Blöcke per DCT transformiert und so die Bilddaten in einen mathematischen Frequenzraum übertragen.

Das Ergebnis ist pro Block eine 8x8-Tabelle mit dem Durchschnittswert aus den 64 (= 8x8) Werten (dem DC-Koeffizienten) und 63 Frequenz-Koeffizienten (den AC-Koeffizienten).
Die Koeffizienten sagen etwas über den Frequenzanteil in dem Bildblock aus. Jeder Koeffizient steht für den Anteil einer bestimmten cos-Schwingungsfläche, die durch Überlagerung von einer cos-Kurve auf der x-Achse mit einer cos-Kurve auf der y-Achse entsteht.
Hier entstehen, abgesehen von möglichen Rundungsfehlern, noch keine Informationsverluste.

Im dritten Schritt, der Quantisierung, passiert die Komprimierung - der eigentliche Verlust an Bildinformation. Die gewonnenen Koeffizienten werden zu ähnlichen Werten zusammengefasst. Die DCT-Koeffizienten werden durch einen Quantisierungsfaktor geteilt und auf den nächsten ganzzahligen Wert gerundet. Der DC-Koeffizient, der den Durchschnittswert des Blocks (und damit die Hauptinformation) enthält, wird nicht dividiert. Die Umkehrabbildung multipliziert den quantisierten Wert später einfach wieder mit dem Quantisierungsfaktor. Durch die dabei entstehenden Rundungsfehler gehen Informationen verloren. Der Faktor der Quantisierung ist vom Benutzer frei wählbar und entscheidet über Dateigröße und Bildqualität. Je größer der Quantisierungsfaktor, desto stärker die Nivellierung der AC-Koeffizienten. Arbeitet man beispielsweise mit einem Quantisierungsfaktor von 50, so werden alle Werte zwischen -25 und 25 durch 0 dargestellt (-24:50 = -0,48 -> 0; 24:50 = 0,48 -> 0), alle Werte von 25 bis 75 durch 1 (25:50 = 0,5 -> 1; 74:50 = 1,48 -> 1), usw.

Im vierten Schritt erfolgt nach der Quantifizierung eine weitere verlustfreie Komprimierung der Koeffizientenketten. Dabei wird meistens die Huffman-Kodierung verwendet.

Ergänzende und vertiefende Module