Vous êtes sur la page 1sur 32

Notions de traitement et d'analyse d'image

Dans tout ce qui suit, pour simplifier, on considrera, sauf mention contraire, des images matricielles initiales teintes avec 256 niveaux de nuances de gris (0 = noir 255 = blanc). Pour des niveaux plus nombreux, les algorithmes devront tre adapts, mais sans difficult majeure.

1 - Affichage d'images
Etant en possession d'une image code sur 256 niveaux de gris, on dsire afficher cette image l'aide d'un priphrique ne permettant pas d'afficher autant de niveaux de gris, mais moins: N niveaux ( N<256). Cela peut tre le cas lorsqu'on est en possession d'une image trs labore et que le dispositif d'affichage utilis est peu performant. Plusieurs algorithmes permettent cet affichage. 1.1 - Correspondance simple On raisonnera sur le cas N = 4 ce qui signifie un affichage 4 niveaux ( nots 0, 1, 2, 3).La correspondance entre les 256 niveaux et les 4 niveaux d'affichage peut tre tablie simplement : on partage la plage 0-255 en 4 intervalles de mme longueur : 0-63, 64127, 128-191, 192-255. Aux niveaux de couleur allant de 0 63 inclus, on fera correspondre le niveau 0 d'affichage; aux niveaux 64 127 inclus, on fera correspondre le niveau 1 d'affichage ; etc.... On dsignera dans ce qui suit par I(x,y) le niveau du pixel (x,y). L'algorithme de correspondance 256 vers 4 couleurs indiqu ci-dessous est relativement simple : algorithme d'affichage 256 vers 4 niveaux : Pour chaque pixel (x,y) de niveau I(x,y) faire : Si (I(x,y)<64 alors afficher avec le niveau 0 sinon Si I(x,y)<128 alors afficher avec le niveau 1 sinon Si I(x,y)<92 alors afficher avec le niveau 2 sinon afficher avec le niveau 3 fin Si fin Si fin Si fin Pour 1.2 - Affichage par seuil alatoire L'affichage prcdent est assez brutal et ne tient pas compte de la densit des points allums sur l'cran. Il est vident qu'une population importante de points de mme niveau doit tre discerne l'affichage. La mthode du seuil alatoire, base sur un principe probabiliste, permet de rpondre cette attente. Examinons d'abord une reprsentation biniveau (N=2). On reprsente l'image avec 2 niveaux ( par exemple 0 = noir et 1 = blanc). Pour chaque point (x, y) on tire une valeur d'une variable alatoire uniforme X ( entre 0 et 254) :
G G

si I(x,y) < X allumage du point ( x,y) : nouveau niveau =1 si I(x,y) > X extinction du point (x,y) : nouveau niveau =0

L'algorithme est donn ci-dessous : algorithme du seuil alatoire (2 niveaux) Pour chaque pixel (x,y) de niveau I(x,y) Faire : Gnrer un seuil alatoire S entre 0 et 254 Si I(x,y)>S alors allumer le pixel fin Si fin Pour Statistiquement, pour une population de P pixels de niveau de couleur I0, on aura autant de seuils suprieurs I0 que de seuils infrieurs I0 : on verra donc au moins la moiti des points de la population. Passons maintenant une reprsentation sur 4 niveaux (N=4). On divise la plage 0 - 255 en trois zones. Les niveaux accessibles l'affichage sont notes 0, 1, 2, 3. Dans la premire zone, on applique l'algorithme pour une reprsentation biniveau avec les couleurs 0 et 1: allumer signifie couleur 1 et teindre signifie couleur 0. Dans la deuxime zone, on applique l'algorithme pour une reprsentation biniveau avec les couleurs 1 et 2 : allumer signifie couleur 2 et teindre signifie couleur 1. Et ainsi de suite... L'algorithme correspondant est donn c-dessous : algorithme du seuil alatoire (4 niveaux) : Pour chaque pixel (x,y) de niveau I(x,y) Faire : Si I(x,y)<85 alors Gnrer un seuil alatoire S entre 0 si I(x,y)>S alors Afficher avec niveau 1 sinon Afficher avec niveau 0 fin Si sinon si I(x,y)<170 alors Gnrer un seuil alatoire S si I(x,y)>S alors afficher avec niveau sinon Afficher avec niveau fin Si sinon Gnrer un seuil alatoire S si I(x,y)>S alors Afficher avec niveau sinon Afficher avec niveau fin Si fin Si fin Si fin Pour 1.3 - Affichage par matrices de seuil Rappelons que les matrices de seuil sont dfinies par les relation suivantes :

et 84

compris entre 85 et 169 2 1

compris entre 170 et 254 3 2

Etant donn le choix d'une matrice de seuil D(2n) ( on verra plus loin comment la choisir), la mthode d'affichage est la suivante : Soit un pixel (x,y) ; on calcule x0 = x mod 2n , y0 = y mod 2n o a mod b exprime le reste de la division entire de a par b; x0 et y0 sont donc compris entre 0 et 2n-1. Dans la matrice de seuil, on prend alors le seuil S = Dx0y0(2n). Si I(x,y) > S : allumage du pixel dans un niveau dtermin, sinon allumage dans un autre niveau galement dtermin comme dans le cas de la mthode du seuil alatoire. Appliquons la mthode au cas N=4: on divise la plage 0-255 en trois zones de 85 couleurs chacune. La matrice de seuil D(8) possde 64 seuils ; D(10) en possde 100. On choisira donc D(8) et on normalisera par le facteur 63/84 = 3/4 = 0,75. Pour chacune des trois zones, on normalise l'intensit lumineuse par le formules suivantes :
G G G

zone 1 : P = 0,75 * I(x,y) zone 2 : P = 0,75*[I(x,y) - 85] zone 3 : P = 0,75*[I(x,y) - 170]

L'algorithme est alors assez similaire celui de la mthode des seuils alatoires ) : algorithme pour matrice de seuil (4 niveaux) : Pour chaque pixel (x,y) de niveau I(x,y) Faire : x0=x mod 8 y0=y mod 8 S=Dx0y0(8) Si I(x,y)<85 alors P=0,75*I(x,y) Si P<S alors Afficher avec niveau 1 sinon Afficher avec niveau 0 fin Si sinon si I(x,y)<170 alors P=0,75*(I(x,y)-85) si P>S alors afficher avec niveau 2 sinon afficher avec niveau 1 fin Si sinon P=0,75*(I(x,y)-170) si P>S alors afficher avec niveau 3 sinon afficher avec niveau 2 fin Si fin Si fin Si fin Pour

2 - Outils lmentaires d'analyse d'image


2.1 - Histogramme

Soit une image comportant n lignes et p colonnes, donc n.p pixels. Chacun de ces pixels est cod sur q bits ( si q = 8, on a 256 niveaux). On peut effectuer une statistique sur les niveaux en comptant, pour chaque niveau, combien de pixels possdent cette niveau. La reprsentation graphique de cette statistique est un histogramme par niveau .

Si l'image comporte beaucoup de niveaux diffrents, l'histogramme a tendance se prsenter sous forme d'une courbe; sinon,

l'histogramme comporte des "btons". On peut interprter cet histogramme en termes de probabilits : si fi est la frquence d'apparition du niveau i, la probabilit d'apparition de ce niveau dans l'image est donne par pi = fi / n.p . L'histogramme permet d'obtenir des renseignements rapides sur une image.

On peut notamment faire la distinction entre une image trop fonce (niveaux en majorit prs de 0) et une image trop claire (niveaux en majorit prs de 255) comme indiqu ci-contre :

On peut aussi faire la diffrence entre le fond de l'image (arrire plan) et les objets intressants de l'image (premier plan).

2.2 - Profil Un profil est tout simplement une reprsentation de la variation du niveau I(x,y) des pixels le long d'une ligne ou d'une colonne donne.

2.3 - Recherche de niveau Cette opration consiste afficher tous les pixels qui ont mme niveau qu'un pixel donn. Ce procd permet de mettre en vidence des dtails de mme nature sur une image. 2.4 - Information contenue dans une image Etant donn une image code sur N niveaux de couleur, on appelle quantit d'information apporte par un niveau donn la grandeur suivante : Qi = - log2(pi) o pi est la probabilit d'apparition du niveau i . Puisque la probabilit pi est comprise entre 0 et 1, il s'ensuit que la quantit d'information Qi varie de 0 l'infini:

On notera que plus le niveau est rare ( pi faible), plus la quantit d'information est grande; en revanche, un niveau omniprsent apporte peu d'information. Dans la pratique, la probabilit pi est approche par un comptage statistique, ce qui conduit videmment des approximations de la quantit d'information. On peut, sur une image, calculer la quantit d'information moyenne en effectuant une moyenne arithmtique pondre des quantits d'information apportes par chaque niveau ( avec des coefficients pi ). Le rsultat est appel l'entropie (en fait entropie au premier ordre car la corrlation entre les pixels n'est pas prise ici en compte) de l'image :

La figure ci-dessous explicite le calcul de l'entropie pour une image 16 niveaux dont on connat l'histogramme.

3 - Traitements de base
Les traitements de base ou prtraitements consistent amliorer l'image pour une application spcifique. Cette amlioration peut consister restaurer une image dgrade : on parle alors de restauration d'image, ce qui s'effectue gnralement en deux temps :
G G

1re phase : modlisation de la dgradation 2me phase : application de la modlisation inverse

Elle peut galement consister donner d'une image initiale une image plus nette ou plus trouble : on parle alors de filtrage ou de bruitage quoique cette notion peut faire rfrence des techniques trs diverses. On ne s'intressera ici qu' cet aspect des traitements de base. Travailler l'image directement au niveau des pixels s'appelle travailler dans le domaine spatial. Si au contraire, on travaille non pas l'image, mais sa transforme de Fourier ( voir plus loin), on travaille dans le domaine frquentiel. Dans ce chapitre, on notera, comme prcdemment, par I(x,y) le niveau de gris du point (x,y). On pourra considrer que les valeurs de I(x,y) vont de 0 ( noir) N-1 (blanc) . On distinguera trois types de traitements de base : mthodes bases sur l'examen de

l'histogramme, filtrage dans le domaine spatial, filtrage dans le domaine frquentiel .

3.1 - Transformations d'histogramme Table de conversion Encore appele LUT ( Look Up Table), une table de conversion est une table qui tout niveau ( de 0 255) fait correspondre un autre niveau ( dans la plage 0-255). Il s'agit donc d'une transformation de niveaux :

j = Transfo(i)

Voici deux exemples triviaux de LUT ):

application 1 : recadrage de dynamique. Pour des images trop claires ou trop fonces, ou encore d'images dont les pixels ont des niveaux distribus sur une plage troite, il s'agit de redistribuer les niveaux sur l'ensemble de la plage 0-255 . application 2 : mise en vidence de zones de l'histogramme par binarisation. Tous les pixels ayant des niveaux de gris situs entre a et b seront de niveau Nmax, tous les autres seront de niveau 0 :

exemple 1 : soit l'image I1 ; on dsire mettre en blanc (255) les points dont la nuance de gris est comprise entre 0 et 127 et en noir (0) les points dont la nuance de gris est comprise entre 128 et 255. On obtient l'image I2 avec le LUT ci-dessous. On pourra faire cet exercice avec l'outil tlcharger (partie TP).

I1

I2

exemple 2 : L'image I1 montre des traces grises. On peut les supprimer l'aide d'une LUT (les nuances de gris ple sont remplaces par du blanc). On pourra faire cet exercice en utilisant l'outil tlchargeable en TP.

I1

I2

Modification de la forme de l'histogramme ; galisation Il s'agit d'un recadrage d'image vers une forme prdtermine de l'histogramme. Si la forme est une distribution uniforme( ce qui est frquemment le cas) il s'agit d'une galisation d'histogramme. Le but est, partir d'une image initiale, de fabriquer une nouvelle image dans laquelle tous les niveaux auront la mme frquence de manire exacte ou approche. Dans le premier cas, on dira que l'histogramme de la nouvelle image est "plat"; dans le second cas, on dira qu'il est galis. a) Histogramme plat On raisonnera sur un exemple simple. Supposons que l'on ait une image I1 de 8 lignes et 16 colonnes. Pour simplifier encore, on supposera ici que l'on ne dispose que de 8 niveaux de gris. La population moyenne de chaque niveau est donc : p0 = 8x16/8 = 16 pixels . L'histogramme de l'image I1 est suppos tre celui de la figure ci-dessous :

Pour obtenir l'histogramme plat, il faut remplir chaque couleur de 0 7 avec 16 pixels. Il faut donc oprer une redistribution :
G G G G G G G G

ancien niveau 0 : identique ancien niveau 1 : 7 pixels prennent le niveau 0 ancien niveau 2 : 8 pixels prennent le niveau 0, 13 pixels le niveau 1 ancien niveau 3 : 3 pixels prennent le niveau 1, 16 pixels le niveau 2, le reste inchang ancien niveau 4 : 16 pixels restent de niveau 4, 16 pixels prennent le niveau 5, 3 pixels le niveau 6 ancien niveau 5 : 13 pixels prennent le niveau 6, 8 pixels le niveau 7 ancien niveau 6 : les 7 pixels prennent le niveau 7 ancien niveau 7 : identique

En modifiant les pixels dans l'ordre de lecture gauche-droite, haut-bas, de l'image, on obtient l'image I2 dont l'histogramme est prsent ci-dessous :.

b) Histogramme galis Dans la mthode prcdente, il y a un arbitraire : le choix des pixels qui changent de niveau. Il est videmment plus intressant de ne pas faire de distinction entre les pixels de mme niveau et de changer ce niveau globalement. On procde alors par rduction du nombre de niveaux : on remplace plusieurs niveaux par un seul. Soit donc Nr le nombre de niveaux de regroupement ( Nr < N).On choisira Nr = 4 pour cet exemple. L'histogramme est alors spar en bandes de largeur N/Nr. Le nombre moyen de pixels par bande est n.p/Nr soit ici 128/4 = 32. On rpartit alors les pixels de la manire suivante :
G G G G

