Question

Y at-il un eqivalent 3D imfilter disponibles pour Matlab? Je souhaite appliquer un filtrage gaussien à un histogramme 3D. J'allais mettre en œuvre moi-même, en créant un (3D) filtre gaussien, puis en boucle sur chaque élément dans mon histogramme, et résumant les entrées de données correspondant.

Cependant, je ne voulais pas mettre en œuvre moi-même d'une manière lente et inefficace s'il y a quelque chose déjà là-bas, ou d'une façon plus intelligente de le faire.

Était-ce utile?

La solution

Il y a deux façons de résoudre ce afin de faire le filtrage de manière efficace:

(1) Utiliser CONVN trois fois pour filtrer vos données avec 1D trois gaussiennes, une x-by-1-en-1, une 1-by-y-en-1, et une 1-en-1-en-z.

(2) Si vous avez la boîte à outils de traitement du signal, utilisez FFTFILT pour effectuer un filtrage inverse dans l'espace (ou utiliser l'un quelconque des algorithmes FFT-convolution sur l'échange de fichiers).

[(3) Envoyez-moi un email et je vous enverrai mon fftFilterImage, qui fait le filtrage Gauss 3D.]

Autres conseils

imfilter peut déjà faire un filtrage 3D, tant que la matrice de données et le filtre que vous donnez sont en 3D. Voir la page imfilter .

Cette tâche peut être traitée avec la nouvelle (en R2015a) imgaussfilt3 fonction.

La syntaxe de base est comme suit:

B = imgaussfilt3(A,sigma)

Il y a aussi un certain nombre de :

  • 'FilterSize':. Taille du filtre gaussien, par défaut à un cube de la taille 2*ceil(2*sigma)+1
  • 'Padding':. Type de remplissage ('replicate' (par défaut) | 'circular' | 'symmetric')
  • 'FilterDomain': Effectuez convolution dans le domaine. 'frequency' ou 'spatial' (auto par défaut)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top