32
Notions de traitement et d'analyse d'image Dans tout ce qui suit, pour simplifier, on considérera, sauf mention contraire, des images matricielles initiales teintées avec 256 niveaux de nuances de gris (0 = noir à 255 = blanc). Pour des niveaux plus nombreux, les algorithmes devront être adaptés, mais sans difficulté majeure. 1 - Affichage d'images Etant en possession d'une image codée sur 256 niveaux de gris, on désire afficher cette image à l'aide d'un périphérique 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 très élaborée 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 ( notés 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 même longueur : 0-63, 64- 127, 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 désignera 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 aléatoire L'affichage précédent est assez brutal et ne tient pas compte de la densité des points allumés sur l'écran. Il est évident qu'une population importante de points de même niveau doit être discernée à l'affichage. La méthode du seuil aléatoire, basée sur un principe probabiliste, permet de répondre à cette attente. Examinons d'abord une représentation biniveau (N=2). On représente l'image avec 2 niveaux ( par exemple 0 = noir et 1 = blanc). Pour chaque point (x, y) on tire une valeur d'une variable aléatoire uniforme X ( entre 0 et 254) : 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

D226_Chapitre-5

Embed Size (px)

Citation preview

  • 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

  • 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 Sifin 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)S alors Afficher avec niveau 1 sinon Afficher avec niveau 0 fin Si sinon si I(x,y)S alors afficher avec niveau 2 sinon Afficher avec niveau 1 fin Si sinon Gnrer un seuil alatoire S compris entre 170 et 254 si I(x,y)>S alors Afficher avec niveau 3 sinon Afficher avec niveau 2 fin Si fin Si fin Sifin Pour

    1.3 - Affichage par matrices de seuil

    Rappelons que les matrices de seuil sont dfinies par les relation suivantes :

  • 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 :

    l zone 1 : P = 0,75 * I(x,y)l zone 2 : P = 0,75*[I(x,y) - 85]l 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)

  • 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 :

    l 1re phase : modlisation de la dgradationl 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 :

    l ancien niveau 0 : identiquel ancien niveau 1 : 7 pixels prennent le niveau 0l ancien niveau 2 : 8 pixels prennent le niveau 0, 13 pixels le niveau 1l ancien niveau 3 : 3 pixels prennent le niveau 1, 16 pixels le niveau 2, le reste inchangl ancien niveau 4 : 16 pixels restent de niveau 4, 16 pixels prennent le niveau 5, 3 pixels le niveau 6l ancien niveau 5 : 13 pixels prennent le niveau 6, 8 pixels le niveau 7 l ancien niveau 6 : les 7 pixels prennent le niveau 7l 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 :

    l pixels de niveaux 0, 1, 2 ----------> 29 pixels de niveau 0l pixels de niveau 3 -----------------> 35 pixels de niveau 1l pixels de niveau 4 -----------------> 35 pixels de niveau 2l 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

  • 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 :

    l 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".

    l filtres "passe-haut" : contrairement aux prcdents, ils sont utiliss pour attnuer les caractristiques "neutres" et mettre en vidence les dtails qui "tranchent".

    l 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 "passe-bas" 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 :

    l 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 .

    l On peut galement extrapoler par des zros les pixels extrieurs l'image. Ces pixels reoivent le niveau arbitraire 0.l 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

  • 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(-i2pixu/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)log2Npour 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 000 000 0

    1 001 100 4

    2 010 010 2

    3 011 110 6

    4 100 001 1

    5 101 101 5

    6 110 011 3

    7 111 111 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 nN=2nJ=1//renumrotationPour 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+kfin Pour//calculPour L=1 n faire : =exp(-ipi2L-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 Pourfin 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] = JH.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
  • 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 classersinon diviser zone en 4 sous-zones Z1,Z2,Z3,Z4 Pour i=1 4 faire : Separation(Zi) fin Pourfin 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 Sifin 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 Sifin 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 :

    l Partie 1 : amliorations de l'image (ralise entirement en C++)l 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 Traitement de l'image sur micro-ordinateur SYBEXS. LELANDAIS Initiation au traitement numrique des images polycopi Univ. Paris VIIIR.C.GONZALES, R.E. WOODS Digital Image Processing ADDISON WESLEYM. COSTER, J.L. CHERMANT Prcis d'analyse d'images Presses du CNRS

    M. KUNT, G. GRANLUND, M. KOCHER Traitement numrique des images 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 pi qi=-log2(pi) Si=pi.qi

    0 48 0,19 2,42 0,451 46 0,18 2,48 0,442 28 0,11 3,19 0,353 134 0,52 0,93 0,49

    256 1,00 1,74

    3) application d'une LUT

  • 4) application d'un filtre linaire

    Exercice 2

    1) histogramme

  • 2) entropie au premier ordre

    S = -somme(Pilog2(Pi)=somme(PiQi)

    i N Pi Qi PiQi

    0 57 0,22 2,18 0,48

    1 48 0,19 2,40 0,46

    2 44 0,17 2,56 0,44

    3 107 0,42 1,25 0,53

    totaux 256

    1,91

    entropie au premier ordre : 1,91

    3) image rsultant de cette transformation

  • 4) application d'un filtre linaire

    Disque localChap5 : traitement d'images partie 1

    ex.pdfDisque localexercices sur le traitement d'image -ex5.htm

    solex.pdfDisque localsolution des exercices sur le traitement d'image -solex5.htm