Bojour
ya deux types de filtre pour les imasages
_ filtre frequentiel
-- filtre frequentile
********* dans les filtre spatial on trouve:
a-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éduit le bruit
_ Réduit les détails non-important
_ Brouille ou rend floue l'image (blur edges)
program: h=fspecial('average');
C =filter2(h,J);%J notre image,H lareponse du filtre
b-le filtre gaussien:
Le filtrage gaussien de l'image 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.
Programme :
h=fspecial('gaussian');
C=conv2(h,J);
c- Filtre médian : B=medfilt2(J);
*********Filtrage fréquentiel :
–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), 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 H(u,v)) directement en fréquence.
Contenu fréquencield'une image
•Basses fréquences:ce qui varie lentement (formes générales)
•Hautes fréquences:ce qui varie rapidement (détails, bords, bruit...)
a-filtre passe bas:
F=fftshift(fft2(I));
%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');
b-filtre passe haut
Programme :
%charge;
F=fftshift(fft2(I));
%calcul de la taille de l'image;
M=size(F,1);
N=size(F,2);
P=size(F,3);
H1=ones(M,N);
D0=2;
M2=round(M/2);
N2=round(N/2);
H1(M2-D0:M2+D0,N2-D0:N2+D0)=0;
for i=1:M
for j=1:N
G(i,j)=F(i,j)*H1(i,j);
end
end
g=ifft2(G);
subplot(1,2,1);imshow(I);title('image originale');
subplot(1,2,2);imshow(255-abs(g),[0,255]);title('image filtrée');
c-Filtre passe bas de Butterworth :
Programme :
%charge;
F=fftshift(fft2(I));
%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;
n=3;
for i=1:M
for j=1:N
H(i,j)=1/(1+(H0(i,j)/D0)^(2*n));
G(i,j)=F(i,j)*H(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');
d- Filtre passe haut de Butterworth :
Programme :
%charge;
F=fftshift(fft2(I));
%calcul de la taille de l'image;
M=size(F,1);
N=size(F,2);
P=size(F,3);
H1=ones(M,N);
D0=3;
M2=round(M/2);
N2=round(N/2);
H1(M2-D0:M2+D0,N2-D0:N2+D0)=0;
n=3;
for i=1:M
for j=1:N
H(i,j)=1/(1+(H1(i,j)/D0)^(2*n));
G(i,j)=F(i,j)*H(i,j);
end
end
g=ifft2(G);
subplot(1,2,1);imshow(I);title('image originale');
subplot(1,2,2);imshow(255-abs(g),[0,255]);title('image filtrée');
remarque : si vous voulez plus dedetails consulter le livre : ""signaus et images sous matlab - GERARD BLANCHET ET MAURICE CHARBIT """
bonnnnnnn couraggggggggggge