.net algo huffman rle mtf

Soyez le premier à donner votre avis sur cette source.

Vue 10 723 fois - Téléchargée 787 fois

Description

Il y a 1 ans j'ai essayé de me lancer dans la compression des données mais sans succès,
aujourd'hui j'ai réussi à coder l'algorihtme d'Huffman, pour moi c'est donc une réussite.

Ce code permet la compression/décompression de n'importe quel fichier grâce au codage HuffMan ou
Rle. Il contient l'algorithme Mtf qui me servira, plus tard, dans une seconde source à coder
l'algorithme Bwt,iBwt et Lzw (j'ai laissé un module Bwt vide, j'ai tout effacé suite à une
transformation trop lente à mon goût).

Les performances sont les suivantes sur mon pc (Sempron 3000+, DD 5400tr min, pour vous donner une
idée sur la compression) Précision : La vitesse d'écriture est définie seulement sur ce qu'elle code, si la source a codé que 300Ko dans la seconde alors elle sera de 300Ko/sec. Les performances se mesure sur la vitesse de lecture qui definie la rapidité de traitement. Lorsque le taux de compression est faible la vitesse d'écriture s'aligne sur celle de lecture, vous saisissez?

Algo | Huffman | Rle
Compression | 4,6Mo/sec | 7Mo/sec
Décompression | 3Mo/sec | 12Mo/sec

Le stockage de l'arbre est sérialisé et est construit sur l'héritage de classe (vous me dites si je
me trompe à propos de l'héritage) ce qui permet une meilleur lisibilitée.
Merci de faire part de vos impressions.

Maj 27/04/2007 : Estimation de la taille du fichier codé par l'algo Huffman

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
561
Date d'inscription
samedi 10 janvier 2004
Statut
Membre
Dernière intervention
11 octobre 2010

Non si je devais refaire cette source j'hésiterais pas, elle est loin d'être bien. On est 4 ans plus tard, j'ai évolué depuis ;).
Messages postés
2
Date d'inscription
samedi 20 septembre 2008
Statut
Membre
Dernière intervention
21 juillet 2011

Très intéressante cette source. As-tu fini ton projet concernant d'autres algorithmes?

Merci
Messages postés
561
Date d'inscription
samedi 10 janvier 2004
Statut
Membre
Dernière intervention
11 octobre 2010

Bon vu que je ne met pas encore ce code à jour car j'en ferai peut être un autre implantant d'autres algo voici la méthode que j'ai retenu pour stocker la table :

Stocker dans 16 bytes le nombre de bytes à décoder utilisant la longuer du Byte codé des 16. ie : Au 3eme byte des 16 on lit 5, donc 5 bytes différents seront codés sur cette longueur (3).

Ensuite dans l'ordre on écrit les bytes utilisés
i.e : 56,134,235,4,65,... donc par exemple 56 et 134 seront côdés avec 2 bits (trouvé précédemment), 235 avec 3 bits et 4 et 65 avec 8 bits.

Pour le décodage il n'y a plus qu'a reproduire l'arbre par récurrence pour ma méthode en cherchant toujours à aller vers le poid faible.

Ainsi on obtient maximum 16+256 bytes pour la taille de la table.
Messages postés
561
Date d'inscription
samedi 10 janvier 2004
Statut
Membre
Dernière intervention
11 octobre 2010

Sauf que je fais du Huffman et la table doit d'inscrire dans le fichier. Le Lzw ne stocke pas sont dictionnaire effectivement.
Messages postés
116
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
10 avril 2013
1
La table peut être crée dynamiquement (comme pour les gif, zip, etc...)
et n'est pas incluse dans le fichier compressé.
Faire recherche avec mot-clefs: LZW
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.