def testGetRangeDoubleStarArg(self): cmap = vtk.vtkDiscretizableColorTransferFunction() localRange = [-1, -1] cmap.GetRange(localRange) self.assertEqual(localRange[0], 0.0) self.assertEqual(localRange[1], 0.0)
def __init__(self, source, orientation, opacity=1.0): self.reslice = vtk.vtkImageReslice() self.reslice.SetInputData(source) self.reslice.SetOutputDimensionality(2) self.reslice.SetResliceAxes(orientation) self.reslice.SetInterpolationModeToNearestNeighbor() # Set lookup table color_transfer = vtk.vtkDiscretizableColorTransferFunction() alpha_transfer = vtk.vtkPiecewiseFunction() color_transfer.AddRGBPoint(0, 0., 0., 0.) # Background alpha_transfer.AddPoint(0, 0) # Background for i, organ in enumerate(Settings.labels): color_transfer.AddRGBPoint(Settings.labels[organ]['value'], *Settings.labels[organ]['rgb']) if organ in Settings.organs: alpha_transfer.AddPoint(Settings.labels[organ]['value'], opacity) else: alpha_transfer.AddPoint(Settings.labels[organ]['value'], 0.) color_transfer.SetScalarOpacityFunction(alpha_transfer) color_transfer.EnableOpacityMappingOn() # Map the image through the lookup table self.color = vtk.vtkImageMapToColors() self.color.SetLookupTable(color_transfer) self.color.SetInputConnection(self.reslice.GetOutputPort()) # Display the image self.actor = vtk.vtkImageActor() self.actor.GetMapper().SetInputConnection(self.color.GetOutputPort())
def testGetRangeNoArg(self): cmap = vtk.vtkDiscretizableColorTransferFunction() crange = cmap.GetRange() self.assertEqual(len(crange), 2) self.assertEqual(crange[0], 0.0) self.assertEqual(crange[1], 0.0)
def get_lut(ncol=20, lut_type='mat', maxind=20, vrange=(0, 1)): if lut_type == 'mat': c = [ '#ffdcd2', '#ffa4a4', '#f98568', '#da180e', '#ffffc6', '#def538', '#b0b000', '#878e2b', '#dbfdc6', '#8bf391', '#5ac960', '#658750', '#e0e4fe', '#bb9af1', '#548bcf', '#fdcbfe', '#e75ae3', '#ad5ab4', '#abe3e7', '#67b1ae' ] lut = vtk.vtkLookupTable() lut.SetNumberOfTableValues(ncol * int(np.ceil(maxind / 20.))) for k in range(ncol * int(np.ceil(maxind / 20.))): cv = colors.hex2color(c[k % 20]) lut.SetTableValue(k, cv[0], cv[1], cv[2]) elif lut_type == 'maps': c = [ '#4b0bf4', '#3c8aff', '#3da7fe', '#3fbefc', '#45d7f5', '#53e8e8', '#5fdcc2', '#58e28f', '#51ee4d', '#8ffb40', '#bbfb75', '#d8fe63', '#ffff00', '#f1e723', '#efd850', '#eeba4d', '#f28b40', '#fe4743', '#e90601', '#c15004' ] lut = vtk.vtkDiscretizableColorTransferFunction() lut.DiscretizeOn() lut.SetNumberOfValues(ncol) dv = vrange[1] - vrange[0] for k, cc in enumerate(c): cv = colors.hex2color(cc) lut.AddRGBPoint(k * dv / ncol + vrange[0], cv[0], cv[1], cv[2]) return lut
def testGetRangeTwoDoubleStarArg(self): cmap = vtk.vtkDiscretizableColorTransferFunction() localMin = vtk.mutable(-1) localMax = vtk.mutable(-1) cmap.GetRange(localMin, localMax) self.assertEqual(localMin, 0.0) self.assertEqual(localMax, 0.0)
def __init__(self, source): # Get list with string-representations of the organs to be used organs = Settings.organs source.Update() # Filter cast_filter = vtk.vtkImageCast() cast_filter.SetOutputScalarTypeToUnsignedInt() cast_filter.SetInputConnection(source.GetOutputPort()) cast_filter.Update() # Create mesh using marching cube march = vtk.vtkDiscreteMarchingCubes() march.ComputeNormalsOn() march.ComputeGradientsOn() for i, organ in enumerate(organs): march.SetValue(i, Settings.labels[organ]['value']) march.SetInputData(cast_filter.GetOutput()) march.Update() # Filtrate the masks smooth = vtk.vtkWindowedSincPolyDataFilter() smooth.SetInputConnection(march.GetOutputPort()) smooth.SetNumberOfIterations(15) smooth.BoundarySmoothingOff() smooth.FeatureEdgeSmoothingOff() smooth.SetFeatureAngle(120.0) smooth.SetPassBand(.001) smooth.NonManifoldSmoothingOn() smooth.NormalizeCoordinatesOn() smooth.Update() # Set lookup table self.color_transfer = vtk.vtkDiscretizableColorTransferFunction() self.alpha_transfer = vtk.vtkPiecewiseFunction() self.color_transfer.AddRGBPoint(0, 0., 0., 0.) # Background self.alpha_transfer.AddPoint(0, 0) # Background for i, organ in enumerate(Settings.organs): self.color_transfer.AddRGBPoint(Settings.labels[organ]['value'], *Settings.labels[organ]['rgb']) self.alpha_transfer.AddPoint(Settings.labels[organ]['value'], 1.) self.color_transfer.SetScalarOpacityFunction(self.alpha_transfer) # Surface mapper self.surface_mapper = vtk.vtkPolyDataMapper() self.surface_mapper.SetLookupTable(self.color_transfer) self.surface_mapper.SetInputConnection(smooth.GetOutputPort()) # Create the actor self.actor = vtk.vtkActor() self.actor.GetProperty().SetOpacity(1.) self.actor.SetMapper(self.surface_mapper) self.actor.GetProperty().ShadingOn()
def transferfunction(self, imagedata, color): scalarRange = imagedata.GetScalarRange() opacity = vtkPiecewiseFunction() opacity.AddPoint(scalarRange[0], 0) opacity.AddPoint(scalarRange[1], 1) transfer = vtkDiscretizableColorTransferFunction() transfer.AddRGBPoint(scalarRange[0], 0, 0, 0) transfer.AddRGBPoint(scalarRange[1], color[0], color[1], color[2]) transfer.SetScalarOpacityFunction(opacity) return transfer
def ColorTransferFunction(): opacityTransfer = vtk.vtkPiecewiseFunction() opacityTransfer.AddPoint(0, 0) opacityTransfer.AddPoint(0.6, 0) opacityTransfer.AddPoint(1, 1) lut = vtk.vtkDiscretizableColorTransferFunction() lut.SetColorSpaceToDiverging() lut.AddRGBPoint(0.0, 0.23, 0.299, 0.754) lut.AddRGBPoint(1.0, 0.706, 0.016, 0.150) lut.SetVectorModeToMagnitude() lut.SetRange(0, 1) lut.SetScalarOpacityFunction(opacityTransfer) lut.EnableOpacityMappingOn() return lut
def ColorTransferFunction(): opacityTransfer = vtk.vtkPiecewiseFunction() opacityTransfer.AddPoint(0,0) opacityTransfer.AddPoint(0.6,0) opacityTransfer.AddPoint(1,1) lut = vtk.vtkDiscretizableColorTransferFunction() lut.SetColorSpaceToDiverging(); lut.AddRGBPoint(0.0, 0.23, 0.299, 0.754) lut.AddRGBPoint(1.0, 0.706, 0.016, 0.150); lut.SetVectorModeToMagnitude() lut.SetRange (0, 1) lut.SetScalarOpacityFunction(opacityTransfer) lut.EnableOpacityMappingOn() return lut
def generate_log_ctf(maxval): f = vtk.vtkDiscretizableColorTransferFunction() #f.DiscretizeOn() #f.SetColorSpaceToDiverging() f.SetNumberOfValues(256) f.AddRGBPoint(maxval * 1.e1, 1.0, 1.0, 1.0) f.AddRGBPoint(maxval * 1.e0, 0.9, 0.9, 0.9) f.AddRGBPoint(maxval * 1.e-1, 0.6, 0.6, 0.0) f.AddRGBPoint(maxval * 1.e-2, 0.9, 0.0, 0.0) f.AddRGBPoint(maxval * 1.e-3, 0.6, 0.0, 0.6) f.AddRGBPoint(maxval * 1.e-4, 0.0, 0.0, 0.9) f.AddRGBPoint(maxval * 1.e-5, 0.0, 0.3, 0.3) f.AddRGBPoint(maxval * 1.e-6, 0.1, 0.1, 0.1) f.Build() return f
def set_colorbar(self, title=''): self.cmap = vtk.vtkDiscretizableColorTransferFunction() colors = list(reversed(self.colors)) for kc, c in enumerate(colors): self.cmap.AddRGBPoint( self.vrange[0] * (float(kc) / (len(colors) - 1)) + self.vrange[1] * (1. - float(kc) / (len(colors) - 1)), c[0] / 255., c[1] / 255., c[2] / 255.) self.cmap.SetNumberOfValues(10) self.cmap.SetDiscretize(True) self.cmap.SetVectorModeToComponent() self.cmap.Build() self.mapper.SetLookupTable(self.cmap) self.mapper.InterpolateScalarsBeforeMappingOn() self.scalarBar = vtk.vtkScalarBarActor() self.scalarBar.SetLookupTable(self.cmap) if title == '': self.scalarBar.SetTitle(self.scalar_name) else: self.scalarBar.SetTitle(title) tp = self.scalarBar.GetTitleTextProperty() tp.SetItalic(False) tp.SetBold(False) tp.SetColor(0, 0, 0) tp.SetShadow(0) tp.SetFontSize(8) tp.SetFontFamily(1) self.scalarBar.SetTitleTextProperty(tp) self.scalarBar.SetLabelTextProperty(tp) self.scalarBar.SetWidth(0.15) self.scalarBar.SetHeight(0.8) self.scalarBar.SetNumberOfLabels(11) self.scalarBar.SetAnnotationLeaderPadding(16) self.ren.AddActor2D(self.scalarBar)
#!/usr/bin/env python import sys import vtk from vtk.test import Testing useBelowRangeColor = 0 if sys.argv.count("--useBelowRangeColor") > 0: useBelowRangeColor = 1 useAboveRangeColor = 0 if sys.argv.count("--useAboveRangeColor") > 0: useAboveRangeColor = 1 cmap = vtk.vtkDiscretizableColorTransferFunction() cmap.AddRGBPoint(-.4, 0.8, 0.8, 0.8) cmap.AddRGBPoint(0.4, 1, 0, 0) cmap.SetUseBelowRangeColor(useBelowRangeColor) cmap.SetBelowRangeColor(0.0, 1.0, 0.0) cmap.SetUseAboveRangeColor(useAboveRangeColor) cmap.SetAboveRangeColor(1.0, 1.0, 0.0) sphere = vtk.vtkSphereSource() sphere.SetPhiResolution(32) sphere.SetThetaResolution(32) sphere.Update() pd = sphere.GetOutput().GetPointData() for i in xrange(pd.GetNumberOfArrays()): print pd.GetArray(i).GetName() mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(sphere.GetOutputPort())
#!/usr/bin/env python import sys import vtk from vtk.test import Testing useBelowRangeColor = 0 if sys.argv.count("--useBelowRangeColor") > 0: useBelowRangeColor = 1 useAboveRangeColor = 0 if sys.argv.count("--useAboveRangeColor") > 0: useAboveRangeColor = 1 cmap = vtk.vtkDiscretizableColorTransferFunction() cmap.AddRGBPoint(-.4, 0.8, 0.8, 0.8) cmap.AddRGBPoint(0.4, 1, 0, 0) cmap.SetUseBelowRangeColor(useBelowRangeColor) cmap.SetBelowRangeColor(0.0, 1.0, 0.0) cmap.SetUseAboveRangeColor(useAboveRangeColor) cmap.SetAboveRangeColor(1.0, 1.0, 0.0) sphere = vtk.vtkSphereSource() sphere.SetPhiResolution(32) sphere.SetThetaResolution(32) sphere.Update() pd = sphere.GetOutput().GetPointData() for i in xrange(pd.GetNumberOfArrays()): print pd.GetArray(i).GetName() mapper = vtk.vtkPolyDataMapper()