12
Département de Génie Electrique 5 ème Année GE option TdSI, Master GEGP parcours Syst èmes & Images Travaux dirigés Traitement de l’image Transformations orthogonales et ondelettes Olivier Bernard Rémy Prost Edition 2009 / 2010 Institut National des Sciences Appliqué es de Lyon

Td 5ge Image

Embed Size (px)

Citation preview

Page 1: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 1/12

Département de Génie Electrique

5ème Année GE option TdSI, Master GEGP parcours Systèmes & Images

Travaux dirigés

Traitement de l’image

Transformations orthogonales et ondelettes

Olivier Bernard

Rémy Prost

Edition 2009 / 2010

Institut National des Sciences Appliquées de Lyon

Page 2: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 2/12

TD 5GE Option TDSI INSA GE

TABLE DES MATIERES

Séances Sujets Pages

1 Filtrage / Convolution / Transformation de Fourier 3-4

2 Prise en main de Matlab pour le traitement d'images 5-8

3 Filtrage des images 9

4 Transformation en ondelettes 10

2/12

Page 3: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 3/12

TD 5GE Option TDSI INSA GE

Séance 1

 Filtrage / Convolution / Transformation de Fourier

  I. Opé rateur Laplacien

Soit un signal continu f(x) et sa version discrète f[i]. On pose:

 f   x f  [i ]

 f '  x f ' [ i ]= f  [ i1]− f  [i ]

 f ' '  x f ' ' [ i ]= f ' [i ]−  f ' [i −1]

Pour une image continue  f(x,y) (de version discrète  f[i,j]), les mêmes relations sont

supposées être valides dans les 2 directions du plan image. Le Laplacien de  f(x,y) est donné 

par:

f   x , y =∂ 2

 f   x , y

∂ x2

∂ 2

 f   x , y

∂ y2

Questions:

1. Trouver les expressions discrètes de∂

2 f   x , y

∂ x2

et de∂ 2

 f   x , y

∂ y2

.

2. En déduire le masque 3x3 équivalent à l'opérateur Laplacien ainsi défini.

 II. Convolution

Une image est filtrée par un masque 3x3. Ce filtre F est présenté ci-dessous:

1

9 [1 1 1

1 1 1

1 1 1]Question:

1. L'image filtrée est encore bruitée. Cette image est alors de nouveau filtrée par F . Quel

filtre G peut produire le même effet en une étape? (on déterminera parfaitement G).

3/12

Page 4: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 4/12

TD 5GE Option TDSI INSA GE

 III.Transformée de Fourier

On considère l'image analogique rectangulaire de dimensions  Lx et  Ly ayant lescaractéristiques suivantes:

● sur une ligne horizontale quelconque, l'évolution de la densité est sinusoïdale, de la

forme: 1cos2 0

x

● sur une ligne verticale quelconque (colonne), la densité est constante;

● l'origine de l'image  x0, y0=0,0 est prise au centre du rectangle;

● la densité sera prise égale à zéro à l'extérieur du rectangle.

Question:

1. Quelle est la transformée de Fourier monodimensionnelle d'un signal ligne ? Quelle

est, de même, la transformée de Fourier d'un signal « colonne »?

2. En déduire l'expression rigoureuse de la transformée de Fourier bidimensionnelle de

cette image.

3. On fait maintenant l'approximation que les dimensions de l'image sont très grandes

devant la période 1/0 et devant la taille d'un pixel. Que devient alors le spectre

bidimensionnel de l'image analogique de départ ?

On conservera cette approximation dans la suite du problème.

4. On considère maintenant l'image texturée résultant de l'addition de 2 motifs

identiques à celui décrit précédemment, mais ayant subi respectivement une rotation

de +45° et de -45°. Quel est le spectre correspondant à cette texture ?

5. L'image de la question 4) est perturbée par un bruit additif haute fréquence dont le

spectre a l'allure suivante:

La densité spectrale est constante à l'extérieur du cercle et elle est nulle à l'intérieur.

