Archivo de la categoría: OpenCV

OpenCV: detectar círculos

Una vez ya sabemos detectar las rectas, ahora vamos a la parte de detectar los círculos. OpenCV nos da el círculo de mejor ajuste, con su centro y su radio. Por sólo nos falta aplicar el algoritmo de calcular el error de ajuste, como se explica en el anterior post.

Como fichero de entrada tenemos un CSV con los nombres de los participantes, el nombre del fichero de las rectas, y el nombre del fichero de los círculos. Como salida tenemos el fichero resultados.txt con las puntuaciones obtenidas por cada uno de los participantes.

Así pues, ahora sólo falta llevarlo a la práctica. Espero que sea pronto.

Medir la rodondez de un círculo

Después de resolver el problema de medir la linearidad de una recta, ahora toca medir la redondez de un círculo. En la imagen hay una captura de la solución que hemos implementado.

Hay bastante literatura sobre el tema, pero he preferido buscar la solución por mi cuenta. Dado un círculo, openCV ya nos da el círculo de mejor ajuste, con el centre y el radio. La primera idea es recorrer todos los puntos del círculo y hacer el sumatorio de todas las diferencias entre el punto y el radio. El valor da una buena idea de cómo de bueno es el círculo, en términos absolutos. Pero si ahora escalamos x2 o por x0.5 nuestro círculo, los resultados serán diferentes. Por tanto, no he de buscar un error absoluto, sino un error relativo.

La segunda idea es medir áreas. Concretamente, el cociente entre la diferencia de áreas del círculo dibujado y el círculo aproximado, dividido por el área del círculo. Como se ve en el papel, ahora sí que obtenemos un valor relativo de la rodondez del círculo. Una cosa que hemos de tener en cuenta es que cuando sumamos áreas, hay que coger el valor absoluto de la diferencia, para que no haya cancelaciones.

Cuanto más se aproxima a 0 el valor, más bueno es el círculo. Si el valor lo resto de 1, entonces el círculo perfecto valdrá R=1, y R=0.98 no sería tan bueno. Ahora falta implementarlo en mi programa.

Volvemos a la carga con OpenCV: detectar rectas

Después de un tiempo sin hacer nada con OpenCV, retomamos el proyecto antiguo de la aplicación de las rectas y círculos. Me explico, se trata de hacer un concurso para niños para evaluar si son capaces de hacer rectas y círculos perfectos. El problema es que ahora Maria y Pere ya tienen 14 iy10 anys, quizás ya son un poco mayores para esto. Pero ningún problema, lo haremos igualmente con otros niños más peques que tenemos por aquí.

Continuaré programando en C++, por aquello de programar más rápido, pero soy consciente de que la misma aplicación la podríamos hacer en Python, lenguaje con que he programado bastante últimamente.

Mostramos una captura donde se ve claramente cómo detectamos las rectas, dibujamos la recta de mejor ajuste, y mostramos el valor de la correlación que nos da el valor de como es de buena la recta dibujada. El siguiente paso será hacer los mismo con círculos.