Пример #1
0
def test_ndim():
    regionprops(np.zeros((10, 10), dtype=np.int))
    regionprops(np.zeros((10, 10, 1), dtype=np.int))
    regionprops(np.zeros((10, 10, 1, 1), dtype=np.int))
    regionprops(np.zeros((10, 10, 10), dtype=np.int))
    with pytest.raises(TypeError):
        regionprops(np.zeros((10, 10, 10, 2), dtype=np.int))
Пример #2
0
def test_dtype():
    regionprops(np.zeros((10, 10), dtype=np.int))
    regionprops(np.zeros((10, 10), dtype=np.uint))
    assert_raises((TypeError), regionprops,
                  np.zeros((10, 10), dtype=np.float))
    assert_raises((TypeError), regionprops,
                  np.zeros((10, 10), dtype=np.double))
Пример #3
0
def test_euler_number():
    en = regionprops(SAMPLE)[0].euler_number
    assert en == 0

    SAMPLE_mod = SAMPLE.copy()
    SAMPLE_mod[7, -3] = 0
    en = regionprops(SAMPLE_mod)[0].euler_number
    assert en == -1
Пример #4
0
def test_eccentricity():
    eps = regionprops(SAMPLE)[0].eccentricity
    assert_almost_equal(eps, 0.814629313427)

    img = np.zeros((5, 5), dtype=np.int)
    img[2, 2] = 1
    eps = regionprops(img)[0].eccentricity
    assert_almost_equal(eps, 0)
Пример #5
0
def test_bbox():
    bbox = regionprops(SAMPLE)[0].bbox
    assert_array_almost_equal(bbox, (0, 0, SAMPLE.shape[0], SAMPLE.shape[1]))

    SAMPLE_mod = SAMPLE.copy()
    SAMPLE_mod[:, -1] = 0
    bbox = regionprops(SAMPLE_mod)[0].bbox
    assert_array_almost_equal(bbox, (0, 0, SAMPLE.shape[0], SAMPLE.shape[1]-1))
def test_bbox():
    bbox = regionprops(SAMPLE, ['BoundingBox'])[0]['BoundingBox']
    assert_array_almost_equal(bbox, (0, 0, SAMPLE.shape[0], SAMPLE.shape[1]))

    SAMPLE_mod = SAMPLE.copy()
    SAMPLE_mod[:, -1] = 0
    bbox = regionprops(SAMPLE_mod, ['BoundingBox'])[0]['BoundingBox']
    assert_array_almost_equal(bbox, (0, 0, SAMPLE.shape[0], SAMPLE.shape[1]-1))
def test_filled_area():
    area = regionprops(SAMPLE, ['FilledArea'])[0]['FilledArea']
    assert area == np.sum(SAMPLE)

    SAMPLE_mod = SAMPLE.copy()
    SAMPLE_mod[7, -3] = 0
    area = regionprops(SAMPLE_mod, ['FilledArea'])[0]['FilledArea']
    assert area == np.sum(SAMPLE)
def test_euler_number():
    en = regionprops(SAMPLE, ['EulerNumber'])[0]['EulerNumber']
    assert en == 0

    SAMPLE_mod = SAMPLE.copy()
    SAMPLE_mod[7, -3] = 0
    en = regionprops(SAMPLE_mod, ['EulerNumber'])[0]['EulerNumber']
    assert en == -1
Пример #9
0
def test_iterate_all_props():
    region = regionprops(SAMPLE)[0]
    p0 = dict((p, region[p]) for p in region)

    region = regionprops(SAMPLE, intensity_image=INTENSITY_SAMPLE)[0]
    p1 = dict((p, region[p]) for p in region)

    assert len(p0) < len(p1)
Пример #10
0
def test_filled_area():
    area = regionprops(SAMPLE)[0].filled_area
    assert area == np.sum(SAMPLE)

    SAMPLE_mod = SAMPLE.copy()
    SAMPLE_mod[7, -3] = 0
    area = regionprops(SAMPLE_mod)[0].filled_area
    assert area == np.sum(SAMPLE)
Пример #11
0
def test_euler_number():
    with expected_warnings(['`background`|CObject type']):
        en = regionprops(SAMPLE)[0].euler_number
    assert en == 0

    SAMPLE_mod = SAMPLE.copy()
    SAMPLE_mod[7, -3] = 0
    with expected_warnings(['`background`|CObject type']):
        en = regionprops(SAMPLE_mod)[0].euler_number
    assert en == -1
