1

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

4

1 回答 1

4

是的。从 SciPy计算高斯核的复杂(没有双关语)方式来看,这一点并不明显,但这里有一个经验验证:我将高斯与a具有单个条目 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
于 2018-08-22T04:31:30.240 回答