Vous êtes sur la page 1sur 2

MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR

ET DE LA RECHERCHE SCIENTIFIQUE
Département Génie Électrique
Master 1 Systèmes de Télécommunications
Année Universitaire 2020/2021
TP N° 3 Traitement d’images : Transformations locales

Objectif : On distingue deux types de traitements: linéaire (filtre à convolution) et non linéaire (filtre d’ordre statistique).
Ces traitements ont pour effet : l’atténuation de l’effet du bruit (filtre passe bas) ou l’extraction des contours (filtre passe
haut).
• Filtre linéaire : C’est l’application du produit de convolution entre une image et un filtre. Sous Matlab on peut
réaliser cette opération en utilisant la commande :
I_filtred = imfilter(I_original, h);
h est le noyau du filtre. Différents types de filtre peuvent être crées avec la commande:
h = fspecial(type, parameters)

Types Description
'average' Filtre moyenneur
'disk' Filtre moyenneur circulaire
'gaussian' Filtre passe bas Gaussien
'laplacian' Opérateur Laplacien
'log' Laplacien d’une Gaussienne
'motion' Mouvement linéaire d'une caméra
'prewitt' Filtre accentuant les bords horizontaux Prewitt
'sobel' Filtre Sobel accentuant les bords horizontaux

Pour plus de détails, vous pouvez consulter le help du Matlab.


• Filtre non-linéaire : en général, c’est une relation statistique entre le pixels et ces voisins. Le filtre médian: I_med =
medfilt2(I);
• Notion de bruits: sous Matlab la commande J = imnoise (I, type) ajoute un bruit d'un type donné à l'image
d'intensité I.
• Mesure de qualité: pour mesurer la qualité d’une image bruitée par rapport à l’image de référence (sans bruit),ou
encore mesurer la qualité d’une image filtrée par rapport à l’image de référence, on utilise certaines métriques de
qualités. Parmi ces métriques on cite:
PSNR = psnr(I,I_ref) ou MSE = immse(I,I_ref)
Remarque: Dans l’environnement Matlab, il est indispensable de mentionner la version, parce que certaines commandes
peuvent être changer ou remplacer par d’autre. Vous pouvez consultez au verso de cette fiche le scripte de ce TP.

Travail demandé :
On vous demande de :
1. Écrire un programme qui vous permet d’améliorer la qualité d’images dégradée par un bruit de speckle (taux de 10%),
à l’aide des filtres: Moyenneur, Gaussien et Médian, avec le calcul du PSNR pour chaque cas.
2. Classer ces trois filtres. Quels est le filtre le mieux adapté à ce type de bruit.
3. Quel est l’effet constaté lorsqu’on augmente le noyau de ces filtres ?
4. À l’aide des commandes tic et toc qui nous permettent de mesurer le temps d’exécution de chaque filtre, démonter
lequel de ces deux filtres présente des performances en termes de temps d’exécution par rapport à l’autre.

1
Dr Bouledjfane Badreddine (badreddine.bouledjfane@gmail.com)
close all;clear; clc; figure,

h_average = fspecial('average', [3 3]); subplot(121),imshow(I);

h_disk = fspecial('disk', 3); subplot(122),imshow(I_laplacian);

h_gaussian = fspecial('gaussian', [5 5], 1); figure,

h_laplacian = fspecial('laplacian', 0.3); subplot(121),imshow(I);

h_log = fspecial('log', [5 5], 0.2); subplot(122),imshow(I_log);

h_motion = fspecial('motion', 5, 10); figure,

h_prewitt = fspecial('prewitt') ; subplot(121),imshow(I);

h_sobel = fspecial('sobel'); subplot(122),imshow(I_motion);

I=imread('cameraman.tif'); figure,

subplot(121),imshow(I);

I_average=imfilter(I,h_average); subplot(122),imshow(I_prewitt);

I_disk=imfilter(I,h_disk); figure,

I_gaussian=imfilter(I,h_gaussian); subplot(121),imshow(I);

I_laplacian=imfilter(I,h_laplacian); subplot(122),imshow(I_sobel);

I_log=imfilter(I,h_log); I_noise = imnoise(I,'salt & pepper',0.1);

I_motion=imfilter(I,h_motion); I_med=medfilt2(I_noise,[3,3]);

I_prewitt=imfilter(I,h_prewitt); PSNR1 = psnr(I,I_noise) ;

I_sobel=imfilter(I,h_sobel); MSE1 = immse(I,I_noise) ;

figure, PSNR2 = psnr(I,I_med) ;

subplot(121),imshow(I); MSE2 = immse(I,I_med) ;

subplot(122),imshow(I_average); figure,

figure, subplot(1,3,1),imshow(I);

subplot(121),imshow(I); subplot(1,3,2),imshow(I_noise);

subplot(122),imshow(I_disk); subplot(1,3,3),imshow(I_med);

figure,

subplot(121),imshow(I);

subplot(122),imshow(I_gaussian);

2
Dr Bouledjfane Badreddine (badreddine.bouledjfane@gmail.com)

Vous aimerez peut-être aussi