Los pasos para lograr esta actividad son sencillos:
- Se calculan los gradientes para cada píxel en la imagen, usando las técnicas empleadas en detección de bordes. Utilizando las máscaras de Sobel, ya que al parecer estas dan mejores resultados para este tipo de trabajo sobre las de Prewitt.
- Después se calculan los valores de cos y sen de theta utilizando los valores de los gradientes, sin necesariamente calcular el valor del angulo, esto por:
- Ya con lo anterior se procede a calcular los centros que puede contener la imagen con las siguientes formulas:
Los valores obtenidos en los posibles centros se van almacenan, y se lleva una especie de conteo de que tan frecuente puede ser un centro, los más frecuentes es más posible que sean centros verdaderos, se usa un pequeño umbral para mejorar los resultados y para pintar los círculos solo se checa si se encuentra en la lista de los más frecuentes(que previamente se analizó con el umbral para sacar los no tan frecuentes).
El código:
Los resultados:
Los resultados no fueron los esperados ya que no identifica correctamente la posición de los círculos, además por cierta razón identifica todos los círculos, cuando solo debería de identificar uno, el de la esquina inferior derecha que es el cuenta con el radio de 30 que se toma como parámetro al ejecutar el código.
Enlace a mi git.
_________________________________________________________________________________Referencias:
Mayor modularidad en el código facilitaría su reuso. Algo sí hace ;) Se nota particularmente que detecta ambos el interior y el exterior de los círculos gruesos. Quizá para el lab ya te salga con perfección. 4 pts.
ResponderEliminar