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);
我想在 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);