Compression de fichier 1 Codage de Hu man des octets d`un

Transcription

Compression de fichier 1 Codage de Hu man des octets d`un
USTL - Licence ST-A 2ème année
2008-2009
Codage de l'Information
Compression de chier
Objectifs du TP
utiliser le codage de Human pour compresser des chiers.
1 Codage de Human des octets d'un chier
1.1
Compression
Vous allez écrire un programme de compression de chier en codant individuellement chacun des
octets qui le compose par un codage de Human construit en analysant le contenu de ce chier.
Les grandes étapes de ce programme sont
1. l'analyse de fréquences des octets du chier (cf TP Entropie) ;
2. la construction d'un codage de Human à partir de cette analyse (cf TP Human) ;
3. et enn le codage de ce chier (cf TP6).
Expliquez pour quels chiers le chier compressé obtenu aura une taille (en octets) réellement plus
petite que le chier original.
Question 2. Réalisez un programme nommé compresse qui prend le nom du chier à compresser en paramètre
(sur la ligne de commande), et produit un chier dont le nom est celui du chier d'origine suivi de l'extension
.huf, et dont le contenu est le résultat du codage du chier d'origine par un codage optimal des octets.
t
Question 3. Testez votre programme sur divers types de chiers et pour chacun d'eux notez le rapport c où tc
to
est la taille (en octets) du chier compressé et to celle du chier d'origine :
1. un chier texte ;
2. un chier texte plus gros ;
3. une image au format bitmap ;
4. une image au format gif ;
5. un chier texte compressé (par exemple format zip).
Question 1.
1.2
Décompression
Il s'agit maintenant d'écrire un programme de décompression de chiers compressés par le programme
précédent.
Question 4. Expliquez pourquoi il n'est pas possible de décompresser (décoder) un chier compressé par le
programme compresse si on ne dispose que de ce seul chier.
Question 5. Proposez une solution à ce problème et modiez le programme compresse en conséquence.
Question 6. La solution que vous avez proposée augmente-t-elle la taille de l'espace disque nécessaire pour
stocker le chier compressé ainsi que les informations nécessaires à la décompression.
Si oui quel est l'espace supplémentaire nécessaire. Essayez de déterminer une condition sur la taille du chier
à compresser et son entropie pour que cette augmentation soit acceptable.
Question 7. Réalisez un programme nommé decompresse qui prend le nom d'un chier compressé (sans l'extension .huf) et le décompresse en écrivant la sortie dans un chier du même nom (sans l'extension .huf).
2 Codage de Human des seizets d'un chier
(partie facultative)
Refaîtes la même chose mais en codant les chier vus comme des sources de seizets ou double-octets
(cf TP7). Précisez comment vous traitez les chiers dont la taille est un nombre impair d'octets.
Question 8.
1