mini|hochkant=0.5|JPEG Logo mini|hochkant=1|Ein Bild mit von links nach rechts abnehmenden Qualitätsstufen

JPEG ([]) ist die gebräuchliche Bezeichnung für die 1992 vorgestellte Norm ISO/IEC 10918-1 bzw. CCITT Recommendation T.81, die verschiedene Methoden der Bildkompression beschreibt. Die Bezeichnung „JPEG“ geht auf das Gremium Joint Photographic Experts Group zurück, das die JPEG-Norm entwickelte.jpeg.org 20:20, 30. Januar 2016

JPEG schlägt verschiedene Komprimierungs- und Kodierungsmethoden vor, darunter verlustbehaftete und verlustfreie Kompression, verschiedene Farbtiefen sowie sequenzielle oder progressive Modi (normaler Bildaufbau bzw. allmähliche Verfeinerung). Weithin verbreitet ist nur die verlustbehaftete Komprimierung bei sequenziellem oder progressivem Modus und 8-Bit-Farbkanälen.

Die JPEG-Norm beschreibt lediglich Bildkompressionsverfahren, legt aber nicht fest, wie die so entstandenen Daten gespeichert werden sollen. Gemeinhin werden mit „JPEG-Dateien“ oder „JPG-Dateien“ Dateien im Grafikformat JPEG File Interchange Format (JFIF) bezeichnet. JFIF ist jedoch nur eine Art, JPEG-Daten abzulegen; SPIFF und JNG sind weitere, wenn auch wenig gebräuchliche, Möglichkeiten.

JPEG/JFIF unterstützt eine maximale Bildgröße von 65.535 × 65.535 Pixel.Digital Compression And Coding Of Continuous-Tone Still Images–Requirements And Guidelines

Übersicht und Standards Die JPEG-Norm ISO/IEC 10918-1 definiert folgende Modi, von denen nur die farbig unterlegten gebräuchlich sind:

Aufbau Sequenziell (Sequential) Progressiv (Progressive) Verlustfrei (Lossless) Hierarchisch (Hierarchical) Kodierung Huffman Arithmetisch Huffman ArithmetischHuffmanArithmetisch Bittiefe 8 Bit 12 Bit 8 Bit 12 Bit 8 Bit 12 Bit 8 Bit 12 Bit2-16 Bit2-16 BitBittiefe je nach kombinierten Modi

Zusätzlich zum in ISO/IEC 10918-1 definierten verlustbehafteten Modus gibt es noch die verbesserte, verlustfreie Komprimierungsmethode JPEG-LS, die in einer anderen Norm festgelegt wurde. Außerdem existiert noch die JBIG-Norm zur Komprimierung von Schwarzweißbildern.

JPEG und JPEG-LS sind in den folgenden Standards definiert: ● JPEG (verlustbehaftet und verlustfrei): ITU-T T.81 (PDF; 1,1 MB), ISO/IEC IS 10918-1 ● JPEG (Erweiterungen): ITU-T T.84 ● JPEG-LS (verlustfrei, verbessert): ITU-T T.87, ISO/IEC IS 14495-1

Die JPEG-Norm trägt den offiziellen Titel Information technology – Digital compression and coding of continuous-tone still images: Requirements and guidelines. Das „Joint“ im Namen stammt von der Zusammenarbeit von ITU, IEC und ISO.

Die JPEG-Komprimierung Die JPEG-Norm definiert 41 verschiedene Unterdateiformate, von denen aber meist nur eines unterstützt wird (und welches auch fast alle Anwendungsfälle abdeckt).

Die Kompression erfolgt in mehreren Verarbeitungsschritten, von denen vier verlustbehaftet sind. Farbmodellumrechnung vom (meist) RGB-Farbraum ins YCbCr-Farbmodell (analog zu CCIR 601) (theoretisch verlustfrei, nach CCIR 601 verlustbehaftet). Tiefpassfilterung und Unterabtastung der Farbabweichungssignale Cb und Cr (verlustbehaftet). Einteilung in 8×8-Blöcke und diskrete Kosinustransformation dieser Blöcke (theoretisch verlustfrei, durch Rundungsfehler aber verlustbehaftet). Quantisierung (verlustbehaftet). Umsortierung. Entropiekodierung.

Die Datenreduktion erfolgt durch die verlustbehafteten Verarbeitungsschritte in Zusammenwirken mit der Entropiekodierung.

Kompressionen bis etwa 1,5–2 Bit/Pixel sind visuell verlustfrei, bei 0,7–1 Bit/Pixel sind noch gute Ergebnisse erzielbar, unter 0,3 Bit/Pixel wird JPEG praktisch unbrauchbar, das Bild wird zunehmend von unübersehbaren Kompressionsartefakten (Blockbildung, stufige Übergänge, Farbeffekte an Graukeilen) überdeckt. Der Nachfolger JPEG 2000 ist wesentlich weniger für diese Art von Artefakten anfällig.

