• Objectif Détection de contours : approche générale Contour = où réside l’information (entropique) – Délimitation des objets – Détection de points d’intérêt • Méthodes dérivatives – À partir du gradient ( vect. 2D), norme et direction 2 2 I I – Approximation de la dérivée 2nde par le Laplacien 2 2 x y 1,2 0,6 1 0,5 0,8 0,4 0,3 0,6 0,3 0,2 0,4 0,2 0,2 0,1 0,6 0,5 0,4 0,1 0 -0,1 0 5 -0,2 0 0 0 5 10 -0,2 15 0 5 10 -0,1 f(x) 15 -0,3 -0,4 f’(x) f’’(x) 10 15 Principe des méthodes dérivatives Laplacien trop bruité pour être utilisé seul Utilisation du gradient Utilisation du laplacien Calcul de l’image du gradient Calcul de l’image du laplacien Calcul de l’image de la norme du gradient Calcul de l’image de la norme du gradient Calcul de l’image de la direction du gradient Seuillage (avec hystérésis) de l’image de la norme du gradient Elimination des non maxima locaux dans la direction du gradient Fermeture des contours Calcul de l’image binaire B des passages par zéro du laplacien Application du masque binaire B à l’image de la norme du gradient Seuillage (avec hystérésis) de l’image de la norme du gradient | B Elimination des non maxima locaux dans la direction du gradient Fermeture des contours par filtrage linéaire passe-haut • Gradient Sobel c=2 Prewitt c=1 1 0 1 c 0 c 1 0 1 1 c 1 0 0 0 1 c 1 Rq : les filtres sont donnés pour des directions lignes – colonnes cas de directions diagonales : Opérateur MDIF 0 1 1 1 0 1 2 3 2 1 0 1 0 0 2 1 0 3 1 0 2 1 0 1 0 c 1 0 0 1 c 1 0 1 1 0 1 0 1 c c 1 0 1 1 0 0 1 3 2 1 1 2 0 0 0 0 0 1 2 3 2 1 0 1 1 1 0 • Masque MDIF plus grand - sensible au bruit mais localisation des contours - bonne • Il existe aussi des généralisations de Sobel à des tailles (2d+1)(2d+1) Filtres de Kirsch : 8 masques La direction du gradient est l’argument du masque qui maximise la norme du gradient à p/8 près 3 3 3 3 3 3 3 3 5 3 5 5 5 5 5 5 5 3 5 3 3 3 3 3 3 0 3 3 0 5 3 0 5 3 0 5 3 0 3 5 0 3 5 0 3 5 0 3 5 5 5 3 5 5 3 3 5 3 3 3 3 3 3 3 3 3 5 3 3 5 5 3 Filtre de Sobel : exemples Image originale Norme du gradient Gradient horizontal Gradient vertical par filtrage linéaire passe-haut • Laplacien 4-connexité 0 1 0 1 4 1 0 1 0 8-connexité 1 1 1 1 8 1 1 1 1 1 filtre passe haut extrait l’information ‘complémentaire’ d’un filtre passe-bas : Id = MPB+MPH Ex : Coef. généralemt omis pour amplifier le résultat • Ex.: 1 0 0 0 1 1 1 1 1 1 1 1 0 9 0 1 1 1 1 8 1 9 0 0 0 9 1 1 1 9 1 1 1 par filtrage optimal (I) • Critères de Canny Maximiser le rapport signal à bruit (i) Bonne détection, (ii) bonne localisation, (iii) faible multiplicité des maxima dus au bruit • Filtre impulsionnel à réponse finie (RIF) Filtre de Deriche : RII Minimiser la variance de l’erreur en distance Solution de Canny : RIF y(x) = a1excoswx + a2exsinwx + a3e-xcoswx +a4e-xsinwx 3 f X x , y .x .e x . y 1.e y h x .f y 4 3 fY x , y .y .e y . x 1.e x hy .f x 4 Gradient selon x = Imageh(x)f(y) Gradient selon y = Imageh(y)f(x) • Filtre de Shen - Castan Filtre de lissage puis application d’un opérateur différentiel Solution de Deriche : RII / y(x) = [Cst/w].e|x|.sinwx Soit m / m.w=, alors m>>1 y(x) h(x) = -2.x.e-|x| Lissage ds la dir. celle de h par le filtre f / f’=h : f(y) = (.|y|+1).e-|y| (f’(y) = .sgn(y).e-|y|+(.|y|+1).(-.sgn(y)).e-|y| = h(y)) y 2 x x f X x , y .e . . .e 2 2 x f y .f 2 x f1 x x 2 y y fY x , y .e . . .e 2 2 y f x .f 2 y f1y Solution RII de Shen et Castan : f(x) = e-|x|, f1(x) = .e-x.u(x), f2(x) = .e-(-x).u(-x) par filtrage optimal (II) • Implantation du filtre de dérivation de Deriche 2 1 e c Décomposition entre 1 partie causale et 1 anti-causale i h i c .i .e 0 0 h i c .i .ei e 1 c .e .z si i 0 h z 1 - - -2 1 2 2 R1[i]=c.e .I[i-1]+2.e .R[i-1]-e .R[i-2] si i 0 1 2.e .z e .z si i 0 c .e .z h z R2[i]=-c.e-.I[i+1]+2.e-.R[i+1]-e-2.R[i+2] 2 2 si i 0 1 2.e .z e .z R[i]=R1[i]+ R2[i] • Partie causale : h-(i)=c.i.e-i.u(i) |z|>1, TZ[u(i)] = 1/(1-z-1) TZ[ai.x(i)] = X(z/a) TZ[e-iu(i)] = 1/(1-e-z-1) TZ[ik.x(i)] = (z.d/dz)kX(z) TZ[ie-iu(i)] = e-z-1/(1-e-z-1)2 Partie anti-causale : h+(i)=(-c).(-i).e(-i)(-).u(-i) Implantation du filtre de lissage de Deriche Décomposition entre 1 partie causale et 1 anti-causale f z 1 b f z b b 1 e 2 1 2 .e e 2 1 e . 1.z 1 R1[i]= b.I[i]+ b.e-.(-1).I[i-1]+2.e-.R[i-1]-e-2.R[i-2] 1 2 2 1 2.e .z e .z e . 1.z e2 .z2 1 2.e .z e2 .z2 R[i]=R1[i]+ R2[i] R2[i]= b.e-.(+1).I[i+1]-b.e-2.I[i+2]+2.e-.R[i+1]-e-2.R[i+2] Partie causale : f-(i)=b.(.i+1).e-i.u(i) TZ[f-(i)] = b..e-z-1/(1-e-z-1)2+ b/(1-e-z-1) Partie anti-causale : f+(i)=[b.(-i).e(-i)(-)+ b.e(-i)(-)-bd(-i)].u(-i) TZ[f-(i)] = b..e-z/(1-e-z)2+ b/(1-e-z)-b Filtrage Canny-Deriche : exemples =0.5 =5 Norme du gradient Image originale =1 Direction du gradient Exemples de et . || Prewitt || Sobel || MDIF masque Deriche =1 Deriche =2 Deriche =3 B1 B2 || MM (B1) || MM (B2) MM (B1) MM (B2) Shen =0.5 Shen =1 Détection de contours (I) Seuillage avec hystérésis – Détection des pixels de valeur ≥ sh – Ajout des pixels de valeur ≥ sb et qui 1 composante connexe ayant au moins 1 pixel de valeur ≥ sh – Programmation avec 1 pile gérant la composante connexe : initialisation de l’image des contours ImaCont à 0 2. Initialisation de la pile P avec les pixels / ≥ sh 1. 3. Tant que |P|>0 a. Extraire M(xM,yM) de la pile b. ImaCont(xM,yM) 1 c. Pour chaque k-connex (k=4 ou 8) voisin de M, noté VM : Si VM P et si ImaCont(xVM,yVM) 1 et si ajouter VM à P ≥ sb, alors VM Image originale Seuillage hystérésis sur gradient : exemples Norme du gradient Seuillage > 30 Seuillage hystérésis par reconstruct. géodésique Seuillage >72 + élimination des bords Norme du gradient Blanc = seuillage >50, Rouge = seuillage > 25 Seuillage hystérésis par reconstruct. géodésique Détection de contours (II) Détection des maxima locaux de la norme du gradient dans la direction du gradient q p Cas q 0 ; 4 (i-1,j+1) A2 (i,j-1) M2 A0 (i,j) M1 A1 soit A0=(i,j), A1=(i,j+1), A2(i-1,j+1) on cherche zM = 1A1+2A2 avec (i,j+1) (i+1,j-1) alors 2=tanq et 1=1-tanq donc M1 1 tan q . i , j 1 tan q . i 1, j 1 M2 1 tan q . i , j 1 tan q . i 1, j 1 p p ; 4 2 Autres cas : q p ;0 4 q p p q ; 4 2 1+2=1, (1,2)[0,1]2 Fermeture de contours • Construction d’1 « look-up table » permettant d’indexer les pixels candidats à la fermeture pour chaque configuration. 7 Codage configuration : V x i .2i où xi=1 si contour, 0 sinon Ex. 3 2 1 4 0 5 6 7 T[16][0]=1 ; i 0 T[16][j]={1,0,7} ; 3 2 1 4 0 5 6 7 T[136][0]=0 ; 3 2 1 4 0 5 6 7 T[8][0]=1 T[8][j]={0,7,6} T[i][0] =1 si contour à prolonger (i[0,255]) T[i][j] avec j[1,3] donne les coordonnées relatives des 3 pixels candidats à la fermeture • Ex. d’algorithme de fermeture : / T[i][0] =1 i.e. pixel – Pour chaque extrémité trouvée lors du balayage de l’image : 3p chemins • Construction du sous-arbre de tous les chemins possibles de longueur p et du coût associé à chaque nœud : somme des normes des gradients en chaque point du chemin • Sélection du nœud de coût maximum • Prolongation du contour Exemple masque Prewitt Sobel MDIF Après fermeture de contours Deriche =1 Deriche =2 Deriche =3 Shen =0.5 Shen =1 Transformée de Hough • Utilisation d’information a priori pour reconnaître le type d’objets recherchés et leur représentation • Principe : – Les objets recherchés sont décrits à l’aide de fonctions simples modélisées par leurs paramètres Ex.: segments de droites, arcs de cercles – La transformée de Hough permet de passer de l’espace image à l’espace des paramètres pour rechercher dans cet espace les objets d’intérêt Transformée de Hough : cas de la recherche de droites (I) • Représentation d’une droite : y = ax + b Hors cas x = Cst – Dans l’espace image I, x et y sont les variables (colonne et ligne) et (a,b) est un couple de paramètres fixes pour une droite donnée – Dans l’espace des paramètres P, a et b sont les variables et (x,y) est un couple de paramètres fixes pour un pixel donné Par un point de I passe une infinité de droites, représentées par une droite dans P (b=-ax+y), et A chaque point de P correspond une droite de I I y b Q DP P x DQ Algo : 1. calculer, pour chaque point du contour dans I, la droite lui correspondant dans P ; 2. Incrémenter les valeurs le long de cette droite ; 3. déterminer le ‘point d’accumulation’ dans P P a Transformée de Hough : cas de la recherche de droites (II) • Représentation d’une droite : x.cosj +y.sinj = r0 avec 0 < r0 < diagonale de l’image, et 0 < j < 2p Espace des paramètresr /r(r=0,j ) (j-q)| (droite perpendiculaire en |cos 0 A chaque point de I correspond courbe et unej-p/2) M0(r0,j) à laune droite radialedans q=j P, pente M(r,q) Mintersection de courbes dans P correspond à une droite dans I 0(r0,j) j-p/2 r0 pj r jq q Droite de paramètres (r0,j) d’éq. r = r0.sec(q-j) r0 = r.cos(q).cos(j)+ r.sin(q).sin(j) r0 = x.cos(j)+ y.sin(j) Transformée de Hough : exemple Image originale Détection de contours Transformée de Hough Droites reconstruites Maxima régionaux de la transformée de Hough Transformée de Hough : exemple 2 Image originale + contours superposés Droites reconstruites Maxima régionaux de la transformée de Hough Transformée de Hough : cas de la recherche de cercles • Représentation d’un cercle : (x–a)2 + (y-b)2 = r 2 A un point de I correspond une surface dans P , et P représenté sous forme d’un tableau 3D (a,b,r) Si on se donne un rayon (en pixels) et un % de pixels devant appartenir à la circonférence du cercle, on peut en déduire le seuil dans P (en nombre de pixels ayant voté pour un cercle (a,b,r) ) r = r2 r1 r2 b r3 a Intensité fct du % d’intersection de l’ellipse et du cercle de rayon r Points d’intérêt • Pixels de l’image les plus riches en information Caractérisent le contenu sémantique d’une image Critère principal pour leur définition : stabilité et reproductibilité • Coins : – Pixel présentant des gradients élevés selon deux directions Attention à la base utilisée ! Détecteur de Harris & Stephens: principe • En chaque pixel s, calcul de la matrice d’auto2 corrélation I I x Iy x t Ms G s I I G s 2 I I I x y y Avec I l’image d’origine, Ix et Iy ses dérivées resp. selon les dir. x et y G(s) le filtre passe-bas gaussien de paramètre s • Les valeurs propres l1 et l2 de Ms caractérisent le pixel s l2 Contour Coin l1 et l2 grands Région homogène Contour l1 Détecteur de Harris&Stephens : calcul • Eviter le calcul des valeurs propres en calculant la trace et le déterminant de Ms : - Trace(Ms)= l1 + l2 = M1,1 +M2,2 - Déterminant(Ms)= l1l2 = M1,1M2,2 -M1,2M2,1 • Le paramètre R permet l’identification des coins - R=Déterminant(Ms)-k[Trace(Ms)]2 - Les coins correspondent à R max local R>0 Trace(Ms)>t k et t paramètres : k=0.04 (par défaut) et t relié à la ‘taille’ du coin Détecteur de Harris : calcul • Filtrage linéaire gaussien de l’image d’origine • Calcul des images Ix et Iy des gradients selon les directions x et y respectivement, p.e. par différences finies • Calcul des images des termes de la matrice de covariance Ix2, Iy2 et IxIy • Filtrer les images Ix2, Iy2 et IxIy par filtrage linéaire Gaussien I x 2 , 2 , I y et I x Iy • Calcul de l’image du critère R: en chaque pixel R Ix 2 Iy 2 I x Iy 2 k Ix 2 Iy 2 2 Ix2 Ms I x Iy • Création de l’image des points d’intérêt = maxima locaux de R supérieur au seuil I x Iy 2 Iy Détecteur de Harris : exemples Composition RGB des 3 composantes Ix2, Iy2 et IxIy après filtrage gaussien Image du critère R (k=0.04) Points détectés (V) sur image d’origine (R) Détecteur de Harris : exemples Points sur ‘imagetest_synthetic’ tournée de + 30 degrés Autres exemples Points détectés sur ‘imagetest_synthetic’ Points détectés aux échelles s=5 (R), s=1 (V), s=3 (B)