Maestría en Ciencias de la...

201
Maestría en Ciencias de la Computación Tesis Interfaz Cerebro – Computadora para el Control de un Cursor Basada en Ondas Cerebrales por: Job Ramón de la O Chávez Asesor: Dr. Carlos Avilés Cruz Área de Concentración: Procesamiento de Señales y Reconocimiento de Patrones

Transcript of Maestría en Ciencias de la...

Page 1: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Maestría en Ciencias de la Computación

Tesis

Interfaz Cerebro – Computadora para el Control de un Cursor Basada en Ondas

Cerebrales

por: Job Ramón de la O Chávez

Asesor: Dr. Carlos Avilés Cruz

Área de Concentración: Procesamiento de Señales y Reconocimiento de Patrones

Page 2: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 3: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Resumen En esta investigación nosotros proponemos el desarrollo de una nueva interfaz de comunicación entre los humanos y las computadoras, por medio de ondas Electroencefalográficas (EEG). La investigación se enfoca en la extracción de características de señales EEG que permitan identificar el movimiento imaginario que el usuario desea realizar con el puntero del ratón. La búsqueda de características se centra en 3 parámetros, uno en el dominio del tiempo (P300) y 2 en el dominio de la frecuencia (Beta y Mu). Los análisis realizados para la búsqueda de características que se llevaron a cabo en este trabajo fueron Análisis de Fourier, Transformada Wavelet, Transformada Wigner-Ville, análisis de cambio de fase y análisis de amplitud. Los resultados de esta búsqueda no ofrecieron la información necesaria para desarrollar dicha interfaz por lo que se optó por usar señales relacionadas con los movimientos oculares (Electro-oculogramas o EOG) con los cuales se pudo cumplir el objetivo de esta tesis, alcanzando resultados de clasificación del 95% usando un clasificador múltiple conformado por un clasificador Gaussiano, un clasificador KNN y un clasificador basado en una red neuronal artificial.

Abstract Researchers on Brain-Computer interface (BCI) have tried to identify the origin of body movement in humans with limited success. This work looks at the problem using electroencephalograph signals also called EEG signals. This research is focused in the features extraction of three parameters called P300 (in the time domain), Beta and Mu (in the frequency domain). The analysis tools used to the features extraction was Fourier Analysis, Wavelet Transform, Wigner-Ville Transform, shift-phase analysis and amplitude analysis. The analysis performed with this tools don’t delivery the enough information to make the identification of the movements and its classification. By the above mentioned, we change the EEG signals by Electro-oculogram signals (EOG), that are emitted by the ocular movement. With this signals we can make a good segmentation and a good classification using a multiple classifier composed by Gaussian classifier, KNN classifier and artificial neural network based classifier, reaching a 95% of accuracy in the performance test.

Page 4: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 5: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Índice

1 Introducción

1 Introducción .................................................................................................................................................................................. 1 1.1 Partes de una BCI....................................................................................................................................................................... 2 1.2 Antecedentes y Estado del Arte.................................................................................................................................................. 5 1.3 Justificación.............................................................................................................................................................................. 12

2 Planteamiento del Problema

2 Planteamiento del Problema........................................................................................................................................................ 15 2.1 Descripción del Problema ........................................................................................................................................................ 15 2.1.1 Componente Frecuencial Beta............................................................................................................................................... 17 2.1.2 Componente Frecuencial mu................................................................................................................................................. 17 2.1.3 Componente Temporal P300................................................................................................................................................. 18 2.2 El entrenamiento ...................................................................................................................................................................... 19 2.3 Objetivo General ...................................................................................................................................................................... 20 2.4 Objetivos específicos................................................................................................................................................................ 20

3 Conceptos Teóricos

3. Conceptos Teóricos .................................................................................................................................................................... 22 3.1 Estructura básica de una BCI ................................................................................................................................................... 22 3.1.1 Los electrodos y el Electrocap............................................................................................................................................... 23 3.1.2 Sistema de adquisición de EEG............................................................................................................................................. 24 3.1.2.1 La neurona.......................................................................................................................................................................... 25 3.1.2.2 La comunicación neuronal. ................................................................................................................................................ 26 3.1.3 Computadora y Software de captura...................................................................................................................................... 31 3.1.4 Retroalimentación ................................................................................................................................................................. 31 3.1.5 Base de Datos de EEG........................................................................................................................................................... 32 3.2 Acondicionamiento de señales electroencefalograficas............................................................................................................ 33 3.3 Análisis de las señales y reconocimiento de patrones............................................................................................................... 33 3.3.1 El reconocimiento de Patrones (Extracción de características) ............................................................................................. 35 3.3.2 Métodos de Discriminación................................................................................................................................................... 36 3.4 Los clasificadores estadísticos.................................................................................................................................................. 37 3.4.1 El Clasificador KNN. ............................................................................................................................................................ 39 3.4.2 El Clasificador Gaussiano. .................................................................................................................................................... 40 3.4.3 Clasificador Basado en Redes Neuronales. ........................................................................................................................... 42 3.4.4 Estructura de un Clasificador Múltiple.................................................................................................................................. 43 3.5 Métodos de evaluación de desempeño ..................................................................................................................................... 45 3.5.1 Deja Uno Fuera (Leave One Out).......................................................................................................................................... 46 3.5.2 Resubstitution........................................................................................................................................................................ 47 3.5.3 Cross-Validation.................................................................................................................................................................... 47

4 Protocolo Experimental

4 Protocolo Experimental............................................................................................................................................................... 49 4.1 Especificaciones Técnicas ........................................................................................................................................................ 49 4.1.1 Equipo Biomédico................................................................................................................................................................. 49 4.1.2 Equipo de Cómputo............................................................................................................................................................... 51 4.1.3 Software ................................................................................................................................................................................ 51

Page 6: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

4.2 Desarrollo Experimental.......................................................................................................................................................... 52 4.2.1 Programación del amplificador MS-1000.............................................................................................................................. 53 4.2.2 Diseño e Implementación de las Aplicaciones para el Muestreo y Entrenamiento................................................................ 55 4.2.2.1 Preparación del usuario para la toma de lecturas EEG ....................................................................................................... 56 4.2.3 Creación del Banco de Lecturas EEG ................................................................................................................................... 58 4.2.3.1 Sesiones de Grabación........................................................................................................................................................ 59 4.2.3.2 Origen de la señal ............................................................................................................................................................... 60 4.3 Clasificación de las componentes de la señal EEG .................................................................................................................. 62 4.3.1 Procesamiento de la señal...................................................................................................................................................... 62 4.3.2 Extracción de características. ................................................................................................................................................ 71 4.3.2.1 Búsqueda de Características Separables ............................................................................................................................. 71

5 Protocolo Experimental de EOG

5. Protocolo Experimental de EOG ................................................................................................................................................ 86 5.1 EOG ......................................................................................................................................................................................... 86 5.1.1 Estado del Arte de Interfaces basadas en EOG...................................................................................................................... 87 5.2 Diseño del Protocolo Experimental para EOG ......................................................................................................................... 88 5.2.1 Diseño del Montaje ............................................................................................................................................................... 88 5.2.2 Adquisición y Caracterización de señales EOG .................................................................................................................... 91 5.3 Diseño del Protocolo de Prueba ............................................................................................................................................... 93

6 Pruebas y Resultados

6 Pruebas y Resultados..................................................................................................................................................................100 6.1 Resultados por Clasificador.....................................................................................................................................................100 6.1.1 Validación Leave One Out ...................................................................................................................................................100 6.1.2 Validación por Re-substitución ............................................................................................................................................101 6.1.3 Validación Cruzada o Cross-Validation ...............................................................................................................................102 6.2 Resultados del Clasificador Múltiple de Voto Mayoritario .....................................................................................................107 6.3 Resultados del Clasificador Múltiple de Unanimidad .............................................................................................................109 6.4 Pruebas y Resultados en Línea ................................................................................................................................................111

7 Conclusiones y Perspectivas

7 Conclusiones y Perspectivas.......................................................................................................................................................114 7.1 Conclusiones ...........................................................................................................................................................................114 7.2 Perspectivas.............................................................................................................................................................................115

B Bibliografía

Bibliografía ...................................................................................................................................................................................116

A Anexo

Anexo I..........................................................................................................................................................................................121 A.1 Comandos SCSI para control del Mindset MS-1000......................................................................................................121, 122 A2 Código fuente en Matlab .........................................................................................................................................................139 A3 Código exportado a C..............................................................................................................................................................169

Page 7: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Capitulo 1

Introducción

Page 8: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 9: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

1

1 Introducción. El desarrollo de la tecnología ha llevado a las computadoras de uso común (Computadoras Personales o PC) a ser equipos con gran capacidad de cálculo y almacenamiento. Puntos en los que se ha centrado su desarrollo, dejando de lado a una rama de las PC que prácticamente no ha cambiado desde que se crearon. Las interfaces de entrada y salida, que básicamente se componen de 3 elementos, dos de entrada, teclado y ratón, y uno de salida, el monitor. La tecnología de las interfaces de comunicación de la PC originalmente fueron creadas en base a los recursos de los que se disponían en ese momento, razón por la cual el Mouse es un dispositivo independiente (con carga mínima al sistema), sin embargo con el desarrollo de las interfaces gráficas cada vez mas complejas y con el crecimiento de la capacidad computacional de los equipos, se empiezan a vislumbrar los problemas que causa la falta de una interfaz de comunicación adecuada a las capacidades intelectuales del hombre y a las capacidades de los equipos de cómputo de los que dispone [1] . Por otra parte, (pero hacia el mismo punto) está el uso de la tecnología para asistir a personas discapacitadas para quienes se han desarrollado dispositivos especiales que permitan a estas personas, tener una mejor calidad de vida [2].

Estas tecnologías, de manera general, se pueden englobar en un solo objetivo, crear canales de comunicación adecuados a las capacidades de estas personas. Muchas de estas personas se ven con la problemática de no contar con ningún tipo de movimiento físico para poder comunicarse. Sin ningún tipo de movimiento, ni siquiera el habla ni movimiento ocular, estas personas están aisladas de su entorno a pesar de que su capacidad cerebral goza de total capacidad, y es en torno a estas características que se ha buscado dentro de un área muy especifica para poder encontrar una solución, las ondas electro encefalográficas (EEG). A partir de que se desarrolló la tecnología que permite leer las ondas EEG de los humanos, se planteó la posibilidad de interpretarlas y usarlas como un medio de comunicación con dispositivos que puedan ir, desde control de aparatos domésticos hasta prótesis robóticas.

A este tipo de tecnología se le conoce como BCI (Brain – Computer Interface) y tiene una ventaja enorme sobre cualquier otra interfaz de control, las BCI no requieren movimiento físico para su manipulación. El esquema de funcionamiento general de una BCI se muestra en la figura 1-1.

Page 10: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

2

1.1 Partes de una BCI. Detallando más a fondo sobre el funcionamiento de una BCI, se describe a continuación cada una de las etapas mostradas en la figura 1-1.

(a) Adquisición de la señal. El tipo de información que se va a procesar en estas interfaces son ondas electro encefalográficas que son emitidas constantemente por el cerebro como resultado de la actividad cerebral. Estas ondas, son del orden de micro volts y son particularmente difíciles de obtener dado los niveles de ruido que se tienen. Para resolver este problema existen los amplificadores de señales EEG, que permiten obtener estas señales a través de electrodos conectados al cuero cabelludo y mediante el uso de un gel reductor de impedancia y otro gel abrasivo con el fin de limpiar la zona de contacto del electrodo. Estos amplificadores ya cuentan con filtros y otras técnicas de procesamiento de señales que permiten extraer de manera aceptable las lecturas.

Figura 1-1. Diagrama a bloques de la implementación de una BCI.

Extracción de características

Acciones

Clasificación de señales /

Interpretación

Adquisición de la señal

Amplificación y filtrado de la señal

(a) (b)

(d) (c)

(e)

Page 11: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

3

Existen varias compañías dedicadas a la fabricación de estos equipos, y haciendo uso de diferentes tecnologías han creado toda una diversidad de aparatos de uso general y otros de uso específico. Entre los dispositivos de adquisición de datos de carácter general, están los enfocados hacia neurofeedback, o neuroterapia, los cuales son amplificadores que pueden trabajar con casi cualquier señal biomédica en el ser humano, como son las EEG (ondeas cerebrales), ECG(electro cardiogramas), BVP (Volumen sanguíneo por pulso) o incluso son capaces de medir la resistencia y conductancia de la piel y sus cambios ante situaciones vividas por el individuo. Estos aparatos cumplen adecuadamente su función, sin embargo, dada su flexibilidad para poder medir distintos tipos de señal, estos pueden llegar a ser menos sensibles para obtener los detalles de una onda electroencefalográfica. Por otro lado, se tienen los dispositivos de uso específico, que son aparatos diseñados para trabajar ondas EEG exclusivamente, sin tener pérdidas en los detalles de dichas señales.

(b) Amplificación y Filtrado. En esta etapa, se reciben las lecturas obtenidas del equipo que haya adquirido las señales. En este punto se esta hablando de que las señales ya están disponibles en la PC, ya listas para comenzar su procesamiento y análisis. No obstante, estas señales tienen que ser preprocesadas para poder realzar las componentes que sean de interés por lo que es necesario que se vuelvan a amplificar y filtrar (entre otras cosas)

Esta etapa puede considerarse como la adecuación de la señal para empezar a ser trabajada.

Para esta tesis, dicha etapa es más que necesaria, ya que las ondas electro

encefalográficas contienen diferentes componentes que representan distintas actividades, de las cuales, solo algunas son de interés para éste trabajo.

(c) Extracción de características. Las componentes que normalmente se utilizan para caracterizar señales EEG son componentes en frecuencia, salvo algunas que existen en el dominio del tiempo. Estas componentes por lo general están relacionadas con el movimiento, intención de

Page 12: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

4

movimiento o concentración, por lo que se pueden considerar para la caracterización de las señales EEG.

Por lo que en esta etapa se aplican técnicas de filtrado y promediado para extraer estas componentes y descartar la información que no es útil.

(d) Clasificación / Interpretación. En este paso, lo que se requiere es agrupar las distintas formas que puede tomar una o varias componentes, con el fin de asociarlas a alguna acción, es decir, ya habiendo caracterizado las señales EEG, encontrarles un uso o una interpretación que se pueda ver reflejado en acciones.

(e) Acciones. Finalmente en ésta etapa se hace uso del resultado de la clasificación / interpretación para poder realizar una acción y permitir la interacción del usuario con algún dispositivo, como puede ser una prótesis robótica, un teclado visual, etc. Sin embargo, los actuales desarrollos de BCI aun tienen grandes problemas que solucionar, entre los que más resaltan son:

• El lento entrenamiento de los usuarios de estas interfaces • Baja resolución espacio – temporal (mucho tiempo para poca información) • Baja precisión en un control bi-dimensional

Así, se observa que existen aun muchos caminos a estudiar por los cuales se pueda alcanzar una correcta interpretación de las ondas EEG. Las corrientes principales que existen dentro del desarrollo de BCI han sido 2, las cuales se diferencian por sus puntos de vista del análisis del problema.

Un primer grupo esta atacando el problema desde la perspectiva de la teoría de

control, mientras que otro esta usando técnicas de reconocimiento de patrones, ambos apoyados en herramientas de inteligencia artificial y procesamiento digital de señales. Se han desarrollado prototipos de BCI que han usado series de tiempo que les permite hacer predicciones en las ondas EEG [3] mientras que otros han estado usando sistemas de

Page 13: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

5

clasificación para reconocimiento de patrones, ambos alcanzando resultados similares, por lo que aun no existe un camino efectivo para alcanzar una solución eficiente al problema.

En el presente trabajo se va a basar sobre la última corriente mencionada con el fin

de realizar comparaciones que puedan mostrar qué técnicas de reconocimiento de patrones puedan dar mejores resultados para el funcionamiento de una BCI eficiente.

1.2 Antecedentes y Estado del Arte. Actualmente existen varios laboratorios trabajando en el desarrollo de las BCI. En el año de 1995, existían solo 6 grupos de investigación en esta rama, y para el año 2000 había poco mas de 20 [5], por lo que ha habido un rápido crecimiento en el interés de los investigadores por desarrollar BCI. Y aunque este crecimiento podría ser catalogado como rápido, aún es una rama muy joven, en cuanto éxitos alcanzados, ya que desde los años 60 se hicieron los primeros trabajos sobre estas interfaces, sin embargo, fue hasta los 90 cuando comenzó el crecimiento en la investigación de esta rama. Actualmente, existen varios prototipos de BCI que han sido implementados de diferentes formas, tratando de encontrar un mejor diseño en cada paso, sin embargo aun faltan muchas técnicas por probar y más aun, muchos diseños que implementar para poder evaluar su eficiencia. Los trabajos realizados hasta ahora han propuesto soluciones basadas en redes neuronales o NN (por sus siglas en inglés), las cuales son entrenadas para extraer características de las ondas EEG cuando un individuo es inducido a imaginar un movimiento hacia la izquierda y hacia la derecha[3]. Mientras que otros grupos de desarrollo han utilizado técnicas de control donde al individuo se le pide que (mediante retroalimentación) controle un grupo de sus ondas cerebrales para poder alterar su amplitud y de esta manera controlar el movimiento horizontal y vertical de un cursor en pantalla [4]. A continuación, una revisión de los trabajos con mejores resultados en cuanto al desarrollo de BCI, con diferentes puntos de estudio y distintas herramientas matemáticas que se han desarrollado alrededor del mundo.

En Two-Handed Virtual Manipulation [1] se aborda el problema del diseño de una interfaz que brinde una mejor comunicación entre el usuario y la aplicación de la PC, que en este caso es una aplicación para planeación de intervenciones neuroquirurgicas.

Page 14: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

6

En el artículo explican algunas filosofías y técnicas para el desarrollo de interfaces de comunicación. Mas a fondo, también hacen un estudio detallado a cerca de la relación de las manos (izquierda y derecha) en cuanto a tareas relacionadas con la manipulación de objetos, con la finalidad de detectar patrones que ayuden a realizar una interfaz sencilla para el usuario. En el trabajo titulado “Parallel Man–Machine Training in Development of EEG-Based Cursor Control” [2] se detalla la realización de una BCI y una mejora en la implementación de los algoritmos de entrenamiento usados para detectar las “Intenciones Humanas”, como en este artículo les nombran. En este caso, reducen la problemática de la colocación de los cátodos, usando un sistema llamado “10-20 international electrode system” en el cual ya se identifican zonas especificas del cerebro y la selección de las posiciones de los cátodos se decide en base a un mapa de la corteza cerebral establecido por dicho sistema. Usan un método de extracción de parámetros auto regresivo a partir del espectro de frecuencia de las ondas EEG lo cual aporta a este trabajo la eficiencia de usar este tipo de métodos sobre ondas EEG. En un trabajo mas reciente (A Time-Series Prediction Approach for Feature Extraction in a Brain–Computer Interface [3]) se muestra la implementación de un algoritmo de redes neuronales basado en series de tiempo para poder hacer predicciones sobre la clasificación de las ondas cerebrales y lo comparan con otros trabajos en base a su eficiencia medida a partir de los éxitos en la clasificación, la tasa de transferencia de información y la cantidad de información que el clasificador contiene en su salida a cerca de un valor de entrada. Cabe destacar la metodología usada para el análisis de las señales EEG desarrollada en este trabajo, ya que usan solo una parte de la señal que indica un movimiento para poder predecir el movimiento en si, usando 2 redes neuronales, las cuales cada una corresponde al uso de una mano. Y finalmente encuentran datos interesantes sobre la cantidad de información mínima que necesitaron para hacer una clasificación certera, esta fue de 3 a 4 segundos y los algoritmos basados en redes neuronales (NN) tuvieron un mejor desempeño que los algoritmos basados en series de tiempo adaptables auto regresivos (AAR). También se aclara que los procedimientos de extracción de parámetros, cuando estos son meticulosamente seleccionados, ofrecen mejores resultados y alteran directamente la eficiencia del sistema, por lo cual hacen de esta fase, una etapa critica para el éxito de la BCI.

Page 15: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

7

Dentro del desarrollo e investigación de las BCI, también existen trabajos que abordan el problema desde el punto de vista de los discapacitados, donde podemos encontrar trabajos como: Control of a two-dimensional movement signal by a noninvasive brain–computer interface in humans [4], Donde uno de los puntos relevantes esta en la extracción de parámetros de las ondas EEG para determinar los movimientos de un cursor en la pantalla. Los autores plantean 2 ecuaciones para determinar el movimiento vertical y horizontal de dicho cursor, las cuales están controladas por pesos extraídos a partir de 2 puntos específicos del cerebro, cada uno en un hemisferio, con lo cual en base a la amplitud de esas señales aplican los pesos a dichas ecuaciones y obtienen el movimiento del cursor.

Brain–Computer Interface Technology: A Review of the First International

Meeting [5] es un trabajo que muestra en general una base para el desarrollo de una BCI. Plantea el uso de distintos parámetros a extraer de las señales EEG y también distintos parámetros de evaluación de eficiencia, como son, velocidad de respuesta, velocidad de movimiento, precisión y tasa de transferencia de información. También plantea 2 modelos de estimulación para el entrenamiento de los sistemas, el primero basado en retroalimentación gráfica y control muscular y el segundo basado en la ausencia de control muscular. Otro punto de importancia de este trabajo es que proponen una forma de evaluación global para medir la eficiencia de un sistema BCI, la cual esta basada en la tasa de transferencia de información, ya que esta depende de la precisión y de la velocidad con la que se transmiten los datos. En una tesis titulada EGG-based Brain Computer Interfaces [6] encontramos una descripción mas detallada del método para la colocación de los cátodos, “10-20 international electrode system”, el cual muestra mediciones, posiciones y nomenclaturas especificas del sistema para poder localizar y monitorear de manera adecuada las señales que nos interesa extraer. También se encuentra ya en específico una forma de medir la tasa de transferencia de información lo cual permitirá a este trabajo hacer una evaluación de la eficiencia del prototipo. Encontramos una descripción y comparación de los trabajos realizados en distintos laboratorios que están estudiando actualmente el tema, haciendo un resumen de la metodología que cada uno utilizó y los distintos enfoques con los que se atacó el problema en dichos trabajos. Sobre el trabajo propio de la tesis EEG-based Brain Computer Interfaces [6], se realiza un sistema ABI (Adaptative Brain Interface), el cual describen y resulta relevante

Page 16: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

8

porque se muestra detalladamente la manera en la que adquirieron los datos, extrajeron características de las señales y los experimentos que llevaron a cabo para el entrenamiento de su sistema, lo cual es de gran utilidad para esta investigación ya que ayudará bastante sobre todo en el momento de diseñar los experimentos para el entrenamiento del sistema. Otro trabajo A Direct Brain Interface Based on Event-Related Potentials [7] trata de una BCI basada en un electro-cortigrama ECoG (cátodos conectados directamente a la corteza cerebral) lo cual lo hace un método invasor, sin embargo es de importancia porque usan un método de correlación cruzada que ofrece resultados muy eficientes. Explican que las lecturas obtenidas de un ECoG permiten una mejor clasificación de estas ya que las señales están menos contaminadas y son mas claras para el análisis, no obstante, esto puede ser una medida de referencia para comparar la eficiencia de una BCI basada en EEG. En un trabajo auspiciado por la Neil Squire Foundation [8] se muestra una metodología basada en teoría de control para abordar el problema. Definen un método de procesamiento de contornos que ayuda a robustecer las funciones estadísticas y así poder extraer exitosamente los datos requeridos para la manipulación del sistema. Otra aportación de interés de este trabajo es el diseño de un Detector de Señal Asíncrono de Baja Frecuencia, el cual permite al sistema discernir entre las señales que interesan al mismo de las señales que no pertenecen a las intenciones del usuario por controlar la interfaz. Este proyecto obtuvo una eficiencia de 95% entre todos sus sujetos de prueba por lo cual es un método importante para esta investigación. En otro trabajo abordan el problema desde el punto de vista funcional, Critical Decision-Speed and Information Transfer in the “Graz Brain–Computer Interface [9], donde se plantea la pregunta a cerca de cual será el mejor balance entre tiempo – decisión, con la finalidad de obtener valores de tolerancia para el error. También proponen un nuevo modelo para el entrenamiento del sistema y de los participantes del experimento, usando un juego de pelota para motivar a los usuarios.

Haciendo uso de un clasificador Gaussiano, varían los niveles de tolerancia para acortar el tiempo de clasificación del sistema. Los resultados mostraron una mejoría sustancial en el tiempo de entrenamiento en la precisión de los movimientos. Otra característica es que en lugar de usar solo las manos, en el experimento se monitoreo las ondas relacionadas con el movimiento imaginario de los pies y de la mano izquierda, con lo que al final se pudo observar un aumento en la energía de la señal en la frecuencia mu, (representativa del movimiento de la mano izquierda.) sobre la registrada por la mano izquierda.

Page 17: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

9

En este trabajo, Direct brain communication [10], dan una explicación mas detallada de lo que representan las frecuencias mu, alfa, beta y P300, y en base a las características que cada una de ellas poseen, plantean el diseño a grosso modo de un sistema BCI tomando en cuenta mu, beta y P300, ya que mu y beta contienen información sobre los movimientos musculares de los brazos izquierdo y derecho, mientras que P300 contiene información a cerca de estímulos psicológicos que se pueden enfocar a estímulos visuales. Finalmente el trabajo propone una interfaz basada en resonancia magnética, sin embargo el procesamiento tanto como el coste del equipo lo hace aun, un diseño lejano. Tomando en cuenta las fases del reconocimiento de patrones, en otra investigación (Prosthetic Control by an EEG-based Brain-Computer Interface [11]) se ofrece una segunda implementación de un modelo AAR para la estimación de parámetros y su clasificación usando un algoritmo recursivo de mínimos cuadrados para el cálculo de los coeficientes. Otra parte importante, es que la implementación del modelo AAR fue hecho en Simulink y Matlab, por lo que también es importante desde el punto de vista de la adquisición de la señal, ya que usaron un sistema hibrido para la adquisición de la señal EEG, a través de un amplificador EEG y una tarjeta de adquisición de datos RTI8000a de Analog Devices, que puede ser manipulada con Matlab, que aunque complejo (el diseño del sistema) dió buenos resultados, porque el sistema se evaluó con datos on-line. La fase de procesamiento de datos y clasificación en el trabajo Linear Classification of Low-Resolution EEG Patterns Produced by Imagined Hand Movements [12] es elaborada con un método llamado Signal Space Projection (SSP), la cual en lugar de extraer parámetros para la clasificación, extrae patrones de las señales inmersas en el plano de proyección, los cuales agrupan varias características cada una, en este caso 54 por patrón. En la fase de adquisición de la señal, la señal se digitalizó a una frecuencia de muestreo mayor a la manejada por otros proyectos (400Hz) lo cual indican al final que es necesario para que el clasificador SSP obtenga buenos resultados.

En cuestión de la adquisición de la señal, el trabajo The Mental Prosthesis: Assessing the Speed of a P300-Based Brain–Computer Interface [13] propone estudiar un paradigma llamado “oddball” el cual hace uso de componentes ERP (Event-Related brain Potencials) las cuales son respuestas a estímulos internos (psicológicos) o externos (físicos), y en especifico el componente P300 que es un componente endógeno o interno.

El paradigma “Oddball” propone presentar al sujeto de prueba ante una serie de

eventos que puedan ser clasificados en una de dos categorías y medir la respuesta del

Page 18: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

10

componente P300. El sujeto de prueba pone su atención en uno de esos eventos, por lo que la serie de eventos presentados van a estimular el componente P300 de distinta forma, ya que el usuario mantiene su atención a uno solo de esos eventos, por lo que en la aparición del segundo evento (el de ocurrencia mas rara), la componente P300 tendrá una mayor amplitud.

También hacen uso, en la etapa de procesamiento de la señal de un análisis

discriminante por etapas, y como una alternativa a comparar, suma a lo anterior la transformada wavelet.

En el trabajo Recognition of Motor Imagery Electroencephalography Using

Independent Component Analysis and Machine Classifiers [14] emplean un procedimiento para la obtención de características de la señal basado en eventos relacionados de-sincronizados y sincronizados (ERD y ERS respectivamente) los cuales se muestran como una atenuación de las ondas beta y un crecimiento de las ondas mu respectivamente. El pre-procesamiento de datos lo hacen por medio de un Análisis de Componentes Independiente (ICA) que remueve “artefactos” de la señal EEG para su análisis.

Algo que también es relevante para este trabajo son los eventos monitoreados, ya

que están hechos sobre la tarea selectiva visual debido a que los componentes son mucho más fuertes.

En la etapa de clasificación usan 4 clasificadores distintos, los cuales solo

necesitaron 20 minutos de entrenamiento por lo que el uso de un análisis basado en ICA facilita la clasificación de características en sistemas BCI. En el trabajo Rapid Prototyping of an EEG-Based Brain–Computer Interface (BCI) [15] se muestra una nueva versión de una interfaz llamada Graz-BCI [9], sin embargo en esta implantación la realizan para poder trabajar en tiempo real. La implementación del procesamiento de señales la realizan nuevamente con un algoritmo AAR, pero en esta ocasión añaden algoritmos de análisis lineal discriminante. Otra característica de interés para esta investigación es la implementación en Simulink con Matlab, lo cual finalmente les permite modelar el sistema y generar el código automáticamente a partir del diseño en Simulink , el cual es incrustado al kernel para una ejecución en tiempo real. En la investigación Robust Classification of EEG Signal for Brain–Computer Interface [16] detallan los métodos utilizados para la adquisición de la señal, incluyendo el equipo utilizado, el cual es un amplificador “NeuroScan” SynAmps2 cuya interfase de comunicación esta basada en un puerto TCP/IP.

Page 19: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

11

En este trabajo hacen un estudio un poco más extenso sobre un clasificador basado en una máquina de soporte vectorial [13]. En el pre-procesamiento de la señal utilizan un análisis en componentes principales el cual permite hacer una reducción de canales a procesar. En un trabajo anterior se mostró que el tiempo de entrenamiento de este sistema puede ser de 20 minutos con resultados aceptables, sin embargo en esta ocasión muestran como utilizar una máquina de soporte vectorial para reducir los tiempos de entrenamiento a un 58% del anterior (aprox. 10 min) con un 5% de error en la clasificación. En el trabajo Steady-State Somatosensory Evoked Potentials: Suitable Brain Signals for Brain–Computer Interfaces?[17] describe la implementación de un sistema BCI basado en potenciales del motor sensorial de estado estacionario (SSSP) con la finalidad de aumentar la energía de las ondas cerebrales. En el experimento colocan transductores que estimulan los dedos índices de cada mano de un sujeto de prueba. Estos estímulos son transmitidos a una frecuencia T1 para el dedo derecho y T2 para el dedo izquierdo, con lo que busca un efecto de resonancia en las señales cerebrales, incrementando aun más la energía de la señal. También describen una herramienta llamada analizador lock-in (LAS) que les permite retirar las frecuencias en respuesta de los estímulos, de las señales EEG y así poder contar solamente con la señal generada por las intenciones del sujeto de prueba. Finalmente, en el trabajo A Virtual Reality Testbed for Brain–Computer Interface Research [18] se describe una implementación de un sistema BCI en la que se auxilian de los datos obtenidos por un rastreador ocular basado en cámara, con la finalidad de reducir los “artefactos” incluidos en el componente P3 (potenciales relacionados a eventos), y así reducir el grado de error de detección. La reducción de los “artefactos” es por medio de una técnica de regresión lineal. Por medio de esta corroboración de datos (entre el componente P3 y el rastreador ocular) es posible eliminar los comandos falsos emitidos al azar. La señal es obtenida con una frecuencia de muestreo de 500Hz, y especifican que la impedancia de los cátodos esta entre 2 y 5 Kohms. Hacen una comparación de resultados de clasificación de 3 algoritmos distintos, Correlación, ICA y Robust Kalman Filter. A diferencia de otros sistemas BCI, este usa un entorno de realidad virtual en el cual el sujeto de pruebas realice sus acciones, lo cual puede ayudar a la motivación del individuo, y por ende una mayor concentración en el experimento.

