Alors, comment ça marche?
Répondre à cette question impliquerait d’expliquer des calculs très compliqués, certainement plus que ce que nous pouvons couvrir dans cet article, mais vous n’avez pas besoin de comprendre précisément comment cela fonctionne mathématiquement pour comprendre les bases.
Les bibliothèques les plus courantes pour la compression de texte reposent sur deux algorithmes de compression, qui utilisent les deux en même temps pour obtenir des taux de compression très élevés. Ces deux algorithmes sont «LZ77» et «codage de Huffman». Le codage de Huffman est assez compliqué et nous n’entrerons pas dans les détails à ce sujet ici. Principalement, il utilise des maths sophistiqués pour assigner plus courtcodes binaires en lettres individuelles, ce qui réduit la taille des fichiers. Si vous souhaitez en savoir plus à ce sujet, consultez cet article sur le fonctionnement du code ou cet explicatif de Computerphile.
LZ77, en revanche, est relativement simple et c’est ce dont nous parlerons ici. Il cherche à supprimer les mots en double et à les remplacer par une «clé» plus petite qui représente le mot.
Prenez ce court texte par exemple:
Nous appelons la compression «sans perte»: les données que vous avez entrées sont les mêmes que celles que vous extrayez. Rien n'est perdu.
En réalité, LZ77 n’utilise pas de liste de clés, mais remplace les deuxième et troisième occurrences par un lien en mémoire:
Alors maintenant, quand il arrive à (h), il retournera à “howtogeek” et lira cela à la place.
Si vous souhaitez une explication plus détaillée, cette vidéo de Computerphile est très utile.
Maintenant, ceci est un exemple idéalisé. En réalité, la plupart du texte est compressé avec des touches aussi petites que quelques caractères. Par exemple, le mot «le» serait compressé même lorsqu'il apparaît dans des mots tels que «là-bas», «leur» et «ensuite». Avec le texte répété, vous pouvez obtenir des taux de compression fous. Prenez ce fichier texte avec le mot «howtogeek» répété 100 fois. Le fichier texte d'origine a une taille de trois kilo-octets. Une fois compressé, il ne prend que 158 octets. C'est près de 95% de compression.
En passant, cet algorithme LZ77 s'applique à toutes les données binaires, et pas seulement au texte, bien que le texte soit généralement plus facile à compresser en raison du nombre de mots répétés utilisés par la plupart des langues. Une langue comme le chinois pourrait être un peu plus difficile à compresser que l'anglais, par exemple.
Comment fonctionne la compression d'images et de vidéos?
C’est ce qui conduit à des images JPEG d’apparence horrible que les gens ont téléchargées, partagées et saisies à plusieurs reprises. Chaque fois que l'image est compressée, elle perd des données.
Voici un exemple. Ceci est une capture d'écran que j'ai prise qui n'a pas été compressée du tout.
Eh bien, il ne s'agit que du pire des cas, exportant à une qualité JPEG de 0% à chaque fois. À titre de comparaison, voici un fichier JPEG de qualité 50%, qui est presque indiscernable de l’image PNG source, à moins que vous n’explosiez pour le regarder de près.
Alors, comment cela économise-t-il autant d'espace? Eh bien, l'algorithme JPEG est un exploit d'ingénierie. La plupart des images stockent une liste de nombres, chaque nombre représentant un seul pixel.
JPEG ne fait rien de tout cela. Au lieu de cela, il stocke les images en utilisant ce que l’on appelle une transformée en cosinus discrète, qui est une collection d’ondes sinusoïdales additionnées à différentes intensités. Il utilise 64 équations différentes, mais la plupart d’entre elles ne sont pas utilisées. C’est ce que fait le curseur de qualité pour JPEG dans Photoshop et d’autres applications d’image: choisissez le nombre d’équations à utiliser. Les applications utilisent ensuite l'encodage Huffman pour réduire encore la taille du fichier.
Cela donne aux fichiers JPEG un taux de compression extrêmement élevé, ce qui peut réduire un fichier de plusieurs mégaoctets à quelques kilo-octets, en fonction de la qualité. Bien sûr, si vous l'utilisez trop, vous vous retrouvez avec ceci:
Compression de vidéo
Nous utilisons quelque chose appelé «compression inter-images», qui calcule les modifications entre chaque image et ne les stocke que. Ainsi, par exemple, si vous avez une prise de vue relativement immobile prenant plusieurs secondes dans une vidéo, vous économiserez beaucoup d’espace, car l’algorithme de compression n’a pas besoin de stocker tout ce qui ne change pas dans la scène. La compression intertrame est la principale raison pour laquelle nous avons la télévision numérique et la vidéo sur Internet. Sans cette technologie, les vidéos représenteraient des centaines de gigaoctets, soit plus que la taille moyenne du disque dur en 2005, lors du lancement de YouTube.
De plus, étant donné que la compression intertrame fonctionne mieux avec une vidéo principalement stationnaire, c’est pourquoi les confettis ruinent la qualité vidéo.
Remarque: le format GIF ne le fait pas. C'est pourquoi les fichiers GIF animés sont souvent très petits et très courts, mais ont néanmoins une taille de fichier assez importante.
Une autre chose à garder à l'esprit à propos de la vidéo est son débit: la quantité de données autorisée en une seconde. Si votre débit est de 200 kb / s, par exemple, votre vidéo aura une très mauvaise image. La qualité augmente au fur et à mesure que le débit augmente, mais après quelques mégaoctets par seconde, vous obtenez des rendements décroissants.
Ceci est un cadre zoomé tiré d'une vidéo d'une méduse. Celui de gauche est à 3 Mo / s et celui de droite, 100 Mo / s.
Cette démo fonctionne mieux avec la vidéo réelle, donc si vous voulez la vérifier par vous-même, vous pouvez télécharger les mêmes vidéos de test de débit utilisées ici.
Compression audio
Le format MP3 utilise également un débit binaire allant du bas de 48 et 96 kbps (le bas) à 128 et 240 kbps (plutôt bon) à 320 kbps (audio haut de gamme). et les oreilles).
Il existe également des codecs de compression audio sans perte - le principal étant FLAC - qui utilise le codage LZ77 pour fournir un son entièrement sans perte. Certaines personnes ne jurent que par la qualité audio parfaite de FLAC, mais avec la prédominance du MP3, il semble que la plupart des gens ne savent pas ou ne se soucient pas de la différence.