Ejemplo n.º 1
0
    def __init__(self, module_manager):
        ModuleBase.__init__(self, module_manager)

        self._view_frame = None
        self._viewer = None
        self._input_image = None
        self._dummy_image_source = vtk.vtkImageMandelbrotSource()

        self._widgets = M2DWidgetList()

        # build frame
        self._view_frame = module_utils.instantiate_module_view_frame(
            self, self._module_manager, Measure2DFrame.Measure2DFrame)

        # now link up all event handlers
        self._bind_events()

        # then build VTK pipeline
        self._create_vtk_pipeline()

        # set us up with dummy input
        self._setup_new_image()

        # show everything
        self.view()
Ejemplo n.º 2
0
    def __init__(self, module_manager):
        ModuleBase.__init__(self, module_manager)

        self._view_frame = None
        self._viewer = None
        self._input_image = None
        self._dummy_image_source = vtk.vtkImageMandelbrotSource()
        
        self._widgets = M2DWidgetList()

        # build frame
        self._view_frame = module_utils.instantiate_module_view_frame(
            self, self._module_manager, Measure2DFrame.Measure2DFrame)

        # now link up all event handlers
        self._bind_events()

        # then build VTK pipeline
        self._create_vtk_pipeline()

        # set us up with dummy input
        self._setup_new_image()

        # show everything
        self.view()
Ejemplo n.º 3
0
 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(
         self, module_manager,
         vtk.vtkImageMandelbrotSource(), 'Processing.',
         (), ('vtkImageData',),
         replaceDoc=True,
         inputFunctions=None, outputFunctions=None)
Ejemplo n.º 4
0
    def testThreshold(self):
        global args
        writefiles = "SaveData" in args

        renderer = vtk.vtkRenderer()
        renwin = vtk.vtkRenderWindow()
        renwin.AddRenderer(renderer)
        iren = vtk.vtkRenderWindowInteractor()
        iren.SetRenderWindow(renwin)
        renwin.Render()

        if "GPURender" in args:
            vtk.vtkPistonMapper.InitCUDAGL(renwin)

        src = vtk.vtkImageMandelbrotSource()
        src.SetWholeExtent(0, 10, 0, 10, 0, 10)

        #scale and bias until piston's threshold understands origin and spacing
        src.Update()
        inputdata = src.GetOutput()
        if "Normalize" in args:
            testdata1 = inputdata.NewInstance()
            testdata1.ShallowCopy(inputdata)
            testdata1.SetSpacing(1, 1, 1)
            testdata1.SetOrigin(0, 0, 0)
            inputdata = testdata1

        d2p = vtk.vtkDataSetToPiston()
        d2p.SetInputData(inputdata)
        #d2p.SetInputConnection(src.GetOutputPort())

        threshF = vtk.vtkPistonThreshold()
        threshF.SetInputConnection(d2p.GetOutputPort())
        threshF.SetMinValue(0)
        threshF.SetMaxValue(80)

        p2d = vtk.vtkPistonToDataSet()
        p2d.SetInputConnection(threshF.GetOutputPort())
        p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA)

        if writefiles:
            writeFile(p2d, "piston_threshold.vtk")

        mapper = vtk.vtkPistonMapper()
        mapper.SetInputConnection(threshF.GetOutputPort())
        mapper.Update()

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        renderer.AddActor(actor)

        renderer.ResetCamera()
        renwin.Render()

        img_file = "TestThreshold.png"
        Testing.compareImage(renwin, Testing.getAbsImagePath(img_file))

        if Testing.isInteractive():
            iren.Start()
