18.11.2013 Aufrufe

Einführung in die Medieninformatik 1 - TZI

Einführung in die Medieninformatik 1 - TZI

Einführung in die Medieninformatik 1 - TZI

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong><br />

Me<strong>die</strong>n<strong>in</strong>formatik 1<br />

W<strong>in</strong>tersemester 2007/08<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 1


Plan (vorläufig)<br />

31.10. <strong>E<strong>in</strong>führung</strong><br />

7.11. Menschen: Wahrnehmung<br />

14.11. Menschen: Wahrnehmung<br />

21.11. Me<strong>die</strong>n: Digitalisierung<br />

28.11. Me<strong>die</strong>n: Bilder<br />

5.12. Me<strong>die</strong>n: Kompression<br />

12.12. Me<strong>die</strong>n: Texte und Typographie<br />

19.12. Me<strong>die</strong>n: Audio: Grundlagen und Bearbeitung<br />

9.01. Menschen und Me<strong>die</strong>n: Interaktion<br />

16.01. Web: Grundlagen + Techniken<br />

23.01. Me<strong>die</strong>n: Video<br />

30.01. Zukunft Digitaler Me<strong>die</strong>n, Zusammenfassung und Ausblick<br />

6.02. Abschluss-Event (ganztägig!)<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 2


<strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Me<strong>die</strong>n<strong>in</strong>formatik 1<br />

Teil 5: Kompression<br />

Viele Folien He<strong>in</strong>rich Hußmann (München) und e<strong>in</strong> paar<br />

von Jürgen Friedrich (Bremen)<br />

Vorlesung<br />

W<strong>in</strong>tersemester 2007/08<br />

Ra<strong>in</strong>er Malaka<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 3


Speicherbedarf multimedialer Information<br />

• Daten vom letzten Mal (Ko<strong>die</strong>rung):<br />

– Bsp. Audio-Signale<br />

• Sprache, niedrige Qualität (Mono, 8 bit, 8 kHz): 64 kbit/s<br />

• CD-Qualität (Stereo, 16 bit, 44,1 kHz): 0,7 Mbit/s pro Kanal<br />

• E<strong>in</strong>e M<strong>in</strong>ute Musik <strong>in</strong> CD-Qualität: 10,5 MByte<br />

– Bsp. Bilder (9x13cm mit 300 ppi = 1062x1536 Pixel)<br />

• Schwarz/weiß (1 bit Farbtiefe): ca. 200 kByte<br />

• TrueColor (24 bit Farbtiefe): 4,5 MByte<br />

– Bsp. Video (ohne Ton)<br />

• 720 x 525 Pixel, 25 Bilder/s, 16 bit Farbtiefe: 151,2 Mbit/s<br />

• 1280 x 720 Pixel, 60 Bilder/s, 24 bit Farbtiefe: 1,32 Gbit/s<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 4


Downloadzeiten<br />

Format<br />

Sampl<strong>in</strong>g<br />

Rate<br />

Quantisierung<br />

Unkomprimierte<br />

Dateigröße [byte]<br />

(1 M<strong>in</strong>ute)<br />

Downloadzeit<br />

bei<br />

56kb/s<br />

Downloadzeit<br />

bei<br />

1,5Mb/s<br />

Sprache/Tele<br />

fon<br />

8 KHz<br />

8 bit<br />

480.000<br />

Ca.<br />

1 m<strong>in</strong> 8 s<br />

2,56 s<br />

CD (stereo)<br />

44,1 KHz<br />

16 bit pro<br />

Kanal<br />

10.584.000<br />

> 25 m<strong>in</strong><br />

ca. 56 s<br />

Video<br />

720 x 525<br />

Pixel, 25<br />

Bilder/s<br />

16 bit pro<br />

Pixel und<br />

Kanal<br />

1.144.584.000<br />

Ca.<br />

> 45 h<br />

Ca.<br />

101 m<strong>in</strong><br />

Sound:<br />

44,1 KHz<br />

Kompressionsverfahren können <strong>die</strong> Datenmengen wesentlich reduzieren<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 5


Kompression<br />

