我正在查看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