Commit 3b7ebb7afb0f726dd9ef240e5396de70b6c40512
1 parent
894282fe
Exists in
measure
Showing the histogram at the clut widget
Showing
3 changed files
with
34 additions
and
8 deletions
Show diff stats
invesalius/data/slice_.py
@@ -81,7 +81,8 @@ class Slice(object): | @@ -81,7 +81,8 @@ class Slice(object): | ||
81 | self.imagedata = None | 81 | self.imagedata = None |
82 | self.current_mask = None | 82 | self.current_mask = None |
83 | self.blend_filter = None | 83 | self.blend_filter = None |
84 | - self.matrix = None | 84 | + self.histogram = None |
85 | + self._matrix = None | ||
85 | self.spacing = (1.0, 1.0, 1.0) | 86 | self.spacing = (1.0, 1.0, 1.0) |
86 | 87 | ||
87 | self.number_of_colours = 256 | 88 | self.number_of_colours = 256 |
@@ -99,6 +100,17 @@ class Slice(object): | @@ -99,6 +100,17 @@ class Slice(object): | ||
99 | self.from_ = OTHER | 100 | self.from_ = OTHER |
100 | self.__bind_events() | 101 | self.__bind_events() |
101 | 102 | ||
103 | + @property | ||
104 | + def matrix(self): | ||
105 | + return self._matrix | ||
106 | + | ||
107 | + @matrix.setter | ||
108 | + def matrix(self, value): | ||
109 | + self._matrix = value | ||
110 | + i, e = value.min(), value.max() | ||
111 | + r = e - i | ||
112 | + self.histogram = numpy.histogram(self._matrix, r, (i, e))[0] | ||
113 | + | ||
102 | def __bind_events(self): | 114 | def __bind_events(self): |
103 | # General slice control | 115 | # General slice control |
104 | Publisher.subscribe(self.CreateSurfaceFromIndex, | 116 | Publisher.subscribe(self.CreateSurfaceFromIndex, |
invesalius/gui/dialogs.py
@@ -1278,21 +1278,26 @@ class SurfaceMethodPanel(wx.Panel): | @@ -1278,21 +1278,26 @@ class SurfaceMethodPanel(wx.Panel): | ||
1278 | 1278 | ||
1279 | 1279 | ||
1280 | class ClutImagedataDialog(wx.Dialog): | 1280 | class ClutImagedataDialog(wx.Dialog): |
1281 | - def __init__(self): | 1281 | + def __init__(self, histogram, init, end, wl, ww): |
1282 | pre = wx.PreDialog() | 1282 | pre = wx.PreDialog() |
1283 | pre.Create(None, -1, style=wx.DEFAULT_DIALOG_STYLE) | 1283 | pre.Create(None, -1, style=wx.DEFAULT_DIALOG_STYLE) |
1284 | self.PostCreate(pre) | 1284 | self.PostCreate(pre) |
1285 | 1285 | ||
1286 | + self.histogram = histogram | ||
1287 | + self.init = init | ||
1288 | + self.end = end | ||
1289 | + self.wl = wl | ||
1290 | + self.ww = ww | ||
1291 | + | ||
1286 | self._init_gui() | 1292 | self._init_gui() |
1287 | self._bind_events_wx() | 1293 | self._bind_events_wx() |
1288 | 1294 | ||
1289 | def _init_gui(self): | 1295 | def _init_gui(self): |
1290 | self.clut_widget = clut_imagedata.CLUTImageDataWidget(self, -1, | 1296 | self.clut_widget = clut_imagedata.CLUTImageDataWidget(self, -1, |
1291 | - np.random.randint(0, | ||
1292 | - 1000, | ||
1293 | - (1000,)), | ||
1294 | - -1000, 1000, | ||
1295 | - 230, 255) | 1297 | + self.histogram, |
1298 | + self.init, | ||
1299 | + self.end, | ||
1300 | + self.wl, self.ww) | ||
1296 | sizer = wx.BoxSizer(wx.VERTICAL) | 1301 | sizer = wx.BoxSizer(wx.VERTICAL) |
1297 | sizer.Add(self.clut_widget, 1, wx.EXPAND) | 1302 | sizer.Add(self.clut_widget, 1, wx.EXPAND) |
1298 | 1303 |
invesalius/gui/widgets/slice_menu.py
@@ -23,7 +23,9 @@ import sys | @@ -23,7 +23,9 @@ import sys | ||
23 | 23 | ||
24 | import wx | 24 | import wx |
25 | from wx.lib.pubsub import pub as Publisher | 25 | from wx.lib.pubsub import pub as Publisher |
26 | + | ||
26 | import constants as const | 27 | import constants as const |
28 | +import data.slice_ as sl | ||
27 | import presets | 29 | import presets |
28 | 30 | ||
29 | from gui.dialogs import ClutImagedataDialog | 31 | from gui.dialogs import ClutImagedataDialog |
@@ -188,7 +190,14 @@ class SliceMenu(wx.Menu): | @@ -188,7 +190,14 @@ class SliceMenu(wx.Menu): | ||
188 | Publisher.sendMessage('Update slice viewer') | 190 | Publisher.sendMessage('Update slice viewer') |
189 | 191 | ||
190 | elif key == _('Custom'): | 192 | elif key == _('Custom'): |
191 | - cdialog = ClutImagedataDialog() | 193 | + slc = sl.Slice() |
194 | + histogram = slc.histogram | ||
195 | + init = slc.matrix.min() | ||
196 | + end = slc.matrix.max() | ||
197 | + wl = slc.window_level | ||
198 | + ww = slc.window_width | ||
199 | + | ||
200 | + cdialog = ClutImagedataDialog(histogram, init, end, wl, ww) | ||
192 | cdialog.Show() | 201 | cdialog.Show() |
193 | 202 | ||
194 | 203 |