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

Ähnliche Dokumente
Übung 13: Quellencodierung

Geschichte Eigenschaften von PNG Bits n Bytes Verfahren zur Kompression/Dekompression Fazit (Vorteile,Nachteile) Das PNG-Dateiformat

Dynamisches Huffman-Verfahren

16 - Kompressionsverfahren für Texte

Panorama der Mathematik und Informatik

Basisinformationstechnologie II

Übung 1: Quellencodierung

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

ADS: Algorithmen und Datenstrukturen 2

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

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

Seminar. Codierungstheorie

Kompression: Lempel/Ziv-Algorithmen

Eine verlustbehaftete Komprimierung ist es, wenn wir einige Kleidungsstücke zu

Eigenschaften von Kompressionsverfahren

Digitale Bilddateien

Datenkompression. 1 Allgemeines. 2 Verlustlose Kompression. Holger Rauhut

2.7 Der Shannon-Fano-Elias Code

Digitalisierung. analoges Signal PAM. Quantisierung

JPEG Kompression technische Realisierung

Textkompression: Burrows-Wheeler-Transformation

C.v.O. Universität Oldenburg, Projektgruppe Stego. Das PNG-Dateiformat. Ralf Treu

Verlustfreie Kompression

Arbeiten im Datennetz der Universität Regensburg


Wann sind Codes eindeutig entschlüsselbar?

Das Fortis IRD Format

Einleitung. Kapitel 1

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

Basisinformationstechnologie II

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

Grundbegriffe der Informatik Tutorium 3

Ziv-Lempel-Kompression von André Lichei

Kapitel 2 Quellencodierung

Kodierung. Kodierung von Zeichen mit dem ASCII-Code

Proseminar. Thema: Shannon-Fano und Huffman Verfahren

LZxx Kompressionsverfahren. und. Anwendungsmöglichkeiten

Vorlesung. Grundlagen der Medieninformatik. Prof. Dr. Antonio Krüger.

Optimalcodierung. Thema: Optimalcodierung. Ziele

Hauptdiplomklausur Informatik Februar 2006: Multimedia Systems

Digitale Bildverarbeitung Einheit 4 Bildkompression und Bildformate

Technische Informatik - Eine Einführung

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

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

Automatische Ballerkennung

Multimediatechnik / Video

Vergleich von Komprimierungsverfahren

Einführung in Kompressionstechniken

Der Lempel-Ziv-Markov Chain Algorithmus

MatLab Teil 2: weitere Operationen, Dateien und Bildformate

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

Algorithmen und Datenstrukturen (für ET/IT)

Grafikformate. Grafikformate. Digitale Bildverarbeitung Bildkompression

3. Aufgabe: Bitmap-Datei

Übung zur Vorlesung Digitale Medien. Dr. Alexander De Luca Ludwig-Maximilians-Universität München Wintersemester 2013/2014

FARBEN IM INTERNET FARBWERTE, FARBTIEFEN IN DER BILDBEARBEITUNG

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

Digitale Medien. Übung

Medienarchitektur AVI. ein Vortrag von Christian Beugel

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

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

Header einer IMG-Datei

Bildkompression Proseminar Datenkompression Daniel Koch

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

Untersuchung des Huffman- Algorithmus auf seine Effizienz

Die Digitalisierung von Musik

ffl Die Portable Bitmap Utilities (PBM) manipulieren monochrome Bilder. ffl Die Portable Greymap Utilities (PGM) manipulieren Grauwert-Bilder.

EDV-Anwendungen im Archivwesen II

Einführung in die Informatik und Medieninformatik

Arithmetisches Codieren

5. Licht, Farbe und Bilder

Algorithmen und Datenstrukturen 2-3. Seminar -

Grafikformate. digitale Bilddateien. Andre Hoffmann - HS Bremerhaven - SoSe 2005

Grafikformate: JPG - PNG

Schnelle Ladezeiten sind das A & O für eine gelungene Website

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

