• No se han encontrado resultados

Parte III: Inversión de la transformación y aplicaciones

10.1 Introducción: el estándar JPEG 2000

10.1.1 El codec JPEG 2000

El codec JPEG 2000 está basado en las técnicas wavelet de codificación en subbandas y permite comprimir con y sin pérdidas usando el mismo esquema de compresión. En particular, está muy influido por el esquema EBCOT (Embedded Block Coding with

Optimized Truncation) de Taubman (2000). Para conseguir una codificación eficiente

con y sin pérdidas, el codec utiliza bien una transformación no-reversible de real a real o bien una transformación reversible de entero a entero, respectivamente. Los coeficientes de la transformación se codifican por planos de bits. En particular, la codificación en entropía se realiza utilizando el codificador MQ del estándar JBIG2, que es un codificador aritmético binario adaptado al contexto.

La estructura general del codec JPEG 2000 básico, se muestra en la Figura 10.1a. Supongamos que tenemos una imagen con una o más componentes. Si P es el número de bits por muestra en una cierta componente, el rango dinámico nominal de los valores de las muestras es [-2P-1,2P-1 - 1] o bien [0,2P - 1], dependiendo de si las muestras

tienen signo o no. El proceso de codificación tiene lugar como sigue (Adams y Kossentini, 2000):

1. Transformación multicomponente. Primeramente, si los valores de las muestras son sin signo, entonces se les resta 2P-1 antes de cualquier otra operación. Seguidamente, si la imagen tiene tres componentes, el codificador puede aplicar cualquiera de las dos transformaciones multicomponente disponibles. El objetivo de esta transformación es convertir la imagen, dada habitualmente en el espacio de color RGB, al espacio de color YCrCb. En el caso de codificación con pérdidas, la transformación empleada (llamada ICT) es no-reversible y de real a real, mientras que en el caso de codificación sin pérdidas, la transformación (llamada RCT) es reversible y de entero a entero.

2. Transformada wavelet. Opcionalmente, puede aplicarse una transformada

wavelet a cada componente. Todas las transformadas wavelet disponibles están basadas en bancos de filtros 1D con dos canales, de modo que para tratar los datos 2D es necesario aplicar las transformaciones 1D separadamente en cada dimensión. Como las señales de entrada tienen tamaño finito, se consideran extensiones simétricas de las mismas. En el caso con pérdidas, la transformada

wavelet que se utiliza (la transformada 9/7 de Antonini et al., 1992) es no- reversible y de real a real. En el caso sin pérdidas, sin embargo, se utiliza una transformada reversible de entero a entero (la transformada 5/3 de Calderbank et al., 1998). La Figura 10.2 muestra los coeficientes de los filtros 1D que utilizan estas dos transformadas wavelet.

Figura 10.1: Codec JPEG 2000. Estructura del (a) codificador y (b) decodificador. (Adams y Kossentini, 2000).

Figura 10.2: Coeficientes del filtro paso bajo (h0) y paso alto (g0) de las transformadas wavelet biortogonales 9/7 y 5/3. (Usevitch, 2001).

3. Cuantización. Los coeficientes de la transformada wavelet se cuantizan con un cuantizador escalar con zona muerta, cuyos parámetros pueden variar dependiendo de la subbanda particular. En el caso de codificación sin pérdidas, el salto del cuantizador debe fijarse a 1, esto es, no se realiza ninguna cuantización.

4. Codificación de nivel 1. Los coeficientes cuantizados correspondientes a cada subbanda se dividen en bloques de tamaño fijo (típicamente 64 x 64) que se codifican independientemente usando codificación por planos de bits. La codificación por planos de bits funciona como sigue. Cada bloque de coeficientes cuantizados se trata como si fuera una pequeña imagen, de forma que se codifica un plano de bits cada vez, empezando por el plano más significativo. En total, por cada plano de bits se realizan tres pasadas, que dan lugar a tres subplanos de bits. Éstas tres pasadas son las siguientes:

i) Significación. En esta pasada se codifica el bit correspondiente de todas aquellas muestras todavía no clasificadas como significativas, que durante el tratamiento del plano de bits actual se consideran significativas mediante una predicción. Si una muestra pasa a ser significativa, su signo se codifica también en esta pasada.

