2. Repräsentation und Codierung von Daten. Klassen von Codierverfahren

Ähnliche Dokumente
6. Komprimierung. (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger

Dynamisches Huffman-Verfahren

Kodierungsalgorithmen

Arithmetisches Codieren

Eigenschaften von Kompressionsverfahren

Datenkompression. 1 Allgemeines. 2 Verlustlose Kompression. Holger Rauhut

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Huffman-Kodierung. Fachbereich Medieninformatik. Hochschule Harz. Huffman-Kodierung. Referat. Henner Wöhler. Abgabe:

Digitalisierung. analoges Signal PAM. Quantisierung

2.7 Der Shannon-Fano-Elias Code

Gierige Algorithmen Interval Scheduling

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

2. Digitale Codierung und Übertragung

Algorithmen und Datenstrukturen 2

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

Referat zum Thema Huffman-Codes

Seminar über Algorithmen, SS2004. Textkompression. von Christian Grümme und Robert Hartmann

Mathematik für Information und Kommunikation

Strings. Stringsuche, Boyer-Moore, Textkompression, Huffman Codes.

1 / 33. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V5 07. Mai / 33

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

Run Length Coding und Variable Length Coding

Datenkompression. Vortrag von Markus Durzinsky Student der Otto-von-Guericke-Universität Magdeburg

Redundanz. Technische Informationsquelle Entropie und Redundanz Huffman Codierung. Martin Werner WS 09/10. Martin Werner, Dezember 09 1

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

Digitaltechnik I WS 2006/2007. Klaus Kasper

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Algorithmus zur komprimierten Übertragung von Textdaten an mobile Endgeräte

Textkomprimierung. Stringologie. Codes. Textkomprimierung. Alle Komprimierung beruht auf Wiederholungen im Text. Textkomprimierung

2. Digitale Codierung und Übertragung

(Prüfungs-)Aufgaben zur Codierungstheorie

Informationstheorie und Codierung

Informatik-Seminar Thema 6: Bäume

15 Optimales Kodieren

2. Digitale Codierung und Übertragung

2. Vorlesung: Boolesche Algebra

JPEG Kompression technische Realisierung

Organisation. Was kommt zum Test? Buch Informatik Grundlagen bis inkl. Kapitel 7.4 Wissensfragen und Rechenbeispiele

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

A2.3: Zur LZ78 Komprimierung

Kodierung. Kodierung von Zeichen mit dem ASCII-Code

3 Quellencodierung. 3.1 Einleitung

Rechnergrundlagen SS Vorlesung

2. Digitale Codierung und Übertragung

Kodierung. Kodierung von Zeichen mit dem ASCII-Code

Kryptographie und Codierung für den Mathematikunterricht

Textkompression: Burrows-Wheeler-Transformation

Datenkompression. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 167

Der Alpha-Beta-Algorithmus

Algorithmen und Datenstrukturen 2

Rechnernetze Übung 5. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai Wo sind wir?

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

Lexikalische Programmanalyse der Scanner

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

2. Zahlendarstellung und Codierungstechniken. 2.1 Maschineninterne Darstellung von Zahlen und Zeichen

Theoretische Grundlagen der Informatik

Praktikum BKSPP. Aufgabenblatt Nr Umrechnung zwischen Stellenwertsystemen

Bilddatenformate BMP GIF JPG. Digitale Bildverarbeitung Liedtke 7.1. Bezeichnung: Microsoft Windows Bitmap, BMP, DIB

Hardware-kompatible Messdatenkomprimierung. Benjamin Steinwender, MSc KAI Kompetenzzentrum Automobilund Industrie-Elektronik GmbH, 9500 Villach

Übung zur Vorlesung. Informationstheorie und Codierung

Proseminar WS 2002/2003

Codierung, Codes (variabler Länge)

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Kapiteltests zum Leitprogramm Binäre Suchbäume

Verlustfreie Kompression

Studienarbeit Arithmetische Codierung

Arbeiten im Datennetz der Universität Regensburg

4. OBDDs und Modellüberprüfung

Grundlagen der Technischen Informatik. 2. Übung

Datenkompression: Lempel-Ziv-Codierung

Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14

ADS: Algorithmen und Datenstrukturen

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

Basisinformationstechnologie II

13. Algorithmus der Woche Fehlererkennende Codes Was ist eigentlich ISBN?

Kapitel 2: Informationstheorie. 3. Quellencodierung

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Mobile Objekte Indexstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Einführung in Kompressionstechniken

Übungen zur Vorlesung Grundlagen der Rechnernetze. Zusätzliche Übungen

Vorkurs Informatik WiSe 16/17

Der LZ77 Algorithmus. von. Stefan Mühlinghaus Matrikelnummer: Benutzerkennung: ai495

Informatik II, SS 2014

Codierungstheorie Teil 1: Fehlererkennung und -behebung

Die Mathematik in der CD

Paper Computer Science Experiment

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Lösungsvorschlag 3. Übung Technische Grundlagen der Informatik II Sommersemester 2009

2. Digitale Codierung und Übertragung

Kapitel 2. Suche nach endlich vielen Wörtern. R. Stiebe: Textalgorithmen, Winter 2005/06 113

Einführung in die Codierungstheorie

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Klausur Informatik B April Teil I: Informatik 3

Grundlagen von Rasterdaten

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

4.9.7 Konstruktion der Suffixbäume

Indexieren und Suchen

Übungsklausur - Beispiellösung

Übung 13: Quellencodierung

Transkript:

2. Repräsentation und Codierung von Daten Klassen von Codierverfahren SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 1 Klassen von Codierverfahren SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 2

Anforderungen an Codierverfahren Redundanzreduktion Verlustbehaftete Codierung vermindert Irrelevanz SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 3 2.1 Zeichenersetzung Pattern Substitution ersetze wiederholte Zeichenketten durch spezielle Zeichen erzeuge Codebuch mit Ersetzungen übertrage das Codebuch und die ersetzte Zeichenkette Beispiele: Problem: Übertragung des Codebuches notwendig SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 4

2.2 Run- Length Coding Annahme: lange Sequenzen gleicher Symbole Beispiel:... A B C E E E E E E D A C B... compression... A B C E! 6 D A C B... symbol special flag number of occurrences Nachteil: Spezialsymbol zusätzlich SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 5 Run- Length Coding Binär (FAX) Eindeutige Zuordnung (Transition) bei Binärdateien: Speicherung der Längen zwischen Wechsel Beispiel: SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 6

Codierung mit variabler Länge Symbole haben unterschiedliche Auftretenswahrscheinlichkeit: Codierung der Symbole entsprechend der Wahrscheinlichkeit Beispiel: Code 1: A B C D E (28 Zeichen < 32=2 5 Zustände) Kodierung von ABRACADABRA mit konstanter Zeichengröße (=5 Bits) 00001 00010 10010 00001 00011 00001 00100 00001 00010 10010 00001 Einschränkung auf notwendige Zeichen: A B R C D (5 Zeichen < 8= 2 3 ) Code: A B R C D 000 001 010 011 100 Kodierter Text: 000, 001, 010, 000, 011, 000, 100, 000, 001, 010, 000 (33 Bit) Codewörter nach Auftretenswahrscheinlichkeit sortieren: A=5x, B=2x, R=2x, C=1x, D=1x Code 2: A B R C D 0 1 01 10 11 ( häufigstes Symbol hat kürzesten Code) kodierter Text: 0, 1, 01, 0, 10, 0, 11, 0, 1, 01, 0 (15 Bit, Kompression 2.2 : 1) SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 7 Codierung ohne explizite Begrenzer Code 2 kann nur eindeutig dekodiert werden, wenn die Zeichenbegrenzer mitgespeichert werden. Das vergrößert die Datenmenge erheblich. Idee: Jedes Codewort muß eindeutig sein. Keine Codierung eines Zeichens darf mit dem Anfang der Codierung eines anderen Zeichens übereinstimmen: Kein Codewort ist der Prefix eines anderen Codeworts. Dann können wir auf Begrenzer verzichten. Code 3: kodierter Text: ABRACADABRA 11 00 011 11 010 11 10 11 00 011 11 SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 8

Code-Darstellung als binärer Baum Symbole sind Blätter des Baumes Das Durchlaufen des Baumes von der Wurzel zu den Blättern bestimmt den Code Jedes Codewort ist eindeutig und stellt nie einen Präfix eines anderen Codewortes dar Die Tiefe des Baumes ist Maß für die Codierungseffizienz Beispiel: ausgewogener Codebaum degenerierter Codebaum SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 9 2.3 Huffman-Code Aufgabe: finde den kürzesten Code bei gegebener Symbolwahrscheinlichkeit Algorithmus Erzeuge-Huffman-Code 1. Bestimme die Auftrittshäufigkeiten der Zeichen und schreibe sie an die Blattknoten eines aufzubauenden Binärbaums an. 2. Nimm die bisher unerledigten zwei Knoten mit den geringsten Häufigkeiten und berechne deren Summe. 3. Erzeuge einen Elternknoten für diese beiden und beschrifte ihn mit der Summe. Markiere die Verzweigung zum linken Sohn mit 0, die zum rechtensohnmit1. 4. Markiere die beiden bearbeiteten Knoten als erledigt. Wenn es nur noch einen nicht erledigten Knoten gibt, sind wir fertig. Sonst weiter mit Schritt 2. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 10

Beispiel Huffman-Code Wahrscheinlichkeiten der Zeichen: p(a) = 0.3; p(b) = 0.3; p(c) = 0.1; p(d) = 0.15; p(e) = 0.15 SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 11 Optimalität des Codes Die Länge einer kodierten Zeichenfolge ist gleich der gewichteten äußeren Pfadlänge des Huffman-Baumes. Die gewichtete äußere Pfadlänge eines Baumes ist gleich der über alle äußeren Knoten gebildeten Summe der Produkte des Gewichts (zugehöriger Häufigkeitszähler) mit der Entfernung von der Wurzel. Kein Baum mit den gleichen Häufigkeiten bei den äußeren Knoten hat eine kleinere gewichtete äußere Pfadlänge als der Huffman-Baum. Beweisidee: Die Zeichen mit großen Häufigkeiten sind näher an der Wurzel des Baumes und haben somit eine kürzere Codewortlänge. Alle Bäume, die nicht von den geringsten zu den größten Wahrscheinlichkeiten her aufgebaut werden, haben eine größere Pfadlänge. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 12

Dekodierung von Huffman-Codes Decodierung unter Verwendung des Baumes: Lies den Eingabestrom sequenziell und traversiere den Baum, bis ein Blattknoten erreicht ist. Gib bei Erreichen des Blattknotens das erkannte Zeichen aus. Beobachtung: Die Eingabe-Bitrate ist konstant, aber die Ausgabe-Zeichenrate ist variabel! SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 13 Codierung durch Tabelle Erzeugung einer Code-Tabelle: Hat das längste Codewort L Bits, so hat die Tabelle 2 L Einträge. Seic i das Codewort für Zeichen s i. c i habe l i Bits. Wir erzeugen 2 L-li Einträge in der Tabelle, bei denen jeweils die ersten l i Bits gleich c i sind und die verbleibenden L-l i Bits alle möglichen Kombinationen annehmen. An all diesen Adressen wird s i als erkanntes Zeichen eingetragen, zugleich wird l i als Codewortlänge vermerkt. Deutung: Tabelle baut einen vollständigen, balancierten Baum mit Tiefe 2 L auf SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 14

Decodierung durch Tabelle Einsatz der Tabelle zur Decodierung: 1. Lies L Bits aus dem Eingabestrom in einen Puffer. 2. Benutze den Puffer als Adresse in der Tabelle und gib das erkannte Zeichen s i aus. 3. Entferne die ersten l i Bits aus dem Puffer und ziehe weitere l i Bits aus dem Eingabestrom nach. 4. Weiter mit Schritt 2. Beobachtung Das Tabellenverfahren ist schnell. Die Ausgabe-Zeichenrate ist konstant, aber die Eingabe-Bitrate ist variabel! SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 15 Bemerkungen zum Huffman Code Ein sehr guter Code für viele praktische Zwecke. Nur anwendbar, wenn die Häufigkeiten der Zeichen a priori bekannt und immer gleich (oder ähnlich) sind. Variante: Ermittle die Häufigkeiten für jeden gegebenen Text neu und speichere/übertrage den Code mit den Daten. Ein (durchaus berechenbarer) Verlust entsteht dadurch, dass jedes Zeichen mit einer ganzen Zahl von Bits kodiert werden muss und somit die Codelänge den Häufigkeiten nicht ganz (theoretisch optimal) angepasst werden kann. Verbesserung: arithmetische Kodierung. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 16

Beispiel: FAX Compression der ITU (CCITT) Standard T.4 Erstmals verabschiedet 1980, überarbeitet 1984 und1988 (Fax Gruppe 3) für fehleranfällige Leitungen, insbesondere Telefonleitungen. A4-Dokumente in schwarz/weiß. 100 dots per inch (dpi) oder 3,85 Zeilen/mm vertikal 1728 Pixel pro Zeile Ziel: Übertragung einer Seite in einer Minute bei 4800 bit/s Standard T.6 Erstmals verabschiedet 1984 (Fax Gruppe 4) für fehlerfreie Leitungen oder digitale Speicherung. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 17 Fax Gruppe 3, ITU-T Recommendation T.4 Codierungsansatz 1: Modified Huffman Code (MH) Bild wird als Folge von Pixel-Zeilen betrachtet. Für jede Zeile wird eine Lauflängen-Codierung ermittelt. Die (Lauflänge,Wert)-Beschreibung wird dann Huffman-codiert, mit standardisierter, festgeschriebener Tabelle. Schwarze und weiße Runs werden mit separaten Huffman-Codes behandelt, da die Auftrittswahrscheinlichkeiten der Lauflängen recht unterschiedlich sind. Zur Fehlererkennung wird nach jeder Zeile ein EOL (end-of-line)- Codewort eingefügt. Dies ermöglicht das Wiederaufsetzen nach Bitübertragungsfehlern. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 18

Fax Gruppe 3, ITU-T Recommendation T.4 Codierungsansatz 2: Modified Read (MR) Code Pixelwerte der vorangehenden Zeile werden für die Vorhersage der aktuellen Zeile verwendet. Anschließend wird eine Lauflängen-Codierung und ein statischer Huffman-Code wie bei MH eingesetzt. Auch hier wird ein EOL-Codewort verwendet. Die Codierungsansätze MH und MR werden regelmäßig abgewechselt, um die Fortpflanzung von Fehlern zu vermeiden. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 19 Huffman-Tabelle für Fax Gruppe 3 (Ausschnitt) SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 20

Huffman-Tabelle FAX (Ausschnitt 2) SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 21 Fax Gruppe 4, ITU-T Recommendation T.6 Codierungstechnik: Modified Modified Read Code (MMR) Vereinfachung des MR-Codes; es werden keine Fehlererkennungsmechanismen mehr eingesetzt, um die Kompressionsrate zu erhöhen. Kompressionsraten: Für Fotos u. Ä. ist die Kompressionsrate schlecht, weil dort nur kurze Lauflängen vorkommen. Eine adaptive arithmetische Codierung wäre beispielsweise besser geeignet. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 22

2.4 Arithmetische Codierung Informationstheoretisch gesehen ist die Huffman-Codierung in der Regel nicht ganz optimal, da einem Datenwort stets eine ganzzahlige Anzahl von Bits als Codewort zugewiesen wird. Abhilfe bietet die Arithmetische Codierung. Idee: Eine Nachricht wird als Gleitkommazahl aus dem Intervall [0,1) codiert. Dazu wird das Intervall aufgeteilt nach der Wahrscheinlichkeit der einzelnen Symbole. Jedes Intervall repräsentiert ein Zeichen. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 23 Algorithmus der Arithmetischen Codierung Codierung: 1. Das Intervall [0,1) wird in mehrere Teilintervalle zerlegt, wobei jeweils ein Teilintervall für jedes Zeichen des Alphabets verwendet wird. Die Teilung erfolgt nach den Zeichenwahrscheinlichkeiten. 2. Das nächste zu codierende Zeichen bestimmt das nächste Basisintervall. Dieses Intervall wird wiederum nach den Zeichenwahrscheinlichkeiten unterteilt (bedingte Wahrscheinlichkeit). Dies wird so lange fortgeführt, bis ein Endesymbol erreicht wird oder eine bestimmte Anzahl Zeichen kodiert ist. 3. Eine Zahl aus dem zuletzt entstandenen Intervall wird als Repräsentant für das Intervall gewählt. Am besten wählt man eine Zahl, die sich mit möglichst wenigen Bits darstellen läßt. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 24

Arithmetische Codierung, Beispiel Alphabet = {00, 01, 10, 11} Wahrscheinlichkeiten = {0,1; 0,4; 0,2; 0,3} Die Intervalle werden gemäß der Wahrscheinlichkeit verteilt. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 25 Codierung der Zeichenkette Zu codierende Nachricht: 10 00 11 00 10 11 01 Intervall: 00=[0,0.1), 01=[0.1,0.5), 10=[0.5,0.7), 11=[0.7,1.0) SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 26

Aufbau der Codierung Resultat: wähle Zahl aus Intervall [0.51439, 0.5143948) Ausgabe: 0.51439 SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 27 Decodierungsalgorithmus 1. Das Intervall [0,1) wird wie beim Codierungsprozess unterteilt. 2. Der Code bestimmt das nächste zu unterteilende Basisintervall nach seinem Wert. Dieses Intervall steht für ein bestimmtes Zeichen, das damit decodiert ist. Dies wird so lange fortgeführt, bis das Endesymbol decodiert worden ist oder eine bestimmte vorab festgelegte Anzahl von Zeichen. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 28

Decodierung des Arithmetischen Codes Resultat: Die decodierte Nachricht ist 10 00 11 00 10 11 01 SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 29 Eigenschaften der Arithmetischen Codierung Die Codierung hängt von der Zeichenwahrscheinlichkeit der Zeichenketten und damit vom Kontext ab. Die Wahrscheinlichkeit der Symbole bestimmt die Kompressionseffizienz: wahrscheinlichere Symbole werden in größeren Intervallen codiert und brauchen so weniger Präzisionsbits. Die Code-Länge ist theoretisch optimal: die Anzahl von Bits pro Zeichen kann nicht-ganzzahlig sein und somit der Zeichenwahrscheinlichkeit genauer angepasst werden als bei der Huffman-Codierung. Die Terminierung des Verfahrens beim Dekodieren ist auf mehrere Arten möglich: Die Nachrichtenlänge ist Sender und Empfänger bekannt Es gibt nur eine bestimmte Anzahl von Nachkommastellen (auch dies ist Sender und Empfänger bekannt zu geben) SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 30

Probleme des Arithmetischen Codes Präzision von Maschinen ungenau, so dass overflow oder underflow vorkommen kann Die Decodierung erst möglich nach vollständigem Erhalt der (Teil)-Nachricht, die aus vielen Nachkommastellen bestehen kann. Sehr fehleranfällig: ein Bitfehler zerstört die ganze (Teil)- Nachricht. Exakte Wahrscheinlichkeiten sind oft nicht erhältlich, so daß die maximale theoretische Code-Effizienz praktisch nicht erreicht werden kann. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 31 2.5 Wörterbuch-basierte Codierungstechniken Statische Verfahren: (Pattern Substitution) Das Wörterbuch wird vor der Codierung festgelegt und nicht mehr geändert, weder beim Codieren noch beim Dekodieren. Dynamische Verfahren: (LZW) Das Wörterbuch wird basierend auf der zu übertragenden Nachricht beim Sender bzw. Empfänger aufgebaut. Die Codierung nach Lempel und Ziv (1977) ist eine dynamische wörterbuchbasierte Codierungstechnik. Eine Weiterentwicklung des Algorithmus wird in vielen heute gebräuchlichen Kompressionsverfahren eingesetzt, z.b.lempel-ziv-welch (LZW) im Compress-Befehl von Unix. Das Bildkomprimierungsformat TIFF (Tag Image File Format) basiert auch auf Lempel-Ziv. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 32

Lempel-Ziv Coding (Prinzip) Idee: Der aktuelle Teil einer Nachricht kann durch eine Referenz auf einen bereits vorgekommenen identischen Teil der Nachricht sowie durch dynamisches Erweitern des Wörterbuches ersetzt werden. Prinzip der Codierung: Beginne mit String einer leeren Teilnachricht w = Initialisiere Code-Tabelle mit Einträgen C(i) = {Zeichenvorrat} Lese die Nachricht zeichenweise in Zeichenspeicher K. Setze Teilnachricht w = w+k schrittweise zusammen, bis sie nicht mehr in Tabelle vorkommt. Dann: schreibe die neue Teilnachricht w+k in Tabelle sende den bekannten Index i:{c(i)=w} der Teilnachricht w als Code beginne neue Teilnachricht mit w=k. Anmerkungen: Im Code stehen nur Indizes der dynamisch aufgebauten Codetabelle C(i). Solange Teilnachrichten bereits in Tabelle, hänge neue Zeichen K an w an. Nur wenn Teilnachricht nicht mehr vorhanden, schicke Codewort SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 33 Lempel-Ziv Pseudo Code Pseudocode für LZ-Codierung InitializeStringTable(); WriteCode(ClearCode); w= the empty string; for each character in string { K = GetNextCharacter(); if (w+k is in the string table) then { w= w+k /* String concatenation*/} else { WriteCode(CodeFromString( w)); AddTableEntry( w+k ); w=k } } WriteCode(CodeFromString( w)); SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 34

LZW, Beispiel Alphabet ist {A,B,C,D}. Zu codierender String ABACABA. Initialisieren der Code-Tabelle: #1 = A #2 = B #3 = C #4 = D Wir lesen A aus der Eingabe. Wir finden A in der Tabelle und behalten A im Puffer. Wir lesen B aus der Eingabe und betrachten nun AB. AB ist nicht in der Tabelle: wir fügen AB als #5 an die Tabelle an und schreiben #1 für das erste A in die Ausgabe. Der Puffer enthält jetzt nur noch B. Wir lesen als nächstes A, betrachten BA, fügen es als neuen Eintrag #6 an die Tabelle an und schreiben #2 für B in die Ausgabe. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 35 LZW, Beispiel (2) Am Ende enthält die Code-Tabelle #1 = A #2 = B #3 = C #4 = D #5 = AB #6 = BA #7 = AC #8 = CA #9 = ABA. Der ausgegebene Datenstrom ist #1 #2 #1 #3 #5 #1. Man beachte, dass die Code-Tabelle nicht übertragen werden muss! Übertragen wird nur die initiale Tabelle, die volle Dekodier-Tabelle entsteht dynamisch. Für praktische Anwendungen wird die Länge der Code-Tabelle begrenzt. Die Größe der Tabelle stellt einen Trade-Off zwischen Geschwindigkeit und Kompressionsrate dar. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 36

LZW, Decodierung Der codierte String von ABACABA ist #1#2#1#3#5#1. #1 A #1#2#1#3#5#1 #2 B A B A C AB A #3 C #4 D #5 AB #6 BA #7 AC #8 CA #9 ABA. Die Codetabelle wird aus dem Datenstrom und den Anfangswerten wieder erzeugt, da die Tabelle immer vorwärts codiert. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 37 Eigenschaften der LZW-Codierung Das Wörterbuch enthält die am häufigsten vorkommenden Zeichenketten. Es wird automatisch beim Dekodieren aufgebaut und muss nicht zusätzlich übertragen werden. Es paßt sich dynamisch an die Eigenschaften der Zeichenkette an. Die Codierung wird in O(N), N = Länge der nichtcodierten Nachricht, Decodierung in O(M), M = Länge der codierten Nachricht, durchgeführt. Damit ist die Dekodierung sehr effizient. Da mehrere Symbole in eine Codierungseinheit kombiniert werden, ist M <= N und Lempel-Ziv in der Regel effizienter als Huffman. SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 38

Ergebnisse im Vergleich Typische Beispiele für Dateigrößen nach der Kompression in Prozent der Ursprungsgröße: SS 2009 Multimediale Informationsverarbeitung: Repräsentation und Codierung 39