On appelle algorithme de compression sans perte toute procédure de codage ayant pour objectif de représenter une certaine quantité d'information en utilisant ou en occupant un espace plus petit, permettant ainsi une reconstruction exacte des données d'origine. C'est-à-dire que la compression sans perte englobe les techniques permettant de générer un duplicata exact du flux de données d'entrée après un cycle de compression/expansion. Pour cette raison, la compression sans perte est utilisée pour compresser des fichiers contenant des données qui ne peuvent pas être dégradées ou perdues, tels que des fichiers textes, images et son[1],[2].

Comparaison de la compression d'image entre les formats JPG (à gauche) et PNG (à droite). PNG utilise une compression sans perte.

Ce type de compression est basé sur les concepts de la théorie de l'information, tels que la redondance et l'entropie des données et est généralement implémenté à l'aide d'un ou deux types de modèles différents : statique et basé sur dictionnaire.

Méthodes de compression

modifier

Le modèle statique encode les données à partir de probabilités prédéfinies d'apparition des symboles. Dans sa forme la plus simple, il repose sur une table de fréquences fixe. La construction d'un arbre de Huffman complet peut être coûteuse en calcul ; des échantillons représentatifs des données sont donc souvent analysés afin d'établir une table de fréquences utilisée pour générer l'arbre appliqué au reste des données. Toutefois, un modèle statique présente des limites : si les caractéristiques du flux d'entrée diffèrent des statistiques initialement établies, le taux de compression peut diminuer, voire produire un fichier plus volumineux que les données d'origine. Des modèles adaptatifs ont ainsi été développés afin de construire les tables dynamiquement lors du traitement du flux de données[3].

Les méthodes fondées sur un dictionnaire remplacent des séquences de symboles par des références plus courtes. Contrairement aux modèles statiques, qui codent généralement les symboles individuellement, ces méthodes recherchent des groupes de symboles déjà présents dans un dictionnaire et les remplacent par un indice ou un pointeur correspondant.

Parmi les principaux algorithmes de compression sans perte figurent les algorithmes Lempel-Ziv, notamment LZ77 et LZ78[4], ainsi que LZW[5].

La compression sans perte est utilisée dans de nombreux archiveurs de fichiers, tels que RAR, gzip, bzip2, ZIP, 7z, ARJ et Lha. Elle est également employée pour certains formats d'image, comme PNG ou le RLE, ainsi que pour des formats audio tels que FLAC et Monkey's Audio. En vidéo, son usage reste plus limité en raison des volumes de données, mais elle peut être utilisée lors de la capture ou du montage.

Il existe plusieurs méthodes de compression sans perte. Le codage RLE (run-length encoding), par exemple, remplace des séquences répétitives de valeurs identiques par une valeur unique accompagnée du nombre de répétitions. Cette méthode est particulièrement adaptée aux graphiques simples comportant de longues suites de données identiques.

Il n'existe cependant pas d'algorithme de compression universel capable de compresser efficacement tous les types de données. Toute méthode de compression sans perte comporte des cas où les données sont peu compressées, voire augmentées en taille[1].

Formats de fichier de compression sans perte

modifier

Les formats de fichier de compression sans perte sont identifiés grâce à l'extension ajoutée à la fin du nom de fichier (« nomdefichier.ZIP » par exemple), d'où leur dénomination très abrégée. Les formats les plus courants sont :

  • 7z
  • ACE
  • ARC
  • APE (pour les flux audio)
  • ARJ
  • bz, bz2 (tar peut être utilisé pour créer les archives de ce type)
  • CAB, utilisé par Microsoft
  • FLAC (pour les flux audio)
  • FFV1 (pour les flux vidéo)
  • gzip, gz (qui est un fichier à une seule entrée, tar peut être utilisé pour créer les archives de ce type)
  • lzh
  • RAR
  • RK
  • UHA
  • XZ implémenté par XZ Utils
  • Z (surtout sous Unix)
  • ZIP
  • zoo

Les standards ouverts les plus courants sont décrits dans plusieurs RFC :

  • RFC 1950[6] (ZLIB, flux de données compressées)
  • RFC 1951[7] (système de compression par blocs « Deflate », utilisé par Zip et gz)
  • RFC 1952[8] (format de fichier compressé gzip)

Voir aussi

modifier

Notes et références

modifier
  1. a et b « La compression de données - Les deux types », sur igm.univ-mlv.fr (consulté le 28 mars 2019)
  2. (en) « Universal lossless data compression algorithms »
  3. « History of Lossless Data Compression Algorithms », sur ETHW (consulté le 28 mars 2019)
  4. Jacob Ziv et Abraham Lempel, « A Universal Algorithm for Sequential Data Compression », IEEE Transactions on Information Theory, vol. 23, no 3,‎ mai 1977, p. 337-343 (DOI 10.1109/TIT.1977.1055714, lire en ligne [PDF])
  5. Terry A. Welch, « A Technique for High-Performance Data Compression », IEEE Computer, vol. 17, no 6,‎ juin 1984, p. 8-19 (DOI 10.1109/MC.1984.1659158)
  6. (en) Request for comments no 1950
  7. (en) Request for comments no 1951
  8. (en) Request for comments no 1952

Liens externes

modifier

📚 Artikel Terkait di Wikipedia

Compression de données

l'originale. Les algorithmes de compression sans perte sont utilisés pour les archives, les fichiers exécutables ou les textes. Pour la compression de données

Portable Network Graphics

numériques, qui a été créé pour remplacer le format GIF, qui utilise l'algorithme de compression de données sans perte LZW, soumis à un brevet et des royalties

JPEG

de processus de compression : avec pertes ou compression irréversible. C’est le JPEG « classique ». Il permet des taux de compression de 3 à 100[réf. nécessaire]

Algorithme de Douglas-Peucker

supprimant des points. L'algorithme a été publié par David H. Douglas et Thomas K. Peucker en 1973. Il est utilisé en compression de données vectorielles

MP3

importante selon l'encodage employé (type d'algorithme, taux de compression, etc.). Les fortes compressions (encodages à ou en dessous de 128 kbit/s par

WinRAR

version payante et complète existe. Il utilise par défaut un algorithme de compression propriétaire, le RAR, mais il est également capable de compresser

Brotli

Il utilise un algorithme de compression offrant une vitesse de décompression comparable à l'algorithme deflate, et un taux de compression proche de LZMA

Codage de Huffman

articles homonymes, voir Huffman. Le codage de Huffman est un algorithme de compression de données sans perte. Le codage de Huffman utilise un code à