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 | 81 | self.imagedata = None |
82 | 82 | self.current_mask = None |
83 | 83 | self.blend_filter = None |
84 | - self.matrix = None | |
84 | + self.histogram = None | |
85 | + self._matrix = None | |
85 | 86 | self.spacing = (1.0, 1.0, 1.0) |
86 | 87 | |
87 | 88 | self.number_of_colours = 256 |
... | ... | @@ -99,6 +100,17 @@ class Slice(object): |
99 | 100 | self.from_ = OTHER |
100 | 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 | 114 | def __bind_events(self): |
103 | 115 | # General slice control |
104 | 116 | Publisher.subscribe(self.CreateSurfaceFromIndex, | ... | ... |
invesalius/gui/dialogs.py
... | ... | @@ -1278,21 +1278,26 @@ class SurfaceMethodPanel(wx.Panel): |
1278 | 1278 | |
1279 | 1279 | |
1280 | 1280 | class ClutImagedataDialog(wx.Dialog): |
1281 | - def __init__(self): | |
1281 | + def __init__(self, histogram, init, end, wl, ww): | |
1282 | 1282 | pre = wx.PreDialog() |
1283 | 1283 | pre.Create(None, -1, style=wx.DEFAULT_DIALOG_STYLE) |
1284 | 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 | 1292 | self._init_gui() |
1287 | 1293 | self._bind_events_wx() |
1288 | 1294 | |
1289 | 1295 | def _init_gui(self): |
1290 | 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 | 1301 | sizer = wx.BoxSizer(wx.VERTICAL) |
1297 | 1302 | sizer.Add(self.clut_widget, 1, wx.EXPAND) |
1298 | 1303 | ... | ... |
invesalius/gui/widgets/slice_menu.py
... | ... | @@ -23,7 +23,9 @@ import sys |
23 | 23 | |
24 | 24 | import wx |
25 | 25 | from wx.lib.pubsub import pub as Publisher |
26 | + | |
26 | 27 | import constants as const |
28 | +import data.slice_ as sl | |
27 | 29 | import presets |
28 | 30 | |
29 | 31 | from gui.dialogs import ClutImagedataDialog |
... | ... | @@ -188,7 +190,14 @@ class SliceMenu(wx.Menu): |
188 | 190 | Publisher.sendMessage('Update slice viewer') |
189 | 191 | |
190 | 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 | 201 | cdialog.Show() |
193 | 202 | |
194 | 203 | ... | ... |