Techniques de compression de données Référence : Compression.docx / PCT Version : 1.6 / novembre 2014 Par P. CRUCHET D'après « COMPRESSION DE DONNÉES » de Pascal Plumé Edition EYROLLES et la revue « PC EXPERT » Janvier 1995. Lien Internet : http://fr.wikipedia.org/wiki/Compression_de_données PLAN DU DOCUMENT PRESENTATION DE LA COMPRESSION ........................................................................................ 1 1. ANALYSE DU BESOIN ............................................................................................................................. 1 1.1. Dans le domaine de la transmission de données.......................................................................... 1 1.2. Le Stockage des informations ...................................................................................................... 1 1.3. Autres domaines d’utilisation ...................................................................................................... 1 2. MESURE DE LA COMPRESSION ............................................................................................................... 2 3. LES METHODES ..................................................................................................................................... 2 3.1. Compression des répétitions ........................................................................................................ 2 3.2. Codage statistique........................................................................................................................ 3 3.3. Utilisation d’un dictionnaire........................................................................................................ 3 3.4. Algorithmes prédictifs .................................................................................................................. 3 LE CODAGE RLE .................................................................................................................................. 4 1. PRINCIPE ............................................................................................................................................... 4 2. EXEMPLE D’UTILISATION ...................................................................................................................... 4 S4.3 Structure et gestion de donnée Techniques de compression de données Présentation de la compression 1. Analyse du besoin La compression de donnée consiste à réduire la taille de données. 1.1. Dans le domaine de la transmission de données Ordinateur Modem Modem Ordinateur Dans le domaine des réseaux et des télécommunications, le canal de transmission est souvent un facteur de limitation de la vitesse de transfert. La compression des données peut soit réduire le temps de transfert, soit permettre de réduire le coût du matériel. 1.2. Le Stockage des informations Compression Décompression ARJ ZIP .... La compression de données est utilisée pour : * Rentabiliser au maximum les capacités physiques de stockage en augmentant le volume apparent de données emmagasinées. * Augmenter les capacités de sauvegarde des disques durs (doublage). * Avoir un accès plus rapide aux informations stockées. 1.3. Autres domaines d’utilisation * Le son (ADPCM) : Taux d’erreur admis. * L’image fixe (JPEG) : Beaucoup de données identiques. * L’image animée (MPEG) Page - 1 S4.3 Structure et gestion de donnée 2. Techniques de compression de données Mesure de la compression Compression Données origiales Données compressées Décompression Le degré de réduction des données obtenu par une méthode de compression se mesure et prend le nom de quotient de compression. Taille des données compressées Taux de compression = ----------------------------------------Taille des données originales Le taux de compression est exprimé en pourcentage. 3. Les méthodes Un algorithme de compression sans perte restitue après les opérations successives de compression et de décompression une suite de bits strictement identique à l'originale. Les algorithmes de compression sans perte sont utiles pour les documents, les archives, les fichiers exécutables ou les fichiers textes. Avec un algorithme de compression avec perte, la suite de bits obtenue après les opérations de compression et de décompression est différente de l'originale, mais l'information restituée est en revanche voisine. La compression avec pertes ne s'applique qu'aux données « perceptibles », en général sonores ou visuelles, qui peuvent subir une modification, parfois importante, sans que cela soit perceptible par un humain. La perte d'information est irréversible, il est impossible de retrouver les données d'origine après une telle compression. 3.1. Compression des répétitions C’est une des techniques des plus simples, elle est connue sous le nom de Run Length Encoding « RLE » par exemple. Le principe consiste à détecter une donnée ayant un nombre d’apparitions consécutives qui dépasse un seuil fixé. Puis, cette séquence est remplacée par deux informations, un chiffre représentant le nombre de répétitions et l’information à répéter. Exemple : ASCII ⇔ ASC2I Cette méthode présente peu d’avantage pour la compression de fichier texte. Par contre pour une image, elle devient intéressante, car on rencontre régulièrement une succession de données de même valeur, des pixels de même couleur. Page - 2 S4.3 Structure et gestion de donnée 3.2. Techniques de compression de données Codage statistique Le but de ces méthodes est de coder des caractères avec un minimum de bits en fonction de leur fréquence d’apparition dans les données originales. On peut citer les algorithmes de Huffman et de Shannon/Fano. Le principe du codage d’Huffman est similaire a celui du code morse utilisé en transmission : coder ce qui est fréquent sur peu de place, et coder en revanche sur des séquences plus longues ce qui revient rarement. En morse le « e », lettre très fréquente, est codé par un simple point. Exemple : si W est rencontré 10 fois, on peut le coder sur 12 bits si E est rencontré 200 fois, il sera stocké sur un seul bit Sans codage : 10 * 8 + 200 * 8 = 1680 bits Avec codage : 10 * 12 + 200 * 1 = 320 bits 3.3. Utilisation d’un dictionnaire Des méthodes comme celle de Lempel Ziv Welch « LZW » font intervenir un dictionnaire. Principe : On constate que les mêmes suites d’octets apparaissant régulièrement dans les données sources. Elles peuvent être remplacées par un indice représentant leurs adresses dans un dictionnaire de référence construit progressivement. 3.4. Algorithmes prédictifs Ces méthodes cherchent à prévoir les caractères futurs en fonction des caractères déjà lus. Par exemple, celle élaborer par Teuhola et Raita consiste à explorer un fichier texte syllabe par syllabe. Page - 3 S4.3 Structure et gestion de donnée Techniques de compression de données Le codage RLE 1. Principe L’encodage des répétitions (RLE pour Run-Length Encoding) est l’une des méthodes les plus anciennes. Elle a l’avantage d’être des plus simples et est souvent utilisée. Le principe est d’identifier les séquences d’octets puis de les encoder en une forme plus compacte. Le codage RLE est à la fois rapide et simple à mettre en oeuvre. Les textes ASCII se prêtent malheureusement assez mal à cette méthode, car ils contiennent rarement de très longues séquences répétitives. Les fichiers exécutables ou mieux encore les fichiers contenant des images bitmap ou des bases de données composées d’enregistrement de format fixe permettent d’obtenir un taux de compression relativement important. 2. Exemple d’utilisation Un fichier contient les 32 octets suivants : Sous une autre forme : 00 32 46 00 00 00 00 05 99 02 02 02 01 01 01 01 01 01 01 01 01 01 01 64 00 00 00 00 00 00 00 00 00 32 46 00 00 00 00 05 99 02 02 02 01 01 01 01 01 01 01 01 01 01 01 64 00 00 00 00 00 00 00 00 On constate qu’un certain nombre d’octets sont répétés. Le remplacement de chaque ligne par deux octets, l’un pour le nombre d’octets de la séquence, l’autre pour l’octet répété donne le résultat suivant Page - 4 01 00 01 32 01 46 04 00 01 05 01 99 03 02 0B 01 01 64 08 00 S4.3 Structure et gestion de donnée Techniques de compression de données Les 32 octets sont ainsi réduits à 20. Une autre méthode consisterait à utiliser un code d’échappement ici, FF pour optimiser au mieux la compression. 00 32 46 FF 03 00 05 99 FF 02 02 FF 0A 01 64 FF 07 00 La séquence fait alors 18 octets. Un éventuel FF exigerait la séquence FF 00 FF. On remarque également que le nombre de répétitions est réduit de 1. Le choix du code d’échappement peut faire l’objet d’une analyse préalable pour déterminer le code le moins utilisé. Comme la séquence formée du code d’échappement, de la longueur et de l’octet répété occupe généralement trois octets. La routine de codage doit s’assurer que la longueur de toute séquence équivaut au moins à quatre octets, de manière à ce que l’utilisation du code d’échappement représente une réelle économie. Page - 5