From 888d176034369ad47b7333366a6a559228bdef8c Mon Sep 17 00:00:00 2001 From: Andreas Mueller Date: Sun, 17 Jun 2012 20:56:50 +0200 Subject: [PATCH] ENH much faster. --- skimage/segmentation/felzenszwalb.pyx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/skimage/segmentation/felzenszwalb.pyx b/skimage/segmentation/felzenszwalb.pyx index 11f3e93b..8a927fa0 100644 --- a/skimage/segmentation/felzenszwalb.pyx +++ b/skimage/segmentation/felzenszwalb.pyx @@ -78,10 +78,11 @@ def felzenszwalb_segmentation(image, k, sigma=0.8): # and inner cost, then start greedy iteration over edges. edge_queue = np.argsort(costs) cdef np.int_t *segments_p = segments.data - cdef np.int_t seg_new cdef np.ndarray[np.int_t, ndim=1] segment_size = np.ones(width * height, dtype=np.int) # inner cost of segments - cint = defaultdict(lambda: 0) + cdef np.ndarray[np.float_t, ndim=1] cint = np.zeros(width * height) + cdef int seg0, seg1, seg_new + cdef float cost, inner_cost0, inner_cost1 for edge, cost in zip(edges[edge_queue], costs[edge_queue]): seg0 = find_root(segments_p, edge[0]) seg1 = find_root(segments_p, edge[1]) @@ -100,3 +101,4 @@ def felzenszwalb_segmentation(image, k, sigma=0.8): while (old != flat).any(): old = flat flat = flat[flat] + return flat.reshape((width, height))