Cómo filtrar el ruido en los datos de EEG

Soy estudiante de informática y estoy haciendo algo para un profesor de psicología.

Tenemos datos de EEG de un experimento en el que a una persona se le mostraron 140 imágenes durante 2 segundos cada una. Colocamos 64 electrodos en el cuero cabelludo por lo que tenemos 64 canales de datos continuos.

Queremos correlacionar cada nodo con todos los demás nodos para poder graficarlo usando un diagrama de cuerdas .

Dado que mi profesor está en el extranjero, tengo problemas con las instrucciones que me dio para manipular los datos para obtener las correlaciones.

"Una vez que pueda leer la matriz de canales, sugiero restar la señal media de cada uno, filtrando para eliminar el ruido por encima de 30 Hz".

Mi pregunta es ¿cómo eliminar el ruido por encima de 30 Hz? Por ejemplo, los datos de 1 electrodo durante 10 milisegundos se ven así (medidos en uV):

[ 31172.50, 31173.53, 31174.80, 31177.34, 31173.73,
  31172.85, 31172.75, 31172.70, 31174.95, 31178.95]

El script de python que estoy usando también da estos datos:

sampling rate: 1000.0 Hz
time: 0.0 s to 1883.15 s

¿Alguien puede señalarme en la dirección correcta qué pasos tomar para eliminar el ruido por encima de 30 Hz? Y también, ¿es esa una buena manera de calcular las correlaciones entre los electrodos?

Respuestas (2)

La eliminación del ruido se puede hacer de varias maneras:

Filtros convencionales : podría crear un filtro de paso bajo digital, como un filtro Chebyshev o Butterworth con una frecuencia de corte a 30 Hz ( función filt o filtfilt en Matlab).

Filtrado basado en FFT : los filtros FIR eliminan frecuencias en el dominio de la frecuencia. Entonces, primero se realiza una transformada de Fourier y luego las frecuencias> 30 Hz se pueden eliminar de la señal simplemente asignando '0' a los coeficientes FFT a> 30 Hz. Una FFT inversa luego devuelve su señal ( fftfilt en Matlab).

Transformaciones Wavelet : al ser un método relativamente complejo y que requiere mucha potencia de procesamiento, es posible que no sea el método que está buscando. Sin embargo, puede ser más eficiente para eliminar ciertos tipos de ruido o para extraer ciertas características de una señal ( funciones cwt o dwt en matlab).

No estoy familiarizado con Python. Encontrar los filtros correspondientes en Python debería ser bastante sencillo. Hay más procedimientos de filtrado, pero los anteriores deberían ayudarlo.

El análisis de correlación se puede realizar mediante varios métodos, incluida la correlación producto-momento de Pearson, la correlación de orden de rango de Spearman, la correlación de orden de rango de Kendall y la información mutua . Véase Bonita et al., 2014, DOI: 10.1007/s11571-013-9267-8 .

Restar la señal media de un canal en particular básicamente reduce el desplazamiento de la señal (la señal de CC), comparable a un filtro de paso alto con una frecuencia de corte muy baja.

Para calcular las correlaciones, no entiendo por qué tengo que "restar la señal media de cada una", ¿no puedo simplemente correlacionar los datos después de filtrar el ruido?
No sé qué significa la "señal media": ¿la media de diferentes EEG posteriores al estímulo? ¿O la media en diferentes canales? No hay suficiente información en su pregunta para responder a esto.
Sí, eso es todo lo que me dio el profesor, una vez que me ponga en contacto con él y me explique esa parte, volveré a publicarlo aquí. Probablemente la próxima semana. Gracias
No es raro encontrar la media de un canal en toda la grabación y luego restarla.
Finalmente pude hablar con el profesor, me dijo en mi caso: Como tenemos 64 electrodos, necesitamos obtener 64 señales medias. Luego, por ejemplo, restaré la señal media para el electrodo 1 de la señal en cada marca de tiempo en el electrodo 1. Y lo haré para cada uno. Publicaré los resultados finales de nuestro diagrama de acordes aquí cuando termine.
Los filtros de respuesta de impulso finito basados ​​en la transformada de Fourier son solo una clase de filtros FIR. Los filtros son complicados, distorsionan su señal y, a menudo, no se entienden bien. Sugeriría leer el capítulo de Steve Lucks sobre filtros antes de continuar. El filtro FIR más básico (que también es muy fácil de entender) para eliminar el ruido de línea de 50/60 Hz (si ese fuera su objetivo) sería un filtro furgón.

Los pasos comunes son: - Señal sin procesar (después del preamplificador y la amplificación) - Filtro de paso de banda - Filtro de rechazo de banda/muesca (el corte depende de dónde se encuentre) - Filtro antialiasing - Muestra/retención - MUX (si tiene múltiples canales) - ADC - Señal digital

como mencionó AliceD, puede usar filtros basados ​​​​en FFT y WT como filtro. Para WT, básicamente lo aplica a la señal (después de seleccionar una wavelet madre) y obtendrá una cantidad de coeficientes que representan diferentes componentes de frecuencia que luego se pueden restar de la señal sin procesar para eliminar los ruidos.

Además de estos filtros, también podría usar filtros espaciales, uno muy común es CSP (patrones espaciales comunes) u otros como MEC, CCA, AC, CAR, ICA, etc.