Vous êtes sur la page 1sur 40

1.

Prtraitement et transformation dimages


L'interprtation automatique d'images est utilise, de manire limite cause des problmes de fiabilit qu'elle pose, dans tous les cas o un volume norme de donnes pictoriales doivent tre compares: trajectoires de particules lmentaires, empreintes digitales, photographies ariennes ou de microscope lectronique. De manire encore exprimentale, elle intervient dans la commande de robots qui contrlent leurs mouvements par une camra de prise de vue; par contre le contrle optique d'une production industrielle est monnaie courante. Les difficults sont de nature et d'importance diverses, elles dpendent videmment du problme pos par l'application. En pratique il s'agira, par exemple, de reconnatre des chromosomes d'une certaine forme dans une image fournie par le microscope, ou encore de dterminer la prsence d'un objet pralablement dcrit dans un champ dlimit. L'objet peut tre donn comme modle, il s'agira alors de comparer entre elles deux (parties de) figures. Il peut tre identifiable par sa couleur ou son intensit lumineuse, mais il peut galement tre structur de manire complexe telle que l'image, mme stylise, d'un ciel couvert de nuages, d'une molcule organique ou d'une pice de mcanique. Un problme se distingue immdiatement: l'image plane donne est-elle prendre la lettre ou faut-il la considrer comme le codage d'une scne trois dimensions obtenue par projection? L'analyse d'une projection de l'espace trois dimensions, indpendante d'un changement d'angle de prise de vue, est trs difficile mme lorsqu'on se restreint un univers d'objets gomtriques simples. Nous reviendrons sur ce problme au chapitre suivant. Pour les images planes, nos hypothses sont les suivantes:

1.1 Modle discrtis dimage


Une image idale est une fonction deux variables relles, dfinie sur R2. Ses valeurs sont soit des nombres rels mesurant une intensit lumineuse, soit des vecteurs numriques combinant des informations telles que: intensit, couleur, niveau de rfrence ou type de texture. Ces fonctions seront supposes bornes, drivables par morceaux et intgrables sur R2. La plupart du temps, nous aurons affaire une image discrte, numrise pour servir de donne un ordinateur, c'est--dire dfinie sur une grille rectangulaire finie, coordonnes entires et valeurs prises dans un petit ensemble d'entiers (dtermines, par exemple par un byte). Une image sera dite en noir-et-blanc ou deux niveaux si ses valeurs sont binaires. On appelle rsolution le nombre dchantillons par unit de longueur, mesure par exemple en dpi (dots per inch, points par pouce).

Figure 1.1 Image discrte

Il est vident que toute image idale peut tre approche par une image numrise, une tolrance prs. D'autre part la notion d'image idale permet de dcrire avec amplement de flexibilit toute image relle, optique ou lectronique. Une image sera donc un rseau, en

18

1. Prtraitement en transformation dimages

gnral rectangulaire, de points appels pixels munis de valeurs numriques, scalaires ou vectorielles discrtes. Le passage de l'image idale (par exemple donne mathmatiquement) l'image discrte s'appelle l'chantillonnage (il est accompagn d'un arrondi sur les valeurs aux points d'chantillonnage). L'opration inverse est une interpolation (ou, si elle est rpte pour une nouvelle grille: le rchantillonnage). En programmation, la donne d'une image sera du type tableau deux dimensions. Quant la forme des rsultats, nous serons plus ouverts. La plupart des algorithmes fourniront une image transforme, d'autres une indication (probabilit, position) pour un objet prsent. Il s'agira alors d'une description partielle de l'image donne, dans un langage que nous prciserons de cas en cas. Lorsqu'une transformation a pour rsultat une image, nous supposerons l'image rsultat indpendante de la donne source (copie) bien qu'en pratique on puisse souvent agir sur une seule et mme variable globale de type tableau. Sans autre indication, on supposera par la suite les composantes du tableau d'un type intervalle d'entiers. On distingue en gnral trois sortes de traitements, aussi appels oprateurs, d'images numrises: les oprateurs ponctuels, qui agissent sur les pixels indpendants les oprateurs locaux, qui dfinissent une nouvelle valeur de pixel en examinant son voisinage. Deux manires de dfinir le voisinage existent pour les grilles rectangulaires de numrisation. les oprateurs globaux, qui prennent en compte toute l'image donne pour dterminer chaque pixel de l'image rsultat.

Pour pouvoir les prsenter plus formellement, nous nous rfrons un modle de plan discret: 1.1.1 Modle discret du plan Les oprations de traitement dimages et lextraction de primitives gomtriques dans les formes numrises sont fondes sur un modle discret du plan, tudi par J. Serra e.a. sous le nom de morphologie mathmatique. On y tudie les proprits topologiques des rgions du plan; une rgion est reprsente par des pixels noirs sur fond blanc, disposes sur une grille rectangulaire1. Nous naurons besoin, en pratique, que dune zone rectangulaire, borne, du plan. Les coordonnes varient de 0 255 (ou une autre intervalle dont la longueur est souvent une puissance de 2). Exemple 1) a)Description, en Ada, dimages typiques de cc 1 Moctet. c: constant Positive:= 1024; -- GridSize=c*c subtype PixelValue is Integer range 0..255; type Image is array (0..c-1,0..c-1) of PixelValue; 1) b)Les quatre grilles 6x10 de pixels noirs ou blancs de la Fig. 1.3.

Dfinition Un point du plan discret est appel un pixel (picture element, pel). Sa valeur (ou sa couleur) sera reprsente par 0 (blanc) ou 1 (noir)2. Un domaine (ou une rgion) est un sous-ensemble des points dune grille; sauf indication contraire cest lensemble des points noirs.
1.

J. Serra utilise de prfrence une grille hexagonale dont les pixels sont disposs de manire quidistante: la distinction entre 4-connexit et 8-connexit est alors caduque.

1. Prtraitement et transformation dimages

19

Exemple Codage des quatre images de la Fig. 1.3 avec la convention: blanc = 0 et noir = 1.
0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1.2 Traitements locaux


1.2.1 Traitement ponctuel: le seuillage Parmi les valeurs possibles attribues aux pixels d'une image, on veut parfois slectionner une plage plus restreinte, par exemple toutes les intensits au-dessus d'un seuil parmi les niveaux 0 255. L'image deux niveaux ainsi obtenue reprsente la zone slectionne (et son complment); l'information qu'elle contient est fortement rduite (figure 1.2), mais cela peut tre souhaitable par exemple en lecture optique. Le choix du seuil doit tre judicieux; on essayera d'viter au mieux les effets parasites de variations d'intensits proches du seuil. L'histogramme des valeurs de pixel peut tre trs utile cet effet.

Figure 1.2 Image 16, 8, 4 et 2 niveaux. La rduction du nombre de niveaux est obtenue par arrondis successifs; l'image 2 niveaux correspond un seuillage avec = 1/2

Un autre traitement ponctuel, utile pour la visualisation, est le rhaussement des intensits plus ou moins contrastes dans l'image donne, au moyen d'une galisation de l'histogramme (figure 1.3).

2.

En pratique, chaque pixel sera cod par un octet, une valeur entre 0 et 255, ou plus gnralement par un entier, voire un code de couleur RGB.

20

1. Prtraitement en transformation dimages

Figure 1.3 Egalisation d'histogramme image d'entre et son histogramme concentr dans les noirs image de sortie et son histogramme galis.

1.2.2 Traitements prliminaires: l'attnuation du bruit La qualit d'une image donne est gnralement insuffisante pour qu'un algorithme de dcomposition, voire de reconnaissance d'lments constitutifs spcifis, puisse s'appliquer de manire stable. Les sources d'irrgularit sont des dformations du domaine et des fluctuations parasitaires des valeurs. Ces dernires sont particulirement gnantes; surtout lorsque leur variabilit locale est trs rapide, il est d'usage de les grouper sous le gnrique de bruit de fond. On suppose gnralement que le bruit provient de sources diverses et indpendantes, c'est par consquent une fonction alatoire qui se superpose additivement l'image idale. Un moyen d'attnuer ce bruit consiste superposer plusieurs images de la mme source. L'amplitude de la fonction idale est alors multiplie tandis que les bruits, peu corrls entre les diverses copies, s'intensifient beaucoup moins. Plus prcisment, soient N copies de f prsentent chacune un bruit f de valeur moyenne nulle et d'cart quadratique moyen mesurant son intensit: = Var f

On obtient par superposition: Nf N Var f = N pour l'image moyenne pour lcart

