JPEG


aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
25px Dieser Artikel beschreibt die Norm zur Bildkompression. Das Dateiformat mit der Dateiendung .jpg oder .jpeg, in dem mit diesen Verfahren komprimierte Bilder üblicherweise gespeichert werden, ist unter JPEG File Interchange Format beschrieben.
Datei:Phalaenopsis JPEG.png
Ein Bild einer Phalaenopsis mit von links nach rechts abnehmenden Qualitätsstufen.

JPEG ( \cos \left[ \frac{(2y + 1) n \pi}{16} \right] </math>

mit den gleichen Korrekturfaktoren <math>C_k</math> wie bei der DCT.

Farbraumumrechnung

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

<math>

\begin{bmatrix}R' \\ G' \\ B'\end{bmatrix} = \begin{bmatrix} 1 & 0 & 1{,}402 \\ 1 & -0{,}344136 & -0{,}714136 \\ 1 & 1{,}772 & 0 \end{bmatrix} \cdot \begin{bmatrix}Y' \\ Pb \\ Pr\end{bmatrix} </math> mit:

<math>

\begin{bmatrix} Y' \\ Pb \\ Pr \end{bmatrix} = \begin{bmatrix} Y' \\ Cb \\ Cr \end{bmatrix} - \begin{bmatrix} 0 \\ 128 \\ 128 \end{bmatrix} </math>

Progressives JPEG

Ein JPEG-Bild besteht aus Koeffizienten. Diese speichern keine Pixel, sondern Annäherungen des gesamten Bildinhalts eines 8×8-Bildblocks. Beim Progressive JPEG werden erst die ersten Koeffizienten jedes Bildblocks, dann die zweiten usw. der Reihe nach abgespeichert, so dass die Annäherung an das Originalbild immer besser wird.

Wie beim Interlacing, das bei GIF angewendet wird, liegt der Zweck darin, dem Benutzer, noch bevor die gesamte Datei geladen ist, schnell ein grobes Vorschaubild zu geben. Dies ist besonders dann sinnvoll, wenn das Laden eines Bildes länger als eine halbe bis ganze Sekunde dauert bzw. man nur ein Vorschaubild benötigt. Jedoch werden große Bilder trotzdem meistens im normalen JPEG Modus zum Download angeboten.

Verlustfreie Nachbearbeitung von JPEG

Datei:JPEG Generation Loss rotating 90 (stitch of 0,100,200,500,900,2000 times).png
Verluste beim wiederholten Rotieren und Speichern eines JPEG-Bildes mit „krummer“ Auflösung 1021 × 767 (nicht durch 16 teilbar).
Das wiederholte Rotieren von JPEG-Bildern mit durch 16 teilbarer Auflösung (z. B. 1024 × 768) bei Verwendung immer der gleichen Quantisierungsmatrix ist dagegen (bei ordnungsgemäßer Implementierung) verlustfrei.

Obwohl eine Dekodierung und Rekodierung meist verlustbehaftet ist, lassen sich einige Bildmanipulationen (prinzipiell) ohne unerwünschte Datenverluste durchführen:

  • Bilddrehungen um 90°, 180° und 270°
  • horizontale und vertikale Bildspiegelungen
  • Beschneiden von Rändern um Vielfache von 16 Pixeln (bzw. 8 Pixel bei Schwarzweißbildern oder Farbbildern ohne Unterabtastung)

Dazu ist die Entropiekodierung und die Zickzack-Umsortierung rückgängig zu machen. Die Operationen erfolgen dann auf Grundlage der DCT-Koeffizienten (Umsortieren, Weglassen nicht benötigter Blöcke). Danach erfolgen wieder die Zickzack-Umsortierung und die Entropiekodierung. Es erfolgen keine verlustbehafteten Arbeitsschritte mehr. Nicht jedes Programm führt diese Operationen verlustfrei durch, es benötigt dazu spezielle dateiformatspezifische Verarbeitungsmodule. Bei den verbreiteten Bildbearbeitungsprogrammen ist das meist nicht der Fall, da diese in der Regel die Datei zunächst in ein Bitmuster dekodieren und dann mit diesen Daten arbeiten.

Beispielsweise das für Windows und Linux verfügbare Konsolenprogramm jpegtran vermag es, alle diese Operationen verlustfrei auszuführen,<ref>jpegtran-Website</ref><ref>Ubuntu – Informationen über Paket libjpeg-progs in jaunty (enthält jpegtran)</ref> ebenso das GUI-gestützte IrfanView für Windows.

Bilder, deren Auflösung nicht ein Vielfaches von 16 Pixeln (bzw. 8 Pixel bei Schwarzweißbildern oder Farbbildern ohne Unterabtastung) beträgt, sind problematisch. Sie weisen unvollständige Blöcke auf, das heißt, Blöcke, die nicht alle synthetisierten Pixel verwenden. JPEG erlaubt solche Blöcke aber nur am rechten und am unteren Bildrand. Einige dieser Operationen verlangen daher einmalig, dass diese Randstreifen verworfen werden.

Visuelle Qualität und verwandte Formate

Die JPEG-Kompression ist für natürliche (Raster-)Bilder entwickelt worden, wie man sie in der Fotografie oder bei computergenerierten Bildern vorfindet.

Ungeeignet ist JPEG für

  • digitale Strichzeichnungen (z. B. Screenshots oder Vektorgraphiken), die viele hochfrequente Bildteile (harte Kanten) enthalten,
  • Schwarzweißbilder mit 1 Bit pro Bildpunkt,
  • gerasterte Bilder (Zeitungsdruck).

Außerdem kann man mit JPEG keine transparenten Grafiken erzeugen.

Für diese Bilder sind Formate wie GIF, PNG oder JBIG weitaus besser geeignet.

Ein nachträgliches Heraufsetzen des Qualitätsfaktors vergrößert zwar den Speicherbedarf der Bilddatei, bringt aber verlorene Bildinformation nicht mehr zurück. Die Quantisierungstabellen können beliebig gewählt werden und sind nicht genormt. Viele Bildbearbeitungsprogramme lassen aber den Benutzer einen pauschalen Qualitätsfaktor zwischen 0 und 100 auswählen, der gemäß einer Formel in der vom JPEG-Komitee herausgegebenen JPEG-Bibliothek in eine Quantisierungstabelle umgewandelt wird. Auch bei Qualitätsfaktoren wie „100“ oder „100 %“ findet immer noch eine Quantisierung und damit ein – bei für JPEG ungeeigneten Bildern erheblicher – Qualitätsverlust statt.

Eine JPEG-Transformation ist im Allgemeinen nicht idempotent. Das Öffnen und anschließende Speichern einer JPEG-Datei führt zu einer neuen verlustbehafteten Kompression.

Datei:Jpegartefakt90-20.jpg
Bilder unterschiedlicher JPEG-Qualitätsstufen, von links nach rechts: „90“, „60“, „20“, Detail („20“)

Das Beispielbild vergleicht Aufnahmen, die mit unterschiedlichen Qualitätseinstellungen kodiert wurden. Die Porträt-Aufnahme besitzt eine Größe von 200 × 200 Pixeln. Bei 24 Bit Farbtiefe und unkomprimierter Speicherung erzeugt dieses Bild eine 120 Kbyte große Datei (exklusive Header und anderer Meta-Informationen). Die Klötzchenbildung der 8 × 8 Pixel großen Quadrate stellt das rechte Teilbild vergrößert dar. Ein weiteres Problem neben der Klötzchenbildung ist das „Ringing“, eine Konsequenz des schlechten Verhaltens der DCT bei harten Farbübergängen.

Im Profi-Bereich wird JPEG wegen der verlustbehafteten Datenreduktion eher selten verwendet. Stattdessen werden Formate eingesetzt, die verlustfrei komprimieren, ungeachtet des großen Speicherbedarfs. Beispiele sind TIFF, BMP, TGA oder PNG (Vollfarbenmodus). Eine unkomprimierte Aufnahme von 6 Megapixel erfordert bei einer Farbtiefe von 16 Bit pro Grundfarbe und 3 Grundfarben einen Speicherbedarf von 36 Mbyte, der sich bei strukturreichen, körnigen oder verrauschten Bildern durch verlustlose Kompression nur mäßig verkleinern lässt (bei detailreichen Fotos sind Kompressionsraten auf ca. 50 % üblich).<ref name="kompressionsvergleich">Vergleich der Eigenschaften (auch Kompression) von BMP GIF PNG JPEG TIFF PCX TGA, abgerufen 10. Oktober 2012</ref>

Es ist oft möglich, die Komprimierung vorhandener JPEG-Dateien ohne weitere Verluste zu optimieren und somit die Dateigröße etwas zu verringern. Neuere Versionen einiger Packprogramme sind in der Lage, JPEG-Bilder ohne weitere Verluste um bis zu 25 % zu komprimieren.<ref>http://www.maximumcompression.com/data/jpg.php</ref>

Die Bewegtbildkompressionsverfahren MPEG-1 (eng verwandt mit dem Codec Motion JPEG) sowie MPEG-2 bauen auf dem JPEG-Standard auf. Ein Nachfolgeprojekt von JPEG zur Speicherung von Bildern ist JPEG 2000, das über eine bessere Kompression und viele sinnvolle Eigenschaften verfügt, sich aber zumindest bis jetzt nicht in breitem Maße durchsetzen konnte. Ein weiteres potentielles Nachfolgeformat ist JPEG XR, das auf dem von Microsoft entwickelten Format HD Photo basiert, das jedoch bisher ebenfalls nur vereinzelt unterstützt wird.

Patentfragen

Mehrere Firmen haben bereits versucht, aus ihren (zumeist zu Unrecht erteilten) Patenten Forderungen gegen Softwarehersteller zu erheben, deren Produkte JPEG-Dateien lesen oder erstellen können. Bisher wurden alle entsprechenden Patente nachträglich entzogen. Dennoch konnten die Forderer in außergerichtlichen Einigungen hohe Millionenbeträge einnehmen.<ref>engl. Wikipedia: Patent-Forderungen</ref>

Implementierungen

Eine sehr wichtige Implementierung eines JPEG-Codecs ist die freie Programmbibliothek libjpeg. Sie wurde 1991 erstmals veröffentlicht und war ein Schlüssel für den Erfolg des Standards.<ref name="JPEG-homepage">http://jpeg.org/jpeg</ref> Sie oder ein direkter Abkömmling werden in einer unüberschaubaren Anzahl von Anwendungen verwendet.

Literatur

  • Heiner Küsters: Bilddatenkomprimierung mit JPEG und MPEG. Franzis, Poing 1995, ISBN 3-7723-7281-3
  • Thomas W. Lipp: Grafikformate. Microsoft Press, Unterschleißheim 1997, ISBN 3-86063-391-0
  • John Miano: Compressed Image File Formats. Addison-Wesley, Reading 2000, ISBN 0-201-60443-4
  • William Pennebaker, Joan Mitchell: JPEG Still Image Data Compression Standard. Chapman & Hall, New York 1993, ISBN 0-442-01272-1
  • Tilo Strutz: Bilddatenkompression. Vieweg, Wiesbaden 2005, ISBN 3-528-23922-0

Weblinks

Commons Commons: JPEG – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

<references />