Пример #12
0
def test_coordinates():
    sample = np.zeros((10, 10), dtype=np.int8)
    coords = np.array([[3, 2], [3, 3], [3, 4]])
    sample[coords[:, 0], coords[:, 1]] = 1
    prop_coords = regionprops(sample)[0].coords
    assert_array_equal(prop_coords, coords)

    sample = np.zeros((6, 6, 6), dtype=np.int8)
    coords = np.array([[1, 1, 1], [1, 2, 1], [1, 3, 1]])
    sample[coords[:, 0], coords[:, 1], coords[:, 2]] = 1
    prop_coords = regionprops(sample)[0].coords
    assert_array_equal(prop_coords, coords)
Пример #13
0
def test_dtype():
    regionprops(np.zeros((10, 10), dtype=np.int))
    regionprops(np.zeros((10, 10), dtype=np.uint))
    with pytest.raises(TypeError):
        regionprops(np.zeros((10, 10), dtype=np.float))
    with pytest.raises(TypeError):
        regionprops(np.zeros((10, 10), dtype=np.double))
Пример #14
0
def test_equals():
    arr = np.zeros((100, 100), dtype=np.int)
    arr[0:25, 0:25] = 1
    arr[50:99, 50:99] = 2

    regions = regionprops(arr)
    r1 = regions[0]

    regions = regionprops(arr)
    r2 = regions[0]
    r3 = regions[1]

    assert_equal(r1 == r2, True, "Same regionprops are not equal")
    assert_equal(r1 != r3, True, "Different regionprops are equal")
Пример #15
0
def test_equals():
    arr = np.zeros((100, 100), dtype=np.int)
    arr[0:25, 0:25] = 1
    arr[50:99, 50:99] = 2

    regions = regionprops(arr)
    r1 = regions[0]

    regions = regionprops(arr)
    r2 = regions[0]
    r3 = regions[1]

    with expected_warnings(['`background`|CObject type']):
        assert_equal(r1 == r2, True, "Same regionprops are not equal")
        assert_equal(r1 != r3, True, "Different regionprops are equal")
Пример #16
0
    def _measure_properties(self, z, metadata, p=25):
        from skimage.measure._regionprops import regionprops

        nim = z.copy()
        #         nz = z[z > min(z) * 3]

        #         for zi in z:
        #             print zi

        mz = min(z)
        r = max(z) - mz
        t = p * 0.01 * r + mz
        #         print 'aaaa', max(z), min(z)
        #         print 'bbbb', t, p
        #         t2 = percentile(nz, p)
        #         t = percentile(z, p)
        #         print 'nz ', t2, 'z ', t1
        nim[z < t] = 0

        props = None
        try:
            props = regionprops(nim.astype(int), ['EquivDiameter', 'Centroid',
                                                  'MajorAxisLength', 'MinorAxisLength',
                                                  'Orientation'
                                                  ])
        except TypeError as e:
            pass
        return props, nim
Пример #17
0
def test_all_props_3d():
    region = regionprops(SAMPLE_3D, INTENSITY_SAMPLE_3D)[0]
    for prop in PROPS:
        try:
            assert_almost_equal(region[prop], getattr(region, PROPS[prop]))
        except NotImplementedError:
            pass
Пример #18
0
def test_invalid():
    ps = regionprops(SAMPLE)

    def get_intensity_image():
        ps[0].intensity_image

    assert_raises(AttributeError, get_intensity_image)
Пример #19
0
def test_invalid():
    ps = regionprops(SAMPLE)

    def get_intensity_image():
        ps[0].intensity_image

    with pytest.raises(AttributeError):
        get_intensity_image()
Пример #20
0
def test_old_dict_interface():
    feats = regionprops(SAMPLE,
                        ['Area', 'Eccentricity', 'EulerNumber',
                         'Extent', 'MinIntensity', 'MeanIntensity',
                         'MaxIntensity', 'Solidity'],
                        intensity_image=INTENSITY_SAMPLE)

    np.array([list(props.values()) for props in feats], np.float)
    assert_equal(len(feats[0]), 8)
