diff --git a/invesalius/data/styles.py b/invesalius/data/styles.py index fa9519f..2c8690e 100644 --- a/invesalius/data/styles.py +++ b/invesalius/data/styles.py @@ -740,11 +740,17 @@ class WatershedConfig(object): __metaclass__= utils.Singleton def __init__(self): self.operation = BRUSH_FOREGROUND + self.use_ww_wl = True + Publisher.subscribe(self.set_operation, 'Set watershed operation') + Publisher.subscribe(self.set_use_ww_wl, 'Set use ww wl') def set_operation(self, pubsub_evt): self.operation = WATERSHED_OPERATIONS[pubsub_evt.data] + def set_use_ww_wl(self, pubsub_evt): + self.use_ww_wl = pubsub_evt.data + class WaterShedInteractorStyle(DefaultInteractorStyle): def __init__(self, viewer): @@ -1004,8 +1010,12 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): wl = self.viewer.slice_.window_level if BRUSH_BACKGROUND in markers and BRUSH_FOREGROUND in markers: - tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), self.mg_size) - tmp_mask = watershed(tmp_image, markers) + if self.config.use_ww_wl: + tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), self.mg_size) + tmp_mask = watershed(tmp_image, markers) + else: + tmp_image = ndimage.morphological_gradient(image, self.mg_size) + tmp_mask = watershed(tmp_image, markers) if self.viewer.overwrite_mask: mask[:] = 0 @@ -1111,8 +1121,12 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): ww = self.viewer.slice_.window_width wl = self.viewer.slice_.window_level if BRUSH_BACKGROUND in markers and BRUSH_FOREGROUND in markers: - tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), self.mg_size) - tmp_mask = watershed(tmp_image, markers) + if self.config.use_ww_wl: + tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), self.mg_size) + tmp_mask = watershed(tmp_image, markers) + else: + tmp_image = ndimage.morphological_gradient(image, self.mg_size) + tmp_mask = watershed(tmp_image, markers) if self.viewer.overwrite_mask: mask[:] = 0 diff --git a/invesalius/gui/task_slice.py b/invesalius/gui/task_slice.py index d77570e..101ac68 100644 --- a/invesalius/gui/task_slice.py +++ b/invesalius/gui/task_slice.py @@ -773,7 +773,10 @@ class WatershedTool(EditionTools): # LINE 5 check_box = wx.CheckBox(self, -1, _("Overwrite mask")) + ww_wl_cbox = wx.CheckBox(self, -1, _("Use WW&WL")) + ww_wl_cbox.SetValue(True) self.check_box = check_box + self.ww_wl_cbox = ww_wl_cbox # Line 6 self.btn_exp_watershed = wx.Button(self, -1, _('Expand watershed to 3D')) @@ -783,6 +786,7 @@ class WatershedTool(EditionTools): sizer.Add(text1, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) sizer.Add(line2, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) sizer.Add(check_box, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) + sizer.Add(ww_wl_cbox, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) sizer.Add(self.btn_exp_watershed, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) sizer.Fit(self) @@ -797,6 +801,7 @@ class WatershedTool(EditionTools): self.Bind(wx.EVT_MENU, self.OnMenu) self.combo_brush_op.Bind(wx.EVT_COMBOBOX, self.OnComboBrushOp) self.check_box.Bind(wx.EVT_CHECKBOX, self.OnCheckOverwriteMask) + self.ww_wl_cbox.Bind(wx.EVT_CHECKBOX, self.OnCheckWWWL) self.btn_exp_watershed.Bind(wx.EVT_BUTTON, self.OnExpandWatershed) def ChangeMaskColour(self, pubsub_evt): @@ -851,5 +856,9 @@ class WatershedTool(EditionTools): value = self.check_box.GetValue() Publisher.sendMessage('Set overwrite mask', value) + def OnCheckWWWL(self, evt): + value = self.ww_wl_cbox.GetValue() + Publisher.sendMessage('Set use ww wl', value) + def OnExpandWatershed(self, evt): Publisher.sendMessage('Expand watershed to 3D AXIAL') -- libgit2 0.21.2