¿Qué es un archivo J2C?
Un archivo J2C contiene un flujo codificado JPEG 2000 sin encapsular, en lugar de la estructura de cajas y metadatos de un contenedor de la familia JP2. El mismo flujo elemental de bits también circula con las extensiones .j2k y .jpc. Contiene principalmente datos de muestras de imagen comprimidos.
Cómo funcionan los archivos J2C
Un archivo .j2c es un flujo codificado JPEG 2000 sin nada que lo envuelva; .j2k y .jpc son otros nombres del mismo flujo, no formatos distintos. La sintaxis del flujo codificado se define en el anexo A de ITU-T T.800 | ISO/IEC 15444-1. Comienza con el marcador SOC, seguido inmediatamente por el segmento de marcador SIZ, que indica el tamaño de la cuadrícula de referencia y de las teselas, el número de componentes y la profundidad de bits y el espaciado de las muestras de cada componente. Otros segmentos de marcador describen el estilo de codificación, la cuantización y la progresión, y el marcador EOC termina el flujo. Eso basta para que un decodificador reconstruya los valores de las muestras y, como los niveles de resolución, las capas de calidad, las teselas y el orden de progresión están codificados en el propio flujo, la decodificación parcial o a resolución reducida no depende de un contenedor. Lo que el flujo codificado no indica es qué significan las muestras. El formato de archivo JP2 existe para añadir esa capa: envuelve el flujo codificado en cajas que contienen, entre otras cosas, al menos una caja de especificación de color y, opcionalmente, una caja de propiedad intelectual para la información sobre derechos.
Datos clave
- ¿Cómo reconozco un archivo
.j2c? Por sus primeros bytes, no por su nombre. Un flujo codificado comienza conFF 4F FF 51, el marcador SOC seguido del marcador SIZ, mientras que un archivo JP2 comienza con la caja de firma de 12 bytes00 00 00 0C 6A 50 20 20 0D 0A 87 0A, seguida de una caja de tipo de archivo. El tipo de medio registrado para un flujo codificado sin encapsular esimage/j2c, que enumera tantoj2ccomoj2kcomo extensiones de archivo;image/jp2es el tipo del formato de archivo estructurado en cajas. - ¿El archivo indica en qué espacio de color están sus muestras? No. El registro de
image/j2cestablece que un flujo codificado JPEG 2000 no contiene información sobre el espacio de color de la imagen y que esta se deduce o se proporciona por separado. Un archivo JP2 debe contener al menos una caja de especificación de color; un archivo.j2cno tiene equivalente. Por lo tanto, quien visualiza o convierte un flujo codificado sin encapsular se basa en una suposición o en información guardada en otro lugar. - ¿Puede cualquier decodificador de la parte 1 de JPEG 2000 leer cualquier archivo
.j2c? No necesariamente. Según el registro, un flujo codificado puede usar capacidades de cualquier parte de la familia JPEG 2000, y las capacidades que necesita un decodificador se indican mediante el parámetro Rsiz del segmento de marcador SIZ junto con el segmento de marcador CAP. Los bytes iniciales no permiten distinguirlos: OpenJPEG, por ejemplo, detecta los flujos codificados de High Throughput.jhccon la misma firma de cuatro bytes que usa para.j2c. - ¿Un archivo
.j2ctiene compresión sin pérdida o con pérdida? El sufijo no lo indica, pero el flujo lo revela en parte. En un flujo codificado de la parte 1, los segmentos de marcador de estilo de codificación registran si se usó el filtro wavelet irreversible 9-7 o el reversible 5-3. El filtro irreversible es la vía de compresión con pérdida. El filtro reversible permite la codificación sin pérdida, pero no la demuestra, porque T.800 señala que la transformación reversible de múltiples componentes, que se usa únicamente con el filtro 5-3, puede utilizarse en flujos codificados truncados para proporcionar compresión con pérdida. Un flujo codificado que use las extensiones de la parte 2 (T.801 | ISO/IEC 15444-2) puede contener otros valores en el mismo campo; cada uno selecciona un núcleo de transformación definido en el propio flujo.
Cuándo son importantes los archivos J2C
Un decodificador debe aceptar un flujo codificado JPEG 2000 sin encapsular, en lugar de suponer que todo archivo contiene metadatos de un contenedor JP2. Los flujos de trabajo que necesitan información de color o de derechos pueden requerirla de otra fuente.
Fuentes
- Registro de tipo de medio de IANA: image/j2c (un único flujo codificado JPEG 2000)
- Rec. ITU-T T.800 (06/2019) | ISO/IEC 15444-1: sistema básico de codificación JPEG 2000, edición sustituida con texto disponible gratuitamente (anexo A: sintaxis del flujo codificado; anexo G: transformaciones de componentes; anexo I: formato de archivo JP2)
- Rec. ITU-T T.801 (06/2021) | ISO/IEC 15444-2: extensiones de JPEG 2000, edición sustituida con texto disponible gratuitamente (anexo A, tabla A.10: valores de transformación ampliados)
- RFC 3745: registros de tipos MIME para JPEG 2000 (image/jp2 y tipos relacionados basados en cajas)
- Descripción del formato de la Biblioteca del Congreso: JPEG 2000, parte 1, sistema básico de codificación
- Código fuente de OpenJPEG: opj_decompress.c (tabla de extensiones y detección de firmas)