Photoshop Abspeichern von Dokumenten...

Verlustbehaftete Kompression. JPEG: Joint Photographic Experts Group

Die Grafikformate GIF und PNG

Aufgabe 6: Ein JPEG-Decoder

Wie muss der Eingabetext beschaffen sein, damit er sich gut komprimieren lässt?


2. Digitale Codierung und Übertragung

Projekt u23 Symmetrische Kryptografie, Betriebsmodi von Blockchiffren

Algorithmen und Datenstrukturen 2

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

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

Grundbegriffe der Informatik Tutorium 5

Kapitel 2: Informationstheorie. 3. Quellencodierung

Hadoop I/O. Datenintegrität Kompression Serialisierung Datei-basierte Datenstrukturen Prof. Dr. Christian Herta 1/29

Farb-Fernsehsignal (Composite FBAS)

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

Praktikum BKSPP. Aufgabenblatt Nr Umrechnung zwischen Stellenwertsystemen

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

(Prüfungs-)Aufgaben zur Codierungstheorie

Bilder im BMP Format (1)

Grundzüge Wirtschaftsinformatik KE 1 Ausgabe Seite 28 von 178

Klausur Software-Entwicklung März 01

Transkript:

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

Übersicht 1 LZ - Storer, Szymanski (LZSS, 1982) 2 Deflate (1996) 3 Anwendung

LZSS - 1 Verbesserungen gegenüber LZ77: Suchbaum weniger Redundanz

LZSS - 2 Vorher: 4 Bit (Länge) + 12 Bit (Distanz) + 8 Bit (Literal) = 24 Bit Jetzt bei nicht-treffer: 1 Bit (0) + 8 Bit (Literal) = 9 Bit Jetzt bei Treffer: 1 Bit (1) + 4 Bit (Länge) + 12 Bit (Distanz) = 17 Bit

Deflate - Übersicht Kombination aus Huffman und LZSS Output besteht aus Blocks B 1, B 2,...B n B i = BFINAL, BTYPE, Data

Deflate - Übersicht BTYPE Kombination aus Huffman und LZSS Output besteht aus Blocks B 1, B 2,...B n B i = BFINAL, BTYPE, Data 00 unkomprimiert 01 fester Huffman Code 10 dynamischer Huffman Code

Deflate - Unkomprimierter Block Inhalt: 2 Bytes: LEN, 2 Bytes: NLEN LEN Bytes: Daten LEN < 64 KiB

Deflate - Komprimierter Block Was steht in einem komprimierten Block?

Deflate - Komprimierter Block Was steht in einem komprimierten Block? <Literal> oder <Länge, Distanz>

Deflate - Komprimierter Block Was steht in einem komprimierten Block? <Literal> oder <Länge, Distanz> oder <end of block>

Deflate - Komprimierter Block Huffman-Codierung!

Deflate - Komprimierter Block Symbole Huffman-Codierung Literal: 0.. 255 End-Of-Block Länge: 3.. 258 Distanz: 1.. 32 768

Deflate - Komprimierter Block Huffman-Codierung Symbole 2 Alphabete Literal: 0.. 255 End-Of-Block: 256 Länge: 257.. 512 Distanz: 1.. 32 768

Deflate - Komprimierter Block Huffman-Codierung Symbole 2 Alphabete Literal: 0.. 255 End-Of-Block: 256 Länge: 257.. 285 + Extra-Bits Distanz: 0.. 31 + Extra-Bits

Deflate - Komprimierter Block, feste Codes Für beide Alphabete feste Codes Literal/Längen-Alphabet: 7-9 Bits Distanz-Alphabet: 5 Bits

Deflate - Komprimierter Block, feste Codes Für beide Alphabete feste Codes Literal/Längen-Alphabet: 7-9 Bits Distanz-Alphabet: 5 Bits Example (De-)Kompression

Deflate - Komprimierter Block, feste Codes

Deflate - Komprimierter Block, dynamische Codes Huffman-Baum übertragen?

