Commit 592ad4b80855569eec864d105c6521aed5704526

Authored by tfmoraes
1 parent bc0c7923

Pseudo colours are working again

Showing 1 changed file with 34 additions and 13 deletions   Show diff stats
invesalius/data/slice_.py
@@ -75,6 +75,11 @@ class Slice(object): @@ -75,6 +75,11 @@ class Slice(object):
75 self.blend_filter = None 75 self.blend_filter = None
76 self.matrix = None 76 self.matrix = None
77 77
  78 + self.number_of_colours = 256
  79 + self.saturation_range = (0, 0)
  80 + self.hue_range = (0, 0)
  81 + self.value_range = (0, 1)
  82 +
78 self.buffer_slices = {"AXIAL": SliceBuffer(), 83 self.buffer_slices = {"AXIAL": SliceBuffer(),
79 "CORONAL": SliceBuffer(), 84 "CORONAL": SliceBuffer(),
80 "SAGITAL": SliceBuffer()} 85 "SAGITAL": SliceBuffer()}
@@ -354,7 +359,8 @@ class Slice(object): @@ -354,7 +359,8 @@ class Slice(object):
354 else: 359 else:
355 n_image = self.get_image_slice(orientation, slice_number) 360 n_image = self.get_image_slice(orientation, slice_number)
356 image = iu.to_vtk(n_image, self.spacing, slice_number, orientation) 361 image = iu.to_vtk(n_image, self.spacing, slice_number, orientation)
357 - image = self.do_ww_wl(image) 362 + ww_wl_image = self.do_ww_wl(image)
  363 + image = self.do_colour_image(ww_wl_image)
358 if self.current_mask and self.current_mask.is_shown: 364 if self.current_mask and self.current_mask.is_shown:
359 if self.buffer_slices[orientation].vtk_mask: 365 if self.buffer_slices[orientation].vtk_mask:
360 print "Getting from buffer" 366 print "Getting from buffer"
@@ -373,7 +379,8 @@ class Slice(object): @@ -373,7 +379,8 @@ class Slice(object):
373 else: 379 else:
374 n_image = self.get_image_slice(orientation, slice_number) 380 n_image = self.get_image_slice(orientation, slice_number)
375 image = iu.to_vtk(n_image, self.spacing, slice_number, orientation) 381 image = iu.to_vtk(n_image, self.spacing, slice_number, orientation)
376 - image = self.do_ww_wl(image) 382 + ww_wl_image = self.do_ww_wl(image)
  383 + image = self.do_colour_image(ww_wl_image)
377 384
378 if self.current_mask and self.current_mask.is_shown: 385 if self.current_mask and self.current_mask.is_shown:
379 n_mask = self.get_mask_slice(orientation, slice_number) 386 n_mask = self.get_mask_slice(orientation, slice_number)
@@ -652,17 +659,13 @@ class Slice(object): @@ -652,17 +659,13 @@ class Slice(object):
652 659
653 def UpdateColourTableBackground(self, pubsub_evt): 660 def UpdateColourTableBackground(self, pubsub_evt):
654 values = pubsub_evt.data 661 values = pubsub_evt.data
655 -  
656 - if (values[0]):  
657 - self.lut_bg.SetNumberOfColors(values[0])  
658 -  
659 - self.lut_bg.SetSaturationRange(values[1])  
660 - self.lut_bg.SetHueRange(values[2])  
661 - self.lut_bg.SetValueRange(values[3])  
662 -  
663 - thresh_min, thresh_max = self.window_level.GetOutput().GetScalarRange()  
664 - self.lut_bg.SetTableRange(thresh_min, thresh_max)  
665 - 662 + self.number_of_colours= values[0]
  663 + self.saturation_range = values[1]
  664 + self.hue_range = values[2]
  665 + self.value_range = values[3]
  666 + for buffer_ in self.buffer_slices.values():
  667 + buffer_.discard_vtk_image()
  668 + ps.Publisher().sendMessage('Reload actual slice')
666 669
667 def InputImageWidget(self, pubsub_evt): 670 def InputImageWidget(self, pubsub_evt):
668 widget, orientation = pubsub_evt.data 671 widget, orientation = pubsub_evt.data
@@ -788,6 +791,24 @@ class Slice(object): @@ -788,6 +791,24 @@ class Slice(object):
788 m[mask == 254] = 254 791 m[mask == 254] = 254
789 return m 792 return m
790 793
  794 + def do_colour_image(self, imagedata):
  795 + # map scalar values into colors
  796 + lut_bg = vtk.vtkLookupTable()
  797 + lut_bg.SetTableRange(imagedata.GetScalarRange())
  798 + lut_bg.SetSaturationRange(self.saturation_range)
  799 + lut_bg.SetHueRange(self.hue_range)
  800 + lut_bg.SetValueRange(self.value_range)
  801 + lut_bg.Build()
  802 +
  803 + # map the input image through a lookup table
  804 + img_colours_bg = vtk.vtkImageMapToColors()
  805 + img_colours_bg.SetOutputFormatToRGB()
  806 + img_colours_bg.SetLookupTable(lut_bg)
  807 + img_colours_bg.SetInput(imagedata)
  808 + img_colours_bg.Update()
  809 +
  810 + return img_colours_bg.GetOutput()
  811 +
791 def do_colour_mask(self, imagedata): 812 def do_colour_mask(self, imagedata):
792 scalar_range = int(imagedata.GetScalarRange()[1]) 813 scalar_range = int(imagedata.GetScalarRange()[1])
793 r, g, b = self.current_mask.colour 814 r, g, b = self.current_mask.colour