pixels de niveaux 0, 1, 2 ----------> 29 pixels de niveau 0 pixels de niveau 3 -----------------> 35 pixels de niveau 1 pixels de niveau 4 -----------------> 35 pixels de niveau 2 pixels de niveaux 5, 6, 7 ----------> 29 pixels de niveau 3

On obtient ainsi l'image I3 dont l'histogramme est prsent ci-dessous :.

Le choix de Nr est gnralement fait par dichotomie : on divise N par 2, puis encore par 2 le cas chant et ainsi de suite. L'algorithme employ peut tre formalis comme indiqu ci-dessous : algorithme d'galisation d'histogramme : moyenne = nombre de pixels / N bande= Nr/N centre=bande/2 idbut=0 ifin=0 Tant Que ifin<Nr faire : cumul=0 Tant Que (cumul non proche de moyenne) et (ifin<Nr) faire : cumul=cumul+histogramme(ifin) incrmenter ifin Fin Tant Que Pour i=idbut ifin-1 faire : Transfo(i)=centre fin Pour idbut=ifin centre=centre+bande fin Tant Que Pour tous les points faire : I(i,j)=Transfo(I(i,j)) fin Pour 3.2 - Soustraction et moyenne d'images La soustraction d'images est utilise dans certaines applications pour mettre en vidence certains dtails caractristiques. Ainsi, en radiographie, on peut tre intress mettre en vidence certains organes par utilisation de matire colorante: on effectue une prise d'image aux rayons X d'un sujet : I1(x,y), puis aprs injection de matire colorante, on prend des images TV du mme sujet : I2(x,y). On effectue alors la diffrence g(x,y) = I1(x,y) - I2(x,y) qui permet de donner une visualisation "dynamique" des dtails intressants. Dans un autre ordre d'ide, on peut effectuer des sommations d'images. Considrons une image I(x,y) entache d'un bruit b(x,y). Le rsultat est une image bruite g(x,y) = I(x,y) +b(x,y). Imaginons alors que l'on prenne M images du mme sujet. Pour chaque image de numro k, on aura gk(x,y) = I(x,y) + bk (x,y). La valeur moyenne(note ici <...>) des rsultats est

