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

时间:2018-11-10 17:43:35

标签: python image-processing convolution derivative

我希望通过行,然后通过列,分别区分我的图像。

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

有人告诉我这可以通过卷积来完成-d / dx以(1,0,-1)作为行向量而d / dy是相同的向量但以列形式进行卷积。

我的问题是-当使用scipy.signal.convolve2D在python中以mode ='same'进行卷积时,与这些向量进行卷积时,我得到的结果与numpy.diff的结果不同。

说一个3x3矩阵:

5 4 3

2 1 1 

3 2 5

与(1,0,-1)交涉给我

-4 2 4

-1 1 1

-2 -2 2

numpy的差异给了我

-3 -3 -2

 1  1  4

我的问题如下:

1。)在将NxN图像与(1,0,-1)之类的内核进行卷积时,该函数是否对向量的每一行进行卷积?

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)作为列向量

0 个答案:

没有答案