From 1c0095f8e5eeea20d6638e658f16111ce3e1521e Mon Sep 17 00:00:00 2001 From: Jeremy Metz Date: Fri, 13 May 2016 13:46:52 +0100 Subject: [PATCH 1/2] Updated centroid to use coords - words in 3d --- skimage/measure/_regionprops.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/skimage/measure/_regionprops.py b/skimage/measure/_regionprops.py index db376c27..bbe512ff 100644 --- a/skimage/measure/_regionprops.py +++ b/skimage/measure/_regionprops.py @@ -115,17 +115,14 @@ class _RegionProperties(object): """ Returns ------- - A tuple of the bounding box's start coordinates for each dimension, + A tuple of the bounding box's start coordinates for each dimension, followed by the end coordinates for each dimension """ return tuple([self._slice[i].start for i in range(self._ndim)] + [self._slice[i].stop for i in range(self._ndim)]) def centroid(self): - centroid_coords = self.local_centroid - return tuple(centroid_coords + - np.array([self._slice[i].start - for i in range(self._ndim)])) + return tuple(self.coords.mean(axis=0)) @only2d def convex_area(self): From 40f73aeaac0dc584e287d8a588d9af59eed94948 Mon Sep 17 00:00:00 2001 From: Jeremy Metz Date: Sat, 14 May 2016 01:20:17 +0100 Subject: [PATCH 2/2] Added simple 3d centroid test --- skimage/measure/tests/test_regionprops.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/skimage/measure/tests/test_regionprops.py b/skimage/measure/tests/test_regionprops.py index f724577d..07bb2596 100644 --- a/skimage/measure/tests/test_regionprops.py +++ b/skimage/measure/tests/test_regionprops.py @@ -24,7 +24,7 @@ INTENSITY_SAMPLE[1, 9:11] = 2 SAMPLE_3D = np.zeros((6, 6, 6), dtype=np.uint8) SAMPLE_3D[1:3, 1:3, 1:3] = 1 -SAMPLE_3D[3, 2, 2] = 1 +SAMPLE_3D[3, 2, 2] = 1 INTENSITY_SAMPLE_3D = SAMPLE_3D.copy() def test_all_props(): @@ -97,6 +97,12 @@ def test_centroid(): assert_array_almost_equal(centroid, (5.66666666666666, 9.444444444444444)) +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)) + + def test_convex_area(): area = regionprops(SAMPLE)[0].convex_area # determined with MATLAB