python - 使用 python 和 numpy 的二维卷积

标签 python numpy convolution

我正在尝试使用 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/

相关文章:

python - asyncio 协程/任务准备就绪后立即对其进行迭代

python - python二叉搜索树基本实现中的删除操作

python - 在 python 中没有可见窗口的 OpenGL 渲染 View

c - 不应该在 GPU (OpenCL) 上更快地进行 3x3 卷积

python - 具有缺失数据的 numpy 数组的局部均值过滤器

python - 单击上下文菜单项后验证当前 URL

python - 嵌入python+numpy时延迟加载python DLL

python - 在 python 和 numpy 中处理大数据,没有足够的内存,如何将部分结果保存在磁盘上?

用于查找百分比变化发生所需天数的 Python 函数

c++ - CUDA FFT - 二次幂