Numpy 奇异卷积结果

Numpy 奇异卷积结果,numpy,Numpy,我想了解卷积是如何工作的。 下面是一些代码: import numpy from scipy import misc data = misc.imread("path_to_a_512x512_grayscale_image.png") data = data/255.0 masque = numpy.array([[-1,0,1], [-2,0,0], [-1,0,1]],numpy.double)

我想了解卷积是如何工作的。 下面是一些代码:

import numpy
from scipy import misc

data = misc.imread("path_to_a_512x512_grayscale_image.png")
data = data/255.0

masque = numpy.array([[-1,0,1],
                      [-2,0,0],
                      [-1,0,1]],numpy.double)

def my_convolution(image, masque):
    hauteur,largeur = image.shape
    resultat = numpy.empty((hauteur,largeur))
    for y in range(1,hauteur-1):
        for x in range(1,largeur-1):
            pixel = 0.0
            for ym in range(3):
                for xm in range(3):
                    pixel += masque[ym,xm]*image[y-1+ym,x-1+ym]
            resultat[y,x]=pixel/9.0
    return resultat

my_result = my_convolution(data,masque)
plt.imshow(my_result, cmap='gray')
结果与下面的基本方法不完全相同。 我以前的方法给出的图片看起来更暗

from scipy import signal
result2 = signal.convolve2d(data, masque)
result2 = result2[1:-1,1:-1]
plt.imshow(result2, cmap='gray')
有人用这两个代码给我打电话解释,结果不一样吗? 我不想知道哪种方法最快,我知道第一种方法很难看,我只想理解


多亏了

卷积运算需要向后遍历其中一个卷积函数,这意味着减去内部索引,而不是将其相加。另外,
图像
访问表达式中的第二个索引具有不匹配的项。所以

pixel += masque[ym,xm]*image[y-1+ym,x-1+ym]
应该更像

pixel += masque[ym,xm]*image[y-1-ym,x-1-xm]

有关确认信息,请查看调用
signal.convolve2d
时运行的。内部索引与其各自的外部索引相匹配,并且在卷积过程中进行减法运算,而不是加法运算。

卷积运算需要向后遍历其中一个卷积函数,这意味着减去内部索引,而不是加法运算。另外,
图像
访问表达式中的第二个索引具有不匹配的项。所以

pixel += masque[ym,xm]*image[y-1+ym,x-1+ym]
应该更像

pixel += masque[ym,xm]*image[y-1-ym,x-1-xm]

有关确认信息,请查看调用
signal.convolve2d
时运行的。内部索引与各自的外部索引相匹配,在卷积过程中减去它们,而不是相加。

查看是否溢出。不,我已检查,如果溢出,则没有溢出。不,我已检查,没有溢出