ARCHIVATOR.net
 
Standard - Tools
Überblick
Standard-Tools
- Windows/DOS
- Macintosh
- UNIX/Linux
- Andere
Grafikkomprimierung
Audio/Video
Nebenbei
Impressum/Copyright
 
 

Letzte Aktualisierung:
06.08.2003

 

 

Welche Standard-Tools bei den verschieden Betriebssystemen verwendet werden. ist unten den jeweiligen Rubriken zu Windows/DOS, Macintosh, UNIX/Linux und Andere nachzulesen.

Doch hinter jeden Tool steckt Verfahren bzw. Algorithmus der die Datei letztendlich kleiner macht. Folgende Verfahren sind dabei anzutreffen:

Lauflängen Kodierung (RLE):

Die Lauflängen Kodierung (Run-length Encoding = RLE) ist ein sehr einfaches Verfahren. Beim RLE wird der Dateiinhalt Schritt für Schritt nach mehrfach
hintereinander vorkommenden Bytes (Anzahl > 3) durchsucht und mit einem Markierungsbyte, das Byte selbst und die Anzahl der Wiederholungen, versehen. Das Markierungsbyte sollte nicht in der Datei enthalten sein. Falls aber alle 256 möglichen Zeichen sich in der Datei befinden, definiert man ein Byte, welches in der Datei immer alleine steht. Bei älteren RLE Verfahren wurden alle Bytes kodiert, was dazu führte, daß die komprimierten Dateien manchmal größer waren als die Originaldatei. Dies geschah, wenn in der Datei wenig Wiederholungen vorkamen.

Huffman Verfahren (Huffman-Code):

Das Huffman Verfahren ist ein Verfahren, das sich nach der Idee des Morsealphabets richtet. Beim ASCII-Code wird jedes Zeichen mit 8 Bit kodiert, während beim Huffman-Code dagegen häufig vorkommende Zeichen mit wenigen Bits und selten vorkommende Zeichen dafür mit mehr Bits kodiert. Um die Zeichenhäufigkeiten zu bestimmen wird die Datei einmal gelesen. Zur Ermittlung des Huffman-Codes wird ein Binärbaum aufgebaut.

Zur Dekodierung wird einfach Bit für Bit eingelesen und es wird der Binärbaum von der Wurzel an durchwandert bis ein Zeichen als Blatt gefunden wird. Dieses ist dann dekodiert und der Baum fängt beim nächsten Bit wieder von der Wurzel an. Zu beachten ist, daß der Binärbaum auch in der komprimierten Datei mit abgespeichert werden muß, damit eine Entkomprimierung möglich ist. Bei kleinen Dateien kann es deshalb durchaus sein, daß die komprimierte Datei größer ist als das Original.

Das Huffman Verfahren ist sehr verbreitet und wird von vielen Komprimierprogrammen benutzt (z.B. PKZIP/PKUNZIP oder ARJ) oder in Verbindung mit anderen Verfahren (mit LZ77 bei LHA).

Lempel-Ziv-Welch Verfahren (LZW Algorithmus):

Es gibt mehrere Lempel-Ziv Verfahren (LZ77, LZSS, LZ78), aber das Lempel-Ziv-Welch ist das bekannteste, obwohl es schon Weiterentwicklungen des LZW
gibt (LZC und LZMW). Das Lempel-Ziv-Welch Verfahren ist eine Weiterentwicklung der Lempel-Ziv Algorithmus LZ78 und basiert auf dem Prinzip eines Wörterbuchs. Das Wörterbuch enthält am Anfang für jedes in der Datei vorkommende Zeichen einen Eintrag. Während der Komprimierung werden dann neue Einträge vorgenommen. Somit wird das Wörterbuch während der Komprimierung immer größer und der Code dadurch immer kleiner.

Beim Dekomprimieren besteht das Wörterbuch wieder nur aus jedem in der Datei vorkommenden Zeichen und das Wörterbuch wird während der
Dekomprimierung erstellt.

