11

必要な長さとシグマのガウス フィルターの作成をサポートするライブラリを誰か提案できますか?基本的に、以下の matlab 関数と同等の関数が必要です。

fltr = fspecial('gaussian',[1 n],sd)
4

4 に答える 4

14

単純な 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]

注: これは常に 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
于 2012-06-26T14:25:37.730 に答える
6

おそらくscipy.ndimage.filters.gaussian_filter?使ったことはありませんが、ドキュメントはhttps://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.ndimage.filters.gaussian_filter.htmlにあります。

于 2012-06-26T14:09:47.293 に答える