Ejemplo n.º 5
0
  def testThreshold(self):
    global args
    writefiles = "SaveData" in args

    renderer = vtk.vtkRenderer()
    renwin = vtk.vtkRenderWindow()
    renwin.AddRenderer(renderer)
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renwin)
    renwin.Render()

    if "GPURender" in args:
        vtk.vtkPistonMapper.InitCUDAGL(renwin)

    src = vtk.vtkImageMandelbrotSource()
    src.SetWholeExtent(0,10,0,10,0,10)

    #scale and bias until piston's threshold understands origin and spacing
    src.Update()
    inputdata = src.GetOutput()
    if "Normalize" in args:
         testdata1 = inputdata.NewInstance()
         testdata1.ShallowCopy(inputdata)
         testdata1.SetSpacing(1,1,1)
         testdata1.SetOrigin(0,0,0)
         inputdata = testdata1

    d2p = vtk.vtkDataSetToPiston()
    d2p.SetInputData(inputdata)
    #d2p.SetInputConnection(src.GetOutputPort())

    threshF = vtk.vtkPistonThreshold()
    threshF.SetInputConnection(d2p.GetOutputPort())
    threshF.SetMinValue(0)
    threshF.SetMaxValue(80)

    p2d = vtk.vtkPistonToDataSet()
    p2d.SetInputConnection(threshF.GetOutputPort())
    p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA)

    if writefiles:
        writeFile(p2d, "piston_threshold.vtk")

    mapper = vtk.vtkPistonMapper()
    mapper.SetInputConnection(threshF.GetOutputPort())
    mapper.Update()

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)

    renderer.AddActor(actor)

    renderer.ResetCamera()
    renwin.Render()

    img_file = "TestThreshold.png"
    Testing.compareImage(renwin, Testing.getAbsImagePath(img_file))

    if Testing.isInteractive():
        iren.Start()
Ejemplo n.º 6
0
def test_vtkio_image(tmpdir):
    source = vtk.vtkImageMandelbrotSource()
    fname = str(tmpdir.join('test.vti'))

    # Write the file
    writer = vtk.vtkXMLImageDataWriter()
    writer.SetFileName(fname)
    writer.SetInputConnection(source.GetOutputPort())
    writer.SetDataModeToBinary()
    writer.Write()

    dataset = read_vtk_xml(fname)
    assert isinstance(dataset, MutableDataSet)
    assert dataset.kind == 'vtkImageData'
Ejemplo n.º 7
0
def dumpImage(filename):
    toImage = vtk.vtkWindowToImageFilter()
    toImage.SetInput(renWin)
    toImage.Modified()
    writer = vtk.vtkPNGWriter()
    writer.SetInput(toImage.GetOutput())
    writer.SetFileName(filename)
    writer.Modified()
    print "writing to ", filename
    writer.Write()

    Fractal0 = vtk.vtkImageMandelbrotSource()
    Fractal0.SetWholeExtent(0, 247, 0, 247, 0, 0)
    Fractal0.SetProjectionAxes(0, 1, 2)
    Fractal0.SetOriginCX(-1.75, -1.25, 0, 0)
    Fractal0.SetSizeCX(2.5, 2.5, 2, 1.5)
    Fractal0.SetMaximumNumberOfIterations(1000)

    cast = vtk.vtkImageCast()
    cast.SetInputConnection(Fractal0.GetOutputPort())
    cast.SetOutputScalarTypeToUnsignedChar()

    table = vtk.vtkLookupTable()
    table.SetTableRange(0, 100)
    table.SetNumberOfColors(100)
    table.Build()
    table.SetTableValue(99, 0, 0, 0, 0)

    colorize = vtk.vtkImageMapToColors()
    colorize.SetOutputFormatToRGB()
    colorize.SetLookupTable(table)
    colorize.SetInputConnection(cast.GetOutputPort())

    mpeg = vtk.vtkMPEG2Writer()
    #mpeg.SetInputConnection(toImage.GetOutputPort())
    #mpeg.SetFileName("TestMovie.mpg")
    #print "writing File TestMovie.mpg "
    #mpeg.Start()

    itr = 1
    for itr in range(1, 10):
        Fractal0.SetMaximumNumberOfIterations(itr)
        table.SetTableRange(0, itr)
        table.SetNumberOfColors(itr)
        table.ForceBuild()
        table.SetTableValue(itr - 1, 0, 0, 0, 0)
        mpeg.Write()
        itr += 1
    err = 0
    exists = 0
Ejemplo n.º 8
0
def main():
    colors = vtk.vtkNamedColors()

    # Create a float image
    source = vtk.vtkImageMandelbrotSource()
    source.Update()

    print(source.GetOutput().GetScalarTypeAsString())

    castFilter = vtk.vtkImageCast()
    castFilter.SetInputConnection(source.GetOutputPort())
    castFilter.SetOutputScalarTypeToUnsignedChar()
    castFilter.Update()

    # Create an actor
    actor = vtk.vtkImageActor()
    actor.GetMapper().SetInputConnection(castFilter.GetOutputPort())

    # Setup renderer
    renderer = vtk.vtkRenderer()
    renderer.AddActor(actor)
    renderer.SetBackground(colors.GetColor3d('DarkSlateGray'))
    renderer.ResetCamera()

    # Setup render window
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.AddRenderer(renderer)
    renderWindow.SetWindowName('Cast')

    # Setup render window interactor
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    style = vtk.vtkInteractorStyleImage()
    renderWindowInteractor.SetInteractorStyle(style)

    # Render and start interaction
    renderWindowInteractor.SetRenderWindow(renderWindow)
    renderWindow.Render()
    renderWindowInteractor.Initialize()
    renderWindowInteractor.Start()
