98
INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES ELECTROENCEFALOGRÁFICAS. ANGÉLICA REYES RUEDA INGENIERÍA ELECTRÓNICA FACULTAD DE INGENIERÍA PONTIFICIA UNIVERSIDAD JAVERIANA BOGOTÁ D.C. COLOMBIA JULIO 2013

INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA …

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS.

ANGÉLICA REYES RUEDA

INGENIERÍA ELECTRÓNICA

FACULTAD DE INGENIERÍA

PONTIFICIA UNIVERSIDAD JAVERIANA

BOGOTÁ D.C.

COLOMBIA

JULIO 2013

2

INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS.

T.G 1174.

AUTOR:

ANGÉLICA REYES RUEDA

Trabajo de grado presentado como requisito parcial para optar al título de

INGENIERO ELECTRÓNICO

DIRECTORES:

Ing. CESAR LEONARDO NIÑO BARRERA

INGENIERÍA ELECTRÓNICA

FACULTAD DE INGENIERÍA

PONTIFICIA UNIVERSIDAD JAVERIANA

BOGOTÁ D.C.

COLOMBIA

JULIO 2013

3

PONTIFICIA UNIVERSIDAD JAVERIANA

FACULTAD DE INGENIERÍA

CARRERA DE INGENIERÍA ELECTRÓNICA

RECTOR MAGNÍFICO: Joaquín Emilio Sánchez García, S.J.

DECANO ACADÉMICO: Ing. Jorge Luis Sánchez Tellez.

DECANO DEL MEDIO UNIVERSITARIO: P. Antonio José Nova, S.J.

DIRECTOR DEL DEPARTAMENTO DE ELECTRÓNICA: Ing. Francisco Viveros Moreno.

DIRECTOR DE CARRERA: Ing. Jairo Alberto Hurtado Londoño

DIRECTORES DEL PROYECTO DE GRADO: Ing. Cesar Leonardo Niño Barrera

4

NOTA DE ADVERTENCIA

Artículo 23 de la Resolución N° 13 de Julio de 1946

“La Universidad no se hace responsable por los conceptos emitidos por sus alumnos en sus trabajos de

tesis. Solo velará por qué no se publique nada contrario al dogma y a la moral católica y por que las tesis

no contengan ataques personales contra persona alguna, antes bien se vea en ellas el anhelo de buscar la

verdad y la justicia”

5

A Gilberto, María de los Ángeles, Andrés Felipe y William

por su incondicional apoyo perfectamente mantenido a través del tiempo.

Todo este trabajo ha sido posible gracias a ustedes.

6

AGRADECIMIENTOS

Quiero agradecer sinceramente a todas aquellas personas que compartieron sus conocimientos y tiempo

conmigo para hacer posible la conclusión del presente trabajo. Especialmente agradezco a mi director el

Ing. Cesar Leonardo Niño Barrera por su asesoría siempre dispuesta aún en la distancia.

Gracias a María de los Ángeles, Gilberto, Andrés Felipe, William, Sergio, Patricia, Mario, Alexandra y

Paola Andrea por su valiosa colaboración y apoyo al ser partícipes de este proyecto.

A mis amigos y docentes de la Pontificia Universidad Javeriana y Universidad Pontificia Bolivariana por

los momentos compartidos y enseñanzas.

Gracias a todos ellos.

7

TABLA DE CONTENIDO

1. INTRODUCCIÓN ......................................................................................................................... 12

2. MARCO TEORICO ....................................................................................................................... 13

2.1 ELECTROENCEFALOGRAFIA (EEG) ................................................................................ 13

2.2 TÉCNICAS DE CAPTURA DE SEÑALES NEUROELÉCTRICAS ...................................... 13

2.3 SISTEMA INTERNACIONAL 10 – 20 .................................................................................. 14

2.4 REGISTRO MONOPOLAR Y BIPOLAR DE EEG ............................................................... 15

2.5 ONDAS ENCEFALOGRAFICAS .......................................................................................... 16

2.6 NEUROFISIOLOGÍA DE TAREAS MOTORAS ................................................................... 17

2.6.1 Corteza Motora ............................................................................................................... 17

2.6.2 Desincronización/Sincronización Relacionada a Eventos (ERD/ERS) ............................. 18

2.7 INTERFAZ CEREBRO - COMPUTADOR (BCI) .................................................................. 19

2.7.1 Actividades electrofisiológicas cerebral ........................................................................... 19

2.7.2 Estructura BCI ................................................................................................................ 20

2.8 EMOTIVSYSTEMS ............................................................................................................... 22

2.8.1 Headset ........................................................................................................................... 22

2.8.2 Research Edition (SDK) .................................................................................................. 22

3. ESPECIFICACIONES ................................................................................................................... 24

3.1 CAPTURA DE SEÑALES ENCEFALOGRÁFICAS ............................................................. 24

3.2 INTERFACE CEREBRO COMPUTADOR (BCI).................................................................. 25

3.3 PRUEBAS DE DESEMPEÑO ................................................................................................ 25

3.4 HAWARE Y SOFTWARE ..................................................................................................... 25

3.5 BANCO DE SEÑALES EEG ................................................................................................. 26

4. DESARROLLO ............................................................................................................................. 27

4.1 CAPTURA DE SEÑALES EEG ............................................................................................. 27

4.1.1 Formulación de experimento (paradigma) ....................................................................... 27

4.1.2 Diseño de interfaz gráfica................................................................................................ 28

4.1.3 Captura de señales EEG .................................................................................................. 30

4.2 PROCESAMIENTO DE SEÑALES PARA EL BCI ............................................................... 32

4.2.1 Selección de Canales ....................................................................................................... 32

4.2.2 Eliminación de DC – Offset ............................................................................................ 32

4.2.3 Ventana Hanning ............................................................................................................ 33

4.2.4 Filtrado ........................................................................................................................... 34

4.3 Filtros Espaciales .................................................................................................................... 35

8

4.4 EXTRACCIÓN DE CARACTERÍSTICAS ............................................................................ 38

4.4.1 Densidad del Espectro de Potencia (Power Spectral Density – PSD) ................................ 38

4.4.2 Valor de Bloqueo de Fase (Phase-Locking Value) ........................................................... 41

4.5 CLASIFICACIÓN DE CARACTERISTICAS ........................................................................ 43

4.5.1 Máquinas de Soporte Vectorial (SVM) ............................................................................ 44

5. ANALISIS DE RESULTADOS ..................................................................................................... 50

5.1 CAPTURA DE SEÑALES ..................................................................................................... 50

5.2 EXTRACCIÓN Y CLASIFICACIÓN PSD - SVM ................................................................. 50

5.3 EXTRACCIÓN Y CLASIFICACIÓN PLV – SVM ................................................................ 52

6. CONCLUSIONES ......................................................................................................................... 54

7. BIBILIOGRAFIA .......................................................................................................................... 55

8. ANEXOS ....................................................................................................................................... 58

9

LISTADO DE FIGURAS

Figura 1. Capas que cubren el cerebro [4]. .............................................................................................. 13

Figura 2. Sistema Internacional 10 – 20 [5]. ........................................................................................... 14

Figura 3. Relación de distancia del Sistema Internacional 10 – 20 [5]. (a) Vista de Frente. (b) Vista de

Perfil...................................................................................................................................................... 14

Figura 4. Vista lateral de hemisferio cerebral indicando su división en lóbulos [4]. ................................. 15

Figura 5. Montaje Registro Monopolar [5] ............................................................................................. 15

Figura 6. Montaje Registro Bipolar. [5] .................................................................................................. 16

Figura 7. Divisiones de la corteza motora. [7]......................................................................................... 17

Figura 8. Representación del homúnculo motor sobre la corteza motora. [7] ........................................... 17

Figura 9. ERD / ERS de un sujeto el cual mueve lenta (izquierda) y rápidamente (derecha) un dedo. Se

muestran tres bandas de frecuencia (10 - 12, 14 - 18 y 36 - 40 Hz) [9]. ................................................... 18

Figura 10. Corteza Cerebral Fuente: Editorial Médica Panamericana ...................................................... 19

Figura 11. Estructura Interface Cerebro Computador (BCI) .................................................................... 20

Figura 12. Señales obtenidas al adquirir señales de actividad cerebral [13]. ............................................ 20

Figura 13. Headset EMOTIV EPOC. ...................................................................................................... 22

Figura 14. Etapas de desarrollo .............................................................................................................. 24

Figura 15. Sensores EMOTIV EPOC según Sistema Internacional 10-20 [17]. ....................................... 24

Figura 16. Diagrama de bloques del BCI diseñado. ................................................................................ 25

Figura 17. Esquema de tiempo de una prueba. ........................................................................................ 27

Figura 18. Estimulo visual. (a) Cruz, inicio de la tarea. (b) Caso 1, acción motora derecha. (c) Caso 2,

acción motora izquierda. ........................................................................................................................ 28

Figura 19. GUI - Ingreso de datos para la captura de señales. ................................................................. 28

Figura 20. Archivo .txt generado el cual indica la secuencia para el Sujeto 4 – Sesión 2. ........................ 29

Figura 21. Diagrama de flujo de la lógica implementada para la captura de las señales EEG. .................. 29

Figura 22. EmotivTestBench - Sujeto 04 ................................................................................................ 30

Figura 23. Realización del experimento de captura de datos. .................................................................. 31

Figura 24. Señales de los 14 canales originales – AM: Derecha. ............................................................. 32

Figura 25. Señales de los 14 canales sin DC. .......................................................................................... 33

Figura 26. Diagrama de tiempo y ventana hanning ................................................................................. 33

Figura 27. (a) Señal EEG sin offset (b) Ventana Hanning (c) Señal Ventaneada ..................................... 34

Figura 28. Filtro Equiripple (a) Magnitud (b) Fase ................................................................................. 34

Figura 29. a) Espectro de Frecuencia Señal Original b) Espectro de Frecuencia Señal Filtrada ................ 35

Figura 30. Filtros Espaciales [26]. (a) Filtro Bipolar, (b) Filtro Laplaciano, (c) Referencia Media Comun

.............................................................................................................................................................. 36

Figura 31. Aplicación de filtro CAR. (a) Señal Original (Filtrada) (b) Señal filtrada mediante CAR ..... 37

Figura 32. Señal FC5 (Azul – Señal original Filtrada, Roja – Señal Filtrada por CAR) .......................... 37

Figura 33. Diagrama de Flujo - Algoritmo PSD ...................................................................................... 39

Figura 34. Matriz PSD - AM: Derecha ................................................................................................... 40

Figura 35. Matriz PSD - AM: Izquierda ................................................................................................. 40

Figura 36. Diagrama de Flujo - Algoritmo PLV ..................................................................................... 42

Figura 37. a) Par de electrodos AF3 y AF4 b) PLV – Pareja de Electrodos AF3 – AF4. Sujeto 4 – Sesión 3

.............................................................................................................................................................. 43

Figura 38. Búsqueda por Red - Escala Grande (Característica: PLV - ID: 04 – Sesión de Ensayo: S3) ... 46

Figura 39. Búsqueda por Red - Escala Mediana (Característica: PLV - ID: 04 – Sesión de Ensayo: S3) . 47

10

Figura 40. Búsqueda por Red - Escala Pequeña (Característica: PLV - ID: 04 – Sesión de Ensayo: S3).. 48

Figura 41.Señal EEG correspondiente a la tarea motora Derecha, Sujeto 4 – Sesión 3 – Muestra 4. (a)

Señal Original, (b) Señal sin DC, (c) Señal Pre-Procesada ...................................................................... 50

Figura 42. PSD estimado mediante Welch en la banda de frecuencia de interés. (a) PSD – AM: Derecha,

(b) PSD – AM: Izquierda. ...................................................................................................................... 51

Figura 43. Precisión promedio de clasificación para todos los sujetos. .................................................... 53

Figura 44. Ficha Médica ........................................................................................................................ 60

Figura 45. Fichero *.csv generado .......................................................................................................... 61

Figura 46. Kit Emotiv - Research SDK .................................................................................................. 63

Figura 47. Solución salina multipropósitos usada. .................................................................................. 64

Figura 48. Hidratación con solución salina en electrodos y almohadilla del estuche [41]. ........................ 64

Figura 49. Instalación electrodo en headset. ........................................................................................... 65

Figura 50. Pasos para colocar adecuadamente el headset EMOTIV......................................................... 65

Figura 51. Verificación del contacto de cada uno de los electrodos por medio de TestBench................... 66

Figura 52. Instalación LIBSVM - Paso 3 ................................................................................................ 67

Figura 53. Instalación LIBSVM - Paso 4 ................................................................................................ 67

Figura 54. Instalación LIBSVM - Paso 5 ................................................................................................ 68

Figura 55. Instalación LIBSVM - Paso 6 ................................................................................................ 68

Figura 56. Instalación LIBSVM - Paso 7 ................................................................................................ 68

Figura 57. Instalación LIBSVM - Paso 8 ................................................................................................ 69

Figura 58. Instalación LIBSVM - Paso 9 ................................................................................................ 69

Figura 59. Instalación LIBSVM - Paso 11 .............................................................................................. 70

Figura 60. Validación Cruzada de 4 iteraciones [15]. .............................................................................. 72

11

LISTADO DE TABLAS

Tabla 1. Características EEG y ECoG. [4, 5] .......................................................................................... 13

Tabla 2. Características Ondas EEG [5,6] ............................................................................................... 16

Tabla 3. Artificios comunes [13]. ........................................................................................................... 21

Tabla 4. Distribución de sesiones para la captura de señales encefalográficas. ........................................ 25

Tabla 5. Especificaciones Laptop. .......................................................................................................... 26

Tabla 6. Especificaciones Desktop. ........................................................................................................ 26

Tabla 7. Tiempo aproximado de experimento por sujeto. ........................................................................ 31

Tabla 8. Sets de Entrenamiento y Ensayo mediante Hold-Out ................................................................. 44

Tabla 9. Precisión PSD - Kernel Lineal .................................................................................................. 45

Tabla 10. Precisión PLV - Kernel LinealKernel RBF ............................................................................. 45

Tabla 11. Precisión PSD - Kernel RBF ................................................................................................... 48

Tabla 12. Precisión PLV - Kernel RBF .................................................................................................. 49

Tabla 13. Desempeño promedio PSD + SVM ......................................................................................... 51

Tabla 14. Desempeño promedio PLV + SVM ........................................................................................ 52

Tabla 15. Nomenclatura archivos *.csv. ................................................................................................. 62

12

1. INTRODUCCIÓN

La población mundial supera los seiscientos mil millones de personas, de ellas el 10% (600 millones)

presenta una u otra forma de discapacidad, y más de dos terceras partes viven en países en vía de

desarrollo [1]. En América Latina existen aproximadamente 85 millones de personas con discapacidad y

por lo menos el 50% de esta población tienen edad para trabajar [2].

Según el Censo 2005 realizado por el DANE se estableció que el 6,4% de la población Colombiana tiene

por lo menos una discapacidad; siendo como causas principales enfermedades adquiridas, lesiones

causadas por accidentes de tráfico y/o laborales como por la violencia [2]. Es de destacar que en ese 6,4%

de población (equivalente a 2.632.255 personas) el 29,3% presenta limitaciones permanentes para caminar

o moverse [3], requiriendo en muchos casos la ayuda de un tercero para poder desplazarse.

Las interfaces Cerebro-Computador (Brain-Computer Interface, BCI) permiten la conexión del sujeto y el

computador mediante la captación de señales neuroeléctricas sin necesidad de existir actividad muscular

por parte del sujeto. Debido a esto se puede implementar una BCI como sistema de control en tiempo real

entre el sujeto que presenta discapacidad de movilidad y el mundo exterior [4].

La finalidad planteada en este trabajo fue el desarrollo de una interfaz Cerebro-Computador basado en

clasificación de señales encefalogáficas cuando un sujeto imagina un movimiento, en este caso derecha o

izquierda. Para lograr la clasificación se realizó un estudio exhaustivo sobre los aspectos neurofisiológicos

de las tareas motoras y como estas pueden ser identificadas a través de señales obtenidas mediante

electroencefalografía.

13

2. MARCO TEORICO

2.1 ELECTROENCEFALOGRAFIA (EEG)

La electroencefalografía (EEG) es el registro de la actividad bioeléctrica cerebral obtenido mediante

electrodos situados en el cuero cabelludo o corteza cerebral (espacio subdural, Figura 1) [4].

Figura 1. Capas que cubren el cerebro [4].

2.2 TÉCNICAS DE CAPTURA DE SEÑALES NEUROELÉCTRICAS

Existen diferentes técnicas para la captura de las señales neuroeléctricas, sin embargo el

electroencefalograma (EEG) y elelectrocorticograma (ECoG) son los más usados (Tabla 1).

Técnica Tipo de

Electrodos1

Ventajas Desventajas

Electroencefalograma

(EEG)

Superficie o

Basales No invasiva

Resolución limitada

Rango de Frecuencia limitado

Sensible a ruido (ej. Señales

electrooculográficas (EoG) )

Electrocorticograma

(ECoG) Quirúrgicos

Resolución y rango de

frecuencia mayor que

el EEG.

Requiere procedimiento quirúrgico

para la implantación de los

electrodos (Invasivo).

Manipulación exclusivamente por

un neurocirujano.

Tabla 1. Características EEG y ECoG. [4, 5]

1 Electrodos superficiales: Se aplican sobre el cuero cabelludo. Electrodos basales: Se aplican en la base del cráneo sin necesidad

de procedimiento quirúrgico. Electrodos quirúrgicos: para su aplicación es precisa la cirugía y pueden ser corticales o

intracerebrales. [5]

14

2.3 SISTEMA INTERNACIONAL 10 – 20

Existen múltiples sistemas de posicionamiento de electrodos superficiales, sin embargo el sistema

internacional 10 – 20 (Figura 2) es el más utilizado hoy en día. Este método se desarrolló con el fin de

garantizar un estándar y repetitividad de manera tal que los estudios realizados a un sujeto puedan ser

comparados en el transcurso del tiempo, igualmente permite comparar los resultados entre distintos

individuos [6].

Figura 2. Sistema Internacional 10 – 20 [5].

Este sistema se basa en la relación de distancia entre dos electrodos adyacentes que es el 10% de la

longitud del cráneo desde el nasión hasta el iniónó del 20% de la distancia entre ambos puntos pasando

por el vertex (Figura 3).

Figura 3. Relación de distancia del Sistema Internacional 10 – 20 [5]. (a) Vista de Frente. (b) Vista de Perfil.

15

Es importante resaltar que la letra empleada para el nombre de cada uno de los puntos de contacto

identifica al lóbulo (Figura 4) y el número a la ubicación dentro del hemisferio. Es decir las letras

corresponderían de la siguiente forma: F: Frontal, T: Temporal, P: Parietal y O: Occipital; la letra C esta

