Encodage sans perte et transparence dans WebP

Jyrki Alakuijala, Ph.D., Google, Inc.
Vincent Rabaud, Ph.D., Google, Inc.
Dernière mise à jour: 01/08/2017

Résumé : Nous comparons l'utilisation des ressources de l'encodeur/décodeur WebP à celle du PNG en mode sans perte et avec perte. Nous utilisons un corpus de 12 000 images PNG transparentes choisies au hasard sur le Web et des mesures plus simples pour montrer la variation des performances. Nous avons recomprimé les fichiers PNG de notre corpus pour comparer les images WebP aux fichiers PNG optimisés pour la taille. Nos résultats montrent que WebP est un bon remplacement du format PNG pour une utilisation sur le Web en termes de taille et de vitesse de traitement.

Introduction

WebP est compatible avec les images sans perte et transparentes, ce qui en fait une alternative au format PNG. De nombreuses techniques fondamentales utilisées dans la compression PNG, telles que le codage de dictionnaire, le codage Huffman et la transformation d'indexation des couleurs, sont également prises en charge par WebP, ce qui entraîne une vitesse et une densité de compression similaires dans le pire des cas. En même temps, un certain nombre de nouvelles fonctionnalités, telles que des codes d'entropie distincts pour différents canaux de couleur, une localité 2D des distances de référence arrière et un cache de couleurs des couleurs récemment utilisées, permettent d'améliorer la densité de compression avec la plupart des images.

Dans cet article, nous comparons les performances de WebP aux PNG hautement compressés à l'aide de pngcrush et de ZopfliPNG. Nous avons recompressé notre corpus de référence d'images Web en suivant les bonnes pratiques, et comparé la compression WebP sans perte et avec perte à ce corpus. En plus du corpus de référence, nous avons choisi deux images plus grandes, l'une photographique et l'autre graphique, pour effectuer des benchmarks sur la vitesse et l'utilisation de la mémoire.

Des vitesses de décodage plus rapides que le format PNG ont été démontrées, ainsi qu'une compression 23 % plus dense que ce qui peut être obtenu avec le format PNG actuel. Nous concluons que WebP est un remplacement plus efficace du format d'image PNG actuel. De plus, la compression d'images avec pertes avec prise en charge de l'alpha sans perte offre d'autres possibilités pour accélérer les sites Web.

Méthodes

Outils de ligne de commande

Nous utilisons les outils de ligne de commande suivants pour mesurer les performances:

  1. cwebp et dwebp. Ces outils font partie de la bibliothèque libwebp (compilée à partir de la tête).

  2. convertir. Il s'agit d'un outil de ligne de commande faisant partie du logiciel ImageMagick (6.7.7-10 2017-07-21).

  3. pngcrush 1.8.12 (30 juillet 2017)

  4. ZopfliPNG (17 juillet 2017)

Nous utilisons les outils de ligne de commande avec leurs options de contrôle respectives. Par exemple, si nous nous référons à cwebp -q 1 -m 0, cela signifie que l'outil cwebp a été appelé avec les indicateurs -q 1 et -m 0.

Corpus d'images

Trois corpus ont été sélectionnés:

  1. Une seule image photographique (figure 1)

  2. Une seule image graphique avec transparence (figure 2) ;

  3. Corpus Web: 12 000 images PNG choisies au hasard avec ou sans transparence, récupérées sur Internet. Ces images PNG sont optimisées via convert, pngcrush et ZopfliPNG. La plus petite version de chaque image est prise en compte pour l'étude.

Figure 1. Image photographique, 1 024 x 752 pixels. "Jaipur Maharaja Brass Band" Chassepierre Belgique, Auteur: Luc Viatour, Photo sous licence Creative Commons Attribution-Share Alike 3.0 Unported. Le site Web de l'auteur est ici.

Figure 2 Image graphique, 1 024 x 752 pixels. Créer un collage d'images à partir des outils de graphiques Google

Pour mesurer l'ensemble des fonctionnalités du format existant, PNG, nous avons recomprimé toutes ces images PNG d'origine à l'aide de plusieurs méthodes:

  1. Limiter à 8 bits par composant: convert input.png -depth 8 output.png

  2. ImageMagick(1) sans prédicteurs: convert input.png -quality 90 output-candidate.png

  3. ImageMagick avec des prédicteurs adaptatifs: convert input.png -quality 95 output-candidate.png

  4. Pngcrush(2): pngcrush -brute -rem tEXt -rem tIME -rem iTXt -rem zTXt -rem gAMA -rem cHRM -rem iCCP -rem sRGB -rem alla -rem text input.png output-candidate.png

  5. ZopfliPNG(3): zopflipng --lossy_transparent input.png output-candidate.png

  6. ZopfliPNG avec tous les filtres: zopflipng --iterations=500 --filters=01234mepb --lossy_8bit --lossy_transparent input.png output-candidate.png

Résultats

