Étant donné un ensemble de points (2D) soit, nuage de points (PC), la question est d'un robust
, accurate
et computing-friendly
méthode pour trouver des cercles (ou ellipses en version avancée).
L'idée intuitive est d'utiliser Brute-Force Search sur tous les points possibles (comme centre) {infini!} Et les rayons (encore infini!). C'est ultra-extrêmement lent et inefficace.
Comme démontré ci-dessous, chaque cercle ajusté serait classé en fonction du nombre de points ( nn
) positionnés sur la circonférence du cercle à une distance inférieure à un seuil ( t
). Il faut derr
donc présenter une distance moyenne.
Sous une forme avancée, les ellipses sont intéressantes à ajuster.
Des idées, des remue-méninges, des expériences, des commentaires?
edge-detection
local-features
point-cloud
hough-transform
Développeur
la source
la source
Réponses:
La meilleure idée qui tente exactement de résoudre ce problème est Hough Transform .
Fondamentalement, le signal dans l'espace hough sera
r, x, y
des coordonnées. Icir
représente le rayon et lex,y
centre. Chaque point peut appartenir à un ou plusieurs cercles. Ainsi , dans le plan Hough passer par tous les milieux possibles où ce point pourrait appartenir et faire juste un +1. Ce n'est pas une recherche, juste une collection.Maintenant, si un vrai cercle existe, tant de points s'ajouteront et le score d'un tel
r, x, y
sera beaucoup plus élevé que tous les autres. La sélection d'un tel point vous permettra de choisir les bons cercles.Voici un chemin classique du papier en 1971 (avant ma naissance!) Qui a inventé ce concept.
Pour le tutoriel, je suggère des références ci-dessous:
Spécifiquement pour la détection de cercle, vous pouvez vous référer à ceci ci-dessous:
Ces méthodes sont très efficaces et très faciles à utiliser.
la source