Ejemplo n.º 9
0
    def testSlice(self):
        global plane, filter, args
        writefiles = "SaveData" in args

        renderer = vtk.vtkRenderer()
        renwin = vtk.vtkRenderWindow()
        renwin.AddRenderer(renderer)
        iren = vtk.vtkRenderWindowInteractor()
        iren.SetRenderWindow(renwin)
        renwin.Render()

        if "GPURender" in args:
            vtk.vtkPistonMapper.InitCUDAGL(renwin)

        src = vtk.vtkImageMandelbrotSource()
        src.SetWholeExtent(0, 20, 0, 20, 0, 20)

        #scale and bias until piston understands origin and spacing
        src.Update()
        inputdata = src.GetOutput()
        if "Normalize" in args:
            testdata1 = inputdata.NewInstance()
            testdata1.ShallowCopy(inputdata)
            testdata1.SetSpacing(1, 1, 1)
            testdata1.SetOrigin(0, 0, 0)
            inputdata = testdata1

        bounds = inputdata.GetBounds()
        center = [(bounds[1] - bounds[0]) / 2 + bounds[0],
                  (bounds[3] - bounds[2]) / 2 + bounds[2],
                  (bounds[5] - bounds[4]) / 2 + bounds[4]]

        d2p = vtk.vtkDataSetToPiston()
        d2p.SetInputData(inputdata)
        #d2p.SetInputConnection(src.GetOutputPort())

        plane = vtk.vtkPlane()
        plane.SetOrigin(center)
        plane.SetNormal(0, 0, 1)

        filter = vtk.vtkPistonSlice()
        filter.SetInputConnection(d2p.GetOutputPort())
        filter.SetClippingPlane(plane)
        filter.SetOffset(0.0)

        p2d = vtk.vtkPistonToDataSet()
        p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA)
        p2d.SetInputConnection(filter.GetOutputPort())
        if writefiles:
            writeFile(p2d, "piston_slice.vtk")

        mapper = vtk.vtkPistonMapper()
        mapper.SetInputConnection(filter.GetOutputPort())
        mapper.Update()  #TODO why is this necessary

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        renderer.AddActor(actor)

        widget = vtk.vtkImplicitPlaneWidget()
        widget.PlaceWidget(bounds)
        widget.SetOrigin([plane.GetOrigin()[x] for x in 0, 1, 2])
        widget.SetNormal([plane.GetNormal()[x] for x in 0, 1, 2])
        widget.SetInteractor(iren)
        widget.AddObserver("InteractionEvent", widgetCallBack)
        widget.SetEnabled(1)
        widget.DrawPlaneOff()

        renderer.ResetCamera()
        renwin.Render()

        img_file = "TestSlice.png"
        Testing.compareImage(renwin, Testing.getAbsImagePath(img_file))

        if Testing.isInteractive():
            widget.DrawPlaneOn()
            iren.Start()
Ejemplo n.º 10
0
#!/usr/bin/env python
import vtk
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

RANGE = 150
MAX_ITERATIONS_1 = RANGE
MAX_ITERATIONS_2 = RANGE
XRAD = 200
YRAD = 200

mandelbrot1 = vtk.vtkImageMandelbrotSource()
mandelbrot1.SetMaximumNumberOfIterations(150)
mandelbrot1.SetWholeExtent(0, XRAD - 1, 0, YRAD - 1, 0, 0)
mandelbrot1.SetSampleCX(1.3 / XRAD, 1.3 / XRAD, 1.3 / XRAD, 1.3 / XRAD)
mandelbrot1.SetOriginCX(-0.72, 0.22, 0.0, 0.0)
mandelbrot1.SetProjectionAxes(0, 1, 2)

mapToWL = vtk.vtkImageMapToWindowLevelColors()
mapToWL.SetInputConnection(mandelbrot1.GetOutputPort())
mapToWL.SetWindow(RANGE)
mapToWL.SetLevel(RANGE / 3.0)