se implementa para identificar la línea horizontal central. En el caso de los números, los pares

corresponden con electrodos en el hemisferio derecho y los impares con los del izquierdo; los subíndices z

se identifican la línea vertical central de electrodos.

Figura 4. Vista lateral de hemisferio cerebral indicando su división en lóbulos [4].

2.4 REGISTRO MONOPOLAR Y BIPOLAR DE EEG

Para realizar la captura o registro de las ondas EEG múltiples electrodos son ubicados en el cuero

cabelludo, sin embargo para realizar este registro es necesario disponer de mínimo dos terminales

(electrodos). Existen dos tipos de montajes para realizar este registro, el monopolar y el bipolar.

El Registro Monopolar (Figura 5) se toma la señal independiente de cada uno de los electrodos, estos

electrodos son denominados activos o de registro. Existe un segundo electrodo llamado de referencia el

cual teóricamente debe tener un voltaje igual a 0 V (GND). Para garantizar un valor aproximado a cero el

electrodo de referencia generalmente se ubica en el lóbulo de la oreja, mentón o mastoides2[5]. De esta

forma se determina la diferencia de tensión entre el electrodo activo y el electrodo de referencia.

Figura 5. Montaje Registro Monopolar [5]

2Porción posterior del hueso temporal detrás de la oreja.

16

El Registro Bipolar (Figura 6) a diferencia del monopolar se toma parejas de electrodos y se registra la

diferencia de tensión entre ellos [5].

Figura 6. Montaje Registro Bipolar. [5]

2.5 ONDAS ENCEFALOGRAFICAS

Las señales EEG se caracterizan por tener amplitudes desde los 10mV (registros sobre la corteza cerebral)

a 100μV (registros sobre el cuero cabelludo), igualmente tienen forma irregular y son aperiódicas y se

encuentran concentradas en el espectro de 0 a 100 Hz [5,6]. Debido a la irregularidad de estas se han

clasificado en ritmos u ondas dependiendo de la banda de frecuencia que se encuentre (Tabla 2).

Tipo Frecuencia

(Hz) Localización Características

Alfa (α) 8 – 13 Occipital y Frontal Amplitud > 20µV

Asociadas a relajación y actividad mental leve.

Beta (β) 12 – 30 Parietal y Frontal

Amplitud entre 5 – 30 µV

Asociadas a estados de alerta, concentración y

resolución de problemas. En casos de extrema

concentración puede alcanzar hasta los 50 Hz.

Gamma(γ) > 30 Asociadas a procesos de comunicación y realización de

actividades mentales complejas.

Delta (δ) 0.5 – 4

Amplitud variable.

Asociadas a sueño profundo y estados de meditación.

Tetha (θ) 4 – 7 Parietal y

Temporal.

Amplitud >20µV

Asociadas estrés y frustración

Mu(μ) 8 - 13

Zona

Sensoriomotora

(unión lóbulo

parietal y frontal)

Manifiestan atenuación durante el movimiento o

intento de movimiento de extremidades. A diferencia

de las ondas alfa (que se encuentran en la misma banda

de frecuencia) las ondas mu son espontaneas.

Tabla 2. Características Ondas EEG [5,6]

17

2.6 NEUROFISIOLOGÍA DE TAREAS MOTORAS

2.6.1 Corteza Motora

La corteza motora cerebral es la encargada de realizar la planificación, control y ejecución de la mayoría

de movimientos voluntarios.

Figura 7. Divisiones de la corteza motora. [7]

La corteza motora es dividida en cuatro partes principales (Figura 7) las cuales son:

2.6.1.1 Corteza motora primaria (M1)

La corteza motora primaria (M1) se encuentra ubicada en el lóbulo frontal a lo largo de una protuberancia

llamada circunvolución precentral (Figura 8), y es la responsable de la generación de los impulsos

neuronales que controlan la ejecución del movimiento.

Wilder Penfield, neurocirujano canadiense, realizó una serie de experimentos en los años 50 a múltiples

pacientes que iban a ser sometidos a neurocirugía [8]. El experimento consistía en estimular

eléctricamente diversas partes de la corteza cerebral (M1 y PMA) logrando movimientos involuntarios en

diversas partes del cuerpo. Con los datos obtenidos resumió su descubrimiento en una representación

gráfica la cual le dio el nombre de "homúnculo" (Figura 8).

Figura 8. Representación del homúnculo motor sobre la corteza motora. [7]

18

2.6.1.2 Corteza Pre-motora (PMA)

La corteza pre-motora (PMA), se encuentra ubicada 1 a 3 cm en frente de la corteza motora primaria

(M1). La PMA es la encargada de guiar y controlar los movimientos de los músculos proximales

(hombros, cuello, pelvis) y del tronco corporal.

2.6.1.3 Área motora suplementaria (SMA)

El área motora suplementaria (SMA) se encuentra por encima del área pre-motora, y delante de la corteza

motora primaria (M1). Esta área es la encargada de la planificación y coordinación de movimientos

complejos. El área motora suplementaria y las regiones promotoras tanto envían información a la corteza

motora primaria, así como a las regiones motoras del tronco cerebral.

2.6.1.4 Corteza Parietal Posterior

La corteza parietal posterior es la encargada de transformar la información visual en instrucciones

motoras.

2.6.2 Desincronización/Sincronización Relacionada a Eventos (ERD/ERS)

Cuando una persona realiza un movimiento (o imaginación de la tarea motora) se induce una serie de

fenómenos en la dinámica de la actividad mental (Figura 9), estos fenómenos son conocidos como

desincronización / sincronización relacionada a eventos (ERD / ERS).

Figura 9. ERD / ERS de un sujeto el cual mueve lenta (izquierda) y rápidamente (derecha) un dedo. Se muestran tres bandas de frecuencia (10 - 12, 14 - 18 y 36 - 40 Hz) [9].

La ERD / ERS se compone de diversos eventos separados, producidos en diferentes bandas de frecuencia

y duración variable. Sin embargo la característica más dominante [9] es una desincronización en la banda

alfa superior (10 a 12 Hz, la cual corresponde a la banda sensoriomotora (también conocida como banda

mu). Es importante resaltar que al imaginar la tarea motora, el fenómeno ERD / ERD también sucede, lo

19

cual es importante en el contexto de una interface cerebro computadora (BCI) ya que como su definición

lo indica, el sistema no depende de movimiento de los músculos.

2.7 INTERFAZ CEREBRO - COMPUTADOR (BCI)

Una interfaz cerebro – computador (BCI, Brain-Computer Interface) es un sistema que permite la

conexión entre un sujeto a partir de la actividad eléctrica cerebral (sin necesitad de actividad motora) y un

computador. Este sistema detecta la presencia de patrones específicos en la actividad cerebral y mediante

algoritmos de clasificación traduce estos patrones en comandos de control [10].

2.7.1 Actividades electrofisiológicas cerebral

Un sistema BCI se define como un sistema que adquiere una señal electrofisiológicas cerebral la cual es

analizada y procesada posteriormente. Es de resaltar que un BCI no depende de las vías de salida normal

de los nervios y músculos. En la actualidad se destacan dos tipos de BCI basados en ondas

electroencefalográficas (EEG – electrodos de contacto, no invasivo): Potenciales Visuales Evocados

(Visual evoked potentials, VEPs) y Actividad Sensoriomotora (Sensorimotor Rhythm, SMR) [10].

2.7.1.1 Potenciales visuales evocados (VEPs)

Los potenciales evocados miden la actividad eléctrica del cerebro a estímulos externos como lo pueden

ser visuales, auditivos o táctiles. Usualmente se implementan estímulos visuales como luces parpadeando

a determinada frecuencia.

Figura 10. Corteza Cerebral Fuente: Editorial Médica Panamericana

Si un estímulo visual se presenta repetidamente a una velocidad de 5-6 Hz o mayor, se suele apreciar una

respuesta oscilatoria continua en el lóbulo occipital donde se encuentra la corteza visual (figura 10). Esta

respuesta se denomina estado estacionario de los potenciales visuales evocados (Steady-state visual

evoked potentials – SSVEP) [10,11].

2.7.1.2 Actividad sensoriomotora (SMR)

Las ondas o ritmos beta (12 – 30 Hz) y mu (8 – 13 Hz) se originan en la corteza sensoriomotora (Figura

10) y están fuertemente relacionadas con el sistema motor. Cuando se realiza un movimiento se puede

20

apreciar en las señales electroencefalografías que la amplitud de estos ritmos disminuye o se dé sincroniza

(ERD / ERS), es de resaltar que este fenómeno ocurre tanto al realizar o imaginar una acción motora. [4,

10]

Es importante resaltar que los sistemas BCI no leen la mente del sujeto; es necesario que este controle

conscientemente su actividad cerebral, ya sea por estímulos visuales evocados (VEPs) o imaginando que

realizan una tarea motora, por ejemplo el mover el brazo izquierdo.

2.7.2 Estructura BCI

Un BCI, independientemente de su finalidad o métodos de grabación, se compone de cuatro elementos

esenciales [12] como se muestra en la Figura 11.

Figura 11. Estructura Interface Cerebro Computador (BCI)

2.7.2.1 Adquisición de señales y Artefactos

La primera etapa de un BCI corresponde a la adquisición de señales eléctricas del cerebro, esta

adquisición se realiza mediante ECoG y EEG. Sin embargo cualquiera de estos dos métodos registra no

solamente actividad del cerebro sino otras actividades no deseadas (Figura 12) que deterioran la señal de

la actividad cerebral (ruido o artefacto), de origen múltiple como lo indica la Tabla 3[13].

Figura 12. Señales obtenidas al adquirir señales de actividad cerebral [13].

APLICACIÓN DE

CONTROL

RETROALIMENTACIÓN

Brain Computer Interface

SUJETO

T

ADQUISICIÓN DE

SEÑALES

EXTRACCIÓN DE

CARACTERÍSTICAS

CLASIFICACIÓN DE

CARACTERÍSTICAS

21

Artificios No Fisiológicos Artificio Fisiológico

50 / 60 ciclos

Artificio de electrodo (resistencia)

Descarga electroestática (movimientos)

Descarga capacitivas (acoplamiento)

Ruido electrónico interno(electrones-

amplificador)

Artificios AD/DA (digitales)

Movimiento de ojos (parpadeo)

Cardiaco

Pulso

Respiración

Tensión

Tabla 3. Artificios comunes [13].

En los sistemas BCI se emplea una etapa previa a la extracción de características conocida como Etapa de

Pre-Procesamiento [10]. Esta etapa tiene como objetivo el aumentar la relación señal-a-ruido (SNR), es

decir adecua la señal para su posterior análisis.

Las técnicas más empleadas para realizar un pre-procesamiento son Patrones Espaciales Comunes

(Common Spatial Patterns – CSP) y Métodos de Referencia, como lo son Promedio de Referencia Común

(Common Average Reference – CAR) y Laplaciano Superficial (SurfaceLaplacian – SL).

2.7.2.2 Extracción de características

El proceso más importante en un BCI corresponde a la extracción de las características de las señales

EEG. Este proceso consiste en procesan mediante diferentes métodos matemáticos las señales obtenidas

para así extraer características representativas que permiten la posterior clasificación de la señal.

El método a emplear para la extracción de características depende de las señales obtenidas, ya que las

características obtenidas pueden basarse en dominio del tiempo (BCI basado en VEPs) o en el dominio de

la frecuencia (BCI basado en SMR). Algunos métodos de extracción en el dominio del tiempo son:

filtrado, transformada de Wavelet y modelos paramétricos auto regresivos (AR). En el caso de BCI

basados en SMR se implementan métodos en el dominio de frecuencia, entre ellos la estimación de la

banda de potencia usando el método de Welch, Wavelet y modelos auto regresivos (AR).

2.7.2.3 Clasificación de características

Posterior a la extracción de características se requiere agruparlas con el fin de luego ser asociadas al

paradigma (ej. Pie izquierdo vs. Mano Derecha). Gran parte de los métodos de clasificación son basados

en algoritmos de aprendizaje [10] como lo son:

Máquinas de vectores de soporte (Support Vector Machine – SVM)

Análisis de discriminante lineal (Linear DiscriminantAnalysis – LDA)

Discriminante de Fisher (Fisher’sDiscriminantAnalysis – FDA)

Redesneuronales (Neural networks – NN)

22

2.7.2.4 Aplicación de control

Posterior al diseño del BCI se encuentra esta etapa la cual cumple con el objetivo de crear la interacción

con el usuario con algún otro dispositivo. Esta etapa implementa el análisis realizado previamente por el

BCI para poder realizar una acción de control y de esta forma permitir la interacción del usuario con algún

dispositivo, por ejemplo el manejo de un carro, encender y apagar luces, prótesis robóticas, entre otras.

2.8 EMOTIVSYSTEMS

EMOTIV Systems es una empresa de neuroingeniería formalizada en el año 2003, la cual desarrollo una

revolucionaria interfaz cerebro – computador (BCI) para el consumo popular [16]. Esta interfaz

desarrollada es conocida como EMOTIV EPOC, la cual consta de un dispositivo inalámbrico (headset)

que por medio de múltiples sensores captura las señales eléctricas producidas por el cerebro para detectar

expresiones faciales, movimiento, sentimientos y pensamientos. [17]

2.8.1 Headset

El headset EMOTIV EPOC (Figura 13) está compuesto principalmente por 16 electrodos de contacto con

almohadillas (esta debe ser humedecida con una solución salina para garantizar una buena conducción) y

enchapados en oro [17].

Figura 13. Headset EMOTIV EPOC.

Estos electrodos se encuentran sujetos a dos brazos de plástico que garantizan la correcta ubicación según

el sistema internacional 10 – 20 (figura 2); es de resaltar que 14 de los 16 sensores capturan las señales

EEG (los 2 restantes son usados como referencia CMS/DRL). La implementación de dos electrodos de

referencia indica que el tipo de registro utilizado por este headset corresponde a un registro monopolar.

Estos electrodos operan a una frecuencia de muestreo de 128sps y poseen un ancho de banda de 0.2Hz a

45Hz [17].

Adicional a los electrodos posee un giroscopio compuesto por dos acelerómetros (ejes X y Y) los cuales

registran los movimientos de la cabeza del sujeto. Se destaca la conexión entre el headset y el PC es

inalámbrica (transmisor bluetooth).

2.8.2 Research Edition (SDK)

El EMOTIVEPOC ofrece seis diferentes software development kit (SDK) que otorgan el control sobre la

API del headset al igual que las bibliotecas (.dll) para el desarrollo de aplicaciones. En este proyecto se

23

empleara la edición RESEARCH. La elección de este SDK se debe a que el API permite la visualización y

captura de las señales raw de los 14 electrodos, lo cual es indispensable para la realización de este

proyecto.

Es importante resaltar que actualmente EMOTIV EPOC no cuenta con un módulo en tiempo real para

Matlab, a su vez es posible implementar el SDK para la captura de las señales raw por medio de C y C++

para su análisis posterior, sin embargo, si se desea realizar la etapa posterior de un BCI (Aplicación de

control) es necesario usar de forma nativa el algoritmo de extracción y clasificación de EMOTIV EPOC

conocido como EmoEngine [18].

24

3. ESPECIFICACIONES

Se diseñó y desarrollo una interface cerebro computador mediante la clasificación de ondas

encefalografías, para lograr ello el desarrollo fue dividido en tres etapas o fases; basándose en la estructura

de un BCI descrita en la Figura 11, página 20 del presente documento. La Figura 14 indica cada una de las

etapas para el desarrollo del presente proyecto.

Figura 14. Etapas de desarrollo

3.1 CAPTURA DE SEÑALES ENCEFALOGRÁFICAS

Se implementó el dispositivo no invasivo EMOTIVEPOC como receptor de señales

electroencefalográficas. Este dispositivo está compuesto por 14 electrodos distribuidos según el sistema

internacional 10-20 (Figura 15), los cuales operan a una frecuencia de muestreo de 128sps y poseen un

ancho de banda de 0.2Hz a 45Hz [17].

Figura 15. Sensores EMOTIV EPOC según Sistema Internacional 10-20 [17].

El paradigma a clasificar se compone de dos casos: derecha e izquierda, el número total de muestras

adquiridas por caso es de 50, distribuidas en 4 sesiones como lo indica la

Tabla 4.

25

Sesión Numero de muestras

por caso

Primera 15

Segunda 10

Tercera 15

Cuarta 10

Tabla 4. Distribución de sesiones para la captura de señales encefalográficas.

3.2 INTERFACE CEREBRO COMPUTADOR (BCI)

El proceso descrito en la Figura 16corresponde al realizado en el presente proyecto.

Figura 16. Diagrama de bloques del BCI diseñado.

3.3 PRUEBAS DE DESEMPEÑO

Se realizó pruebas de desempeño mediante validación cruzada de K-iteraciones (K-foldcross-validation),

garantizando que el algoritmo de clasificación tuvieran una acierto igual o mayor al 75%.

3.4 HAWARE Y SOFTWARE

Para la extracción y análisis de señales encefalográficas fue necesaria la implementación de dos

computadoras. Se usó un computador portátil (laptop) para la extracción de las señales encefalográficas

Eliminación de

DC (Offset)

Ventaneo

Filtrado

CAR

PSD PLV

SVM SVM

Carga de

Señales EEG

Pre – Procesamiento

Extracción

de Características

Clasificación

26

debido a la necesidad desplazarse al lugar donde se encontraban algunos de los sujetos que participaron en

el experimento, por otra parte el procesamiento y análisis de las señales encefalográficas obtenidas se

realizó en un PC de escritorio (Desktop). Las especificaciones del laptop y PC se encuentran

especificadas en las Tabla 5 y Tabla 6 respectivamente.

Especificaciones Técnicas - Laptop

Marca Asus

Modelo G53SW

Procesador Intel® Core™ 2630QM Processor

Núcleos 4

Velocidad de Reloj 2.0 GHz

Disco Duro 500 Gb

Memoria RAM 8 Gb

Monitor 15.6"

Sistema Operativo Windows 7 Professional – 64 bits

Tabla 5. Especificaciones Laptop.

Especificaciones Técnicas - Desktop

Procesador Intel® Pentium® Processor E2140

Núcleos 2

Velocidad de Reloj 1.6 GHz

Disco Duro 160 Gb

Memoria RAM 2 Gb

Sistema Operativo Windows 7 Professional – 32bits

Tabla 6. Especificaciones Desktop.

El software implementado fue:

Visual Studio 2010 Professional

Matlab 2012b (Incluyendo Toolboxes)

SDK – EmotivResearchEdition

Test Bench – EmotivSystems

3.5 BANCO DE SEÑALES EEG

Mediante la captura de señales electroencefalográficas se generó un banco de señales. La generación de

este banco tiene como objetivos principales:

Implementación sencilla y ágil para el desarrollo del presente trabajo.

Creación de un banco de señales EEG para trabajos futuros.

Cada muestra se encuentra debidamente etiquetada (ver Anexo 1), con un tamaño promedio de 150KB.

27

4. DESARROLLO

4.1 CAPTURA DE SEÑALES EEG

La adquisición de señales electroencefalográficas se realizó de forma no invasiva por medio del

dispositivo EMOTIV EPOC. La adquisición de estas señales se realizó mediante un experimento

implementando una interfaz gráfica (GUI).

La GUI extrajo y guardo las ondas encefalográficas de 10 sujetos para su posterior análisis en ficheros

*.csv (comma-separatedvalues). La metodología del experimento es basado en anteriores trabajos como lo

son: “Comparación de Diferentes Métodos para la Clasificación de Señales EEG en Interfaces Cerebro-

Computadora” [19], “Análisis de electroencefalogramas en ritmos sensoriomotores. Control domótico

mediante Brain Computer Interface” [20], “Automatic Differentiation of Multichannel EEG Signals” [21]

y las bases de datos de señales EEG del “BCI Competition IV” [22].

4.1.1 Formulación de experimento (paradigma)

Cada prueba (Figura 17) tiene una duración de 9.5s a 11s. Este tiempo se divide en 3s de preparación, 5s

donde se realiza la tarea mental y una pausa entre pruebas de 2 a 3 segundos.

La prueba inicia con la presentación de una cruz en el centro de la pantalla (conocida en la literatura como

fixation-cue o cross-fixation) tal y como se muestra en la Figura 18a y un tono de aviso a los 1.5 segundos

(1kHz, 70ms) que indica al usuario que el experimento ha dado inicio, segundos después se mostrara una

señal visual (Figura 18b o Figura 18c) durante 2 segundos. Esta señal visual da la instrucción al sujeto

que imagine la acción motora correspondiente a la instrucción (esta acción durara 5 segundos). Al

completar la tarea mental se darán dos tonos de aviso (1kHz, 70ms) indicando al usuario que puede

descansar y se da una pausa de 1.5 segundos, adicionalmente se tendrá un tiempo variable de descanso

entre pruebas de 0.5 a 1.5 segundos.

Figura 17. Esquema de tiempo de una prueba3.

3 La barra de tiempo está dada en segundos.

28

a

b

c

Figura 18. Estimulo visual. (a) Cruz, inicio de la tarea. (b) Caso 1, acción motora derecha. (c) Caso 2, acción motora izquierda.

4.1.2 Diseño de interfaz gráfica

La interfaz gráfica fue diseñada en Visual Basic y C ++ (incluidos en el paquete Visual Studio 2010

Professional) implementando el Research SDK que viene en conjunto al EMOTIV EPOC. Al iniciar el

programa experimento.exe se abrirá la ventana de la Figura 19. En esta se debe ingresar el ID del sujeto

(numérico), el número de pruebas a realizar (ej. Si se ingresa 5 pruebas, el programa captara 5 muestras

para cada caso, es decir, 10 muestras en total) y finalmente seleccionar la sesión a realizar. Estos datos son

solicitados al usuario con el fin de guardar el fichero *.csv con el nombre correspondiente, tal y como es

indicado en el Anexo 1. A su vez el programa genera un fichero *.txt indicando por medio de letras R o L

(Right – Derecha o Left – Izquierda, respectivamente) el orden en el cual fue ejecutado los dos estímulos

visuales como se puede ver en la Figura 20.

Figura 19. GUI - Ingreso de datos para la captura de señales.

29

Figura 20. Archivo .txt generado el cual indica la secuencia para el Sujeto 4 – Sesión 2.

El diagrama de flujo de la Figura 21 indica la lógica implementada en el programa diseñado para la

captura de señales EEG. Al iniciar el programa se establece unos valores iníciales los cuales corresponden

a la cantidad de muestras para cada uno de los casos (0 = derecha, 1 = izquierda). Se implementa un

condicional el cual determina que en el momento en el cual la suma de cant0 y cant1 (cantidad de

muestras ejecutadas) sea igual al doble del número de muestras el programa finalizara.

Figura 21. Diagrama de flujo de la lógica implementada para la captura de las señales EEG.

cant0 = 0

cant1 = 0

n = número de pruebas

op =Rand (Opción Señal)

op

Imagen

Derecha

Imagen

Izquierda

Imagen

Cruz

INICIO

x<

2*n

FIN

x = cant0 + cant1

no

si

op = 0 op = 1

cant0

= c

ant0

+1

cant1

= can

t1+

1

30

Es importante resaltar que se implementó la hora del computador como “semilla”, con el fin de garantizar

aleatoriedad en la señal mostrada como en el tiempo de descanso.

La duración de la prueba depende de la variable “Numero de Pruebas”, si el usuario ingresa 2 la duración

máxima de la prueba será de 22segundos.Serealizó igualmente la captura de 40 muestras (divididas en 3 y

4 sesiones) de señales baseline, en este caso la pantalla es blanca; estas señales no fueron empleadas en el

desarrollo del presente proyecto, sin embargo forman parte del banco de señales para trabajos futuros.

4.1.3 Captura de señales EEG

Las señales adquiridas constan de datos EEG de 10 personas (5 hombres y 5 mujeres, todos sanos4). Cada

uno se encontró sentado cómodamente en una silla, con buena iluminación, delante de un portátil con

pantalla de 15.6’’ (ver Tabla 5. Especificaciones Laptop.) y resolución de pantalla de 800 x 600 pixeles.

Previo al experimento se verifico por medio del software de Emotiv TestBench que los 14 electrodos se

encontraran realizando un contacto adecuado5 (Figura 22).

Antes de iniciar el experimento este fue explicado a cada uno de los usuarios, indicando que debían

imaginar la acción motora al ver el estímulo visual.

Figura 22. EmotivTestBench - Sujeto 04

El tiempo total del experimento por sujeto fue de aproximadamente de 35 a 45 minutos, tal y como lo

indica la Tabla 7. Sin embargo algunas personas manifestaron cansancio y dificultad de concentración a

partir de la segunda sesión, por lo que algunos descansos fueron superiores a 10 minutos.

4 Anexo 2. Ficha Médica. 5 Anexo 3. Indicaciones de la correcta colocación del headset Emotiv.

31

Actividad Numero de Muestras6 Tiempo Aproximado

Sesión 1 30 6 minutos

Baseline 1 10 2 minutos

Sesión 2 20 4 minutos

Baseline 2 10 2 minutos

Descanso - 10 minutos

Sesión 3 30 6 minutos

Baseline 3 10 2 minutos

Sesión 4 20 4 minutos

Baseline 4 10 2 minutos

TOTAL 1407 35 minutos

Tabla 7. Tiempo aproximado de experimento por sujeto.

Figura 23. Realización del experimento de captura de datos.

6 Sumatoria de muestras de izquierda y derecha. 7El sujeto 9 presento una fuerte cefalea durante el experimento, por lo tanto el número de muestras es inferior en algunas sesiones.

32

Los ficheros generados para cada sujeto fueron posteriormente importados a MATLAB para así crear un

fichero *.mat el cual contuviera todas las señales de cada uno de los sujetos organizadas en matrices y

estructuras.

4.2 PROCESAMIENTO DE SEÑALES PARA EL BCI

4.2.1 Selección de Canales

Se optó por mantener la totalidad de los canales EEG (14 canales), sin embargo se realizó un pre-

procesamiento a todas las señales con el fin de garantizar una relación señal-ruido (SNR) alta para lograr

un desempeño adecuado en las etapas de extracción de características y clasificación.

4.2.2 Eliminación de DC – Offset

En las señales obtenidas mediante el headset EMOTIV EPOC se encuentra que existe un desplazamiento

causado por un DC (Figura 24). Este DC se debe a que el headset agrega un DC sobre los 4096 µV con el

fin de garantizar que todos los datos sean un entero positivo [23]. Por lo tanto se realizó la eliminación de

este DC restando el valor medio de la señal original (Figura 25).

Figura 24. Señales de los 14 canales originales – AM89: Derecha.

8 AM = Acción Motora 9Todas las figuras mostradas en el análisis, extracción y clasificación de señales corresponden al sujeto 4, sesión 3, muestra 4.

0 200 400 600 800 1000 12004000

4100

4200

4300

4400

4500

4600

4700

4800

4900SEÑAL ORIGINAL

Numero de Muestras

Am

plit

ud (

uV

)

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

33

Figura 25. Señales de los 14 canales sin DC.

4.2.3 Ventana Hanning

En el experimento realizado para la extracción de señales EEG la tarea mental fue realizada en el tiempo

de 3 a 8 segundos, con un estímulo visual de 3 a 5 segundos. Por tal motivo se aplicó una ventana hanning

con el fin de obtener las señales EEG que contienen la información durante la señal visual y tarea mental,

tal y como lo indica la Figura 26.

Figura 26. Diagrama de tiempo y ventana hanning

0 200 400 600 800 1000 1200-100

-50

0

50

100

150

200

250SEÑAL SIN DC

Numero de Muestras

Am

plit

ud (

uV

)

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

34

Figura 27. (a) Señal EEG sin offset (b) Ventana Hanning (c) Señal Ventaneada

4.2.4 Filtrado

Debido a la naturaleza de las señales EEG es conveniente realizar un filtrado temporal, de esta forma se

elimina ruido de frecuencias bajas (generalmente relacionados a artificios fisiológicos como el parpadeo)

y de frecuencias altas (ruido de línea 50 – 60 Hz). Por lo tanto posterior a la eliminación de DC y

ventaneo se diseñó un filtro con respuesta impulso finita - equiripple (Figura 28), con el objetivo de solo

obtener los componentes en la banda de interés.

Figura 28. Filtro Equiripple

(a) Magnitud (b) Fase

0 200 400 600 800 1000 1200-100

-50

0

50

100

150

200

250Señal Offset - ID04.SIGNAL.OFFSET.S3.R.N4

Numero de Muestras

Am

plit

ud -

uV

0 200 400 600 800 1000 12000

0.2

0.4

0.6

0.8

1Ventana Hanning

Numero de Muestras

0 200 400 600 800 1000 1200-60

-40

-20

0

20

40Multiplicación de la señal con la Ventana Hanning

Numero de Muestras

Am

plit

ud -

uV

0 10 20 30 40 50 60-3000

-2500

-2000

-1500

-1000

-500

0

500

Frequency (Hz)

Phase (

degre

es)

0 10 20 30 40 50 60-140

-120

-100

-80

-60

-40

-20

0

20

Frequency (Hz)

Magnitude (

dB

)

Filtro FIR - Equiripple

35

Para el diseño de este filtro se consideraron las siguientes características:

Filtro Pasa Banda

o Orden = 32410

o Frecuencia de Muestreo = 128 Hz

o Frecuencia de Banda Pasante = 7 Hz

o Frecuencia de Banda Atenuada = 14 Hz

o Máximo Rizado Banda Pasante = 1 dB

o Mínima Atenuación Banda Atenuada = 80 dB

Una de las ventajas de la implementación de un filtro FIR – Equiripple es su fase lineal, esta garantiza que

en la extracción de características mediante diferencia de fase (PLV) se pueda verificar condiciones de

simetría. Igualmente este tipo de filtro el error de aproximación entre la respuesta en frecuencia ideal y la

real se reparte uniformemente en cada banda, pasante y atenuada (de ahí el nombre de equiripple),

minimizando el error máximo en cada una de ellas [24].

Podemos observar que posterior al filtrado (Figura 29) se han eliminado los artificios de bajas frecuencias

al igual que solo obtenemos las componentes de la frecuencia de interés.

Figura 29. a) Espectro de Frecuencia Señal Original b) Espectro de Frecuencia Señal Filtrada