L'amplitude relative du bruit est ainsi: N 1 ----------- , soit rduite de ------- . fN N L'opration typique ici est l'addition d'images discrtes, point par point. Ceci suppose videmment N copies parfaitement cales (repres afin d'tre superposes sans dcalage);

1. Prtraitement et transformation dimages

21

nous verrons d'autres mthodes vitant cette contrainte et plus efficaces, du moins dans le cas o l'on a des informations concernant la nature du bruit. 1.2.3 Traitement local: le lissage Reprenons le problme de l'limination d'un bruit caractris par des points clairs ou foncs, distribus uniformment mais alatoirement. Un tel phnomne s'estompe presque totalement lors de la transformation suivante. Soient f(i, j) les valeurs de l'image discrte donne, au voisinage du point ( x, y ) ( i x + j y 1 ) . Soit: 1 M = -4

ix + jy 1

f(i, j)

M est la moyenne sur les points adjacents (horizontalement ou verticalement) (x, y): remplacer f(x, y) par M, en chaque point de la grille. Dans les bords du rectangle, on utilisera ventuellement une expression diffrente pour M. Cette opration est locale parce qu'elle n'affecte, en chaque point, qu'un voisinage de celui-ci; en particulier elle ne requiert pas ncessairement le stockage, en mmoire vive, de toute l'image traiter. L'effet de la transformation est un lissage o aucun point individuel de la grille ne subsiste. L'effet de flou qui en rsulte peut tre limit, et les contrastes conservs, par d'autres variantes qui consistent remplacer f(x, y), par exemple, par: 1 -- ( f(x, y) + M ) 2 ou par: si f(x, y) - M alors M sinon f(x, y) selon les irrgularits que l'on dsire liminer. Une diffrence est noter entre notre calcul de M, sur un voisinage en carreau, et le choix, galement courant, d'un voisinage carr (de ct 3 ou plus) centr en (x, y) et parallle aux axes de coordonnes. Tel est le cas, par exemple, pour la moyenne M suivante: 1 M = -8

ix 1 jy 1 ( x, y ) ( i, j )

f(i, j)

3 4 5

1 0 7 4

P
6

P
6

Figure 1.4Deux voisinages du point P. Le voisinage carr contient 8 points voisins de P, numrots de 0 7. Le voisinage en carreau est form des 4 voisins pairs.

Une difficult supplmentaire provient du fait que les nouvelles valeurs doivent tre arrondies pour entrer dans la mme gamme que les valeurs de l'image digitalise originale. Par exemple, pour des images en noir et blanc (noir = 1), on choisira comme nouvelle valeur de f(x, y): si .f(x, y) + .M 1 alors 1 sinon 0.

22

1. Prtraitement en transformation dimages

Figure 1.5 Lissage avec une moyenne sur un voisinage carr de ct 3, 5, 9. Un effet similaire peut tre obtenu en itrant l'oprateur de lissage de taille 3x3.

Avec = 1 , = 0 on a l'identit; l'autre extrme = 0 permet de paramtrer, l'aide de , le pourcentage du voisinage d'un point (x, y) suffisant pour entraner la modification de f(x, y). Lorsqu'on spcifie localement un oprateur de lissage, on fait bien de s'interroger sur ses proprits: est-il utile de l'itrer ou, au contraire, l'opration est-elle stationnaire? La fentre peut-elle tre dplace dans un ordre quelconque, en rutilisant des valeurs dj partiellement modifies? Le voisinage a-t-il la bonne forme (isotropique ou non) et la taille suffisante pour compenser le bruit identifi? Les dcisions seront galement prises en fonction du traitement ultrieur prvu. Par exemple s'il est important de conserver toutes les courbes fermes et les domaines connexes dans l'image analyser, on renforcera les lignes tnues en favorisant l'paississement des lignes pleines plutt que de les estomper. 1.2.4 Traitement local: le gradient Au lieu de rgulariser localement l'image par un calcul de moyenne, on peut viser la proprit contraire: mettre en vidence des variations locales. Ainsi un voisinage en carreau peut tre utilis pour dterminer des drives partielles discrtes: 1 f x(x, y) = -- ( f(x + 1, y) f(x 1, y) ) 2 1 f y(x, y) = -- ( f(x, y + 1) f(x, y 1) ) 2
o Un voisinage carr permet de choisir d'autres directions, 45 :

1 f x + y(x, y) = -- ( f(x + 1, y + 1) f(x, y) ) 2 1 f x y(x, y) = -- ( f(x, y + 1) f(x + 1, y) ) 2 La norme du gradient ainsi obtenu vaut, suivant le cas, et un facteur prs: f(x + 1, y) 2 + f(x 1, y) 2 + f(x, y + 1) 2 + f(x, y 1) 2 2f(x + 1, y)f(x, y + 1) 2f(x, y + 1)f(x, y 1) ou f(x + 1, y + 1) 2 + f(x, y + 1) 2 + f(x, y) 2 + f(x, y 1) 2 + 2f(x + 1, y + 1)f ( x, y ) 2f(x, y + 1)f(x + 1, y) C'est le remplacement de f(x, y) par une telle norme que l'on appelle prendre le gradient de l'image. Il s'agit d'un traitement qui met en valeur les artes et les changements vifs de niveau de gris. Tel quel, il est extrmement sensible au bruit variation rapide; il est donc prcd et en gnral combin directement avec un lissage.

1. Prtraitement et transformation dimages

23

D'autres variantes de la drivation discrte sont fournies par le Laplacien: f = f xx + f yy = f ( x + 1, y ) + f ( x, y + 1 ) + f ( x 1, y ) + f ( x, y 1 ) 4f ( x, y ) ou par des oprateurs plus slectifs. Au lieu du gradient en norme on prendra, par exemple, le gradient directionnel fx afin de mettre en vidence des passages clair-fonc aux confins de rgions diffrentes, juxtaposes horizontalement. Le gradient se gnralise la dtection de lignes pente pr-spcifie; le choix du voisinage de travail et l'ajustement des coefficients pour les valeurs considres de f sont immdiats. 1.2.5 Oprateurs linaires Une notation courante et pratique pour exprimer une transformation locale linaire est celle du masque de coefficients. Le masque est une matrice dont les dimensions sont donnes par le voisinage considr; la case centrale du masque concide avec le pixel qui prendra la nouvelle valeur calcule. Enfin, le calcul de la nouvelle valeur se rsume la somme des valeurs de chaque pixel du voisinage, multipli par le coefficient correspondant dans le masque. La figure 1.6 montre les masques classiques de taille 33. La composition d'oprateurs linaires est encore linaire et peut, par consquent, galement tre reprsente par un masque. Par contre, le module du gradient n'est plus linaire. De mme, les huit masques de Freemann sont normalement utiliss pour extraire la direction maximale de contraste au voisinage du point considr; cette direction peut tre code l'aide d'une valeur comprise entre 0 et 7 (comme dans la figure 1.4). 1.2.6 Oprateur sur les images binaires ( deux niveaux de gris) Une notion essentielle en topologie est celle de voisinage. Nous examinerons les voisins directs dun point dans une grille afin de dfinir formellement les notions de chemin et de connexit. Dfinition (voir Fig. 1.4) Le 4-voisinage dun point P=(x,y) est lensemble des 4 voisins directs de code pair (selon Freeman) autour de P: (x+1,y), (x,y+1), (x-1,y) et (x,y-1). Le 8-voisinage dun point P=(x,y) est lensemble des 8 voisins, cods selon Freeman de 0 7, de coordonnes (x+i, y+j) avec i1, j1 et i +j 03. Remarque Deux points (x,y) et (x+i, y+j) sont voisins ssi Max{i, j} = 1. Remarque Le 4-voisinage de P est aussi appel le voisinage pair de P; deux points appartenant lun au voisinage pair de lautre sont dits voisins pairs. Dfinition Un chemin est une suite de points Po, ..., Pn de la grille, telle que Pi-1 est voisin de Pi pour tout in. Dfinition Un chemin pair est un chemin Po, ..., Pn o Pi-1 est un voisin pair de Pi, pour tout in.
3.

En topologie usuelle, on inclut le point P= (x,y) parmi ceux de son voisinage; de plus, tout ensemble contenant un voisinage est galement un voisinage ! Ici, on considre exclusivement les voisins directs, on y inclut parfois le point P.

24

1. Prtraitement en transformation dimages

a) Masques du gradient 1 0 2 -1

1 Gx = -1 0 2 1 Gy =

b) Masques de PREWITT et SOBEL

-1 0 P x = -1 0 -1 0

1 1 1 P y =

1 0

1 0

1 0 S x =

-1 0 -2 0 -1 0

1 2 1 S y =

1 0

2 0

1 0

-1 -1 -1

-1 -2 -1

c) Masques de FREEMAN

-1 1 H 0 =

1 H 1 =

1 H 2 =

1 1

1 H 3 =

1 1 1

-1 -2 1 -1 1 1

-1 -2 1 -1 -1 1

-2 1

-2 -1 -1 -1

-1 -1 -1

1 H 4 = 1 1

-1 H 5 =

1 1 1

-1 -1 -2 -1 1 1 H 6 =

-1 -1 -1 1 1 -2 1 1 1 H 7 =

-1 -1 1 -1 -2 1 1 1 1

-2 -1 1 -1

d) Masques du Laplacien et de la moyenne

0 L =

-1 0 -1 M =

1 9

1 1 1

1 1 1

1 1 1

-1 4 0

-1 0

Figure 1.6 Masques pour les oprateurs linaires locaux.

Exemple Dans lexemple de la Fig. 1.3, les lettres N et M peuvent tre parcourues laide dun chemin (mais pas par un chemin pair). La lettre O est un exemple de chemin ferm (Pn=Po). Deux chemins peuvent se croiser sans avoir de pixel commun. Pour les chemins pairs cela nest pas possible; mais on observe plus prcisment: Dfinition Deux chemins se croisent sils relient les angles opposs complmentaires dune grille rectangulaire.

1. Prtraitement et transformation dimages

25

Thorme de Rolle discret: Si deux chemins se croisent alors ils ont au moins un pixel commun si lun des deux est pair.
Remarque Une variante de ce thorme affirme que si un chemin relie lintrieur lextrieur dun chemin ferm (Po=Pn), alors ils ont un pixel commun si lun deux chemins est pair. Plus prcisment: Thorme de Jordan discret: Un chemin ferm dcoupe le plan discret en rgions 4-connexes. Remarque Si le chemin ferm (Po=Pn) est simple (PiPk pour 1ikn) et tal (Pi et Pk ne sont pas voisins si |i-k|>2), alors il spare le plan en deux compostantes simplement 4-connexes: lune est borne et appele lintrieur tendis que lautres est lextrieur. On a aussi la proprit duale: un chemin ferm pair spare le plan discret en rgions simplement connexes. 1.2.7 Topologie discrte Dfinition a) Un domaine D, sous-ensemble des pixels dune grille rectangulaire, est 8-connexe si deux points quelconques de D peuvent tre relis par un chemin entirement contenu dans D. b) D est 4-connexe si deux points quelconques de D peuvent tre relis par un chemin pair contenu dans D. c) Un domaine D est simplement connexe si pour deux points quelconques de D et deux chemins reliant ces extrmits, tous les points de la grille, entours par ces chemins, sont entirement contenus dans D. Remarque Un domaine connexe sans trou est simplement connexe; avec un trou (un lac dans une le), il est doublement connexe. Avec n-1 trous il est n-connexe; en particulier 1-connexe tant synonyme de simplement connexe. Dfinition Le bord dun domaine connexe D est lensemble des pixels de D, voisins dun pixel du complment de D. Le bord pair ou 4-bord de D est lensemble des pixels de D, dont un voisin pair appartient au complment de D. Remarque Le bord pair est un sous-ensemble du bord complet; on dit que le 4-bord est contenu dans le 8-bord. On prcise parfois quil sagit du bord intrieur de D, le bord extrieur tant le sous-ensemble (analogue) du complment de D. Dfinition Un point de D qui ne fait pas partie du bord sappelle point intrieur de D; si D na aucun point intrieur, il se confond avec son bord et on dit que D est mince.

26

1. Prtraitement en transformation dimages

1.2.8 Les oprations sur les domaines Dfinition Lrosion dun domaine D est la transformation qui consiste ter le bord de D. Lrosion est un oprateur local, non linaire de masque 3x3, qui consiste faire passer un pixel noir blanc sil a un voisin blanc parmi ses 8 voisins directs. On distingue la 8-rosion de la 4-rosion, ou rosion paire qui, elle, ne supprime que le bord pair de D. Lrosion tend couper les isthmes et supprimer les barbules du domaine donn. Lrosion dun domaine mince donne lensemble vide, cest--dire une grille blanche. Dfinition La dilatation est lopration qui consiste ajouter D son bord extrieur. La fermeture de D est un lissage qui consiste en une dilatation, suivie dune rosion. Lrosion du complment de D est quivalente la dilatation de D, on dit que ces deux oprations sont duales lune de lautre. La fermeture tend combler les fjords et les dtroits dun domaine donn, sans en modifier beaucoup la surface. Ces effets des oprateurs drosion et ses drivs sont parfois souhaitables comme prtraitement; ils ont cependant le dfaut de modifier profondment la topologie des domaines contenus dans une image. 1.2.9 Oprations conservant la topologie Dfinition Un amincissement est un rosion partielle qui supprime les points du bord seulement si la connexit nest pas modifie (cest--dire chaque composante connexe le sera encore, idem pour n-connexe, etc.). De plus, il conserve la forme des parties minces (bras, ligatures). Exemple Il y a plusieurs variantes doprateurs damincissement. Par exemple celui de Zhang et Suen introduit deux critres pour dcider si un point P doit tre limin. Appelons vo, v1, .., v7 les valeurs des huit pixels voisins de P et considrons dabord les contraintes de bord ponctuelles. Non seulement v0,...,v7 doivent contenir une valeur nulle (pour que P soit un point du bord), mais cette condition est renforce: - parmi v0, ..,v7 il y a au moins deux valeurs nulles et au plus 6. Cette contrainte vite droder le fond dun fjord ou la pointe dune presqule. - les valeurs nulles parmi v0,...,v7 sont contigus; il en dcoule que les valeurs non-nulles (pixels noirs) le sont galement. Cette contrainte inhibe lrosion de points doubles du bord, ce qui couperait le domaine. En outre, les contraintes de squentialit vitent de supprimer les paires critiques de pixels voisins, appartenant au bord et safisfaisant les contraintes sparment. Une paire de tels pixels ne doivent pas tre ts simultanment. Zhang et Suen proposent de traiter alternativement: - tous les pixels au sud, lest ou au nord-ouest, cest--dire pour lesquels v0*v2*v6=v0*v4*v6=0; - tous les pixels au nord, louest ou au sud-est, cest--dire o v0*v2*v4=v2*v4*v6=0. Lamincissement ne peut pas tre ralis par un oprateur local ayant un masque de 3x3. Soit le masque doit tre agrandi pour pouvoir examiner un voisinage de rayon 2, soit une

1. Prtraitement et transformation dimages

27

squentialisation est ncessaire dans le traitement des pixels. Une solution extrme est le parcours squentiel de tous les pixels du bord accompagn du traitement avec un masque 3x3. Il suffit que la squentialisation force le traitement, lun aprs lautre, de chaque paire de pixels critiques. Pavlidis a donn plusieurs variantes diffrentes dalgorithmes damincissement.

Figure 1.7 Rsultat de deux algorithmes de squelettisation par rosion (Pavlidis 82)

Remarque Comme pour lrosion, il faut dcider a priori si on sintresse la 8-connexit du domaine aminci ou la 4-connexit; loprateur utilis sera diffrent ! Dfinition La squelettisation est un amincissement itr, aboutissant un domaine mince de mme topologie, appel le squelette. Selon loprateur damincissement choisi on aura un squelette 4-connexe ou 8-connexe; en outre, loprateur peut introduire une orientation, favorisant une squence de parcours particulire. Le squelette rsultant reste pour lessentiel univoque. Une variante de squelettisation consiste mmoriser, pour chaque pixel limin, le numro de litration courante (cela peut se faire de proche en proche et revient noter la distance entre le pixel et le bord). Chaque point du squelette conserve le numro ditration o il est devenu stationnaire. A partir de cette information la restitution du domaine est facilite: il suffit de faire crotre, partir de chaque point de squelette, un cercle de rayon born par le numro ditration.

1.3 Transformations globales


1.3.1 Transformation de Fourier Les techniques habituelles de traitement de signaux offrent une plthore de fonctions de prtraitement. L'exemple de l'lectro-cardiogramme (image une dimension) se prte bien l'illustration des techniques de filtrage, gnralisables aux images deux dimensions. Pour commencer, si les lectro-cardiogrammes enregistrs prsentaient des oscillations gnantes mais peu significatives, de priode irrgulire mais trs courte, un filtrage passe-bas aurait tt fait d'liminer ce rsidu de friture. Mais la construction de filtres adapts permet galement la dtection de signaux priodiques de forme particulire donne. C'est ce que montre la thorie de la transformation de Fourier. Un signal peut-tre dcrit soit temporellement, par les valeurs dune quantit u fonction du temps t, u(t); ou dans le domaine des frquences, en donnant son amplitude F (gnralement

28

1. Prtraitement en transformation dimages

un complexe comprenant aussi la phase du signal) en fonction de la frquence , F ( ), < < . On peut penser u(t) et F() comme tant deux reprsentations diffrentes de la mme fonction. On passe de lune lautre par la transforme de Fourier.

F( ) =

2 it u ( t ) dt

u(t) =

2it F ( ) d

Remarques F ( )e 2it est la composante de u de frquence . La transforme F de u a la proprit de dcomposer u en une superposition continue de signaux harmoniques. Les conditions d'existence des intgrales ne sont pas voques ici; dans tous les cas pratiques on travaille avec des approximations qui, elles, satisfont aux conditions d'intgrabilit requises. 1.3.2 Filtrage et corrlation Un filtre est un dispositif qui transforme un signal; favorisant certaines frquences et en amortissant d'autres, son effet est ais expliquer sur la transforme de Fourier du signal. Par exemple un filtre passe-bas idal supprime toutes les frquences au-dessus d'un seuil 0 . Mme une ralisation fort approximative d'un tel filtre a un effet spectaculaire connu par tout amateur d'lectrophonie. Notre dfinition d'un filtre est donc une fonction G() donnant divers poids aux frquences . Un signal u est transform par le filtre G, multiplicativement sur la transforme F de u. Notre dfinition inclut ainsi le cas du filtrage de frquences o G() est rel et non ngatif. Par contre, les valeurs complexes de G autorisent l'interprtation qui nous intresse; il nous faut toutefois rappeler le thorme de convolution

