Einführung in die Medieninformatik 1 - TZI
Einführung in die Medieninformatik 1 - TZI
Einführung in die Medieninformatik 1 - TZI
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