Bildkompression
Bildkompression ist die Reduzierung des Speicherbedarfs eines digitalen Bilds. Wie bei jeder Anwendung der Datenkompression geht es darum, die ursprünglichen Daten entweder in eine vollständig rekonstruierbare Form zu überführen 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.
- JPEG XL – Dieses neue Bildformat bietet sowohl die verlustfreie als auch die verlustbehaftete Kompression an. Bei einer Studie 2021 erzielte JPEG XL für die Bitrate bei verlustloser Kompression deutlich bessere Werte als die meisten anderen Verfahren.[4]
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, JPEG XR, HEIF, AVIF und WebP erlauben verlustfreie Komprimierung, letzteres erzielte in oben genannter Studie ebenfalls eine gute Kompressionsrate.
Durch das Zurückkonvertieren eines Bilds von einem verlustbehafteten Grafikformat in ein verlustfreies Grafikformat können die ursprünglichen Bilddaten nicht wiederhergestellt werden.[5]
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 Nachfolger
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. Ein ähnliches Schicksal ereilte auch das nächste Verfahren JPEG XR. Bei JPEG XL setzte man dann konsequent auf eine quelloffene Entwicklung und Anpassungsmöglichkeiten für den Berechnungsaufwand beim Encoding.[6][7]
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. Bei JPEG XL sollen zwei Filter für die Reduzierung von Blockartefakten sorgen.[8][9][10]
Weitere Formate
Weitere wichtige Formate mit verlustbehafteter Kompression sind HEIF, AVIF und WebP. Diese verwenden jeweils für Videocodecs entwickelte Methoden erneut für die Kodierung von Standbildern, wodurch ihre Entwicklung besonders effizient wurde.
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:
- PNG: 1007 Byte
- GIF: 1847 Byte
- JPEG: 4273 Byte
- WebP lossless: 908 Byte
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. Die Kompression lässt sich unter Verwendung von JPEG XL mit verlustloser Kompression noch steigern:
Eine fast artefaktfreie Darstellung mit verlustbehafteter Kompression lässt sich aber auch mit dem neuen Format AVIF und mittleren Qualitätseinstellungen erzielen:
Bei Fotografien und ähnlichen nichtgrafischen Bildern ist bisher JPEG unter den verbreiteten Formaten die erste Wahl, wenn der Speicherbedarf eine Rolle spielt. Neuere Geräte wie Smartphones setzen inzwischen teilweise auf HEIF. 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.
Für Animationen wurde bisher gerne die Formate GIF und SVG verwendet, aber die meisten neueren Verfahren (wie WebP, JPEG XL und AVIF) unterstützen ebenfalls Animationen.
Beim Vergleich von Kompressionsverfahren muss ferner der Berechnungsaufwand für die Kompression betrachtet werden. Durch immer hochaufösendere Bildsensoren steigt auch die Anzahl der für die Kompression benötigten Rechenoperationen. Dieses ist von Bedeutung, weil auch ein Energieaufwand hierdurch entsteht, eventuell auf einem mobilen Gerät zu Lasten eines Akkus. Aber auch auf stationären Geräten wie Internetservern kann der Kompressionsvorgang zu einer unbequemen Wartezeit für den Benutzer führen oder durch intensive Auslastung mehrerer CPU-Kerne andere Aktivitäten auf demselben Gerät verzögern. Die meisten neueren Verfahren (wie WebP, JPEG XL und AVIF) bieten daher Möglichkeiten an, durch Inkaufnahme einer niedrigeren Kompressionsrate den Berechnungsaufwand erheblich zu reduzieren.
Siehe auch
Literatur
- Tilo Strutz: Bilddatenkompression. 5. Auflage. Springer Vieweg, Wiesbaden 2017, ISBN 978-3-8348-1427-2.
Weblinks
- Compression FAQ – Häufig gestellte Fragen zur Datenkompression
- Übersichtsartikel zur verlustlosen Bildkompression (PDF; 1,24 MB)
Einzelnachweise
- ↑ TechTarget: image compression
- ↑ TechTerms: PNG Definition
- ↑ TechTerms: GIF Definition
- ↑ Comparison of Lossless Image Formats: Comparison of Lossless Image Formats. Centre of Excellence IT4Innovations Faculty of Information Technology Brno University of Technology, 25. Juni 2021, abgerufen am 6. August 2024.
- ↑ KeyCDN: What Is Image Compression?
- ↑ libjxl/LICENSE at main · libjxl/libjxl. Abgerufen am 21. September 2024 (englisch).
- ↑ libjxl/doc/encode_effort.md at main · libjxl/libjxl. Abgerufen am 21. September 2024 (englisch).
- ↑ libjxl/doc/xl_overview.md at main · libjxl/libjxl. Abgerufen am 25. September 2024 (englisch).
- ↑ jonsneyers: Updated white paper on JPEG XL. In: r/jpegxl. 28. Januar 2021, abgerufen am 3. Oktober 2024.
- ↑ Jyrki Alakuijala – Google, Switzerland Jon Sneyers – Cloudinary, Belgium Luca Versari – Google, Switzerland Jan Wassenberg – Google, Switzerland: JPEG White Paper: JPEG XL Image Coding System. Hrsg.: ISO/IEC JTC 1/SC 29/WG1.
Auf dieser Seite verwendete Medien
Datenkompression, Beispiel: PNG-Format (1007 Bytes) oder lossless WEBP-Format (908 Bytes)
Autor/Urheber: Mshobohm, Lizenz: CC BY-SA 4.0
Aus der angegebenen PNG Datei mit 1007 Byte in verlustbehaftetes AVIF konvertiert: avifenc.exe -q 38 -s 0 -o re_38_0.avif e.png und zurück in PNG umgewandelt, da AVIF hier nicht unterstützt wird.
Autor/Urheber: Mshobohm, Lizenz: CC BY-SA 4.0
Diese Datei wurde mit JPEG XL aus der PNG-Datei mit 1007 Bytes erzeugt (cjxl.exe --allow_expert_options -e 11 e.png jxl_lossless.jxl -q 100) und aus Gründen der Darstellung zurückkonvertiert in 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