Vous êtes sur la page 1sur 30

Chapitre III

Filtrage numérique en utilisant Matlab


1 Le logiciel Matlab : .
Le logiciel MATLAB (MATrix LABoratory) est spécialisé dans le domaine du calcul
matriciel numérique. Tous les objets définis dans MATLAB sont donc au moyen de
vecteurs et de matrices/tableaux de nombres. Un ensemble important d’opérateurs et
de fonctions MATLAB de base facilitent leur manipulation et des opérations comme
par exemple le produit et l’inversion matricielles (inv), la transposition (’) ou encore
le calcul des valeurs propres (eig) font partie de la bibliothèque standard. D’autres
fonctions servant à la création et à la manipulation de matrices et de tableaux (diag,
fliplr, flipud, rot90, rand, ones, zeros, linspace, logspace) sont également disponibles
en nombre. L’environnement MATLAB se présente sous la forme d’un espace de
travail (Workspace), où un interpréteur de commandes exécute des opérations et
fonctions MATLAB. Les sources de celles-ci sont disponibles, écrites en “ langage ”
MATLAB, voire en C ou en Fortran. L’utilisateur peut à sa guise les modifier, mais
en s’en inspirant, il peut surtout créer et rajouter ses propres fonctions.

S’il est parfaitement adapté à l’automatique et au traitement du signal, sa facilité


d’emploi avec des nombres complexes et ses possibilités d’affichages graphiques en
font un outil intéressant pour bien d’autres types d’applications. De plus, des
toolboxes sont disponibles dans de nombreux domaines (Traitement du signal,
traitement d’images, optimisation, contrôle…) L’objectif de cette introduction au
traitement d’images sous Matlab est de présenter la notion d’image et d’effectuer des
opérations simples d’analyse d’images telles que le filtrage.
1.1 Vecteurs et Matrices :
En fait, toute variable de Matlab est une matrice (Scalaire : matrice 1x1, vecteur :
matrice 1xN ou Nx1). On peut spécifier directement une matrice sous la forme d’un
tableau, l’espace ou la virgule sépare deux éléments d’une même ligne, les points
virgules séparent les éléments de lignes distinctes.
Code :
>> A = [-1 -1 -1; -1 -8 -1; -1 -1 -1]
Exécution :

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 :

On peut avoir des informations sur la taille d’une matrice :


Code :
>> size(A)
Exécution :

1.2 Affichage d’une image :


Une image est une matrice dont les éléments de la matrice sont les pixels qui sont
caractérisé par la position X et Y, et l’intensité de la lumière comme troisième
dimension.
Exemple:
Code :
>> A= [ 0 1 0 ; 1 0 1 ; 0 1 0];
>> imshow(A) % pour afficher l’image A
>> imshow(A,'InitialMagnification','fit') %pour obtenir une image plus clair
Exécution :
Pour chaque élément de la matrice B, le 1 représente la couleur blanche et le 0
représente la couleur noire .

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.

Affichage de l’image ‘CAMERAMAN’


Code:
>> I= imread('cameraman.tif');
>> imshow(I)
Exécution:

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.

 Imnoise : Ajouter du bruit l’image.

 improfile : affiche le profil d’une ligne sélectionnée.

 impixel : retourne les valeurs des pixels sélectionnés.

 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.

 imdistline : affiche la distance entre deux pixels sélectionnés.

 imdisplayrange : affiche l’intervalle des valeurs des pixels de l’image.

 imcontrast : réajuste une image.

 Imhist : Histogramme des données d’image.

 Histeq : Améliorer le contraste en utilisant l’égalisation des histogrammes.

 imresize : ré-échantillonnage de l’image (homothétie).

 imrotate : rotation de l’image.

 imadjust : recadrage de la dynamique selon une correction gamma.

