`sigma` 是以像素为单位表示的 `gaussian_filter` 吗?

Is `sigma` expressed in the units of pixel for `gaussian_filter`?

我正在查看 scipy.ndimage.gaussian_filter,但无法理解 sigma 的含义。 sigma= n 是否意味着 n 是像素数,因此一个点所有边上 n 像素数内的区域对平均贡献最大?

是的,是的。从高斯核 computed 到 SciPy 的复杂(没有双关语意)方式来看,这并不明显,但这是一个经验验证:我用向量 [=12= 对高斯进行了卷积] 具有单个条目 1,获取卷积核。然后以通常的方式计算方差 E[X**2] - E[X]**2,其中 X 明显以像素为单位 (np.arange(len(a)))。

from scipy.ndimage.filters import gaussian_filter
import numpy as np
a = np.zeros((100,))
x = np.arange(len(a))
a[len(a)//2] = 1
for sigma in range(3, 10):
    kernel = gaussian_filter(a, sigma)
    var = np.sum(x**2*kernel) - np.sum(x*kernel)**2
    print("Given sigma {}, empiric value {}".format(sigma, np.sqrt(var)))

输出:

Given sigma 3, empiric value 2.999207360674749
Given sigma 4, empiric value 3.9987184940057614
Given sigma 5, empiric value 4.998211402871647
Given sigma 6, empiric value 5.997694984501222
Given sigma 7, empiric value 6.997173172490447
Given sigma 8, empiric value 7.996647965992465
Given sigma 9, empiric value 8.99612048649375