miércoles, 16 de noviembre de 2011

Resumen Compresión de señales eléctricas cardiacas en tiempo real mediante transformada wavelet

Propósito u objetivo

Desarrollar un prototipo de dispositivo para la compresión y transmisión inalámbrica de señales electrocardiográficas en tiempo real basado en la transformada wavelet, implementado en un sistema embebido y orientado a aplicaciones de telemedicina.
Material y métodos

Para la validación del dispositivo, el correcto funcionamiento del algoritmo de compresión y del protocolo de transmisión, se implementó un simulador de ECG embebido en un microcontrolador PSoC1-8CY29466; en este se almacenaron trozos de la base de datos de señales ECG de MIT-BIH, fueron reproducidas a 360sps  por medio del DAC de este mismo dispositivo y se realizaron las correspondientes simulaciones del algoritmo de compresión en Matlab. 
Algoritmo para compresión
Está compuesto por cuatro procedimientos. El primero consiste en restar el nivel offset  de la señal de entrada, con el fin de disminuir el tamaño de los datos obtenidos al hacer la DWT (transformada discreta wavelet). El segundo procedimiento consiste en calcular la DWT con 4 niveles de descomposición de 16 muestras consecutivas, obteniendo después de la transformación las mismas 16 muestras distribuidas de la siguiente forma: 8 CD (coeficientes de detalle) de primer nivel, 4 Cd de segundo nivel, 2 CD de tercer nivel, 1 CD de cuarto nivel y, por ultimo, 1 coeficiente de aproximación. El tercer procedimiento consiste en umbralizar los CD de todos los niveles, de acuerdo a valores obtenidos previamente por datos estadísticos. Por último los coeficientes son cuantizados en palabras de 8 bits con signo  y valores desde -119 a +120.
Formato de transmisión
Se definieron 16 palabras reservadas que van desde -127 a -120 y desde 121 a 128, de las cuales 15 son para identificar los coeficientes de detalle y 1 para indicar el fin del paquete de datos a transmitir. Se transmiten todos los coeficientes de aproximación, pero solo los coeficientes de detalle que son diferentes de cero, enviando una palabra reservada que indica su posición e inmediatamente después un dato con su valor. Se añade un dato para indicar el fin de transmisión por cada paquete de datos.
Reconstrucción 
Para la reconstrucción se usa el mismo método que para la compresión pero en forma  inversa.
Resultados
Se implementaron los algoritmos en un sistema de desarrollo Mbed, que integra un microcontrolador LPC1768 con núcleo ARM CortexM3 de 32bits de la empresa NXP, el cual transmite los datos por medio de un módulo bluetoothUSB. Los datos son recibidos en un computador y procesados por un programa desarrollado en Java que realiza la reconstrucción de la señal y luego la visualiza.
Se obtuvieron en promedio razones de compresión de 9:1, con porcentajes de distorsión de la señal del 4.5%, acordes con un algoritmo de compresión con pérdida, siendo valores adecuados para este tipo de implementaciones.
Conclusiones
En este trabajo se propone e implementa un método para procesar y  transmitir los datos en tiempo real. Además de la compresión, los datos son separados en cuatro niveles de descomposición que pueden ser útiles para identificar, además de la frecuencia cardiaca, arritmias y algunas enfermedades cardiovasculares; y es posible la integración con módulos de telemedicina.


Agradecimientos 


Agradecemos al Ing. Julio Vargas, al Ing. Fabian Velaquez y al Ing Javier Castaño por habernos transmitido la pasión por explorar nuevos temas y su continuo entusiasmo por aportar algo a la sociedad. También agradecemos a Vanessa Rodriguez y de nuevo al ing. Javier Castaño por su inagotable paciencia y colaboración en la corrección de la redaccion de este resumen.


Autores
Carlos Arturo Gomez Jimenez
Hector Miguel Vargas Garcia
 2011
Grupo de Investigacion Macrypt - Universidad de los llanos - Villavicencio - Colombia.

viernes, 4 de noviembre de 2011

Abrir archivos ECG bases de datos MIT DB, AHA DB.

