¿Qué es JPEG XT?
JPEG XT, estandarizado como ISO/IEC 18477, amplía la capa base JPEG con encoding de mayor precisión, HDR, de punto flotante, sin pérdida y con canal alfa. Sus flujos conservan una imagen base para los decodificadores JPEG antiguos.
Cómo funciona JPEG XT
JPEG XT añade capas sobre el JPEG heredado. Un archivo contiene una imagen JPEG ordinaria, la capa base, más datos de extensión que un decodificador XT combina con la base decodificada para reconstruir la imagen con mayor riqueza de información. El códec thorfdbg/libjpeg, que el comité JPEG incluye entre las implementaciones de JPEG XT, transporta esos datos de extensión como cajas dentro de segmentos de marcador de aplicación APP11, y el estándar JPEG reserva los segmentos de aplicación para uso de las aplicaciones, lo que permite que los decodificadores existentes lean el archivo sin comprender la extensión. Para el contenido HDR, la base es una versión renderizada de bajo rango dinámico: ese codificador aplica de forma predeterminada un mapeo de tonos a la entrada HDR y, para algunos perfiles, acepta una imagen suministrada por separado. El estándar se divide en partes. La parte 1 reformula el núcleo de JPEG tal como se usa habitualmente, la parte 2 codifica imágenes HDR con una representación textual heredada para sus metadatos, la parte 3 define el formato de archivo basado en cajas, la parte 6 añade muestras enteras de entre 9 y 16 bits, la parte 7 añade muestras HDR de punto flotante, la parte 8 añade encoding sin pérdida y casi sin pérdida, y la parte 9 añade canales alfa. Por tanto, la compatibilidad debe indicarse por parte y, para la parte 7, por perfil, no como un único indicador de sí o no.
Datos clave
- Que un archivo se abra en un visor ordinario solo demuestra que el JPEG base está intacto. Los datos HDR, de mayor precisión, sin pérdida o alfa viajan en segmentos de marcador de aplicación (APP11 en el códec
thorfdbg/libjpeg) que un decodificador heredado no interpreta, así que verifica esos datos con un decodificador para la parte correspondiente de JPEG XT. - La compatibilidad con JPEG XT no es una única capacidad. La parte 6 abarca muestras enteras de entre 9 y 16 bits, la parte 7 abarca muestras HDR de punto flotante, la parte 8 abarca encoding sin pérdida y casi sin pérdida, y la parte 9 abarca canales alfa, mientras que la parte 1 solo reformula el núcleo de JPEG de uso común. La parte 7 no es la única dedicada a HDR: la parte 2 también lo está, con una representación textual heredada para sus metadatos. Pregunta qué partes lee y escribe una herramienta y, para la parte 7, qué perfil: la propia lista de software del comité JPEG incluye un códec compatible únicamente con el perfil B de la parte 7 y otro únicamente con la parte 2.
- Reescribir un archivo con herramientas que solo admiten JPEG puede eliminar los datos de extensión sin que se produzca un error. Por ejemplo,
jpegtrande libjpeg-turbo solo copia los marcadores de comentario de forma predeterminada y descarta los demás metadatos; se necesita-copy allpara conservar todos los marcadores adicionales. Conservar los marcadores no demuestra que la extensión siga decodificándose:thorfdbg/libjpegalmacena una suma de comprobación del flujo JPEG base al escribir archivos JPEG XT y rechaza los datos de extensión cuyas dimensiones difieren de la imagen base, así que compara el resultado decodificado con XT antes y después de cualquier reescritura. La decodificación y el posterior encoding mediante un códec heredado parten únicamente de la imagen base. - JPEG XT no es JPEG XL. JPEG XT (ISO/IEC 18477) mantiene el archivo legible para los decodificadores JPEG heredados. JPEG XL (ISO/IEC 18181) es un sistema de encoding independiente cuyo puente con el JPEG heredado es la transcodificación sin pérdida de un archivo JPEG existente a JPEG XL y de vuelta al archivo JPEG idéntico.
Cuándo es relevante JPEG XT
JPEG XT es relevante cuando un archivo debe abrirse en software JPEG ordinario y también contener datos HDR, de mayor profundidad de bits, sin pérdida o alfa para software compatible con XT. Los decodificadores heredados solo muestran la imagen base, por lo que los datos adicionales deben verificarse con un decodificador que implemente la parte correspondiente del estándar.
Fuentes
- Comité JPEG: descripción general de JPEG XT (ISO/IEC 18477) y sus partes
- Comité JPEG: plan de trabajo de JPEG XT y partes publicadas de ISO/IEC 18477
- Comité JPEG: software para JPEG XT y las partes que cumple cada implementación
- thorfdbg/libjpeg: códec JPEG y JPEG XT (README)
- thorfdbg/libjpeg: boxes/box.hpp (cajas de extensión en segmentos de marcador APP11)
- thorfdbg/libjpeg: codestream/image.cpp (suma de comprobación del flujo base y verificación de las dimensiones de la extensión)
- ITU-T T.81 | ISO/IEC 10918-1: requisitos y directrices de JPEG (segmentos APPn, cláusula B.2.4.6)
- libjpeg-turbo: manual de jpegtran (la opción -copy)
- Comité JPEG: descripción general de JPEG XL (ISO/IEC 18181)