Arxiu de la categoria: OpenCV

OpenCV: detectar cercles

Un cop ja sabem detectar les rectes, ara fem la part de detectar els cercles. El OpenCV ens dóna el cercle de millor ajustament, amb el seu centre i radi. Per tant només ens cal aplicar l’algorisme de calcular l’error d’ajustament, com s’explica en l’anterior post.

Com a fitxer d’entrada tenim un CSV amb el nom dels participants, el nom del fitxer de les rectes, i el nom del fitxer dels cercles. Com a sortida tenim el fitxer resultats.txt amb les puntuacions obtingudes per cadascun dels participants.

Així doncs, ara només cal portar-ho a la pràctica. Espero que sigui aviat.

Mesurar la rodonesa d’un cercle

Després de resoldre el problema de mesurar la linialitat d’una recta, ara toca mesurar la rodonesa d’un cercle. En la imatge hi ha una captura de la solució que hem implementat.

Hi ha bastanta literatura sobre el tema, però he preferit cercar la solució pel meu compte. Donat un cercle, openCV ens dóna ja el cercle de millor ajustament, amb el centre i el radi. La primera idea és recórrer tots els punts del cercle i fer el sumatori de totes les diferències entre el punt i el radi. El valor dóna una bona idea de com de bo és el cercle, en termes absoluts. Però si ara escalem x2 o per x0.5 el nostre cercle, els resultats seran diferents. Per tant, no he de cercar un error absolut, sinó un error relatiu.

La segona idea és mesurar àrees. Concretament, el quocient entre la diferència d’àrees entre el cercle dibuixat i el cercle aproximat, dividit per l’àrea del cercle. Com es veu en el paper, ara sí que obtenim un valor relatiu de la rodonesa del cercle. Una cosa que hem de tenir en compte és que quan sumem àrees, hem d’agafar el valor absolut de la diferència, per tal de què no hi hagi cancel·lacions.

Com més s’aproxima a 0 el valor, més bo és el cercle. Si el valor el resto de 1, aleshores el cercle perfecte val R=1, i R=0.98 no seria tan bo. Ara falta implementar-ho en el meu programa.

Tornem amb el OpenCV: detectar rectes

Després d’un temps sense fer res amb OpenCV, reprenc el projecte antic de l’aplicació de les rectes i cercles. M’explico, es tracta de fer un concurs per a nens per avaluar si són capaços de fer rectes i cercles perfectes. El problema és que ara la Maria i el Pere ja tenen 14 i 10 anys, potser ja són una mica ganàpies per això. Però cap problema, ho farem igualment amb d’altres nens més petits que tenim pel voltant.

Continuaré programant amb C++, per allò de programar més ràpid, però sóc conscient de què la mateixa aplicació la podríem fer amb Python, llenguatge amb què he programat bastant últimament.

Mostrem una captura on es veu clarament com detectem les rectes, dibuixem la recta de millor ajustament, i mostrem el valor de la correlació que ens dóna el valor de com és de bona la recta dibuixada. El següent pas serà fer el mateix amb cercles.