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