2011-06-13 29 views
7

MATLAB için mevcut imfilter 3D eşdeğeri var mı? Gaussian filtrelemeyi 3D histograma uygulamak istiyorum. Bir (3B) Gauss filtresi oluşturup histogramımdaki her bir elemanın üzerine döngü yaparak ve ilgili veri girişlerini toplayarak kendim uygulayacağım. Orada dışarıda zaten bir şey, ya da bunu yapmanın daha zeki yolu ise3D Gauss Filtresi MATLAB

Ancak, yavaş ve verimsiz bir şekilde kendim uygulamak istemedi. etkin bir şekilde filtre yapmak için bu sorunu gidermek için iki yol vardır

+0

bir 1D filtre tarafından izlenen bir 2D filtre uygulamak mümkün olmalıdır sizin Gauss filtre sonra ayrılabilir olduğunu varsayarsak? –

cevap

5

:

(1), üç 1D Gauss ile veriyi filtre uygulayıp çıkarmaya CONVN üç kez kullanım olup, bir X-ile-1 tarafından -1, birer birer birer, ve bir adet 1'e 1'e kadar.

(2) Sinyal işleme araç kutusuna sahipseniz, ters boşlukta filtreleme gerçekleştirmek için FFTFILT kullanın (veya dosya paylaşımında fft-dönüştürme algoritmalarından herhangi birini kullanın).

[(3) bana mail gönder ve sana 3D Gauss filtreleme yapar benim fftFilterImage, göndereceğiz.]

4

imfilter, 3D filtreleme yapmak zaten yapabilirsiniz sürece karekod ve vermek filtre olarak bu 3D. Bakınız the imfilter page.

1

Bu görev yeni (R2015a) imgaussfilt3 işleviyle ele alınabilir.

B = imgaussfilt3(A,sigma) 

name-value pair arguments bir dizi vardır: şu şekildedir:

temel sözdizimi

  • 'FilterSize': Gauss filtresinin büyüklüğü, boyutu 2*ceil(2*sigma)+1 bir küp varsaymak.
  • 'Padding': Dolgu çeşidi ('replicate' (varsayılan) | 'circular' | 'symmetric').
  • 'FilterDomain': etki alanındaki konvolüsyonunu gerçekleştirin: 'frequency' veya 'spatial' (varsayılan auto).