MATLAB是否有imfilter的3D等价?我希望将高斯滤波应用于3D直方图。我打算自己实现它,创建一个(3D)高斯滤波器,然后循环我的直方图中的每个元素,并总结相应的数据条目。
然而,如果已经存在某些东西,或者采用更聪明的方式,我不想以缓慢而低效的方式实现它。
答案 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'
(默认自动)。