Probar la viabilidad de la Visión por Computador en dispositivos móviles.
Dificultades: Recursos limitados: memoria y capacidad de computación reducida.
¿Cómo se consiguen los objetivos?
Se estudia el rendimiento de detectores corporales en un iPhone 4.
Se crea una aplicación directa de esta tecnología en este dispositivo.
Detectores Corporales Se opta por estudiar uno de los algoritmos del estado del arte de la detección de objetos: el algoritmo de Viola-Jones. En lugar de desarrollar una implementación específica para el dispositivo, se decide usar la implementación incluida en OpenCV, una librería de código abierto desarrollada por Intel, que recoge diversas funcionalidades propias de la visión por computador.
Herramientas necesarias para el proyecto
Entorno de desarrollo: Xcode. Librería OpenCV: Es necesaria su compilación previa para este entorno. Lenguajes: Objective-C: Necesario para interactuar con Cocoa Touch, la API de iPhone. C++: Necesario para interactuar con OpenCV.
Proceso de Detección (1) Se crea el detector Se obtiene la imagen. 2 orígenes posibles: vídeo o cámara. Se transforma la imagen al formato de imagen OpenCV Se convierte a escala de grises Detección a través de OpenCV Tratamiento de los resultados
Proceso de Detección (2)
Proceso de Detección (3)
Únicos puntos a optimizar: Conversión al formato OpenCV. Se optimiza el proceso para que no se dupliquen datos en memoria. Conversión a escala de grises. Se usa el motor NEON SIMD (capaz de aplicar una misma instrucción a múltiples datos)
Análisis de los detectores (1) Para que todos los detectores se apliquen bajo unas mismas condiciones se graba una secuencia de vídeo sobre la que se medirá su rendimiento.
Análisis de los detectores (2) Se crea aplicación que aplica los detectores sobre la secuencia de vídeo.
Análisis de los detectores (3) En la velocidad de procesado influye en gran medida el tamaño de la subventana.
Hay que tener en cuenta que la API de tratamiento de vídeo no está diseñada para su tratamiento en tiempo real, por lo que el tiempo de procesado es aún mayor.
Análisis de los detectores (4) Se obtienen los siguientes resultados:
Aplicación Directa (1) Se crea una aplicación capaz de realizar una fotografía cuando se detecta un determinado número de personas en la imagen captada por la cámara del dispositivo.
Aplicación Directa (2) La aplicación procesa las imágenes capturadas y cálcula el número de caras detectadas en ella. Si éste es superior al número de personas definidas por el usuario, se lanza la fotografía.
Conclusiones El rendimiento ofrecido es mejorable pero suficiente para ser aplicado en este tipo de dispositivos.
Es probable que una implementación específica del algoritmo mejorara muchísimo el rendimiento.