Page 20: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

12

1.3 Justificación. Como se mencionó anteriormente, los equipos de cómputo actuales poseen una

capacidad de procesamiento muy superior a la que existía cuando se desarrollaron sus interfaces de comunicación (principalmente ratón y teclado) y que con el paso del tiempo han demostrado ser muy eficientes, aun con el acelerado avance que ha tenido el área de las computadoras desde su creación. Un estudio en el cual se modela los movimientos del Mouse [1] se demuestra que una interfaz de comunicación que supere la eficiencia del Mouse será difícilmente implementada.

No obstante de esta eficiencia, en la actualidad se han encontrado ya aplicaciones

para este dispositivo en el cual resulta ineficiente, más en específico podemos hablar de un artículo en el cual se propone una interfaz de usuario que soporte una visualización tri-dimensional neuroquirurgica [1] en la cual la manipulación de dicha visualización resulta poco manejable con un Mouse por lo que se propone una interfaz de 2 manos para su control. Esta solución satisface las necesidades de la aplicación en específico, sin embargo en el artículo se menciona que un candidato a la solución de crear una interfaz más eficiente no puede ser la solución a todos los problemas, ya que esta forma de atacar el problema obtiene su eficiencia de hacer una adaptación especifica de las interfaces ya disponibles (joystick y Mouse).

Este es uno de los problemas que muestra la necesidad de un medio de

comunicación más efectivo, haciendo un mejor uso de las capacidades computacionales de los equipos con los que ya se disponen y por otro lado, y que al mismo tiempo permita aprovechar de mejor manera las habilidades intelectuales de los usuarios.

Es aquí donde surge la propuesta de una interfaz de comunicación que permita un

control más rápido y acertado de las tareas que queremos realizar, incluso que funcione con personas que tienen discapacidades motoras, desde personas con Parkinson hasta personas que se encuentren totalmente paralizadas pero que aun disponen de su capacidad intelectual intacta.[2][3][4]

Esa es la razón por las que las BCI prometen ser una solución eficiente ya que la

base del funcionamiento de estos dispositivos no incluye movimientos físicos, si no las ondas cerebrales del usuario. Por lo cual cumple de entrada con las necesidades de personas con discapacidad motora (pero con capacidades intelectuales intactas). Por otro lado, también puede ser un dispositivo que permita múltiples canales de comunicación con la PC (parte que aun sigue en desarrollo) lo cual puede eliminar la barrera de 2 dimensiones impuesta por el Mouse.

Lo que falta por desarrollar de estas interfaces son los múltiples canales de

comunicación (ya que hasta ahora se han alcanzado resultados aceptables solo en 2 dimensiones) y la velocidad de comunicación (existen otros problemas a resolver, sin

Page 21: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

13

embargo estos son los mas buscados) con la PC, ya que en un futuro posible, tal vez podamos hacer un uso más eficiente de los equipos de cómputo si esta interfaz se sigue desarrollando de manera exitosa, dando así como resultado un dispositivo de comunicación adecuado a la nueva generación tecnológica con la que contamos.

Los trabajos que hasta ahora se han desarrollado han incursionado en áreas como

las redes neuronales [3] y en algoritmos adaptables (teoría de control) [4] en los cuales se han obtenido buenos resultados en la clasificación de las ondas cerebrales, sin embargo, no hay un trabajo que recopile diferentes técnicas que permitan evaluar cual de ellas puede ser el mejor camino hacia encontrar una BCI eficiente. Y es aquí donde nos podemos enfocar al desarrollo de una BCI en la que se puedan probar y proponer diferentes técnicas de reconocimiento de patrones para poder así, realizar una comparativa entre ellas.

En resumen, en esta tesis vamos a avanzar de la siguiente manera: Capitulo 1 Introducción.- En esta etapa describimos lo que ésta investigación

aborda, desde el concepto global hasta las diferentes etapas que como mínimo se deben cubrir, así como una referencia de los trabajos que previamente se han involucrado con este tema.

Capitulo 2 En este capitulo hacemos una revisión de los conceptos teóricos que

son utilizados a lo largo de este trabajo, como son los clasificadores estadísticos KNN y Gaussiano, y la Red Neuronal, así como las técnicas de procesamiento de señales como son filtros y análisis espectrales. También se muestra el origen fisiológico de las señales que fueron usadas en ésta investigación.

Capitulo 3 En este capitulo asentamos de manera formal los objetivos a alcanzar

con esta investigación. Capitulo 4 Este capitulo trata del diseño y desarrollo del protocolo experimental

que se utilizó tanto para las pruebas como para la forma de trabajo. Desde la preparación física de los sujetos de prueba así como también el diseño de las pruebas que nos permitieron extraer las componentes de las señales electroencefalográficas que se propusieron para su clasificación.

Capitulo 5 En esta etapa proponemos un segundo protocolo experimental con el

cual se desarrollan las pruebas finales. Este protocolo es el resultado y consecuencia de los resultados arrojados por el protocolo experimental descrito en el capitulo 4. Este protocolo ocupa componentes alternativas de la señal que permitieron concluir éste trabajo.

Page 22: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

14

Capitulo 6 Finalmente en este capitulo encontramos los resultados y evaluaciones del prototipo desarrollado en este trabajo. Encontramos resultados estadísticos del desempeño del sistema y también el resultado de las simulaciones hechas por el sistema.

Capitulo 7 En esta parte del trabajo hacemos nuestras conclusiones que se deducen

de los resultados obtenidos en esta investigación, así como las perspectivas que le pueden dar mas aplicaciones a los resultados obtenidos aquí.

Page 23: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Capitulo 2

Planteamiento del Problema

Page 24: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 25: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

15

2 Planteamiento del Problema.

2.1 Descripción del Problema. Lo que se propone realizar en este proyecto de investigación, es una interfaz que

permita la comunicación entre el usuario y una computadora, haciendo uso de sus ondas cerebrales, más en específico, es el desarrollar una interfaz BCI para el control de un cursor en pantalla mediante comandos obtenidos de las lecturas EEG (Figura 2.1-1).

Dentro de esta área de investigación existen muchos puntos que aun hay que estudiar para así resolver algunos problemas que aun siguen vigentes, como lo es la optimización del tiempo de entrenamiento y la precisión para interpretar los comandos del usuario.

No obstante, este trabajo centrara su investigación dentro de puntos específicos,

los cuales son: La caracterización de las señales EEG La clasificación de las ondas EEG La optimización del tiempo de entrenamiento La caracterización de las señales se puede hacer mediante 3 componentes de esta,

que entregan información de diferente tipo pero referente a una misma intención del individuo. Las componentes de la señal que se plantean usar son: beta, mu y P300 (Figura 2.1-2), de las cuales las primeras dos están relacionadas con los movimientos del cuerpo y la ultima esta relacionada con el nivel de concentración del individuo con

Figura 2.1-1. Tomada de Parallel Man–Machine Training in Development of EEG-Based Cursor Control. Esquema de trabajo de una BCI.

Page 26: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

16

respecto a lo que esta viendo. Con lo que se propone hacer una combinación lineal de estas tres componentes para poder obtener información mas precisa acerca de lo que el individuo pretende hacer. (Sus intenciones).

Las señales que se obtienen de un amplificador EEG son, el resultado de la suma

de la actividad de millones de neuronas (Figura 2.1-3), por lo que detectar por ejemplo, las intenciones de movimiento de un individuo no es un paso directo, para esto se tienen que tomar en cuenta la naturaleza de las componentes que se desean medir.

Para este trabajo se busca obtener 2 componentes en frecuencia que son beta y mu,

y una componente en el dominio del tiempo que es P300.

Figura 2.1-2 Componentes P300 y mu de un individuo, tomada de Direct Brain Comunication: neuroelectric and metabolic approaches at Tübingen [10].

Figura 2.1-3. Muestra de una señal EEG de 1 segundo de duración. Tomada de la base de datos que se ha obtenido a lo largo de esta investigación. La señal fue obtenida mientras el sujeto movía el ratón en cuatro direcciones distintas, en este instante, el movimiento fue hacia arriba.

amplitud

Tiempo (s)

Page 27: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

17

2.1.1 Componente Frecuencial Beta.

En específico, beta es una componente que esta relacionada con la actividad cerebral generada por la concentración. Esta componente esta en el rango de frecuencias que existe arriba de los 12 hz, por lo que es útil para detectar el inicio de actividad mental. Para obtener esta componente es necesario aplicar filtros en un rango de frecuencias entre los 12 y 24 hz, para obtener como resultado lo que se muestra en la figura 2.1.1-1.

2.1.2 Componente Frecuencial mu. Esta componente se encuentra dentro del rango de frecuencia de beta, y esta comprendida entre los 12 y 16 hz, también conocida como SRM (sensorimotor rythm). Ésta componente reacciona directamente al movimiento, atenuando su amplitud cada vez que hay actividad motora, principalmente de los brazos. De la misma forma que beta, esta componente se obtiene filtrando la señal en un rango de 12 a 16 hz, como se muestra en la figura 2.1.2-1.

Figura 2.1.1-1. Señal de la figura 2.1-3, procesada con un filtro FIR pasa-banda de 12 a 24 hz en Matlab para obtener Beta.

Figura 2.1.2-1. Señal de la figura 2.1-3, procesada con un filtro FIR pasa-banda de 12 a 16 hz.en Matlab para obtener mu.

amplitud

Tiempo (s)

amplitud

Tiempo (s)

Page 28: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

18

2.1.3 Componente Temporal P300.

P300 es una componente de distinta naturaleza a las anteriores, pues pertenece al tipo de componentes denominadas, Potencial Relacionado a Eventos (ERP por sus siglas en inglés), la cual es una respuesta a un estimulo, que en este caso, P300, es una respuesta a un estimulo visual y cognitivo, que aparece exactamente a los 300 milisegundos después del estímulo y se muestra en la figura 2.1.3-1. Para obtener esta componente, lo que se necesita hacer, es promediar varias lecturas EEG, que son tomadas en sincronia con el estimulo.

El orden de amplitud de esta componente es mucho menor al compararla con la amplitud de las componentes en frecuencia de las ondas EEG, por lo que para extraerla, se necesita promediar varias lecturas hechas en el tiempo, las cuales, al tener un comportamiento caótico, se anulan, dejando ver la componente constante en todos los canales.

La clasificación de las ondas EEG es totalmente dependiente del entrenamiento del

sistema clasificador, por lo que es aquí un punto donde podemos buscar una de las mejoras con las que este trabajo intenta contribuir.

El entrenamiento define la forma en que el usuario realiza sus acciones y es aquí

donde la complejidad del uso de una interfaz de este tipo se manifiesta, ya que las pruebas de entrenamiento que se proponen en los distintos trabajos anteriormente revisados, se muestra que el usuario debe tener un nivel de concentración alto y constante, y al momento de pasar del entrenamiento al uso de la interfaz, el nivel de los usuarios decae, sin razones aparentemente obvias.

Page 29: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

19

Es por eso que en este trabajo se probará una dinámica de entrenamiento distinta,

con la esperanza de optimizar los entrenamientos y por ende aumentar el nivel de eficiencia de los clasificadores mencionados dentro de este trabajo.

2.2 El entrenamiento

Los trabajos revisados hasta la fecha, comparten algo en común, y es el entrenamiento de sus algoritmos de clasificación para detectar los movimientos imaginados por el usuario, algo que ha mostrado ser un problema ya que los sistemas nunca tienen los mismos resultados para los distintos sujetos de prueba usados en los experimentos, no obstante, la existencia de estas diferencias de desempeño de los sistemas con distintos usuarios no es anormal, sin embargo las diferencias son muy grandes para los distintos usuarios.

Por lo que en el presente trabajo se implementará una aplicación de entrenamiento

retroalimentada, estará basada en leer las ondas EEG mientras el usuario hace movimientos físicos reales (moviendo el Mouse con el brazo derecho) y gradualmente

Figura 2.1.3-1. Componente P300, obtenida del sujeto de prueba B, mientras realizaba movimientos aleatorios con el ratón. Dada la naturaleza de un potencial evocado, no es posible obtenerla de una señal tan corta como la de la figura 2.1-3. Ésta señal corresponde a la misma sesión que la de la figura anterior, pero para obtenerla se procesaron 4.7 minutos.

amplitud

Tiempo (s)

Page 30: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

20

presentar (cada vez mas) distintos distractores visuales que permitan entrenar los algoritmos de clasificación partiendo desde la premisa de que un sujeto de prueba concentrado en la tarea hasta llegar a un usuario cuyas acciones las realiza de manera natural, lo cual posiblemente entregue resultados mas homogéneos con los diferentes sujetos de prueba, y a la vez nos permita alcanzar uno de los objetivos específicos de esta investigación.

Todos estos puntos están contenidos de manera específica en los siguientes

objetivos que definen la base de ésta investigación.

2.3 Objetivo General.

• Análisis, diseño e implementación de una interfaz BCI que sea capaz de controlar un cursor por medio de la clasificación de lecturas EEG de una persona.

2.4 Objetivos específicos.

• Identificar los puntos óptimos del cerebro que permitan extraer las componentes de las señales EEG que contengan la información del movimiento del brazo derecho.

• Determinar la combinación lineal que se va a usar en las componentes beta, mu y P300 por medio de Análisis Factorial Discriminante y Análisis en Componentes Principales

• Generar un clasificador de ondas EEG que identifique los movimientos necesarios para controlar un cursor en 4 direcciones.

Para lograr esto, se construirá un clasificador múltiple que contenga internamente tres

algoritmos de clasificación, y también se implementarán tres algoritmos que permitan la evaluación de los clasificadores, los cuales son:

- Algoritmos de clasificación: KNN : K Próximos Vecinos Clasificador Gaussiano Clasificador basado en Redes Neuronales Backpropagation

Page 31: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

21

- Algoritmos de evaluación de desempeño:

Leave One Out Resubstitution Cross-Validation

Finalmente, en cuestión de algoritmos, se implementarán dos métodos para determinar la combinación lineal de las componentes que van a caracterizar las señales EEG en esta investigación. Los algoritmos son: Análisis de Componentes Principales Análisis Factorial Discriminante

Page 32: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 33: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Capitulo 3

Conceptos Teóricos

Page 34: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 35: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

22

3. Conceptos Teóricos.

3.1 Estructura básica de una BCI Una Interfaz Cerebro computadora (BCI) tiene como finalidad, establecer la comunicación entre dos entidades que requieren interactuar, es decir, en términos un poco mas generales, una interfaz ofrece un canal de comunicación entre dos entidades, que en este caso, esas dos entidades son el cerebro humano y la computadora. La manera de establecer dicho canal de comunicación entre el cerebro humano y la computadora, es haciendo uso de las ondas electroencefalográficas que el cerebro emite como resultado de la actividad sináptica cerebral. Para poder hacer esto se necesitan los siguientes elementos:

• Electrodos para electroencefalografía. (ver figura 3.1-1(a)) • Sistema de adquisición de señales EEG. (ver figura 3.1-1(b)) • Software de captura de señales EEG. (ver figura 3.1-1(c))

Organizados de la manera siguiente como se aprecia en la figura 3.1-1

(a) 3.1.1

(b) 3.1.2

(c) 3.1.3 (d) Figura 3.1-1: Estructura de una BCI (a) Gorra con electrodos ELECTROCAP (b) Equipo de adquisición de

EEG (c) Computadora y software de captura (d) Base de datos EEG (e) Retroalimentación de la PC al Usuario

(e) 3.1.4

Page 36: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

23

3.1.1 Los electrodos y el Electrocap Los electrodos que se usan para la extracción de ondas EEG no son muy diferentes a otros tipos de electrodos que se usan para señales biomédicas (ECG por ejemplo), no obstante, la diferencia esta en la forma de colocarlos. Para esto, se ha desarrollado un sistema denominado 10-20 System [19]. (véase figura 3.1-2) Este sistema esta basado en la relación que existe entre la posición de un electrodo y el área situada por debajo de la corteza cerebral. El nombre, 10-20 se refiere al hecho de que actualmente las distancias entre los electrodos adyacentes son 10% o 20% del total de la distancia entre la parte frontal y la parte trasera del cráneo, o bien, la distancia entre el lado derecho e izquierdo del mismo. En este sistema, cada electrodo tiene una letra que identifica el lóbulo y un número para identificar la posición en el hemisferio. Las letras F, T, C, P y O se refieren a su posición sobre el cráneo, que son: Frontal, Temporal, Central, Parietal y Occipital. Médicamente hablando, no existe el lóbulo central (C), sin embargo esta colocado solo como referencia. Los electrodos marcados con z se refieren a que están colocados en el centro de ambos hemisferios y los números pares se refieren al hemisferio derecho y los impares al hemisferio izquierdo. A1 y A2 son puntos de referencia que normalmente se colocan en las orejas.

Figura 3.1-2: Sistema 10-20, Imagen obtenida de www.wikipedia.org

Page 37: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

24

Es por esta razón que existen en el mercado gorras con electrodos ya posicionados que facilitan la colocación de los mismos y así mejorar la calidad de la obtención de las señales. En el caso de este proyecto, la gorra ELECTROCAP que se utilizó consta de 20 electrodos posicionados en el sistema 10-20. Los electrodos en si, se encuentran dentro de un caparazón de plástico como se muestra en la figura 3.1-3. La longitud de los cables de los electrodos es de 1.5 metros y llevan una codificación por colores para una rápida identificación. La gorra que se usó es de talla mediana y tiene 20 electrodos, de los cuales solo se usan 18, 16 para canales EEG y 2 para tierra.

Otro punto necesario a mencionar es el uso de un gel reductor de impedancia para así mejorar la calidad de las señales y asegurar el contacto entre el cuero cabelludo y el electrodo. De esta forma, las personas a las que se les coloca los electrodos no necesitan de ningún tipo de preparación mas que colocar el gel entre el electrodo y su cuero cabelludo.

3.1.2 Sistema de adquisición de EEG

Las ondas electroencefalográficas, son el resultado de la actividad de millones de neuronas en un solo instante. Para entender de manera mas clara el proceso de

Figura 3.1-3 Electrodo de gorra Electrocap

Page 38: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

25

adquisición de las señales EEG es necesario entender como se originan las mismas, comenzando por quien las produce.

3.1.2.1 La neurona Una neurona es una célula nerviosa que forma la base de la arquitectura nerviosa del hombre, es la unidad funcional que trasporta el flujo nervioso, y un cerebro humano contiene aproximadamente 100,000 millones de neuronas (10^11) La anatomía de la neurona se puede observar en la figura 3.1.2.1-1, donde las partes más importantes se explican a continuación:

• Axón: A través de este, circulan los impulsos nerviosos desde el cuerpo celular

hacia la siguiente célula. Los axones pueden agruparse y formar lo que se conoce como fibra nerviosa. La terminación axonal tiene forma abultada y se conoce como botón presináptico, el cual contiene las vesículas sinápticas incluyendo en su interior a los neurotransmisores que son sustancias químicas responsables de transmitir los mensajes a la siguiente neurona.

• Dendritas: Las dendritas transmiten los potenciales en acción o impulsos nerviosos desde las neuronas adyacentes hasta el cuerpo celular o soma. Estas pueden variar en tamaño y numero según el tipo de neurona.

Las neuronas son células excitables especializadas para la recepción de estímulos

y la conducción del impulso nervioso. Estas se localizan en el encéfalo, medula espinal y los ganglios nerviosos y están en contacto con todo el cuerpo.

A diferencia de la mayoría del resto de las células del ser humano, las neuronas no

se dividen para multiplicarse. El cuerpo de estas, esta formado esencialmente por una masa de citoplasma en el cual esta incluido el núcleo, en la mayoría de las veces, en el centro.

3.1.2.1-1 Estructura de una neurona humana [20].

Page 39: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

26

3.1.2.2 La comunicación neuronal. La comunicación entre neuronas se lleva a cabo a través de uniones especializadas conocidas como sinapsis. A través de estas uniones se llevan señales de una neurona a otra y también de una neurona a células no neuronales como son las musculares y glandulares. Este tipo de uniones son las que construyen la base de la percepción y el pensamiento, pues es a través de la sinapsis que todas las neuronas forman un circuito conocido como red neuronal donde la interacción de los 100,000 millones de neuronas pueden formar estructuras demasiado complejas para su análisis. La sinapsis puede ocurrir por dos formas, una de ellas es la que se presenta en los botones dendríticos al momento de que estos se aplastan contra los axones de otras neuronas (véase figura 3.1.2.2-1). En esta zona, las membranas celulares de ambas neuronas se juntan en una unión estrecha que permite que las moléculas señal llamadas neurotransmisores puedan pasar de una célula a otra. Esta unión es aproximadamente de 20 nm de ancho y se conoce como hendidura sináptica.

Estas sinapsis son asimétricas tanto en estructura como en funcionamiento, ya que solo la neurona presinaptica segrega los neurotransmisores que se unen a los receptores transmembrana que la célula postsinaptica tiene en la hendidura.

Figura 3.1.2.2-1: Diagrama de las partes involucradas durante una sinapsis en una neurona humana [20].

Page 40: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

27

La zona de la sinapsis, donde se libera el neurotransmisor se denomina zona activa, en esta parte las membranas de las dos células adyacentes están unidos estrechamente mediante proteínas de adhesión celular. Justo detrás de la membrana de la célula postsinaptica aparece un complejo de proteínas entrelazadas denominado densidad postsinaptica, estas cumplen numerosas funciones que van desde el anclaje y movimiento de receptores de neurotransmisores de la membrana plasmática, al anclaje de varias proteínas reguladoras de la actividad de estos receptores. La otra forma en que la sinapsis puede ocurrir se denomina sinapsis eléctrica, en la cual el paso de señales se hace a través del paso de iones de una célula a otra a través de uniones denominadas uniones gap (véase figura 3.1.2.2-2). Estas uniones son pequeños canales formados por el acoplamiento de complejos proteicos, basados en conexinas, en células estrechamente adheridas.

Figura 3.1.2.2-2: Diagrama de una sinapsis eléctrica donde se muestran los Gaps ó aberturas de las dendritas y los axones [20].

Page 41: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

28

Las sinapsis eléctricas son mas rápidas que las sinapsis químicas, sin embargo, las eléctricas son menos plásticas y en vertebrados son abundantes en la retina y en la corteza cerebral. Internamente la liberación de neurotransmisores es iniciada por la llegada de un impulso nervioso, lo que inicia un proceso de secreción celular muy rápido. Dicho impulso es el responsable de la Fuerza Sináptica, la cual esta dada por el cambio del potencial de membrana que ocurre cuando se activan los receptores de neurotransmisores postsinapticos. Este cambio de voltaje se denomina potencial postsinaptico, y es resultado directo de los flujos iónicos a través de los canales receptores postsinapticos. Los cambios en la fuerza sináptica pueden ser a corto plazo y sin cambios permanentes en las estructuras neuronales, con una duración de segundos o minutos, o de larga duración, en que la activación continuada o repetida de la sinapsis implica que los segundos mensajeros inducen la sinapsis proteica en el núcleo de la neurona, alterando la estructura de la propia neurona. El aprendizaje y la memoria podrían ser resultado de cambios a largo plazo en la fuerza sináptica, mediante un mecanismo de plasticidad sináptica. Un impulso nervioso es una onda de electronegatividad que recorre toda la neurona y que se origina como consecuencia de un cambio transitorio de la permeabilidad en la membrana plasmática, secundario a un estimulo. La excitabilidad de las neuronas depende de la existencia de distintas concentraciones de iones a ambos lados de la membrana celular y de la capacidad de transporte activo a través de estas membranas. La excitación neuronal se acompaña de un flujo de partículas cargadas a través de la membrana, lo cual genera una corriente eléctrica. La membrana de las células esta polarizada, debido a que hay un reparto desigual de cargas eléctricas entre el interior y el exterior de la célula. Esto crea una diferencia de potencial, siendo el exterior positivo respecto al interior. En el exterior, en el liquido intersticial, el anión mas abundante es el de cloro, y en el citoplasma, los aniones mas abundantes son las proteínas, que en el pH celular se ionizan negativamente. El catión más abundante en el líquido intersticial es de sodio, y en el citoplasma es el de potasio. El desequilibrio iónico que produce la polarización de la membrana es debido a la distinta permeabilidad que presenta frente a cada uno de los iones. El ion de potasio atraviesa la membrana libremente. La permeabilidad para el sodio es menor, y además es expulsado por medio de un transporte activo llamado bomba de sodio. Las proteínas, debido a su tamaño no pueden atravesar libremente la membrana. Toda esta dinámica establece una diferencia de potencial en condiciones de reposo, de unos -70mV. Es lo que se denomina potencial de membrana.

Page 42: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

29

Cuando se aplica un estimulo adecuado a la membrana de la neurona, se altera su permeabilidad, permitiendo la entrada de iones de sodio a favor de su gradiente de concentración. Este transito es tan intenso que la bomba de sodio resulta ineficaz. El flujo de sodio invierte la diferencia de voltaje pasando el exterior a ser negativo y el interior positivo (+30 mV). Con forme se iguala el gradiente de concentración, el flujo de sodio decrece, mientras que el potasio sale de la célula para neutralizar la electronegatividad del exterior. El transito de potasio se produce un milisegundo después que el de sodio. La salida de potasio es mayor que la necesaria para restablecer el potencial de reposo, por lo que la membrana queda hiperpolarizada, con mayor electronegatividad en su interior. La representación grafica de la variación de potencial respecto al tiempo es el potencial de acción (véase figura 3.1.2.2-3) La cantidad de estimulo necesario para provocar la actividad de una neurona, se denomina umbral de excitabilidad. Alcanzando este umbral, la respuesta es efectiva, independientemente de la interrupción o aumento del estimulo. Es decir, sigue la ley de todo o nada. Durante la despolarización, la neurona no es excitable, es decir, esta en periodo refractario. Durante la hiperpolarización subsiguiente, la neurona es parcialmente excitable, parcialmente refractaria, es decir, que se necesita de un estímulo mas intenso para provocar un nuevo potencial de acción, ya que ha aumentado el umbral de excitabilidad.

El potencial de acción es una onda de descarga eléctrica que viaja a lo largo de la membrana de la célula. Los potenciales de acción se utilizan para llevar información

Figura 3.1.2.2-3: Representación esquemática y real de un potencial de acción de una neurona [21].

Page 43: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

30

entre unos tejidos y otros, lo que hace que sean una característica microscópica esencial para la vida de los animales. Es por esto que las señales electroencefalográficas son el resultado de la suma de la actividad eléctrica de millones de neuronas, y la medición del diferencial de potencial eléctrico que se puede registrar, es el que existe entre un electrodo y un punto de referencia como lo son A1 y A2 en el sistema 10-20 (ver figura 3.1-2).

Las lecturas no ofrecen información sobre la corriente eléctrica que circula sobre la corteza cerebral, solo potenciales eléctricos son medidos.

Debido a que la lectura de las ondas electroencefalográficas se hace desde la superficie del cuero cabelludo, la amplitud que se puede registrar están en el orden de 100μV aproximadamente, estas tienen que ser amplificadas de 1000 a 100,000 veces para que puedan ser legibles, razón por la cual los equipos de adquisición tienen que estar construidos con componentes electrónicos (amplificadores operacionales) de muy bajo nivel de ruido y añadido a esto, también se requiere que dichos equipos cuenten con el correspondiente aislamiento y filtrado de ruido (ruido de línea 60Hz y frecuencias ajenas) ya que las señales de las ondas EEG están concentradas en el espectro de 0 a 100 Hz.

Para esto, en el mercado existen diversos equipos que pese a su costo elevado

ofrecen soluciones mas económicas a otras técnicas de monitoreo de actividad cerebral como lo son los equipos de resonancia magnética. Estos equipos ofrecen soluciones desde 2 a 64 canales de monitoreo.

El equipo que se eligió para esta investigación debido a su costo, es un equipo de

la compañía Nolan Computer Systems, que tienen 2 modelos disponibles, uno de 16 canales y otro de 24. El que se adquirió fue el modelo MS-1000 de 16 canales, el cual se comunica con la PC por medio de una interfaz SCSI (Small Computer System Interface). Este equipo se puede observar en la imagen 3.1.2.2-4.

Page 44: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

31

Para este equipo no existen los controladores disponibles por lo cual se tuvo que

programar una biblioteca en C++ para poder hacer la obtención de muestras. El equipo ofrece muestras de 16 bits a una tasa de muestreo a elegir entre 64, 128,

256, 512 y 1024 muestras por segundo.

3.1.3 Computadora y Software de captura Para poder obtener las muestras del equipo de adquisición es necesario una computadora (en este caso con interfaz SCSI) que sea capaz de soportar los algoritmos de filtrado y procesamiento de la señal que son requeridos para extraer las componentes que se requieran de la señal.

Para esta investigación se hizo uso de una PC que sea capaz de ejecutar sin problemas Visual Studio 6.0 y Matlab 7 2006b y que pueda almacenar grandes cantidades de datos, ya que una lectura de EEG de 16 canales de 10 minutos toma aproximadamente 38 MB de espacio en disco duro.

El software de captura y procesamiento también incluye un sistema de

clasificación y detección en las señales EEG para que de esta forma se pueda ofrecer la retroalimentación al usuario.

3.1.4 Retroalimentación La retroalimentación del usuario es la finalidad de una BCI, dado que permita la interacción entre las dos entidades críticas de la BCI que son el cerebro y la computadora. Como ya se mencionó en la introducción, es la retroalimentación la que permite

Figura 3.1.2.2-4: Amplificador EEG de 16 canales modelo Mindset MS-1000

Page 45: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

32

desarrollar sistemas de asistencia y comunicación para personas con incapacidad de movimiento. En este caso, la retroalimentación será enfocada a la comunicación del usuario con la PC y así ofrecer una alternativa a los medios actuales de comunicación que ofrecen las interfaces de uso actual.

3.1.5 Base de Datos de EEG

Dentro del software de captura y procesamiento existan clasificadores, estos a su vez requieren de una base de datos, comúnmente bastante amplia, esta necesita ser almacenada para poder hacer los cálculos necesarios.

