Вы находитесь на странице: 1из 27

Facultad de Ingeniera UNIVERSIDAD DE MENDOZA Pasaje Descote750 5500 Mendoza Repblica Argentina Telfono 061-201872

CURSO

EXPERIMENTACIN CON BASES DE DATOS DE SEALES CARDIOLGICAS. RECURSOS DE PHYSIONET.


DICTADO POR: DR. ING. JESS RUBN AZOR MONTOYA 2011

Filtrado del ruido en las seales ECG Las seales electrocardiogrficas (ECG) pueden estar corrompidas por varios tipos de ruidos. Ejemplos tpicos son:

- Interferencia de lnea de potencia - Ruido por contacto de electrodo - Artifacts (cualquier alteracin indeseada en datos introducidos durante su procesamiento digital) - Contraccin muscular. - Deriva de la lnea base -Ruido de instrumentacin generado por dispositivos electrnicos
Interferencia de lnea de potencia Consiste en una sinusoide superpuesta de 50-60Hz a la seal del ECG. Las caractersticas, que pueden necesitar ser variadas en un modelo de ruido de lnea de potencia, de la componente de 50-60Hz incluyen la amplitud y la frecuencia de la seal. La amplitud vara hasta el 50 % del pico de la amplitud del ECG

Filtrado de la seal de alimentacin de potencia Se va a utilizar el Filtro ptimo de Wiener para eliminar la seal de 60 Hz en la seal 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 funcin Matlab especfica rdsamp rr=rdsamp('mitdb/202','phys',true);

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

Filtrado de la seal de alimentacin 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 derivacin (segunda columna) y de ese vector, 213 = 8192 muestras. Z=rr(:,2); r=Z(1:2^13); plot(r)

Filtrado de la seal de alimentacin 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 nmero de muestra y en ordenadas los valores de tensin (en milivoltios) correspondientes a cada muestra. Tomando la Transformada de Fourier de esta seal 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))

Filtrado de la seal de alimentacin 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 nmero de muestra y en ordenadas los valores de tensin (en milivoltios) correspondientes a cada muestra. Tomando la Transformada de Fourier de esta seal 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))

Filtrado de la seal de alimentacin de potencia Para filtrar la seal, anulando la componente de la alimentacin de potencia (60 Hz), se plantea el siguiente combinador lineal.

donde x(i) es la seal de entrada, una cosenoide de 60 Hz muestreada a fs=300 Hz; mientras que d(i) es la seal deseada (ECG).
El filtro ajustar sus pesos (w0, w1) hasta lograr que la seal de error, e(i), constituya la seal 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 autocorrelacin de entrada, R, y el vector de correlacin cruzada entre la entrada y la salida, P.

Filtrado de la seal de alimentacin de potencia


