scikit-image
87 строк · 2.7 Кб
1import numpy as np2
3from skimage import data, filters, measure4
5try:6from skimage.measure._regionprops import PROP_VALS7except ImportError:8PROP_VALS = []9
10
11def init_regionprops_data():12image = filters.gaussian(data.coins().astype(float), sigma=3)13# increase size to (2048, 2048) by tiling14image = np.tile(image, (4, 4))15label_image = measure.label(image > 130, connectivity=image.ndim)16intensity_image = image17return label_image, intensity_image18
19
20class RegionpropsTableIndividual:21param_names = ['prop']22params = sorted(list(PROP_VALS))23
24def setup(self, prop):25try:26from skimage.measure import regionprops_table # noqa27except ImportError:28# regionprops_table was introduced in scikit-image v0.16.029raise NotImplementedError("regionprops_table unavailable")30self.label_image, self.intensity_image = init_regionprops_data()31
32def time_single_region_property(self, prop):33measure.regionprops_table(34self.label_image, self.intensity_image, properties=[prop], cache=True35)36
37# omit peakmem tests to save time (memory usage was minimal)38
39
40class RegionpropsTableAll:41param_names = ['cache']42params = (False, True)43
44def setup(self, cache):45try:46from skimage.measure import regionprops_table # noqa47except ImportError:48# regionprops_table was introduced in scikit-image v0.16.049raise NotImplementedError("regionprops_table unavailable")50self.label_image, self.intensity_image = init_regionprops_data()51
52def time_regionprops_table_all(self, cache):53measure.regionprops_table(54self.label_image, self.intensity_image, properties=PROP_VALS, cache=cache55)56
57# omit peakmem tests to save time (memory usage was minimal)58
59
60class MomentsSuite:61params = (62[(64, 64), (4096, 2048), (32, 32, 32), (256, 256, 192)],63[np.uint8, np.float32, np.float64],64[1, 2, 3],65)66param_names = ['shape', 'dtype', 'order']67
68"""Benchmark for filter routines in scikit-image."""69
70def setup(self, shape, dtype, *args):71rng = np.random.default_rng(1234)72if np.dtype(dtype).kind in 'iu':73self.image = rng.integers(0, 256, shape, dtype=dtype)74else:75self.image = rng.standard_normal(shape, dtype=dtype)76
77def time_moments_raw(self, shape, dtype, order):78measure.moments(self.image)79
80def time_moments_central(self, shape, dtype, order):81measure.moments_central(self.image)82
83def peakmem_reference(self, shape, dtype, order):84pass85
86def peakmem_moments_central(self, shape, dtype, order):87measure.moments_central(self.image)88