New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Joint Photographic Experts Group - Wikipedia

Joint Photographic Experts Group

aus Wikipedia, der freien Enzyklopädie

Eine Sonnenblume als JPEG Bild. Bei Fotos wie diesem wird bei ganz genauem Hinsehen der Schärfeverlust durch die zu starke verlustbehaftete Komprimierung sichtbar.
Eine Sonnenblume als JPEG Bild. Bei Fotos wie diesem wird bei ganz genauem Hinsehen der Schärfeverlust durch die zu starke verlustbehaftete Komprimierung sichtbar.

Joint Photographic Experts Group (JPEG) [dʒɔɪnt ˌfəʊtəˈgɹæfɪk ˈɛkspɜːts gɹuːp, ˈdʒeɪpɛg] (engl. Verbindung der Fotografieexperten) ist ein 1986 gegründetes Gremium der International Telecommunication Union (ITU). Dieses Gremium entwickelte ein im September 1992 standardisiertes Verfahren zur verlustbehafteten Kompression von digitalen (natürlichen) Bildern, das nach dem Gremium benannt wurde. JPEG (kurz JPG) ist das im Web am weitesten verbreitete Bildformat für Fotos.

Nachfolgeprojekte sind JBIG (Bilevel Images, Schwarzweißzeichnungen) und JPEG-2000 (bessere Kompression, viele sinnvolle Features), die sich aber zumindest bis jetzt nicht durchsetzen konnten. Die Bewegtbildkompressionsverfahren MPEG-1 und MPEG-2 bauen auf JPEG auf.

Inhaltsverzeichnis

[Bearbeiten] Die JPEG-Kompression

JPEG-Kompression ist in der Norm ITU T.81 definiert, die frei verfügbar ist ([1], PDF). Die Norm ist identisch mit ISO 10918-1 (die dort gegen Bezahlung bezogen werden kann). Das "Joint" im Namen stammt von der Zusammenarbeit von ITU, IEC und ISO.

Die 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 durch das Anwenden mehrerer Verarbeitungsschritte, von denen nur zwei verlustbehaftet sind.

Die Datenreduktion erfolgt durch die verlustbehafteten Verarbeitungschritte 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 bis zu 35 für noch gute Bilder. Die Qualität hängt aber neben der Kompressionrate 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).

[Bearbeiten] Farbraumumrechung

Originalfarbbild oben und die Aufspaltung dieses Bildes in die Komponenten Y, Cb und Cr. Die Unschärfe 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.
Originalfarbbild oben und die Aufspaltung dieses Bildes in die Komponenten Y, Cb und Cr. Die Unschärfe 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 den YCbCr-Farbraum umgerechnet. Grundsätzlich wird dabei das YPbPr-Schema nach CCIR 601 verwendet:

\begin{bmatrix} Y' \\ Pb \\ Pr \end{bmatrix} \approx \begin{bmatrix} 0{,}299    &  0{,}587    &  0{,}114  \\                 -0{,}168736 & -0{,}331264 &  0{,}5    \\                  0{,}5      & -0{,}418688 & -0{,}081312 \end{bmatrix} \cdot \begin{bmatrix} R' \\ G' \\ B' \end{bmatrix}

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:

\begin{bmatrix} Y' \\ Cb \\ Cr \end{bmatrix} \approx \begin{bmatrix} 0 \\ 128 \\ 128 \end{bmatrix} + \begin{bmatrix} 0{,}299    &  0{,}587    &  0{,}114  \\                 -0{,}168736 & -0{,}331264 &  0{,}5    \\                  0{,}5      & -0{,}418688 & -0{,}081312 \end{bmatrix} \cdot \begin{bmatrix} R'_d \\ G'_d \\ B'_d \end{bmatrix}

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

Bei der Umrechnung des Farbraums entstehen die üblichen Rundungsfehler durch begrenzte Rechengenauigkeit, aber noch keine Datenreduktion.

