in

Comment fonctionne la compression de fichiers?

Les ingénieurs en logiciel ont toujours développé de nouvelles façons d’intégrer un grand nombre de données dans un petit espace. C’était vrai lorsque nos disques durs étaient minuscules, et l’avènement d’Internet vient de le rendre plus critique. La compression de fichiers joue un grand rôle dans la connexion, nous permettant d’envoyer moins de données sur toute la ligne afin que nous puissions avoir des téléchargements plus rapides et installer plus de connexions sur des réseaux occupés.

Alors, comment ça marche?

Répondre à cette question impliquerait d’expliquer des mathématiques très compliquées, 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 populaires pour la compression de texte reposent sur deux algorithmes de compression, utilisant les deux en même temps pour obtenir des taux de compression très élevés. Ces deux algorithmes sont «LZ77» et «Huffman coding». Le codage de Huffman est assez compliqué, et nous n’entrerons pas dans les détails ici. Principalement, il utilise des mathématiques sophistiquées pour attribuer des lettres plus courtes aux lettres individuelles, réduisant la taille des fichiers dans le processus. Si vous souhaitez en savoir plus, consultez Cet article sur le fonctionnement du code, ou ceci expliquant par Computerphile.

LZ77, en revanche, est relativement simple et c’est ce dont nous allons parler ici. Il cherche à supprimer les mots en double et à les remplacer par une «clé» plus petite qui représente le mot.

Prenons par exemple ce petit texte:

L’algorithme LZ77 examinerait ce texte, se rendrait compte qu’il répète trois fois «howtogeek» et le changerait en ceci:

Ensuite, quand il veut relire le texte, il remplacerait chaque instance de (h) par «howtogeek», nous ramenant à la phrase originale.

Nous appelons la compression comme celle-ci «sans perte» – les données que vous insérez sont les mêmes que celles que vous sortez. Rien n’est perdu.

En réalité, LZ77 n’utilise pas une liste de clés, mais remplace à la place la deuxième et la troisième occurrence par un lien de retour en mémoire:

Alors maintenant, quand il arrivera à (h), il se retournera vers «howtogeek» et le lira à la place.

Si vous êtes intéressé par une explication plus détaillée, cette vidéo de Computerphile est assez utile.

Maintenant, c’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 s’il apparaît dans des mots tels que «là», «leur» et «alors». Avec du 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é, cependant, il ne prend que 158 octets. C’est près de 95% de compression.

Maintenant, évidemment, c’est un exemple assez extrême puisque nous avons juste répété le même mot encore et encore. En pratique générale, vous obtiendrez probablement une compression d’environ 30 à 40% en utilisant un format de compression comme ZIP sur un fichier composé principalement de texte.

Cet algorithme LZ77 s’applique à toutes les données binaires, d’ailleurs, 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 que la plupart des langues utilisent. Une langue comme le chinois peut être un peu plus difficile à compresser que l’anglais, par exemple.

Comment fonctionne la compression d’image et de vidéo?

La compression vidéo et audio fonctionne très différemment. Contrairement au texte où vous pouvez avoir une compression sans perte, et aucune donnée n’est perdue, avec les images, nous avons ce qu’on appelle la «compression avec perte» où vous perdez certaines données. Et plus vous compressez, plus vous perdez de données.

C’est ce qui conduit à ces horribles fichiers JPEG que les gens ont téléchargés, partagés et capturés plusieurs fois. Chaque fois que l’image est compressée, elle perd des données.

Voici un exemple. C’est une capture d’écran que j’ai prise qui n’a pas du tout été compressée.

J’ai ensuite pris cette capture d’écran et l’ai parcourue plusieurs fois dans Photoshop, à chaque fois en l’exportant au format JPEG de mauvaise qualité. Voici le résultat.

Ça a l’air plutôt mauvais, non?

Eh bien, ce n’est que le pire des cas, l’exportation avec une qualité JPEG de 0% à chaque fois. À titre de comparaison, voici un JPEG de qualité à 50%, qui est presque impossible à distinguer de l’image PNG source à moins que vous ne le fassiez exploser et que vous ne l’examiniez de près.

Le PNG de cette image était de 200 Ko, mais ce JPEG de qualité à 50% ne fait que 28 Ko.

