Qu’est-ce que JPEG XT ?
JPEG XT, normalisé sous la référence ISO/IEC 18477, étend le JPEG de base avec une précision supérieure et le codage HDR, à virgule flottante, sans pertes et avec canal alpha. Ses flux conservent une image de base pour les anciens décodeurs JPEG.
Fonctionnement de JPEG XT
JPEG XT se superpose au JPEG historique. Un fichier contient une image JPEG ordinaire, la couche de base, ainsi que des données d’extension qu’un décodeur XT combine avec la base décodée pour reconstruire l’image plus riche. Le codec thorfdbg/libjpeg, que le comité JPEG répertorie parmi les implémentations de JPEG XT, transporte ces données d’extension sous forme de boîtes dans des segments de marqueur d’application APP11. La norme JPEG réserve les segments d’application à l’usage des applications, ce qui permet aux décodeurs existants de lire le fichier sans comprendre l’extension. Pour le contenu HDR, la base est un rendu à faible plage dynamique : cet encodeur applique par défaut un mappage tonal à l’entrée HDR et, pour certains profils, accepte une image fournie séparément. La norme est divisée en parties. La partie 1 reprend le noyau JPEG tel qu’il est couramment utilisé, la partie 2 code les images HDR avec un ancien codage textuel pour leurs métadonnées, la partie 3 définit le format de fichier à boîtes, la partie 6 ajoute les échantillons entiers de 9 à 16 bits, la partie 7 ajoute les échantillons HDR à virgule flottante, la partie 8 ajoute le codage sans pertes et quasi sans pertes, et la partie 9 ajoute les canaux alpha. La prise en charge doit donc être précisée par partie et, pour la partie 7, par profil, plutôt que par une simple indication oui ou non.
Points clés
- Le fait qu’un fichier s’ouvre dans une visionneuse ordinaire prouve uniquement que le JPEG de base est intact. Les données HDR, de précision supérieure, sans pertes ou alpha sont transportées dans des segments de marqueur d’application (APP11 dans le codec
thorfdbg/libjpeg) qu’un ancien décodeur n’interprète pas ; vérifiez donc ces données avec un décodeur prenant en charge la partie JPEG XT concernée. - La prise en charge de JPEG XT ne se résume pas à une seule capacité. La partie 6 couvre les échantillons entiers de 9 à 16 bits, la partie 7 couvre les échantillons HDR à virgule flottante, la partie 8 couvre le codage sans pertes et quasi sans pertes, et la partie 9 couvre les canaux alpha, tandis que la partie 1 reprend uniquement le noyau JPEG couramment utilisé. La partie 7 n’est pas la seule partie consacrée au HDR : la partie 2 l’est aussi, avec un ancien codage textuel pour ses métadonnées. Demandez quelles parties un outil lit et écrit et, pour la partie 7, quel profil : la propre liste de logiciels du comité JPEG comprend un codec conforme uniquement au profil B de la partie 7 et un autre conforme uniquement à la partie 2.
- Réécrire un fichier avec des outils limités au JPEG peut supprimer les données d’extension sans erreur. Par exemple, l’outil
jpegtrande libjpeg-turbo copie par défaut uniquement les marqueurs de commentaire et supprime les autres métadonnées ; l’option-copy allest nécessaire pour conserver tous les marqueurs supplémentaires. La conservation des marqueurs ne prouve pas que l’extension reste décodable :thorfdbg/libjpegstocke une somme de contrôle du flux JPEG de base lorsqu’il écrit des fichiers JPEG XT et rejette les données d’extension dont les dimensions diffèrent de celles de l’image de base. Comparez donc la sortie décodée en XT avant et après toute réécriture. Un décodage suivi d’un réencodage avec un ancien codec part uniquement de l’image de base. - JPEG XT n’est pas JPEG XL. JPEG XT (ISO/IEC 18477) conserve la lisibilité du fichier par les anciens décodeurs JPEG. JPEG XL (ISO/IEC 18181) est un système de codage distinct dont le lien avec le JPEG historique est le transcodage sans pertes d’un fichier JPEG existant vers JPEG XL, puis le retour à un fichier JPEG identique.
Quand JPEG XT est utile
JPEG XT est utile lorsqu’un même fichier doit s’ouvrir dans des logiciels JPEG ordinaires tout en contenant des données HDR, de profondeur de bits supérieure, sans pertes ou de canal alpha pour des logiciels compatibles avec XT. Les anciens décodeurs n’affichent que l’image de base : les données supplémentaires doivent donc être vérifiées avec un décodeur qui implémente la partie concernée de la norme.
Références
- Comité JPEG : présentation de JPEG XT (ISO/IEC 18477) et de ses parties
- Comité JPEG : programme de travail JPEG XT et parties publiées d’ISO/IEC 18477
- Comité JPEG : logiciels pour JPEG XT et parties auxquelles chaque implémentation est conforme
- thorfdbg/libjpeg : codec JPEG et JPEG XT (README)
- thorfdbg/libjpeg : boxes/box.hpp (boîtes d’extension dans les segments de marqueur APP11)
- thorfdbg/libjpeg : codestream/image.cpp (somme de contrôle du flux de base et vérification des dimensions de l’extension)
- ITU-T T.81 | ISO/IEC 10918-1 : exigences et lignes directrices JPEG (segments APPn, clause B.2.4.6)
- libjpeg-turbo : manuel de jpegtran (option -copy)
- Comité JPEG : présentation de JPEG XL (ISO/IEC 18181)