[Bearbeiten] 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 2 reduziert. Bei dieser Umwandlung wird die Tatsache ausgenutzt, dass die Ortsauflösung des menschlichen Auges für Farben deutlich geringer als für Helligkeitsübergänge ist.

[Bearbeiten] 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:

F_{xy} = {1 \over 4} C_x C_y \sum_{m=0}^7 \sum_{n=0}^7 f_{mn} \cos \left[ \frac{(2m + 1) x \pi}{16} \right] \cos \left[ \frac{(2n + 1) y \pi}{16} \right]

mit

C_k =  \begin{cases} {1 \over \sqrt{2}} & \text{wenn }k = 0 \\ 1 & \text{sonst } \end{cases}
Statt 64 Einzelpunkte wird jeder 8×8-Block als Linearkombination dieser 64 Blöcke dargestellt
Statt 64 Einzelpunkte wird jeder 8×8-Block als Linearkombination dieser 64 Blöcke dargestellt
In der Vergrößerung sind die komprimierten 8×8-Quadrate erkennbar.
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 orthonormale Transformation, weist gute Energiekompressioneigenschaften auf und es gibt eine inverse Transformation (was auch bedeutet, dass die DCT verlustfrei ist, die Daten also nicht komprimiert, sondern nur in eine für die weitere Verarbeitung günstigere Form bringt).

[Bearbeiten] 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 abgerundet:

F^Q(x,y) = \left\lfloor \frac{F(x,y)}{Q(x,y)} \right\rfloor

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 diese 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:

\begin{alignat}{2} Q &= \begin{bmatrix} 10  & 15  & 25  & 37  & 51  & 66  & 82  & 100 \\ 15  & 19  & 28  & 39  & 52  & 67  & 83  & 101 \\ 25  & 28  & 35  & 45  & 58  & 72  & 88  & 105 \\ 37  & 39  & 45  & 54  & 66  & 79  & 94  & 111 \\ 51  & 52  & 58  & 66  & 76  & 89  & 103 & 119 \\ 66  & 67  & 72  & 79  & 89  & 101 & 114 & 130 \\ 82  & 83  & 88  & 94  & 103 & 114 & 127 & 142 \\ 100 & 101 & 105 & 111 & 119 & 130 & 142 & 156 \end{bmatrix} \\ F &= \begin{bmatrix}  782{,}91 &  44{,}93 & 172{,}52 & -35{,}28 & -20{,}58 &  35{,}93 &   2{,}88 &  -3{,}85 \\ -122{,}35 & -75{,}46 &  -7{,}52 &  55{,}00 &  30{,}72 & -17{,}73 &   8{,}29 &   1{,}97 \\   -2{,}99 & -32{,}77 & -57{,}18 & -30{,}07 &   1{,}76 &  17{,}63 &  12{,}23 & -13{,}57 \\   -7{,}98 &  0{,}66  &   2{,}41 & -21{,}28 & -31{,}07 & -17{,}20 &  -9{,}68 &  16{,}94 \\    3{,}87 &  7{,}07  &   0{,}56 &   5{,}13 &  -2{,}47 & -15{,}09 & -17{,}70 &  -3{,}76 \\   -3{,}77 &  0{,}80  &  -1{,}46 &  -3{,}50 &   1{,}48 &   4{,}13 &  -6{,}32 & -18{,}47 \\    1{,}78 &  3{,}28  &   4{,}63 &   3{,}27 &   2{,}39 &  -2{,}31 &   5{,}21 &  11{,}77 \\   -1{,}75 &  0{,}43  &  -2{,}72 &  -3{,}05 &   3{,}95 &  -1{,}83 &   1{,}98 &   3{,}87 \end{bmatrix} \\ F^Q &= \begin{bmatrix} 78 &  3 &  7 & -1 &  0 &  1 &  0 &  0 \\ -8 & -4 &  0 &  1 &  1 &  0 &  0 &  0 \\  0 & -1 & -2 & -1 &  0 &  0 &  0 &  0 \\  0 &  0 &  0 &  0 &  0 &  0 &  0 &  0 \\  0 &  0 &  0 &  0 &  0 &  0 &  0 &  0 \\  0 &  0 &  0 &  0 &  0 &  0 &  0 &  0 \\  0 &  0 &  0 &  0 &  0 &  0 &  0 &  0 \\  0 &  0 &  0 &  0 &  0 &  0 &  0 &  0 \end{bmatrix} \end{alignat}

