Was ist PNG?

Werbung
Proseminararbeit Angewandte Mathematik für LAK
Bildkompression
JPEG
GIF
PNG
Datum: 20.2.2003
Name:
Mat.Nr.:
Studienkennzahl:
Machovec Robert
0105134
A190 406 412
Wallner Mario
9873157
A190 406 423
Zetter Hannes
0104683
A190 406 299
1
Einleitung
Um Bilder computerunterstützt darzustellen und zu speichern sind digitale Formate notwendig. Diese
müssen das Bild rechnerisch erfassen können und alle wichtigen Informationen in bezug auf Farbe,
Größe, Helligkeit... speichern können.
Ein Bildformat ist daher eine Ansammlung von Daten die ein Bild beschreiben.
Wie diese Daten Ansammlungen beschaffen sind hängt von der Art des jeweiligen Verfahrens ab. In
dieser Arbeit werden die drei wichtigen Formate JPEG, GIF und PNG behandelt. Die Digitalisierung, also
der Prozeß, bei dem aus einem Bild für einen Computer lesbare Daten gemacht werden, erfolgt bei der
Bildaufnahme durch einen Scanner oder eine Digitalkamera, wobei natürlich die Art und Technik der
Bildaufnahme für die Qualität der Daten, die am Ende herauskommen, entscheidend ist.
Vektorbilder
Bei diesen werden Linien, Flächen und Polygonzüge gespeichert, die mathematisch durch Vektoren
beschrieben werden können.
Vor- und Nachteile: Vektorformate sind beliebig skalierbar, da das Bild, egal in welcher Größe, stets auf
der Grundlage der vektoriellen Daten berechnet wird. Bilder, die in einem solchen Format vorliegen,
zeigen in der Regel mathematisch konstruierbare Objekte, Comics und Illustrationen, da diese durch
Linien beschrieben werden können. Für komplexe Bilder (z.B. Fotos) eignet sich diese Speichermethode
nicht, da sich derartige Bildinhalte nicht mathematisch konstruieren lassen.
.
2
Pixelbilder
Bei dieser Methode der Datenspeicherung wird das kontinuierliche Bild räumlich diskretiert, d.h. es wird in
kleine Punkte zerteilt, deren Farbe jeweils einzeln angegeben wird. Diese Punkte sind die kleinsten
Einheiten eines Bildes. Sie sind quadratisch und werden Pixel (picture elements) genannt.
Man stelle sich ein digitales Bild I als eine Matrix vor, die m Zeilen und n Spalten hat, also m*n Pixel hat.
Die Elemente lm,n des Bildes I sind Pixel, die den Grauwert oder die Farbe des Bildpunktes an der Stelle
(m,n) wiedergeben.
Man erhält daher sogenannte Bildmatrizen die ein Bild punktweise beschreiben wobei die Zahlenwerte
von lm,n in unterschiedlichen Bildformaten gespeichert werden.
Bei hoher Vergrößerung ist im Gegensatz zum Vektorbild die Auflösung kleiner als zuvor.
Das vorliegende Bild wird daher räumlich diskretisiert (d.h. in Bildpunkte zerlegt). Dieser Schritt wird oft
auch als Rasterung bezeichnet. In Abhängigkeit der Größe eines einzelnen Bildpunktes stellt sich dabei
eine gewisse Auflösung ein. (Hohe Auflösung  mehr Daten)
Gleiches Bild in verschiedenen Auflösungen dargestellt:
dpi...Dots per inch (gibt den Grad der Auflösung an)
3
Bei der Digitalisierung muß ein Bild jedoch neben der räumlichen digitalisierung auch „farblich“
diskretisiert werden. Wird der Farbwert (oder Grauwert, wenn es sich nicht um eine Farbaufnahme
handelt) diskretiert, spricht man von der Quantisierung. Mit diesem einfachen Modell - Rasterung und
Quantisierung - ist ein Bild hinreichend beschrieben.
Ein konkretes Beispiel zeigt den Zusammenhang zwischen Rasterung und Quantisierung; bei konstanter
Speicherkapazität von 1 Kilobyte können zwei Bilder mit folgenden Eigenschaften gespeichert werden:
a) 64x64 Pixel mit 4 Graustufen = 4096x2 Bit = 1 kByte
b) 32x32 Pixel mit 256 Graustufen = 1024x8 Bit = 1 kByte
Rasterung und Quantisierung bestimmen daher die Datenmenge eines Bildes. Das Zusammenspiel von
Auflösung und Anzahl der Graustufen, also über Rasterung und Quantisierung, veranschaulichen
folgende Grafiken:
Wie Rasterung und Quantisierung die Bildqualität beeinflussen: a) Originalzeichen, b) grob binär digitalisiert (=2
Farben, geringe Auflösung 10dpi), c) fein binär digitalisiert (=2 Farben, mittlere Auflösung 30dpi), d) grobe
Rasterung, feine Quantisierung (=8 Farben, niedrige Auflösung 10 dpi)
4
Grundlagen der Datenspeicherung
Nun da wir wissen, das digitalisierte Bilder als zweidimensionale Funktionen verstanden werden können,
die räumlich und farblich diskretiert sind, also jeder Pixel der Bildmatrix durch einen Wert beschrieben
wird, betrachten wir, welche Eigenschaften dieser Wert (lassen wir den Begriff vorerst ganz allgemein)
annehmen kann, was er aussagt und wie sich verschiedene Werte auf die Speicherung des Bildes
auswirken.
Wie bereits gesagt, gibt der Wert, den ein Bildpunkt annehmen kann, die Farbe oder den Grauwert an.
Dies wollen wir nun präzisieren: Liegt ein Bild in Graustufen vor (normaler Weise verfügen "normale"
Bilder über 256 verschiedene Grautöne), ist der Pixelwert eine skalare Größe und gibt die Helligkeit an
(0=schwarz, 255=weiß). Mathematisch ist ein herkömmliches Graustufenbild also folgendermaßen
definiert:
Helligkeit
Ein wichtiges Merkmal eines Bildes ist sicherlich seine Helligkeit. Dieser Parameter sticht dem Betrachter
sofort ins Auge. Hier ist es zweckmäßig, zur Beurteilung der Helligkeit, den mittleren Grauwert zu
bestimmen, also den durchschnittlichen Grauwertwert, den alle Pixel des Bildes haben. Wie schon aus
der Statistik der Mittelstufe bekannt, summiert man dazu alle Grauwerte und teilt sie durch die Anzahl der
Summanden.
Grauwert-Histogramm
Das Grauwert-Histogramm gibt Aufschluß darüber, wie viele Pixel den selben Grauwert innerhalb eines
Bildes haben. Diese Art der Darstellung gibt daher keinerlei Information über den Aufbau eines Bildes.
Zwei völlig unterschiedliche Motive können ein identisches Grauwert-Histogramm ergeben.
Anzahl Bildpunkte
3000
2000
1000
0
100
Histogramm eines Grauwertbildes
200
5
Grauwert
Ein Histogramm gibt daher für jeden Grauwert g aus der Menge aller Grauwerte G eines Bildes I seine
absolute oder relative Häufigkeit pI(g) im Bild I an.
Wie für alle relativen Häufigkeiten bei Verteilungen gilt also:
Entropie
Maß für den durchschnittlichen Informationsgehalt eines Bildes. Die Entropie H gibt die minimale Anzahl
von Bits an, die man benötigt, um ein Pixel im Bild I zu speichern, und ist somit auch eine Anzeige, ob
man mit Kompressionstechnik den Speicherplatz eines Bildes verringern kann.
Datenstruktur
Nun stellt sich die Frage wie die mathematische Beschreibung der Bildinformationen auf Speichermedien
organisiert werden können.
Die dabei gängigste Variante ist die Lauflängen-Codierung. Hierbei werden gleichartige
aufeinanderfolgende Pixel zusammengefaßt. Diese Methode ist besonders bei schwarz/weiß Bildern
(Binärbildern) von Vorteil.
Zum Beispiel kann eine Folge von 0 und 1 wie folgt zusammengefaßt werden.
000111100000111111000000011111111

