我很难实现拉普拉斯高斯核。我有以下代码,我正在尝试使用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)
答案 0 :(得分:1)
您的代码很难从头开始阅读,但对于初学者来说,您有:
log[i][j] = (pi*o**4)**.5*...
如果确实如此,根据你的公式:
log[i][j] = -(pi*o**4)**(-1)*...
向.5
提升某些内容实际上是一个平方根。您正在寻找的是逆向,将其提升-1
。而且,你忘了把它弄为负面。
答案 1 :(得分:0)
这个问题已经过了三年了,所以我不知道它是否有用,但是我在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))
也应使用缩放系数来计算源图像大小。