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 des réseaux,
car cela demande d'énormes changements dans les infrastructures de télécommunication.
Ainsi, pour pallier à ce manque, il est
courant de réduire la taille des données en exploitant
la puissance des processeurs plutôt qu'en augmentant les capacités de stockage
et de transmission des données.
La compression consiste à réduire 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 intrinsèquement du type de données à
compresser : on ne compressera pas de la même façon une image qu'un fichier audio...
La compression peut se définir par le quotient de compression,
c'est-à-dire le quotient du nombre de bits dans l'image compressée par le nombre de
bits dans l'image originale.
Le taux de compression, souvent utilisé, est l'inverse du quotient
de compression, il est habituellement exprimé en pourcentage.
Enfin le gain de compression, également exprimé en pourcentage,
est le complément à 1 du taux de compression :
La compression physique agit directement sur les données; il s'agit ainsi de regarder
les données redondantes d'un train de bits à un autre.
La compression logique par contre est effectuée par un raisonnement logique en substituant
une information par une information équivalente.
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ême quantité
de travail pour chacune de ces opérations. C'est ce type de compression qui est
généralement utilisée dans les transmissions 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. Des algorithmes plus rapides en compression qu'en décompression
peuvent être nécessaire lorsque l'on archive des données auxquelles on n'accède peu
souvent (pour des raisons de sécurité par exemple), car cela crée des fichiers compacts.
La compression avec pertes (en anglais lossy compression), par opposition à la compression sans pertes (lossless compression), se permet d'éliminer quelques informations pour avoir
le meilleur taux de compression possible, tout en gardant un résultat qui soit
le plus proche possible des données originales. C'est le cas par exemple de certaines compressions d'images
ou de sons.
Etant donné que ce type de compression supprime des informations contenues
dans les données à compresser, on parle généralement de méthodes
de compression irréversibles.
Les fichiers exécutables par exemple ont notamment besoin de conserver leur intégrité pour fonctionner, en
effet il n'est pas concevable de reconstruire à l'à-peu-près un programme
en omettant parfois des bits et en en ajoutant là oû il
n'en faut pas.
Certains algorithmes de compression sont basés sur des dictionnaires spécifiques à un type
de données : ce sont des encodeurs non adaptifs. Les occurrences 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.
Enfin un encodeur semi-adaptif construira celui-ci en fonction des données à compresser :
il construit le dictionnaire en parcourant le fichier, puis compresse ce dernier.
|