raport ti
TRANSCRIPT
1
2
3
Avant-propos
L'extraction de contours dans les images a débute de façon extrêmement empirique par des operateurs locaux
qui, soit estimaient un gradient, soit convolaient l’image par des masques caractéristiques des contours
[Haralick et Shapiro, 1985]. Dans les années 80, des approches plus systématiques ont été mises en place par
Marr [Marr et Hildreth, 1980], puis Canny [Canny, 1986], pour obtenir des contours plus significatifs. Ces
travaux ont abouti à une bonne compréhension de ce qu’il faut faire pour détecter les contours, mais la
définition même des contours demeure très vague, ce qui rend ces techniques encore peu efficaces sur un
problème concret. De plus, on a pu montrer que le problème de L'extraction de contours est généralement mal
pose (au sens de la résolution des systèmes) [Torre et Poggio, 1986]. Les seuls modèles de contours utilisables
sont ceux de contours idéalises; ils sont bien loin de la réalité. C’est pourquoi, même si de très gros progrès ont
été accomplis dans ce domaine, les techniques empiriques d’estimation du gradient proposées dans les années
70-80 restent souvent encore employées en concurrence de techniques plus modernes. Une excellente référence
à ce problème est l’ouvrage collectif [Cocquerez et Philipp, 1996]. Plusieurs articles existent sur la comparaison
des performances de L'extraction de contours, en particulier [Palmer et al., 1996, Heath et al., 1997].
4
Sommaire
Avant-propos ..................................................................................................................................................................... 3
Sommaire ............................................................................................................................................................................ 4
Introduction ……………………………………………………………………………………………………………………….. 6
Parite I :les méthodes lieés à l’éxtraction des contours ............................................................................... 7
I) Notion du contour ......................................................................................................................................... 7
II) les approches classiques d’extraction des contours……………..……..……………………...…………..7
1) Méthode de Gradient par filtrage ............................................................................................................................ 7
2) les detecteurs de Gradient par masques…………………………………………………………..……………………………………………10
3) Méthode de laplacien ............................................................................................................................................. 11
4) Méthode d’Hystérisis………… …..………………………………………………………………………………………………………………………12
5) les détecteurs par masquage adapté(Kirsch) ........................................................................................................ 14
III) Les approches analytiques …………………………………………………………………………… 15
1) Les critès de Canny ............................................................................................................................................... 15
2) Deriche…………………………………………………………………………………………………………………………………………………………17
IV) Les contours actifs :Les Snaks ........................................................................................................................... 18
V) Morphologie Mathimatique……...………………………………………………………………………20
1) Opération élementaire ........................................................................................................................................... 20
2) Ouverture & Fermeture…………………………………………………………………………………………………………………………………21
3) Influence de l’élement structurant ....................................................................................................................... 21
4) Fonctions Matlab……………………………………………………………………………………………………………………………………………..21
Partie II : Domaines d’application d’extraction des contours ................................................................ 23
I) Les codes Data Matrix…………………………………………………………………………………………………………..…………………23
II) La Biologie ......................................................................................................................................................... 24
III) LaRobotique……………………………………………………………………………………… …. 25
5
Partie III : Exemple d’Application :Imagerie medicale………………………………….26.
1) Les contours classiques ......................................................................................................................................... 27
2) Les contours lisses ................................................................................................................................................. 28
3) Le filtre de kirsch ................................................................................................................................................... 29
4) Le filtre de Deriche ................................................................................................................................................ 30
5) Morphologie Mathimatique .................................................................................................................................. 31
Annexe………………………………………………………………………………………..33
CONCLISION………………………………………………………………………………….38
Bibliographie…………………………………………………………………………………………………………………..39
6
Introduction
L'extraction de contours est un problème auquel s'est récemment intéressé le monde du traitement
d'image, on situe ses débuts vers les années 1970 - 1980, lorsqu'on a voulu effectuer les premiers
traitements plus complexes sur les images numériques. C'est avec le développement des puissances de
calcul des ordinateurs qu'on a cherché des méthodes systématiques d'analyse d'images.
La détection de contour est un champ de la recherche qui appartient au traitement d'image et à la vision
par ordinateur, particulièrement dans le domaine de l'extraction de caractéristiques. De nombreux
problèmes d'application nécessitent un traitement préalable de l'image afin d'en détecter les contours, on
les retrouvera notamment dans le domaine de l'imagerie satellite, la reconnaissance faciale ou plus
généralement la création d'effets visuels.
Les contours constituent en effet des indices riches pour certaines interprétations. Par exemple, en
astrologie on désire à partir d'un cliché pris par un télescope, pouvoir détecter de nouveaux corps
célestes. Ou encore, en imagerie médicale, on désire déceler des tumeurs cancéreuses à partir d'une
scanographie.
La détection des contours d'une image réduit de manière significative la quantité de données et élimine
les informations qu'on peut juger moins pertinentes, tout en préservant les propriétés structurelles
importantes de l'image. Il existe un grand nombre de méthodes mais la plupart d'entre elles peuvent être
regroupées en deux catégories. La première recherche les extremums de la dérivée première, en général
les maximums locaux de l'intensité du gradient. La seconde recherche les annulations de la dérivée
seconde, en général les annulations du laplacien ou d'une expression différentielle non-linéaire.
7
Nous présenterons tout d’abord une approche formelle de la détection
des contours, puis les méthodes empiriques encore utilisées.
Une approche plus analytique, proposée par Canny, sera ensuite
présentée, avec ses dérivées qui sont aujourd’hui les plus employées en raison
de leur efficacité. Enfin les techniques fondées sur le principe des contours
actifs de Kass, Witkins et Terzopoulos seront présentées, ainsi que les
approches par ensembles de niveaux (level sets). Nous terminerons par une
brève présentation des méthodes de poursuite et de fermeture des contours.
Partie I I Les méthodes liées à
l'extraction de contours
8
I - Notion de contour
Soit F(x,y) une image. Un contour de cette image est une courbe du plan (x,y) au travers de laquelle s'opère une
forte variation de l'intensité lumineuse.
Figure 1
II Les approches classiques d’extraction du contour :
1) Méthode de gradient par filtrage
Si f(x,y) est différentiable alors le gradient de f au point (x0,y0) est :
Propriétés :
Le gradient est normal aux courbes iso-niveau de la forme f(x,y)=cste
f croît dans le sens de son gradient. Par ailleurs, plus la norme du gradient est grande et plus la
différence entre f(x+c,y+d) et f(x,y) est importante.
Equation 1
9
Un point de contour correspond donc à un maximum local de
Et le vecteur gradient donne la normale au contour
Figure 2
On calcule tout d'abord la norme du gradient, puis si cette norme est grande on considère que l'on est sur un
point de contour.
Les approximations numériques du gradient:
Généralement on dispose d'une image numérique échantillonnée : fn,m=f(nL1,mL2) où L1 et L2 sont les pas
d'échantillonnage (rectangulaire) suivant x et y
Suivant les critères, on souhaite approximer :
Obtenir une bonne approximation de la dérivée suivant x.
n,m*ƒn,m= k,l*ƒn-k,m-l
Equation 2
Equation 3
Equation 4
10
On doit donc avoir:
k,l=-1
Limitation de l'effet du bruit présent dans les images en réalisant un lissage suivant y.
Remarque: Pour le gradient, suivant y,
n,m*ƒn,m où n,m= n,m
2) Les détecteurs de gradient par masques
A côté de ces approches très inspirées du traitement du signal, des filtres de dérivation plus empiriques ont
été proposés à partir d’estimateurs locaux de l’image / ou de ses dérivées -gL. Ces estimées sont obtenues à
l’aide de masques (cf. figure 2.3) appliqués sur des fenêtres de 2 x 2 pixels ou 3 x 3 pixels (exceptionnellement,
en cas d’images très bruitées, sur des fenêtres plus grandes). On note sans surprise que la somme des
coefficients de ces filtres est nulle (fonction de transfert nulle à la fréquence 0), et que les coefficients sont
antisymétriques. Les filtres les plus utilisés sont, dans l’ordre décroissant :
Sobel > Roberts > Gradient > Prewitt
1
-1
1
-1
1 -1 1 -1
1 -1 2 -2
1 -1 1 -1
Gradient Roberts
Figure 3
Prewitt Sobel
Equation 5
k,l=0
k,l=0
Equation 6
11
Quatre filtres de détection de contours par estimation du gradient. Les filtres représentés
estiment une seule dérivée. Par rotation de π/2, on calcule la seconde dérivée.
Les filtres 3x3 sont un peu moins précis (c’est-à-dire que les contours qu’ils détectent sont
moins bien localisés et souvent épais), mais les images ainsi obtenues sont généralement plus
fiables et permettent des post-traitements plus poussés, ils sont également centrés sur un pixel
et non entre des pixels (filtres à phase nulle).
La réponse de l’un quelconque de ces filtres s’obtient de la façon suivante : le filtre est
centré en chaque pixel successivement (au coin supérieur gauche pour les filtres 2 x 2, au
point central pour les filtres 3 x 3). Le produit du masque par les valeurs des pixels
correspondant étant fait, la valeur absolue de la somme est retenue. Puis le masque est tourné
de 90° autour de son centre et la même mesure est répétée. Les deux mesures sont alors
ajoutées et leur somme constitue la mesure du gradient en ce point selon la formule de
l’équation suivante, ou selon la formule approchée, un peu plus rapide à calculer :
On peut également mesurer l’orientation du contour au point donné en faisant le rapport
des réponses des deux filtres comme dans l’équation.
De tels filtres sont particulièrement simples de mise en œuvre, et rapides de calcul,
permettent en particulier d’assurer des calculs en temps réel pour des applications
industrielles.
3) Méthode de laplacien
Cette méthode a été proposée en 1976 [Marr et Hildreth, 1980]. Elle a eu une grande
importance historique, étant considérée comme le prototype du détecteur de contour inspiré
des systèmes biologiques (primai sketch de Marr). Elle utilise le fait que le passage par zéro
du laplacien permet de bien mettre en évidence les extrémums de la dérivée. Nous avons eu
l’occasion de voir (dans l’équation qui suit) qu’en l’absence de forte courbure, le passage par
zéro du laplacien correspond en effet bien au maximum du gradient dans la direction du
gradient. Cette méthode tire en outre profit du fait que les zéros de la dérivée seconde
Equation 7
12
constituent un réseau de lignes fermées (évitant donc, en principe, les étapes de poursuite et
de fermeture). Il en est de même du réseau des lignes de crête du gradient, mais le premier est
plus aisément détecté à partir d’un simple étiquetage des zones positives et négatives. Mais
l’estimation de la dérivée seconde étant très sensible aux bruits, il convient de filtrer très
fortement l’image avant d’en mesurer le laplacien. Cela conduit au filtrage suivant :
𝜕
𝜕 𝜕
𝜕
On recherche le passage par zéro du laplacien
L1L2∆ƒ(n L1,mL2)= -4 ƒn,m + ƒn,m-1 + ƒn,m+1 + ƒn+1,m + ƒn-1,m
Remarque: Cette méthode est plus sensible au bruit que les méthodes de gradient.
4) Méthode Hystérésis
A – Principe de seuillage
Objectif: Obtenir une image binaire de type:
On applique cette méthode après la détection des contours de l'image. Lorsque la norme du
gradient en un point est supérieure à un seuil S>0, alors on affecte à ce point la valeur 1.
Equation 8
Equation 9
Equation 10
Equation 11
13
B - Algorithme
L'algorithme du seuillage simple s'appuie sur deux étapes:
Etape 1: Initialisation
On initialise tout d'abord la matrice binaire g à zéro
Etape 2: Seuillage
Chaque point pour lequel la norme de son gradient est supérieure à S, on le met à 1 dans la
matrice binaire g:
C- Qu'est ce que le seuillage par hystérésis ?
Le seuillage par hystérésis propose une méthode de prolongement des contours déjà détectés.
Il permet de corriger les erreurs de l'extraction de contours. En effet, le calcul du gradient n'est
pas toujours fiable, et ne permet d'avoir bien souvent qu'une première approximation des
contours de l'image. Certaines parties des contours convexes de l'image ne pourront pas être
suffisamment mis en valeur pour être effectivement retenus comme convexes par un seuillage
simple, et présenteront donc des vides. Le seuillage par hystérésis propose de combler ces
espacements.
1. Le principe
Le seuillage par hystérésis est réalisé après l'étape de détection des contours. Il s'effectue à
partir d'une image sur laquelle on possède déjà une première estimation des contours. Le
traitement effectué s'appuie donc sur une image binaire qui constitue temporairement les
contours de l'image. On va rechercher les points extrêmes des contours non fermés pour
essayer de les prolonger.
Par exemple : à partir de deux points A et B qui sont deux extrêmes d'un contour, on va
rechercher dans leur voisinage respectif V(A) et V(B) des points qui pourraient faire partie de
ce contour :
Equation 12
14
Figure4
Remarque : Dans notre cas, le voisinage d'un point est une zone de quelques pixels de
diamètre autours de ce point. En effet, la recherche de prolongements ne peut se faire à une
distance supérieure, sous peine de joindre deux contours totalement indépendants.
Les pixels du voisinage proche de A qui ne sont pas dans le contour n'ont pas été retenus par
le premier seuillage. Il faut donc appliquer un seuillage plus permissif sur cette zone. Ainsi on
est moins exigeant et le contour va se redessiner peu à peu.
2. L'algorithme
L'algorithme de seuillage par hystérésis s'effectue à partir de deux seuils s et s' (s > s’). Soit
une image 2D f échantillonnée avec un pas L1 selon x et L2 selon y. On notera ∇f son
gradient.
Etape 1 : Initialisation
On met à zéros tous les coefficients de la matrice S(n,m), notre matrice binaire de contours.
Etape 2 : Seuillage
On effectue un premier seuillage simple sur notre image, le résultat étant placé dans la matrice
binaire S(n,m).
Etape 3 : Seuillage local
Pour tout point P(n,m) appartenant à un contour C,
S'il existe un point P'(k,l) appartenant au voisinage de P(n,m) tel que :
S(k,l) = 0 et ||∆ƒ(n L1,mL2)|| > S’
Equation 13
15
Alors S(P')=1.
On réalise ainsi un seuillage local avec un seuil moins exigeant s'.
Etape 4 : Itération
On itère l'étape 3 jusqu’à convergence.
Etape 5 : Sélection
On supprime les contours de quelques pixels pour ne garder que les contours pertinents
.
5) Les détecteurs par masquage adapté (kirsch)
Dans ces techniques, on recherche en chaque point de l’image la présence d’une configuration
conforme à un gabarit appartenant à un dictionnaire de contours. Pour cela, on définit une
distance entre un contour type et une fenêtre de l’image. C’est par exemple l’inverse du
produit scalaire des deux fenêtres : si l’image est dénotée f(x,y), et le keme
gabarit gk(x, y), on
calcule par exemple :
Equation 14
Pour toutes les valeurs de k. On ne conserve que la meilleure des valeurs et seulement si elle
est suffisamment faible. L’approche par masques adaptés (Template matching), permet de
connaître aisément la direction du contour, elle permet également de soumettre, en parallèle,
ces calculs à des architectures adaptées. Mais la qualité des contours, ainsi que les post-
traitements qu’ils requièrent sont très semblables à ceux que l’on a vus pour les filtres de
maximum du gradient.
Les filtres adaptés les plus utilisés sont le filtre de Kirsch, le filtre de Nevatia et Babu et les
boussoles directionnelles de Prewitt.
Au-delà de ces approches souvent heuristiques, Hueckel a proposé une démarche beaucoup
plus rationnelle, s’appuyant sur la décomposition du signal d’image sur une base de fonctions
orthogonales en coordonnées polaires (polynômes d’Hermite utilisés également pour
l’oscillateur harmonique), tronquée à ses 8 premiers termes
16
Figure5 Masques de Kirsch : il y a 8 filtres issus de ces 2 fenêtres par rotation de π/4.
III Les approches analytiques
Nous allons voir maintenant une approche qui a permis une bien meilleure compréhension des
conditions d’une bonne détection de contours et qui a ainsi conduit à des détecteurs de très
bonne qualité. On les voit émerger dans les années 85, à partir des travaux : [Torre et Poggio,
1986, Shen et Castan, 1986, Canny, 1986].
1 Les critères de Canny
Canny, dans une approche originale, [Canny, 1986] a proposé un filtre déterminé
analytiquement à partir de 3 critères :
Garantir une bonne détection, c’est-à-dire une réponse forte même à de faibles
contours,
Garantir une bonne localisation,
Assurer que pour un contour il n’y aura qu’une seule détection (éviter les effets de
rebonds dus, par exemple, à la troncature des filtres).
Ces 3 critères s’expriment par l’optimisation conjointe de 3 fonctionnelles qui permettent de
définir le filtre linéaire optimal pour la détection d’une marche d’escalier sous l’hypothèse
d’un bruit additif indépendant du signal1.
Si l’on considère que le filtre a pour réponse impulsionnelle ψ(x), ces fonctionnelles
s’écrivent :
∫
∫
Equation 15
5 5 5
-3 0 -3
-3 -3 -3
-3 5 5
-3 0 5
-3 -3 -3
17
∫
Equation 16
Figure6 - Masques de boussole directionnelle : il y a 8 filtres issus de ces 2 fenêtres par
rotation.
RÉPONSE UNIQUE :
∫
∫
∫
Equation 17
La résolution du système est assez complexe (on maximise le produit Λ∑ sous la contrainte
du 3eme
terme constant). Par ailleurs, Canny souhaite obtenir un filtre monodimensionnel
(dans la direction orthogonale au contour), à réponse impulsionnelle finie (RIF) ; celui-ci a
alors une expression complexe, composée de 4 termes, chacun combinant des lignes
exponentielles et trigonométriques :
𝜃
𝜃 𝜃
𝜃
Equation 18
Où les coefficients Oj et ui sont déterminés à partir de la taille du filtre. Le paramètre à est un
paramètre de grande importance que nous retrouverons dans tous les autres filtres dérivés de
l’approche de Canny. C’est un paramètre d’échelle qui indique en-deçà de quelle distance
deux contours parallèles seront confondus en un seul. Canny montre que la dérivée d’une
gaussienne est une bonne approximation de son filtre.
Equation 19
1 1 1
1 -2 1
-1 -1 -1
1 1 1
-1 -2 1
-1 -1 1
18
C’est donc la réduction à 1 dimension du filtre proposé par Marr à 2 dimensions (le maximum
de la dérivée du gaussien est obtenu pour le passage par zéro du laplacien de gaussienne). Ce
filtre donne des résultats de bonne qualité. Le critère de Canny (critère Λ∑) vaut 1,12 pour le
filtre RIF optimal, 0,97 pour le filtre gaussien. Remarquons cependant que le filtre gaussien
n’est pas RIF.
2- Deriche
Deriche a proposé un filtre à réponse impulsionnelle infinie pour détecter le contour C d'une
image.
Le calcul des contours se fait alors récursivement, avec des conditions initiales nulles aux
bords de l'image. On va construire les contours droit (C-) et gauche (C+) de notre image I(x) :
Equation 20
On obtient alors le contour C(x) de l'image.
Le coefficient alpha peut varier :
- alpha grand : le contour prendra en compte le moindre changement d'intensité de l'image,
- alpha petit : le contour ne prendra en compte que les contours marqués au détriment d'une
mauvaise localisation.
Exemple :
Figure7
19
IV_ Les contours actifs = les snaks
Une approche très différente des méthodes antérieures de détection de contours a été proposée
en 1987 par Kass, Witkins et Terzopoulos [Kassetal., 1988], appelée contours actifs ou snaks.
Il s’agit d’une méthode semi-interactive dans laquelle l’opérateur place dans l’image, au
voisinage de la forme à détecter, une ligne initiale de contour. Cette ligne sera amenée à se
déformer sous l’action de plusieurs forces :
Une énergie propre, assimilée à l’énergie mécanique de tension et de torsion d’une ligne
matérielle,
Une énergie potentielle imposée par l’image qui vise à plaquer la courbe sur les contours,
Une énergie externe, introduite par l’utilisateur pour traduire les contraintes spécifiques du
problème qu’il se pose.
Sous ces énergies, le contour actif va évoluer pour rechercher la position d’énergie minimale,
qui sera ainsi un compromis entre les diverses contraintes du problème.
L’écriture formelle du problème passe par la définition paramétrique du contour, en fonction
d’une variable s généralement l’abscisse curviligne :
Equation 21
Equation 22
Equation 23
Ou
La première dérivée prend en compte les variations de longueur de la courbe, (c’est donc un
terme de tension (résistance à la rupture), qui est contrôlé par l’élasticité que l’on attribue au
contour),
Tandis que la seconde exprime les variations de la courbure (c’est un terme de flexion
contrôlé par la raideur du contour).
Ces deux termes agiront donc pour produire une courbe régulière.
Le second terme d’énergie : Eimage caractérise les lignes que l’on souhaite suivre. Dans le cas
de détection de contours, ce sont des lignes de fort gradient, il vaut donc généralement :
20
Eimage= -∇ƒ
Equation 24
Mais il peut être adapté pour suivre les maximums des niveaux de gris (dans ce cas Eimage = f),
ou toute autre fonction définie à partir de ceux-ci.
Enfin le dernier terme d’énergie : Eexterne est choisi par l’utilisateur. Il peut avoir des formes
très variées afin, par exemple, de contraindre le contour à ressembler à un gabarit donné, à
s’approcher d’un contour déjà détecté sur une autre image (suivi de séquences, ou images à
3D).
On notera cependant que, dans le cas de volumes numériques tridimensionnels f{x, y, z), il est
possible d'étendre les contours actifs à des surfaces actives pour lesquelles l'énergie s’exprime
comme pour des plaques minces.
Le principe de la méthode de détection par contour actif ou dite par "snake"
Cette méthode consiste à placer aux alentours de la forme à détecter une ligne initiale de
contour. Cette ligne va se déformer progressivement selon l'action de plusieurs forces qui vont
la tirer ou la pousser vers la forme.
Figure8 :contours actifs(snaks)
On considère que le snake est composé de n points Vi que l'on définit de façon paramétrique
en fonction de l'abscisse curviligne s. Cette méthode se base sur trois énergies associées au
snake:
Son énergie interne qui est due à la forme du contour: Eint
21
L'énergie potentielle de l'image, qui va attirer la ligne du snake vers les
contours effectifs de l'image: E image
L'énergie de contraintes choisie par l'utilisateur suivant le contour que ce
dernier souhaite obtenir: Econt
Où:
Eint =(a(s)).||V’(s)|| + b(s).||V’’(S)||)
Equation 25
Où a et b poids respectifs de la dérivée V’ et de la dérivée seconde V’’
a et b varient et forment un intermédiaire entre un contour souple mais plutôt irrégulier (pour
se caler sur les coins) et un contour sans s'accrocher sur du bruit.
Où:
Eimage = -grad(i)
Equation 26
Et où:
Econt = Econt(s)
Equation 27
Celle-ci s'exprime uniquement en fonction de V(s)
Cela nous donne une énergie totale de :
Etotale(Vi-1, Vi , Vi+1)=∑[Eiint((Vi-1, Vi , Vi+1)+Eiimage(Vi)+Eicont(Vi)]
Equation 28
V_ Morphologie mathématique
1 Définition : La morphologie mathématique est une branche des mathématiques présentant des liens forts
avec l'algèbre, la théorie des treillis, la topologie et les probabilités.
Le développement de la morphologie mathématique a été inspiré par des problèmes de
traitement d'images, domaine qui constitue son principal champ d'application. Elle fournit en
particulier des outils de filtrage, segmentation, quantification et modélisation d'images.
La morphologie mathématique a pour racines principales la théorie des treillis et la géométrie
aléatoire. Crée par G. Matheron et J.Serra en 1964, elle a été connue par trois publications de
base de ces derniers, à savoir :
{MAT75}, qui porte sur les ensembles ((cadre topologique, ensembles aléatoires, modèle
22
booléen, convexité, granulométries, représentation des transformations croissantes) ;
{SER82}, axé sur les transformations invariantes par translation (extension aux fonctions,
morphologie discrète, amincissements, combinaison d'opérateurs) ;
{SER88}, qui étend la démarche au cadre des treillis (dilatation, theorie du filtrage
morphologique, connexité, squelette, fonctions booléennes). Cette démarche a été poursuivie
par H.Heijmans et Ch. Ronse {HEI90} {RON91}.
Définition de la morphologie mathématique :
Techniques non linéaires de traitement du signal reposant sur des opérations de
supremum et d'infimum
(Inf: plus grand minorant ∧ {Xi} Sup: plus petit majorant ∨ {Xi})
2 Opérations élémentaires
Dilatation : Faire un programme qui en entrée prend une image f, et en sortie donne l’image
de sa dilaté. On rappelle que :
D(f,B)(x) = sup {f(x − y)/y B}
Equation 29
Le tester sur des images (constater l’augmentation du niveau de gris, et la propagation des
maxima locaux).
Erosion : Faire un programme qui en entrée prend une image f, et en sortie donne l’image de
son érosion. On rappelle que :
E(f,B)(x) = inf {f(x − y)/y B}
Equation 30
Le tester sur des images (constater la diminution du niveau de gris, et la propagation des
minima locaux).
3 Structure de base
L'analyse d'images peut se diviser en trois grands types de problèmes : Codification,
Extraction de caractéristiques et Segmentation.
La structure de travail est le treillis et les lois fondamentales sont le supremum et l'infimum.
23
A) Supremum et infimum
Maximum et minimum point à point entre deux fonctions.
Les fonction f et g le supremum et infimum
B) Treillis
La structure fondamentale est le treillis complet, ou ensemble L tel que:
L est muni de l'ordre partiel :
Et pour toute famille d'éléments {Xi} L, il existe, dans L, un supremum et un infimum.
Les transformations premières sont celles qui préservent ces lois de base du treillis.
Préservation de l'ordre: X Y ψ (X) ψ (Y) croissance
Commutativité avec Sup.: ψ (∨Xi ) = ∨ψ (Xi ) dilatation
Commutativité avec Inf.: ψ (∧Xi ) = ∧ψ (Xi ) érosion
Treillis utilisés en imagerie
Le treillis des ensembles :
(P(E), )
Supremum : ∪
Infimum : ∩
Le treillis de l'ensemble des fonctions F : E → T :
(TE , ), (E est l'espace des points, T est l'ensemble ordonné des niveaux de gris).
Relation d'ordre : F1 F2 E, F1(p) F2(p)
Supremum : ∨, ∨i Fi : p → supi Fi(p)
Infimum : ∧, ∧i Fi : p → infi Fi(p)
24
4 Ouverture et fermeture
Ouverture : Faire un programme qui en entrée prend une image f, et en sortie donne l’image
de son ouverture. On rappelle que :
fB = D(E(f,B),B)
Equation 31
Le tester sur des images (vérifier que les pics plus étroits que l’élément structurant est
écrêtés).
Fermeture : Faire un programme qui en entrée prend une image f, et en sortie donne l’image
de sa fermeture. On rappelle que :
fB = E(D(f,B),B)
Equation 32
Le tester sur des images (vérifier que les vallées plus étroites que l’élément structurant est
comblées).
4 Influence de l’élément structurant :
Modifier les programmes précédents en utilisant cette fois l’élément structurant :
B′ = {y = (y1, y2)/max (|y1|, |y2|) ≤ r}
Equation 33
25
PARTIE
Lorsque l'on étudie la détection de contours dans
le cas d'une application précise, il devient possible et
même indispensable d'adapter ces méthodes au but
recherché. En effet la connaissance du contexte nous
permet d'extraire des conditions supplémentaires de
sélection des contours.
Par exemple, dans le domaine de la robotique, on peut ne
sélectionner que les éléments structurant des contours
détectés par des capteurs (droites, cercles, etc.) afin
d'améliorer sa localisation dans l'espace.
II Domaines d’Applications
d’extraction des contours
26
II. Les codes Data Matrix
Les codes Data Matrix sont une nouvelle génération de codes symboliques bidimensionnels,
dérivés des codes à barres, qui utilisent les deux dimensions du plan, à la manière d'un damier
dont les cases constituent les éléments binaires.
Voici ce à quoi ressemble un code Data Matrix :
Figure9
La méthode adoptée pour reconnaître efficacement un code Data Matrix est la suivante :
Détection de contours et assemblage de ces contours en chaînes puis en lignes.
Recherche de couples de lignes ayant les propriétés du motif en L des codes
Data Matrix en utilisant les propriétés géométriques et les propriétés de texture
de la zone délimitée. En effet, le bord gauche et le bord du bas forment un L
noir, tandis que le côté droit et celui du haut alternent les pixels noirs et blancs.
Analyse du bord du symbole pour identifier le nombre de cellules.
Échantillonnage des valeurs de la matrice selon le nombre et la position des
cellules du bord du symbole.
Les codes Data Matrix sont appelés à remplacer un jour nos codes barres actuels.
III. La biologie
Il devient intéressant d'appliquer les recherches en traitement d'images aux domaines de la
médecine, qui s'informatise énormément. En particulier, on peut distinguer plusieurs types de
besoins :
27
La reconstruction en 3D du corps humain : les techniques actuelles nous
permettent d'obtenir des séries d'images 2D représentant des coupes
successives d'une zone du corps humain. Ces coupes sont le résultat de
scanners médicaux. A partir de ces images 2D, il devient intéressant de
reconstruire un modèle en 3 dimensions de cette même zone. Ces techniques
d'assemblage font appel à des techniques de détection de contours
performantes et adaptées à cet usage.
La détection du noyau cellulaire après analyse par microscope.
La reconstruction du système osseux ou encore des arbres vasculaires du corps
humain.
IV. La robotique
La détection de contours intervient également dans le domaine de la vision par ordinateur.
Initialement motivée par les applications à la robotique, la vision par ordinateur voulait doter
les machines d'une vision semblable à celle de l'homme. En particulier, il semblait
indispensable de disposer d'informations tridimensionnelles sur les objets entourant le robot,
pour éviter les obstacles, pour les reconnaître ou pour les saisir. Les capteurs robotiques
classiques étant trop lents ou trop peu précis, seules des méthodes inspirées de la vision
biologique parurent adaptés. La stéréovision, qui permet de voir en relief avec plusieurs «
yeux », en fut un exemple type.
Aujourd'hui, les applications principales de la vision par ordinateur ne sont plus seulement
robotiques : reconnaissance des formes, télédétection, contrôle industriel, imagerie médicale,
imagerie satellite, etc. Plus surprenant, de nombreuses applications voient le jour en réalité
virtuelle et en trucage vidéo : par exemple, mélanger images de synthèses et images réelles
nécessite l'extraction d'informations 3D à partir du réel.
28
partie
III Exemple d’Application
Imagerie médicale
29
1) Les contours classiques
Filtrage 10 : par Laplacian of Gaussian
Filtrage11 : par Prewitt
30
Filtrage12 : par Roberts
Filtrage13 : par Sobel
31
2) Les contours par Morphologie Mathématique :
Figure14 : Erosion de la région par morphologie math
Figure 15 : Bouche les trous par morphologie math
32
Figure16 : Fermeture les trous par morphologie math
Figure17 :Histogramme colorer
33
3) Le filtre de Deriche
Figure18
34
Annexe
35
1) Code des contours classiques
function extractcnt(x)
f=imread('7.jpg');f=rgb2gray(f);f=double(f)/255.0; PF=edge(f,'prewitt');
RF=edge(f,'roberts'); S=edge(f,'Sobel'); LF=edge(f,'log'); CF=edge(f,'canny');
choice=0;
while (choice~=5)
choice=input('1: Prewitt\n2: Sobel\n3: Roberts\n4: Laplacian of a
Guassian(LoG)\n5: Canny\n6: Exit\n Enter your choice : ');
switch choice
case 1
figure(1)
subplot(1,2,1),subimage(f),title('Original Image')
subplot(1,2,2),subimage(PF),title('Prewitt Filter');
case 2
figure(2)
subplot(1,2,1),subimage(f),title('Original Image')
subplot(1,2,2),subimage(S),title('Sobel Filter');
case 3
figure(3)
subplot(1,2,1),subimage(f),title('Original Image')
subplot(1,2,2),subimage(RF),title('Roberts Filter');
case 4
figure(4)
subplot(1,2,1), subimage(f),title('Original Image')
subplot(1,2,2),subimage(LF),title('Laplacian of Gaussian (LoG) Filter');
case 5
figure(5)
subplot(1,2,1), subimage(f),title('Original Image')
subplot(1,2,2),subimage(CF),title('Canny Filter');
case 6
display('Program Exited');
%otherwise
display('\nWrong Choice\n');
end
end
36
2) Code d’extraction par Morphologie
Math
function contactif(x)
% Lecture image
img = imread('7.jpg');
figure(1)
subplot(1,2,2),subimage(img),title('image initial');
img = double(img(:,:,1));
% Selection des pixels correspondant a un
% mode de l’histogramme
e = find(img>118);
mask = zeros(size(img));
mask(e) = 255;
figure(2)
imhist(img);
%subplot(1,2,2),subimage(e),title('histogramme');
% Erosion de la region par morpho math
se = strel('disk',3);
maskErode = imerode(mask,se);
figure(3)
subplot(1,2,2),subimage(maskErode),title('Erosion de la region par morpho
math');
% Seuillage par hysteresis
%maskHyst = hysteresis(mask,maskErode);
%figure(3)
%subplot(1,2,2),subimage(maskHyst),title('Seuillage par hysteresis');
% Bouche les trous par morpho math
maskFill = imfill(maskErode,'holes');
figure (4)
subplot(1,2,2),subimage(maskFill),title('Bouche les trous par morpho
math');
% Fermeture de la region par morpho math
se = strel('disk',1);
final = imclose(maskFill,se);
figure(5)
subplot(1,2,2),subimage(final),title('Fermeture de la region par morpho
math');
end
37
3) Code d’Histogramme
4) Code de Kirsch
f=imread('7.jpg');f=rgb2gray(f);f=double(f)/255.0;
% Création de la LUT pour afficher en niveau de gris
r=[0 0.5 1];
v=[0 0.5 1];
b=[0 0.5 1];
map=[r, v, b];
% Création de la LUT pour afficher en niveau de gris
imagesc(f);
colormap(f) ;
% Affichage de l’histogramme
imhist(f,3) ;
function [e,t] = kirsch(x,thresh);
f=imread('7.jpg');f=rgb2gray(f);f=double(f)/255.0;
k(:,:,1) = [-3 -3 5; -3 0 5; -3 -3 5];
k(:,:,2) = [-3 5 5; -3 0 5; -3 -3 -3];
for i=3:7
k(:,:,i) = rot90(k(:,:,i-2));
end
f = double(f);
for i=1:7
y(:,:,i) = imfilter(f,k(:,:,i),'symmetric','same');
end
e = max(abs(y),[],3);
if nargin == 2
if (isempty(thresh))
thresh = 2*sqrt(mean(e(:).^2));
end
e = e > thresh;
t = thresh;
elseif nargout == 2
error('Problème dans les valeurs entrées’);
end
38
Conclusion En conclusion je peux dire que le Mini-projet est terminé et abouti.
Pour moi, ce Mini-projet fût le premier de la sorte, les études que nous avions faites jusqu’à
présent nous
Avaient donné l’occasion de réaliser du traitement d’image et de l’extraction des contours
appliquée dans le domaine d’imagerie médicale.
Pour ce Mini-projet, j’ai dû approfondir toutes mes connaissances dans les domaines vus en
cours, de
Plus, cela nous a obligé à prendre en main d’autres notions qui relèvent d’avantages du
domaine d’extraction des contours(les méthodes classiques et les méthodes a temps réel).
Ce Mini-projet nous a aussi permis d’apprendre à acquérir de nouvelles compétences et de
maitriser de nouveaux outils.
Au final, je suis très satisfait du travail réalisé dans le temps qui j’ai été imparti. J’ai appris
énormément de choses sur les techniques de traitement. De plus j’ai approfondi mes savoirs
concernant el logiciel Matlab.
Pour conclure, je peux dire que ce Mini-projet a été très bénéfique pour moi car il ma aidé à
mieux comprendre le monde de traitement d’image.
39
Bibliographie
Wikipédia
Cours traitement d’image insa Rouen
Cours Mr Bouikhalene
Introduction au traitement d'images (Diane Lingrand)
Traitement et analyse des images numériques
(BRES Stéphane, JOLION Jean-Michel,
LEBOURGEOIS Frank)
Cite Benjamin Garnier & Benjamin Jaton