Skiseminar Multimedia WS 07/08 Bastian Behrend - Z I P - Skiseminar Multimedia WS 07/08 Bastian Behrend
Kompressionsalgorithmen Agenda Grundlagen Kompressionsalgorithmen Statistische Verfahren Wörterbuchbasierte Verfahren Aufbau eines ZIP-Archivs Zusammenfassung
Grundlagen Ständig wachsender Datenwust Begrenzte Speicher- und Übertragungskapazitäten Notwendigkeit zur effizienten Nutzung der knappen Ressourcen Daher: Kompression!
Grundlagen Möglichkeiten zur Kompression: verlustfrei oder verlustbehaftet Verlustfrei: Elimination von Redundanzen Komprimierte Daten vollständig auf Eingabedaten zurückführbar z.B. Dokumente Verlustbehaftet: Zusätzlich: Elimination irrelevanter Informationen Nicht vollständig auf Eingabedaten zurückführbar! z.B. MP3, DIVX
Grundlagen Fokus: Verlustfreie Kompression Grundvoraussetzungen: Eingabedaten müssen vollständig rekonstruierbar sein Eindeutige Dekodierbarkeit Zusätzliche Annahme: Beliebige Eingabedaten
Zwei grundsätzliche Ansätze zur verlustlosen Kompression: Grundlagen Zwei grundsätzliche Ansätze zur verlustlosen Kompression: Statistische Verfahren Idee: unterschiedliche Häufigkeit von Zeichen in der Eingabe ausnutzen Wörterbuchbasierte Verfahren Idee: Redundanzen in der Eingabe finden Güte der Kompression: Komprimiergeschwindigkeit Kompressionsverhältnis
Grundlagen Informationsgehalt: Menge an Information, die ein Zeichen trägt Umgekehrt proportional zur logarithmierten Wahrscheinlichkeit, das Zeichen zu erraten Im Fall binärer Zeichenkodierung:
Grundlagen Durchschnittlicher Informationsgehalt einer Nachricht: H wird auch die Entropie einer Nachricht genannt. Die Entropie bildet die untere Schranke bei der verlustlosen Kompression mit statistischen Verfahren!
Kompressionsalgorithmen Agenda Grundlagen Kompressionsalgorithmen Statistische Verfahren Wörterbuchbasierte Verfahren Aufbau eines ZIP-Archivs Zusammenfassung
Statistische Verfahren Ansatz: In einer gegebenen Nachricht kommen Zeichen mit unterschiedlicher Wahrscheinlichkeit vor Statt jedes Zeichen mit derselben Codelänge repräsentiere Häufig auftretende Zeichen mit kurzen Codes! Seltene Zeichen mit langen Codes!
Statistische Verfahren Erzeugung von Kodierungen mit Binärbäumen Beispiel: Zu kodieren sei abcab Zeichen Code a b 10 c 11 Ergebnis: 01011010
Statistische Verfahren Grundvoraussetzung: Eindeutige Dekodierbarkeit! Problem: unterschiedliche Länge der Zeichenkodierungen Beispiel: Zu kodieren sei abcab Zeichen Code a b 1 c 01 Ergebnis: 010101 Nicht eindeutig dekodierbar!!
Statistische Verfahren Präfixfreie Codes: Es gibt keinen Code Ci, der Präfix von Code Cj ist für alle i≠j Notwendige und hinreichende Bedingung: Kraft-McMillan Ungleichung Seien xi Zeichen einer Eingabe und l(xi) die Bitlängen der Zeichen für i=1…n Dann muss gelten:
Statistische Verfahren In dem ersten Beispielbaum: ½ + ¼ + ¼ = 1 Der Baum ist also präfixfrei und optimal. Zeichen Code a b 10 c 11
Statistische Verfahren Huffman Kodierung: Algorithmus zum Erzeugen optimaler Binärbäume! Funktionsweise: Ermittle die Häufigkeitsverteilung der Zeichen in der Eingabe Erzeuge für jedes Zeichen ein Blatt mit der Eintrittswahrscheinlichkeit als Zusatzinformation Verbinde die beiden Blätter mit der niedrigsten Wahrscheinlichkeit. Die Wahrscheinlichkeit des Elternknotens ist nun die Summe der Einzelwahrscheinlichkeiten Iteriere Schritt 3 bis der Baum vollständig ist
Statistische Verfahren Beispiel: Zu kodieren sei: fischers fritz fischt frische fische. Zeichen Häufigkeit P(X) f 5 5/36 i s 4 1/9 c h e 3 1/12 r <Space> t 2 1/18 z 1 1/36 .
Statistische Verfahren Zeichen f i s c h < > e r t z . Kodierung 010 000 001 100 101 110 0110 0111 1110 11110 11111
Statistische Verfahren Wert der Kraft-McMillan Ungleichung: 1 Durchschnittliche Codelänge: 3*5/36+ 3*5/36+ 3*1/9+ 3*1/9+ 3*1/9+ 3*1/9+ 4*1/12+ 4*1/12+ 4*1/18+ 5*1/36+ 5*1/36 = 3,33 Bit Entropie: 3,17 Bit Warum der Unterschied? Binärbäume können nur ganzzahlige Informationsgehalte darstellen!
Statistische Verfahren Arithmetische Kompression Vorüberlegung: Im Intervall ]0,1[ existieren überabzählbar unendlich viele Zahlen. Folgerung: Für jede Eingabe gibt es in diesem Intervall eine Zahl, die die Eingabe eindeutig repräsentiert.
Statistische Verfahren Ablauf: Ermittle die Häufigkeitsverteilung der Zeichen in der Eingabe Teile das Intervall ]0,1[ entsprechend dieser Verteilung auf Wähle das Teilintervall, das dem ersten gelesenen Zeichen entspricht Teile das Unterintervall erneut anhand der Häufigkeitsverteilung auf und wähle das Teilintervall, das dem nächsten gelesenen Zeichen entspricht Iteriere Schritt 4 bis zum Stoppzeichen
Statistische Verfahren Probleme: Endliche Genauigkeit von Computern, daher schwierig zu implementieren Niedrige Geschwindigkeit Weniger weit verbreitet!
Kompressionsalgorithmen Agenda Einführung Grundlagen Kompressionsalgorithmen Statistische Verfahren Wörterbuchbasierte Verfahren Aufbau eines ZIP-Archivs Zusammenfassung
Wörterbuchbasierte Kompression Idee: Redundanzen innerhalb der Eingabe ausnutzen Art des Verfahrens: Statisch Wörterbuch fest vorgegeben Semi-adaptiv Wörterbuch vorgegeben, kann jedoch während der Kompression geändert werden Adaptiv Algorithmus startet mit leerem Wörterbuch
Wörterbuchbasierte Kompression LZ77 „sliding window“ Zweigeteiltes Fenster wandert von links nach rechts über die Eingabe Rechter Teil des Fensters: „look-ahead buffer“ (LB) Linker Teil des Fensters: „search buffer“ (SB) Ausgabe: 3-Tupel (Offset, Länge, Folgezeichen)
Wörterbuchbasierte Kompression Beispiel zur Funktionsweise von LZ77: Zu kodieren: abbbcdbca Größe LB: 3, SB: 4 Fertig kodiert SB LB Nicht gelesen Ausgabe abbbcdbca abb bcdbca (0,0,a) a bbb cdbca (0,0,b) ab bbc dbca (1,2,c) a bbbc dbc a (0,0,d) ab bbcd bca (3,2,a) abbbc dbca
Wörterbuchbasierte Kompression Vorteil: Leicht zu implementieren Schnell Nachteil: Nur gut bei lokalen Redundanzen, da weiter entfernt liegende Treffer nicht mehr im Fenster liegen Durch das 3-Tupel hoher overhead bei einzelnen Zeichen Varianten: z.B. LZSS
Wörterbuchbasierte Kompression LZ78 Wörterbuch statt search buffer Füllen des Wörterbuchs während der Komprimierung Vorteil: Berücksichtigung räumlich weiter auseinander liegender Redundanzen Ausgabe: 2-Tupel (Wörterbuchindex, Folgezeichen)
Wörterbuchbasierte Kompression Beispiel zur Funktionsweise von LZ78: Zu kodieren sei: abacbabacc Schritt Eingabe Token/ Ausgabe Neuer Wörtbucheintrag/ Index 1 a 0,a a,1 2 b 0,b b,2 3 ac 1,c ac,3 4 ba 2,a ba,4 5 bac 4,c bac,5 6 c 0,c c,6
Wörterbuchbasierte Kompression Ausgabe: (0,a)(0,b)(1,c)(2,a)(4c)(0,c) Größe des Wörterbuchs in LZ78 nicht beschränkt! Varianten von LZ78: z.B. LZW Kommt ohne explizite Angabe des Folgezeichens aus Erfordert dafür ein Anfangswörterbuch mit sämtlichen vorkommenden Zeichen
Kompressionsalgorithmen Agenda Grundlagen Kompressionsalgorithmen Statistische Verfahren Wörterbuchbasierte Verfahren Aufbau eines ZIP-Archivs Zusammenfassung
ZIP: ZIP Ende der 80-er Jahre aufgekommen Entwickler: Phil Katz Public Domain Containerformat, keine Kompressionsmethode! Aufbau: Keine monolithische Struktur! Header Datei1| Daten Datei 1| Deskriptor Datei 1|…| Header Datei n| Daten Datei n| Deskriptor Datei n| Zentrale Verzeichnisstruktur| Ende Zentrale Verzeichnisstruktur
ZIP Dateien können sowohl komprimiert als auch unkomprimiert vorliegen Art der Kompression durch Flag vor der komprimierten Datei angezeigt Unterstützte Kompressionsmethoden: u.a. deflate, bzip2 Fehlerkorrektur mit CRC Lange nur schwache Verschlüsselung implementiert
Deflate: ZIP Ebenfalls von Phil Katz entwickelt Public Domain Standard-Kompressionsverfahren bei ZIP Mehrstufiges Verfahren: 1. Schritt: Kompression mit LZSS 2. Schritt: Huffman Kodierung Je nach gewünschter Kodiergeschwindigkeit: Variation der Parameter beider Basisalgorithmen
Kompressionsalgorithmen Agenda Grundlagen Kompressionsalgorithmen Statistische Verfahren Wörterbuchbasierte Verfahren Aufbau eines ZIP-Archivs Zusammenfassung
Zusammenfassung: Zusammenfassung Zwei grundlegende Arten der verlustlosen Kompression Kein optimaler Ansatz Implementierungen meist mehrstufig
Vielen Dank für Ihre Aufmerksamkeit!