Méthodes génériques de compression 1/28 Méthodes génériques de compression Théorie des réseaux nils.schaefer@sn-i.fr
Méthodes génériques de compression 2/28 Intérêt de la compression Facteur économique Temps, espace de stockage et transfert Exemple Dictionnaire Représentation du mot par le signe ~ Antécédents historiques Suppression des voyelles sur les parchemins
Méthodes génériques de compression 3/28 Méthodes conservatives Méthodes de compression qui permettent une restitution totale de l information compressée Absolument aucune perte d information Méthodes génériques qui peuvent être utilisée sur tous les types de données Plus ou moins efficace
Méthodes génériques de compression 4/28 Principe simple Méthode RLE (1) Remplacement d une série de n symboles s par le couple (n,s) Exemple 255, 255, 255, 166, 189, 189, 189, 189 (3, 255), (1,166), (4,189) Adapté aux images dont la profondeur de couleur est relativement faible
Méthodes génériques de compression 5/28 Méthode RLE (2) Méthode rarement efficace sur des fichiers quelconques Exemple défavorable 245, 123, 45, 68, 56, 123, 56, 68 (1, 248), (1, 123), (1, 45), (1, 68), (1, 56), (1, 123), (1, 56), (1, 68)
Méthodes génériques de compression 6/28 Méthode de Huffman (1) Inventée en 1952 par David Huffman Méthode basée sur l inégalité des fréquences d apparition des données dans un fichier Codage des données apparaissant souvent avec un code court et des données rares avec un code long
Méthodes génériques de compression 7/28 Méthode de Huffman (2) Algorithme de compression Etablir une table des fréquences d apparition Construire l arbre de Huffman Prise en compte des symboles Prise en compte des fréquences d apparition Codage du fichier Remplacement de l ancien code des symboles par le nouveau obtenu grâce à l arbre de Huffman
Méthodes génériques de compression 8/28 Méthode de Huffman (3) Exemple Considérons la chaîne de caractères suivante AABCAABADBACAAB (15 caractères) Chaque caractère est codé sur 2 bits A : 00 B : 01 C : 10 D : 11 Codage de la chaîne de caractère 00 00 01 10 00 00 01 00 11 01 00 10 00 00 01
Méthodes génériques de compression 9/28 Exemple (suite) Méthode de Huffman (4) On calcule les fréquences d apparition 8 occurrences pour le A 4 occurrences pour le B 2 occurrences pour le C 1 occurrence pour le D Construction de l arbre de Huffman
Méthodes génériques de compression 10/28 Exemple (suite) Méthode de Huffman (5) Il faut relier les deux caractères de plus petites fréquences
Méthodes génériques de compression 11/28 Exemple (suite) Méthode de Huffman (6) On obtient finalement notre arbre de Huffman
Méthodes génériques de compression 12/28 Exemple (suite) Méthode de Huffman (7) Déduction du code des caractères Parcours depuis la racine jusqu au caractère
Méthodes génériques de compression 13/28 Exemple (suite) Méthode de Huffman (8) Codage des caractères A : 0 B : 10 C : 110 D : 111 Codage de la chaîne 0 0 10 110 0 0 10 0 111 10 0 110 0 0 10 25 bits au lieu de 30 bits
Méthodes génériques de compression 14/28 Exemple (suite) Méthode de Huffman (9) On obtient une compression de (30-25)/30=16,67% Le taux de compression est de 30/25=1,2 Il faut toutefois inclure l arbre de Huffman dans le fichier compressé pour pouvoir réaliser la décompression
Méthodes génériques de compression 15/28 Méthode de Huffman (10) Algorithme de décompression Reconstruction de l arbre de Huffman Données présentes dans l en-tête du fichier Lecture séquentielle des bits du fichier compressé en parcourant l arbre de Huffman en réalisant le remplacement des séquences
Méthodes génériques de compression 16/28 Méthode de Huffman (11) Méthode de compression statistique Différentes adaptations Méthode de Huffman non adaptative Basée sur une arbre de Huffman fixe Peu utilisée Méthode de Huffman semi-adaptative Table des fréquences Utilisation sur des fichiers Méthode de Huffman adaptative Evolution de l arbre au cours de la compression Utilisable sur des flux de données
Méthodes génériques de compression 17/28 Compression arithmétique (1) Méthode de compression statistique basée sur l utilisation des réels Méthode basée sur l utilisation récursive d un intervalle partitionné en fonction des fréquences d apparition des symboles Un nombre réel va permet de coder toute une suite de symboles
Méthodes génériques de compression 18/28 Exemple Compression arithmétique (2) Considérons la chaîne de caractères suivante XYXZXTXYXTXZXYXY (16 caractères) Fréquences d apparition 8 occurrences pour le X 4 occurrences pour le Y 2 occurrences pour le Z 2 occurrences pour le T
Méthodes génériques de compression 19/28 Compression arithmétique (3) Exemple (suite) On peut donc considérer l intervalle suivant Le premier caractère de la suite sera codé en fonction de cet intervalle Le réel devra être entre 0 et 0,5 pour un X Le réel devra être entre 0,5 et 0,75 pour Y Le réel devra être entre 0,75 et 0,875 pour Z Le réel devra être entre 0,875 et 1 pour T
Méthodes génériques de compression 20/28 Compression arithmétique (4) Exemple (suite) Le premier caractère est un X, on obtient donc l intervalle suivant Le deuxième caractère est un Y
Méthodes génériques de compression 21/28 Compression arithmétique (5) Exemple (suite) Le troisième caractère est un X Il faut continuer ainsi pour toute la suite On obtiendra à la fin un intervalle très étroit Il faudra prendre une valeur au choix dans cet intervalle
Méthodes génériques de compression 22/28 Compression arithmétique (6) D un point de vue théorique il est possible coder une infinité de symboles avec un seul réel D un point de vue pratique il faut prendre en considération la précision des nombres réels utilisés
Méthodes génériques de compression 23/28 Méthode LZ (1) Inventée en 1978 par Lempel et Ziv Méthode basé sur le remplacement d une souschaîne de caractères par un pointeur sur une chaîne déjà existante [retour_arrière,symboles_à_recopier] Cette méthode se base sur la redondance de suite de caractères
Méthodes génériques de compression 24/28 Exemple Méthode LZ (2) Considérons la chaîne de caractères suivante DES_BARS_ET_DES_BARBARES Le codage va se dérouler progressivement DES_BARS_ET_ La chaîne DES_BAR existe déjà DES_BARS_ET_[12,7] La chaîne BAR existe déjà DES_BARS_ET_[12,7][3,3]ES
Méthodes génériques de compression 25/28 Méthode LZW (1) Inventée en 1984 par Welch Basée sur la méthode LZ Construction d un dictionnaire de manière automatique Le dictionnaire n a pas besoin d être présent dans le fichier compressé Possibilité d avoir un dictionnaire de grande taille
Méthodes génériques de compression 26/28 Exemple Méthode LZW (2) /WED/WE/WEE/WEB/WET
Méthodes génériques de compression 27/28 Implémentation Les méthodes de compression ont été abordées de manière théorique L implémentation des ces différentes méthodes sur un système informatique pose des problèmes supplémentaires Codage des informations Réglage des paramètres
Méthodes génériques de compression 28/28 Quelle méthode utiliser? Choix en fonction des besoins en place Taux de compression élevé (Archivage) Choix en fonction des besoins en temps Temps de compression faible (Temps réel) Choix en fonction des objets à compresser Fichiers ou flux de données