Wie funktioniert die JPEG-Kompression?

Die Bilddaten sind fast immer redundant, das heißt sie enthalten wiederkehrende Muster, die man für eine verlustfreie Kompression zusammenfassen kann: ab dem zweiten Auftreten derselben Pixelfolge genügt ein Verweis auf das erste Auftreten, der sehr viel weniger Speicherplatz benötigt. Das bekannteste Kompressionsverfahren dieser Art ist das von Lempel, Ziv und Welch (LZW) entwickelte, wie es beispielsweise auch Programmen wie WinZip auf dem PC und StuffIt! auf dem Macintosh zugrundeliegt. GIF-Bilder sind stets LZW-komprimiert und TIFF, ein Format mit einer unüberschaubaren Vielzahl von Varianten, lässt ebenfalls die Kompression der Bilddaten nach LZW zu. Diese verlustfreien Verfahren sind sehr effektiv, wenn es gilt, Bilder mit flächigen, scharf begrenzten Strukturen zu komprimieren, aber typische Fotos lassen sich so nur in geringem Maße schrumpfen. Große Kompressionsfaktoren kann man nur mit verlustbehafteten („lossy“) Verfahren erreichen, die die Bilddaten nicht nur kompakter speichern, sondern zur weiteren Verringerung des Speicherbedarfs solche Daten weglassen, deren Fehlen keinen nennenswerten Unterschied für den Bildeindruck macht. Eine verlustbehaftete Bildkompression opfert einen Teil der ursprünglichen Bildqualität, um dafür Speicherplatz zu sparen, und da viele Bilddetails für den menschlichen Betrachter unsichtbar sind, unbeachtet bleiben oder für minder wichtig angesehen werden, kann man die Dateigröße recht drastisch reduzieren, bevor sich die Qualität deutlich sichtbar verschlechtert.

JPEG

Seit mehr als einem Jahrzehnt ist das von der „Joint Photographic Experts Group“ entwickelte und nach diesem Gremium benannte JPEG-Verfahren die dominierende verlustbehaftete Kompressionsmethode. Das JPEG-Dateiformat JFIF ist neben GIF das verbreitetste Grafikformat im Internet, aber auch Formate wie Adobes PDF und Apples PICT unterstützen die Kompression der Bilddaten nach dem JPEG-Verfahren. Seit Version 6.0 kann Photoshop sogar TIFF-Grafiken JPEG-komprimiert speichern, wenn auch um den Preis der Inkompatibilität mit anderen Bildbearbeitungsprogrammen. Bei Digitalkameras ist JPEG/JFIF neben TIFF das Standardgrafikformat.

Trotz der vielen Vorzüge von JPEG, die für den universellen Erfolg dieses Kompressionsverfahren verantwortlich sind, bringt es auch einige prinzipbedingte Nachteile mit sich. Zwar kann man Bilddateien vielfach auf ein Zehntel ihrer Ursprungsgröße komprimieren, ohne dass die Bildqualität auffällig leidet, aber bei stärkerer Komprimierung werden die JPEG-typischen Artefakte sichtbar: Dort, wo sich die Farben nur in kleinen Schritten ändern, löst sich das Bild in quadratische Farbblöcke auf, während sich an kontrastreichen Konturen Geisterbilder zeigen.

Um diese Probleme besser zu verstehen, muss man wissen, wie die JPEG-Kompression arbeitet. Für JPEG wie für fast alle verlustbehafteten Kompressionsverfahren gilt, dass man in einem ersten Schritt die farbigen Pixel fit für die anschließende Kompression macht. Der Ausgangspunkt der JPEG-Kompression sind Pixel in den Grundfarben Rot, Grün und Blau, die für eine verlustbehaftete Kompression nicht optimal geeignet sind. Vor der eigentlichen Kompression wandelt man die RGB-Farben beispielsweise in das YCrCb-Modell um, das im ersten Kanals die reine Helligkeitsinformation (Y) speichert, also den Durchschnitt der Helligkeit des roten, blauen und grünen Kanals. Im zweiten Kanal speichert man die Abweichung des roten Kanals von der Durchschnittshelligkeit und im dritten Kanal die Abweichung des blauen Kanals. Der Wert für den grünen Kanal lässt sich daraus berechnen und braucht nicht eigens gespeichert zu werden. Nachdem man so die Komponenten Luminanz (Helligkeit) und Chrominanz (Farbigkeit) getrennt hat, kann man die Auflösung der beiden Chrominanzkanäle auf die Hälfte oder ein Viertel reduzieren, da sie für den Schärfeeindruck keine große Rolle spielt. Das Sehzentrum des Menschen enthält unabhängige Systeme für die Wahrnehmung von Farben und Formen, und der farbenblinde Formerkenner würde fein aufgelöste Farbgrenzen ohnehin ignorieren; das Farberkennungssystem wiederum arbeitet mit einer drei- bis viermal so geringen Auflösung wie die Formerkennung. Bei der Speicherung der Bilder von Digitalkameras kommt hinzu, dass die einzelnen Pixel eines CCD-Chips jeweils den roten, blauen oder grünen Anteil des Lichtes registrieren, nicht aber alle drei. Die jeweils fehlenden Farbanteile müssen aus den Nachbarpixeln interpoliert werden, weshalb die Farbauflösung ohnehin niedriger als die der Helligkeit ist und sich der Verlust in diesem ersten, Chroma-Subsampling genannten Kompressionsschritt in Grenzen hält. Die Umwandlung der Farben in ein Luminanz/Chrominanz-Farbmodell und die Vergröberung der Farbauflösung ist übrigens weder auf das JPEG-Verfahren noch auf die Digitaltechnik beschränkt; die analogen Farbfernsehnormen PAL, SECAM und NTSC sehen ganz ähnliche Umwandlungen vor.