[Bearbeiten] Umsortierung und Differenzkodierung des Gleichstromanteils

Zick-Zack-förmige Reihenfolge der Bildkomponenten
Zick-Zack-förmige Reihenfolge der Bildkomponenten

Die 64 Koeffizienten der diskreten Cosinus-Transformation werden anhand der Frequenz sortiert. Dadurch ergibt sich eine Zick-Zack-förmige Reihenfolge, beginnend mit dem Gleichstromanteil mit der Frequenz 0. Nach dem englischen Direct Current 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 erleichtert die nachfolgende Entropie-Kodierung. 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 Gleichstromanteil noch einmal differentiell zum Block links daneben kodiert und auf diese Weise die Abhängigkeiten zwischen benachbarten Blocks 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 natürlich besser als strukturreiche Gebiete kodieren. Beispielsweise durch eine Kompression mittels Run-Length-Coding.

Die Zick-Zack-Umsortierung der DCT-Koeffizienten fällt zwar unter den Schutzbereich des US-Patentes 4,698,672 (und weiterer Anmeldungen und Patente in Europa und Japan), jedoch wurde 2002 Stand der Technik gefunden, der das beanspruchte Verfahren offenbart, sodass die Ansprüche kaum durchsetzbar sind (siehe [2]).

[Bearbeiten] 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.

[Bearbeiten] 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).
  • Farbraumumrechnung vom YCbCr-Farbraum 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 utopische Rechenleistungen).

[Bearbeiten] Inverse diskrete Kosinustransformation

Zur DCT existiert die inverse Transformation, die IDCT:

f_{xy} = {1 \over 4} \sum_{m=0}^7 \sum_{n=0}^7 C_m C_n F_{mn} \cos \left[ \frac{(2x + 1) m \pi}{16} \right] \cos \left[ \frac{(2y + 1) n \pi}{16} \right]

mit den gleichen Korrekturfaktoren Ck wie bei der DCT.

[Bearbeiten] Farbraumumrechung

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

\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' \\ Cb \\ Cr\end{bmatrix}

[Bearbeiten] Progressives JPEG

Ein JPEG-Bild besteht aus Koeffizienten. Diese speichern keine Pixel, sondern Annäherungen des gesamten Bildinhalts eines 8x8-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. Dieses ist sinnvoll, wenn das Laden eines Bildes länger als eine halbe bis ganze Sekunde dauert bzw. man nur ein Vorschaubild benötigt.

[Bearbeiten] Verlustfreie Verarbeitung von JPEG

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°
  • Bildspiegelungen
  • Beschneiden von Rändern um Vielfache von 16 Pixeln (bzw. 8 Pixel bei Schwarzweißbildern oder Farbildern ohne Unterabtastung)

Dazu ist die Entropiekodierung und die Zick-Zack-Umsortierung rückgängig zu machen. Die Operationen erfolgen dann auf Grundlage der DCT-Koeffizienten (umsortieren, weglassen nichtbenötigter Blöcke). Danach erfolgt wieder die Zick-Zack-Umsortierung und die Entropiekodierung. Wie man leicht sieht, erfolgen keine verlustbehafteten Arbeitsschritte mehr. Nicht jedes Programm führt diese Operationen verlustfrei durch, es muss dazu spezielle dateiformatspezifische Verarbeitungsmodule aufweisen. Bei den verbreiteten Bildbearbeitungsprogrammen ist das meist nicht der Fall, da diese in der Regel die Datei komplett dekodieren und dann mit diesen Daten arbeiten.

