我正在尝试使用 numpy 在 python 中执行二维卷积
我有一个二维数组,如下所示,内核 H_r 用于行,H_c 用于列
data = np.zeros((nr, nc), dtype=np.float32)
#fill array with some data here then convolve
for r in range(nr):
data[r,:] = np.convolve(data[r,:], H_r, 'same')
for c in range(nc):
data[:,c] = np.convolve(data[:,c], H_c, 'same')
data = data.astype(np.uint8);
它没有产生我期望的输出,这段代码看起来没问题,我认为问题出在从 float32 到 8 位的转换上。最好的方法是什么
谢谢
最佳答案
也许这不是最优化的解决方案,但这是我之前使用 Python 的 numpy 库实现的:
def convolution2d(image, kernel, bias):
m, n = kernel.shape
if (m == n):
y, x = image.shape
y = y - m + 1
x = x - m + 1
new_image = np.zeros((y,x))
for i in range(y):
for j in range(x):
new_image[i][j] = np.sum(image[i:i+m, j:j+m]*kernel) + bias
return new_image
我希望这段代码能帮助其他有同样疑问的人。
问候。
关于python - 使用 python 和 numpy 的二维卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2448015/