(3,0),(4,1),(5,0),(7,0),(8,1)
Da 0 und 1 in dieser Darstellung alternierend auftreten kann weiters vereinfacht werden:
345678
Die in weiterer Folge beschriebenen Codierungen sind Varianten von Lauflängencodierungen.
Die verschiedenen Kompressionsarten lassen sich in zwei Gruppen teilen:

verlustfreie Kompression (lossless compression): Es findet keine Reduktion der Bilddaten statt.
Jedes Bildelement bleibt erhalten.

verlustbehaftete Kompression (lossy compression): Ausgangsbild kann nach Kompression nicht
1:1 wiederhergestellt werden. Es gehen Bilddaten verloren.
6
Unterschiede der Kompressionsverfahren GIF, JPEG und PNG
Bei GIF, JPEG und PNG-Dateien handelt es sich um komprimierte Pixel-Formate, die speziell für den
Datenaustausch zwischen verschiedenen Rechner-Plattformen entwickelt worden sind.
GIF

CompuServe Graphics Interchange Format

Beim Wandeln einer Grafik in das GIF-Format wird eine Farbtabelle mit max. 256 Farben
angelegt; die Farben resultieren aus den am häufigsten vorkommenden Farbtönen der Grafik.
Das Ergebnis ist vor allem dann sehr gut, wenn im Original nicht allzu viele Farben vorkommen,
was insbesondere bei Grafiken der Fall ist, die mit einem der gängigen Grafik-Programme erstellt
wurden.

2 Varianten: GIF 87a und GIF89a (mit Transparenz); ebenfalls möglich: Animated GIF, Interlaced
GIF (stufenweiser Aufbau des Bildes)

GIF-Dateien eignen sich vor allem für Computer-Grafiken mit scharfen Kanten und großen,
einfarbigen Flächen.
JPEG

Joint Photographics Experts Group

kann maximal 16,7 Mio. Farben darstellen: True Color, 24 Bit

Dateigröße und Bildqualität sind abhängig vom Kompressionsfaktor, den man beim Speichern
angeben kann:
100: höchste Qualitätsstufe, keine Kompression, große Datei
0: niedrigste Qualitätsstufe, höchste Kompression, kleine Datei

JPEG-Dateien eignen sich vor allem für gescannte Fotos und Bilder mit detailgetreuen
Farbverläufen.
PNG (gesprochen: "ping")

Portable Network Graphics

komprimiert verlustfrei wie das GIF-Format

lizenzfrei (= Alternative zu GIF)

unterstützt 16.7 Mio. Farben wie das JPEG-Format

unterstützt abgestufte Transparenz

unterstützt verbessertes Interlacing

Animations-Sequenzen nicht möglich

ist definiert in HTML 4.0

