我想在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。有人可以帮忙吗?
答案 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);