Quelle est la valeur minimale que peut prendre  R0 si l'on veut pouvoir extraire la

texture du bruit par filtrage linéaire?

4/12

Page 5: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 5/12

TD 5GE Option TDSI INSA GE

Séance 2

 Prise en main de Matlab pour le traitement d'images

I. Format des images sous Maltab et leur visualisation

Une image dans l'environnement matlab est généralement une matrice codée en virgule

flottante 64 bits. Nous étudierons uniquement deux types d’images:

● images couleurs: à chaque pixel correspond une couleur codée sur 3 valeurs

correspondant aux couleurs primaires R (Rouge), (V) Vert, (B) Bleu (RGB enanglais);

● images monochrome: à chaque pixel correspond une valeur numérique.

1. Images couleurs

Exécuter et commenter le code suivant:

>> clear all; close all;>>>> img = imread('paysage.png');>> figure; subplot(2,2,1); imshow(img);>>>> img1 = img;>> img1(:,:,2) = zeros( size(img,1), size(img,2) );>> img1(:,:,3) = zeros( size(img,1), size(img,2) );>> subplot(2,2,2); imshow(img1);>>>> img2 = img;>> img2(:,:,1) = zeros( size(img,1), size(img,2) );>> img2(:,:,3) = zeros( size(img,1), size(img,2) );

>> subplot(2,2,3); imshow(img2); colorbar;>>>> img3 = img;>> img3(:,:,1) = zeros( size(img,1), size(img,2) );>> img3(:,:,2) = zeros( size(img,1), size(img,2) );>> subplot(2,2,4); imshow(img3);

 Remarque: Le format png correspond au format « Portable Network Graphics » utilisé pour

stocker des images couleurs.

5/12

Page 6: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 6/12

TD 5GE Option TDSI INSA GE

2. Images monochrome

Exécuter et commenter le code suivant:

>> clear all; close all;>>>> img = imread('cuircuit.pgm'); colorbar;>> figure; imshow(img);

  Remarque 1: Le format  pgm correspond au format « Portable Graymap » utilisé pour

stocker des images en niveau de gris.

 Remarque 2: la fonction  colorbar permet d'afficher l'échelle de couleur dans la fenêtre de

visualisation.

Dans l'exemple précédent, l'image img possède des données au format uint8, c'est à dire en

entier non signé codé sur 8 bits (format standart du niveau de gris compris entre 0 et 255).

Cependant, lors de traitement (par exemple lors de filtrage), il est intéressant de manipuler

des données au format double (réel double précision codé sur 64 bits), augmentant ainsi la

précision des calculs. La ligne de code suivante permet de représenter l'image img en

format double:

>> img = double(img);

A partir de l'image img précédente, exécuter et commenter le code suivant:

>> img2 = double(img);>> figure; imshow(img2); colorbar;>> figure; imagesc(img2);>> figure; imagesc(img2); colormap(gray); colorbar;>> figure; imagesc(img2); colormap(gray); axis image; colorbar;

  Remarque 1: la fonction imagesc permet de faire une mise à l'échelle des données d'une

image vers l'ensemble de la plage de valeur de la table de couleurs courante et affiche le

résultat dans une fenêtre.

  Remarque 2: la fonction colormap permet de changer la table des couleurs pour une fenêtre

d'affichage.

 Dans la suite des TD, nous nous int é resserons uniquement aux images monochromes.

6/12

Page 7: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 7/12

TD 5GE Option TDSI INSA GE

II. Histogramme et recadrage

1. Calcul de l'histogramme d'une image

Exécuter et commenter le code suivant:

>> clear all; close all;>> img = imread('cuircuit.pgm'); colorbar;>> imhist(sample);

● Quel est le format de donnée de la variable img ?● A quoi correspond l'axe des abscisses ? Est-ce cohérent avec le format de donnée

trouvé ci-dessus ?

● A quoi correspond l'axe des ordonnées ?

2. Réhaussement de contraste

Exécuter et commenter le code suivant:

