【问题标题】:How to apply a 3D gaussian filter with a kernel that peaks at 1?如何应用具有峰值为 1 的内核的 3D 高斯滤波器?
【发布时间】:2017-08-17 15:46:12
【问题描述】:

我目前正在对我的数组执行此操作:

dataCube = scipy.ndimage.filters.gaussian_filter(dataCube, sigma, truncate=8)

gaussian_filter() 似乎没有确保高斯的峰值/中心值为 1 的选项。我该怎么做?

dataCube * np.sqrt(2*np.pi * sigma**2) 相乘可以解决问题吗?

【问题讨论】:

标签: python math scipy gaussian


【解决方案1】:

您可以将整个内核除以中间值,保持形状不变,但将峰值归一化为 1。

【讨论】:

  • 我如何知道内核及其中间值是什么,来自gaussian_filter()?我想我可以将原始 dataCube 与过滤后的 dataCube 进行比较,并尝试从那里找出答案,但我正在处理一个非常大的数组并且多次这样做,所以这似乎不是最有效的方法。
  • 你需要使用 scipy 过滤器吗?我建议使用cv2.filter2D() 可以指定内核,并使用cv2.getGaussianKernel()
  • 您可以使用scipy.ndimage.filters.convolve,但您必须生成自己的高斯滤波器。但在这种情况下,您可以完全控制过滤器的外观
  • 内核在scipy.ndimage.filters._gaussian_kernel1d中计算
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2013-03-29
  • 2017-04-20
  • 2012-12-13
相关资源
最近更新 更多