Bildkompression

Bildkompression beruht wie jede Anwendung der Datenkompression darauf, die ursprünglichen Daten entweder in eine vollständig rekonstruierbare Form zu überführen, die weniger Speicherplatz benötigt oder Daten zu entfernen, deren Verlust kaum wahrnehmbar ist. Es gibt sehr viele Formate für Bilddateien (Grafikformate), von denen aber viele veraltet sind und viele keine Kompression unterstützen, da sie Formate zum Austausch unter Grafikprogrammen sind.

Verlustfreie Kompression

Bei der verlustfreien Kompression geht keine Information verloren. Die Daten werden anders als vorher dargestellt, indem bestimmte Redundanzen erkannt und entfernt werden. Zum Beispiel können sich wiederholende Bitfolgen einmal in einem Wörterbuch abgelegt und dann nur noch durch ihre Nummer repräsentiert werden. Bekannte Verfahren sind die Lauflängenkodierung, LZW oder die Huffman-Kodierung. Es können beliebige allgemeine Kompressionsverfahren verwendet werden, die sich auch auf andere Arten von Daten wie Text anwenden lassen.

Eine Textdatei oder ein Computerprogramm kann ohne Fehler komprimiert werden, jedoch nur bis zu einem gewissen Grad. Dies wird als verlustfreie Kompression bezeichnet. Bei stärkerer Datenkompression gehen Informationen verloren. In Textdateien und Programmdateien ist es entscheidend, dass die Kompression verlustfrei ist, da ein einzelner Fehler die Bedeutung einer Textdatei ernsthaft beschädigen oder dazu führen kann, dass ein Programm nicht ausgeführt wird. Bei der Bildkompression ist ein kleiner Qualitätsverlust normalerweise nicht erkennbar. Es gibt keinen kritischen Punkt, bis zu dem die Kompression einwandfrei funktioniert, aber darüber hinaus wird sie unmöglich. Wenn eine gewisse Verlusttoleranz besteht, kann der Kompressionsfaktor größer sein als wenn keine Verlusttoleranz vorliegt. Aus diesem Grund können Grafiken stärker komprimiert werden als Textdateien oder Programme.[1]

Zu den verlustfreien Bildtypen gehören:

  • Portable Network Graphics (PNG) komprimiert Bilder, um ihre geringe Größe zu erhalten, indem nach Mustern auf einem Foto gesucht und diese zusammen komprimiert werden. Die Kompression ist umkehrbar. Sobald eine PNG-Datei geöffnet wird, wird das Bild genau wiederhergestellt. Das Grafikformat PNG verwendet als Komprimierungsmethode Deflate, eine Kombination aus LZ77 und Huffman-Kodierung. Die gute Komprimierung von PNG erklärt sich durch die zusätzliche Anwendung von prädiktiver Kodierung (bei PNG auch „Vorfilter“ genannt). Dabei werden aus Erfahrungswerten die nächsten Farbwerte vorhergesagt und nur die Abweichungen der Vorhersage von den wirklichen Bildinformationen gespeichert.[2]
  • Das Grafikformat GIF verwendet dagegen zur Kompression nur den Lempel-Ziv-Welch-Algorithmus und erreicht deshalb meistens keine so gute Kompression wie PNG. Außerdem kann es nur maximal 256 Farben pro Einzelbild anzeigen, dafür jedoch auch Animationen. Bei GIF sind die Farbinformationen in einer Farbtabelle abgelegt. Diese kann bis zu 256 verschiedene Einträge enthalten, die frei aus 2563 ≈ 16,7 Millionen möglichen Farbwerten auswählbar sind. Für einfache Zeichnungen, Schwarz-Weiß-Fotografien sind 256 Farben oder Graustufen in der Regel auch heute noch ausreichend. Komplexere Bilder wie Farbfotos oder Zeichnungen mit umfangreichen Farbverläufen müssen demzufolge vor der Speicherung auf 256 Farben oder weniger reduziert werden (Farbquantisierung). Die so entstandenen Farbstufen oder Dithering-Effekte sind besonders bei großen Bildern störend sichtbar.[3]
  • Windows Bitmap (BMP) ist ein Format, das ausschließlich Microsoft zur Verfügung steht. Es ist verlustfrei, wird aber nicht häufig verwendet. Windows-Bitmaps erlauben Farbtiefen von 1, 4, 8, 16, 24 oder 32 bpp (Bits pro Pixel), wobei bei 16 und 32 bpp nicht alle Bits tatsächlich genutzt werden müssen.
  • RAW – In vielen digitalen Spiegelreflexkameras enthalten und speichert alle vom Kamerasensor empfangenen Lichtdaten. Diese Dateitypen sind in der Regel recht groß. Darüber hinaus gibt es verschiedene Versionen von RAW, und man benötigt möglicherweise bestimmte Software, um die Bilddateien zu bearbeiten.

