Professional Documents
Culture Documents
ABAINOU Yassine ;
EL HADEG Ibrahim ;
JAA El Ouali ;
TARRAQ Mohammed ;
Compte-rendu du TP 02
Filtrage de bruit :
Avant d’entamer les procédés de filtrage, il faut tout d’abord importer l’image :
Instructions sous MATLAB pour importer l’image de base :
originalImage = imread('cameraman.gif');
Pour afficher n’importe quelle image, on utilise l’instruction suivante :
figure, imshow(originalImage);
L’image sujette :
Figure 2: Filtration des images bruitées avec un filtre moyenneur d’un noyau de convolution de taille 5x5
Avec ce noyau, nous avons arrivé à adoucir les contours, et cela s’applique sur ceux qui ont
produits suites aux différents types de bruits appliqués sur l’image sujette. Nous remarquons aussi
que ce filtre est plus adapté au bruit Poisson et à un degré inférieur au bruit gaussien. Dans le cas
des bruits du type sel et poivre, le filtre moyenneur reste inefficace.
Avec un noyau plus large, par exemple :
Nous obtenons :
Figure 3: Filtration des images bruitées avec un filtre moyenneur d’un noyau de convolution de taille 7x7
En augmentant la taille du noyau de convolution du filtre, le bruit est mieux enlevé mais l’image
devient floue suite aux moyennes effectuées sur un nombre important des pixels, ce qui provoque
une réduction importante des détails.
Filtre gaussien :
À quoi sert le filtre gaussien ?
Dans le champ du traitement d’images, ce filtre est utilisé principalement pour lisser les images,
c’est-à-dire, atténuer le bruit en lissant les contours ! Dans le contexte de ce TP, nous appliquerons
ce filtre sur les trois types de bruit indiqués préalablement.
Pour filtrer nos images bruitées en utilisant le filtre gaussien, nous utilisons la fonction imgaussfilt :
outputImage = imgaussfilt(inputImage,sigma);
Nous utilisons cette surcharge, parce qu’elle nous permet de spécifier le sigma.
Avec un sigma = 2, nous obtenons :
Figure 6: Filtration des images bruitées avec un filtre médian d’un noyau de convolution de taille 3x3
On remarque que le filtre médian est adapté aux bruits du type sel et poivre, il a parfaitement
enlevé tout le bruit, il fournit aussi des résultats acceptables dans le cas du bruit gaussien et bruit
Poisson.
Figure 7: Filtration des images bruitées avec un filtre médian d’un noyau de convolution de taille 5x5
En augmentant la taille du noyau de convolution, les détails fins sont beaucoup plus détériorés.
Conclusion :
Le tableau comparatif suivant résume les manipulations qu’on a accompli dans ce paragraphe :
Sel et poivre Gaussien Poisson
Filtre Médian X
Filtre Gaussien X
Filtre moyenneur X
La croix correspond au filtre convenable à chaque type de bruit.
Détection des contours :
Introduction des filtres :
Cette famille des filtres est conçue dans le but de détecter avec la plus grande précision les
contours dans une image, le TP aborde trois filtres de cette famille : Prewitt, Sobel et Canny.
Sous MATLAB, il y a une fonction qui permet de les appliquer sur une image donnée :
outputImage = edge(inputImage,TYPE);
Tel que TYPE est le nom du filtre à appliquer, nous nous limiterons au entrées suivantes :
‘Prewitt’ pour le filtre Prewitt ;
‘Sobel’ (la première lettre en majuscule) pour le filtre Sobel ;
‘canny’ pour le filtre Canny ;
C’est une confirmation de ce qu’on cité précédemment, le filtre de Canny est le plus adapté aux
détections des contours.
Ideal and Butterworth Filters:
1 function [U,V] = dftuv(M,N)
2 % DFTUV Computes medhgrid frequency matrices
3 % [U,V] = DFTUV(M,N) computes meshgrid frequency matrices U and V.
4 % U and V are useful for computing frequency-domain filter functions
5 % that can be used with DFTFILT. U and V are both M-by-N
6
7 % Set up range of variables
8 u = 0:(M-1);
9 v = 0:(N-1);
10
11 % Compute the indices for use in meshgrid
12 idx = find(u > M/2);
13 u(idx) = u(idx) - M;
14 idy = find(v > N/2);
15 v(idy) = v(idy) - N;
16
17 % Compute the meshgrid arrays.
18 [V,U] = meshgrid(v,u);
Tout au long de cette partie, nous nous baserons sur le code ci-dessus, il nous permettra de générer
les matrices des filtres indépendamment de leurs fonctions qui seront appliquées pour adapter les
matrices des filtres. Ce code est tiré de la 2ème édition du livre « Digital Image Processing Using
MATLAB » des auteurs Rafael C. Gonzalez, Richard E. Woods et Steven L. Eddins.
Grâce à la matrice du filtre, nous avons pu aboutir à une image filtrée qui contient seulement les
informations issues des hautes fréquences, le disque noir a permis d’enlever les basses fréquences et
son entourage a permis de garder les hautes !