我正在寻找一种方法来加速下面的代码。这个代码块是我开发的一个图像分析管道的简化版本,但主要结构在那里。我确实需要高斯滤波器。因为它是一个我无法控制的源代码,我决定在示例中保留它。
在stack
的定义中,我已经包含了我使用的图像的大小,它们大约是200
帧,分辨率是1024, 512
。
有没有办法用Python来加速这个过程?
import numpy as np
import time
from scipy import ndimage as ndi
def gauss(stack):
for i in range(stack.shape[0]):
stack[i,:,:] -= ndi.gaussian_filter(stack[i, :, :], 10)
return stack
stack = np.random.randint(0, 20, size=(200,1024,512))
t = time.time()
gs = gauss(stack)
print(f"{time.time() - t:0.3f} seconds")
1条答案
按热度按时间rxztt3cl1#
如果你不介意失去一点"精度"(你可能不会注意到差异),你可以使用高斯滤波器的
truncate
参数(默认值是4.0),例如截断到2个sigma(至少到3)。