Como ya se comentó en el último post, mi compañero y yo nos enfrentábamos a una gran cantidad de problemas que complicarían la detección y
reconocimiento de las diferentes monedas. Así, hasta llegar al diseño del
algoritmo final, pasaremos por diferentes etapas de diseño y prueba en nuestro
dispositivo Android, con el fin de ir testeando y mejorando nuestro algoritmo,
hasta llegar a lo que creamos que es nuestro algoritmo de detección final.
Lo primero que hemos pensado es en el uso de un algoritmo de detección
de contornos mediante el color.
Lo que necesitamos es que, a partir de una
superficie mínima, a partir de la cual no consideraremos que es una moneda, por
ser tan pequeña, ir testando píxel a píxel el color de los vecinos del píxel
inicial. Si éstos se encuentran dentro del rango de colores que deseamos,
incluirlos en la superficie, y testear sus vecinos. Así, se continuaría hasta
que los vecinos fueran de diferente color, y se marcaría esa separación como
contorno de los objetos.
Dicha función existe en OpenCv y es la que usaremos para una detección
inicial de contornos.
Sin embargo, dicho algoritmo es insuficiente por sí solo, por las
siguientes razones:
Los colores de las monedas cambian tanto de un entorno a otro, en
función de la luminosidad, que hacen que a menudo no sea capaz de detectar una
moneda.
Debido al parecido del color cobre con la mano, si ampliamos el rango de
los tonos de cobre que aceptamos, la mano se introduce dentro de los contornos.
A causa de los reflejos existentes sobre la moneda los contornos no
quedan completos, sino recortados, exactamente sobre la zona de la moneda que
no está reflejada por una fuente intensa de luz.
Así, como se puede apreciar, suficientes problemas nos han surgido con
éste método como para que nos obligue a buscar, o bien alternativas, o bien
otros métodos de detección que apoyen el método comentado.
No hay comentarios:
Publicar un comentario