7

是否有可用于 MATLAB的imfilter的 3D 等效项?我希望将高斯滤波应用于 3D 直方图。我打算自己实现它,通过创建一个(3D)高斯滤波器,然后遍历我的直方图中的每个元素,并总结相应的数据条目。

但是,如果已经有一些东西,或者更聪明的方式来实现它,我不想自己以一种缓慢而低效的方式实现它。

4

3 回答 3

6

有两种方法可以解决这个问题,以便以有效的方式进行过滤:

(1) 使用CONVN三次,用三个一维高斯、一个 x×1×1、一个 1×y×1 和一个 1×1×z 过滤数据。

(2)如果你有信号处理工具箱,使用FFFTILT进行逆空间滤波(或者使用文件交换上的任意一种fft-convolution算法)。

[(3) 给我发一封电子邮件,我会发给你我的fftFilterImage,它会进行 3D 高斯滤波。]

于 2011-06-13T13:20:38.040 回答
4

imfilter 已经可以做 3D 过滤,只要数据矩阵和你给它的过滤器是 3D 的。请参阅imfilter 页面

于 2011-08-16T14:00:56.083 回答
2

imgaussfilt3可以使用新的(从 R2015a 开始)功能来处理此任务。

基本语法如下:

B = imgaussfilt3(A,sigma)

还有许多名称-值对参数

  • 'FilterSize':高斯滤波器的大小,默认为大小的立方体2*ceil(2*sigma)+1
  • 'Padding':填充类型('replicate'(默认)| 'circular'| 'symmetric')。
  • 'FilterDomain':在域中执行卷积:'frequency''spatial'(默认自动)。
于 2015-03-06T22:11:43.827 回答