Commit bbbe83f1ad6c788460dfd07df08eab2940b47645

Authored by Thiago Franco de Moraes
1 parent d17cea01

Added the option to use or not the ww&wl

invesalius/data/styles.py
... ... @@ -740,11 +740,17 @@ class WatershedConfig(object):
740 740 __metaclass__= utils.Singleton
741 741 def __init__(self):
742 742 self.operation = BRUSH_FOREGROUND
  743 + self.use_ww_wl = True
  744 +
743 745 Publisher.subscribe(self.set_operation, 'Set watershed operation')
  746 + Publisher.subscribe(self.set_use_ww_wl, 'Set use ww wl')
744 747  
745 748 def set_operation(self, pubsub_evt):
746 749 self.operation = WATERSHED_OPERATIONS[pubsub_evt.data]
747 750  
  751 + def set_use_ww_wl(self, pubsub_evt):
  752 + self.use_ww_wl = pubsub_evt.data
  753 +
748 754  
749 755 class WaterShedInteractorStyle(DefaultInteractorStyle):
750 756 def __init__(self, viewer):
... ... @@ -1004,8 +1010,12 @@ class WaterShedInteractorStyle(DefaultInteractorStyle):
1004 1010 wl = self.viewer.slice_.window_level
1005 1011  
1006 1012 if BRUSH_BACKGROUND in markers and BRUSH_FOREGROUND in markers:
1007   - tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), self.mg_size)
1008   - tmp_mask = watershed(tmp_image, markers)
  1013 + if self.config.use_ww_wl:
  1014 + tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), self.mg_size)
  1015 + tmp_mask = watershed(tmp_image, markers)
  1016 + else:
  1017 + tmp_image = ndimage.morphological_gradient(image, self.mg_size)
  1018 + tmp_mask = watershed(tmp_image, markers)
1009 1019  
1010 1020 if self.viewer.overwrite_mask:
1011 1021 mask[:] = 0
... ... @@ -1111,8 +1121,12 @@ class WaterShedInteractorStyle(DefaultInteractorStyle):
1111 1121 ww = self.viewer.slice_.window_width
1112 1122 wl = self.viewer.slice_.window_level
1113 1123 if BRUSH_BACKGROUND in markers and BRUSH_FOREGROUND in markers:
1114   - tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), self.mg_size)
1115   - tmp_mask = watershed(tmp_image, markers)
  1124 + if self.config.use_ww_wl:
  1125 + tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), self.mg_size)
  1126 + tmp_mask = watershed(tmp_image, markers)
  1127 + else:
  1128 + tmp_image = ndimage.morphological_gradient(image, self.mg_size)
  1129 + tmp_mask = watershed(tmp_image, markers)
1116 1130  
1117 1131 if self.viewer.overwrite_mask:
1118 1132 mask[:] = 0
... ...
invesalius/gui/task_slice.py
... ... @@ -773,7 +773,10 @@ class WatershedTool(EditionTools):
773 773  
774 774 # LINE 5
775 775 check_box = wx.CheckBox(self, -1, _("Overwrite mask"))
  776 + ww_wl_cbox = wx.CheckBox(self, -1, _("Use WW&WL"))
  777 + ww_wl_cbox.SetValue(True)
776 778 self.check_box = check_box
  779 + self.ww_wl_cbox = ww_wl_cbox
777 780  
778 781 # Line 6
779 782 self.btn_exp_watershed = wx.Button(self, -1, _('Expand watershed to 3D'))
... ... @@ -783,6 +786,7 @@ class WatershedTool(EditionTools):
783 786 sizer.Add(text1, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
784 787 sizer.Add(line2, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
785 788 sizer.Add(check_box, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
  789 + sizer.Add(ww_wl_cbox, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
786 790 sizer.Add(self.btn_exp_watershed, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
787 791 sizer.Fit(self)
788 792  
... ... @@ -797,6 +801,7 @@ class WatershedTool(EditionTools):
797 801 self.Bind(wx.EVT_MENU, self.OnMenu)
798 802 self.combo_brush_op.Bind(wx.EVT_COMBOBOX, self.OnComboBrushOp)
799 803 self.check_box.Bind(wx.EVT_CHECKBOX, self.OnCheckOverwriteMask)
  804 + self.ww_wl_cbox.Bind(wx.EVT_CHECKBOX, self.OnCheckWWWL)
800 805 self.btn_exp_watershed.Bind(wx.EVT_BUTTON, self.OnExpandWatershed)
801 806  
802 807 def ChangeMaskColour(self, pubsub_evt):
... ... @@ -851,5 +856,9 @@ class WatershedTool(EditionTools):
851 856 value = self.check_box.GetValue()
852 857 Publisher.sendMessage('Set overwrite mask', value)
853 858  
  859 + def OnCheckWWWL(self, evt):
  860 + value = self.ww_wl_cbox.GetValue()
  861 + Publisher.sendMessage('Set use ww wl', value)
  862 +
854 863 def OnExpandWatershed(self, evt):
855 864 Publisher.sendMessage('Expand watershed to 3D AXIAL')
... ...