les types de conversion d’image:

 gray2ind -> Convertir l’image en niveaux de gris ou l’image binaire en image indexée.

 ind2gray -> Convertir l’image indexée en image en niveaux de gris.

 mat2gray -> Convertir la matrice en image en niveaux de gris.


 rgb2gray -> Convertir l’image RVB ou la carte des couleurs en niveaux de gris.

 ind2rgb -> Convertir l’image indexée en image RVB.

 label2rgb -> Convertir la matrice en image RVB.

 Demosaic -> Convertir l’image codée du modéle Bayer en image couleur vraie.

 im2bw -> Convertir l’image en image binaire, en fonction du seuil.

 im2double -> Convertir l’image en double précision .

 im2int16 -> Convertir l’image en entiers signés 16 bits.

2-Matlab et traitements d’images :


Une image Matlab est une matrice bidimensionnelle de valeurs entières ou réelles. Les
principales fonctions de traitement d’images sous Matlab se trouvent dans la boîte à outils
(toolbox) image processing (traitement d’images). L’aide sur cette boîte à outils est
obtenue en tapant help images en ligne de commande de Matlab. Ensuite, l’aide sur
une commande particulière est obtenue en tapant help suivi du nom de la commande,
par exemple help edge.
Dans le traitement d’image on retrouve, le filtrage qui est un traitement local qui consiste
à effectuer un ensemble d’opérations sur un voisinage, en faisant appel à un filtre ou un
masque de même dimension que ce voisinage. Les valeurs du masque sont des
coefficients et non des pixels et suivant ces valeurs, on distingue plusieurs types tels
que ; le masque de convolution pour un filtre passe-bas, le masque de convolution pour
un filtre passe-haut et le masque de convolution pour un filtre gaussien. Le filtrage,
qui peut être spatial ou fréquentiel, est utilisé principalement pour réaliser une analyse
spatiale d’une image. Son objectif est d’accentuer les variances d’intensité de l’image, ou
de détecter les contours et de réduire les bruits existants.
Alors deux manières de procéder :
dans le domaine spatial : produit de convolution entre l’image et le filtre.
dans le domaine fréquentiel : produit entre les spectres de l’image et du filtre.
2-1-Filtrage d’une image : domaine spatial
Le filtrage peut être vu comme une opération transformant une image en une autre image
ayant des propriétés spatiales et fréquentielles différentes. On distingue deux types de
filtrage :
 les filtres linéaires.
 Les filtres non linéaires.
2-1-1-Les filtres linéaires :
Un filtre linéaire est une transformation mathématique (appelée produit de
convolution) permettant, pour chaque pixel de la zone à laquelle il s'applique,
de modifier sa valeur en fonction des valeurs des pixels avoisinants, affectées
de coefficients. Le filtre est représenté par un tableau (matrice), caractérisé par
ses dimensions et ses coefficients, dont le centre correspond au pixel concerné.
Le filtrage de l’image I par le filtre h est une image F dont les luminances sont
données par :

2-1-1-1-Les filtres de convolution :


