TP Traitement Numerique des Images Amelioration d`Image

publicité
TP Traitement Numerique des Images
Amelioration d'Image : Modification d'Histogramme – Filtrage Spatial
S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008
Préparation:
L'égalisation d'histogramme consiste à classer les différentes probabilités d'apparition des niveaux
de gris (codés sur N bits) selon la probabilité d'apparition cumulée de ces mêmes niveaux de gris (le
résultat est toujours codé sur N bits).
Démonstration:
a) On se propose de réaliser une égalisation d'image numérique de taille 128x128 pixels, codée sur
3 bits/pixel. D'après les valeurs des fréquences d'apparition, on peut dire que l'image est sombre
avec un mauvais contraste.
Niveau de gris
original
0
1
2
3
4
5
6
7
ri
0
1/7
2/7
3/7
4/7
5/7
6/7
1
Fréquence
d'apparition ni
1116
4513
5420
2149
1389
917
654
226
Probabilité
d'apparition pi
0,068
0,275
0,331
0,131
0,085
0,056
0,040
0,014
Probabilité
cumulée
d'apparition Si
0,068
0,343
0,674
0,805
0,890
0,946
0,986
1
ei = Si x 7
0,476
2,401
4,718
5,635
6,230
6,622
6,902
7
ei arrondi
0
2
5
6
6
7
7
7
On obtient alors une Look Up Table:
ri
0
1/7
2/7
3/7
4/7
5/7
6/7
1
Sk=ei arrondi / 7 0
2/7
5/7
6/7
6/7
1
1
1
Sk p(Sk)
pi
0
0,068
0,3
1/7 0
0,275
0,25
2/7 0,275
0,331
0,2
3/7 0
0,131
0,15
4/7 0
0,085
0,1
5/7 0,331
0,056
6/7 0,131+0,085=0,216
0,04
1
0,068
0,056+0,04+0,014=0,11 0,014
0,35
0,05
0
0
0,143
0,429
0,714
1
0,286
0,571
0,857
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 1
On remarque que les valeurs des pixels se répartissent maintenant sur tous les niveaux de gris,
sombres ou claires, contrairement aux valeurs initiales qui se trouvaient souvent dans les niveaux
sombres.
L'image s'en trouve plus lumineuse (plus de valeurs dans les niveaux de gris claires), avec un
meilleur contraste (valeurs mieux réparties sur tous les niveaux).
b) Pour rehausser le contraste d'une image, une méthode courante consiste à ajouter à l'image
originale une partie de ses composantes spectrales hautes fréquences selon un facteur γ.
Une image est la somme de ses composantes spectrales basse et haute fréquence.
La composante spectrale basse fréquence est obtenue en calculant la moyenne arithmétique de
l'image, fmean(x,y).
f(x,y) = flp(x,y) + fhp(x,y)
= fmean(x,y) + fhp(x,y)
g(x,y) = fmean(x,y) + fhp(x,y) + γ fhp(x,y)
= fmean(x,y) + (1+γ) fhp(x,y)
= fmean(x,y) + (1+γ) (f(x,y) – fmean(x,y))
= fmean(x,y) - (1+γ) fmean(x,y) + (1+γ) f(x,y)
= (1+γ) f(x,y) - γ fmean(x,y)
En supposant que l'ensemble des traitements est implémenté à l'aide de masques de convolution de
taille 3x3 pixels, lemasque est est le résultat pour:
[000]
f(x,y)=[ 0 1 0 ]
[000]
[000]
[1/9 1/9 1/9 ] [ -γ/9 -γ/9
-γ /9 ]
(1+ γ) . [ 0 1 0 ] - γ . [1/9 1/9 1/9 ] = [ -γ/9 (9+8γ)/9 -γ /9 ]
[000]
[1/9 1/9 1/9 ] [ -γ/9 -γ/9
-γ /9 ]
d'où
1) Opérations Ponctuelles – Modification d'Histogramme
Pour toute la série de TP, on traveile avec MATLAB, il faut alors charger les fonctions associées à
MATLAB pour le traitement des images, qui se trouvent dans un dossier spécial.
Pour charger une image sous MATLAB et l'afficher:
>> load sampl1
>> map = gray(256);
>> imshow (sampl1, map)
//En ce qui concerne l'image sampl1, elle a un faible
contraste et est peu lumineuse.
Quelques définitions:
–
La luminosité:c'est la valeur moyennes de l'image
avec MATLAB:
valeur:
>>mean2(sampl1)
ans = 12.1032
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 2
–
Le contraste: c'est en quelque sorte la moyenne des écarts entre la valeur d'un pixel et la
moyenne de l'image
avec MATLAB:
valeur:
–
>>std2(sampl1)
ans = 13.8317
Histogramme:
>>imhist(sampl1,gray(256))
On remarque bien que l'image est très
sombre et que le contraste est très
mauvais (faible largeur de dynamique
dans les niveaux de gris).
//Image Sampl2:
L=172,9282
C=57,5833
Luminosite moyenne
Assez fort contraste
//Image Sampl3:
L=124,0927
C=47,8646
Luminosite moyenne
Assez fort contraste
//Image Sampl4:
L=191,3536
C=56,2380
Forte luminosité
Assez fort contraste
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 3
b) Modification de luminosité et de contraste:
L'ensemble des opérations de modification de luminosité et de contraste peuvent être
effectuée en appliquant pixel par pixel la relation:
S =m . ( E – L) + ( L+ d)
où
S : Image de sortie
E : Image d'entrée
L : Valeur moyenne
d : Offset modifiant laluminosité
m : Facteur modifiant le contraste
Cette fonction est réalisé sous MATLAB par:
J = histscal(sampl5,m,d)
//Image Sampl5:
Sans
modification
m=1
d= -64
m=1
d=64
décalage
vers
la gauche
décalage
vers
la droite
m=0,25
d=0
m=2
d=0
rétrécissement
du spectre
élargissement
du spectre
Pour un recadrage de la dynamique, il faut simplement élargir légèrement le spectre: m~1,2.
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 4
c) Egalisation d'histogramme:
Il faut charger l'image pout.tif avec la fonction imread, calculer la luminosité et le contraste avant et
après avoir effectué une egalisation d'histogramme:
>>sampl6 = imread('pout.tif');
>>mean2(pout)
ans=110,3037
>>std2(pout)
ans=23,1811
>>pout_eg=histeq(pout);
//egalisation d'histogramme
>>mean2(pout_eg)
ans=127,2570
>>std2(pout_eg)
ans=74,7572
Avant egalisation
Après egalisation
On remarque que la luminosité augmente, ainsi que le contraste de manière importante.
2) Filtrage dans le domaine spatial.
Les applications de ce filtrage concernent principalement le lissage ou réduction de bruit, et
l'accentuation et la détection de contours, afn de renforcer par exemple le contraste d'une image
légèrement floue.
Attenuation du bruit: consiste au filtrage des hautes fréquences.
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 5
//Filtre de moyenne arithmétique:
a) On charge une image gnoise_b que l'on filtre et que l'on appelle gnoise_a, on compare:
>> load gnoise_b
>>gnoise_a = filter2(ones(3)/9,gnoise_b);
>>imshow(gnoise_a,gray(256))
>>imshow(gnoise_b,gray(256))
Non filtré
Filtre 3x3
Filtre 5x5
Filtre 7x7
On constate que plus la taille du filtre est importante plus l'image est lissée.
b)Réponse fréquence d'un filtre:
>>figure; mesh(fftshift(abs(fft2(ones(7)/49,128,128))))
Il s'agit d'un filtre passe-bas, ce filtre est réalisé à
partir d'une fenêtre, donc d'une fonction porte, d'où
une réponse impulsionelle de la forme sinus cardinal à
deux dimensions.
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 6
c)//Filtre non linéaire de moyenne géométrique:
On se propose d'analyser son comportement pour différentes tailles de filtre, 3x3 et 5x5.
Ce type de filtre est réalisé à partir de la fonction gmean2.
>> filtre3x3 = gmean2(gnoise_b,3);
>> filtre5x5 = gmean2(gnoise_b,5);
>> imshow(filtre3x3,gray(256))
>> imshow(filtre5x5,gray(256))
image originale
filtre 3x3
filtre 5x5
On observe des artefacts (carrés noirs sur le devant du vehicule) qui apparaissent plus la
taille du filtre augmente.
d)//Filtre gaussien:
C'est un filtre à symétrie circulaire dont les coefficients suivent la loi du type:
Il faut calculer le masque du filtre en utilisant la fonction:
>>Gx = fspecial('gaussian',x,a)
où x est la taille du filtre, et a le paramètre de la loi gaussienne ci-dessus.
On utilise alors ce masque pour filtre l'image gnoise_b:
>>gnoise_a = filter2(Gx,gnoise_b)
>>imshow(gnoise_a,gray(256))
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 7
Exemples:
a=0,1
a=0,5
Filtre de taille 3x3
a=2
On constate un lissage plus important quand a augmente.
Filtre de taille 3x3
a=0,5
Filtre de taille 5x5
Filtre de taille 7x7
On ne constate pas de différences.
e)//Filtre médian:
Il est efficace pour enlever les bruits de type sel et poivre, poussières et griffes sur la
pellicule. Il préserve bien les contours en remplaçant le pixel traité par la moyenne des pixels aux
alentours.
L'image strak1_b possède des rayures verticales et des
poussières dûes à un transfert film vers vidéo. On applique
un filtre médian en faisant varier sa taille et on repère quel
filtre correspond le mieux.
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 8
3x3
5x5
7x7
3x1
5x1
7x1
On constate que par exemple pour le filtre 3x1, le 3 correspond au lissage vertical et le 1 au
lissage horizontal. Plus le nombre est grand et plus le lissage est important selon cet axe.
Il faut alors choisir le filtre qui convient le mieux.
f)Autre exemple: l'image strak2_b contient des rayures parasites dûes à une capture d'images sur un
réseau de TV par câble. Comme les rayures sont dirigées horizontalement, un lissage vertical est
plus nécessaire qu'un lissage horizontal. Un filtre 3x1 est alors adapté à ce type d'images.
Image originale
Filtre médian 3x1
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 9
Rehaussement de contours:
C'est un filtre de type passe-haut qui permet d'augmenter le contraste dans une image floue.
On ajoute à l'image originale une quantité proportionnelle aux composantes haute fréquence.
Ce filtre correspond au filtre étudié dans la partie préparation, c'est à dire un filtre du type:
On regarde pour différentes valeurs de γ le rehaussement de contraste engendré:
Sous MATLAB:
» G6=[-1/18 -1/18 -1/18; -1/18 13/9 -1/18; -1/18 -1/18 -1/18];
» G7=[-1/9 -1/9 -1/9; -1/9 17/9 -1/9; -1/9 -1/9 -1/9];
» G8=[-2/9 -2/9 -2/9; -2/9 25/9 -2/9; -2/9 -2/9 -2/9];
» sampl6_a6=filter2(G6,sampl6);
» sampl6_a7=filter2(G7,sampl6);
» sampl6_a8=filter2(G8,sampl6);
» imshow([sampl6 sampl6_a6 sampl6_a7 sampl6_a8],gray(256))
Image originale
γ = 0,5
γ=1
γ=2
On remarque bien un rehaussement de contraste évident lorsque γ augmente.
TP1 TNI - S7 Master 1 Audiovisuel et Multimédia - ISIS – Clément FOLLET – Février 2008 – page 10
Téléchargement