Travaux dirigés Traitement de l`image Transformations orthogonales

Transcription

Travaux dirigés Traitement de l`image Transformations orthogonales
Département de Génie Electrique
5ème Année GE option TdSI, Master EEAP parcours Systèmes & Images
Travaux dirigés
Traitement de l’image
Transformations orthogonales et ondelettes
Olivier Bernard
Rémy Prost
Edition 2015 / 2016
Institut National des Sciences Appliquées de Lyon
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
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 ' x
f ' ' x



f [i]
f ' [ i]= f [i1]− f [i]
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:
∂ 2 f  x , y ∂ 2 f  x , y 
 f  x , y =

∂x2
∂ y2
Questions:
∂2 f  x , y
∂2 f  x , y 
et
de
.
∂x2
∂y2
2. En déduire le masque 3x3 équivalent à l'opérateur Laplacien ainsi défini.
1. Trouver les expressions discrètes de
II. Convolution
Une image est filtrée par un masque 3x3. Ce filtre H est présenté ci-dessous:
[ ]
1 1 1
1
1 1 1
9
1 1 1
Question:
1. L'image filtrée est encore bruitée. Cette image est alors de nouveau filtrée par H. Quel
filtre G peut produire le même effet en une étape? (on déterminera parfaitement G).
3/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 les
caractéristiques suivantes:
●
●
●
●
sur une ligne horizontale quelconque, l'évolution de la densité est sinusoïdale, de la
forme: 1cos2   0 x 
sur une ligne verticale quelconque (colonne), la densité est constante;
l'origine de l'image  x 0, y 0 = 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 (Lx et Ly de dimension
infinie).
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
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 en
anglais);
● 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);
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
TD 5GE Option TDSI
INSA GE
2. Images monochrome
Exécuter et commenter le code suivant:
>> clear all; close all;
>>
>> img = imread('circuit.pgm');
>> figure; imshow(img); colormap(gray) ; axis image ; colorbar;
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:
>> img2 = double(img);
A partir de l'image img précédente, exécuter et commenter le code suivant:
>>
>>
>>
>>
>>
img2 = double(img)+1;
figure; imshow(img2); colorbar;
figure; imagesc(img2); colorbar;
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.( Ne modifie pas img2)
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
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('circuit.pgm'); colorbar;
>> imhist(img);
●
●
●
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');
figure; imagesc(img); colormap(gray); axis image; colorbar;
imcontrast();
figure; imshow(img); 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'image
résultante en sortie. L'utilisation d'une telle fonction se fera de la façon suivante:
>> load imtest.mat;
>> figure;imshow(im);
>> figure;imhist(im,256);
>> imr=cadrelin(im);
>> figure;imhist(imr,256);
>> figure;imshow(imr);
>> figure;imagesc(imr);colormap(gray);colorbar;axis image;
7/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);
Pour chacun des 3 filtres, répondre 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 imgRec 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
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 suivant
l’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
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
approximation BL BC
1:2
Fr
détails horiz. BL HC
1:2
Gr
détails vert. HL BC
1:2
Fr
détails diag. HL HC
1:2
Gr
1:2
Fr
1:2
Gr
Lignes
Colonnes
Fig 2 Reconstruction
10/12
TD 5GE Option TDSI
INSA GE
Questions:
Dans un but de simplification, nous utiliserons les filtres de Haar.
1. Proposer une méthode numérique simple de vérification de la reconstruction exacte par
les filtres (formule dite de ‘distorsion de module’ et de 'suppression des repliements
spectraux'). 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(4,1) ; ones(6,1) ;zeros(4,1)];
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 fa et ga (cf Fig.1). Elle fournira en sortie les coefficients
d'approximation c et les détails d issus de la décomposition. 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, les
coefficients de la réponse impulsionnelle des filtres de reconstruction fr 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.mat. L’image sera, respectivement, décomposée et reconstruite par les
deux fonctions 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
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 les coefficients
de la réponse impulsionnelle des filtres de décomposition fa 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 fr 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 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

Documents pareils