El documento describe el uso de la visión artificial y la detección de obstáculos aéreos en Android para mejorar la accesibilidad. Explica cómo Qt y Necessitas permiten el desarrollo de aplicaciones de visión en Android y describe un sistema que usa visión estéreo en teléfonos 3D para detectar objetos suspendidos y alertar a personas ciegas.
2. Contenido
1. Introducción
2. Qué es Qt?
3. Necessitas
4. Visión estéreo y Android
5. Detección de obstáculos aéreos
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
3. 1. Introducción
Aplicaciones de alto rendimiento en Android
C Nativo
NEON
Intrinsics
JDK
NDK
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
4. 2. Qué es Qt?
- Biblioteca multiplataforma de código abierto para desarrollo GUI, bajo
licencia LGPL.
Necessitas
Bodgan Vatra et al.
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
5. 2. Qué es Qt?
- Lo que hace único a Qt son sus cualidades multiplataforma
- Soporta lenguajes nativos C++ y QML y bindings Java, PERL, PHP, Phyton, …
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
6. 2. Qué es Qt?
- Además del FrameWork, Qt proporciona un completo entorno de desarrollo,
denominado QtCreator:
- Además de los servicios de documentación y ayuda de Digia, al ser un
proyecto de código abierto posee una extensa comunidad de usuarios.
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
7. 2. Qué es Qt?
-Qt proporciona un conjunto de objetos (QImage, QPixmap, QPainter…)
acelerados por hardware para el tratamiento de imágenes.
J.M. Sáez, A. Úbeda, M. Alejandro, José R. Díaz,
ECOPEZON (Análisis computerizado de ecografías del pezón), 2012
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
8. 3. Necessitas
-Variación de Qt para desarrollo de aplicaciones Android
- Incorporado recientemente a Qt 5.1 por Digia
SDK en C/C++ nativo
optimizado con NEON
JDK
NDK
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
9. 3. Necessitas
- El SDK es muy voluminoso
Ministro
Necessitas Libs
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
10. 3. Necessitas
-Ejemplo de desarrollo: TouchTheSound
- Audiograma
- Conversión a vibración
- Orientado a personas con sordera
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
11. 3. Necessitas
-Visión con Necessitas: QtMultimediaKit aún no está desarrollado
JDK
JNI
QtCameraPatch.cpp
QtCameraPatch.h
QtCameraPatch.java
-Además hay que salvar dos cuellos de botella:
- Acceso a cámara lento en Java -> buffer de cámara y procesado a JNI
- Representación lenta en pantalla -> representación directa con OpenGl ES
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
12. 4. Visión estéreo y Android
- Móviles 3D (HTC Evo 3D y LG Optimus 3D): teléfonos 3d basados
en lo que se denomina “3d sin gafas”
- Contienen dos cámaras frontales paralelas con disparo global,
rectificadas y alineadas para evitar la aberración.
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
13. 4. Visión estéreo y Android
- La pantalla se basa en parallax barrier.
- Cada ojo recibe la imagen de una
cámara, creando la ilusión de profundidad.
- La disparidad (separación de los objetos
en ambas imágenes) es inversamente
proporcional a la distancia.
L
R
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
14. 4. Visión estéreo y Android
- La pantalla se basa en parallax barrier.
- Cada ojo recibe la imagen de una
cámara, creando la ilusión de profundidad.
- La disparidad (separación de los objetos
en ambas imágenes) es inversamente
proporcional a la distancia.
- A menor disparidad mayor distancia.
L
R
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
15. 4. Visión estéreo y Android
- Para lograr separar las imágenes y que
cada ojo observe una imagen distinta, se
muestran ambas imágenes entrelazando
sus columnas (impares de L con pares
de R).
- Para ocultar la visión frontal, se utiliza
una malla microperforada.
- En modo 2D se muestra la misma
imagen dos veces.
- Por esta razón, el efecto 3D solo se
consigue desde un determinado
punto de vista
L R L R L R L R L R
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
16. 4. Visión estéreo y Android
-
Herramientas: Necessitas Qt, OpenCV, OpenGL ES, Neon
Lenguajes: Java (android), C++, C
Algoritmos:
-
Block Matching (K. Konolige) -> correspondencia
Camera Calibraton (Y. Zhang) -> calibración estéreo
Kanade-Lucas-Tomasi Tracker (KLT) -> medidas
+
=
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
17. 4. Detección de obstáculos aéreos
- Obstáculos que no pueden ser detectados
por el bastón o el perro guía, al no tener
proyección contra el suelo.
- Sistema complementario integrado
en un smartphone 3D
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
18. 4. Detección de obstáculos aéreos
- Basado en visión estéreo:
IBERAMIA (2002),
ICRA (2004)
L
CVPR (2005),
ECCV (2008)
R
3D smartphones
(2010-2011)
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
19. 4. Detección de obstáculos aéreos
Observación 3D
Proyección del
cuerpo
Dirección de
movimiento
(K-Means)
Clasificación
(Mean-Shift)
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
20. 4. Detección de obstáculos aéreos
Aerial Obstacles Testing (front-end de test)
Aerial Obstacles (front-end para ciegos)
Premio Vodafone a la Innovación
en Telecomunicaciones 2013
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec
21. Vídeos de la presentación:
http://www.youtube.com/watch?v=T9PDkLhdAuw
http://www.youtube.com/watch?v=4pEw6YPFYAQ
Más vídeos relacionados en:
http://www.youtube.com/user/jmsaez1974/videos
Contacto:
Juan Manuel Sáez (MVRLab): jmsaez@dccia.ua.es
Javier Pita (Neosistec): javierpita@neosistec.com
Visión Artificial Accesibilidad y Android
MVRLab, & Neosistec