一个简单的检查是声明一个2D数组,除了中心的一个系数被设置为1,然后对其应用laplace函数。过滤的一个属性是,如果您提交一个带有单个1的图像,输出将是实际的过滤器本身,其中心位于1所在的位置-lookupimpulse response。。。或者更具体地说,Point Spread Function。在
如果您这样做,那么在运行laplace方法之后,您将看到它是什么样子:In [13]: import numpy as np
In [14]: import scipy.ndimage.filters
In [15]: A = np.zeros((5,5))
In [16]: A[2,2] = 1
In [17]: B = scipy.ndimage.filters.laplace(A)
In [18]: A
Out[18]:
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
In [19]: B
Out[19]:
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 1., -4., 1., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 0., 0.]])
因此,它是第一个被使用的内核,但是请注意符号的变化。中心系数为正,其他系数为负。在
您需要查看的相关代码如下:
^{pr2}$
基本上,[1, -2, 1]的1D内核独立地应用于每个维度,就像correlate1d函数所做的那样。。。所以先是行,然后是列。这实际上计算了你在问题中看到的第一个掩码。在