JPEG oder J-Pack?

In diesem Sachbeitrag geht es um die JPEG-Komprimierung.

Jedes digitale Bild wird früher oder später komprimiert. Hauptsächlich, um die Bilddateien platzsparender zu machen. Dafür gibt es verschiedene Dateiformate, jeder mit seinen eigenen Vor- und Nachteilen.
Eines der beliebtesten und verbreitetsten Formate ist das JPEG Format.
Der Name JPEG steht für „Joint Photographic Experts Group", was der Name des Gremiums ist, das die JPEG-Norm entwickelt hat. Die üblichsten Dateiendungen sind .jpg oder .jpeg.

Der JPEG-Kompressions-Algorithmus führt insgesamt 5 Schritte aus.
1. Farbmodell Umrechnung
2. Blockbildung und Tiefpassfilterung
3. Diskrete Kosinustransformation
4. Quantisierung
5. Umsortierung und Entropiekodierung

1. Farbmodell Umrechnung
Als Erstes werden die Farbwerte, die meistens in RGB vorliegen, ins YCbCr-Farbmodell umgerechnet. Das RGB Modell hat 3 Werte, die den Farbanteil von Rot, Grün und Blau angeben. Das YCbCr Modell dagegen hat für Y einen Wert für die Helligkeit. Cb bestimmt den Blau-Wert-Differenz relativ zum Grün und Cr den Rot-Wert-Differenz relativ zum Rot.

2. Blockbildung und Tiefpassfilterung
Als Nächstes werden jeweils 8 × 8 Pixel in einem Block zusammengefasst, sodass ein Block insgesamt 64 Pixel hat.
Danach werden Mittelwerte für Cb und Cr berechnet. Dabei gehen zwar viele Informationen verloren, aber die meisten Details sind für das menschliche Auge ohnehin nur schwer sichtbar oder nicht relevant. Die Dateigröße schrumpft bei diesem Schritt schon um den Faktor 4.

3. Diskrete Kosinustransformation
Nachdem all das geschehen ist, sind wir bereit für die Diskrete Kosinustransformation, kurz DCT. Zugegeben ist das ein mathematisch sehr aufwändiger Schritt, der unter der Haube die FFT (Fast Fourier Transformation) verwendet. Mathe Interessierte können sich den Algorithmus genau auf Wikipedia ansehen. Hier reicht es zu wissen, dass bei der DCT die ganze Magie geschieht. Dieser Algorithmus hat auch eine inverse Version, die IDCT, was bedeutet, dass sie, anders als die Tiefpassfilterung, keine Informationen verliert und folglich verlustfrei ist.

4. Quantisierung
Jetzt wo wir die DCT-Koeffizienten errechnet haben, können wir sie elementweise mit der Quantisierungsmatrix teilen und auf die nächste ganze Zahl runden. Bei diesem Schritt gehen die meisten Daten verloren und die eigentliche Kompression findet hier statt. Das bedeutet auch, dass die Quantisierungsmatrix darüber entscheidet, wie viele Daten wegfallen und somit über die Qualität des Endbildes.

5. Umsortierung und Entropiekodierung
Bei der Umsortierung werden die DCT-Koeffizienten anhand ihrer Frequenz sortiert, was eine zickzackförmige Reihenfolge ergibt. Anschließend wird die Entropiekodierung durchgeführt. Dazu verwendet man vorwiegend die Huffman-Kodierung. Es werden die Frequenzen der Pixel mit dem dazugehörigen Pixel gespeichert, anstelle jeder Pixel einzeln.
Soll heißen, dass ein Bild mit überwiegend den gleichen Farben entsprechend kleiner wird.

Dieser Artikel soll nur einen groben Überblick darüber geben, wie die JPEG Kompression funktioniert. Für genauere Informationen, insbesondere wissenschaftlicher Art, gibt es einen detaillierten Artikel auf Wikipedia.



Photo by Sara Budhwani on Unsplash

By accepting you will be accessing a service provided by a third-party external to https://www.nrml.de/