You are on page 1of 11

Ralis par: HADJOUDJA AISSA

But de travail :
Comparer les effets des filtres, Moyenneur et median, sur diffrents types de bruit.

I.

Filtrage Moyenneur :
- On lire limage lena_gray_256.tif :
I=imread('lena_gray_256.tif');

On ajoute un bruit de type poivre et sel sur limage :


J = imnoise(I,'salt & pepper',0.02);
subplot(1,2,1),imshow(I)
title('Image originale')
subplot(1,2,2),imshow(J)
title('Image bruite')

On filtre limage avec un filtre de taille 3x3, 5x5, 7x7 :


Fonction de filtre Moyenneur :
function [ im ] = moyenneur( taille,J)
H=(1/(taille*taille))*ones(taille);
a=(taille-1)/2;
B = padarray(J,[a a]);
for i=1+a:256
for j=1+a:256
k=B(i-a:i+a,j-a:j+a);
k=double(k);
im(i-a,j-a)= sum(sum(k.*H));
end
end
end

Programme :
%filtre de taille 3x3
im=moyenneur(3,J);

im=mat2gray(im);
%filtre de taille 5x5
im2=moyenneur(5,J);
im2=mat2gray(im2);
%filtre de taille 7x7
im3=moyenneur(7,J);
im3=mat2gray(im3);
%on affiche les trois images
subplot(1,3,1),imshow(im)
xlabel('filtre moyenneur de taille 3')
subplot(1,3,2),imshow(im2)
xlabel('filtre moyenneur de taille 5')
subplot(1,3,3),imshow(im3)
xlabel('filtre moyenneur de taille 7')

Remarque :
On observe que quand on augmente la taille du filtre, limage va
tre plus lisse.

Effet du filtre Moyenneur :


Lisse limage (effet de flou)
Rduit le bruit.
Rduit les dtails.

On lit et on affiche les images lena_gray1.tif et mask.tif :

Im2=imread('lena_gray1.tif');
Im3=imread('mask.tif');

subplot(1,2,1),imshow(im2)
title('Image de lena')
subplot(1,2,2),imshow(im3)
title('mask')

Remarque :
On observe quil y a des parties blanches sur limage de Lena gray
et le mask est noir et contient ces parties blanches.
On filtre limage im2 avec un filtre 3x3 :

Remarque : on voit que quand limage est filtre, les zones


blanches sont un peu rduites.

On calcule la soustraction entre im2 et le mask dans im4 :

im2=imread('lena_gray1.tif');
im3=imread('mask.tif');

im4=minus(im2,im3);
imshow(im4)

Remarque :
Les parties blanches dans limage ont remplaces par des parties
noires quand on a soustrait cette image avec le mask.
II.

Filtre Median :
- on affiche les profils de (im1, imb) sur la ligne 160 :
im1=imread('lena_gray_256.tif');
imb= imnoise(im1,'salt & pepper',0.02);
figure,subimage(im1);
improfile
title('profile de image im1 sur 160')
figure,subimage(imb);
improfile
title('profile de image imb sur 160')

Remarque :
Aprs lajout du bruit, il apparait des pics correspond des pixels noir
et blanc caus par le bruit.
-

On filtre limage imb par un filtre median de 3x3 :


Fonction de filtre median :
function [ im ] = mediann(J,taille)
a1=(taille*taille-1)/2;
a=(taille-1)/2;
B = padarray(J,[a a]);
for i=1+a:256
for j=1+a:256
k(1:9)=B(i-a:i+a,j-a:j+a);
v=tri(k);
im(i,j)=v(a1+1);
end

end
im=mat2gray(im);
end
Fonction de tri :
function [ k ] = tri( k )
n=length(k);
for m=1:n-1
for h=m+1:n
if k(h)>k(m)
vmax=k(m);
k(m)=k(h);
k(h)=vmax;
end
end
end
end

Programme :

im1=imread('lena_gray_256.tif');
imb= imnoise(im1,'salt & pepper',0.02);
im5=mediann(imb,3);
imshow(im5)
title('image filtr')

- On affiche le profil de limage im5 sur la ligne 160 :

- On affiche les profils des images im1, imb, im5 :

im1=imread('lena_gray_256.tif');
imb= imnoise(im1,'salt & pepper',0.02);
im5=mediann(imb,3);
subplot(1,3,1),subimage(im1);improfile
title('profile de image im1 sur 160')
subplot(1,3,2),subimage(imb);improfile
title('profile de image imb sur 160')
subplot(1,3,3),subimage(im5);improfile
title('profile de image im5 sur 160')

Remarque : on observe quaprs le filtrage, les pics caus par le


bruit ont t nettoy.

On compare visuellement limage filtre par un filtre


Moyenneur 5x5 et median 3x3 :

im1=imread('lena_gray_256.tif');
imb= imnoise(im1,'salt & pepper',0.02);
im5=mediann(imb,3);
im6=moyenneur(5,imb);
subplot(1,2,1),imshow(im6)
title('image filtre par moyenneur 5x5')
subplot(1,2,2),imshow(im5)
title('image filtre par median 3x3')

Conclusion : le filtre median donne un meilleur rsultat, car il a la


proprit dliminer les grands diffrences des niveaux de gris caus
par le bruit dans limage.

III.

Filtrage par noyau :


- Le coefficient de pondration pour normaliser M :
1 2 1
M= 2 4 2
1 2 1

[ ]
3

P= M ij =16
i=0 j=0

On donne le masque du filtre :


=1 M
M
p

On donne le rsultat du filtre appliqu sur limage :

La fonction du filtrage par noyau :


function [ im ] = noyau( J,filtre )
somme=sum(sum(filtre));
H=(1/(somme))*filtre;
a=(size(filtre,1)*size(filtre,1)-1)/8;
B = padarray(J,[a a]);
for i=1+a:256
for j=1+a:256
k=B(i-a:i+a,j-a:j+a);
k=double(k);
im(i-a,j-a)= sum(sum(k.*H));
end
end
im=mat2gray(im);
end

le programme :
I=imread('lena_gray_256.tif');
J = imnoise(I,'salt & pepper',0.02);
filtre=[1 2 1;2 4 2;1 2 1];
imf=noyau(J,filtre);
subplot(1,2,1),imshow(J)
subplot(1,2,2),imshow(imf)

Remarque : limage rsultat par ce filtre est lisse et le bruit est


rduit.

On compare visuellement le rsultat de ce filtre et celui de


median 3x3 :

Le filtre par noyau donne un meilleur lissage et une meilleure


rduction du bruit que le filtre moyenne, mais il nlimine pas
compltement le bruit.
Le filtre median donne un meilleur rsultat que le filtre par noyau car
il a supprim le bruit dans limage.

You might also like