Comment fonctionne le format JPEG

Les images JPEG sont omniprésentes dans nos vies numériques, mais derrière ce voile de conscience se cachent des algorithmes qui suppriment les détails que l’œil humain ne peut pas voir. Le résultat est la plus haute qualité visuelle dans la plus petite taille de fichier - mais comment tout cela fonctionne-t-il exactement ? Voyons exactement ce que nos yeux ne voient pas !

Comment fonctionne le format JPEG

Il est facile de tenir pour acquis la possibilité d'envoyer une photo à un ami sans se soucier de l'appareil, du navigateur ou du système d'exploitation qu'il utilise - mais cela n'a pas toujours été le cas. Au début des années 1980, les ordinateurs pouvaient stocker et afficher des images numériques, mais de nombreuses idées divergentes sur la meilleure façon d'y parvenir. Vous ne pouviez pas simplement envoyer une image d’un ordinateur à un autre en espérant que cela fonctionnerait.

Pour résoudre ce problème, un comité d'experts du monde entier a été réuni en 1986 sous le nom de «Groupe mixte d'experts en photographie» (Joint Photographic Experts Group, JPEG), fondé dans le cadre du travail conjoint de l'Organisation internationale de normalisation (ISO) et de la Commission électrotechnique internationale (CEI), deux organisations internationales de normalisation dont le siège est à Genève (Suisse).

Un groupe de personnes appelé JPEG a créé la norme de compression d'images numériques JPEG en 1992. Quiconque a utilisé Internet a probablement rencontré des images codées en JPEG. Il s’agit du moyen le plus courant d’encoder, d’envoyer et de stocker des images. Des pages Web aux courriers électroniques en passant par les réseaux sociaux, le format JPEG est utilisé des milliards de fois par jour, presque chaque fois que nous visualisons ou envoyons une image en ligne. Sans les fichiers JPEG, le Web serait moins lumineux, plus lent et contiendrait probablement moins d'images de chats !

Cet article explique comment décoder une image JPEG. En d’autres termes, ce qui est nécessaire pour convertir les données compressées stockées sur un ordinateur en une image qui apparaît à l’écran. Cela vaut la peine d'être connu, non seulement parce que c'est important pour comprendre la technologie que nous utilisons au quotidien, mais aussi parce qu'en révélant les niveaux de compression, nous connaîtrons mieux la perception et la vision, ainsi que les détails les plus importants pour nos yeux. sensible à.

D’ailleurs, c’est très intéressant de jouer ainsi avec les images.

Comment fonctionne le format JPEG

Regarder à l'intérieur d'un JPEG