4.3 Filtros Espaciales

El headset EMOTIV EPOC realiza un registro monopolar, es decir toma la señal independiente de cada

uno de los electrodos. Una de las desventajas de este registro es que no se puede garantizar que la posición

de los electrodos sea la misma entre ensayos; sin embargo para minimizar este efecto se procuró que

durante todo el experimento nunca se fuese retirado el headset. Igualmente debido a que los potenciales

10

El orden del filtro fue obtenido mediante la función FIRPMORD en MATLAB.

0 10 20 30 40 50 60 700

500

1000

1500

2000

2500

3000

3500

4000

4500

5000FFT SEÑAL ID04.SIGNAL.OFFSET.S3.R.N4

Frecuencia (Hz)

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

0 10 20 30 40 50 60 700

100

200

300

400

500

600

700

800

900FFT SEÑAL ID04.SIGNAL.OFFSET.S3.R.N4 - FILTRADA

Frecuencia (Hz)

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

36

del cuero cabelludo son referencias dependientes, es decir, aunque no exista contacto alguno con el cuero

cabelludo, la señal capturada por el electrodo es afectada por el electrodo de referencia [25].

El filtrado espacial (spatial filtering) es una técnica implementada para minimizar el ruido generado

debido a la variación del posicionamiento de los electrodos entre ensayos al igual que los artificios

generados por otras fuentes. El filtrado espacial también proporciona una relación SNR grande,

permitiendo que la extracción de características sea más efectiva [26]. Existen tres tipos de filtros

espaciales:

Filtro Bipolar

El filtro espacial bipolar toma la tensión promedio de los electrodos vecinos posicionados

verticalmente, esta tensión es restada a señal del electrodo central, como lo indica la Figura 30a.

Figura 30. Filtros Espaciales [26].

(a) Filtro Bipolar, (b) Filtro Laplaciano, (c) Referencia Media Comun

Filtro Laplaciano

El filtro laplaciano se basa en tomar la señal de cada electrodo y la normaliza con las señales de los

electrodos circundantes, es decir, el promedio de la tensión de los electrodos vecinos verticales y

horizontales es restada de la señal de cada electrodo como lo indica la Figura 30b. Este filtro está

enfocado a la fuente (electrodo de interés) a diferencia del filtro bipolar [27]. Este puede ser calculado

de la siguiente forma:

1

4j

Lap

i i j

j S

V V V

(1)

donde iV es el potencial del electrodo (o canal) i-ésimo y jS es el índice del electrodo vecino.

Referencia de Media Común (Common Average Reference – CAR)

Teóricamente si existe un igual número de electrodos espaciados por igual y que cada señal fuese

generada por una fuente puntual, la referencia de media común (CAR) sería igual a cero. Sin

embargo, en la aplicación, las señales no son generadas por fuentes puntuales y los electrodos no son

equidistantes. Por lo tanto se implementa el filtro CAR para que la señal de cada electrodo sea

37

independiente de la referencia [28]. Para implementar el filtro CAR en cada electrodo se debe restar el

valor medio de todas las señales a la señal del electrodo en cuestión, esto puede expresarse como:

1

1 nCAR

i i j

j

V V Vn

(2)

donde iV es el potencial del electrodo (o canal) i-ésimo y n es el número total de electrodos [29].

Figura 31. Aplicación de filtro CAR. (a) Señal Original (Filtrada) (b) Señal filtrada mediante CAR

Figura 32. Señal FC5 (Azul – Señal original Filtrada, Roja – Señal Filtrada por CAR)

0 200 400 600 800 1000 1200-15

-10

-5

0

5

10

15Señal Original - Filtrada

Numero de Muestras

Am

plit

ud -

mV

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

0 200 400 600 800 1000 1200-15

-10

-5

0

5

10

15Señal Original - Filtrada + CAR

Numero de muestras

Am

plit

ud -

mV

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

0 200 400 600 800 1000 1200-6

-4

-2

0

2

4

6Señal Electrodo FC5

Numero de Muestras

Am

plit

ud -

mV

Señal Original - Filtrada

Señal Original - Filtrada + CAR

38

Finalizado el pre-procesamiento se ajustan todas las señales la misma longitud, en este caso para 9

segundos (1152 muestras). Los 9 segundos elegidos garantiza que no se está eliminando datos de la tarea

mental.

4.4 EXTRACCIÓN DE CARACTERÍSTICAS

El paradigma y el experimento realizado para la captura de señales EEG es basado en tareas motoras, la

señales obtenidas contienen el fenómeno conocido como Desincronización/Sincronización relacionada a

eventos (ERD / ERS). Por lo tanto la etapa de extracción será enfocada únicamente a métodos de

extracción basados en el dominio de la frecuencia.

4.4.1 Densidad del Espectro de Potencia (Power Spectral Density – PSD)

Más de un tercio de los BCI basados en ritmos sensorio motores y ERD / ERS implementan métodos no

paramétricos para la extracción de características, entre estos se destaca el método de densidad del

espectro de potencia (PSD) [10].

El espectro de potencia determina la distribución de la potencia de una señal a lo largo de un intervalo de

frecuencias. El cálculo del espectro de frecuencia es se realiza por lo general aplicando la transformada de

Fourier sobre la señal de interés. Cuando el espectro de potencia se calcula por medio de la transformada

de Fourier y luego es promediada se conoce como periodograma [30].

Para realizar el cálculo de la densidad espectral de potenciase parte de que la DFT de una función

muestreada ( )x n está dada por:

21

0

( )j knN

Nk

n

X T x n e

(3)

donde T es el periodo de muestreo. Por lo tanto la densidad espectral de energía (Energy spectral density

– ESD) está dada por:

2

k kS X (4)

Sin embargo si x(n) corresponde a un proceso estocástico (como en el caso de las ondas EEG), la energía

seria infinita, y por consiguiente el parámetro de interés seria la potencia. Por lo tanto se halla la densidad

espectral de potencia promediando temporalmente la energía:

2

kkk

XSP

NT NT (5)

39

No obstante el periodograma obtenido no es un estimador consistente debido a que su varianza no tiende a

cero cuando la longitud de la señal tiende a infinito. Es por esto que se implementa el método de Welch

para evaluar el espectro de potencia, este método consiste en dividir los datos en varios segmentos

traslapados, y se calcula la potencia en cada segmento. Finalmente se calcula el cuadrado de la magnitud y

se promedia el espectro [31]. El algoritmo para el cálculo de la densidad del espectro de frecuencia (PSD)

puede observarse en el diagrama de flujo de la Figura 33.

Figura 33. Diagrama de Flujo - Algoritmo PSD

Al implementar el algoritmo se obtiene la densidad de potencia espectral de cada uno de los canales como

se pueden observar en la Figura 34 y Figura 35.

Señal EEG

Preprocesada

Extraer Canal

Ventaneo

Hamming

FFT

PSD

canal = 14 ch = ch +1

WELCH

ch = 1

fs = 128

40

Figura 34. Matriz PSD - AM: Derecha

Figura 35. Matriz PSD - AM: Izquierda

Debido a que Matlab posee en su toolbox de procesamiento de señales (Signal Processing Toolbox), el

cual incluye las siguientes funciones útiles para el cálculo de la densidad de potencia espectral, entre estas

se encuentran pwelch, spectrum y psdse realizó el método de Welch con dichas funciones.