Пример #21
0
def test_moments_normalized():
    nu = regionprops(SAMPLE)[0].moments_normalized
    # determined with OpenCV
    assert_almost_equal(nu[0,2], 0.08410493827160502)
    assert_almost_equal(nu[1,1], -0.016846707818929982)
    assert_almost_equal(nu[1,2], -0.002899800614433943)
    assert_almost_equal(nu[2,0], 0.24301268861454037)
    assert_almost_equal(nu[2,1], 0.045473992910668816)
    assert_almost_equal(nu[3,0], -0.017278118992041805)
Пример #22
0
def test_weighted_moments_normalized():
    wnu = regionprops(SAMPLE, intensity_image=INTENSITY_SAMPLE
                      )[0].weighted_moments_normalized
    ref = np.array(
        [[       np.nan,        np.nan,  0.0873590903, -0.0161217406],
         [       np.nan, -0.0160405109, -0.0031421072, -0.0031376984],
         [  0.230146783,  0.0457932622,  0.0165315478,  0.0043903193],
         [-0.0162529732, -0.0104598869, -0.0028544152, -0.0011057191]]
    )
    assert_array_almost_equal(wnu, ref)
def test_weighted_moments():
    wm = regionprops(SAMPLE, intensity_image=INTENSITY_SAMPLE
                     )[0].weighted_moments
    ref = np.array(
        [[7.4000000e+01, 4.1000000e+02, 2.7500000e+03, 1.9778000e+04],
         [6.9900000e+02, 3.7850000e+03, 2.4855000e+04, 1.7500100e+05],
         [7.8630000e+03, 4.4063000e+04, 2.9347700e+05, 2.0810510e+06],
         [9.7317000e+04, 5.7256700e+05, 3.9007170e+06, 2.8078871e+07]]
    )
    assert_array_almost_equal(wm, ref)
Пример #24
0
def test_moments_central():
    mu = regionprops(SAMPLE)[0].moments_central
    # determined with OpenCV
    assert_almost_equal(mu[0,2], 436.00000000000045)
    # different from OpenCV results, bug in OpenCV
    assert_almost_equal(mu[0,3], -737.333333333333)
    assert_almost_equal(mu[1,1], -87.33333333333303)
    assert_almost_equal(mu[1,2], -127.5555555555593)
    assert_almost_equal(mu[2,0], 1259.7777777777774)
    assert_almost_equal(mu[2,1], 2000.296296296291)
    assert_almost_equal(mu[3,0], -760.0246913580195)
Пример #25
0
def test_weighted_moments_central():
    wmu = regionprops(SAMPLE, intensity_image=INTENSITY_SAMPLE)[0].weighted_moments_central
    ref = np.array(
        [
            [7.4000000000e01, -2.1316282073e-13, 4.7837837838e02, -7.5943608473e02],
            [3.7303493627e-14, -8.7837837838e01, -1.4801314828e02, -1.2714707125e03],
            [1.2602837838e03, 2.1571526662e03, 6.6989799420e03, 1.5304076361e04],
            [-7.6561796932e02, -4.2385971907e03, -9.9501164076e03, -3.3156729271e04],
        ]
    )
    np.set_printoptions(precision=10)
    assert_array_almost_equal(wmu, ref)
Пример #26
0
def test_moments():
    m = regionprops(SAMPLE)[0].moments
    # determined with OpenCV
    assert_almost_equal(m[0,0], 72.0)
    assert_almost_equal(m[0,1], 408.0)
    assert_almost_equal(m[0,2], 2748.0)
    assert_almost_equal(m[0,3], 19776.0)
    assert_almost_equal(m[1,0], 680.0)
    assert_almost_equal(m[1,1], 3766.0)
    assert_almost_equal(m[1,2], 24836.0)
    assert_almost_equal(m[2,0], 7682.0)
    assert_almost_equal(m[2,1], 43882.0)
    assert_almost_equal(m[3,0], 95588.0)
Пример #27
0
def test_weighted_moments_hu():
    whu = regionprops(SAMPLE, intensity_image=INTENSITY_SAMPLE
                      )[0].weighted_moments_hu
    ref = np.array([
        3.1750587329e-01,
        2.1417517159e-02,
        2.3609322038e-02,
        1.2565683360e-03,
        8.3014209421e-07,
        -3.5073773473e-05,
        6.7936409056e-06
    ])
    assert_array_almost_equal(whu, ref)