Ein guter Kompressionsfaktor lässt sich mit diesen Verfahren aber nur erzielen, wenn die Bilder günstig für diese Kompressionsalgorithmen sind. Das bedeutet, sie sollten möglichst große Flächen mit jeweils gleicher Farbe oder exakt gleichem Muster, bei PNG eventuell auch mit Farbverläufen, besitzen.

Auch Lossless JPEG, JPEG 2000 und WebP erlauben verlustfreie Komprimierung, letztere sogar von komplexeren Bildern mit noch recht guter Kompressionsrate.

Durch das Zurückkonvertieren eines Bilds von einem verlustbehafteten Grafikformat in ein verlustfreies Grafikformat können die ursprünglichen Bilddaten nicht wiederhergestellt werden.[4]

Verlustbehaftete Kompression

Bei der verlustbehafteten Kompression wird versucht, den Informationsverlust unmerklich oder wenigstens ästhetisch erträglich zu halten. Diese Methoden nutzen aus, dass kleine Farbänderungen für das Auge nicht sichtbar sind. Ähnlich wie bei der verlustbehafteten Audiokomprimierung basiert die Bildkomprimierung auf einem Modell der menschlichen Wahrnehmung. Der Komprimierungsalgorithmus soll bevorzugt die Bildinformationen entfernen, die über die Aufnahmefähigkeit der menschlichen Bildwahrnehmung hinausgehen. Das Wahrnehmungsmodell ist jedoch, im Gegensatz zur Audiokompression, nicht explizit formuliert und in die Algorithmen eingearbeitet, sondern mehr intuitiv.

JPEG und JPEG 2000

JPEG-Kompression mit zunehmender Quantisierung

Bei den JPEG-Verfahren wird das Bild mit Hilfe eines Systems von Basisfunktionen transformiert. Bei JPEG ist das die Diskrete Kosinustransformation, bei JPEG 2000 die Wavelet-Transformation. Auf diese Weise erhält man eine andere, äquivalente Repräsentation des Bildes, die aus den Koeffizienten zu diesen Basisfunktionen besteht. Bei JPEG sind das die Amplituden der so genannten Ortsfrequenzen, bei JPEG 2000 eine Art von Mittelwerten über 4, 16, 64, … Pixel. Diese Koeffizienten werden durch die Quantisierung geändert. Kleine Koeffizienten verschwinden ganz und die größeren werden auf den nächstbesten Wert gesetzt. So lassen sie sich mit weniger Bits darstellen. Schließlich wird noch eine verlustlose Datenkompression durchgeführt.

Das neuere JPEG 2000 konnte sich allerdings bisher nicht durchsetzen, da die nötigen Algorithmen für Digitalkameras und andere tragbare Geräte zu rechenaufwändig sind und rechtliche Unklarheiten bezüglich der Lizenzierung (Softwarepatente) bestehen.

Die größten visuellen Probleme (Kompressionsartefakte) bei übermäßiger JPEG-Kompression bereitet die Bildung sogenannter Blockartefakte, welche bei der Aufteilung des Bildes in kleine Blöcke entstehen, sowie Ringing, eine Konsequenz des ungünstigen Verhaltens der diskreten Kosinustransformation bei harten Farbübergängen.

Fraktale Bildkompression