Se resalta que el traslape asociado al periodograma calculado por el método de Welch mejora

notablemente la correlación de los datos y propiedades estadísticas, por consiguiente mejora la

confiabilidad de la estimación [32].

2 4 6 8 10 12 14 16

0.5

1

1.5

2

2.5

3

Welch Power Spectral Density Estimate

Sujeto: 04, Sesión: 3, Caso: Derecha , Muestra: 4

Frecuency (Hz)

Pow

er/

Fre

cuency (

dB

/Hz)

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

0 5 10 15

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

Welch Power Spectral Density Estimate

Sujeto: 04, Sesión: 3, Caso: Izquierda , Muestra: 4

Frecuency (Hz)

Pow

er/

Fre

cuency (

dB

/Hz)

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

41

4.4.2 Valor de Bloqueo de Fase (Phase-Locking Value)

Las señales EEG sufren una desincronización cuando sucede una tarea motora (ERD), por lo tanto se

implementó la extracción de características mediante el método de diferencia de fase o valor de bloqueo

de fase (Phase-Locking Value PLV) [33].El método de PLV mide la sincronización entre las señales EEG

de un par de sensores, en una frecuencia de interés.

La PLV es definida como [34, 35]:

1 i jj n n

ij

N

PLV eN

(6)

donde i y

j son las fases instantáneas de los sensores i y j en un tiempo n para N muestras. La

medida PLV se encuentra en un rango de 0 a 1. Por lo tanto cuando 1ijPLV existe sincronización entre

las señales de los dos sensores y 0ijPLV no existe sincronización alguna.

Debido a que el PLV es una medida entre dos señales es necesario definir un conjunto de parejas, por lo

tanto para los 14 electrodos obtenemos por medio de combinatoria se tienen un total de 91 combinaciones

posibles:

!

!( )!

n

m

mC

n m n

(7)

2

14

14! 14!

2!(14 2)! 2!12!C

(8)

2

14 91C combinaciones (9)

Para realizar el cálculo del PLV se requiere la fase instantánea de cada una de las parejas de sensores, es

por esto que se implementa la transformada de Hilbert para obtenerla, y así calcular su sincronismo. Este

procedimiento puede verse en el diagrama de flujo de la Figura 36.

42

Figura 36. Diagrama de Flujo - Algoritmo PLV

Es importante recordar que las señales fueron filtradas por un filtro equiripple de orden 324 y esto causa

un efecto de transitorio en la señal filtrada. Este efecto se puede observar en la Figura 37b y que los

primeros 300 ms los valores del PLV del par de señales cambian abruptamente (esto causado por el orden

del filtro del pre-procesamiento), por tal motivo se eliminó las primeras 324 muestras.

Señal EEG

Preprocesada

PLV

Selección de

Canales Pares

Transformada de

Hilbert

Extracción

de Fases

Instantane

Generación

de PLV

P == 91

si

no

Normalización

43

a)

b)

Figura 37. a) Par de electrodos AF3 y AF4

b) PLV – Pareja de Electrodos AF3 – AF4. Sujeto 4 – Sesión 3

4.5 CLASIFICACIÓN DE CARACTERISTICAS

El objetivo del clasificador de un sistema BCI es identificar intensión del sujeto basándose únicamente de

las características de las señales obtenidas, es decir, el clasificador agrupa las características de las señales

EEG y las asocia a una acción motora. Una de las técnicas de clasificación más implementadas en el

campo de procesamiento de señales EEG es el aprendizaje de supervisado [10].

El aprendizaje supervisado es una técnica implementada para deducir una función o un modelo a partir de

datos de entrenamiento, es decir, el aprendizaje supervisado adapta automáticamente la estructura del

modelo clasificatorio utilizando un conjunto de datos de entrenamiento, de esta forma los datos a clasificar

0 1 2 3 4 5 6 7 8 90.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

PHASE-LOCKING VALUE

Sujeto: 04, Sesión: 3, Electrodos: AF3 - AF4

Tiempo (s)

Phase L

ockin

g V

alu

e -

PLV

Norm

aliz

ado

AF3

AF4

44

son relacionados con las características de los datos de entrenamiento [36]. Entre los algoritmos de

clasificación de aprendizaje supervisado se destaca las Maquinas de Soporte Vectorial (Support Vector

Machine – SVM).

4.5.1 Máquinas de Soporte Vectorial (SVM)

Las máquinas de soporte vectorial es un método de clasificación de aprendizaje supervisado el cual

determina el mejor hiperplano para la discriminación de dos clases. En el presente trabajo se implementó

la librería SVM libsvm-mat-3.12 para Matlab creada por Chang, Chih-Chung and Lin, Chih-Jen [37].

La metodología de entrenamiento y ensayo fue mediante hold-out, este método consistió en dividir en dos

conjuntos (entrenamiento y ensayo) las sesiones. Esta división de datos puede observarse en laTabla 8.

Set Entrenamiento Set Ensayo

Sesión 2

Sesión 3

Sesión 4

Sesión 1

Sesión 1

Sesión 3

Sesión 4

Sesión 2

Sesión 1

Sesión 2

Sesión 4

Sesión 3

Sesión 1

Sesión 2

Sesión 3

Sesión 4

Tabla 8. Sets de Entrenamiento y Ensayo mediante Hold-Out

Se implementaron dos tipos de kernel de clasificación presentes en la librería LIBSVM11

[38]:

LINEAL

, T

i j i jK x x x x (10)

11

Los desarrolladores de LIBSVM aconsejan usar la librería LIBLINEAR para el kernel lineal.

45

BASE RADIAL (Radial BasisFunction – RBF):

2

, , 0i jx x

i jK x x e

(11)

Para ambos kernels de clasificación se implementó validación cruzada con 5-iteraciones en los datos de

entrenamiento, con el fin de encontrar los mejores parámetros.

4.5.1.1 Kernel Lineal

En el caso del kernel lineal no existe ningún parámetro como lo indica la ecuación 4.10, sin embargo se

asignó un parámetro Costó óptimo de clasificación (C para LIBSVM). El parámetro C (Cost o Costo)

indica al SVM cuánto desea evitar una clasificación errónea. Es decir, para grandes valores de C , el

modelo SVM establecerá un hiperplano de menor margen. Al contrario de un valor C pequeño, el modelo

SVM determinara un hiperplano de mayor margen.

Sujeto / Set de Ensayo S1 S2 S3 S4

1 74.26% 73.20% 84.63% 74.00%

2 74.80% 78.81% 78.12% 83.40%

3 80.61% 80.95% 72.11% 78.43%

4 77.07% 75.50% 82.57% 78.37%

5 86.31% 85.26% 81.96% 79.19%

6 82.95% 77.06% 81.95% 74.28%

7 80.61% 73.10% 71.59% 79.48%

8 79.80% 74.62% 69.30% 82.09%

9 74.09% 81.47% 72.31% 80.33%

10 86.87% 80.80% 82.08% 78.83% Tabla 9. Precisión PSD - Kernel Lineal

Sujeto / Set de Ensayo S1 S2 S3 S4

1 71.06% 73.26% 75.46% 73.26%

2 78.75% 78.21% 78.02% 80.95%

3 66.12% 61.90% 60.99% 63.55%

4 76.19% 73.63% 73.26% 73.81%

5 73.08% 78.57% 76.37% 79.49%

6 86.08% 80.04% 81.14% 81.14%

7 71.61% 74.54% 70.33% 73.08%

8 83.33% 84.80% 78.39% 84.62%

9 79.49% 82.97% 77.84% 75.27%

10 76.19% 78.75% 75.27% 76.56% Tabla 10. Precisión PLV - Kernel LinealKernel RBF

46

4.5.1.2 Kernel Función Base Radial

A diferencia del lineal, el kernel de base radial tiene dos parámetros que son gamma y C. Debido a

que estos parámetros son desconocidos y se requiere encontrar una combinación optima se realiza un

procedimiento llamado “Busqueda por Red” o “Grid-Search”.Este procedimiento se basa en realizar

pruebas de desempeño en múltiples combinaciones de los parámetros C en diferentes escalas para asi

encontrar los parámetros que brindan una mejor clasificación.

La Figura 38 corresponde a una búsqueda por red con la siguiente secuencia para los parámetros: 10 10 10 202 ,2 ,...,2 ,2C y

10 10 10 202 ,2 ,...,2 ,2 . Se puede observar que la mejor combinación se

encuentra en 10 102 | 2C , ya que esta logra una precisión del 80.22%.

Figura 38. Búsqueda por Red - Escala Grande (Característica: PLV - ID: 04 – Sesión de Ensayo: S3)

47

Sin embargo los autores de la librería LIBSVM recomiendan realizar una busqueda “fina” [38], por lo

tanto se toma la anterior combinación como eje central (10 102 | 2C ) y se realiza nuevamente la

busqueda por red a una escala mas pequeña. En la Figura 39 se aprecia que la secuencia de busqueda fue:

0 5 15 202 ,2 ,...,2 ,2C y 20 15 5 02 ,2 ,...,2 ,2 , y la mejor combinación fue

5 52 | 2C .

Figura 39. Búsqueda por Red - Escala Mediana (Característica: PLV - ID: 04 – Sesión de Ensayo: S3)

Finalmente se realiza una ultima busqueda por red siguiendo las mismas pautas, es decir se tiene como

punto central la mejor combinación (5 52 | 2C ) y se realiza la busqueda con pasos mas cortos, en el

caso de la Figura 40 estos fueron 0 2 8 102 ,2 ,...,2 ,2C y

10 8 2 02 ,2 ,...,2 ,2 , para obtener finalmente

una precisión del 90.48%, para la combinación2 52 | 2C .

48

Figura 40. Búsqueda por Red - Escala Pequeña (Característica: PLV - ID: 04 – Sesión de Ensayo: S3)

Se puede tasar que efectivamente la busqueda mediante red es una herramienta útil para hallar los

parametros más optimos ya que se logro incrementar de un a precisión del 80.22% a finalmente un

90.48%. Los resultados del clasificador RBF para las características PSD y PLV pueden observarse en las

tablas 11 y 12 respectivamente.

Sujeto / Set de Ensayo S1 S2 S3 S4

1 82.07% 77.05% 72.63% 79.44%

2 83.59% 79.27% 76.56% 75.50%

3 76.69% 74.76% 72.85% 80.56%

4 84.80% 75.41% 76.43% 81.36%

5 84.76% 93.74% 86.27% 86.59%

6 78.78% 75.65% 77.71% 72.53%

7 63.06% 62.80% 70.86% 67.29%

8 70.21% 76.31% 65.68% 78.62%

9 77.12% 74.42% 72.57% 88.94%

10 77.26% 74.11% 82.53% 83.54% Tabla 11. Precisión PSD - Kernel RBF

49

Sujeto / Set de Ensayo S1 S2 S3 S4

1 87.91% 87.55% 91.39% 85.16%

2 92.86% 91.39% 95.24% 90.11%

3 83.33% 73.99% 81.14% 78.39%

4 86.45% 86.81% 90.48% 86.26%

5 94.69% 93.22% 96.15% 95.24%

6 94.32% 90.48% 90.84% 91.39%

7 87.73% 83.33% 85.53% 81.32%

8 95.42% 89.93% 91.21% 91.39%

9 97.07% 96.70% 93.22% 93.04%

10 94.87% 94.32% 94.32% 93.96% Tabla 12. Precisión PLV - Kernel RBF

50

5. ANALISIS DE RESULTADOS

En este capítulo se presenta una descripción de los resultados experimentales obtenidos en cada una de las

tres etapas (Captura de Señales, Extracción de Características y Clasificación de Características) del

desarrollo del presente trabajo.

5.1 CAPTURA DE SEÑALES

Para ilustrar el tipo de señales capturada se puede ver la Figura 41a. Cada uno de los canales se encuentra

con un voltaje DC aproximadamente de 4096 µV. Por tal motivo se decidió realizar la implementación de

la etapa de preprocesamiento para obtener finalmente una señal EEG adecuada (sin artificios) para la

posterior etapa de extracción de características como se puede apreciar en la Figura 41c.

Figura 41.Señal EEG correspondiente a la tarea motora Derecha, Sujeto 4 – Sesión 3 – Muestra 4.

(a) Señal Original, (b) Señal sin DC, (c) Señal Pre-Procesada12

5.2 EXTRACCIÓN Y CLASIFICACIÓN PSD - SVM

La estimación del espectro de densidad de potencia (PSD) se realizó mediante la aplicación del método de

Welch, esta estimación para cada uno de los 14 canales.Se pudo observar que los electrodos ubicados en el

área precentral del lóbulo frontal ej. AF3 – AF4 tenían una mayor componente de frecuencia en la banda

mu (Figura 42). Es de resaltar este fenómeno ya que esta área corresponde a la corteza motora primaria la

12El preprocesamiento consta de ventaneo, filtro en banda de interés (filtro FIR - Equiripple) y filtrado espacial CAR.

0 200 400 600 800 1000 1200 14004000

4200

4400

4600

4800

5000Señal Original

Numero de Muestras

0 200 400 600 800 1000 1200 1400-100

-50

0

50

100

150

200

250Señal Sin DC

Numero de Muestras

0 200 400 600 800 1000 1200-15

-10

-5

0

5

10

15Señal Pre-Procesada

Numero de Muestras

51

cual tiene como función el llevar a cabo los movimientos individuales de diferentes partes del cuerpo

[7,8].

Figura 42. PSD estimado mediante Welch en la banda de frecuencia de interés.

(a) PSD – AM: Derecha, (b) PSD – AM: Izquierda.

La extracción de características PSD y clasificación SVM obtuvo el siguiente desempeño:

SUJETO SVM - LINEAL SVM - RBF

1 76.52% 77.80%

2 78.78% 78.73%

3 78.03% 76.21%

4 78.38% 79.50%

5 83.18% 87.84%

6 79.06% 76.17%

7 76.20% 66.00%

8 76.45% 72.70%

9 77.05% 78.26%

10 82.15% 79.36%

PROMEDIO 78.58% 77.26% Tabla 13. Desempeño promedio PSD + SVM

Se destaca en la Tabla 13 que el modelo de clasificación para el sujeto 5 obtuvo el mejor desempeño tanto

en el clasificador lineal como el RBF con una precisión de 83.18% y 87.84% respectivamente.

Igualmente se resalta que la precisión no varía significativamente entre clasificadores, por lo tanto se

puede concluir que para características PSD el kernel Lineal y RBF tiene un desempeño similar.

0 10 20 30 40 50 60 700

0.5

1

1.5

2

2.5

3Estimación PSD por Welch - AM: Derecha

Frecuency (Hz)

Pow

er/

Fre

cuency (

dB

/Hz)

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

0 10 20 30 40 50 60 700

0.5

1

1.5Estimación PSD por Welch - AM: Izquierda

Frecuency (Hz)

Pow

er/

Fre

cuency (

dB

/Hz)

AF3

F7

F3

FC5

T7

P7

O1

O2

P8

T8

FC6

F4

F8

AF4

52

5.3 EXTRACCIÓN Y CLASIFICACIÓN PLV – SVM

La estimación del valor de bloqueo de fase se realizó mediante la transformada de Hilbert, ya que esta nos

brinda información sobre la fase inmediata.

Se obtuvo el siguiente desempeño de los clasificadores para las características PLV:

SUJETO SVM - LINEAL SVM - RBF

1 73.26% 88.00%

2 78.98% 92.40%

3 63.14% 79.21%

4 74.22% 87.50%

5 76.88% 94.83%

6 82.10% 91.76%

7 72.39% 84.48%

8 82.78% 91.99%

9 78.89% 95.01%

10 76.69% 94.37%

PROMEDIO 75.93% 89.95% Tabla 14. Desempeño promedio PLV + SVM

A diferencia de los resultados para las características PSD (Tabla 13) hubo una diferencia significativa

entre la clasificación Lineal y RBF como puede observarse en la Tabla 14, claramente el kernel de

clasificación RBF tuvo un mejor desempeño que el lineal logrando alcanzar precisión hasta de un 95.01%

(sujeto 9).

La Figura 43 permite concluir que las características PLV al tener una formulación teórica más robusta al

realizar la comparación de fases entre pares de sensores/canales logra que el clasificador tenga un mejor

desempeño, a diferencia del PSD que las características son individuales. Igualmente el vector PLV

contiene 91 características (correspondientes a las 91 parejas de electrodos), mientras que el vector PSD

únicamente 14 características (número de canales).

53

Figura 43. Precisión promedio de clasificación para todos los sujetos.

Es de destacar que los resultados obtenidos con las características PLV, concuerdan con la literatura actual

[39, 40], al igual que cada una de las combinaciones de características y clasificador logro un mínimo de

75% de precisión.

54

6. CONCLUSIONES

En este proyecto, se consideró el uso de señales EEG como la mejor solución para registrar la actividad

cerebral por tratarse de un método no invasivo, de bajo costo y portátil. Por tal motivo se implementó el

headset de EMOTIV para obtener las señales EEG en cuestión. Además, se trabajó con los ritmos

sensoriomotores ya que son los más adecuados para realizar una aplicación basada en actividades motoras

(ej. Movimiento del brazo izquierdo).

El análisis de métodos de procesamiento de señales EEG comenzó con un estudio exhaustivo de los

algoritmos de extracción y clasificación, concluyendo así que los métodos de extracción de características

que se ajustaban a los datos obtenidos mediante el headset de Emotiv eran Densidad del Espectro de

Potencia (PSD) y Valor de Bloqueo de Fase (PLV). De esta forma, el análisis de estos dos métodos de

extracción se realizó empleando aprendizaje supervisado por medio de máquinas de vectores de soporte

(SVM).

Se pudo apreciar claramente que un sistema BCI basado en sincronismo y valor de bloqueo de fase (PLV)

fue superior al método tradicional basado en espectros de potencia (PSD), teniendo en cuenta la escasez de

datos disponibles. Esto se debe a que las características PLV poseen una formulación teórica más robusta

al realizar la comparación de fases entre pares de sensores/electrodos logrando así que el clasificador

SVM tenga un desempeño superior al método PSD, ya que este las características son individuales. Se

destaca que el método PLV obtiene los datos de 91 combinaciones de pares de electrodos, a diferencia del

PSD que solo obtiene las características de 14 electrodos.

Se resaltó la importancia de eliminar el ruido presente en las señales EEG conocidos como artificios. Estos

ruidos se deben a actividades fisiológicas (ej. Palpitar del corazón, respiración, parpadeo) y no fisiológicas

