130 likes | 333 Views
Datenkompression mit der Burrows-Wheeler-Transformation (BWT). Andreas Junghans, IM2. Inhalt. Verfahren zur Datenkompression Die Burrows-Wheeler-Transformation (BWT) Datenkompression mit der BWT Implementierung Zusammenfassung und Ausblick. Verfahren zur Datenkompression.
E N D
Datenkompression mit derBurrows-Wheeler-Transformation (BWT) Andreas Junghans, IM2
Inhalt • Verfahren zur Datenkompression • Die Burrows-Wheeler-Transformation (BWT) • Datenkompression mit der BWT • Implementierung • Zusammenfassung und Ausblick
Verfahren zur Datenkompression • verlustfrei und verlustbehaftet • Wörterbücher und Statistiken • Wörterbücher: schnell • Statistiken: gute Kompression BWT BWT
Verfahren zur Datenkompression • adaptiv und statisch • Ströme und Blöcke Code-Tabelle/Wörterbuch 0010110101011010 0010110101011010 0010110101011010 0010 1101 0101 1010
Die Burrows-Wheeler-Transformation • BWT = Vorsortierung (reversible Transformation) • verlustfrei • statistisch • adaptiv oder statisch • blockorientiert (ab 100 KB) • Geschwindigkeit vergleichbar Wörterbüchern • Effizienz vergleichbar Statistiken
Die Burrows-Wheeler-Transformation Vorwärtstransformation HelloCello ooHCeellll
Die Burrows-Wheeler-Transformation Rücktransformation
Die Burrows-Wheeler-Transformation Eigenschaften • Gruppen gleicherZeichen • wenige, kurzeUnterbrechungen a: rray swap(pStart a: rray localIndex = a: rray * (n a: rray (i.e. the posit a: rray (needed for rec a: rray (which must be A: rray = new byte[1]; a: rray and outputs the a: rray for * sortin a: rray must not be ide a: rray of <code>int</c a: rray of MTF codes
Datenkompression mit der BWT Ablauf BWT MTF RLE + Huffman / AC MTF: Move-To-Front-Coding („Nach-vorne-Codierung“) RLE: Run-Length-Encoding (Lauflängen-Codierung) AC: Arithmetische Codierung
Datenkompression mit der BWT MTF: Move-To-Front-Coding 0 0 0 „A“ 0 „A“ 0 „B“ 1 1 1 0 1 0 1 „A“ ... ... ... ... 65 „A“ 65 „@“ 65 „@“ 65 „?“ „AAB“ 66 „B“ 66 „B“ 66 „B“ 66 „@“ 65, 0, 66 67 „C“ 67 „C“ 67 „C“ 67 „C“ ... ... ... ... 255 255 255 255 255 255 255 255
Datenkompression mit der BWT MTF: Move-To-Front-Coding
Implementierung • Speicher sparen (800 GB vs. 4,4 MB) • Effiziente Sortierung • RLE vor BWT (Rekursionstiefe!) • Huffman mit Codes für 0-Reihen • Effizienzvergleich Datei Original WinZip bzip2 Eigenbau SRC-124.pdf 107.864 87.628 (81%) 89.355 (83%) 90.898 (84%) opngl32p.cpp 873.331 76.600 (9%) 52.221 (6%) 57.510 (7%) powerpnt.exe 4.247.604 2.151.382 (51%) 2.030.911 (48%) 2.132.403 (50%)
Zusammenfassung und Ausblick • BWT ist Vorsortierung von Daten • Ergebnis läßt sich meist sehr gut komprimieren • Einsatz von RLE und statistischen Verfahren • Andere Kompressionsmöglichkeiten? • Andere Transformationen? • Verlustbehaftete Kompression?