Descargar el artículo completo

Transcripción

Descargar el artículo completo
www.sase.com.ar
2 al 4 de marzo de 2011
UTN­FRBA, Buenos Aires, Argentina
Dispositivo de rehabilitación visual basado en
sistemas embebidos del tipo ARM.
Marcelo M. Raponi
Rodolfo O. Bonnin
Centro de Investigaciones en Láseres y Aplicaciones
CITEFA-CONICET
Buenos Aires, Argentina
[email protected]
Business Vision S.A.
Hipólito Yrigoyen 1530, Piso 7
Ciudad Autónoma de Buenos Aires, Argentina
[email protected]
millones menores de 15 años. Las cataratas son la principal
causa de ceguera (47,8%), seguida por la degeneración macular
asociada a la edad (8,7%) y la retinopatía diabética (4,8%).
Resumen- En el trabajo se describe el diseño y desarrollo de un
sistema embebido basado en tecnología ARM® Cortex™ A8
(placa BeagleBoard), para adquirir y procesar en tiempo real
señales de video provenientes de una mini-cámara portátil, y
generar un patrón de estimulación visual que brinde un cierto
grado de rehabilitación a personas con baja visión. Para la
implementación de la plataforma se utilizó el IDE Qt-creator y
librerías open-source (Qt, Highgui y OpenCV). El framework
permite adquirir señales de video, aplicar filtros espaciales,
modificar brillo y contraste, hacer zoom, invertir colores, entre
otras operaciones. El patrón visual final es enviado a un módulo
de visualización compuesto por dos mini-display LCD TFT
gráficos montados en las lentes de unos anteojos.
En el área de la rehabilitación visual generalmente se
trabaja en monocularidad, es decir, se utiliza el mejor ojo del
paciente que siempre ve menos de 3/10. Si ambos ojos ven más
de 1/10 (y menos de 3/10) se emplea una corrección de +8 o
+10 dioptrías con prismas, con el fin de compensar la gran
convergencia que se necesitaría para enfocar un objeto ubicado
a una distancia de 10 o 12.5 cm. En la mayoría de los casos, el
ojo más deteriorado afecta - por ser el ojo director - la
percepción del mundo exterior, y el cerebro debe aprender a
desechar dicha información. Una manera de colaborar con el
cerebro es colocar un vidrio oscuro o esmerilado frente a dicho
ojo, impidiendo que reciba estímulos de luz. Por otro lado, no
existen indicaciones de ayudas ópticas/electrónicas para
patologías especificas. Un persona con baja visión tiene
disminuida la sensibilidad de percepción (capacidad de
distinguir detalles) debido a diversas causas, por lo cual,
cualquier dispositivo de rehabilitación, deberá sencillamente
magnificar el estimulo visual (ver Fig. 1).
Palabras claves- BeagleBoard; sistemas embebidos; baja visión;
OpenCV.
I.
INTRODUCCIÓN
El sentido de la visión es fundamental para realizar las
múltiples tareas que cotidianamente llevamos a cabo los seres
humanos. Actividades tan habituales como cruzar una calle,
tomar un colectivo, mirar televisión, leer el diario, entre otras
tantas, se ven seriamente afectadas por lesiones y patologías
oculares que producen ceguera parcial o completa en millones
de seres humanos. Existe un gran número de personas que
presentan diferentes grados de deterioro visual sin llegar a ser
completamente ciegos, a los cuales se los clasifica como
pacientes con baja visión o visión subnormal. Para definir el
término baja visión de una forma amplia, es necesario tener en
cuenta no sólo el déficit visual sino también la calidad visual.
Una patología ocular permanente debe ser valorada en cuanto
afecta al estado psíquico, fisiológico y social del individuo
respecto a una vida de relación. La Organización Mundial de la
Salud (OMS) define la baja visión como: "Pérdida de agudeza
visual y/o campo visual, que incapacita para la realización de
tareas de la vida diaria, incluso tras un tratamiento y/o
corrección refractiva convencional. La agudeza visual debe ser
igual o inferior a 0.3 (30% de visión) y el campo visual menor
o igual a 20º. La pérdida afecta a los dos ojos, pero aún queda
resto visual útil”. Una persona es legalmente ciega cuando su
agudeza visual es menor o igual a 0.1 (10% de visión) y su
campo visual inferior a 10º, en el mejor de los ojos. Según
estadísticas mundiales existirían alrededor de 161 millones de
personas con deficiencia visual, de los cuales 124 millones
tendrían baja visión y 37 millones serían ciegos, incluyendo 1,4
Figura 1. Dispositivos electrónicos empleados por pacientes con baja visión.
Actualmente, mediante el empleo de elementos ópticos
(lentes especiales, lupas, telelupas) y sistemas electrónicos
85
www.sase.com.ar
2 al 4 de marzo de 2011
UTN­FRBA, Buenos Aires, Argentina
(magnificadores de imágenes, circuito cerrado de TV, etc.) es
posible brindar a dichos pacientes, un cierto grado
rehabilitación visual. En el mercado nacional e internacional
existen ayudas para visión cercana (ej. leer o escribir) y visión
lejana (ver TV, mirar una pizarra, observar carteles en la vía
pública, etc.), aunque el acceso a estos dispositivos es
generalmente restrictivo debido a su alto costo y no siempre
brindan un beneficio sustancial al paciente. Los precios de las
ayudas electrónicas pueden variar desde unos U$S 300 hasta
más de U$S 3000. El dispositivo que presentamos en este
trabajo (aún en etapa de desarrollo) tiene un costo de
fabricación de aproximadamente U$S 500 (incluye anteojos
con display y mini-cámara, unidad de control, batería, cables y
componentes varios). Estimamos que el precio final de venta
del sistema será de unos U$S 1000 (la tercera parte del costo de
nuestro principal competidor: www.vuzix.com).
(sobre la diagonal), distancia interpupilar de 63.5 mm y tamaño
de imagen virtual de aproximadamente 35” a 2 metros de
distancia. El consumo de energía del módulo visualizador es
menor a 450 mW y puede procesar señales de video tipo NTSC
o PAL estándar de manera automática.
A continuación se presenta el diseño y desarrollo de un
dispositivo biomédico de rehabilitación visual, basado en
tecnología embebida de última generación y algoritmos de
procesamiento de imágenes digitales, capaz de mejorar la
calidad de vida de personas con disfunciones visuales severas.
El sistema - reconfigurable, portátil y de bajo costo - permite
adquirir y procesar imágenes en tiempo real, efectuar un realce
selectivo de la información visual y mapear dicha información
en un patrón de estimulación apropiado. El software se basa en
plataformas open-source lo que garantiza su portabilidad e
interoperabilidad con otros sistemas y hardware subyacente, y
es lo suficientemente modularizado como para permitir una
rápida adaptación a nuevos dispositivos embebidos o
bibliotecas, como así también un adecuado mantenimiento en
el caso que se requieran rediseños y/o adicionar nuevas
funcionalidades.
II.
Figura 2. Modulo de adquisición (superior) y de visualización (inferior) del
prototipo desarrollado.
B. Módulo de procesamiento basado en BeagleBoard
Para la implementación del prototipo hemos seleccionado
la placa de desarrollo BeagleBoard, la cual es un pequeño y
potente ordenador equipado con un procesador OMAP 3 para
aplicaciones multimedia, basado en la arquitectura dual core
optimizada para sistemas operativos eficientes, como Linux.
Posee un núcleo de procesamiento ARM Cortex™ A8 de
arquitectura ARMv7, con frecuencia de trabajo de 600 MHz,
256 Mb de memoria RAM, un DSP C64x+ y un acelerador
gráfico. La placa tiene conectividad con diversos periféricos:
webcam, LCD, memorias SD, etc. (ver Fig. 3).
IMPLEMENTACIÓN DEL HARDWARE
La implementación física del dispositivo consta de tres
componentes: un módulo de adquisición de señales de video
(con un subsistema de captura de imágenes incorporado y
salida USB), un módulo de visualización de señal de video
procesada, y un módulo de procesamiento basado en tecnología
ARM (Advanced RISC Machines) Cortex™ A8 (placa
BeagleBoard) [1,2].
A. Módulos de adquisición y visualización de imágenes
El módulo encargado de la adquisición de las imágenes
consiste en un soporte (anteojos) que posee un dispositivo de
captura integrado (ver Fig. 2). El sensor y su controlador se
encuentran montados en la estructura de los lentes y se
vinculan con la unidad de control vía un puerto USB 2.0. El
controlador de video (Sunplus SPCA1528A) soporta sensores
de 5 Mega píxeles, grabación de audio y video, y salida de TV.
Por medio del driver de Linux es posible seleccionar diferentes
resoluciones de video: 640x480, 320x240 y 176x144 píxeles.
La mini-cámara incorporada en los lentes permite adquirir
imágenes de buena calidad aún en ambientes con baja
iluminación. La duración de su batería es de aproximadamente
4 -5 hs. La señal de video luego de ser procesada por la
BeagleBoard, es enviada a un módulo de visualización
compuesto por dos display LCD TFT gráficos, con una
resolución de 320x240 píxeles (QVGA), un tamaño de 0.24”
Figura 3. Sistema embebido (placa BeagleBoard) y su conexión con el
módulo de adquisición de video.
86
www.sase.com.ar
2 al 4 de marzo de 2011
UTN­FRBA, Buenos Aires, Argentina
Se optó por la tecnología ARM principalmente por su
rápida puesta en marcha, la posibilidad de utilizar las librerías
OpenCV (Open Source Computer Vision Library), el alto
grado de conectividad, su portabilidad, la capacidad de cálculo
del DSP y la aceleradora de gráficos, entre otras características
sobresalientes
III.
procesamiento y visualización de resultados, y la interacción de
los mismos.
ARQUITECTURA DE LA SOLUCIÓN DE SOFTWARE
La solución consiste básicamente en una aplicación
desarrollada en C y C++, empleando como backend la
estructura de datos y los algoritmos de procesamiento propios
de OpenCV [3-4], y como frontend una GUI (Graphical User
Interface) diseñada en base a librerías Qt [5]. El backend
realiza las tareas preliminares de adquisición y adaptación de
las señales a las restricciones impuestas por el transductor. Está
conformado por un stack de software cuyos componentes
principales son el kernel de Linux, la librería OpenCV y V4L
para la captura de vídeo. OpenCV es una librería de
programación especialmente diseñada para tratamiento de
imágenes, captura, procesamiento y visualización de señales de
video en tiempo real, segmentación y reconocimiento de
objetos y gestos, seguimiento de objetos, robótica, biométrica,
seguridad, entre otras aplicaciones. Es de código abierto,
multiplataforma, de fácil uso y en continua evolución. Fue
desarrollada originalmente por Intel para abordar problemas en
el área de la visión por computador. Actualmente es un
proyecto libre publicado bajo licencia BSD (Berkeley Software
Distribution), lo que permite su uso tanto para aplicaciones
comerciales como no comerciales.
Figura 4. Diagrama en bloques del procesamiento realizado por la plataforma
embebida
C. Adquisición de datos
La adquisición de imágenes se realiza por medio de la
librería auxiliar de OpenCV, highgui [7], que consiste en un
toolkit gráfico portable, capaz de trabajar con dispositivos de
captura, salida y archivos de video, y provee de herramientas
sencillas de GUI (las cuales no son utilizadas en el prototipo,
siendo cubiertas por la librería Qt). A continuación
transcribiremos algunas líneas del código, donde se pueden
apreciar las estructuras de datos y funciones esenciales
empleadas para la adquisición de imágenes:
V4L es una interfaz de kernel para video captura y drivers
de salida, incluyendo sintonizadores de radio y sistemas RDS
(Radio Data System). Está integrado al kernel en la versión 2.6,
y tiene un árbol de desarrollo adaptado a versiones anteriores
del kernel. Para el soporte del dispositivo de captura de
entrada, una versión actual de los drivers (gspca_spca1548)
tuvo que ser modificada para ser soportada por la distribución
de Linux (Angström). A continuación se explicará cada uno de
los bloques constitutivo de la plataforma.
capture = new cv::VideoCapture ( int source ) ;
// Crea un objeto de clase VideoCapture que contendrá los
frames y metadata de la imagen a capturar.
if ( !capture->isOpened ( ) ) return;
A. Sistema Operativo
La distribución seleccionada (Angström) [6] está diseñada
específicamente para sistemas embebidos, y el kernel Linux es
el oficial de la distribución 2.6.32, con parches desarrollados
para el soporte de diversos sistemas embebidos. El kernel debió
ser compilado utilizando el toolchain OpenEmbedded para
incluir el soporte de la cámara del módulo de adquisición,
debido a que el soporte oficial fue lanzado a posteriori de la
fecha de release del kernel oficial. Para esto se tuvo que hacer
un backport de una variable para el módulo genérico gspca
(soporte de un número de webcams de bajo costo), y se adaptó
el driver gspca_1528 para el uso de una función legacy de
driver genérico. Dicho driver fue compilado directamente en el
nuevo kernel, que será utilizado en las pruebas finales.
// Comprueba la correcta inicialización del dispositivo de
captura;
capture->grab( );
capture->retrieve ( *firstImage , 0 ) ;
//Captura un frame y coloca valores y metadatos en la matriz
D. Procesamiento de los datos
El procesamiento de las imágenes se realiza mediante las
siguientes rutinas:
Ajuste de brillo/contraste: se realiza por medio de la
función convertScaleAbs, la cual posee una variable alpha que
modifica la relación de escala de los valores, y beta, que genera
un bias para los valores de la imagen.
B. Esquema general de la aplicación de software
En la Fig. 4 se presenta un esquema general de la
organización funcional del software implementado. Se pueden
observar las funciones principales de adquisición,
Detección de bordes: se utiliza el algoritmo de Canny [8],
incluido en OpenCV, con un primer umbral del procedimiento
de histéresis de 50, un segundo umbral de 300, una apertura de
3 y sin gradiente L2.
87
www.sase.com.ar
2 al 4 de marzo de 2011
UTN­FRBA, Buenos Aires, Argentina
Inversión de colores: se aplica la función bitwise_not a
cada elemento del miembro data del objeto de clase Mat.
Adaptación de estructuras de datos: para posibilitar la
adaptación entre las clase cv::Mat y QImage de Qt, fue
necesario realizar un mapeado entre las estructuras de datos
raw de OpenCV y de QtImage, con una llamada del tipo:
E. Interfaz gráfica
Mediante una interfaz visual amigable, el usuario puede
seleccionar diferentes operaciones a realizar sobre la señal de
video capturada, entre los cuales podemos mencionar: zoom,
detección de bordes, modificación de brillo y contraste, imagen
complementaria, entre otras que se incorporarán en un futuro.
La interfaz fue diseñada teniendo en cuenta la maximización
del espacio visible debido a que la imagen será destinada
finalmente a los displays, y una disrupción excesiva de los
controles no es aconsejable. Consiste en un módulo de
visualización de resultados/modificación de parámetros por
medio de la librería Qt. En el mismo se puede elegir el origen
de los datos, los algoritmos a aplicar y el nivel de zoom. En la
Fig. 5 se presenta el diseño de la interfaz implementada,
pudiendo observarse sus comandos localizados en una barra
desplegable.
Qim_dest = QImage ( ( const uchar* ) im_ini -> data , im_ini > cols , im_ini -> rows , QImage::Format_RGB888 ) ;
Donde Qim_dest es el objeto QImage destino, y im_ini es
un objeto del tipo cv::Mat, del que se copiaran los valores RGB
byte a byte.
IV.
CONCLUSIONES
El prototipo desarrollado permite la adquisición de señales
de video en tiempo real y efectuar un realce selectivo de la
información visual. Mediante una sencilla interfaz
especialmente diseñada, es posible seleccionar diferentes
procesamientos digitales que se aplicarán a los respectivos
cuadros de la señal entrante. La plataforma implementada es
portátil, de bajo consumo y puede utilizarse para mejorar
diversas tareas de la vida cotidiana que realizan los pacientes
con baja visión.
AGRADECIMIENTOS
Los autores agradecen a todos aquellos que hicieron posible
la concreción del diseño del primer prototipo de baja visión.
REFERENCIAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
Figura 5. Prototipo de interfaz visual. Se observa un texto original y el
resultante de aplicar zoom e inversión de colores.
En la figura anterior se puede observar el control de brillo,
basado en un spinbox con botones adicionales que modifican
los valores, adaptados a la operación de un touchscreen.
Similar comportamiento posee el control de contraste. También
se visualizan los controles de zoom (in y out) que operan sobre
el widget por medio de método GraphicsView::scale (razón de
aspecto horizontal, razón de aspecto vertical) . Los botones C y
V, permiten elegir la fuente de los frames, el primero identifica
la cámara, y el segundo un archivo de video, que se elegirá por
medio de un diálogo de selección de archivo.
88
ARM, descripción del procesador Cortex A8 [online]
http://www.arm.com/products/processors/cortex-a/cortex-a8.php Fecha
de acceso: 24 de septiembre de 2010.
Gerald Coley. “BeagleBoard System Reference Manual Rev C4,
Revision 0.0” [online]. http://beagleboard.org/static/BBSRM_latest.pdf,
December 15, 2009.
Gary Bradski y Adrian Kaebler. “Learning OpenCV”, Ed. O'Reilly
Media Inc., ISBN 978-0-596-51613-0, 2008.
http://opencv.willowgarage.com/wiki OpenCV Wiki Welcome. Fecha
de acceso: 26 de Agosto de 2010.
http://qt.nokia.com/downloads/sdk-windows-cpp. Nokia Corporation.
Fecha de acceso: 26 de septiembre de 2010.
http://www.angstrom-distribution.org/ The
Ångström
Distribution
Embedded power. Fecha de acceso: 28 de Agosto de 2010.
http://opencv.willowgarage.com/documentation/cpp/highgui._highlevel_gui_and_media_io.html Opencv v2.1 documentation. Fecha de
acceso: 15 de Septiembre de 2010.
J. Canny. A Computational Approach to Edge Detection. IEEE
Transactions on Pattern Analysis and Machine Intelligence, PAMI8(6):679–698, November 1986.

Documentos relacionados

Visión - dccia

Visión - dccia Scipy: librerías de alto nivel Matplotlib: visualización, gráficas Open Source y multi-plataforma Librerías bastante extendidas y probadas en la comunidad científica

Más detalles