On peut recommencer l'opration un certain nombre de fois et considrer la distribution statistique des valeurs <g(x,y)> obtenues. Elle est caractrise par son esprance mathmatique <<g>> et son cart-type s(<g>). En considrant lgitimement que le bruit a une valeur moyenne nulle, on obtient les rsultats simples suivants :

Ces rsultats indiquent que la moyenne des images bruites gk(x,y) tend vers l'image "propre" I(x,y) quand M est assez grand. 3.3 - Filtrage dans le domaine spatial

On distingue 2 classes de filtres : les filtres linaires et les filtres non-linaires suivant que l'oprateur appliqu est linaire ou non. Filtrage linaire Parmi les filtres linaires, 3 catgories de filtres sont envisages qui se distinguent par des proprits dans le domaine frquentiel; nous verrons donc plus loin la raison des appellations utilises :
G

filtres "passe-bas" : ils sont utiliss pour attnuer les dtails de l'image qui "tranchent" nettement avec le reste de l'image : bords, caractristiques particulires notamment. Le rsultat de l'application d'un filtre "passe-bas" sera une image "brouille" ou "trouble". filtres "passe-haut" : contrairement aux prcdents, ils sont utiliss pour attnuer les caractristiques "neutres" et mettre en vidence les dtails qui "tranchent". filtres "passe-bande" : ils ont peu d'intrt pour le rehaussement d'image, mais par contre ils sont utiliss dans le cas de la restauration d'image.

Le principe du filtrage linaire est de remplacer le niveau d'un pixel par une combinaison linaire des niveaux des pixels environnants. Cette combinaison linaire est usuellement reprsente par un masque. Considrons par exemple un pixel (x, y) de l'image de niveau I(x,y). On peut remplacer la couleur de ce pixel par une combinaison linaire des couleurs de tous les points immdiatement voisins ( y compris lui-mme) :

g(x,y) = 1/9 [ I(x-1,y-1) + I(x-1,y) + I(x-1,y+1) + I(x,y-1) + I(x,y)+I(x,y+1) + I(x+1,y-1) + I(x+1,y) + I(x+1,y+1) ]
ou encore :

o le masque h1 est dfini par la matrice

On peut gnraliser le procd : pour un filtre hp de taille (2n+1)x(2n+1) :

Les matrices ci-dessous donnent des exemples de filtres linaires o le pixel central est dot d'un poids plus important que les pixels priphriques :

Les coefficients de tous ces filtres sont positifs; ils contribuent "adoucir" l'image en remplaant le niveau de chaque pixel par une moyenne arithmtique pondre des niveaux des pixels voisins. Il s'agit de filtres "passe-bas". On peut imaginer des filtres linaires dont les masques prsentent des coefficients positifs au centre et des coefficients ngatifs pour les pixels voisins. Il s'agit alors de filtres "durcissants" qui mettront en valeur des dtails qui "tranchent", donc de filtres "passe-haut". Ainsi sera le

filtre dont le masque est dfini ci-dessous :

Pour "durcir" l'image, on peut aussi utiliser des mthodes plus labores; par exemple, on peut d'abord utiliser un filtre "passebas" ce qui conduit une image gb(x,y), puis effectuer la soustraction de l'image gb (x,y) de l'image originale I(x,y). On obtient alors une image filtre en "passe-haut",gh (x,y) = I(x,y) - gb (x,y). On peut aussi utiliser le filtrage "high boost" en multipliant, dans l'expression prcdente, l'image originale I(x,y) par un coefficient d'amplification A : ghb (x,y) = A.I(x,y) - gb (x,y) = (A-1).I(x,y) + I(x,y) - gb (x,y) = (A-1).I(x,y) + gh (x,y) Une autre manire de "durcir" l'image est d'utiliser des filtres drivatifs; ils sont surtout utiliss pour la dtection de contour; nous les verrons plus loin. Produit de convolution L'opration de filtrage linaire prcdente n'est autre que l'application d'un produit de convolution. Dans le cas discret, un produit de convolution se dfinit par :

Il s'agit, en fait, de la "composition" de deux images : l'image initiale et le masque. Dans l'opration de filtrage se pose videmment le problme des pixels qui sont la bordure de l'image ( le masque "dpasse l'extrieur"). On adopte alors, au choix, plusieurs stratgies, dont certaines sont rsumes ci-dessous :
G

G G

On peut tout d'abord " rduire " l'image : si le masque est de dimension (2n+1)(2n+1), on enlve de l'image finale la bordure de largeur n . On peut galement extrapoler par des zros les pixels extrieurs l'image. Ces pixels reoivent le niveau arbitraire 0. On peut enfin extrapoler par un "miroir" : si le masque est de dimension (2n+1)(2n+1), on ajoute une bordure de largeur n que l'on remplit en considrant que le bord de l'image initiale est un miroir.