Sieht man als Quellformat 24-Bit-RGB-Dateien an, erhält man Kompressionsraten von 12 bis 15 für visuell verlustfreie Bilder und bis zu 35 für noch gute Bilder. Die Qualität hängt aber neben der Kompressionsrate noch von der Art der Bilder ab. Rauschen und regelmäßige feine Strukturen im Bild verringern die maximal mögliche Kompressionsrate.

Der JPEG Lossless Mode zur verlustfreien Kompression verwendet ein anderes Verfahren (prädiktiver Koder und Entropiekodierung).

Farbmodellumrechnung mini|200px|Originalfarbbild oben und die Aufspaltung dieses Bildes in die Komponenten Y, Cb und Cr. Der geringe wahrgenommene Kontrast in den Farbkomponenten Cb und Cr macht anschaulich, warum die Farbinformation in der Auflösung reduziert werden kann (Unterabtastung), ohne den Bildeindruck wesentlich zu verschlechtern.

Das Ausgangsbild, welches meist als RGB-Bild vorliegt, wird in das YCbCr-Farbmodell umgerechnet. Grundsätzlich wird dabei das YPbPr-Schema nach CCIR 601 verwendet:

Da die R′G′B′-Werte bereits digital als 8-Bit-Zahlen im Bereich {0, 1, …, 255} vorliegen, müssen die YPbPr-Komponenten lediglich verschoben (renormiert) werden, wodurch die Komponenten Y′ (Luminanz), Cb (color blueness) und Cr (color redness) entstehen:

Die Komponenten liegen nun wiederum im Wertebereich {0, 1, …, 255}.

Bei der Umrechnung des Farbmodells entstehen die üblichen Rundungsfehler durch begrenzte Rechengenauigkeit.

Tiefpassfilterung der Farbdifferenzsignale Die Farbabweichungssignale Cb und Cr werden meist in reduzierter Auflösung gespeichert. Dazu werden sie tiefpassgefiltert und unterabgetastet (im einfachsten Fall durch eine Mittelwertbildung).

Meist wird eine vertikale und horizontale Unterabtastung jeweils um den Faktor 2 verwendet (YCbCr 4:2:0), die die Datenmenge um den Faktor 4 reduziert. Bei dieser Umwandlung wird die Tatsache ausgenutzt, dass die Ortsauflösung des menschlichen Auges für Farben deutlich geringer ist als für Helligkeitsübergänge.

Blockbildung und diskrete Kosinustransformation Jede Komponente (Y, Cb und Cr) des Bildes wird in 8×8-Blöcke eingeteilt. Diese werden einer zweidimensionalen diskreten Kosinustransformation (DCT) unterzogen:

mit

mini|292px|Statt 64 Einzelpunkte wird jeder 8×8-Block als Linearkombination dieser 64 Blöcke dargestellt mini|192px|In der Vergrößerung sind die komprimierten 8×8-Quadrate erkennbar.

Diese Transformation lässt sich unter Nutzung der schnellen Fourier-Transformation (FFT) mit sehr wenig Aufwand implementieren. Die DCT ist eine orthogonale Transformation, weist gute Energiekompressionseigenschaften auf und es gibt eine inverse Transformation, die IDCT (was auch bedeutet, dass die DCT verlustfrei ist, es gingen keine Informationen verloren, da die Daten lediglich in eine für die weitere Verarbeitung günstigere Form gebracht wurden).

Quantisierung Wie bei allen verlustbehafteten Kodierungsverfahren wird die eigentliche Datenreduktion (und Qualitätsverschlechterung) durch eine Quantisierung erreicht. Dazu werden die DCT-Koeffizienten durch die Quantisierungsmatrix geteilt (elementweise dividiert) und danach auf die nächstliegende Ganzzahl gerundet:

Bei diesem Rundungsschritt findet eine Irrelevanzreduktion statt. Die Quantisierungsmatrix ist sowohl für die Qualität als auch für die Kompressionsrate verantwortlich. Sie ist in JPEG-Dateien im Header abgespeichert (DQT-Marker).

Optimal ist die Quantisierungsmatrix, wenn sie in etwa die Empfindlichkeit des Auges für die entsprechenden Ortsfrequenzen repräsentiert. Für grobe Strukturen ist das Auge empfindlicher, daher sind die Quantisierungswerte für diese Frequenzen kleiner als die für hohe Frequenzen.

Hier ein Beispiel für eine Quantisierungsmatrix und ihre Anwendung auf einen 8×8-Block aus DCT-Koeffizienten:

wobei berechnet wird mit:

usw.

Umsortierung und Differenzkodierung des Gleichanteils mini|Zickzackförmige Reihenfolge der Bildkomponenten Die 64 Koeffizienten der diskreten Cosinus-Transformation werden anhand der Frequenz sortiert. Dadurch ergibt sich eine zickzackförmige Reihenfolge, beginnend mit dem Gleichanteil mit der Frequenz 0. Nach dem englischen Direct Current (für Gleichstrom) wird er mit DC abgekürzt, hier bezeichnet er die mittlere Helligkeit. Die Koeffizienten mit hohem Wert stehen nun meist zuerst und kleine Koeffizienten weiter hinten. Dies optimiert die Eingabe der nachfolgenden Lauflängenkodierung. Die Umsortierreihenfolge sieht folgendermaßen aus:

