Compartir

Continuamos nuestro análisis de la compresión empleada en el codec estándar JPEG 2000, que se emplea en cada Digital Cinema Package (DCP)Recordemos que el embaldosado es un proceso que realiza particiones de las imágenes en bloques rectangulares que no se solapan entre ellos y que se comprimen de forma independiente.

Comparación entre a) imagen sin compresión, b) imagen comprimida en JPEG y c) imagen comprimida en JPEG 2000
Comparación entre a) imagen sin compresión, b) imagen comprimida en JPEG y c) imagen comprimida en JPEG 2000

La transformada de ondícula se utiliza para deshacer la correlación existente entre las muestras de la imagen por medio de una técnica que presenta algunos efectos secundarios muy interesantes. El truco consiste en dividir la imagen en sus componentes de frecuencia espacial horizontal, vertical y diagonal a través del objeto matemático al que definimos como ondícula. No obstante, para la mayoría de nosotros, la operación coincidirá sencillamente con un filtrado lineal –de paso bajo (estableciendo una media de borrosidad) y de paso alto (incrementando la nitidez o la diferenciación)– seguido de la reducción del tamaño por un factor de dos.

Proceso de subdivisión en componentes de la imagen
Proceso de subdivisión en componentes de la imagen

Por ejemplo, consideremos un componente de imagen formado por píxeles adyacentes en disposición 4×4 con las amplitudes 0.2, 0.4, -0.4 y 0.0. Tras aplicar la transformada de ondícula, el filtrado de paso bajo en diagonal tendrá un valor de 0.05, el de paso alto en horizontal tendrá un valor de -0.15, el de paso alto en vertical tendrá un valor de 0.25 y el de paso alto en diagonal tendrá un valor de 0.05. A estos componentes se les denomina sub-bandas LL, HL, LH y HH respectivamente.

Fotograma después de aplicar la DWT (un nivel). © DCP Builder
Fotograma después de aplicar la DWT (un nivel). © DCP Builder

En la imagen superior podemos distinguir los límites entre sub-bandas. En el sentido de las agujas del reloj tenemos la sub-banda LL, la sub-banda LH, la sub-banda HL y la sub-banda HH.

La misma operación se puede aplicar a la sub-banda LL para alcanzar lo que llamamos descomposición diádica. También podemos ver una representación de la imagen en múltiples resoluciones. El siguiente ejemplo representa una descomposición del fotograma de cinco resoluciones y cuatro niveles de partición:

Fotograma después de aplicar la DWT (cinco resoluciones). © DCP Builder
Fotograma después de aplicar la DWT –cinco resoluciones–. © DCP Builder

El ancho de cada línea continua independiente equivale a un nivel diferente de partición –por este orden: sub-banda, precinto y bloque de código–. Cuatro sub-bandas –de entre las cuales, las situadas en la esquina superior izquierda contienen todas las bajas frecuencias– permiten deshacer la correlación interna de cada componente. Así se concentra la información de la imagen en una zona pequeña y muy localizada. A continuación se aplican sucesivas descomposiciones a las bajas frecuencias.

Componentes, sub-bandas, precintos y bloques de código
Componentes, sub-bandas, precintos y bloques de código

Compresión de los coeficientes de ondícula

La transformada discreta de ondícula (DWT) no comprime los datos de la imagen por sí misma. Reestructura la información de dicha imagen para que resulte más fácil de comprimir. Una vez que se aplica, se cuantizan los datos de salida y se codifican en la Unidad de Codificación de Entropía (ECU).

Unidad de Codificación de Entropía (ECU)

Bloques de código después de la codificación aritmética
Bloques de código después de la codificación aritmética

Está compuesta por un modelador de coeficiente de bit y por un codificador aritmético propiamente dicho. El codificador elimina las redundancias en la codificación de los datos. Asigna códigos cortos a los eventos más probables y códigos largos a los menos probables. El modelador de coeficiente de bit estima la probabilidad de cada evento posible en cada punto del flujo de codificación.

Región de Interés (ROI)
Región de Interés (ROI)

Los colores más intensos denotan el empleo de más bits para representar ese bloque de código. La ponderación de tales bloques de código es la que otorga al JPEG 2000 la capacidad para establecer su Región de Interés (ROI). Esta permite al usuario seleccionar una zona de la imagen para visualizarla en alta calidad, mientras el resto de esa imagen se ve a baja calidad.

Control de transferencia de bits

Una vez que se establece una tasa de transferencia de datos (bit rate), el módulo de transferencia de bits ajusta la codificación de cada pixel con precisión –en realidad lo hace a partir de pequeños grupos de píxeles llamados Bloques de Código–.

Ordenación de datos

El módulo de ordenación de datos incrusta todos los grupos de píxeles en una sucesión de paquetes. Tales paquetes, en conjunción con encabezados adicionales conforman el flujo de código final del JPEG 2000. En el último bloque de ordenación de datos se selecciona la escalabilidad favorita –también llamada orden de progresión–.

Arquitectura de decodificación del JPEG 2000

KDM
KDM