En el caso de este proyecto, la base de datos tiene que contener señales EEG, que

debido al equipo de adquisición con que se cuenta, se está restringido a trabajar solo con 16 canales. La base de datos se que se ha creado a lo largo de esta investigación cuenta con lecturas hechas a una tasa de muestreo de 1024 muestras por segundo y 512 muestras por segundo.

Cada muestra tiene una longitud de 2 bytes, y pueden tomar valores desde -32000

hasta 32000 que representan μV.

(a)

(b)

(c)

(d) (e)

(f)

Figura 3.1.4-1 (a) Usuario de la BCI (b) Señales EEG extraidas de (a) (c) Sistema de adquisición EEG (d) CPU con Matlab para el procesamiento de las señales (e) Monitor donde se presenta el resultado del procesamiento EEG (f) Retroalimentación visual con el usuario.

Page 46: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

33

3.2 Acondicionamiento de señales electroencefalográficas El acondicionamiento de señales se refiere a la manipulación de las señales, en este caso, las señales se refieren a las ondas electroencefalográficas, a las cuales, es necesario que se les realce las componentes de interés de esta investigación y extraer las características que puedan ser de utilidad para el proyecto. Dentro de las diferentes formas de acondicionamiento que se le pueden aplicar a una señal, están los filtros, y en este caso, los filtros digitales, los cuales trabajan en el dominio de la frecuencia y nos permiten hacer un análisis de las componentes en frecuencia que conforman a la señal.

3.3 Análisis de las señales y reconocimiento de patrones Aunque el análisis de las señales está incluido en la literatura dentro del procesamiento de señales, dada la extensión del tema, existen libros completos dedicados al análisis de las señales y al reconocimiento de patrones. El reconocimiento de patrones se aplica y desarrolla en muchas ciencias como lo son la Inteligencia Artificial y el Análisis Probabilístico, pero desde puntos de vista distintos. En cada área se han desarrollado herramientas específicas, sin embargo una de las finalidades del reconocimiento de patrones es el uso de clasificadores para dicha tarea.

Un clasificador en definición significa buscar etiquetas categóricamente, es decir,

encontrar etiquetas discretas para eventos del mundo real, continuo, todo esto, automáticamente o con la menor intervención humana posible.

Para construir un clasificador es necesario definir los siguientes aspectos: • Definir las clases / atributos: Que es lo que se va a clasificar y en cuantos

grupos se van a clasificar. o Pueden ser reglas específicas, es decir, se pueden definir reglas

categóricas para definir cuantos grupos existen, como por ejemplo, color, tamaño, magnitud, etc.

• Definir el espacio / dominio de las características a evaluar: En base a las

características que van a ser tomadas para clasificar, entonces se define el espacio para estas características, es decir, si hablamos de color, entonces espacio será el espectro de colores visibles.

Page 47: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

34

• Definir un algoritmo de decisión: Una vez que se tienen fijas el número de

clases y el numero de atributos a utilizar, entonces se puede definir un algoritmo que permita evaluar dichas características para poder separar los grupos de clases

• Medir el desempeño del algoritmo clasificador: Una vez que se tiene el

clasificador terminado, hay que comprobar la eficiencia y eficacia de su implementación. Para su evaluación existen varias técnicas que en una sección posterior se analizarán.

Un sistema de clasificación, para el caso de esta investigación en específico consta

de las siguientes etapas (Figura 3.3-1):

Fig.3.3-1 Esquema general de un sistema de reconocimiento

de patrones.

Adquisición de la Señal: Sensor

Pre procesamiento y/o Segmentación

Extracción de características.

Clasificación

Post Procesamiento: Evaluación de

desempeño

Señal

Segmentos

Vector característico

Clase de pertenencia.

Factor de Corrección

Page 48: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

35

3.3.1 El reconocimiento de Patrones (Extracción de características)

En el análisis de una señal es fundamental realizar, en algún nivel, un reconocimiento de patrones. Aquí, un patrón es una descripción estructural o cuantitativa de un objeto o de alguna otra entidad de interés en una señal. En general, un patrón está formado por uno o más descriptores. En otras palabras, un patrón es una disposición de descriptores, o características.

Una clase de patrones es una familia de patrones que comparten algunas

propiedades comunes. Las clases de patrones se representan por , donde M es el número de clases. El reconocimiento de patrones mediante una máquina supone la utilización de técnicas que permitan asignar los patrones a sus respectivas clases, automáticamente y con la menor intervención humana posible.

Las tres representaciones de patrones principalmente utilizadas en la práctica son los vectores (para descripciones cuantitativas), las cadenas y los árboles (para descripciones estructurales). Los patrones vectoriales se representan utilizando letras minúsculas en negrita, como x, y, y z, y tienen la forma:

Donde cada componente xi, representa el i-ésimo descriptor y n es el número de

descriptores. Los patrones vectoriales se representan como columnas (esto es, como matrices n x 1).

De aquí que un patrón vectorial se puede expresar en la forma mostrada por la

ecuación (3.3.1) o en la forma equivalente , donde la T indica transposición.

La naturaleza de los componentes de un patrón vectorial x depende de la técnica

de medida utilizada para describir el propio patrón físico.

……………………………........................(3.3.1)

Page 49: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

36

3.3.2 Métodos de Discriminación

Los métodos de decisión para el reconocimiento se basan en la utilización de funciones de decisión (o discriminantes). Supongamos que

representa un patrón vectorial de dimensión n. Para M clases de

patrones , el problema básico en el reconocimiento de patrones por

decisión consiste en encontrar M funciones de decisión , que tengan la propiedad de que, si un patrón x pertenece a la clase ω1, entonces:

En otras palabras, un patrón desconocido x pertenece a la i-ésima clase de patrones si, al sustituir el vector x en todas las funciones de decisión, di(x) toma el mayor valor numérico o en caso de empate, los conflictos se resuelven arbitrariamente.

La frontera de decisión que separa la clase ωi de la ωj viene dada por valores de x

para los que di(x) = dj(x), o expresado de forma equivalente, por los valores de x para los que:

di (x)− dj(x) = 0

La práctica común consiste en hacer que la frontera de decisión entre dos clases sea la función dij(x) = di(x) − dj(x) = 0 . De esta forma dij (x) > 0, para los patrones de la clase ωi y dij(x) < 0 para los patrones de la clase ωj. En la figura 3.3.2-1, se puede apreciar gráficamente para tres clases.

………………….…...(3.3.2-1)

……………………………….. (3.3.2-2)

Page 50: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

37

3.4 Los clasificadores estadísticos. Como se parte de atributos numéricos, se utilizan clasificadores estadísticos, ya que este tipo de clasificadores ofrecen mejores resultados cuando se trata de acontecimientos que nunca se pueden reproducir de una manera exacta. La probabilidad a priori de que un patrón concreto, x , pertenezca a una clase wi, se representa por p(wi/x). Si el clasificador de patrones decide que x proviene de wj cuando realmente proviene de wi , incurre en un error, de notación Lij . Como el patrón x puede pertenecer a cualquiera de las M clases consideradas, el error medio que se produce al asignar x a la clase wi es:

La ecuación 3.4-1 se suele llamar riesgo medio condicional o pérdidas según la terminología de la teoría de decisiones.

Figura 3.3.2-1: Funciones discriminantes para 3 clases

……………………………..(3.4-1)

Atributo 3

Atributo 2

Atributo 1

Clase 2

Clase 3

Clase 1

Page 51: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

38

Según la teoría básica de probabilidades, y de acuerdo con el teorema de Bayes, la

probabilidad condicional se puede expresar como p(a/b) = [p(a)p(b/a)]/p(b). Utilizando esta expresión, se puede escribir la siguiente ecuación de la forma:

Donde p(x /ωk) es la función de densidad de probabilidad de los patrones de la clase ωk y P( wk) es la probabilidad de ocurrencia de la clase wk . Puesto que 1/ p(x) es positiva y común a todos los rj( x) , j = 1, 2,…, M, puede ser eliminada de la ecuación 3.4.2 sin que esto afecte el orden relativo de las funciones, de menor a mayor valor. La expresión del error medio se reduce entonces a:

El clasificador tiene M clases posibles para elegir a la hora de clasificar un patrón desconocido dado. Si se calculan r1(x), r1(x),..., r M (x) para cada patrón x , y se asigna el patrón a la clase que tenga el menor error, el error medio total con respecto a todas las decisiones será mínimo.

El clasificador que minimiza el error medio total se denomina Clasificador de

Bayes. De esta manera, el clasificador de Bayes asigna un patrón desconocido x a la clase ωi si ri(x)< rj(x) para j = 1, 2,…, M; j≠i. En otras palabras, se asigna x a la clase ωi si:

……………….….(3.4-2)

……………………..…….(3.4-3)

……….………….……(3.4-4)

Page 52: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

39

3.4.1 El Clasificador KNN. El clasificador K – Próximos Vecinos (KNN por sus siglas en inglés) trabaja en base a probabilidades, que surgen a partir de la cercanía de elementos previamente clasificados (previo entrenamiento, lo que lo hace un clasificador semi-supervisado). Lo que se obtiene es una estimación de densidad local de probabilidad alrededor de la muestra x, que se obtiene a partir de la probabilidad condicional dada por la regla de Bayes, como sigue:

∑ =

= M

j jj

iii

wPwxPwPwxPxwP

1)()/(

)()/()/( r

rr

Donde: M es el número total de clases

iw es la clase i-esima xr es un vector de atributos de longitud n que representa una muestra.

)/( iwxP r densidad de probabilidad de la muestra xr a partir de los k-proximos vecinos

)( iwP es la probabilidad de aparición de la clase iw Partiendo de una base de referencia BR, se estima )/( iwxP r , siguiendo dos reglas de afectación y en consecuencia 2 reglas de decisión, y se hará la búsqueda de los k-próximos vecinos alrededor de xr de acuerdo a una búsqueda en:

a) Modo General (Voting KNN Procedure): Considerar V como el hiper-volumen definido por la distancia d entre xr y el k-esimo vecino.

Volumen = nrπ34

b) Modo de Agrupamiento por clase (Volumetric KNN Procedure): En este modo de operación se hace el mismo cálculo que en el anterior, con la diferencia de que se aplica para n volúmenes distintos correspondientes al espacio que ocupan las n clases. Este procedimiento, requiere el ordenamiento de los n vectores por separado, a diferencia del anterior que requiere el ordenamiento de un solo vector que contiene todas las clases.

……………………………………………..(3.4.1-1)

Page 53: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

40

En una forma más gráfica, lo que hace el clasificador, es crecer un radio alrededor de la muestra a clasificar, gradualmente, hasta obtener un número de elementos vecinos igual a K. Una vez que este número de elementos está dentro del radio, se contabilizan, y entonces, la muestra se clasifica dentro del grupo que mas elementos contenga dentro del radio alrededor de la muestra. Se necesita que K sea un número impar para evitar ambigüedades. El proceso se ve mas claro en la figura 2.4.1-1.

3.4.2 El Clasificador Gaussiano. El clasificador Gaussiano, usa la distribución probabilística de las muestras para determinar que un objeto pertenece o no a una clase. Esto se hace calculando la probabilidad entre la muestra a clasificar y los centros de masa de las clases.

Figura 3.4.1-1. Ejemplo de un elemento clasificado con KNN, donde se muestra como se crece el radio alrededor de la muestra x, para encontrar los k vecinos de las clases 1, 2 y 3, con media 0, 0.5 y 1.0 respectivamente.

Atributo 2

Atributo 1

clase 1

clase 2

clase 3

Page 54: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

41