siF() =

2 it u ( t ) dt

etG() =

2 it v ( t ) dt

alorsF()G() =

2 it p ( t ) dt

avec p(t) =

u()v ( t ) d

On appelle p=u*v le produit de convolution des fonctions u et v; la transforme de Fourier d'un produit de convolution est donc le produit arithmtique des transformes. Considrons maintenant un signal v(-) qui, au temps , a l'longation de la forme de rfrence donne (on prendra pour v ce signal invers par rapport au temps). La fonction v(t-) dcrit le mme signal, mais dplac d'une priode t arbitraire. On pourra ds lors comparer les signaux

1. Prtraitement et transformation dimages

29

u() et v(t-); le produit de convolution u*v peut notamment tre interprt comme une corrlation p(t) des deux signaux, dpendant du paramtre t de dcalage. En particulier p(to) est maximum pour la valeur to qui rapproche le plus u() et v(to-); en effet la distance entre u et v:

( u() v ( t ) ) 2 d =

u 2() d +

v 2() d 2

u()v ( t ) d

= cons tan te 2p(t) est minimum pour t = to. Remarquons que si le signal observ u laisse apparatre une priodicit (du moins sur le tronon recueilli), il en ira de mme pour p=u*v. La dtection d'un signal priodique de la forme v(t-) dans le train d'ondes u() est ramene la reconnaissance d'un maximum priodique dans le produit de convolution p. Ce produit est obtenu, en principe, par un filtre complexe (la transformation de Fourier G du signal de rfrence v) appliqu la donne u. Un tel filtre suppose, outre la modification d'amplitude, un dphasage donn par le coefficient complexe G() certaines frquences ; sa construction physique pose un problme majeur et il faut peut-tre s'en tenir aux mthodes programmes, d'ailleurs relativement efficaces. Cet exemple devait mettre en valeur un prtraitement typique, de corrlation globale, dont le rsultat est pratiquement complet: il ne reste qu' examiner les maxima de p=u*v. 1.3.3 Transforme de Fourier bidimensionnelle et corrlation globale La corrlation globale ralise en analyse de signaux et explique par la transforme de Fourier se gnralise aux fonctions deux variables que sont les images idales. Ces fonctions doivent satisfaire des conditions mathmatiques pour la convergence des intgrales, sur lesquelles nous n'insisterons pas: en pratique une image est toujours borne, support fini et approche par une fonction f continue (voire drivable) par morceaux. La transforme bidimensionnelle de Fourier Ff de f est donne par: F f(, ) =

R2

f(x, y)e

2 ( x + y )i dx dy

Les valeurs de Ff sont alors les coefficients du dveloppement de Fourier de f: f ( x, y ) =

R2

Ff(, )e

2 ( x + y )i d d

Comme dans le cas d'une variable, si f est relle alors: F f(, ) = F f( , )) et F f(, ) = F f( , ) o F f est la conjugue complexe et F f est le module de Ff. Ainsi: f ( x, y ) =

( Ff(, )e
D D

2 ( x + y )i

+ F f(, )e 2 ( x + y )i ) d d

=2

Re ( Ff(, )e

2 ( x + y )i ) d d

30

1. Prtraitement en transformation dimages

y f

Figure 1.8 Une image bidimensionnelle et sa transforme de Fourier.

D est une moiti de R2, par exemple: D = {(, ) 0} et l'intgrande Re ( F f(, )e 2 ( x + y )i ) = F f(, ) cos [ 0 + 2 ( x + y ) ] est la partie relle de l'exponentielle complexe. On voit qu'il s'agit d'une sinusode de priode: ----------------- , ----------------- 2 + 2 2 + 2 dont la direction de propagation est donc donne par (, ), la longueur de la priode (dans la mme direction) par 1 --------------------2 + 2 et la phase o par l'argument de Ff (, ). L'interprtation de la transforme Ff est immdiate; pour chaque direction -- fixe, F f(, ) = G ( 2 + 2 ) est le coefficient d'un dveloppement de Fourier unidimensionnel de y f ( x, y ) = g ( x 2 + y 2 ) de direction -- = -x dans le sens transversal x + y = constante, f(x, y) ne varie pas. Des artes, segments de droite ou frontires entre intensits trs diffrentes, parallles la direction fixe / ressortiront dans Ff comme des fortes composantes aux frquences 2 + 2 leves.

1. Prtraitement et transformation dimages

31

Figure 1.9 Les frquences prpondrantes dans le spectre de Fourier, dues aux artes franches dans l'image.

Si plusieurs traits parallles sont quidistants dans l'image f, cette distance d se prsentera comme une priode marque d'une valeur F f(, ) prpondrante au point 2 + 2 = 1 d 2 L'utilit de la transforme de Fourier de f n'est pas limite l'interprtation directe de Ff. Au contraire, une application importante est le traitement global de f par l'intermdiaire de Ff. Tel est le cas pour le filtrage passe-bas liminant les frquences leves dans toute direction. La rciproque d'une transforme Ff ainsi courte aura des artes estompes et un grain amorti, voire compltement liss. Dans le mme sens, mais en attnuant les frquences les plus basses, on peut limiter les variations moyennes d'intensit et obtenir une image adoucie. Souvent on prfre, au contraire, renforcer les contrastes ou les lignes de sparation: on l'obtient en munissant les coefficients Ff (, ) de facteurs adquats. Notons l'analogie du traitement (local) par le gradient avec celui (global) qui consiste favoriser les frquences leves en multipliant F f(, ) par 2 + 2 avant de reformer une image comparable f.

Figure 1.10 Une application de la transforme de Fourier la restauration d'une image bruite (a). Le spectre de Fourier (b) fait apparatre les priodes du bruit; en annulant ces composantes du spectre, la transforme inverse produit l'image filtre (c).

32

1. Prtraitement en transformation dimages

Une autre application indirecte est la confrontation globale de f avec un patron g localiser dans l'image f. Comme dans le cas d'une variable, le produit de convolution f*g(x, y) =

f(, )g(x , y ) d d f(, )g( x, y) d d

permet de dfinir la corrlation mutuelle de f et g en fonction d'un dcalage respectif (x, y): C f, g(x, y) =

C f, g(x, y) = f*g si h(x, y) = g( x, y) est la rflexion centrale de g; la transforme de Fourier de Cf, g est donc le produit des transformes de l'image f et du patron g rflchi, respectivement. D'autre part le carr moyen de la distance entre f et le patron g dplac est donn par:

f (, ) d d 2Cf, g(x, y) + g ( x, y) d d
2 2

= E 2C f, g(x, y)

o E est l'nergie totale de f et g, indpendante de x et y. La meilleure superposition de l'image f et du patron g est obtenue aux points (x, y) o Cf, g est maximum. Par le mme raisonnement, l'autocorrlation Cf, f de f prsentera des extrema aux points (x, y) qui marquent une priodicit approximative de f; ceci est consistant avec notre interprtation directe de Ff puisque la transforme de Fourier Cf, f, est exactement F f(, )F f( , ) = F f(, ) 2 . 1.3.4 Ralisations optique et numrique de la transforme de Fourier Les systmes optiques sont extrmement efficaces puisque l'image complte est traite simultanment, contrairement un balayage accompagn d'laboration squentielle. Nous ne prsenterons pas les nombreuses techniques possibles pour raliser optiquement la corrlation de deux images ou leur transforme de Fourier (en lumire monochromatique cohrente). Les techniques dveloppes sur la base de la reprsentation de la transforme complexe (nergie et phase) de Fourier sont groupes sous le terme gnral d'holographie. Dans ce paragraphe nous considrerons uniquement la ralisation numrique (algorithme FFT). Afin de montrer les limites de validit de la discrtisation d'une image idale f, nous rappelons l'nonc d'un thorme de Shannon, quelquefois appel thorme d'chantillonnage. Ce nom suggestif provient de ce qu'il donne une condition suffisante pour qu'un nombre fini de points (chantillons de f) dtermine exactement la transforme Ff, et par suite f toute entire. Notre illustration se bornera aux images unidimensionnelles. Soit F f() =

f(x)e

2ix dx

la transforme de f,

satisfaisant l'hypothse suivante: Ff () = 0 pour > b. On dira que f a une bande de frquences borne par b; on peut en effet retrouver f par une intgrale de Fourier dfinie sur un intervalle born:
b

f(x) =

Ff()e
b

2ix d

1. Prtraitement et transformation dimages

33