• Def<strong>in</strong>ition<br />

– Form der Datenko<strong>die</strong>rung, <strong>die</strong> zu e<strong>in</strong>er Reduzierung der Größe des<br />

Abbilds im Verhältnis zum Orig<strong>in</strong>al führt (Elim<strong>in</strong>ierung der Redundanz)<br />

– Ziel: Reduzierung der benötigten Ressourcen<br />

(Platzbedarfs auf e<strong>in</strong>em Speichermedium bzw. Bandbreite e<strong>in</strong>es<br />

Übertragungskanals)<br />

• Typen<br />

– Verlustfreie Kompression (Redundanzreduktion):<br />

Orig<strong>in</strong>al kann vollständig wiederhergestellt werden<br />

– Verlustbehaftete Kompression (Irrelevanzreduktion):<br />

Orig<strong>in</strong>al kann nur unvollständig wiederhergestellt werden<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 6


Exkurs: Information und Repräsentation<br />

V = Menge von Werten (Interpretationen, Bedeutungen)<br />

R = Menge von Repräsentationen (Darstellungswerte)<br />

Abbildung<br />

I : R → V Interpretation<br />

Umkehrung zur Interpretation: Repräsentationsbeziehung<br />

I -1 : V → R<br />

V<br />

Klassische Beispiele:<br />

V = Zahlwerte, R = B<strong>in</strong>ärzahlen<br />

V = Abbildungen, R = Programme<br />

I<br />

Hier betrachtete Beispiele:<br />

V = Text, Bilder, Klänge (z.B.)<br />

R = GIF-Datei, R = WAV-Daten, ...<br />

R<br />

(nach Broy: Informatik Teil I)<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 7


Informationsverarbeitung<br />

• Information ist e<strong>in</strong> abstrakter Begriff.<br />

• Computer verarbeiten immer Repräsentationen.<br />

• Informationsverarbeitung ist Repräsentationsverarbeitung.<br />

• Me<strong>die</strong>n s<strong>in</strong>d spezielle Repräsentationen von Information.<br />

V<br />

I -1<br />

I<br />

R<br />

Transformation, Übertragung<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 8


Semiotische Ebenen<br />

• Semiotik = Theorie der Zeichen und Symbole<br />

• Klassische Term<strong>in</strong>ologie der Semiotik: Syntax,<br />

Semantik, Pragmatik<br />

Pragmatik (Wirkung)<br />

Sender<br />

Semantik (Bedeutung)<br />

Empfänger<br />

Syntax (Zeichen)<br />

Bezug zur traditionellen Informatik:<br />

Syntax = Repräsentationen (Menge R)<br />

Semantik = Informationsgehalt (Menge V)<br />

Pragmatik wird als irrelevant angesehen<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 9


Semiotische Ebenen <strong>in</strong> der Me<strong>die</strong>n<strong>in</strong>formatik<br />

Für Me<strong>die</strong>n müssen alle semiotischen Ebenen betrachtet werden.<br />

– Z.B. Wirkung e<strong>in</strong>es Textes abhängig von der grafischen Darstellungsform (Farbe,<br />

Größe, Platzierung)<br />

Pragmatik (Wirkung)<br />

Sender<br />

Semantik (Bedeutung)<br />

Syntax (Zeichen)<br />

Empfänger<br />

Kanal (Träger)<br />

Bemerkung: Für <strong>die</strong> technische Realisierung s<strong>in</strong>d Eigenschaften des<br />

physikalischen Trägers der Repräsentation ebenfalls wesentlich.<br />

– Z.B. Speicherbedarf, Frequenzspektrum<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 10


Stochastische Informationstheorie: Zeichenvorräte und Ko<strong>die</strong>rung<br />

• E<strong>in</strong> Zeichenvorrat ist e<strong>in</strong>e endliche Menge von Zeichen.<br />

• E<strong>in</strong>e Nachricht (im Zeichenvorrat A) ist e<strong>in</strong>e Sequenz von Zeichen aus A<br />

• Seien A und B Zeichenvorräte.<br />

