La Compression de Données

Slides:



Advertisements
Présentations similaires
Algorithme de Lempel-Ziv et Arbre MESH
Advertisements

Module Systèmes d’exploitation
Structures de données avancées : Principales structures de données
Premier programme en C :
Chap. 4 Recherche en Table
Algorithmes et structures de données avancés
Portée des variables VBA & Excel
Introduction à l’Algorithmique
Les Structures de contrôles itératives
Codage et compression de données
Par Clément en vacances sur la Côte d’Azur Le 17 décembre 2011
To Tune or not to Tune? To Tune or not to Tune? A Lightweight Physical Design Alerter Costa Jean-Denis Le Yaouanc Aurélie Mécanismes de SGBD 2007.
Cours 8 Arbres équilibrés
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Les structures de données arborescentes
Arbre Rouge Noir.
Bases de données lexicales
Gestion de Fichiers Arbres B.
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
Sections sélectionnées du Chapitre 11
STATISTIQUES – PROBABILITÉS
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
LES ARBRES IUP 2 Génie Informatique
Structures de données IFT-2000
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Compression des Données
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
Algorithmes d ’approximation
Mars 2013 Grégory Petit
Institut Supérieur des Etudes Technologiques de Djerba Exposé du Traitement de Données Réalisé par: Khalifa Marwa Magroun Amira Jawadi Souad L2MDW.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Algorithmique et structures de données en C
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Gestion de Fichiers GF-7: Compression des Donnees (Base sur la section 6.1 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with.
Plan cours La notion de pointeur et d’adresse mémoire.

201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Le langage C Structures de données
Paradigmes des Langages de Programmation
Arbres et graphes.
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
Structures de données avancées : Arbres Red-Black
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: II. Arbres B (Base sur les Sections de.
Cliquez pour commencer l’explication…. Trouver la poignée de recopie et incrémenter les valeurs La poignée de recopie, c’est le petit carré noir en bas.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Etude et test des algorithmes d'estimation de mouvement en MPEG
Programmation linéaire en nombres entiers
MIGO ET COMPLEXITE1 ARBRES EQUILIBRES Définition : On dit qu’un arbre binaire est H équilibré si en tout nœud de l’arbre, les hauteurs des sous-arbres.
Arbres binaires et tables de hachage
REPRESENTATION DE L’INFORMATION
GF-11: Tri Interne Efficace et Tri Externe
Structures de données avancées : Arbres AA
Cours LCS N°4 Présenté par Mr: LALLALI
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Formats, techniques, utilisations

1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
La pile de crêpes.
Chapitre 4 La représentation des nombres.
Les monceaux (Heap) Monceaux Propriétés des Monceaux
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
La compression de données
Transcription de la présentation:

La Compression de Données Par Sébastien Vaie M2 ISV Paris V René Descartes

Introduction Cela consiste en la réduction des données pour permettre le transit via les réseaux d’informations Le coût et les limites de stockage ont forcé l’utilisation de la compression de données. Et donc pour compresser il faut coder l’information pour qu’elle prenne moins de place.

Introduction(2) On distingue 2 types de compression La compression sans perte Où les données ne doivent pas être altérées (texte, programme informatique,…). La compression avec perte Où la qualité des données est limitée par la perception humaine (Vidéo,Son,Image,….).

Introduction(3) Dans cet exposé nous allons traiter uniquement la compression sans perte. Pour cela nous allons étudier les 3 algorithmes les plus utilisés. RLE LZW Huffman

RLE introduction RLE ou run lenght encoding C’est un type d’algorithme relativement simple. Qui est utilisé pour compresser tout type de données sans tenir compte du type de données, même si le contenu des données conditionne l’efficacité de cet algorithme. En effet, il est basé sur la répétition de caractère et donc si les données à compresser sont peu ou pas répétées le taux de compression sera faible.

RLE Principe Recherche de caractère répété. Remplacement de ces caractères. Par un caractère spécifique marquant la compression. Nombres de répétitions. Et le caractère qui est répété. Sortie du fichier compressé. Remarque : imposer un seuil de répétition de minimum 3 si < 3 = augmentation de la taille

RLE Exemple de principe ex: AAAARRRRRROLLLLBBBBBUUTTTTTT On choisit comme caractère spécial : @ et comme seuil de répétition : 3 Après compression : @5A@6RO@4L@5BUU@6T gain : 11 caractères soit 38% Ce qui fait un gain relativement faible.

Algorithme ENTREE: fichier à compresser SORTIE: fichier compressé pour tous les bytes{ Tant que les bytes sont égaux{ compteur++; } Si compteur >n (seuil de redondance){ Remet le pointeur au début de la chaîne identique Remplace le premier byte par le marqueur de compression le 2ieme par Compteur passe un byte et efface jusqu’à n-3 Bytes Else { passe au byte suivant et relance la boucle

Décompression Pour la décompression c’est aussi simple que la compression l’algorithme a juste à lire le fichier dès qu’il rencontre la marque de compression il regarde le second et tant que le nombre est inférieur à celui-ci il met le troisième caractère et il passe au caractère suivant.

Variantes En effet, il existe plusieurs variantes du RLE et qui ont toutes leurs variations sur la méthode de recherche des répétitions sur le RLE de base la recherche de répétitions se fait ligne par ligne. Mais il est possible de modifier cela pour faire: En verticale colonne par colonne. En ligne mais 4 bytes par 4 bytes. Ou encore en Zig-Zag. Ce qui va permettre de mieux traiter certains types de données Exemple RLE-Colonne sur texte.

Variantes(2) Representation de variante de codage du RLE

Conclusion Performances Limitations Donc ce type d’algorithme va être très performant sur les types de données où il y a des redondances comme les images synthétiques ou encore certains programmes. Il n’a pas besoin de fichier annexe (dictionnaire) . Limitations Cette méthode est très peu applicable sur la compression de données type « texte » due à la faible présence de redondance. Si le texte ne compte pas de redondance l’espace pris sera le double donc la compression sera sous performante.

LZW introduction LZW ou Lempel-Ziv-Welch Cet algorithme fonctionne sur le même principe que le RLE à savoir supprimer les redondances. Il ne lit pas byte par byte mais plutôt « mot » par « mot ». Et donc pour cela il doit utiliser une bibliothèque de mot.

Principe Le LZW est une amélioration du code LZ78 et c’est une méthode adaptative. Il a pour principe de ne plus coder des bytes mais des groupes de bytes grâce à l’utilisation d’un dictionnaire qui permet au cours de la compression de ne plus stocker les mots mais juste leurs références vers le dictionnaire. Ce dictionnaire est créé de manière dynamique qui en fonction des mots qu’il rencontre. S’il ne sont pas encore apparus, il créé une nouvelle entrée dans le dictionnaire et contient préalablement les 256 caractères du code ASCII pour des données de type texte.

Principe (2) Le système va lire chaque caractère du fichier et s’il est dans le dictionnaire il sort le code correspondant sinon il créé une nouvelle entrée dans le dictionnaire avec un nouveau code. En passant au caractère suivant il va regarder si cette chaîne de caractères est présente dans le dictionnaire si oui elle ressort le code de cette chaîne sinon elle créée un nouvelle entrée avec la plus petite chaîne déjà connue contenue dans la chaîne analyser . donc il va former des nouvelles chaînes avec des chaînes déjà connues du dictionnaire en ajoutant à la fin le caractère non connu et cette nouvelle chaîne est à son tour entrée dans le dictionnaire avec une référence spécifique et pour être utilisée de la même manière.

Principe (3) Exemple Chaîne à encoder: /WED/WE/WEE/WEB/WET Caractère lu Code ressorti Nouveau code Nouvelle entrée Chaîne compressé ou encodé: /WED 256 257 256 260 261 257 B 260 T

Principe(4) Exemple 2 aaababbbaaabaaaaaaabaabb 0 1 2 3 4 5 6 7 8 9 10 0a|1a|0b|1b|3b|2a|3a| 6a | 2b | 9b Division: index Codage

Algorithme STRING = get input character WHILE there are still input characters DO CHARACTER = get input character IF STRING+CHARACTER is in the string table then STRING = STRING+character ELSE output the code for STRING add STRING+CHARACTER to the string table STRING = CHARACTER END of IF END of WHILE output the code for STRING

Explication L’algorithme prend le premier caractère et tant qu’il y a des caractères dans le fichier il va concaténer le premier et celui d’après et là il fait une vérification si le premier plus le second sont dans le dictionnaire, il la concatène avec le troisième et ainsi de suite. Et si cette chaîne n’est pas dans le dictionnaire il créé une nouvelle entrée dans celui si et lui donne un code. Et il ressort le code correspondant à la chaîne.

Décompression Le RLE a juste besoin de lire le fichier compressé pour la décompression. Alors que le LZW devrait avoir le dictionnaire pour la décompression. Mais ceci a été résolu grâce à l’incorporation de phrase minimale d’office dans le dictionnaire. Comme les entrées sont séquentielles à la décompression possibilité de reconstruire le dictionnaire.

Performances Il arrive à des taux de compression au plus bas de l’ordre du RLE (38%). Et en moyenne a presque 50% lus performent sur les fichiers de grande taille mais avec les modifications LMZW permet de traiter les fichiers plus petits avec la même performance. A le gros avantage de ne pas avoir besoin du dictionnaire pour la décompression.

Limitations Le problème de ce type d’algorithme est qu’il est peu performant sur les données de type image car il y a peu, dans les images, de répétitions de longue suite de pixels. Ce qui fait la force de ces algorithmes. Le deuxième problème est plus technique dû à la complexité au niveau programmation surtout au niveau des déplacements de pointeur sur les fichiers à compresser. Et dernière limitation est d’ordre légal puisque ces algorithmes sont l’objet de 2 brevets.

Variantes Les variantes du LSW s’intéressent principalement sur les points faibles de ce dernier. PKZIP Évite le problème de fichier de petite taille en permettant un redimensionnement dynamique de la taille de l’identifiant ressorti par le dictionnaire . Car si le fichier est petit des identifiants de plus petites tailles donnent un meilleur taux de compression. LMZW Il modifie la méthode d’entrée dans le dictionnaire. En effet, il ne créé pas de nouvelle phrase en concaténant une déjà existante avec un autre caractère mis avec une autre phrase. Cela complique le dictionnaire mais permet de gagner en performance,même sur les fichiers de petite taille.

Conclusion On peut dire que les algorithmes de LZ et de LZW sont de très bons algorithmes de compression pour les données de type texte ou encore binaires car il partent d’un taux de compression initiale proche de celui du RLE (38%) pour arriver à près de 50% de compression. Ils sont utilisés dans beaucoup d’outils de compression tels que PKzip ARJ etc… Ils sont également beaucoup plus performants sur des fichiers de grandes tailles. En effet, ils ont besoin d’un certain nombre de caractères pour bien remplir leurs dictionnaires. Cet algorithme est symétrique ce qui veut dire qu’il met autant de temps en compression qu’en décompression.

Huffman introduction Il a pour but de transformer les caractères en identifiant binaire ( suite de 0 et de 1). De manière à ce qu’aucun code ne soit le préfix d’un autre. Ex : 110 et 1101 ne peuvent pas être présents car problème de compréhension lors de la décompression. Pour se faire il va donc utiliser des arbres de Huffman pour créer les identifiants.

Principe Cet algorithme se base sur les fréquences d’apparition des caractères. Il va les stocker dans une table et construire l’arbre de codage à partir de cette table. Donc il va réduire le nombre de bytes occupés par les caractères dont la fréquence est élevée et augmenter celui dont elle est faible.

Principe(2) Pour la création de l’arbre Pour chaque caractère il créé un arbre (feuille) où est stocké sa fréquence d’apparition. Tant que le nombre d’arbres est supérieur à 1, il fusionne les deux arbres ayant la fréquence d’apparition la plus faible. Une fois l’arbre construit il associe aux branches de chaque nœud 1 si c’est une branche droite 0 sinon.

Principe(3) En partant de la racine on peut obtenir le code de chaque caractère. On a également l’assurance de l’unicité de chaque code grâce à cette méthode de construction. Le fait que ce soit un arbre binaire. on sait que chaque feuille a un chemin unique pour aller jusqu’à la racine. Don unicité du code de chaque caractère.

Principe(4) Exemple Table de fréquence et construction de l’arbre.

Principe(5) Résultat de la construction a = 0 z = 100 c = 1010 x = 110 b = 111 Texte à compresser : axabataaxbcbtaabxxaazazaa (24 caractères) 011001110101100110111101011110110011111011000100010000 (54 bits) 01100111-01011001-10111101-01111011-00111110-11000100-010000 (7 octets)

Algorithme {T est le texte} {F est une file de priorité} C caractère de A calculer l'alphabet A et les fréquences f F =Null ; pour chaque c є A faire F = F + CreerArbreFeuille(c; f(c))g), tant que F contient plus d'un arbre faire a =ExtraireLeMin(F), b =ExtraireLeMin(F), F = F + CreerArbre(a; b; freq(a) + freq(b))g), renvoyer (F), ExtraireLeMin(F) : renvoie à la structure de tas binaire

Explication Calculs de fréquence. Regroupement des arbres-feuilles. Si branche droite ou gauche allocation du code pour chaque caractère.

Décompression Pour la décompression il faut que le programme ait l’arbre de Huffman ou la table de fréquence afin de pouvoir le reconstruire. une fois l’arbre reconstruit, il obtient les codes correspondants à chaque caractère il suffit plus que de les remplacer.

Performances Il a des taux de compression proches de celui du RLE. Mais a le gros avantage de traiter aussi bien les données de type texte que les images photographiques. Pas basé sur les répétitions. Pas de problème de fréquence égale, le code de sortie différent mais compressions identiques.

Limitations Nécessité de fournir l’arbre ou la table de fréquence. Il peut donc arriver que la taille de table plus le fichier compressé soit plus imposant ou égal a celle du fichier non compressé donc compression inutile. Peu performant sur les fichiers de petites tailles. Très sensible à la perte d’un bit.

Variantes Variante principale se base la création dynamique de l’arbre. Création de l’arbre au fur et à mesure de la lecture du fichier. Variante adaptative. Codage sur plus d’un caractère complexité plus grande et très peu utilisé en pratique.

Huffman adaptatif Cette variante permet de ne plus avoir besoin de parcourir les données avant. Il créé l’arbre de Huffman à la volée. L’arbre sera donc vide à l’origine à l’exception de 2 symboles <NEW> et <EOF> avec comme poids de départ 1

Huffman adaptatif(2) Donc dès l’apparition d’un nouveau symbole il sera mis en <NEW>. Et si le symbole est déjà présent sa fréquence sera augmentée et il sera replacée à sa bonne place dans l’arbre. Comme ce sont des arbres équilibrés ils sont régis par des lois très strictes sur l’addition et la suppression de feuille. Ce qui permet de ne pas devoir reconstruire l’arbre mais juste de permuter les branches mises en jeux.

Huffman adaptatif(3) Exemple: Codage de BAN Insertion de B Insertion de A

Huffman adaptatif(4) Résultats Là, on obtient donc le codage désiré Il faut remarquer que lors de la construction de l’arbre le code des caractères change.

Hauffman adaptatif(5) Avec cette variante il n’est plus nécessaire de fournir la table de fréquence et donc le gain de compression est relativement important Mais cet algorithme étant généralement récursif il est plus lent que la version statique.

Conclusion On peut dire que ce type d’algorithme a de bonnes performances qu’ils sont adaptés à quasiment tous les types de données. Ils sont très sensibles à la perte de bytes et que le fait de devoir fournir la table de fréquence fait baisser énormément la performance. Chose qui est plus ou moins réglée avec la version adaptative.

Conclusion générale « les conseils du chef » La chose primordiale à savoir est quel type de donnéeq on veut compresser Algorithme Remarque RLE(faible) Compression moyenne Efficace pour les données a forte répétition LZW(bon) Bonne compression Efficace sur texte. Breveter Huffman(moyen) Bonne compression mais nécessité de fournir la table de fréquence Efficace sur tous types de données Forme adaptative très intéressante.

MERCI

Rappel sur les arbres binaire Propriétés Tel que les 2 sous arbres de tout nœud on une hauteur différente d’au plus 1. Construction La construction se fait par insertion sur un arbre vide Inser L’insertion se fait toujours en feuille et est suivi d’un rééquilibrage Rééquilibrage (rotation) Pas de délétion pour le codage de hufmann

Rotation Si l’arbre reste équilibré pas de rotation S’il penche a gauche rotation droite Décalage des nœud sur le chemin de l’insertion vers la droite. S’il penche a droite rotation gauche Décalage des noeud sur le chemin de l’insertion vers le gauche. Si l’insertion est du même coté sue le sous arbre simple rotation. Sinon double rotation en fonction du déséquilibre.

Algo de création d’arbre huffman L’algorithme Hu-Tucker est l’example d’un algorithme gourmand (greedy). Il est execute en temps (n log n).