Paquete de software WFDB (WaveForm DataBase) para Matlab
A continuación se describirá la WFDB y su uso con Matlab, aunque esta información se encuentra en la pagina de Physionet (http://www.physionet.org) en idioma ingles,  se considero pertinente hacer una breve introducción en este trabajo.

¿Qué es la WFDB Toolbox para MATLAB?

Este es una caja de  aplicaciones WFDB implementadas como funciones en MATLAB.  WFDB es una aplicación que permite leer, escribir, manipular y graficar  archivos en los formatos usados por  PhysioBank databases.
Por defecto, el Toolbox WFDB para Matlab soporta la lectura directa de registros desde el PhysioBank sobre la web (usando HTTP)(por lo que es necesario tener una conexión a internet). Por ejemplo, en MATLAB, se puede facilmente descargar y graficar una señal.
>> r = rdsamp('mitdb/100', 'maxt', ':10');
>> plot(r(:,1), r(:,2));
 
Las funciones presentes en el tollbox son las siguientes:
 
rdann()
Lee los archivos de anotaciones de registros WFDB
rdsamp()
Lee los archivos de la señal de los registros de WFDB
setwfdb()
Establece las rutas WFDB a los valores predeterminados
time2sec()
Convierte intervalos de tiempo formato WFDB  a segundos
wfdb_config()
retorna información de versión y compilación acerca de la librería WFDB
wfdbdesc()
volver las especificaciones de las señales en los registros de WFDB
wfdbwhich()
encuentra la ubicación de los archivos que pertenecen a los registros de WFDB
Wrann()
Escribe anotaciones para los registros de la WFDB en los archivos de anotaciones
wrsamp()
Escribe datos de señal en registros WFDB-compatibles
 
Se puede obtener la descripción de cada un de estas funciones escribiendo:
 
>>help <nombre_funcion>

Estas funciones fueron originalmente diseñadas para usar con databases de electrocardiogramas, incluyendo la MIT-BIH Arrhythmia Database (MIT DB) y la AHA Database para Evaluación de detectores de arritmia ventricular (AHA DB).En Febrero de 1990, la anotación predefinida fue expandida para acomodarse a las necesidades de la European ST-T Database (ESC DB).
La biblioteca WFDB  ha evolucionado para apoyar el desarrollo de
numerosas otras bases de datos que incluyen señales como la presión sanguínea, la respiración, saturación de oxígeno, EEG, así como ECG. Entre estas bases de datos de múltiples parámetros están la MGH/Marquette Foundation Waveform Database,
MITBIH y la MIMIC Database.
Hay unos pocos conceptos importantes que serán expuestos antes de seguir adelante:

Registros (Records)
Las bases de datos para las cuales fue diseñada la librería WFDB consiste de un pequeño número de registros, cada uno de los cuales es muy grande (típicamente Mbytes o más).
Cada registro contiene una grabación continua de un único sujeto. Un programa de aplicación típica accede sólo a un único registro, y la mayoría (no todos) de los accesos dentro del registro es secuencial. Estas bases de datos, son por lo tanto cualitativamente diferentes de aquellas para las que el software convencional de gestión de bases que está escrito.
Los registros son identificados por record names de hasta 20 caracteres. Por ejemplo, record names en la MIT DB son números de tres dígitos, en cambio en la AHA DB son números de cuatro dígitos y en la ESC DB son números de cuatro dígitos con la letra ‘e’ como prefijo.
El usuario puede crear registros databases con nombre conteniendo letras, dígitos y guiones bajos. Un registro se compone de varios archivos, que contienen las señales, las anotaciones, y las especificaciones de los atributos de la señal, cada archivo perteneciente a un registro dado incluye normalmente el nombre del registro (record name)  como la primera parte de su nombre. Un registro es una colección extensible de archivos, que no necesitan estar ubicados en el mismo directorio, o incluso en el mismo dispositivo físico. Por lo tanto, es posible, que el usuario cree un archivo de disco local con sus propias anotaciones para un registro leído desde un servidor web o un CD-ROM, y tratarlo como parte del registro.

Señales, Muestras, y Tiempo
En esta caso, una señal es definida más restrictivamente como una secuencia de muestras enteras, usualmente obtenidas de la digitalización de una función continua del tiempo observada a una frecuencia de muestreo fija expresada en Hz (muestras por segundo). El intervalo de tiempo entre cualquier par de muestras adyacentes en una señal dada es un intervalo de muestreo; todos los intervalos de muestreo para una señal dada son iguales.
El valor entero de cada muestra es usualmente interpretado como una tensión, y las unidades son llamadas unidades de convertidor AD, o adu. La ganancia definida para cada señal especifica a cuántas adus corresponde para una unidad física (usualmente 1 mV, la amplitud nominal de un complejo QRS normal sobre una derivación ECG body-surface casi paralela a la media del eje eléctrico cardiaco).
Todas las señales en un registro dado están usualmente muestreadas a la misma frecuencia, pero no necesariamente con la misma ganancia. Los registros MIT DB están muestreados a 360 Hz; los AHA y ESC DB a 250 Hz. El número de la muestra (sample number) es un atributo de una muestra, se define como el número de muestras de la misma señal que lo preceden, así el número de muestra de la primera muestra es cero.
En este caso, las unidades de tiempo son intervalos de muestreo, de ahí que "tiempo" de una muestra es sinónimo de su número de muestra. Las muestras con el mismo número de muestra en diferentes señales del mismo registro son tratados como simultáneos. En verdad, ellos no son precisamente simultáneos, ya que muchos digitalizadores multi-canal muestrean señales en forma round-robin (*).

Anotaciones (Annotations)
Los registros MIT DB tiene cada uno 30 minutos de duración, y se anota en todos; con esto se quiere decir que cada latido (complejo QRS) se describe mediante una etiqueta llamada anotación.
Típicamente un archivo de anotación para un registro MIT DB contiene cerca de 2000 anotaciones de latido, y números menores de anotaciones de ritmo y calidad de señal. Los registros AHA DB son o bien de 35 minutos o de tres horas de duración, y sólo los 30 últimos minutos de cada registro son anotados. Los registros ESC DB son cada uno de 2 horas de longitud, y se anota todo. El “tiempo” de una anotación es simplemente el número de la muestra con la cual está asociada la anotación. Al igual que las muestras en las señales, las anotaciones se mantienen en el tiempo y el orden de la señal en los archivos de anotaciones.
No más de una anotación en un archivo de anotación dado puede estar asociada con cualquier muestra dada de cualquier señal dada. Puede haber muchos archivos de anotaciones asociados con el mismo registro, sin embargo, se distinguen por los nombres de anotadores. El nombre de anotador atr está reservado para identificar la anotación de referencia archivos proporcionados por los desarrolladores de las bases de datos para documentar correctamente las etiquetas de latido. Se puede utilizar otros nombres de anotador (que puede contener letras, dígitos y subrayados, como para los nombres de registro) para identificar los archivos de anotaciones que se creen. Es posible que se desee adoptar la convención de que el nombre de anotador es el nombre del creador del archivo (un programa o una persona).
Las anotaciones son visibles para el usuario de la biblioteca WFDB como estructuras de C, los campos de que especifican la hora, tipo de latido, y diversas variables definidas por el usuario. La biblioteca WFDB realiza conversiones eficaces entre estas estructuras y una representación compacta utilizada para el almacenamiento de anotaciones en los archivos de anotaciones.



Instalación del Toolbox WFDB para Matlab
Se requiere una versión posterior a Matlab 7(R14,2004))
El Toolbox de herramientas para Matlab WFDB está disponible para su instalación directa a través de un Java Web Start aplicación. Esto hace que sea muy fácil de descargar e instalar el paquete, siempre y cuando se tenga una máquina virtual de Java instalada.
En el siguiente link se puede descargar la herramienta para instalación http://physioforge.csail.mit.edu/wfdbtools/wfdb-swig-matlab/wfdb-swig-matlab.jnlp.al ejecutar el archivo los pasos de instalación están resumidos brevemente a continuación.
1.    En primer lugar, se verá una ventana de seguridad pidiendo permiso para que la instalación se ejecute, lo que es necesario porque la caja de herramientas WFDB debe estar instalado en los archivos del sistema.