Filtrage gaussien a) courbe de Gauss La fonction de Gauss

est trs employe en statistique ( loi de Laplace-Gauss ou loi normale). Sa courbe reprsentative est reprsente la figure ci-dessous :

. Le paramtre est l'cart-type. Il donne une indication sur la dispersion de la courbe ( vaut 1 sur la figure ). On dmontre les rsultats utiles suivants :

ce qui montre que l'on peut se restreindre l'intervalle [-2, +2] ou [-3, +3]. b) masque gaussien Dans le filtrage linaire classique, on a pu remarquer que les lments du masque sont des poids statistiques. On prendra ici comme poids statistiques la valeur de la fonction de Gauss "bi-dimensionnelle" :

mais en limitant x et y la plage [-3 , +3 ] puisque, pratiquement, les valeurs significatives sont dans cette plage. Si on prend une taille 2n + 1 = 5 ( = 5/6), le masque est donc :

( la somme de tous les coefficients est trs proche de 1). Le filtrage gaussien consistera donc en la convolution :

soit

Pour chaque point, en admettant que les valeurs du masque soient pralablement calcules, il faut effectuer (2n + 1)2 multiplications et (2n + 1)2 -1 additions. Pour une image de 200x200 points, avec un masque de taille 5, il faut donc 1 000 000 multiplications et 960 000 additions ! On remarquera que le temps de calcul est approximativement proportionnel au carr de la taille du masque; on a donc intrt choisir une petite taille; toutefois, comme on va le montrer, un filtre gaussien est dcomposable en filtres gaussiens de taille moindre.

Le masque peut s'crire sous forme sparable :

On peut considrer que G1 correspond un masque rectangulaire (2n + 1)x1 tandis que G2 correspond un masque rectangulaire 1x(2n + 1). Le rsultat peut donc s'exprimer par des convolutions successives : g = G2 G1 I = G1 G2 I

3.4 - Transforme de Fourier Cas continu L'emploi de la transforme de Fourier est bnfique lorsque l'on manipule des produits de convolution. Rappelons la dfinition usuelle de la transforme de Fourier d'une fonction f(x) :

o f(x) est une fonction continue. Si f(x) est intgrable et si F(u) est intgrable, la transformation inverse existe :

et on a bien videmment

La fonction f(x) est relle mais sa transforme de Fourier F(u) est gnralement complexe et elle peut tre reprsente par sa partie relle et sa partie imaginaire, ou bien par son module |F(u)| et son argument. Le module est appel densit spectrale de f(x). exemple1 : Soit la fonction f(x) telle que f(x) = a pour 0<x<X et f(x) = 0 ailleurs. Le calcul de la transforme de Fourier est trs simple et conduit :

exemple 2 :

Considrons maintenant la fonction de Gauss

. Sa transforme de Fourier est :

ce qui montre que la transforme de Fourier d'une gaussienne est ( un coefficient prs) une gaussienne.

On peut galement dfinir la transforme de Fourier d'une fonction de deux variables f(x,y) :

ainsi que son inverse :

exemple 3 : la transforme de Fourier de la fonction f(x,y) = a si x[0,X] et y [0,Y] et f(x,y) =0 ailleurs est la fonction

La transformation de Fourier possde une proprit capitale qui en fait, d'ailleurs, l'intrt ici : elle permet de manipuler simplement les produits de convolution. Dans le cas continu, un produit de convolution est dfini par :

La transforme de Fourier d'un produit de convolution est le produit ordinaire des transformes de Fourier des facteurs du produit de convolution :

Nous ne dmontrerons pas ici cette proprit. Cas discret Pour le traitement d'image, il nous faut considrer des fonctions discrtes qui s'appliquent aux pixels d'une image. Etant donn une fonction f prenant ses valeurs sur un ensemble de valeurs discrtes : 0, 1, 2, 3, ......,N-1, on dfinit la transforme de Fourier de cette fonction par :

La transformation inverse est dfinie par :

La dfinition s'tend au cas de deux dimensions :

On a suppos ici, par commodit, que le domaine de valeurs (x,y) est carr de dimension NxN (ce qui correspond des images carres). La proprit fondamentale de la transforme de Fourier vaut toujours dans le cas discret : la transforme de Fourier d'un produit de convolution est le produit des transformes de Fourier. L'expression du produit de convolution discret a t donne prcdemment.

Transforme de Fourier rapide ( FFT) Le calcul de la transforme de Fourier discrte une dimension sur N points ncessite un grand nombre d'oprations numriques : pour chacune des N valeurs de u, il faut effectuer N multiplications complexes de f(x) par exp(-i2xu/N) et N-1 additions des rsultats (les termes exponentiels peuvent tre considrs comme ayant t calculs une fois pour toutes et stocks dans une table). Le nombre d'oprations est proportionnel N2. Pour N= 512, cela correspond 262 144 oprations ! On peut montrer que l'on peut rduire le nombre d'oprations Nlog2N (soit 4608 pour N = 512) en employant la mthode de calcul dite "Fast Fourier Transform". L'ide de base est de poser N = 2M = 2n ( donc de considrer N comme une puissance de 2) et de sparer la sommation globale en deux termes :

avec

