scipy中用于执行2d卷积的代码有点混乱且未优化。如果要了解scipy的低级功能,请参阅http://svn.scipy.org/svn/scipy/trunk/scipy/signal/firfilter.c。
如果您想要的只是使用一个小的,恒定的内核(如您所示的内核)进行处理,则可以使用如下功能:
def specialconvolve(a): # sorry, you must pad the input yourself rowconvol = a[1:-1,:] + a[:-2,:] + a[2:,:] colconvol = rowconvol[:,1:-1] + rowconvol[:,:-2] + rowconvol[:,2:] - 9*a[1:-1,1:-1] return colconvol
此函数利用了上面建议的DarenW之类的内核可分离性,并且利用了更优化的numpy算术例程。根据我的测量,它比convolve2d函数快1000倍以上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)