Пример #28
0
def test_docstrings_and_props():
    region = regionprops(SAMPLE)[0]

    docs = _parse_docs()
    props = [m for m in dir(region) if not m.startswith('_')]

    nr_docs_parsed = len(docs)
    nr_props = len(props)
    assert_equal(nr_docs_parsed, nr_props)

    ds = docs['weighted_moments_normalized']
    assert 'iteration' not in ds
    assert len(ds.split('\n')) > 3
Пример #29
0
def test_moments_hu():
    hu = regionprops(SAMPLE)[0].moments_hu
    ref = np.array([
        3.27117627e-01,
        2.63869194e-02,
        2.35390060e-02,
        1.23151193e-03,
        1.38882330e-06,
        -2.72586158e-05,
        6.48350653e-06
    ])
    # bug in OpenCV caused in Central Moments calculation?
    assert_array_almost_equal(hu, ref)
Пример #30
0
def test_cache():
    region = regionprops(SAMPLE)[0]
    f0 = region.filled_image
    region._label_image[:10] = 1
    f1 = region.filled_image

    # Changed underlying image, but cache keeps result the same
    assert_array_equal(f0, f1)

    # Now invalidate cache
    region._cache_active = False
    f1 = region.filled_image

    assert np.any(f0 != f1)
Пример #31
0
def test_slice():
    padded = np.pad(SAMPLE, ((2, 4), (5, 2)), mode='constant')
    nrow, ncol = SAMPLE.shape
    result = regionprops(padded)[0].slice
    expected = (slice(2, 2 + nrow), slice(5, 5 + ncol))
    assert_equal(result, expected)
Пример #32
0
def test_extra_properties():
    region = regionprops(SAMPLE, extra_properties=(pixelcount, ))[0]
    assert region.pixelcount == np.sum(SAMPLE == 1)
Пример #33
0
def test_invalid_size():
    wrong_intensity_sample = np.array([[1], [1]])
    with testing.raises(ValueError):
        regionprops(SAMPLE, wrong_intensity_sample)
Пример #34
0
def test_coordinates():
    sample = np.zeros((10, 10), dtype=np.int8)
    coords = np.array([[3, 2], [3, 3], [3, 4]])
    sample[coords[:, 0], coords[:, 1]] = 1
    prop_coords = regionprops(sample)[0].coords
    assert_array_equal(prop_coords, coords)
Пример #35
0
def test_deprecated_coords_argument():
    with expected_warnings(['coordinates keyword argument']):
        region = regionprops(SAMPLE, coordinates='rc')
    with testing.raises(ValueError):
        region = regionprops(SAMPLE, coordinates='xy')
Пример #36
0
def test_filled_image():
    img = regionprops(SAMPLE)[0].filled_image
    assert_array_equal(img, SAMPLE)
Пример #37
0
def test_ndim():
    regionprops(np.zeros((10, 10), dtype=np.int))
    regionprops(np.zeros((10, 10, 1), dtype=np.int))
    regionprops(np.zeros((10, 10, 1, 1), dtype=np.int))
    assert_raises(TypeError, regionprops, np.zeros((10, 10, 2), dtype=np.int))
Пример #38
0
def test_ndim():
    regionprops(np.zeros((10, 10), dtype=np.int))
    regionprops(np.zeros((10, 10, 1), dtype=np.int))
    regionprops(np.zeros((10, 10, 10), dtype=np.int))
    regionprops(np.zeros((1, 1), dtype=np.int))
    regionprops(np.zeros((1, 1, 1), dtype=np.int))
    with testing.raises(TypeError):
        regionprops(np.zeros((10, 10, 10, 2), dtype=np.int))
Пример #39
0
def test_min_intensity():
    intensity = regionprops(SAMPLE,
                            intensity_image=INTENSITY_SAMPLE)[0].min_intensity
    assert_almost_equal(intensity, 1)
Пример #40
0
def test_convex_area():
    area = regionprops(SAMPLE)[0].convex_area
    # determined with MATLAB
    assert area == 124
Пример #41
0
def test_centroid_3d():
    centroid = regionprops(SAMPLE_3D)[0].centroid
    # determined by mean along axis 1 of SAMPLE_3D.nonzero()
    assert_array_almost_equal(centroid, (1.66666667, 1.55555556, 1.55555556))
Пример #42
0
def test_centroid():
    centroid = regionprops(SAMPLE)[0].centroid
    # determined with MATLAB
    assert_array_almost_equal(centroid, (5.66666666666666, 9.444444444444444))
