Bienvenue à exoco-lmd.com! Partagez et consultez des solutions d'examens et d'exercices des programmes LMD et formation d'ingénieur.

TP Filtrage des images

Démarré par redKas, Janvier 16, 2023, 07:45:02 PM

« précédent - suivant »

redKas

4.1   Rappels
Il existe deux types de filtre pour les images
   Filtre Spatial
   Filtre Frequentile
Filtres Spatiaux
on trouve:  le filtre passe-bas et le filtre passe-haut
Filtre moyen: Le filtre moyen remplace la valeur d'un pixel par la moyenne de sa valeur et de la valeur des 8 pixels qui l'entourent . La matrice est donc une 3x3 dont chacun des membres vaut 1/9. Le filtre moyen permet de
   Lisser l'image (smoothing) Remplace chaque pixel par la valeur moyenne de ses voisins
   Réduire le bruit
   Réduire les détails non-important
   Brouiller ou rendre floue l'image (blur edges)
Le filtrage gaussien de l'image est un filtrage passe-bas. Il résulte de la convolution de cette fonction avec des gaussiennes en chaque point de l'image. Un inconvénient évident du filtrage gaussien est qu'il ne lisse pas uniquement le bruit, mais il gomme aussi les contours, les rendant difficilement identifiables. Le filtre gaussien donnera un meilleure lissage et une meilleure réduction du bruit que le filtre moyenne. Les deux filtres sont de type passe-bas.
Filtres Fréquentiels
C'est la modification des fréquences de l'image de départ. Cette modification est réalisée directement à partir de la représentation fréquentielle F(u,v) de l'image en la multipliant par la fonction de transfert du filtre G(u,v). Cette relation permet de dire que les filtrages basés sur une convolution spatiale peuvent se réaliser très simplement par produit simple en fréquence. On construit le filtre (sa fonction de transfert G(u,v)) directement en fréquence. 
Contenu fréquentiel d'une image 
Basses fréquences: ce qui varie lentement (formes générales) 
Hautes fréquences: ce qui varie rapidement (détails, bords, bruit...)


4.2   Manipulation
4.2.1   Manipulation1

   Lire une image niveaux de gris du toolbox Matlab
   Créer une fonction « imgbruite »qui génère une image bruitée. Le bruit étant gaussien de moyenne nulle.
   Visualiser le résultat

4.2.2   Manipulation 2
   En utilisant la fonction « imgbruite » déjà créé, générer une image bruitée.
   Construire un filtre gaussien (fenêtre [20 20], sigma=4). Pour cela, utiliser la fonction « fspecial » en Matlab. Visualiser ce filtre spatail.
>> H = fspecial('gaussian',[20 20],4);
>> mesh(H)
   Appliquer le filtre « gaussian » pour filtrer cette image. Pour cela utiliser les deux instructions en Matlab : « fspectial » et « filter2 »
h=fspecial('average');
C =filter2(h,J);%J notre image,H la reponse du filtre
où J est l'image bruitée, h est le filtre moyenne.
   Visualiser le résultat.
   Exécuter le programme suivant (après avoir choisi une image qu'on va nommé orgImage)
% Convolution (low-pass filtering)
filter = fspecial('gaussian',[10 10], 4);  % gaussian kernel
filterImage = conv2(orgImage, filter);     % convolution
figure(3); imshow(filterImage, [0 250]);
   Faire varier la taille de la fenêtre et visualiser à chaque fois l'image filtrée. Que constate-t-on ?

4.2.3   Manipulation 3 (Filtrage Fréquentiel)
   Exécuter le programme suivant :
I=imread('cameraman.tif');
F=fftshift(fft2(I));
figure(2); imshow(abs(F),  [0  10000 ]);
%calcul de la taille de l'image; 
M=size(F,1);
N=size(F,2);
P=size(F,3);
H0=zeros(M,N);
D0=3;
M2=round(M/2);
N2=round(N/2);
H0(M2-D0:M2+D0,N2-D0:N2+D0)=1;
for i=1:M 
for j=1:N 
G(i,j)=F(i,j)*H0(i,j);
end
end
g=ifft2(G);
subplot(1,2,1);imshow(I);title('image originale'); subplot(1,2,2);imshow(abs(g),[0,255]);title('image filtrée');
4.2.4   Manipulation 4 (la transformée de Fourrier de l'image filtrée
   Executer le programe suivant
% 2D FFT of filtered image
fftFilterImage = fftshift(fft2(filterImage));
ampFilterImage= abs(fftFilterImage);
figure(4); imshow(ampFilterImage,  [0  10000 ]);
   Calculer et visualiser la TF de l'image originale et l'image filtrée
   Comparer les résultats des trois images : l'image originale l'image filtrée et l'image bruitée


détection de contours:
i = imread('far.jpg');
I = rgb2gray(i);
BW1 = edge(I,'prewitt');
BW2= edge(I,'sobel');
BW3= edge(I,'roberts');
subplot (2,2,1);
imshow(I);
title('original');
subplot(2,2,2);
imshow(BW1);
title('Prewitt');
subplot(2,2,3);
imshow(BW2);
title('Sobel');
subplot(2,2,4);
imshow(BW3);
title('Roberts');
 


Hors ligne Annonceur

  • Jr. Member
  • **
  • Messages: na
  • Karma: +0/-0
Re : message iportant de l'auteur
« le: un jour de l'année »





Suggestions pour vous