Comment fonctionne la compression de fichiers?

Table des matières:

Comment fonctionne la compression de fichiers?
Comment fonctionne la compression de fichiers?

Vidéo: Comment fonctionne la compression de fichiers?

Vidéo: Comment fonctionne la compression de fichiers?
Vidéo: Windows 10 : Ajouter la RAM ! sans logiciel ni application et augmenter les performances du PC - YouTube 2024, Avril
Anonim
Les ingénieurs en logiciel ont toujours mis au point de nouvelles méthodes pour intégrer de nombreuses données dans un espace restreint. C'était vrai quand nos disques durs étaient minuscules, et l'avènement d'Internet l'a rendu encore plus critique. La compression de fichiers joue un rôle important dans la connexion, nous permettant d’envoyer moins de données par la suite, de sorte que nous puissions télécharger plus rapidement et installer davantage de connexions sur des réseaux occupés.
Les ingénieurs en logiciel ont toujours mis au point de nouvelles méthodes pour intégrer de nombreuses données dans un espace restreint. C'était vrai quand nos disques durs étaient minuscules, et l'avènement d'Internet l'a rendu encore plus critique. La compression de fichiers joue un rôle important dans la connexion, nous permettant d’envoyer moins de données par la suite, de sorte que nous puissions télécharger plus rapidement et installer davantage de connexions sur des réseaux occupés.

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:

L'algorithme LZ77 examinerait ce texte, se rendrait compte qu'il répétait «howtogeek» trois fois, et le changerait comme suit:
L'algorithme LZ77 examinerait ce texte, se rendrait compte qu'il répétait «howtogeek» trois fois, et le changerait comme suit:
Ensuite, lorsqu'il voudra relire le texte, il remplacera chaque instance de (h) par «howtogeek», nous ramenant à la phrase d'origine.
Ensuite, lorsqu'il voudra relire le texte, il remplacera chaque instance de (h) par «howtogeek», nous ramenant à la phrase d'origine.

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:

Image
Image

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.

Maintenant, évidemment, c’est un exemple assez extrême puisque nous venons de répéter le même mot à maintes reprises. En général, vous obtiendrez probablement une compression d’environ 30 à 40% en utilisant un format de compression tel que ZIP sur un fichier contenant principalement du texte.
Maintenant, évidemment, c’est un exemple assez extrême puisque nous venons de répéter le même mot à maintes reprises. En général, vous obtiendrez probablement une compression d’environ 30 à 40% en utilisant un format de compression tel que ZIP sur un fichier contenant principalement du texte.

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?

La compression vidéo et audio fonctionne très différemment. Contrairement au texte où vous pouvez obtenir une compression sans perte et aucune donnée, vous avez les images. Nous avons ce que l’on appelle «compression avec perte» qui permet de perdre certaines données. Et plus vous compressez, plus vous perdez de données.
La compression vidéo et audio fonctionne très différemment. Contrairement au texte où vous pouvez obtenir une compression sans perte et aucune donnée, vous avez les images. Nous avons ce que l’on appelle «compression avec perte» qui permet de perdre certaines données. Et plus vous compressez, plus vous perdez de données.

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.

J'ai ensuite pris cette capture d'écran et l'ai parcourue plusieurs fois dans Photoshop, chaque fois que je l'exportais au format JPEG de basse qualité. Voici le résultat.
J'ai ensuite pris cette capture d'écran et l'ai parcourue plusieurs fois dans Photoshop, chaque fois que je l'exportais au format JPEG de basse qualité. Voici le résultat.
Ça a l'air pas mal, non?
Ça a l'air pas mal, non?

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.

Le format PNG de cette image faisait 200 Ko, mais le format JPEG de qualité 50% est seulement 28 Ko.
Le format PNG de cette image faisait 200 Ko, mais le format JPEG de qualité 50% est seulement 28 Ko.

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:

Cette image est horrible.Toutefois, de petites quantités de compression JPEG peuvent avoir un impact significatif sur la taille du fichier, ce qui le rend très utile pour la compression d'images sur des sites Web. La plupart des images que vous voyez en ligne sont compressées pour réduire les temps de téléchargement, en particulier pour les utilisateurs mobiles disposant de connexions de données médiocres. 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é.
Cette image est horrible.Toutefois, de petites quantités de compression JPEG peuvent avoir un impact significatif sur la taille du fichier, ce qui le rend très utile pour la compression d'images sur des sites Web. La plupart des images que vous voyez en ligne sont compressées pour réduire les temps de téléchargement, en particulier pour les utilisateurs mobiles disposant de connexions de données médiocres. 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. Vous penseriez peut-être qu’ils compresseraient chaque image vidéo au format JPEG, et ils le font certainement, mais il existe une meilleure méthode pour la vidéo.
La vidéo fonctionne un peu différemment des images. Vous penseriez peut-être qu’ils compresseraient chaque image vidéo au format JPEG, et ils le font certainement, mais il existe une meilleure méthode pour la 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.

La taille du fichier a été multipliée par 30, mais la qualité n’augmente pas beaucoup. En règle générale, les vidéos YouTube occupent entre 2 et 10 Mo / s en fonction de votre connexion, car rien de plus ne serait probablement remarqué.
La taille du fichier a été multipliée par 30, mais la qualité n’augmente pas beaucoup. En règle générale, les vidéos YouTube occupent entre 2 et 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 télécharger les mêmes vidéos de test de débit utilisées ici.

Compression audio

La compression audio fonctionne de manière très similaire à la compression de texte et d’image. Lorsque 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 est beaucoup, beaucoup plus forte.
La compression audio fonctionne de manière très similaire à la compression de texte et d’image. Lorsque 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 est beaucoup, beaucoup plus forte.

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.

Conseillé: