2021-01-14 08:07:24 +01:00
|
|
|
import numpy as np
|
|
|
|
|
|
|
|
from scipy import ndimage as ndi
|
|
|
|
from skimage.feature import peak_local_max
|
|
|
|
|
|
|
|
|
|
|
|
class PeakLocalMaxSuite(object):
|
|
|
|
|
|
|
|
def setup(self):
|
|
|
|
mask = np.zeros([500, 500], dtype=bool)
|
|
|
|
x, y = np.indices((500, 500))
|
|
|
|
x_c = x // 20 * 20 + 10
|
|
|
|
y_c = y // 20 * 20 + 10
|
|
|
|
mask[(x - x_c)**2 + (y - y_c)**2 < 8**2] = True
|
|
|
|
|
|
|
|
# create a mask, label each disk,
|
|
|
|
self.labels, num_objs = ndi.label(mask)
|
|
|
|
# create distance image for peak searching
|
|
|
|
self.dist = ndi.distance_transform_edt(mask)
|
|
|
|
|
|
|
|
def time_peak_local_max(self):
|
|
|
|
local_max = peak_local_max(
|
|
|
|
self.dist, labels=self.labels,
|
|
|
|
min_distance=20, indices=False, exclude_border=False)
|