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