On peut aussi créer des matrices avec la fonction « ones », cette fonction crée des
matrices de taille précisée.
Code :
>> A = ones (3,3)
Exécution :
« One » peut changer la valeur d’un élément de la matrice par l’affectation
Code :
>> A (2,2) = 8
Exécution :
1.3 Histogramme:
L’histogramme d’une image en niveau de gris associe à chaque valeur d’intensité le
nombre de pixels prenant cette valeur. Pour créer l’histogramme d’une image en
niveau de gris, il suffit de parcourir l’image pour compter le nombre de pixels de
chaque valeur. Voici, en langage MATLAB, la méthode de calcul de l’histogramme
d’une image en niveau de gris.
Histogramme de l’image:
Code:
>> imhist(I)
Exécution:
On remarque dans l’histogramme de cette image que Les niveaux de gris moyens et
proches du noir sont les plus dominants par contre les niveaux de gris proches du
blanc sont négligeables .
1.4Fonctions de matlab :
Certaines fonctions ou certains outils de Matlab permettent des manipulations interactive sur
une image contenue dans une figure ou non :
imageinfo : retourne les informations de l’image dans la figure ou d’un fichier image.
zoom : zoom sur une zone de l’image de la figure.
impixelinfo : affiche la position et les valeurs d’un pixel pointé avec la souris.
impixelregion : affiche les valeurs des pixels dans une région sélectionnée avec la
souris.
gray2ind -> Convertir l’image en niveaux de gris ou l’image binaire en image indexée.
Demosaic -> Convertir l’image codée du modéle Bayer en image couleur vraie.
Le filtre passe haut accentue les détails et les contours. Toutefois, il produit des effets
secondaires :
Augmentation du bruit : dans les images avec un rapport Signal/ Bruit faible, le filtre
augmente le bruit granuleux dans l’image.
Effet de bord : il est possible que sur les bords de l’image apparaisse un cadre. Mais
cet effet est souvent négligeable et peut s’éliminer en tronquant les bords de l’image
ou en faisant une réflexion de quelques pixels de l’image autour de son cadre.
Masques utilisés pour le filtre passe haut : Les masques suivants sont utilisés
fréquemment.
Code :
I=imread('fleur.PNG'); %Lecture de l’image
J=rgb2gray(I);
J=im2double(J);
h=-ones(3,3); % Definition de h
h(2,2)=8;
F=filter2(h,J); % Filtrer F
%visualization des resultat
figure(2 );subplot(1,2,1);imshow(I);title('image originale');
subplot(1,2,2);imshow(F);title('image filtrée');
Exéution:
b-Passe bas:
Les filtres « passe bas » agissent en sens inverse des filtres « passe haut » et le résultat est,
un adoucissement des détails, ainsi qu'une réduction du bruit granuleux. Il diminue le bruit
mais atténue les détails de l’image (flou plus prononcé).
Masques utilisés pour le filtre passe bas : Les masques suivants sont
utilisés fréquemment.
L’inconvénient du filtre passe bas idéal c’est qu’il est irréalisable et on fait donc juste
une approximation de la fonction H qui aura pour effet, d’atténuer fortement les
hautes fréquences et à la place de les couper.
Le filtre passe bas de Butterworth est donné par :
Code :
I = imread('cameraman.tif');
I=im2double(I);
f=ones(3,3)/9;
I1=filter2(f,I);
subplot(2,2,1);
imshow(I);
title('image origine');
subplot(2,2,2);
imshow(I1);
title('image filtrée');
Exécution:
Figure 3: Image filtrée par un filtre moyenneur pour différentes valeurs de la taille du
masque.
Filtre gaussien :
Dans l’approche gaussienne. On utilise des masques réalisant la moyenne pondérée
dans le voisinage du pixel considéré. Cependant les coefficients du filtre gaussien sont
calculés par l’expression gaussienne en deux dimensions:
Figure 4: Image filtrée par un filtre gaussien pour différentes valeurs de la taille du
masque.
Le filtre médian appartient à la famille des filtres d’ordre. Les filtres d'ordre procèdent en
remplaçant la valeur de chaque pixel par la valeur du pixel qui occupe un certain rang
lorsqu'on trie les valeurs des pixels rencontrés dans un certain voisinage de ce pixel.
Pour le filtre médian ,la valeur du pixel central est remplacée par la valeur médiane de tous
les pixels de la fenêtre d'analyse centrée sur ce pixel.
Le filtrage médian est très robuste à différents types de bruit. Son avantage est qu’il garde la
netteté des éléments qui constituent l’image sans étaler les transitions.
On applique un noyau de 3*3 éléments sur la matrice d’image, les neufs éléments extraient
sont classé par tri croissant , puis on détecte la valeur moyenne de la série qu’est
généralement sépare l’échantillon sur deux populations égales.
Pour les deux autres types de filtres non linéaires, filtre maximum et filtre minimum, On
applique le même traitement que celui du filtre médian mais la valeur du pixel du centre va
être remplacée par les valeurs maximale et minimale respectivement.
Remarque:
Malheureusement, en appliquant de gros masques de convolution, on peut constater que
le temps de calcul devient très important, Pour cela, on peut appliquer les masques dans
l’espace des fonctions de Fourier qui rendront les calculs beaucoup plus rapides car il
existe un algorithme de calcul de la transformée très rapide (FFT).
2.2 Représentation fréquentielle d’une image:
La fréquence dans une image représente la variation de l’intensité des pixels de
l’image, les basses fréquences (correspondent à des changements d’intensité lents)
représentent les régions homogènes et floues, tandis que les hautes fréquences
(correspondent à des changements d’intensité rapides) représentent les contours et les
changements brusques d’intensité.
2.3Transformée de Fourier :
La transformée de Fourier permet la décomposition d'un signal image f en
combinaison linéaire de sinusoïdes complexes, dont les coefficients F[u,v] dit
coefficients de Fourier, fournissent des informations sur les fréquences (u,v) et
permettent des manipulations dans le domaine fréquentiel. La transformée de Fourier
de l’image f(x,y), de largeur N et de hauteur M est donnée par :
La Transformée de Fourier se représente dans un espace fréquentiel bidimensionnel.
Etant donné que la transformée est une grandeur complexe, sa représentation
graphique se fait soit par le module et la phase, soit par la partie réelle et imaginaire
de la transformée de Fourier.
Les valeurs de l’amplitude en général présentent une très grand dynamique (les basses
fréquences sont plus importantes que les hautes fréquences), le spectre d’amplitude
représente le logarithme du module de la transformée de Fourier. La transformée
inverse du domaine fréquentiel au domaine spatial est donnée par :
Filtrage passe-bas:
Le filtrage passe bas est la multiplication dans le domaine fréquentiel
par une fonction porte dont la fonction de transfert est de la forme:
Filtres passe-haut :
Le filtre passe-haut idéal est obtenu de manière symétrique au passe- bas
Par:
Filtres passe-bande:
Ils permettent de ne garder que les fréquences comprises dans un
certain intervalle :
3-Application des filtres sur matlab:
Pour améliorer la qualité visuelle de l’image, on doit éliminer les effets des
bruits (parasites) en lui faisant subir un traitement appelé filtrage. Le filtrage consiste
à modifier la distribution fréquentielle descomposantes du signal selon des
spécifications données. Le système linéaire utilisé est appelé filtre numérique.
D’abord on va bruiter l’image initiale par deux bruits ; il s’agit de :
Gaussian
Code:
I=imread('fsts.jpg');
ib1=imnoise(I,'gaussian',0.0,0.01);
ib2=imnoise(I,'salt & pepper');
subplot(131);
imshow(I),title('image initiale');
subplot(132);imshow(ib1),title('image guassian');
subplot(133);imshow(ib2),title('image salt&pepper')
Exécution :
Application du filter moyenneur sur les bruits:
Code:
h1=(1/9)*ones(3,3);
h2=(1/25)*ones(5,5);
h3=(1/49)*ones(7,7);
Ifiltre1=imfilter(ib1,h1);
Ifiltre2=imfilter(ib1,h2);
Ifiltre3=imfilter(ib1,h3);
subplot(221);
imshow(ib1);
title('image gaussienne');
subplot(222);
imshow(Ifiltre1);
title('ib1+h1');
subplot(223);
imshow(Ifiltre2);
title('ib1+h2');
subplot(224);
imshow(Ifiltre3);
title('ib1+h3') ;
Exécution:
Résultat:
Elimination du bruit granuleux .
L’image est plus floue qu’avant.
Interprétation : Ce sont des filtres passe-bas qui lisse l’image, du fait qu’ils ont éliminés
les détails fins de l’image .Maintenant, on va appliquer le filtre moyenneur sur le bruit Salt
& Pepper :
Application du filtre médian sur les bruits:
Code:
I=imread('fsts.jpg');
rb=rgb2gray(I);ib1 =imnoise(rb,'gaussian');subplot(131);
imshow(rb),title('image initiale rb');
subplot(132);imshow(ib1),title('image gaussian');
A = medfilt2(ib1,[3 3]) ;subplot(133);
imshow(A),title('ib1+MG')
Exécution :
Le filter median est appliqué à l’image en plus du filter de bruit sel et
poivre
Code
I=imread('fsts.jpg');
rb=rgb2gray(I);
ib2=imnoise(rb,'salt&pepper');
subplot(131);
imshow(rb);
title('image initiale rb');
subplot(132);imshow(ib2),title('image salt&pepper');
A = medfilt2(ib2,[3 3]) ;subplot(133);
imshow(A),title('ib2+MSP')
Exécution :
bruit sel & poivre par rapport au bruit Gaussien et il est plus efficace que
Exécution :
Interprétation : un filtre gaussien avec σ < 1 est utilisé pour réduire le
bruit. Plus σ est grand, plus le flou appliqué à l’image sera important.
Code:
I=imread('paysage.jpg');
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');
Exécution :
Code:
I=imread('JARDIN.jpg');
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')
Exécution :