E<strong>in</strong>e Ko<strong>die</strong>rung c ist e<strong>in</strong>e Abbildung von Nachrichten <strong>in</strong> A auf Nachrichten <strong>in</strong><br />

B.<br />

c: A → B* (B* : Zeichenreihen über B)<br />

• Wir beschränken uns meist auf b<strong>in</strong>äre Co<strong>die</strong>rungen, d.h. B = { 0, 1 }<br />

• Die Informationstheorie (nach Shannon) befasst sich mit Nachrichtenquellen<br />

auf der Ebene der Syntax aus stochastischer Sicht<br />

– Zeichen und zugehörige Ko<strong>die</strong>rung haben immer identische Interpretation<br />

A<br />

a<br />

a<br />

b<br />

b<br />

c<br />

c<br />

d<br />

d<br />

B<br />

a<br />

O 1<br />

b<br />

Beispiel:<br />

abca → 00011000<br />

ddc → 111110<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 11


Interpretation und Ko<strong>die</strong>rung<br />

• Es gibt Ko<strong>die</strong>rungen verschiedener Effizienz für <strong>die</strong> gleiche<br />

Information.<br />

• Die Informationstheorie betrachtet e<strong>in</strong>e Informationsquelle nach<br />

Eigenschaften, <strong>die</strong> e<strong>in</strong>e bessere (kürzere) Ko<strong>die</strong>rung erlauben.<br />

• Informationsquelle wird durch e<strong>in</strong>en Basiszeichenvorrat mit<br />

zusätzlichen Informationen (z.B. Häufigkeitsverteilung) erfasst.<br />

V<br />

=<br />

Identische Information<br />

I -1<br />

I<br />

A<br />

c<br />

Bessere (kle<strong>in</strong>ere) Repräsentation<br />

B<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 12


Entropie (1)<br />

• Annahme Stochastische Nachrichtenquelle: Wir kennen <strong>die</strong><br />

Häufigkeitsverteilung der Zeichen <strong>in</strong> den Nachrichten.<br />

• Entscheidungsgehalt (Entropie) der Nachrichtenquelle:<br />

– Wie viele Ja/Ne<strong>in</strong>-Entscheidungen entsprechen dem Auftreten e<strong>in</strong>es<br />

E<strong>in</strong>zelzeichens?<br />

– E<strong>in</strong>e Ja/Ne<strong>in</strong>-Entscheidung = 1 „bit“<br />

• Beispiele:<br />

Quelle 1 Zeichen a A B C D<br />

p a = Häufigkeit<br />

x a = Zahl der<br />

Entscheidungen<br />

Häufigk. p a<br />

1 0 0 0<br />

x a 0 - - -<br />

Quelle 2 Zeichen a A B C D<br />

Häufigk. p a 0.25 0.25 0.25 0.25<br />

x a 2 2 2 2<br />

2 x a = 1/p a<br />

x a = ld (1/p a )<br />

(Logarithmus<br />

zur Basis 2)<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 13


Entropie (2)<br />

• Durchschnittlicher Entscheidungsgehalt je Zeichen: Entropie H<br />

H<br />

=<br />

∑<br />

a∈A<br />

p<br />

a<br />

⎛<br />

ld<br />

⎜<br />

⎝<br />

1<br />

p<br />

a<br />

⎞<br />

⎟<br />

⎠<br />

mit x a = ld (1/p a ):<br />

Quelle 1 Zeichen a A B C D<br />

Häufigk. p a 1 0 0 0<br />

x a 0 - - -<br />

Quelle 2 Zeichen a A B C D<br />

Häufigk. p a 0.25 0.25 0.25 0.25<br />

x a 2 2 2 2<br />

Quelle 3 Zeichen a A B C D<br />

Häufigk. p a 0.5 0.25 0.125 0.125<br />

x a 1 2 3 3<br />

Entropie ist Maß für „Unordnung“, „Zufälligkeit“<br />

H =<br />

∑<br />

a∈A<br />

H = 0<br />

H = 2<br />

p a<br />

x a<br />

H = 1.75<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 14


Wortlängen und Redundanz<br />

• E<strong>in</strong>e (B<strong>in</strong>är-)Co<strong>die</strong>rung der Nachrichten e<strong>in</strong>er stochastischen<br />

