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:
STRING = get input character
WHILE there are still input characters DO
CHARACTER = get input character
IF STRING+CHARACTER is in the string table then
STRING = STRING+character
ELSE
output the code for STRING
add STRING+CHARACTER to the string table
STRING = CHARACTER
END of IF
END of WHILE
output the code for STRING
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 .