Commit 5723fa2be54ca74d5824b53743f452e9a673a49f
1 parent
1b21bd9e
Exists in
watershed
Marking the mask as edited when using watershed tool
Showing
3 changed files
with
18 additions
and
8 deletions
Show diff stats
invesalius/data/slice_.py
| ... | ... | @@ -525,9 +525,7 @@ class Slice(object): |
| 525 | 525 | self.buffer_slices[orientation].vtk_image = image |
| 526 | 526 | self.buffer_slices[orientation].vtk_mask = mask |
| 527 | 527 | |
| 528 | - print self.qblend | |
| 529 | 528 | if self.qblend[orientation].get(slice_number, None) is not None: |
| 530 | - print "BLENDING" | |
| 531 | 529 | final_image = self.do_blend(final_image, |
| 532 | 530 | self.qblend[orientation][slice_number]) |
| 533 | 531 | return final_image | ... | ... |
invesalius/data/styles.py
| ... | ... | @@ -30,7 +30,9 @@ import converters |
| 30 | 30 | import numpy as np |
| 31 | 31 | |
| 32 | 32 | from scipy import ndimage |
| 33 | +from scipy.misc import imsave | |
| 33 | 34 | from skimage.morphology import watershed |
| 35 | +from skimage import filter | |
| 34 | 36 | |
| 35 | 37 | ORIENTATIONS = { |
| 36 | 38 | "AXIAL": const.AXIAL, |
| ... | ... | @@ -815,6 +817,7 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): |
| 815 | 817 | cvmask = do_colour_mask(vmask) |
| 816 | 818 | self.viewer.slice_.qblend[self.orientation][n] = cvmask |
| 817 | 819 | # TODO: To create a new function to reload images to viewer. |
| 820 | + viewer._flush_buffer = True | |
| 818 | 821 | viewer.OnScrollBar() |
| 819 | 822 | |
| 820 | 823 | def OnBrushMove(self, obj, evt): |
| ... | ... | @@ -898,16 +901,19 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): |
| 898 | 901 | if self.orientation == 'AXIAL': |
| 899 | 902 | image = self.viewer.slice_.matrix[n] |
| 900 | 903 | mask = self.viewer.slice_.current_mask.matrix[n+1, 1:, 1:] |
| 904 | + self.viewer.slice_.current_mask.matrix[n+1, 0, 0] = 1 | |
| 901 | 905 | markers = self.matrix[n] |
| 902 | 906 | |
| 903 | 907 | elif self.orientation == 'CORONAL': |
| 904 | 908 | image = self.viewer.slice_.matrix[:, n, :] |
| 905 | 909 | mask = self.viewer.slice_.current_mask.matrix[1:, n+1, 1:] |
| 910 | + self.viewer.slice_.current_mask.matrix[0, n+1, 0] | |
| 906 | 911 | markers = self.matrix[:, n, :] |
| 907 | 912 | |
| 908 | 913 | elif self.orientation == 'SAGITAL': |
| 909 | 914 | image = self.viewer.slice_.matrix[:, :, n] |
| 910 | 915 | mask = self.viewer.slice_.current_mask.matrix[1: , 1:, n+1] |
| 916 | + self.viewer.slice_.current_mask.matrix[0 , 0, n+1] | |
| 911 | 917 | markers = self.matrix[:, :, n] |
| 912 | 918 | |
| 913 | 919 | |
| ... | ... | @@ -915,7 +921,8 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): |
| 915 | 921 | wl = self.viewer.slice_.window_level |
| 916 | 922 | |
| 917 | 923 | #tmp_image = get_LUT_value(image, ww, wl).astype('uint16') |
| 918 | - tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), 5) | |
| 924 | + tmp_image = ndimage.morphological_gradient(get_LUT_value(image, ww, wl).astype('uint16'), 3) | |
| 925 | + imsave('/tmp/manolo.png', tmp_image) | |
| 919 | 926 | print tmp_image.dtype, tmp_image.min(), tmp_image.max() |
| 920 | 927 | tmp_mask = watershed(tmp_image, markers) |
| 921 | 928 | |
| ... | ... | @@ -926,7 +933,9 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): |
| 926 | 933 | mask[(tmp_mask==2) & ((mask == 0) | (mask == 2) | (mask == 253))] = 2 |
| 927 | 934 | mask[(tmp_mask==1) & ((mask == 0) | (mask == 2) | (mask == 253))] = 253 |
| 928 | 935 | |
| 929 | - self.viewer._flush_buffer = True | |
| 936 | + | |
| 937 | + self.viewer.slice_.current_mask.was_edited = True | |
| 938 | + self.viewer._flush_buffer = False | |
| 930 | 939 | self.viewer.OnScrollBar(update3D=False) |
| 931 | 940 | |
| 932 | 941 | def get_coordinate_cursor(self): |
| ... | ... | @@ -1027,10 +1036,11 @@ class WaterShedInteractorStyle(DefaultInteractorStyle): |
| 1027 | 1036 | tmp_mask = watershed(tmp_image, markers) |
| 1028 | 1037 | |
| 1029 | 1038 | mask[:] = 0 |
| 1030 | - mask[(tmp_mask==1)] = 253 | |
| 1031 | - mask[0] = 1 | |
| 1032 | - mask[:, 0, :] = 1 | |
| 1033 | - mask[:, :, 0] = 1 | |
| 1039 | + mask[(tmp_mask == 1)] = 253 | |
| 1040 | + #mask[:] = tmp_mask | |
| 1041 | + self.viewer.slice_.current_mask.matrix[0] = 1 | |
| 1042 | + self.viewer.slice_.current_mask.matrix[:, 0, :] = 1 | |
| 1043 | + self.viewer.slice_.current_mask.matrix[:, :, 0] = 1 | |
| 1034 | 1044 | |
| 1035 | 1045 | self.viewer._flush_buffer = True |
| 1036 | 1046 | self.viewer.slice_.discard_all_buffers() | ... | ... |
invesalius/data/viewer_slice.py