viernes, 5 de octubre de 2012

Arquitectura de JPEG 2000


La arquitectura básica, está formada por un conjunto de etapas de procesamiento, ques se puede ver en forma de diagrama de bloques:


Dichas etapas son aplicadas a cada componente de cada tile de la imagen a comprimir.

Descripción de las etapas:

Offset: Las muestras de la imagen, x[n], donde n representa el punto de coordenadas [n1, n2] de la imagen, con una profundidad de B bits, deben ser valores con signo en el rango:



Por ello, si las muestras originales de la imagen son sin signo, como suele pasar en la mayoría de los casos, es necesario añadirles un offset de 2^(B-1).

Transformada de color: La transformada de color es opcional, ya que sólo puede ser aplicada cuando se poseen al menos tres componentes de color y las tres primeras son del mismo tamaño y la misma profundidad de bits. Se asume que estas primeras tres componentes son RGB, el rojo (Red), el verde (Green) y el azul (Blue).
El objetivo de la transformada de color es convertir las componentes RGB de la imagen en otras componentes con un modelo de color diferente, con el fin de reducir la redundancia que existe entre los canales R, G y B, y poder así aumentar las tasas de compresión.

Como se puede apreciar en la figura 1.1, existen dos tipos de transformadas de color, una para el camino irreversible, la ICT, y otra para el camino reversible, la RCT.
La transformada ICT convierte de RGB a YCbCr. La transformada RCT convierte de RGB a Y’DbDr.
Como hemos comentado, asumimos que las tres componentes, x0[n], x1[n] y x2[n], son el rojo, xR[n], el verde, xG[n], y el azul, xB[n]. La transformada ICT es:


Donde:



Con las mismas condiciones que para la transformada ICT, se define la transformada RCT como sigue:



En nuestro caso, las imágenes van a cumplir la condición necesaria para aplicar la transformada de color, ya que van a ser imágenes en color con sólo tres componentes, RGB.

Transformada wavelet: La segunda etapa de minimización entrópica se basa en la transformada wavelet discreta o DWT (Discrete Wavelet Transform). Esta representa los puntos de la imagen a comprimir en un dominio espacio frecuencial que posee dos ventajas fundamentales: (1) reducir la correlación espacial de cada componente de la imagen, lo que es esencial de cara a maximizar las tasas de compresión, y (2) encontrar una representación multiresolución para cada componente, propiedad que puede ser de ayuda a la hora de procesar imágenes muy grandes.
A continuación vamos a describir la DWT desde el punto de vista de la Teoría de los Bancos de Filtros [9].

Según dicha teoría, una secuencia unidimensional de N muestras x[n], n = 0, … ,N − 1 puede ser representada mediante dos secuencias l[n], n = 0, … , (N/2) −1 y h[n], n = 0, …  , (N/2) −1 de tamaño mitad, donde l[n] es el resultado de filtrar x[n] usando un filtro paso bajo L y h[n] es el resultado de filtrar x[n] mediante un filtro paso alto H. Este banco de dos filtros se define de forma que desde el punto de vista de la frecuencia, lo que el filtro L deja pasar es lo que H no deja pasar y viceversa. Por este motivo, la información contenida en las bandas l[n] y h[n] es la misma que en la secuencia original x[n] que puede ser regenerada usando los correspondientes filtros de síntesis.

Este proceso de descomponer una señal en dos señales, una de baja frecuencia y otra de alta puede aplicarse recursivamente a ambas sub-bandas. Cuando solo se aplica a la banda de baja frecuencia, se habla de la DWT en su versión diádica (dyadic). Si se aplica a ambas, obtenemos la DWT en su versión paquetizada (packet). En el caso de la compresión de imágenes, la forma más utilizada en la diádica porque la energía se acumula principalmente en la zona de baja frecuencia.


En la figura se muestra gráficamente el proceso de descomposición aplicado en la DWT diádica unidimensional.

La DWT se diferencia además de otras transformadas clásicas como la DFT (Discrete Fourier Transform) o la DCT (Discrete Cosine Transform) en un aspecto fundamental: se trata de una representación espacio-frecuencial, no únicamente frecuencial. Gracias a esto es posible seleccionar un subconjunto de coeficientes wavelet para reconstruir solo una parte de la señal original. Esto es muy útil cuando procesamos imágenes muy grandes y solas podemos visualizar una parte de la imagen.

Ya que estamos trabajando con imágenes y  estas tienen dos dimensiones, es necesario extender este proceso al caso bidimensional. Por suerte la DWT diádica es separable, lo que significa que podemos calcular la DWT diádica bidimensional aplicando la DWT diádica unidimensional primero a las filas y luego a las columnas de la imagen (o viceversa).

Una descomposición DWT diádica bidimensional de 2 niveles.


De esta forma, tras cada fase de descomposición se obtienen cuatro bandas en lugar de dos.



Cuantificación: Cada coeficiente wavelet c se cuantifica mediante la siguiente expresión:



El estándar JPEG2000 permite definir un step-size de cuantificación, (intervalo)b, especifico de cada sub-banda. Para el camino reversible, el step-size de cuantificación debe ser necesariamente igual a uno. Por el camino irreversible la cuantificación recibe el nombre de DZQ, y por el reversible, el de Ranging.

Ajuste de la ROI: Como se comentó anteriormente, JPEG2000 ofrece mecanismos mediante los cuales el compresor puede asignar una prioridad más alta a ciertas regiones de la imagen. En esta etapa es donde se realiza la codificación de la ROI a tener en cuenta en la codificación. El método empleado en el estándar para la codificación de la ROI es el llamado método MAXSHIFT, que consiste en desplazar a la izquierda los coeficientes wavelet que conforman la ROI.

Codificación: El codificador empleado por el estándar JPEG2000 es el codificador MQ, similar al codificador QM empleado en el estándar JPEG. El codificador MQ es empleado también en el estándar JBIG-2. Se trata de un codificador aritmético binario que permite codificar sin redundancia estadística los planos de bits de los coeficientes wavelets.



No hay comentarios:

Publicar un comentario