Sur un ordinateur, tout est stocké sous forme de séquence de nombres binaires. Habituellement, ces bits, zéros et uns, sont regroupés par huit, constituant des octets. Lorsque vous ouvrez une image JPEG sur votre ordinateur, quelque chose (navigateur, système d'exploitation, etc.) doit décoder les octets, restaurant ainsi l'image d'origine sous la forme d'une liste de couleurs pouvant être affichée.

Si vous téléchargez ce mignon photo d'un chat et ouvrez-le dans un éditeur de texte, vous verrez un tas de caractères confus.

Comment fonctionne le format JPEG
Ici, j'utilise Notepad++ pour inspecter le contenu du fichier, car les éditeurs de texte courants comme le Bloc-notes de Windows gâcheront le binaire après l'avoir enregistré et il ne conviendra pas au format JPEG.

Ouvrir une image dans un éditeur de texte embrouille votre ordinateur, tout comme vous confondez votre cerveau lorsque vous vous frottez les yeux et commencez à voir des taches colorées !

Ces endroits que vous voyez sont connus sous le nom de phosphènes, et ne sont pas le résultat d’une exposition à un stimulus lumineux ou d’hallucinations générées par l’esprit. Ils se produisent parce que votre cerveau pense que tout signal électrique émis par les nerfs optiques transporte des informations sur la lumière. Le cerveau doit faire de telles hypothèses, car il n’existe aucun moyen de savoir si le signal est un son, une vision ou autre chose. Tous les nerfs du corps transmettent exactement les mêmes impulsions électriques. Lorsque vous appliquez une pression sur vos yeux, vous envoyez des signaux qui ne sont pas visuels, mais qui activent des récepteurs dans l’œil, que votre cerveau interprète – dans ce cas à tort – comme quelque chose de visuel. Vous pouvez littéralement voir la pression !

C'est drôle de penser à quel point les ordinateurs sont similaires au cerveau, mais c'est aussi une analogie utile, illustrant à quel point la signification des données, qu'elles soient transportées dans le corps par des nerfs ou stockées dans un ordinateur, dépend de la façon dont elles sont interprétées. Toutes les données binaires sont constituées de XNUMX et de XNUMX, composants de base capables de transmettre tout type d'information. Votre ordinateur devine souvent comment les interpréter à l’aide d’indices tels que les extensions de fichiers. Maintenant, nous lui faisons interpréter comme du texte, car c'est ce qu'attend l'éditeur de texte.

Pour comprendre comment décoder un JPEG, nous devons voir les signaux originaux eux-mêmes : les données binaires. Cela peut être fait avec un éditeur hexadécimal, ou directement sur page Web de l'article original! Il y a une image à côté de laquelle, dans le champ de texte, tous ses octets (à l'exception de l'en-tête) sont présentés sous forme décimale. Vous pouvez les modifier et le script recodera et produira une nouvelle image à la volée.

Comment fonctionne le format JPEG

Vous pouvez apprendre beaucoup de choses simplement en jouant avec cet éditeur. Par exemple, pouvez-vous dire dans quel ordre les pixels sont stockés ?

Dans cet exemple, ce qui est étrange, c'est que changer certains chiffres n'affecte pas du tout l'image, et, par exemple, si vous remplacez le chiffre 17 par 0 dans la première ligne, alors la photo sera complètement gâchée !

Comment fonctionne le format JPEG

D'autres changements, comme le changement du 7 de la ligne 1988 en 254, modifient la couleur, mais uniquement les pixels suivants.

Comment fonctionne le format JPEG

Le plus étrange est peut-être que certains chiffres changent non seulement la couleur, mais aussi la forme de l'image. Remplacez 70 sur la ligne 12 par 2 et regardez la rangée supérieure de l'image pour voir ce que je veux dire.

Comment fonctionne le format JPEG

Et quelle que soit l'image JPEG que vous utilisez, vous trouverez toujours ces modèles d'échecs énigmatiques lors de l'édition d'octets.

En jouant avec l'éditeur, il est difficile de comprendre comment recréer une photo à partir de ces octets, car la compression JPEG se compose de trois technologies différentes qui sont appliquées séquentiellement en niveaux. Nous étudierons chacun d’eux séparément pour découvrir le comportement mystérieux que nous observons.

Trois niveaux de compression JPEG :

  1. Sous-échantillonnage de couleurs.
  2. Transformation en cosinus discrète et discrétisation.
  3. Codage de la longueur de course, delta и huffman

Pour vous donner une idée de l'ampleur de la compression, sachez que l'image ci-dessus représente 79 819 nombres, soit environ 79 Ko. Si nous devions le stocker sans compression, nous aurions besoin de trois nombres pour chaque pixel – pour les composants rouge, vert et bleu. Cela équivaudrait à 917 700 numéros, soit env. 917 Ko. Grâce à la compression JPEG, le fichier final a été réduit de plus de 10 fois !

En fait, cette image peut être beaucoup plus compressée. Ci-dessous, deux images côte à côte - la photo de droite a été compressée à 16 Ko, soit 57 fois moins que la version non compressée !

Comment fonctionne le format JPEG

Si vous regardez bien, vous verrez que ces images ne sont pas identiques. Les deux sont des images avec compression JPEG, mais celle de droite est beaucoup plus petite en volume. Cela semble également un peu pire (regardez les carrés de couleur d'arrière-plan). Par conséquent, JPEG est également appelé compression avec perte ; pendant le processus de compression, l'image change et perd certains détails.

1. Sous-échantillonnage des couleurs

Voici une image avec uniquement le premier niveau de compression appliqué.

Comment fonctionne le format JPEG
(Version interactive en l'original des articles). Supprimer un numéro détruit toutes les couleurs. Cependant, si exactement six nombres sont supprimés, cela n’a que peu ou pas d’effet sur l’image.

Les chiffres sont désormais un peu plus faciles à déchiffrer. Il s'agit presque d'une simple liste de couleurs, chaque octet change exactement d'un pixel, mais c'est déjà la moitié de la taille d'une image non compressée (ce qui prendrait environ 300 Ko dans une taille aussi réduite). Devine pourquoi?

Vous pouvez voir que ces nombres ne représentent pas les composants standards rouge, vert et bleu, car si nous remplaçons tous les nombres par des zéros, nous obtenons une image verte (pas blanche).

Comment fonctionne le format JPEG

En effet, ces octets représentent Y (luminosité),

Comment fonctionne le format JPEG

Cb (bleu relatif),

Comment fonctionne le format JPEG

et des images Cr (rougeur relative).

Comment fonctionne le format JPEG

Pourquoi ne pas utiliser le RVB ? Après tout, c’est ainsi que fonctionnent la plupart des écrans modernes. Votre moniteur peut afficher n'importe quelle couleur, y compris le rouge, le vert et le bleu, à différentes intensités pour chaque pixel. Le blanc est obtenu en allumant les trois à pleine luminosité, et le noir en les éteignant.

Comment fonctionne le format JPEG

C’est également très similaire au fonctionnement de l’œil humain. Les récepteurs de couleurs dans nos yeux sont appelés "cônes", et sont divisés en trois types, dont chacun est plus sensible aux couleurs rouge, vert ou bleu [les cônes de type S sont sensibles au bleu violet (S de l'anglais. Spectre court - courte longueur d'onde), Type M - en vert-jaune (M de l'anglais. Onde moyenne - moyenne) et type L - en jaune-rouge (L de l'anglais. Onde longue - longue) du spectre. La présence de ces trois types de cônes (et de bâtonnets sensibles dans la partie vert émeraude du spectre) donne à une personne une vision des couleurs. / environ. trad.]. Des bâtons, l’autre type de photorécepteur de nos yeux, est capable de détecter les changements de luminosité mais est beaucoup plus sensible à la couleur. Nos yeux contiennent environ 120 millions de bâtonnets et seulement 6 millions de cônes.

Par conséquent, nos yeux remarquent bien mieux les changements de luminosité que les changements de couleur. Si vous séparez la couleur de la luminosité, vous pouvez supprimer un peu de couleur et personne ne remarquera rien. Le sous-échantillonnage chromatique est le processus de représentation des composantes de couleur d'une image à une résolution inférieure à celle des composantes de luminance. Dans l'exemple ci-dessus, chaque pixel a exactement une composante Y, et chaque groupe individuel de quatre pixels a exactement une composante Cb et une composante Cr. Par conséquent, l’image contient quatre fois moins d’informations sur les couleurs que l’original.

L'espace colorimétrique YCbCr n'est pas seulement utilisé dans les fichiers JPEG. Il a été inventé en 1938 pour les émissions de télévision. Tout le monde n'a pas de téléviseur couleur, donc séparer la couleur et la luminosité a permis à tout le monde d'obtenir le même signal, et les téléviseurs sans couleur n'utilisaient que le composant de luminosité.

Par conséquent, supprimer un numéro de l’éditeur détruit complètement toutes les couleurs. Les composants sont stockés sous la forme AAAA Cb Cr (en fait, pas nécessairement dans cet ordre - l'ordre de stockage est spécifié dans l'en-tête du fichier). En supprimant le premier nombre, la première valeur de Cb sera perçue comme Y, Cr comme Cb, et en général, un effet domino sera obtenu, commutant toutes les couleurs de l'image.

La spécification JPEG ne nécessite pas l'utilisation de YCbCr. Mais la plupart des fichiers l'utilisent car il donne des images de meilleure qualité après sous-échantillonnage par rapport au RVB. Mais vous n’êtes pas obligé de me croire sur parole. Voyez par vous-même dans le tableau ci-dessous à quoi ressemblerait le sous-échantillonnage de chaque composant individuel en RVB et YCbCr.

Comment fonctionne le format JPEG
(Version interactive en l'original des articles).

La suppression du bleu n’est pas aussi visible que celle du rouge ou du vert. Cela est dû aux six millions de cônes que contiennent vos yeux, dont environ 64 % sont sensibles au rouge, 32 % au vert et 2 % au bleu.

Le sous-échantillonnage de la composante Y (en bas à gauche) est mieux visible. Même un petit changement est perceptible.

La conversion d'une image RVB en YCbCr ne réduit pas la taille du fichier, mais facilite la recherche de détails moins visibles pouvant être supprimés. La compression avec perte se produit dans la deuxième étape. Il repose sur l’idée de présenter les données sous une forme plus compressible.

2. Transformation en cosinus discrète et discrétisation

Ce niveau de compression définit en grande partie l’essence du JPEG. Après avoir converti les couleurs en YCbCr, les composants sont compressés individuellement, nous pouvons donc désormais nous concentrer uniquement sur le composant Y. Et voici à quoi ressemblent les octets du composant Y après avoir appliqué ce niveau.

Comment fonctionne le format JPEG
(Version interactive en l'original des articles). Dans la version interactive, cliquer sur un pixel fait défiler l'éditeur jusqu'à la ligne qui le représente. Essayez de supprimer les nombres à la fin ou d'ajouter quelques zéros à un certain nombre.

À première vue, cela ressemble à une très mauvaise compression. Il y a 100 000 pixels dans une image, et il faut 102 400 chiffres pour indiquer leur luminosité (composantes Y) - c'est pire que de ne rien compresser du tout !

Notez cependant que la plupart de ces chiffres sont nuls. De plus, tous ces zéros en fin de lignes peuvent être supprimés sans changer l'image. Il reste environ 26 000 numéros, soit presque 4 fois moins !

Ce niveau contient le secret des modèles d'échecs. Contrairement à d’autres effets que nous avons observés, l’apparition de ces motifs n’est pas un problème. Ce sont les éléments constitutifs de l’image entière. Chaque ligne de l'éditeur contient exactement 64 nombres, coefficients de transformation cosinus discrète (DCT) correspondant aux intensités de 64 motifs uniques.

Ces modèles sont formés sur la base du tracé cosinus. Voici à quoi ressemblent certains d’entre eux :

Comment fonctionne le format JPEG
8 cotes sur 64

Vous trouverez ci-dessous une image montrant les 64 modèles.

Comment fonctionne le format JPEG
(Version interactive en l'original des articles).

Ces motifs revêtent une importance particulière car ils constituent la base des images 8x8. Si vous n'êtes pas familier avec l'algèbre linéaire, cela signifie que n'importe quelle image 8x8 peut être obtenue à partir de ces 64 modèles. DCT est le processus consistant à diviser les images en blocs 8x8 et à convertir chaque bloc en une combinaison de ces 64 coefficients.

Le fait que n’importe quelle image puisse être composée de 64 motifs spécifiques semble magique. Cependant, cela revient à dire que n'importe quel endroit sur Terre peut être décrit par deux nombres : la latitude et la longitude [indiquant les hémisphères / env. trad.]. Nous pensons souvent que la surface de la Terre est bidimensionnelle, nous n'avons donc besoin que de deux nombres. Une image 8x8 a 64 dimensions, nous avons donc besoin de 64 nombres.

On ne sait pas encore comment cela nous aide en termes de compression. Si nous avons besoin de 64 nombres pour représenter une image 8x8, pourquoi serait-ce mieux que de simplement stocker 64 composants de luminance ? Nous faisons cela pour la même raison que nous avons transformé trois nombres RVB en trois nombres YCbCr : cela nous permet de supprimer des détails subtils.

Il est difficile de voir exactement quels détails sont supprimés à ce stade car JPEG applique la DCT aux blocs 8x8. Cependant, personne ne nous interdit de l’appliquer à l’ensemble du tableau. Voici à quoi ressemble la DCT pour le composant Y lorsqu'elle est appliquée à l'ensemble de l'image :

Comment fonctionne le format JPEG

Plus de 60 000 numéros peuvent être supprimés de la fin sans pratiquement aucun changement notable sur la photo.

Comment fonctionne le format JPEG

Notez cependant que si nous remettons à zéro les cinq premiers nombres, la différence sera évidente.

Comment fonctionne le format JPEG

Les chiffres au début représentent les changements de basse fréquence dans l’image, et nos yeux les captent le mieux. Les chiffres vers la fin indiquent des changements à haute fréquence qui sont plus difficiles à remarquer. Pour « voir ce que l'œil ne peut pas voir », nous pouvons isoler ces détails à haute fréquence en mettant à zéro les 5000 XNUMX premiers nombres.

Comment fonctionne le format JPEG

Nous voyons toutes les zones de l’image où le plus grand changement se produit d’un pixel à l’autre. Les yeux du chat, ses moustaches, la couverture en éponge et les ombres dans le coin inférieur gauche ressortent. Vous pouvez aller plus loin en mettant à zéro les 10 000 premiers nombres :

Comment fonctionne le format JPEG

20 000 XNUMX:

Comment fonctionne le format JPEG

40 000 XNUMX:

Comment fonctionne le format JPEG

60 000 XNUMX:

Comment fonctionne le format JPEG

Ces détails haute fréquence sont supprimés par JPEG lors de l'étape de compression. La conversion des couleurs en coefficients DCT se fait sans perte. Les pertes se forment au pas d'échantillonnage, où les valeurs de haute fréquence ou proches de zéro sont supprimées. Lorsque vous diminuez la qualité de l'enregistrement JPEG, le programme augmente le seuil du nombre de valeurs à supprimer, ce qui réduit la taille du fichier, mais rend l'image plus pixellisée. Ainsi, l’image de la première section, qui était 57 fois plus petite, ressemblait à ceci. Chaque bloc 8x8 représentait un nombre beaucoup plus petit de coefficients DCT par rapport à la version de qualité supérieure.

Vous pouvez faire quelque chose d’aussi cool que de diffuser progressivement des images. Vous pouvez afficher une image floue qui devient de plus en plus détaillée à mesure que davantage de coefficients sont téléchargés.

Ici, juste pour le plaisir, que se passe-t-il lorsque l'on utilise seulement 24 000 numéros :

Comment fonctionne le format JPEG

Ou juste 5000 :

Comment fonctionne le format JPEG

Très flou mais reconnaissable !

3. Codage des longueurs de course, delta et Huffman

Jusqu’à présent, toutes les étapes de compression se sont soldées par des pertes. La dernière étape, au contraire, se déroule sans perte. Il ne supprime pas les informations, mais réduit considérablement la taille du fichier.

Comment compresser quelque chose sans supprimer des informations ? Imaginez comment nous décririons un simple rectangle noir de 700 x 437.

JPEG utilise 5000 XNUMX nombres pour cela, mais de bien meilleurs résultats peuvent être obtenus. Pouvez-vous imaginer un schéma de codage décrivant une telle image en aussi peu d’octets que possible ?

Le schéma minimal que j'ai pu proposer en utilise quatre : trois pour la couleur et un quatrième pour le nombre de pixels de cette couleur. L'idée de représenter des valeurs répétées d'une manière aussi compressée est appelée codage en longueur. C'est sans perte car nous pouvons récupérer les données codées dans leur forme originale.

La taille d'un fichier JPEG avec un rectangle noir est bien supérieure à 4 octets - rappelez-vous qu'au niveau DCT, la compression est appliquée à des blocs de 8x8 pixels. Par conséquent, nous avons besoin au minimum d’un coefficient DCT tous les 64 pixels. Nous en avons besoin car au lieu de stocker un seul coefficient DCT suivi de 63 zéros, le codage par longueur nous permet de stocker un seul nombre et d'indiquer "tous les autres sont des zéros".

Le codage delta est une technique selon laquelle chaque octet contient une différence par rapport à une valeur plutôt qu'une valeur absolue. Par conséquent, la modification de certains octets modifie la couleur de tous les autres pixels. Par exemple, au lieu de stocker

12 13 14 14 14 13 13 14

Nous pourrions commencer par 12, puis simplement écrire combien ajouter ou soustraire pour obtenir le nombre suivant. Et cette séquence en codage delta prend la forme :

12 1 1 0 0 -1 0 1

Les données converties ne sont pas plus petites que les données originales, mais il est plus facile de les compresser. L'application du codage delta avant le codage de longueur d'exécution peut être très utile tout en restant une compression sans perte.

Le codage delta est l'une des rares techniques utilisées en dehors des blocs 8x8. Parmi les 64 coefficients DCT, l’un est simplement une fonction d’onde constante (couleur unie). Il représente la luminosité moyenne de chaque bloc pour les composantes de luminance, ou le bleuissement moyen pour les composantes Cb, et ainsi de suite. La première valeur de chaque bloc DCT est appelée valeur DC, et chaque valeur DC est codée en delta par rapport aux précédentes. Par conséquent, modifier la luminosité du premier bloc affectera tous les blocs.

Le dernier mystère demeure : comment le changement du nombre singulier gâche-t-il complètement l’ensemble du tableau ? Jusqu’à présent, les niveaux de compression n’avaient pas de telles propriétés. La réponse réside dans l'en-tête JPEG. Les 500 premiers octets contiennent des métadonnées sur l'image - largeur, hauteur, etc., et jusqu'à présent, nous n'avons pas travaillé avec eux.

Sans en-tête, il est presque impossible (enfin, très difficile) de décoder un JPEG. On dirait que j'essaie de vous décrire une image et je commence à inventer des mots pour transmettre mon impression. La description sera probablement très concise, puisque je peux inventer des mots ayant exactement le sens que je veux transmettre, mais pour tout le monde, ils n'auront aucun sens.

Cela semble idiot, mais c'est comme ça que ça se passe. Chaque image JPEG est compressée avec des codes qui lui sont propres. Le dictionnaire de codes est stocké dans l'en-tête. Cette technique est appelée « code de Huffman » et le dictionnaire s'appelle table de Huffman. Dans l'en-tête, le tableau est marqué de deux octets - 255 puis 196. Chaque composant de couleur peut avoir son propre tableau.

Les changements de tableau affecteront considérablement n’importe quelle image. Un bon exemple est de changer 15 en 1 sur la 12ème ligne.

Comment fonctionne le format JPEG

En effet, les tableaux précisent comment les bits individuels doivent être lus. Jusqu’à présent, nous n’avons travaillé qu’avec des nombres binaires sous forme décimale. Mais cela nous cache le fait que si vous souhaitez stocker le nombre 1 dans un octet, alors il ressemblera à 00000001, car chaque octet doit avoir exactement huit bits, même si un seul d'entre eux est nécessaire.

Cela représente potentiellement un gros gaspillage d'espace si vous disposez d'un grand nombre de petits nombres. Le code de Huffman est une technique qui nous permet d'assouplir cette exigence selon laquelle chaque nombre doit occuper huit bits. Cela signifie que si vous voyez deux octets :

+234 (115)XNUMX XNUMX

Ensuite, selon la table de Huffman, il peut s'agir de trois nombres. Pour les extraire, vous devez d’abord les diviser en bits individuels :

+11101010 (01110011)XNUMX XNUMX

On se tourne ensuite vers le tableau pour comprendre comment les regrouper. Par exemple, il peut s'agir des six premiers bits (111010) ou 58 en décimal, suivis de cinq bits (10011) ou 19 et enfin des quatre derniers bits (0011) ou 3.

Il est donc très difficile de comprendre les octets à ce stade de compression. Les octets ne représentent pas ce qu'ils semblent. Je n'entrerai pas dans les détails du travail avec la table dans cet article, mais matériels sur cette question en ligne assez.

L'une des astuces intéressantes que vous pouvez réaliser avec ces connaissances est de séparer l'en-tête du JPEG et de le stocker séparément. En fait, il s’avère que vous seul pouvez lire le fichier. Facebook fait cela pour réduire davantage les fichiers.

Ce qui peut être fait d'autre, c'est de modifier un peu la table de Huffman. Pour d’autres, cela ressemblera à une image gâtée. Et vous seul connaîtrez l’option magique pour y remédier.

Pour résumer : alors que faut-il pour décoder un JPEG ? Nécessaire:

  1. Extrayez la ou les tables de Huffman de l’en-tête et décodez les bits.
  2. Extrayez les coefficients de transformation en cosinus discrète pour chaque composante de couleur et de luminance pour chaque bloc 8x8 en transformant inversement le codage de longueur de plage et le delta.
  3. Combinez des cosinus en fonction de coefficients pour obtenir les valeurs de pixels pour chaque bloc 8x8.
  4. Mettez à l'échelle les composants de couleur si un sous-échantillonnage a été effectué (cette information se trouve dans l'en-tête).
  5. Convertissez les valeurs YCbCr résultantes pour chaque pixel en RVB.
  6. Amenez l'image à l'écran !

Un travail sérieux pour simplement visualiser une photo avec un chat ! Cependant, ce que j’aime, c’est qu’il montre à quel point la technologie JPEG est centrée sur l’humain. Il est basé sur les caractéristiques de notre perception, ce qui nous permet d'obtenir une bien meilleure compression que les technologies conventionnelles. Et maintenant, en comprenant le fonctionnement du JPEG, vous pouvez imaginer comment ces technologies peuvent être transférées vers d'autres domaines. Par exemple, l'encodage delta dans la vidéo peut entraîner une réduction significative de la taille du fichier, car il existe souvent des zones entières qui ne changent pas d'une image à l'autre (par exemple, l'arrière-plan).

Code utilisé dans l'article, est ouvert et contient des instructions pour remplacer les images par les vôtres.

Source: habr.com

Ajouter un commentaire