ue traitement d’images master recherche notes du cours...
TRANSCRIPT
Master RechercheNotes du cours 4
1
Christophe Cudel, Bruno Colicchio, Alain Dieterlen
Groupe LAB.EL, Laboratoire MIPSUniversité de Haute Alsace,
Mulhouse, France
UE Traitement d’Images
2
Extraction dans les images
1. Détection de droites et courbes : – Transformée de Hough
– Transformée de Hough généralisée
2. Introduction aux contours déformables (snakes)
3. Détection de points d’intérêts
3
1. Détection de droites et courbes
Détection de droites : Transformée de Hough– Comment détecter une droite ??
Corrélation ??? Bcp de masque… taille des masques
– ☺Méthode robuste : transformée de Hough
– Équation droite :
• y = ax + b coordonnées cartésiennes
• ρ = x cos(θ) + y sin (θ) coordonnées polaires
x
y
a0b
++
++
++
a
b0
4
1. Détection de droites et courbes
xy
Détection de droites : Transformée de Hough– Inconvénients des coordonnées cartésiennes :
• Conditionnement de a et b. Pente variant de –infini à + infini
– On préfère le passage vers l’espace des coordonnées polaires
ρ = x cos(θ) + y sin (θ) coordonnées polaires
ρθ
5
1. Détection de droites et courbes
Transformée de Hough : Algorithme
– 1. Choisir une espace discret (ρ,θ)
– 2. Initialiser un accumulateur A(dim(ρ), dim(θ)) à zéro
– 3. Pour chaque pixel :
• Si I(u, v) = 1– Calculer θ = u*cos(θ) + v*sin(θ)
– Incrémenter A(round(ρ), round(θ))
– 4. Recherche le ou les maximum dans la matrice A.
– 5. Les couples (ρ,θ) sélectionnés caractérisent les lignes de l’image
6
1. Détection de droites et courbes
Transformée de Hough généralisée– A partir de ce principe on peut imaginer généraliser avec d’autres types de
courbes :
• Quelconques : y=f(x,a,b,c…)
• Cercles : (x-x0)2 + (y-y0)2 = r2 (3 paramètres)
• Ellipses : [(x-x0)2 /a2]+ [(y-y0)2 /b2] = 1(4 paramètres + éventuellement orientation)
– La taille de l’espace des paramètres n’est pas limitée à 2. Attention néanmoins aux calculs !
7
1. Détection de droites et courbes
Transformée de Hough généralisée (suite)– La TH peut s’étendre directement à des formes discrètes. Ceci présente
l’avantage de ne pas nécessiter l’expression analytique de la forme.
– Dans ce cas l’accumulateur de Hough est une image des positions possibles de l’objet à détecter. Pour chaque pixel de contours, on ajoute un vote dans l’accumulateur pour toutes les positions de l’objet à détecter qui pourraient expliquer la présence de ce pixel de contours.
– Exemple :
8
1. Détection de droites et courbes
– Suite
On extrait les minima locaux :
Un seuillage avec le nombre dePoints de contours est effectué :
Remarque : Possibilité de rajouter la rotation dans l’espace des paramètres
9
2. Introduction aux contours actifs
Introduction – Certaines situations demandent de rechercher une forme dans une image
(échographie, tracking)…. La forme est difficile à segmenter (bruit) mais est approximativement localisée dans l’image.
– On peut placer un contour qui va déformer pour superposer à la forme recherchée…. C’est un contour actif, « snake » en Anglais
– Idée initiale : courbe ayant des propriétés « élastiques » :
• Capable de se déformer localement et d’épouser une forme
Principe– On cherche à minimiser l’énergie d’une courbe soumise à une énergie
‘interne’ et ‘externe’
10
2. Introduction aux contours déformables
Le contour actif : courbe paramétrique v(s) = f(x(s), y(s))Généralement s appartient à [0,1]
On peut écrire EGlogal(v) = Eint(v)+ Eext(v)
Énergie interne :– Eint(v) = a(s).||vs(s)|| + b(s).||vss(s)||
vs(s) : valeur de l’élongation au point s, contrôlée par a(s) qui règle l’élasticité. C’est la dérivée première de la courbe au point s, par exemples : vs(s) = ||v(s) – v(s-1)||2
Vss(s) : courbure du snake. On évite les courbes avec des « cassures », c’est un terme de rigidité de la contour actif. Souvent, on prend :
vss(s) = || v(s-1) -2v(s) + v(s+1)|| , c.a.d la dérivée seconde (voir chapitre gradients…)
11
2. Introduction aux contours déformables
Énergie externe :– C’est le terme qui va attirer la courbe en fonction de l’énergie associée à
l’image. Suivant la nature de l’image, c’est constitué par :
Eext = Image ou Eext = - || Image||
En résumé– Mettre en œuvre un contour actif revient à optimiser un fonction
numérique de plusieurs variables
Algorithme– N : nombre de nœuds qui constituent le contour
– U(s) : le voisinage local du pixel de coordonnées x(s), y(s)
– pj = noeud j du contour actif v(s)
12
2. Introduction aux contours déformables
Algorithme (suite)– Initialisation :
• Pour chaque nœud Ejmin = MAXIMUM
– Pour j=1 à N
• Calculer pour tous les points du voisinage de pj : Ej = Eint(j) + Eext(U(j))
– Si Ej < Ejmin
Ejmin = Ej
Déplacer la position du contour vers le points du voisinage offrant une énergie minimum
– Sinon : ne rien faire
A partir de cet algorithme les variantes sont très nombreuses :
• ‘split’/’fusion’ de contours actifs
• Insertion / suppression automatique de nœuds
• etc
13
3. Détection de points d’intérêts
Introduction : Un certains nombre d’applications nécessitent de trouver des points d’intérêts (calibration, reconstruction 3D, etc…)
Principe :– Des points caractéristiques dans une image sont des coins. Dans une
première approche, on peut considérer que les coins sont caractérisés par des gradients importants suivant 2 directions perpendiculaires.
– Détecteur de Harris :
• Calcul des dérivées premières dans l’image Gx et Gy
• Lissage des gradients avec filtre moyenneur : Gmx et Gmy
• Construction de la matrice C :
⎟⎟⎠
⎞⎜⎜⎝
⎛= 2
2
..
GmyGmyGmxGmyGmxGmx
C
14
3. Détection de points d’intérêts
• (suite): A partir de la matrice C, on peut extraire un critère pour tester la présence de coins :
Critère = Det(C) - k.Trace2(C) avec k=0.04
Critère = (Gmx2.Gmy2 – (GmxGmy)2)-( k (Gmx2 + Gmy2)2)
Variante :
Critère = (Gmx2.Gmy2 – (GmxGmy)2)/(Gmx2 + Gmy2 + eps)
• La recherche de max locaux sur l’image ‘critère’ permet de détecter des ‘coins’. Voir exemple.