Nachrichtenquelle ergibt e<strong>in</strong>e durchschnittliche Wortlänge L.<br />

L =<br />

∑<br />

a∈A<br />

p a<br />

c(a)<br />

Quelle 2 Zeichen a A B C D<br />

Häufigk. p a 0.25 0.25 0.25 0.25<br />

Code c(a) 00 01 10 11<br />

H = 2<br />

L = 2<br />

Quelle 3 Zeichen a A B C D<br />

Häufigk. p a 0.5 0.25 0.125 0.125<br />

Code c(a) 00 01 10 11<br />

• Redundanz = L – H<br />

H = 1.75<br />

L = 2<br />

• Redundanz ist e<strong>in</strong> Maß für <strong>die</strong> Güte der Ko<strong>die</strong>rung: möglichst kle<strong>in</strong>!<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 15


Optimale Ko<strong>die</strong>rung<br />

• E<strong>in</strong>e Co<strong>die</strong>rung ist optimal, wenn <strong>die</strong> Redundanz 0 ist.<br />

• Durch geeignete Ko<strong>die</strong>rung (z.B. Wortko<strong>die</strong>rung statt<br />

E<strong>in</strong>zelzeichenko<strong>die</strong>rung) kann man <strong>die</strong> Redundanz beliebig<br />

niedrig wählen.<br />

• Redundanz ermöglicht andererseits <strong>die</strong> Rekonstruktion<br />

fehlender Nachrichtenteile!<br />

– B ispi l: Natürlich Sprach<br />

– Beispiel: Fehlererkennende und -korrigierende Codes (z.B. Paritätsbits)<br />

Quelle 3 Zeichen a A B C D<br />

Häufigk. p a 0.5 0.25 0.125 0.125<br />

Code c(a)<br />

00 01 10 11<br />

Quelle 3 Zeichen a A B C D<br />

Häufigk. p a 0.5 0.25 0.125 0.125<br />

Code c’(a)<br />

0 10 110 111<br />

H = 1.75<br />

L = 2<br />

H = 1.75<br />

L = 1.75<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 16


Grundidee zur Huffman-Ko<strong>die</strong>rung<br />

• Zeichen größerer Häufigkeit werden durch kürzere Codes repräsentiert<br />

– vgl. Morse-Code<br />

• Das führt zu e<strong>in</strong>em Code variabler Wortlänge<br />

• In fortlaufenden Signalen muss gelten:<br />

– Ke<strong>in</strong> Codewort darf Anfang e<strong>in</strong>es anderen se<strong>in</strong> (Fano-Bed<strong>in</strong>gung)<br />

• In optimalem Code müssen <strong>die</strong> beiden Symbole der niedrigsten Häufigkeit<br />

mit gleicher Länge co<strong>die</strong>rt se<strong>in</strong>.<br />

"Beweis"-Skizze:<br />

– Wären <strong>die</strong> Längen verschieden, könnte man das längere Wort bei der Länge des kürzeren<br />

abschneiden<br />

• Dann s<strong>in</strong>d <strong>die</strong> beiden Codes verschieden (sonst wäre Fano-Bed<strong>in</strong>gung vorher verletzt<br />

gewesen)<br />

• Ke<strong>in</strong> anderes Codewort kann länger se<strong>in</strong> (da Zeichen niedrigster Wahrsche<strong>in</strong>lichkeit),<br />

also kann <strong>die</strong> Kürzung nicht <strong>die</strong> Fano-Bed<strong>in</strong>gung verletzen<br />

– Dann hätten wir e<strong>in</strong>en neuen Code mit kle<strong>in</strong>erer durchschnittlicher Wortlänge!<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 17


Huffman-Ko<strong>die</strong>rung (1)<br />

• Gegeben: Zeichenvorrat und Häufigkeitsverteilung<br />

• Ergebnis: Co<strong>die</strong>rung<br />

(optimal, wenn alle Häufigkeiten Kehrwerte von Zweierpotenzen s<strong>in</strong>d)<br />

