2011-06-13 213 views
7

是否有可用於MATLAB的imfilter的三維等價物?我希望將高斯濾波應用於3D直方圖。我將自己實現它,通過創建一個(3D)高斯濾波器,然後遍歷我的直方圖中的每個元素,並總結相應的數據條目。MATLAB中的三維高斯濾波器

但是,如果已經存在某種東西或者更明智的方法,我不想自己以低速低效的方式實現它。

+0

假設您的高斯濾波器是可分離的,那麼您應該可以應用2D濾波器,然後應用1D濾波器? – 2011-06-13 13:10:41

回答

5

有兩種方法,以執行濾波以有效的方式來解決這個問題:

(1)使用CONVN三次具有三個1D高斯過濾數據,一個x由-1-由-1,1乘1乘1,1乘1乘1。 (2)如果您有信號處理工具箱,請使用FFTFILT在反空間中執行濾波(或在文件交換中使用任何一種fft-卷積算法)。

[(3)給我發電子郵件,我會送你我的fftFilterImage,這確實3D高斯濾波]

4

imfilter已經可以做3D濾波,只要數據矩陣,你給過濾器它是3D。見the imfilter page

1

這個任務可以使用新的(截至R2015a)imgaussfilt3函數來處理。

的基本語法如下:

B = imgaussfilt3(A,sigma) 

還有許多name-value pair arguments

  • 'FilterSize':高斯濾波器的大小,默認爲大小2*ceil(2*sigma)+1的立方體。
  • 'Padding':填充類型('replicate'(默認)| 'circular' | 'symmetric')。
  • 'FilterDomain':在域中執行卷積:'frequency''spatial'(默認自動)。