Esta probabilidad, en si lo que obtiene, es la distancia que existe entre la muestra y la dispersión probabilística de cada clase, con lo que se puede obtener la distancia entre las funciones Gaussianas que distinguen a cada clase. Para calcular dicha distancia se usa la siguiente formula:

))()(2()/())(()(

21

/12/1 μμ

π−Σ−−−−

Σ=xxn

in

ii

T

ewxP r

Donde: n es la dimensión del vector que caracteriza las muestras.

iΣ es la matriz de varianza co-varianza de la clase i μ es la media que corresponde a la clase i

De esta forma, para determinar la clase a la que pertenece x, es en base a la mayor probabilidad. De una manera más gráfica, se puede observar esto en la figura 3.4.2-1, donde existen 3 clases en un espacio definido por atributo 1 y 2. Estas clases tienen media 0, 0.5 y 1 respectivamente, con una desviación estándar de 0.1 en todas.

Figura 3.4.2-1. Ejemplo de un clasificador Gaussiano. Muestras graficadas con 2 de sus atributos y

superpuestas están sus distribuciones, que es a partir de donde se calculan las distancias.

………………………..(3.4.1-1)

Atributo 3

Atributo 2

Clase 3

Clase 1

Clase 1

Función de densidad 3

Función de densidad 2 Función de

densidad 1

Page 55: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

42

3.4.3 Clasificador Basado en Redes Neuronales.

Existen distintos tipos de redes neuronales, algunos muy sencillos, con una sola

neurona (Perceptron), hasta redes que se componen por decenas de ellas. El perceptron tiene la capacidad de clasificar muestras que sean linealmente separables, (semejante al clasificador Gaussiano), sin embargo, si se necesita una clasificación mas compleja, donde la separación de las clases solo se puede hacer mediante varias funciones discriminantes entonces se necesita una red neuronal multicapa, o también conocida como el perceptron multicapa.

Estas redes son demasiado complejas por lo que se ha diseñado un algoritmo para

el ajuste de los pesos de todas las capas. El algoritmo usado para este entrenamiento se llama Backpropagation (propagación hacia atrás). El algoritmo comienza con una muestra a clasificar en la entrada, y se propaga a través de la red hasta obtener el vector de salida, al tener este vector, se compara con el vector de salida deseado (puesto que la muestra a clasificar ya se sabe a que grupo pertenece) y comienza el ajuste de pesos en base al error obtenido de la diferencia de estos dos vectores, la propagación de este error comienza desde la salida hacia la entrada, pasando por las capas ocultas de la red.

Para hacer el cálculo de la propagación del error se usa la siguiente formula:

pipjji ytw αδ=+Δ )1(

Donde: δ es la diferencia entre la salida deseada y la salida obtenida de la red

jiwΔ es el cambio que se produce en el peso de la conexión que une la salida de dicha neurona con la unidad )( jij wU para un patrón de aprendizaje p determinado. α es la tasa de aprendizaje.

ipy es el cambio que se propaga de la capa anterior.

De esta forma se logra actualizar los pesos desde la salida hasta la entrada, repartiendo de manera proporcional el error hacia cada neurona hacia atrás. Un esquema general de una red neuronal multi-capas se muestra en la figura 3.4.3-1.

………………………………….(3.4.3-1)

Page 56: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

43

3.4.4 Estructura de un Clasificador Múltiple.

Un clasificador múltiple basa su funcionamiento en fusionar decisiones de un conjunto de clasificadores, como los vistos en las secciones anteriores. Estos clasificadores múltiples tienen la característica de que sus soluciones son normalmente más robustas.

El clasificador múltiple que se mostrará aquí, contendrá los tres algoritmos

mencionados anteriormente y su funcionamiento estará dado de la siguiente manera:

• El clasificador múltiple recibirá las componentes de una muestra de señal a clasificar.

• Aplicara de manera independiente esa muestra a los tres clasificadores y obtendrá los resultados de clasificación de cada uno de ellos.

• El clasificador múltiple evaluara los resultados de cada uno de los algoritmos y dará un solo resultado.

Figura 3.4.3-1. Red Neuronal Multicapa.

Nodos de Entrada

Capa de Entrada Capa Oculta

Capa de Salida

Nodos de Salida

Page 57: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

44

El esquema de su funcionamiento se puede ver en la figura 3.4.4-1.

La forma en que obtendrá el resultado final se implementará a través de un

algoritmo de decisión que puede ser de las siguientes tres maneras:

• Por Unanimidad: donde el clasificador solo arroja un resultado de pertenecer a una clase cuando los tres algoritmos coincidan en el mismo valor.

• Por Mayoría de Votos: Donde el resultado se toma de la coincidencia de dos o más algoritmos sobre un mismo valor, en caso contrario se irá a la clase de rechazo.

Etapa de Pre-procesamiento

Clasificador Gaussiano Clasificador KNN Clasificador basado en Redes Neuronales

Algoritmo de decisión Clasificador Múltiple

Asignación de clase

Muestra

Decisión

Clasificación de la muestra

Figura 3.4.4-1 Esquema de un clasificador múltiple

Page 58: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

45

• Por Ponderación: El resultado se obtiene a partir de una ponderación asignada a cada algoritmo, esta ponderación se obtendrá de un análisis del comportamiento de cada uno de los algoritmos durante su etapa de entrenamiento.

3.5 Métodos de evaluación de desempeño La forma práctica de evaluar un clasificador, es elaborando una matriz de confusión. La matriz de confusión es una herramienta del análisis estadístico multivariante, el cual propone crear una matriz de n x n, donde n es el número de clases, como se muestra en la figura 3.5-1.

La forma de llenar esta matriz, primero se tiene que tener un grupo de muestras de entrenamiento y un segundo grupo de muestras de prueba, de las cuales conocemos a priori su clase. Una vez que el clasificador ha sido entrenado con el grupo de entrenamiento, se le envían las muestras del grupo de prueba, para así obtener un resultado de clasificación de dichas muestras.

Fig. 3.5-1 Estructura de una matriz de confusión.

Page 59: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

46

Si la muestra n con clase i es clasificada en la i-esima clase entonces se coloca en las coordenadas i, j y el resultado se considera correcto, pero en caso de que la muestra sea clasificada en la clase j, entonces se considera un error y se coloca dentro de la matriz en la posición i,j, por lo que el número de aciertos estará posicionado sobre la diagonal de la matriz y los errores estarán dispersos por el resto de ella. De esta forma, la matriz de confusión no solo permite observar y contar fácilmente los errores, si no permite saber exactamente en que situaciones el clasificador esta fallando y con que clase se esta confundiendo. Para la forma en que se pueden generar los grupos de prueba y entrenamiento existen algoritmos como los siguientes:

3.5.1 Deja Uno Fuera (Leave One Out). El algoritmo de esta prueba consiste en entrenar un clasificador con una base de muestras ya conocida, y dejando fuera del entrenamiento una sola muestra. Una vez que el sistema ha sido entrenado satisfactoriamente, se toma la muestra que fue dejada fuera y se evalúa para determinar si es clasificado correctamente (Figura 3.5.1-1). Este proceso se repite con cada una de las muestras que existen en la base de entrenamiento completa y la información de la eficiencia del clasificador se concentra en la matriz de confusión para su análisis.

Atributo 1 Atributo 2 Atributo 3 3371 3288 2963 1505 1253 977 -1621 -2079 -2064 -4307 -4829 -4475 -5108 -5530 -4973 -3596 -3847 -3291 -587 -595 -315 2414 2587 2441 3766 3964 3504 2846 2845 2330 143 -169 -483

-2881 -3473 -3422 -4598 -5330 -4953 -4006 -4770 -4211 -1322 -1984 -1283

Figura 3.5.1-1: Esquema de trabajo del algoritmo Leave One Out, donde (a) es la base de entrenamiento, (b) es el clasificador, (c) es el vector de prueba para la evaluación del performance, y (d) el resultado del clasificador, el cual es un índice de eficiencia del clasificador que se coloca dentro de la matriz de confusión.

Atributo 1 Atributo 2 Atributo 3 3371 3288 2963

Entrenamiento

(a)

(b)

(c)

Resultado Clase de pertenencia de (c) /

Matriz de confusión

Entrenamiento

Prueba

(d)

Page 60: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

47

3.5.2 Resubstitución. En éste método, se toma la base de entrenamiento completa, y una vez que el clasificador ha pasado por la etapa de aprendizaje, se toma la misma base para ser evaluada y de la misma forma, los resultados se concentran en la matriz de confusión. Este método de estimación del error es demasiado optimista, pues a lo más puede detectar fallas de programación, o si las clases son poco separables, puede entregar resultados útiles (Véase figura 3.5.2-1).

Atributo 1 Atributo 2 Atributo 3 3371 3288 2963 1505 1253 977 -1621 -2079 -2064 -4307 -4829 -4475 -5108 -5530 -4973 -3596 -3847 -3291 -587 -595 -315 2414 2587 2441 3766 3964 3504 2846 2845 2330 143 -169 -483

-2881 -3473 -3422 -4598 -5330 -4953 -4006 -4770 -4211 -1322 -1984 -1283

3.5.3 Cross-Validation. En este método, lo que se hace, es fraccionar la base de entrenamiento, tomando un porcentaje de elementos pertenecientes a cada clase para realizar el entrenamiento, las muestras se toman al azar hasta cumplir con el porcentaje requerido.

Una vez finalizado el entrenamiento, se toma el resto de la base y se evalúa para determinar su eficiencia generando nuevamente la matriz de confusión como se observa en la figura 3.5.3-1. Este proceso se repite 20 veces y se promedian todas las matrices de confusión obtenidas para obtener solo una.

Clasificador

(a) y (c)

(b)

Resultado Clase de pertenencia de (c)

(d)

Figura 3.5.2-1: Esquema de trabajo del algoritmo Resubstitución, donde (a) es la base de entrenamiento, (b) es el clasificador, (c) es la base de prueba para la evaluación del performance, y (d) el resultado del clasificador, el cual es un índice de eficiencia del clasificador.

Entrenamiento y Clasificación

Page 61: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

48

Estas pruebas se aplicarán a cada uno de los algoritmos planteados, incluyendo el clasificador múltiple, con finalidad de evaluarlos y ajustar si es necesario los parámetros de cada uno, con la finalidad, por una parte, de adecuar los clasificadores al tipo de señales que van a trabajar, y por otro lado, para dar resultados concretos sobre la eficiencia de estos.

Atributo 1 Atributo 2 Atributo 3 3371 3288 2963 1505 1253 977 -1621 -2079 -2064 -4307 -4829 -4475 -5108 -5530 -4973 -3596 -3847 -3291 -587 -595 -315 2414 2587 2441 3766 3964 3504 2846 2845 2330 143 -169 -483

-2881 -3473 -3422 -4598 -5330 -4953 -4006 -4770 -4211 -1322 -1984 -1283

Clasificador

(a)

(b)

Resultado Clase de pertenencia de (c)

(d)

Figura 3.5.3-1: Esquema de trabajo del algoritmo Cross Validation, donde (a) es la base de entrenamiento, (b) es el clasificador, (c) es el vector de prueba para la evaluación del performance, y (d) el resultado del clasificador, el cual es un índice de eficiencia del clasificador.

Atributo 1 Atributo 2 Atributo 3 143 -169 -483

-2881 -3473 -3422 -4598 -5330 -4953 -4006 -4770 -4211 -1322 -1984 -1283

(c)

Clasificación

Entrenamiento Entrenamiento

Page 62: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 63: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Capitulo 4

Protocolo Experimental

Page 64: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 65: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

49

4 Protocolo Experimental

Los puntos a tocar en esta sección, son la especificación del equipo necesario para

el desarrollo de este proyecto tanto como del diseño de las pruebas tanto para la extracción de componentes como para el entrenamiento y el diseño del prototipo de este proyecto.

4.1 Especificaciones Técnicas El equipo requerido para realizar este proyecto consta de 3 partes:

• El equipo biomédico para la extracción de las señales EEG. • El equipo de cómputo requerido para el procesamiento de dichas señales. • El software.

4.1.1 Equipo Biomédico El equipo biomédico que se adquirió por parte de la UAM-A es un amplificador de ondas electroencefalográficas del fabricante Nolan Computer Systems modelo MS-1000. Este equipo se adquirió dadas sus características y su precio, siendo este el más accesible en el mercado. El equipo y los accesorios se pueden apreciar en las figuras 4.1.1-1 y 4.1.1-2. El equipo consta de 16 canales de monitoreo y permite 3 configuraciones distintas para realizar las mediciones. Para este trabajo se utilizara el modo “Derivación de referencia Común” ya que las otras dos técnicas de medición son utilizadas para diagnósticos médicos de otra índole y no para monitoreo. Las especificaciones técnicas del equipo son las siguientes: Amplificador Mindset MS-1000

• 16 Canales • Resolución de muestreo 16 bits • 5 Frecuencias de muestreo:

1. 64 Muestras/Segundo 2. 128 Muestras/segundo 3. 256 Muestras/Segundo

Page 66: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

50

4. 512 Muestras/Segundo 5. 1024 Muestras/Segundo

• Buffer interno de 512 KB. • Interfase SCSI

A parte del Mindset MS-1000 es necesaria una serie de accesorios que a continuación se listan:

• Gorra de electrodos: Una gorra que contiene incrustados, dentro de ella, 20

electrodos posicionados de fábrica y que cumplen con el estándar del sistema 10-20, marca Electrocap (véase figura 4.1.1-1b).

• Gel reductor de Impedancia: Gel utilizado para reducir la impedancia y proporcionar un mejor acoplamiento del electrodo y el cuero cabelludo (véase figura 4.1.1-2a).

• Cable Arcoiris: Es el conector entre la gorra y el Mindset (véase figura 4.1.1-1a). • Electrodos para las orejas: Estos electrodos se usan para obtener la referencia

común y se colocan en los lóbulos de las orejas (véase figura 4.1.1-2b).

Figura 4.1.1-1. Equipo de EEG. a.- Amplificador EEG Mindset MS-1000 con el cable arco iris conectado. b.- Gorra Electrocap.

a b

Page 67: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

51

4.1.2 Equipo de Cómputo El equipo de cómputo en el que se ha realizado este proyecto consta de lo siguiente: Computadora Dell • CPU con procesador Pentium 4 HT @ 3.0Ghz • 1 GB de memoria RAM • Disco Duro de 80 GB.

4.1.3 Software El proyecto se realizó usandoel siguiente software: • Sistema Operativo Windows XP Profesional con SP2 • Microsoft Visual Studio 6.0 • Matlab 7 2006b

1. Wavelet Toolbox. 2. Signal Processing Toolbox.

Fig 4.1.1-2. Equipo de EEG. a.- Electro – Gel. b.- Electrodo de arete para referencia.

a b

Page 68: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

52

4.2 Desarrollo Experimental

En el siguiente diagrama se muestran las etapas necesarias para la elaboración de este proyecto.

Programación del amplificador MS-

1000 y de la interfaz SCSI del Mindset.

(4.2.1)

Creación de la aplicación para la toma de muestras

(4.2.2)

Diseño de las aplicaciones para el entrenamiento

(4.2.2)

Creación del banco de lecturas EEG

(4.2.3)

Acondicionamiento de la señal EEG

para la extracción de características

(4.3 y 5.1)

Diseño y programación de los clasificadores

(4.3)

Entrenamiento de los clasificadores

(6)

Construcción del clasificador

múltiple (6.2 y 6.3)

Integración de los clasificadores en

una aplicación con VC++ (6.4)

Pruebas en línea

(6.4)

Evaluación de Resultados

(6.4)

Figura 4.2-1 Esquema de desarrollo de la BCI de este proyecto

Page 69: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

53

4.2.1 Programación del amplificador MS-1000.

El equipo Mindset es un dispositivo que carece de controladores, por lo que sus fabricantes han tenido que desarrollar una aplicación cerrada con fines médicos y que solo se ejecuta en Microsoft Windows ME, por lo que para nuestros fines, se tuvo que programar una DLL que pudiera ejecutarse bajo Microsoft Windows XP y que nos permitiera el desarrollo de una aplicación hecha a las necesidades que este trabajo requiere.

El fabricante envió la información técnica correspondiente a la programación del

Mindset la cual se muestra en el Anexo I de esta tesis, correspondiente al código fuente utilizado en el desarrollo de la investigación.

La forma de obtener un control del equipo y que al mismo tiempo permitiera

flexibilidad de operación en diferentes entornos fue a través de una biblioteca dinámica, la cual se programó y obtuvo exitosamente.

A través de ésta biblioteca es posible realizar las siguientes operaciones:

• Iniciar el dispositivo. • Obtener el estado del dispositivo. • Obtener el estado del Buffer interno. • Configurar el tamaño del buffer interno. • Configurar la tasa de muestreo. • Iniciar el muestreo. • Detener el muestreo. • Obtener los bloques de muestras del buffer interno.

La biblioteca dinámica para el control del mindset MS-1000 se programo en VC++ y

funciona a través de la cola de mensajes. El MS-1000 es un dispositivo autónomo capaz de recibir comandos y entregar muestras.

Los comandos que puede recibir el MS-1000 son los siguientes: • Solicitud de Acuse: Este comando sirve para verificar si existe un dispositivo

MS-1000 conectado a la interfaz SCSI y si esta listo para ser operado. Si el dispositivo recibe este comando, este regresa la confirmación de listo.

• Comando Start: Este comando permite iniciar el muestreo. • Comando Stop: Este comando permite detener el muestreo.

Page 70: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

54

• Comando Solicitud de Estado: Este comando indica al equipo regresar el valor del registro de estado en el que se encuentra actualmente, los valores pueden ser: idle, sampling, buffer overflow error.

• Comando de Samplerate: Este comando permite modificar la tasa de muestreo del dispositivo. Al recibir este comando el equipo cambia la tasa de muestreo a la que fue solicitada y confirma el cambio regresando el valor actual de la tasa de muestreo o una bandera de error si este ocurrio.

• Comando de solicitud de configuración: Este comando solicita al dispositivo que regrese el valor de la tasa de muestreo que esta usando en ese instante, asi como el tamaño del buffer interno que tiene configurado.

• Comando de BlockSize: Este comando se envia para solicitar al dispositivo configurar el tamaño del buffer interno que tiene para almacenar las muestras. Para confirmar la configuración del tamaño de bloque, el dispositivo regresa el valor del tamaño del buffer justo después de haberlo cambiado.

• Comando de Obtención de datos: Este comando se envia para solicitar al dispositivo que envie un bloque de datos (del tamaño del blocksize) y el dispositivo entonces puede disponer del espacio liberado en su buffer para seguir llenandolo.

• Comando de limpieza de estado: Si el dispositivo ha reportado algún error, es necesario enviar este comando antes de volver a iniciar las operaciones.

El dispositivo MS-1000 tiene internamente un buffer de 512 kb, el cual es suficiente para almacenar 16 muestras por canal. El dispositivo al recibir el comando de iniciar muestreo, comienza a sensar y a llenar su buffer interno, el buffer interno trabaja de forma circular. Si el buffer interno se llena, entonces ocurre un error dentro del dispositivo el cual es enviado a la interfaz para su manejo.

El dispositivo necesita que la aplicación le demande las muestras obtenidas al

momento que este las va escribiendo en su buffer, de otra manera el dispositivo detendrá la operación hasta que el usuario envíe un comando de limpieza de estado y vuelva a iniciar el muestreo.

Debido a las tasas de muestreo que maneja el dispositivo, que son: 64, 128, 256,

512 y 1024 muestras por segundo, es necesario que se le de tiempo al dispositivo para que pueda llenar el buffer interno y así solicitarlo, para esto se construyo un a tabla en base a las recomendaciones hechas por el fabricante donde se almacenan los tiempos de espera (en milisegundos) para cada una de las frecuencias de muestreo y tamaño de bloque.

Con lo anterior, fue necesario construir objetos del tipo mensaje, propios para el

mindset, los cuales rigen la captura de muestras dentro de la aplicación. De esta manera, una vez iniciado el muestreo, la instancia de mensajes del mindset, lanza un

Page 71: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

55

mensaje cada cierto numero de milisegundos de acuerdo a la tabla que proporciona el fabricante, cada que un mensaje es lanzado se ejecuta el comando Obtención de datos, el cual hace que el dispositivo entregue un bloque de datos y sea guardado dentro de una matriz instanciada en la aplicación.

4.2.2 Diseño e Implementación de las Aplicaciones para el Muestreo y Entrenamiento.

Siguiendo los puntos mencionados en los objetivos de este trabajo, es necesaria

una aplicación que permita registrar las lecturas EEG cuando el usuario esta realizando tareas por medio del ratón

Para esto, se diseñó una prueba en la que el usuario tiene que alcanzar un punto en

la pantalla partiendo desde el centro de la misma. Dicho punto esta marcado por un circulo, que al ser alcanzado, este cambia a una nueva posición en la pantalla de tal manera que el siguiente movimiento del usuario este dentro de 4 direcciones posibles que son, Arriba, Abajo, Izquierda y Derecha.

De esta manera, el usuario queda restringido a moverse solamente en direcciones

de 90º a la vez, esto con la finalidad de registrar movimientos precisos, como se aprecia en la figura 4.2.2-1.

1 2

3 4

Figura 4.2.2-1. En la figura se muestra una secuencia de los movimientos posibles a realizar de la aplicación para la adquisición de muestras.

Page 72: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

56

Simultáneamente, cuando inicia la aplicación, se inicia el registro de las ondas

EEG del usuario, en una matriz de n muestras por 16 canales, adicionándole a la matriz obtenida del Mindset, un canal extra (17) que registra la dirección que el usuario debe cursar mientras el punto en la pantalla es alcanzado. Cuando se detiene el muestreo de las señales EEG se guarda un archivo con las 16 columnas de los canales y el canal de rastreo de movimientos que fueron obtenidas durante el muestreo. El archivo resultante tiene el formato que se observa en la figura 4.2.2-2.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 -1804 1737 1206 1065 -627 -1055 -1250 -1048 -1026 -1430 -1015 -1188 -962 -1041 -1048 -1495 1 -403 -2337 -2368 -1490 -1400 -1288 -1571 -1321 -1242 -1212 -1306 -1439 -1344 -1041 -1027 -1879 1 -402 -1914 -1486 -1673 -230 -616 -227 -419 -469 -109 -66 -97 -231 -92 -241 -276 1 -603 -1120 -600 484 144 -233 -177 11 74 117 265 104 324 -400 -118 -176 2 398 -115 -673 -1025 -26 -334 -398 -137 23 -76 -295 -153 2 -10 -144 -540 2

-350 -1649 -1676 -1593 471 410 274 153 231 262 220 444 -24 455 127 49 2

4.2.2.1 Preparación del usuario para la toma de lecturas EEG

El usuario debe someterse a una preparación previa a las muestras, que consiste en la colocación de la gorra Electrocap.

Para obtener lecturas correctas, es necesario colocar la gorra de electrodos

firmemente y sujetarla a un arnés que se coloca en el pecho del usuario (Figura 4.2.2.1-1). Esta forma de colocar la gorra, permite que quede tensionada hacia la superficie del cuero cabelludo e impide que la gorra se desplace sobre la cabeza. Aunado a esto, la tensión de la gorra sobre la cabeza hace que el usuario disminuya su movilidad lo que atenúa el riesgo de tener artefactos en las lecturas.

Canales

Figura 4.2.2-2. Formato del archivo en el que se registran las muestras de las lecturas electroencefalográficas.

Page 73: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

57

Posteriormente, los electrodos tienen que ser rellenados con el gel reductor de

impedancia, por medio de una jeringa y una aguja dispuestas para ese fin, como se muestra en la figura 4.2.2.1-2.

Figura 4.2.2.1-1. Colocación de la gorra Electrocap.

Figura 4.2.2.1-2. Aplicación de electro gel en un electrodo.

Page 74: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

58

Finalmente, se colocan los electrodos de referencia, sujetándolos en los lóbulos de las orejas y quedando presionados bajo la gorra, para evitar lecturas contaminadas (Figura 4.2.2.1-3).

4.2.3 Creación del Banco de Lecturas EEG Se prepararon sesiones para tomar lecturas con la finalidad de generar un banco de

datos que nos permitiera trabajar con las señales fuera de línea, es decir, sin el sujeto de prueba y así estudiar dichas señales para extraer la información que estas contienen. Posteriormente éste banco de lecturas servirá para entrenar a los clasificadores.

Las sesiones se elaboraron bajo el siguiente protocolo:

Se tomaron lecturas de 5 voluntarios los cuales se describen a continuación:

Sujeto A: Varón de 26 años y lleva 12 años manejando el ratón como interfaz de PC. Sujeto B: Varón de 25 años que lleva 10 años manejando el ratón como interfaz. Sujeto C: Varón de 27 años que lleva 6 años manejando el ratón como interfaz.

Figura 4.2.2.1-3. Electrodo de referencia en el lóbulo de la oreja derecha.

Page 75: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

59

Sujeto D Varón de 28 años que lleva 5 años manejando el ratón como interfaz. Sujeto E Mujer de 21 años con 6 años de experiencia en el uso del ratón como interfaz.

Ninguno de los sujetos de prueba ha sido conectado a una interfaz de este tipo antes de este trabajo, por lo que ninguno conoce técnicas de auto-manipulación de ondas EEG. Todos los sujetos son diestros para el manejo del ratón. Los sujetos fueron sometidos a periodo de relajación previo de 5 minutos para obtener señales mas claras.

4.2.3.1 Sesiones de Grabación.

Una vez que los sujetos fueron preparados con la gorra Electrocap y con el Electro-gel, se despejó la sala para la sesión y se guardó silencio. Las lecturas comenzaron a tomarse y se dejó al sujeto que decidiera cuando comenzar a mover el ratón.

La prueba duro 10 minutos, y consiste en que el usuario moviera el ratón sobre la

aplicación que anteriormente se mencionó, como se muestra en la figura 4.2.3.1-1.

Figura 4.2.3.1-1: Sujeto de prueba A, realizando el protocolo experimental para el registro de las señales.

Page 76: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

60

Se han realizado otras grabaciones que difieren del protocolo anteriormente

mencionado, estas variaciones son pruebas que hasta el momento no han arrojado información adicional a lo ya obtenido. Las variaciones consisten en mover el ratón con el brazo izquierdo y hacer pausas a la mitad de la prueba, mientras el sujeto sigue siendo grabado.

Otra variación del protocolo de las sesiones fue grabar al sujeto B durante 10

minutos mientras se relajaba y evitaba cualquier movimiento, esto con la finalidad de obtener una lectura en estado de reposo que nos pueda indicar diferencias en los movimientos al compararla con la grabación del mismo sujeto al momento de estar realizando la prueba según el protocolo establecido. Y finalmente se tomaron dos lecturas, una al sujeto A y otra al sujeto B de movimientos imaginarios, mientras se les colocaba frente a una pantalla en blanco, se les pidió a los sujetos que imaginaran hacer un movimiento de un punto imaginario en la pantalla, en series de 20 veces en cada una de las 4 direcciones.

Estas dos últimas grabaciones de movimiento imaginario y en estado de reposo

también serán ocupadas para probar el prototipo de los clasificadores y observar los resultados de los mismos.

4.2.3.2 Origen de la señal. En esta etapa se necesita obtener señales electro-encefalográficas (digitalizadas) que permitan su análisis para posteriormente aplicar técnicas de procesamiento digital de señales, como son filtros y análisis de componentes principales, para poder así, obtener una caracterización de la señal. El primer paso para iniciar la adquisición de la señal, es determinar la posición de los electrodos sobre el cuero cabelludo que permitan obtener de manera optima las señales, para esto, tomaremos como base el sistema internacional 10/20 de posicionamiento de electrodos, el cual es una guía para identificar los puntos de interés según las necesidades requeridas. (vease figura 4.2.3.2-1).

Page 77: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

61

Posteriormente se analizan las señales para determinar en que electrodos se

encuentran los puntos de interés para la extracción de las señales EEG relacionadas con el movimiento imaginario o intención de movimiento.

Según el mapeo cerebral que se ha investigado a través de los años, se sabe ya que

los movimientos de las extremidades del lado derecho se ven reflejadas en el hemisferio izquierdo y viceversa, puesto que la representación del cuerpo en el cerebro esta cruzada con respecto a los hemisferios.

Una vez obtenida la señal, ya digitalizada, se continua con la extracción de las componentes que interesan al presente trabajo, las cuales son beta, mu y P300. Para las primeras dos componentes usaremos técnicas de filtrado de señales, ya que estas pertenecen al dominio de la frecuencia. La componente P300 es distinta a las anteriores, por lo que se buscarán distintas técnicas para obtenerla. Entre los métodos encontrados para su extracción están algunos basados en el promedio de varias señales obtenidas de distintos electrodos al mismo tiempo.

Figura 4.2.3.2-1. Distribución de los electrodos en el sistema 10-20 [19]. En las posiciones encerradas en rojo se indican los electrodos donde se puede medir el movimiento y la intención de movimiento.

Page 78: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

62

4.3 Clasificación de las componentes de la señal EEG. En esta etapa se inicia la implementación del clasificador múltiple que estará formado internamente por tres clasificadores, que son:

• KNN (K Próximos vecinos) • Clasificador Gausiano • Red Neuronal

Esto con la finalidad de lograr un clasificador más robusto, ya que la clasificación

se obtendrá por voto mayoritario o por una asignación de peso a cada uno de los clasificadores internos, obtenido a partir del éxito de cada uno de estos. El clasificador será entrenado con el banco de señales obtenido de la etapa anterior y se estudiarán los resultados con la finalidad de obtener una relación entre los movimientos hechos por el sujeto de prueba y sus señales EEG obtenidas, y con esta información determinar los comandos que controlarán al cursor, resultado de la clasificación. Posteriormente, se implementará una interfaz gráfica de prueba que permita interactuar al usuario con la PC, controlando un cursor en pantalla, para hacer la evaluación en línea del sistema.

4.3.1 Procesamiento de la señal

Las señales obtenidas en la etapa anterior fueron exportadas a Matlab para su análisis. Para comenzar con el análisis de las señales, es necesario hacer un pre-procesamiento, el cual nos permite eliminar ruido y las señales que no pertenecen a las señales EEG.

El primer paso a considerar es la eliminación de la frecuencia de 60 Hz que

proviene de la línea eléctrica, el cual se puede observar si obtenemos el espectro en frecuencia de las señales tomadas, como podemos observar en la figura 4.3.1-1.

Page 79: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

63

Figura 4.3.1-1. Espectro de 2 lecturas EEG distintas. El cursor de línea continua indica los 15 Hz, frecuencia donde se localiza SMR, y el cursor de línea punteada indica el pico de la frecuencia de 60 Hz, inducido por la línea eléctrica.

(a)

(b)

Page 80: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

64

Las señales EEG, como ya se mencionó, contienen varias componentes relacionadas a actividades distintas, que para la finalidad de este trabajo, solo 3 son las que se van a estudiar. Estas componentes se localizan entre los 12 y 24 Hz y entre los 12 y 16 Hz por lo que es necesario filtrar la señal primero en el rango de 12 a 24 Hz, para obtener beta y al mismo tiempo eliminar la componente de 60 Hz que se ha inducido en las señales. Para esto se aplicaron varios filtros para encontrar el que entregara una señal más clara, basándose en el criterio médico que define una señal SMR. Los filtros que se aplicaron son los mostrados en las figuras 4.3.1-2, 4.3.1-3 y 4.3.1-4, los cuales tienen las siguientes caracteristicas: Filtro de la figura 4.3.1-2 Filtro tipo IIR Chebyshev II Configuración Pasa-banda 12 a 16 Hz Orden 24 Filtro de la figura 4.3.1-3 Filtro tipo IIR Butterworth Configuración Paso-bajo 0 a 16 Hz Orden 162 Filtro de la figura 4.3.1-4 Filtro tipo FIR de rizo constante Configuración Pasa-Banda 12 a 16 Hz. Orden 294 Como se puede ver en los filtros obtenidos con la herramienta de diseño de filtros sptool de Matlab, es notorio el orden de cada uno de los filtros, sobre todo en el filtro FIR de rizo constante, ya que su orden es muy elevado y no tiene una alta precisión como lo muestran los otros dos filtros. Dado que entre mayo es el orden del filtro, mayor es el tiempo de computo que se necesita para obtener la señal resultante. Por otro lado, tambien los filtros tipo IIR causan un corrimiento de fase, sin embargo estos no necesitan un orden tan elevado como los FIR, que no causan dicho corrimiento.

Page 81: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

65

Para los fines de esta investigación, se determinó que no es importante tener un corrimiento en la fase de la señal resultante, si a cambio obtenemos un filtro de orden bajo (como el filtro Chebyshev II de orden 24) que permite trabajar con una señal con tasa de muestreo de 1024 muestras por segundo sin necesidad de hacer pausas, es decir, podemos trabajar con estos filtros en tiempo de ejecución.

Figura 4.3.1-2.- Filtro IIR Chebyshev II pasa-banda de 12 a 16 Hz de orden 24

Figura 4.3.1-3. Filtro IIR Butterworth paso-bajo de 0 a 16 Hz de orden 162.

Page 82: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

66

Todos los filtros fueron diseñados con la herramienta SPTOOL de Matlab. Tras las sesiones de grabación se obtuvieron señales como la que se observa en la figura 4.3.1-5, donde se aprecia una señal típica EEG.

Esta señal es de una sesión tomada al sujeto A bajo el protocolo previamente especificado, y tras aplicar los filtros que se muestran en figuras anteriores, se puede obtener señales como las que se ven en la figura 4.3.1-6, 4.3.1-7 y 4.3.1-8, que

Figura 4.3.1-4 Filtro FIR de rizo constante pasa-banda de 12 a 16 Hz de orden 294.

Figura 4.3.1-5 Señal EEG tomada al sujeto A correspondiente al canal C3.

Page 83: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

67

corresponden mu del canal C3, alfa y beta del canal C3 y mu del canal C3 respectivamente. Estas señales fueron tomadas con una tasa de muestreo de 1024 muestras por segundo y con una resolución (fijada de fabrica) de 16 bits. La tasa de muestreo requerida normalmente para estudios medicos electro-encefalográficos normalmente no usa mas alla de 256 muestras por segundo, sin embargo, en el primer acercamiento que tuvimos con estas señales, consideramos adecuado hacer el muestreo a la mayor tasa posible, para que al momento de pasar al análisis de las señales y extracción de características, se pudiera contar con la mayor cantidad de información posible. Posteriormente, una vez identificadas las características con las que se trabajo esta investigación, la tasa de muestreo que se uso fue 256 muestras por segundo, con la cual se obtuvieron los resultados de esta investigación. La justificación para haber elegido esta tasa de muestreo es que la diferencia de la información obtenida entre 1024 y 256 muestras por segundo prácticamente es nula, por lo que para ahorrar tiempo de procesamiento (y también reducir espacio de almacenamiento) se redujo a 256 muestras por segundo. Esto se determino por el análisis paulatino que se fue haciendo de la señal, por lo que a lo largo del trabajo tenemos lecturas de 1024, 512, 256 y 128 muestras por segundo.

Page 84: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

68

Figura 4.3.1-6 Señal EEG después de aplicar el filtro de la figura 4.3.1-2 para obtener mu.

Page 85: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

69

Figura 4.3.1-7 Señal después de aplicar el filtro 4.3.1-3 para obtener beta y alfa.

Page 86: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

70

Figura 4.3.1-8 Señal obtenida después de aplicar el filtro 4.3.1-4 para obtener mu.

Page 87: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

71

4.3.2 Extracción de características. Una vez que se obtuvieron estas señales, es posible comenzar el análisis de las mismas para proponer la extracción de características que permita separar e identificar las señales correspondientes a los diferentes movimientos que el sujeto de pruebas ejecuto mientras era grabado.

4.3.2.1 Búsqueda de Características Separables En esta etapa se hace la búsqueda de características de las señales que permitan diferenciarlas entre si, con la finalidad de usar estas características en el clasificador. La metodología que se sigue para encontrar la caracterización adecuada de las señales consta primero de hacer un análisis visual y cuantitativo de las mismas, esto es, observar las señales en crudo (sin pre-procesamiento) y filtradas a diferentes frecuencias, simultáneamente, observar su espectro en frecuencia y cambios bruscos de amplitud.

La figura 4.3.2.1-1 muestra una señal sin pre-procesamiento.

Figura 4.3.2.1-1 Señal EEG sin pre-procesamiento.

Amplitud

Tiempo (512 muestras/segundo)

Page 88: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

72

Lo primero que se hizo fue aislar los segmentos de señal que pertenecen a un solo movimiento, es decir, de una sesión de grabación, se separó la señal en trozos de tiempo en los que se hizo un solo movimiento, así como se muestra en la figura 4.3.2.1-2.

Figura 4.3.2.1-2 Señales segmentadas a partir de la original sin filtrado.

Abajo Izquierda

Derecha Arriba

Amplitud

Tiempo (512 muestras/segundo)

Page 89: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

73

Como se puede observar en la figura anterior, no se puede identificar aun puntos que separen los 4 tipos de movimientos distintos, por lo que se repitió el proceso anterior pero ahora con las señales filtradas como se muestra a continuación en la figura 4.3.2.1-3. El filtro que se utilizo para obtener estas señales fue de tipo IIR Chebyshev II de 12 a 16 Hz. De orden 24.

Figura 4.3.2.1-3 Señales segmentadas a partir de la original con filtrado.

Abajo Izquierda

Derecha Arriba

Amplitud

Tiempo (512 muestras/segundo)

Page 90: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

74

Primera análisis: Con esta segunda visualización de las señales ya segmentadas se pudo observar cierto comportamiento de la señal que puede asemejar a un cambio de fase dentro de los 15hz que es la frecuencia en la que se esta trabajando, dicho comportamiento se puede observar en las imágenes de la figura 4.3.2.1-3, y con mas detalle podemos observarlo en la figura 4.3.2.1-4.

Para poder medir estos cambios en la señal, lo primero que se planteo, fue hacer un análisis de demodulación en cambio de fase, con la finalidad de obtener un registro de cuantos cambios de este tipo existen en un tiempo determinado T. Para esto se uso la función pskdemod de Matlab la cual entrega en formato binario el análisis de dicha señal. Lo que se obtuvo fue un vector de la misma longitud que la señal, y haciendo un análisis de esta, se pudo observar cierta periodicidad en los cambios con una pequeña variación. Esto es, el vector resultante contenía 20 o 21 casillas con 1’s y 15 o 16 casillas con 0’s. Por lo que para seguir con el análisis de estos resultados se propuso tomar un número de 36 bits de longitud y ponderar el vector en segmentos de 36 bits con la finalidad de obtener información mas clara.

Figura 4.3.2.1-4 Fragmento de señal donde ocurre un cambio de fase.

Page 91: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

75

Una vez generado el vector de números de 36 bits, se graficó, y se observó una variabilidad en la velocidad del cambio de la pendiente de la señal, en concreto, la muestra que se uso para hacer este análisis tuvo dos etapas, la primera haciendo movimientos lentos y posteriormente, poco antes del final, los movimientos se aceleraron, y dicha aceleración coincide con un cambio la velocidad de cambio de la pendiente como se observa en la figura 4.3.2.1-5.

Estas gráficas muestran en si el número de apariciones de la característica mostrada en la figura 4.3.2.1-4 a lo largo de la señal.

Figura 4.3.2.1-5 La imagen superior muestra la grafica del vector de números de 36 bits. En los detalles (Imágenes inferiores) se observa la diferencia de la velocidad de los cambios de pendiente, en la izquierda se observan cambios mas lentos y una gráfica mas espaciada y con mayores amplitudes, en la izquierda se observan cambios mas rápidos y con menores amplitudes.

Page 92: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

76

El análisis de la señal por medio de este procedimiento refleja cambios en la velocidad en la que se ejecutan los movimientos, sin embargo, no ofrecen mas información a cerca de los 4 diferentes movimientos que se están ejecutando. Segundo análisis: A la par del análisis anterior se ha llevado a cabo un análisis wavelet de las señales, con la finalidad de encontrar información con respecto a las direcciones de dichos movimientos. Lo que se aplicó fue un análisis wavelet usando la función wavelet Daubechies de orden 10, de los cuatro movimientos mencionados en el protocolo de experimentación. Una vez que se obtuvieron dichos análisis, se le aplico un análisis de Fourier a las descomposiciones de la señal de orden 6 al 10, como se muestra en la figura 4.3.2.1-6.

Se aplicó el mismo análisis para las señales correspondientes a las 4 direcciones distintas, y no se obtuvo separación alguna, las cuatro señales mostraron la misma composición en frecuencia.

Tercer Análisis: Se aplico un análisis de espectro de frecuencia usando la transformada Wigner-Ville para obtener una representación de las señales en el tiempo a través de su frecuencia.

Figura 4.3.2.1-6: De arriba hacia abajo se tiene el análisis de las descomposiciones de la señal del nivel 6 al 10. La columna izquierda representa los coeficientes a y del lado derecho están los coeficientes c. Obtenida con la función dwt de Matlab

Page 93: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

77

Un espectrograma contiene el análisis frecuencial de una señal a lo largo del tiempo, como se muestra la figura 4.3.2.1-7. Como podemos ver en el espectrograma, este muestra la actividad alrededor de un electrodo. En la figura que esta a continuación tenemos la actividad registrada mientras el sujeto de prueba se le pidio que pensara en moverse en una sola direccion (primero hacia la derecha) y posteriormente que cambiara hacia otra direccion (arriba), Dentro de la imagen podemos ver distintos cambios en la intensidad de las frecuencias, y lo que se busco fue que existiera algún patrón exatamente donde existe un cambio de dirección.

También se analizaron los canales Fp1, Fp2, F7, F8, C4, P3, P4, O1 y O2 para buscar alguna característica que pudiera marcar la diferencia entre las direcciones. Se usaron esos canales ya que en esos puntos es donde se puede encontrar información a cerca del movimiento imaginario del cuerpo y de la parte motora del mismo. Las imágenes de los espectrogramas de dichos canales se muestran en las imágenes 4.3.2.1-8 , 4.3.2.1-9, 4.3.2.1-10, 4.3.2.1- 11, 4.3.2.1-12, 4.3.2.1-13, 4.3.2.1-14, 4.3.2.1-15 y 4.3.2.1-16.

Figura 4.3.2.1-7: Espectrograma de una señal EEG, canal C3 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba. No existe referencia alguna que indique el cambio de dirección a partir del análisis de frecuencias.

Cambio de dirección

Page 94: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

78

Figura 4.3.2.1-8: Espectrograma de una señal EEG, canal Fp1 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Figura 4.3.2.1-9: Espectrograma de una señal EEG, canal Fp2 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Page 95: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

79

Figura 4.3.2.1-10: Espectrograma de una señal EEG, canal C4 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Figura 4.3.2.1-11: Espectrograma de una señal EEG, canal P3 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Page 96: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

80

Figura 4.3.2.1-12: Espectrograma de una señal EEG, canal P4 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Figura 4.3.2.1-13: Espectrograma de una señal EEG, canal O1 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Page 97: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

81

Figura 4.3.2.1-14: Espectrograma de una señal EEG, canal O2 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Figura 4.3.2.1-15: Espectrograma de una señal EEG, canal F7 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Page 98: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

82

Como se observa en las figuras anteriores (Figuras 4.3.2.1-8 a la 16) , hay 4 canales que muestran una diferencia notoria con respecto al resto de los canales, estos son los canales Fp1, Fp2, F7 y F8 (Figuras 4.3.2.1-8, -9, -15 y -16), que corresponden a la parte frontal de la cabeza. Estos canales se pusieron dentro del estudio solo para verificar la presencia de los artefactos oculares, ya que en realidad en esta zona no existe indicio de actividad relacionada con el movimiento imaginario ni con la parte motora del cuerpo. Con respecto al análisis de los espectrogramas, se hicieron varios estudios usando diferentes versiones de la manera de representar los espectros, entre ellos se usó una manera binarizada de los estudios para encontrar patrones dentro de los espectros, como se muestra en la figura 4.3.2.1-17, 4.3.2.1-18, 4.3.2.1-19, 4.3.2.1-20, sin embargo, estos tampoco contienen la información buscada.

Figura 4.3.2.1-16: Espectrograma de una señal EEG, canal F8 en el sistema 10-20 con 40 segundos de duración. Del segundo -20 al segundo 10, se registraron movimientos a la derecha, y del segundo 10 al 20 se registraron movimientos hacia arriba.

Cambio de dirección

Page 99: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

83

Figura 4.3.2.1-17: Movimiento a la derecha en vista de espectro binarizado, usando el canal C6

Figura 4.3.2.1-18: Movimiento a la izquierda en vista de espectro binarizado, usando el canal C6

Page 100: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

84

Figura 4.3.2.1-19: Movimiento hacia arriba en vista de espectro binarizado, usando el canal C6

Figura 4.3.2.1-20: Movimiento hacia abajo en vista de espectro binarizado, usando el canal C6

Page 101: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

85

Las imágenes de los espectros en forma binarizada solo se reportaron para que se pueda obserbar la arbitrariedad que existe entre ellos y la ausencia de patrones que estén relacionados con el movimiento imaginario. Dichos análisis no arrojaron la información que se necesita para poder hacer una separación de las lecturas EEG con la cual se pudiera tener una separabilidad al momento de intentar clasificar las lecturas. Para llegar a esta conclusión se tomo el espectrograma de 100 movimientos por cada dirección, en las cuales no fue posible encontrar un patrón que distinguiera una de otras.

Page 102: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 103: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Capitulo 5

Protocolo Experimental EOG

Page 104: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 105: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

86

5. Protocolo Experimental de EOG Debido a los resultados anteriores, se opto por buscar otra forma de caracterizar las señales, y el primer candidato para dicha caracterización fueron las lecturas EOG o Electro-Oculograma [22]

5.1 EOG Un EOG es la señal registrada a partir del movimiento ocular a través de electrodos. Esta señal es causada debido a la diferencia de potencial que el globo ocular produce por un efecto de dipolo. El globo ocular actúa como un dipolo al estar cargado positivamente en su parte anterior y negativamente en su parte posterior, esto produce que en cada movimiento del ojo, este emita una diferencia de potencial correspondiente a su posición inicial y final [22]. Véase figura 5.1-1.

La diferencia del potencial causado por el movimiento ocular es normalmente de 100 mV, que son totalmente visibles desde un EEG, ya que los voltajes de un EEG son del orden de 100 micro Volts. Los movimientos oculares tienen una amplitud notoria sobre las lecturas EEG, en donde son considerados como artefactos. En este caso, proponemos extraer dichos artefactos de la señal EEG, usando el mismo equipo que se usó para las adquisiciones anteriores.

Punto de referencia (Electrodo E2)

+ -0

Figura 5.1-1. Polarización del ojo cuando este gira hacia la izquierda, cuando no gira y cuando gira hacia la derecha. Vemos que el electrodo mide un potencial negativo cuando el ojo gira hacia la derecha y positivo cuando gira hacia la izquierda. El potencial cuando el ojo no tiene movimiento permanece cercano a cero con pequeñas oscilaciones que se pueden discriminar.

Page 106: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

87

5.1.1 Estado del Arte de Interfaces basadas en EOG Las interfaces basadas en EOG son mucho más recientes que las interfaces basadas en EEG, sin embargo, la detección de movimiento ocular ha entregado mejores resultados. El estudio de las señales EOG para interfaces parten con resultados aplicables desde 1993 con un articulo llamado An Eye Tracking Computer User Interface [25], el cual desarrolla un sistema para adquisición de movimientos oculares de bajo costo con el cual obtienen resultados arriba del 70% a través de una interfaz de prueba basada en menus. Al trabajo anterior [25] le sucede otro titulado The Eye Mouse, An Eye Communication Device [26] en el año de 1997, el cual propone un montaje de electrodos distinto al mostrado en esta tesis, así como también implementa dos funciones extras al desplazamiento del cursor que son el clic y el doble clic. Otro trabajo que se desarrolló en el año 2001, es el titulado Brain-Wave Biopotencials based Mobile Robot Control: Wavelet-Neural Network Pattern Recognition Approach [27], en donde por primera vez usan un enfoque de reconocimiento de patrones para poder obtener los comandos que dirigen a un robot. En ese mismo año, otro trabajo cubre los mismos objetivos que el anterior publicado en ese mismo año pero usando otros algoritmos para la detección de comandos [28]. Otro trabajo encontrado, es el proyecto de la Universidad de Alcalá en España, denominado SIAMO [23]. Este proyecto pretende brindar interfaces de comunicación y mejoramiento de la calidad de vida a discapacitados. Entre las diferentes soluciones que busca el proyecto SIAMO, esta la de manipular una silla eléctrica a través de movimientos oculares [24] y de manera general crear un conjunto de comandos basados en movimientos oculares los cuales permitan realizar diversas tareas de la vida diaria. El trabajo mas reciente encontrado es el titulado Development of Meal Assitance Orthosis for disabled Persons with Human Intention Extraction through EOG Signals [29], donde se desarrolla un prototipo de máquina para asistir en la alimentación a personas que están severamente discapacitadas haciendo uso de las lecturas EOG. Existen algunos trabajos donde su aportación esta basada fuera de los aspectos de la clasificación de señales EOG y en su totalidad no son mas de 12 artículos los que se han encontrado en esta revisión, sin embargo solo dos de ellos toman un enfoque de reconocimiento de patrones usando algoritmos basados en redes neuronales [24][ 27], y es en ese punto donde esta tesis ha hecho su aportación en este rubro.

Page 107: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

88

5.2 Diseño del Protocolo Experimental para EOG

5.2.1 Diseño del Montaje Las señales EOG se pueden obtener desde un montaje de electrodos basados en el sistema 10-20, usando los electrodos Fp1, Fp2, F7 y F8. Con los electrodos F7 y F8 se puede registrar las señales correspondientes a los movimientos horizontales, izquierda y derecha (como se puede ver en la figura 5.2.1-1 y 5.2.1-2) de una manera que muestran una diferencia notoria entre una dirección y otra. Para registrar los movimientos verticales, arriba y abajo se pueden usar los electrodos Fp1 y Fp2, sin embargo estos carecen de un punto de referencia con respecto al otro extremo del movimiento (abajo del ojo) para poder hacer una separación robusta, dichas señales tienen mucha similitud cuando tenemos un movimiento hacia arriba y otro hacia abajo como podemos observar en la figura 5.2.1-3 y 5.2.1-4.

Figura 5.2.1-1. Señal registrada usando el montaje 10-20 de un movimiento ocular hacia la derecha

Page 108: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

89

Figura 5.2.1-2. Señal registrada usando el montaje 10-20 de un movimiento ocular hacia la izquierda

Figura 5.2.1-3. Señal registrada usando el montaje 10-20 de un movimiento ocular hacia arriba

Page 109: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

90

Por lo que fue necesario diseñar un montaje que cuente con ese punto de referencia para los movimientos verticales del ojo. Por cuestiones de comodidad y rapidez se determino usar electrodos de “copa” (véase figura 5.2.1-5) los cuales pueden ser colocados en cualquier punto de la cara, para lo cual nosotros decidimos usar el montaje sugerido en el libro EEG Technology [22] con la finalidad de obtener muestras mas claras y separables. El montaje usado se muestra en la figura 5.2.1-6

Figura 5.2.1-4. Señal registrada usando el montaje 10-20 de un movimiento ocular hacia abajo

Figura 5.2.1-5. Electrodos de Copa.

Page 110: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

91

5.2.2 Adquisición y Caracterización de señales EOG Dada la naturaleza de las señales EOG se propuso reducir la tasa de muestreo de la adquisición, ya que la característica que indica la presencia de un movimiento ocular es de muy baja frecuencia. Con esto podemos reducir la tasa de muestreo a 64 muestras por segundo, haciendo de ésta manera un sistema mas eficiente que consume menos recursos de cómputo. Las señales mostraron una característica como se muestra en la figura 5.2.2-1, donde podemos apreciar diferentes movimientos oculares a lo largo del tiempo. Tampoco fue necesario el filtrado de la señal, ya que el nivel de ruido, comparado contra los niveles de voltaje causados por el movimiento ocular, es muy pequeño.

Figura 5.2.1-6. Montaje de electrodos usando electrodos de copa sobre la cara para obtener los registros del movimiento ocular.

Page 111: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

92

Las señales EOG pueden ser caracterizadas por un nivel de umbral, para descartar otro tipo de señales que se inducen sobre los electrodos, como son EEG o ECG. Dada la posición de los electrodos, estos permiten que las señales EOG sean de mucha mayor amplitud cuando ocurre un movimiento ocular, con respecto a cuando este no existe, por lo que una segmentación de la señal por medio de umbral permiten obtener muestras lo suficientemente claras como para poder ser clasificadas. Dichos umbrales se seleccionaron a mano para esta investigación, ya que existen muchos factores que provocan que estas lecturas cambien sus valores promedios de una toma a otra, es decir, existen características que varían de individuo a individuo como lo son la conductancia de la piel, la forma de la cara y el tamaño del globo ocular (por mencionar las mas importantes) que provocan que las lecturas tengan un mayor nivel de voltaje que en otras personas, lo que no varia es la forma de las señales ni la relación de la señal con movimiento con respecto a una señal sin movimiento. La segmentación también fue un punto crucial para determinar cuando comienza un movimiento y cuando termina. Dada la naturaleza de las señales se diseño el siguiente algoritmo para la segmentación de las señales:

Figura 5.2.2-1. Señal registrada usando el montaje de electrodos de copa. La señal muestra múltiples movimientos. La línea inferior es el marcador usado para determinar la dirección del movimiento.

Page 112: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

93

• Se busca en los 4 canales (E1, E2, E3 y E4) que alguna de ellas supere su umbral establecido previamente, usando el valor absoluto de la señal.

• Si se trata del entrenamiento: Si la señal corresponde a un movimiento horizontal, se toma un segmento de 25 muestras de la posición donde supero el umbral hacia delante del canal E1. Si se trata de movimiento vertical, realizamos el mismo calculo pero con el canal E3.

• Si se trata de la evaluación del clasificador: Se toma el valor de las señales, una muestra después de que algún umbral fue superado y se guardan los valores.

• Se calcula el valor máximo del valor absoluto del segmento seleccionado en el paso anterior, y después se toman cuatro parámetros, uno para cada canal, para caracterizar la señal en la posición en la que se encontró el máximo absoluto.

• Se guarda la muestra en un archivo.

5.3 Diseño del Protocolo de Prueba En un principio, al momento de comenzar el estudio de los movimientos oculares con EOG, se usó exactamente el mismo protocolo que se uso para EEG (capitulo 4), cambiando solamente la forma de caracterizar las señales, por medio de umbrales. Sin embargo, esto causo un poco de confusión ya que las lecturas obtenidas si tenían una separación, sin embargo estas no correspondían a los movimientos registrados por el sistema. Es decir, teníamos movimientos registrados a la derecha que seguían un patrón especifico, sin embargo, también había otros movimientos en la misma dirección que eran totalmente diferentes y no solo eso, si no que también tenían un parecido muy grande a otros movimientos, como arriba o abajo. En la figura 5.3-1 podemos observar 10 movimientos distintos a lo largo del tiempo, mientras que la línea en la parte inferior marca la dirección a la que pertenece dicho movimiento. Los picos en las señales son de diferentes amplitudes, en E1 son de 60 milivolts en promedio, de la misma forma son en E2, en E3 son de 80 milivolts pero en E4 son de 20 a 30 milivolts. Esta variación se debe a la posición del electrodo de referencia, que se encuentra notoriamente mas cerca del electrodo E4 que del resto. Sin embargo lo importante aquí no son los niveles, si no que se pueden fijar y aislar cada uno de esos brincos en la señal.

Page 113: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

94

Haciendo un acercamiento de la imagen anterior para enfocarnos en una sección donde tenemos registrados dos movimientos seguidos hacia la derecha, podemos observar la discrepancia en los patrones, y no solo eso, si no que el movimiento tiene una similitud muy grande a un movimiento en la dirección contraria. Esto se puede observa en la figura 5.3-2.

Figura 5.3-1. Señal registrada usando el montaje de electrodos de copa. La señal muestra 10 registros de movimientos en distintas direcciones.

Figura 5.3-2. En las partes enfocadas, podemos observar movimientos hacia abajo en ambas, sin embargo podemos ver la diferencia de patrones que siguen las señales.

Page 114: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

95

Lo mismo sucede con otros movimientos, como podemos observar en la figura 5.3-3, donde tenemos un movimiento hacia abajo en la primera sección, y después tenemos de nuevo un movimiento hacia abajo en la segunda sección que no se parece al primero, y muy distante de hacerlo se parece mas a un movimiento a la izquierda.

Al intentar clasificar las muestras anteriores, usando los valores máximos y mínimos de la señal, obtuvimos el siguiente resultado que se observa en la figura 5.3-4, donde podemos ver perfectamente como se aglomeran las muestras en 4 cúmulos, sin embargo, cada uno de estos cúmulos contienen movimientos de las 4 direcciones, lo cual no nos permite hacer una clasificación adecuada.

Figura 5.3-3. Señal registrada usando el montaje de electrodos de copa. La señal muestra dos registros en dirección hacia abajo, los cuales no tienen similitud alguna.

Page 115: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

96

Con lo anterior, nos dimos a la tarea de rediseñar el protocolo experimental ya que a diferencia de lo que reporta un trabajo perteneciente al proyecto SIAMO, nosotros no encontramos una correspondencia lineal entre el movimiento ocular y el punto correspondiente en la pantalla de pruebas. En el protocolo anterior nosotros tenemos una pantalla con un círculo dibujado, el cual tiene que seguir el usuario de prueba, Dicho punto tiene 9 posiciones distintas en la pantalla como muestra la figura 5.3-5. Cuando intentamos ejecutar la misma sesión de prueba usando EOG, se registraron diferentes tipos de señal para un solo movimiento.

Figura 5.3-4. Resultado de intentar clasificar movimientos usando una pantalla de prueba de 9 posiciones.

Page 116: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

97

Cuando se hizo el análisis de los registros obtenidos, se encontró que los movimientos (como los de la figura 5.3-2 y 5.3-3 ) si pertenecen a la misma dirección, pero se localizan en diferentes cuadrantes de la pantalla, como lo muestra la figura 5.3-6.

Figura 5.3-5. Pantalla de entrenamiento mostrando las 9 posiciones utilizadas.

Figura 5.3-6. El movimiento de la primera sección de la figura 5.3-3 fue un movimiento que comenzó donde inicia la flecha marcada con (A) y finalizo donde esta termino, el segundo movimiento de la figura 5.3-3 se realizo como indica la flecha (B).

(A)

(B)

Page 117: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

98

En base a esto, se diseñó el nuevo protocolo de pruebas para el entrenamiento de los clasificadores, el cual consiste en los siguientes pasos:

• Inicia la pantalla vacía con fondo negro por un periodo de 500 milisegundos. • Aparece un circulo blanco en el centro de la pantalla por un periodo de 500

milisegundos, al tiempo que se inicia la grabación de las muestras. • El circulo aparece en una de 4 posiciones posibles por un periodo de 500

milisegundos. Las posiciones son: a la derecha del centro, arriba del centro, a la izquierda del centro o abajo del centro.

• El circulo desaparece y se detiene la grabación, la pantalla se queda vacia por un periodo de 700 milisegundos.

Lo anterior forma un ciclo, y el usuario tiene que realizar 400 ciclos en total, 100

en cada dirección para poder obtener una muestra de 100 movimientos oculares para cada lado.

El usuario tiene que tener fija su vista en el centro de la pantalla, de manera que la

posición natural de sus ojos esté puesta en ese punto. Una vez que inicia la grabación y aparece el circulo, este tiene que mantener la vista en el mismo, cuando el circulo cambia de posición el sujeto de prueba tiene que mantener los ojos posicionados nuevamente en el circulo hasta que éste desaparezca. Una vez que el circulo ha desaparecido, el sujeto tiene que volver su vista al centro para repetir otro ciclo.

La secuencia que se hace, son 100 ciclos hacia la derecha, 100 ciclos hacia arriba,

100 ciclos hacia la izquierda y 100 ciclos hacia abajo, por lo que el archivo que obtenemos contiene un registro de 100 movimientos hacia la derecha, posteriormente 100 hacia arriba, después 100 hacia la izquierda y finalmente 100 hacia abajo.

La pantalla resultante de este protocolo se muestra en la figura 5.3-7, donde

podemos ver las distintas posiciones y direcciones que se pueden ejecutar.

Page 118: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

99

Figura 5.3-7. Pantalla de entrenamiento para EOG. El círculo aparece en el centro por 500 milisegundos y posteriormente aparece en una de las 4 posiciones restantes, siempre partiendo desde el centro.

Page 119: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Capitulo 6

Pruebas y Resultados

Page 120: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 121: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

100

6 Pruebas y Resultados Se realizaron pruebas a los mismos sujetos a los que se les hizo las pruebas del protocolo anterior, sin embargo por cuestiones del estado de las personas, se tuvo que descartar las señales de 2 sujetos ya que sus señales se mostraban demasiado ruidosas debido a la tensión muscular (posiblemente causada por nerviosismo) y movimientos de los pies, por lo tanto no contienen los patrones claros para poder ser procesadas.

Se aplicaron los mismos clasificadores anteriormente planteados y en las mismas configuraciones mencionadas. Es decir, se usaron los clasificadores, KNN, Gaussiano y una Red Neuronal para construir un clasificador múltiple en modo de Voto Mayoritario y en modo Unanimidad. También se realizaron pruebas de los clasificadores de manera aislada para poder calcular el desempeño de cada uno de ellos.

6.1 Resultados por Clasificador

6.1.1 Validación Leave One Out Se aplicó una validación del tipo Leave-One-Out para los 3 clasificadores de manera independiente, y los resultados se pueden observar en la tabla 6.1.1-1 para el sujeto 1, 6.1.1-2 para el sujeto 2 y 6.1.1-3 para el sujeto 3. El tamaño de la base total de entrenamiento fue de 100 movimientos por clase.

Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 100% 100% 100% 100% 100% 0

Bayes 90% 95% 100% 95% 95% 4 Red

Neuronal 75% 95% 95% 90% 88% 9

Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 100% 0% 60% 0% 40% 241

Bayes 100% 0% 50% 0% 38% 249 Red

Neuronal 100% 0% 52% 1% 38% 245

Tabla 6.1.1-1 Resultados de la validación Leave One Out correspondientes al sujeto de prueba 1.

Tabla 6.1.1-2 Resultados de la validación Leave One Out correspondientes al sujeto de prueba 2.

Page 122: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

101

Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 90% 71% 100% 99% 90% 43

Bayes 85% 95% 95% 95% 93% 32 Red

Neuronal 90% 53% 95% 100% 85% 62

6.1.2 Validación por Re-substitución En la tabla 6.1.2-1 podemos observar el desempeño de los clasificadores, usando el método de re-substitución. Estos resultados, bajan el desempeño de los clasificadores, debido a la diferencia de muestras que se toman para el entrenamiento y para la evaluación causado por el algoritmo de segmentación. Ya que en re-substitución no fue necesario segmentar a priori la base de entrenamiento y de prueba, el algoritmo de segmentación encontró falsos positivos que clasifico erróneamente por lo que numéricamente, los porcentajes bajaron.

Sujeto 1 Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 97% 86% 95% 76% 89% 36

Bayes 94% 87% 96% 77% 89% 42 Red

Neuronal 94% 87% 96% 77% 89% 42

Sujeto 2 Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 100% 0% 74% 0% 44% 238

Bayes 100% 0% 78% 4% 46% 229 Red

Neuronal 100% 0% 78% 4% 46% 229

Sujeto 3 Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 100% 65% 100% 95% 90% 40

Bayes 100% 100% 100% 100% 100% 0 Red

Neuronal 100% 45% 100% 100% 86% 55

Tabla 6.1.1-3 Resultados de la validación Leave One Out correspondientes al sujeto de prueba 3.

Tabla 6.1.2-1 Resultados de la validación por Re-Substitución correspondientes de los sujetos de prueba 1, 2 y 3..

Page 123: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

102

6.1.3 Validación Cruzada o Cross-Validation El método de validación cruzada ofrece un resultado mas robusto en cuestión de que es mas parecido a evaluar el clasificador en condiciones reales de prueba. Los resultados obtenidos por medio de este método se encuentran en la tabla 6.1.3-1. La evaluación de este método consiste en entrenar al clasificador con una muestra del registro total obtenido y evaluarlo con el resto del registro que no se uso para el entrenamiento. Para los siguientes resultados se uso solo el 50% del registro para el entrenamiento y se clasifico el otro 50%. El 50% de prueba es seleccionado de manera aleatoria, y el proceso se repitio 20 veces. En la tabla siguiente tenemos el promedio de los resultados de dicho procedimiento.

Sujeto 1 Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 92% 96% 100% 92% 95% 5

Bayes 88% 96% 100% 96% 95% 5 Red

Neuronal 76% 86% 100% 92% 89% 12

Sujeto 2 Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 69% 100% 57% 100% 82% 37

Bayes 46% 0% 36% 86% 42% 116 Red

Neuronal 100% 0% 100% 0% 50% 100

Sujeto 3 Dirección Clasificador Derecha Arriba Izquierda Abajo Total Errores Totales KNN k=15 100% 50% 50% 35% 59% 83

Bayes 100% 50% 45% 35% 58% 86 Red

Neuronal 95% 20% 100% 45% 65% 70 También se realizaron reconstrucciones de los movimientos a través de las señales grabadas usando los clasificadores para cross-validation, las cuales se pueden observar de la figura 6.1.3-1 a la figura 6.1.3-3.

Tabla 6.1.3-1 Resultados de la validación cruzada (cross-validation) correspondientes de los sujetos de prueba 1, 2 y 3..

Page 124: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

103

Figura 6.1.3-1 Reconstrucción de los movimientos del sujeto 1 usando un clasificador a la vez, (a) K-NN, (b) Bayes y (c) Red Neuronal.

(a)

(b)

(c)

Inicio

Final

Inicio

Final

Inicio

Final

Page 125: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

104

Figura 6.1.3-2 Reconstrucción de los movimientos del sujeto 2 usando un clasificador a la vez, (a) K-NN,

(b) Bayes y (c) Red Neuronal.

(a)

(b)

(c)

Inicio

Final

Inicio

Final

Inicio

Final

Page 126: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

105

Figura 6.1.3-3 Reconstrucción de los movimientos del sujeto 3 usando un clasificador a la vez, (a) K-NN, (b) Bayes y (c) Red Neuronal.

(a)

(b)

(c)

Inicio

Final

Inicio

Final

Inicio

Final

Page 127: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

106

Las figuras de las reconstrucciones, como podemos ver, solo ofrecen información para analizar el desempeño de los clasificadores de manera visual y rapida, ya que en realidad no describen el movimiento del ojo, si no desciben las suceciones de movimientos que este tuvo. Es decir, en la reconstrucción del sujeto de prueba 1, figura 6.1.3-1, podemos ver que se forman cuadrados, esto es debido a que los clasificadores hicieron un trabajo bastante bueno y por ende encuentran la sucesión de movimientos que el sujeto hizo, es decir, primero 100 movimientos hacia la derecha, después 100 hacia arriba, después 100 hacia la izquierda y finalmente 100 hacia abajo. Sin embargo, en las figuras del sujeto 2 y 3 podemos ver que los clasificadores fallaron demasiado, ya que se uso el mismo protocolo y se debieron obtener figuras similares a las del sujeto 1. Esto fue causado por los niveles de ruido y por la forma en que los sujetos realizaron las pruebas, es posible que estos no se hayan sentido lo suficientemente tranquilos como para evitar hacer cualquier movimiento o tensión muscular que causara artefactos en las lecturas.

Page 128: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

107

6.2 Resultados del Clasificador Múltiple de Voto Mayoritario El clasificador múltiple con voto mayoritario se construyo bajo el esquema mostrado en la figura 6.2-1. Dado que el método de validación Cruzada ofrece una evaluación objetiva y sin sesgos, es la única que se muestra para esta evaluación.

Los resultados obtenidos en la tabla 6.2-1 muestran el desempeño de los

clasificadores, en algunos casos ocurre un decremento y en otros una mejora, esto, causado directamente por los diferentes resultados ofrecidos por los clasificadores en la sección anterior, sin embargo, como podemos observar en la reconstrucción de la en la figura 6.2-1, el resultado es mucho mas robusto.

Dirección Derecha Arriba Izquierda Abajo Total Errores Totales

Sujeto 1 92% 96% 100% 92% 95% 5 Sujeto 2 74% 100% 36% 72% 71% 79 Sujeto 3 100% 50% 50% 35% 59% 165

Clasificador Múltiple

Votes Classes

Muestra

KNN Red Neuronal Bayes

Clase que obtuvo el mayor número de votos o un valor nulo si dos clases distintas obtienen el mismo valor.

(a)

(b)

(c)

Figura 6.2-1. Diagrama de configuración del clasificador múltiple en modo de Voto Mayoritario. (a) La muestra que entra al clasificador para ser evaluada. (b) Clasificador Múltiple, el cual internamente contiene los 3 clasificadores y un repositorio donde cada clasificador coloca su voto. (c) La salida del clasificador es un valor el cual representa la clase seleccionada, o un valor nulo el cual indica que no hubo clase ganadora.

Tabla 6.2-1. Resultados de la evaluación de desempeño usando el método de Validación Cruzada al 50% con el clasificador Múltiple en configuración de Voto Mayoritario

Page 129: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

108

Figura 6.2-2. Reconstrucción de los movimientos usando el clasificador múltiple de voto Mayoritario. (a) Sujeto 1, (b) Sujeto 2 y (c) Sujeto 3.

(a)

(b)

(c)

InicioFinal

Inicio

Final

Inicio

Final

Page 130: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

109

6.3 Resultados del Clasificador Múltiple de Unanimidad El clasificador múltiple con unanimidad trabaja bajo el siguiente esquema mostrado en la figura 6.3-1. En estos resultados de la tabla 6.3-1 podemos observar la baja del desempeño del clasificador con respecto a los anteriores, pero de igual manera que el clasificador múltiple de voto mayoritario, este es mas robusto, lo que se puede observar en la reconstrucción de los movimientos en la figura 6.3-2.

Dirección Derecha Arriba Izquierda Abajo Total Errores Totales

Sujeto 1 72% 86% 98% 92% 87% 26 Sujeto 2 98% 0% 68% 72% 60% 81 Sujeto 3 90% 15% 35% 35% 44% 112

Clasificador Múltiple

class

Muestra

KNN Red Neuronal Bayes

Clase seleccionada si los valores arrojados por los tres clasificadores coinciden en el mismo valor, si no, la salida será un valor nulo.

Class with majority vote or null value if two classes have the same vote value

(a)

(b)

(c)

Figura 6.3-1. Diagrama de configuración del clasificador múltiple en modo de Unanimidad. (a) La muestra a clasificar. (b) El clasificador múltiple, el cual contiene los tres clasificadores y un algoritmo de decisión que verifica la decisión unánime de los tres clasificadores. (c) La salida, compuesta por un valor que representa la clase elegida por unanimidad o un valor nulo en caso de que alguna clase no coincida con las demás.

Tabla 6.3-1. Resultados de la evaluación por validación cruzada al 50% del clasificador múltiple en modo de Unanimidad.

Page 131: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

110

Figura 6.3-2. Reconstrucción de los movimientos usando el clasificador múltiple en modo

Unanimidad. (a) Sujeto 1, (b) Sujeto 2, (c) Sujeto 3.

(a)

(b)

(c)

Inicio

Final

Inicio

Final

Inicio

Final

Page 132: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

111

6.4 Pruebas y Resultados en Línea Para poder hacer las pruebas en línea, en una primera instancia se planteo la posibilidad de realizar una validación de cada movimiento en tiempo real, sin embargo esto no fue posible ya que el sujeto de prueba tendría que ser el mismo que indicara si el resultado fue correcto para cada movimiento, y esto involucraría al mismo tiempo la inducción de artefactos, ya sea que el usuario hable, mueva alguna extremidad o realice algún gesto, esto resultaría en la inducción de ruido al sistema y se contaminarían los resultados.

También se planteo la idea de filmar la cara del sujeto mientras realiza la prueba, al tiempo que se guarda registro de los resultados del sistema, sin embargo, esto también se volvió impractico al momento en que dicha validación tendría que ser a mano, dado que seguir los movimientos oculares a través de video es de hecho otro tema de tesis.

Por estas razones se planteo la solución de evaluar los resultados de las pruebas en

línea a través de la evaluación misma del sujeto sobre la prueba al finalizar ésta. Para las pruebas en línea se desarrolló una aplicación que usa la misma pantalla que se uso durante los entrenamientos, es decir, un circulo blanco sobre una pantalla con fondo negro, como lo muestra la figura 6.4-1. La metodología a seguir para la evaluación en línea fue la siguiente:

• Se conectó al sujeto de prueba al sistema de la misma forma que se realizaron los

entrenamientos previos, descritos en el capitulo 5 • Se le dieron instrucciones al usuario de dirigir el circulo en la dirección que el

decida, pero que haciendo uso de las 4 direcciones básicas, arriba, abajo, izquierda y derecha.

• Se inicio la sesión de línea y se dejo al usuario que decidiera su duración. A cada usuario se le aplicaron 5 sesiones con una duración mínima de 3 minutos cada una.

• Al final, se le cuestiono a cada sujeto 4 preguntas: o ¿Cómo se sintió? o ¿En un porcentaje estimado, que tanto pudo controlar la posición del

circulo? o ¿Le pareció divertido? o ¿Cree que con práctica pueda mejorar su control del círculo en la pantalla?

Page 133: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

112

Las respuestas a esos cuestionarios fueron:

Sujeto 1. Respuesta 1: Bien. Respuesta 2: un 70%. Respuesta 3: Si. Respuesta 4: Si. Sujeto 2. Respuesta 1: Bien. Respuesta 2: un 60%. Respuesta 3: Si. Respuesta 4: Si.

Figura 6.4-1 Pantalla usada para las sesiones de prueba en línea. El círculo aparece inicialmente en el centro. El usuario debe mover el círculo en la dirección que el desee.

Page 134: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

113

Sujeto 3. Respuesta 1: Bien. Respuesta 2: un 60%. Respuesta 3: Más bien, novedoso. Respuesta 4: Si, aunque no pienso que se pueda controlar a un 100%.

Cabe mencionar que estas respuestas están referidas exclusivamente a las sesiones de prueba y no a las sesiones de entrenamiento. Esto es importante ya que para las sesiones de entrenamiento, los sujetos mencionaron que este es cansado y causa sueño.

Page 135: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Capitulo 7

Conclusiones y Perspectivas

Page 136: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 137: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

114

7 Conclusiones y Perspectivas

7.1 Conclusiones Durante el desarrollo de la presente tesis me permitió estar en estrecho contacto con señales fisiológicas. La meta principal fue el control de un cursor de PC por medio de señales Electroencefalográficas. En un primer trabajo se analizaron y preocesaron señales provenientes de los electrodos C2, C4, T3 y T4, de la cual se extrajeron tres componentes: a) Beta, b) Mu y c) P300. A dichas se les hicieron los siguientes procesos: Con transformada wavelets se realizaron analisis sobre las descomposiciones en diferentes niveles, con transformada Wigner-Ville se hizo análisis de frecuencia a lo largo del tiempo, análisis de cambio de fase y análisis de texturas, obteniendo como resultado, gran dificultad para su clasificación, de acuerdo con los diferentes análisis, los movimientos se confundían sistemáticamente y las tasas de reconocimiento fueron bajas. Un factor que pudo haber contribuido fue la metodología planteada para la adquisción de las señales (protocolo de adquisición), siendo ésta un área dónde se puede seguir investigando. Debido a que no se tenían buenos resultados con señales EEG, se pasó a explorar señales de tipo Electro-Oculográficas, que son señales provenientes de los movimientos oculares. Se planteó una metodología de adquisición para estas, un tanto diferente a la metodología usada para EEG. Con las señales obtenidas, se pudo realmente clasificar las cuatro direcciónes de movimiento propuestas en esta tesis, arriba, abajo, derecha e izquierda. La clasificación se llevó a cabo con dos clasificadores estadísticos: KNN y Gaussiano; y uno neuronal: perceptrón multicapa. Los métodos de evaluacion de performance utilizados fueron: deja uno fuera, resustitucion y validación cruzada. Los resultados significativos son los proporcionados por validación cruzada. Las tasas de clasificación de los clasificadores aislados oscilan entre el 88 y 95 por ciento. Con el fin de obtener una clasificación mas robusta, se realizó la fusión de los tres clasificadores en las siguientes configuraciones: Voto Mayoritario y Unanimidad. Por Voto Mayoritario se obtuvieron mejores resultados, alcanzando tasas de buen reconocimiento del 95%.