D'autre part Ff peut tre obtenu dans ce cas l'aide d'une srie de Fourier plutt qu'une intgrale: F f() =

n =

1 n ---------------------- f(----- )e 2b si < b - 2b 2b

2in

Dans les cas pratiques f a un support born par la taille a de l'image: f ( x ) = 0 si x > a Par consquent: n f(----- ) 0 seulement pour n k = 2ab et 2b F f() =

n = k

1 n ---------------------- f(----- )e 2b - 2b 2b

2in

1.3.5 Thorme dchantillonage Rciproquement on dmontre, en simplifiant l'intgrale de Fourier terme terme, que f est une superposition de fonctions primitives: f(x) =

n = k

n f(----- )S(2bx n) avec: 2b

sin y S ( y ) = ------------- pour y 0 et S(0) = 1. y

0.8 0.6 0.4 0.2 -4 -2 -0.2 2 4

Figure 1.11 La fonction Sinc, utilise pour restituer une fonction chantillonne.

En conclusion, la discrtisation de f avec un pas de 1/2b, o b est la largeur de bande des frquences de f, permet une restitution exacte de l'image idale f. Pratiquement: si l'on ne sintresse pas aux frquences > b dans l'image fournie, alors un pas de discrtisation de 1 l'ordre de ----- est amplement assez fin. Inversment il est illusoire de vouloir retrouver une 2b information concernant des frquences leves dans une image discrtise trop faible rsolution. L'intuition se voit ainsi confirme par le rsultat ci-dessus, connu sous le nom de thorme d'chantillonnage de Shannon. Indiquons l'existence de routines (FFT: Fast Fourier Transform) trs efficaces pour le calcul numrique des transformes de Fourier. Ces programmes utilisent, en gros, une formule d'intgration par trapzes sur un intervalle I. I doit contenir toutes les valeurs non-nulles de la fonction donne f ce qui permet de traiter I comme une priode fictive de f. D'autre part I est

34

1. Prtraitement en transformation dimages