• Wiederholte Anwendung <strong>die</strong>ses Schritts auf <strong>die</strong> Häufigkeitstabelle:<br />

– Ersetze <strong>die</strong> beiden E<strong>in</strong>träge niedrigster Häufigkeit durch e<strong>in</strong>en Codebaum mit zwei Ästen<br />

„0“ und „1“ und trage <strong>die</strong> Summe der Häufigkeiten als Häufigkeit dafür e<strong>in</strong>.<br />

Zeichen A B C D<br />

Häufigkeit 0.5 0.25 0.125 0.125<br />

0 1<br />

Zeichen A B C D<br />

Häufigkeit 0.5 0.25 0.25<br />

David Huffman 1951<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 18


Huffman-Co<strong>die</strong>rung (2)<br />

0 1<br />

Zeichen A B C D<br />

Häufigkeit 0.5 0.25 0.25<br />

0 1<br />

B 0 1<br />

Zeichen A C D<br />

Häufigkeit 0.5 0.5<br />

0 1<br />

A 0 1<br />

B<br />

0 1<br />

C D<br />

Resultierender Baum<br />

Ko<strong>die</strong>rung entspricht<br />

Markierung entlang<br />

des Pfades<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 19


Huffman-Co<strong>die</strong>rung (3)<br />

• E<strong>in</strong>e Nachricht, <strong>die</strong> sich an <strong>die</strong> gegebene Häufigkeitsverteilung hält:<br />

ababacadaabacdba (Länge = 16 Zeichen)<br />

• Co<strong>die</strong>rung mit festen Wortlängen<br />

(z.B. a = 00, b = 01, c = 10, d = 11)<br />

Länge 32 bit<br />

• Huffman-Co<strong>die</strong>rung<br />

( a = 0, b = 10, c = 110, d = 111)<br />

0100100110011100100110111100<br />

Länge 27 bit<br />

(d.h. ca. 16% Reduktion)<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 20


Experiment: Huffman-Kompression von Bildern<br />

• Grautonbild, 256 x 256 Pixel, 8 bit (d.h. 256 Graustufen)<br />

• Unkomprimiert: 65.536 Bytes<br />

• Mit Huffman ko<strong>die</strong>rt: 40.543 Bytes ca. 38% Reduktion<br />

• E<strong>in</strong>facher "Zusatztrick":<br />

– Differenz zwischen benachbarten Pixeln speichern<br />

und Huffman dann anwenden<br />

33.880 Bytes ca. 51% Reduktion<br />

– Ke<strong>in</strong>e universelle Kompression mehr, sondern speziell für Pixelbilder<br />

– "semantischen Ko<strong>die</strong>rung"<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 21


Lauflängenco<strong>die</strong>rung<br />

• Unkomprimierte Repräsentationen von Information enthalten häufig<br />

Wiederholungen desselben Zeichens<br />

(z.B. lange Folgen von x00- oder xFF-Bytes)<br />

• Idee: Ersetzen e<strong>in</strong>er Folge gleicher Zeichen durch 1 Zeichen + Zähler<br />

• E<strong>in</strong>gesetzt z.B. <strong>in</strong> Fax-Standards<br />

• Beispiel:<br />

aaaabcdeeefgggghiabtttiikkkddde<br />

ersetzt durch<br />

#a4bcd#e3f#g4hiab#t3#i2#k3#d3e<br />

• Probleme:<br />

– Bei ger<strong>in</strong>ger Häufigkeit von Wiederholungen <strong>in</strong>effektiv (verschlechternd)<br />

– Syntaktische Trennung von Wiederholungs<strong>in</strong>dikatoren und unverändertem Code<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 22


• Grundidee:<br />

Wörterbuch-Kompressionen<br />

– Suche nach dem "Vokabular" des Dokuments, d.h. nach sich wiederholenden<br />

Teilsequenzen<br />

– Erstelle Tabelle: Index --> Teilsequenz ("Wort")<br />

– Tabelle wird dynamisch während der Ko<strong>die</strong>rung aufgebaut<br />

– Co<strong>die</strong>re Orig<strong>in</strong>al als Folge von Indizes<br />

• Praktische Algorithmen:<br />

