Bibliographie
Vous êtes ici : Entrée > Ressources > Informatique > Compression des données > Première approche de JPEG 2000

Première approche de JPEG 2000
Conférence donnée au Club Photoshop

Première approche pratique

Nous nous sommes livrés à quelques essais en utilisant 2 logiciels disponibles actuellement sous forme de plug-ins Photoshop (utilisé ici dans sa version 7 sur Macintosh).

• Le plug-in j2kf de fnord (www.fnordware.com) est simple d’emploi et n’offre que peu d’options. Il est fourni en trois versions pour les utilisateurs de Mac. L’une (Hybrid) convient pour toutes les versions de Photoshop (Classic ou Carbon), c’est celle que nous avons testé. La deuxième (Carbon) convient à After Effects 5.5. La troisième (Classic) convient à After Effects 5.0.

Ce plug-in permet de sauvegarder avec ou sans perte. Si on sauvegarde avec pertes, on peut paramétrer la compression de deux manières, en choisissant la taille du fichier souhaité ou en choisissant un coefficient de qualité de 1 à 100.

A noter que le format jp2 requiert un profil ICC, il ne faut donc pas oublier de cocher dans Photoshop la case de la fenêtre d’enregistrement qui permet de joindre le profil. En faisant option-click sur le bandeau supérieur on accède à 2 options supplémentaires. La première permet d’enregistrer l’image compressée sans l’en-tête du jp2 et sans profil ICC. Cette option paraît inutile. La deuxième permet de déterminer le nombre des niveaux de qualité (il s’agit d’une notion analogue à celle des niveaux dans le JPEG progressif). Ce paramétrage n’a pas d’impact sensible sur le poids des fichiers. On gardera la valeur proposée par défaut (12) en l’état actuel de nos connaissances.

