首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scipy.ndimage.convolve背后的数学

scipy.ndimage.convolve背后的数学
EN

Stack Overflow用户
提问于 2016-06-22 13:14:56
回答 1查看 5.4K关注 0票数 6

虽然我已经找到了关于scipy.ndimage.convolve函数的文档,并且“实际上知道它做了什么”,但是当我试图计算结果数组时,我无法遵循数学公式。让我们举个例子:

代码语言:javascript
复制
a = np.array([[1, 2, 0, 0],`
             [5, 3, 0, 4],
             [0, 0, 0, 7],
             [9, 3, 0, 0]])

k = np.array([[1,1,1],[1,1,0],[1,0,0]])

from scipy import ndimage

ndimage.convolve(a, k, mode='constant', cval=0.0)

# Why is the result like this ? 

array([[11, 10,  7,  4], 
       [10,  3, 11, 11],
       [15, 12, 14,  7],
       [12,  3,  7,  0]]) 

我希望一步一步地计算。

EN

回答 1

Stack Overflow用户

发布于 2016-06-22 21:39:54

只是为了热身考虑

K=np.array([1,0,0,0,1 0,0,0,0,0])

而不是你的k,如果你

ndimage.convolve(a,k,模式=‘常数’,cval=0.0)

你会得到

代码语言:javascript
复制
array([[4, 2, 4, 0],
       [5, 3, 7, 4],
       [3, 0, 0, 7],
       [9, 3, 0, 0]])

请注意,任何元素都是它自己的位置之和(由于第2 1 in k)和下面的1和右边(由于1 in k),即上角的4来自上角原来的1加上从它对角向下的3对角。

(可能)令人困惑的部分是,k的效果与您可能预期的相反(对于k以上,您可能期望前1将值添加到上面和左边,而不是向下和右边。

现在回到你的: 12 (3下降,2跨)是9+3+0+0+0+0之和。

请注意,矩阵之外的任何内容都假定为0。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37969197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档