– Abraham Lempel, Jacob Ziv (Israel), Ende 70er-Jahre<br />

• LZ77- und LZ78-Algorithmen<br />

– Verbessert 1984 von A. Welch = "LZW"-Algorithmus<br />

(Lempel/Ziv/Welch)<br />

– Basis vieler semantikunabhängiger Kompressionsverfahren<br />

(z.B. UNIX "compress", Zip, gzip, V42.bis)<br />

– Verwendet <strong>in</strong> vielen Multimedia-Datenformaten (z.B. GIF)<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 23


Pr<strong>in</strong>zip der LZW-Co<strong>die</strong>rung<br />

• Nicht alle Teilworte <strong>in</strong>s Wörterbuch, sondern nur solche, <strong>die</strong> um e<strong>in</strong> Zeichen<br />

länger s<strong>in</strong>d, als bisher bekannte<br />

• Teilworte bilden e<strong>in</strong>e "Kette" von Teilworten, <strong>die</strong> sich um je e<strong>in</strong> Zeichen<br />

überschneiden.<br />

• Sequentieller Aufbau:<br />

Neu e<strong>in</strong>zutragendes Teilwort = Kürzestes ("erstes") noch nicht<br />

e<strong>in</strong>getragenes Teilwort<br />

• Beispiel:<br />

b a n a n e n a n b a u<br />

ba an na ane en nan nb bau<br />

• Co<strong>die</strong>rung:<br />

b a n a n e n a n b a u<br />

Neu <strong>in</strong>s Wörterbuch e<strong>in</strong>zutragen, co<strong>die</strong>rt nach altem Wb.-Zustand<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 24


LZW-Co<strong>die</strong>rung (1)<br />

• Tabelle mit Abbildung: Zeichenreihe Indizes<br />

• Vorbesetzung der Tabelle mit fest vere<strong>in</strong>barten Codes für E<strong>in</strong>zelzeichen<br />

(muß nicht explizit gespeichert und übertragen werden)<br />

• Pr<strong>in</strong>zipieller Ablauf:<br />

Str<strong>in</strong>g w = “NächstesE<strong>in</strong>gabezeichen“;<br />

Wiederhole bis E<strong>in</strong>gabeende:<br />

{ Char z = NächstesE<strong>in</strong>gabezeichen;<br />

Str<strong>in</strong>g v = w + “z“<br />

Falls v <strong>in</strong> Tabelle enthalten ist<br />

w = v;<br />

Sonst<br />

{ Trage v neu <strong>in</strong> Tabelle e<strong>in</strong><br />

(und erzeuge neuen Index dafür);<br />

Schreibe Tabellen<strong>in</strong>dex von w auf Ausgabe;<br />

w = “z“;<br />

}<br />

}<br />

Schreibe Tabellen<strong>in</strong>dex von w auf Ausgabe;<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 25


Algorithmus-Beschreibung (“Pseudo-Code”)<br />

• Variablen (ähnlich zu C/Java-Syntax):<br />

– Datentyp fett geschrieben, gefolgt vom Namen der Variablen<br />

– Zuweisung an Variable mit “=“<br />

• Datentypen:<br />

– <strong>in</strong>t: Ganze Zahlen<br />

– Char: Zeichen (Buchstaben, Zahlen, Sonderzeichen)<br />

– Str<strong>in</strong>g: Zeichenreihen (Sequenzen von Zeichen)<br />

• E<strong>in</strong>elementige Zeichenreihe aus e<strong>in</strong>em Zeichen: “x“<br />

• Ane<strong>in</strong>anderreihung (Konkatenation) mit +<br />

• NächstesE<strong>in</strong>gabezeichen:<br />

– Liefert nächstes Zeichen der E<strong>in</strong>gabe und schaltet Leseposition im E<strong>in</strong>gabepuffer<br />

um e<strong>in</strong> Zeichen weiter<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 26


LZW-Co<strong>die</strong>rung (2)<br />

• Vorbesetzte Tabelle (z.B. mit ASCII-Codes):<br />

