Primero que nada, hice una rutina en la cual podamos ir cambiando el radio y obtengamos los votos de cada radio aumentado, de manera que estamos utilizando la transformada de Hough de una forma canónica, como la siguiente imagen.
Tomada de las diapositivas Rochester Institute of Technology |
Por lo que primero que nada genero una lista con todos los centros posibles y con todos los radios posibles, en donde yo pongo los radios mínimos y máximos para luego adivinar cual es el radio que queremos detectar.
Luego de tener todos los centros, ahora hago repeticiones de radios disponibles hasta que concuerde con los bordes detectados con la mascara laplaciana, de manera que podamos obtener los siguientes resultados.
Este es el código.
Estos son los resultados.
Como pueden ver, mi código no funciona bien, estuve moviéndole a que estuviera una combinación entre el número de bordes a detectar y la cantidad de círculos, teniendo resultados no favorables, nada más detectando un solo circulo, aunque si detecta el radio desconocido, no calcula varios.
Como pueden ver en la ultima imagen si me detecto en la mayoría de los círculos, no se si este bien.
Minimo tamaño de borde |
Maximo tamaño de borde |
Espero que si alguien me puede comentar cual es la manera de mejorarlo o que debería de haber hecho.
El rango de posibles círculos está medio arbitrario. 8 pts.
ResponderEliminar