Einschränkungen:
Bilder, deren Auflösung nicht ein Vielfaches von 16 Pixeln (bzw. 8 Pixel bei Schwarzweißbildern oder Farbildern 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.

[Bearbeiten] Visuelle Qualität von JPEG-Bildern

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

Ungeeignet ist JPEG für

  • digitale Strichzeichnungen (z. B. Screenshots oder Vektorgraphiken), in denen es viele benachbarte Bildpunkte mit exakt identischen Farbwerten, wenige Farben und harte Kanten gibt.
  • Schwarzweißbilder (Rastergrafik (bitmap), nur Schwarz und Weiß, 1 Bit pro Bildpunkt).
  • gerasterte Bilder (Zeitungsdruck)

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.

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

Bilder unterschiedlicher JPEG-Qualitätsstufen, von links nach rechts: 90 %, 60 %, 20 %, Ausschnittsvergrößerung des vorangegangenen Bildes.
Bilder unterschiedlicher JPEG-Qualitätsstufen, von links nach rechts: 90 %, 60 %, 20 %, Ausschnittsvergrößerung des vorangegangenen Bildes.

Das Beispielbild vergleicht Aufnahmen, die mit unterschiedlicher Qualitätseinstellungen kodiert wurden. Die Portrait-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 Metainformationen). Die Klötzchenbildung der 8×8 Pixel großen Quadrate stellt das rechte Teilbild vergrößert dar.

Für den Profi-Bereich ist JPEG als Dateiformat wegen der verlustbehafteten Datenreduktion ungeeignet. Statt dessen werden Formate eingesetzt, die verlustfrei komprimieren, ungeachtet des großen Speicherbedarfs. Beispiele sind TIFF, BMP, TGA oder PNG (Vollfarbenmodus). Moderne Quellgeräte (Scanner, Digitale Kameras) erfassen mehr als 8 Bit pro Farbpixel. Bereits einfache Scanner arbeiten intern mit 12 Bit, erlauben aber nur die Speicherung von 8 Bit pro Farbpixel. Eine Profiaufnahme von 6 Megapixel erfordert bei einer Farbtiefe von 16 Bit pro Grundfarbe und 3 Grundfarben einen Speicherbedarf von 36 Mbyte, der sich bei strukturreichen Bildern durch Kompression unwesentlich verkleinern lässt.

Es ist möglich, die Komprimierung von JPEG-Dateien verlustfrei zu optimieren und somit die Dateigröße etwas zu verringern (siehe jpegoptim in den Weblinks).

[Bearbeiten] Dateiformat

Was (umgangssprachlich) als JPEG-Dateiformat bezeichnet wird, ist eigentlich das JFIF-Dateiformat ([3], PDF), was für JPEG File Interchange Format steht. Gegenüber der Original-JPEG-Definition weist es einige Einschränkungen auf: als Farbraum ist nur noch YCbCr und nicht mehr RGB zugelassen, Beschränkung auf Huffman-Kodierung. Hinzugekommen sind einige Mechanismen zur Synchronisation und Re-Synchronisation bei Übertragungsfehlern.

Als Dateiendung wird meistens .JPG (seltener .JPEG oder .JPE) oder .JFIF verwendet. Da einen Dekoder nur Daten zwischen einer Anfangsmarke und einer Endmarke interessieren, ist es auch möglich, EXIF, IPTC-NAA-Standard-Informationen und sogar ganze XML- oder andere Dateien nach dem Datacontainer-Verfahren in der JPEG-Datei unterzubringen. Die Erweiterungen sind aber nicht JFIF-konform.

Bilddateien, die im JPEG-Verfahren abgespeichert werden, bestehen aus einem Kopf (der leer sein kann) und den eigentlichen Daten, die durch einen SOI-Marker FF D8 eingeleitet werden. Auf diesen Marker folgt der JFIF-Tag: FF E0 00 10 4A 46 49 46 00 01. Die Sequenz 4A 46 49 46 ist die ASCII-Repräsentation von "JFIF". Gängige Bildprogramme können Dateien auch ohne JFIF-Tag verarbeiten.