Alors, en vrifiant que 2M2ux = Mux et 2M2ux+x =M ux 2Mu on a

F(u)=Fpair(u) + Fimpair(u) 2M u

Comme Mu+M = Mu et 2Mu+M = -2Mu on a aussi F(u+M) = Fpair(u) - Fimpair(u) 2Mu Le calcul sur les points 0,1,2,.......N/2 - 1 donne Fpair(u) et Fimpair(u), donc F(u) ; pour les points N/2, N/2 + 1, N/2 +2,.......N-1, on utilise F(u+M). On dmontre alors que le nombre d'oprations est le suivant : pour les multiplications (N/2)log2N pour les additions Nlog2N. Le calcul effectif ncessite d'ordonner les termes f(xi) pour augmenter la rapidit; plusieurs algorithmes sont proposs dont celui de la "rgle des bits inverss". Supposons que l'on calcule F(u) en huit points : {0,1,2,3,4,5,6,7}. La rgle des bits inverss s'applique comme suit : x dc. x bin. renv. nouv. x dc.

0 1 2 3 4 5 6 7

000 001 010 011 100 101 110 111

000 100 010 110 001 101 011 111

0 4 2 6 1 5 3 7

On renumrotera donc les points suivant l'ordre {0,4,2,6,1,5,3,7}. L'algorithme FFT est donn ci-dessous : algorithme FFT fourniture du vecteur f(x) et de n N=2n J=1 //renumrotation Pour I=1 N-1 faire : Si I < J alors changer f(J) et f(I) k=N/2 fin Si Tant que k < J faire : J=J-k k=k/2 fin Tant que J=J+k fin Pour //calcul Pour L=1 n faire : =exp(-i2L-1) u=i // i est le nombre imaginaire Pour J=1 2L-1 faire : Pour I=J N par pas de 2L faire : v=I+2L-1 f(v)=f(I)-f(v)u f(I)=f(I)+f(v)u fin Pour u=u fin Pour fin Pour

3.5 - Filtrage dans le domaine frquentiel Le principe est simple et s'appuie sur le thorme fondamental de la transforme de Fourier :on applique le filtrage sur les transformes de Fourier de l'image et du masque, puis on utilise la transformation de Fourier inverse : masque h --------> F [h] = H image I --------> F [I] = J H.J = F [hI] ---------> image filtre hI = F -1[H.J] a) filtres "passe-bas" Ces filtres attnuent les hautes frquences; le filtre idal est donn par :

H(u,v) = 1 si r < R H(u,v) = 0 si r > R avec r2 = u2 + v2

Le filtre de Butterworth ,dfini par

avec n, entier suprieur ou gal 1, est du mme type, mais moins brutal . Un filtre gaussien appartient aussi cette catgorie; comme la transforme de Fourier d'une gaussienne est une gaussienne, il n'y a rien de spcial dire ici sauf la proprit intressante suivante : un filtre gaussien peut tre remplac par une cascade de filtres gaussiens plus simples. Considrons, en effet, un ensemble de K filtres gaussiens :

Appliquons successivement ces filtres : g = g1 g2 g3........ gK Il est alors facile de montrer en utilisant la proprit fondamentale de la transforme de Fourier d'un produit de convolution que

ce qui signifie qu'un filtre gaussien G peut s'interprter comme une cascade de filtres lmentaires gi. Si on choisit une taille (-3,+3) pour le masque du filtre gaussien g, on aura , en nombre de pixels, 2n + 1 = 6 ou n = 3 -1/2. Pour un masque de filtre gaussien lmentaire, on choisit une taille (-30, +30), d'o en nombre de pixels 2n0 + 1 = 6 0 ou n0 = 3 0 1/2. En supposant les filtres lmentaires identiques, on a s = 0K1/2, donc n = 3 -1/2 = 3 0K1/2 - 1/2 = (n0 + 1/2)K1/2 - 1/2. Par exemple si on applique 9 fois un filtre de taille 5 (K = 9, n0 = 2 ), l'opration quivaut l'application d'un filtre de taille 9. b) filtres "passe-haut" Les filtres "passe-haut" attnuent les basses frquences. Le filtre idal est dfini par :

H(u,v) = 0 si r < R H(u,v) = 1 si r > R avec r2= u2 + v2

Le filtre de Butterworth est moins brutal :

3.6 - Filtrage non linaire Le niveau d'un pixel de l'image filtre est toujours fonction du niveau des pixels environnants, mais le calcul n'est plus bas sur de combinaisons linaires. Prenons l'exemple le plus classique du filtre mdian : les niveaux du pixel et de pixels environnants sont classs par ordre croissant d'importance; on prend pour niveau du pixel la mdiane de cette srie.

4 - Images binaires
La binarisation consiste transformer une image plusieurs niveaux en une image en noir et blanc ( deux niveaux seulement). C'est le moyen privilgi pour isoler des objets.

Par suite, une image binaire peut tre reprsente par une matrice boolenne dont chaque lment signifie Vrai (1 = blanc) ou Faux (0 = noir).

4.1 - Oprateurs morphologiques

