Actas del Congreso Nacional de Tecnología Aplicada a Ciencias de la Salud Vol. 1, 2018
El presente trabajo tiene como finalidad la implementación de un algoritmo basado en modelos matemáticos cuasi estáticos de medio conductor, que permitan realizar una identificación espacial del foco epiléptico a partir de lecturas electroencefalográficas. Dicha implementación es en un FPGA (por sus siglas en inglés, Field Programmable Gate Array), programado en lenguaje VHDL. Para validar el algoritmo se usaron datos creados sintéticamente a través de modelos matemáticos para generar una fuente con forma de función campana y datos electroencefalográficos semi-simulados, donde a la función campana se le hizo una superposición de un registro real.
Palabras clave: Problema Inverso, FPGA, EEG.
The purpose of this paper is to implement an algorithm based on quasi-static mathematical models of conductive medium, which allows to make a spatial identification of the epileptic focus from electroencephalographic records. This implementation is in a FPGA (Field Programmable Gate Array), programmed in VHDL. To validate the algorithm, data synthetically created through mathematical models was used to generate a source in the form of a Gaussian function and semi-simulated electroencephalographic data, where the Gaussian function was superposition on a real record.
Keywords: Inverse Problem, FPGA, EEG.
La epilepsia es una enfermedad que afecta alrededor de 50 millones de personas en todo el mundo, esto quiere decir que es una de las principales enfermedades de tipo neurológico [1]. Su principal característica es que el sistema nervioso central muestra una gran cantidad de actividad ya sea de forma total o sólo de alguna parte de éste. La epilepsia se clasifica como: epilepsia tónico-clónico generalizada, epilepsia de ausencias y epilepsia focal. La epilepsia tónico-clónica y la de ausencias son las que involucran una actividad anormal en todo o gran parte del cerebro. La epilepsia focal es en la que sólo se ve afectada una zona particular del cerebro y puede deberse a alguna lesión o factor congénito delimitado [2]. Los registros electroencefalográficos (EEG) muestran alteraciones sólo en los canales que están relacionados con la zona donde se produce la fuente epileptógena. Este es el tipo de epilepsia que se aborda en el trabajo.
El tratamiento de primera intención en pacientes con epilepsia focal es farmacológico, pero cuando los pacientes no responden adecuadamente se opta por realizar una cirugía para la resección de la zona dañada que produce los focos epilépticos. Una adecuada identificación permite que sólo sea resecada la parte afectada y así no dañar otras zonas del cerebro, evitando posibles secuelas de la cirugía [3].
Existen algoritmos y métodos matemáticos que buscan tener una localización de fuentes más precisa [4] obtenidas a partir de la solución del problema inverso electroencefalográfico (PIE) estudiado ampliamente [5]. Estos modelos y métodos emplean operaciones complejas que son difíciles de implementar en dispositivos digitales tales como los FPGA. El objetivo de esta investigación es realizar la implementación de un algoritmo matemático para la recuperación de fuentes en un dispositivo que sea portátil e independiente de una computadora. La finalidad es que el dispositivo sea capaz de leer los datos guardados en algún dispositivo de almacenamiento y poder dar una interpretación rápida en cualquier lugar, sin depender de software especializado ni de una computadora. Con eso en cuenta, se emplea el algoritmo propuesto en [6] el cual se puede realizar en un fpga con operaciones matemáticas simples.
Para modelar la actividad eléctrica que proviene del cerebro y cómo ésta se expresa en las lecturas del EEG en el cuero cabelludo, se emplea una interpretación de la estructura de la cabeza planteada en [7], donde se representa a la cabeza como esferas concéntricas, mostradas en la Fig. 1.
En el presente trabajo se aborda la representación bidimensional, es decir, se emplean dos círculos concéntricos para las estructuras de la cabeza. Las características que tienen estos círculos son: Cada círculo representa una región, denotada por Ωi. La conductividad eléctrica (σi) es homogénea en cada región y están delimitadas por una frontera Si. Así se tienen dos regiones: Ω1 representa el cerebro y Ω2 son las estructuras restantes de la cabeza. S1 es la corteza cerebral y S2 el cuero cabelludo. Y sus respectivas conductancias son σ1 y σ2.
Con esta representación se generan condiciones para el modelo matemático de la cabeza, analizadas en [7]. Usando este modelo, es posible recuperar la forma y localización de una fuente eléctrica o foco epiléptico. Se plantea que, en este caso, la fuente se ubica exclusivamente en la corteza cerebral.
Fig. 1. Representación de la cabeza como esferas concéntricas
Es así que de [8] se puede obtener un modelo del cual a partir de las mediciones del EEG se obtenga una correlación entre la fuente y la medición; en particular con la forma y ubicación de la fuente en la corteza cerebral. Este modelo representa la solución al PIE, cuya ecuación es [6]:
Con
donde son los coeficientes de la serie de Fourier que representa el EEG; R1,R2 son los radios de los círculos que representan el cerebro y la cabeza, respectivamente; σ1,σ2, denotan las conductividades de cada región; α, corresponde al factor de regularización para el algoritmo de recuperación de fuentes (ARF); y g(θ) representa la fuente en la corteza cerebral con respecto al ángulo u orientación de los electrodos, que en el caso bidimensional se encuentran en una semicircunferencia con una distribución homogénea entre ellos.
El ARF del PIE es el que sirve para la identificación espacial de la fuente a partir los valores de θ y la forma que muestre la gráfica de g, calculándose en un instante de tiempo, esto quiere decir que es un modelo cuasi-estático. Los valores obtenidos del cálculo permiten generar una gráfica de la actividad eléctrica de la corteza cerebral con respecto a la posición angular de los canales.
Como se ve en (1) y (2) el ARF presenta una estructura matemática simple lo que facilita ser implementado en VHDL. La implementación se detalla a continuación.
Para la lectura de datos en VHDL, éstos deben estar en sistema binario. Es por ello que, para realizar esta transformación, se ha diseñado una interfaz gráfica en MATLAB previa al procesamiento en VHDL. Esta consiste en seleccionar el registro EEG que se desea analizar. Esta señal tiene un registro de 14 canales monopolares y una frecuencia de muestreo de 128 Hz que provienen de la diadema Epoc+ de la marca Emotiv®. Después de cargar el archivo se transforma del formato EDF, que es el formato con el que es guardado por la diadema, a formato tipo .mat.
Una vez en este formato se selecciona un segmento de cuatro segundos, debido a que es la capacidad de almacenamiento que se diseñó en la implementación en el FPGA. Esto significa que se seleccionan 512 muestras para ser analizadas. Al decidir el segmento, los datos del registro seleccionados son pre-procesados. Es decir, se normalizan a tener un valor medio igual a cero y una varianza unitaria. Enseguida, y de manera automática, los valores de la señal normalizada son transformados a binario, utilizando una longitud de palabra de 24 bits. Los números son representados mediante punto fijo de 16 bits para la parte decimal, 7 bits para la parte entera y un bit de signo. El registro ya convertido a binario es guardado en un archivo con formato .txt.
En VHDL, los datos son leídos del archivo .txt, indicando la dirección en donde se encuentra éste en el programa creado. El primer paso del programa en VHDL consiste en almacenar en una memoria RAM (Random Access Memory) los datos provenientes del archivo de texto. Esta RAM cuenta con una capacidad de almacenar cuatro segundos de registro para cada uno de los catorce canales, es decir, 7168 palabras de 24 bits (14x512).
Posteriormente, para eliminar los artefactos musculares, las señales se pasan por un filtro FIR (Finite Impulse Response) pasa-bajas con una ventana Chebyshev, cuya frecuencia de corte es de 30 Hz y un orden de 50. Los coeficientes del filtro fueron calculados en MATLAB. Dichos coeficientes son usados en VHDL para realizar el filtrado. Cada canal pasa por el filtro de forma independiente y son almacenados en una segunda RAM con la misma capacidad de almacenamiento.
La señal filtrada es leída de la segunda RAM e ingresada al módulo que contiene el ARF del problema inverso. Cada muestra de los catorce canales es leída al mismo tiempo, con un total de 512 muestras por canal que pasan por el ARF.
Para proceder con el ARF, primero se calculan los primeros 30 coeficientes de la serie de Fourier de la señal EEG para cada instante de tiempo. Se ha demostrado que esta cantidad de coeficientes son suficientes para mantener un error ϵ<0.1, con respecto a señales sintéticas de prueba. Obtenidos los coeficientes de Fourier, éstos se ingresan al ARF en la ecuación (1) para estimar los valores de la fuente en la corteza cerebral. Esto genera 14 valores por muestra, que representan las mediciones que tendría la corteza cerebral si se estuviera realizando una electrocorticografía de 14 canales. Es decir, se estaría recuperando la fuente. El algoritmo se repite 512 veces, que es el número de muestras correspondiente a 4 segundos.
Los datos que se obtienen se guardan en un archivo de texto con el mismo formato en binario de punto fijo con el que se leyeron por parte de VHDL. Este archivo de texto con los datos de salida del algoritmo puede ser leído en MATLAB donde se hace la conversión de binario con punto fijo a decimal.
Todo el proceso en VHDL está diseñado para que se realice de forma automática y secuencial una vez que se le indica que comience con el procesamiento de los datos.
Para validar el funcionamiento del ARF se requiere de una señal EEG cuyo comportamiento y fuente se conozcan. En otras palabras, se necesita saber la forma de la fuente en la corteza cerebral, S1, que origina un registro EEG dado. Debido a que los eventos epilépticos en el EEG se observan como picos paroxísticos y de distribución espacial, la fuente que los genera debe mostrar ese mismo comportamiento. Por tal motivo se diseña una fuente epiléptica cuya forma corresponde a una función campana super-Gaussiana, debido a que esta función asemeja un evento paroxístico en los registros del EEG.
Se genera en MATLAB un registro EEG de 14 canales que sólo muestre la actividad de la fuente diseñada en corteza cerebral y con una duración de cuatro segundos. El registro se genera con una frecuencia de muestreo de 128 Hz. Estos canales se encuentran separados entre ellos equidistantemente en una semicircunferencia, con un ángulo de separación de 13.84°.
Éste registro EEG sintético se pre-procesa de la misma forma que se ha detallado: Se normaliza, se transforma a formato binario de punto fijo y se guarda en un archivo de texto. Los datos son leídos en VHDL e ingresados al ARF como se describió. Los resultados son guardados en un archivo de texto.
Estos datos son cargados en MATLAB donde se transforman a valores decimales y se grafican. La Fig. 2 muestra la gráfica de la fuente original y la Fig. 3 muestra la gráfica de la señal recuperada.
Se puede observar que en la señal recuperada (Fig. 3) la forma de la función campana se mantiene con una varianza (o ancho de la función campana) mayor a la original. Además, presenta un desplazamiento de 20 ms con respecto de la fuente original. Este desplazamiento obedece al paso de las señales del EEG por el filtro FIR.
La amplitud de la señal se ve ligeramente reducida debido a efectos como el redondeo de la señal por parte de la implementación, ya que como se mencionó, los números con valores decimales no se representan de la misma forma de cómo se hace en sistemas más robustos. Por esta razón se presenta un pequeño error por redondeo de los números.
Fig. 2. Gráfica de la fuente original. Se aprecia la forma de la función campana
Fig. 3. Gráfica de la fuente recuperada. Se aprecia un cambio en la forma de la función campana y un desplazamiento en el tiempo de 20 ms.
En este trabajo se presentó un algoritmo implementado en VHDL para la recuperación de fuentes corticales. Dicho algoritmo se validó con una fuente creada sintéticamente y con señales EEG sintéticas generadas a partir de esta fuente. Se ve así que se pudo recuperar la fuente con algunas variaciones y desplazamientos. Sin embargo, el algoritmo propuesto cumple con el objetivo de hacer una identificación de la forma y ubicación de fuentes a partir de registros EEG.
Como implementación futura, se pretende utilizar una interfaz gráfica para que el archivo de texto sea guardado en una memoria SD/microSD, la cual pueda ser leída con ayuda de un microcontrolador que enviaría a su vez los datos del registro al FPGA. Los datos procesados con el ARF se guardarían en un archivo de texto, empleando nuevamente el microcontrolador para este fin.