Qu’est-ce que la compression avec pertes ?

La compression avec pertes réduit la taille des fichiers en supprimant irréversiblement des informations jugées moins importantes pour la qualité perçue. La décompression produit une approximation plutôt que les données d’origine exactes.

Échantillons source
Fichier plus petit dont le décodage produit une approximation
La quantification supprime des détails que le décodage ne peut pas restaurer.

Comment fonctionne la compression avec pertes

Un encodeur avec pertes transforme généralement les échantillons en une représentation permettant d’isoler les détails perceptuellement moins importants, quantifie ces détails grossièrement ou les supprime, puis applique un codage entropique à ce qui reste. L’étape de quantification supprime une précision que le décodage ne peut pas restaurer. JPEG illustre ce principe : ses procédés fondés sur la DCT quantifient les coefficients de fréquence à l’aide d’une table de quantification, les tables données en exemple dans la norme reposent sur des seuils psychovisuels, et les encodeurs stockent aussi couramment la couleur à une résolution inférieure à celle de la luminosité. Les encodeurs vidéo ajoutent une régulation du débit, qui décide du degré de quantification appliqué à chaque partie de l’image ; x265, par exemple, augmente ou réduit la quantification par bloc selon la complexité de la source. Comme ces décisions diffèrent selon les codecs, les encodeurs et les préréglages, les résultats à débit nominal identique peuvent avoir un aspect ou un son différents ; évaluez donc les réglages sur votre propre contenu. Les chaînes de traitement conservent normalement la source de la meilleure qualité disponible et créent chaque version dérivée destinée à la diffusion à partir de celle-ci, et non d’une autre version dérivée.

Points clés

  1. Décoder puis réencoder avec un encodeur avec pertes quantifie à nouveau les données et ajoute généralement des pertes ; réutiliser le réglage de qualité précédent ne peut pas restituer ce qui a déjà été supprimé. Certaines opérations évitent cela en travaillant directement sur les données codées : jpegtran de libjpeg-turbo, par exemple, fait pivoter ou retourne un JPEG en réorganisant ses coefficients sans décoder complètement l’image ; les données de l’image sont ainsi transformées sans dégradation, ce que son manuel oppose au décodage suivi d’un réencodage. Le manuel précise aussi les limites : jpegtran ne peut pas modifier la qualité de l’image, les rotations et les retournements laissent les blocs partiels des bords inchangés lorsque la dimension dont dépend la transformation (la largeur pour -flip horizontal ou -rotate 270, la hauteur pour -flip vertical ou -rotate 90, l’une ou l’autre pour -rotate 180) n’est pas un multiple de la taille des blocs iMCU (généralement 8 ou 16 pixels), et supprimer ces blocs avec -trim n’est pas strictement sans pertes.
  2. Les valeurs de qualité sont propres à chaque encodeur et ne sont pas interchangeables. cjpeg -quality va de 0 (la plus mauvaise) à 100 (la meilleure) et met les tables de quantification à l’échelle, tandis que le facteur de débit --crf de x265 fonctionne dans l’autre sens : une valeur plus élevée signifie davantage de quantification et une qualité inférieure, et la taille du fichier dépend alors de la complexité de la source. Comparez les encodeurs en examinant ou en mesurant leur sortie, et non en faisant correspondre les valeurs.
  3. Le maximum d’une échelle de qualité n’est pas nécessairement sans pertes. Pour cjpeg, la qualité 100 ne fait que minimiser les pertes lors de l’étape de quantification ; le sous-échantillonnage et les erreurs d’arrondi entraînent toujours une perte d’informations. Une reconstruction exacte nécessite un mode ou un format sans pertes, et comme certains formats, tels que WebP, proposent les deux modes, l’extension du fichier ne vous indique pas lequel a été utilisé.
  4. Changer de conteneur n’entraîne pas nécessairement une perte de qualité. La copie de flux de FFmpeg (-c copy) transmet les paquets sans décodage ni encodage ; il n’y a donc aucune perte de qualité, mais elle peut échouer lorsque le conteneur cible nécessite des informations absentes de la source, et elle ne peut pas appliquer de filtres. Le redimensionnement est un filtre ; une nouvelle taille vidéo implique donc un transcodage : décoder puis encoder à nouveau, ce qui, selon la documentation de FFmpeg, dégrade la qualité dans la plupart des cas.

Quand la compression avec pertes est utile

Utilisez le codage avec pertes lorsque les économies de bande passante ou de stockage justifient une certaine perte de fidélité de l’image, de l’audio ou de la vidéo. Des réglages excessifs ou des recompressions répétées peuvent créer des artefacts visibles ou audibles.

Comment Transloadit facilite la compression avec pertes

Transloadit propose le choix entre compression avec pertes et sans perte dans ses Robots de traitement d’images. /image/optimize utilise uniquement des outils d’optimisation PNG sans perte par défaut ; le réglage lossy: true permet au compresseur avec pertes pngquant de participer également à la comparaison, et le résultat le plus petit est retenu. /image/resize possède un paramètre quality qui contrôle la compression des fichiers JPG et PNG de sortie.

Le paramètre lossy concerne uniquement l’optimisation PNG. La documentation avertit que pngquant réduit les images PNG à une palette de 256 couleurs, ce qui peut provoquer des changements de couleur perceptibles dans les images aux palettes riches, aux dégradés subtils ou aux couleurs propres à une marque.

Explorer les possibilités de Transloadit en matière de formats de fichiers et de compression

Références

Transformer vos connaissances sur les médias en une chaîne de traitement opérationnelle

Reliez les téléversements, le traitement, l’IA, le stockage et la diffusion via une seule API déclarative — la pile d’encodage, la montée en charge et l’évolution constante des formats sont prises en charge pour vous.

Essayer Transloadit gratuitement