Commit 1d51895e396a36b016d97ff828f5a3b4084fc25b

Authored by Thiago Franco de Moraes
1 parent bf272238
Exists in watershed

Watershed 3D (only markers from axial)

invesalius/data/styles.py
... ... @@ -683,6 +683,8 @@ class WaterShedInteractorStyle(DefaultInteractorStyle):
683 683 self.AddObserver("LeftButtonReleaseEvent", self.OnBrushRelease)
684 684 self.AddObserver("MouseMoveEvent", self.OnBrushMove)
685 685  
  686 + Publisher.subscribe(self.expand_watershed, 'Expand watershed to 3D ' + self.orientation)
  687 +
686 688 def SetUp(self):
687 689 self.viewer.slice_.do_threshold_to_all_slices()
688 690 mask = self.viewer.slice_.current_mask.matrix
... ... @@ -1010,6 +1012,26 @@ class WaterShedInteractorStyle(DefaultInteractorStyle):
1010 1012 elif operation == BRUSH_ERASE:
1011 1013 roi_m[index] = 0
1012 1014  
  1015 + def expand_watershed(self, pubsub_evt):
  1016 + markers = self.matrix
  1017 + image = self.viewer.slice_.matrix
  1018 + mask = self.viewer.slice_.current_mask.matrix[1:, 1:, 1:]
  1019 + ww = self.viewer.slice_.window_width
  1020 + wl = self.viewer.slice_.window_level
  1021 + tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), 5)
  1022 + print tmp_image
  1023 + tmp_mask = watershed(tmp_image, markers)
  1024 +
  1025 + mask[:] = 0
  1026 + mask[(tmp_mask==1)] = 253
  1027 + mask[0] = 1
  1028 + mask[:, 0, :] = 1
  1029 + mask[:, :, 0] = 1
  1030 +
  1031 + self.viewer._flush_buffer = True
  1032 + self.viewer.slice_.discard_all_buffers()
  1033 + self.viewer.OnScrollBar(update3D=False)
  1034 +
1013 1035  
1014 1036 def do_colour_mask(imagedata):
1015 1037 scalar_range = int(imagedata.GetScalarRange()[1])
... ...
invesalius/gui/task_slice.py
... ... @@ -228,7 +228,7 @@ class InnerFoldPanel(wx.Panel):
228 228 # parent panel. Perhaps we need to insert the item into the sizer also...
229 229 # Study this.
230 230 fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition,
231   - (10, 220), 0,fpb.FPB_SINGLE_FOLD)
  231 + (10, 240), 0,fpb.FPB_SINGLE_FOLD)
232 232  
233 233 # Fold panel style
234 234 style = fpb.CaptionBarStyle()
... ... @@ -707,7 +707,7 @@ class EditionTools(wx.Panel):
707 707  
708 708 class WatershedTool(EditionTools):
709 709 def __init__(self, parent):
710   - wx.Panel.__init__(self, parent, size=(50,240))
  710 + wx.Panel.__init__(self, parent, size=(50,250))
711 711 default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR)
712 712 self.SetBackgroundColour(default_colour)
713 713  
... ... @@ -770,6 +770,9 @@ class WatershedTool(EditionTools):
770 770 check_box = wx.CheckBox(self, -1, _("Overwrite mask"))
771 771 self.check_box = check_box
772 772  
  773 + # Line 6
  774 + self.btn_exp_watershed = wx.Button(self, -1, _('Expand watershed to 3D'))
  775 +
773 776 # Add lines into main sizer
774 777 sizer = wx.BoxSizer(wx.VERTICAL)
775 778 sizer.Add(text1, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
... ... @@ -778,6 +781,7 @@ class WatershedTool(EditionTools):
778 781 sizer.Add(gradient_thresh, 0, wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT|
779 782 wx.BOTTOM, 6)
780 783 sizer.Add(check_box, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
  784 + sizer.Add(self.btn_exp_watershed, 0, wx.GROW|wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 5)
781 785 sizer.Fit(self)
782 786  
783 787 self.SetSizer(sizer)
... ... @@ -794,6 +798,7 @@ class WatershedTool(EditionTools):
794 798 self.gradient_thresh)
795 799 self.combo_brush_op.Bind(wx.EVT_COMBOBOX, self.OnComboBrushOp)
796 800 self.check_box.Bind(wx.EVT_CHECKBOX, self.OnCheckOverwriteMask)
  801 + self.btn_exp_watershed.Bind(wx.EVT_BUTTON, self.OnExpandWatershed)
797 802  
798 803 def __bind_events(self):
799 804 Publisher.subscribe(self.SetThresholdBounds,
... ... @@ -859,3 +864,6 @@ class WatershedTool(EditionTools):
859 864 def OnCheckOverwriteMask(self, evt):
860 865 value = self.check_box.GetValue()
861 866 Publisher.sendMessage('Set overwrite mask', value)
  867 +
  868 + def OnExpandWatershed(self, evt):
  869 + Publisher.sendMessage('Expand watershed to 3D AXIAL')
... ...