[(, 97), (, 98), (, 99), (, 100), (, 101), (, 102), (, 103),<br />

(, 104), (, 105), (, 106), (, 107), (, 108), (, 109),<br />

(, 110), (, 111), (, 112), (, 113), (, 114), (, 115),<br />

(, 116), (, 117), (, 118), (, 119), (, 120), (, 121),<br />

(, 122)]<br />

• Für neue E<strong>in</strong>träge z.B. Nummern von 256 aufwärts verwendet.<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 27


LZW-Co<strong>die</strong>rung (3)<br />

• Beispieltext: “bananenanbau"<br />

• Ablauf:<br />

Lesen (z)<br />

Codetabelle schreiben (v = w + “z“)<br />

Ausgabe<br />

Puffer füllen (w)<br />

b<br />

<br />

a<br />

(, 256)<br />

98 (b)<br />

<br />

n<br />

(, 257)<br />

97 (a)<br />

<br />

a<br />

(, 258)<br />

110 (n)<br />

<br />

n<br />

<br />

e<br />

(, 259)<br />

257 (an)<br />

<br />

n<br />

(, 260)<br />

101 (e)<br />

<br />

a<br />

<br />

n<br />

(, 261)<br />

258 (na)<br />

<br />

b<br />

(, 262)<br />

110 (n)<br />

<br />

a<br />

<br />

u<br />

(, 263)<br />

256 (ba)<br />

<br />

EOF<br />

117 (u)<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 28


Kompression durch LZW<br />

• Am Beispiel:<br />

– 9 (16-Bit-)Worte statt 12 (16-Bit-)Worte, d.h. 25%<br />

• In realen Situationen werden oft ca. 50% erreicht.<br />

• Verfe<strong>in</strong>erungen des Algorithmus (z.B. Unix<br />

"compress"):<br />

– Obergrenze für Tabellengröße, dann statisch<br />

– Laufendes Beobachten der Kompressionsrate und ggf. Neustart<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 29


LZW-Deco<strong>die</strong>rung bei bekannter Tabelle<br />

Wiederhole solange E<strong>in</strong>gabe nicht leer:<br />

{ k = NächsteE<strong>in</strong>gabezahl;<br />

Schreibe Zeichenreihe mit Tabellen<strong>in</strong>dex k auf Ausgabe;<br />

}<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 30


LZW-Deko<strong>die</strong>rung (1)<br />

• Grundidee („symmetrische Ko<strong>die</strong>rung“):<br />

– Das aufgebaute Wörterbuch muss nicht zum Empfänger übertragen werden.<br />

– Das Wörterbuch wird nach dem gleichen Pr<strong>in</strong>zip wie bei der Ko<strong>die</strong>rung bei der Deko<strong>die</strong>rung dynamisch<br />

aufgebaut.<br />

– Das funktioniert, weil bei der Ko<strong>die</strong>rung immer zuerst der neue E<strong>in</strong>trag für das Wörterbuch nach<br />

bekannten Regeln aus dem schon gelesenen Text aufgebaut wird, bevor der neue E<strong>in</strong>trag <strong>in</strong> der<br />

Ausgabe verwendet wird.<br />

• Algorithmusidee:<br />

– Neu e<strong>in</strong>zutragendes Teilwort = letztes Teilwort plus erstes Zeichen des aktuellen Teilworts<br />

b a n a n e n a n b a u<br />

ba an na ane en nan nb bau<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 31


LZW-Deco<strong>die</strong>rung (2)<br />

• Pr<strong>in</strong>zipieller Algorithmus:<br />

<strong>in</strong>t k = NächsteE<strong>in</strong>gabezahl;<br />

Str<strong>in</strong>g w = Zeichenreihe mit Tabellen<strong>in</strong>dex k;<br />

Schreibe w auf Ausgabe<br />

Wiederhole solange E<strong>in</strong>gabe nicht leer:<br />

{ k = NächsteE<strong>in</strong>gabezahl;<br />

Str<strong>in</strong>g akt = Zeichenreihe mit Tabellen<strong>in</strong>dex k;<br />

Schreibe akt auf Ausgabe;<br />

Char q = erstes Zeichen von akt;<br />

Trage w + “q“ <strong>in</strong> Tabelle e<strong>in</strong><br />

(und erzeuge neuen Index dafür);<br />

w = akt;<br />

}<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 32


