Skip to content

Commit

Permalink
ENH: Improve usability of watershed_demo.
Browse files Browse the repository at this point in the history
* Replace 0 label with 'Erase'
* Use OK button instead of enter key to calculate watershed.
  • Loading branch information
tonysyu committed Jan 25, 2013
1 parent f517eaa commit 230fefa
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
1 change: 1 addition & 0 deletions skimage/viewer/plugins/labelplugin.py
Expand Up @@ -21,6 +21,7 @@ def __init__(self, max_radius=20, **kwargs):
self._radius_widget = Slider('radius', low=1, high=max_radius,
value=5, value_type='int', ptype='plugin')
labels = [str(i) for i in range(6)]
labels[0] = 'Erase'
self._label_widget = ComboBox('label', labels, ptype='plugin')
self.add_widget(self._radius_widget)
self.add_widget(self._label_widget)
Expand Down
21 changes: 16 additions & 5 deletions viewer_examples/plugins/watershed_demo.py
Expand Up @@ -4,28 +4,39 @@
from skimage import filter
from skimage import morphology
from skimage.viewer import ImageViewer
from skimage.viewer.widgets import history
from skimage.viewer.plugins.labelplugin import LabelPainter

class OKCancelButtons(history.OKCancelButtons):

def update_original_image(self):
# OKCancelButtons updates the original image with the filtered image
# by default. Override this method to update the overlay.
self.plugin._show_watershed()
self.plugin.close()


class WatershedPlugin(LabelPainter):

def help(self):
helpstr = ("Watershed plugin",
"----------------",
"Use mouse to paint each region with a different label.",
"Press enter to display segmented image.")
"Press OK to display segmented image.")
return '\n'.join(helpstr)

def on_enter(self, overlay):
def _show_watershed(self):
viewer = self.image_viewer
edge_image = filter.sobel(viewer.image)
labels = morphology.watershed(edge_image, overlay)
labels = morphology.watershed(edge_image, self.paint_tool.overlay)
viewer.ax.imshow(labels, cmap=plt.cm.jet, alpha=0.5)
viewer.redraw()
self.close()


image = data.coins()
plugin = WatershedPlugin()
plugin += OKCancelButtons()

viewer = ImageViewer(image)
viewer += WatershedPlugin()
viewer += plugin
viewer.show()

0 comments on commit 230fefa

Please sign in to comment.