SIF-1033 Traitement d’image Sujets Détection des contours et arêtes Dérivée première (gradient) Dérivée seconde Laplacien Laplacien de la gaussienne Détection de contour (python) Filtre de Canny Filtre de Canny (python) Lectures: Notes de cours
Détection des contours et arêtes (basée sur les dérivées) 00 FF 00 Image prof il d’une ligne horizontale (dérivée première) (dérivée seconde) (a) ( b) Figure 7.4 [rf. GONZALEZ, p. 417]
Dérivée première (gradient) | Gx | + | Gy | -1 1 -2 2 | Gy | 1 -1 2 -2 | Gx | Figure 7.6 [rf. GONZALEZ, p. 421]
Dérivée seconde (Laplacien) Le calcul du laplacien découle de la forme suivante: La forme digitale est donnée par: -1 4 z3 z9 z2 z8 z1 z7 z6 z5 z4 Cette méthode est sensible au bruit
Dérivée seconde (Laplacien) Le laplacien de la gaussienne permet de corriger les problèmes de sensibilité au bruit de la méthode du laplacien Le laplacien de la gaussienne prend la forme:
Dérivée seconde (Laplacien) Nous utilisons la forme:
Dérivée seconde (Laplacien de la gaussienne) Figure 7.8 [rf. GONZALEZ, p. 423]
Dérivée seconde (Laplacien) Le résultat de la convolution f *g’’ est la dérivée seconde de l’image Il faut alors localiser les passages par zéro de la dérivée de l’image pour permettre la localisation des contours dans l’image Pour localiser les passages par zéros nous utilisons une petite fenêtre de 1 X 2 pour localiser les passa-ges par zéros verticaux et une de 2 X 1 pour ceux horizontaux
Dérivée seconde (Laplacien) Par la suite nous parcourons l’image des dérivées secondes et effectuons les tests suivants: j j+1 SI ((((f*g’’)(i,j) > 0) ET ((f*g’’)(i,j+1) < 0)) OU (((f*g’’)(i,j) < 0) ET ((f*g’’)(i,j+1) > 0))) ALORS Passage par zéro (contour vertical) i j SI ((((f*g’’)(i,j) > 0) ET ((f*g’’)(i+1,j) < 0)) OU (((f*g’’)(i,j) < 0) ET ((f*g’’)(i+1,j) > 0))) ALORS Passage par zéro (contour horizontal) i i+1
Laplacien de la gaussienne (exemples) Image originale (320 X 320 pixels) Convolution de l’image avec {Laplacien de G} où w2-D = 8 (montre seulement les passages par 0 en noir) Convolution de l’image avec {Laplacien de G} où w2-D = 8 (valeurs positives en blanc et négatives en noir) Convolution de l’image avec {Laplacien de G} où w2-D = 8 (0 apparaissant en gris) Figure 2-12 [rf. MARR, p. 58]
Exemple de détection de contours /u/dmatensr/meunier/images/riviere.rast
Détection de contours (python)
Détection de contours (python)
Détection de contours (python)
Détection de contours (python: LOG) Voir le site: https://gist.github.com/Seanny123/10452462
Détection de contours (python: LOG) Voir le site: https://gist.github.com/Seanny123/10452462
Détection de contours (python: LOG) Voir le site: https://gist.github.com/Seanny123/10452462
Détection de contours (python: LOG) Voir le site: https://gist.github.com/Seanny123/10452462
Détection de contours (python: LOG) Voir le site: https://gist.github.com/Seanny123/10452462
Filtre de Canny Étape 1: Calcul des dérivées Horizontale et Verticale d I(x,y)/dx d I(x,y)/dy
Filtre de Canny Étape 2: Calcul de l’amplitude du gradient et l’orientation mag(I(x,y)) = ((d I(x,y)/dx)2 + (d I(x,y)/dy)2)1/2 = tg-1(d I(x,y)/dy / d I(x,y)/dx) est l’orientation de la normale au contour: Significatif seulement quand I(x,y) est non nul (proche du contour) Amplitude du Gradient
Filtre de Canny Étape 3: Éliminer les pixels ne correspondant pas à des maximas: Un pixel a une réponse maximale si ces deux voisins selon l’axe de la normale ont une réponse inférieure Étape 4: Seuillage par hystérésis a) Si mag(I(x,y)) > Seuil 1 1 pixel de contour b) Suivre le contour TTQ mag(I(x,y)) > Seuil 2 Produit des contours assez continus Seuil 1 est souvent fixé à 2 * Seuil 2 Les pixel non-max sont mis à 0
Filtre de Canny Exemple d’utilisation du filtre de Canny (Utilisation de la fonction cvCanny() dans OpenCV)
Filtre de Canny Exemple: edge.c dans le dossier C:\Program Files\OpenCV\samples\c de OpenCV Seuil 1 Seuil 2 Dim Sobel
Filtre de Canny Résultats
Filtre de Canny (python) Code python et résultats
Résumé Segmentation des images par détection de contours et d’arêtes Dérivée première (gradient) Dérivée seconde Laplacien Laplacien de la gaussienne Détection de contour (python) Filtre de Canny Filtre de Canny (python)