# set the window/level to 255.0/127.5 to view full range
viewer = vtk.vtkImageViewer()
viewer.SetInputConnection(mapToWL.GetOutputPort())
viewer.SetColorWindow(255.0)
viewer.SetColorLevel(127.5)
viewer.Render()
Ejemplo n.º 11
0
import vtk
from vtk.test import Testing
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# Create the standard renderer, render window
# and interactor
ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
iren.SetDesiredUpdateRate(3)
# Create a small mesh.  The coarser and more opaque the mesh, the easier it
# is to see rendering errors.
input = vtk.vtkImageMandelbrotSource()
input.SetWholeExtent(0, 2, 0, 2, 0, 2)
input.SetSizeCX(2, 2, 2, 2)
input.SetMaximumNumberOfIterations(10)
# make sure we have only tetrahedra
trifilter = vtk.vtkDataSetTriangleFilter()
trifilter.SetInputConnection(input.GetOutputPort())
# Create transfer mapping scalar value to opacity
opacityTransferFunction = vtk.vtkPiecewiseFunction()
opacityTransferFunction.AddPoint(0, 0.0)
opacityTransferFunction.AddPoint(10, 1.0)
# Create transfer mapping scalar value to color
colorTransferFunction = vtk.vtkColorTransferFunction()
colorTransferFunction.AddRGBPoint(0, 1.0, 0.0, 1.0)
colorTransferFunction.AddRGBPoint(2, 0.0, 0.0, 1.0)
colorTransferFunction.AddRGBPoint(4, 0.0, 1.0, 1.0)
Ejemplo n.º 12
0
#!/usr/bin/env python
import vtk
from vtk.test import Testing
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

RANGE = 150
MAX_ITERATIONS_1 = RANGE
MAX_ITERATIONS_2 = RANGE
XRAD = 200
YRAD = 200
mandelbrot1 = vtk.vtkImageMandelbrotSource()
mandelbrot1.SetMaximumNumberOfIterations(150)
mandelbrot1.SetWholeExtent(0,expr.expr(globals(), locals(),["XRAD","-1"]),0,expr.expr(globals(), locals(),["YRAD","-1"]),0,0)
mandelbrot1.SetSampleCX(expr.expr(globals(), locals(),["1.3","/","XRAD"]),expr.expr(globals(), locals(),["1.3","/","XRAD"]),expr.expr(globals(), locals(),["1.3","/","XRAD"]),expr.expr(globals(), locals(),["1.3","/","XRAD"]))
mandelbrot1.SetOriginCX(-0.72,0.22,0.0,0.0)
mandelbrot1.SetProjectionAxes(0,1,2)
mapToWL = vtk.vtkImageMapToWindowLevelColors()
mapToWL.SetInputConnection(mandelbrot1.GetOutputPort())
mapToWL.SetWindow(RANGE)
mapToWL.SetLevel(expr.expr(globals(), locals(),["RANGE","/","3.0"]))
# set the window/level to 255.0/127.5 to view full range
viewer = vtk.vtkImageViewer()
viewer.SetInputConnection(mapToWL.GetOutputPort())
viewer.SetColorWindow(255.0)
viewer.SetColorLevel(127.5)
viewer.Render()
# --- end of script --
Ejemplo n.º 13
0
  def testSlice(self):
    global plane, filter, args
    writefiles = "SaveData" in args

    renderer = vtk.vtkRenderer()
    renwin = vtk.vtkRenderWindow()
    renwin.AddRenderer(renderer)
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renwin)
    renwin.Render()

    if "GPURender" in args:
        vtk.vtkPistonMapper.InitCUDAGL(renwin)

    src = vtk.vtkImageMandelbrotSource()
    src.SetWholeExtent(0,20,0,20,0,20)

    #scale and bias until piston understands origin and spacing
    src.Update()
    inputdata = src.GetOutput()
    if "Normalize" in args:
         testdata1 = inputdata.NewInstance()
         testdata1.ShallowCopy(inputdata)
         testdata1.SetSpacing(1,1,1)
         testdata1.SetOrigin(0,0,0)
         inputdata = testdata1

    bounds = inputdata.GetBounds()
    center = [(bounds[1]-bounds[0])/2+bounds[0],
              (bounds[3]-bounds[2])/2+bounds[2],
              (bounds[5]-bounds[4])/2+bounds[4]]

    d2p = vtk.vtkDataSetToPiston()
    d2p.SetInputData(inputdata)
    #d2p.SetInputConnection(src.GetOutputPort())

    plane = vtk.vtkPlane()
    plane.SetOrigin(center)
    plane.SetNormal(0,0,1)

    filter = vtk.vtkPistonSlice()
    filter.SetInputConnection(d2p.GetOutputPort())
    filter.SetClippingPlane(plane)
    filter.SetOffset(0.0)

    p2d = vtk.vtkPistonToDataSet()
    p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA)
    p2d.SetInputConnection(filter.GetOutputPort())
    if writefiles:
        writeFile(p2d, "piston_slice.vtk")

    mapper = vtk.vtkPistonMapper()
    mapper.SetInputConnection(filter.GetOutputPort())
    mapper.Update() #TODO why is this necessary

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)

    renderer.AddActor(actor)

    widget = vtk.vtkImplicitPlaneWidget()
    widget.PlaceWidget(bounds)
    widget.SetOrigin([plane.GetOrigin()[x] for x in 0,1,2])
Ejemplo n.º 14
0
import vtk
from vtk.test import Testing
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# Create the standard renderer, render window
# and interactor
ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
iren.SetDesiredUpdateRate(3)
# Create a small mesh.  The coarser and more opaque the mesh, the easier it
# is to see rendering errors.
input = vtk.vtkImageMandelbrotSource()
input.SetWholeExtent(0,2,0,2,0,2)
input.SetSizeCX(2,2,2,2)
input.SetMaximumNumberOfIterations(10)
# make sure we have only tetrahedra
trifilter = vtk.vtkDataSetTriangleFilter()
trifilter.SetInputConnection(input.GetOutputPort())
# Create transfer mapping scalar value to opacity
opacityTransferFunction = vtk.vtkPiecewiseFunction()
opacityTransferFunction.AddPoint(0,0.0)
opacityTransferFunction.AddPoint(10,1.0)
# Create transfer mapping scalar value to color
colorTransferFunction = vtk.vtkColorTransferFunction()
colorTransferFunction.AddRGBPoint(0,1.0,0.0,1.0)
colorTransferFunction.AddRGBPoint(2,0.0,0.0,1.0)
colorTransferFunction.AddRGBPoint(4,0.0,1.0,1.0)
Ejemplo n.º 15
0
  def testConversion(self):
    global args
    writefiles = "SaveData" in args

    src = vtk.vtkImageMandelbrotSource()
    src2 = vtk.vtkSphereSource()
    d2p = vtk.vtkDataSetToPiston()
    p2d = vtk.vtkPistonToDataSet()

    #test sending imagedata to the card and getting it back
    src.SetWholeExtent(0,10,0,10,0,10)
    d2p.SetInputConnection(src.GetOutputPort())
    p2d.SetOutputDataSetType(vtk.VTK_IMAGE_DATA)
    p2d.SetInputConnection(d2p.GetOutputPort())
    p2d.Update()

    printDS("INPUT IMAGE DATA", src.GetOutput())
    printTDO("GPU VERSION", d2p.GetPistonDataObjectOutput(0))
    printDS("OUTPUT IMAGE DATA", p2d.GetDataSetOutput(0))

    if writefiles:
        writeFile(p2d, "piston_imagedata.vtk")
    inDS = src.GetOutput()
    outDS = p2d.GetDataSetOutput(0)
    if inDS.GetBounds() != outDS.GetBounds():
        self.fail("Problem: bounds were not preserved.")
    if inDS.GetNumberOfCells() != outDS.GetNumberOfCells():
        self.fail("Problem: cells were not preserved.")
    if inDS.GetPointData().GetArray(0).GetName() != outDS.GetPointData().GetArray(0).GetName():
        self.fail("Problem: arrays were not preserved.")

    #test sending polydata to the card and getting it back
    #test a pipeline that works on poly data

    #below doesn't work in vtk6, gets null output for p2d
    #since data type AND upstream pipeline changes
    #workaround until that is fixes
    #d2p.SetInputConnection(src2.GetOutputPort())
    #p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA)
    #p2d.Update()
    #printDS("INPUT POLYDATA", src2.GetOutput())
    #printTDO("GPU VERSION", d2p.GetPistonDataObjectOutput(0))
    #printDS("OUTPUT POLYDATA", p2d.GetDataSetOutput(0))
    #if writefiles:
    #    writeFile(p2d, "piston_polydata.vtk")
    #
    #so use this instead
    d2p2 = vtk.vtkDataSetToPiston()
    p2d2 = vtk.vtkPistonToDataSet()
    d2p2.SetInputConnection(src2.GetOutputPort())
    p2d2.SetOutputDataSetType(vtk.VTK_POLY_DATA)
    p2d2.SetInputConnection(d2p2.GetOutputPort())
    p2d2.Update()
    printDS("INPUT POLYDATA", src2.GetOutput())
    printTDO("GPU VERSION", d2p2.GetPistonDataObjectOutput(0))
    printDS("OUTPUT POLYDATA", p2d2.GetDataSetOutput(0))
    if writefiles:
        writeFile(p2d2, "piston_polydata.vtk")

    inDS = src2.GetOutput()
    outDS = p2d2.GetDataSetOutput(0)
    if inDS.GetBounds() != outDS.GetBounds():
        self.fail("Problem: bounds were not preserved.")
    if inDS.GetNumberOfCells() != outDS.GetNumberOfCells():
        self.fail("Problem: cells were not preserved.")
    if inDS.GetPointData().GetArray(0).GetName() != outDS.GetPointData().GetArray(0).GetName():
        self.fail("Problem: arrays were not preserved.")
