From 1746d2c38c0c059c4d87879a3bcc7d92bc65ed98 Mon Sep 17 00:00:00 2001 From: Andreas Mueller Date: Sat, 4 Aug 2012 18:03:03 +0100 Subject: [PATCH] Some scaling issues to be closer to reference implementation --- skimage/segmentation/quickshift.pyx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/skimage/segmentation/quickshift.pyx b/skimage/segmentation/quickshift.pyx index b0a9b2d6..e37463b3 100644 --- a/skimage/segmentation/quickshift.pyx +++ b/skimage/segmentation/quickshift.pyx @@ -65,7 +65,6 @@ def quickshift(image, ratio=1., kernel_size=5, max_dist=10, return_tree=False, r # we get crazy memory overhead (width * height * windowsize**2) # TODO do smoothing beforehand? - # TODO manage borders somehow? # TODO join orphant roots? # window size for neighboring pixels to consider @@ -92,7 +91,7 @@ def quickshift(image, ratio=1., kernel_size=5, max_dist=10, return_tree=False, r for c in xrange(channels): dist += (current_pixel_p[c] - image_c[x_, y_, c])**2 dist += (x - x_)**2 + (y - y_)**2 - densities[x, y] += exp(-dist / kernel_size) + densities[x, y] += exp(-dist / (2 * kernel_size**2)) current_pixel_p += channels # this will break ties that otherwise would give us headache @@ -117,7 +116,7 @@ def quickshift(image, ratio=1., kernel_size=5, max_dist=10, return_tree=False, r if dist < closest: closest = dist parent[x, y] = x_ * width + y_ - dist_parent[x, y] = closest + dist_parent[x, y] = np.sqrt(closest) current_pixel_p += channels dist_parent_flat = dist_parent.ravel() @@ -130,5 +129,5 @@ def quickshift(image, ratio=1., kernel_size=5, max_dist=10, return_tree=False, r flat = np.unique(flat, return_inverse=True)[1] flat = flat.reshape(width, height) if return_tree: - return flat, parent + return flat, parent, dist_parent return flat