>> clear all; close all;

>> img = imread('cuircuit.pgm'); colorbar;>> figure; imagesc(img); colormap(gray); axis image; colorbar;>> imcontrast();

Pourquoi l'effet de réhaussement de contraste amélirore la qualitévisuelle de cette image particulière ?

3. Recadrage d'une image

A partir de l'image img précédente, programmer une fonction  recadre qui reçoit en entrée

une image, qui recadre les valeurs de cette image entre 0 et 1 et qui renvoie l'imagerésultante en sortie. L'utilisation d'une telle fonction se fera de la façon suivante:

>> figure; imshow(img);>> imgRec = recadre(img);>> figure; imshow(imgRec);>> sample = imgRec(:);>> n = length(sample);>> NbBin = round(2*power(n,2/5));>> [Ni,xi] = hist(sample,NbBin);>> figure; bar(xi,Ni,1,'b');

7/12

Page 8: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 8/12

TD 5GE Option TDSI INSA GE

III. Filtrages élémentaires

Etudier les 4 filtres suivants:

● Moyenne mobile 3x3 de réponse impulsionnelle hl[m,n] (voir le TD n°1);

● Filtre passe-haut complémentaire du filtre précédent (réponse harmonique

HH[k,l] = 1 – HL[k,l] );

● Filtre Laplacien (voir le TD n°1);

● Filtre de Sobel (horizontal, vertical, bidirectionnel par combinaision quadratique).

Pour chacun des 4 filtres, réponder aux questions suivantes.

Questions:

1. Calculer la réponse harmonique par transformation de Fourier 2D de sa réponse

impulsionnelle. On visualisera cette réponse en 3D maillée grâce à la fonction mesh

(n'hésitez pas à aller voir la documentation de cette fonction sous Matlab) et sous la

forme d’une image d’intensité.

2. Filtrer l'image imr par convolution 2D.

3. Verifier l'accroissement de dimension de l'image résultat.

4. Vérifier la modification des niveaux de gris maximum et minimum.

8/12

Page 9: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 9/12

TD 5GE Option TDSI INSA GE

Séance 3

 Filtrage des images

I. Vérification des propriétés de la transformée de Fourier 2D (TF 2D)

étudiées au TD n°1

Questions:

1. Synthétiser une image de 32x32 pixels avec un niveau de gris périodique suivantl’axe horizontal (voir TD1) de période 10 pixels. Observer l’image et calculer sa TF

discrète 2D.

2. Faire pivoter l’image de 90°. Observer l’image et calculer sa TF discrète 2D.

3. Ajouter la deuxième image à la première. Observer l’image et calculer la TF discrète

2D de cette nouvelle image.

4. Changer la période: 20 pixels au lieu de 10. Calculer sa TF discrète 2D.

II. Filtrages élémentaires (suite du TD n°2, 3ème partie)

1. Filtre de Sobel et détection de contours par seuillage

Question:

1. Effectuer le filtrage de l'image imtest  par un filtre de sobel (horizontal, vertical,

bidirectionnel par combinaison quadratique).

2. Calculer l’histogramme de l’image filtrée par le filtre de Sobel, choisir le seuil

nécessaire pour séparer l’image en deux classes (noir et blanc) et réaliser le

programme de seuillage.

III. Filtrages non-linéaire: filtre médian

Question:

1. Comparer le filtrage médian 3x3 à la moyenne mobile 3x3 pour le filtrage d'un bruit

impulsionnel sur l'image lena. Le filtre médian se fera à partir de la fonction matlab

 medfilt2. L'image bruitée sera générée à partir du code suivant:

>> lenab = imnoise( lena, 'salt & pepper' );

9/12

Page 10: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 10/12

TD 5GE Option TDSI INSA GE

Séance 4

Transformation en ondelettes

Analyse multirésolution par ondelettes et reconstruction

On souhaite effectuer une analyse multirésolution séparable d'une image. Les figures 1 et 2

