Transformada de wavelet
La compresión de Wavelet es una forma de compresión de datos muy adecuada para la compresión de imágenes (a veces también compresión de video y compresión de audio). Las implementaciones notables son JPEG 2000, DjVu y ECW para imágenes fijas, CineForm y Dirac de la BBC. El objetivo es almacenar los datos de imagen en el menor espacio posible en un archivo. La compresión de Wavelet puede ser sin pérdidas o con pérdidas. La codificación de wavelets es una variante de codificación de transformada de coseno discreta (DCT) que utiliza wavelets en lugar del algoritmo basado en bloques de DCT.
Usando una transformada de wavelet, los métodos de compresión de wavelet son adecuados para representar transitorios, como sonidos de percusión en audio, o componentes de alta frecuencia en imágenes bidimensionales, por ejemplo, una imagen de estrellas en un cielo nocturno. Esto significa que los elementos transitorios de una señal de datos pueden ser representados por una cantidad de información menor que la que sería el caso si se hubiera utilizado alguna otra transformación, como la transformada de coseno discreto más extendida.
Transformada de onda discreta se ha aplicado con éxito para la compresión de señales electrocardiográficas (ECG) En este trabajo, la alta correlación entre los coeficientes de onda correspondientes de señales de ciclos cardíacos sucesivos se utiliza empleando predicción lineal.
La compresión de wavelets no es buena para todo tipo de datos: las características de la señal transitoria significan una buena compresión de wavelets, mientras que las señales suaves y periódicas se comprimen mejor mediante otros métodos, particularmente la compresión armónica tradicional (dominio de frecuencia, como por transformadas de Fourier y relacionadas).
Vea Diario de un desarrollador de x264: Los problemas con wavelets (2010) para una discusión de problemas prácticos de los métodos actuales que usan wavelets para la compresión de video.
Metodoeditar
Primero se aplica una transformada de wavelet. Esto produce tantos coeficientes como píxeles haya en la imagen (es decir, todavía no hay compresión ya que es solo una transformación). Estos coeficientes se pueden comprimir más fácilmente porque la información se concentra estadísticamente en unos pocos coeficientes. Este principio se denomina codificación de transformación. Después de eso, los coeficientes son cuantificadas y los valores cuantizados se entropía codificados y/o run length encoded.
Algunas aplicaciones 1D y 2D de compresión de wavelet utilizan una técnica llamada «huellas de wavelet».
Evaluacióneditar
Requisito de compresión de imageneditar
Para la mayoría de las imágenes naturales, la densidad del espectro de frecuencia más baja es mayor. Como resultado, la información de la señal de baja frecuencia (señal de referencia) generalmente se conserva, mientras que la información de la señal de detalle se descarta. Desde la perspectiva de la compresión y reconstrucción de imágenes, una wavelet debe cumplir los siguientes criterios al realizar la compresión de imágenes:
- Ser capaz de transformar una imagen más original en la señal de referencia.
- Reconstrucción de máxima fidelidad basada en la señal de referencia.
- No debe dar lugar a artefactos en la imagen reconstruida a partir de la señal de referencia solamente.
Requisito de varianza de cambios y comportamiento de anilloedItar
El sistema de compresión de imágenes de Wavelet implica filtros y decimación, por lo que puede describirse como un sistema de variantes de cambio lineal. A continuación se muestra un diagrama de transformación de onduletas típico:
La transformación del sistema contiene dos análisis de filtros (un filtro de paso bajo h 0 ( n ) {\displaystyle h_{0}(n)}
y un filtro de paso alto h 1 ( n ) {\displaystyle h_{1}(n)}
), una aniquilación proceso, un proceso de interpolación, y dos filtros de síntesis ( g 0 ( n ) {\displaystyle g_{0}(n)}
y g 1 ( n ) {\displaystyle g_{1}(n)}
). El sistema de compresión y reconstrucción generalmente involucra componentes de baja frecuencia, que son los filtros de análisis h 0 (n ) {\displaystyle h_{0} (n)}
para compresión de imágenes y filtros de síntesis g 0 (n ) {\displaystyle g_{0} (n)}
para reconstrucción. Para evaluar dicho sistema, se puede introducir un impulso δ ( n − n i ) {\displaystyle \delta (n-n_{i})}
y observar su reconstrucción h ( n − n i ) {\displaystyle h(n-n_{i})}
; El óptimo de wavelets son los que traen mínimo cambio y la varianza de los lóbulos laterales de h ( n − n i ) {\displaystyle h(n-n_{i})}
. A pesar de que wavelet con varianza de desplazamiento estricta no es realista, es posible seleccionar wavelet con solo una ligera varianza de desplazamiento. Por ejemplo, podemos comparar la varianza de desplazamiento de dos filtros:
Longitud | Coeficientes de filtro | Regularidad | ||
---|---|---|---|---|
Filtro de ondas 1 | H0 | 9 | .852699, .377402, -.110624, -.023849, .037828 | 1.068 |
G0 | 7 | .788486, .418092, -.040689, -.064539 | 1.701 | |
Wavelet filtro 2 | H0 | 6 | .788486, .047699, -.129078 | 0.701 |
G0 | 10 | .615051, .133389, -.067237, .006989, .018914 | 2.068 |
Al observar las respuestas de impulso de los dos filtros, podemos concluir que el segundo filtro es menos sensible a la ubicación de entrada (es decir, es una variante de desplazamiento menor).
Otro problema importante para la compresión y reconstrucción de imágenes es el comportamiento oscilatorio del sistema, que podría conducir a artefactos no deseados graves en la imagen reconstruida. Para lograr esto, los filtros de ondulación deben tener una gran proporción de pico a lóbulo lateral.
Hasta ahora hemos discutido sobre la transformación de una dimensión del sistema de compresión de imágenes. Este problema se puede extender a dos dimensiones, mientras que se propone un término más general, transformaciones multiescala desplazables.
Derivación de la respuesta al impulseeditar
Como se mencionó anteriormente, la respuesta al impulso se puede utilizar para evaluar el sistema de compresión/reconstrucción de imágenes.
Para la secuencia de entrada x ( n ) = δ ( n − n i ) {\displaystyle x(n)=\delta (n-n_{i})}
, la señal de referencia r 1 ( n ) {\displaystyle r_{1}(n)}
después de un nivel de descomposición es x ( n ) ∗ h 0 ( n ) {\displaystyle x(n)*h_{0}(n)}
pasa a través de la aniquilación por un factor de dos, mientras que h 0 ( n ) {\displaystyle h_{0}(n)}
es un filtro de paso bajo. De manera similar, la siguiente señal de referencia r 2 (n ) {\displaystyle r_{2} (n)}
se obtiene por r 1 (n ) ∗ h 0(n ) {\displaystyle r_{1} (n)*h_{0} (n)}
pasa por decimación por un factor de dos. Después de L niveles de descomposición (y decimación), la respuesta del análisis se obtiene reteniendo uno de cada 2 L {\displaystyle 2^{L}}
muestras: h a ( L ) ( n , n i ) = f h 0 ( L ) ( n − n i / 2 L ) {\displaystyle h_{A}^{(L)}(n,n_{i})=f_{h0}^{(L)}(n-n_{i}/2^{L})}
.
Por otro lado, para reconstruir la señal x(n), podemos considerar que una señal de referencia r L ( n ) = δ ( n − n j ) {\displaystyle r_{L}(n)=\delta (n-n_{j})}
. Si el detalle de las señales d i ( n ) {\displaystyle d_{i}(n)}
son iguales a cero para 1 ≤ i ≤ L {\displaystyle 1\leq i\leq L}
, a continuación, la señal de referencia en la anterior etapa ( L − 1 {\displaystyle L-1}
etapa) es de r L − 1 ( n ) = g 0 ( n − 2 n j ) {\displaystyle r_{L-1}(n)=g_{0}(n-2n_{j})}
, que se obtiene mediante la interpolación de r L ( n ) {\displaystyle r_{L}(n)}
y convoluting con g 0 ( n ) {\displaystyle g_{0}(n)}
. De manera similar, el procedimiento se itera para obtener la señal de referencia r ( n ) {\displaystyle r(n)}
en la etapa L − 2 , L − 3 , . . . . ,1 {\displaystyle L-2, L-3,….,1}
. Después de iteraciones en L, se calcula la respuesta de impulso de síntesis: h s ( L ) ( n , n i ) = f g 0 ( L ) ( n / 2 L − n, j ) {\displaystyle h_{s}^{(L)}(n,n_{i})=f_{g0}^{(L)}(n/2^{L}-n_{j})}
, que relaciona la señal de referencia r L ( n ) {\displaystyle r_{L}(n)}
y la reconstrucción de la señal.
Para obtener el sistema de análisis/síntesis de nivel L general, las respuestas de análisis y síntesis se combinan de la siguiente manera:
h Y S ( L ) ( n , n ) = agua k f h 0 ( L ) ( k − n / 2 L ) f g 0 ( L ) ( n / 2 L − k ) {\displaystyle h_{MP}^{(L)}(n,n_{i})=\sum _{k}f_{h0}^{(L)}(k-n_{i}/2^{L})f_{g0}^{(L)}(n/2^{L}-k)}