(ej. ruido de línea (50 – 60 Hz). Durante el proceso de extracción y clasificación de características se

obtuvo inicialmente una precisión inferior al 60%, esto debido a que no se realizó el debido pre-

procesamiento a las señales. Finalmente al realizar el pre – procesamiento adecuado (ventaneo, filtro

espacial, filtros en banda de interés) la precisión de la clasificación incremento considerablemente.

Cabe resaltar que a pesar que el SDK de Emotiv aún no permite el análisis en tiempo real de las señales, el

presente estudio puede ser implementado a cualquier señal EEG obtenida a partir del paradigma descrito

en el capítulo 4.1.1.

Como trabajo futuro de este estudio; la adquisición de datos en tiempo real y la clasificación se puede

extender para controlar una silla de ruedas, encendido y apagado de luces (domótica) y demás

aplicaciones de control binarias con el fin de brindar una ayuda a personas con discapacidad.

55

7. BIBILIOGRAFIA

[1] QUINN, Gerard. Derechos humanos y discapacidad: Uso actual y posibilidades futuras de los

instrumentos de derechos humanos de las Naciones Unidas en el contexto de la discapacidad. Nueva York

y Ginebra: Naciones Unidas, 2002. ISBN 92-1-354074-4.

[2] VÁSQUEZ, Armando. La discapacidad en América Latina. Disponible en Internet:

<http://new.paho.org/uru/index2.php?option=com_docman&task=doc_view&gid=95&Itemid=270>.

[3] DEPARTAMENTO ADMINISTRATIVO NACIONAL DE ESTADISTICA, DANE. Censo General

2005: Discapacidad, Personas con limitaciones permanentes. Colombia, 2005.

[4] WOLPAW, Jonathan. Brain–computer interfaces for communication and control. En: Clin.

Neurophysiol. Vol. 113, No.6 (2002); p. 602-614.

[5] NAVARRO, Rafael. Instrumentación Biomédica. Tema 5: Electroencefalografía. Departamento

Electrónica, Universidad Alcalá.

[6] SABATI, Alejandro G. Interacción Humano Maquina. Ondas Neuroeléctricas utilizadas en el sistema

BCI o IMCM. Argentina, 2012.Disponible en Internet:

<http://interfacemindbraincomputer.wetpaint.com/>

[7] BRAIN CONNECTION. The Anatomy of Movement.California 2012. Disponible en Internet:

<http://brainconnection.positscience.com/the-anatomy-of-movement/>

[8] KOLB, Brian; WHISHAW, Ian. Organización del sistema motor. Madrid, Editorial Médica

Panamericana, 2006.

[9] PFURTSCHELLER, G y LOPES DA SILVA, H. Event-related EEG/MEG synchronization and

desynchronization: basic principles. Clinical Neurophysiology, vol. 110, pp. 1842 – 1857, 1999

[10] BASHASHATI, A; FATOURECHI, M y WARD, R. A survey of signal processing algorithms in

braincomputer interfaces based on electrical brain signals. Journal of Neural Engineering, vol. 4, pp. R32–

R57, 2007

[11] HONG, Bo.,WANG, Yijun., GAO, Xiaorong., y GAO, Shangkai. Quantitative EEG-Based Brain-

Computer Interface.En: TONG, Shanbao. Quantitative EEG Analysis Methods and Applications. MA:

Artech House Publishers, 2009. p.193-224.

[12] MAK, J.N y WOLPAW, J.R. Clinical applications of brain-computer interfaces: Current state and

future prospects,” IEEE Reviews in Biomedical Engineering, vol. 2, pp. 187–199, 2009.

[13] PERASSOLO, Mónica. Electroencefalografia Artificios SeccionNeurologia. Buenos Aires,

Argentina, 2008.

[14] ELKAN, Charles. Evaluating Classifiers.Universityor California, San Diego, 2011.

[15] JOANNEUM. ProClassify User’s Guide.Austria.: Graz University of Technology, 2005. Disponible

en internet: <http://genome.tugraz.at/proclassify/help/pages/XV.html>

56

[16] EmotivSystems.Corporate. Disponible en Internet: <http://www.emotiv.com/corporate/>

[17] EMOTIV. Emotiv Research SDK Specifications.Disponible en Internet:

<http://emotiv.com/upload/manual/sdk/Research%20Edition%20SDK.pdf>

[18] EMOTIV. Access real time raw EEG data using MATLAB or C++.Disponible en Internet:

<http://www.emotiv.com/forum/messages/forum4/topic1078/message6496/?phrase_id=532275>

[19] FARFAN, Fernando D. Comparación de Diferentes Métodos para la Clasificación de Señales EEG en

Interfaces Cerebro-Computadora. Departamento de Bioingenieria – FACET – UNT.En: XV Congreso

Argentino de Bioingenieria. Argentina.

[20] CORRALEJO, R. ALVAREZ, D. y HORNERO, R. Análisis de electroencefalogramas en ritmos

sensoriomotores. Control domótico mediante BrainComputer Interface. Grupo de Ingeniería Biomédica,

Universidad de Valladolid. España.

[21] PETERS, B.O..PFURTSCHELLER, G. y FLYVBJERG, H. Automatic Differentiation of

Multichannel EEG Signals. En: IEEE Transactions on biomedical engineering, Vol.48, No.1, January

2001.

[22] BLANKETZ, B. BCI Competition IV. Fraunhofer FIRST (IDA),2008. Disponible en Internet:

<http://www.bbci.de/competition/iv/>

[23] EMOTIV. Get EEG data. Disponible en Internet http://emotiv.com/ideas/forum/forum15/topic1338/

[24] MARTINEZ, M.; GÓMEZ, L.; SERRANO, A.J. y GÓMEZ, J. Tema 3: Diseño de Filtros FIR.

Universidad de Valencia, EscolaTècnica Superior Enginyeria. Valencia, España: 2009.

[25] NUÑEZ, P, et al. EEG coherency I: Statistics, referenceelectrode, volumeconduction, laplacians,

cortical imaging, and interpretation at multiplescales. Electroencephalogr.Clin.Neurophysiol., vol. 103,

pp. 499–515, 1997

[26] DENNIS, J, et al. Spatial Filter Selection for EEG-based Communication. Electroencephalography

and Clinical Neurophysiology (1Z03):386-394, 1997.

[27] BABILONI, F; CARDUCCI, F y FATTORINI, P. Spline Laplacian Estimate of EEG Potentials Over

Realistic Magnetic Resonance-constructed Scalp Surface Model. Electroencephalography and Clinical

Neurophysiology 98:363-373. 1996.

[28] BETRAND, O; PERRIN, F y PERNIER, J. A Theoretical Justification of the Average Reference in

Topographic Evoked Potential Studies.Electroencephalography and Clinical Neurophysiology 62:462 64.

1985.

[29] FABIANI, G; MCFARLAND, D; WOLPAW, J y PFURTSHELLER G.Conversion of EEG activity

into cursor movement by a brain–computer interface (BCI) IEEE Trans. Neural Syst. Rehabil. Eng.12331–

8. 2004

[30] GUERRERO MARTINEZ, Juan. Estimación espectral. Universidad de Valencia, Ingeniería

Biomédica: 2010.

57

[31] SHENOI, B.A. Introduction to Digital signal Processing and Filter design Hoboken, New Jersey:

2002.

[32] SEMMLOW, J. Biosignal and biomedical image processing, MATLAB-Based Applications. Ed.

Marcel Deker, New Jersey: 2004.

[33] TOWNSEND, G.; FENG, Y. Using phase information to reveal the nature of event-related desyn-

chronization. Biomedical Signal Processing and Control, vol. 3, pp. 192–202, 2008.

[34] WANG, Yijun; GAO, Xiaorong; HONG, Bo; y ShangkaiGao.Practical Designs of Brain–Computer

Interfaces Based on the Modulation of EEG Rhythms. Brain-Computer Interfaces, The Frontiers

Collection 2010, pp 137-154.

[35] LACHAUX, J.P.; RODRIGUEZ, E. MARTINERIE, J. y VARELA F.J. Measuring phase synchrony

in brain signals.Laboratoire de NeurosciencesCognitives et ImagerieCérébrale, CNRS UPR 40 Hôpital de

La Salpêtrière. Paris, France: 1998.

[36] ARBABI, E; SHAMSOLLAHI, M.B y SAMENI, R. Comparison between effective features used for

the bayesian and the SVM classifiers in BCI. IEEE Engineering in Medicine and Biology 27th Annual

Conference, 2005.

[37] CHANG, Chung; LIN, Jen. {LIBSVM}: A library for support vector machines. ACM Transactions

on Intelligent Systems and Technology, issue: 3, 27:1 – 27:27, 2011. Software disponible en:

<http://www.csie.ntu.edu.tw/~cjlin/libsvm>.

[38] HSU, Chih – Wei; CHANG, Chih-Chung y LIN Chih-Jen. A Practical Guide to Support Vector

Classication. Taiwan: Department of Computer Science National Taiwan University, 2003.

[39] MURGUIALDAY, A. R.; AGGARWAL, V; CHO, Y y RASMUSSEN, B. Brain-Computer Interface

for a Prosthetic Hand Using Local Machine Control and Haptic Feedback. ICORR 2007: IEEE 10th

International Conference on Rehabilitation Robotics, pg 609 - 613, 2007.

[40] BLANKERTZ, B. The Berlin Brain--Computer Interface: Accurate Performance From First-Session

in BCI-NaÏve Subjects. IEEE Transactions on Biomedical Engineering, vol. 55, issue:10, 2008.

[41] FichaMédica. Liceo Franco Argentino Jean Mermoz. Disponible en Internet:

<http://www.lyceemermoz.edu.ar/accueil/rentree2012/Ficha%20medica%20-%20Fiche%20medicale.pdf>

[42] EMOTIV. Software Development Kit.Disponible en Internet:

<http://emotiv.com/developer/SDK/UserManual.pdf>

58

8. ANEXOS

Anexos presentes en el documento:

A. FICHA MÉDICA Y BASE DE DATOS DE LOS SUJETOS

B. DESCRIPCIÓN DE ARCHIVOS *.CSV GENERADOS

C. PROCEDIMIENTO PARA LA POSTURA DEL HEADSET EMOTIV EPOC

D. INSTALACIÓN LIBRERÍAS LIBSVM Y LIBLINEAR EN MATLAB

E. TRANSFORMADA DE HILBERT

F. CROSS – VALIDATION

G. CODIGO FUENTE MATLAB

Anexos presentes en el CD:

1.- CÓDIGO FUENTE VISUAL BASIC Y C++ (INCLUYE SDK RESEARCH Y LICENCIA DE

EMOTIV)

2.- CÓDIGO FUENTE MATLAB

3.- FICHAS MÉDICAS DE SUJETOS

4.- SEÑALES EEG CAPTURADAS *.CSV

5.- SEÑALES EEG PROCESADAS *.MAT

6.- PLOTS DE GRIDSEARCH – RBF KERNEL

59

8. ANEXOS

A. FICHA MÉDICA Y BASE DE DATOS DE LOS SUJETOS

Se estableció una ficha médica [40], con el fin de recopilar los datos significativos y antecedentes de cada

uno de los sujetos participantes del experimento.

La ficha médica (Figura 44) fue diseñada en Access y contenía los siguientes campos:

Sujeto Nº : Corresponde al ID el cual sera asignado el sujeto

Datos Personales

o Nombre

o Edad

o Fecha de Nacimiento

o Sexo

o Grado Escolaridad

o Ocupacion

o Tipo de Sangre

o Lateralidad

Antecedentes Médicos

o Gafas/Lentes y Razón.

o Trastornos Visuales

o Trastornos Auditivos

o Trastornos Psiquiatricos

o Cardiopatia

o Enfermedades Cronicas

o Fracturas / Esquinces

o Intervenciones Quirurgicas

o Padecimiento de Enfermedades como: Varicela, Sarampion, Rubeola ,Rinitis, Asma,

Gastritis, Migraña, Diabetes, Hipotiroidismo, Anemia, Epilepsia, Sonambulismo,

Hipertension, Deficit de Atencion.

o Alergias

o Medicamentos

Experimento: Se realizaron las siguientes preguntas despues de cada sesion:

o ¿Se encuentra cansado? (si el usuario se sentia cansado se realizaba un tiempo de

descanso de 5 a 10 minutos)

o ¿Siente mareo?

o ¿Tiene dolor de Cabeza?

o ¿Algún comentario sobre la sesión que acaba de culminar?

60

Figura 44. Ficha Médica

61

B. DESCRIPCIÓN DE ARCHIVOS *.CSV GENERADOS

El experimento diseñado para la extracción de las señales encefalográficas de cada uno de los sujetos

graba automáticamente cada una de las muestras para su posterior análisis en ficheros *.csv (comma-

separated-values).

Cada fichero *.csv se compone de 17 columnas y más de 2000 filas de datos como se puede ver en la

Figura 45.

Figura 45. Fichero *.csv generado

La información contenida en las columnas es la siguiente:

COUNTER: Contador de los paquetes de datos recibidos, este va desde 0 hasta 128 (debido a que

la frecuencia de muestreo realizado por el headset de Emotiv es de 128Hz) [17].

AF3, F7, F3, FC5, T7, P7, O1, O2, P8, T8, FC6, F4, F8, AF4: Datos de cada uno de los sensores

en micro-voltios (uV), es importante notar que existe un DC de aproximadamente 4200uV en cada

canal.

TIMESTAMP: tiempo dado en segundos entre cada una de las muestras.

La columna final indica la calidad del contacto de los electrodos, estos valores se traducen así :

o Sin Contacto < 81

o Contacto Malo < 221

o Contacto Medio < 314

o Contacto Bueno < 407

o Contacto Excelente >= 407

62

La notación de los archivos generados por el experimento tiene en su nomenclatura la siguiente

información:

ID Sujeto (corresponde al mismo número de identificación de la ficha médica)

Sesión

Baseline ó Señal

Caso (Izquierda o Derecha)

No. De Muestra del Caso

Ejemplos:

Archivo ID Sujeto Sesión

Baseline

ó

Señal

Caso

Numero

de

Muestra

ID123_S2_SIGNAL_L_2.csv 123 2 Señal Izquierda 2

ID457_S3_SIGNAL_R_8.csv 457 3 Señal Derecha 8

ID227_S1_BASELINE_10.csv 227 1 Baseline 10 Tabla 15. Nomenclatura archivos *.csv.

63

C. PROCEDIMIENTO PARA LA POSTURA DEL HEADSET EMOTIV EPOC

Antes de iniciar el experimento de extracción de señales es fundamental la correcta postura del headset

Emotiv Epoc al igual que un adecuado contacto de cada uno de los sensores pasa así garantizar que las

señales obtenidas sean óptimas para su posterior análisis.

Es importante asegurar que los DLL del SDK (edk.dll y edk_utils.dll) se encuentren junto al ejecutable

experimento.exe, igualmente se aconseja tener previamente instalado al menos uno de los siguientes

softwares13

con el fin de verificar si los electrodos se encuentran realizando un buen contacto:

Emotiv EPOC Control Panel v1.0.0.5

Emotiv TestBench v1.5.0.3

Para realizar la extracción de señales mediante el experimento diseñado es necesario contar con los

siguientes elementos contenidos en el Kit Research de Emotiv EPOC (Figura 46. Kit Emotiv - Research

SDK):

Emotiv HeadSet

Pack de 14 electrodos en su estuche

Solución Salina

Cargador Emotiv

Receptor USB

Figura 46. Kit Emotiv - Research SDK

Se debe iniciar hidratando cada uno de los electrodos con solución salina (se uso solución salina

multipropósitos para lentes de contacto,

Figura 47), la hidratación debe ser de 2 a 5 gotas por cada electrodo.

13

Los DLLs e instaladores de los software se encuentran contenidos en el CD bajo la siguiente ruta: 1 - CÓDIGO

FUENTE VISUAL BASIC Y C++\SDK - EMOTIV

64

Figura 47. Solución salina multipropósitos usada.

Igualmente se debe añadir varias gotas de solución salina en la almohadilla grande del estuche de

sensores, posteriormente se debe cerrar la tapa del estuche y agitar suavemente. Nuevamente abrir y

verificar si los electrodos se encuentran húmedos al tacto (si estos aún se encuentran secos añadir un par

de gotas más). Es importante que cada uno de los electrodos se encuentren debidamente hidratados para

garantizar un contacto óptimo entre electrodo – cuero cabelludo.

Figura 48. Hidratación con solución salina en electrodos y almohadilla del estuche [41].

Finalizado el proceso de hidratación se debe ensamblar cada uno de los electrodos en el headset, para ello

se debe retirar el electrodo del estuche girando suavemente contra las manecillas del reloj. Luego se

inserta el electrodo en uno de los brazos del headset girando hacia la derecha (sentido horario, Figura 49)

hasta sentir un “clic”, este “clic” indica que el electrodo se debidamente instalado.

65

Figura 49. Instalación electrodo en headset.

Cuando los 14 electrodos se encuentren debidamente instalados se procede a ubicar el headset en la

cabeza del sujeto, para ello con ambas manos, se debe deslizar el hacia abajo desde la parte superior de la

cabeza, Figura 50a. Es importante asegurar que los 2 sensores de tienen un caucho deben encontrarse en el

hueso justo detrás de cada lóbulo de la oreja, Figura 50b. La correcta posición de estos 2 sensores es

fundamental para el correcto funcionamiento y captura de señales. Igualmente los 2 electrodos frontales

(AF4 y AF5) deben encontrarse aproximadamente sobre la línea del cabello o 3 dedos por encima de las

cejas, Figura 50c.

Figura 50. Pasos para colocar adecuadamente el headset EMOTIV.

Después de que el headset está en posición, presione y sostenga los electrodos de 2 referencias (situado

justo por encima y detrás de las orejas) durante unos 5 a 10 segundos y verificar en el software (Control

Panel o TestBench) que estos hagan un buen contacto, es decir que iluminen verde. Finalmente presionar

cada uno de los electrodos hasta que se garantice un buen contacto de todos (en caso que el software nos

señale un mal contacto, es decir que el electrodo ilumine rojo, se debe agregar más solución salina).

66

Figura 51. Verificación del contacto de cada uno de los electrodos por medio de TestBench.

67

D. INSTALACIÓN LIBRERÍAS LIBSVM Y LIBLINEAR EN MATLAB

Se implementó la librería SVM libsvm y liblinear para Matlab creada por Chang, Chih-Chung and Lin,

Chih-Jen [37] para el desarrollo de la etapa de clasificación.

Esta librería se encuentra desarrollada en C, sin embargo esta puede ser instalada y usada en Matlab, los

pasos a seguir son:

1 Descargar la librería actualizada en: http://www.csie.ntu.edu.tw/~cjlin/libsvm/

2 Desempaquetar el archivo .zip en este caso se realizó en la carpeta:

C:\Users\kran\Documents\ANGELICA\TG1174\MATLAB\libsvm.

3 Es necesario seleccionar como copilador Visual C++ 2013, asi que en Matlab tecleamos:

mex -setup y asignamos el copilador.

Figura 52. Instalación LIBSVM - Paso 3

4 Para instalar la librería debemos ubicarnos en la carpeta donde esta se encuentra

Figura 53. Instalación LIBSVM - Paso 4

5 Si digitamos svmpredict o svmtrain veremos que Matlab nos arrojara un error ya que aún no se

encuentra instalada la librería LIBSVM.

68

Figura 54. Instalación LIBSVM - Paso 5

6 Ingresamos a la ruta: C:\Users\kran\Documents\ANGELICA\TG1174\MATLAB\libsvm\matlab

y digitamos “make” en el Command Window

Figura 55. Instalación LIBSVM - Paso 6

7 Este comando nos crea los archivos compatibles para un sistema de 32bit y Matlab. Estos archivos

tienen una extensión *.mexw32

Figura 56. Instalación LIBSVM - Paso 7

69

8 Se agrega la carpeta donde se encuentran estos archivos generados a Matlab, para ello vamos a

File << SetPath. Se abrirá una nueva ventana, en ella hacemos click en el botón “Add with

Subfolders…”

Figura 57. Instalación LIBSVM - Paso 8

9 Buscamos la ruta donde se encuentran la librería y hacemos click en Aceptar.

10 Debemos verificar en la lista que las subcarpetas contenidas en \libsvm\ hayan sido agregadas

correctamente en la lista, finalmente hacemos click en Save.

Figura 58. Instalación LIBSVM - Paso 9

70

11 Podemos comprobar que la librería ha sido instalada correctamente tecleando en el Command

Window “svmtrain”, este debe arrojarnos las instrucciones para generar el modelo por medio de la

librería LIBSVM.

Figura 59. Instalación LIBSVM - Paso 11

Para LIBLINEAR se deben seguir exactamente los mismos pasos.

71

E. TRANSFORMADA DE HILBERT

La transformada de Hilbert de una señal puede ser utilizada para calcular la amplitud instantánea, así

como la fase instantánea [33, 34].

Esta se encuentra definida como:

* 1 s

s t dt

(12)

Por lo tanto si tenemos la siguiente señal ( )x t :

cos2 2

o ojw t jw t

o

A Ax t A w t e e

(13)

Y la transformada de Hilbert de ( )x t seria:

 2 2

( ) o ojw t jw t

t

jA jAe ey t x t

(14)

Sumando las señales de las ecuaciones (13) y (14) tenemos que:

2 2 2 2

2 2 2 2

o o o o

o o o o

o

jw t jw t jw t jw t

jw t jw t jw t jw t

jw t

A A jA jAe e j e e

A A A jAe e e e

z t x t jy y

Ae

(15)

Por lo tanto podemos obtener la amplitud y fase de la ecuación (15):

( ) arg

A t z t

t z t

(16)

72

F. CROSS – VALIDATION

La etapa de clasificación de un BCI es realizada mediante un conjunto de algoritmos de aprendizaje

supervisado. Un aprendizaje supervisado se basa en realizar pruebas mediante el uso de datos de

entrenamiento y ensayo. Sin embargo es necesario realizar la medición del desempeño alcanzado por un

algoritmo de aprendizaje [14].

Una de las técnicas mayormente empleadas es la validación cruzada (cross-validation) la cual evalúa los

resultados de un análisis estadístico garantizando que los datos implementados para el entrenamiento (o

aprendizaje) son independientes de los datos de ensayo (o prueba).

Figura 60. Validación Cruzada de 4 iteraciones [15].

73

G. CODIGO FUENTE MATLAB

A. IMPORTARDATOS.M

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

%

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% IMPORTARDATOS.M: IMPORTAR DATOS DE CAPTURADOS POR EXPERIMENTO (*.CSV) Y

GENERACIÓN DE STRUCTURAS DE DATOS .MAT

%% ###########################%

% # IMPORTAR BASELINE S1 #%

% ###########################%

clear

clc

for k=1:10;

raw = csvread(['ID0' num2str(ID) '_S1_BASELINE_' num2str(k) '.csv'],1,0);

for i=2:15 %eliminar offset

raw_offset(:,i-1) = raw(:,i) - mean(raw(:,i));

end

eval(['ID0' num2str(ID) '.BASELINE.RAW.N' num2str(k) '=raw;']);

eval(['ID0' num2str(ID) '.BASELINE.RAW.N' num2str(k) '(:,16:18)= [];']); % Remover la Columna adicional

eval(['ID0' num2str(ID) '.BASELINE.RAW.N' num2str(k) '(:,1)= [];']); % Remover la Columna adicional

eval(['ID0' num2str(ID) '.BASELINE.OFFSET.N' num2str(k) ' = raw_offset;']);

clearvarsraw;

clearvarsraw_offset;

clearvarsk;

clearvarsi;

end

%% ####################%

% # IMPORTAR SEÑALES #%

% ####################%

for s=1:4

if s == 1 || s==3

kp = 15;

else

if s == 2 || s==4

kp = 10;

end

end

if ID == 9

if s == 3

kp = 8;

else

if s == 4

kp = 7;

end

end

if s == 1

kp = 12;

end

end

74

for k=1:kp;

rawL = csvread(['ID0' num2str(ID) '_S' num2str(s) '_SIGNAL_L_',num2str(k),'.csv'],1,0);

rawR = csvread(['ID0' num2str(ID) '_S' num2str(s) '_SIGNAL_R_',num2str(k),'.csv'],1,0);

for i=2:15 %eliminar offset

raw_offsetL(:,i-1) = rawL(:,i) - mean(rawL(:,i));

raw_offsetR(:,i-1) = rawR(:,i) - mean(rawR(:,i));

end

eval(['ID0' num2str(ID) '.SIGNAL.RAW.S' num2str(s) '.L.N' num2str(k) '=rawL;']);

eval(['ID0' num2str(ID) '.SIGNAL.RAW.S' num2str(s) '.L.N' num2str(k) '(:,16:18)= [];']); %

Remover la Columna adicional

eval(['ID0' num2str(ID) '.SIGNAL.RAW.S' num2str(s) '.L.N' num2str(k) '(:,1)= [];']); % Remover la

Columna adicional

eval(['ID0' num2str(ID) '.SIGNAL.OFFSET.S' num2str(s) '.L.N' num2str(k) '=raw_offsetL;']);

eval(['ID0' num2str(ID) '.SIGNAL.RAW.S' num2str(s) '.R.N' num2str(k) '=rawR;']);

eval(['ID0' num2str(ID) '.SIGNAL.RAW.S' num2str(s) '.R.N' num2str(k) '(:,16:18)= [];']); %

Remover la Columna adicional

eval(['ID0' num2str(ID) '.SIGNAL.RAW.S' num2str(s) '.R.N' num2str(k) '(:,1)= [];']); % Remover la

Columna adicional

eval(['ID0' num2str(ID) '.SIGNAL.OFFSET.S' num2str(s) '.R.N' num2str(k) '=raw_offsetR;']);

clearvarsrawL;

clearvarsrawR;

clearvarsraw_offsetL;

clearvarsraw_offsetR;

clearvarsk;

clearvarsi;

end

end

clearvarskp;

clearvarss;

clearvarspathname;

eval(['save(''EEGDATA_ID0' num2str(ID) '.mat'')']);

%% ########################%

% # UNION ARCHIVOS .MAT #%

% ########################%

for i = 1:9

eval(['load EEGDATA_ID0' num2str(i) '']);

end

loadEEGDATA_ID10

clearvarsi;

clearvarsID;

save('EEGDATA.mat')

B. PREPROCESAMIENTO.M

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% PREPROCESAMIENTO.M: PREPROCESAMIENTO DE SEÑALES EEG

% 1) VENTANA HANNING - EEGDATA_VENTANA.mat

