理解图像的导数以及scipy的卷积信号函数

2024-06-26 00:05:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想区分我的图像,首先是按行,然后分别按列。在

导数表示为f[i+1]-f[i],其中i是像素,f是该像素的值/强度。在

我被教导,这可以通过卷积来完成,用(1,0,-1)作为行向量的d/dx卷积,d/dy作为相同的向量,但以列的形式。在

我的问题是-在python中使用scipy.signal.consolve2d,使用mode='same',用这些向量进行卷积,得到的结果与数字差异一

比如说3x3矩阵:

5 4 3

2 1 1 

3 2 5

用(1,0,-1)卷积得到

^{pr2}$

而numpy的差异给了我:

-3 -3 -2

 1  1  4

我的问题如下:

1.)当用核(1,0,-1)卷积NxN图像时,函数是否按向量卷积每一行?在

2.)为什么我的结果不同?我知道形状不同,numpy的结果有一行,但我可以理解,因为它不包括原始的第0行

def deriv(image): """ :param im: 2D image :return: magnitude of the derivative """ #Horizontal Derivative dx = convolve2d(im, DX, mode='same') print('dx', dx) #Vertical Derivative dy = convolve2d(im, DY, mode='same') print('dy', dy) magnitude = np.sqrt(np.abs(dx)**TWO + np.abs(dy)**TWO) return magnitude

这些指纹只是我在计算震级之前检查一下它们的数值。在

DX=(1,0,-1)

DY=(1,0,-1)作为列向量


Tags: 图像imagenumpyreturnmodenp像素差异