Int*_*man 8 python numpy image-processing scipy
我正在尝试使用Python和Numpy/Scipy来实现图像处理算法.分析器告诉我在下面的函数(经常调用)中花费了大量时间,这告诉我两个图像之间的平方差异的总和
def ssd(A,B):
s = 0
for i in range(3):
s += sum(pow(A[:,:,i] - B[:,:,i],2))
return s
Run Code Online (Sandbox Code Playgroud)
我怎样才能加快速度呢?谢谢.
And*_*ffe 36
只是
s = numpy.sum((A[:,:,0:3]-B[:,:,0:3])**2)
Run Code Online (Sandbox Code Playgroud)
(这是我想到的是可能只是sum((A-B)**2)如果形状始终是(,,3))
您还可以使用sum方法: ((A-B)**2).sum()
对?
只是提一下,还可以使用np.dot:
def ssd(A,B):
dif = A.ravel() - B.ravel()
return np.dot( dif, dif )
Run Code Online (Sandbox Code Playgroud)
这可能比使用np.sumand 的替代方案更快,也可能更准确**2,但如果您想沿指定轴计算 ssd 则不起作用。在这种情况下,可能有一个神奇的下标公式使用np.einsum.
| 归档时间: |
|
| 查看次数: |
43665 次 |
| 最近记录: |