Eine weitere verlustbehaftete Methode, die sich aber bei Grafikformaten nicht in breitem Maße durchsetzen konnte, ist die fraktale Bildkompression. Sie basiert auf der Erkenntnis der Chaostheorie, dass fast jedes Bild Selbstähnlichkeit aufweist. Hierbei werden zu Gruppen von Bildpunkten einer gewissen Größenordnung (z. B. 8×8 Punkte) ähnliche Gruppen der nächstkleineren Größenordnung (4×4 Punkte) im selben Bild gesucht. Gespeichert werden dann statt der tatsächlichen Gruppen nur die Position der ähnlichen Referenzgruppen, welche weniger Bilddaten aufweisen. Dieses Verfahren entspricht im Wesentlichen einem Codebook-Verfahren, mit dem Unterschied, dass das Codebook nicht separat gespeichert werden muss, sondern im selben Bild vorhanden ist. Da die Suche nach ähnlichen Gruppen gegebenenfalls recht aufwändig sein kann, werden hierbei neuronale Netze eingesetzt. Die Dekodierung ist jedoch nicht aufwändiger als bei herkömmlichen Verfahren.

Kompressionsverfahren im Vergleich

Die verbreiteten Formate weisen Vor- und Nachteile auf und eignen sich daher für den jeweiligen Zweck mehr oder weniger gut. Computergrafiken, die harte Kanten enthalten – etwa einfache Grafiken oder Screenshots – können durch verlustfreie Verfahren meist besser komprimiert werden, wie folgender Vergleich zeigt:

Es ist deutlich zu sehen, dass JPEG trotz der großen Dateigröße sichtbare Artefakte bildet. PNG komprimiert hier wesentlich besser als GIF und gibt das Bild dennoch originalgetreu wieder.

Bei Fotografien und ähnlichen nichtgrafischen Bildern ist JPEG unter den verbreiteten Formaten die erste Wahl, wenn Speicherplatz eine Rolle spielt. Verlustfreie Formate wie PNG eignen sich in der Regel nicht für Fotografien, da sie erheblich größere Dateien produzieren. Bei GIF kommt noch die Beschränkung auf 256 Farben je Einzelbild hinzu.

Im professionellen Bereich (z. B. in der Druckvorstufe) finden meist verlustfreie Formate oder Vektorgrafiken Verwendung, da dort die Möglichkeit der mehrmaligen Bearbeitung wichtiger als der Speicherverbrauch ist; außerdem ist die Bildqualität besser als bei JPEG. Hier wird in der Regel TIFF verwendet, weil es auch das in Druckereien benutzte CMYK-Farbmodell unterstützt. Verlustfreie Rohdatenformate bieten außerdem die größten Möglichkeiten und beste Qualität für Fotografien. Es gibt aber auch „Mischformate“ wie JPEG 2000, bei denen verlustfreie und verlustbehaftete Komprimierung kombiniert werden können.

Die wichtigsten und am besten unterstützten Grafikformate für Animationen sind GIF, Flash, Shockwave und SVG.

Siehe auch

Literatur

  • Tilo Strutz: Bilddatenkompression. 5. Auflage. Springer Vieweg, Wiesbaden 2017, ISBN 978-3-8348-1427-2.

Weblinks

Einzelnachweise

  1. TechTarget: image compression
  2. TechTerms: PNG Definition
  3. TechTerms: GIF Definition
  4. KeyCDN: What Is Image Compression?

Auf dieser Seite verwendete Medien

Gibbs-Beispiel-1.png
Datenkompression, Beispiel: PNG-Format (1007 Bytes) oder lossless WEBP-Format (908 Bytes)
Gibbs-Beispiel-2.jpg
Autor/Urheber:

Phrood

, Lizenz: PD-Schöpfungshöhe

Gibbs-Beispiel-2

JPEG-Kompressions-Demo.png
(c) ​Wikipedia Benutzer Benutzer:Phrood, CC-BY-SA-3.0

JPEG-Compression, created with PSP by User:Nyks, Quality. From left to right:
Level 01: 11.917 byte
Level 25: 8.859 byte
Level 50: 8.119 byte
Level 75: 7.906 byte
Level 99: 7.750 byte

Compressionslevels from PaintShopPro.