CAPÍTULO 3

DESCRIPCIÓN DE LAS TÉCNICAS DE PROCESADO DE SEÑAL UTILIZADAS

l contenido de este capítulo está dedicado a la descripción teórica de aquellas técnicas de procesado de señal incluidas en la interfaz implementada. De esta forma, el usuario será consciente de qué es lo

que realmente está haciendo cuando aplica una determinada técnica. En cada caso, se tratará de explicar de la manera más clara posible, en qué consiste cada técnica, indicando sus debilidades y fortalezas así como sus posibilidades de aplicación.

3.1. Recopilación de técnicas utilizadas

Como se verá en el capítulo siguiente, se han implementado un gran número de técnicas de procesado de señal. Veamos cuáles son para posteriormente centrarnos en cada una de ellas. Dichas técnicas pueden dividirse en dos tipos: aquellas operaciones efectuadas directamente sobre la señal de manera que observando las transformaciones sobre la misma, puedan inferirse características del espécimen, y aquellas operaciones que usan la información proporcionada tanto por la señal de salida como por el pulso de entrada con objeto de caracterizar el espécimen intentando llevar a cabo operaciones de deconvolución. Entre el primer grupo de funcionalidades tenemos las siguientes:

-   Recortar la señal en el dominio del tiempo

-   Representación del espectro y filtrado de la señal

-   Cálculo de la densidad de potencia espectral (PSD)

-   Autocorrelación de la señal

-   Correlación entre dos señales diferentes.

-   Remuestreo (modificación de la frecuencia de muestreo)

-   Técnicas Wavelet (DWT-transformada discreta Wavelet-, y CWT-transformada continua Wavelet)

-   Cepstrum y liftrado de la señal

-   Histograma de la señal.

En el grupo de operaciones que usan tanto la señal de las repeticiones como la señal del pulso de entrada se encuentran.

-   Deconvolución clásica o directa

-   Filtrado de Wiener

-   Deconvolución homomórfica con cepstrum



Como se puede ver existen funcionalidades que no modifican la señal en sí sino que se limitan a representarla (por ejemplo la representación del espectro), mientras que hay otras que si cambian la señal original (por ejemplo el filtrado). De esta forma, para no perder la señal original previa a todas las transformaciones, se ofrece la posibilidad de deshacer las acciones efectuadas (más detalle en el apartado 4.18), o si se desea, pueden irse guardando las señales modificadas como archivos nuevos sin peligro de perder la señal original que permanecerá en el archivo inicialmente cargado.

En apartados sucesivos se explicará con mayor detenimiento cada una de las funciones con las que cuenta la interfaz, mostrando en cada caso, un diagrama explicativo de cada función y ciertas ecuaciones descriptivas, así como una discusión de las posibilidades de cada técnica.

3.2. Recortar la señal en el dominio del tiempo

Una característica básica con la que todo programa de procesado de señales debe contar es la de poder eliminar o conservar ciertos intervalos de la señal. De esta forma podremos eliminar aquellas partes de la señal que no nos interesan y nos distraen a la hora de analizar los aspectos importantes de la misma.

Para realizar un recorte en una señal, en primer lugar hay que representarla en el dominio del tiempo. Esta representación, mostrará en el eje de ordenadas los valores de la amplitud de la señal, y en el eje de abscisas pudiera mostrarse tanto unidades de tiempo como número de muestras de la secuencia de datos considerada como señal.

Figura 2: Diagrama de bloques de la operación de recorte

En la figura 2, podemos ver un diagrama de bloques explicativo donde cada elemento tendrá el siguiente significado:


-    pulso de entrada

-    respuesta al impulso del espécimen

-    señal de salida

-   señal de salida recortada

Cuando hablamos de un recorte a la señal en un intervalo [a,b] podemos referirnos a una de las dos formas de entender el recorte. Para explicarlo, definamos una señal x(n), n=0,1,...,1000, y llamemos xR(n) a la señal x(n) recortada, siendo el intervalo considerado aquel comprendido entre n=a y n=b. Las dos opciones posibles de señal recortada son:

-Opción (1): quedarme con aquellas muestras comprendidas en el intervalo y despreciar el resto:

xR(n) = x(n) , n=a,a+1,...,b-1,b

-Opción (2): despreciar aquellas muestras contenidas en el intervalo y quedarme con las muestras restantes:

xR(n) = x(n) , n=0,1,...,a-1,a,b,b+1,1000

3.3. Remuestreo de la señal

Existen ocasiones en las que necesitamos remuestrear la señal, es decir, aumentar o disminuir el número de muestras que la componen o lo que es lo mismo, aumentar o disminuir la frecuencia de muestreo de la señal.

Figura 3: Diagrama de bloques de la operación de cambio de frecuencia de muestreo

Cada elemento tendrá el siguiente significado:




-    pulso de entrada

-    respuesta al impulso del espécimen

-    señal de salida

-   : transformada de Fourier de filtrada.

Decimación de la señal:

Cuando disminuyamos la frecuencia de muestreo, estamos llevando a cabo una decimación de la señal. En función de la tasa de decimación elegida, se mantendrán ciertas muestras de la señal, eliminando las muestras intermedias. Por tanto, el resultado es una señal con menor número de muestras pero que va a tener una duración temporal aproximadamente igual.

Por ejemplo, sea la señal x(n), n=1,2,...,1000, con una frecuencia de muestreo fs=200 MHz. Esto quiere decir que cada segundo se capturan un total de 200 millones de muestras. Si disminuimos la frecuencia de muestreo (decimamos) de manera que la nueva frecuencia de muestreo sea fs=100 MHz, la nueva señal xD(k) será:

xD(k) = x(2n+1) , n=0,1,...,1000 La señal resultante xD(k) tendrá por tanto la mitad de muestras que x(n).

Interpolación de la señal:

En caso de aumentar la frecuencia de muestreo estaremos realizando una interpolación de la señal. Esta interpolación equivale a añadir nuevas muestras intermedias. Estas nuevas muestras son ficticias puesto que no se tiene información de su valor. La técnica más común es darles valor cero. De esta manera, se están insertando ceros entre las muestras de la señal original.

Sea la señal x(n), n=1,2,...,1000, con una frecuencia de muestreo fs=200 MHz. Si aumentamos la frecuencia de muestreo (interpolamos) de manera que la nueva frecuencia de muestreo sea fs=400 MHz, la nueva señal xI(k) será:

xI(k) = x(n) , n=0,0.5,1.5,...,1000 La señal resultante xI(k) tendrá por tanto el doble de muestras que x(n).

3.4. Representación del espectro y filtrado de la señal

La técnica quizá más utilizada en el procesamiento de señales es la de realizar un filtrado de la señal, es decir, la de despreciar ciertos componentes frecuenciales para quedarnos con aquellos que nos interesan.

Para realizar un filtrado, es conveniente calcular en primer lugar el espectro de la señal. En la figura 4, podemos ver un diagrama explicativo de la operación efectuada, recuadrando en línea discontinua la señal objeto de la representación:

Figura 4: Diagrama de bloques de la operación de filtrado

En dicha figura, tenemos que:

Matemáticamente, el espectro de una señal se obtiene calculando la transformada de Fourier mediante la siguiente ecuación:

Sea una señal x(n), con n=0,1,...,1000, tenemos que su transformada de Fourier será X(f), con f=0,1,...,2000. Llamemos XF(f) a la señal x(n) filtrada, siendo el intervalo frecuencial considerado aquel comprendido entre la frecuencia inferior de corte f=fi y la frecuencia superior de corte f=fs. Las opciones posibles son:

-Opción (1): ‘filtrar’:

XF(f) = X(f) , f= fi, fi +1,..., fs -1, fs

- Opción(2): ‘eliminar’:

XF(n) = X(f) , f=0,1,..., fi -1, fi, fs, fs +1,200

En la interfaz implementada se permite que se filtre la señal considerada con un filtro diseñado con la herramienta de diseño de filtros de Matlab FDATool. Una vez que se ha diseñado un filtro en dicha aplicación, hay que guardar sus coeficientes en un archivo .mat como se explicará a continuación. Seguidamente, se describirá la herramienta FDATool, indicando el tipo de filtros que una vez diseñados, pueden ser usados en la interfaz.

3.4.1. FDATool

FDATool (-the Filter Design and Analysis Tool- herramienta de análisis y diseño de filtros) es una interfaz de usuario indicada para el diseño y análisis de filtros de forma rápida. FDATool permite el diseño de filtros FIR o IIR mediante el establecimiento de las especificaciones del filtro, mediante la importación de filtros desde el workspace de MATLAB, o mediante la inclusión, desplazamiento o eliminación de polos y ceros. FDATool también proporciona herramientas para el análisis de filtros como representación polo-ceros y representaciones del módulo y fase de la respuesta.

Hay 2 formas básicas de realizar el diseño de filtros con FDATool:

- Eligiendo primero un tipo de respuesta (por ejemplo, pasobanda) y escogiendo entonces entre los métodos de diseño de filtros FIR o IIR disponibles. Los tipos de respuesta disponible por defecto son los siguientes:

Entre los métodos de diseño de filtros están:
  • Filtros IIR
  • Filtros FIR

-Otra forma de diseñar filtros es indicar el tipo de filtro que se desea, junto con ciertas especificaciones en el dominio frecuencial o del tiempo (por ejemplo, frecuencia de corte). El filtro que se diseñe se calculará de acuerdo al método de diseño y orden de filtro que haya estipulado por defecto.

Los filtros que se diseñen pueden ser estructurados con una estructura en “forma directa” o en una estructura en celosía, aunque para que la extracción de coeficientes sea correcta y genere archivos .mat adecuados para la interfaz, deberá hacerse de la primera manera. Veamos por tanto, en qué consiste la forma directa:

-Forma directa: Incluye forma directa I, forma directa II, forma directa I traspuesta, forma directa II traspuesta y forma directa FIR. En todos estos casos el filtro se especifica con la representación de su función de transferencia [14] de la siguiente manera:

El archivo generado estará compuesto con una estructura con dos campos denominados Numerator y Denominator:

  • El campo Numerator se trata de un vector de coeficientes de numerador b, el cual contiene m+1 coeficientes en potencias descendentes de z.
  • El campo Denominator se trata de un vector de coeficientes del denominador a, el cual contiene n+1 coeficientes en potencias descendentes de z. Para filtros FIR, se cumple que el campo Denominator = 1.

Para todas las estructuras de forma directa, excepto para la forma directa FIR, se permite que se importe el filtro con su representación de secciones de segundo orden:

Cuando se opte por guardar los coeficientes de un filtro con esta estructura el archivo .mat generado contendrá un campo denominado Gain que especifica el valor de la ganancia g, y otro campo con la matriz SOS que se tratará de una matriz de orden Lx6 con la siguiente estructura:

Como se puede ver, las filas de la matriz SOS contienen los coeficientes de numerador y denominador bik y aik de las secciones de segundo orden de H(z).

Exportación de coeficientes del filtro a un archivo MAT:

La exportación de un diseño de un filtro puede hacerse al workspace, a un archivo ASCII, a un archivo MAT, a SPTool, a Simulink y a otros sitios. Sin embargo, la única forma que nos interesa, como ya se ha comentado, es la exportación a un archivo MAT.

Para guardar los coeficientes del filtro como variables en un arhivo .mat hay que seguir los siguientes pasos:

  1. Selecciona File > Export. Aparecerá el cuadro de diálogo de Export.

  2. Selecciona el archivo MAT desde el menú Export To.

  3. Selecciona los coeficientes desde el menú Export As para guardar los coeficientes del filtro.

  4. Si se desea se puede asignar el nombre de variable usando los cuadros de texto en la región de Variable Names para Numerator (para filtros FIR) o Numerator y Denominator (para filtros IIR), o la matriz SOS y Scale Values (para filtros IIR en la forma de sección de segundo orden).

  5. Se hace click en el botón Export con lo que aparecerá el cuadro de diálogo Export to a MAT-File

  6. Asigna un nombre de archivo y haz click en el botón Save

3.5. Representación de la PSD de la señal

Otra funcionalidad implementada es la de la representación de la densidad de potencia espectral (PSD - Power Spectral Density) de la señal. La PSD nos muestra cómo está distribuida la energía de la señal a lo largo de las frecuencias que la forman. En la figura 5, podemos ver un esquema de la operación efectuada:

Figura 5: Diagrama de bloques de la operación de cálculo de la PSD

En dicha figura, tenemos que:

Como se puede ver en la figura 5, se ha optado por calcular la densidad de potencia espectral siguiendo las indicaciones del teorema de Wiener-Khinchin[10]. Dicho teorema establece que la densidad de potencia espectral de un proceso aleatorio WSS es la transformada de Fourier de la función de autocorrelación correspondiente. En el caso discreto dicho teorema quedaría expresado de la siguiente forma:

3.6. Cepstrum

¿Qué es el cepstrum?

Las técnicas de análisis cepstral son técnicas de procesado de señal no lineales utilizadas en una gran variedad de aplicaciones, sobretodo en áreas como el procesamiento de imágenes o el procesamiento de la voz. Como regla general, el cepstrum [5] es la transformada inversa de Fourier del logaritmo de la potencia espectral de la señal.

Por lo tanto, el cepstrum puede ser interpretado como un análisis en frecuencia de la función densidad espectral de potencia (PSD) en dB (por el logaritmo)[9]. El dominio del cepstrum se corresponde con el dominio temporal y sus unidades se denominan cuefrencia (quefrency). Los valores del cepstrum son una medida de la velocidad de variación de los componentes espectrales. Esto significa que los componentes correspondientes a variaciones lentas de la PSD se encuentran en la zona baja del eje de la cuefrencia, mientras que las variaciones rápidas se encuentran en la zona alta de la cuefrencia.

Tipos de cepstrum

La anterior definición de cesptrum corresponde al llamado cepstrum de potencia. No es la única definición, aunque sí la más común. De manera más detallada, dada una señal x(n) su cepstrum de potencia o simplemente su ‘cepstrum’ es [5]:

, o lo que es lo mismo:

También se usa el denominado cepstrum complejo. Dada una secuencia x, su cepstrum complejo se halla mediante el cálculo de la transformada de Fourier inversa del logaritmo natural complejo de la transformada de Fourier de x.

La diferencia entre un tipo de cepstrum y otro estriba en que a diferencia del cepstrum complejo, el cepstrum real usa el módulo de la PSD. Por este motivo, no es posible reconstruir la secuencia original a partir de su cepstrum real. El cepstrum de potencia se usa normalmente para determinar los tiempos de llegada de ondas fundamentales y sus ecos con sus amplitudes relativas.

Áreas de aplicación:

Las áreas de aplicación de las técnicas cepstrales son variadas incluyendo [5]:

  •  Radar y sonar, donde el procesado con cepstrum puede usarse para tratar de reducir las interferencias de la reflexiones
  • Procesado de voz donde se estima la frecuencia fundamental del hablante (pitch)y envolventes del espectro,
  • Exploración y detección símica tanto terrestre como marítima, donde por ejemplo se trata de determinar la profundidad de las fuentes y de explorar el fondo oceánico 
  • Ondas de los electroencefalogramas (EEG) donde se localizan determinados eventos electrofisiológicos que aparecen correlados.
  • Otras áreas de interés como la deconvolución de funciones de densidad de probabilidad
  • Otros trabajos son por ejemplo la restauración de grabaciones antiguas o el procesado de imágenes.

Históricamente, el cepstrum tiene sus raíces en el problema general de la deconvolución de dos o más señales, tratando temas como predicción lineal, filtrado inverso y deconvolución. De hecho, las técnicas cepstrales son protagonistas en la teoría y aplicación de sistemas homomórficos, es decir, sistemas que cumplen ciertas reglas generales de superposición.

El cepstrum de potencia fue por primera vez descrito por Bogert en 1963 como una técnica heurística para encontrar tiempos de llegada de ecos en una señal compuesta. Esos autores definieron el cepstrum (que llamaremos cepstrum de potencia para no confundirlo con el cepstrum complejo) de una función como el espectro de potencia del logaritmo del espectro de potencia de esa función.

Estos autores rápidamente mostraron que el efecto de un eco retrasado se manifiesta como un rizado u onda en el logaritmo del espectro. La “frecuencia” de esta onda se determina fácilmente calculando el espectro del logaritmo del espectro, donde esta frecuencia aparecerá como un pico. Sin embargo, las unidades de frecuencia de esa onda en el logaritmo del espectro son unidades de tiempo por lo que la variable independiente (abscisa) en el espectro del logaritmo del espectro es el tiempo.

En la práctica, el cepstrum de potencia es efectivo si el wavelet y el tren de impulso, cuya convolución comprende los datos compuestos, ocupan diferentes rangos de cuefrencia [32].

El cepstrum complejo es una consecuencia del desarrollo de la teoría de sistemas homomórficos. De hecho, el cepstrum de potencia es también una aplicación específica de la teoría de sistemas homomórfica. Ya que el cepstrum complejo retiene información acerca de la fase de los datos, puede usarse no sólo para detección de eco sino también para la recuperación de ondas en un proceso conocido como deconvolución o filtrado homomórfico [5]. En el apartado 3.13, veremos la forma en que se ha efectuado una deconvolución homomórfica basada en cepstrum complejo para la interfaz.

¿Cuál es la relación existente entre el cepstrum complejo y el cepstrum de potencia? Puede demostrarse [5] que dicha relación, es

, donde

es el cepstrum de potencia y

el cepstrum complejo.

Cepstrum en la interfaz

En la interfaz implementada se ha optado por calcular el cepstrum de potencia, el cual se corresponde con el siguiente diagrama explicativo:

Figura 6: Diagrama de bloques de la operación de cepstrum

En la figura 6, tenemos que:

pulso de entrada

-

-

  •    pulso de entrada
  •  respuesta al impulso del espécimen