1

ガウス カーネルのラプラシアンの実装に問題があります。次のコードがあり、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)
4

2 に答える 2

2

質問は 3 年ほど前のものなので、役に立つかどうかはわかりませんが、引用されたアルゴリズムを 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))

ソース画像のサイズを考慮して、倍率も使用する必要があります。

于 2015-07-21T08:13:39.713 に答える
1

あなたのコードは最初はかなり読みにくいですが、まず、次のものが必要です。

log[i][j] = (pi*o**4)**.5*...

あなたの式によれば、それが本当にあるべきとき:

log[i][j] = -(pi*o**4)**(-1)*...

に何かを上げると、.5実際には平方根になります。あなたが探しているのは逆で、それを で上げます-1。また、負にするのを忘れていました。

于 2012-11-26T20:16:55.493 に答える