Beaucoup de traitements d’images sont basés sur les produits de convolutions, dont nous
allons expliquer le principe.
L’image numérique étant en quelque sorte une carte de pixels. On note qu’un pixel est décrit
par :
− Ses coordonnées dans l’image (i,j)
− Sa valeur I(i,j), représentant son niveau de gris.
Pour les images numériques on définit un tableau de « i » colonnes et « j » lignes qui
réservent une place pour ranger la valeur de chaque pixel de l’image. Dans le langage
mathématique ce genre de tableau s’appelle une matrice. On dispose de plusieurs d’outils
pour effectuer des calculs sur les matrices, comme additionner deux matrices, les multiplier,
etc ... . Un produit de convolution, est un opérateur mathématique qu’on utilise pour
multiplier des matrices entre elles.
Dans le cas qui nous intéresse, nous mettons en jeu deux matrices très différentes: la matrice
image, très grande ( par exemple 512 x 512, ce qui représente 262144 pixels ) et une matrice
plus petite qu’on appelle le noyau parce que c’est le "coeur" de tous les changements qui vont
affecter l’image. Le noyau va donc agir sur chacun des pixels, c’est dire sur chacun des
éléments de la matrice "image".
Dans la figure ci-dessus, l’image est représentée par la matrice [i] composée de n x m
éléments. Le noyau est quant lui composé de la matrice carrée [k] de 3x3 éléments.
Appliquer un filtre de convolution consiste multiplier chacun des pixels de la matrice [i]
par le noyau [k].
Les valeurs du noyau sont appelées les coefficients de convolution et l’ensemblecomplet se
nomme le masque de convolution .
En pratique, la convolution numérique d'une image se fera par une sommation de
multiplications.
Les étapes du filtrage linéaire (convolution) peuvent être résumées comme suit:
1. Définir le noyau de filtre.
2. Faites glisser le noyau sur l'image de sorte que son pixel central coïncide avec chaque pixel
(cible) de l'image.
3. Multipliez les pixels situés sous le noyau par les valeurs correspondantes (poids) dans le
noyau au-dessus d'eux et additionnez le total.
4. Copiez la valeur résultante aux mêmes emplacements dans une nouvelle image (filtrée).
L’application principale des produits de convolution est la création des filtres « passe haut »
et « passe bas ».
a-Passe haut:
Un filtre « passe haut » favorise les hautes fréquences spatiales, comme les détails, et de ce
fait, il améliore le contraste. Un filtre « passe haut » est caractérisé par un noyau comportant
des valeurs négatives autour du pixel central, comme dans l’exemple
ci-dessous:

Figure1:exemple du filtre passe haut

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.

On pose δc = fréquence de coupure.


Le filtre passe haut idéal est donné par :

Le filtre passe haut de Butterworth est donné par :

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é).

Figure2:exemple du filtre passe bas

Masques utilisés pour le filtre passe bas : Les masques suivants sont

utilisés fréquemment.

Le concept de filtre passe-bas est une transformation mathématique appliquée à


des données (un signal). L'implémentation d'un filtre passe-bas peut se faire
numériquement ou avec des composants électroniques. Cette transformation a
pour fonction d'atténuer les fréquences supérieures à sa fréquence de coupure
fc et ce, dans le but de conserver uniquement les basses fréquences. La
fréquence de coupure du filtre est la fréquence séparant les deux modes de
fonctionnement idéaux du filtre : passant ou bloquant.
Le filtre passe bas idéal est donné par :

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:

2-1-1-2- Le lissage des images par filtrage linéaire :


Les filtres de lissage sont des opérateurs qui éliminent des éléments perturbateurs / non
significatifs dans les images numériques, soit pour améliorer leur visualisation, soit pour les
simplifier en but d'un traitement postérieur.
Le lissage des images par filtrage linéaire passe-bas permet une réduction du bruit avec des
performances intéressantes lorsque le bruit est de type additif et qu’il possède une densité de
probabilité uniforme ou gaussienne. Par contre, en présence de bruit impulsionnel (anciens
films détériorés par le temps par exemple) les filtres passe-bas sont mal adaptés. Parmi les
filtres passe-bas on peut considérer les filtres moyenneur et gaussien.
 Filtre moyenneur :
C'est un cas particulier de filtre de convolution passe-bas dont le principe, très simple, est
basé sur : Un pixel est remplacé par la moyenne de lui-même et de ces voisins. La taille du
masque est un paramètre important, plus cette dimension est grande, plus sa sensibilité au
bruit diminue, et le lissage devient important " le flou s’accentue ".
Exemple de filtre moyenneur :

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:

Sur un voisinage de (0,0), d’écart-type et de moyenne nulle.


Si par exemple σ =0.8 on a le filtre 3x3 suivant :

Le paramètre σ s’appelle la déviation standard qui détermine la largeur de la cloche


Gaussienne.
En général, un filtre Gaussien avec σ < 1 est utilisé pour réduire le bruit, et
si σ > 1 c’est dans le but de fabriquer une image qu’on va utiliser pour faire un
« masque flou » personnalisé qu’on applique souvent aux images planétaires.
Il faut noter que plus σ est grand, la cloche Gaussienne est large et plus le flou appliqué
à l’image sera marqué.

