2016-04-26 7 views
0

Ich teste jetzt die Huffman-Codierung und wollte wissen, welche Dateitypen (wie .txt, .jpg, .mp3 usw.) eine gute Komprimierung erfahren, wenn sie einer Huffman-basierten Komprimierung unterzogen werden. Ich implementierte die Huffman-Kodierung in Java und fand heraus, dass ich eine Größenreduzierung von ca. 40% für .txt-Dateien (die mit normalem englischem Text) und fast 0% - 1% Reduktion für .jpg, .mp3 und .mp4 bekam Dateien (natürlich habe ich es nicht auf riesigen Dateien über 1 MB getestet, weil mein Programm super langsam ist). Ich verstehe, dass Huffman-Kodierung am besten für die Dateien funktioniert, die häufiger auftretende Symbole haben, aber ich weiß nicht, welche Art von Symbolen in einer Video-, Audio- oder Bilddatei vorhanden sind, daher die Frage. Seitdem ich dieses Programm entworfen habe (ich habe es für mein Projekt in der Schule gemacht, ich werde es nicht leugnen, ich habe es alleine gemacht und ich frage nur ein paar Hinweise für meine Recherche), ich wollte wissen, wo es hingehört gut arbeiten.Welche Dateien haben eine gute Komprimierungsrate mit dem Huffman-Codierungsalgorithmus des Lehrbuchs?

Danke.

Hinweis: Ich habe dieses Projekt ursprünglich nur für .txt-Dateien erstellt und zu meinem Erstaunen, es arbeitete auch an allen anderen Dateitypen, daher wollte ich es testen und musste diese Frage stellen. Ich habe herausgefunden, dass bei Bilddateien nicht die Symbole selbst kodiert werden, sondern einige RGB-Werte? Korrigiere mich, wenn ich falsch liege.

Antwort

3

Es geht um die Menge an Redundanz in der Datei.

In jeder Datei belegt jedes Byte 8 Bits, was 256 verschiedene Symbole pro Byte erlaubt. In einer Textdatei wird eine relativ kleine Anzahl dieser Symbole tatsächlich verwendet, und die Verteilung der Symbole ist nicht flach (es gibt mehr e s als q s). Somit ist die Information "Dichte" mehr wie 5 Bits pro Byte.

JPEGs, MP3 und MP4 sind bereits komprimiert und haben fast keine Redundanz. Alle 256 Symbole werden mit ungefähr gleicher Frequenz verwendet, so dass die "Dichte" der Information sehr nahe bei 8 Bits pro Byte liegt. Sie können es nicht weiter komprimieren.

+0

Oh ich sehe, warum ich fast keine Komprimierung für Video, Audio, Bilddateien bekam. Gibt es neben den Textdateien noch andere Dateien, auf denen der Huffman-Algorithmus besser ist? – theprogrammer094