Comment fonctionne vraiment la compression d'image sans perte
Pourquoi un fichier plus petit peut être identique pixel pour pixel à l'original — et les astuces de prédiction, de modélisation et de codage entropique qui le rendent possible.
Pourquoi un fichier plus petit peut être identique pixel pour pixel à l'original — et les astuces de prédiction, de modélisation et de codage entropique qui le rendent possible.
« Sans perte » ressemble à une contradiction : comment un fichier peut-il devenir plus petit sans rien jeter ? L'astuce, c'est qu'une image est pleine de redondance, et la compression est l'art de décrire les mêmes pixels avec moins de bits. Décodez-la et vous récupérez chaque valeur d'origine, exactement — bit pour bit.
Les formats avec perte comme JPEG suppriment des informations que votre œil ne remarquera probablement pas. La compression sans perte ne supprime rien : l'image décodée est identique à l'entrée. C'est pourquoi c'est le bon choix pour les captures d'écran, le line art, les logos, les ressources d'interface et les fichiers maîtres d'archivage — tout ce où un seul pixel décalé serait un bug, pas une erreur d'arrondi.
Les pixels bruts sont un gaspillage car les voisins sont fortement corrélés — le pixel à votre gauche est en général une excellente estimation du pixel actuel. Les codecs sans perte prédisent chaque pixel à partir de ses voisins et ne stockent que la petite erreur (le résidu). PNG appelle cela des filtres (Sub, Up, Average, Paeth) ; meilleure est la prédiction, plus les résidus se regroupent près de zéro, et les zéros se compressent à merveille.
Une fois que les données sont surtout de petits résidus répétitifs, un codeur entropique attribue des codes courts aux valeurs fréquentes et des codes longs aux valeurs rares. PNG utilise DEFLATE (LZ77 + Huffman) ; des codecs modernes comme WebP sans perte et JPEG XL utilisent une modélisation contextuelle avec un codage arithmétique ou ANS, qui se rapproche davantage de la limite théorique. Le format change, mais l'idée reste la même : dépenser moins de bits sur ce qui est prévisible.
C'est pourquoi deux PNG sans perte de la même image peuvent avoir des tailles très différentes : les pixels sont identiques, mais l'encodeur a travaillé plus dur pour les décrire. oxipng explore des stratégies de filtres et recompresse ; zopfli est un DEFLATE bien plus lent qui gagne souvent quelques pourcents de plus ; WebP et JPEG XL apportent des modèles entièrement plus intelligents. Aucun d'eux ne touche à un pixel.
# Sans perte, effort maximal — pixels identiques, fichier plus petit imageforge logo.png --lossless --effort max imageforge ui-export.png --convert webp --lossless
Le sans-perte a un plancher. Les photographies de scènes réelles portent un véritable détail haute fréquence (bruit du capteur, texture fine) qui ne se prédit tout simplement pas bien, donc les gains sans perte y sont modestes — c'est là que les formats avec perte trouvent leur place. Pour les images plates, synthétiques ou riches en texte en revanche, le sans-perte réduit couramment de 30 à 70 % sans aucun coût de qualité. Tout l'art consiste à savoir dans quelle catégorie se trouve votre image.
ImageForge exécute oxipng, zopfli et des encodeurs sans perte modernes pour vous — en local.