【问题标题】:Asymmetrical gaussian filtering in MATLAB R2017aMATLAB R2017a 中的非对称高斯滤波
【发布时间】:2018-01-19 18:46:58
【问题描述】:

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

【问题讨论】:

  • 听起来你需要定义自己的过滤内核,然后使用更通用的函数,如imfilter。祝你好运!

标签: matlab filtering gaussian


【解决方案1】:

imgaussfilt3 函数已经可以立即执行此操作。根据文档,sigma 可以是(强调我的)

sigma — 高斯分布的标准差
0.5(默认)|数值、实数、正标量或三元素向量

因此,要在第一个维度有一个1,在第二个维度有一个2,在第三个维度有一个3,您可以调用imgaussfilt3,如下所示:

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

【讨论】:

  • 不敢相信我错过了这个,我真的很抱歉!好吧,这让我余下的一天变得轻松!非常感谢!
猜你喜欢
  • 2011-02-15
  • 2017-04-20
  • 2023-04-09
  • 2014-07-21
  • 1970-01-01
  • 2013-03-29
  • 2021-05-22
  • 2013-02-20
  • 2012-10-22
相关资源
最近更新 更多