Para esta semana se encargó realizar detección de elipses. Utilicé una versión modificada de la forma en que detecto círculos. La imagen que utilicé es la siguiente:
Básicamente hago lo mismo salvo la parte donde busco áreas en base a radios. Ahora busco dos puntos dentro de los bordes que corresponden al punto más lejano y al más cercano.
Después de esto comparo las coordenadas del punto de menor distancia con las coordenadas del centro, con esta comparación obtengo la posición del elipse y así sabré como repintarlos.
Ahora puedo asignar los puntos "x" y "y" de pintado, sumando y restando las distancias máxima y mínima dependiendo de la posición del elipse, generando un elipse fantasma sobre el posible elipse.
Finalmente comparo el área ocupada por el elipse fantasma y el posible elipse, y mediante porcentajes de error decido si se trata de un elipse o si es otra figura.
La imagen final quedará así:
Donde se etiqueta a los elipses encontrados, además se marca con "*" en color rojo los puntos donde se pinta el elipse fantasma y en color rosa los puntos de los radios.
Código:
Liga al proyecto:
https://github.com/victoralex911/vision-computacional
Pues, la tarea era en sí usar el método cuerda-tangente, pero inventaste tu propio método. Funciona, por lo cual van 3 pts.
ResponderBorrar