JPEG 2000 ( JP2 ) es un estándar de compresión de imágenes y un sistema de codificación. Fue desarrollado entre 1997 y 2000 por un comité del Joint Photographic Experts Group presidido por Touradj Ebrahimi (posteriormente presidente de JPEG), [1] con la intención de reemplazar su estándar JPEG original (creado en 1992), que se basa en una transformada de coseno discreta (DCT), con un método de nuevo diseño basado en wavelets . La extensión de nombre de archivo estandarizada es .jp2 para archivos que cumplen con la norma ISO / IEC 15444-1 y .jpx para las especificaciones de la parte 2 extendida, publicadas como ISO/IEC 15444-2. Los tipos MIME registrados se definen en RFC 3745. [2] Para ISO/IEC 15444-1 es image/jp2 .
El proyecto JPEG 2000 surgió a raíz de la presentación por parte de Ricoh en 1995 del algoritmo CREW (Compression with Reversible Embedded Wavelets) [ 3 ] [ 4 ] para la estandarización de JPEG-LS . Finalmente, se seleccionó el algoritmo LOCO-I como base para JPEG-LS , pero muchas de las características de CREW terminaron en el estándar JPEG 2000. [5]
Los flujos de código JPEG 2000 son regiones de interés que ofrecen varios mecanismos para admitir el acceso aleatorio espacial o el acceso a regiones de interés con distintos grados de granularidad. Es posible almacenar diferentes partes de la misma imagen con diferente calidad.
JPEG 2000 es un estándar de compresión basado en una transformada wavelet discreta (DWT). El estándar podría adaptarse para la compresión de video de imágenes en movimiento con la extensión Motion JPEG 2000. La tecnología JPEG 2000 fue seleccionada como el estándar de codificación de video para cine digital en 2004. [6] Sin embargo, JPEG 2000 generalmente no es compatible con los navegadores web para páginas web a partir de 2024 [update]y, por lo tanto, no se usa generalmente en la World Wide Web . No obstante, para aquellos con soporte para PDF , los navegadores web generalmente admiten JPEG 2000 en archivos PDF.
Aunque hay un modesto aumento en el rendimiento de compresión de JPEG 2000 en comparación con JPEG, la principal ventaja que ofrece JPEG 2000 es la flexibilidad significativa del flujo de código. El flujo de código obtenido después de la compresión de una imagen con JPEG 2000 es escalable por naturaleza, lo que significa que se puede decodificar de varias maneras; por ejemplo, al truncar el flujo de código en cualquier punto, se puede obtener una representación de la imagen a una resolución menor o una relación señal-ruido menor ; consulte compresión escalable . Al ordenar el flujo de código de varias maneras, las aplicaciones pueden lograr aumentos significativos en el rendimiento. Sin embargo, como consecuencia de esta flexibilidad, JPEG 2000 requiere códecs que son complejos y computacionalmente exigentes. Otra diferencia, en comparación con JPEG, está en términos de artefactos visuales : JPEG 2000 solo produce artefactos de zumbido , que se manifiestan como desenfoque y anillos cerca de los bordes de la imagen, mientras que JPEG produce tanto artefactos de zumbido como artefactos de "bloqueo", debido a sus bloques de 8 × 8 .
JPEG 2000 se ha publicado como estándar ISO , ISO/IEC 15444. El coste de obtener todos los documentos para el estándar se ha estimado en 2.718 CHF ( 2.720 USD en 2015). [7]
Entre los mercados y aplicaciones destacados que se pretende atender con el estándar se incluyen:
JPEG 2000 descompone la imagen en una representación de resolución múltiple durante el proceso de compresión. Esta representación piramidal se puede utilizar para otros fines de presentación de imágenes más allá de la compresión.
Estas características se conocen más comúnmente como decodificación progresiva y escalabilidad de la relación señal-ruido (SNR) . JPEG 2000 proporciona organizaciones de flujo de código eficientes que son progresivas en cuanto a precisión de píxeles y resolución de imagen (o tamaño de imagen). De esta manera, después de recibir una parte más pequeña de todo el archivo, el espectador puede ver una versión de menor calidad de la imagen final. Luego, la calidad mejora progresivamente mediante la descarga de más bits de datos de la fuente.
Al igual que el estándar JPEG sin pérdida , [9] el estándar JPEG 2000 proporciona compresión con y sin pérdida en una única arquitectura de compresión. La compresión sin pérdida se proporciona mediante el uso de una transformada wavelet entera reversible en JPEG 2000.
Al igual que JPEG 1992, JPEG 2000 es resistente a los errores de bits introducidos por canales de comunicación ruidosos, debido a la codificación de datos en bloques independientes relativamente pequeños.
Los formatos de archivos JP2 y JPX permiten el manejo de información del espacio de color, metadatos y la interactividad en aplicaciones en red tal como se desarrolló en el protocolo JPEG Parte 9 JPIP.
JPEG 2000 admite profundidades de bits de 1 a 38 bits por componente. Los espacios de color admitidos incluyen monocromo, 3 tipos de YCbCr, sRGB, PhotoYCC , CMY(K), YCCK y CIELab. Más tarde, también agregó compatibilidad con CIEJab ( CIECAM02 ), e-sRGB, ROMM, YPbPr y otros. [10]
Soporte completo para transparencia y planos alfa. [ cita requerida ]
El sistema de codificación de imágenes JPEG 2000 (ISO/IEC 15444) consta de las siguientes partes:
El objetivo de JPEG 2000 no es sólo mejorar el rendimiento de compresión con respecto a JPEG, sino también añadir (o mejorar) características como la escalabilidad y la capacidad de edición. La mejora de JPEG 2000 en el rendimiento de compresión en relación con el estándar JPEG original es en realidad bastante modesta y no debería ser normalmente la consideración principal para evaluar el diseño. JPEG 2000 admite tasas de compresión muy bajas y muy altas. La capacidad del diseño para manejar una gama muy amplia de tasas de bits efectivas es uno de los puntos fuertes de JPEG 2000. Por ejemplo, para reducir el número de bits de una imagen por debajo de una cierta cantidad, lo recomendable que se debe hacer con el primer estándar JPEG es reducir la resolución de la imagen de entrada antes de codificarla. Esto es innecesario cuando se utiliza JPEG 2000, porque JPEG 2000 ya lo hace automáticamente a través de su estructura de descomposición de múltiples resoluciones. Las siguientes secciones describen el algoritmo de JPEG 2000.
Según la Biblioteca Real de los Países Bajos , "la actual especificación del formato JP2 deja lugar a múltiples interpretaciones en lo que respecta al soporte de perfiles ICC y el manejo de la información de resolución de cuadrícula". [28]
En primer lugar, las imágenes deben transformarse del espacio de color RGB a otro espacio de color, lo que da lugar a tres componentes que se gestionan por separado. Hay dos opciones posibles:
Si R, G y B se normalizan con la misma precisión, la precisión numérica de C B y C R es un bit mayor que la precisión de los componentes originales. Este aumento de precisión es necesario para garantizar la reversibilidad. Los componentes de crominancia pueden reducirse en resolución, aunque no necesariamente es necesario; de hecho, dado que la transformación wavelet ya separa las imágenes en escalas, la reducción de resolución se maneja de manera más efectiva al descartar la escala wavelet más fina. Este paso se denomina transformación de componentes múltiples en el lenguaje JPEG 2000, ya que su uso no se limita al modelo de color RGB . [29]
Después de la transformación de color, la imagen se divide en los llamados mosaicos , regiones rectangulares de la imagen que se transforman y codifican por separado. Los mosaicos pueden ser de cualquier tamaño, y también es posible considerar toda la imagen como un solo mosaico. Una vez elegido el tamaño, todos los mosaicos tendrán el mismo tamaño (excepto opcionalmente los de los bordes derecho e inferior). Dividir la imagen en mosaicos es ventajoso porque el decodificador necesitará menos memoria para decodificar la imagen y puede optar por decodificar solo mosaicos seleccionados para lograr una decodificación parcial de la imagen. La desventaja de este enfoque es que la calidad de la imagen disminuye debido a una relación señal-ruido de pico más baja . El uso de muchos mosaicos puede crear un efecto de bloqueo similar al antiguo estándar JPEG 1992.
A continuación, estos mosaicos se transforman mediante wavelets a una profundidad arbitraria, a diferencia de JPEG 1992, que utiliza una transformada de coseno discreta de tamaño de bloque de 8×8 . JPEG 2000 utiliza dos transformadas de wavelets diferentes :
Las transformadas wavelet se implementan mediante el esquema de elevación o mediante convolución .
Después de la transformada wavelet, los coeficientes se cuantifican escalarmente para reducir el número de bits que los representan, en detrimento de la calidad. El resultado es un conjunto de números enteros que deben codificarse bit a bit. El parámetro que se puede cambiar para establecer la calidad final es el paso de cuantificación: cuanto mayor sea el paso, mayor será la compresión y la pérdida de calidad. Con un paso de cuantificación igual a 1, no se realiza ninguna cuantificación (se utiliza en la compresión sin pérdida).
El resultado del proceso anterior es una colección de subbandas que representan varias escalas de aproximación. Una subbanda es un conjunto de coeficientes ( números reales) que representan aspectos de la imagen asociados a un determinado rango de frecuencias, así como a un área espacial de la imagen.
Las subbandas cuantificadas se dividen en distritos , regiones rectangulares en el dominio wavelet. Normalmente, su tamaño es tal que proporcionan una forma eficiente de acceder solo a una parte de la imagen (reconstruida), aunque esto no es un requisito.
Los recintos se dividen en bloques de código . Los bloques de código están en una sola subbanda y tienen tamaños iguales, excepto aquellos ubicados en los bordes de la imagen. El codificador tiene que codificar los bits de todos los coeficientes cuantificados de un bloque de código, comenzando con los bits más significativos y progresando a los bits menos significativos mediante un proceso llamado esquema EBCOT . EBCOT significa aquí Embedded Block Coding with Optimal Truncation . En este proceso de codificación, cada plano de bits del bloque de código se codifica en tres llamados pases de codificación , primero codificando bits (y signos) de coeficientes insignificantes con vecinos significativos (es decir, con bits 1 en planos de bits superiores), luego bits de refinamiento de coeficientes significativos y finalmente coeficientes sin vecinos significativos. Los tres pases se llaman Significance Propagation , Magnitude Refinement y Cleanup pass, respectivamente.
En el modo sin pérdida, todos los planos de bits deben ser codificados por el EBCOT y no se puede descartar ningún plano de bits.
Los bits seleccionados por estos pases de codificación se codifican mediante un codificador aritmético binario controlado por contexto , es decir, el codificador binario MQ (también empleado por JBIG2 ). El contexto de un coeficiente está formado por el estado de sus ocho vecinos en el bloque de código.
El resultado es un flujo de bits que se divide en paquetes , donde un paquete agrupa fragmentos seleccionados de todos los bloques de código de un distrito en una unidad indivisible. Los paquetes son la clave para la escalabilidad de calidad (es decir, los paquetes que contienen bits menos significativos se pueden descartar para lograr tasas de bits más bajas y una mayor distorsión).
Los paquetes de todas las subbandas se recogen en las denominadas capas . La forma en que se construyen los paquetes a partir de los pases de codificación de bloques de código y, por tanto, qué paquetes contendrá una capa, no está definida por el estándar JPEG 2000, pero en general un códec intentará construir capas de tal manera que la calidad de la imagen aumente de forma monótona con cada capa y la distorsión de la imagen se reduzca de capa a capa. Por tanto, las capas definen la progresión por calidad de imagen dentro del flujo de código.
El problema ahora es encontrar la longitud de paquete óptima para todos los bloques de código que minimice la distorsión general de manera que la tasa de bits objetivo generada sea igual a la tasa de bits solicitada.
Aunque el estándar no define un procedimiento sobre cómo realizar esta forma de optimización de tasa-distorsión , el esquema general se da en uno de sus muchos apéndices: Para cada bit codificado por el codificador EBCOT, se mide la mejora en la calidad de la imagen, definida como error cuadrático medio; esto se puede implementar mediante un algoritmo de búsqueda de tabla fácil. Además, se mide la longitud del flujo de código resultante. Esto forma para cada bloque de código un gráfico en el plano de tasa-distorsión, que da la calidad de la imagen sobre la longitud del flujo de bits. La selección óptima para los puntos de truncamiento, es decir, para los puntos de construcción de paquetes, se da entonces definiendo pendientes críticas de estas curvas y eligiendo todos aquellos pases de codificación cuya curva en el gráfico de tasa-distorsión sea más pronunciada que la pendiente crítica dada. Este método puede verse como una aplicación especial del método del multiplicador de Lagrange que se utiliza para problemas de optimización bajo restricciones. El multiplicador de Lagrange , normalmente denotado por λ, resulta ser la pendiente crítica, la restricción es la tasa de bits objetivo exigida y el valor a optimizar es la distorsión general.
Los paquetes se pueden reordenar casi arbitrariamente en el flujo de bits JPEG 2000; esto proporciona al codificador y a los servidores de imágenes un alto grado de libertad.
Las imágenes ya codificadas se pueden enviar a través de redes con velocidades de bits arbitrarias mediante un orden de codificación progresivo por capas. Por otra parte, los componentes de color se pueden mover hacia atrás en el flujo de bits; las resoluciones más bajas (que corresponden a subbandas de baja frecuencia) se pueden enviar primero para la vista previa de la imagen. Finalmente, es posible explorar espacialmente imágenes grandes mediante la selección de mosaicos o particiones adecuadas. Todas estas operaciones no requieren ninguna recodificación, sino solo operaciones de copia byte a byte. [ cita requerida ]
En comparación con el estándar JPEG anterior, JPEG 2000 ofrece una ganancia de compresión típica del orden del 20%, dependiendo de las características de la imagen. Las imágenes de mayor resolución tienden a beneficiarse más, donde la predicción de redundancia espacial de JPEG 2000 puede contribuir más al proceso de compresión. En aplicaciones de tasa de bits muy baja, los estudios han demostrado que JPEG 2000 es superado [34] por el modo de codificación intra-frame de H.264.
JPEG 2000 es mucho más complicado en términos de complejidad computacional en comparación con el estándar JPEG. El mosaico, la transformación de componentes de color, la transformación wavelet discreta y la cuantificación se pueden realizar con bastante rapidez, aunque el códec de entropía requiere mucho tiempo y es bastante complicado. El modelado de contexto EBCOT y el codificador MQ aritmético ocupan la mayor parte del tiempo del códec JPEG 2000.
En cuanto a la CPU, la idea principal de obtener una codificación y decodificación rápidas de JPEG 2000 está estrechamente relacionada con AVX/SSE y el procesamiento multihilo para procesar cada mosaico en un hilo separado. Las soluciones JPEG 2000 más rápidas utilizan tanto la potencia de la CPU como de la GPU para obtener puntos de referencia de alto rendimiento. [35] [36]
Al igual que JPEG-1, JPEG 2000 define tanto un formato de archivo como un flujo de código. Mientras que JPEG 2000 describe por completo las muestras de imagen, JPEG-1 incluye metainformación adicional, como la resolución de la imagen o el espacio de color que se ha utilizado para codificar la imagen. Las imágenes JPEG 2000, si se almacenan como archivos, deben incluirse en el formato de archivo JPEG 2000, donde obtienen la extensión .jp2 . La extensión de la parte 2 de JPEG 2000 (ISO/IEC 15444-2) enriquece el formato de archivo al incluir mecanismos para la animación o composición de varios flujos de código en una sola imagen. Este formato de archivo extendido se denomina JPX y debe utilizar la extensión de archivo .jpf [37] , aunque también se utiliza .jpx [38] .
No existe una extensión estandarizada para los datos de flujo de código porque, en primer lugar, no se debe considerar que dichos datos se almacenen en archivos, aunque cuando se hace con fines de prueba, se usa comúnmente la extensión .jpc , .j2k o .j2c .
En el caso del formato JPEG tradicional, los metadatos adicionales (por ejemplo, las condiciones de iluminación y exposición) se guardan en un marcador de aplicación en el formato Exif especificado por la JEITA. JPEG 2000 elige una ruta diferente y codifica los mismos metadatos en formato XML . La referencia entre las etiquetas Exif y los elementos XML está estandarizada por el comité ISO TC42 en la norma 12234-1.4.
La plataforma de metadatos extensible también se puede integrar en JPEG 2000.
La norma ISO 15444 está cubierta por patentes y la especificación enumera 17 titulares de patentes, pero las empresas y organizaciones que han contribuido a ella acordaron que las licencias para su primera parte (el sistema de codificación central) se pueden obtener de forma gratuita de todos los colaboradores. Pero esto no es una garantía formal. [39] [40] Es posible que se requieran licencias y regalías para utilizar algunas extensiones. [41] [42]
El comité JPEG ha declarado:
El Comité JPEG siempre ha tenido como firme objetivo que sus normas se puedan implementar en su forma básica sin pago de regalías ni derechos de licencia... La norma JPEG 2000, que está por llegar, se ha preparado siguiendo estos lineamientos y se ha llegado a un acuerdo con más de 20 grandes organizaciones que poseen muchas patentes en esta área para permitir el uso de su propiedad intelectual en relación con la norma sin pago de regalías ni derechos de licencia. [43]
Sin embargo, el comité JPEG reconoció en 2004 que las patentes submarinas no declaradas pueden representar un peligro: [ ¿importancia? ]
Por supuesto, todavía es posible que otras organizaciones o individuos puedan reclamar derechos de propiedad intelectual que afecten la implementación de la norma, y se insta a todos los implementadores a realizar sus propias búsquedas e investigaciones en esta área. [44]
En la norma ISO/IEC 15444-1:2016, el comité JPEG declaró en el "Anexo L: Declaración de patente":
La Organización Internacional de Normalización (ISO) y la Comisión Electrotécnica Internacional (IEC) llaman la atención sobre el hecho de que se afirma que el cumplimiento de esta Recomendación | Norma Internacional puede implicar el uso de patentes.
La lista completa de declaraciones de derechos de propiedad intelectual se puede obtener de las bases de datos de declaraciones de patentes de la UIT-T y la ISO (disponibles en https://www.iso.org/iso-standards-and-patents.html)
La ISO y la IEC no toman ninguna posición respecto a la evidencia, validez y alcance de estos derechos de patente.
Se llama la atención sobre la posibilidad de que algunos de los elementos de esta Recomendación | Norma Internacional puedan estar sujetos a derechos de patente distintos de los identificados en las bases de datos mencionadas anteriormente. La ISO y la IEC no serán responsables de la identificación de ninguno o todos esos derechos de patente.
Existen varias partes adicionales del estándar JPEG 2000; entre ellas se encuentran ISO/IEC 15444-2:2000, extensiones JPEG 2000 que definen el formato de archivo .jpx , presentando por ejemplo cuantificación Trellis , un formato de archivo extendido y espacios de color adicionales , [45] ISO/IEC 15444-4:2000, la prueba de referencia e ISO/IEC 15444-6:2000, el formato de archivo de imagen compuesta ( .jpm ), que permite la compresión de gráficos compuestos de texto/imagen. [46]
Las extensiones para transferencia segura de imágenes, JPSEC (ISO/IEC 15444-8), esquemas mejorados de corrección de errores para aplicaciones inalámbricas, JPWL (ISO/IEC 15444-11) y extensiones para codificación de imágenes volumétricas, JP3D (ISO/IEC 15444-10) también están disponibles en la ISO.
En 2005, se publicó como ISO/IEC 15444-9 un protocolo de exploración de imágenes basado en JPEG 2000, llamado JPIP . [47] Dentro de este marco, solo se deben transmitir regiones seleccionadas de imágenes potencialmente grandes desde un servidor de imágenes a pedido de un cliente, lo que reduce el ancho de banda requerido.
Los datos JPEG 2000 también se pueden transmitir utilizando los protocolos ECWP y ECWPS que se encuentran dentro del SDK ERDAS ECW /JP2.
Motion JPEG 2000 (MJ2), definido originalmente en la Parte 3 de la Norma ISO para JPEG2000 (ISO/IEC 15444-3:2002) como un documento independiente, ha sido expresado ahora por ISO/IEC 15444-3:2002/Amd 2:2003 en términos del formato base ISO, ISO/IEC 15444-12 y en la Recomendación ITU-T T.802. [48] Especifica el uso del formato JPEG 2000 para secuencias temporizadas de imágenes (secuencias de movimiento), posiblemente combinadas con audio y compuestas en una presentación general. [49] [50] También define un formato de archivo, [51] basado en el formato de archivo multimedia base ISO (ISO 15444-12). Las extensiones de nombre de archivo para los archivos de vídeo Motion JPEG 2000 son .mj2 y .mjp2 según RFC 3745.
Es un estándar ISO abierto y una actualización avanzada de MJPEG (o MJ), que se basaba en el formato JPEG heredado . A diferencia de los formatos de vídeo comunes, como MPEG-4 Part 2 , WMV y H.264 , MJ2 no emplea compresión temporal o entre fotogramas. En cambio, cada fotograma es una entidad independiente codificada por una variante con o sin pérdida de JPEG 2000. Su estructura física no depende del orden temporal, pero sí emplea un perfil separado para complementar los datos. Para el audio, admite la codificación LPCM , así como varias variantes de MPEG-4, como datos "sin procesar" o complementarios. [52]
La Biblioteca del Congreso considera que Motion JPEG 2000 (a menudo denominado MJ2 o MJP2) es un formato de archivo digital [53] , aunque el LOC Packard Campus for Audio-Visual Conservation prefiere MXF_OP1a_JP2_LL (JPEG 2000 sin pérdida envuelto en el patrón operativo MXF 1a).
La norma ISO/IEC 15444-12 es idéntica a la norma ISO/IEC 14496-12 (MPEG-4 Parte 12) y define el formato de archivo multimedia base ISO . Por ejemplo, el formato de archivo Motion JPEG 2000, el formato de archivo MP4 o el formato de archivo 3GP también se basan en este formato de archivo multimedia base ISO. [54] [55] [56] [57] [58]
El Consorcio Geoespacial Abierto (OGC) ha definido un estándar de metadatos para georreferenciar imágenes JPEG 2000 con XML integrado utilizando el formato Geography Markup Language (GML): GML en JPEG 2000 para codificación de imágenes geográficas (GMLJP2) , versión 1.0.0, con fecha del 18 de enero de 2006. [59] La versión 2.0, titulada Estándar de codificación GML en JPEG 2000 (GMLJP2) Parte 1: Núcleo, fue aprobada el 30 de junio de 2014. [59]
Los archivos JP2 y JPX que contienen el marcado GMLJP2 se pueden ubicar y mostrar en la posición correcta en la superficie de la Tierra mediante un Sistema de Información Geográfica (SIG) adecuado, de manera similar a las imágenes GeoTIFF y GTG.
{{cite web}}
: CS1 maint: numeric names: authors list (link){{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda )