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,11 +740,17 @@ class WatershedConfig(object):
740 __metaclass__= utils.Singleton 740 __metaclass__= utils.Singleton
741 def __init__(self): 741 def __init__(self):
742 self.operation = BRUSH_FOREGROUND 742 self.operation = BRUSH_FOREGROUND
  743 + self.use_ww_wl = True
  744 +
743 Publisher.subscribe(self.set_operation, 'Set watershed operation') 745 Publisher.subscribe(self.set_operation, 'Set watershed operation')
  746 + Publisher.subscribe(self.set_use_ww_wl, 'Set use ww wl')
744 747
745 def set_operation(self, pubsub_evt): 748 def set_operation(self, pubsub_evt):
746 self.operation = WATERSHED_OPERATIONS[pubsub_evt.data] 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 class WaterShedInteractorStyle(DefaultInteractorStyle): 755 class WaterShedInteractorStyle(DefaultInteractorStyle):
750 def __init__(self, viewer): 756 def __init__(self, viewer):
@@ -1004,8 +1010,12 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): @@ -1004,8 +1010,12 @@ class WaterShedInteractorStyle(DefaultInteractorStyle):
1004 wl = self.viewer.slice_.window_level 1010 wl = self.viewer.slice_.window_level
1005 1011
1006 if BRUSH_BACKGROUND in markers and BRUSH_FOREGROUND in markers: 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 if self.viewer.overwrite_mask: 1020 if self.viewer.overwrite_mask:
1011 mask[:] = 0 1021 mask[:] = 0
@@ -1111,8 +1121,12 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): @@ -1111,8 +1121,12 @@ class WaterShedInteractorStyle(DefaultInteractorStyle):
1111 ww = self.viewer.slice_.window_width 1121 ww = self.viewer.slice_.window_width
1112 wl = self.viewer.slice_.window_level 1122 wl = self.viewer.slice_.window_level
1113 if BRUSH_BACKGROUND in markers and BRUSH_FOREGROUND in markers: 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 if self.viewer.overwrite_mask: 1131 if self.viewer.overwrite_mask:
1118 mask[:] = 0 1132 mask[:] = 0
invesalius/gui/task_slice.py
@@ -773,7 +773,10 @@ class WatershedTool(EditionTools): @@ -773,7 +773,10 @@ class WatershedTool(EditionTools):
773 773
774 # LINE 5 774 # LINE 5
775 check_box = wx.CheckBox(self, -1, _("Overwrite mask")) 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 self.check_box = check_box 778 self.check_box = check_box
  779 + self.ww_wl_cbox = ww_wl_cbox
777 780
778 # Line 6 781 # Line 6
779 self.btn_exp_watershed = wx.Button(self, -1, _('Expand watershed to 3D')) 782 self.btn_exp_watershed = wx.Button(self, -1, _('Expand watershed to 3D'))
@@ -783,6 +786,7 @@ class WatershedTool(EditionTools): @@ -783,6 +786,7 @@ class WatershedTool(EditionTools):
783 sizer.Add(text1, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) 786 sizer.Add(text1, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
784 sizer.Add(line2, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) 787 sizer.Add(line2, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
785 sizer.Add(check_box, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) 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 sizer.Add(self.btn_exp_watershed, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5) 790 sizer.Add(self.btn_exp_watershed, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
787 sizer.Fit(self) 791 sizer.Fit(self)
788 792
@@ -797,6 +801,7 @@ class WatershedTool(EditionTools): @@ -797,6 +801,7 @@ class WatershedTool(EditionTools):
797 self.Bind(wx.EVT_MENU, self.OnMenu) 801 self.Bind(wx.EVT_MENU, self.OnMenu)
798 self.combo_brush_op.Bind(wx.EVT_COMBOBOX, self.OnComboBrushOp) 802 self.combo_brush_op.Bind(wx.EVT_COMBOBOX, self.OnComboBrushOp)
799 self.check_box.Bind(wx.EVT_CHECKBOX, self.OnCheckOverwriteMask) 803 self.check_box.Bind(wx.EVT_CHECKBOX, self.OnCheckOverwriteMask)
  804 + self.ww_wl_cbox.Bind(wx.EVT_CHECKBOX, self.OnCheckWWWL)
800 self.btn_exp_watershed.Bind(wx.EVT_BUTTON, self.OnExpandWatershed) 805 self.btn_exp_watershed.Bind(wx.EVT_BUTTON, self.OnExpandWatershed)
801 806
802 def ChangeMaskColour(self, pubsub_evt): 807 def ChangeMaskColour(self, pubsub_evt):
@@ -851,5 +856,9 @@ class WatershedTool(EditionTools): @@ -851,5 +856,9 @@ class WatershedTool(EditionTools):
851 value = self.check_box.GetValue() 856 value = self.check_box.GetValue()
852 Publisher.sendMessage('Set overwrite mask', value) 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 def OnExpandWatershed(self, evt): 863 def OnExpandWatershed(self, evt):
855 Publisher.sendMessage('Expand watershed to 3D AXIAL') 864 Publisher.sendMessage('Expand watershed to 3D AXIAL')