subdivis en n intervalles de mme longueur h (le pas de l'intgration numrique). Dans ces k conditions la transforme Ff est reprsente par une srie de valeurs Ff () o = ----- avec k nh = 0, 1, ..., n.

2 F f ( v ) = --------nh

nh

f(x) e

2ix

dx

2 -n

f ( jh )e 2 ijh
j=1 n

2 = -n

f ( jh )c ( k, j, n )

i j, k n

j=1

Pour = 0 , l'expression est lgrement diffrente: 1 F f(0) = -n

f ( jh )
j=1 kj 2 i ---n

L'introduction des coefficients complexes c ( k, j, n ) = e 2kj 2kj = cos ----------- i sin ----------n n

suggre une optimisation, particulirement efficace lorsque n est une puissance de deux (ou la somme d'un petit dveloppement binaire): c ( k, j, n ) = c ( j, k, n ) c ( 1, 1, n ) =
2i -------e n

c ( k + m, j, n ) = c ( k, j, n ) c ( m, j, n ) , produit des nombres complexes. De plus c ( 1, 1, n ) est la n-ime racine complexe de l'unit; la transforme de Fourier est ainsi reprsente comme un produit matriciel, les lments de la matrice de transformation tant construits itrativement comme produit de certaines racines de l'unit. 1.3.6 Transforme de Hadamard La transformation de Fourier a deux proprits qui la distinguent. D'abord elle est inversible, c'est donc qu'elle conserve toute l'information contenue dans l'image donne. Du moins en principe, il s'agit d'un codage fidle. Ensuite le codage effectue une slection de caractristiques interprtes gomtriquement. Il s'agit de priodicits dans le plan de l'image, chiffrs en frquences, directions et amplitudes. Une rduction d'information liminant une partie de ces caractristiques est donc naturelle et slective souhait. D'autres transformations classiques ont des proprits analogues. Citons la transforme d'Hadamard dont l'implantation digitale est manifestement idale. La dfinition de Hf partir de la donne f est en effet sujette l'hypothse suivante, propre la discrtisation: f ( x ) est dfinie pour x = 0, 1, 2, , 2 N 1

1. Prtraitement et transformation dimages

35

De mme la transforme H f() est dfinie sur un intervalle subdivis en 2 N parties de pas uniforme, = 0, 1, 2, , 2 N 1 .
( 2N 1 )

H f() = 2 1 N
N1

f ( x ) ( 1 )x* dx
N1

o x* =

x [ i ] [ i ] et x =

x [ i ]2 i

i=0

i=0

Dans Hf les valeurs de f apparaissent donc avec un signe dpendant du nombre de bits communs dans la reprsentation de x et en base deux. L'itration de H donne l'identit, par contre l'interprtation des frquences est plus subtile [Gonzalez p.115]. Un autre principe d'extraction de caractristiques globales d'une image consiste former les moments statique, dynamique et d'ordres suprieurs de f considre comme une distribution. On peut normaliser les moments relativement aux axes de coordonnes en reprant le centre de gravit et les interprter comme des invariants numriques de la figure. L'information ainsi retenue est plutt qualitative et permet au plus une classification grossire des images. Elle peut rendre service dans la comparaison de caractres d'imprimerie isols. Une dernire famille de traitements globaux doit tre mentionne. Nous avons vu l'effet slectif, obtenu en agissant sur Ff , sur les variations de la valeur de f. L'limination d'un bruit dont les frquences sont prvisibles y tait directe. Il en va autrement d'une variation parasitaire des coordonnes (x, y) du point d'image portant l'intensit f(x, y). Une telle dformation du support de l'image ne peut pas tre absorbe par la transforme de Fourier, qui agit de manire linaire et adaptative sur les valeurs de f en supposant les coordonnes exactes. Une srie de techniques ad hoc sont utilises pour corriger des dformations dues au support ou la transmission optique d'une image originelle. 1.3.7 Transforme de Hough Les segments de droite sont des primitives simples et conomiques, dont l'interprtation ultrieure est souvent naturelle. Jusqu'ici nous avons rencontr des segments dans le contexte de l'approximation polygonale, lors du suivi de lignes (de contour, de maximum, de niveau, etc.). Un autre cas, classique, est la dtermination d'un segment de droite optimal tant donn un ensemble de points censs se trouver sur la droite: il s'agit de la mthode des moindres carrs. Dans une image, il n'est cependant pas toujours facile de dterminer les pixels qui appartiennent en fait au mme segment de droite. La transforme de Hough permet, par une mthode statistique, de dlimiter les points approximativement colinaires. Considrons pour cela le plan de l'image idale et son dual (figure 1.12). Une droite d d'quation y = ax + b dans le plan de l'image a pour correspondant le point (a, b) dans le plan dual; a est la pente et b l'ordonne l'origine de la droite d. Rciproquement, le point (xo, yo) dans l'image correspond la droite b = -xoa + yo , de pente -xo et d'ordonne l'origine yo dans le plan dual. C'est cette dernire proprit qui est exploite. Pour chaque pixel reprsentant un point dans l'image discrte on reporte, dans le plan dual la droite correspondante, galement discrtise: si une cellule (a, b) est touche plusieurs fois on compte le nombre de droites auxquelles elle appartient. Les frquences ainsi cumules reprsentent un histogramme bidimensionnel, dont on extraira les modes (maxima locaux). A chaque mode dans le plan dual discrtis correspond une droite, contenant une concentration de points, dans l'image. L'avantage de la mthode de Hough est de prendre en considration l'image globale. Ses inconvnients sont un manque de prcision, qui en limite l'emploi une premire

36
y

1. Prtraitement en transformation dimages


b

d : y = ax + b b = -x0 a + y0 a

(x 0, y 0 ) x

Figure 1.12 . Le plan de l'image et son dual

Figure 1.13 Illustration de la recherche des artes d'un cube

approximation, ainsi qu'un cot important en calcul. La prsentation qui a t donne de la transformation de Hough souffre encore d'un handicap; elle dfavorise les droites verticales, pour lesquelles il n'y a pas d'quation de la forme y = ax+b et par consquent pas de point dans le plan dual. On peut tenir compte de ces cas, qui sont loin d'tre exceptionnels dans les images usuelles, par une statistique complmentaire celle du plan dual, concernant les droites d'quation x = c. La solution habituelle du plan de l'image sous la forme normale: x cos + y sin = d et reporter et d comme coordonnes du plan dual, avec les restrictions d 0, 0 2 . Bien entendu, le dual d'un point n'est plus une droite, mais un arc de sinusode.

1. Prtraitement et transformation dimages

37

On prfre souvent des mthodes locales, squentielles. Par analogie avec le suivi de contour et avec l'approximation polygonale, ces mthodes de suivi de segments de droite consistent : 1) 2) choisir un premier point (par exemple un pixel proche du maximum local d'intensit) et une direction de dpart (par exemple une tangente ou un gradient extremum) passer au pixel voisin en conservant approximativement la mme pente (en gnral on effectue le suivi dans une seule direction; en fait les deux sens de parcours sont galement justifis) terminer sur un critre de qualit, caractrisant la proprit commune aux points du segment avec une tolrance (par exemple colinarit, valeur de gradient -ou du pixelproche d'un maximum, etc.).

3)

Le rsultat escompt est une liste d'lments gomtriques primitifs segments de droite et, plus gnralement, arcs de courbe ou rgions uniformes constituant une image. Chaque lment primitif sera caractris par les coordonnes de ses extrmits ainsi qu'une srie d'attributs intrinsques (couleur moyenne, pente, taille) et ventuellement de relations avec d'autres primitives (voisins directs, angles, distances). Une image ainsi segmente est plus adapte une analyse structurelle de son contenu que ne l'tait un tableau de pixels.

1.4 Extraction de primitives gomtriques


L'interprtation d'une image passe par la reconnaissance et la localisation d'lments primitifs: rgions, contours, segments de droite. Dans chaque cas nous illustrerons un algorithme possible, mais en gnral pas optimal, et nous signalerons les difficults inhrentes au problme. 1.4.1 Extraction de domaines segmentation en rgions Un domaine est un sous-ensemble des pixels de la grille. en gnral ces pixels ont une proprit commune (par exemple la mme valeur de niveau de gris) et une relation de connexit dans le plan de l'image; a priori on ne supposera pas de telles contraintes. Une manire naturelle, mais peu pratique, de reprsenter un domaine est de peindre tous ses pixels l'aide d'une valeur originale, distincte des pixels du complment. Nous verrons d'autres techniques de reprsentation de domaines, notamment au moyen de listes et d'arbres. La segmentation d'une image est le partitionnement de l'ensemble de tous ses pixels en domaines disjoints (aussi appels rgions) selon un double critre d'uniformit et de contigut des pixels formant une rgion. Voici un algorithme de segmentation fond sur l'agrgation selon MST; le graphe considr est le graphe d'adjacence des rgions. Initialement chaque rgion est forme d'un pixel; la distance (P, Q) est dfinie, pour des voisins immdiats (Q est un voisin pair de P, selon la figure 1.4), comme la diffrence des niveaux de gris aux points P et Q. Les autres paires de pixels ne font pas partie du graphe d'adjacence, au dpart. Le regroupement hirarchique a lieu ensuite selon la distance croissante au plus proche voisin. Un seuil est donn pour limiter l'agrgation de rgions adjacentes dont les pixels respectifs, situs de part et d'autre de la frontire, prsentent une diffrence de niveau d'ordre . Une gnralisation de cette technique consiste fusionner des rgions adjacentes R et S, non pas selon le critre ponctuel des plus proches voisins dans R et S respectivement, mais selon le critre d(R, S) < o d est une mesure de dissemblance approprie. Par exemple d(R, S) mesure la diffrence des niveaux moyens de gris sur R et S respectivement. Souvent on inclut dans la dfinition de d(R, S) une pondration par la taille respective de R et S (en nombre de pixels), par la longueur de la frontire commune entre R et S, ou par des caractristiques

38

1. Prtraitement en transformation dimages

numriques des domaines R et S telles que centre de gravit, variance des niveaux de gris, priodicit des textures, etc. Le graphe obtenu a pour sommets les rgions et pour artes la relation d'adjacence. Il est souvent muni d'informations supplmentaires: les caractristiques des rgions sont places aux sommets correspondants, ce qui diffrencie les rgions adjacentes est plac aux artes (figure 1.14).
1 1 5 2 3 3 Figure 1.14 Image segmente en rgions et graphe d'adjacence, muni des informations de taille (par rgion) et de frontire (par paire de rgions adjacentes). 4 2 4 5 6

Cet algorithme utilise beaucoup de mmoire dans la phase initiale. Il peut tre optimis en partant d'un graphe initial o des pixels semblables ont dj t agglomrs (par un traitement local ad hoc). Une technique intressante dans ce contexte est la reprsentation de l'image par un arbre quaternaire appel quadtree, analogue l'arbre binaire utilis pour chaner les suites linaires. Chaque noeud d'un quadtree reprsente soit une dcoupe de l'image en quadrants (d'o les quatre pointeurs), soit une rgion carre uniforme (dont le niveau de gris des pixels est approximativement constant). 1.4.2 Le parcours d'un domaine connexe Souvent l'image donne se prsente sous la forme d'une rgion et de son complment, par exemple un objet fonc sur fond clair. Ces rgions sont connexes et plus ou moins uniformes. Pour identifier un objet particulier dans l'image, on aimerait isoler une rgion connexe de la couleur adquate, sans forcment segmenter le reste de l'image. L'ide est de parcourir le domaine uniforme D en numrant tous ses pixels, de proche en proche. On fera l'hypothse que le pixel de dpart est donn, l'intrieur du domaine D, aux coordonnes (io, jo) et que P(x, y) est la proprit d'appartenance du pixel (i,j) au domaine D. En outre D est suppos connexe, selon la dfinition suivante. Dfinissons d'abord un chemin, dans une image discrtise sur une grille rectangulaire. Un chemin est une suite de pixels A0, A1, ..., An telle que Ai et Ai+1 sont voisins immdiats (figure 1.4) pour tout i<n. Lorsque A0 = An on dit que le chemin est ferm. Un chemin est pair si Ai+1 est un voisin pair de Ai pour tout i<n. Un domaine D est connexe si, quels que soient deux pixels de D, il existe un chemin pair, entirement contenu dans D, qui les relie. L'algorithme de parcours propos est apparent l'exploration arborescente du labyrinthe par Thse. L'quivalent du fil d'Ariane est ici une trace (c'est--dire une couleur particulire) laisse sur les pixels parcourus; mais la diffrence du labyrinthe, le domaine numrer dans

1. Prtraitement et transformation dimages

39

l'image n'a pas d'issue et l'algorithme puise toutes les possibilits. Le critre d'appartenance au domaine est ici la couleur (blanc).
program labyrinthe (input, output); const hauteur = 10; largeur = 40; var lab array [1..hauteur, 1..largeur] of char; hau {hauteur), lar: integer {largeur effective du labyrinthe}; io,jo: integer {entre du labyrinthe}; procedure lire_lab; procedure imprime_lab; procedure thesee (i,j: integer) {imprime tous les chemins menant la sortie}; begin if lab[i,j]= S then imprime_lab else if lab[i,j]= then begin lab[i,j]:= .; {marque le chemin pour limpression) thesee (i,j+1) {on essaie droite} thesee (i,j-1) {on essaie gauche} thesee (i+1,j) {on essaie en bas} thesee (i-1,j) {on essaie en haut} lab[i,j]:= {on efface le chemin} end end {thesee}; end begin {labyrinthe} lire_lab; imprime_lab; thesee (io,jo) end (labyrinthe)

Figure 1.15 Algorithme du labyrinthe.

Pour forcer un parcours complet dune rgion connexe, il suffit de supprimer les S. Tel quel l'algorithme propos est gourmand en temps et en mmoire: il empile en effet les coordonnes de tous les pixels du chemin parcouru entre deux backtracks; au pire ce sont tous les pixels du domaine! Diverses optimisations ont t discutes dans la littrature [Pavlidis], [Hersch], notamment pour favoriser le balayage du domaine par lignes horizontales; la difficult de ces algorithmes est de traiter correctement les domaines non convexes et ceux qui prsentent des trous (figure 1.16).

Exercie
Proposer un algorithme de remplissage des rgions avec accs ligne par ligne, de haut en bas aux pixels de grille (ide: grer une liste de points de transition)

Figure 1.16 . Deux domaines difficults concavits, trous, isthmes.

40

1. Prtraitement en transformation dimages

1.4.3 La reprsentation d'un domaine par son squelette Considrons d'abord un domaine idal, continu et bord rgulier, reprsent par une courbe ferme C continment drivable. On s'intresse aux cercles tangents C en deux endroits au moins: les cercles bi-tangents; l'ensemble de ces cercles forme une famille dont C est l'enveloppe. On appelle squelette du domaine bord par C le lieu des centres des cercles bitangents. Le squelette a des proprits mathmatiques intressantes pour dcrire des formes biologiques [Blum]; en particulier il se dforme rgulirement sous l'effet d'une incurvation du domaine ou d'une croissance uniforme de ce dernier. Il peut toutefois avoir des points d'embranchement; en gnral c'est un arbre dont les arcs sont des courbes continues. Pour dcrire entirement la famille paramtre des cercles bi-tangents (et donc retrouver le bord du domaine) on ajoute, sur les arcs, la valeur du rayon du cercle bi-tangent l'endroit de son centre.

Figure 1.17 Le bord et le squelette d'un domaine.

En pratique, ces valeurs peuvent tre approches par une interpolation: le squelette sera simplifi en prenant comme arcs des segments rectilignes et en munissant les noeuds de la valeur du rayon du cercle bi-tangent (qui est alors, soit un cercle osculateur centr une extrmit du squelette, soit un cercle tangent en plusieurs points du bord). Le calcul du squelette partir du domaine peut tre inspir des feux de prairie dont le front se propage vitesse constante; cette image typique de la littrature amricaine peut se traduire par une autre: une onde dont l'origine est uniformment le bord du domaine se dirige vers l'intrieur. Le squelette est le lieu des collisions de deux fronts d'onde. Le temps t o deux fronts d'onde se rencontrent au point P est gal au rayon du cercle bi-tangent, centr en P (on suppose la vitesse de propagation gale l'unit). L'algorithme qui dcoule de ce modle consiste reconnatre les points du bord et les liminer, sauf s'ils appartiennent au squelette. L'opration est itre, par couches successives; le nombre d'itrations est donn par le rayon t maximal. L'opration est appele l'rosion du domaine et constitue un oprateur classique sur les images deux niveaux; son inverse, la dilatation, consiste ajouter au domaine les pixels voisins du bord. L'alternance des deux traitements a pour effet une rgularisation du domaine, notamment la suppression des isthmes.

Exercice
Montrer que le squelette idal d'un domaine polygonal est form d'arcs de parabole et de segments de droite.

1. Prtraitement et transformation dimages

41

1.4.4 Reprsentation d'une rgion par son contour La reprsentation d'un domaine par une proprit caractristique de ses pixels (par exemple leur couleur) est peu conomique; on prfre, pour un domaine rgulier, donner une description de ses frontires avec le complment. Nous avons dj vu la notion, approprie pour les domaines connexes, de contour. Idalement le contour est une courbe ferme; or, en gomtrie discrte, une courbe est une notion mal dfinie: pour l'instant le contour C d'un domaine donn D est une rgion contenue dans D et relativement mince. Ce que l'on voudrait, c'est un chemin ferm parcourant les pixels de C. Mieux encore, pour les tronons rectilignes (approximativement du moins) un segment de droite reliant les points anguleux ferait parfaitement l'affaire: le domaine D serait reprsent par un polygone P. Pour retrouver les pixels formant D, il suffit de parcourir l'intrieur de P. Plusieurs algorithmes classiques peuvent tre mis en oeuvre pour obtenir l'approximation polygonale P du domaine donn D. Voici schmatiquement un premier procd: un traitement de gradient (en valeur absolue), suivi de seuillage, fait ressortir le domaine frontire C une rosion amincit au besoin C l'algorithme du labyrinthe peut tre adapt au suivi d'une rgion mince: le fil d'Ariane constitue un chemin parcourant C (on arrte le parcours lorsqu'on rencontre nouveau le point de dpart) on relie les centres de gravit des pixels conscutifs par des segments de droite (de longueur 1 ou 2 )et de pente multiple de 45o). On obtient ainsi un polygone. Note Un procd analogue est utilis pour passer du squelette d'un domaine D sous forme de pixels une reprsentation du squelette comme un arbre. Tel quel, lalgorithme esquiss fait lhypothse dun domaine trs mince et sans embranchements. Ds quil y a des bifurcations ou des croisements, il faut adapter lalgorithme de suivi ces situations, par exemple en mmorisant des points de reprise. Voici une variante du suivi de contour: Un traitement du gradient directionnel (masques de Freeman) permet de dtecter et d'orienter les lignes de contraste caractristiques de la frontire de D. Un suivi de contour procde squentiellement en examinant, dans le voisinage immdiat du pixel courant, les pixels proches de la pente indique par le code de Freeman et de contraste suffisant. Le pixel de dpart et la direction initiale doivent tre dtects par un autre procd, par exemple un balayage horizontal, arrt sur un pixel code de Freeman gal 0, 1 ou 7 (proche de l'horizontale) et contraste suffisant. On obtient un chemin qui suit le contour. Si la qualit du contraste est suffisante, le chemin est ferm. Sinon le domaine n'est pas correctement dlimit; c'est une difficult intrinsque aux algorithmes de suivi de contour.

Pour des images binaires, on peut se passer de la direction indique par les gradients de Freeman et examiner directement les pixels voisins du pixel courant ( l'exclusion de ceux examins lors du pixel prcdent). Une variante de l'algorithme du labyrinthe permet ainsi de suivre directement le contour du domaine. Lorsque la mme direction est maintenue sur plusieurs pixels conscutifs on les remplace par un segment de droite.

42

1. Prtraitement en transformation dimages

1.4.5 L'approximation polygonale d'un contour Les polygones obtenus par les procds de suivi de contour voqus ci-dessus ont des segments dont la pente ne prend q'une des 8 directions de Freeman et dont la longueur est en gnral trs petite: de l'ordre d'un ou quelques pixels. On prfre souvent une approximation polygonale avec des cts, moins nombreux, plus longs et de pente optimale afin de s'carter le moins possible des pixels du contour donn. Deux techniques sont connues cet effet. La premire est la dichotomie. On suppose, pour simplifier, que la ligne donne L a deux extrmits distinctes A et B. La corde par A et B est un candidat pour tre un segment de la ligne polygonale approchant L. Si la distance maximale entre la corde et les pixels de L est infrieure une tolrance Max, on a termin; sinon on prend le pixel C de distance maximale la corde et on recourt la mme technique pour les tronons AC et CB sparment (figure 1.18). On peut aussi terminer lorsque les tronons ont moins de Min pixels. Les paramtres Max ou Min ont une grande influence sur le nombre de cts obtenus; la solution n'est d'ailleurs pas unique.

C L B

> Max

A
Figure 1.18 L'approximation polygonale d'une ligne L par dichotomie.

La seconde est squentielle. Partant d'une extrmit, disons A (lorsque la ligne est ferme on part d'un point quelconque), on commence par examiner Min points conscutifs. On dtermine la pente optimale d'un segment de droite approximant ces points (on peut imposer que le segment passe par A). Si ce segment est une distance infrieure Max des Min points choisis, on le prolonge par les pixels conscutifs tant que la distance reste borne par Max. Le dernier point adjoint est utilis comme point de dpart pour le prochain segment du polygone. L'algorithme doit tre complt par un traitement pragmatique du cas o le segment de Min points ne satisfait pas la contrainte du Max pour les distances aux pixels. En gnral, il donne un rsultat biais par l'asymtrie entre les points initial et final de chaque segment, qui a tendance aller trop loin, dans le sens du parcours [Devars86]. Ici galement on veut minimiser le nombre de segments.

Exercices
1) Proposer un algorithme d'numration du contour C d'un domaine D par un chemin ferm sur une grille noir-blanc. On suppose que le domaine D est simplement connexe et que le point initial A du contour est donn. Supposer le contour d'une rgion donn sous la forme d'un code en chane de Freeman (le point de dpart et la direction initiale sont placs l'origine). Obtenir une approximation polygonale du mme contour, chaque ct du polygone ayant si possible une longueur minimale de min = 5 pels et un cart maximal de max = 1.5 des pels du bord donn. Coder la coloration d'un domaine D, form des pels l'intrieur et sur les cts d'un poly-

2)

3)