donnent un shéma de décompostion et recontruction de l'image lena à partir d'un tel filtre.

Fig. 1 Dé composition multir é solution

Fig 2 Reconstruction

Questions:

10/12

LignesColonnes

Fr 

Gr 

1:2

1:2

Fr 

Gr 

1:2

1:2

Fr 

Gr 

1:2

1:2

approximation BL BC

détails horiz. BL HC

détails vert. HL BC

détails diag. HL HC

Page 11: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 11/12

TD 5GE Option TDSI INSA GE

Dans un but de simplification, nous utiliserons les filtres de Harr.

1. Proposer une méthode numérique simple de vérification de la reconstruction exacte parles filtres (formule dite de ‘distorsion de module’ uniquement). On observera le retard

du processus ‘analyse et reconstruction’ : r =1.

2. Ecrire le programme principal pour tester la décomposition 1D. Ce programme génèrera

le signal test suivant:

x= [zeros(1,4) ones(1,6) zeros(1,4)];

Ce signal sera, respectivement, décomposé et reconstruit par les deux fonctions

suivantes. On vérifiera que la reconstruction est exacte.

● decomp1D: cette fonction permet de décomposer un signal. Cette fonction prendra

en entrée le signal à décomposer x, les coefficients de la réponse impulsionnelle des

filtres de décompositon f a et ga (cf Fig.1). Elle fournira en sortie les coefficients

d'approximation c et les détails d  issues de la décompostion. Ainsi, le prototype

d'une telle fonction est:

 [c,d]=decomp1D(x,fa,ga)

● recons1D: cette fonction permet de reconstruire un signal à partir de ces coefficients

d'approximation c et les détails d . Cette fonction prendra en entrée c et d , lescoefficients de la réponse impulsionnelle des filtres de reconstruction f r  et gr  (cf 

Fig.2), le retard r  introduit par le filtrage FIR ainsi que la taille  N  du signal à 

reconstruire. Elle fournira en sortie le signal reconstruit avec compensation de retard

 xrr . Ainsi, le prototype d'une telle fonction est:

xrr=reconst1D(c,d,fr,gr,r,N)

3. Ecrire le programme principal pour tester la décomposition 2D. Ce programme utilisera

l’image imtest.m. L’image sera, respectivement, décomposée et reconstruite par les deuxfonctions suivantes. La fonction decomp2D sera utilisée pour décomposer les lignes de

l’image, puis les colonnes du résultat. On obtiendra 4 sous images de coefficients :

approximation, détails horizontaux, détails verticaux, détails diagonaux. La fonction

reconst2D effectuera la reconstruction. On affichera les deux images intermédiaires, les

quatre images de la décomposition et on vérifiera que la reconstruction est exacte.

11/12

Page 12: Td 5ge Image

8/3/2019 Td 5ge Image

http://slidepdf.com/reader/full/td-5ge-image 12/12

TD 5GE Option TDSI INSA GE

● decomp2D: cette fonction permet de décomposer une image en appliquant

decomp1D sur les lignes, puis, par une seconde application, sur les colonnes du

résultat. Cette fonction prendra en entrée l'image à décomposer  X , lescoefficients de la réponse impulsionnelle des filtres de décomposition f a et ga

(cf Fig.1). Elle fournira en sortie les deux images C  et  D issues de la

décomposition. Ainsi, le prototype d'une telle fonction est:

 [C,D]=decomp2D(X,fa,ga)

● reconst2D: cette fonction permet de reconstruire une image à partir de deux

images C et D issues de la décomposition. Cette fonction prendra en entrée C et

 D, les coefficients de la réponse impulsionnelle des filtres de reconstruction f r 

et gr (cf Fig.2), le retard r  introduit par le filtrage FIR ainsi que la taille  N  dusignal à reconstruire. Elle fournira en sortie l'image reconstruite Xr . Elle utilisera

la fonction reconst1D. Ainsi, le prototype de cette fonction est:

 Xr=reconst2D(C,D,fr,gr,r,N)

12/12