Kompression. Tim Kilian

Ähnliche Dokumente
Kompression. Tim Kilian

Einführung in die Informatik II Aus der Informationstheorie: Datenkompression

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Wintersemester 2012/13. Dr. Tobias Lasser. 7 Fortgeschrittene Datenstrukturen

Algorithmen und Datenstrukturen (für ET/IT)

16 - Kompressionsverfahren für Texte

Kompressionsverfahren für Texte

Algorithmen und Datenstrukturen (für ET/IT)

Effiziente Algorithmen und Komplexitätstheorie

RLE Arithm. Shannon Fano Huffman Grenzen. Komprimierung. Ingo Blechschmidt, Michael Hartmann. 6. Dezember 2006

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

Verlustfreie Kompression

Algorithmen und Datenstrukturen (für ET/IT)

Einleitung. Kapitel 1

Kapitel 7: Optimalcodierung und Huffman Coding

Informatik II, SS 2018

Datenkompression: Kontext- und Wörterbuchtechniken. H. Fernau

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

Farb-Fernsehsignal (Composite FBAS)

Algorithmen und Datenstrukturen (für ET/IT)

Informatik II, SS 2016

2. Digitale Codierung und Übertragung

Referat zum Thema Huffman-Codes

Seite 2 Information = Unsicherheit e Info (e) := - log p(e) Info ( A und B) = Info (A) + Info (B) Definition: = Info (nie eintretendes Ereignis) eines

Digitale Medien. Übung

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

3 Codierung diskreter Quellen. Quelle Quellcodierer Kanalcodierer reduziert die benötigte Datenmenge. fügt Daten zur Fehlerkorrektur ein.

Textkompression. Komprimierung von Daten. Runlength Komprimierung (2) Runlength Komprimierung (1) Herkömmliche Kodierung. Runlength Komprimierung (3)

Panorama der Mathematik und Informatik

Vorlesung 12. Quellencodieren und Entropie

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

Inhaltsverzeichnis. 1 Einführung 1

Notation und Einführung

2.7 Der Shannon-Fano-Elias Code

Datenkompression. 1 Allgemeines. 2 Verlustlose Kompression. Holger Rauhut

Theoretische Grundlagen der Informatik. Vorlesung am 31. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Diskrete Mathematik II

Kapitel 2 Quellencodierung

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

Kolmogoroffkomplexität Teil 3 Informationstheorie und Kodierung. Torsten Steinbrecher

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Gierige Algorithmen Interval Scheduling

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

21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3

Übung zur Vorlesung. Vorlesung: Heinrich Hußmann Übung: Renate Häuslschmid, Hanna Schneider

Effiziente Algorithmen und Komplexitätstheorie

2. Digitale Codierung und Übertragung

Wann sind Codes eindeutig entschlüsselbar?

2. Digitale Codierung und Übertragung

ADS: Algorithmen und Datenstrukturen 2

21. Dynamic Programming III

Digitale Medien. Übung

Mathematik für Information und Kommunikation

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

3. Woche Information, Entropie. 3. Woche: Information, Entropie 45/ 238

Grundlagen der Informationstheorie. Hanna Rademaker und Fynn Feldpausch

Hauptdiplomklausur Informatik Februar 2006: Multimedia Systems

Grundbegriffe der Informatik Tutorium 3

Einführungsvortrag zum Proseminar Datenkompression im Wintersemester 2003/2004

Entropie. Um der Begriff der Entropie zu erläutern brauchen wir erst mal einige Definitionen, z.b.

12. Übung TGI. (mit Teil 2 der 11. Übung) Lorenz Hübschle-Schneider, Tobias Maier INSTITUT FÜR THEORETISCHE INFORMATIK, PROF.

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

Vorlesung 15a. Quellencodieren und Entropie

Kompressionsverfahren

Themen Medientechnik II. Grundlagen der Bildkompression (Teil 1) Claude E. Shannon ( ) Digitale Bildübertragungsstrecke

Informatik II, SS 2018

Definition Information I(p)

1 Kompressionsarten Verlustfreie Kompression Verlustbehaftete Kompression... 3

Digitale Medien. Übung zur Vorlesung. Vorlesung: Heinrich Hußmann Übung: Renate Häuslschmid

Informationsgehalt einer Nachricht

LZSS und Deflate. Lars Kunert. April 18, Seminar Kompressionsalgorithmen RWTH Aachen

Seminar. Codierungstheorie

Einführung in Kompressionstechniken

Molekulare Bioinformatik

Definition Information I(p)

