29 noviembre 2010

DPCM (Differential Pulse Code Modulation), Método diferencial para compresión de señales, Parte I, puro rollo

La teoría del siguiente choro mareador y las figuras pirateadas fueron tomad@s de:
Data Compression: The Complete Reference. David Salomon. Fourth Edition. Springer. 2007. Section 4.26: DPCM
Digital Signal Processing: Fundamentals and Applications. Li Tan. Academic Press. 2008. Section 11.3: Examples of Differential Pulse Code Modulation, and Adaptive DPCM G.721

La compresión por DPCM es parte de la familia de métodos compresión por codificación diferencial. La idea general es usar valores pasados recuperados como base para predecir el dato actual de entrada. Esto se basa en el hecho, por ejemplo, que los pixeles en una imagen o muestras adyacentes en el audio digitalizado se encuentran correlacionadas. Los valores correlacionados son generalmente similares, así que sus diferencias son pequeñas, esto resultando en una compresión.
A continuación se muestra el esquema simple de compresión diferencial para poder entender el principio del DPCM.

image

                           Codificador                                 Decodificador
Figura 1. CoDec Diferencial

La imagen anterior muestra un ejemplo de un codificador diferencial, se observa como el dato actual image se almacena en una unidad de almacenamiento, llámese “Delay” (o retardo pues si no les gusta agringarse), para ser usado para codificar el siguiente dato, o sea, image. Claro, la explicación anterior esta sumamente simplificada, en este ejemplo se muestra el uso de un cuantizador, eso significa que se tiene una compresión con perdidas o “lossy” y esto significa que nuestro dato codificado es realmente image el cual ya contiene un error de cuantización. Esto significa que la codificación por diferencias (o diferencial, como ustedes gusten y manden) nos mete en un nuevo problema: La acumulación de errores.
Entonces hay que tomar ventaja de lo que se menciona anteriormente, los datos que se van a comprimir están correlacionados. Esto significa que en general un dato depende de varios de sus vecinos, no solamente del anterior. Una mejor predicción puede ser lograda usando N de los datos previos para codificar el valor actual image, entonces tendremos una función image image, para predecir el dato actual image.
Ora si, en seguida pueden observar (jeje, como visita al museo) el diagrama del DPCM. (oooooohhhh!)

image
                          Codificador                                   Decodificador
Figura 2. DPCM
Oquey, oquey, haber encuentren la(s) diferencia(s) entre la Figura 1 y la Figura 2. ¿Está fácil? ¿que no? …
…
…
Pues si, cambiamos “Delay” por “Pred.” y se acabo el asunto.
Si.
Como se explicaba antes, el predictor viene siendo la funcioncica esta:
imageimage
En donde tenemos que es una función que nos afecta un conjunto de N pixeles y en base a esto obtenemos una mejor predicción de nuestro valor actual, es decir tratamos de minimizar el error introducido por la cuantificación.
Esta es la primera parte de dos, en esta ocasión fue el rollo previo a un ejemplo peque para poder explicar la DPCM.

06 octubre 2009

¿Qué Onda?: Fundamentos Matemáticos de las WAVELETS. Parte I

Lo que se presenta a continuación es basado en un artículo de Albert Cohen y Jelena Kovacevic llamado Wavelets: The Mathematical Background.

 

Cuando se tiene una señal, existen una gran cantidad de maneras de representarla y en base a lo que necesitamos hacer con dicha señal es que elegimos la manera en que va a ser tratada. El objetivo es que la información obtenida de la señal tenga significado para nosotros, es ahí dónde se pueden lograr varios acercamientos. Entre ellos se encuentran la multiresolución y las transformaciones de dominio.

La multiresolución a grandes rasgos es ir representando la información de manera que los detalles son agregados de forma sucesiva. Para la representación de una señal, uno de los temas que se utilizan ampliamente son las transformaciones de dominio y con ello es menester hablar una de las técnicas más aplicadas, la transformada de Fourier. Con la transformada de Fourier cambiamos la representación de una señal en el dominio del tiempo al dominio de la frecuencia, pero no podemos saber en que instante de tiempo está ubicada la frecuencia, esto es en algunos casos una limitación.

Una manera de darnos una idea de la localización en tiempo de la frecuencia es construir bloques y aplicarles la transformada de Fourier. Si tenemos que clip_image002 es una señal de frecuencia, con Fourier obtenemos un pico en la frecuencia clip_image004 dada. A partir de esto podemos expresar clip_image006 dónde clip_image008 es la ventana usada para localizar la frecuencia en el tiempo, a esto se le llama Short-time Fourier Transform (STFT). Una de las principales desventajas con la STFT es que la localización en el espacio tiempo es fija. Con las wavelets se tiene un acercamiento diferente, la localización de la frecuencia es logarítmica y proporcional al nivel de frecuencia.

Se puede definir una familia de funciones de la siguiente manera que nos permita tener una representación en la escala del tiempo

clip_image010,

clip_image012

(1)

dónde clip_image014 es una función fija llamada “wavelet madre”, a representa el escalamiento de la función y b son los corrimientos en el tiempo.

Basado en la función representada en (1) y tomando en cuenta que es un espacio de Hilbert, se define la transformada de una función f de la siguiente manera:

clip_image016

(2)

Para que la transformada (2) pueda ser invertible, se tiene elegir una clip_image014[1] de manera que cumpla con la condición de admisibilidad mostrada a continuación:

clip_image018

(3)

Y para asegurar que la integral es finita se debe cumplir que clip_image020. En base a lo anterior tenemos que se puede reconstruir mediante:

clip_image022

(4)

Prácticamente, una transformada wavelet continua se aplica a una serie de puntos discretos de manera clip_image024. Si se restringe la transformada continua wavelet de manera que clip_image026, dónde clip_image028entonces para valores fijos clip_image030 y clip_image032. Entonces podemos definir la función wavelet de manera general cómo:

clip_image034,

clip_image036

(5)

Para saber si la transformada wavelet en el caso discreto caracteriza completamente la función f y logra reconstruirla de manera estable, se requiere introducir el concepto de frames.

Para que un frame exista, y por lo tanto reconstrucción a partir de la wavelet, se debe tener una secuencia clip_image038en un espacio de Hilbert H si para cada x perteneciente al espacio H se cumple lo siguiente:

clip_image040

(6)

En dónde los límites clip_image042 son independientes de x. A dicha secuencia se le asocia al operador F que representa a clip_image044y también se desprende de ahí F* que asocia la sumatoria de las secuencias clip_image046 en clip_image048.

La desigualdad expresada en (6) puede ser expresada en términos del operador hermitiano F* F de manera que:

clip_image050

(7)

En base a lo anterior podemos definir una secuencia clip_image052 dada por clip_image054 que también constituye un frame llamado dual frame con límites en clip_image056 y se asocia con el operador llamado clip_image058 por lo consiguiente tenemos que:

clip_image060

(8)

Y también tenemos que clip_image062 así que una x que forma parte del espacio de Hilbert es representada por:

clip_image064

(9)

Para reconstruir x debemos conocer clip_image052[1]. Teniendo en cuenta que:

clip_image066

(10)

Dónde el operador residual clip_image068 satisface lo siguiente:

clip_image070

(11)

Sustituyendo en (7) nos da como resultado la siguiente ecuación:

clip_image072

(12)

Si tenemos que A=B=1 después de renormalizar, entonces podemos definir lo siguiente:

clip_image074

(13)

De manera que elegimos valores de A-B/A+B que se aproximan a cero y también A y B de manera arbitraria cercanos a uno seguido de una renormalización, eligiendo valores a0 y b0 cercanos a uno y cero respectivamente. Lo anterior significa que se ha hecho un sobre-muestreo de la wavelet continua en un arreglo bastante denso. Una de las aplicaciones más usadas para usar el sobre-muestreo empleando frames es el de reducir el error de reconstrucción con una relación basada en el sobre-muestreo.

 

Continuará…

This is I

Blog dedicado a escribir sobre Sistemas Embebidos y el Internet de las Cosas o IoT que le llaman.