Page 138: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

115

Con lo que respecta a las dificultades que se encontraron a lo largo del desarrollo de esta tesis, hubo varios problemas a solucionar, uno de ellos, que es de los que mas tiempo requirió al comienzo fue el desarrollo del software para la adquisición de las señales, ya que este se tuvo que desarrollar desde cero, principalmente, hablando de la interfaz de comunicación con el Mindset MS-1000, la cual se desarrollo en C como una biblioteca compartida (DLL) y que se puede contar como un producto resultado de éste trabajo. También se encontraron dificultades al momento de poner a prueba los protocolos de experimentación, ya que estos comenzaron a arrojar información confusa con respecto a los diferentes movimientos, en específico, estos formaban 4 cumulos perfectamente separables, sin embargo, cada cúmulo contenia elementos de las 4 direcciones, lo cual fue desconcertante. Para solucionar esto se tuvo que regresar al protocolo experimental, al cual se le agregaron restricciones que evitaran que los mismos musculos oculares inducieran artefactos dentro de las lecturas. Finalmente, podemos agregar que éste trabajo contuvo, a parte del alto grado de dificultad del tema, varios desafios técnicos, como lo fue el desarrollo del software de adquisición del sistema y la vinculación de software desarrollado en VC++ con Matlab.

7.2 Perspectivas Con respecto a las perspectivas de la interfaz basada en EEG, es el mejoramiento de las técnicas y tecnología de adquisición de datos, ya que es en este punto donde se puede partir con nuevas hipótesis e incluso con nuevas componentes a estudiar. Las perspectivas que existen respecto al sistema de control del cursor basado en EOG, comenzando desde el principio, es que se puede mejorar desde la adquisición, si se desarrolla un instrumento de posicionamiento de los electrodos que disminuya considerablemente la incertidumbre en la colocación de los mismos, ya que esto influye directamente para poder hacer de uso general ésta herramienta. Otro punto que se puede trabajar mas adelante, es el mejoramiento de los algoritmos de detección y segmentación del movimiento ocular, de esta manera se podría mejorar considerablemente la precisión de los movimientos del cursor en la pantalla, de manera que permitan realizar tareas cada vez mas finas.

Finalmente, otro trabajo que se proyectan a partir de éste, es el monitoreo del movimiento ocular en personas que observen un estimulo visual, con la finalidad de estudiar conductas y gustos con respecto a lo que observa en dicha pantalla para poder aplicarlo en estudios de campañas publicitarias.

Page 139: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Bibliografía

Page 140: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 141: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

116

Bibliografía [1] Two-Handed Virtual Manipulation Ken Hinckley, Randy Pausch, Dennis Proffitt and Neal F. Kassell. ACM Transactions on Computer-Human Interaction, Vol. 5, No. 3, September 1998, Pages 260–302. [2] Parallel Man–Machine Training in Development of EEG-Based Cursor Control. Aleksander Kostov and Mark Polak IEEE TRANSACTIONS ON REHABILITATION ENGINEERING, VOL. 8, NO. 2, JUNE 2000 203 [3] A Time-Series Prediction Approach for Feature Extraction in a Brain–Computer Interface. Damien Coyle, Girijesh Prasad and Thomas Martin McGinnity IEEE TRANSACTIONS ON NEURAL SYSTEMS AND REHABILITATION ENGINEERING, VOL. 13, NO. 4, DECEMBER 2005 461 [4] Control of a two-dimensional movement signal by a noninvasive brain–computer interface in humans. Jonathan R. Wolpaw and Dennis J. McFarland. Proceedings of the National Academy of Sciences, December 21, 2004 vol. 101 no. 51 17849 – 17854 [5] Brain–Computer Interface Technology: A Review of the First International Meeting. Jonathan R.Wolpaw, Niels Birbaumer,William J. Heetderks, Dennis J. McFarland, P. Hunter Peckham, Gerwin Schalk, Emanuel Donchin, Louis A. Quatrano, Charles J. Robinson, and Theresa M. Vaughan IEEE TRANSACTIONS ON REHABILITATION ENGINEERING, VOL. 8, NO. 2, JUNE 2000. [6] EGG-based Brain Computer Interfaces Janne Lehtonen HELSINKI UNIVERSITY OF TECHNOLOGY. Department of Electrical and Communications Engineering. May 3 2002. Paginas : 17, 28, 44-46, 62, 67-71,

Page 142: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

117