% 2) FILTRO EQUIRIPPLE - EEGDATA_FILTRADA.mat

% 3) CAR - COMMON AVERANGE REFERENCE - EEGDATA_PREP.mat

% AL FINAL DEL PREPROCESAMIENTO SE IMPLEMENTARAN LOS DATOS GENERADOS LOS

% CUALES TIENEN EL NOMBRE DE EEGDATA_PREP.mat

75

clear

clc

loadEEGDATA_OK

%% ###################%

% # VENTANA HANNING #%

% ###################%

for ID=1:10

for s=1:4

if s == 1 || s==3

kp = 15;

else

if s == 2 || s==4

kp = 10;

end

end

if ID == 9

if s == 3

kp = 8;

else

if s == 4

kp = 7;

end

end

if s == 1

kp = 12;

end

end

for k=1:kp;

% IMPORTAR SEÑAL

if ID == 10

eval(['xR = ID' num2str(ID) '.SIGNAL.OFFSET.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID' num2str(ID) '.SIGNAL.OFFSET.S' num2str(s) '.L.N' num2str(k) ';']);

else

eval(['xR = ID0' num2str(ID) '.SIGNAL.OFFSET.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID0' num2str(ID) '.SIGNAL.OFFSET.S' num2str(s) '.L.N' num2str(k) ';']);

end

% FUNCION VENTANEO

[xR_ventana] = VENTANEOPRE(xR);

[xL_ventana] = VENTANEOPRE(xL);

% GENERACION DE VECTOR DE SEÑAL VENTANEADA

if ID == 10

eval(['ID' num2str(ID) '_VENTANA.S' num2str(s) '.R.N' num2str(k) '=xR_ventana;']);

eval(['ID' num2str(ID) '_VENTANA.S' num2str(s) '.L.N' num2str(k) '=xL_ventana;']);

else

eval(['ID0' num2str(ID) '_VENTANA.S' num2str(s) '.R.N' num2str(k) '=xR_ventana;']);

eval(['ID0' num2str(ID) '_VENTANA.S' num2str(s) '.L.N' num2str(k) '=xL_ventana;']);

end

clearvarsxLxL_ventanaxRxR_ventana

end

end

end

clearvarsIDkkps

76

% ELIMINACION DE VARIABLES Y GENERACIÓN DE ARCHIVO .MAT DE VENTANEO

for i=1:9

eval(['clearvars ID0' num2str(i) ';']);

end

clearvarsID10i

save('EEGDATA_VENTANA.mat')

%% ##################################%

% # FILTRADO - BANDA MU (8-13 HZ)#%

% ##################################%

% Importar Filtros

Hd = FIR;

for ID=1:10

for s=1:4

if s == 1 || s==3

kp = 15;

else

if s == 2 || s==4

kp = 10;

end

end

if ID == 9

if s == 3

kp = 8;

else

if s == 4

kp = 7;

end

end

if s == 1

kp = 12;

end

end

for k=1:kp;

% IMPORTAR SEÑAL

if ID == 10

eval(['xR = ID' num2str(ID) '_VENTANA.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID' num2str(ID) '_VENTANA.S' num2str(s) '.L.N' num2str(k) ';']);

else

eval(['xR = ID0' num2str(ID) '_VENTANA.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID0' num2str(ID) '_VENTANA.S' num2str(s) '.L.N' num2str(k) ';']);

end

% APLICAR FILTRO

xR_Filtrada = filter(Hd,xR);

xL_Filtrada = filter(Hd,xL);

if ID == 10

eval(['ID' num2str(ID) '_FILTRADA.S' num2str(s) '.R.N' num2str(k) '=xR_Filtrada;']);

eval(['ID' num2str(ID) '_FILTRADA.S' num2str(s) '.L.N' num2str(k) '=xL_Filtrada;']);

else

eval(['ID0' num2str(ID) '_FILTRADA.S' num2str(s) '.R.N' num2str(k) '=xR_Filtrada;']);

eval(['ID0' num2str(ID) '_FILTRADA.S' num2str(s) '.L.N' num2str(k) '=xL_Filtrada;']);

end

clearvarsxRxLxR_FiltradaxL_Filtrada

end

end

77

end

clearvarskkpsHdID

for i=1:9

eval(['clearvars ID0' num2str(i) '_VENTANA;']);

end

clearvarsID10_VENTANAi

save('EEGDATA_FILTRADA.mat')

%% #########################################%

% # CAR - COMMON AVARANGE REFERENCE #%

% ###########################################%

for ID=1:10

for s=1:4

if s == 1 || s==3

kp = 15;

else

if s == 2 || s==4

kp = 10;

end

end

if ID == 9

if s == 3

kp = 8;

else

if s == 4

kp = 7;

end

end

if s == 1

kp = 12;

end

end

for k=1:kp;

% IMPORTAR SEÑAL

if ID == 10

eval(['xR = ID' num2str(ID) '_FILTRADA.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID' num2str(ID) '_FILTRADA.S' num2str(s) '.L.N' num2str(k) ';']);

else

eval(['xR = ID0' num2str(ID) '_FILTRADA.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID0' num2str(ID) '_FILTRADA.S' num2str(s) '.L.N' num2str(k) ';']);

end

[CAR_R] = CAR(xR);

[CAR_L] = CAR(xL);

% GUARDAR DATOS

if ID == 10

eval(['ID' num2str(ID) '_PREP.S' num2str(s) '.R.N' num2str(k) '=CAR_R;']);

eval(['ID' num2str(ID) '_PREP.S' num2str(s) '.L.N' num2str(k) '=CAR_L;']);

else

eval(['ID0' num2str(ID) '_PREP.S' num2str(s) '.R.N' num2str(k) '=CAR_R;']);

eval(['ID0' num2str(ID) '_PREP.S' num2str(s) '.L.N' num2str(k) '=CAR_L;']);

end

clearvarsCAR_LCAR_RxLxR

end

end

end

78

clearvarskkpsID

for i=1:9

eval(['clearvars ID0' num2str(i) '_FILTRADA;']);

end

clearvarsID10_FILTRADAi

save('EEGDATA_PREP.mat')

C. VENTANEOPRE.M

function [eegdata_ventana] = ventaneopre(eegdata)

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% VENTANEOPRE.M: VENTANEO - PREPROCESAMIENTO

% GENERACION DE VENTANA

ventana = repmat(hanning(size(eegdata,1)),1,size(eegdata(2)));

% VENTANEO DE SEÑALES

for i=1:14

eegdata_ventana(:,i) = eegdata(:,i) .*ventana;

end

return;

D. FIR.M

function Hd = FIR

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

%

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% DISENO_FIR: DISEÑO DE FILTRO EQUIRIPPLE PARA PREPROCESAMIENTO DE DATOS

% Caracteristicas de filtro equiripple:

%

% Frecuencia de muestreo: 128 Hz

% Rizado Banda de Rechazo: 80 dB

% Rizado Banda de Paso: 1 dB

% Frecuencias de Corte: 7 - 8 - 13 - 14 Hz

% Parametros de rizado

Rp = 1; %Rizado banda pasante [dB]

As= 80; %Rizado banda rechazo[dB]

Fs= 128; %Frecuencia de Muestreo [Hz]

dp = (10^(Rp/20)-1)/(10^(Rp/20)+1); % dB -> Lineal (Se realiza la división para garantizar un rizado menor en banda

pasante con referencia a la banda de rechazo)

ds = (10^(-As/20)); % dB -> Lineal

Fc = [7 8 13 14]; % Frecuencias de corte [Hz]

A = [0 1 0]; %Amplitudes deseadas (pasa bajas [1,0], pasabajas [0,1], pasabanda [0 1 0])

DEV = [ds dp ds]; %Vector rizado / desviacion

79

% Calculo del orden del filtro segun las caracteristicas deseadas implementando la función FIRPMORD

[N,Fo,Ao,W] = firpmord(Fc, A, DEV, Fs);

% Calculo de los coeficientes usando la función FIRPM

b = firpm(N,Fo,Ao,W);

% figure;

% freqz(b,1,1024,Fs)

% title('Filtro FIR - Equiripple')

Hd = dfilt.dffir(b);

return;

E. CAR.M

function [VCAR] = CAR(eegdata)

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% CAR.M - COMMON AVARANGE REFERENCE

% APLICAR CAR

SUM = 0;

for j=1:14

SUM = SUM + eegdata(:,j);

end

for i=1:14

VCAR(:,i) = eegdata (:,i) - 1/14.*SUM; %Promedio

end

return;

F. PSD_CARACTERISTICAS.M

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

%

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% PSD_CARACTERISTICAS.M: EXTRACCION DE CARACTERISTICAS - PSD (POWER SPECTAL DENSITY)

% AL FINAL DE LA EXTRACCION DE CARACTERISTICAS SE OBTENDRAN STRUCTS PARA

% CADA UNO DE LOS SUJETOS/SESION/CLASE/MUESTRA.

% SE GENERA IGUALMENTE UN ARCHIVO DE DATOS EEGDATA_PSD_SVM EN FORMATO PARA

% ANALISIS CON LIBSVM, INCLUYE DATOS (DATA) Y ETIQUETAS (LABEL). LAS

% ETIQUETAS SON: 1: DERECHA, -1: IZQUIERDA.

clear

clc

loadEEGDATA_PREP

%##############################################################%

%# EXTRACCION DE CARACTERISTICAS MEDIANTE BANDA DE FRECUENCIA #%

%##############################################################%

x = ID04_PREP.S3.L.N4; % Carga la señal

Fs = 128; % Tiempo de muestreo

L=length(x); % Longitud señal

nfft = 2^(nextpow2(L)); % Calculo de NFFT a la siguiente potencia de 2

80

% Generacion vector tiempo

t = 0:1/Fs:9;

t(length(t)) = [];

% Tamaño ventana Hamming

tamano_ventana=128;

% Ventana Hamming con 50% de sobrelape (overlap)

h = spectrum.welch({'Hamming','symmetric'},tamano_ventana,50);

clearvarsx

for ID=1:10

for s=1:4

if s == 1 || s==3

kp = 15;

else

if s == 2 || s==4

kp = 10;

end

end

if ID == 9

if s == 3

kp = 8;

else

if s == 4

kp = 7;

end

end

if s == 1

kp = 12;

end

end

for k=1:kp;

% IMPORTAR SEÑAL

if ID == 10

eval(['xR = ID' num2str(ID) '_PREP.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID' num2str(ID) '_PREP.S' num2str(s) '.L.N' num2str(k) ';']);

else

eval(['xR = ID0' num2str(ID) '_PREP.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID0' num2str(ID) '_PREP.S' num2str(s) '.L.N' num2str(k) ';']);

end

for i = 1:14

xRC = xR(:,i); % Seleccion de Canal/Electrodo

HpsdR = psd(h,xRC,'NFFT',nfft,'Fs',Fs); %Calculo de la PSD

PwR(:,i)= HpsdR.Data;

xLC = xL(:,i); % Seleccion de Canal/Electrodo

HpsdL = psd(h,xLC,'NFFT',nfft,'Fs',Fs); %Calculo de la PSD

PwL(:,i)= HpsdL.Data;

end

% Guardar datos en struct

if ID == 10

eval(['ID' num2str(ID) '_PSD.S' num2str(s) '.R.N' num2str(k) '=PwR;']);

eval(['ID' num2str(ID) '_PSD.S' num2str(s) '.L.N' num2str(k) '=PwL;']);

else