Einführung Proseminar Datenkompression Wintersemester 2017/2018

h = 1 7 ( ) = 21 7 = 3

Plug&Play Kompression mit dem Framework. Dominik Köppl Vortragsreihe der Regionalgruppe der Gesellschaft für Informatik aus Dortmund 4.

Freie Universität Berlin. Seminar Talk. Datenkompression. Zacharias V. Fisches 2. Mai 2017

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

Information und Codierung

Beispiel: Zeigen Sie, dass H(x) = H 0 = I gilt, wenn alle Zeichen gleichwahrscheinlich sind.

Datenkompressionsverfahren für mobile Endgeräte

Hallo Welt für Fortgeschrittene

Übung zur Vorlesung Digitale Medien. Doris Hausen Ludwig-Maximilians-Universität München Wintersemester 2010/2011

Technische Informatik - Eine Einführung

Kapitel 2: Informationstheorie. 3. Quellencodierung

Ziv-Lempel-Kompression von André Lichei

Basisinformationstechnologie II

Modul 1: Einführung und Wahrscheinlichkeitsrechnung

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

(Prüfungs-)Aufgaben zur Codierungstheorie

Eigenschaften von Kompressionsverfahren

Übungsblatt 5 - Musterlösung

9. Übung zur Einführung in die Informatik (HaF) (Abschnitt IV: Rechnerstrukturen und Betriebssysteme) Musterlösung

Aktuelle Themen der Angewandten Informatik: Datenkompression Seminar-Unterlagen Sommer Semester 2016

Transkript:

Kompression Tim Kilian Seminar Effiziente Programmierung Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 18.01.2018 Tim Kilian Kompression 18.01.2018 1 / 16

Gliederung 1 Motivation 2 Grundbegriffe Entropie Variable Codelänge Fano-Bedingung 3 Codierung Shannon Codierung Shannon-Fano Codierung Huffman Codierung 4 Kompressionsverfahren LZ77 Übersicht Vergleich 5 Weiterführende Inhalte 6 Literatur Tim Kilian Kompression 18.01.2018 2 / 16

Motivation Was ist Datenkompression? Auch Datenkomprimierung genannt. Ziel: Eine Repräsation X c einer Eingabe X, welche möglichst weniger Bits als X zur Darstellung benötigt. Ein Algorithmenpaar oder Datenkompressionschema (Codec) besteht aus einem Kompressions- und Dekompressionsalgorithmus Zwei Arten der Kompresion Verlustfreie Kompression (Redundanz) Verlustbehaftete Kompression (Irrelevanz) Definition (verlustfrei, verlustbehaftet) Sei X eine Eingabe und Y eine Rekonstruktion, so ist ein Datenkompressionschema verlustfrei, wenn X = Y und verlustbehaftet, wenn X Y gilt. Tim Kilian Kompression 18.01.2018 3 / 16

Motivation Warum wollt ihr etwas über Kompression erfahren? Kompression ist überall! Anwendungsbeispiele: digitaler Rundfunk und digitales Fernsehen Datenübertragung Speicherplatzreduktion Definition (Kompressionsquotient, compression ratio, Kompressionsfaktor) Sei X eine Eingabe und X c eine Repräsentation dieser, so nennt man X c /X Kompressionsquotient und den Kehrwert Kompressionsfaktor. Kompressionsfaktor möglichst groß Tim Kilian Kompression 18.01.2018 4 / 16

Motivation Wie kann man Daten komprimieren? Verlustfreie Kompressionsverfahren (Redundanz) Beispiel: Kompression nur bedingt möglich. Keinerlei Informationen gehen verloren. Text: Codiert: Codiert: Dies ist ein Text, welcher das Wort Text enthält. Dies ist ein Text, welcher das Wort -4 enthält. Dies ist ein #0, welcher das Wort #0 enthält. Verlustbehaftete Kompressionsverfahren (Irrelevanz) Beispiel: Kompression ist immer möglich (bis nur noch 1 Bit übrig bleibt). Der Algorithmus entscheidet, welche Daten redundant sind und verworfen werden. Text: Codiert: Dies ist ein Text, welcher das Wort Text enthält. Dies ist ein Text. Tim Kilian Kompression 18.01.2018 5 / 16