Ejemplo n.º 16
0
def main():
    colors = vtk.vtkNamedColors()

    colors.SetColor('leftBkg', [0.6, 0.5, 0.4, 1.0])
    colors.SetColor('centreBkg', [0.1, 0.5, 0.4, 1.0])
    colors.SetColor('rightBkg', [0.4, 0.5, 0.6, 1.0])

    # Create image 1
    source1 = vtk.vtkImageMandelbrotSource()
    source1.SetWholeExtent(0, 255, 0, 255, 0, 0)
    source1.Update()

    source1Double = vtk.vtkImageCast()
    source1Double.SetInputConnection(0, source1.GetOutputPort())
    source1Double.SetOutputScalarTypeToDouble()

    # Create image 2
    source2 = vtk.vtkImageSinusoidSource()
    source2.SetWholeExtent(0, 255, 0, 255, 0, 0)
    source2.Update()

    # Do the sum
    sumFilter = vtk.vtkImageWeightedSum()
    sumFilter.SetWeight(0, 0.8)
    sumFilter.SetWeight(1, 0.2)
    sumFilter.AddInputConnection(source1Double.GetOutputPort())
    sumFilter.AddInputConnection(source2.GetOutputPort())
    sumFilter.Update()

    # Display the images
    source1CastFilter = vtk.vtkImageCast()
    source1CastFilter.SetInputConnection(source1.GetOutputPort())
    source1CastFilter.SetOutputScalarTypeToUnsignedChar()
    source1CastFilter.Update()

    source2CastFilter = vtk.vtkImageCast()
    source2CastFilter.SetInputConnection(source2.GetOutputPort())
    source2CastFilter.SetOutputScalarTypeToUnsignedChar()
    source2CastFilter.Update()

    summedCastFilter = vtk.vtkImageCast()
    summedCastFilter.SetInputConnection(sumFilter.GetOutputPort())
    summedCastFilter.SetOutputScalarTypeToUnsignedChar()
    summedCastFilter.Update()

    # Create actors
    source1Actor = vtk.vtkImageActor()
    source1Actor.GetMapper().SetInputConnection(
        source1CastFilter.GetOutputPort())

    source2Actor = vtk.vtkImageActor()
    source2Actor.GetMapper().SetInputConnection(
        source2CastFilter.GetOutputPort())

    summedActor = vtk.vtkImageActor()
    summedActor.GetMapper().SetInputConnection(
        summedCastFilter.GetOutputPort())

    # There will be one render window
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.SetSize(600, 300)

    # And one interactor
    interactor = vtk.vtkRenderWindowInteractor()
    interactor.SetRenderWindow(renderWindow)

    # Define viewport ranges
    # (xmin, ymin, xmax, ymax)
    leftViewport = [0.0, 0.0, 0.33, 1.0]
    centerViewport = [0.33, 0.0, .66, 1.0]
    rightViewport = [0.66, 0.0, 1.0, 1.0]

    # Setup renderers
    leftRenderer = vtk.vtkRenderer()
    renderWindow.AddRenderer(leftRenderer)
    leftRenderer.SetViewport(leftViewport)
    leftRenderer.SetBackground(colors.GetColor3d('leftBkg'))

    centerRenderer = vtk.vtkRenderer()
    renderWindow.AddRenderer(centerRenderer)
    centerRenderer.SetViewport(centerViewport)
    centerRenderer.SetBackground(colors.GetColor3d('centreBkg'))

    rightRenderer = vtk.vtkRenderer()
    renderWindow.AddRenderer(rightRenderer)
    rightRenderer.SetViewport(rightViewport)
    rightRenderer.SetBackground(colors.GetColor3d('rightBkg'))

    leftRenderer.AddActor(source1Actor)
    centerRenderer.AddActor(source2Actor)
    rightRenderer.AddActor(summedActor)

    leftRenderer.ResetCamera()
    centerRenderer.ResetCamera()
    rightRenderer.ResetCamera()

    renderWindow.Render()
    interactor.Start()