Figure 4: Image filtrée par un filtre gaussien pour différentes valeurs de la taille du
masque.

2-1-2-Les filtres non linéaires :


Ils sont conçus pour régler les problèmes des filtres linéaires, surtout pour ce qui concerne la
mauvaise conservation des contours. Leur principe est le même que celui des filtres linéaires,
il s’agit toujours de remplacer la valeur de chaque pixel par la valeur d’une fonction calculée
dans son voisinage. La différence majeure, est que cette fonction n’est plus linéaire mais une
fonction quelconque ; elle peut inclure des opérateurs de comparaisons ou de classification
ou d’ordre. Les filtres non linéaires les plus connu sont : le filtre médian, le filtre maximum
et le filtre minimum.
 Filtre médian:

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.

Figure 5: Application du filtre median.

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 :

2.4. Interprétation de la Transformée 2D:


- Hautes fréquences : loin du centre de la TF
- Basses fréquences : proche du centre de la TF
- Composante continue : centre de l’image (fréquence zéro = moyenne de l’image)
Exemples de Transformées de Fourier:
1. image formée par un carré blanc :

2. L'image de gauche possède des lignes horizontales/verticales qu'on retrouve dans sa


transformée, l'image de droite possède des lignes dans toutes les directions qu'on
retrouve aussi dans sa transformée:

2.5 Principe général du filtrage fréquentiel :

1- Calculer la transformée de Fourier X(f) du signal x(t) à filtrer .

2 -Calculer la transformée de Fourier F(f) du filtre f(t) .

3- Multiplier les spectres Xfiltré(f) = X(f)F(f).

4- Calculer la transformée de Fourier inverse du spectre obtenu pour obtenir le

signal filtré xfiltré(t).

Figure :Principe du filtrage

2.5Notion de filtrage fréquentiel:


Il est possible d’extraire la composante fréquentielle de l’image avec des filtres
passe-haut, passe-bas ou passe band. Un filtrage passe-haut laisse passer les hautes
fréquences et atténue les basses fréquences (il a pour effet de faire apparaître les
détails de l’image). Un filtrage passe-bas laisse passer les basses fréquences et atténue
les hautes fréquences (il a pour effet de faire disparaître les détails de l’image). Etant
donné la propriété de linéarité de la transformée de Fourier, l’image peut être
décomposée comme IMG=BF+HF. Dans le domaine spatial, le filtrage se fait par
convolution, alors dans le domaine spectral (ou fréquentiel), il se fait par
multiplication (ou masquage de l'image).

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

 Salt & Peper

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:

Tout d’abord , on va appliquer le filtre moyenneur sur le bruit gaussian:

On crée des masques h1, h2 et h3 :

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:

Le filtre médian est appliqué à l’image en plus du filtre de bruit gaussian

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 :

Interprétation : Le filtre médian a la meilleure efficacité sur le cas du

bruit sel & poivre par rapport au bruit Gaussien et il est plus efficace que

le filtre moyenneur dans ce cas.

Application du filtre gaussien:


Code:
i=imread('ImageB.PNG');
h=fspecial('gaussian',[5 5], 2);
I2=imfilter(i,h,'conv');
h1=fspecial('gaussian',[5 5], 7);
I3=imfilter(i,h1,'conv');
h2=fspecial('gaussian',[5 5], 14);
I4=imfilter(i,h2,'conv'); subplot(2,2,1);
imshow(i),title('Image bruitée');
subplot(2,2,2); imshow(I2) ,title('image filtrée avec σ = 2') ;
subplot(2,2,3) ;imshow(I3), title('image filtrée avec σ = 7') ;
subplot(2,2,4) ;imshow(I4), title('image filtrée avec σ = 14')

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.

Application du filtre passe haut en utilisant FFT:

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 :

Application du filtre passe bas en utilisant FFT:

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 :

Vous aimerez peut-être aussi