1. Prtraitement et transformation dimages

43

gone donn sous la forme d'une liste de segments de droite. Tenir compte des parties convexes et des tronons parallles aux axes. L'algorithme se gnralise-t-il au cas o D a des trous dont le bord est galement dcrit par des segments de droite? Remarque Une adaptation de lalgorithme du labyrinthe est celui de la main courante; au lieu dexplorer rcursivement tous les voisins (sauf celui dont on vient) on prend le pixel voisin qui est la frontire du domaine. Un heuristique simple permet de trouver cette frontire rapidement, sauf peut-tre aux pointes et aux isthmes du contour. Une autre variante permet de faire le suivi de crte; on vise, chaque pixel, le voisin prs du maximum relatif. Une heuristique commune consiste conserver la direction courante; par contre les bifurcations et les extrmits doivent tre traites avec soin. .

Figure 1.19 Caractre chinois avec suivi de contour et polygone approximant

44

1. Prtraitement en transformation dimages

1.5 Exercices

1. Prtraitement et transformation dimages

45

46

1. Prtraitement en transformation dimages

1. Prtraitement et transformation dimages

47

= xcos+ysin xi ,yi = xcos+ysin = xi cos + yi sin ( ,) ( ,)


d0
P0

(d0 = 0)

Pi Pi = v(Pi1 ,di ) di

48

1. Prtraitement en transformation dimages


P0

Pi Pi+1


Pi1

di d i+1 Pi Pi+1

1. Prtraitement et transformation dimages

49

di di1 di (di1 + 4) di di 1 Pi
Pi v(Pi1 ,di )

Pi = Pi1


P0

di

50

1. Prtraitement en transformation dimages

1.6 Annexe: Script Fu et plug-in Grimp


Script-Fu
macro language connects to GIMP database based on Scheme

Scheme
Lisp-like language interpreted

Script installation
install (put) script in ~/.gimp/scripts refresh GIMP

Script types
Stand-alone --- can always be used (button creation, etc.) Image dependent -- dependent on image type (modifications)

Gimp Scripts in Scheme