Ejemplo n.º 17
0
    def testConversion(self):
        global args
        writefiles = "SaveData" in args

        src = vtk.vtkImageMandelbrotSource()
        src2 = vtk.vtkSphereSource()
        d2p = vtk.vtkDataSetToPiston()
        p2d = vtk.vtkPistonToDataSet()

        #test sending imagedata to the card and getting it back
        src.SetWholeExtent(0, 10, 0, 10, 0, 10)
        d2p.SetInputConnection(src.GetOutputPort())
        p2d.SetOutputDataSetType(vtk.VTK_IMAGE_DATA)
        p2d.SetInputConnection(d2p.GetOutputPort())
        p2d.Update()

        printDS("INPUT IMAGE DATA", src.GetOutput())
        printTDO("GPU VERSION", d2p.GetPistonDataObjectOutput(0))
        printDS("OUTPUT IMAGE DATA", p2d.GetDataSetOutput(0))

        if writefiles:
            writeFile(p2d, "piston_imagedata.vtk")
        inDS = src.GetOutput()
        outDS = p2d.GetDataSetOutput(0)
        if inDS.GetBounds() != outDS.GetBounds():
            self.fail("Problem: bounds were not preserved.")
        if inDS.GetNumberOfCells() != outDS.GetNumberOfCells():
            self.fail("Problem: cells were not preserved.")
        if inDS.GetPointData().GetArray(
                0).GetName() != outDS.GetPointData().GetArray(0).GetName():
            self.fail("Problem: arrays were not preserved.")

        #test sending polydata to the card and getting it back
        #test a pipeline that works on poly data

        #below doesn't work in vtk6, gets null output for p2d
        #since data type AND upstream pipeline changes
        #workaround until that is fixes
        #d2p.SetInputConnection(src2.GetOutputPort())
        #p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA)
        #p2d.Update()
        #printDS("INPUT POLYDATA", src2.GetOutput())
        #printTDO("GPU VERSION", d2p.GetPistonDataObjectOutput(0))
        #printDS("OUTPUT POLYDATA", p2d.GetDataSetOutput(0))
        #if writefiles:
        #    writeFile(p2d, "piston_polydata.vtk")
        #
        #so use this instead
        d2p2 = vtk.vtkDataSetToPiston()
        p2d2 = vtk.vtkPistonToDataSet()
        d2p2.SetInputConnection(src2.GetOutputPort())
        p2d2.SetOutputDataSetType(vtk.VTK_POLY_DATA)
        p2d2.SetInputConnection(d2p2.GetOutputPort())
        p2d2.Update()
        printDS("INPUT POLYDATA", src2.GetOutput())
        printTDO("GPU VERSION", d2p2.GetPistonDataObjectOutput(0))
        printDS("OUTPUT POLYDATA", p2d2.GetDataSetOutput(0))
        if writefiles:
            writeFile(p2d2, "piston_polydata.vtk")

        inDS = src2.GetOutput()
        outDS = p2d2.GetDataSetOutput(0)
        if inDS.GetBounds() != outDS.GetBounds():
            self.fail("Problem: bounds were not preserved.")
        if inDS.GetNumberOfCells() != outDS.GetNumberOfCells():
            self.fail("Problem: cells were not preserved.")
        if inDS.GetPointData().GetArray(
                0).GetName() != outDS.GetPointData().GetArray(0).GetName():
            self.fail("Problem: arrays were not preserved.")