Alors, comment é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 des images en utilisant quelque chose appelé un Transformation discrète en cosinus, qui est une collection d’ondes sinusoïdales additionnées à des intensités variables. 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 plus la taille du fichier.

Cela donne aux JPEG un taux de compression incroyablement élevé, ce qui peut réduire un fichier de plusieurs mégaoctets à quelques kilo-octets, selon la qualité. Bien sûr, si vous l’utilisez trop, vous vous retrouvez avec ceci:

Cette image est horrible. Mais des quantités mineures de compression JPEG peuvent avoir un impact significatif sur la taille du fichier, ce qui rend JPEG très utile pour la compression d’images sur les sites Web. La plupart des images que vous voyez en ligne sont compressées pour économiser les temps de téléchargement, en particulier pour les utilisateurs mobiles avec de mauvaises connexions de données. En fait, toutes les images de How-To Geek ont ​​été compressées pour accélérer le chargement de la page, et vous ne l’avez probablement jamais remarqué.

Compression de vidéo

La vidéo fonctionne un peu différemment des images. On pourrait penser qu’ils compresseraient simplement chaque image de la vidéo en utilisant JPEG, et ils le font certainement, mais il existe une meilleure méthode pour la vidéo.

Nous utilisons quelque chose appelé «compression intertrame», qui calcule les changements entre chaque image et ne les stocke que. Ainsi, par exemple, si vous avez une prise de vue relativement fixe qui prend plusieurs secondes dans une vidéo, beaucoup d’espace est économisé car l’algorithme de compression n’a pas besoin de stocker tous les éléments de la scène qui ne changent pas. La compression intertrame est la principale raison pour laquelle nous avons la télévision numérique et la vidéo Web. Sans cela, les vidéos représenteraient des centaines de gigaoctets, 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 la vidéo principalement stationnaire, c’est pourquoi confetti ruine la qualité vidéo.

Remarque: GIF ne le fait pas, c’est pourquoi les GIF animés sont souvent très courts et petits, mais ont toujours une taille de fichier assez grande.

Une autre chose à garder à l’esprit à propos de la vidéo est son débit binaire – la quantité de données autorisée par seconde. Si votre débit binaire est de 200 kb / s, par exemple, votre vidéo sera plutôt mauvaise. La qualité augmente à mesure que le débit binaire augmente, mais après quelques mégaoctets par seconde, vous obtenez des rendements décroissants.

Ceci est une image agrandie tirée d’une vidéo d’une méduse. Celui de gauche est à 3 Mo / s et celui de droite est de 100 Mo / s.

Une augmentation de 30x de la taille du fichier, mais pas beaucoup d’augmentation de la qualité En règle générale, les vidéos YouTube se situent autour de 2 à 10 Mo / s en fonction de votre connexion, car rien de plus ne serait probablement remarqué.

Cette démo fonctionne mieux avec la vidéo réelle, donc si vous voulez la vérifier par vous-même, vous pouvez la télécharger vidéos de test de débit binaire utilisé ici.

Compression audio

La compression audio fonctionne de manière très similaire à la compression de texte et d’image. Là où JPEG supprime les détails d’une image que vous ne voyez pas, la compression audio fait de même pour les sons. Vous n’aurez peut-être pas besoin d’entendre le grincement du médiator sur la corde si la guitare réelle est beaucoup, beaucoup plus forte.

MP3 utilise également un débit binaire, allant du bas de gamme de 48 et 96 kbps (le bas de gamme) à 128 et 240 kbps (assez bon) à 320 kbps (audio haut de gamme), et vous n’entendrez probablement la différence qu’avec des écouteurs exceptionnellement bons ( et les oreilles).

Il existe également des codecs de compression sans perte pour l’audio – 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 du FLAC, mais avec la prédominance du MP3, il semble que la plupart des gens ne puissent pas dire ou ne se soucient pas de la différence.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Premiers pas avec TrueCrypt Drive Encryption sur Mac OS X

Premiers pas avec TrueCrypt Drive Encryption sur Mac OS X

Comment activer et utiliser iCloud Drive sur votre iPhone ou iPad

Comment activer et utiliser iCloud Drive sur votre iPhone ou iPad