Scheme
a variant on LISP. processes LISTS each list is a function with it's arguments evaluate functions to return values (+ 3 4) => 7 (* 7 6) => 42 (+ (* 3 4) (/ 1 3)) => 4 (define (borne x) (cond ((< x 0) 0) ((> x 255) 255) (T x))) (borne 278) => 255 (borne -12) => 0 (borne 236) => 236

Literals
Quoted values: 'this '(255 127 63) (* '5 '5) (borne '235)

Variables
(set! orange '(255 277 0)) (gimp-set-background-color orange) (gimp-set-background-color 'orange) (gimp-set-background-color '(255 127 0))

Local variables(*)
(let* ((a 3) (b 4) ( (/ a b) ) ) ) )

1. Prtraitement et transformation dimages

51

List Processing
Lists are made up of a first element (head) -- possibly a list the rest of the list (tail) -- always a list (1 2 3) = (1 (2 (3 ()))) () The empty list () is a list! (car '(1 2 3)) => 1 (car '((a b) 2 3)) = > (a b) (cdr '(1 2 3)) => (2 3)

More list processing


(cdr (cdr '(1 2 3 4))) => (3 4) (cddr '(1 2 3 4)) => (3 4) (car (cdr (cdr '(1 2 3 4)))) => 3 (caddr '(1 2 3 4)) => 3 (cadr (quote (1 2 3 4))) => 2

Note: all GIMP functions return lists

Loops The only looping construct that exists in Script-Fu is while


Note: this constraint is due to the current scheme interpreter SIOD used for Script-Fu. Once the scheme interpreter as planned is changed to Guile, more looping constructs will probably be added.] The while loop looks as follows:

(while (condition) (statement1) (statement2) : )

GIMP Procedural DataBase (PDB) Correspondence between script functions and GIMP interface.

Registering functions with Script-Fu


Places script in interface menu registers parameter types and default values places command in PDB (script-fu-register "my-func" ; name of func "/<Toolbox>/Xtns/Script-Fu/My/Func" ; menu posn. "Does something" ; help string "I. Am" ; author "It's mine" ; copyright "Today" ; date "" ;accepts any image type SF-VALUE "a" "0" ; value param SF-COLOR "bk" '(0 0 0) ; color param SF-TOGGLE "inv" 0 ; boolean

Defining Script-Fu functions


(define (my-func a bk inv) ; create image and layer (set! img (car (gimp-image-new a a RGB))) (set! layer (car (gimp-layer-new img a a RGB "layer 1" 100 NORMAL))) (gimp-image-disable-undo img) (gimp-image-add-layer img layer 0) (cond ((equalp inv 0) (gimp-palette-set-background bk))

52 (T (gimp-palette-set-background (invert bk)))) (gimp-edit-fill img layer) (gimp-display-new img) (gimp-image-enable-undo img))

1. Prtraitement en transformation dimages

Working on current image


(script-fu-register "doit" "<Image>/Script-Fu/Me/doit" "Do something" "Me" "Mime" "today" "RGB*, GRAY*" SF-IMAGE "Image" 0 SF-DRAWABLE "Layer" 0 SF-VALUE "with" 5) (define (doit img layer with)...)

Exemple 1 The following script uni.scm receives two parameters from the user, the size of the image, and a color and goes on to produce a uniform image of the requested size and the requested color. Not very useful, but it shows the essential steps in producing a script-fu script. (";" is a mark that the following is a comment):
; Define the function of the script and ;list its parameters ; The parameters will be matched with the ;parameters listed ; below in script-fu-register. (define (uni-img size color) ; Create an img and a layer (set! img (car (gimp-image-new size size RGB))) (set! layer (car (gimp-layer-new img size size RGB "layer 1" 100 NORMAL))) ; The following is done for all scripts (gimp-image-disable-undo img) (gimp-image-add-layer img layer 0) ; Here is where the painting starts. We ;now have an image ; and layer and may paint in the layer ;through the PDB functions (gimp-palette-set-background color) (gimp-edit-fill img layer) ; The following is also done for all ;script (gimp-display-new img) (gimp-image-enable-undo img)) ; Finally register our script with ;script-fu. (script-fu-register "uni-img" "<Toolbox>/Xtns/Script-Fu/Tutorials/Uniform image" "Creates a uniform image" "Dov Grobgeld" "Dov Grobgeld" "1997" "" SF-VALUE "size" "100" SF-COLOR "color" '(255 127 0))

Exemple 2 Here is an example script which copies the current layer to a new layer, blurs it and inverts it:
(define (script-fu-copy-blur img drawable blur-radius) ; Create a new layer (set! new-layer (car (gimp-layer-copy drawable 0))) ; Give it a name (gimp-layer-set-name new-layer "Gauss-blurred") ; Add the new layer to the image (gimp-image-add-layer img new-layer 0) ; Call a plugin to blur the image (plug-in-gauss-rle 1 img new-layer blur-radius 1 1) ; Invert the new layer

1. Prtraitement et transformation dimages (gimp-invert img new-layer) ; Flush the display (gimp-displays-flush) ) (script-fu-register "script-fu-copy-blur" "<Image>/Script-Fu/Tutorial/copy-blur" "Copy and blur a layer" "Dov Grobgeld" "Dov Grobgeld" "1998" "RGB*, GRAY*" SF-IMAGE "Image" 0 SF-DRAWABLE "Layer to blur" 0 SF-VALUE "Blur strength" "5")

53

Exemple 3 Here's an example which draws horizontal lines, 16 pixels high, on an image:
(set! y 0)(while (< y size) (gimp-rect-select img 0 y size 16 REPLACE 0 0) (gimp-edit-fill img layer-one) (set! y (+ y 32)))

Exemple 4 Hereis an exemple to write a text in an image:


(define (script-fu-hello-world img drawable) ; Start an undo group. Everything between the start and the end ; will be carried out if an undo command is issued. (gimp-undo-push-group-start img) ; Create the text. See DBbrowser for parameters of gimp-text. (set! text-float (car (gimp-text img drawable 10 10 "Hello world" 0 1 30 1 "*" "Helvetica" "medium" "r" "*" "*"))) ; Anchor the selection (gimp-floating-sel-anchor text-float) ; Complete the undo group (gimp-undo-push-group-end img) ; Flush output (gimp-displays-flush)) (script-fu-register "script-fu-hello-world" "<Image>/Script-Fu/Tutorial/Hello World" "Write Hello World in the current image" "Dov Grobgeld" "Dov Grobgeld" "1998" "RGB*, GRAY*" SF-IMAGE "Image" 0 SF-DRAWABLE "Layer" 0)

Exemple5: Copying a selection To copy a selection, the command gimp-edit-copy is used. It places a copy of the selection contents in the cut-buffer. The contents of the cut-buffer may then be pasted into a layer, the same layer or another one, and it is then pasted as a floating layer.

54

1. Prtraitement en transformation dimages

In the following example the selection is copied, pasted into the same layer, offset a fixed distance, finally anchored. Try it by drawing a small blob in the middle of the image, select the blob, and then call this script.
(define (script-fu-sel-copy img drawable) (gimp-undo-push-group-start img) (gimp-edit-copy img drawable) (set! sel-float (car (gimp-edit-paste img drawable FALSE))) (gimp-layer-set-offsets sel-float 100 50) ; Anchor the selection (gimp-floating-sel-anchor sel-float) ; Complete the undo group (gimp-undo-push-group-end img) ; Flush output (gimp-displays-flush)) (script-fu-register "script-fu-sel-copy" "<Image>/Script-Fu/Tutorial/Selection Copy" "Copy the selection into the same layer" "Dov Grobgeld" "Dov Grobgeld" "1998" "RGB*, GRAY*" SF-IMAGE "Image" 0 SF-DRAWABLE "Layer" 0)

Plug-ins in Gimp A plug-in is a program that can't run on its own, it needs to be started by Gimp.

Compile? Most of the time, plug-ins are distributed in the source code. All programs have a source code (if they aren't written directly in machine code). The source code is written in a language humans can understand, like C, C++ etc...
The computer doesn't understand C or C++, so the code needs to be translated to machine code which the computer understands and can execute. This translation is called compiling.

Finding out how to compile the plug-in Using GCC to compile the plug-in straight off
If the file is named plugin.c, then compile it with gcc -o plug-in plugin.c. The -o flag tells the compiler that the final output (the plug-in) should be named plug-in.

1. Prtraitement et transformation dimages

55

If Using GCC to compile the plug-in straight off


The C-compiler (GCC) is configured to search the standard directories for the include and library files, and those files are indeed in the standard directories, then the plug-in will compile cleanly. But most of the time this is not the case since you probably will need specific Gimp libraries and include files.

Using gimptool
gimptool --install plug-in.c gcc -c `gimptool --cflags` plug-in.c The cflag stands for the C library.

Exercises 1. Look at the structure of the plug-ins "erosion" and "dilatation". 2. Compile them using gimptool --install plug-in.c. 3. Apply these plug-ins on some images.