我试图找出在 skimage.filters 的 laplace 函数中使用的内核。我知道拉普拉斯滤波器基于矩阵卷积,但我似乎无法理解 skimage.filters 的拉普拉斯函数产生的值。
这是一个例子:
>>> import numpy as np
>>> import skimage
>>> from skimage.filters import laplace
>>> x = [[2,3,2],[5,3,6],[3,7,3]]
>>> x = np.array(x)
>>> x
array([[2, 3, 2],
[5, 3, 6],
[3, 7, 3]])
>>> laplace(x, ksize=3)
array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 0.00000000e+00, -9.75781955e-19, 0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])
如果 skimage.filters 的 laplace 函数使用内核/运算符
[[ 0, 1, 0],
[ 1, -4, 1],
[ 0, 1, 0]]
然后根据矩阵卷积,它应该已经产生了输出
[[ 0, 5, -1],
[12, -9, 16],
[ 0, 19, -1]]
代替
[[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 0.00000000e+00, -9.75781955e-19, 0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]
我对内核/运算符 skimage.filters 的 laplace 函数使用什么使几乎每个输出值都接近于零感到非常困惑,例如 -9.75781955e-19。老实说,我不认为任何合理的内核/运算符可以产生这个输出,所以也许我只是不理解 Python 的 skimage.filters 的 laplace 函数是如何工作的......
对此问题的任何帮助/评论/建议/见解将不胜感激。谢谢你。