Grundbegriffe Entropie Entropie Shannon definierte das Maß der Informationen als i(a) = log 2 ( 1 6 i(a) 4 2 P(A) Definition (Entropie) 0.2 0.4 0.6 0.8 1 P(A) ). Sei X eine Eingabe und Σ = {x 1,..., x n } das Alphabet der Nachricht. Sei außerdem A i ein Ereignis, dass das Symbol x i vorkommt und S = {A 1,..., A n } ein Menge aller Ereignisse der Symbole in Σ, so lautet der mittlere Informationsgehalt (Entropie) der Nachricht X H(S) = n P(A i ) i(a i ) = n P(A i ) log 2 (P(A i )). i=1 i=1 Der Erwartungswert H(S) bezeichnet die mittlere Anzahl von Bits, um eine Nachricht zu codieren. Tim Kilian Kompression 18.01.2018 6 / 16

Grundbegriffe Variable Codelänge Variable Codelänge Definition (Code) Die Menge aller Codewörter Definition (Blockcode) Alle Codewörter haben die selbe Länge Minimierung der Datenmenge durch Anpassung an die Symbolhäufigkeiten Häufige Symoble bekommen kurze Codewörter, seltene Symbole längere Codewörter. Anders als bei Blockcodes, ist die Trennung zwischen Codewörtern nicht mehr durch Abzählen möglich. Tim Kilian Kompression 18.01.2018 7 / 16

Grundbegriffe Fano-Bedingung Fano-Bedingung Definition (Präfix-Eigenschaft, Fano-Bedinung) Kein Wort aus einem Code bildet den Anfang eines anderen Codeworts ein Präfix-Code ist eindeutig decodierbar Blockcodes sind Präfix-Codes Definition (Satz von Kraft, Kraftsche Ungleichung) Für die Existenz eines eindeutig decodierbaren n-elementigen Codes mit n 1 Codelängen l 1,..., l n über einen binären Zeichervorrat Σ ist 1 2 i=1 l i eine notwendige und hinreichende Bedingung. Tim Kilian Kompression 18.01.2018 8 / 16

Codierung Shannon Codierung Shannon Codierung Sei S = {A 1,..., A n } eine Ereignismenge und P(A i ) deren Wahrscheinlichkeiten, so sortiere alle Ereignisse in S in absteigender Wahrscheinlichkeit, sodass P(A 1 ) P(A n ) gilt. Definiere für i = 1 : P 1 = 0 und für i > 1 : P i = i 1 P(A j ). Sei Außerdem: l i = i(a i ) = log 2 (P(A i )), so ergibt sich der Code aus den abgelesenen l i Bits der binären Repräsentation von P i. j=1 Beispiel: A P(A) l i P i (P i ) 2 Code c 0.4 2 0 0.0000... 00 a 0.15 3 0.4 0.0110... 011 b 0.15 3 0.55 0.1000... 100 d 0.15 3 0.7 0.1011... 101 e 0.15 3 0.85 0.1101... 110 H(S) 2.17095 L = 2.6 Der Shannon-Algorithmus generiert einen Präfixcode. Tim Kilian Kompression 18.01.2018 9 / 16

Codierung Shannon-Fano Codierung Shannon-Fano Codierung Sei V = {A 1,..., A n } und P(A i ) deren Wahrscheinlichkeiten, so sortiere die Ereignisse in V, sodass P(A 1 ) P(A n ) gilt. 1 Starte mit einem Knoten V der alle sortierten Ereignisse enthält. 2 Falls V = 1 gebe den Knoten zurück 3 Teile den Knoten in V 1 und V 2, sodass P(A) P(A) A V 1 A V 2 4 Starte den Algorithmus rekursiv mit V = V 1 und V = V 2 Beispiel: A P(A) Code c 0.4 00 a 0.15 01 b 0.15 10 d 0.15 110 e 0.15 111 c 0.4 00 0 c a 0.55 c a b d e 1 01 10 a 0.15 b d e 0.45 110 b 0.15 H(S) 2.17095 L = 2.3 0.15 Der Shannon-Fano-Algorithmus generiert einen Präfixcode. d 1 11 d e 0.3 111 e 0.15 Tim Kilian Kompression 18.01.2018 10 / 16

Codierung Huffman Codierung Huffman Codierung 1 Starte mit einem Wald aus Bäumen, in dem jeder Baum ein Symbol darstellt und w i = P(A i ) das Gewicht des Baumes ist. 2 Wiederhole solange, bis der Wald nur noch aus einem Baum besteht: Wähle die zwei Bäume mit den kleinsten Gewichten w 1 und w 2. Verbinde diese zu einem neuen Baum mit dem Gewicht w r = w 1 + w 2. Beispiel: A P(A) Code c 0.4 0 a 0.15 100 b 0.15 101 d 0.15 110 e 0.15 111 H(S) 2.17095 L = 2.2 c 0.4 100 a 0.15 0 1 10 b 0.15 101 d 110 0.15 Die erwartete Codelänge der Huffman-Codierung ist optimal. 11 111 e 0.15 Tim Kilian Kompression 18.01.2018 11 / 16