[7] A Direct Brain Interface Based on Event-Related Potentials. Simon P. Levine, Jane E. Huggins, Spencer L. BeMent, Ramesh K. Kushwaha, Lori A. Schuh, Mitchell M. Rohde, Erasmo A. Passaro, Donald A. Ross, Kost V. Elisevich, and Brien J. Smith. IEEE TRANSACTIONS ON REHABILITATION ENGINEERING, VOL. 8, NO. 2, JUNE 2000. [8] Brain–Computer Interface Research at the Neil Squire Foundation Gary E. Birch and Steve G. Mason IEEE TRANSACTIONS ON REHABILITATION ENGINEERING, VOL. 8, NO. 2, JUNE 2000 [9] Critical Decision-Speed and Information Transfer in the “Graz Brain–Computer Interface” G. Krausz, R. Scherer, G. Korisek and G. Pfurtscheller Applied Psychophysiology and Biofeedback, Vol. 28, No. 3, September 2003 [10] Direct brain communication: neuroelectric and metabolic approaches at Tübingen Boris Kleber y Niels Birbaumer LABORATORY NOTES Marta Olivetti Belardinelli and Springer-Verlag 2005 27 January 2005 [11] Prosthetic Control by an EEG-based Brain-Computer Interface (BCI) Christoph Guger, Werner Harkam, Carin Hertnaes, Gert Pfurtscheller IEEE Trans. on Neural Systems and Rehabilitation , see also Rehabilitation Engineering, IEEE Transactions on. Volume: 8, Issue: 4 On page(s): 447-456. Dec 2000 [12] Linear Classification of Low-Resolution EEG Patterns Produced by Imagined Hand Movements F. Babiloni, F. Cincotti, L. Lazzarini, J. Millán, J. Mouriño, M. Varsta, J. Heikkonen, L. Bianchi, and M. G. Marciani IEEE TRANSACTIONS ON REHABILITATION ENGINEERING, VOL. 8, NO. 2, JUNE 2000

Page 143: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

118

[13] The Mental Prosthesis: Assessing the Speed of a P300-Based Brain–Computer Interface Emanuel Donchin, Kevin M. Spencer, and Ranjith Wijesinghe IEEE TRANSACTIONS ON REHABILITATION ENGINEERING, VOL. 8, NO. 2, JUNE 2000 [14] Recognition of Motor Imagery Electroencephalography Using Independent Component Analysis and Machine Classifiers CHIH-I HUNG, PO-LEI LEE, YU-TE WU, LI-FEN CHEN, TZU-CHEN YEH and JEN-CHUEN HSIEH Annals of Biomedical Engineering, Vol. 33, No. 8, August 2005 pp. 1053–1070 [15] Rapid Prototyping of an EEG-Based Brain–Computer Interface (BCI) Christoph Guger, Alois Schlögl, Christa Neuper, Dirk Walterspacher, Thomas Strein, and Gert Pfurtscheller IEEE TRANSACTIONS ON NEURAL SYSTEMS AND REHABILITATION ENGINEERING, VOL. 9, NO. 1, MARCH 2001 49 [16] Robust Classification of EEG Signal for Brain–Computer Interface Manoj Thulasidas, Cuntai Guan and Jiankang Wu IEEE TRANSACTIONS ON NEURAL SYSTEMS AND REHABILITATION ENGINEERING, VOL. 14, NO. 1, MARCH 2006 [17] Steady-State Somatosensory Evoked Potentials: Suitable Brain Signals for Brain–Computer Interfaces? Gernot R. Müller-Putz, Reinhold Scherer, Christa Neuper and Gert Pfurtscheller IEEE TRANSACTIONS ON NEURAL SYSTEMS AND REHABILITATION ENGINEERING, VOL. 14, NO. 1, MARCH 2006 [18] A Virtual Reality Testbed for Brain–Computer Interface Research Jessica D. Bayliss and Dana H. Ballard IEEE TRANSACTIONS ON REHABILITATION ENGINEERING, VOL. 8, NO. 2, JUNE 2000 [19] Principios de Neurociencia. Kendel E.R., Schwartz J.H., Jessell T.M. Madrid McGraw-Hill, 2001, 4ª Edición.

Page 144: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

119

[20] Ion Channels Underlying Action Potentials Purves D,. En Neuroscience. Sunderland, Massachusetts: Sinauer Associates, 2004, tercera ed. [21] Action Potencial Imagen extraída de Fundación Wikimedia http://es.wikimedia.org/wiki/Imagen:Potenciaal_Accion.png [22] EEG Technology R. Cooper, J. W. Osselton, J. C. Shaw, Ed. Butterworths & Co. Ltd., 1974, 2ª Edición. [23] Experiences in assisted mobility : the SIAMO project. M. Mazo, J.C. García, F.J. Rodríguez, J. Ureña, J.L. Lázaro, F. Espinosa and the SIAMO research team. DEPARTAMENTO DE ELECTRÓNICA, UNIVERSIDAD DE ALCALÁ. PROCEEDINGS OF THE 2002 IEEE INTERNATIONAL CONFERENCE ON CONTROL APPLICATIONS, SEPTEMBER 18-20, 2002. [24] E.O.G. guidance of a wheelchair using neural networks. Rafael Barea, Luciano Boquete, Manuel Mazo, Elena López, L.M. Bergasa. ELECTRONIC DEPARTMENT. UNIVERSITY OF ALCALÁ. 15TH INTERNATIONAL CONFERENCE ON PATTERN RECOGNITION (ICPR ’00) VOLUME 4 P 4668. [25] An Eye Tracking Computer User Interface Kaufman, A.E., Bandopadhay, A., Shaviv, B.D. IEEE 1993 SYMPOSIUM ON RESEARCH FRONTIERS IN VIRTUAL REALITY, 1993, PROCEEDINGS. [26] The Eye Mouse, an Eye Communication Device Norris G., Wilson E. PROCEEDINGS OF THE IEEE 1997 23RD NORTHEAST BIOENGINEERING CONFERENCE, 21-22 MAY.

Page 145: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

120

[27] Brain-Wave Biopotencials based Mobile Robot Control: Wavelet-Neural Network Pattern Recognition Approach Choi Kyoung ho and Minoru SASAKI 2001 IEEE INTERNATIONAL CONFERENCE ON SYSTEMS, MAN, AND CYBERNETICS, PAGES 316-321 VOL. 1. [28] Development of Human-Mobile Communication System Using Electrooculogram Signals Youngmin Kim, Nakju Doh, Youngil Youm, Wan Kyun Chung. INTERNATIONAL CONFERENCE ON INTELLIGENT ROBOTS AND SYSTEMS 2001. PROCEEDINGS 2001 IEEE/RSJ, VOL. 4. [29] Development of Meal Assitance Orthosis for Disabled Persons with Human Intention Extraction through EOG Signals. Goto, S., Sugi, T., Nakamura, M. INTERNACIONAL JOIN CONFERENCE SICE-ICASE 2006, OCT.

Page 146: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 147: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

Anexo

Código Fuente

Page 148: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la
Page 149: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

121

Anexo I

A.1 Comandos SCSI para control del Mindset MS-1000

Page 150: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

122

Page 151: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

123

Page 152: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

124

Page 153: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

125

Page 154: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

126

Page 155: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

127

Page 156: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

128

Page 157: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

129

Page 158: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

130

Page 159: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

131

Page 160: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

132

Page 161: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

133

Page 162: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

134

Page 163: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

135

Page 164: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

136

Page 165: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

137

Page 166: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

138

Page 167: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

139

