scikit-image

Форк
0
/
benchmark_measure.py 
87 строк · 2.7 Кб
1
import numpy as np
2

3
from skimage import data, filters, measure
4

5
try:
6
    from skimage.measure._regionprops import PROP_VALS
7
except ImportError:
8
    PROP_VALS = []
9

10

11
def init_regionprops_data():
12
    image = filters.gaussian(data.coins().astype(float), sigma=3)
13
    # increase size to (2048, 2048) by tiling
14
    image = np.tile(image, (4, 4))
15
    label_image = measure.label(image > 130, connectivity=image.ndim)
16
    intensity_image = image
17
    return label_image, intensity_image
18

19

20
class RegionpropsTableIndividual:
21
    param_names = ['prop']
22
    params = sorted(list(PROP_VALS))
23

24
    def setup(self, prop):
25
        try:
26
            from skimage.measure import regionprops_table  # noqa
27
        except ImportError:
28
            # regionprops_table was introduced in scikit-image v0.16.0
29
            raise NotImplementedError("regionprops_table unavailable")
30
        self.label_image, self.intensity_image = init_regionprops_data()
31

32
    def time_single_region_property(self, prop):
33
        measure.regionprops_table(
34
            self.label_image, self.intensity_image, properties=[prop], cache=True
35
        )
36

37
    # omit peakmem tests to save time (memory usage was minimal)
38

39

40
class RegionpropsTableAll:
41
    param_names = ['cache']
42
    params = (False, True)
43

44
    def setup(self, cache):
45
        try:
46
            from skimage.measure import regionprops_table  # noqa
47
        except ImportError:
48
            # regionprops_table was introduced in scikit-image v0.16.0
49
            raise NotImplementedError("regionprops_table unavailable")
50
        self.label_image, self.intensity_image = init_regionprops_data()
51

52
    def time_regionprops_table_all(self, cache):
53
        measure.regionprops_table(
54
            self.label_image, self.intensity_image, properties=PROP_VALS, cache=cache
55
        )
56

57
    # omit peakmem tests to save time (memory usage was minimal)
58

59

60
class MomentsSuite:
61
    params = (
62
        [(64, 64), (4096, 2048), (32, 32, 32), (256, 256, 192)],
63
        [np.uint8, np.float32, np.float64],
64
        [1, 2, 3],
65
    )
66
    param_names = ['shape', 'dtype', 'order']
67

68
    """Benchmark for filter routines in scikit-image."""
69

70
    def setup(self, shape, dtype, *args):
71
        rng = np.random.default_rng(1234)
72
        if np.dtype(dtype).kind in 'iu':
73
            self.image = rng.integers(0, 256, shape, dtype=dtype)
74
        else:
75
            self.image = rng.standard_normal(shape, dtype=dtype)
76

77
    def time_moments_raw(self, shape, dtype, order):
78
        measure.moments(self.image)
79

80
    def time_moments_central(self, shape, dtype, order):
81
        measure.moments_central(self.image)
82

83
    def peakmem_reference(self, shape, dtype, order):
84
        pass
85

86
    def peakmem_moments_central(self, shape, dtype, order):
87
        measure.moments_central(self.image)
88

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.