Autor Beitrag
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Mo 30.06.03 21:26 
Hi

Mich hat schon immer interessiert wie die Kompressionsverfahren laufen.
Weiß das wer?
TomT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 116

Suse 9.1 WinXP
D6 Pers
BeitragVerfasst: Mo 30.06.03 22:16 
Prinzipiell läuft das über die Häufigkeit einzelner Werte innerhalb einer Datei. Die werden dann so kodiert, dass den einzelnen Werten eine Folge aus einsen entspricht die mit 0 abgeschlossen werden. Der häufigste Wert erhält dabei die wenigsten einsen. Wenn du also z.B folgende Zeichenkette hast:
ausblenden Quelltext
1:
AAAABBCA					

Entspricht
A: 0
B: 10
C: 110

Ergibt: 0000 1010 1100. So werden aus 8 byte 1,5. Das ist wohl nur ein einfaches Beispiel.

_________________
...und da wurde mir klar, dass eine Toolbar keine Kneipe für Heimwerker ist.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mo 30.06.03 23:24 
Wer sucht der findet...
Huffman-Kompression Teil I
Huffman-Kompression Teil II
Zwar nicht besonders gut erklärt, aber immerhin.
Ansonsten nach Lempel-Ziv(-Welch) oder Huffman im Internet suchen. Beide sind zwar nicht selbst ZIP im Original, aber unter www.wotsit.org kann man sich die Header zum ZIP-Format anschauen und das Komprimierungsprinzip ist das gleiche wie LZ (bzw. LZW, übrigens der Algo vom GIF-Format) und Huffman. Die einen ein wenig mehr verfeinert, die anderen weniger.

Und im c't-Archiv auf heise.de findest du auch noch was, wenn du bereit bist ein wenig Geld zu investieren, denn da war vor höchstens einem halben Jahr ein guter KnowHow-Artikel über Lempel-Ziv-Komprimierung.

Was TomT gepostet hat ist nur die halbe Wahrheit ;-)
Zusätzlich wird nämlich noch ein Dictionary angelegt, das die zugehörigen Bit-Werte speichert. Durch die Größe des Dictionaries kann man bei großen, unregelmäßigen Dateien schon einiges an zusätzliche Kompressionsrate erzielen. Aber das ist alles nachzulesen im c't-Artikel.


Edit:
Weil nach nach Kompression allgemein gefragt hast:
Verlustbehaftete Komprimierungsverfahren, wie z.B. Ogg Vorbis, MPeg oder JPeg basieren zusätzlich zu oben genannten Verfahren der Wörterbücher auf ergonomischen Modellen. Bei Audiodaten sind das psychoakustische Hörmodelle, die genau besagen, welche Frequenzen der Durchschnittsmensch am besten hört, und was er wann nicht hört, weil ein anderer Ton das Ganze übertönt. Bei Bildern sind das Farbnuancen, die vom Auge nicht mehr getrennt wahrgenommen werden können, bzw Detailstufen, die wichtiger für das Auge sind oder weniger wichtig. Diese werden dann aus dem gesamten Datenspektrum rausgefiltert und anschließend zusätzlich mit einem verlustfreien Algorithmus komprimiert.
MPeg ist übrigens noch raffinierter, dort werden nur Bildunterschiede gespeichert, und selbst dort nur Regionen und Vektoren, wenn zum Beispiel eine Kugel von links nach rechts fliegt, wird der Kugelbereich als Region festgelegt und ein Vektor gibt die Richtung an. So wird bei jedem Frame wirklich nur ein Bruchteil der eigentlichen Informationsmenge benötigt, die Bilder werden aus den vorangegangenen zusammengesetzt. Die so genannten Keyframes sind Vollbilder, die immer vollständig gespeichert werden. Damit vermeidet man Varianzen, die durch Rundungsfehler oder gar Berechnungsfehler auftreten, indem das Bild ab und zu mal wieder "refresht" wird.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 01.07.03 13:15 
Ok, danke. hat mich einfach mal interessiert.