Kompressionsverfahren LZ77 LZ77 (LZ1) Gleitfenster-Algorithmus 1 Verschiebe den Zeiger auf das erste Symbol im Absuch-Puffer. Setze L = 0 und S dem ersten Symbol im Codier-Puffer. 2 Verschiebe den Zeiger im Absuch-Puffer so weit nach links, bis er das Zeichen an Stelle K findet, das gleich dem Startsymbol ist. 3 Wenn die Grenze im Puffer erreicht wurde, gib den Code (K, L, S) aus. 4 Setze L gleich der Länge der gleichzeitig gelesenen gleichen Zeichen vom Absuch- und Codier-Puffer und fahre mit Schritt 2 fort. Die Berechnung wird anhand der Zeichenkette ababcabca veranschaulicht Absuch-Puffer Codier-Puffer Zeile 6 5 4 3 2 1 0 1 2 3 4 Code 1 a b a b c (0,0,a) 2 a b a b c a (0,0,b) 3 a b a b c a b (2,2,c) 4 a b a b c a b c a (3,3,a) 6 b c a b c a (-,-,-) Tim Kilian Kompression 18.01.2018 12 / 16

Kompressionsverfahren Übersicht Übersicht (Zeittafel und bekannte Methoden) 1 1833 65 Morse-Code verlustbehaftet beides verlustfrei AAC (MPEG) 1883 Forsyth-Edwards-Notation 1949 Shannon-Fano-Kodierung Dolby Digital ALS (MPEG) 1952 Huffman-Kodierung FLAC 1977 LZ77 MP3 (MPEG) 1982 LZSS (GZip, Zip) JPEG 1984 LZW (TIFF, GIF, PNG) TIFF PNG 1993 Deflate MPEG-4 1995 ZLib WMV 2011 LZ4......... 2013 Zopfli 2015 Brotli 1 https://de.wikipedia.org/wiki/datenkompression Tim Kilian Kompression 18.01.2018 13 / 16

Kompressionsverfahren Vergleich TIFF, BMP, JPEG, PNG, GIF Lena1.tiff (768 KB) Lena.bmp (768 KB) Lena.jpg (65 KB) Lena.png (509 KB) EP.tiff (49 KB) EP.bmp (48 KB) EP.jpg (17 KB) EP.png (6 KB) 1 Lena.gif (208 KB) EP.gif (2 KB) http://sipi.usc.edu/database/database.php Tim Kilian Kompression 18.01.2018 14 / 16

Weiterführende Inhalte Weiterführende Inhalte Adaptive Huffman-Codierung On-the-fly Codierung Arithmetische Codes Folge der Symbole numerische Representation binärer Code Calgary corpus 1 Standard-Testsuite englischer Texte für Benchmarks USC-SIPI Image Database Suite 2 Sammlung von Testbildern Kodak Lossless True Color Image Suite 3 Hochauflösende Testbilder Hutter Prize 4 Komprimieren von 100 MB natürlicher Sprache 1 http://www.data-compression.info/corpora/calgarycorpus/ 2 http://sipi.usc.edu/database/database.php 3 http://r0k.us/graphics/kodak/ 4 http://prize.hutter1.net/ Tim Kilian Kompression 18.01.2018 15 / 16

Literatur Literatur [Sa06] Sayood, Khalid: Introduction to Data Compression, Morgan Kaufmann Publishers, 3. Auflage, 2006 [Da06] Dankmeier, Wilfried: Grundkurs Codierung, Vieweg, 3. Auflage, 2006 [LF11] Liskiewicz, Maciej; Fernau, Henning: Datenkompression, Universität Tier, SoSe 2011, https://www.uni-trier.de/ fileadmin/fb4/prof/inf/tin/folien/dk/script.pdf, letzter Abruf am 17.01.2018 [Mä17] Mäder, Andreas: Codierung, Vorlesung zu Rechnerstrukturen, Kapitel 9, WiSe 17/18, https://tams.informatik.uni-hamburg.de/lectures/ 2017ws/vorlesung/rs/doc/rsWS17-09.pdf, letzter Abruf am 17.01.2018 Tim Kilian Kompression 18.01.2018 16 / 16