Der Vorteil im Vergleich zum Huffman-Verfahren ist, daß hier das ganze Wörterbuch nicht mit in der Datei mit eingespeichert werden muß.

Bitonale Kompression:

Von LuraTech wird ein auf der Wavelet-Transformation beruhendes Kompressionsalgorithmus für bitonale Daten entwickelt (komplizierte mathematische Berechnung mittels Koeffizienten / Hoch- / Tiefpaßfilterung /
Matrizen). Der Algorithmus ist in der Lage, Texte und Strichzeichnungen mittels der Wavelet-Transformation effektiver als vorhandene Lösungen zu
komprimieren. Ein besonderer Vorteil wird die Fähigkeit sein, in einem zu digitalisierenden Dokument Bilder zu erkennen. Diese werden dann mit dem
herkömmlichen Verfahren bearbeitet.

Shannon-Fano Kodierung:

Die Shannon-Fano Kodierung basiert auf statistischen Annahmen über die zu komprimierenden Daten. Häufige Symbole sollen durch kurze, und seltene Symbole durch lange Bitfolgen kodiert werden. Dabei können seltene Symbole durch Bitfolgen kodiert werden, die länger sind als die ursprünglichen Symbole.

Aus einem Datenstrom wird für jedes Symbol, z.B. ein Byte, in einer Tabelle die Anzahl seines Auftretens gespeichert. Die Summe über alle Tabelleneinträge ergibt dann die Gesamtgröße des Datenstroms. Die Tabelle wird nun so sortiert, das die häufigsten Symbole am Anfang, und die seltensten Symbole am Ende stehen.

Die Kompression erfolgt nun dadurch, daß in der komprimierten Datei die Häufigkeitstabelle abgespeichert wird, und dann die Daten entsprechend der ermittelten Bitcodes zusammengefaßt werden. Dabei ist darauf zu achten, daß die Tabelle möglichst klein und kompakt gehalten wird, da sie als sogenannter Overhead nur Organisationsdaten zur Dekompression enthält. Bei der Dekompression werden wieder aus der gespeicherten Tabelle die Bitcodes gebildet und aus den nachfolgend eingelesenen Bitcodes die entsprechenden Symbole ermittelt und gespeichert.

Arithmetische Kodierung:

Bei der arithmetischen Kodierung werden Zeichenfolgen in einen Code umgesetzt. Dazu müssen in einem ersten Schritt die relativen Häufigkeiten der einzelnen Zeichen berechnet werden. Dann werden die einzelnen Zeichen als Intervalle der Form [a;b) dargestellt. Die Länge der Intervalle entsprechen den Häufigkeiten der einzelnen Zeichen. Häufigkeiten lassen sich mit reellen Zahlen zwischen 0 und 1 repräsentieren, wobei 0 für "nie vorkommend" und 1 für "immer vorkommend" steht. Da die Summe der Häufigkeiten 1 ist, ergibt diese Kette von Intervallen das Intervall [0;1). Für möglichst kurze Codes nimmt man natürlich die Zahl mit den wenigsten Stellen, die in dem Intervall des Zeichens liegt. Da alle vorkommenden Zahlen im Intervall [0;1) liegen, beschränkt sich die Kodierung nur auf die Nachkommastellen.


Die Infos haben keinen Anspruch auf Vollständigkeit. Anregungen, Kritiken oder Beiträge sind willkommen. Bitte an webmaster@archivator.net senden.

Packer-Algorithmen

Lauflängen Kodierung (RLE)

Huffman Verfahren

Lempel-Ziv-Welch Verfahren

Bitonale Kompression

Shannon-Fano Kodierung

Arithmetische Kodierung

Die Standard-Algorithmen, welche von den meist genutzten Packern verwendet werden heißen Huffman, LZW, LZ77 oder Shannon-Fano. Diese werden kombiniert oder auch leicht modifiziert eingesetzt

Unter Apple Macintosh werden ähnliche Verfahren eingesetzt. HQX, SEA, SIT und CPT basieren auf Huffman, LZ76 und diversen modifizierten Varianten.