Post on 20-Feb-2016
description
Datenkompression mit derBurrows-Wheeler-Transformation
(BWT)
Andreas Junghans, IM2
2Datenkompression mit der Burrows-Wheeler-Transformation
Inhalt
• Verfahren zur Datenkompression• Die Burrows-Wheeler-Transformation (BWT)• Datenkompression mit der BWT• Implementierung• Zusammenfassung und Ausblick
3Datenkompression mit der Burrows-Wheeler-Transformation
Verfahren zur Datenkompression
• verlustfrei und verlustbehaftet
• Wörterbücher und Statistiken– Wörterbücher: schnell– Statistiken: gute Kompression
BWT BWT
Space
/ 0
Tab /
1t /
2e /
3n /
4i /
5r /
6
LF / 7
CR / 8o /
9Res
t
02000400060008000
100001200014000160001800020000
4Datenkompression mit der Burrows-Wheeler-Transformation
Verfahren zur Datenkompression
• adaptiv und statisch
• Ströme und Blöcke
0010110101011010Code-Tabelle/Wörterbuch
0010110101011010
0010110101011010 0010 1101 0101 1010
5Datenkompression mit der Burrows-Wheeler-Transformation
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
6Datenkompression mit der Burrows-Wheeler-Transformation
Die Burrows-Wheeler-Transformation
Vorwärtstransformation
HelloCello ooHCeellll
H e l l o C e l l oe l l o C e l l o
l l o C e l l o
l o C e l l o
H
H e
H e l
o C e l l o H e l
e l l o H e l
l
l o C
l l o H e l l o C
l o H e l l o C
o H e l l o C
e
e l
e l l
C e l l o H e l l o
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
L
IH e l l o C e l l oe l l o C e l l ol l o C e l l ol o C e l l o
HH e
H e lo C e l l o H e lC e l l o H e le l l o H e l
ll o
l o Cl l o H e l l o Cl o H e l l o Co H e l l o C
ee l
e l l
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
7Datenkompression mit der Burrows-Wheeler-Transformation
H oe
l
l
H
e
l
o
e
l
C
l
l
o
e
l
l
C o
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
L
I
F
N1
N2
N3
N4
N5
N6
N7
N8
N9
H oe
l
l
H
e
l
o
e
l
C
l
l
o
e
l
l
C o
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
L
I
F
N1
N2 ?N2 ?
Die Burrows-Wheeler-Transformation
Rücktransformation
8Datenkompression mit der Burrows-Wheeler-Transformation
Die Burrows-Wheeler-Transformation
Eigenschaften
– Gruppen gleicherZeichen
– wenige, kurzeUnterbrechungen
a: rray swap(pStarta: rray localIndex =a: rray * (na: rray (i.e. the posita: rray (needed for reca: rray (which must beA: rray = new byte[1];a: rray and outputs thea: rray for * sortina: rray must not be idea: rray of <code>int</ca: rray of MTF codes
9Datenkompression mit der Burrows-Wheeler-Transformation
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
10Datenkompression mit der Burrows-Wheeler-Transformation
Datenkompression mit der BWT
MTF: Move-To-Front-Coding
0 0
65 „A“
255 255
0 „A“
65 „@“
255 255
66 „B“
67 „C“
1 1 1 0
66 „B“
67 „C“
...
...
...
...
0 „A“
65 „@“
255 255
1 0
66 „B“
67 „C“
...
...
0 „B“
65 „?“
255 255
1 „A“
66 „@“
67 „C“
...
...
„AAB“ 65, 0, 66
11Datenkompression mit der Burrows-Wheeler-Transformation
MTF: Move-To-Front-Coding
Datenkompression mit der BWT
Space
/ 0
Tab /
1t /
2e /
3n /
4i /
5r /
6
LF / 7
CR / 8o /
9Res
t
02000400060008000
100001200014000160001800020000
12Datenkompression mit der Burrows-Wheeler-Transformation
• Speicher sparen (800 GB vs. 4,4 MB)• Effiziente Sortierung• RLE vor BWT (Rekursionstiefe!)• Huffman mit Codes für 0-Reihen• Effizienzvergleich
Implementierung
Datei Original WinZip bzip2 EigenbauSRC-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%)
13Datenkompression mit der Burrows-Wheeler-Transformation
• 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?
Zusammenfassung und Ausblick