LZW-Deko<strong>die</strong>rung (3)<br />

• Beispielzeichenreihe: “98-97-110-257-101-258-110-256-117"<br />

• Ablauf:<br />

Lesen<br />

(k)<br />

98<br />

97<br />

110<br />

257<br />

101<br />

258<br />

110<br />

256<br />

117<br />

EOF<br />

Ausgabe<br />

(q ist jeweils<br />

unterstriche<br />

n)<br />

b<br />

a<br />

n<br />

an<br />

e<br />

na<br />

n<br />

ba<br />

u<br />

Letztes<br />

Wort (w)<br />

b<br />

a<br />

n<br />

an<br />

e<br />

na<br />

n<br />

ba<br />

Codetabelle schreiben<br />

(w + “q“)<br />

(, 256)<br />

(, 257)<br />

(, 258)<br />

(, 259)<br />

(, 260)<br />

(, 261)<br />

(, 262)<br />

(, 263)<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 33


LZW-Deko<strong>die</strong>rung (4)<br />

• Beispieltext: “abababa…."<br />

• Ablauf Ko<strong>die</strong>rung:<br />

Lesen (z)<br />

Codetabelle schreiben (v = w + “z“)<br />

Ausgabe<br />

Puffer füllen (w)<br />

a<br />

<br />

b<br />

(, 256)<br />

97 (a)<br />

<br />

a<br />

(, 257)<br />

98 (b)<br />

<br />

b<br />

<br />

a<br />

(, 258)<br />

256 (ab)<br />

<br />

b<br />

<br />

a<br />

<br />

b<br />

(, 259)<br />

258 (aba)<br />

<br />

a<br />

<br />

b<br />

(, 260)<br />

257 (ba)<br />

<br />

a<br />

<br />

b<br />

<br />

a<br />

(, 261)<br />

260 (bab)<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik<br />

<br />

1 34


LZW-Deco<strong>die</strong>rung (5)<br />

• Beispielzeichenreihe: “abababa...“, Beispielcode: “97-98-256-258“<br />

• Ablauf:<br />

Lesen<br />

(k)<br />

Ausgabe<br />

(q ist jeweils<br />

unterstrichen)<br />

Letztes<br />

Wort (w)<br />

Codetabelle schreiben<br />

(w + “q“)<br />

97<br />

a<br />

98<br />

b<br />

a<br />

(, 256)<br />

256<br />

ab<br />

b<br />

(, 257)<br />

258<br />

???<br />

ab<br />

a b a b a b a …<br />

ab ba aba aba...<br />

Deco<strong>die</strong>rung<br />

ist so noch nicht<br />

korrekt!<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 35


LZW-Deco<strong>die</strong>rung, vollständige Fassung<br />

<strong>in</strong>t k = NächsteE<strong>in</strong>gabezahl;<br />

Str<strong>in</strong>g w = Zeichenreihe mit Tabellen<strong>in</strong>dex k;<br />

Str<strong>in</strong>g akt = ““;<br />

Schreibe w auf Ausgabe<br />

Wiederhole solange E<strong>in</strong>gabe nicht leer:<br />

{ k = NächsteE<strong>in</strong>gabezahl;<br />

Falls Index k <strong>in</strong> Tabelle enthalten dann<br />

{ akt = Zeichenreihe mit Tabellen<strong>in</strong>dex k;<br />

Char q = erstes Zeichen von akt;<br />

}<br />

sonst<br />

{ Char q = erstes Zeichen von w;<br />

akt = w + “q“;<br />

}<br />

Schreibe akt auf Ausgabe;<br />

Trage w + “q“ <strong>in</strong> Tabelle e<strong>in</strong><br />

(und erzeuge neuen Index dafür);<br />

w = akt;<br />

}<br />

Prof. Dr. Ra<strong>in</strong>er Malaka, Digitale Me<strong>die</strong>n Me<strong>die</strong>n<strong>in</strong>formatik 1 36

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!