gpt4 book ai didi

image-processing - scipy中的高斯滤波器

转载 作者:行者123 更新时间:2023-12-03 13:25:46 25 4
gpt4 key购买 nike

我想在 512x512 像素的图像上应用尺寸为 5x5 像素的高斯滤波器。我找到了一个 scipy 函数来做到这一点:

scipy.ndimage.filters.gaussian_filter(input, sigma, truncate=3.0)

我如何选择 sigma 的参数以确保我的高斯窗口为 5x5 像素?

最佳答案

在此处查看源代码:https://github.com/scipy/scipy/blob/master/scipy/ndimage/filters.py

你会看到 gaussian_filter电话gaussian_filter1d对于每个轴。在 gaussian_filter1d ,过滤器的宽度由 sigma 的值隐式确定和 truncate .实际上,宽度 w

w = 2*int(truncate*sigma + 0.5) + 1

所以
(w - 1)/2 = int(truncate*sigma + 0.5)

对于 w = 5,左侧为 2。右侧为 2,如果
2 <= truncate*sigma + 0.5 < 3

或者
1.5 <= truncate*sigma < 2.5

如果您选择 truncate = 3 (覆盖默认值 4),你得到
0.5 <= sigma < 0.83333...

我们可以通过过滤除单个 1 之外全为 0 的输入(即找到过滤器的脉冲响应)并计算过滤输出中非零值的数量来检查这一点。 (在下面, npnumpy 。)

首先创建一个带有单个 1 的输入:
In [248]: x = np.zeros(9)

In [249]: x[4] = 1

sigma = 0.5 检查大小的变化...
In [250]: np.count_nonzero(gaussian_filter1d(x, 0.49, truncate=3))
Out[250]: 3

In [251]: np.count_nonzero(gaussian_filter1d(x, 0.5, truncate=3))
Out[251]: 5

...并在 sigma = 0.8333... :
In [252]: np.count_nonzero(gaussian_filter1d(x, 0.8333, truncate=3))
Out[252]: 5

In [253]: np.count_nonzero(gaussian_filter1d(x, 0.8334, truncate=3))
Out[253]: 7

关于image-processing - scipy中的高斯滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25216382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com