wird von Browsern der 3. Generation nicht unterstützt
7
Beispiele:
Originalbild in JPEG
JPEG 90%
Größe: 12 KB
GIF
Standardpalette: 256 Farben, benutzt sind 117
Größe: 16 KB
8
Komprimiertes JPEG
JPEG 33%
Größe: 3 KB
JPEG 90%
Größe: 7 KB
GIF (256 Farben)
Größe: 16 KB
PNG (256 Farben)
Größe: 10 KB
9
PNG (True Color)
Größe: 26 KB
JPEG 33%
Größe: 5 KB
GIF (4 Farben)
Größe: 0,980 KB
PNG (4 Farben)
Größe: 0,318 KB
10
GIF, JPEG oder PNG?
Die richtige Auswahl des Grafik-Formats entscheidet maßgeblich über Qualität und Ladezeit.
GIF
GIF besteht aus maximal 256 Farben und eignet sich in erster Linie für Bilder, die nur geringe Farbtiefen
aufweisen. Eine GIF-Datei kann durch Farbreduzierung noch verkleinert werden.
GIF-Grafik 5kb
JPEG-Grafik 15kb
Wegen der eingeschränkten Farbenzahl eignet sich das Format nicht für Fotos. In einem direkten
Vergleich sieht man den Unterschied zwischen einem Foto im JPEG und GIF-Format.
Im GIF-Format sind deutlich Farbverluste erkennbar.
Dateigröße:11kb
Das gleiche Foto im JPEG-Format von der Qualität und der Dateigröße, die nur 6kb beträgt.
11
Das animierte GIFUm im Internet sich bewegende Pfeile darzustellen wird die GIF-Grafiken aus
mehreren Einzel-Grafiken zusammensetzt, hintereinander gelegt und nach einer vorgegebenen Zeit
gegeneinander ausgewechselt.
Das JPEG-Format
Das JPEG, auch JPEG (Joint Photographic Experts Group), kann bis zu 16,7 Millionen Farben darstellen.
Anders als beim GIF, wird beim JPEG durch Datenreduktion die Dateigröße verringert. Es wird nur bei
Bildern verwendet, die mehr als 256 Farben enthalten. Farbreduzierung wie beim GIF ist hier aber nicht
möglich.
PNG
Bei PNG (Portable Network Graphics) handelt es sich um ein schon altes, aber neu ins Spiel gebrachtes
Grafikformat. Es vereint die Vorzüge vom GIF und JPEG. PNG- Grafiken können mit bis zu 48-Bit-Farben
abgespeichert und trotzdem verlustfrei komprimiert werden, und das mit einer Qualität von 16 Millionen
Farben + 256 Transparenzstufen (GIF gibt nur bis zu 8 Bit wieder).
Das GIF Format konnte es bei der Komprimierung ohne nennenswerte Qualitätsverluste auf 2,8kb
bringen.
Das JPEG schneidet am schlechtesten ab. Mit einer Dateigröße von 5,3 kb und einem sichtbaren
Qualitätsverlust verliert das JPEG das Rennen.
Die PNG-Grafik ist mit dem Ergebnis des GIFs vergleichbar (Dateigröße 2,4). Fast die gleiche Dateigröße
und ein zufriedenstellendes Ergebnis. Obige Beispiele zeigen, dass PNG dem GIF nahe kommt. Würde
man das Beispiel mit einem Foto wiederholen, würde das GIF verlieren und das PNG mit dem JPEG
gleichziehen.
12
Was ist PNG?
PNG, das "ping" ausgesprochen wird, steht für Portable Network Graphics. Es ist ein
Bildkompressionsformat für das Internet, das farb- und formtreu ist. Diesem neuen Grafikformat soll die
Zukunft gehören. Es soll das GIF Format ersetzen, das bisher als Standardformat für verlustfreie
Bildspeicherung galt.
PNG-Bilder vereinen die Vorteile von GIF- und JPEG-Bildern, wie Transparenz, Kompression und
Interlace, mit der Fähigkeit unzählig viele Farben zu verwenden und eine hohe verlustfreie
Komprimierung durchzuführen. Patentiert wurde das PNG-Verfahren schon 1985 in den USA. Es führte
aber lange Zeit ein unverdientes Schattendasein. Das lag vor allem daran, dass das GIF-Format sich
durchsetzen konnte.
PNG soll der universale Ersatz für das GIF-Format im Internet sein. Es bietet eine höhere Farbauflösung
(281.474.976.710.656 Farben plus Transparenz) und besitzt so viele mögliche Erweiterungen, dass es
auch für andere Bereiche der Grafik interessant sein könnte. So können PNG-Bilder auf jedem Rechner
dargestellt werden, verschiedene Kompressionsverfahren sind möglich, auch Informationen über den
Autor des Bildes, verwendete Software und rechtliche Hinweise können dem Bild hinzugefügt werden.
Technische Beschreibung
Das png-Format wurde zur Ablöse des GIF entwickelt, reicht aber dennoch nicht an die
Komprimierungsergebnisse des GIF-Formates heran. Die Optimierung über die verschiedenen Filter ist
etwas diffizil; es arbeitet plattformübergreifend – d.h. es enthält Informationen über das Computersystem,
über das es angezeigt werden soll.
PNG unterstützt mehrere Farbtiefen: 1 bis 8 Bit, 24 Bit (Echtfarben – 16,7 Mill.) und 32 Bit; Eine
verlustfreie Komprimierung über Filter ist somit einstellbar.
Verwendung: besonders für Grafiken geeignet; bezüglich Qualität und Komprimierung bieten GIF und
JPEG, unter Berücksichtigung ihrer Eigenschaften, immer noch die höchste Effektivität.
Das PNG-Format hat folgende Eigenschaften:

