Transcript
Page 1: UTN-FRBA, Buenos Aires, Argentina ... · PDF fileUTN-FRBA, Buenos Aires, Argentina ... (lentes especiales, lupas, ... rápida adaptación a nuevos dispositivos embebidos o

85

www.sase.com.arwww.sase.com.ar2 al 4 de marzo de 20112 al 4 de marzo de 2011UTN­FRBA, Buenos Aires, ArgentinaUTN­FRBA, Buenos Aires, Argentina

Dispositivo de rehabilitación visual basado en

sistemas embebidos del tipo ARM.

Marcelo M. Raponi

Centro de Investigaciones en Láseres y Aplicaciones

CITEFA-CONICET

Buenos Aires, Argentina

[email protected]

Rodolfo O. Bonnin

Business Vision S.A.

Hipólito Yrigoyen 1530, Piso 7

Ciudad Autónoma de Buenos Aires, Argentina

[email protected]

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.

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

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%).

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).

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

Page 2: UTN-FRBA, Buenos Aires, Argentina ... · PDF fileUTN-FRBA, Buenos Aires, Argentina ... (lentes especiales, lupas, ... rápida adaptación a nuevos dispositivos embebidos o

86

www.sase.com.arwww.sase.com.ar2 al 4 de marzo de 20112 al 4 de marzo de 2011UTN­FRBA, Buenos Aires, ArgentinaUTN­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).

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. 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”

(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.

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).

Figura 3. Sistema embebido (placa BeagleBoard) y su conexión con el

módulo de adquisición de video.

Page 3: UTN-FRBA, Buenos Aires, Argentina ... · PDF fileUTN-FRBA, Buenos Aires, Argentina ... (lentes especiales, lupas, ... rápida adaptación a nuevos dispositivos embebidos o

87

www.sase.com.arwww.sase.com.ar2 al 4 de marzo de 20112 al 4 de marzo de 2011UTN­FRBA, Buenos Aires, ArgentinaUTN­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. 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.

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.

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.

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,

procesamiento y visualización de resultados, y la interacción de los mismos.

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:

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;

// 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.

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.

Page 4: UTN-FRBA, Buenos Aires, Argentina ... · PDF fileUTN-FRBA, Buenos Aires, Argentina ... (lentes especiales, lupas, ... rápida adaptación a nuevos dispositivos embebidos o

88

www.sase.com.arwww.sase.com.ar2 al 4 de marzo de 20112 al 4 de marzo de 2011UTN­FRBA, Buenos Aires, ArgentinaUTN­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.

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.

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.

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:

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] 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.

[2] Gerald Coley. “BeagleBoard System Reference Manual Rev C4, Revision 0.0” [online]. http://beagleboard.org/static/BBSRM_latest.pdf, December 15, 2009.

[3] Gary Bradski y Adrian Kaebler. “Learning OpenCV”, Ed. O'Reilly Media Inc., ISBN 978-0-596-51613-0, 2008.

[4] http://opencv.willowgarage.com/wiki OpenCV Wiki Welcome. Fecha de acceso: 26 de Agosto de 2010.

[5] http://qt.nokia.com/downloads/sdk-windows-cpp. Nokia Corporation. Fecha de acceso: 26 de septiembre de 2010.

[6] http://www.angstrom-distribution.org/ The Ångström Distribution Embedded power. Fecha de acceso: 28 de Agosto de 2010.

[7] http://opencv.willowgarage.com/documentation/cpp/highgui._high-level_gui_and_media_io.html Opencv v2.1 documentation. Fecha de acceso: 15 de Septiembre de 2010.

[8] J. Canny. A Computational Approach to Edge Detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, PAMI-8(6):679–698, November 1986.


Top Related