【发布时间】:2013-06-15 22:51:58
【问题描述】:
我正在使用 python 创建一个大小为 5x5 的高斯滤波器。
我看到了这篇文章here,他们在其中谈论了类似的事情,但我没有找到获得与 matlab 函数 fspecial('gaussian', f_wid, sigma) 等效的 python 代码的确切方法
还有其他方法吗?
我尝试使用以下代码:
size = 2
sizey = None
size = int(size)
if not sizey:
sizey = size
else:
sizey = int(sizey)
x, y = scipy.mgrid[-size: size + 1, -sizey: sizey + 1]
g = scipy.exp(- (x ** 2/float(size) + y ** 2 / float(sizey)))
print g / np.sqrt(2 * np.pi)
得到的输出是
[[ 0.00730688 0.03274718 0.05399097 0.03274718 0.00730688]
[ 0.03274718 0.14676266 0.24197072 0.14676266 0.03274718]
[ 0.05399097 0.24197072 0.39894228 0.24197072 0.05399097]
[ 0.03274718 0.14676266 0.24197072 0.14676266 0.03274718]
[ 0.00730688 0.03274718 0.05399097 0.03274718 0.00730688]]
我想要的是这样的:
0.0029690 0.0133062 0.0219382 0.0133062 0.0029690
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.0219382 0.0983203 0.1621028 0.0983203 0.0219382
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.0029690 0.0133062 0.0219382 0.0133062 0.0029690
【问题讨论】:
-
我正在使用博客中提到的代码。我设置了
N = 2 and sigma = 1并使用以下代码:size = 2 sizey = None size = int(size) if not sizey: sizey = size else: sizey = int(sizey) x, y = scipy.mgrid[-size: size + 1, -sizey: sizey + 1] g = scipy.exp( - (x ** 2/float(size) + y ** 2 / float(sizey)) / 2) print g / np.sqrt(2 * np.pi)但是这里得到的结果与在matlab中使用 fspecial 得到的结果不同 -
有什么不同?你期望什么,你会得到什么?
-
我已将其包含在问题中。请再次检查。
标签: python matlab numpy gaussian