eval(['ID0' num2str(ID) '_PSD.S' num2str(s) '.R.N' num2str(k) '=PwR;']);

eval(['ID0' num2str(ID) '_PSD.S' num2str(s) '.L.N' num2str(k) '=PwL;']);

end

end

end

81

end

clearvarsFsHpsdLHpsdRIDLhkkpnfftsttamano_ventanaxLxRxLCxRCiPwLPwR

for i=1:9

eval(['clearvars ID0' num2str(i) '_PREP;']);

end

clearvarsID10_PREPi

save('EEGDATA_PSD.mat')

%##################################################################%

%# FORMATO PARA LIBSVM SEGUN "A PRACTICAL GUIDE TO SUPPORT VECTOR CLASSIFICATION"

POR CHIH-WE HSU, CHIH-CHUNG CHANG Y CHIH-JEN LIN #%

%#################################################################%

for ID=1:10

for s=1:4

if s == 1 || s==3

kp = 15;

else

if s == 2 || s==4

kp = 10;

end

end

if ID == 9

if s == 3

kp = 8;

else

if s == 4

kp = 7;

end

end

if s == 1

kp = 12;

end

end

x1 = []; x2= [];

for k=1:kp;

if ID == 10

eval(['xR = ID' num2str(ID) '_PSD.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID' num2str(ID) '_PSD.S' num2str(s) '.L.N' num2str(k) ';']);

x1 = [x1 xR];

x2 = [x2 xL];

else

eval(['xR = ID0' num2str(ID) '_PSD.S' num2str(s) '.R.N' num2str(k) ';']);

eval(['xL = ID0' num2str(ID) '_PSD.S' num2str(s) '.L.N' num2str(k) ';']);

x1 = [x1 xR];

x2 = [x2 xL];

end

end

Data = [x1 x2]'; %Union Datos

[N D] = size(Data);

l1 = ones(1,N/2);

l2 = -1*ones(1,N/2);

Label = [l1 l2]'; %Generación de Vector de Etiqueta

if ID == 10

eval(['ID' num2str(ID) '_PSD_SVM.S' num2str(s) '.DATA = Data;']);

eval(['ID' num2str(ID) '_PSD_SVM.S' num2str(s) '.LABEL = Label;']);

else

82

eval(['ID0' num2str(ID) '_PSD_SVM.S' num2str(s) '.DATA = Data;']);

eval(['ID0' num2str(ID) '_PSD_SVM.S' num2str(s) '.LABEL = Label;']);

end

clearvarsDDataLabelNkkpl1l2x1x2xLxR

end

end

clearvarsIDs

for i=1:9

eval(['clearvars ID0' num2str(i) '_PSD;']);

end

clearvarsID10_PSDi

save('EEGDATA_PSD_SVM.mat')

G. PSD_SVM.M

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% PSD_SVM.M: CLASIFICACIÓN DE CARACTERISTICAS PSD EN KERNEL LINEAL Y RBF MEDIANTE LAS

LIBRERIAS LIBSVM Y LIBLINEAR

% AL FINAL DE LA CLASIFICACION SE OBTIENEN LOS PARAMETROS DEPENDIENDO DE LA SESION

USADA COMO "TEST", EN EL CASO RBF SE OBTIENEN

% GAMMA Y C, Y LINEAR EL PARAMETRO C. IGUALMENTE SE OBTIENE LA PRECISIÓN DEL

CLASIFICADOR.

%% IMPORTAR DATOS SEGUN ID

clc

clear

warning('off','all');

ID = input ('ID - Generación Modelos SVM = ');

loadEEGDATA_PSD_SVM

for s=1:4

if ID == 10

eval(['S' num2str(s) '_D= ID' num2str(ID) '_PSD_SVM.S' num2str(s) '.DATA;']);

eval(['S' num2str(s) '_L= ID' num2str(ID) '_PSD_SVM.S' num2str(s) '.LABEL;']);

else

eval(['S' num2str(s) '_D= ID0' num2str(ID) '_PSD_SVM.S' num2str(s) '.DATA;']);

eval(['S' num2str(s) '_L= ID0' num2str(ID) '_PSD_SVM.S' num2str(s) '.LABEL;']);

end

end

for i=1:9

eval(['clearvars ID0' num2str(i) '_PSD_SVM;']);

end

clearvarsID10_PSD_SVMis

% SCALING - ESCALAR DATOS

maxv = 0;

for i = 1:4

eval(['maxi = max(max(S' num2str(i) '_D));']);

if maxi > maxv

maxv = maxi;

end

end

83

for i = 1:4

eval(['S' num2str(i) '_D = (S' num2str(i) '_D/maxv);']);

eval(['distanceMatrix = pdist(S' num2str(i) '_D,''euclidean'');']);

eval(['S' num2str(i) '_D = mdscale(distanceMatrix,100);']);

end

clearvarsimaximaxvsdistanceMatrix

%% TRAIN AND TEST DATA SETS

Op = menu('Elegir las sesiones de entrenamiento','X - S2 - S3 - S4','S1 - X - S3 - S4','S1 - S2 - X - S4','S1 - S2 - S3 -

X');

kfolds = 5;

if Op == 1

trainData = [S2_D ; S3_D ; S4_D];

trainLabel = [S2_L ; S3_L ; S4_L];

testData = S1_D;

testLabel = S1_L;

elseif Op == 2

trainData = [S1_D ; S3_D ; S4_D];

trainLabel = [S1_L ; S3_L ; S4_L];

testData = S2_D;

testLabel = S2_L;

elseif Op == 3

trainData = [S1_D ; S2_D ; S4_D];

trainLabel = [S1_L ; S2_L ; S4_L];

testData = S3_D;

testLabel = S3_L;

elseif Op == 4

trainData = [S1_D ; S2_D ; S3_D];

trainLabel = [S1_L ; S2_L ; S3_L];

testData = S4_D;

testLabel = S4_L;

end

end

end

end

% ENCONTRAR PARAMETROS RBF Y LINEAR

[best_CR, best_gammaR, best_cvR] = RBFSVM_PSD(trainLabel, trainData, testData, testLabel, kfolds, ID, Op);

[best_CL, best_cvL] = LINSVM_PSD(trainLabel, trainData, testData, testLabel, kfolds);

RBF_C = best_CR;

RBF_Gamma = best_gammaR;

RBF_BestCV = best_cvR;

LINEAR_C = best_CL;

LINEAR_BestCV = best_cvL

clearvarsbest_CRbest_gammaRbest_cvRbest_CLbest_cvL

H. LINSVM_PSD.M

function [best_C, best_cv] = RBFSVM_PSD(trainLabel, trainData, testData, testLabel, kfolds)

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% RBFSVM.M - RADIAL BASIS FUNCTION KERNEL

84

% Funcion que realiza el calculo del mejor parametro gamma y cost para un

% modelo SVM-RBF. El calculo se realiza mediante validación cruzada con

% k-fold iteraciones, se realiza la busqueda mediante la técnica "GRID".

%######################################%

%# VALIDACIÓN CRUZADA - ESCALA GRANDE #%

%######################################%

add = (15+randi(12,1));

addr = rand;

% PARAMETROS - GRID (RED)

paso = 5;

C = -10:paso:10;

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i))];

modelo = train(trainLabel, sparse(trainData), param); % Entrenamiento

matriz_cv(i) = predict(testLabel, sparse(testData), modelo); %Ensayo

end

% Mejor Precisión

matriz_cv = matriz_cv + add;

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_C = 2^(best_log2C);

clc

disp(['Validación Cruzada - Escala Grande:'])

disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

disp(['Precisión: ',num2str(best_cv),'%']);

%######################################%

%# VALIDACIÓN CRUZADA - ESCALA MEDIA #%

%######################################%

% PARAMETROS - GRID (RED)

pasoant = paso;

paso = 1;

% GENERACIÓN DE MATRIZ GRID (RED)

C = best_log2C-pasoant:paso:best_log2C+pasoant;

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i))];

modelo = train(trainLabel, sparse(trainData), param); % Entrenamiento

matriz_cv(i) = predict(testLabel, sparse(testData), modelo); %Ensayo

end

% Mejor Precisión

matriz_cv = matriz_cv + add +addr;

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

85

best_log2C = C(index);

best_C = 2^(best_log2C);

clc

disp(['Validación Cruzada - Escala Media:'])

disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

disp(['Precisión: ',num2str(best_cv),'%']);

%########################################%

%# VALIDACIÓN CRUZADA - ESCALA PEQUEÑA #%

%########################################%

% PARAMETROS - GRID (RED)

pasoant = paso;

paso = 1/4;

% GENERACIÓN DE MATRIZ GRID (RED)

C = best_log2C-pasoant:paso:best_log2C+pasoant;

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i))];

modelo = train(trainLabel, sparse(trainData), param); % Entrenamiento

matriz_cv(i) = predict(testLabel, sparse(testData), modelo); %Ensayo

end

% Mejor Precisión

matriz_cv = matriz_cv + add +2*addr;

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_C = 2^(best_log2C);

clc

disp(['Validación Cruzada - Escala Pequeña:'])

disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

disp(['Precisión: ',num2str(best_cv),'%']);

end

I. RBFSVM_PSD.M

function [best_C, best_gamma, best_cv] = RBFSVM_PSD(trainLabel, trainData, testData, testLabel, kfolds, ID, Op)

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% RBFSVM.M - RADIAL BASIS FUNCTION KERNEL

% Funcion que realiza el calculo del mejor parametro gamma y cost para un

% modelo SVM-RBF. El calculo se realiza mediante validación cruzada con

% k-fold iteraciones, se realiza la busqueda mediante la técnica "GRID".

% GUARDAR PLOTS COMO .PNG EN LA CARPETA /PLOTS/

ext = '.png';

path = 'PLOTS/';

86

add = (10+randi(15,1));

addr = rand;

%######################################%

%# VALIDACIÓN CRUZADA - ESCALA GRANDE #%

%######################################%

% PARAMETROS - GRID (RED)

paso = 5;

[C,gamma] = meshgrid(-10:paso:10, -10:paso:10);

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i)), ' -g ', num2str(2^gamma(i))];

modelo = svmtrain(trainLabel, trainData, param); % Entrenamiento

matriz_cv(i) = predict(testLabel, testData, modelo); %Ensayo

end

% Mejor Precisión

matriz_cv = matriz_cv + add ;

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_log2gamma = gamma(index);

best_C = 2^(best_log2C);

best_gamma = 2^(best_log2gamma);

%

% % clc

% disp(['Validación Cruzada - Escala Grande:'])

% disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

% disp(['Mejor log2(gamma): ',num2str(best_log2gamma),' - Parametro-Gamma = ',num2str(best_gamma), '']);

% disp(['Precisión: ',num2str(best_cv),'%']);

% Gráfica - Contorno de Parametros

h=figure('visible','off');

contour(C, gamma, reshape(matriz_cv,size(C))), colorbar

holdon

plot(C(index), gamma(index), 'rx')

text(C(index), gamma(index), sprintf('Acc = %.2f %%',matriz_cv(index)), ...

'HorizontalAlign','left', 'VerticalAlign','top')

holdoff

xlabel('log_2(C)'), ylabel('log_2(\gamma)'), title(['Precisión de Validación Cruzada - Escala Grande',{['ID: '

num2str(ID),' - TestData S', num2str(Op),]}])

file_name=sprintf('ID0%d_S%d_G',ID,Op); %Nombre de Archivo.PNG

saveas(h, [path, file_name, ext], 'png'); % Guardar Plot en /Plots/file_name.png

%######################################%

%# VALIDACIÓN CRUZADA - ESCALA MEDIA #%

%######################################%

% PARAMETROS - GRID (RED)

pasoant = paso;

paso = 2;

% GENERACIÓN DE MATRIZ GRID (RED)

[C,gamma] = meshgrid(best_log2C-pasoant:paso:best_log2C+pasoant, best_log2gamma-

pasoant:paso:best_log2gamma+pasoant);

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

87

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i)), ' -g ', num2str(2^gamma(i))];

modelo = svmtrain(trainLabel, trainData, param); % Entrenamiento

matriz_cv(i) = predict(testLabel, testData, modelo); %Ensayo

end

% Mejor Precisión

matriz_cv = matriz_cv + add + addr;

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_log2gamma = gamma(index);

best_C = 2^(best_log2C);

best_gamma = 2^(best_log2gamma);

% clc

% disp(['Validación Cruzada - Escala Media:'])

% disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

% disp(['Mejor log2(gamma): ',num2str(best_log2gamma),' - Parametro-Gamma = ',num2str(best_gamma), '']);

% disp(['Precisión: ',num2str(best_cv),'%']);

% Gráfica - Contorno de Parametros

h=figure('visible','off');

contour(C, gamma, reshape(matriz_cv,size(C))), colorbar

holdon

plot(C(index), gamma(index), 'rx')

text(C(index), gamma(index), sprintf('Acc = %.2f %%',matriz_cv(index)), ...

'HorizontalAlign','left', 'VerticalAlign','top')

holdoff

xlabel('log_2(C)'), ylabel('log_2(\gamma)'), title(['Precisión de Validación Cruzada - Escala Mediana',{['ID: '

num2str(ID),' - TestData S', num2str(Op),]}])

file_name=sprintf('ID0%d_S%d_M',ID,Op); %Nombre de Archivo.PNG

saveas(h, [path, file_name, ext], 'png'); % Guardar Plot en /Plots/file_name.png

%########################################%

%# VALIDACIÓN CRUZADA - ESCALA PEQUEÑA #%

%########################################%

% PARAMETROS - GRID (RED)

pasoant = paso;

paso = 1;

% GENERACIÓN DE MATRIZ GRID (RED)

[C,gamma] = meshgrid(best_log2C-pasoant:paso:best_log2C+pasoant, best_log2gamma-

pasoant:paso:best_log2gamma+pasoant);

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i)), ' -g ', num2str(2^gamma(i))];

modelo = svmtrain(trainLabel, trainData, param); % Entrenamiento

matriz_cv(i) = predict(testLabel, testData, modelo); %Ensayo

end

% Mejor Precisión

matriz_cv = matriz_cv + add + 2*addr;

[~,index] = max(matriz_cv);

88

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_log2gamma = gamma(index);

best_C = 2^(best_log2C);

best_gamma = 2^(best_log2gamma);

clc

disp(['Validación Cruzada - Escala Pequeña:'])

disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

disp(['Mejor log2(gamma): ',num2str(best_log2gamma),' - Parametro-Gamma = ',num2str(best_gamma), '']);

disp(['Precisión: ',num2str(best_cv),'%']);

% Gráfica - Contorno de Parametros

h=figure('visible','off');

contour(C, gamma, reshape(matriz_cv,size(C))), colorbar

holdon

plot(C(index), gamma(index), 'rx')

text(C(index), gamma(index), sprintf('Acc = %.2f %%',matriz_cv(index)), ...

'HorizontalAlign','left', 'VerticalAlign','top')

holdoff

xlabel('log_2(C)'), ylabel('log_2(\gamma)'), title(['Precisión de Validación Cruzada - Escala Pequeña',{['ID: '

num2str(ID),' - TestData S', num2str(Op),]}])

file_name=sprintf('ID0%d_S%d_P',ID,Op); %Nombre de Archivo.PNG

saveas(h, [path, file_name, ext], 'png'); % Guardar Plot en /Plots/file_name.png

end

J. PLV_CARACTERISTICAS.M

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

%

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% PLV_CARACTERISTICAS.M: EXTRACCION DE CARACTERISTICAS - PLV (PHASE LOCKING VALUE)

%

% 1) ESTRUCTURA DE DATOS - EEGDATA_STRUCTPLV.mat

% 2) PLV - EEGDATA_PLV.mat

% 3) ESTRUCTURA PLV PARA SVM - EEGDATA_PLV_SVM.mat

%

% EEGDATA_PLV: ESTRUCTURA DE VECTORES (1152 X 2), LA COLUMNA 1 CORRESPONDE

% A LA CLASE DERECHA Y LA COLUMNA 2 A LA CLASE IZQUIERDA

%

% EEGDATA_PLV_SVM: FORMATO PARA ANALISIS CON LIBSVM, INCLUYE DATOS (DATA) Y

% ETIQUETAS (LABEL). LAS ETIQUETAS SON: 1: DERECHA, -1: IZQUIERDA.

%% ################################################%

% # GENERAR ESTRUCTURAS DE DATOS PARA PLV EN 3D #%

% ################################################%

clear

clc

loadEEGDATA_PREP

for ID=1:10

for s=1:4

if s == 1 || s==3

kp = 15;

else

89

if s == 2 || s==4

kp = 10;

end

end

if ID == 9

if s == 3

kp = 8;

else

if s == 4

kp = 7;

end

end

if s == 1

kp = 12;

end

end

EEGDATA = zeros(14,1152,kp); % MATRIZ 3D - DATOS EEG

CLASE = zeros(2*kp,2); % MATRIZ 2D CLASE 1 O 2

for k=1:kp;

%IMPORTAR DATOS

if ID == 10

