Filtre gaussien à MATLAB
3 réponses
vous créez d'abord le filtre avec fspecial puis convolvez l'image avec le filtre en utilisant imfilter (qui fonctionne sur des images multidimensionnelles comme dans l'exemple).
vous spécifiez sigma
et hsize
dans fspecial
.
Code:
%%# Read an image
I = imread('peppers.png');
%# Create the gaussian filter with hsize = [5 5] and sigma = 2
G = fspecial('gaussian',[5 5],2);
%# Filter it
Ig = imfilter(I,G,'same');
%# Display
imshow(Ig)
@Jacob vous a déjà montré comment utiliser le filtre gaussien dans Matlab, donc je ne vais pas le répéter.
je choisirais une taille de filtre d'environ 3*sigma dans chaque direction (ronde à Impair entière). Ainsi, le filtre se décompose à presque zéro aux bords, et vous n'obtiendrez pas de discontinuités dans l'image filtrée.
Le choix de sigma dépend beaucoup de ce que vous voulez faire. Le lissage gaussien est un filtrage passe-bas, ce qui signifie qu'il supprime les détails de haute fréquence (bruit, mais aussi bords), tout en préservant les parties de basse fréquence de l'image (c.-à-d. ceux qui ne varient pas tellement). En d'autres termes, le filtre brouille tout ce qui est plus petit que le filtre.
si vous cherchez à supprimer le bruit dans une image afin d'améliorer la détection de petites caractéristiques, par exemple, je suggère de choisir un sigma qui rend le gaussien juste un peu plus petit que la caractéristique.
dans MATLAB R2015a ou plus récent, il n'est plus nécessaire (ou conseillé du point de vue de la performance) d'utiliser fspecial
suivi de imfilter
car il existe une nouvelle fonction appelée imgaussfilt
qui exécute cette opération en une seule étape et de manière plus efficace.
la syntaxe de base:
B = imgaussfilt(A,sigma)
filtres imageA
avec un noyau de lissage gaussien 2-D avec écart-type spécifié parsigma
.
la taille du filtre pour un écart type gaussien donné ( sigam
) est choisie automatiquement, mais peut aussi être spécifiée manuellement:
B = imgaussfilt(A,sigma,'FilterSize',[3 3]);
la valeur par défaut est 2*ceil(2*sigma)+1
.
les caractéristiques supplémentaires de imgaussfilter
sont la capacité d'opérer sur gpuArray
s, le filtrage dans la fréquence ou le domaine spatial, et les options avancées de rembourrage d'image. Il ressemble beaucoup IPP... hmmm. En plus, il y a une version 3D appelée imgaussfilt3
.