Deflate - Komprimierter Block, dynamische Codes Regeln Huffman-Baum übertragen? Alle Codes einer Bit-Länge haben lexikographisch aufeinanderfolgende Werte, in der gleichen Reihenfolge wie die Symbole, die sie repräsentieren 10 < 000

Deflate - Komprimierter Block, dynamische Codes code = 0; bl count[0] = 0; for (bits = 1; bits MAX BITS; bits++) { code = (code + bl count[bits-1]) << 1; next code[bits] = code; } for (n = 0; n max code; n++) { len = tree[n].len; if (len!= 0) { tree[n].code = next code[len]; next code[len]++; } }

Deflate - Komprimierter Block, dynamische Codes Huffman-Baum per Code-Längen übertragen!

Deflate - Komprimierter Block, dynamische Codes Huffman-Baum per Code-Längen übertragen! Code-Längen mit Huffman-Code codieren

Deflate - Komprimierter Block, dynamische Codes Code-Längen-Alphabet 0-15: Code-Längen 0-15 16: Code-Länge 3-6 mal kopieren (+ 2 Extra-Bits) 17: Code-Länge von 0 3-10 mal wiederholen (3 Extra-Bits) 18: Code-Länge von 0 11-138 mal wiederholen (7 Extra-Bits)

Deflate - Komprimierter Block, dynamische Codes Code-Längen-Alphabet 0-15: Code-Längen 0-15 16: Code-Länge 3-6 mal kopieren (+ 2 Extra-Bits) 17: Code-Länge von 0 3-10 mal wiederholen (3 Extra-Bits) 18: Code-Länge von 0 11-138 mal wiederholen (7 Extra-Bits) Example 8, 16 (11), 16 (10) 8 6 mal und 5 mal wiederholen 12 mal Code-Länge 8

Deflate - Komprimierter Block, dynamische Codes 3 Bits: BFINAL und 10 5 Bits: HLIT, # der Literal/Längen-Codes (257-286) 5 Bits: HDIST, # der Distanz-Codes (1-32) 4 Bits: HCLEN, # der Code-Längen-Codes (4-19)

Deflate - Komprimierter Block, dynamische Codes 3 Bits: BFINAL und 10 5 Bits: HLIT, # der Literal/Längen-Codes (257-286) 5 Bits: HDIST, # der Distanz-Codes (1-32) 4 Bits: HCLEN, # der Code-Längen-Codes (4-19) (HCLEN) x 3 bits: Code-Längen des Code-Längen-Alphabets

Deflate - Komprimierter Block, dynamische Codes 3 Bits: BFINAL und 10 5 Bits: HLIT, # der Literal/Längen-Codes (257-286) 5 Bits: HDIST, # der Distanz-Codes (1-32) 4 Bits: HCLEN, # der Code-Längen-Codes (4-19) (HCLEN) x 3 bits: Code-Längen des Code-Längen-Alphabets HLIT Code-Längen für: Literal/Längen-Alphabet

Deflate - Komprimierter Block, dynamische Codes 3 Bits: BFINAL und 10 5 Bits: HLIT, # der Literal/Längen-Codes (257-286) 5 Bits: HDIST, # der Distanz-Codes (1-32) 4 Bits: HCLEN, # der Code-Längen-Codes (4-19) (HCLEN) x 3 bits: Code-Längen des Code-Längen-Alphabets HLIT Code-Längen für: Literal/Längen-Alphabet HDIST Code-Längen für: Distanz-Alphabet

Deflate - Komprimierter Block, dynamische Codes 3 Bits: BFINAL und 10 5 Bits: HLIT, # der Literal/Längen-Codes (257-286) 5 Bits: HDIST, # der Distanz-Codes (1-32) 4 Bits: HCLEN, # der Code-Längen-Codes (4-19) (HCLEN) x 3 bits: Code-Längen des Code-Längen-Alphabets HLIT Code-Längen für: Literal/Längen-Alphabet HDIST Code-Längen für: Distanz-Alphabet Komprimierte Daten