Dilatation Lorsqu'une image est bruite, sa binarisation fait apparatre des points noirs ou des points blancs parasites et isols dont il faut se dbarrasser par des techniques : la dilatation et l'rosion. La dilatation consiste liminer les points "noirs" isols : on dilate les parties "blanches" ce qui "mange" les points "noirs". La mthode est le balayage de l'image par une fentre (2n+1)x(2n+1) avec utilisation du OU logique. On place le centre de la fentre sur le pixel courant et on effectue un OU logique sur les (2n +1)2 - 1 pixels environnants. Si le rsultat est 1, le pixel est mis 1; si le rsultat est 0, le pixel est conserv.

Erosion Il s'agit ici d'liminer les points "blancs" isols. La mthode est assez similaire celle de la dilatation . On balaie l'image avec une fentre de taille (2n + 1). On place le centre de la fentre sur le pixel courant. On effectue un ET logique sur les pixels environnants. Si le rsultat est 1, le pixel est conserv; si le rsultat est 0, le pixel est mis 0. On pratique en gnral par succession d'rosion et de dilatation .

Squelettisation L'objectif est ici de diminuer l'information redondante contenue dans une image, donc la quantit de donnes analyser. La mthode est l' isolement des lignes principales de l'image avec des amincissements successifs jusqu' ce que l'image rsultante ne contienne que des lignes d'paisseur 1 pixel. La mthode ncessite l'emploi successif de 8 masques . On effectue sur l'image une succession de passes; on arrte lorsque le rsultat entre deux passes successives est inchang. Une passe consiste en l'application successive, sur toute l'image de chacun des 8 masques ( le point central sur le point courant traiter). Les 8 masques correspondent aux transformations suivantes : si la situation de gauche est rencontre, alors on remplace le pixel trait par 0.

La figure ci-dessous prsente le rsultat d'une squelettisation :

5 - Segmentation
La segmentation consiste dcouper l'image en rgions. Il y a deux manires de caractriser une rgion : par contours et par homognit ( par exemple, mme couleur). 5.1 - Extraction de contours On dfinit un contour comme une brusque variation du niveau de couleur :

Un contour est un cas complexe de discontinuit. Pour dtecter une discontinuit, on peut employer des masques linaires qui aprs application en un point fournissent un rsultat R. Pour un masque d'ordre 3, de forme gnrale

le rsultat est

o zi est le niveau du pixel. Pour la dtection d'un point isol, on peut employer un seuil S, la condition de dtection tant r > S o r dsigne la valeur absolue de R. Pour la dtection d'une ligne droite, on peut employer 4 masques :

La dtection d'une ligne droite associe un masque Ai est dduite de la condition ri > rj j<i.

La dtection d'une discontinuit quelconque est plus dlicate; d'une manire gnrale, une discontinuit se manifeste par une variation de niveau, par le comportement de la drive premire de I(x,y) ou de la drive seconde de I(x,y). Le processus d'extraction de contours comporte plusieurs tapes :
G

G G

mise en vidence des contours : on procde par diffrenciation de l'image rduction des contours : obtention de lignes d'paisseur 1 pixel. binarisation des contours description des contours : dcomposition en lments simples