d=r; % hace al ECG la seal deseada N=length(r); % define la entrada como una cosenoide de 60 Hz % muestreada a 360 Hz for i=1:N;x(i)=cos(2*pi*(i-1)*60/360);end % Calcula la matriz de autocorrelacion de entrada, R R(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 P P(1,1)=S/N; S=0; for i=2:N, S=S+d(i)*x(i-1); end P(1,2)=S/(N-1); % Halla el vector optimo de Weiner W=R^-1*P'; % Obtiene la seal ECG filtrada for i=2:N, e(i)=d(i)-W(1)*x(i)-W(2)*x(i-1); end % Grafica la fft para observar su correcto filtrado E=abs(fft(e)); i=1:length(E)/5; plot((i-1)*360/N,E(i))

Filtrado de la seal de alimentacin de potencia Observando la fft de la seal 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.

Wavelets La Transformada Wavelet (WT) es una operacin lineal que descompone una seal en componentes que aparecen en diferentes escalas (o resoluciones). Sea y (t) una funcin de valores reales o complejos en L2(R).

La funcin y (t) se dice que es un wavelet si y slo si su transformada de Fourier satisface

Wavelets

La condicin de admisibilidad implica que

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

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

La dilatacin de y (t) por un factor de escala a > 0

Wavelets

Wavelets Este tipo de transformacin satisface la conservacin de energa, y la seal 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 ms sensible a los componentes de alta frecuencia.

Filtrado de la deriva de la base line La deriva de la base line con la respiracin puede ser representada por una componente senoidal a la frecuencia respiratoria que se suma a la seal ECG.

La amplitud y la frecuencia de la componente senoidal ser variable. Las variaciones pueden ser reproducidas por modulacin de amplitud de la ECG mediante una componente senoidal sumada a la base line.
Estas componentes pueden influir tanto en la interpretacin visual del ECG, como en su anlisis. Como este ruido son variaciones de baja frecuencia de la lnea de base, podra pensarse que con un filtro pasa-alto se soluciona dicho problema. Pero esto podra influir en el diagnstico del ECG, ya que afectara 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.

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

Filtrado de la deriva de la base line

El principio del filtrado es descomponer la seal hasta un cierto nivel, y luego reconstruir la seal para remover las bajas frecuencias. Para nuestro anlisis se utiliza una descomposicin hasta el nivel 8, lo que corresponde hasta alcanzar una frecuencia de aproximadamente 1.4 Hz. En el grfico 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.

Filtrado de la deriva de la base line

Filtrado de la deriva de la base line


Este algoritmo se hizo usando las etapas de abajo: % Se obtiene la seal ECG de Physionet r = rdsamp('mitdb/106', 'maxt', ':60'); r1=r(:,2);B=r1(1:2^13); plot(B)

Filtrado de la deriva de la base line


% Descomposicin wavelet de nivel 8 mediante Daubechies 6 [C,L] = wavedec(B,8,'db6'); % Se eliminan los Coeficientes Aproximacin del ultimo nivel for i=1:L(1);C(i)=0; end % Se recompone la seal X = WAVEREC(C,L,'db6'); % Se grafica i=1:2^13;plot(i,B(i),i,X(i)+2)

Denoising de la seal ECG La teora wavelet ha probado su habilidad en descomponer una seal y ruido en el dominio wavelet. Recientemente, investigadores desde la comunidad de procesamiento biomdico de seal han aplicado la teora wavelet en compresin de seal, extraccin de caractersticas y denoising.

El procesamiento de seal basado en wavelet ofrece claras ventajas sobre las tcnicas convencionales. Estos potenciales inherentes de la WT han sido desarrollados en gran escala para compresin y recuperacin de datos mdicos.
La capacidad de compresin de datos convierte a los wavelets en muy tiles en el ECG, esto es debido a la razn que estos requieren enorme cantidad de memoria para ser almacenados. Por ejemplo, una seal ECG muestreada a 1 kHz requiere en promedio 100 MB por da.

Denoising de la seal ECG


Para la aplicacin de telemedicina en tiempo real se necesita la compresin de datos de la seal ECG para que sea exitosa y eficiente la transmisin de la misma en su trnsito a un centro de diagnstico remoto. En un latido ECG la parte ms importantes es el breve complejo QRS.

El intervalo RR (tiempo entre sucesivos picos de la onda R) de la seal ECG es un parmetro patolgico importante ya que provee la tasa cardaca instantnea.
Tambin, la informacin pertinente a la deteccin del pico R, el intervalo QT, la naturaleza de las ondas S y T son considerados como importantes parmetros de diagnstico. Actualmente. los expertos estn usando la base de datos Physionet para evaluar el comportamiento de los algoritmos de procesamiento de seal. Aunque la base de datos ayuda al usuario, en la prctica puede haber posibilidad de variaciones en los resultados debido al ruido sobrelapado con las seales de ECG.

Denoising de la seal ECG

Por lo expuesto, resulta de gran importancia la atenuacin inteligente de los ruidos contenidos en la seal.
Por inteligente se quiere indicar que se elimine el ruido en alguna medida que no ponga en peligro las caractersticas destacadas de la seal que servirn, en ltima instancia, para determinar los parmetros adecuados para diagnsticos automatizados. Coeficientes Wavelet y umbralizacin La energa de una seal ECG est principalmente distribuida en las ondas P y T y el segmento QRS.

Cuando la seal se contamina de ruido trmico, ste se modela como un ruido randmico (aleatorio) cuya energa est distribuida en una amplia gama de frecuencias.

Denoising de la seal ECG


Matlab permite realizar este filtrado en forma eficiente mediante la funcin wdwn.
Wden: Supresin de Ruido automtico 1-D usando wavelets. Sintaxis: [XD,CXD,LXD] = wden(X,TPTR,SORH,SCAL,N,'wname') Descripcin: wden realiza un proceso de de-noising automtico de una seal 1-D usando wavelets. Retorna una versin de-noised XD de la seal de entrada X, obtenida por umbralamiento de los coeficientes wavelet. El string TPTR contiene las reglas de seleccin de umbral: 'rigrsure' usa el principio de Riego Insesgado de Stein. 'heursure' es una variante heuristica de la primera opcin. 'sqtwolog' utiliza el umbral universal [sqrt(2*log(n))]. 'minimaxi' para umbralamiento minimax.

Denoising de la seal 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 estimacin del nivel de ruido basado en coeficientes de primer nivel. 'mln' para reescalamiento hecho usando estimacin nivel-dependiente del nivel de ruido. La descomposicin wavelet es realizada al nivel N y 'wname' es un string conteniendo el nombre de wavelet ortogonal deseado. El modelo subyacente para la seal ruidosa es bsicamente de la siguiente forma:

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

Denoising de la seal ECG


Finalmente para eliminar el ruido:
% Se obtiene la seal ECG de Physionet r = 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)

Вам также может понравиться