我在实现高斯内核的拉普拉斯时遇到了困难。我有以下代码,我正在尝试实现一个sigma = 1.4的9x9内核。内核显示在此链接上
http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm
然而,我的值与内核中的值完全不同,我想我的函数是关闭的。我们将非常感谢您的帮助。谢谢。
import math
pi= math.pi
log = [[0 for x in range(9)] for x in range(9)]
def genlog(log,size,o):
for i in range(-size/2,size/2):
for j in range(-size/2,size/2):
log[i][j] = -(pi*o**4)**(-1)*(1-(i**2+j**2)/(2*o**2))*math.exp(-(i**2+j**2)/(2*o**2))
def printlog(log,size):
for i in range(-size/2,size/2):
print ' '.join(str(log[i][j]) for j in range(-size/2,size/2))
genlog(log,9,1.4)
printlog(log,9)发布于 2015-07-21 16:13:40
这个问题只有三年了,所以我不知道它是否有用,但我在excel中实现了引用的算法,发现你的函数应该写成这样:
log[i][j] = (-1)/(pi*o**4)*(1-(i**2+j**2)/(2*o**2))*math.exp(-(i**2+j**2)/(2*o**2))还应该使用缩放因子来考虑源图像的大小。
发布于 2012-11-27 04:16:55
你的代码一开始就很难读懂,但对于初学者来说,你需要:
log[i][j] = (pi*o**4)**.5*...当它真正应该是的时候,根据你的公式:
log[i][j] = -(pi*o**4)**(-1)*...将一些东西提升到.5实际上是一个平方根。您正在寻找的是相反的,由-1提升它。还有,你忘了把它改成负数。
https://stackoverflow.com/questions/13572383
复制相似问题