如何使用大于图像的内核执行卷积?

数据挖掘 Python 卷积 scipy
2022-03-07 15:21:22

这个问题中,我看到了一个内核卷积的例子,其形状大于初始图像的形状:

import numpy as np
from scipy import signal

x = np.array([(0.51, 0.9, 0.88, 0.84, 0.05), 
              (0.4, 0.62, 0.22, 0.59, 0.1), 
              (0.11, 0.2, 0.74, 0.33, 0.14), 
              (0.47, 0.01, 0.85, 0.7, 0.09),
              (0.76, 0.19, 0.72, 0.17, 0.57)])

y = np.array([(0, 0, 0.0686, 0), 
              (0, 0.0364, 0, 0), 
              (0, 0.0467, 0, 0), 
              (0, 0, 0, -0.0681)])

gradient = signal.convolve2d(np.rot90(np.rot90(y)), x, 'valid')

所以,我们得到这个:

数组([[ 0.044606, 0.094061], [ 0.011262, 0.068288]])

我知道这y是翻转了 180 度。但是“有效”卷积在这里是如何工作的呢?我们什么时候可以从 (4x4) 与 (5x5) 卷积得到 (2x2) 形状?

1个回答

您的问题是我们如何使用大于输入图像的内核执行卷积操作?

如果,那么答案是paddingTL;DR你用边界像素增加原始图像的大小,以便内核可以“适应”