MATLAB R2017a 中的非对称高斯滤波

Asymmetrical gaussian filtering in MATLAB R2017a

我想在 MATLAB 中对 3D 数据矩阵执行非对称高斯滤波。使用 imgaussfilt3,我可以对称地进行(在所有三个维度上都具有相同的模糊)。但是,我只能给一个sigma值,所以过滤在所有维度上都是一样的。

在另一个线程中,我发现可以使用 fspecial 函数分离过滤并水平和垂直应用它(在那种情况下它只是 2D)。可悲的是,我无法让它工作(我不断得到与在小示例矩阵中使用 imgaussfilt 时不同的结果),并且 fspecial 的文档说不再推荐高斯模式并改用 imgaussfilt。

举个例子:

matrix = rand(30,30,30);
sigma = 2;
matrix_symblur = imgaussfilt3(matrix,sigma);

现在我想改变一下,三个维度的sigma分别为1、2和3,这样三个维度的模糊效果就不同了。

我正在使用 MATLAB R2017a。有人可以帮忙吗?

imgaussfilt3 功能已经可以开箱即用。根据文档,sigma 可以是(强调我的)

sigma — Standard deviation of the Gaussian distribution
0.5 (default) | numeric, real, positive scalar or a 3-element vector

因此,要在第一维中获得 1、在第二维中获得 2、在第三维中获得 3,您可以调用 imgaussfilt3如下:

matrix = rand(30,30,30);
sigma = [1, 2, 3];
matrix_symblur = imgaussfilt3(matrix, sigma);