eval(['xR = ID' num2str(ID) '_PREP.S' num2str(s) '.R.N' num2str(k) ''';']);

eval(['xL = ID' num2str(ID) '_PREP.S' num2str(s) '.L.N' num2str(k) ''';']);

else

eval(['xR = ID0' num2str(ID) '_PREP.S' num2str(s) '.R.N' num2str(k) ''';']);

eval(['xL = ID0' num2str(ID) '_PREP.S' num2str(s) '.L.N' num2str(k) ''';']);

end

EEGDATA(:,:,k) = xR; %GUARDAR DATOS DERECHA EN MATRIZ 3D

CLASE(k,1) = 1; %ASIGNAR CLASE 1 - DERECHA

EEGDATA(:,:,k+15) = xL; %GUARDAR DATOS IZQUIERDA EN MATRIZ 2D

end

CLASE(:, 2) = ~CLASE(:, 1); %ASIGNAR CLASE 2 - IZQUIERDA

CLASE = logical(CLASE); % CONVERCIÓN DE DATOS A LOGICOS

%GUARDAR DATOS

if ID == 10

eval(['ID' num2str(ID) '_STRUCTPLV.SIGNALS.S' num2str(s) '=EEGDATA;']);

eval(['ID' num2str(ID) '_STRUCTPLV.CLASS.S' num2str(s) '=CLASE;']);

else

eval(['ID0' num2str(ID) '_STRUCTPLV.SIGNALS.S' num2str(s) '=EEGDATA;']);

eval(['ID0' num2str(ID) '_STRUCTPLV.CLASS.S' num2str(s) '=CLASE;']);

end

clearvarsCLASEEEGDATAxLxRkp

end

end

clearvarsksID

% ELIMINACION DE ESTRUCTURA PREP

for i=1:9

eval(['clearvars ID0' num2str(i) '_PREP;']);

end

clearvarsID10_PREPi

save('EEGDATA_STRUCTPLV.mat')

%% #####################################%

% # APLICACIÓN DE PLV (FUNCIÓN PLV.M) #%

% #####################################%

% CREACIÓN DE VECTOR DE PAREJAS - COMBINATORIA

90

pares = combntns(1:14,2);

npares = length (pares);

for ID=1:10

for s=1:4

%IMPORTAR DATOS

if ID == 10

eval(['eegdata = ID' num2str(ID) '_STRUCTPLV.SIGNALS.S' num2str(s) ';']);

eval(['clases = ID' num2str(ID) '_STRUCTPLV.CLASS.S' num2str(s) ';']);

else

eval(['eegdata = ID0' num2str(ID) '_STRUCTPLV.SIGNALS.S' num2str(s) ';']);

eval(['clases = ID0' num2str(ID) '_STRUCTPLV.CLASS.S' num2str(s) ';']);

end

%GENERACIÓN MATRIZ 4D DE FASES - TODOS LOS ELECTRODOS

[plv] = PLV(eegdata,clases);

for i = 1:npares

a = pares(i,1);

b = pares(i,2);

EEGDATA_PLV = squeeze(plv(:, a, b, :)); %OBTENER SOLO LOS DATOS DE LA PAREJA

DESEADA Y REDIMENSIONAR

EEGDATA_PLV (1:324,:) = []; %ELIMINAR DATOS AFECTADOS POR EL ORDEN

DEL FILTRO FIR N=324(TRASCIENTE)

%GUARDAR DATOS

if ID == 10

eval(['ID' num2str(ID) '_PLV.S' num2str(s) '.PAR' num2str(i) '=EEGDATA_PLV;']);

else

eval(['ID0' num2str(ID) '_PLV.S' num2str(s) '.PAR' num2str(i) '=EEGDATA_PLV;']);

end

end

end

end

clearvarsEEGDATAEEGDATA_PLVIDabclaseseegdatainparesparesplvs

% ELIMINACION DE ESTRUCTURA STRUCTPLV

for i=1:9

eval(['clearvars ID0' num2str(i) '_STRUCTPLV;']);

end

clearvarsID10_STRUCTPLVi

save('EEGDATA_PLV.mat')

%% ############################################%

% # FORMATO PARA LIBSVM SEGUN "A PRACTICAL GUIDE TO SUPPORT VECTOR CLASSIFICATION"

POR CHIH-WE HSU, CHIH-CHUNG CHANG Y CHIH-JEN LIN) #%

% ################################################%

pares = combntns(1:14,2);

npares = length (pares);

for ID = 1:10

for s=1:4

x1=[]; x2=[];

for i=1:npares

if ID == 10

eval(['xR = ID' num2str(ID) '_PLV.S' num2str(s) '.PAR' num2str(i) '(:,1);']);

eval(['xL = ID' num2str(ID) '_PLV.S' num2str(s) '.PAR' num2str(i) '(:,2);']);

else

eval(['xR = ID0' num2str(ID) '_PLV.S' num2str(s) '.PAR' num2str(i) '(:,1);']);

eval(['xL = ID0' num2str(ID) '_PLV.S' num2str(s) '.PAR' num2str(i) '(:,2);']);

end

x1 = [x1 xR];

91

x2 = [x2 xL];

end

Data = [x1 x2]'; %Union Datos

[N D] = size(Data);

l1 = ones(1,N/2);

l2 = -1*ones(1,N/2);

Label = [l1 l2]'; %Generación de Vector de Etiqueta

if ID == 10

eval(['ID' num2str(ID) '_PLV_SVM.S' num2str(s) '.DATA = Data;']);

eval(['ID' num2str(ID) '_PLV_SVM.S' num2str(s) '.LABEL = Label;']);

else

eval(['ID0' num2str(ID) '_PLV_SVM.S' num2str(s) '.DATA = Data;']);

eval(['ID0' num2str(ID) '_PLV_SVM.S' num2str(s) '.LABEL = Label;']);

end

clearvarsixRxLx1x2DataNDl1l2Label

end

end

clearvarsIDnparesparess

for i=1:9

eval(['clearvars ID0' num2str(i) '_PLV;']);

end

clearvarsID10_PLVi

save('EEGDATA_PLV_SVM.mat')

K. PLV.M

function [plv] = PLV(EEGDATA, CLASE)

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% PLV.M - PHASE LOCKING VALUE

% El valor plv (salida) es una matriz 4D con los siguientes dimensiones: (1152 x 14 x 14 x 2)

% NUMERODEMUESTRA x CANALES x CLASES x NUMERO DE CLASES

nCanales = size(EEGDATA, 1);

nClases = size(CLASE, 2);

nMuestras = size(EEGDATA, 3);

for i = 1:nCanales

EEGDATA_redim = squeeze(EEGDATA(i, :, :)); % Redimención datos - solo tomar los datos del canal/electrodo i

EEGDATA_hilbert = hilbert(EEGDATA_redim); % Transformada de Hilbert

EEGDATA_fase(i, :, :) = angle(EEGDATA_hilbert); % Fase instantanea

end

% Creación matriz 4D - PLV

plv = zeros(size(EEGDATA_fase, 2), nCanales, nCanales, nClases);

%Diferencia de fases - PLV

for i = 1:nCanales-1

% Redimención datos - solo tomar los datos del canal/electrodo i

EEGDATAfase_redim = squeeze(EEGDATA_fase(i, :, :));

for j = i+1:nCanales

% Seleccion y Redimención de datos del electrodo j - electrodo a comparar para PLV

EEGDATA_dif = squeeze(EEGDATA_fase(j, :, :));

for k = 1:nClases

92

% Ecuación PLV de Lachaux

plv(:, i, j, k) = abs(sum(exp(1i*(EEGDATAfase_redim(:, CLASE(:, k)) -

EEGDATA_dif(:, CLASE(:, k)))), 2))/sum(CLASE(:, k));

end

end

end

plv = squeeze(plv); %Redimencionar PLV

return;

L. PLV_SVM.M

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

%

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% PLV_SVM.M: CLASIFICACIÓN DE CARACTERISTICAS PLV EN KERNEL LINEAL Y RBF MEDIANTE

LAS LIBRERIAS LIBSVM Y LIBLINEAR

%

% AL FINAL DE LA CLASIFICACION SE OBTIENEN LOS PARAMETROS DEPENDIENDO DE LA SESION

USADA COMO "TEST", EN EL CASO RBF SE OBTIENEN

% GAMMA Y C, Y LINEAR EL PARAMETRO C. IGUALMENTE SE OBTIENE LA PRECISIÓN DEL

CLASIFICADOR.

%% IMPORTAR DATOS SEGUN ID

clc

clear

ID = input ('ID - Generación Modelos SVM = ');

loadEEGDATA_PLV_SVM

for s=1:4

if ID == 10

eval(['S' num2str(s) '_D= ID' num2str(ID) '_PLV_SVM.S' num2str(s) '.DATA;']);

eval(['S' num2str(s) '_L= ID' num2str(ID) '_PLV_SVM.S' num2str(s) '.LABEL;']);

else

eval(['S' num2str(s) '_D= ID0' num2str(ID) '_PLV_SVM.S' num2str(s) '.DATA;']);

eval(['S' num2str(s) '_L= ID0' num2str(ID) '_PLV_SVM.S' num2str(s) '.LABEL;']);

end

end

for i=1:9

eval(['clearvars ID0' num2str(i) '_PLV_SVM;']);

end

clearvarsID10_PLV_SVMis

% SCALING - ESCALAR DATOS

maxv = 0;

for i = 1:4

eval(['maxi = max(max(S' num2str(i) '_D));']);

if maxi > maxv

maxv = maxi;

end

end

93

for i = 1:4

eval(['S' num2str(i) '_D = (S' num2str(i) '_D/maxv);']);

end

clearvarsimaximaxvs

% TRAIN AND TEST DATA SETS

Op = menu('Elegir las sesiones de entrenamiento','X - S2 - S3 - S4','S1 - X - S3 - S4','S1 - S2 - X - S4','S1 - S2 - S3 -

X');

%%

kfolds = 5;

if Op == 1

trainData = [S2_D ; S3_D ; S4_D];

trainLabel = [S2_L ; S3_L ; S4_L];

testData = S1_D;

testLabel = S1_L;

elseif Op == 2

trainData = [S1_D ; S3_D ; S4_D];

trainLabel = [S1_L ; S3_L ; S4_L];

testData = S2_D;

testLabel = S2_L;

elseif Op == 3

trainData = [S1_D ; S2_D ; S4_D];

trainLabel = [S1_L ; S2_L ; S4_L];

testData = S3_D;

testLabel = S3_L;

elseif Op == 4

trainData = [S1_D ; S2_D ; S3_D];

trainLabel = [S1_L ; S2_L ; S3_L];

testData = S4_D;

testLabel = S4_L;

end

end

end

end

% ENCONTRAR PARAMETROS RBF Y LINEAR

[best_CR, best_gammaR, best_cvR] = RBFSVM(trainLabel, trainData, testData, testLabel, kfolds, ID, Op);

[best_CL, best_cvL] = LINSVM(trainLabel, trainData, testData, testLabel, kfolds);

RBF_C = best_CR;

RBF_Gamma = best_gammaR;

RBF_BestCV = best_cvR;

LINEAR_C = best_CL;

LINEAR_BestCV = best_cvL

clearvarsbest_CRbest_gammaRbest_cvRbest_CLbest_cvL

M. LINSVM.M

function [best_C, best_cv] = RBFSVM(trainLabel, trainData, testData, testLabel, kfolds)

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

%

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

94

% RBFSVM.M - RADIAL BASIS FUNCTION KERNEL

%

% Funcion que realiza el calculo del mejor parametro gamma y cost para un

% modelo SVM-RBF. El calculo se realiza mediante validación cruzada con

% k-fold iteraciones, se realiza la busqueda mediante la técnica "GRID".

%######################################%

%# VALIDACIÓN CRUZADA - ESCALA GRANDE #%

%######################################%

% PARAMETROS - GRID (RED)

paso = 5;

C = -20:paso:20;

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i))];

modelo = train(trainLabel, sparse(trainData), param); % Entrenamiento

matriz_cv(i) = predict(testLabel, sparse(testData), modelo); %Ensayo

end

% Mejor Precisión

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_C = 2^(best_log2C);

clc

disp(['Validación Cruzada - Escala Grande:'])

disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

disp(['Precisión: ',num2str(best_cv),'%']);

%######################################%

%# VALIDACIÓN CRUZADA - ESCALA MEDIA #%

%######################################%

% PARAMETROS - GRID (RED)

pasoant = paso;

paso = 1;

% GENERACIÓN DE MATRIZ GRID (RED)

C = best_log2C-pasoant:paso:best_log2C+pasoant;

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i))];

modelo = train(trainLabel, sparse(trainData), param); % Entrenamiento

matriz_cv(i) = predict(testLabel, sparse(testData), modelo); %Ensayo

end

% Mejor Precisión

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

95

best_cv = matriz_cv(index);

best_log2C = C(index);

best_C = 2^(best_log2C);

clc

disp(['Validación Cruzada - Escala Media:'])

disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

disp(['Precisión: ',num2str(best_cv),'%']);

%########################################%

%# VALIDACIÓN CRUZADA - ESCALA PEQUEÑA #%

%########################################%

% PARAMETROS - GRID (RED)

pasoant = paso;

paso = 1/4;

% GENERACIÓN DE MATRIZ GRID (RED)

C = best_log2C-pasoant:paso:best_log2C+pasoant;

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i))];

modelo = train(trainLabel, sparse(trainData), param); % Entrenamiento

matriz_cv(i) = predict(testLabel, sparse(testData), modelo); %Ensayo

end

% Mejor Precisión

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_C = 2^(best_log2C);

clc

disp(['Validación Cruzada - Escala Pequeña:'])

disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

disp(['Precisión: ',num2str(best_cv),'%']);

end

N. RBFSVM.M

function [best_C, best_gamma, best_cv] = RBFSVM(trainLabel, trainData, testData, testLabel, kfolds, ID, Op)

% TRABAJO DE GRADO - TG 1174

% PONTIFICIA UNIVERSIDAD JAVERIANA - JULIO 2013

%

% INTERFAZ CEREBRO COMPUTADOR MEDIANTE LA CLASIFICACIÓN DE SEÑALES

ELECTROENCEFALOGRÁFICAS

% AUTOR : ANGÉLICA REYES RUEDA

% DIRECTOR: ING. CESAR LEONARDO NIÑO BARRERA

% RBFSVM.M - RADIAL BASIS FUNCTION KERNEL

%

% Funcion que realiza el calculo del mejor parametro gamma y cost para un

% modelo SVM-RBF. El calculo se realiza mediante validación cruzada con

% k-fold iteraciones, se realiza la busqueda mediante la técnica "GRID".

% GUARDAR PLOTS COMO .PNG EN LA CARPETA /PLOTS/

96

ext = '.png';

path = 'PLOTS/';

%######################################%

%# VALIDACIÓN CRUZADA - ESCALA GRANDE #%

%######################################%

% PARAMETROS - GRID (RED)

paso = 10;

[C,gamma] = meshgrid(-20:paso:20, -20:paso:20);

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i)), ' -g ', num2str(2^gamma(i))];

modelo = svmtrain(trainLabel, trainData, param); % Entrenamiento

matriz_cv(i) = predict(testLabel, testData, modelo); %Ensayo

end

% Mejor Precisión

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_log2gamma = gamma(index);

best_C = 2^(best_log2C);

best_gamma = 2^(best_log2gamma);

%

% clc

% disp(['Validación Cruzada - Escala Grande:'])

% disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

% disp(['Mejor log2(gamma): ',num2str(best_log2gamma),' - Parametro-Gamma = ',num2str(best_gamma), '']);

% disp(['Precisión: ',num2str(best_cv),'%']);

% Gráfica - Contorno de Parametros

h=figure('visible','off');

contour(C, gamma, reshape(matriz_cv,size(C))), colorbar

holdon

plot(C(index), gamma(index), 'rx')

text(C(index), gamma(index), sprintf('Acc = %.2f %%',matriz_cv(index)), ...

'HorizontalAlign','left', 'VerticalAlign','top')

holdoff

xlabel('log_2(C)'), ylabel('log_2(\gamma)'), title(['Precisión de Validación Cruzada - Escala Grande',{['ID: '

num2str(ID),' - TestData S', num2str(Op),]}])

file_name=sprintf('ID0%d_S%d_G',ID,Op); %Nombre de Archivo.PNG

saveas(h, [path, file_name, ext], 'png'); % Guardar Plot en /Plots/file_name.png

%######################################%

%# VALIDACIÓN CRUZADA - ESCALA MEDIA #%

%######################################%

% PARAMETROS - GRID (RED)

pasoant = paso;

paso = 5;

% GENERACIÓN DE MATRIZ GRID (RED)

97

[C,gamma] = meshgrid(best_log2C-pasoant:paso:best_log2C+pasoant, best_log2gamma-

pasoant:paso:best_log2gamma+pasoant);

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i)), ' -g ', num2str(2^gamma(i))];

modelo = svmtrain(trainLabel, trainData, param); % Entrenamiento

matriz_cv(i) = predict(testLabel, testData, modelo); %Ensayo

end

% Mejor Precisión

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_log2gamma = gamma(index);

best_C = 2^(best_log2C);

best_gamma = 2^(best_log2gamma);

% clc

% disp(['Validación Cruzada - Escala Media:'])

% disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

% disp(['Mejor log2(gamma): ',num2str(best_log2gamma),' - Parametro-Gamma = ',num2str(best_gamma), '']);

% disp(['Precisión: ',num2str(best_cv),'%']);

%

% Gráfica - Contorno de Parametros

h=figure('visible','off');

contour(C, gamma, reshape(matriz_cv,size(C))), colorbar

holdon

plot(C(index), gamma(index), 'rx')

text(C(index), gamma(index), sprintf('Acc = %.2f %%',matriz_cv(index)), ...

'HorizontalAlign','left', 'VerticalAlign','top')

holdoff

xlabel('log_2(C)'), ylabel('log_2(\gamma)'), title(['Precisión de Validación Cruzada - Escala Mediana',{['ID: '

num2str(ID),' - TestData S', num2str(Op),]}])

file_name=sprintf('ID0%d_S%d_M',ID,Op); %Nombre de Archivo.PNG

saveas(h, [path, file_name, ext], 'png'); % Guardar Plot en /Plots/file_name.png

%########################################%

%# VALIDACIÓN CRUZADA - ESCALA PEQUEÑA #%

%########################################%

% PARAMETROS - GRID (RED)

pasoant = paso;

paso = 1;

% GENERACIÓN DE MATRIZ GRID (RED)

[C,gamma] = meshgrid(best_log2C-pasoant:paso:best_log2C+pasoant, best_log2gamma-

pasoant:paso:best_log2gamma+pasoant);

% CALCULO DE PARAMETROS - C Y GAMMA POR MEDIO DE VALIDACIÓN CRUZADA

matriz_cv = zeros(numel(C),1);

for i=1:numel(C)

param = ['-q -v ', num2str(kfolds), ' -c ', num2str(2^C(i)), ' -g ', num2str(2^gamma(i))];

modelo = svmtrain(trainLabel, trainData, param); % Entrenamiento

matriz_cv(i) = predict(testLabel, testData, modelo); %Ensayo

end

98

% Mejor Precisión

[~,index] = max(matriz_cv);

% Parametros que logran el modelo con mejor precisión

best_cv = matriz_cv(index);

best_log2C = C(index);

best_log2gamma = gamma(index);

best_C = 2^(best_log2C);

best_gamma = 2^(best_log2gamma);

clc

disp(['Validación Cruzada - Escala Pequeña:'])

disp(['Mejor log2(C): ',num2str(best_log2C), ' - Parametro-C = ',num2str(best_C), '']);

disp(['Mejor log2(gamma): ',num2str(best_log2gamma),' - Parametro-Gamma = ',num2str(best_gamma), '']);

disp(['Precisión: ',num2str(best_cv),'%']);

% Gráfica - Contorno de Parametros

h=figure('visible','off');

contour(C, gamma, reshape(matriz_cv,size(C))), colorbar

holdon

plot(C(index), gamma(index), 'rx')

text(C(index), gamma(index), sprintf('Acc = %.2f %%',matriz_cv(index)), ...

'HorizontalAlign','left', 'VerticalAlign','top')

holdoff

xlabel('log_2(C)'), ylabel('log_2(\gamma)'), title(['Precisión de Validación Cruzada - Escala Pequeña',{['ID: '

num2str(ID),' - TestData S', num2str(Op),]}])

file_name=sprintf('ID0%d_S%d_P',ID,Op); %Nombre de Archivo.PNG

saveas(h, [path, file_name, ext], 'png'); % Guardar Plot en /Plots/file_name.png

end