Merge pull request #402 from ahojnnes/perimeter-fix

BUG: Perimeter bug fix.
This commit is contained in:
Stefan van der Walt
2012-12-22 11:39:26 -08:00
2 changed files with 8 additions and 7 deletions
+6 -5
View File
@@ -440,18 +440,19 @@ def perimeter(image, neighbourhood=4):
strel = STREL_4
else:
strel = STREL_8
eroded_image = ndimage.binary_erosion(image, strel)
eroded_image = ndimage.binary_erosion(image, strel, border_value=0)
border_image = image - eroded_image
# perimeter contribution: corresponding values in convolved image
perimeter_weights = {
1: (5, 7, 15, 17, 25, 27),
sqrt(2): (21, 33),
1 + sqrt(2) / 2: (13, 23)
1: (5, 7, 15, 17, 25, 27),
sqrt(2): (21, 33),
(1 + sqrt(2)) / 2: (13, 23)
}
perimeter_image = ndimage.convolve(border_image, np.array([[10, 2, 10],
[ 2, 1, 2],
[10, 2, 10]]))
[10, 2, 10]]),
mode='constant', cval=0)
total_perimeter = 0
for weight, values in perimeter_weights.items():
num_values = 0
+2 -2
View File
@@ -246,10 +246,10 @@ def test_orientation():
def test_perimeter():
per = regionprops(SAMPLE, ['Perimeter'])[0]['Perimeter']
assert_almost_equal(per, 59.2132034355964)
assert_almost_equal(per, 55.2487373415)
per = perimeter(SAMPLE.astype('double'), neighbourhood=8)
assert_almost_equal(per, 43.1213203436)
assert_almost_equal(per, 46.8284271247)
def test_solidity():