Einfach, sauber und leicht zu implementieren.

Portabel.

Frei verfügbare Quelltexte zum Lesen und Schreiben von Bildern.

Existierende GIF-Bilder müssen zu 100% konvertiert werden können.

Sequentielles Lesen und Schreiben muss unterstützt werden.

Bessere Kompression als GIF, wobei immer noch verlustlos komprimiert werden soll.
13
Was bietet PNG?
Es sind hier einige Punkte aufgelistet, die in der PNG-Spezifikation enthalten sind:
GIF-Eigenschaften, die auch in PNG enthalten sind:

Bilder mit Farbindizes bis zu 256 Farben.

Serialisierbarkeit (streamability): Dateien können seriell gelesen und geschrieben werden.

Inkrementelles Anzeigen: Eine entsprechend vorbereitete Datei kann während der Übertragung
dargestellt werden, sodass man sehr schnell das Bild in grober Auflösung hat, welches dann
schrittweise verfeinert wird.

Transparenz: Teile des Bildes können als transparent markiert werden, um z.B. ein nichtrechteckiges Bild zu erzeugen.

Zusatzinformation: Textuelle Kommentare und andere Daten können in der Bilddatei gespeichert
werden.

Komplett unabhängig von Hardware und Betriebssystem.

Effektive, 100% verlustlose Kompression.
Einige neue Eigenschaften von PNG, die in GIF nicht enthalten sind:

Echtfarbenbilder mit bis zu 48 Bit pro Bildpunkt.

Graustufenbilder mit bis zu 16 Bit pro Bildpunkt.

Kompletter Alpha-Kanal (allgemeine Transparenz-Maske).

Gamma-Information wird mitgespeichert, damit lassen sich die Helligkeit und der Kontrast so
anpassen, dass das Bild auf verschiedenen Systemen in gleicher Weise angezeigt wird.

Zuverlässiges Erkennen beschädigter Dateien (z.B. durch Übertragungsfehler).

Schnellere Anzeige der ersten groben Auflösung bei der inkrementellen Anzeige als bei GIF.
Aufbau einer PNG-Datei
Die in einer PNG-Datei gespeicherten Daten sind in Blöcke unterschiedlicher Länge gegliedert. Jeder
Block enthält eine spezielle Art von Information, wie z.B. die eigentlichen Bildpunkte, textuelle
Kommentare, Farbtabellen, usw.
Jede PNG-Datei besteht aus einer Signatur und einer Folge beliebig vieler Blöcke, den Chunks. Die
Signatur dient lediglich dazu, eine PNG-Datei als solche zu identifizieren, während in den Chunks die
eigentlichen Bildinformationen gespeichert werden.
14
Abbildung: Allgemeine Dateistruktur
Signatur
Die ersten 8 Byte einer PNG-Datei bilden die Signatur.
Abbildung: Signatur einer PNG-Datei
Diese 8 Byte identifizieren eine PNG-Datei und dienen gleichzeitig dazu, Übertragungsfehler zu
entdecken.
Chunks
Chunks enthalten sämtliche Informationen, die in einer PNG-Datei gespeichert werden
können. Dabei werden unterschiedliche Arten von Informationen auch in
unterschiedlichen Chunks mit unterschiedlichen Typen gespeichert. Jeder Chunk
besteht aus vier Komponenten.
Abbildung: Aufbau eines Chunks
15
Länge: Die erste Komponente ist eine 4 Byte Integer-Zahl, die die Länge des Datenteils enthält. Dabei
zählen nur die Daten selbst, nicht die Länge des gesamten Chunks.
Typ: Als Typkennung wird eine 4 Byte Integer-Zahl verwendet, die festlegt, wie die im Chunk enthaltenen
Daten zu interpretieren sind. Die einzelnen Bytes dürfen jeweils nur aus den ASCII-Zeichen a-z bzw. A-Z
bestehen, zusammen bilden sie also den vier Zeichen langen Namen des Chunks.
Daten: In diesem Teil des Chunks stehen die eigentlichen Daten. Wie die Daten zu interpretieren sind,
hängt vom Typ des Chunks ab.
CRC: Am Ende eines Chunks ist ein 4 Byte CRC (Cyclic Redundancy Check) gespeichert. Mit diesem
Wert lässt sich prüfen, ob ein Chunk Fehler enthält, z.B. Fehler durch falsche Übertragung. Außerdem
kann erkannt werden, ob ein Programm einen Chunk verändert hat, indem der neue und alte CRC-Wert
verglichen wird. Hat sich der Wert geändert, so wurde auch der Chunk verändert. Der Test bezieht sich
auf den Chunk-Typ und die Daten, jedoch nicht auf die Chunk-Länge.
Kompression
Der einzige Kompressionsalgorithmus, der bisher für das PNG-Format spezifiziert wurde, ist der
Deflate/Inflate-Algorithmus. Dabei werden in einem max. 32 KB großem Gleitfenster, das über die
Eingabedaten geschoben wird, Datenmuster gesucht, die dann kodiert werden. Das Bild lässt sich
danach ohne Verluste wieder rekonstruieren.
Interlacing
Je größer die Datei, desto länger dauert es, bis der Betrachter erkennen kann, was er gerade lädt. Das
Interlacing hilft diesem Problem ab. Es baut zunächst ein Gesamtbild mit unscharfen Konturen auf, das
zunehmend schärfer kontrastiert.
Interlacing in PNG-Bildern
Das PNG-Format erlaubt es, mehrere Interlace-Schemata zu verwenden. Die Methode arbeitet mit 7
Durchläufen und stammt von Adam M. Costello, daher ist die Methode auch als Adam7 bekannt.
Adam7 unterteilt das Bild in 8x8 Bildpunkte große Blöcke, innerhalb dieser Blöcke werden dann in jedem
Durchlauf die in der nachfolgenden Abbildung gekennzeichneten Punkte übertragen.
Abbildung: Adam7 Interlacing Schema
16
Die hinter Adam7 stehende Logik ist die, dass immer abwechselnd zunächst die horizontale Auflösung
verdoppelt wird, dann die vertikale. Mit diesem Schema erhält man sehr schnell eine erste Version des
Bildes, da im ersten Durchlauf nur 1/64 des gesamten Bildes übertragen wird. Im Vergleich zu GIF lassen
sich kleine Schriften bei PNG etwa doppelt so schnell erkennen, nämlich nach etwa 25% übertragener
Bilddaten, anstatt 50% bei GIF.
In der folgenden Abbildung sind die sieben Durchgänge einzeln dargestellt. Dabei sind die Beispiele in
zwei Hälften aufgeteilt. In der linken Hälfte werden nur die bisher übertragenen Bildpunkte dargestellt,
während auf der rechten Seite die gesamten Teilblöcke mit der Farbe des Punktes gefüllt werden.
1
2
3
5
6
7
4
Abbildung Die sieben Durchgänge des Adam7 Schemas
Transparenz
Das PNG-Format erlaubt es, Teile eines Bildes als transparent zu markieren. Wenn ein Bild an manchen
Stellen durchsichtig erscheinen soll, müssen die Bildpunkte neben den eigentlichen Farbwerten noch ein
weiteres Attribut erhalten, den Alpha-Wert. Dieser Wert regelt den Grad der Transparenz, wobei gilt: Bei
einem Wert von 0 ist der Punkt völlig durchsichtig, während er beim Maximalwert vollkommen
undurchsichtig ist. Dazwischenliegende Werte stehen dementsprechend für teilweise transparent, der
Punkt muss dann mit dem Hintergrund kombiniert werden. Es lassen sich also
unterschiedliche
Transparenzstufen darstellen.
Farbwiedergabe
In diesem Kapitel soll auf eine PNG-Eigenschaft eingegangen werden, die es ermöglicht, die Farben
eines Bildes auf verschiedenen Systemen in gleicher Weise darzustellen. Ein Grafikformat müsste also
Informationen enthalten, mit denen das Bild auf jedem Rechnersystem in gleicher Weise dargestellt
werden kann. Dies lässt sich bereits mit einem einzigen Wert recht gut erreichen, dem Gamma-Wert.
Die verschiedenen Anzeigegeräte stimmen darüber überein, dass der Wert 0 für Schwarz und 255 für
Weiß steht, jedoch herrscht keine Übereinkunft für welche Intensität der Wert 128 steht. Bei Geräten mit
linearen Intensitätsverläufen steht es wirklich für 50%, bei anderen Geräten kann es jedoch auch über
70% bedeuten. Die tatsächlichen Verläufe lassen sich recht gut durch eine einfache Potenzfunktion
approximieren:
Die Ein- und Ausgabe muss hierbei auf den Bereich zwischen 0 und 1 normiert sein. Der Exponent ist
nun der Gamma-Wert des entsprechenden Gerätes. Kennt man also den Gamma-Wert des eigenen
Rechnersystems und den Gamma-Wert des Systems, auf dem das Bild erzeugt wurde, können die
Farbwerte so angepasst werden, dass das Bild auf beiden Systemen etwa gleich dargestellt wird. Der
zweitgenannte Gamma-Wert ist derjenige, der in einer PNG-Datei gespeichert werden kann.
17
Allerdings muss sich das Programm, das ein Bild darstellen möchte, selbst um die Farbkorrektur
kümmern. Es muss also auf irgendeine Weise den eigenen systemabhängigen Gamma-Wert erhalten
haben, um das Bild korrekt darstellen zu können, z.B. durch eine Eingabe des Benutzers.
Zusammenfassung
Alles in allem kann man sagen, dass das PNG-Format, was das Speichern einzelner Bilder angeht, dem
GIF-Format in allen Punkten überlegen ist. Die wesentlichen Verbesserungen seien hier noch einmal kurz
erwähnt:
Echtfarben- und Graustufenbilder:
Durch diese Option lassen sich Bilder nun wirklich ,,verlustlos“ speichern.
Bessere Kompression:
PNG-Dateien sind in der Regel kürzer als Dateien anderer vergleichbarer Formate.
Transparenz vielseitiger:
Mit dem Alpha-Kanal hat man volle Kontrolle über die Transparenz jedes einzelnen Bildpunktes.
Inkrementelles Anzeigen schneller:
Für das erste Rohbild müssen nur 1/64 der Bilddaten übertragen werden (bei GIF ist es 1/8).
Farbkorrektur wird ermöglicht:
Durch den Gamma-Wert ist die Voraussetzung geschaffen, Bilder auf verschiedenen Systemen
in gleicher Weise darstellen zu können.
Beschädigte Dateien werden erkannt:
Fehlerhafte Dateien können anhand der Signatur und anhand der CRC-Werte in den Chunks
schnell und zuverlässig erkannt werden.
Leicht erweiterbar:
Es können leicht eigene Chunks zugefügt werden, ohne dass dadurch die Portabilität verloren
geht. Die neuen Chunks werden von den bisher existierenden Programmen einfach überlesen.
GIF bietet allerdings eine Option, die im PNG-Format nicht enthalten ist, nämlich das Speichern mehrerer
Bilder in einer Datei. Damit lassen sich dann kleine Animationen realisieren, die inzwischen auf vielen
WWW-Seiten zu sehen sind. Das PNG-Format ist jedoch strikt als ein Einzelbild-Format konzipiert und
wird diese Option auch in Zukunft nicht anbieten. Grund dafür ist, dass das Format einfach und
austauschbar sein soll. Würde man mehrere Bilder in einer Datei erlauben, gäbe es dennoch viele
Programme, die diese Option nicht unterstützen würden, so wie es ja heute beim GIF-Format der Fall ist.
Die Datei wäre dann also doch nicht mehr einfach austauschbar.
Eine Erweiterung auf mehrere Bilder ist dennoch nicht ganz ausgeschlossen, allerdings wird diese
Erweiterung einen neuen Namen und damit auch eine neue Signatur erhalten, es handelt sich dann also
nicht mehr um eine reine PNG-Datei. Ein Programm kann dann selbst entscheiden, ob es nur Einzelbilder
oder auch Bildsequenzen unterstützen möchte.
18
JPEG Kompression
Kompressionsmodi bei JPEG
Die ursprüngliche Überleguing war einen Algorithmus zur Kompression "natürlicher" Grauton- oder
Farbbilder zu entwickeln, das heißt einen Kompressionsalgorithmus Bilder zu finden, der Bilddaten so
reduziert, dass sie für das menschliche Auge wenig Qualität verlieren. Schwerpunkte bei der Erstellung
eines geeigneten Algorithmus' waren einerseits eine hohe Kompressionsrate und andererseits eine hohe
Geschwindigkeit zum Kodieren und Dekodieren.
Einen Algorithmus für all diese Anforderungen zu entwickeln ist nahezu unmöglich. Daher hat man sich
entschlossen vier unterschiedliche Modi zu entwickeln.

