La compression est une branche importante de l’informatique. Les mécanismes sont depuis intégrés dans nos outils numériques. Lorsque nous prenons et partageons des photos ou des vidéos sur les réseaux sociaux, nous n’imaginons pas les calculs réalisés pour diminuer le poids de nos actions.
En même temps, avec les puissances de calcul actuel, compresser même des vidéos, cela ne demande plus beaucoup d’effort pour les téléphones modernes. Pourtant, on l’a vu au fil de l’été, les astuces mises en œuvre n’ont rien de triviales.
Compresser un fichier pour en réduire son poids sur nos stockage et réseaux, c’est avant tout connaître sa nature. En fonction de cela, il est possible de déterminer si la compression peut supprimer des informations ou doit être exacte.
La compression avec perte est bien plus efficace. A part, quelques audiophiles ou cinéphiles exigeants, cela ne dérangera personne. En résumé, pour des images, des sons ou des vidéos, la perte d’information est possible. Pour le reste (fichiers de données, pages HTML, certificats, contrats, …) la compression doit être sans perte.
Lors d’une compression sans perte, les stratégies employées sont souvent les mêmes : catalogage et gestion de l’entropie. Cela a donné cours à de nombreuses stratégies au début de l’informatique. Pour l’entropie, les techniques utilisées sont le codage de Huffman, le codage arithmétique et plus récemment le système numérique symétrique.
Pour le catalogage, Lempel et Ziv ont été très créatifs avec le LZ77 et le LZ78. Des variantes ont été trouvées par la suite (LZMA, LZSS, LZW) et appliquées dans par les concurrents de l’algorithme ZIP comme 7zip ou WinRAR.
L’encodage sans perte ne se limite pas à ces deux stratégies. Trois autres techniques ont trouvé leur place :
- modifier l’ordre des informations pour optimiser les étapes suivantes (la transformée de Burrows-Wheeler)
- compter le nombre d’occurrence d’un élément (RLE)
- Prédire les éléments suivants (PPM pour le texte)
De nombreux passionnés cherchent à améliorer ces techniques et à les adapter aux contenus actuels pour proposer des algorithmes de compression sans pertes toujours plus efficaces. Malheureusement dans certains domaines non informatiques, des décideurs attardés prient le saint Deflate qui est depuis obsolète.
Pour les contenus audio et vidéo, la perte d’information a peu d’importance pour les consommateurs tant que la qualité du son et de l’image reste correcte. On l’a vu au cours de l’été, les stratégies de compression sont complexes et requièrent des outils mathématiques de niveau supérieur.
Un son comme une image sont vus comme des signaux. C’est d’ailleurs ainsi qu’avant l’informatique ils étaient diffusés. Comme tout signal, il peut être représenté sous une forme mathématique. Des outils comme les transformées de Fourier, transformées en cosinus discrètes, … et leurs variantes permettent de distinguer les informations importantes.
En jouant sur les biais acoustiques et visuels, il devient facile de conserver les informations importantes pour le consommateur … et ainsi de réduire la taille des images et des sons. Les besoins augmentant, les efforts dans cette branche sont bien plus importants et les stratégies s’affinent pour gratter le moindre Ko superflu.
L’un des axes d’amélioration les plus explorés est dans la prédiction d’images dans une vidéo. Si on connaît 2 images à une seconde d’intervalle, est-il possible de calculer les images intermédiaires pour simuler le mouvement ? C’est plus compliqué qu’il n’y paraît.
–
Dans cette boîte à outils que je vous ai détaillé cet été, je vous ajoute quelques liens Wikipedia si vous voulez compléter le domaine. Par contre, c’est en version anglophone que les ressources sont les plus complètes pour les techniques (voir tableau en bas de l’article) et pour les applications.
Mais une nouvelle voie vient d’être ouverte. On en parlera dans le dernier article de la série.