Für die eigentliche JPEG-Kompression teilt man das Bild in je 8 mal 8 Pixel große Blöcke ein, die unabhängig voneinander verarbeitet werden. Mit dem mathematischen Verfahren der Diskreten Cosinus-Transformation (DCT), einer Verwandten der bekannteren Fourier-Transformation, ermittelt man aus den Helligkeitsschwankungen innerhalb eines Blocks die darin enthaltenen Frequenzen (das Verfahren ist im mathematischen Sinn „diskret“, insofern es mit einzelnen Pixeln, also Samples des kontinuierlichen Helligkeitsverlaufs, arbeitet). Das Ergebnis sind 64 Koeffizienten, die annähernd dieselbe Information wie die ursprünglichen 64 Pixel enthalten. Die Koeffizienten der einzelnen Frequenzen teilt man nun jeweils durch eine Zahl, die um so größer ist, je geringer die Bedeutung dieses Frequenzanteils für die menschliche Wahrnehmung ist und je kleiner die komprimierte Bilddatei am Ende werden soll, und rundet das Ergebnis auf eine ganze Zahl. Im Extremfall ist das Resultat Null und kann gänzlich wegfallen, aber der Effekt der Datenreduktion stellt sich erst ein, wenn im letzten Schritt die Koeffizienten aller 8-mal-8-Blöcke in einer sogenannten Entropie-Kodierung möglichst platzsparend in Nullen und Einsen umgesetzt werden. Eine Entropie-Kodierung kennt man vom Morsealphabet, das dem im Englischen häufigsten Buchstaben „e“ den kürzesten Code „.“ zuordnet, dem seltenen Buchstaben „q“ hingegen die längere Folge „– –.–“. In ähnlicher Weise kodiert man häufig auftretende (meist kleine) Koeffizienten mit kürzeren Bitfolgen als die selteneren.

Ärgerliche Artefakte

Überzieht man die Kompressionsvorgabe beim JPEG-Verfahren, so reduzieren sich fast alle Koeffizienten auf Null und die 8-mal-8-Felder werden auf unstrukturierte Farbblöcke reduziert, die ein solches Bild für die meisten Anwendungen unbrauchbar machen (siehe Abbildung rechts). Ein weiteres Problem liegt in der Methode der Diskreten Cosinus-Transformation, die Helligkeitsverläufe durch eine Addition einzelner Schwingungen nachzubilden versucht. Während sich periodische Schwingungen mit diesem Verfahren gut wiedergeben lassen, ist es für einmalige Veränderungen wie einen abrupten Wechsel von hell zu dunkel nur schlecht geeignet. Nach der DCT ist die Annäherung noch passabel, doch wenn aufgrund eines hohen Kompressionsfaktors nur wenige Koeffizienten übrig bleiben, läßt die resultierende Schwingung Geisterbilder und Farbsäume erscheinen.

Um solche Artefakte zu vermeiden, sollte man nach Möglichkeit die höchste JPEG-Qualitätsstufe wählen, die sich an der Kamera einstellen lässt; diese wird das Bild durchweg auf ein Fünftel bis zu einem Zehntel der ursprünglichen Dateigröße komprimieren. Wenn man das Ausmaß des Nachschärfens einstellen kann, sollte man hier die geringste Stufe wählen, da durch das Nachschärfen enststandene Artefakte durch eine nachfolgende JPEG-Kompression noch hervorgehoben werden. Das meist unvermeidliche Nachschärfen überlässt man besser einem Bildbearbeitungsprogramm, das eine Kontrolle des Effekts erlaubt; generell sollte das Nachschärfen immer am Ende der Bildbearbeitung stehen.

Copyright ©Copyright ©2003 by Michael J. Hußmann