En nuestra búsqueda de nuevos métodos y algoritmos con los que podamos detectar monedas se nos ocurrió la idea que, debido al relieve que estas tienen, y al color diferenciado con el entorno, podríamos detectar las monedas por su silueta.
Para ello, hicimos lo siguiente:
OpenCv permite obtener frame por frame los flujos de video provenientes de una cámara de un dispositivo android.
Sin embargo, nos dimos cuenta de que aplicando directamente métodos de detección de contornos sobre dispositivos android, no nos ofrecía un rendimiento adecuado. Por ello, antes de aplicarles dichos métodos, realizamos el siguiente preprocesado:
OpenCv, por defecto, nos devuelve una matriz de 3 canales en RGB, con toda la información proveniente de la cámara a color. Sobre ella, aplicamos una transformación a blanco y negro con el método ImgProc, para acelerar el procesado posterior.
Tras él, convolucionamos con un filtro gaussiano de 3x3 para eliminar parte del ruido en el frame, y, una vez hecho esto, le pasamos un algoritmo de detección de contornos, en un principio con un umbral estándar.
Una vez preprocesado el frame, lo vamos a pasar por un algoritmo de obtención de contornos y siluetas, concretamente el algoritmo Canny.
Así, lo que finalmente obtenemos es una imagen en blanco y negro, en el que todos los contornos vienen marcados en blanco.
Una vez probado, podemos analizar los resultados obtenidos:
Parece ser bastante fiable a la hora de detectar contornos, sobre todo en cuanto a la forma que tienen estos últimos, que son en gran medida más redondeados que los obtenidos mediante la detección por colores.
Sin embargo, asociados a éste método nos encontramos numerosos problemas:
Lo obtenido de este algoritmo son de nuevo matrices, imágenes, sobre las que deberíamos aplicar un procesado posterior en busca de formas elípticas.
Las monedas aparecen a menudo con diferentes contornos concéntricos, lo que dificultaría escoger cuál de todos ellos se corresponde con el tamaño real (con el determinado por el contorno exterior) y cual no.
Por factores de luminosidad, nos encontramos de nuevo que los colores cobrizos de las monedas de 1, 2 y 5 céntimos se diferecian tan poco del color de la mano que provoca que los contornos no figuren completos sino a trozos (solo aparecen algunos sectores)
Así, una vez terminado el análisis de los resultados de la aplicación de este método, mi compañero y yo pasaremos a la discusión de su inclusión o no en nuestro algoritmo principal, y, de ser así, como lo llevaremos a cabo.
No hay comentarios:
Publicar un comentario