A menudo, la decodificación del JPEG 2000 recae en el servidor de cine digital o en el bloque de media interno de la cabina de proyección de una sala cercana. Es frecuente que las proyecciones de prueba e incluso los dailies se codifiquen en JPEG 2000 para su visionado, cerca de las localizaciones –en un cine o sala de proyección alquilados con ese propósito–. El proceso de proyección de material codificado en JPEG 2000 suele requerir que el laboratorio o la sala de postproducción que ha generado el Digital Cinema Package (DCP) genere también una llave con un código de tiempo, fecha y dirección IP denominada Key Delivery Message (KDM). Debe cargarse en el sistema de proyección antes de reproducir el DCP. Si dependemos directamente de la reproducción de un servidor de cine digital o de un bloque de media interno, es aconsejable disponer de tiempo de sobra para realizar las pruebas de proyección pertinentes. Por descontado, es imprescindible tener siempre el contacto de alguien del laboratorio o de la instalación de postproducción que sea capaz, si es necesario, de regenerar la clave y enviarla al sistema.

El DCP de JPEG 2000 sigue los siguientes pasos para su reproducción:

  • Analizador JPEG 2000
  • Decodificar de entropía
  • Cuantizador inverso

Analizador JPEG 2000

Como su propio nombre indica, se encarga de analizar los encabezados principales y tomando cada partición del flujo de códigos envía el consiguiente flujo de bits comprimido al decodificador de entropía.

Decodificador de entropía

Diferentes tipos de entropías de 4 niveles con la DTW
Diferentes tipos de entropías de 4 niveles con la DTW

Son necesarios dos elementos para reconstruir cada sub-banda de ondícula dividida en bloques de código: El modelador de código y el decodificador aritmético. El primero decodifica de forma sucesiva cada plano de bits de los bloques de código. Para conseguirlo, envía información describiendo los bloques adyacentes de píxeles al segundo. Con esa información el decodificador aritmético decodifica el flujo de bits.

Cuantizador inverso

Se cuantizan de manera inversa los coeficientes de las sub-bandas de ondícula. Los pasos para la cuantización se definen en el archivo que contiene el encabezado principal del JPEG 2000 y pueden ser diferentes para cada sub-banda.

Memoria externa

Se utiliza un buffer de memoria de fotogramas en la salida del cuantizador inverso que permite el procesado eficiente de la Transformada Discreta de Ondícula Inversa (IDWT). Este buffer que contiene una memoria externa DDR2-SDRAM mantiene siempre (al menos) un fotograma válido, que puede repetirse cuando sea conveniente.

Transformada Discreta de Ondícula Inversa (IDWT)

Ejemplo de aplicación de la DWT a una imagen con empleo de banco de filtrado de Daubechies (9/7)
Ejemplo de aplicación de la DWT a una imagen con empleo de banco de filtrado de Daubechies (9/7)

Alcanza una recomposición de ondícula bidimensional de las sub-bandas. Se pueden usar dos tipos de bancos de filtros de paso, con precisión de 18 bits de punto fijo. O bien un Le Gall (5/3) –prescrito para codificación sin pérdida– o bien el más complejo Daubechies (9/7) para codificación con pérdida.

Transformación de Múltiples Componentes (MCT)

Se pueden emplear esta clase de transformaciones para mejorar la eficiencia de la compresión en el estándar JPEG 2000. Se definen diferentes transformaciones dependiendo de los filtros de ondícula utilizados. La transformación reversible (RCT) se usa con el filtro 5/3 y la transformación irreversible (ICT) con el filtro 9/7. Ambas se desarrollan con precisión de 18 bits de punto fijo.

Manejo de errores

Relación error-entropía en la aplicación de la DCT y de la DWT sobre la misma imagen
Relación error-entropía en la aplicación de la DCT y de la DWT sobre la misma imagen

El decodificador está diseñado para detectar errores en los datos de entrada así como en los encabezados principales y en la coherencia de los árboles de etiquetas. Cuando se detecta un error, se envía un código específico de error al dispositivo que maneja la decodificación. En el supuesto de que haya un fotograma corrupto en el flujo de código, el decodificador puede intentar decodificar el siguiente fotograma. El proceso se repite hasta encontrar un fotograma correcto. Si no se encuentra ninguno –en el periodo de tiempo marcado por la tasa de transferencia– se envía el fotograma previamente decodificado de manera correcta a la salida, para prevenir la aparición de artefactos.

Control del proceso

Esquema resumen del proceso de compresión y reconstrucción de la imagen mediante el codec JPEG 2000
Esquema resumen del proceso de compresión y reconstrucción de la imagen mediante el codec JPEG 2000

Aprovechando la codificación intracuadro del JPEG 2000, el controlador del decodificador puede manejar el flujo con la precisión que requiere la tasa de transferencia. Cuando no hay datos para decodificar en la entrada, el decodificador puede regresar en bucle al último fotograma decodificado, añadir a la salida un fotograma en negro o detener la salida de fotogramas. Al controlar el flujo de entrada y las opciones de salida también puede manejar la pausa, el avance paso a paso, la cámara lenta, el avance rápido y el rebobinado así como el acceso aleatorio. En lo que respecta a los interfaces, la entrada recibe salvas de 32 bits de representaciones Endian –pequeñas o grandes–. Se extrae una salva de dos píxeles –RGB, XYZ o YUV–. El reloj de salida depende de la tasa de transferencia de la secuencia y de la resolución de la imagen.

No hay comentarios

Dejar una respuesta

Los comentarios en esta página pueden ser moderados; en tal caso no aparecerán inmediatamente al ser enviados. Las descalificaciones personales y los comentarios inapropiados que no tengan que ver con el tema a tratar serán eliminados.