Beim progressive mode wird das Bild in mehreren Durchgängen kodiert und dekodiert. Bei
jedem weiteren Durchgang verbessert sich dabei die Bildqualität, was besonders nützlich ist,
wenn Daten über große Entfernungen übertragen werden. Sobald das Bild eine für den Benutzer
ausreichende Schärfe erreicht hat, kann dieser die Übertragung stoppen.

Der hirarchical mode speichert das Bild in einer geringeren Auflösung und ebenfalls in voller
Auflösung. Das gering aufgelöste Bild kann wesentlich schneller übertragen und dekodiert
werden und eignet sich somit bestens als schnelle Vorschau auf das eigentliche Bild. Bei
Interesse kann dann die vollaufgelöste Version geladen werden.

Der lossless mode ist das einzige Verfahren, das verlustfrei kodiert und dekodiert. Der große
Nachteil ist, dass die Kompressionsrate recht gering ist, weil der volle Informationsgehalt
gespeichert wird.

Beim sequentiell mode wird das Bild in einem einzigen Durchgang von links oben nach rechts
unten dekodiert, was in der Praxis für die meisten Anwendungen gut geeignet ist, die besten
Kompressionsraten erzielt und am leichtesten zu implementieren ist.
Ablauf der JPEG-Kompression beim sequentiell mode:
Die Kompression von Bilddaten durch das standardisierte JPEG-Verfahren verläuft folgendermaßen:
1. Es liegen Bilddaten im RGB-Format vor, von denen jeder einzelne Wert eine Zahl zwischen 0
und 255 ist. Diese werden in das YUV- oder YCbCr-Modell übertragen, wo die einzelnen
Komponenten (Helligkeit, Farbton und Sättigung) verschieden stark gewichtet werden.
2. Außerdem wird eine Indexverschiebung vorgenommen, d.h. die Werte aus der Wertemenge
[0;255] werden als Zahlen zwischen -128 und 127 dargestellt. Die 3 nun vorliegenden
sogenannten "Layer", was eine Bezeichnung für die verschiedenen Datenmengen für Y, U,V, Cb
oder Cr ist (man kann also von "Datenschichten" sprechen), werden nun einzeln weiterbearbeitet.
3. Jedes Layer wird in 8*8 große Pixelblöcke eingeteilt (das komplette Verfahren muss auf alle
Matrizen und alle Layers einzeln angewendet werden), auf die im folgenden die diskrete
Kosinustransformation einzeln angewendet wird. Die diskrete Kosinustransformation oder DCT
(discrete cosine transform) interpretiert die Helligkeits- bzw. Farbwerte als Überlagerung von
Kosinusfunktionen, die deren Schwankungen angeben, d.h wie stark sich die Werte von Ort zu
Ort ändern, und transformiert die Werte in Amplituden für Kosinusfunktionen verschiedener
Frequenzen. Hierbei ähneln sich die Amplituden für hohe Frequenzen, wodurch man einen
Vorteil für die anschließende Kodierung erhält.
19
4. Die entstandenen Amplituden werden noch quantisiert, indem sie durch einen vom Benutzer
festlegbaren Quantisierungsfaktor dividiert und danach gerundet werden, wobei viele Werte
gleich Null werden.
5. Im Folgenden wird die quantisierte Matrix codiert. Dazu wird die 8*8-Matrix in einen 1*64-Vektor
umgeschrieben, sodass die zahlreichen Nullen, die beim Quantisieren entstanden sind,
hintereinander stehen und sich gut zusammenfassen lassen. Ist diese erste Reduzierung der
Datenmenge erfolgt, so wird die eigentliche Huffman-Codierung angewendet, bei der jedem Wert
ein einzigartiger Binärcode zugeordnet wird. Eine große Speicherplatzersparnis wird dadurch
erreicht, dass beim Huffman-Verfahren häufig auftretenden Werten ein kurzer, seltenen Werten
ein langer Code zugeteilt wird und die Codes der einzelnen Werte außerdem ohne Trennzeichen
auskommen und aneinandergereiht werden können.
6. Wenn das Bild nun decodiert wird, werden die Binärcodes wieder in Zahlenwerte umgewandelt
und ausführlich ausgeschrieben, sodass man wieder einen 1*64-Vektor, bzw. eine 8*8-Matrix
erhält. Zur Dequantisierung werden die quantisierten Werte in dieser Matrix einfach mit dem
Quantisierungsfaktor multipliziert. Die inverse DCT sorgt dann dafür, dass aus den Amplituden
wieder die ursprünglichen Helligkeits- bzw. Farbwerte hergestellt werden. Zur besseren
Unterscheidung wird die DCT auch forward DCT genannt. Wenn immer wir im folgenden von
DCT sprechen, ist die forward DCT gemeint. Die von der inversen DCT erhaltenen Werte
ergeben nun das komprimierte Bild.
20
GIF (Graphics Interchange Format)
GIF (Graphics Interchange Format) ist sicherlich das bekannteste Bildkompressionsverfahren. Es wurde
vom kommerziellen Online-Dienst Compuserve entwickelt, um die Speicherung zu erleichtern und um die
Übertragungszeiten von Bildern im eigenen Online-Dienst gering zu halten.
GIF unterscheidet sich von den meisten anderen Dateiformaten dadurch, dass es datenstromorientiert ist.
Es besteht aus einer Serie von Datenpaketen, ''Blocks'' genannt, die mit zusätzlicher Protokollinformation
abwechseln. GIF-Dateien werden gelesen, als kämen sie in einem Strom über eine Netzwerkverbindung.
Die einzelnen Datenblöcke und Unterblöcke können an jeder Stelle der Datei auftauchen. Dies macht es
schwer, jede mögliche Anordnung der Daten als ''C-Struct'' anzugeben. GIF-Dateien benutzen eine ganze
Anzahl von verschiedenen Datenblockkategorien. Jeder Block kann ein Datenfeld beinhalten, oder aber
Unterblöcke, die jeweils mit einem Byte als Längenangabe beginnen und somit bis zu 255 Datenbytes
beinhalten können. Viele Unterblöcke können als eine zusammenhängende Gruppe einander folgen. Das
Ende einer solchen Gruppe bildet ein leerer Unterblock, bei dem sich eine 0 in der Längenangabe
befindet. Der letzte Hauptblock einer GIF-Datei wird auch ''Trailer'' genannt und besteht aus dem einzigen
Byte 0x3B.
Im GIF-Format gespeicherte Grafiken werden mit einer Lauflängenkodierung (Lempel-Ziv-Welch/ LZW)
komprimiert: Anstatt alle Bits der Datei explizit abzuspeichern, wird hier nur die Anzahl der aufeinander
folgenden Reihen gleicher Bits gespeichert. Dies macht sich besonders bei Grafiken mit großen,
einfarbigen Flächen positiv bemerkbar.
Eine Qualitätsminderung durch die Kompression findet hier nicht statt.
Das GIF-Format eignet sich für Bilder bis zur Farbtiefe 8 Bit, also 256 Farben bzw. Graustufen. Die
Farbtiefe hat hier (ebenso wie die Bildgröße) unmittelbare Auswirkungen auf die Dateigröße in Bytes.
Gute Grafik- und Bildbearbeitungsprogramme erlauben eine Umrechnung der Farbtiefe in 1-Bit-Schritten,
wodurch der Platzbedarf der Dateien individuell angepasst werden kann:
Bits
Farben
1
2
2
4
3
8
4
16
5
32
6
64
7
128
8
256
Für eine Grafik, die nur 10 verschiedene Farben enthält, wäre es unsinnig, mit 8 ; Bit Farbtiefe
abzuspeichern, da in 4 Bit bereits 16 Farben enthalten sind.
Das GIF-Format zeichnet sich durch eine hohe Kompressionsrate (die Kompressionsrate erreicht
maximal 5:1, etwas mehr für einfarbige Bilder) aus:
Bitmap-Grafiken sind bei gleichem Inhalt bis zu dreißig mal größer als GIF-Dateien.
GIF-Dateien komprimieren im Gegensatz zu z.B. JPEG Dateien verlustfrei, aber da sie nur maximal 256
Farben (diese können jedoch aus den 16,7 Millionen Farben des RGB-Modells frei gewählt werden) pro
Datei speichern können, sind sie nicht für hochauflösende Grafiken wie Fotos etc. geeignet. Vielmehr
eignen sie sich für kleine Symbole, Animationen und Zeichnungen.
Die GIF-Spezifikation kennt zwei Versionen: GIF87a und GIF89a. GIF87a ist die ursprünglich im Mai
1987 entworfene Spezifikation, die von allen Programmen, die GIF-Dateien bearbeiten können
verstanden werden sollte. Jede Datei beginnt mit einem Header und einem ''Logical Screen Descriptor''. .
Im ''Logical Screen Descriptor'' wird angegeben, wie viel Platz für die in der Datei abgelegten Bilder
benötigt wird. Danach kann optional eine ''Globale Farbtabelle'' folgen. Anschließend kommen die Bilder,
von denen jedes einen ''Local Image Descriptor'', eine optionale ''Lokale Farbtabelle'' und eine Block von
Bilddaten beinhalten. Das letzte Feld einer jeden GIF-Datei ist ein Abschlusszeichen
21
Der jetzt gültige Standard des GIF-Formats ist das so genannte "89er-Format". Dieses Format bietet drei
Möglichkeiten an, die das GIF-Format für den Einsatz im WWW besonders interessant machen:
Die Möglichkeit, eine Datei "interlaced" abzuspeichern. Eine Grafik, die so abgespeichert ist, wird beim
Laden nicht zeilenweise eingelesen und aufgebaut, sondern schichtweise. Gerade bei der OnlineÜbertragung ist das sehr hilfreich. Denn so erscheint die Grundstruktur der Grafik sehr schnell am
Bildschirm des Anwenders.
Beim weiteren Einlesevorgang wird die Grafik dann immer deutlicher und feiner aufgelöst am Bildschirm
angezeigt.
Das GIF-Format benutzt ein sehr einfaches Interlacing Schema, bei dem lediglich die Zeilen in einer
anderen Reihenfolge übertragen werden als sie dargestellt werden. Das Schema beinhaltet vier
Durchläufe: im ersten Durchlauf wird nur jede 8. Zeile übertragen (Zeile 1, 9, 17, ...), danach wird die
Auflösung jeweils verdoppelt indem immer die Zeilen übertragen werden, die genau zwischen zwei schon
übertragenen Zeilen liegen. Im zweiten Durchlauf sind das also die Zeilen 5, 13, 21, ...und im dritten die
Zeilen 3, 7, 11, 15, .... Der vierte und letzte Schritt enthält dann alle restlichen Zeilen (2, 4, 6, 8, ...) und
macht damit das Bild vollständig.
1
2
3
4
Abbildung: Die Stufen des GIF Interlace Schemas
Obenstehende Abbildung zeigt die vier Durchläufe des GIF Interlacing Schemas. Hier sind auch gleich
die beiden möglichen Arten des Darstellens abgebildet. In der jeweiligen linken Hälfte werden nur die
bisher übertragenen Zeilen dargestellt, die restlichen bleiben ungesetzt (hier: Schwarz). Auf der rechten
Seite werden die Zeilen dupliziert, so dass keine Lücken sichtbar sind.
Die Möglichkeit, mehrere Grafiken in einer einzigen Grafikdatei zu speichern, verbunden mit Optionen zur
Steuerung der Einzelgrafiken. Mit Hilfe dieses Features des GIF-Formats sind animierte Grafiken
realisierbar.
Die Möglichkeit eine Farbe als unsichtbar (transparent) zu definieren. Dies ist jedoch erst mit dem neuen,
89er-Format von GIF möglich. Im älteren, 87er Format ist das noch nicht möglich.
Durch diese Möglichkeit werden z.B. GIFs, die eine transparente Hintergrundfarbe haben, egal auf
welcher Hintergrundfarbe sie sich befinden ohne ihren eigenen Hintergrund dargestellt, der sonst ein
hässliches Viereck in einer Farbe, die sich vom Hintergrund abheben würde, wäre.
GIF (animierte)
Seit der Version 89 des GIF-Formates, gibt es die Möglichkeit mehrere Bilder in einer GIF-Datei
abzuspeichern. Außerdem können in der Datei Kontrollbefehle mitgespeichert werden, wie zum Beispiel
die Anzeigedauer jedes einzelnen Bildes. Die Einzelbilder werden dann nacheinander angezeigt.
Dadurch werden interessante Effekte etc. möglich.
Man kann zum Beispiel eine Art Dia-Show erstellen, bei der die einzelnen Bilder in bestimmten
Zeitintervallen, wie bei einer Präsentation, nacheinander angezeigt werden.
22
Außerdem ist es möglich einen Daumenkino-Effekt zu erzeugen, wenn man wie bei einer Videoanimation
mehrere Bilder schnell hintereinander abspielt und so z.B. eine Bewegung erzeugt.
Ein Vorteil der animierten GIF-Bilder ist, dass sie wirklich von jedem eingesetzt werden können, da keine
Java Kenntnisse oder ähnliches benötigt werden.
Doch darin liegt leider auch ihr Nachteil. Animierte GIF-Dateien werden heute kaum sinnvoll eingesetzt.
Meistens sind sie in Form von herumlaufenden Hunden, brennendem Feuer etc. auf Webseiten zu finden.
Durch die vielen Bilder, die in der einen Datei gespeichert sind, wird die resultierende Datei sehr schnell
sehr groß und dies trägt wiederum zum Ärger des Anwenders bei, der einerseits lange auf die
Seitenübertragung warten muss und somit eine hohe Telefonrechnung zahlen "darf" und andererseits
werden die Seiten dadurch oft so unnötig überladen, dass die Informationen, wenn überhaupt noch
welche vorhanden sind, nur schwer zu finden sind.
23
Herunterladen