JPEG ist ein Internet-Standard-Format, das von allen gängigen Browsern interpretiert werden kann, aber ursprünglich nicht für das Internet sondern vor allem zur Kompression von Halbtonbildern (Farb- oder Graustufen) mit einer Datentiefe von 8 Bit entwickelt wurde. Bilder, die nur über Schwarz-Weiß-Informationen verfügen, sowie Bilder mit indizierten Farben lassen sich damit nicht kodieren, weiters werden bei der Kodierung von Grafiken mit vielen einheitlichen Farbflächen und harten Übergängen nur mäßige Ergebnisse erzielt. Eigentlich ist JPEG aber kein Dateiformat sondern ein Standard zur Datenkompression. Der Vorgang ist verlustbehaftet, daher enthält ein Bild nach der Dekompression weniger Informationen als im Originalzustand.
Macintosh File Type: | JPEG |
Windows File Type: | .JPG |
Farbmodelle: | RGB, Graustufen, CMYK |
ICC-Profile: | ja |
Anzahl Kanäle: | 3 oder 4 Farbkanäle, keine Alpha-Kanäle |
Bittiefe: | 8 Bit pro Kanal |
Kompression: | DCT mit anschließender Quantisierung |
Maximale Bildgröße: | |
Hersteller: | JPEG, ISO |
Plattform: | Mac-OS, Windows, UNIX |
Das Format wurde Ende der 80er entwickelt und sollte sich für möglichst viele unabhängige Einsatzgebiete eignen, die Kompression sollte unabhängig von Größe und Farbanzahl des Bildes über einen Faktor einstellbar und einfach in Hard- und Software zu integrieren sein.
Da JPEG kein eigentliches Dateiformat ist, enthält die Spezifikation keine Anweisungen zum Speichern und Austauschen von JPEG-kodierten Daten. Allerdings wurde ein JPEG File Interchange Format (JFIF) entwickelt, mit dem es möglich ist, Daten JPEG-kodiert abzuspeichern und zwischen Applikationen und auch Plattformen auszutauschen.
Dieses Kapitel bezieht sich auf den Aufbau einer JFIF-Datei. Die Datei besteht aus mehreren Blöcken und sieht grob etwa so aus: .
Allgemeine Struktur einer JFIF-Datei
Der Header enthält den Start of-Marker (SOI = Start of Image), einen Application Marker, die Größe der APPO-Daten, den String JFIF, die Versionsnummer der JFIF-Spezifikation, die Maßeinheit (dpi, dpc oder keine), die Auflösung des Bildes in der festgelegten Maßeinheit. Die APPO-Daten enthalten, falls vorhanden, 24-Bit-RGB-Daten einer verkleinerten Version des Bildes. Diese dient dazu, sich einen ersten Eindruck über die Grafik zu verschaffen und ist unkomprimiert. Der optionale Header erlaubt auch andere Varianten von Previewbildern, auch JPEG-komprimierte. Die eigentlichen Bilddaten bestehen aus Blöcken von JPEG-komprimierten Daten, der End of-Marker (EOI = End of Image) beendet die Datei.
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.
Das Speichern eines JPEG-Bildes kann in Photoshop über "Speichern Unter" oder über "Für Web Speichern" erfolgen. Da letzteres deutlich bessere Ergebnisse bringt und mehr Möglichkeiten anbietet, ist diese Variante vorzuziehen, auch wenn das Bild nicht im Internet verwendet werden soll.
Der normale "Speichern unter"-Dialog sieht so aus:
Speicheroptionen fü JPEG im Photoshop [Version CS]
über einen Schieberegler kann die Kompressionsrate bestimmt werden, was sehr hilfreich ist, da der Benutzer so selbst die Bildqualität kontrollieren kann. Mit Baseline ist die mathematische Transformation gemeint, für die Verwendung im Internet ist die optimiert-Version vorzuziehen.
Mehrere Durchgänge bedeutet progressive JPEG - das heißt, das Bild wird nicht zeilenweise in voller Qualität aufgebaut sondern in mehreren Durchgängen übertragen. Der User sieht dann schnell eine grob gepixelte Blockversion des Bildes, die mit jedem Durchgang verfeinert wird. Die eigentliche Übertragung geht nicht schneller, allerdings ist hier der psychologische Faktor entscheidend, da schneller etwas angesehen werden kann.
Der "Für Web Speichern"-Dialog sieht folgendermaßen aus (der Screenshot zeigt einen Ausschnitt):
Speicheroptionen (Für Web Speichern) für JPEG im Photoshop [Version CS]
Über die Optionen JPEG Maximum, JPEG hoch, JPEG mittel, JPEG niedrig kann man die Qualität einstellen. Hilfreich ist dabei der direkte Vergleich zum Original mit Hilfe der Zweifach- Vorschau. Neben dem Schieberegler, der den Quantisierungswert bestimmt, kann die Qualität auch durch Weichzeichner verändert werden. Auch hier ist eine Bildvorschau verfügbar. Der Weichzeichner verringert die Anzahl der zu speichernden Farbwerte, weil er Kontraste im Bild verwischt.
Weiters lässt sich in diesem Dialog die Bildgröße bestimmen. Man kann aber auch auf diese Angaben verzichten und nur die gewünschte Dateigröße angeben, dann übernimmt Photoshop die Optimierung.
Die folgende Tabelle zeigt dasselbe Bild im JPEG-Format, mit unterschiedlichen Qualitätsstufen abgespeichert.
JPEG schlechte Qualität (10,4 KB) | JPEG mittlere Qualität (11,5 KB) | JPEG gute Qualität (11,8 KB) |
Betrachtet man das erste Bild genauer erkennt man relativ gut die Blockartefakte von 8x8 Pixel. Vergrößert sieht das Bild (hier nur ein Ausschnitt) so aus:
Derselbe Ausschnitt des Bildes mit mittlerer Qualität vergrößert:
Derselbe Ausschnitt des Bildes mit hoher Qualität vergrößert:
JPEG ist ein weit verbreitetes Format, das vor allem für das Internet geeignet ist, auch wenn das nicht seine ursprüngliche Bestimmung war. Es sind 16,7 Mio. Farben darstellbar, es eignet sich daher sehr gut für realitätsnahe Fotos. Weiters kann die Kompressionsrate und damit Dateigröße/Qualität vom Benutzer selbst eingestellt werden.
Ein Nachteil von JPEG ist, dass die Kompression verlustbehaftet ist. Weiters eignet es sich nicht für alle Arten von Grafiken. So ist es beispielsweise ungeeignet für Graustufenbilder oder Grafiken mit vielen gleichfarbigen Flächen und harten Kontrasten. Ein weiterer Nachteil ist die Bildung von Blockartefakten v.a. bei mittleren und hohen Kompressionsraten.
JPEG eignet sich für die Kompression von fotorealistischen Bildern, für das Internet, aber weniger bis gar nicht für den Einsatz bei Graustufenbildern, Bildern mit wenigen Farben, vorwiegend harten Kontrasten und zahlreichen gleichfarbigen Flächen.