"sigma"是否以"gaussian_filter"的像素单位表示?



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

是的。从 SciPy 计算高斯核的复杂(没有双关语(方式来看,这一点并不明显,但这里有一个经验验证:我用一个具有单个条目 1 的向量a卷积高斯,得到卷积的核。然后以通常的方式计算方差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

最新更新