gpt4 book ai didi

python - 图像卷积函数的矢量化实现

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:44 26 4
gpt4 key购买 nike

我知道 numpy 包含一个卷积函数。

问题是我需要自己写,我可以简单地写成这种形式(类似那样):

for i in range(-1, 2):
for j in range(-1, 2):
pixel[position1] += pixel[position2]*kernel[position3]

但是我需要编写一个矢量化实现,有什么帮助吗?

谢谢。

注意:我已经在使用 numpy 和 scipy,但为了练习,我需要编写自己的函数。

最佳答案

编写您自己的卷积可以提供更快的计算速度,尤其是当您有一个包含大量 1 和 0 的小内核时。例如,与

的卷积
kernel = array([[0, 1, 0],
[1,-4, 1],
[0, 1, 0]])

可以写成

laplace = -4*u[1:-1,1:-1] + u[2:,1:-1] + u[:-2,1:-1] + u[1:-1,2:] + u[1:-1,:-2]

这里的优点是只有一次乘法和四次加法,而进行完整的常规卷积将相当于九次乘法和加法。此外,虽然 scipy 有一个二维卷积,但 numpy 本身没有。

这只是基本方法,还有一些方法可以加快速度(例如,使用临时数组或就地计算),而且您还必须决定在边界上做什么;尽管上述通常是正确的。

关于python - 图像卷积函数的矢量化实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22380529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com