Nous avons calculé la densité de compression pour chacune des images du corpus Web, par rapport aux tailles d'images PNG optimisées pour trois méthodes:

  1. WebP sans perte (paramètres par défaut)

  2. WebP sans perte avec la plus petite taille (-m 6 -q 100)

  3. le meilleur des formats WebP sans perte et WebP avec pertes avec alpha (paramètres par défaut).

Nous avons trié ces facteurs de compression et les avons représentés dans la figure 3.

Figure 3. La densité de compression PNG est utilisée comme référence, à 1,0. Les mêmes images sont compressées à la fois avec des méthodes sans perte et avec perte. Pour chaque image, le ratio de taille par rapport au PNG compressé est calculé, et les ratios de taille sont triés et affichés à la fois pour la compression sans perte et avec perte. Pour la courbe de compression avec pertes, la compression sans perte est choisie dans les cas où elle produit une image WebP plus petite.

WebP dépasse la densité de compression PNG pour libpng à la qualité maximale (convert) et pour ZopfliPNG (tableau 1), avec des vitesses d'encodage (tableau 2) et de décodage (tableau 3) à peu près comparables à celles du PNG.

Tableau 1. Nombre moyen de bits par pixel pour les trois corpus utilisant les différentes méthodes de compression.

Ensemble d'images convert -quality 95 ZopfliPNG WebP sans perte -q 0 -m 1 WebP sans perte (paramètres par défaut) WebP sans perte -m 6 -q 100 WebP avec perte et transparence alpha
photo 12.3 12.2 10.5 10.1 9,83 0,81
graphique 1,36 1,05 0.88 0,71 0.70 0,51
web 6,85 5,05 4,42 4,04 3,96 1,92

Tableau 2. Temps d'encodage moyen pour les corpus de compression et pour différentes méthodes de compression.

Ensemble d'images convert -quality 95 ZopfliPNG WebP sans perte -q 0 -m 1 WebP sans perte (paramètres par défaut) WebP sans perte -m 6 -q 100 WebP avec perte et transparence alpha
photo 0,500 s 8,7 s 0,293 s 0,780 s 8,440 s 0,111 s
graphique 0,179 s 14,0 s 0,065 s 0,140 s 3,510 s 0,184 s
web 0,040 s 1,55 s 0,017 s 0,072 s 2,454 s 0,020 s

Tableau 3 : Temps de décodage moyen pour les trois corpus de fichiers image compressés avec différentes méthodes et paramètres.

Ensemble d'images convert -quality 95 ZopfliPNG WebP sans perte -q 0 -m 1 WebP sans perte (paramètres par défaut) WebP sans perte -m 6 -q 100 WebP avec perte et transparence alpha
photo 0,027 s 0,026 s 0,027 s 0,026 s 0,027 0,012 s
graphismes 0,049 s 0,015 s 0,005 s 0,005 s 0.003 0,010 s
web 0,007 s 0,005 s 0,003 s 0,003 s 0.003 0,003 s

Profilage de la mémoire

Pour le profilage de la mémoire, nous avons enregistré la taille maximale de l'ensemble résident tel que rapporté par /usr/bin/time -v.

Pour le corpus Web, seule la taille de l'image la plus grande définit l'utilisation maximale de la mémoire. Pour mieux définir la mesure de la mémoire, nous utilisons une seule image photographique (figure 1) pour donner un aperçu de l'utilisation de la mémoire. L'image graphique donne des résultats similaires.

Nous avons mesuré 10 à 19 Mo pour libpng et ZopfliPNG, et 25 Mo et 32 Mo pour l'encodage sans perte WebP avec les paramètres -q 0 -m 1 et -q 95 (avec une valeur par défaut de -m), respectivement.

Dans un test de décodage, convert -resize 1x1 utilise 10 Mo pour les fichiers PNG générés par libpng et ZopfliPNG. Avec cwebp, le décodage sans perte WebP utilise 7 Mo, et le décodage avec perte 3 Mo.

Conclusions

Nous avons montré que les vitesses d'encodage et de décodage se situent dans le même domaine que celles du PNG. L'utilisation de la mémoire augmente pendant la phase d'encodage, mais la phase de décodage montre une diminution saine, du moins en comparant le comportement de cwebp à celui de convert d'ImageMagick.

La densité de compression est meilleure pour plus de 99% des images Web, ce qui suggère qu'il est relativement facile de passer du format PNG au format WebP.

Lorsque WebP est exécuté avec les paramètres par défaut, il offre une compression 42% supérieure à celle de libpng et 23% supérieure à celle de ZopfliPNG. Cela suggère que WebP est prometteur pour accélérer les sites Web comportant de nombreuses images.

Références

  1. ImageMagick

  2. Pngcrush

  3. ZopfliPNG

Les études suivantes sont indépendantes et ne sont pas sponsorisées par Google. Google ne garantit pas nécessairement l'exactitude de l'ensemble de leur contenu.

  1. Blog de Yoav Weiss