td 5ge image
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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