ii) Refinamiento. En esta pasada se codifica el siguiente bit más significativo de aquellas muestras clasificadas como significativas durante el tratamiento del anterior plano de bits.

iii) Barrido. Finalmente, en esta pasada se codifica el bit correspondiente de todas aquellas muestras todavía no clasificadas como significativas y que en la pasada de significación no se consideraron significativas. Si una muestra pasa a ser significativa, su signo se codifica también en esta pasada.

Los símbolos generados por el codificador de planos de bits se codifican con un codificador aritmético binario adaptativo (el codificador MQ empleado en el estándar JBIG2). Opcionalmente, algunos de los símbolos producidos durante el tratamiento de los planos de bits menos significativos pueden pasar directamente a la siguiente etapa sin pasar por el codificador aritmético.

5. Codificación de nivel 2. Finalmente, en esta última etapa se codifica la salida de la etapa anterior junto con información acerca de qué subplanos de bits se incluirán para cada bloque, y el orden de aparición de dichos subplanos en el resultado final. Si la codificación es sin pérdidas, deben incluirse todos los subplanos de bits, mientras que si la codificación es con pérdidas, por lo general sólo se incluye un subconjunto de los mismos. El control de tasa binaria se realiza eligiendo el paso del cuantizador, así como el conjunto de subplanos de bits que se incluirán en el resultado final de la codificación.

Análogamente, la estructura del decodificador JPEG 2000 básico es la que se muestra en la Figura 10.1b. El proceso de decodificación consta también de cinco etapas

que van invirtiendo las operaciones realizadas durante la codificación. Estas cinco etapas son las siguientes:

1. Decodificación de nivel 2. Primeramente, a partir de la información codificada de entrada, se obtienen los subplanos de bits de los diferentes bloques. Excepto en el caso sin pérdidas, en general sólo se puede recuperar un subconjunto de los planos de bits originales.

2. Decodificación de nivel 1. Seguidamente, los planos de bits se decodifican para obtener los correspondientes coeficientes wavelet cuantizados. En el caso con pérdidas, obviamente, los coeficientes cuantizados obtenidos son sólo una aproximación de los coeficientes cuantizados originales, ya que durante la codificación, en general, no se incluyen todos los subplanos.

3. Decuantización. A partir de los valores cuantizados se obtienen los coeficientes

wavelet aproximados. Nótese que en el caso sin pérdidas esta etapa no es

necesaria.

4. Inversión de la transformada wavelet. A continuación se aplica la

correspondiente transformada wavelet inversa a cada una de las componentes. 5. Inversión de la transformación multicomponente. Finalmente, si es necesario, se

aplica la transformación multicomponente inversa. Por otro lado, si los valores de las muestras de una componente dada son sin signo, entonces hay que sumarles 2P-1 para así recuperar el rango dinámico nominal original. En el caso con pérdidas, se realiza además una operación de recorte sobre los valores de las muestras para garantizar que no están fuera del rango permitido.

Aunque el codec JPEG 2000 básico es muy versátil, existen ciertas aplicaciones que requieren características adicionales. Es por esto que, como ya hemos dicho, el estándar define numerosas extensiones del codec básico, tales como: la posibilidad de dividir la imagen en regiones con forma arbitraria que pueden solaparse; transformaciones adicionales intracomponente (p.ej., transformaciones en subbandas basadas en filtros y árboles de descomposición arbitrarios, y que aplican filtros diferentes en la dirección horizontal y vertical) y también entre componentes (p.ej., transformaciones en subbandas multidimensionales); transformaciones solapadas; métodos adicionales de cuantización, como por ejemplo la cuantización codificada Trellis; codificación mejorada de regiones de interés, con una forma explícita de especificar la forma de la región de interés y el valor arbitrario del desplazamiento; y extensiones del formato de fichero que soportan espacios de color adicionales y documentos compuestos. El estándar JPEG 2000 también define una serie de herramientas opcionales de

optimización visual, de las que nos ocuparemos más en detalle en el siguiente subapartado, por estar relacionadas con nuestro esquema.