La presse paramétrique dévoile le format JPEG

C’est le premier dont on entend parler Presse paramétrique – un magazine numérique avec des plongées approfondies dans une variété de sujets (tels que la physique des particules, les « big data » et autres) qui ont des éléments interactifs ou des simulations de différents types intégrés dans chaque histoire.

Le premier qui a surgi dans notre fil d’actualité est un morceau de [Omar Shehata] sur l’humble format d’image JPEG. Il y explique le comment et le pourquoi du processus d’encodage JPEG, permettant au lecteur de jouer avec les différents concepts en cours de route, en temps réel, dans le navigateur.

Le sous-échantillonnage de l’espace colorimétrique RVB n’affecte pas chaque composant au même degré en raison de la réponse des cellules du cône de l’œil humain. De plus, les composantes de chrominance sont beaucoup moins affectées que la luminance.

Pour ceux qui ne connaissent pas le format, la première étape (en fait facultative) de l’encodage JPEG consiste à transformer l’image de l’espace colorimétrique RVB en un espace colorimétrique YCbCr (luminance, chrominance). Étant donné que l’œil humain est beaucoup plus sensible aux différences de luminance (luminosité) qu’il ne l’est aux différences Cb (chroma relative blueness) et Cr (chroma relative redness), ces deux derniers composants peuvent être sous-échantillonnés en ne stockant qu’une seule valeur pour chacun, dans chaque matrice de 2 × 2 pixels. JPEG autorise d’autres tailles de matrice, mais 2 × 2 est la plus courante.

Cela prépare le terrain pour le bit intelligent, qui vient ensuite et permet de supprimer davantage de ces informations de chrominance plus difficiles à percevoir. C’est amusant de jouer avec le curseur de sous-échantillonnage de chrominance et de voir comment les différentes couleurs ne sont pas affectées de la même manière, en raison des sensibilités relatives des cellules du cône de l’œil humain.

Ensuite, les trois composants YCbCr sont traités indépendamment par une transformée en cosinus discrète et une quantification. Cela transforme chaque bloc de 8 × 8 pixels en 64 fréquences spatiales discrètes. Le niveau de compression JPEG (que vous pouvez modifier) ​​affecte le nombre de composants de haute fréquence qui sont ignorés, et donc la quantité de détails spatiaux fins qui est ignorée. C’est la principale source de perte de qualité d’image JPEG. Enfin, les blocs compressés sont codés en delta, où chaque bloc suivant est codé comme la différence par rapport au précédent. Comme le sous-échantillonnage de chrominance, cela n’offre aucune compression en soi, mais permet à l’encodage ultérieur de longueur d’exécution d’être plus efficace, donnant plus de compression (sans perte). Enfin, l’ensemble est ensuite compressé Huffman avec une table unique stockée dans l’en-tête JPEG. Alors, voulez-vous jouer un peu plus avec les JPEG ? voici la source GitHub.

Si tous ces éléments théoriques vous sont un peu inutiles, peut-être souhaitez-vous simplement décoder certains JPEG, alors voici une bibliothèque rapide pour cela.

François Zipponi
Je suis François Zipponi, éditorialiste pour le site 10-raisons.fr. J'ai commencé ma carrière de journaliste en 2004, et j'ai travaillé pour plusieurs médias français, dont le Monde et Libération. En 2016, j'ai rejoint 10-raisons.fr, un site innovant proposant des articles sous la forme « 10 raisons de... ». En tant qu'éditorialiste, je me suis engagé à fournir un contenu original et pertinent, abordant des sujets variés tels que la politique, l'économie, les sciences, l'histoire, etc. Je m'efforce de toujours traiter les sujets de façon objective et impartiale. Mes articles sont régulièrement partagés sur les réseaux sociaux et j'interviens dans des conférences et des tables rondes autour des thèmes abordés sur 10-raisons.fr.