Bonjour,
Je travaille sur une image binaire contenant le contour d un objet. les contours ont été obtenus par l algorithme de Canny.
Je définis un point départ et un point d arrivée sur ce contour. Mon but est de parcourir le contour du point de départ au point d arrivée, dans un sens donné (si le contour est fermé, on peut aller du départ a l arrivée dans le sens horaire ou antihoraire). Je souhaite stocker les positions des points parcourus, dans l ordre.
La méthode que j utilise est la suivante :
- On commence au point de départ.
- On regarde les 8 voisins du point courant, dans un certain ordre selon le sens de parcours désiré. On recherche les voisins blancs (valant 1).
- Le premier voisin rencontré sera le pixel courant de l itération suivante. Lors du changement de pixel, j efface l ancien pixel courant pour ne pas retourner dessus et ainsi boucles à infini.
- On s arête quand le pixel courant est le pixel d arrivée
Je rencontre plusieurs problèmes :
- Mon contour peut contenir des "trous" et dans ce cas on ne trouve plus de voisins blanc, on est obligé de s arêter. Une solution pas terrible consiste a relancer la recherche dans un voisinage plus grand.
- Dans certains cas, le parcours ne se fait pas dans le bon sens (certaines configurations du point de départ). J obtiens alors les points que je ne voulais pas obtenir !
J espère avoir été relativement clair dans mes explications
Existe il un algorithme classique permettant de pallier ces problèmes ? Ce problème me semble loin d être simple !
Merci beaucoup pour votre aide![]()
Partager