Die JPEG-Dateien sind in Segmente (bei TIFF als Tag bezeichnet) unterteilt. Die Segmente sind generell in folgender Form aufgebaut: Ein FF xx s1 s2 leitet den Tag ein. FF ist ein hexadezimaler Wert und entspricht dezimal 255. Das xx bestimmt die Art des Tags. 256 * s1 + s2 gibt die Länge des Segmentes an. In den Segmenten können sich weitere Bilder verbergen, oft ein kleines Thumbnail-Bild für die schnelle Vorschau. Einzelne Segmente können mehrfach vorkommen.

FF xx Symbol Bezeichnung
FF D8 SOI Start Of Image
FF E0 APP0 JFIF tag
FF Cn SOFn Start of Frame Marker, legt Art der Kompression fest:
FF C0 SOF0 Baseline DCT
FF C1 SOF1 Extended sequential DCT
FF C2 SOF2 Progressive DCT
FF C3 SOF3 Lossless (sequential)
FF C5 SOF5 Differential sequential DCT
FF C6 SOF6 Differential progressive DCT
FF C7 SOF7 Differential lossless (sequential)
FF C8 JPG reserviert für JPEG extensions
FF C9 SOF9 Extended sequential DCT
FF CA SOF10 Progressive DCT
FF CB SOF11 Lossless (sequential)
FF CD SOF13 Differential sequential DCT
FF CE SOF4 Differential progressive DCT
FF CF SOF5 Differential lossless (sequential)
FF C4 DHT Definition der Huffman Tabellen
FF CC DAC Definition der arithmetischen Codierung
FF DB DQT Definition der Quantisierungstabellen
FF E1 APP1 EXIF Daten
FF EE APP14 Oft für Copyright Einträge
FF En APPn n=2..F allg. Zeiger
FF FE COM Kommentare
FF DA SOS Start of Scan
FF D9 EOI End of Image

Ein Beispiel für einen Copyright-Tag: FF EE 00 26 'File written by Adobe Photoshop. 4.0'

Ein Beispiel für einen Kommentar-Tag: FF FE s1 s2 '"I Shot The Sheriff" is a "Yesterday"'s song ;-). This photo shot is dated ...'

Aufbau einer JPEG(JFIF)-Datei:

SOI - Segment FF D8
APP0 - Segment FF E0 s1 s2 4A 46 49 46 v1 v2 ...
... weitere Segmente
SOS - Segment FF DA s1 s2 ....
Data Komprimierte Daten
EOI - Segment FF D9

Die Längenangaben der Segmente enthalten übrigens auch den Platz für die Längenangaben selbst: Ein leeres Segment hat daher die Länge 2, da dies der Länge der Komponenten s1 und s2 selbst entspricht.

Auf das Start-of-Scan-(SOS)-Segment (Marker FF DA) folgen direkt die komprimierten Daten, bis zum Start des nächsten Segments, das durch den nächsten Marker angezeigt wird. Sollte innerhalb der Daten ein FF auftreten, so wird dies mit einer folgenden 00 (Null) markiert. Andere Werte zeigen das Auftreten eines neuen Segments bzw. Markers an. Ausnahme: Folgt dem FF einer der Restart-Marker (D0 - D7) so setzen sich die Daten direkt dahinter weiter fort: FF DA ... daten ... FF D0 ... daten ...

[Bearbeiten] Standards

  • JPEG (verlustbehaftet und verlustfrei): ITU-T T.81 , ISO/IEC IS 10918-1
  • JPEG (Erweiterungen): ITU-T T.84
  • JPEG-LS (verlustfrei, verbessert): ITU-T T.87 , ISO/IEC IS 14495-1
  • JBIG (Schwarzweißbilder): ITU-T T.82 , ISO/IEC IS 11544-1
  • JPEG-2000 (Nachfolger von JPEG und JPEG-LS): ITU-T T.800, ISO/IEC IS 15444-1
  • JPEG-2000 (Erweiterungen): ITU-T T.801

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu