Clase 4

27
Facultad de Ingeniería UNIVERSIDAD DE MENDOZA Pasaje Descote750 5500 Mendoza República Argentina Teléfono 061-201872 CURSO EXPERIMENTACIÓN CON BASES DE DATOS DE SEÑALES CARDIOLÓGICAS. RECURSOS DE PHYSIONET. ” DICTADO POR: DR. ING. JESÚS RUBÉN AZOR MONTOYA 2011

Transcript of Clase 4

Page 1: Clase 4

Facultad de Ingeniería UNIVERSIDAD DE MENDOZA

Pasaje Descote7505500 Mendoza

República ArgentinaTeléfono 061-201872

CURSO

“EXPERIMENTACIÓN CON BASES DE DATOS DE SEÑALES CARDIOLÓGICAS. RECURSOS DE

PHYSIONET. ”

DICTADO POR: DR. ING. JESÚS RUBÉN AZOR MONTOYA

2011

Page 2: Clase 4

Filtrado del ruido en las señales ECG

 Las señales electrocardiográficas (ECG) pueden estar corrompidas por varios tipos de ruidos. Ejemplos típicos son:

- Interferencia de línea de potencia- Ruido por contacto de electrodo- Artifacts  (cualquier alteración  indeseada en datos  introducidos durante su procesamiento digital)- Contracción muscular.- Deriva de la línea base-Ruido de instrumentación generado por dispositivos electrónicos

Interferencia de línea de potencia  Consiste  en  una  sinusoide  superpuesta  de  50-60Hz  a  la  señal  del  ECG.  Las características, que pueden necesitar ser variadas en un modelo de ruido de línea  de  potencia,  de  la  componente  de  50-60Hz  incluyen  la  amplitud  y  la frecuencia de la  señal. La amplitud varía hasta el 50 % del pico de la amplitud del ECG

Page 3: Clase 4

Filtrado de la señal de alimentación de potencia

 Se va a utilizar el Filtro Óptimo de Wiener para eliminar la señal de 60 Hz en la señal ECG del registro 202 de la MIT-BIH Arrhythmia Database (http://www.physionet.org/physiobank/database/html/mitdbdir/records.htm)

Para obtener los datos, se recurre a la función Matlab específica rdsamp

rr=rdsamp('mitdb/202','phys',true);

El agregado de 'phys',true es para obtener los datos en unidades físicas (mV).Lo que se obtiene es un arreglo de 650000 filas por tres columnas:

Page 4: Clase 4

Filtrado de la señal de alimentación de potencia Como se aprecia en la figura, la primera columna indica el instante de toma de  la  muestra  y  en  la  segunda  y  tercera,  dos  derivaciones  obtenidas  de sendos sensores.Como se puede verificar, la frecuencia de muestreo es de 360Hz.Usaremos  la  primera  derivación  (segunda  columna)  y  de  ese  vector,  213  = 8192 muestras. Z=rr(:,2); r=Z(1:2^13); plot(r)

Page 5: Clase 4

Filtrado de la señal de alimentación de potencia Como  se  puede  ver  el  ECG  es  ruidoso  y  tiene  una  deriva,  aparte  de  una componente de DC.En el eje de abscisas está el número de muestra y en ordenadas los valores de tensión (en milivoltios) correspondientes a cada muestra.Tomando  la  Transformada  de  Fourier  de  esta  señal  se  puede  observar  la componente correspondiente a 60 Hz.

N=length(r); fs=360; i=1:N/5; plot((i-1)*fs/N,F(i))

Page 6: Clase 4

Filtrado de la señal de alimentación de potencia Como  se  puede  ver  el  ECG  es  ruidoso  y  tiene  una  deriva,  aparte  de  una componente de DC.En el eje de abscisas está el número de muestra y en ordenadas los valores de tensión (en milivoltios) correspondientes a cada muestra.Tomando  la  Transformada  de  Fourier  de  esta  señal  se  puede  observar  la componente correspondiente a 60 Hz.

N=length(r); fs=360; F=abs(fft(r));i=1:N/5; plot((i-1)*fs/N,F(i))

Page 7: Clase 4

Filtrado de la señal de alimentación de potencia Para filtrar la señal, anulando la componente de la alimentación de potencia (60 Hz), se plantea el siguiente combinador lineal. 

donde x(i) es  la señal de entrada, una cosenoide de 60 Hz muestreada a fs=300 Hz; mientras que d(i) es la señal deseada (ECG). 

El filtro ajustará sus pesos (w0, w1) hasta lograr que la señal de error, e(i), constituya  la  señal  ECG filtrada  (en  este  caso,  sin  la  componente  de  60 Hz).

Para  encontrar  los pesos del mejor  ajuste  (vector óptimo de Wiener)  se debe determinar la matriz de autocorrelación de entrada, R, y el vector de correlación cruzada entre la entrada y la salida, P. 

Page 8: Clase 4
Page 9: Clase 4
Page 10: Clase 4

Filtrado de la señal de alimentación de potencia d=r; % hace al ECG la señal deseadaN=length(r);% define la entrada como una cosenoide de 60 Hz % muestreada a 360 Hzfor i=1:N;x(i)=cos(2*pi*(i-1)*60/360);end% Calcula la matriz de autocorrelacion de entrada, RR(1,1)=norm(x)^2/N;R(2,2)=R(1,1);S=0;for i=2:N;S=S+x(i)*x(i-1); end R(1,2)=S/(N-1); R(2,1)=R(1,2);S=0; for i=1:N, S=S+d(i)*x(i); end% Calcula el vector PP(1,1)=S/N;S=0; for i=2:N, S=S+d(i)*x(i-1); endP(1,2)=S/(N-1);% Halla el vector optimo de WeinerW=R^-1*P';% Obtiene la señal ECG filtradafor i=2:N, e(i)=d(i)-W(1)*x(i)-W(2)*x(i-1); end% Grafica la fft para observar su correcto filtradoE=abs(fft(e));i=1:length(E)/5; plot((i-1)*360/N,E(i))

Page 11: Clase 4

Filtrado de la señal de alimentación de potencia Observando la fft de la señal filtrada:

E=abs(fft(e));i=1:length(E)/5; plot((i-1)*360/N,E(i))

Se ve que la componente de 80 Hz ha sido totalmente eliminada.

Page 12: Clase 4

Wavelets La Transformada Wavelet (WT) es una operación lineal que descompone una señal en componentes que aparecen en diferentes escalas (o resoluciones).Sea (t) una función de valores reales o complejos en L2(R).

La función  (t) se dice que es un wavelet si y sólo si su transformada de Fourier  satisface 

Page 13: Clase 4

Wavelets

La condición de admisibilidad implica que

para que el  cociente de  (1)  sea  indeterminado en =0. Esto  significa que los wavelets no deben tener componente continua, esto es:

Y por lo tanto La dilatación de y (t) por un factor de escala a > 0(t) es oscilatorio y su área es cero.Sea:

La dilatación de (t) por un factor de escala a > 0  

Page 14: Clase 4

Wavelets

Page 15: Clase 4

Wavelets

Este  tipo  de  transformación  satisface  la  conservación de energía,  y  la  señal original puede ser reconstruida desde la WT.Con el decrecimiento de la escala a, el soporte para el wavelet decrece y la WT se hace más sensible a los componentes de alta frecuencia.

Page 16: Clase 4

Filtrado de la deriva de la base line La deriva de  la base  line con  la respiración puede ser representada por una componente senoidal a la frecuencia respiratoria que se suma a la señal ECG. 

La  amplitud  y  la  frecuencia  de  la  componente  senoidal  será  variable.  Las variaciones pueden ser reproducidas por modulación de amplitud de la ECG mediante una componente senoidal sumada a la base line.

Estas componentes pueden  influir tanto en  la  interpretación visual del ECG, como en su análisis. Como  este  ruido  son  variaciones  de  baja  frecuencia  de  la  línea  de  base, podría pensarse que con un filtro pasa-alto se soluciona dicho problema. 

Pero  esto  podría  influir  en  el  diagnóstico  del  ECG,  ya  que  afectaría  a  las componentes de baja frecuencia, como es el caso del segmento ST. 

El contenido en frecuencias de estas perturbaciones suele rondar los 0.5 Hz. 

Page 17: Clase 4

Filtrado de la deriva de la base line Para este filtrado se utilizan las funciones wavedec y waverec. 

Page 18: Clase 4

Filtrado de la deriva de la base line El principio del filtrado es descomponer la señal hasta un cierto nivel,  y  luego  reconstruir  la  señal  para  remover  las  bajas frecuencias.

Para nuestro análisis se utiliza una descomposición hasta el nivel 8,  lo  que  corresponde  hasta  alcanzar  una  frecuencia  de aproximadamente 1.4 Hz. 

En el gráfico que sigue, queda explicito el árbol correspondiente a los niveles considerados. 

La frecuencia inicial es igual a la frecuencia de muestreo, que en nuestro caso es de 360 Hz.

Page 19: Clase 4

Filtrado de la deriva de la base line

Page 20: Clase 4

Filtrado de la deriva de la base line Este algoritmo se hizo usando las etapas de abajo: % Se obtiene la señal ECG de Physionetr = rdsamp('mitdb/106', 'maxt', ':60');r1=r(:,2);B=r1(1:2^13);plot(B)

Page 21: Clase 4

% Descomposición wavelet de nivel 8 mediante Daubechies 6[C,L] = wavedec(B,8,'db6');% Se eliminan los Coeficientes Aproximación del ultimo nivelfor i=1:L(1);C(i)=0; end% Se recompone la señalX = WAVEREC(C,L,'db6');% Se graficai=1:2^13;plot(i,B(i),i,X(i)+2)

Filtrado de la deriva de la base line

Page 22: Clase 4

Denoising de la señal ECG  La teoría wavelet ha probado su habilidad en descomponer una señal y ruido en el dominio wavelet. 

Recientemente,  investigadores  desde  la  comunidad  de  procesamiento biomédico  de  señal  han  aplicado  la  teoría  wavelet  en  compresión de señal, extracción de características y denoising. 

El procesamiento de señal basado en wavelet ofrece claras ventajas sobre  las técnicas  convencionales.  Estos  potenciales  inherentes  de  la  WT  han  sido desarrollados  en  gran  escala  para  compresión  y  recuperación  de  datos médicos.

La capacidad de compresión de datos convierte a los wavelets en muy útiles en el  ECG,  esto  es  debido  a  la  razón  que  estos  requieren  enorme  cantidad  de memoria para ser almacenados.

Por ejemplo, una señal ECG muestreada a 1 kHz requiere en promedio 100 MB por día.

Page 23: Clase 4

Denoising de la señal ECG

Para la aplicación de telemedicina en tiempo real se necesita la compresión de datos de la señal ECG para que sea exitosa y eficiente la transmisión de la misma en su tránsito a un centro de diagnóstico remoto.

En un latido ECG la parte más importantes es el breve complejo QRS.

El intervalo RR (tiempo entre sucesivos picos de la onda R) de la señal ECG es un parámetro patológico importante ya que provee la tasa cardíaca instantánea.

También, la información pertinente a la detección del pico R, el intervalo QT, la naturaleza de las ondas S y T son considerados como importantes parámetros de diagnóstico.

Actualmente. los expertos están usando la base de datos Physionet para evaluar el comportamiento de los algoritmos de procesamiento de señal.

Aunque la base de datos ayuda al usuario, en la práctica puede haber posibilidad de variaciones en los resultados debido al ruido sobrelapado con las señales de ECG.

Page 24: Clase 4

Denoising de la señal ECG

Por  lo  expuesto,  resulta  de  gran  importancia  la  atenuación “inteligente” de los ruidos contenidos en la señal.

Por  “inteligente”  se  quiere  indicar  que  se  elimine  el  ruido  en  alguna medida  que  no  ponga  en  peligro  las  características  destacadas  de  la señal que servirán, en última instancia, para determinar los parámetros adecuados para diagnósticos automatizados. 

Coeficientes Wavelet y umbralización La  energía  de  una  señal  ECG  está  principalmente  distribuida  en  las ondas P y T y el segmento QRS.

Cuando la señal se contamina de ruido térmico, éste se modela como un  ruido  randómico  (aleatorio)  cuya  energía  está  distribuida  en  una amplia gama de frecuencias.

Page 25: Clase 4

Denoising de la señal ECG

Matlab permite  realizar este filtrado en  forma eficiente mediante  la  función wdwn.

Wden: Supresión de Ruido automático 1-D usando wavelets.Sintaxis: [XD,CXD,LXD] = wden(X,TPTR,SORH,SCAL,N,'wname')

Descripción:wden  realiza un proceso de de-noising automático de una señal 1-D usando wavelets. Retorna  una  versión  de-noised  XD  de  la  señal  de  entrada  X,  obtenida  por umbralamiento de los coeficientes wavelet. 

El string TPTR contiene las reglas de selección de umbral: 'rigrsure' usa el principio de Riego Insesgado de Stein. 'heursure' es una variante heuristica de la primera opción. 'sqtwolog' utiliza el umbral universal [sqrt(2*log(n))]. 'minimaxi' para umbralamiento minimax. 

Page 26: Clase 4

Denoising de la señal ECG

SORH ('s' or 'h') define umbralamiento soft o hard SCAL define reescalamiento multiplicativo de umbral: 'one' sin reescalamiento. 'sln'  para  reescalamiento  usando  una  única  estimación  del  nivel  de  ruido basado en coeficientes de primer nivel.'mln'  para  reescalamiento  hecho  usando  estimación  nivel-dependiente  del nivel de ruido. La  descomposición  wavelet  es  realizada  al  nivel  N  y  'wname'  es  un  string conteniendo el nombre de wavelet ortogonal deseado.

El  modelo  subyacente  para  la  señal  ruidosa  es  básicamente  de  la  siguiente forma:

En el modelo más simple, se supone que e(n) es un ruido blanco Gaussiano N(0,1) con un nivel de ruido  determinado. 

Page 27: Clase 4

Denoising de la señal ECG

Finalmente para eliminar el ruido:

% Se obtiene la señal ECG de Physionetr = rdsamp('mitdb/106', 'maxt', ':60');r1=r(:,2);X=r1(1:2^10);xd = wden(X,'heursure','s','one',2,'db6');i=1:1000;plot(i,xd(i),i,X(i)+2)