> Divers > Analyse des images : biOps > Filtrage des images
Filtrage des images
Filtrage par filtre maximum ou minimum. Consiste pour chaque pixel à remplacer sa valeur par celle du maximum ou du minimum sur une fenêtre carrée centrée sur le pixel :
- imgMaximumFilter(im, 3) : renvoie une image filtrée avec filtre de type maximum sur une fenêtre de taille 3 x 3.
- imgMinimumFilter(im, 3) : renvoie une image filtrée avec filtre de type minimum sur une fenêtre de taille 3 x 3.
Filtrage par filtre médian. Consiste pour chaque pixel à remplacer sa valeur par celle de la médiane sur une fenêtre carrée centrée sur le pixel :
imgBlockMedianFilter(im, 4) : renvoie un image filtrée par un filtre médian de taille de fenêtre 4 x 4.
Convolution générique. Consiste pour chaque pixel à remplacer sa valeur par celle calculée par sommation des valeurs des pixels d'une fenêtre centrée sur le pixel avec des coefficients précisés par la matrice de convolution. Selon la matrice convolution utilisée, on peut rendre plus floue une image, détecter des bordures de couleurs, etc ... :
mat <- matrix(c(1, 0, -1, 2, 0, -2, 1, 0, -1), 3, 3)
imgConvolve(im, mat, 0)
renvoie une image calculée avec la matrice de convolution donnée et en rajoutant après 0 (par défaut, 32 est rajouté.
Floutage d'une image par le filtre de convolution suivant :
1/16 1/8 1/16
1/8 1/4 1/8
1/16 1/8 1/16
imgBlur(im) : renvoie l'image filtrée pour la rendre floue.
Augmentation de la netteté : se fait par convolution avec l'un des 3 masques :
masque 1 masque 2 masque 3
0 -1 0 || -1 -1 -1 || 1 -2 1
-1 5 -1 || -1 9 -1 || -2 5 -2
0 -1 0 || -1 -1 -1 || 1 -2 1
imgSharpen(im, mask = 1) : utilise le masque numéro 1 pour renvoyer une image plus nette.
Filtre de sobel : permet de détecter les arêtes (régions de changement brutal de couleur) :
imgSobel(im) : renvoie l'image transformée par filtre de Sobel (arêtes apparaissent en clair sur fond foncé.
Filtre de Prewitt : permet de détecter les arêtes (régions de changement brutal de couleur) :
- imgPrewitt(im) : renvoie l'image transformée par filtre de Prewitt (arêtes apparaissent en clair sur fond foncé.
- imgPrewittCompassGradient(im) : renvoie l'image transformée par filtre de Prewitt modifié (arêtes apparaissent en clair sur fond foncé.
Filtre de Robinson : permet de détecter les arêtes (régions de changement brutal de couleur) :
- imgRobinson3Level(im) : renvoie une image avec les arêtes en clair sur fond foncé.
- imgRobinson5Level(im) : renvoie une image avec les arêtes en clair sur fond foncé (pareil avec 5 niveaux au lieu de 3).
Filtre de Frei-Chen : permet de détecter les arêtes (régions de changement brutal de couleur) :
imgFreiChen(im) : renvoie une image avec les arêtes en clair sur fond foncé.
Filtre de Canny : permet de détecter les arêtes (régions de changement brutal de couleur) :
- imgCanny(im, 1) : le paramètre sigma (ici 1) permet de régler la sensibilité de détection du contour (trop faible ou trop fort, il ne permet pas de détecter tous les contours). Les arêtes apparaissent en foncé sur fond blanc.
- im2 <- imgCanny(im, 1); imgAND(imgAND(imgBlueBand(im2), imgRedBand(im2)), imgGreenBand(im2)) : pour avoir une image en noir et blanc avec les arêtes.
Autres filtres de détection d'arêtes :
- imgKirsch(im) : renvoie une image avec les arêtes en clair sur fond foncé par la méthode de Kirsch (assez accentué).
- imgMarrHildreth(im, 5) : renvoie une image avec les arêtes en foncé sur fond blanc par la méthode de Marr-Hildreth (le 2ème paramètre est la déviation standard de la gaussienne pour la convolution.
- imgHomogeneityEdgeDetection(im) : renvoie une image avec les arêtes en clair sur fond foncé.
- imgShenCastan(im, smooth_factor=0.9, thin_factor=2, adapt_window=7, thresh_ratio=0.8, do_hysteresis=1) : renvoie une image avec les arêtes en foncé sur fond blanc par la méthode de Shen-Castan
Introduction de bruit :
- imgSaltPepperNoise(im, 10) : renvoie une image avec 10% de bruit poivre et sel introduit dans l'image : 10% des pixels ont une valeur aléatoire.
- imgGaussianNoise(im, 10, 100) : renvoie une image avec un bruit gaussien rajouté de moyenne 10 et d'écart-type 100 (si valeur obtenue dépasse l'intervalle [0,255], elle est ramenée à 0 ou 255).
Copyright Aymeric Duclert
programmer en R, tutoriel R, graphes en R