1 2 6 7 15 16 28 29 3 5 8 14 17 27 30 43 4 9 13 18 26 31 42 44 10 12 19 25 32 41 45 54 11 20 24 33 40 46 53 55 21 23 34 39 47 52 56 61 22 35 38 48 51 57 60 62 36 37 49 50 58 59 63 64

Weiterhin wird der Gleichanteil noch einmal differentiell zum Block links daneben kodiert und auf diese Weise die Abhängigkeiten zwischen benachbarten Blöcken berücksichtigt.

Das obige Beispiel führt zu den folgenden umsortierten Koeffizienten 119 … 78 3 -8 0 -4 7 -1 0 -1 0 0 0 -2 1 0 1 1 -1 0 … 102 5 -5 0 3 -4 2 -1 0 0 0 0 1 1 -1 0 0 -1 0 0 0 0 0 0 0 1 0 … 75 -19 2 -1 0 -1 1 -1 0 0 0 0 0 0 1 … 132 -3 -1 -1 -1 0 0 0 -1 0 …

Die Differenzkodierung des ersten Koeffizienten ergibt dann: -41 3 -8 0 -4 7 -1 0 -1 0 0 0 -2 1 0 1 1 -1 0 … 24 5 -5 0 3 -4 2 -1 0 0 0 0 1 1 -1 0 0 -1 0 0 0 0 0 0 0 1 0 … -27 -19 2 -1 0 -1 1 -1 0 0 0 0 0 0 1 … 57 -3 -1 -1 -1 0 0 0 -1 0 …

In strukturarmen Regionen (desselben Bildes) können die Koeffizienten auch so aussehen: 35 -2 0 0 0 1 0 … 4 0 1 0 … 0 0 2 0 1 0 … -13 0 -1 … 8 1 0 … -2 0 … Diese Bereiche lassen sich besser kodieren als strukturreiche Gebiete, beispielsweise durch eine Lauflängenkodierung.

Die Zickzack-Umsortierung der DCT-Koeffizienten fällt zwar unter den Schutzbereich des im Jahre 1986 angemeldeten US-Patentes 4,698,672 (und weiterer Anmeldungen und Patente in Europa und Japan). Jedoch wurde 2002 herausgefunden, dass das beanspruchte Verfahren nach dem Stand der Technik nicht neu war, sodass die Ansprüche kaum durchsetzbar gewesen wären. von jpeg.org Inzwischen sind die Patente dieser Patentfamilie durch Zeitablauf erloschen, wie beispielsweise das EP-Patent 0 266 049 B1 im September 2007.

Entropiekodierung Als Entropiekodierung wird meist eine Huffman-Kodierung verwendet. Der JPEG-Standard erlaubt auch eine arithmetische Kodierung. Obwohl diese zwischen 5 und 15 Prozent kleinere Dateien generiert, wird sie aus patentrechtlichen Gründen kaum verwendet, zudem ist diese Kodierung deutlich langsamer.

Die JPEG-Dekodierung Die Dekompression (meist Dekodierung genannt) erfolgt invers zur Kompression: Entropie-Dekodierung Umsortierung Requantisierung Inverse Diskrete Kosinustransformation. Überabtastung und Tiefpassfilterung der Farbdifferenzsignal U und V (verlustbehaftet) Farbmodellumrechnung vom YCbCr-Farbmodell in den Zielfarbraum (meist RGB)

Die Dekompression ist zwar (weitgehend) verlustfrei, allerdings tritt das Inverse-Dekoder-Problem auf. Aus dekodierten Daten ist es nur schwierig möglich, die ursprüngliche Datei zu rekonstruieren. Ein Dekodier-Kodier-Vorgang verändert die Datei und ist damit nicht verlustfrei, es treten wie beim analogen Überspielen Generationsverluste auf.

Die Generationsverluste von JPEG sind allerdings vergleichsweise klein, wenn wieder die gleiche Quantisierungstabelle zum Einsatz kommt und die Blockgrenzen die gleichen sind. Bei geeigneten Randbedingungen kann man sie bei JPEG sogar vermeiden. Bei JPEG-2000 ist das nicht mehr der Fall (überlappende Transformationen, wie sie bei JPEG-2000 wie auch in der Audiodatenkompression zum Einsatz kommen, erfordern dafür sehr große Rechenleistungen).

Inverse diskrete Kosinustransformation Zur DCT existiert die inverse Transformation, die IDCT:

mit den gleichen Korrekturfaktoren wie bei der DCT.

Farbmodellumrechnung Die Rückrechnung vom YCbCr-Farbmodell in den RGB-Farbraum erfolgt über die inverse Matrix der Hinrechnung, sie lautet:

mit:

Progressives JPEG