Commit 1d51895e396a36b016d97ff828f5a3b4084fc25b
1 parent
bf272238
Exists in
watershed
Watershed 3D (only markers from axial)
Showing
2 changed files
with
32 additions
and
2 deletions
Show diff stats
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') | ... | ... |