我有以下代码:
big_k = gabor((height * 2, width *2), (height, width))
for r_slice in range(0,radialSlices):
r_pixels = r_slice * radialWidth
for a_slice in range(0,angularSlices):
a_pixels = a_slice * angularWidth
k_win = big_k[height - r_pixels:2*height - r_pixels,width - a_pixels:2 * width - a_pixels]
result = np.sum(img * k_win)
img
为640x480的uint8
数组,big_k
为1280x960的complex64
数组。
这段代码相当于1024个640x480个矩阵乘法,并强制转换为complex64。
这段代码需要2秒才能在我的macbook上运行;我想尝试得到100倍的加速。我能做什么?
你正在做的看起来有点像卷积,所以我建议尝试使用卷积操作来实现它。使用基于fft的方法可以非常有效地计算卷积,并且在SciPy中实现为scipy.signal.fftconvolve
。