Ce plug-in utilise la bibliothèque kakadu de David Taubmann, l’un des rédacteurs de la norme JPEG 2000 (http://www.kakadusoftware.com/)

Le plug-in JPEG 2000 fourni avec Camera Raw d’Adobe présente plus d’options. Il permet bien entendu de choisir entre enregistrement avec ou sans pertes. On peut choisir ou non d’inclure les métadonnées, les informations de couleurs, la transparence et de rendre ou non le fichier compatible jp2 car ce plug-in utilise un format qui lui est propre le jpf. Un bouton permet d’accéder à des fonctions avancées : type de coefficients utilisé pour la transformation en ondelettes, inclusion des métadonnées de type JPEG 2000 XML, XMP et EXIF, type des informations de couleurs embarquées et taille des tiles utilisé pour décomposer l’image. Ces différentes options sont intéressantes mais d’utilité relative actuellement, disons qu’elles préparent l’avenir.
On peut également définir dans quel ordre les informations sur l’images seront transmises pour décodage (par niveaux de qualité, par progression de la taille de l’image ou par transmission progressive des informations de couleur. Dans le cas où on compresse avec perte il est possible de demander l’utilisation d’une région d’intérêt en sélectionnant une couche qu’on aura pris soin de créer au préalable dans Photoshop (Attention le plug-in ne se charge pas de cette tâche) et en donnant un pourcentage d’amélioration pour la région ainsi définie.
Une zone de prévisualisation permet de choisir un débit de transmission et de lancer une prévisualisation. Cette possibilité nous a semblé intéressante.

Test 1. Enregistrement en JPEG 2000 sans perte.
Nous utilisons une première image photographique de 10 Mo en RVB. Elle a été traitée normalement (niveaux + netteté). Les tailles de fichier obtenus figurent dans le tableau suivant (on indique la taille en octets des fichiers, leur taille en Mo et le pourcentage de cette taille par rapport à la taille du fichier Photoshop :

PSD
TIFF LZW
TIFF ZIP
PNG
jp2
10 609 617
7 076 277
6 343 873
5 659 929
4 893 189
10,1 Mo
6,7 Mo
6 Mo
5,4 Mo
4,6 Mo
100 %
66,7 %
59,8 %
53,3 %
46,1 %

Nous utilisons une deuxième image photographique en niveaux de gris de 12 Mo. Les tailles de fichier obtenus figurent dans le tableau suivant (on indique la taille en octets des fichiers, leur taille en Mo et le pourcentage de cette taille par rapport à la taille du fichier Photoshop :

PSD
TIFF LZW
TIFF ZIP
PNG
jp2
12 599 232
7 805 917
7 154 621
6 764 053
5 038 368
12 Mo
7,4 Mo
6,8 Mo
6,4 Mo
4,8 Mo
100 %
62 %
56,8 %
53,6 %
40 %


Dans les deux cas étudiés (et dans tous nos autres essais) le JPEG 2000 apparaît comme une excellente méthode pour enregistrer les images sans perte. Il permet d’obtenir des résultats meilleurs que le traditionnel TIFF dans ses deux variantes et même que le PNG plus récent bien que peu employé. Cette utilisation, bien qu’un peu inattendue des professionnels, me paraît devoir retenir notre attention.

Test 2. Enregistrement en JPEG 2000 avec pertes.

Nous utilisons la première image utilisée ci-dessus et la compressons en JPEG avec ImageReady avec un facteur de qualité de 80 (enregistrement pour le print). Nous obtenons un fichier de 1 137 633 octets (1 Mo) soit 10,7 % du poids du fichier Photoshop.
Nous utilisons le plug-in JPEG 2000 de CameraRow pour obtenir un fichier de taille voisine en JPEG 2000 (taille du fichier 1 094 192 octets). La comparaison des deux images obtenues dans Photoshop est difficile, elles sont toutes les deux de bonne qualité comme on pouvait s’y attendre. Elles paraissent identiques quand on les observe à 100 %. A un fort grossissement (400 %) l’image JPEG 2000 semble légèrement plus floue.

Une approche quantitative est tentée. Les images compressées sont superposées à l’image originale sur un calque mis en mode différence, l’image obtenue est aplatie et son histogramme est étudié. Il permet d’étudier pour la luminosité et couche par couche la distribution des valeurs absolues des différences entre les pixels des images. Nous connaissons les critiques que l’on peut faire de cette méthode mais c’est la seule qui peut-être tentée dans le cadre de cette première approche. Dan le cas de l’image JPEG, pour la luminosité la moyenne est de 1,44 et l’écart type est de 0,90. Les résultats pour les 3 couches sont les suivants :
Couche rouge : moyenne 1,88, écart type 1,76
Couche verte : moyenne 1,10 écart type 0,97
Couche bleue : moyenne 2,07 écart type 1,78

Ces résultats excellents corroborent l’impression visuelle. L’examen de la répartition spatiale des écarts à l’image originale n’est pas homogène sur la surface de l’image comme la théorie permettait de le prévoir mais son hétérogénéité est relative (toute l’image est concernée).

Dans le cas de l’image JPEG 2000, pour la luminosité la moyenne est de 1,69 et l’écart type de 1,23. Les résultats pour les 3 couches sont les suivants :
Couche rouge : 2,05 écart type 2,03
Couche verte : 1,47 écart type 1,31
Couche bleue : moyenne 1,91 écart type 1,73

Ces résultats sont en accord avec l’impression visuelle obtenue mais ils sont assez dérangeants puisqu’ils donnent un léger avantage au JPEG sur le JPEG 2000.

Ils doivent être nuancés par plusieurs considérations :
- la méthode utilisée est loin d’être parfaite
- Il est peu probable que le logiciel utilisé mette en oeuvre un codeur optimal.
- Nous ne nous intéressons ici qu’au résultat à l’écran. Un protocole de comparaison sérieux intégrerait le processus de tramage.

Le même travail a été effectué avec la même image mais rééchantillonnée à 200 pixels de largeur. On est ici dans le cas d’une image utilisée sur Internet.

L’image originale fait 244 ko, en JPEG qualité 30, on obtient avec ImageReady un fichier de 6 573 octets tout à fait compatible en poids et en qualité avec Internet.
Nous avons rencontré des difficultés inattendues pour obtenir un fichier jp2 de même taille alors que la théorie nous enseignait que cela devait être très facile et qu’il était normalement possible d’obtenir des résultats beaucoup plus spectaculaires. En effet en enregistrant comme pour le test 1 notre image de 244 ko avec nos plug-ins nous avons obtenu 56 600 octets. Après avoir modifié les options du plug-ins sans succès et pris un café, nous avons trouvé les responsables qui sont Photoshop 7 et Mac OS X.
Par défaut Photoshop joint en effet aux données de l’image proprement dite l’icône, une vignette Macintosh et une vignette Windows. Les résultats s’améliorent en décochant les 3 cases correspondantes dans le panneau Gestion des fichiers des préférences mais le résultat reste étonnant à 17 186 octets en utilisant la compression maximum. Nous notons que le même fichier placé sur un serveur LINUX subit une cure d’amaigrissement qui l’amène au poids record de 2 Ko. Le plug-in n’est pas en cause.

Nous avons testé l’utilisation d’ImageReady (en faisant exporter), le résultat est meilleur et on obtient un fichier d’une taille apparente de 3 325 octets en utilisant la compression maximum du JPEG 2000.
Pour obtenir un résultat sûr et rapidement vérifiable nous sommes passés sous Windows XP où nous avons fabriqué avec le logiciel Morgan un fichier de 6 423 octets de taille très proche de notre fichier JPEG. En tous cas ils occupent tous les deux 6 ko sur un serveur LINUX.

La comparaison visuelle des deux images à 100 % donne cette fois-ci un léger avantage au JPEG 2000. Les matrices 8 x 8 utilisées par la transformée de Fourrier discrète créent un léger bruit qui n’existe pas sur l’image JPEG 2000. A 200 % (mais est-bien raisonnable ?) l’image JPEG apparaît détériorée par les matrices qui deviennent légèrement visibles. L’image JPEG 2000 est meilleure mais légèrement plus floue que l’original.

En résumé, les images JPEG 2000 présentent une meilleure qualité à l’oeil et leur utilisation sur Internet paraît souhaitable dès que les navigateurs les accepteront. Elles devraient permettre une diminution modérée mais réelle du poids des fichiers images. En utilisant la compression JPEG 2000 au maximum on obtient un fichier de 2 Ko (moins de 1,5 %). L’image n’est pas utilisable mais elle est reconnaissable et à ce niveau , JPEG a déclaré forfait depuis longtemps.

Test 3. Enregistrement des images en 32 bits.

Photoshop est un des rares logiciels qui permet de traiter des images en 32 bits. Peu de formats supportent cette caractéristique. On ne peut enregistrer les images en 32 bits qu’en PSD en Brut, ou en TIFF. Le format jp2 est maintenant disponible. Nous avons vérifié que les plug-ins permettaient de compresser des images 32 bits. Rappelons que JPEG n’offre pas cette possibilité.

Test 4. Enregistrement d’une image avec transparence.

Nous avons pu enregistrer sans problème une image Photoshop comportant de la transparence. C’est une possibilité très intéressante dont ne disposait pas JPEG.

Vous êtes ici : Entrée > Ressources > Informatique > Compression des données > Première approche de JPEG 2000