2.    A continuación, aparecerá un panel con una información de ingreso.Click en Next.
31.    A continuación se selecciona next hasta terminar.
Una vez terminado esto se puede ejecutar Matlab.e pueden digitar la siguiente línea de código para comprobar el correcto funcionamiento:
                                         >> demo_wfdb_tools
 
Con lo cual debe aparecer la siguiente grafica:
 

 
No se debe olvidar tener habilitada la conexión a internet.

Y por si a alguien no le funcionan los pasos anteriores, el siguiente link contiene un archivo llamado all.mat que contiene la mayoría de las señales ECG de la base de datos MIT DB
https://docs.google.com/leaf?id=0B6bDDteE_issNjczYzdhNGYtMzVkNC00OTZlLTkyZWItY2E2MDc4NWFhY2M0&hl=en_US




Referencias

[1] Dr. Ing Jesús Rubén Azor Montoya- Curso “Experimentación con Bases de Datos de señales cardiológicas. Recursos de Physionet. ”. Universidad de Mendoza - Facultad de Ingeniería,

[2]  http://physionet.org/physiotools/matlab/wfdb-swig-matlab/





jueves, 3 de noviembre de 2011



Se implemento un controlador digital embebido en un microcontrolador PSoC para el control de posición de un brazo robótico, el sistema de control es realimentado por medio de una cámara web que entrega un video en tiempo real a un programa elaborado en c++ con las librerías de opencv y el software qt creator, el video es procesado para obtener las coordenadas de ubicación del objeto e inmediatamente después son enviadas al PSoC para corregir el error, el valor de referencia son las coordenadas centrales de la imagen.
Autores: Héctor Vargas, Jairo Cuero y Carlos Gómez
Grupo de investigación MACRYPT-Unillanos-Villavicencio.Colombia

Electrocardiografo inalambrico

La señal de ECG es adquirida, acondicionada con filtros análogos y por ultimo con un filtro Notch digital implementado en un microcontrolador pic18f4550, luego es transmitida inalámbricamente con los módulos de comunicación xbee y llega a ser visualizada en labview, a su vez labview gestiona la interfaz para la comunicación por Wlan y de nuevo se visualiza la señal en un pc conectado a la red inalámbrica.

Autores: Gloria Ramírez, Héctor Vargas, Rafael Azuero, Miguel prieto y Carlos Gómez. Integrantes del Grupo de investigación MACRYPT-Unillanos-Villavicencio.Colombia


Link para descargar la interfaz en labview