From 44095eef81c7b98d119dc121a629331f6579fc1e Mon Sep 17 00:00:00 2001 From: Malcolm Reynolds Date: Fri, 15 Mar 2013 18:50:43 +0000 Subject: [PATCH 1/4] FIX: number of peaks returned from feature.corner_peaks corner_peaks accepted a num_peaks argument, but the call to peak_local_max inside the function used np.inf instead of the value of this keyword argument, leading to an unbounded number of peaks being returned. --- skimage/feature/corner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/corner.py b/skimage/feature/corner.py index 12d3fb70..39816934 100644 --- a/skimage/feature/corner.py +++ b/skimage/feature/corner.py @@ -489,7 +489,7 @@ def corner_peaks(image, min_distance=10, threshold_abs=0, threshold_rel=0.1, threshold_abs=threshold_abs, threshold_rel=threshold_rel, exclude_border=exclude_border, - indices=False, num_peaks=np.inf, + indices=False, num_peaks=num_peaks, footprint=footprint, labels=labels) if min_distance > 0: coords = np.transpose(peaks.nonzero()) From 0fde67bb568e972224e7dfd70ba39bfd366e4f2d Mon Sep 17 00:00:00 2001 From: Malcolm Reynolds Date: Mon, 18 Mar 2013 15:13:18 +0000 Subject: [PATCH 2/4] TEST: added test for num_peaks kwarg in peak_local_max. --- skimage/feature/tests/test_corner.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index a7ee01ff..9c59f704 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -100,6 +100,19 @@ def test_subpix(): assert_array_equal(subpix[0], (24.5, 24.5)) +def test_num_peaks(): + """For a bunch of different values of num_peaks, check that + peak_local_max returns exactly the right amount of peaks. Test + is run on Lena in order to produce a sufficient number of corners""" + + lena = data.lena() + + for i in xrange(20): + n = np.random.random_integers(20) + results = peak_local_max(corner_harris(lena), num_peaks=n) + assert (results.shape[0] == n) + + def test_corner_peaks(): response = np.zeros((5, 5)) response[2:4, 2:4] = 1 From 920e41398d6c9264d163dafd3fb7469449f27e10 Mon Sep 17 00:00:00 2001 From: Malcolm Reynolds Date: Mon, 18 Mar 2013 15:23:35 +0000 Subject: [PATCH 3/4] FIX: move corner detection outside loop in test_num_peaks. --- skimage/feature/tests/test_corner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 9c59f704..372752d7 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -105,11 +105,11 @@ def test_num_peaks(): peak_local_max returns exactly the right amount of peaks. Test is run on Lena in order to produce a sufficient number of corners""" - lena = data.lena() + lena_corners = corner_harris(data.lena()) for i in xrange(20): n = np.random.random_integers(20) - results = peak_local_max(corner_harris(lena), num_peaks=n) + results = peak_local_max(lena_corners, num_peaks=n) assert (results.shape[0] == n) From 042b75d05fb68ec6ba89156936881baea9c68be2 Mon Sep 17 00:00:00 2001 From: Malcolm Reynolds Date: Mon, 18 Mar 2013 15:31:45 +0000 Subject: [PATCH 4/4] FIX: changed xrange to range so Python 3 works. --- skimage/feature/tests/test_corner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/feature/tests/test_corner.py b/skimage/feature/tests/test_corner.py index 372752d7..fa8ddd17 100644 --- a/skimage/feature/tests/test_corner.py +++ b/skimage/feature/tests/test_corner.py @@ -107,7 +107,7 @@ def test_num_peaks(): lena_corners = corner_harris(data.lena()) - for i in xrange(20): + for i in range(20): n = np.random.random_integers(20) results = peak_local_max(lena_corners, num_peaks=n) assert (results.shape[0] == n)