lunes, 4 de marzo de 2013

Visión computacional Círculos

Círculos

Buenas compañeros y gente bloggera. En esta ocasión se realizo un pequeño programa que identifica el centro de un círculo. Bueno comencemos:

Para empezar  este proceso se realizó con un proceso similar al de reconocimiento de lineas. Solo que en esta ocasión se utilizaron otras formulas parecidas al de lineas.

El círculo como la linea tiene su propia forma de expresarse con ecuaciones. Las siguientes ecuaciones pueden representar a un círculo:


Donde (a,b) es el centro del círculo. X e Y son los puntos en la circunferencia en algún ángulo.

Ahora si queremos identificar el  centro es cuestión de despejar a,b que es el centro del círculo , quedando las ecuaciones de la siguiente manera:



Usando estas ecuaciones podemos calcular un suspuesto centro de tal punto en la imagen, ya sea circulo o no.


Posteriormente se hace un pequeño cálculo  para ver que punto tiene mas frecuencias de ser centro y con esto identificar el centro o punto mas factible.


Para sacar los ángulos se utilizaron los gradientes de la imagen, en anteriores posts hemos hablado de como sacarlos.

  • Para el coseno de ángulo se realiza gx / g
  • Para el seno del ángulo se realiza gy / g

Y sustituyendo el punto de X e Y sacamos el posible centro. Y reciclamos este proceso.



Aquí el código de esto:

Termina


Posteriormente se saca un pequeño umbral, sacando el promedio de los votos menos el punto mas votado, 

Se compara todos los puntos y si fue muy votado cierto punto sobrepasando al umbral, quiere decir que es un posible centro.

Aquí el código de esto

Termina

Ya para finalizar, para pintar el nuevo circulo se utilizaron las formulas originales del circulo.

Aquí el código de esto
Y esto es todo aquí unas pequeñas imagenes de esto:

Primero con un solo circulo de aproximadamente 100 pixeles de radio:


Ahora con varios círculos de aproximadamente 45 pixeles de radios:



Aquí en este detecta cuatro puntos pero al parecer dos puntos están cercas aquí existe una pequeña falla posiblemente en el umbral.


Y bueno eso es todo

Posdata: Este programa funciona si se sabe con exactitud el radio del círculo que se esta buscando.

Posdata 2: EL código nuevamente como el anterior fue basado en el código de la doctora Satu Elisa Schaeffer


1 comentario: