PANDORE Version 6 GREYC-IMAGE

phoughlines



Détection et localisation des segments de droite dans une image de contours par la transformée de Hough.


Synopsis

phoughlines lines minangle maxangle linethickness [-m mask] [im_in|-] [im_out|-]

Description

L'opérateur phoughlines permet de détecter des droites sur une image de contours. L'image d'entrée im_in doit être une image de contours pour être exploitable par l'opérateur. L'image de sortie im_out contient les droites correspondant aux segments de droites détectés dans l'image initiale im_in.

Principe de la transformée de Hough :
La méthode de Hough permet de reconnaître des équations géométriques dans une image. Pour cela, on utilise un accumulateur qu'on appelle l'"espace de Hough" qui est un tableau qui a autant de dimensions que l'équation de la forme géométrique recherchée a de paramètres.

Pour détecter les droites, on considère l'équation générale des droites :

   rho = x*cos(theta) + y*sin(theta).

où rho est la perpendiculaire à l'origine et theta l'angle avec la normale.

On parcourt alors chaque point du contour de l'image et on recherche pour ce point toutes les équations de droites auxquelles peut appartenir ce point. Les paramètres de l'équation donnent une coordonnée dans l'espace de Hough que l'on incrémente. Ainsi, les valeurs de l'accumulateur définissent un nombre de vote pour chaque coordonnée. Puis on recherche dans l'accumulateur les paramètres qui ont réuni le maximum de vote, c'est eux qui donneront les paramètres de l'équation qui ont été la plus vérifiée. Il ne reste donc plus qu'à dessiner dans l'image de sortie la forme correspondant à l'équation trouvée.

L'algorithme revient à :

Pour contourner le problème des "lignes fantômes" dues à la discrétisation des points de contour, la suppression du maximum se fait en supprimant tous les points de contour de la droite détecté dans l'image initiale ainsi que ceux des lignes qui sont à distance inférieure à linetickness, puis par recalcul de l'accumulateur (en fait une version améliorée de cette solution).

Paramètres

Entrées

Sorties

Résultat

Retourne le nombre de lignes détectées.

Exemples

Extrait les lignes droites à partir d'un ensemble de contours obtenus par une simple détection de contours :

   psobel tangram.pan b.pan
   pbinarization 45 1e30  b.pan c.pan
   pskeletonization c.pan d.pan 
   ppostthinning d.pan e.pan
   phoughlines 20 0 180 2 e.pan f.pan
   pimg2imc 0 f.pan c.pan c.pan out.pan

Voir aussi

Contour

Prototype C++

Errc PhoughLines( const Img2duc &im_in, Img2duc &im_out, int lines, int minangle, int maxangle, int thickness );

Auteur: Laurent Quesnel