Deflate - Komprimierter Block, dynamische Codes 3 Bits: BFINAL und 10 5 Bits: HLIT, # der Literal/Längen-Codes (257-286) 5 Bits: HDIST, # der Distanz-Codes (1-32) 4 Bits: HCLEN, # der Code-Längen-Codes (4-19) (HCLEN) x 3 bits: Code-Längen des Code-Längen-Alphabets HLIT Code-Längen für: Literal/Längen-Alphabet HDIST Code-Längen für: Distanz-Alphabet Komprimierte Daten < End-Of-Block >

Deflate - Komprimierter Block, dynamische Codes 3 Bits: BFINAL und 10 5 Bits: HLIT, # der Literal/Längen-Codes (257-286) 5 Bits: HDIST, # der Distanz-Codes (1-32) 4 Bits: HCLEN, # der Code-Längen-Codes (4-19) (HCLEN) x 3 bits: Code-Längen des Code-Längen-Alphabets HLIT Code-Längen für: Literal/Längen-Alphabet HDIST Code-Längen für: Distanz-Alphabet Komprimierte Daten < End-Of-Block >

PNG - Übersicht Blöcke/Chunks Chunk = (Länge, Type, Data, CRC)

PNG - Übersicht Blöcke/Chunks Chunk = (Länge, Type, Data, CRC) IHDR, IDAT, IEND

PNG - IDAT Chunk Bild zeilenweise durchgehen

PNG - IDAT Chunk Bild zeilenweise durchgehen Pixeldaten in String schreiben (R, G, B)

PNG - IDAT Chunk Bild zeilenweise durchgehen Pixeldaten in String schreiben (R, G, B) String mit Deflate komprimieren

PNG - IDAT Chunk Bild zeilenweise durchgehen Pixeldaten in String schreiben (R, G, B) String mit Deflate komprimieren komplette Daten: 0111 1000 (CINFO: 32K CM: Deflate) bb 0 ccccc (FLEVEL, FDICT, FCHECK) komprimierter String Checksumme (ADLER32)

PNG - IDAT Chunk Bild zeilenweise durchgehen Pixeldaten in String schreiben (R, G, B) String mit Deflate komprimieren komplette Daten: 0111 1000 (CINFO: 32K CM: Deflate) bb 0 ccccc (FLEVEL, FDICT, FCHECK) komprimierter String Checksumme (ADLER32) evtl. auf mehrere IDAT -Chunks aufteilen

PNG - Beispiel Dateigrößen (100x100 Pixel): vertikal: 576 B horizontal: 460 B

PNG - Kodierer Vergleiche Bitmap: PNG: bmp: 9.6 KiB (Bilddaten: 8.5 KiB) (128x68 Pixel)

PNG - Kodierer Vergleiche Bitmap: bmp: 9.6 KiB (Bilddaten: 8.5 KiB) PNG: MS Paint: 482 B (IDAT-Chunk: 375 B ) Paint.NET: 1290 B (IDAT-Chunk: 366 B ) (128x68 Pixel)

PNG - Kodierer Vergleiche Bitmap: bmp: 9.6 KiB (Bilddaten: 8.5 KiB) PNG: MS Paint: 482 B (IDAT-Chunk: 375 B 4.3%) Paint.NET: 1290 B (IDAT-Chunk: 366 B 4.2%) (128x68 Pixel)

PNG - Kodierer Vergleiche Bitmap: bmp: 9.6 KiB (Bilddaten: 8.5 KiB) PNG: MS Paint: 482 B (IDAT-Chunk: 375 B 4.3%) Paint.NET: 1290 B (IDAT-Chunk: 366 B 4.2%) optimal mit Vorfilter: 251 B (IDAT-Chunk: 194 B 2.2%) (128x68 Pixel)

< End-Of-Presentation > LZSS Deflate Anwendung nächste Woche: LZMA (1998)