Pourquoi compresser les données? |
De nos jours, la puissance des processeurs augmente plus vite que les capacités de
stockage, et énormément plus vite que la bande passante d'Internet, qui, malgré
les nouvelles technologies, a du mal
a augmenter car cela demande d'énormes changement dans les infrastructures telles
que les installations téléphoniques.
Ainsi, on préfère réduire la taille des données en exploitant
la puissance des processeurs plutôt que d'augmenter les capacités de stockage
et de télécommunication.
Qu'est-ce que la compression de données? |
La compression consiste en la réduction de la taille physique de blocs d'informations. Un compresseur utilise un algorithme qui sert à optimiser les données en utilisant des considérations propres au type de données à compresser, un décompresseur est donc nécessaire pour reconstruire les données originelles grâce à l'algorithme inverse de celui utilisé pour la compression.
La méthode de compression dépend du type de données à compresser: on ne compressera pas de la même façon une image qu'un fichier audio...
Compression physique et logique |
La compression physique agit sur les données même, il s'agit de regarder
les données redondantes d'un train de bits à un autre.
La compression logique est effectuée par un raisonnement logique en substituant
une information par une information équivalente.
Compression symétrique et asymétrique |
Dans le cas de la compression symétrique, la même méthode est utilisée pour compresser et décompresser l'information, il faut donc la mêce quantité de travail pour chacune de ces opérations. C'est ce type de compression qui est utilisée dans les transmission de données.
La compression asymétrique demande plus de travail pour l'une des deux opérations, on recherche souvent des algorithmes pour lesquels la compression est plus lente que la décompression. Les algorithmes étant plus rapides en compression qu'en décompression peuvent être nécessaire lorsque l'on archive des données auxquels on n'accède peu souvent (pour des raisons de sérité par exemple) et que l'on ne veut pas perdre de temps à les archiver.
Compression avec pertes |
Les programmes ont besoin de conserver leur intégrité pour fonctionner, en effet il n'est pas concevable de reconstruire à l'a peu près un programme en omettant parfois des lettres et en en ajoutant certaines là oû il ne faut pas...
La compression avec pertes se permet d'éliminer quelques informations pour avoir le meilleur taux de compression possible, tout en gardant un résultat qui soit le plus impreceptible possible, cela est le cas de certaines compressions d'images ou de sons. Pour une image de zèbre par exemple, l'algorithme n'effacera pas les rayures mais pourra pourquoi pas les modifier légèrement pour pouvoir appliquer l'algorithme de façon optimale.
Encodage adaptif, semi adaptif et non adaptif |
Certains algorithmes de compression sont basés sur des dictionnaires spécifiques à un type de données, ce sont des encodeurs non adaptifs. Les occurences de lettres dans un fichier texte par exemple dépendent de la langue dans laquelle celui-ci est écrit.
Un encodeur adaptif s'adapte aux données qu'il va devoir compresser, il ne part pas avec un dictionnaire déjà préparé pour un type de données.
Un encodeur semi-adaptif construira celui-ci en fonction de ce qu'il va trouver: il construit le dictionnaire en parcourant le fichier, puis compresse le dit fichier.