From 91ed3780194b200b9008f158d1f1c8aaceab7fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Sun, 24 Jan 2016 18:41:11 +0100 Subject: [PATCH] Fix bug in exclude_border option --- skimage/feature/peak.py | 2 +- skimage/feature/tests/test_peak.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/skimage/feature/peak.py b/skimage/feature/peak.py index d3e3f4f5..0cc1b26d 100644 --- a/skimage/feature/peak.py +++ b/skimage/feature/peak.py @@ -137,7 +137,7 @@ def peak_local_max(image, min_distance=1, threshold_abs=None, image_max = ndi.maximum_filter(image, size=size, mode='constant') mask = image == image_max - if exclude_border: + if exclude_border and (footprint is not None or min_distance > 0): # zero out the image borders for i in range(mask.ndim): mask = mask.swapaxes(0, i) diff --git a/skimage/feature/tests/test_peak.py b/skimage/feature/tests/test_peak.py index 8161ca39..40292cd9 100644 --- a/skimage/feature/tests/test_peak.py +++ b/skimage/feature/tests/test_peak.py @@ -310,6 +310,19 @@ def test_4D(): [[5, 5, 5, 5], [15, 15, 15, 15]]) +def test_threshold_rel_default(): + image = np.ones((5, 5)) + + image[2, 2] = 1 + assert len(peak.peak_local_max(image)) == 0 + + image[2, 2] = 2 + assert_equal(peak.peak_local_max(image), [[2, 2]]) + + image[2, 2] = 0 + assert len(peak.peak_local_max(image, min_distance=0)) == image.size - 1 + + if __name__ == '__main__': from numpy import testing testing.run_module_suite()