lunes, 18 de marzo de 2013

Herramientas, objetivos y problemas


Descubriendo el OpenCV

Una vez instaladas las herramientas básicas para el desarrollo de aplicaciones con visión artificial para Android, mi compañero y yo pasamos al estudio tanto de la visión artificial general como de qué es lo que las librerías OpenCv pueden ofrecernos de ello.

Para comenzar, vimos que OpenCv simplifica enormemente el trabajo duro y pesado de obtener imágenes y flujos continuos de vídeo en tiempo real de la cámara Android. Además, al estar implementado en Java, nos permite trabajar con cualquier tipo de cámara, venga del dispositivo que venga.

OpenCv trabaja a varios niveles, y por eso ofrece diferentes librerías, dependiendo de la funcionalidad deseada. Así, encontramos Core, para el trabajo a más bajo nivel, ImgProc, que incluye métodos para el procesado de imágenes, etc.

Mi compañero y yo apreciamos que, a pesar de ofrecer una enorme cantidad de funciones y filtros que operan sobre imágenes, debido al bajo nivel al que actuan, debíamos diseñar nosotros mismos un algoritmo de detección y reconocimiento de monedas.

Para ello, teníamos que tener en cuenta los siguientes factores:
El tamaño de las monedas que aprecia una cámara no tiene por qué ser el real, ya que dependerá de la distancia a la que el usuario tenga la cámara de las monedas, o la perspectiva que éstas tengan.

Las monedas son superficies metálicas y, por tanto, reflectantes, lo que provoca que los colores de éstas, no solo varíen en gran cantidad de un entorno a otro, sino que, debido a los reflejos, una moneda de color cobre puede ser confundida fácilmente por una de color oro, etc.

El usuario, sin quererlo, va a estar moviendo la cámara constantemente, por lo que a cada frame, la posición, tamaño y, posiblemente color de las monedas irá variando.

Los relieves de las monedas, además de ser extremadamente variados, son lo suficientemente poco marcados como para complicar enormemente una detección basada en comparación de patrones, además de la dificultad que requeriría el hecho de realizar dicha detección cuando la moneda se encuentra en perspectiva.

Así, una vez planteados nuestros objetivos, nuestras herramientas y los principales problemas a los que nos vamos a enfrentar, dedicaremos ésta semana al diseño de nuestro algoritmo

No hay comentarios:

Publicar un comentario