So wurde mir heute klar, dass ich die Dateikomprimierung für selbstverständlich halte. Die Fähigkeit, ein paar Dateien zu einer zusammenzufassen und sie kleiner als alle anderen herauszubringen, akzeptiere ich nur als Tatsache, aber wie funktioniert das eigentlich?
Ich habe ein begrenztes Wissen darüber, das etwas damit zu tun hat, alle doppelten Einträge durch Zeiger zu ersetzen, um sie auf diese Weise zu verkleinern, aber darüber hinaus bin ich ziemlich ahnungslos!
Da ich immer offen bin für neues Wissen, wie ich mir die meisten hier vorstelle, dachte ich, ich würde fragen. Also, SuperUser, wie funktioniert die Komprimierung tatsächlich ?
compression
archiving
Phoshi
quelle
quelle
Antworten:
Verlustfreie Kompression
Bei der verlustfreien Komprimierung gehen keine Daten verloren. Alles, was eingegeben wird, kann perfekt abgerufen werden. Dies funktioniert gut für Text- oder Binärdateien, bei denen der kleinste Fehler bemerkt wird.
Bei der Dateikomprimierung werden die Datei genommen, nach Mustern gesucht und diese Muster in etwas anderes übersetzt, das weniger Platz beansprucht.
Zum Beispiel könnte "AAAAAAAA" in "8A" umgewandelt werden.
Zugegeben, so funktioniert das nicht genau, denn dann hast du das Problem, was wäre, wenn "8A" im Klartext wäre. Sie würden die Datei dekomprimieren und es wäre falsch. Ein guter Anfang ist entweder Wikipedia oder der LZW-Datenkomprimierungsalgorithmus .
Es gibt ein paar einfache Pseudocodes für diese Kopie:
Bei der gesamten Komprimierung wird ein Suchwörterbuch verwendet, mit dem die Datei komprimiert und dekomprimiert wird. Je größer das Wörterbuch ist, desto mehr können Sie es komprimieren, obwohl Sie auf das Gesetz der sinkenden Renditen stoßen .
Beachten Sie auch, dass die Komprimierung nicht immer zu einer kleineren Datei führt. Es gibt Situationen (bei kleinen Dateien oder beim Komprimieren zufälliger Daten ), in denen Sie nach der Komprimierung keine kleinere Datei erhalten. Es gab einige lustige Herausforderungen in Bezug auf die Fähigkeit, zufällige Daten zu komprimieren.
"Verlustbehaftete" Komprimierung
Das Obige bezieht sich hauptsächlich auf verlustfreie Komprimierung . Andere Komprimierungsarten, die in Video- / Audioanwendungen wie MP3, JPG und h.264 verwendet werden, sind Beispiele für verlustbehaftete Komprimierung .
Bei einer verlustbehafteten Komprimierung werden Daten verworfen, die mit der geringsten Wahrscheinlichkeit bemerkt werden. In der Audiowiedergabe sind dies etwa 30.000 Hertz und unter 100 Hertz, zusammen mit anderen verschiedenen Dingen. In picture (static) werden verschiedene Dinge entfernt und Pixel zusammengeführt, zusammen mit verworfenen Daten.
Verlustbehaftete Komprimierung ist eine Form der Transformationscodierung . Daten werden herausgemittelt, um die Gesamtgröße zu verringern. Beispielsweise können bei einem Block von 10 Pixeln in einem Bild alle leicht unterschiedlichen Farben zu einer Farbe zusammengeführt und somit komprimiert werden.
Bei der Videokomprimierung werden häufig Anweisungen ausgegeben, um nur Pixel neu zu zeichnen, die sich seit dem letzten Frame oder Keyframe geändert haben .
quelle
Die Komprimierung funktioniert, indem Muster in den Daten gefunden und diese Muster durch spezielle kleinere Muster ersetzt werden. Dekompression ist das Gegenteil: Finden Sie die speziellen Muster und ersetzen Sie sie durch die größeren Muster, die sie darstellen. Es ist wichtig zu wissen, welche Muster wahrscheinlich sind. Beispielsweise können sich die im Text gefundenen Muster stark von denen in Bildern unterscheiden. Einige Komprimierungstechniken sind verlustbehaftet. Sie garantieren nicht, dass die Erweiterung die Eingabe exakt wiederherstellt. Dies ist normalerweise für analoge Daten wie Musik und Bilder ausreichend, wenn der Verlust gering genug ist. Daten wie Text müssen jedoch verlustfrei komprimiert werden.
Es ist wichtig zu wissen, dass es unmöglich ist, zufällige Daten ohne Verlust mit nur einem Bit zu komprimieren. Betrachten Sie eine Datei mit N Bit Binärdaten. Es gibt 2 ^ N mögliche Dateien. Wenn Sie eine dieser Dateien mit einem einzelnen Bit komprimieren, sodass die komprimierte Datei eine Größe von N-1 Bit hat, gibt es nur 2 ^ (N-1) mögliche komprimierte Darstellungen. Mit anderen Worten, jede mögliche komprimierte Datei muss mehr als eine mögliche nicht komprimierte Datei darstellen. Ohne eine eindeutige komprimierte Darstellung kann der Dekomprimierungsalgorithmus keine verlustfreie Dekomprimierung garantieren.
quelle