Cours:Elen4 TNS TP TraitImage : Différence entre versions
(→Contenu fréquentiel des images) |
(→Modification de niveaux de gris) |
||
Ligne 54 : | Ligne 54 : | ||
{{q| b)}} Pour binariser une image, le plus simple est de choisir une valeur seuil : | {{q| b)}} Pour binariser une image, le plus simple est de choisir une valeur seuil : | ||
+ | |||
{| | {| | ||
|- | |- |
Version du 13 mars 2023 à 13:18
TP4 : Traitement d'images numériques
Le travail de ce TP va consister à
- observer et manipuler (simplement) la représentation spatiale d'images numériques;
- observer et interpréter le contenu fréquentiel des images;
- appliquer des filtres linéaires pour : débruiter des images ou faire apparaitre leurs contours;
- détecter des motifs dans des images
Sommaire
Représentation des images numériques
Une image numérique est un signal numérique bidimensionnel. C'est donc une fonction réelle ou complexe de deux variables indépendantes. De manière générale, une image est représentée par :
x(k,l) avec k,l ∈ ℤ
Si les domaines de variation des variables sont finis, alors le signal x(k,l) peut être représenté par une tableau rectangulaire.
Chargement et visualisation
Matlab possède en librairie un ensemble d’images tests qu’il est possible de charger avec la commande suivante :
X = imread('coins.png');
Pour la visualisation, la commande la plus simple est imshow(X)
. Il existe les commandes suivantes plus spécialisées :
figure |
ouvre une nouvelle fenêtre graphique |
image(X) |
affiche une image X (palette de fausses couleurs par défaut)
|
imagesc(X) |
comme image(X) mais ajuste la dynamique de l’image pour remplir toute cette palette
|
colormap |
modifie la palette d’une image affichée. Exemple colormap(gray) .
|
Charger et afficher l’image
coins.png
en testant les diverses commandes d’affichage.
Observer comment sont stockées les valeurs des pixels dans le tableau
I
.
Modification de niveaux de gris
a) Puisque les valeur de luminance sont (pour l'image moon
) codées sur 8 bits. Il est possible d'inverser la palette (en niv. de gris) par la transformation suivante
Y(k,l) = 255 - X(k,l)
Inverser l'image
coins
et afficher le résultat.
b) Pour binariser une image, le plus simple est de choisir une valeur seuil :
si X(k,l)>seuil | Y(k,l)=1 |
sinon | Y(k,l) = 0 |
Choisir une valeur seuil pour permettre de binariser l'image de façon à afficher les pièces en blanc sur fond noir.
Essayer de faire de même avec l'image
imread('rice.png')
.
Images couleurs
a) Lire l'image ngc6543a.jpg
.
b) Observer comment sont stockées les valeurs des pixels dans le tableau. Que représente la troisième dimension ?
c) Binariser l'image pour obtenir une image binaire faisant apparaitre le noyau de la galaxie seul.
Contenu fréquentiel des images
On utilisera une image test de caméraman :
X = imread('cameraman.tif');
a) Lire et afficher l'image X
.
b) Calculer ses coefficients de Fourier à l'aide de la fonction fft2()
(FFT en deux dimensions).
c) Calculer et afficher le spectre d'amplitude et le spectre de phase.
On rappelle que pour centrer l'affichage des fréquences, il est commode d'utiliser
fftshift2(...)
Il sera probablement judicieux d'utiliser une échelle log pour les intensités des harmoniques :
log(1+...)
d) Essayer d'interpréter le contenu fréquentiel à partir de l'image du spectre d'amplitude, et de l'image du spectre de phase.
Débruitage
- filtre linéaire séparable / non séparable
- filtre non linéaire
Détection de contours
- Sobel
Détection de motifs
par corrélation et corrélation normalisée