MATLAB R2017a中的非对称高斯滤波

时间:2017-08-11 09:45:40

标签: matlab filtering gaussian

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

在另一个主题中,我发现可以使用fspecial函数分离过滤并水平和垂直地应用它(在这种情况下它只是2D)。遗憾的是,我无法使其工作(我在一个小的示例矩阵中使用imgaussfilt时得到的结果不同),fspecial的文档说不再推荐使用高斯模式而是使用imgaussfilt。

举个例子:

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

我现在想要改变三维中西格玛分别为1,2和3的方式,以便三维的模糊效果不同。

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

1 个答案:

答案 0 :(得分:1)

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

  

sigma - 高斯分布的标准差
  0.5(默认)|数字,实数,正标量或 3元素向量

因此,要在第一维中设置1的sigma,在第二维中设置2,在第三维中设置3,则可以将imgaussfilt3称为如下:

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