A2 Código fuente en Matlab % Programa para analisis PCA %% Inicio close all; clear all; clc; %% Carga de variables cd Hector clase = dir; D = 0; L = 0; R = 0; U = 0; for c = 3 : length( clase ) switch clase(c).name(5) case 'D' D = D + 1; case 'L' L = L + 1; case 'R' R = R + 1; case 'U' U = U + 1; end SenialPtr(c-2) = libpointer('doublePtr', load(clase(c).name, 'out')); end cd .. %% Filtrado for movimiento = 1 : c-2 a = get(SenialPtr(movimiento),'Value'); muestras = length(a); load('FiltroBeta.mat'); for j=1 : 16 res1(:,j)=filter(FiltroBeta,a(:,j)); end % figure; suma(movimiento) = libpointer('doublePtr',sum(res1')); % plot(suma(movimiento).Value(280:300)); % plot(suma(movimiento).Value); clear res1; end

ventana = zeros(27,4); for i = 1 : D ventana(i,1) = suma(i).Value(295)-suma(i).Value(296); end for i = 1 : L ventana(i,2) = suma(D+i).Value(295)-suma(i).Value(296); end for i = 1 : R ventana(i,3) = suma(D+L+i).Value(295)-suma(i).Value(296); end for i = 1 : U ventana(i,4) = suma(D+L+R+i).Value(295)-suma(i).Value(296); end for i = 1:80 matriz2PCA(i,:) = suma(i).Value(1:300); end covarianza = cov(matriz2PCA); AnalisisPCA = pcacov(covarianza); % Programa para calcular la correlacion de señales segmentadas clc clear all close all load finalD.mat; load finalL.mat; load finalR.mat; load finalU.mat; l = 347600; f = length(finalD(:,9)); finD = finalD(l:f,:); finL = finalL(l:f,:); finR = finalR(l:f,:); finU = finalU(l:f,:); save 'finD.mat' finD; save 'finL.mat' finL; save 'finR.mat' finR;

Page 168: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

140

save 'finU.mat' finU; %% clear all; load finD.mat; load finL.mat; load finR.mat; load finU.mat; figure; hold on; plot(finD(:,9),'Color','red'); plot(finL(:,9),'Color','black'); plot(finR(:,9),'Color','blue'); plot(finU(:,9),'Color','green'); %% algoD = abs(finD(:,9)); algoL = abs(finL(:,9)); algoR = abs(finR(:,9)); algoU = abs(finU(:,9)); for i = 1: length(algoD) if algoD(i)<400000000 algoD(i) = 0; end if algoL(i)<200000000 algoL(i) = 0; end if algoR(i)<500000000 algoR(i) = 0; end if algoU(i)<200000000 algoU(i) = 0; end end %% % algoT = algoD - algoL; plot(algoD,'or'); figure; plot(algoL,'oblue'); figure; plot(algoR,'oblack'); figure; plot(algoU,'ogreen'); % Funcion para calcular la transformada Wigner function [WDF,time,freq]=discwig(x,y,freqpts,Fs); % function [WDF,time,freq]=discwig(x,y,freqpts,Fs); %

% Error error(nargchk(1,4,nargin)); N = length(x); if (nargin < 4) Fs = 1; if (nargin < 3) freqpts = N; if (nargin < 2) y = x; end end end if (isempty(y)) y = x; else if (length(y)~=N), error('x y y deben ser iguales en longitud'); end end if (isempty(freqpts)) freqpts = N; else if (freqpts < 1) error('freqpts debe ser > 0') end end if (isempty(Fs)) Fs = 1; end parity = rem(N,2); n = (0:N-1)'; % \nu t = (0:N-1); % \tau nn = n(:,ones(1,length(t))); tt = t(ones(1,length(n)),:); modnntt = nn+tt; modnntt = modnntt + N*abs(modnntt); modnntt = rem(modnntt,N); F = x(modnntt+1).*conj(y(nn+1)); F = reshape(F,length(n),length(t)); if (parity ~= 0) halfn = zeros(N,1); halfn(1:2:N) = [0:1:(N-1)/2]'; halfn(2:2:N) = [(N+1)/2:1:(N-1)]'; modnum = halfn*t;

Page 169: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

141

modnum = modnum + N*abs(modnum); rhoexp = 2*rem(modnum,N); else modnum = n*t; modnum = modnum + N*abs(modnum); rhoexp = rem(modnum,N); shift = rhoexp > (N/2 - 1); shift = -N*shift; rhoexp = rhoexp + shift; end WDF = exp(sqrt(-1)*pi*rhoexp/N).*(N*ifft(F)).'; WDF = (1/N)*fft2(WDF,freqpts,N); if all(x == y), WDF = real(WDF); end if (parity ~= 0) WDF = fftshift(WDF); end if ((nargout == 0) | (nargout == 3)) time = ((0:N-1)-(N*parity/2))/Fs; freq = ((0:1/freqpts:1-1/freqpts)-(parity/2))*Fs; end if (nargout == 0) imagesc(time,freq,WDF),axis('xy'); xlabel('Time'), ylabel('Frequency') end % Programa para entrenar clasificadores con EOG %% Inicializacion clear all; close all; clc; %% Carga de variables cd ..; cd EEGBD; % senial = load('hec_mov2.out'); % senial = load('mik_mov2.out'); % senial = load('hec_2303D_0.out'); % senial = load('mik_2303D.out'); % senial = load('isaac160407.out'); % senial = load('isaac160407D_0.out'); % senial = load('mik_MovOD.out'); senial = load('job0705071283.out'); cd ..;

cd Ocular; % load betacheby1024.mat; % load filtro32hertz1024.mat; load filtro32hertz512.mat; % load filtro32hertz128.mat; %load cheby501024.mat %load cheby30501024.mat % senialF = senial; %filter(filtro32hertz1024,senial); senialF = filter(filtro32hertz512,senial); fp1 = senialF(:,1); fp2 = senialF(:,2); % f3 = senialF(:,3); % f4 = senialF(:,4); % c3 = senialF(:,5); % c4 = senialF(:,6); % p3 = senialF(:,7); % p4 = senialF(:,8); % o1 = senialF(:,9); % o2 = senialF(:,10); f7 = senialF(:,11); f8 = senialF(:,12); % t3 = senialF(:,13); % t4 = senialF(:,14); % t5 = senialF(:,15); % t6 = senialF(:,16); direc = senial(:,17); %% Inicio de muestras correctas j = 100; i = 1; % Avanza hasta iniciar las muestras correctas while j > 4 i = i+1; j = senial(i,17); end %% Maximos y minimos j = 1; k = 1; direccion = direc(i); while i < length(senialF)-1024 j = i; while direc(j) == direccion j = j+1; end segmento1 = f8(i:j); segmento2 = f7(i:j); segmento3 = fp2(i:j); segmento4 = fp1(i:j); if(direccion == 1)

Page 170: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

142

[max1, posicionmax1] = max(segmento1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); min1 = segmento1(posicionmax1); min2 = segmento2(posicionmax1); min3 = segmento3(posicionmax1); min4 = segmento4(posicionmax1); end if(direccion == 2) [min1, posicionmax1] = max(segmento3); max2 = segmento2(posicionmax1); max3 = segmento1(posicionmax1); max4 = segmento4(posicionmax1); max1 = segmento1(posicionmax1); min2 = segmento2(posicionmax1); min3 = segmento3(posicionmax1); min4 = segmento4(posicionmax1); end if(direccion == 3) [min1, posicionmax1] = min(segmento1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); max1 = segmento1(posicionmax1); min2 = segmento2(posicionmax1); min3 = segmento3(posicionmax1); min4 = segmento4(posicionmax1); end if(direccion == 4) [min3, posicionmax1] = min(segmento3); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); min1 = segmento1(posicionmax1); min2 = segmento2(posicionmax1); max1 = segmento1(posicionmax1); min4 = segmento4(posicionmax1); end caracteristicas(k,1) = max1; caracteristicas(k,2) = max2; caracteristicas(k,3) = max3; caracteristicas(k,4) = max4; caracteristicas(k,5) = min1; caracteristicas(k,6) = min2; caracteristicas(k,7) = min3; caracteristicas(k,8) = min4; caracteristicas(k,9) = direccion;

k = k+1; i = j+1; direccion = direc(i); end %% Separacion por lados k1 = 1; k2 = 1; k3 = 1; k4 = 1; for i = 1 : k-1 if caracteristicas(i,9) == 1 derecha(k1,:) = caracteristicas(i,1:8); k1 = k1+1; end if caracteristicas(i,9) == 2 arriba(k2,:) = caracteristicas(i,1:8); k2 = k2+1; end if caracteristicas(i,9) == 3 izquierda(k3,:) = caracteristicas(i,1:8); k3 = k3+1; end if caracteristicas(i,9) == 4 abajo(k4,:) = caracteristicas(i,1:8); k4 = k4+1; end end %% Graficacion x = derecha(:,1); y = derecha(:,2); z = derecha(:,5); plot3(x,y,z,'og'); hold on; x = arriba(:,1); y = arriba(:,2); z = arriba(:,5); plot3(x,y,z,'or'); x = izquierda(:,1); y = izquierda(:,2); z = izquierda(:,5); plot3(x,y,z,'ob'); x = abajo(:,1); y = abajo(:,2); z = abajo(:,5); plot3(x,y,z,'oblack'); figure; plot3(mean(derecha(:,1)),mean(derecha(:,2)),mean(derecha(:,5)),'og'); hold on; plot3(mean(arriba(:,1)),mean(arriba(:,2)),mean(arriba(:,5)),'or');

Page 171: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

143

plot3(mean(izquierda(:,1)),mean(izquierda(:,2)),mean(izquierda(:,5)),'ob'); plot3(mean(abajo(:,1)),mean(abajo(:,2)),mean(abajo(:,5)),'oblack'); % save med070507.mat maxf8 minf8 maxf7 minf7 maxfp2 minfp2; % Funcion para extraer los parametros de entrenamiento de una señal function entrenador(); %% Carga de variables cd \; senial = load('entrena.out'); cd matlab cd work cd caracteristicas cd Entrenamiento; load filtro32hertz1024.mat; senialF = filter(filtro32hertz1024,senial); fp1 = senialF(:,1); fp2 = senialF(:,2); % f3 = senialF(:,3); % f4 = senialF(:,4); % c3 = senialF(:,5); % c4 = senialF(:,6); % p3 = senialF(:,7); % p4 = senialF(:,8); % o1 = senialF(:,9); % o2 = senialF(:,10); f7 = senialF(:,11); f8 = senialF(:,12); % t3 = senialF(:,13); % t4 = senialF(:,14); % t5 = senialF(:,15); % t6 = senialF(:,16); direc = senial(:,17); %% Inicio de muestras correctas j = 100; i = 1; % Avanza hasta iniciar las muestras correctas while j > 4 i = i+1; j = senial(i,17); end %% Maximos y minimos j = 1;

k = 1; direccion = direc(i); while i < length(senialF)-1024 j = i; while direc(j) == direccion j = j+1; end segmento1 = f8(i:j); segmento2 = f7(i:j); segmento3 = fp2(i:j); segmento4 = fp1(i:j); if(direccion == 1) [max1, posicionmax1] = max(segmento1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 2) [max3, posicionmax1] = max(segmento3); max2 = segmento2(posicionmax1); max1 = segmento1(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 3) [max1, posicionmax1] = min(segmento1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 4) [max3, posicionmax1] = min(segmento3); max2 = segmento2(posicionmax1); max1 = segmento1(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 5) l = 1; while direccion == 5 max1 = segmento3(l); max2 = segmento2(l); max3 = segmento3(l); max4 = segmento4(l); caracteristicas(k,1) = max1; caracteristicas(k,2) = max2; caracteristicas(k,3) = max3; caracteristicas(k,4) = max4; caracteristicas(k,5) = direccion; k = k+1; l = l+1;

Page 172: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

144

i = i+1; direccion = direc(i); end direccion = 5; end caracteristicas(k,1) = max1; caracteristicas(k,2) = max2; caracteristicas(k,3) = max3; caracteristicas(k,4) = max4; caracteristicas(k,5) = direccion; k = k+1; i = j+1; direccion = direc(i); end %% Normalizacion % for i = 1 : 4 % maximo = max(caracteristicas(:,i)); % minimo = min(caracteristicas(:,i+1)); % caracteristicas(:,i) = caracteristicas(:,i)/maximo; % caracteristicas(:,i+1) = caracteristicas(:,i+1)/minimo; % end % %% Separacion por lados k1 = 1; k2 = 1; k3 = 1; k4 = 1; k5 = 1; for i = 1 : k-1 if caracteristicas(i,5) == 1 derecha(k1,:) = caracteristicas(i,1:4); k1 = k1+1; end if caracteristicas(i,5) == 2 arriba(k2,:) = caracteristicas(i,1:4); k2 = k2+1; end if caracteristicas(i,5) == 3 izquierda(k3,:) = caracteristicas(i,1:4); k3 = k3+1; end if caracteristicas(i,5) == 4 abajo(k4,:) = caracteristicas(i,1:4); k4 = k4+1;

end if caracteristicas(i,5) == 5 nada(k5,:) = caracteristicas(i,1:4); k5 = k5+1; end end %% Graficacion x = derecha(:,1); y = derecha(:,2); z = derecha(:,3); % plot3(x,y,z,'og'); % hold on; x = arriba(:,1); y = arriba(:,2); z = arriba(:,3); % plot3(x,y,z,'or'); x = izquierda(:,1); y = izquierda(:,2); z = izquierda(:,3); % plot3(x,y,z,'ob'); x = abajo(:,1); y = abajo(:,2); z = abajo(:,3); % plot3(x,y,z,'oblack'); x = nada(:,1); y = nada(:,2); z = nada(:,3); % plot3(x,y,z,'oy'); r(1) = mean(derecha(:,1)); r(2) = mean(derecha(:,2)); r(3) = mean(derecha(:,3)); u(1) = mean(arriba(:,1)); u(2) = mean(arriba(:,2)); u(3) = mean(arriba(:,3)); l(1) = mean(izquierda(:,1)); l(2) = mean(izquierda(:,2)); l(3) = mean(izquierda(:,3)); d(1) = mean(abajo(:,1)); d(2) = mean(abajo(:,2)); d(3) = mean(abajo(:,3)); n(1) = mean(nada(:,1)); n(2) = mean(nada(:,2)); n(3) = mean(nada(:,3)); % figure; % plot3(r(1),r(2),r(3),'og');

Page 173: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

145

% hold on; % plot3(u(1),u(2),u(3),'or'); % plot3(l(1),l(2),l(3),'ob'); % plot3(d(1),d(2),d(3),'oblack'); % plot3(n(1),n(2),n(3),'oy'); rs(1) = std(derecha(:,1)); rs(2) = std(derecha(:,2)); rs(3) = std(derecha(:,3)); us(1) = std(arriba(:,1)); us(2) = std(arriba(:,2)); us(3) = std(arriba(:,3)); ls(1) = std(izquierda(:,1)); ls(2) = std(izquierda(:,2)); ls(3) = std(izquierda(:,3)); ds(1) = std(abajo(:,1)); ds(2) = std(abajo(:,2)); ds(3) = std(abajo(:,3)); ns(1) = std(nada(:,1)); ns(2) = std(nada(:,2)); ns(3) = std(nada(:,3)); % figure; % plot3(rs(1),rs(2),rs(3),'og'); % hold on; % plot3(us(1),us(2),us(3),'or'); % plot3(ls(1),ls(2),ls(3),'ob'); % plot3(ds(1),ds(2),ds(3),'oblack'); % plot3(ns(1),ns(2),ns(3),'oy'); basenet = [min(caracteristicas(:,1)), max(caracteristicas(:,1)) min(caracteristicas(:,2)), max(caracteristicas(:,2)) min(caracteristicas(:,3)), max(caracteristicas(:,3)) min(caracteristicas(:,4)), max(caracteristicas(:,4))]; for i = 1: length(caracteristicas) col = caracteristicas(i,5); vecdeseado(i,col) = 1; end net = newff(basenet,[5 10 5],{'tansig' 'tansig' 'purelin'},'trainlm'); net.trainParam.show = NaN; % No Mostrar net.trainParam.epochs = 5000; % Iteraciones para entrenamiento net.trainParam.goal = 1e-5; % Meta? [ net, tr ] = train( net, caracteristicas(:,1:4)',vecdeseado');

base = caracteristicas; save parametros.mat r rs l ls u us d ds n ns base net tr; %% Version final del entrenador con EOG %% entrenador function entrenador() % close all; %% Carga de variables senial = load('entrena4_1.out'); % load filtro32hertz1024.mat; % senialF = filter(filtro32hertz1024,senial); senialF = senial; f1 = senialF(:,1); f2 = senialF(:,2); f3 = senialF(:,3); f4 = senialF(:,4); direc = senial(:,17); %% Maximos y minimos i = 1; j = 100; while j > 4 i = i+1; j = senial(i,17); end j = 25; k = 1; direccion = direc(i); while i < length(senialF)-1 while abs(f1(i))<6000 && abs(f2(i))<6000 && abs(f3(i))<10000 && abs(f4(i))<6000 && i <length(senialF)-1 i = i+1; end if(i+j < length(senial)-1) segmento1 = f1(i:i+j); segmento2 = f2(i:i+j); segmento3 = f3(i:i+j); segmento4 = f4(i:i+j); direccion = direc(i); if(direccion == 1)

Page 174: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

146

[max1, posicionmax1] = max(abs(segmento2)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 2) [max1, posicionmax1] = max(abs(segmento3)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 3) [max1, posicionmax1] = max(abs(segmento1)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 4) [max1, posicionmax1] = max(abs(segmento3)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end % if(direccion == 5) % l = 1; % while direccion == 5 % max1 = segmento1(l); % max2 = segmento2(l); % max3 = segmento3(l); % max4 = segmento4(l); % % % caracteristicas(k,1) = max1; % caracteristicas(k,2) = max2; % caracteristicas(k,3) = max3; % caracteristicas(k,4) = max4; % caracteristicas(k,5) = direccion; % k = k+1; % l = l+1; % i = i+1; % direccion = direc(i); % end % direccion = 5; % end

caracteristicas(k,1) = max1; caracteristicas(k,2) = max2; caracteristicas(k,3) = max3; caracteristicas(k,4) = max4; caracteristicas(k,5) = direccion; end k = k+1; i = i+j+1; end %% Separacion por lados k = k-1 k1 = 1; k2 = 1; k3 = 1; k4 = 1; k5 = 1; for i = 1 : k-1 if caracteristicas(i,5) == 1 derecha(k1,1) = caracteristicas(i,1); derecha(k1,2) = caracteristicas(i,2); derecha(k1,3) = caracteristicas(i,3); derecha(k1,4) = caracteristicas(i,4); k1 = k1+1; end if caracteristicas(i,5) == 2 arriba(k2,1) = caracteristicas(i,1); arriba(k2,2) = caracteristicas(i,2); arriba(k2,3) = caracteristicas(i,3); arriba(k2,4) = caracteristicas(i,4); k2 = k2+1; end if caracteristicas(i,5) == 3 izquierda(k3,1) = caracteristicas(i,1); izquierda(k3,2) = caracteristicas(i,2); izquierda(k3,3) = caracteristicas(i,3); izquierda(k3,4) = caracteristicas(i,4); k3 = k3+1; end if caracteristicas(i,5) == 4 abajo(k4,1) = caracteristicas(i,1); abajo(k4,2) = caracteristicas(i,2); abajo(k4,3) = caracteristicas(i,3); abajo(k4,4) = caracteristicas(i,4); k4 = k4+1; end % if caracteristicas(i,3) == 5 % nada(k5,1) = caracteristicas(i,1); % nada(k5,2) = caracteristicas(i,2); % nada(k5,3) = caracteristicas(i,3);

Page 175: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

147

% nada(k5,4) = caracteristicas(i,4); % k5 = k5+1; % end end plot3(derecha(:,1),derecha(:,2),derecha(:,3),'or'); hold on; plot3(arriba(:,1),arriba(:,2),arriba(:,3),'dg'); plot3(izquierda(:,1),izquierda(:,2),izquierda(:,3),'xb'); plot3(abajo(:,1),abajo(:,2),abajo(:,3),'pblack'); grid on; k1 k2 k3 k4 % plot(nada(:,1),nada(:,2),'oy'); % pause % plot3(senial(:,1),senial(:,2),senial(:,3),'oc'); %% Graficacion r(1) = mean(derecha(:,1)); r(2) = mean(derecha(:,2)); r(3) = mean(derecha(:,3)); r(4) = mean(derecha(:,4)); u(1) = mean(arriba(:,1)); u(2) = mean(arriba(:,2)); u(3) = mean(arriba(:,3)); u(4) = mean(arriba(:,4)); l(1) = mean(izquierda(:,1)); l(2) = mean(izquierda(:,2)); l(3) = mean(izquierda(:,3)); l(4) = mean(izquierda(:,4)); d(1) = mean(abajo(:,1)); d(2) = mean(abajo(:,2)); d(3) = mean(abajo(:,3)); d(4) = mean(abajo(:,4)); % n(1) = mean(nada(:,1)); % n(2) = mean(nada(:,2)); % n(3) = mean(nada(:,3)); % n(4) = mean(nada(:,4)); rs(1) = std(derecha(:,1)); rs(2) = std(derecha(:,2)); rs(3) = std(derecha(:,3)); rs(4) = std(derecha(:,4)); us(1) = std(arriba(:,1));

us(2) = std(arriba(:,2)); us(3) = std(arriba(:,3)); us(4) = std(arriba(:,4)); ls(1) = std(izquierda(:,1)); ls(2) = std(izquierda(:,2)); ls(3) = std(izquierda(:,3)); ls(4) = std(izquierda(:,4)); ds(1) = std(abajo(:,1)); ds(2) = std(abajo(:,2)); ds(3) = std(abajo(:,3)); ds(4) = std(abajo(:,4)); % ns(1) = std(nada(:,1)); % ns(2) = std(nada(:,2)); % ns(3) = std(nada(:,3)); % ns(4) = std(nada(:,4)); % figure; % hold on; % grid on; % plot3(r(1),r(2),r(3),'or'); % plot3(u(1),u(2),u(3),'og'); % plot3(l(1),l(2),l(3),'ob'); % plot3(d(1),d(2),d(3),'oblack'); base = caracteristicas; mus(1,:) = r(:); mus(2,:) = u(:); mus(3,:) = l(:); mus(4,:) = d(:); vars(1,:) = sqrt(rs(:)); vars(2,:) = sqrt(us(:)); vars(3,:) = sqrt(ls(:)); vars(4,:) = sqrt(ds(:)); save parametros.mat mus vars base; termine = 'Termine entrenamiento' %% entrenador para resubstitucion y leave one out function entrenador() % close all; %% Carga de variables senial = load('entrena4_1.out'); % load filtro32hertz1024.mat; % senialF = filter(filtro32hertz1024,senial); senialF = senial;

Page 176: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

148

f1 = senialF(:,1); f2 = senialF(:,2); f3 = senialF(:,3); f4 = senialF(:,4); direc = senial(:,17); %% Maximos y minimos i = 1; j = 100; while j > 4 i = i+1; j = senial(i,17); end j = 25; k = 1; direccion = direc(i); while i < length(senialF)-1 while abs(f1(i))<6000 && abs(f2(i))<6000 && abs(f3(i))<10000 && abs(f4(i))<6000 && i <length(senialF)-1 i = i+1; end if(i+j < length(senial)-1) segmento1 = f1(i:i+j); segmento2 = f2(i:i+j); segmento3 = f3(i:i+j); segmento4 = f4(i:i+j); direccion = direc(i); if(direccion == 1) [max1, posicionmax1] = max(abs(segmento2)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 2) [max1, posicionmax1] = max(abs(segmento3)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 3)

[max1, posicionmax1] = max(abs(segmento1)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 4) [max1, posicionmax1] = max(abs(segmento3)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end % if(direccion == 5) % l = 1; % while direccion == 5 % max1 = segmento1(l); % max2 = segmento2(l); % max3 = segmento3(l); % max4 = segmento4(l); % % % caracteristicas(k,1) = max1; % caracteristicas(k,2) = max2; % caracteristicas(k,3) = max3; % caracteristicas(k,4) = max4; % caracteristicas(k,5) = direccion; % k = k+1; % l = l+1; % i = i+1; % direccion = direc(i); % end % direccion = 5; % end caracteristicas(k,1) = max1; caracteristicas(k,2) = max2; caracteristicas(k,3) = max3; caracteristicas(k,4) = max4; caracteristicas(k,5) = direccion; end k = k+1; i = i+j+1; end %% Separacion por lados k = k-1 k1 = 1; k2 = 1;

Page 177: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

149

k3 = 1; k4 = 1; k5 = 1; for i = 1 : k-1 if caracteristicas(i,5) == 1 derecha(k1,1) = caracteristicas(i,1); derecha(k1,2) = caracteristicas(i,2); derecha(k1,3) = caracteristicas(i,3); derecha(k1,4) = caracteristicas(i,4); k1 = k1+1; end if caracteristicas(i,5) == 2 arriba(k2,1) = caracteristicas(i,1); arriba(k2,2) = caracteristicas(i,2); arriba(k2,3) = caracteristicas(i,3); arriba(k2,4) = caracteristicas(i,4); k2 = k2+1; end if caracteristicas(i,5) == 3 izquierda(k3,1) = caracteristicas(i,1); izquierda(k3,2) = caracteristicas(i,2); izquierda(k3,3) = caracteristicas(i,3); izquierda(k3,4) = caracteristicas(i,4); k3 = k3+1; end if caracteristicas(i,5) == 4 abajo(k4,1) = caracteristicas(i,1); abajo(k4,2) = caracteristicas(i,2); abajo(k4,3) = caracteristicas(i,3); abajo(k4,4) = caracteristicas(i,4); k4 = k4+1; end % if caracteristicas(i,3) == 5 % nada(k5,1) = caracteristicas(i,1); % nada(k5,2) = caracteristicas(i,2); % nada(k5,3) = caracteristicas(i,3); % nada(k5,4) = caracteristicas(i,4); % k5 = k5+1; % end end plot3(derecha(:,1),derecha(:,2),derecha(:,3),'or'); hold on; plot3(arriba(:,1),arriba(:,2),arriba(:,3),'dg'); plot3(izquierda(:,1),izquierda(:,2),izquierda(:,3),'xb'); plot3(abajo(:,1),abajo(:,2),abajo(:,3),'pblack'); grid on; k1 k2 k3 k4 % plot(nada(:,1),nada(:,2),'oy'); % pause

% plot3(senial(:,1),senial(:,2),senial(:,3),'oc'); %% Graficacion r(1) = mean(derecha(:,1)); r(2) = mean(derecha(:,2)); r(3) = mean(derecha(:,3)); r(4) = mean(derecha(:,4)); u(1) = mean(arriba(:,1)); u(2) = mean(arriba(:,2)); u(3) = mean(arriba(:,3)); u(4) = mean(arriba(:,4)); l(1) = mean(izquierda(:,1)); l(2) = mean(izquierda(:,2)); l(3) = mean(izquierda(:,3)); l(4) = mean(izquierda(:,4)); d(1) = mean(abajo(:,1)); d(2) = mean(abajo(:,2)); d(3) = mean(abajo(:,3)); d(4) = mean(abajo(:,4)); % n(1) = mean(nada(:,1)); % n(2) = mean(nada(:,2)); % n(3) = mean(nada(:,3)); % n(4) = mean(nada(:,4)); rs(1) = std(derecha(:,1)); rs(2) = std(derecha(:,2)); rs(3) = std(derecha(:,3)); rs(4) = std(derecha(:,4)); us(1) = std(arriba(:,1)); us(2) = std(arriba(:,2)); us(3) = std(arriba(:,3)); us(4) = std(arriba(:,4)); ls(1) = std(izquierda(:,1)); ls(2) = std(izquierda(:,2)); ls(3) = std(izquierda(:,3)); ls(4) = std(izquierda(:,4)); ds(1) = std(abajo(:,1)); ds(2) = std(abajo(:,2)); ds(3) = std(abajo(:,3)); ds(4) = std(abajo(:,4)); % ns(1) = std(nada(:,1)); % ns(2) = std(nada(:,2)); % ns(3) = std(nada(:,3));

Page 178: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

150

% ns(4) = std(nada(:,4)); % figure; % hold on; % grid on; % plot3(r(1),r(2),r(3),'or'); % plot3(u(1),u(2),u(3),'og'); % plot3(l(1),l(2),l(3),'ob'); % plot3(d(1),d(2),d(3),'oblack'); base = caracteristicas; mus(1,:) = r(:); mus(2,:) = u(:); mus(3,:) = l(:); mus(4,:) = d(:); vars(1,:) = sqrt(rs(:)); vars(2,:) = sqrt(us(:)); vars(3,:) = sqrt(ls(:)); vars(4,:) = sqrt(ds(:)); save parametros.mat mus vars base; termine = 'Termine entrenamiento' % Programa para entrenar para Cross Validation 50% %% entrenador function entrenador() % close all; %% Carga de variables senial = load('entrena4_1.out'); % load filtro32hertz1024.mat; % senialF = filter(filtro32hertz1024,senial); senialF = senial; f1 = senialF(:,1); f2 = senialF(:,2); f3 = senialF(:,3); f4 = senialF(:,4); direc = senial(:,17); %% Maximos y minimos i = 1; j = 100; while j > 4 i = i+1; j = senial(i,17); end j = 25;

k = 1; direccion = direc(i); while i < length(senialF)-1 while abs(f1(i))<6000 && abs(f2(i))<6000 && abs(f3(i))<10000 && abs(f4(i))<6000 && i <length(senialF)-1 i = i+1; end if(i+j < length(senial)-1) segmento1 = f1(i:i+j); segmento2 = f2(i:i+j); segmento3 = f3(i:i+j); segmento4 = f4(i:i+j); direccion = direc(i); if(direccion == 1) [max1, posicionmax1] = max(abs(segmento2)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 2) [max1, posicionmax1] = max(abs(segmento3)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 3) [max1, posicionmax1] = max(abs(segmento1)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end if(direccion == 4) [max1, posicionmax1] = max(abs(segmento3)); max1 = segmento1(posicionmax1); max2 = segmento2(posicionmax1); max3 = segmento3(posicionmax1); max4 = segmento4(posicionmax1); end

Page 179: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

151

% if(direccion == 5) % l = 1; % while direccion == 5 % max1 = segmento1(l); % max2 = segmento2(l); % max3 = segmento3(l); % max4 = segmento4(l); % % % caracteristicas(k,1) = max1; % caracteristicas(k,2) = max2; % caracteristicas(k,3) = max3; % caracteristicas(k,4) = max4; % caracteristicas(k,5) = direccion; % k = k+1; % l = l+1; % i = i+1; % direccion = direc(i); % end % direccion = 5; % end caracteristicas(k,1) = max1; caracteristicas(k,2) = max2; caracteristicas(k,3) = max3; caracteristicas(k,4) = max4; caracteristicas(k,5) = direccion; end k = k+1; i = i+j+1; end %% Separacion por lados k = k-1 k1 = 1; k2 = 1; k3 = 1; k4 = 1; k5 = 1; for i = 1 : k-1 if caracteristicas(i,5) == 1 derecha(k1,1) = caracteristicas(i,1); derecha(k1,2) = caracteristicas(i,2); derecha(k1,3) = caracteristicas(i,3); derecha(k1,4) = caracteristicas(i,4); k1 = k1+1; end if caracteristicas(i,5) == 2 arriba(k2,1) = caracteristicas(i,1); arriba(k2,2) = caracteristicas(i,2); arriba(k2,3) = caracteristicas(i,3);

arriba(k2,4) = caracteristicas(i,4); k2 = k2+1; end if caracteristicas(i,5) == 3 izquierda(k3,1) = caracteristicas(i,1); izquierda(k3,2) = caracteristicas(i,2); izquierda(k3,3) = caracteristicas(i,3); izquierda(k3,4) = caracteristicas(i,4); k3 = k3+1; end if caracteristicas(i,5) == 4 abajo(k4,1) = caracteristicas(i,1); abajo(k4,2) = caracteristicas(i,2); abajo(k4,3) = caracteristicas(i,3); abajo(k4,4) = caracteristicas(i,4); k4 = k4+1; end % if caracteristicas(i,3) == 5 % nada(k5,1) = caracteristicas(i,1); % nada(k5,2) = caracteristicas(i,2); % nada(k5,3) = caracteristicas(i,3); % nada(k5,4) = caracteristicas(i,4); % k5 = k5+1; % end end plot3(derecha(:,1),derecha(:,2),derecha(:,3),'or'); hold on; plot3(arriba(:,1),arriba(:,2),arriba(:,3),'dg'); plot3(izquierda(:,1),izquierda(:,2),izquierda(:,3),'xb'); plot3(abajo(:,1),abajo(:,2),abajo(:,3),'pblack'); grid on; k1 k2 k3 k4 % plot(nada(:,1),nada(:,2),'oy'); % pause % plot3(senial(:,1),senial(:,2),senial(:,3),'oc'); %% Graficacion r(1) = mean(derecha(:,1)); r(2) = mean(derecha(:,2)); r(3) = mean(derecha(:,3)); r(4) = mean(derecha(:,4)); u(1) = mean(arriba(:,1)); u(2) = mean(arriba(:,2)); u(3) = mean(arriba(:,3)); u(4) = mean(arriba(:,4)); l(1) = mean(izquierda(:,1)); l(2) = mean(izquierda(:,2)); l(3) = mean(izquierda(:,3));

Page 180: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

152

l(4) = mean(izquierda(:,4)); d(1) = mean(abajo(:,1)); d(2) = mean(abajo(:,2)); d(3) = mean(abajo(:,3)); d(4) = mean(abajo(:,4)); % n(1) = mean(nada(:,1)); % n(2) = mean(nada(:,2)); % n(3) = mean(nada(:,3)); % n(4) = mean(nada(:,4)); rs(1) = std(derecha(:,1)); rs(2) = std(derecha(:,2)); rs(3) = std(derecha(:,3)); rs(4) = std(derecha(:,4)); us(1) = std(arriba(:,1)); us(2) = std(arriba(:,2)); us(3) = std(arriba(:,3)); us(4) = std(arriba(:,4)); ls(1) = std(izquierda(:,1)); ls(2) = std(izquierda(:,2)); ls(3) = std(izquierda(:,3)); ls(4) = std(izquierda(:,4)); ds(1) = std(abajo(:,1)); ds(2) = std(abajo(:,2)); ds(3) = std(abajo(:,3)); ds(4) = std(abajo(:,4)); % ns(1) = std(nada(:,1)); % ns(2) = std(nada(:,2)); % ns(3) = std(nada(:,3)); % ns(4) = std(nada(:,4)); % figure; % hold on; % grid on; % plot3(r(1),r(2),r(3),'or'); % plot3(u(1),u(2),u(3),'og'); % plot3(l(1),l(2),l(3),'ob'); % plot3(d(1),d(2),d(3),'oblack'); base = caracteristicas; mus(1,:) = r(:); mus(2,:) = u(:); mus(3,:) = l(:); mus(4,:) = d(:); vars(1,:) = sqrt(rs(:));

vars(2,:) = sqrt(us(:)); vars(3,:) = sqrt(ls(:)); vars(4,:) = sqrt(ds(:)); save parametros.mat mus vars base; termine = 'Termine entrenamiento' %Funcion para plotear el espectro de una señal function fftplot(y,Fs); L = length(y); NFFT = 2^nextpow2(L); % Next power of 2 from length of y Y = fft(y,NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2); plot(f,2*abs(Y(1:NFFT/2))) xlabel('Frequency (Hz)') %% Programa para calcular la envolente de una señal %% Inicializacion clear all; close all; clc; %% Carga de Variables load abajos.mat; load arriba.mat; load derechos.mat; load izquierdos.mat; %% Eliminacion de Artefactos i = 1; while i < length(abajo) if(abs(abajo(i))>2000) abajo(i) = 0; end if(abs(arriba(i))>2000) arriba(i) = 0; end if(abs(izquierdos(i))>2000) izquierdos(i) = 0; end if(abs(derechos(i))>2000) derechos(i) = 0; end i = i+1; end %% Señal Psitiva % i = 1;

Page 181: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

153

% while i < length(abajo) % abajo(i) = abs(abajo(i)); % arriba(i) = abs(arriba(i)); % izquierdos(i) = abs(izquierdos(i)); % derechos(i) = abs(derechos(i)); % i = i+1; % end %% Envolvente % abajoE = zeros(length(abajo),1); bandera = 0; i = 1; k = 1; %/////*********************************************/////////// while i < length(abajo) delta = abs(abajo(i)) - abs(abajo(i+1)); % Si es negativo es un maximo if( delta >= 0 ) if(bandera == 0) abajoE(k) = abajo(i); k = k+1; bandera = 1; end end if( delta < 0 ) bandera = 0; end i = i+1; end %/////*********************************************/////////// bandera = 0; i = 1; k = 1; while i < length(arriba) delta = abs(arriba(i)) - abs(arriba(i+1)); % Si es negativo es un maximo if( delta >= 0 ) if(bandera == 0) arribaE(k) = arriba(i); k = k+1; bandera = 1; end end if( delta < 0 ) bandera = 0; end i = i+1; end %/////*********************************************///////////

bandera = 0; i = 1; k = 1; while i < length(izquierdos) delta = abs(izquierdos(i)) - abs(izquierdos(i+1)); % Si es negativo es un maximo if( delta >= 0 ) if(bandera == 0) izquierdosE(k) = izquierdos(i); k = k+1; bandera = 1; end end if( delta < 0 ) bandera = 0; end i = i+1; end %/////*********************************************/////////// bandera = 0; i = 1; k = 1; while i < length(derechos) delta = abs(derechos(i)) - abs(derechos(i+1)); % Si es negativo es un maximo if( delta >= 0 ) if(bandera == 0) derechosE(k) = derechos(i); k = k+1; bandera = 1; end end if( delta < 0 ) bandera = 0; end i = i+1; end %/////*********************************************/////////// %/////*********************************************/////////// for i = 1: length(abajoE) if(abajoE(i) <= 0) abajoE(i) = 0; end end k = 1; i = 1; while i < length(abajoE) if(abajoE(i) == 0) i = i+1; else

Page 182: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

154

abajoE2(k) = abajoE(i); k = k+1; i = i+1; end end %/////*********************************************/////////// for i = 1: length(arribaE) if(arribaE(i) <= 0) arribaE(i) = 0; end end k = 1; i = 1; while i < length(arribaE) if(arribaE(i) == 0) i = i+1; else arribaE2(k) = arribaE(i); k = k+1; i = i+1; end end %/////*********************************************/////////// for i = 1: length(izquierdosE) if(izquierdosE(i) <= 0) izquierdosE(i) = 0; end end k = 1; i = 1; while i < length(izquierdosE) if(izquierdosE(i) == 0) i = i+1; else izquierdosE2(k) = izquierdosE(i); k = k+1; i = i+1; end end %/////*********************************************/////////// for i = 1: length(derechosE) if(derechosE(i) <= 0) derechosE(i) = 0; end end k = 1; i = 1; while i < length(derechosE) if(derechosE(i) == 0) i = i+1;

else derechosE2(k) = derechosE(i); k = k+1; i = i+1; end end %/////*********************************************/////////// %/////*********************************************/////////// % plot(abajoE); % hold on; % plot(abajoE2,'r'); x = 1:length(abajoE2); xi = 1:0.0131384:length(abajoE2); a = 1:length(arribaE2); ai = 1:0.0128618:length(arribaE2); b = 1:length(izquierdosE2); bi = 1:0.0130467:length(izquierdosE2); c = 1:length(derechosE2); ci = 1:0.0127185:length(derechosE2); abajoEi = interp1(x,abajoE2,xi,'spline'); arribaEi = interp1(a,arribaE2,ai,'spline'); izquierdosEi = interp1(b,izquierdosE2,bi,'spline'); derechosEi = interp1(c,derechosE2,ci,'spline'); figure; plot(abajoEi,'r'); hold on; plot(abajo); figure; plot(arribaEi,'r'); hold on; plot(arriba); figure; plot(izquierdosEi,'r'); hold on; plot(izquierdos); figure; plot(derechosEi,'r'); hold on; plot(derechos);

Page 183: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

155

%% Clasificador KNN function clases = knn(muestra,base,k) [nummuestras dimencion] = size(base); dimencion = dimencion - 1; for( i = 1 : nummuestras ) distancia(i) = sqrt( (base(i,1) - muestra(1))^2 + ... (base(i,2) - muestra(2))^2 ); end distancia = distancia'; distancia2 = [distancia, base(:,dimencion+1)]; distancia3 = sortrows(distancia2,1); clases = zeros(5,1); for( i = 1 : k) if( distancia3(i,2) == 1 ) clases(1) = clases(1)+1; end if( distancia3(i,2) == 2 ) clases(2) = clases(2)+1; end if( distancia3(i,2) == 3 ) clases(3) = clases(3)+1; end if( distancia3(i,2) == 4 ) clases(4) = clases(4)+1; end if( distancia3(i,2) == 5 ) clases(5) = clases(5)+1; end end clases = clases/k; % Programa para leer con ponderacion los cambios de fase %% Inicio close all; clear all; clc; %% Carga de variables D = 31.3495; L = 31.4286; R = 31.7553; U = 31.0426; SenialPtr = libpointer('doublePtr', load('ton_Imag.out'));

%% Filtrado CanalP = 9; % Canal A plotear a = get(SenialPtr,'Value'); muestras = length(a); load('chebyII.mat'); for j=1 : 16 res1(:,j)=filter(chebyII,a(:,j)); % plot(res1,'Color','red'); end % figure; % suma(movimiento) = libpointer('doublePtr',res1(:,5)'); %ploteando canal 5 % plot(suma(movimiento).Value(280:300)); % plot(suma(movimiento).Value); %Ploteando el espectro filtrado res1fft = fft(res1,2048); Pyy = res1fft(:,CanalP).* conj(res1fft(:,CanalP)) / 2048; f2 = 256*(1:1024)/2048; % plot(f2,Pyy(1:1024),'Color','red'); [amplitud Frecuencia] = max(Pyy); %% Demodulado h = pskdemod(res1,2); paso = 70; j = 1; for i = 1: length(res1)/paso dem = sum( pskdemod(res1(i:i+paso,CanalP),2) ); if(dem<36) demo(j) = 0; else demo(j) = 1; end j = j+1; end demo = demo'; dec = 0; k = 1; for i = 1: 10 :length(demo) for j = 1:10 dec = dec + bitshift(demo(i+j),1); end decodificado(k) = dec; k = k+1; dec = 0;

Page 184: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

156

end % Programa para segmentar los movimientos en una señal filtrada %% Inicializacion close all; clear all; clc; %% Carga de variables y filtrado cd EEGBD senial = load('hec_2303D_0.out'); cd .. load betacheby1024.mat; load alfacheby1024.mat; alfasenial = filter(alfacheby1024,senial); betasenial = filter(betacheby1024,senial); %% t3 = 5; t4 = 6; c3 = 7; c4 = 8; %% Derechos movimiento = 1; derechos = zeros(100000,1); i = 1; color = 1; k = 1; bandera = 0; while i <length(senial) if(senial(i,1) == movimiento) if(bandera == 0) derechos(k:k+100) = 1999; k = k+100; bandera = 1; end derechos(k) = betasenial(i,c3); k = k+1; end i = i+1; if(senial(i,1) ~= movimiento) bandera = 0; end end figure; plot(derechos);

%% Izquierdos movimiento = 2; izquierdos = zeros(100000,1); i = 1; color = 1; k = 1; bandera = 0; while i <length(senial) if(senial(i,1) == movimiento) if(bandera == 0) izquierdos(k:k+100) = 1999; k = k+100; bandera = 1; end izquierdos(k) = betasenial(i,c3); k = k+1; end i = i+1; if(senial(i,1) ~= movimiento) bandera = 0; end end figure; plot(izquierdos); %% Abajo movimiento = 3; abajo = zeros(100000,1); i = 1; color = 1; k = 1; bandera = 0; while i <length(senial) if(senial(i,1) == movimiento) if(bandera == 0) abajo(k:k+100) = 1999; k = k+100; bandera = 1; end abajo(k) = betasenial(i,c3); k = k+1; end i = i+1; if(senial(i,1) ~= movimiento) bandera = 0; end end figure; plot(abajo); %% Arriba movimiento = 4;

Page 185: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

157

arriba = zeros(100000,1); i = 1; color = 1; k = 1; bandera = 0; while i <length(senial) if(senial(i,1) == movimiento) if(bandera == 0) arriba(k:k+100) = 1999; k = k+100; bandera = 1; end arriba(k) = betasenial(i,c3); k = k+1; end i = i+1; if(senial(i,1) ~= movimiento) bandera = 0; end end figure; plot(arriba); %% save('movimientos6.mat', 'abajo','arriba','izquierdos','derechos','-v6'); % Programa para rastrear la frecuencia media en una señal %% Load And Filter %% Inicializacion clear all; close all; clc; %% Carga de variables load filtro32hertz1024.mat; cd ..; cd EEGBD; senial = load('hec_2303D_0.out'); senialF = filter(filtro32hertz1024,senial); cd ..; cd CNPP; %% Frecuencia media fsampling = 1024;

ventana = floor(length(senialF)/1024); k = 1; rangof = 33; for( i = 1:ventana) rangot = k:k+1024; fftplot( senialF(rangot) , fsampling,rangof) k = k+ventana; pause(0.1); end % Programa para mostrar en pantalla cada movimiento usando la transformada wigner %% Inicializacion close all; clear all; clc; %% Carga de variables y filtrado cd EEGBD senial = load('hec_2303D_0.out'); cd .. load betacheby1024.mat; load alfacheby1024.mat; alfasenial = filter(alfacheby1024,senial); betasenial = filter(betacheby1024,senial); %% t3 = 5; t4 = 6; c3 = 7; c4 = 8; %% Derechos movimiento = 1; derechos = zeros(100000,1); i = 1; color = 1; k = 1; bandera = 0; while i <length(senial) if(senial(i,1) == movimiento) if(bandera == 0) bandera = 1; end derechos(k) = betasenial(i,c3); k = k+1;

Page 186: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

158

end i = i+1; if(senial(i,1) ~= movimiento) bandera = 0; end end figure; plot(derechos); %% Izquierdos movimiento = 2; izquierdos = zeros(100000,1); i = 1; color = 1; k = 1; bandera = 0; while i <length(senial) if(senial(i,1) == movimiento) if(bandera == 0) bandera = 1; end izquierdos(k) = betasenial(i,c3); k = k+1; end i = i+1; if(senial(i,1) ~= movimiento) bandera = 0; end end figure; plot(izquierdos); %% Abajo movimiento = 3; abajo = zeros(100000,1); i = 1; color = 1; k = 1; bandera = 0; while i <length(senial) if(senial(i,1) == movimiento) if(bandera == 0) bandera = 1; end abajo(k) = betasenial(i,c3); k = k+1; end i = i+1; if(senial(i,1) ~= movimiento) bandera = 0;

end end figure; plot(abajo); %% Arriba movimiento = 4; arriba = zeros(100000,1); i = 1; color = 1; k = 1; bandera = 0; while i <length(senial) if(senial(i,1) == movimiento) if(bandera == 0) bandera = 1; end arriba(k) = betasenial(i,c3); k = k+1; end i = i+1; if(senial(i,1) ~= movimiento) bandera = 0; end end figure; plot(arriba); %% save movWigner.mat abajo arriba izquierdos derechos; % Funcion para calcular la probabilidad gaussiana function p = probgauss(mu,covz,x_n,dim) p = ((2*pi)^dim/2) * (det(covz)^(1/dim))*(exp((-1/dim)*(x_n-mu)'*inv(covz)*(x_n-mu))); % Programa para calcular los potenciales evocados P300 %% Inicializacion clear all; clc; close all; %% Carga de variables senial = load('ton_Dormido.out'); %% Filtrado load chebyII_1024.mat

Page 187: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

159

canalP = 9; tmp = senial(:,1); for j=1 : 16 filtrada(:,j)=filter(chebyII_1024,senial(:,j)); end filtrada(:,1) = tmp; %% close all; paso = 256; j = 1; k = 1; for i = 1: paso : length(filtrada(:,canalP)) tmp(k) = sum(abs( filtrada(i:i+paso,canalP))); % plot(tmp(k)); % pause(0.1); k = k+1; end %% Programa para calcular el P300 clear all; close all; clc; %% load hec_2303D_0.out; senial = hec_2303D_0(:,5); %% p300 = zeros(1200,1); k = 1; cambio = hec_2303D_0(1,1); for i = 977 : length(senial) p300(k) = p300(k)+senial(i); if(hec_2303D_0(i,1) == cambio) k = k+1; else k = 1; plot(p300); pause(0.01); cambio = hec_2303D_0(i,1); end end plot(p300);

%% Programa para calcular las medias de una señal segmentada y clasificada apriori clear all; close all; clc; cd Job1; clase = dir; D = 0; L = 0; R = 0; U = 0; for c = 3 : length( clase ) SenialPtr(c-2) = libpointer('doublePtr', load(clase(c).name, 'out')); end for c = 3 : length( clase ) switch clase(c).name(5) case 'D' D = D + 1; % SenialPtr(c-2) = libpointer('doublePtr', load(clase(c).name, 'out')); D1=sum(SenialPtr(c-2).Value(1:100,:)'); [md(D),id(D)]=max(D1); d1(D)=mean(D1); clear D1; case 'L' L = L + 1; % SenialPtr(c-2) = libpointer('doublePtr', load(clase(c).name, 'out')); L1=sum(SenialPtr(c-2).Value(1:100,:)'); [ml(L),il(L)]=max(L1); l1(L)=mean(L1); clear L1; case 'R' R = R + 1; % SenialPtr(c-2) = libpointer('doublePtr', load(clase(c).name, 'out')); R1=sum(SenialPtr(c-2).Value(1:100,:)'); [mr(R),ir(R)]=max(R1); r1(R)=mean(R1); clear R1; case 'U' U = U + 1;

Page 188: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

160

% SenialPtr(c-2) = libpointer('doublePtr', load(clase(c).name, 'out')); U1=sum(SenialPtr(c-2).Value(1:100,:)'); [mu(U),iu(U)]=max(U1); u1(U)=mean(U1); clear U1; end end cd .. a=mean(d1); b=mean(l1); c=mean(r1); d=mean(u1); % Programa para calcular la señal promedio %% clear all; close all; clc; %% load amdemod.mat; load hec21024f.mat; original = hec1024f.data(:,8); senial = amdemod_hec; paso = 256; hold on; for i = 1:length(senial) if(i+paso<length(senial)) suma(i) = sum(senial(i:i+paso)); prom = max(fft(abs(original(i:i+paso)),64)); % plot(prom,suma(i),'or'); plot(i,prom,'or'); % pause(0.0001); end end % Programa para probar clasificadores con EOG %% Inicializacion clear all; close all; clc; %% Carga de variables cd ..; cd EEGBD; % senial = load('hec_mov2.out');

% senial = load('mik_mov2.out'); % senial = load('hec_2303D_0.out'); % senial = load('mik_2303D.out'); % senial = load('isaac160407.out'); % senial = load('isaac160407D_0.out'); % senial = load('mik_MovOD.out'); % senial = load('job0705075121.out'); cd ..; cd Ocular; load job0705075121.mat; % load betacheby1024.mat; load filtro32hertz512.mat; % load filtro32hertz128.mat; %load cheby501024.mat %load cheby30501024.mat % senialF = senial; %filter(filtro32hertz1024,senial); senialF = filter(filtro32hertz512,senial); fp1 = senialF(:,1); fp2 = senialF(:,2); % f3 = senialF(:,3); % f4 = senialF(:,4); % c3 = senialF(:,5); % c4 = senialF(:,6); % p3 = senialF(:,7); % p4 = senialF(:,8); % o1 = senialF(:,9); % o2 = senialF(:,10); f7 = senialF(:,11); f8 = senialF(:,12); % t3 = senialF(:,13); % t4 = senialF(:,14); % t5 = senialF(:,15); % t6 = senialF(:,16); load med070507_C5.mat; %% Graficacion j = 100; i = 1; % Busca el indice donde comienzan los movimientos while j > 4 j = senial(i,17); i = i+1; end inicio = i-1; %% KNN i = 1; j = 1; k = 1; cambio = 0; color = 'or';

Page 189: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

161

figure; hold on; x = 0; y = 0; i = 1; baseE = base(:,1:4); grupos = base(:,5); mconfucion = zeros(5,5); i = inicio; while i < length(senialF)-1 x1 = x; y1 = y; max1 = f8(i); max2 = f7(i); max3 = fp2(i); max4 = fp1(i); if(abs(max1)>abs(n(1)*5) && abs(max2)>abs(n(2)*5) && abs(max3)>abs(n(3))*5) direccion = senial(i,17); muestra = [max1 max2 max3 max4]; claseknn = knnclassify(muestra, baseE,grupos, 3,'euclidean','consensus'); clases = sim(net,muestra'); [valor clasenn] = max(clases); knnYnn(k,:) = [claseknn clasenn]; k = k+1; if(claseknn == clasenn) clase = clasenn; if(clase == 1) x = x+10; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 2) x = x-10; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 3) y = y+10; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 4) y = y-10; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 5) mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; color = 'oy'; clase = 5;

end if(isnan(clase)) color = 'og'; clase = 5; end plot(x,y,color); color = 'or'; % title(['Tiempo : ' num2str(i/1024)]); title(['Tiempo : ' num2str(i/512) ' X Y:' num2str(x) ' ' num2str(y)]); pause(0.0000000000001); % pause; end end i = i+8; end % Funcion para usar los clasificadores entrenados y clasificar una señal real function clase = reconstructor(senial) %% Carga de variables load filtro32hertz1024.mat; senialF = filter(filtro32hertz1024,senial); fp1 = senialF(:,1); fp2 = senialF(:,2); % f3 = senialF(:,3); % f4 = senialF(:,4); % c3 = senialF(:,5); % c4 = senialF(:,6); % p3 = senialF(:,7); % p4 = senialF(:,8); % o1 = senialF(:,9); % o2 = senialF(:,10); f7 = senialF(:,11); f8 = senialF(:,12); % t3 = senialF(:,13); % t4 = senialF(:,14); % t5 = senialF(:,15); % t6 = senialF(:,16); load parametros.mat; %% Graficacion j = 100; i = 1; % Busca el indice donde comienzan los movimientos while j > 4 j = senial(i,17); i = i+1;

Page 190: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

162

end inicio = i-1; %% KNN i = 1; j = 1; k = 1; cambio = 0; color = 'or'; % figure; % hold on; x = 0; y = 0; i = 1; baseE = base(:,1:4); grupos = base(:,5); mconfucion = zeros(5,5); i = inicio; while i < length(senialF)-1 x1 = x; y1 = y; max1 = f8(i); max2 = f7(i); max3 = fp2(i); max4 = fp1(i); clase = 5; if(abs(max1)>abs(n(1)*5) && abs(max2)>abs(n(2)*5) && abs(max3)>abs(n(3))*5) direccion = senial(i,17); muestra = [max1 max2 max3 max4]; claseknn = knnclassify(muestra, baseE,grupos, 7,'euclidean','consensus'); clases = sim(net,muestra'); [valor clasenn] = max(clases); knnYnn(k,:) = [claseknn clasenn]; k = k+1; if(claseknn == clasenn) clase = clasenn; if(clase == 1) x = x+10; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 2) x = x-10; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 3) y = y+10; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1;

end if(clase == 4) y = y-10; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 5) mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; color = 'oy'; clase = 5; end if(isnan(clase)) color = 'og'; clase = 5; end % plot(x,y,color); % color = 'or'; end end i = i+1; end %% Version final del reconstructor/Clasificador function clase = reconstructor(senial) % clc; %% Carga de variables % senial = load('entrena64.out'); senialF = senial; f1 = senialF(:,1); f2 = senialF(:,2); f3 = senialF(:,3); f4 = senialF(:,4); % c3 = senialF(:,5); % c4 = senialF(:,6); % p3 = senialF(:,7); % p4 = senialF(:,8); % o1 = senialF(:,9); % o2 = senialF(:,10); % f7 = senialF(:,11); % f8 = senialF(:,12); % t3 = senialF(:,13); % t4 = senialF(:,14); % t5 = senialF(:,15); % t6 = senialF(:,16);

Page 191: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

163

load parametros.mat; %% Inicializacion de la NN basenet = [min(base(:,1)), max(base(:,1)) min(base(:,2)), max(base(:,2)) min(base(:,3)), max(base(:,3)) min(base(:,4)), max(base(:,4))]; for i = 1: length(base) col = base(i,5); vecdeseado(i,col) = 1; end net = newff(basenet,[4 5 4],{'tansig' 'tansig' 'purelin'},'trainlm'); net.trainParam.show = 50; % Mostrar net.trainParam.epochs = 10000; % Iteraciones para entrenamiento net.trainParam.goal = 1e-5; % Meta? [ net, tr ] = train( net, base(:,1:4)',vecdeseado'); %% Maximos y minimos i = 1; j = 1; k = 1; cambio = 0; color = 'or'; figure; hold on; x = 0; y = 0; i = 1; baseE = base(:,1:4); grupos = base(:,5); mconfucion = zeros(5,5); claseTodas = zeros(5,1); while i < length(senialF)-1 while abs(f1(i))<5000 && abs(f2(i))<5000 && abs(f3(i))<9000 && abs(f4(i))<5000 && i <length(senialF)-1 i = i+1; end max1 = f1(i); max2 = f2(i); max3 = f3(i); max4 = f4(i);

direccion = senial(i,17); muestra = [max1 max2 max3 max4]; clasesk = knn(muestra, base, 15); [porcentajek clasek] = max(clasesk); if(porcentajek < 0.75 ) clasek = 5; % else % pause; end clasesg(1) = dist2(mus(1,:),muestra); clasesg(2) = dist2(mus(2,:),muestra); clasesg(3) = dist2(mus(3,:),muestra); clasesg(4) = dist2(mus(4,:),muestra); normalizando = max(clasesg); clasesg = clasesg/normalizando; [probabilidad clasebayes] = min(clasesg); probabilidad = 1-probabilidad; clasesNN = sim(net,muestra'); [valor claseNN] = max(clasesNN); claseTodas(claseNN) = claseTodas(claseNN) +1; claseTodas(clasebayes) = claseTodas(clasebayes) +1; claseTodas(clasek) = claseTodas(clasek) +1; [voto clase] = max(claseTodas); % if(clasek == clasebayes && clasek == claseNN ) % clase = clasek; % else % clase = 5; % end clase = clasenn; if(clase == 1) x = x + 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 2) y = y + 10; plot(x,y,color); i = i+25;

Page 192: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

164

mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 3) x = x - 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 4) y = y - 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end % if(clase == 5) % y = y-10; % % plot(x,y,color); % % i = i+17; % mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; % end % plot(x,y,color); % color = 'or'; % title(['Tiempo : ' num2str(i/1024)]); % title(['Tiempo : ' num2str(i/64) ' X Y:' num2str(x) ' ' num2str(y)]); % pause(0.0000000000001); % pause; i = i+1; % clase; end mconfucion mconfucion(1:4,1:4) sum(mconfucion(1:4,1:4)) diag(mconfucion(1:4,1:4)) % Funcion para clasificar con leave one out y resubstitucion function clase = reconstructor(senial) % clc; %% Carga de variables % senial = load('entrena64.out'); senialF = senial;

f1 = senialF(:,1); f2 = senialF(:,2); f3 = senialF(:,3); f4 = senialF(:,4); % c3 = senialF(:,5); % c4 = senialF(:,6); % p3 = senialF(:,7); % p4 = senialF(:,8); % o1 = senialF(:,9); % o2 = senialF(:,10); % f7 = senialF(:,11); % f8 = senialF(:,12); % t3 = senialF(:,13); % t4 = senialF(:,14); % t5 = senialF(:,15); % t6 = senialF(:,16); load parametros.mat; %% Inicializacion de la NN basenet = [min(base(:,1)), max(base(:,1)) min(base(:,2)), max(base(:,2)) min(base(:,3)), max(base(:,3)) min(base(:,4)), max(base(:,4))]; for i = 1: length(base) col = base(i,5); vecdeseado(i,col) = 1; end net = newff(basenet,[4 5 4],{'tansig' 'tansig' 'purelin'},'trainlm'); net.trainParam.show = 50; % Mostrar net.trainParam.epochs = 10000; % Iteraciones para entrenamiento net.trainParam.goal = 1e-5; % Meta? [ net, tr ] = train( net, base(:,1:4)',vecdeseado'); %% Maximos y minimos i = 1; j = 1; k = 1; cambio = 0; color = 'or'; figure; hold on; x = 0; y = 0; i = 1; baseE = base(:,1:4); grupos = base(:,5);

Page 193: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

165

mconfucion = zeros(5,5); claseTodas = zeros(5,1); while i < length(senialF)-1 while abs(f1(i))<5000 && abs(f2(i))<5000 && abs(f3(i))<9000 && abs(f4(i))<5000 && i <length(senialF)-1 i = i+1; end max1 = f1(i); max2 = f2(i); max3 = f3(i); max4 = f4(i); direccion = senial(i,17); muestra = [max1 max2 max3 max4]; clasesk = knn(muestra, base, 15); [porcentajek clasek] = max(clasesk); if(porcentajek < 0.75 ) clasek = 5; % else % pause; end clasesg(1) = dist2(mus(1,:),muestra); clasesg(2) = dist2(mus(2,:),muestra); clasesg(3) = dist2(mus(3,:),muestra); clasesg(4) = dist2(mus(4,:),muestra); normalizando = max(clasesg); clasesg = clasesg/normalizando; [probabilidad clasebayes] = min(clasesg); probabilidad = 1-probabilidad; clasesNN = sim(net,muestra'); [valor claseNN] = max(clasesNN); claseTodas(claseNN) = claseTodas(claseNN) +1; claseTodas(clasebayes) = claseTodas(clasebayes) +1; claseTodas(clasek) = claseTodas(clasek) +1; [voto clase] = max(claseTodas); % if(clasek == clasebayes && clasek == claseNN ) % clase = clasek; % else

% clase = 5; % end clase = clasenn; if(clase == 1) x = x + 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 2) y = y + 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 3) x = x - 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 4) y = y - 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end % if(clase == 5) % y = y-10; % % plot(x,y,color); % % i = i+17; % mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; % end % plot(x,y,color); % color = 'or'; % title(['Tiempo : ' num2str(i/1024)]); % title(['Tiempo : ' num2str(i/64) ' X Y:' num2str(x) ' ' num2str(y)]); % pause(0.0000000000001); % pause; i = i+1; % clase; end

Page 194: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

166

mconfucion mconfucion(1:4,1:4) sum(mconfucion(1:4,1:4)) diag(mconfucion(1:4,1:4)) % Funcion para clasificar el 50% con cross validation function clase = reconstructor(senial) % clc; %% Carga de variables % senial = load('entrena64.out'); senialF = senial; f1 = senialF(:,1); f2 = senialF(:,2); f3 = senialF(:,3); f4 = senialF(:,4); % c3 = senialF(:,5); % c4 = senialF(:,6); % p3 = senialF(:,7); % p4 = senialF(:,8); % o1 = senialF(:,9); % o2 = senialF(:,10); % f7 = senialF(:,11); % f8 = senialF(:,12); % t3 = senialF(:,13); % t4 = senialF(:,14); % t5 = senialF(:,15); % t6 = senialF(:,16); load parametros.mat; %% Inicializacion de la NN basenet = [min(base(:,1)), max(base(:,1)) min(base(:,2)), max(base(:,2)) min(base(:,3)), max(base(:,3)) min(base(:,4)), max(base(:,4))]; for i = 1: length(base) col = base(i,5); vecdeseado(i,col) = 1; end net = newff(basenet,[4 5 4],{'tansig' 'tansig' 'purelin'},'trainlm');

net.trainParam.show = 50; % Mostrar net.trainParam.epochs = 10000; % Iteraciones para entrenamiento net.trainParam.goal = 1e-5; % Meta? [ net, tr ] = train( net, base(:,1:4)',vecdeseado'); %% Maximos y minimos i = 1; j = 1; k = 1; cambio = 0; color = 'or'; figure; hold on; x = 0; y = 0; i = 1; baseE = base(:,1:4); grupos = base(:,5); mconfucion = zeros(5,5); claseTodas = zeros(5,1); while i < length(senialF)-1 while abs(f1(i))<5000 && abs(f2(i))<5000 && abs(f3(i))<9000 && abs(f4(i))<5000 && i <length(senialF)-1 i = i+1; end max1 = f1(i); max2 = f2(i); max3 = f3(i); max4 = f4(i); direccion = senial(i,17); muestra = [max1 max2 max3 max4]; clasesk = knn(muestra, base, 15); [porcentajek clasek] = max(clasesk); if(porcentajek < 0.75 ) clasek = 5; % else % pause; end clasesg(1) = dist2(mus(1,:),muestra); clasesg(2) = dist2(mus(2,:),muestra); clasesg(3) = dist2(mus(3,:),muestra);

Page 195: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

167

clasesg(4) = dist2(mus(4,:),muestra); normalizando = max(clasesg); clasesg = clasesg/normalizando; [probabilidad clasebayes] = min(clasesg); probabilidad = 1-probabilidad; clasesNN = sim(net,muestra'); [valor claseNN] = max(clasesNN); claseTodas(claseNN) = claseTodas(claseNN) +1; claseTodas(clasebayes) = claseTodas(clasebayes) +1; claseTodas(clasek) = claseTodas(clasek) +1; [voto clase] = max(claseTodas); % if(clasek == clasebayes && clasek == claseNN ) % clase = clasek; % else % clase = 5; % end clase = clasenn; if(clase == 1) x = x + 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 2) y = y + 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 3) x = x - 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end if(clase == 4) y = y - 10; plot(x,y,color); i = i+25; mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; end % if(clase == 5)

% y = y-10; % % plot(x,y,color); % % i = i+17; % mconfucion(clase, direccion) = mconfucion(clase, direccion)+1; % end % plot(x,y,color); % color = 'or'; % title(['Tiempo : ' num2str(i/1024)]); % title(['Tiempo : ' num2str(i/64) ' X Y:' num2str(x) ' ' num2str(y)]); % pause(0.0000000000001); % pause; i = i+1; % clase; end mconfucion mconfucion(1:4,1:4) sum(mconfucion(1:4,1:4)) diag(mconfucion(1:4,1:4)) % Programa para calcular la señal RMS %% close all; clear all; clc; %% load filtradabeta.mat; canalP = 4; senial = filtradabeta(:,canalP); paso = 1024; pasoraiz = sqrt(paso); j = 1; for(i = 1:paso:length(senial)) sumapaso = sum(senial(i:i+paso)); norma = norm(sumapaso); rmsenial(j) = norma/pasoraiz; j = j+1; end %% plot(rmsenial); % Programa para visualizar señales EEG y EOG

Page 196: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

168

%% Inicializacion clear all; close all; clc; %% Carga de variables cd .. ; cd EEGBD; % senial = load('hec_2303D_0.out'); % senial = load('job_sp.out'); % senial = load('mik_2303D.out'); % senial = load('isaac160407D_0.out'); % senial = load('mik_MovOD.out'); senial = load('job0705075121.out'); cd ..; cd Ocular; % load betacheby1024.mat; load filtro32hertz512.mat; % load cheby101024.mat; senialF = filter(filtro32hertz512,senial); % senialF = senial; %% Extraccion de artefactos % i = 1; % j = 1; % while i < length(senialF) % for j = 1:16 % if (senialF(i,j) < 2500 && senialF(i,j) > -2500) % senialF(i,j) = 0; % end % end % i = i+1; % end %% close all; rango = 1:2560; ventana = length(rango)-1; escala = 0.01; i = 1; senialV = senialF*escala; % Avanza hasta iniciar las muestras correctas j = 100; while j > 4 i = i+1; j = senial(i,17); end

while i < length(senial)-ventana plot(rango , senial(i:i+ventana,17)*100 - 1400, 'r'); hold on; grid on; plot(rango , senialV(i:i+ventana,1) - 1150, 'g'); plot(rango , senialV(i:i+ventana,2) - 1000, 'b'); plot(rango , senialV(i:i+ventana,3) - 850, 'r'); plot(rango , senialV(i:i+ventana,4) - 700, 'r'); plot(rango , senialV(i:i+ventana,5) - 550, 'r'); plot(rango , senialV(i:i+ventana,6) - 400, 'r'); plot(rango , senialV(i:i+ventana,7) - 250, 'r'); plot(rango , senialV(i:i+ventana,8) - 100, 'r'); plot(rango , senialV(i:i+ventana,9) , 'r'); plot(rango , senialV(i:i+ventana,10) + 150, 'r'); plot(rango , senialV(i:i+ventana,11) + 300, 'g'); plot(rango , senialV(i:i+ventana,12) + 450, 'b'); plot(rango , senialV(i:i+ventana,13) + 600, 'r'); plot(rango , senialV(i:i+ventana,14) + 750, 'r'); plot(rango , senialV(i:i+ventana,15) + 900, 'r'); plot(rango , senialV(i:i+ventana,16) + 1050, 'r'); title(['Muestras: ' num2str(i) ' a ' num2str(i+length(rango)) ' (s)']); i = i+1024; pause; hold off; end %% Funcion para obtener la transformada wavelet %% close all; clear all; clc; %% load segmento1.mat; load segmento2.mat; %% x = segmento1(3072:4096); [A10,D10] = dwt(x,'db1','mode','sym'); [A9,D9] = dwt(A10,'db1','mode','sym'); [A8,D8] = dwt(A9,'db1','mode','sym'); [A7,D7] = dwt(A8,'db1','mode','sym'); [A6,D6] = dwt(A7,'db1','mode','sym'); [A5,D5] = dwt(A6,'db1','mode','sym'); [A4,D4] = dwt(A5,'db1','mode','sym'); [A3,D3] = dwt(A4,'db1','mode','sym'); [A2,D2] = dwt(A3,'db1','mode','sym'); [A1,D1] = dwt(A2,'db1','mode','sym'); [A0,D0] = dwt(A1,'db1','mode','sym'); % hold on;

Page 197: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

169

% plot(A10); % plot(D10); % figure; % hold on; % plot(A9); % plot(D9); % figure; % hold on; % plot(A8); % plot(D8); % figure; % hold on; % plot(A7); % plot(D7); % figure; % hold on; % plot(A6); % plot(D6); %% Fmuestreo = 1024; figure; subplot(2,1,1) fftplot(A10,Fmuestreo); subplot(2,1,2) fftplot(D10,Fmuestreo);

Fmuestreo = 512; figure; subplot(2,1,1) fftplot(A9,Fmuestreo); subplot(2,1,2) fftplot(D9,Fmuestreo); Fmuestreo = 256; figure; subplot(2,1,1) fftplot(A8,Fmuestreo); subplot(2,1,2) fftplot(D8,Fmuestreo); Fmuestreo = 128; figure; subplot(2,1,1) fftplot(A7,Fmuestreo); subplot(2,1,2) fftplot(D7,Fmuestreo); Fmuestreo = 64; figure; subplot(2,1,1) fftplot(A6,Fmuestreo); subplot(2,1,2) fftplot(D6,Fmuestreo);

A3 Código exportado a C Primeralib.c /* * MATLAB Compiler: 4.4 (R2006a) * Date: Mon May 28 20:31:56 2007 * Arguments: "-B" "macro_default" "-B" "csharedlib:primeralib" "-W" * "lib:primeralib" "-T" "link:lib" "entrenador.m" "reconstructor.m" */ #include <stdio.h> #define EXPORTING_primeralib 1 #include "primeralib.h" #ifdef __cplusplus extern "C" { #endif extern mclComponentData __MCC_primeralib_component_data; #ifdef __cplusplus } #endif

static HMCRINSTANCE _mcr_inst = NULL; #if defined( _MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__LCC__) #include <windows.h> static char path_to_dll[_MAX_PATH]; BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, void *pv) { if (dwReason == DLL_PROCESS_ATTACH) { char szDllPath[_MAX_PATH]; char szDir[_MAX_DIR]; if (GetModuleFileName(hInstance, szDllPath, _MAX_PATH) > 0) { _splitpath(szDllPath, path_to_dll, szDir, NULL, NULL);

Page 198: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

170

strcat(path_to_dll, szDir); } else return FALSE; } else if (dwReason == DLL_PROCESS_DETACH) { } return TRUE; } #endif static int mclDefaultPrintHandler(const char *s) { return fwrite(s, sizeof(char), strlen(s), stdout); } static int mclDefaultErrorHandler(const char *s) { int written = 0, len = 0; len = strlen(s); written = fwrite(s, sizeof(char), len, stderr); if (len > 0 && s[ len-1 ] != '\n') written += fwrite("\n", sizeof(char), 1, stderr); return written; } /* This symbol is defined in shared libraries. Define it here * (to nothing) in case this isn't a shared library. */ #ifndef LIB_primeralib_C_API #define LIB_primeralib_C_API /* No special import/export declaration */ #endif LIB_primeralib_C_API bool MW_CALL_CONV primeralibInitializeWithHandlers( mclOutputHandlerFcn error_handler, mclOutputHandlerFcn print_handler ) { if (_mcr_inst != NULL) return true; if (!mclmcrInitialize()) return false; if (!mclInitializeComponentInstance(&_mcr_inst, &__MCC_primeralib_component_data, true, NoObjectType, LibTarget, error_handler, print_handler)) return false; return true; }

LIB_primeralib_C_API bool MW_CALL_CONV primeralibInitialize(void) { return primeralibInitializeWithHandlers(mclDefaultErrorHandler, mclDefaultPrintHandler); } LIB_primeralib_C_API void MW_CALL_CONV primeralibTerminate(void) { if (_mcr_inst != NULL) mclTerminateInstance(&_mcr_inst); } LIB_primeralib_C_API bool MW_CALL_CONV mlxEntrenador(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]) { return mclFeval(_mcr_inst, "entrenador", nlhs, plhs, nrhs, prhs); } LIB_primeralib_C_API bool MW_CALL_CONV mlxReconstructor(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]) { return mclFeval(_mcr_inst, "reconstructor", nlhs, plhs, nrhs, prhs); } LIB_primeralib_C_API bool MW_CALL_CONV mlfEntrenador() { return mclMlfFeval(_mcr_inst, "entrenador", 0, 0, 0); } LIB_primeralib_C_API bool MW_CALL_CONV mlfReconstructor(int nargout, mxArray** clase , mxArray* senial) { return mclMlfFeval(_mcr_inst, "reconstructor", nargout, 1, 1, clase, senial); }

Page 199: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

171

Primeralib.h /* * MATLAB Compiler: 4.4 (R2006a) * Date: Mon May 28 20:31:56 2007 * Arguments: "-B" "macro_default" "-B" "csharedlib:primeralib" "-W" * "lib:primeralib" "-T" "link:lib" "entrenador.m" "reconstructor.m" */ #ifndef __primeralib_h #define __primeralib_h 1 #if defined(__cplusplus) && !defined(mclmcr_h) && defined(__linux__) # pragma implementation "mclmcr.h" #endif #include "mclmcr.h" #ifdef __cplusplus extern "C" { #endif #if defined(__SUNPRO_CC) /* Solaris shared libraries use __global, rather than mapfiles * to define the API exported from a shared library. __global is * only necessary when building the library -- files including * this header file to use the library do not need the __global * declaration; hence the EXPORTING_<library> logic. */ #ifdef EXPORTING_primeralib #define PUBLIC_primeralib_C_API __global #else #define PUBLIC_primeralib_C_API /* No import statement needed. */ #endif #define LIB_primeralib_C_API PUBLIC_primeralib_C_API #elif defined(_HPUX_SOURCE) #ifdef EXPORTING_primeralib #define PUBLIC_primeralib_C_API __declspec(dllexport) #else #define PUBLIC_primeralib_C_API __declspec(dllimport) #endif

#define LIB_primeralib_C_API PUBLIC_primeralib_C_API #else #define LIB_primeralib_C_API #endif /* This symbol is defined in shared libraries. Define it here * (to nothing) in case this isn't a shared library. */ #ifndef LIB_primeralib_C_API #define LIB_primeralib_C_API /* No special import/export declaration */ #endif extern LIB_primeralib_C_API bool MW_CALL_CONV primeralibInitializeWithHandlers(mclOutputHandlerFcn error_handler, mclOutputHandlerFcn print_handler); extern LIB_primeralib_C_API bool MW_CALL_CONV primeralibInitialize(void); extern LIB_primeralib_C_API void MW_CALL_CONV primeralibTerminate(void); extern LIB_primeralib_C_API bool MW_CALL_CONV mlxEntrenador(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]); extern LIB_primeralib_C_API bool MW_CALL_CONV mlxReconstructor(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]); extern LIB_primeralib_C_API bool MW_CALL_CONV mlfEntrenador(); extern LIB_primeralib_C_API bool MW_CALL_CONV mlfReconstructor(int nargout , mxArray** clase , mxArray* senial); #ifdef __cplusplus }

Page 200: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

172

#endif #endif primeralib_mcc_component_data.c /* * MATLAB Compiler: 4.4 (R2006a) * Date: Mon May 28 20:31:56 2007 * Arguments: "-B" "macro_default" "-B" "csharedlib:primeralib" "-W" * "lib:primeralib" "-T" "link:lib" "entrenador.m" "reconstructor.m" */ #include "mclmcr.h" #ifdef __cplusplus extern "C" { #endif const unsigned char __MCC_primeralib_session_key[] = { '9', 'E', 'B', 'A', '4', 'C', 'C', '2', 'E', 'A', '8', 'F', '0', '4', '0', '2', '6', '6', '7', 'E', 'E', 'A', 'B', '8', '4', '9', '6', '6', 'E', 'C', '4', '0', '0', 'D', '1', 'A', '2', 'A', '5', '2', 'C', 'B', '1', '1', 'A', '5', 'A', '7', '8', '5', '2', '5', '7', '9', 'A', '4', 'F', '9', '6', 'F', '1', '3', 'C', '2', '3', 'D', '4', '7', 'A', '0', '5', 'F', 'C', '4', '4', '1', 'B', '9', '3', '2', '5', '0', 'C', '2', '0', '2', '6', '4', '5', 'D', 'F', '9', 'A', 'D', '1', '5', '8', '8', 'C', 'C', '4', 'C', '7', '6', '5', '0', '1', 'A', '7', '4', 'F', '9', 'A', '9', '4', '2', '9', '3', '5', 'F', '3', '1', 'E', '2', '3', 'C', '2', '1', '4', '8', '2', 'D', '0', 'D', '0', 'C', '3', '7', '7', 'C', '2', 'A', '4', '8', '1', '3', 'C', 'A', '6', '4', '2', '6', '4', '5', '1', '5', '0', '3', '5', 'F', '8', 'A', '8', '6', '3', 'D', 'C', '4', '2', 'E', '3', '1', '3', '5', 'A', '6', '9', '0', '4', 'C', '6', '7', '7', '9', '9', '7', 'F', 'B', '3', '5', 'D', 'A', '2', '5', '3', 'D', '2', '0', 'F', 'E', '4', 'C', 'B', 'E', '0', '6', '2', '2', 'A', '4', '1', '8', 'F', '1', '9', 'C', '2', 'F', 'C', 'E', 'B', 'A', '1', '6', '4', '1', '0', '9', '1', 'D', 'E', 'E', 'C', '8', '8', 'A', 'F', 'E', '7', 'D', 'C', '3', '2', '6', '0', '6', '9', '0', 'D', '9', '9', '6', 'C', '5', 'E', 'C', '\0'}; const unsigned char __MCC_primeralib_public_key[] = { '3', '0', '8', '1', '9', 'D', '3', '0', '0', 'D', '0', '6', '0', '9', '2', 'A', '8', '6', '4', '8', '8', '6', 'F', '7', '0', 'D', '0', '1', '0', '1', '0', '1', '0', '5', '0', '0', '0', '3', '8', '1', '8', 'B', '0', '0', '3', '0', '8', '1', '8', '7', '0', '2', '8', '1', '8', '1', '0', '0', 'C', '4', '9', 'C', 'A', 'C', '3', '4', 'E', 'D', '1', '3',

'A', '5', '2', '0', '6', '5', '8', 'F', '6', 'F', '8', 'E', '0', '1', '3', '8', 'C', '4', '3', '1', '5', 'B', '4', '3', '1', '5', '2', '7', '7', 'E', 'D', '3', 'F', '7', 'D', 'A', 'E', '5', '3', '0', '9', '9', 'D', 'B', '0', '8', 'E', 'E', '5', '8', '9', 'F', '8', '0', '4', 'D', '4', 'B', '9', '8', '1', '3', '2', '6', 'A', '5', '2', 'C', 'C', 'E', '4', '3', '8', '2', 'E', '9', 'F', '2', 'B', '4', 'D', '0', '8', '5', 'E', 'B', '9', '5', '0', 'C', '7', 'A', 'B', '1', '2', 'E', 'D', 'E', '2', 'D', '4', '1', '2', '9', '7', '8', '2', '0', 'E', '6', '3', '7', '7', 'A', '5', 'F', 'E', 'B', '5', '6', '8', '9', 'D', '4', 'E', '6', '0', '3', '2', 'F', '6', '0', 'C', '4', '3', '0', '7', '4', 'A', '0', '4', 'C', '2', '6', 'A', 'B', '7', '2', 'F', '5', '4', 'B', '5', '1', 'B', 'B', '4', '6', '0', '5', '7', '8', '7', '8', '5', 'B', '1', '9', '9', '0', '1', '4', '3', '1', '4', 'A', '6', '5', 'F', '0', '9', '0', 'B', '6', '1', 'F', 'C', '2', '0', '1', '6', '9', '4', '5', '3', 'B', '5', '8', 'F', 'C', '8', 'B', 'A', '4', '3', 'E', '6', '7', '7', '6', 'E', 'B', '7', 'E', 'C', 'D', '3', '1', '7', '8', 'B', '5', '6', 'A', 'B', '0', 'F', 'A', '0', '6', 'D', 'D', '6', '4', '9', '6', '7', 'C', 'B', '1', '4', '9', 'E', '5', '0', '2', '0', '1', '1', '1', '\0'}; static const char * MCC_primeralib_matlabpath_data[] = { "primeralib/", "work/Caracteristicas/test/", "toolbox/compiler/deploy/", "$TOOLBOXMATLABDIR/general/", "$TOOLBOXMATLABDIR/ops/", "$TOOLBOXMATLABDIR/lang/", "$TOOLBOXMATLABDIR/elmat/", "$TOOLBOXMATLABDIR/elfun/", "$TOOLBOXMATLABDIR/specfun/", "$TOOLBOXMATLABDIR/matfun/", "$TOOLBOXMATLABDIR/datafun/", "$TOOLBOXMATLABDIR/polyfun/", "$TOOLBOXMATLABDIR/funfun/", "$TOOLBOXMATLABDIR/sparfun/", "$TOOLBOXMATLABDIR/scribe/", "$TOOLBOXMATLABDIR/graph2d/", "$TOOLBOXMATLABDIR/graph3d/", "$TOOLBOXMATLABDIR/specgraph/", "$TOOLBOXMATLABDIR/graphics/", "$TOOLBOXMATLABDIR/uitools/", "$TOOLBOXMATLABDIR/strfun/", "$TOOLBOXMATLABDIR/imagesci/", "$TOOLBOXMATLABDIR/iofun/", "$TOOLBOXMATLABDIR/audiovideo/", "$TOOLBOXMATLABDIR/timefun/", "$TOOLBOXMATLABDIR/datatypes/", "$TOOLBOXMATLABDIR/verctrl/", "$TOOLBOXMATLABDIR/codetools/", "$TOOLBOXMATLABDIR/helptools/",

Page 201: Maestría en Ciencias de la Computaciónnewton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/terminada/071112_delao... · electro encefalográficas (EEG). A partir de que se desarrolló la

173

"$TOOLBOXMATLABDIR/winfun/", "$TOOLBOXMATLABDIR/demos/", "$TOOLBOXMATLABDIR/timeseries/", "$TOOLBOXMATLABDIR/hds/", "$TOOLBOXMATLABDIR/guide/", "$TOOLBOXMATLABDIR/plottools/", "toolbox/local/", "toolbox/bioinfo/biolearning/", "toolbox/compiler/", "toolbox/database/database/", "toolbox/stats/" }; static const char * MCC_primeralib_classpath_data[] = { "java/jar/toolbox/database.jar" }; static const char * MCC_primeralib_libpath_data[] = { "" }; static const char * MCC_primeralib_app_opts_data[] = { "" }; static const char * MCC_primeralib_run_opts_data[] = { "" }; static const char * MCC_primeralib_warning_state_data[] = { "" }; mclComponentData __MCC_primeralib_component_data = { /* Public key data */ __MCC_primeralib_public_key, /* Component name */ "primeralib", /* Component Root */ "", /* Application key data */ __MCC_primeralib_session_key, /* Component's MATLAB Path */

MCC_primeralib_matlabpath_data, /* Number of directories in the MATLAB Path */ 40, /* Component's Java class path */ MCC_primeralib_classpath_data, /* Number of directories in the Java class path */ 1, /* Component's load library path (for extra shared libraries) */ MCC_primeralib_libpath_data, /* Number of directories in the load library path */ 0, /* MCR instance-specific runtime options */ MCC_primeralib_app_opts_data, /* Number of MCR instance-specific runtime options */ 0, /* MCR global runtime options */ MCC_primeralib_run_opts_data, /* Number of MCR global runtime options */ 0, /* Component preferences directory */ "primeralib_F8E48A08913B7B0F734A2FFB748C39D1", /* MCR warning status data */ MCC_primeralib_warning_state_data, /* Number of MCR warning status modifiers */ 0, /* Path to component - evaluated at runtime */ NULL }; #ifdef __cplusplus } #endif