Пример #43
0
def test_bbox_area():
    padded = np.pad(SAMPLE, 5, mode='constant')
    bbox_area = regionprops(padded)[0].bbox_area
    assert_array_almost_equal(bbox_area, SAMPLE.size)
Пример #44
0
def test_label_sequence():
    a = np.empty((2, 2), dtype=np.int)
    a[:, :] = 2
    ps = regionprops(a)
    assert len(ps) == 1
    assert ps[0].label == 2
Пример #45
0
def test_minor_axis_length():
    length = regionprops(SAMPLE)[0].minor_axis_length
    # MATLAB has different interpretation of ellipse than found in literature,
    # here implemented as found in literature
    assert_almost_equal(length, 9.739302807263)
Пример #46
0
def test_equiv_diameter():
    diameter = regionprops(SAMPLE)[0].equivalent_diameter
    # determined with MATLAB
    assert_almost_equal(diameter, 9.57461472963)
Пример #47
0
def test_major_axis_length():
    length = regionprops(SAMPLE)[0].major_axis_length
    # MATLAB has different interpretation of ellipse than found in literature,
    # here implemented as found in literature
    assert_almost_equal(length, 16.7924234999)
Пример #48
0
def test_extent():
    extent = regionprops(SAMPLE)[0].extent
    assert_almost_equal(extent, 0.4)
def test_all_props():
    region = regionprops(SAMPLE, INTENSITY_SAMPLE)[0]
    for prop in PROPS:
        assert_almost_equal(region[prop], getattr(region, PROPS[prop]))
Пример #50
0
def test_image():
    img = regionprops(SAMPLE)[0].image
    assert_array_equal(img, SAMPLE)

    img = regionprops(SAMPLE_3D)[0].image
    assert_array_equal(img, SAMPLE_3D[1:4, 1:3, 1:3])
Пример #51
0
def test_feret_diameter_max_3d():
    img = np.zeros((20, 20), dtype=np.uint8)
    img[2:-2, 2:-2] = 1
    img_3d = np.dstack((img, ) * 3)
    feret_diameter_max = regionprops(img_3d)[0].feret_diameter_max
    assert np.abs(feret_diameter_max - 16 * np.sqrt(2)) < 1
Пример #52
0
def test_extra_properties_no_intensity_provided():
    with testing.raises(AttributeError):
        region = regionprops(SAMPLE, extra_properties=(median_intensity, ))[0]
        _ = region.median_intensity
Пример #53
0
def test_label():
    label = regionprops(SAMPLE)[0].label
    assert_array_equal(label, 1)

    label = regionprops(SAMPLE_3D)[0].label
    assert_array_equal(label, 1)
Пример #54
0
def test_props_dict_complete():
    region = regionprops(SAMPLE)[0]
    properties = [s for s in dir(region) if not s.startswith('_')]
    assert set(properties) == set(PROPS.values())
Пример #55
0
def test_weighted_centroid():
    centroid = regionprops(
        SAMPLE, intensity_image=INTENSITY_SAMPLE)[0].weighted_centroid
    assert_array_almost_equal(centroid, (5.540540540540, 9.445945945945))
Пример #56
0
def test_solidity():
    solidity = regionprops(SAMPLE)[0].solidity
    # determined with MATLAB
    assert_almost_equal(solidity, 0.580645161290323)
Пример #57
0
def test_extra_properties_intensity():
    region = regionprops(SAMPLE,
                         intensity_image=INTENSITY_SAMPLE,
                         extra_properties=(median_intensity, ))[0]
    assert region.median_intensity == np.median(INTENSITY_SAMPLE[SAMPLE == 1])
Пример #58
0
def test_perimeter():
    per = regionprops(SAMPLE)[0].perimeter
    assert_almost_equal(per, 55.2487373415)

    per = perimeter(SAMPLE.astype('double'), neighbourhood=8)
    assert_almost_equal(per, 46.8284271247)
Пример #59
0
def test_area():
    area = regionprops(SAMPLE)[0].area
    assert area == np.sum(SAMPLE)
    area = regionprops(SAMPLE_3D)[0].area
    assert area == np.sum(SAMPLE_3D)
Пример #60
0
def test_pure_background():
    a = np.zeros((2, 2), dtype=np.int)
    ps = regionprops(a)
    assert len(ps) == 0