On ne s'intressera ici qu'aux deux premires tapes. Oprateurs de diffrenciation Plusieurs mthodes sont employes ; on passera en revue les principales : a) mthode du gradient (drivation premire de l'image) On dfinit, pour un pixel (x,y) le gradient par Ax = I(x+1,y) - I(x,y) Ay= I(x,y+1) - I(x,y).

Le gradient peut aussi tre caractris par son amplitude et sa direction :


G G

amplitude A0(x,y) = (Ax2 + Ay2)1/2, direction D(x,y) = Arctan(Ay / Ax).

Pour obtenir le gradient, on convolue l'image avec des masques dans la logique des formules prcdentes.

Roberts

Sobel

Prewitt

Les algorithmes de Prewitt et Sobel apportent une meilleure insensibilit au bruit. b) mthode du laplacien (drivation seconde de l'image) Formellement, la dfinition du laplacien de la fonction I(x,y) est

Par discrtisation, on obtient la relation approche I = 4 I(x,y) - I(x,y+1) - I(x-1,y) - I(x+1,y) - I(x,y-1) ce qui conduit au masque :

La prsence d'un contour est indique par le passage du laplacien par zro. Toutefois, le laplacien est plus souvent utilis pour reconnatre quelle rgion appartient un pixel. Rduction des contours L'application des oprateurs de diffrenciation permet d'obtenir pour chaque point (x,y) de l'image l'amplitude du gradient A0(x, y) et sa direction. Il s'agit maintenant , pour dterminer avec prcision le contour, de choisir les points pour lesquels A(x,y) est maximum. Pour cela, pour chaque point (x,y) (dont on possde l'amplitude et la direction du gradient), on recherche les points adjacents qui se trouvent dans la direction du gradient : (x1,y1) et (x2,y2).

On compare alors A0(x,y) A0(x1,y1) et A0(x2, y2) : si A0(x,y) > A0(x1, y1) et A0(x,y) > A0(x2, y2) alors le niveau du point (x,y) est conserv, sinon il est mis " 1 ".

5.2 - Segmentation en rgions homognes

Il s'agit de considrer une rgion comme un ensemble de points possdant la mme proprit ( homognit) . Les critres d'homognit peuvent tre la couleur ou le niveau de gris, la texture, .... Mthode par sparation Elle est base sur la technique du Quad Tree : l'image est suppose carre : on la divise en 4 quadrants, puis chaque quadrant en 4 sous-quadrants et ainsi de suite. L'algorithme de division est simple et rcursif : Separation(zone) Si critere(zone)=VRAI alors classer sinon diviser zone en 4 sous-zones Z1,Z2,Z3,Z4 Pour i=1 4 faire : Separation(Zi) fin Pour fin Si

et le quad tree est :

Mthodes par fusion Alors que la mthode prcdente consistait diviser l'image, les mthodes par fusion appliquent le principe inverse : on fait

crotre une rgion en y incorporant les rgions voisines ayant les mmes critres d'homognit ( fusion de rgion). La rgle de fusion est double : les deux rgions correspondent au mme critre et elles sont adjacentes. La mthode de la coloration de tches consiste promener sur l'image une fentre de trois points. En chaque point on applique l'algorithme indiqu ci-dessous o Couleur est un niveau de couleur attribu aux pixels satisfaisant le mme critre. Pour chaque point (x,y) faire : Si critere(x,y)=critere(x-1,y) alors Couleur(x,y)=Couleur(x-1,y) sinon si critere(x,y)=critere(x,y-1) alors Couleur(x,y)=Couleurx,y-1) sinon Couleur(x,y)=Nouvelle_Couleur fin Si fin Si fin Pour

La mthode locale rcursive consiste faire crotre au maximum une rgion avant de passer la suivante . L'algorithme est dcrit ci-dessous : Pour chaque pixel (x,y) faire : Si I(x,y) <> 0 alors sauvegarder le point de dpart x,y croissance(x,y) incrmenter NumroSegment fin Si fin Pour croissance(x,y) I(x,y)=0 // pour ne pas rexaminer(x,y) Pour tout pixel adjacent (x,y) faire : Si I(x,y)<>0 et critere(pixel)=critere de dpart alors croissance(pixel) fin Si fin Pour

Travaux pratiques
Le programme Iti2.exe qui peut tre tlcharg permet d'exprimenter la plupart des algorithmes dcrits dans ce cours. La majeure partie du programme a t ralise par deux tudiants de MIAGE, sur cahier des charges fourni par l'auteur du cours, Nicola Boruta et Christine Vergriete. Des complments ont t, par la suite ajouts par un tudiant de DESS SIM, A.Bouberak. Ce programme comporte deux parties :
G G

Partie 1 : amliorations de l'image (ralise entirement en C++) Partie 2 : segmentation (rlaise en Visual Basic)

Ce programme correspond un outil pdagogique et non un outil professionnel. Les images qui peuvent tre traites sont des images "bmp" de dimensions 128x128, possdant 256 niveaux de gris. Une petite bibliothque d'images diverses est propose. Toutefois, il est possible de crer ses propres images. Tlcharger (le fichier envoy est compress avec winzip : iti2.zip).

Bibliographie :

J-J. THOUMAZET S. LELANDAIS R.C.GONZALES, R.E. WOODS M. COSTER, J.L. CHERMANT M. KUNT, G. GRANLUND, M. KOCHER

Traitement de l'image sur micro-ordinateur Initiation au traitement numrique des images Digital Image Processing Prcis d'analyse d'images Traitement numrique des images

SYBEX polycopi Univ. Paris VIII ADDISON WESLEY Presses du CNRS Presses Polytechniques et Universitaires Romandes

Initiation au traitement et l'analyse d'image - Exercices


dernire modification : 21/03/2000

Exercice 1
On considre l'image suivante en 4 couleurs 0 (noir), 1, 2, 3 (blanc) :

1) Tracer l'histogramme de cette image. 2) Dterminer son entropie au premier ordre. 3) On considre la LUT dfinie ci-dessous par j=f(i) o i est la couleur initiale et j la couleur transform correspondante. Dessiner l'image rsultant de cette transformation.

4) Appliquer l'image initiale, le filtre linaire dfini par le masque 3x3 suivant :

Exercice 2
On considre l'image suivante en 4 couleurs 0 (noir), 1, 2, 3 (blanc) :

1) Tracer l'histogramme de cette image 2) Dterminer son entropie au premier ordre 3) On considre la LUT dfinie ci-dessous par j=f(i) o i est la couleur initiale et j la couleur transforme correspondante.

Dessiner l'image rsultant de cette transformation 4) Appliquer l'image initiale le filtre linaire dfini par le masque 3x3 suivant

Initiation au traitement et l'analyse d'image - Solution des Exercices


dernire modification : 21/03/2000

Exercice 1
1) histogramme

2) entropie au premier ordre : 1,74 nuances nb pixels 0 1 2 3 48 46 28 134 256 3) application d'une LUT pi 0,19 0,18 0,11 0,52 1,00 qi=log2(pi) 2,42 2,48 3,19 0,93 Si=pi.qi 0,45 0,44 0,35 0,49 1,74

4) application d'un filtre linaire

Exercice 2
1) histogramme

2) entropie au premier ordre S = -somme(Pilog2(Pi)=somme(PiQi) i 0 1 2 3 N 48 44 Pi Qi PiQi

57 0,22 2,18 0,48 0,19 2,40 0,46 0,17 2,56 0,44 1,91

107 0,42 1,25 0,53

totaux 256

entropie au premier ordre : 1,91 3) image rsultant de cette transformation

4) application d'un filtre linaire