prev up next

GIF

Bei den auf WWW-Seiten verwendeten Grafikformaten nimmt GIF den Spitzenplatz in punkto Häufigkeit ein. Insbesondere bei künstlich erzeugten Bildern mit einheitlich gefärbten Farbflächen ist es an Kompaktheit nicht zu schlagen.

Die Einbettung des Bildes in eine Web-Seite geschieht unter Nennung des Dateinamens mit dem sogenannten Image-Tag, wobei optional weitere Parameter angegeben werden können.

HTML-Seite mit Bild-Einbettung     (HTML-Source)

Zwei Kompressionsideen tragen zur Datenreduktion bei:

Farbpalette:
Statt in jedem Pixel das komplette RGB-Tripel mit 3 Byte = 24 Bit Farbinformation zu speichern, werden für geeignetes $p$ die $2^p$ wichtigsten Farben in einer Tabelle, genannt Farbpalette, gehalten und über einen $p$-Bit langen Index referiert. Für $p = 8$ schrumpft der Platzbedarf daher auf ein Drittel.
LZW:
Das von Lempel, Ziv und Welch entwickelte und als Patent geschützte Verfahren zur Kompression beliebiger Zeichenfolgen basiert auf der Idee, in einer sogenannten Präfix-Tabelle die Anfangsstücke bereits gelesener Strings zu speichern und wiederholtes Auftauchen derselben Strings durch Verweise in die Tabelle zu kodieren.


Color Table

Beide Ansätze zahlen sich insbesondere dann aus, wenn die Vorlage weite Bereiche mit identischer Information enthält, wie es bei computergenerierten Grafiken, wie z.B. Logos, der Fall ist. Zum einen enthält das Bild dann gar nicht die theoretisch verfügbare Zahl von $256^{3} \approx $ 16 Millionen Farben, sondern nur wenige Dutzend, und kann daher völlig verlustfrei durch eine Palette mit 256 Einträgen dargestellt werden. Zum anderen führen Folgen von identischen Pixelindizes zu kompakten Einträgen in der Präfixtabelle.

Bei der Umwandlung eines True-Color-Bildes in ein Palettenbild mit Hilfe eines Bildbearbeitungsprogramms gibt es zwei Ansätze: Standard oder individuell. Standard bedeutet die Verwendung einer mit 216 repräsentativ gewählten Farben vorbesetzten Farbtabelle (z.B. vom Netscape-Browser). Diese wird eventuell dem gegebenen Bild nicht optimal gerecht, aber die Auswirkungen bei der Präsentation sind vorhersehbar. Individuell bedeutet, eine für die jeweilige Bildvorlage maßgeschneiderte Farbpalette zu vorgegebener Farbzahl $2^p$ zu konstruieren. Hierzu werden im Median-Cut-Algorithmus die beobachteten Farbhäufigkeiten im RGB-Würfel angeordnet und dieser dann längs eines orthogonal verlaufenden Schnittes (Median) in zwei Subwürfel geteilt (Cut), mit etwa gleichmächtiger Pixelzahl. Diese Partitionierung wird solange fortgeführt, bis $2^p$ Würfel entstanden sind, die dann jeweils durch einen Index der Farbpalette repräsentiert werden.

Durch ein sogenanntes Floyd-Steinberg-Dithering kann die ohnehin kaum wahrnehmbare Differenz zum Originalbild weiter reduziert werden. Hierzu wird der beim Quantisieren längs einer Scanline verursachte Fehler (d.h. die Differenz zwischen wahrem und approximiertem Farbwert) den nachfolgenden Pixeln vor ihrer Quantisierung zugeschlagen, so daß auf größere Flächen bezogen die Summe der konstruierten Farbwerte mit dem Ausgangsmaterial übereinstimmt. GIF ist streamingfähig; durch ein sogenanntes Interlacing wird zunächst nur jede 8. Zeile übertragen und danach jeweils die mittlere Zeile der verbleibenden Lücken.

Folgende Bilder zeigen Original und quantisierte Versionen einer 14$\times$14 Ausschnittvergrößerung, erstellt von einem 814$\times$517 True-Color-Bild. Die Zahl der Farben bezieht sich jeweils auf das Gesamtbild. Verwendet wurde der Median-Cut-Algorithmus mit anschließendem Floyd-Steinberg-Dithering.



24 Bit pro Pixel,
16 Mill. Farben

8 Bit pro Pixel,
256 Farben



4 Bit pro Pixel,
16 Farben

2 Bit pro Pixel,
4 Farben

Das GIF-Format erlaubt auch die Abspeicherung mehrerer Bilder in einer Datei, welche zudem mit Timing-Information versehen werden können (animated GIF). Hierdurch ist die Erstellung einfacher Animationen möglich, bei denen wenige kleine Grafiken in schneller Abfolge die Illusion eines Films verursachen.

Animiertes GIF (Bauarbeiter)

Animiertes GIF (Jongleur)

Animiertes GIF (Morphing)


prev up next