MATLAB中的三维高斯滤波器

时间:2011-06-13 13:06:20

标签: matlab image-processing filter gaussian

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

然而,如果已经存在某些东西,或者采用更聪明的方式,我不想以缓慢而低效的方式实现它。

3 个答案:

答案 0 :(得分:5)

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

(1)使用CONVN三次使用三个1D高斯,一个x乘1乘1,逐个1乘1和1乘1来过滤数据-1-通过-Z

(2)如果您有信号处理工具箱,请使用FFTFILT在反向空间中执行过滤(或使用文件交换中的任何一种fft-convolution算法)。

[(3)给我发电子邮件,我会发给我fftFilterImage,它会进行3D高斯过滤。]

答案 1 :(得分:4)

imfilter已经可以进行3D过滤,只要您提供的数据矩阵和过滤器是3D。请参阅the imfilter page

答案 2 :(得分:1)

此任务可以使用新的(自R2015a)imgaussfilt3函数处理。

基本语法如下:

B = imgaussfilt3(A,sigma)

还有一些name-value pair arguments

  • 'FilterSize':高斯滤镜的大小,默认为大小为2*ceil(2*sigma)+1的多维数据集。
  • 'Padding':填充类型('replicate'(默认)| 'circular' | 'symmetric')。
  • 'FilterDomain':在域中执行卷积:'frequency''spatial'(默认自动)。