任何人都可以建议哪个库支持创建所需长度和sigma的高斯滤波器?我基本上需要一个等效函数用于下面的matlab函数:
fltr = fspecial('gaussian',[1 n],sd)
Run Code Online (Sandbox Code Playgroud)
Jun*_*uxx 11
对于简单的1D高斯,您不需要库.
from math import pi, sqrt, exp
def gauss(n=11,sigma=1):
r = range(-int(n/2),int(n/2)+1)
return [1 / (sigma * sqrt(2*pi)) * exp(-float(x)**2/(2*sigma**2)) for x in r]
Run Code Online (Sandbox Code Playgroud)
注意:这将始终返回一个以0为中心的奇数长度列表.我想在某些情况下你可能需要一个偶数长度的高斯,其值为x = [...,-1.5,-0.5,0.5,1.5, ...],但在这种情况下,你需要一个稍微不同的公式,我会把它留给你;)
具有默认值的输出例如n = 11,sigma = 1:
>>> g = gauss()
1.48671951473e-06
0.000133830225765
0.00443184841194
0.0539909665132
0.241970724519
0.398942280401
0.241970724519
0.0539909665132
0.00443184841194
0.000133830225765
1.48671951473e-06
>>> sum(g)
0.99999999318053079
Run Code Online (Sandbox Code Playgroud)
也许scipy.ndimage.filters.gaussian_filter吧?我从未使用它,但文档位于:https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.ndimage.filters.gaussian_filter.html