PIF-6003 Sujets spéciaux en informatique I Détection des droites Transformée de Hough (espace paramétré) avec la pente et l’ordonnée à l’origine avec la normale et l’angle Détection des droites dans l’espace transformé Détection des cercles/ellipses Lectures: Notes de cours
Détection des droites Si nous avons une image binaire dont les pixels avec une valeur de niveau de gris à PIXMAX font partis de segments de droites La détection des droites pourrait être effectuée en: Déterminant l’ensemble des droites potentielles Chercher les points proches de chaque droite potentielle => n3 comparaisons
Transformée de Hough (avec la pente et l’ordonnée à l’origine) Figure 7.15 [rf. GONZALEZ, p. 434]
Représentation discrète d’un espace paramétré : transformée de Hough Tableau de compteurs de points colinéaires Figure 7.16 [rf. GONZALEZ, p. 435]
Représentation discrète d’un espace paramétré : transformée de Hough (b) Figure 7.16 [rf. GONZALEZ, p. 435] Image contenant deux segments de droite Représentation du tableau de compteurs
Transformée de Hough (avec la pente et l’ordonnée à l’origine) Faiblesse Pour a -> => droite verticale b -> Difficile à représenter dans l’espace paramétré
Transformée de Hough (avec la normale et l’angle) Figure 7.17 [rf. GONZALEZ, p. 436]
Transformée de Hough (avec la normale et l’angle) Forme normale de la droite = x cos + y sin L’espace paramétré est borné par: -(H2+L2)1/2, (H2+L2)1/2 H: Hauteur de l’image L: Largeur de l’image -/2,/2
Transformée de Hough (exemples) B Image avec 5 points spécifiques Espace paramétré rq ( A relie les pts 1, 3 et 5 et B les pts 2, 3 et 4 ) Espace paramétré rq {où q s’étend de ± 90° et r de ± Ö2D} Espace paramétré rq ( inversion des signes de r et q à ± 90° ) Figure 7.18 [rf. GONZALEZ, p. 437]
Transformée de Hough (avec la normale et l’angle) Algorithme général Effectuer la transformée de Hough Pour chaque pixel à PIXMAX Calculer les droites chacune paramétrées , pouvant passer par ce pixel Faire la mise à jour des compteurs de points colinéaires (espace paramétré) aux positions , Détecter les droites Parcourir l’espace paramétré et déterminer si le nombre de points colinéaires dépasse un seuil fixé par l’usager
Détection des droites dans l’espace transformé (exemples) Figure 7.14 [rf. GONZALEZ, p. 433]
Détection des droites dans l’espace transformé (exemple OpenCV: houghlines.c)
Détection des droites dans l’espace transformé (exemple OpenCV: houghlines.c)
Détection des droites dans l’espace transformé (exemple OpenCV: houghlines.c)
Détection des droites dans l’espace transformé (exemple OpenCV: houghlines.c)
Détection des droites dans l’espace transformé (exemple OpenCV: houghlines.c)
Détection des droites dans l’espace transformé (exemple OpenCV: houghlines.c)
Détection des cercles Expression du cercle en coordonnées polaires par L’espace projeté est paramétré par xc et yc donnés par
Détection des cercles Algorithme général Effectuer la transformée de Hough (cercle de rayon r) Pour chaque pixel à PIXMAX Calculer les centres des cercles donnés par xc,yc pouvant contenir ce pixel Faire la mise à jour des compteurs des centres de cercle (espace paramétré) aux positions xc,yc Détecter les cercles Parcourir l’espace paramétré et déterminer si le nombre de points cocirculaires dépasse un seuil fixé par l’usager
Détection des cercles (Exemple) Image monnaie
Détection des ellipses (Exemple) (ex: findThresholdFaceNIR.c)
Détection des ellipses (Exemple) (ex: findThresholdFaceNIR.c)
Détection des ellipses (Exemple) (ex: findThresholdFaceNIR.c) //
Détection des ellipses (Exemple) Extraction des contours à partir de l’image seuillée
Détection des ellipses (Exemple) (ex: findThresholdFaceNIR.c)
Détection des ellipses (Exemple) Extraction des contours et ellipses à partir de l’image seuillée
Détection des ellipses (Exemple) Si nous avons N points d’un contour p1 …. pN dans une images et pi = [xi, yi]T. Posons x = [x2, xy, y2, x, y, 1]Tet p = [x, y]T, alors nous pouvons écrire: Cette forme générale d’une ellipse est caractérisée par le vecteur de paramètres a = [a, b, c, d, e, f]T. L’approximation d’un contour par une ellipse revient à trouver un vecteur a0 qui approxime le mieux les points pi d’un contour au sens des moindres carrés, et qui est la sol’n de: D() est une fonction distance
Détection des ellipses (Exemple) En utilisant la distance algébrique le problème de minimisation de moindre carré précédent devient linéaire et peut être résolu de façon directe sous la forme: Pour éviter la sol’n triviale a = 0 nous devons imposer une contrainte sur a avec la matrice C (constraint matrix):
Détection des ellipses (Exemple) Ensuite, nous pouvons réécrire la fonction de minimisation basée sur la distance algébrique sous la forme: Avec X la matrice (design matrix) de la forme suivante et S = XTX (scattering matrix):
Détection des ellipses (Exemple) Le vecteur a0 optimal correspond au vecteur propre associé à la seule valeur propre négative découlant du système suivant : Algorithme: Créer la matrice X à partir des point pi = [xi, yi] d’un contour Calculer la matrice S = XTX Créer la matrice C Calculer les valeurs propres du système précédent et trouver la valeur propre négative n à laquelle est associée le vecteur propre optimal a0
Détection des ellipses (Exemple) Exemples d’approximation découlant de l’application de l’algorithme précédent: Bruit de contour gaussien croissant
Détection des ellipses (Exemple) Exemple de programme OpenCV (RTGazeTracking.c): Création de la matrice de contraintes C
Détection des ellipses (Exemple) Exemple de programme OpenCV (RTGazeTracking.c) (suite ….): Création de la matrice X
Détection des ellipses (Exemple) Exemple de programme OpenCV (RTGazeTracking.c) (suite ….):
Détection des ellipses (Exemple) Exemple de programme OpenCV (RTGazeTracking.c) (suite ….):
Détection des ellipses (Exemple) Exemple de programme OpenCV (RTGazeTracking.c) (suite ….):
Résumé Segmentation des images par détection des droites Transformée de Hough Détection des droites dans l’espace transformé Détection des cercles/ellipses