190 likes | 425 Views
Traitement d’images : concepts fondamentaux. Définitions fondamentales et prétraitements : Information représentée par un pixel, Manipulation d’histogrammes : égalisation, Filtrage passe-bas. Introduction à la morphologie mathématique (cas binaire) :
E N D
Traitement d’images : concepts fondamentaux Définitions fondamentales et prétraitements : Information représentée par un pixel, Manipulation d’histogrammes : égalisation, Filtrage passe-bas. Introduction à la morphologie mathématique (cas binaire) : Erosion, dilatation, ouverture et fermeture binaires, Reconstruction géodésique, étiquetage en composantes connexes, Squelette. Détection de contours : filtrage passe-haut, filtrage optimal, traitement des contours : fermeture, transformée de Hough. Introduction à la classification (cas pixelique) : algorithme des k-ppv, des c-moyennes critères bayésiens : MV, MAP.
f(x) f’(x) f’’(x) Détection de contours :approche générale Contour = là où réside l’information au sens entropique • Objectif • Délimitation des objets • Détection de points d’intérêt • Méthodes dérivatives • À partir du gradient ( vecteur 2D), calcul de sa norme et de sa direction • Approximation de la dérivée 2nde par le Laplacien
Principe des méthodes dérivatives Utilisation du gradient Calcul de l’image 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 Utilisation du laplacien Calcul de l’image du laplacien Calcul de l’image de la norme du gradient Calcul de l’image binaire Iz des passages par zéro du laplacien Application du masque binaire Iz à l’image de la norme du gradient Seuillage (avec hystérésis) de l’image de la norme du gradient |Iz Elimination des non maxima locaux dans la direction du gradient Fermeture des contours Laplacien trop bruité pour être utilisé seul
Rq : les filtres sont donnés pour des directions lignes – colonnes cas de directions diagonales : par filtrage linéaire passe-haut • Gradient • Sobel c=2 • Prewitt c=1 • Opérateur MDIF • Filtres de Kirsch : 8 masques La direction du gradient est l’argument du masque qui maximise la norme du gradient à p/8 près • Masque MDIF plus grand moins sensible au bruit mais localisation des contours moins bonne • Il existe aussi des généralisations de Sobel à des tailles (2d+1)(2d+1) : MX(i,j)=d/(|i|+|j|)(-i)/|i|, (i,j)[-d,d]2
par filtrage linéaire passe-haut • Laplacien • 4-connexité 8-connexité • 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
Filtre de lissage puis application d’un opérateur différentiel par filtrage optimal (I) • Critères de Canny (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 Dérivée directionnelle en x = Image*h(x)*f(y) Dérivée directionnelle en y = Image*h(y)*f(x) • Filtre de Shen - Castan Minimiser la variance de l’erreur en distance Maximiser le rapport signal à bruit Solution de Canny : RIF y(x) = a1eaxcoswx + a2eaxsinwx + a3e-axcoswx +a4e-axsinwx Solution de Deriche : RII y(x) = Cst/w.ea|x|.sinwx Soit m / m.w=a, alors m>>1 y(x) h(x) = -a2.x.e-a|x| Lissage dans la direction perpendiculaire à celle de h par le filtre intégrateur de h : f(y) = b.(a.|y|+1).e-a|y| (f’(y) = b.a.signe(y).e-a|y|+b.(a.|y|+1).(-a.signe(y)).e-a|y| = b.h(y)) Solution de Shen et Castan : RII f(x) = be-b|x|, f1(x) = b.e-bx.u(x), f2(x) = b.e-b(-x).u(-x)
par filtrage optimal (II) • Implantation du filtre de dérivation de Deriche Décomposition entre 1 partie causale et 1 anti-causale • R1[i]=c.e-a.I[i-1]+2.e-a.R[i-1]-e-2a.R[i-2] R2[i]=-c.e-a.I[i+1]+2.e-a.R[i+1]-e-2a.R[i+2] R[i]=R1[i]+ R2[i] • Implantation du filtre de lissage de Deriche Décomposition entre 1 partie causale et 1 anti-causale • R1[i]= b.I[i]+ b.e-a.(a-1).I[i-1]+2.e-a.R[i-1]-e-2a.R[i-2] R2[i]= b.e-a.(a+1).I[i+1]-b.e-2a.I[i+2]+2.e-a.R[i+1]-e-2a.R[i+2] R[i]=R1[i]+ R2[i] Partie causale : f-(i)=b.(a.i+1).e-ia.u(i) TZ[f-(i)] = b.a.e-az-1/(1-e-az-1)2+ b/(1-e-az-1) Partie anti-causale : f+(i)=[ba.(-i).e(-i)(-a)+ b.e(-i)(-a)-bd(-i)].u(-i) TZ[f-(i)] = b.a.e-az/(1-e-az)2+ b/(1-e-az)-b Partie causale : h-(i)=c.i.e-ia.u(i) TZ[u(i)] = 1/(1-z-1) |z|>1 TZ[ai.x(i)] = X(z/a) TZ[e-iau(i)] = 1/(1-e-az-1) TZ[ik.x(i)] = (z.d/dz)X(z) TZ[ie-iau(i)] = e-az-1/(1-e-az-1)2 Partie anti-causale : h+(i)=(-c).(-i).e(-i)(-a).u(-i)
B1 B2 || MM (B2) || MM (B1) || Prewitt || MDIF || Sobel DMM (B1) D MM (B2) Dmasque Deriche a=1 Deriche a=2 Deriche a=3 Shen b=0.5 Shen b=1 Exemples de et .
Détection de contours (I) • Seuillage avec hystérésis • Détection des pixels de valeur ≥ sh • Ajout des pixels de valeur ≥ sbet 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 • Initialisation de la pile P avec les pixels / ≥ sh • Tant que |P|>0 • Extraire M(xM,yM) de la pile • ImaCont(xM,yM) 1 • Pour chaque k-connex (k=4 ou 8) voisin de M, noté VM : Si VM P et si ImaCont(xVM,yVM) 1 et si ≥ sb, alors ajouter VM à P
(i-1,j+1) (i,j) (i,j+1) (i,j-1) (i+1,j-1) Détection de contours (II) • Détection des maxima locaux de la norme du gradient dans la direction du gradient q Cas soit A0=(i,j), A1=(i,j+1), A2(i-1,j+1) on cherche zM = a1A1+a2A2 avec a1+a2=1, (a1,a2)[0,1]2 alors a2=tanq et a1=1-tanq donc Autres cas :
3 2 1 3 2 1 4 0 4 0 5 6 7 5 6 7 3 2 1 4 0 5 6 7 Fermeture de contours 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 • Construction d’1 « look-up table » permettant d’indexer les pixels candidats à la fermeture pour chaque configuration. Codage configuration : où xi=1 si contour, 0 sinon Ex. T[16][0]=1 ; T[136 ][0]=0 ; T[8][0]=1 T[16][j]={1,0,7} ; T[8][j]={0,7,6} • Algorithme de fermeture : • Pour chaque extrémité trouvée lors du balayage de l’image : • 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 i.e. pixel / T[i][0] =1 3p chemins
Après fermeture de contours Prewitt MDIF Sobel Dmasque Deriche a=1 Deriche a=2 Deriche a=3 Shen b=0.5 Shen b=1 Exemple
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
I P y b Q DQ DP P x a Transformée de Hough : cas de la recherche de droites (I) Hors cas x = Cst • Représentation d’une droite : y = ax + b • 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 • Algo : • calculer, pour chaque point du contour dans I, la droite lui correspondant dans P ; • Incrémenter les valeurs le long de cette droite ; • déterminer le ‘point d’accumulation’ dans P
r0/r = |cos (j-q)| (droite perpendiculaire en M0(r0,j) à la droite radiale q=j pente j-p/2) 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) M(r,q) M0(r0,j) r r0 j-q j-p/2 q p-j 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ètres (r0,j) • A chaque point de I correspond une courbe dans P, et une intersection de courbes dans P correspond à une droite dans I
r = r2 r1 r2 b r3 a Intensité fct du % d’intersection de l’ellipse et du cercle de rayon r Transformée de Hough : cas de la recherche de cercles • Représentation d’un cercle : (x–a)2 + (y-b)2 = r • 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) )
Bibliographie • H. Maître, Le traitement des images, Hermès éditions. • J.-P. Cocquerez & S. Philipp, Analyse d’images : filtrage et segmentation, Masson éditions. • S. Bres, J.-M. Jolion & F. Lebourgeois, Traitement et analyse des images numériques, Hermès éditions.