Example #1
0
def main():
    img_name = ""
    readerFactory = vtk.vtkImageReader2Factory()
    imgReader  = readerFactory.CreateImageReader2(img_name)
    imgReader.SetFileName(img_name)

    imgReader.Update()

    image = imgReader.GetOutput()

    center = [0,0]
    center[0] = (image.GetExtent()[1] + image.GetExtent()[0])/2
    center[1] = (image.GetExtent()[3] + image.GetExtent()[2])/2

    radius = image.GetExtent()[3]*2/5if image.GetExtent()[1]>image.GetExtent()[3]else image.GetExtent()[1]*2/5

    drawing = vtk.vtkImageCanvasSource2D()

    # draw circle
    drawing.SetNumberOfScalarComponents(3)
    drawing.SetScalarTypeToUnsignedChar()
    drawing.SetExtent(image.GetExent())
    drawing.SetDrawColor(0,0,0)
    drawing.FillBox(image.GetExent()[0],image.GetExent()[1],
                    image.GetExent()[2],image.GetExtent()[3])

    drawing.SetDrawColor(255,255,255)

    drawing.DrawCircle(center[0],center[1],radius)
Example #2
0
  def createScanlines(self, scanlineVolume):
    imgDim = self.inputVolume.GetImageData().GetDimensions()
    drawFilter = vtk.vtkImageCanvasSource2D()
    drawFilter.SetExtent(0,imgDim[0]-1,0,imgDim[1]-1,0,0)
    drawFilter.SetScalarTypeToUnsignedChar()
    drawFilter.SetDrawColor(0) # Color for background
    drawFilter.FillBox(0,imgDim[0]-1,0,imgDim[1]-1) # Initialize background
    drawFilter.SetDrawColor(1) # Color for scanlines
    # Draw each scanline
    for i in range(self.numberOfScanlines):
      drawFilter.FillTube(int(self.scanlines[i].startPoint[0]),int(self.scanlines[i].startPoint[1]),int(self.scanlines[i].endPoint[0]),int(self.scanlines[i].endPoint[1]),0.5)
    drawFilter.Update()

    # Copy scanline slice to match the Z-dimension of input US volume
    numOfSlices = imgDim[2]
    imageAppendFilter = vtk.vtkImageAppend()
    imageAppendFilter.SetAppendAxis(2)
    for _ in range(numOfSlices):
      imageAppendFilter.AddInputData(drawFilter.GetOutput())
    imageAppendFilter.Update()

    # Set scanline imagedata
    scanlineVolume.SetIJKToRASMatrix(self.ijkToRas)
    scanlineVolume.SetRASToIJKMatrix(self.rasToIjk)
    scanlineVolume.SetAndObserveImageData(imageAppendFilter.GetOutput())
Example #3
0
 def render(self):
     """
     Returns vtkImageData for pattern
     """
     patternSource = vtk.vtkImageCanvasSource2D()
     patternSource.SetScalarTypeToUnsignedChar()
     patternSource.SetExtent(0, self.width, 0, self.height, 0, 0)
     patternSource.SetNumberOfScalarComponents(4)
     patternSource.SetDrawColor(255, 255, 255, 0)
     patternSource.FillBox(0, self.width, 0, self.height)
     patternSource.SetDrawColor(self.colors[0], self.colors[1],
                                self.colors[2], self.opacity)
     self.paint(patternSource)
     patternSource.Update()
     return patternSource.GetOutput()
Example #4
0
 def render(self):
     """
     Returns vtkImageData for pattern
     """
     patternSource = vtk.vtkImageCanvasSource2D()
     patternSource.SetScalarTypeToUnsignedChar()
     patternSource.SetExtent(0, self.width, 0, self.height, 0, 0)
     patternSource.SetNumberOfScalarComponents(4)
     patternSource.SetDrawColor(255, 255, 255, 0)
     patternSource.FillBox(0, self.width, 0, self.height)
     patternSource.SetDrawColor(self.colors[0],
                                self.colors[1],
                                self.colors[2],
                                self.opacity)
     self.paint(patternSource)
     patternSource.Update()
     return patternSource.GetOutput()
def main():
    drawing = vtk.vtkImageCanvasSource2D()

    drawing.SetNumberOfScalarComponents(3)
    drawing.SetScalarTypeToUnsignedChar()
    drawing.SetExtent(0, 20, 0, 50, 0, 1)
    drawing.SetDrawColor(255.0, 255.0, 255.0)
    drawing.DrawCircle(5, 5, 3)

    number_of_pieces = 4

    writer = vtk.vtkXMLPImageDataWriter()
    writer.SetInputConnection(drawing.GetOutputPort())
    writer.SetFileName("Test.pvti")
    writer.SetNumberOfPieces(number_of_pieces)
    writer.SetEndPiece(number_of_pieces - 1)
    writer.SetStartPiece(0)
    writer.Update()
Example #6
0
    def __init__(self, parent=None):
        self.nameSize = 24

        self.CrosshairNode = None
        self.CrosshairNodeObserverTag = None

        self.frame = qt.QFrame(parent)
        self.frame.setLayout(qt.QVBoxLayout())
        # Set horizontal policy to Ignored to prevent a long segment or volume name making the widget wider.
        # If the module panel made larger then the image viewers would move and the mouse pointer position
        # would change in the image, potentially pointing outside the node with the long name, resulting in the
        # module panel collapsing to the original size, causing an infinite oscillation.
        qSize = qt.QSizePolicy()
        qSize.setHorizontalPolicy(qt.QSizePolicy.Ignored)
        qSize.setVerticalPolicy(qt.QSizePolicy.Preferred)
        self.frame.setSizePolicy(qSize)

        modulePath = slicer.modules.dataprobe.path.replace("DataProbe.py", "")
        self.iconsDIR = modulePath + '/Resources/Icons'

        self.showImage = False

        # Used in _createMagnifiedPixmap()
        self.imageCrop = vtk.vtkExtractVOI()
        self.canvas = vtk.vtkImageCanvasSource2D()
        self.painter = qt.QPainter()
        self.pen = qt.QPen()

        self._createSmall()

        # Helper class to calculate and display tensor scalars
        self.calculateTensorScalars = CalculateTensorScalars()

        # Observe the crosshair node to get the current cursor position
        self.CrosshairNode = slicer.mrmlScene.GetFirstNodeByClass(
            'vtkMRMLCrosshairNode')
        if self.CrosshairNode:
            self.CrosshairNodeObserverTag = self.CrosshairNode.AddObserver(
                slicer.vtkMRMLCrosshairNode.CursorPositionModifiedEvent,
                self.processEvent)
Example #7
0
def main():
    colors = vtk.vtkNamedColors()

    # Create an image
    source1 = vtk.vtkImageCanvasSource2D()
    source1.SetScalarTypeToUnsignedChar()
    source1.SetNumberOfScalarComponents(3)
    source1.SetExtent(0, 100, 0, 100, 0, 0)
    source1.SetDrawColor(colors.GetColor4ub('SteelBlue'))
    source1.FillBox(0, 100, 0, 100)
    source1.SetDrawColor(colors.GetColor4ub('PaleGoldenrod'))
    source1.FillBox(10, 20, 10, 20)
    source1.FillBox(40, 50, 20, 30)
    source1.Update()

    # Convert the image to a polydata
    imageDataGeometryFilter = vtk.vtkImageDataGeometryFilter()
    imageDataGeometryFilter.SetInputConnection(source1.GetOutputPort())
    imageDataGeometryFilter.Update()

    # Create a mapper and actor
    mapper = vtk.vtkPolyDataMapper()
    mapper.SetInputConnection(imageDataGeometryFilter.GetOutputPort())

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

    # Visualization
    renderer = vtk.vtkRenderer()
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.AddRenderer(renderer)
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)

    renderer.AddActor(actor)
    renderer.SetBackground(colors.GetColor3d('RosyBrown'))
    renderWindow.SetWindowName('ImageDataGeometryFilter')
    renderWindow.Render()
    renderWindowInteractor.Start()
Example #8
0
def main():
    # Create a black image with a red circle of radius 50 centered at (60, 60)
    drawing = vtk.vtkImageCanvasSource2D()
    drawing.SetScalarTypeToUnsignedChar(
    )  # PNGWriter requires unsigned char (or unsigned short)
    drawing.SetNumberOfScalarComponents(3)
    drawing.SetExtent(0, 150, 0, 120, 0,
                      0)  # xmin, xmax, ymin, ymax, zmin, zmax
    drawing.SetDrawColor(255, 0, 0)  # red
    drawing.DrawCircle(60, 60, 50)  # parameters: x, y, radius

    # Create an image of text
    freeType = vtk.vtkFreeTypeTools.GetInstance()
    textProperty = vtk.vtkTextProperty()
    textProperty.SetColor(1.0, 1.0, 0.0)  # yellow
    textProperty.SetFontSize(24)
    # alignment property

    textImage = vtk.vtkImageData()
    dpi = 50
    # add argument int[2]
    a = [1, 2]
    freeType.RenderString(textProperty, "Test String", dpi, textImage, a)
    print(a)
    print(textImage.GetExtent())
    # Combine the images
    blend = vtk.vtkImageBlend()
    blend.AddInputConnection(drawing.GetOutputPort())
    #blend.AddInputData(textImage)
    blend.AddInputData(drawing.GetOutput())
    blend.SetOpacity(0, 0.5)  # background image: 50% opaque
    blend.SetOpacity(1, 1.0)  # text: 100% opaque
    blend.Update()
    writer = vtk.vtkPNGWriter()
    writer.SetFileName("output.png")
    writer.SetInputConnection(blend.GetOutputPort())
    writer.Write()
Example #9
0
def main(argv):
    #  Verify input arguments
    if len(argv) > 1:
        # Read the image
        jpeg_reader = vtkJPEGReader()
        if not jpeg_reader.CanReadFile(argv[1]):
            print("Error reading file %s" % argv[1])
            return

        jpeg_reader.SetFileName(argv[1])
        jpeg_reader.Update()
        image_data = jpeg_reader.GetOutput()
    else:
        canvas_source = vtkImageCanvasSource2D()
        canvas_source.SetExtent(0, 100, 0, 100, 0, 0)
        canvas_source.SetScalarTypeToUnsignedChar()
        canvas_source.SetNumberOfScalarComponents(3)
        canvas_source.SetDrawColor(127, 127, 100)
        canvas_source.FillBox(0, 100, 0, 100)
        canvas_source.SetDrawColor(100, 255, 255)
        canvas_source.FillTriangle(10, 10, 25, 10, 25, 25)
        canvas_source.SetDrawColor(255, 100, 255)
        canvas_source.FillTube(75, 75, 0, 75, 5.0)
        canvas_source.Update()
        image_data = canvas_source.GetOutput()

    # Create an image actor to display the image
    image_actor = vtkImageActor()

    if VTK_MAJOR_VERSION <= 5:
        image_actor.SetInput(image_data)
    else:
        image_actor.SetInputData(image_data)

    # Create a superquadric
    superquadric_source = vtkSuperquadricSource()
    superquadric_source.SetPhiRoundness(1.1)
    superquadric_source.SetThetaRoundness(.2)

    # Create a mapper and actor
    superquadric_mapper = vtkPolyDataMapper()
    superquadric_mapper.SetInputConnection(superquadric_source.GetOutputPort())

    superquadric_actor = vtkActor()
    superquadric_actor.SetMapper(superquadric_mapper)

    vtk_renderer = vtkRenderer()
    vtk_renderer.SetLayer(1)

    # Set up the render window and renderers such that there is
    # a background layer and a foreground layer
    background_renderer = vtkRenderer()
    background_renderer.SetLayer(0)
    background_renderer.InteractiveOff()
    background_renderer.AddActor(image_actor)

    render_window = vtkRenderWindow()
    render_window.SetNumberOfLayers(2)
    render_window.AddRenderer(background_renderer)
    render_window.AddRenderer(vtk_renderer)

    render_window_interactor = vtkRenderWindowInteractor()
    render_window_interactor.SetRenderWindow(render_window)

    # Add actors to the renderers
    vtk_renderer.AddActor(superquadric_actor)

    # Render once to figure out where the background camera will be
    render_window.Render()

    # Set up the background camera to fill the renderer with the image
    origin = image_data.GetOrigin()
    spacing = image_data.GetSpacing()
    extent = image_data.GetExtent()

    camera = background_renderer.GetActiveCamera()
    camera.ParallelProjectionOn()

    xc = origin[0] + 0.5 * (extent[0] + extent[1]) * spacing[0]
    yc = origin[1] + 0.5 * (extent[2] + extent[3]) * spacing[1]
    # xd = (extent[1] - extent[0] + 1) * spacing[0]
    yd = (extent[3] - extent[2] + 1) * spacing[1]
    d = camera.GetDistance()
    camera.SetParallelScale(0.5 * yd)
    camera.SetFocalPoint(xc, yc, 0.0)
    camera.SetPosition(xc, yc, d)

    # Render again to set the correct view
    render_window.Render()

    # Interact with the window
    render_window_interactor.Start()
 class MyStyle(vtk.vtkInteractorStyleImage):
    def __init__(self):
        pass
    def OnMouseWheelForward(self):
        pass

 the above method will not re-load the mouse wheel function
 the real functional method are applied by adding event observer

'''


import vtk


drawing = vtk.vtkImageCanvasSource2D()
drawing.SetScalarTypeToUnsignedChar()
drawing.SetNumberOfScalarComponents(3)
drawing.SetExtent(0,20,0,50,0,0)
drawing.FillBox(0,20,0,50)


drawing.SetDrawColor(255,0,0,0)
drawing.DrawCircle(9,10,5)
drawing.Update()

actor = vtk.vtkImageActor()
actor.GetMapper().SetInputData(drawing.GetOutput())
actor.InterpolateOff()

renderer = vtk.vtkRenderer()
Example #11
0
    def testWipe(self):

        # Image pipeline

        renWin = vtk.vtkRenderWindow()

        image1 = vtk.vtkImageCanvasSource2D()
        image1.SetNumberOfScalarComponents(3)
        image1.SetScalarTypeToUnsignedChar()
        image1.SetExtent(0, 79, 0, 79, 0, 0)
        image1.SetDrawColor(255, 255, 0)
        image1.FillBox(0, 79, 0, 79)
        image1.Update()

        image2 = vtk.vtkImageCanvasSource2D()
        image2.SetNumberOfScalarComponents(3)
        image2.SetScalarTypeToUnsignedChar()
        image2.SetExtent(0, 79, 0, 79, 0, 0)
        image2.SetDrawColor(0, 255, 255)
        image2.FillBox(0, 79, 0, 79)
        image2.Update()

        mapper = vtk.vtkImageMapper()
        mapper.SetInputConnection(image1.GetOutputPort())
        mapper.SetColorWindow(255)
        mapper.SetColorLevel(127.5)
        actor = vtk.vtkActor2D()
        actor.SetMapper(mapper)
        imager = vtk.vtkRenderer()
        imager.AddActor2D(actor)

        renWin.AddRenderer(imager)

        wipes = ["Quad", "Horizontal", "Vertical", "LowerLeft", "LowerRight", "UpperLeft", "UpperRight"]

        wiper = dict()
        mapper = dict()
        actor = dict()
        imagers = dict()

        for wipe in wipes:
            wiper.update({wipe:vtk.vtkImageRectilinearWipe()})
            wiper[wipe].SetInput1Data(image1.GetOutput())
            wiper[wipe].SetInput2Data(image2.GetOutput())
            wiper[wipe].SetPosition(20, 20)
            eval('wiper[wipe].SetWipeTo' + wipe + '()')

            mapper.update({wipe:vtk.vtkImageMapper()})
            mapper[wipe].SetInputConnection(wiper[wipe].GetOutputPort())
            mapper[wipe].SetColorWindow(255)
            mapper[wipe].SetColorLevel(127.5)

            actor.update({wipe:vtk.vtkActor2D()})
            actor[wipe].SetMapper(mapper[wipe])

            imagers.update({wipe:vtk.vtkRenderer()})
            imagers[wipe].AddActor2D(actor[wipe])

            renWin.AddRenderer(imagers[wipe])

        imagers["Quad"].SetViewport(0, .5, .25, 1)
        imagers["Horizontal"].SetViewport(.25, .5, .5, 1)
        imagers["Vertical"].SetViewport(.5, .5, .75, 1)
        imagers["LowerLeft"].SetViewport(.75, .5, 1, 1)
        imagers["LowerRight"].SetViewport(0, 0, .25, .5)
        imagers["UpperLeft"].SetViewport(.25, 0, .5, .5)
        imagers["UpperRight"].SetViewport(.5, 0, .75, .5)
        imager.SetViewport(.75, 0, 1, .5)

        renWin.SetSize(400, 200)

        # render and interact with data

        iRen = vtk.vtkRenderWindowInteractor()
        iRen.SetRenderWindow(renWin);
        renWin.Render()

        img_file = "TestWipe.png"
        vtk.test.Testing.compareImage(iRen.GetRenderWindow(), vtk.test.Testing.getAbsImagePath(img_file), threshold=25)
        vtk.test.Testing.interact()
Example #12
0
def main(argv):
    colors = vtk.vtkNamedColors()

    # Verify input arguments
    if (len(argv) != 2):
        print("Usage: " + argv[0] + " InputImageFilename e.g. Gourds2.jpg")
        return

    # Read the image
    readerFactory = vtk.vtkImageReader2Factory()
    imgReader = readerFactory.CreateImageReader2(argv[1])
    imgReader.SetFileName(argv[1])
    imgReader.Update()

    image = imgReader.GetOutput()

    # Find center of image
    center = [0, 0]
    center[0] = (image.GetExtent()[1] + image.GetExtent()[0]) // 2
    center[1] = (image.GetExtent()[3] + image.GetExtent()[2]) // 2

    # Pick a radius for the circle
    radius = {
        True: image.GetExtent()[1] * 2 / 5,
        False: image.GetExtent()[3] * 2 / 5
    }[(image.GetExtent()[1] < image.GetExtent()[3])]

    drawColor1 = [0, 0, 0, 0]
    color1 = colors.GetColor3ub("Black")
    drawColor2 = [0, 0, 0, 0]
    color2 = colors.GetColor3ub("Seashell")
    for i in range(3):
        drawColor1[i] = color1[i]
        drawColor2[i] = color2[i]

    # Draw a circle in the center of the image
    drawing = vtk.vtkImageCanvasSource2D()
    drawing.SetNumberOfScalarComponents(3)
    drawing.SetScalarTypeToUnsignedChar()
    drawing.SetExtent(image.GetExtent())
    drawing.SetDrawColor(drawColor1)
    drawing.FillBox(image.GetExtent()[0],
                    image.GetExtent()[1],
                    image.GetExtent()[2],
                    image.GetExtent()[3])
    drawing.SetDrawColor(drawColor2)
    drawing.DrawCircle(center[0], center[1], radius)

    # Combine the images (blend takes multiple connections on the 0th
    # input port)
    blend = vtk.vtkImageBlend()
    blend.AddInputConnection(imgReader.GetOutputPort())
    blend.AddInputConnection(drawing.GetOutputPort())
    blend.SetOpacity(0, .6)
    blend.SetOpacity(1, .4)

    # Display the result
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()

    imageViewer = vtk.vtkImageViewer2()
    imageViewer.SetInputConnection(blend.GetOutputPort())
    imageViewer.SetSize(640, 512)
    imageViewer.SetupInteractor(renderWindowInteractor)
    imageViewer.GetRenderer().ResetCamera()
    imageViewer.GetRenderer().SetBackground(
        colors.GetColor3d("LightSlateGray"))

    imageViewer.GetRenderWindow().SetWindowName("DrawOnAnImage")
    imageViewer.GetRenderWindow().Render()
    renderWindowInteractor.Initialize()
    renderWindowInteractor.Start()

    return 0
Example #13
0
#!/usr/bin/env python
import vtk
import sys

from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# Image pipeline
size=400
image1 = vtk.vtkImageCanvasSource2D()
image1.SetNumberOfScalarComponents(3)
image1.SetScalarTypeToUnsignedChar()
image1.SetExtent(0,size,0,size,0,0)
image1.SetDrawColor(255,255,0)
image1.FillBox(0,size,0,size)
pad1 = vtk.vtkImageWrapPad()
pad1.SetInputConnection(image1.GetOutputPort())
pad1.SetOutputWholeExtent(0,size,0,size,0,10)
pad1.Update()
image2 = vtk.vtkImageCanvasSource2D()
image2.SetNumberOfScalarComponents(3)
image2.SetScalarTypeToUnsignedChar()
image2.SetExtent(0,size,0,size,0,0)
image2.SetDrawColor(0,255,255)
image2.FillBox(0,size,0,size)
pad2 = vtk.vtkImageWrapPad()
pad2.SetInputConnection(image2.GetOutputPort())
pad2.SetOutputWholeExtent(0,size,0,size,0,10)
pad2.Update()
checkers = vtk.vtkImageCheckerboard()
checkers.SetInput1Data(pad1.GetOutput())
def main(argv):
    #  Verify input arguments
    if len(argv) > 1:
        # Read the image
        jpeg_reader = vtkJPEGReader()
        if not jpeg_reader.CanReadFile(argv[1]):
            print("Error reading file %s" % argv[1])
            return

        jpeg_reader.SetFileName(argv[1])
        jpeg_reader.Update()
        image_data = jpeg_reader.GetOutput()
    else:
        canvas_source = vtkImageCanvasSource2D()
        canvas_source.SetExtent(0, 100, 0, 100, 0, 0)
        canvas_source.SetScalarTypeToUnsignedChar()
        canvas_source.SetNumberOfScalarComponents(3)
        canvas_source.SetDrawColor(127, 127, 100)
        canvas_source.FillBox(0, 100, 0, 100)
        canvas_source.SetDrawColor(100, 255, 255)
        canvas_source.FillTriangle(10, 10, 25, 10, 25, 25)
        canvas_source.SetDrawColor(255, 100, 255)
        canvas_source.FillTube(75, 75, 0, 75, 5.0)
        canvas_source.Update()
        image_data = canvas_source.GetOutput()

    # Create an image actor to display the image
    image_actor = vtkImageActor()

    if VTK_MAJOR_VERSION <= 5:
        image_actor.SetInput(image_data)
    else:
        image_actor.SetInputData(image_data)

    # Create a renderer to display the image in the background
    background_renderer = vtkRenderer()

    # Create a superquadric
    superquadric_source = vtkSuperquadricSource()
    superquadric_source.SetPhiRoundness(1.1)
    superquadric_source.SetThetaRoundness(.2)

    # Create a mapper and actor
    superquadric_mapper = vtkPolyDataMapper()
    superquadric_mapper.SetInputConnection(superquadric_source.GetOutputPort())

    superquadric_actor = vtkActor()
    superquadric_actor.SetMapper(superquadric_mapper)

    scene_renderer = vtkRenderer()

    render_window = vtkRenderWindow()

    # Set up the render window and renderers such that there is
    # a background layer and a foreground layer
    background_renderer.SetLayer(0)
    background_renderer.InteractiveOff()
    scene_renderer.SetLayer(1)
    render_window.SetNumberOfLayers(2)
    render_window.AddRenderer(background_renderer)
    render_window.AddRenderer(scene_renderer)

    render_window_interactor = vtkRenderWindowInteractor()
    render_window_interactor.SetRenderWindow(render_window)

    # Add actors to the renderers
    scene_renderer.AddActor(superquadric_actor)
    background_renderer.AddActor(image_actor)

    # Render once to figure out where the background camera will be
    render_window.Render()

    # Set up the background camera to fill the renderer with the image
    origin = image_data.GetOrigin()
    spacing = image_data.GetSpacing()
    extent = image_data.GetExtent()

    camera = background_renderer.GetActiveCamera()
    camera.ParallelProjectionOn()

    xc = origin[0] + 0.5*(extent[0] + extent[1]) * spacing[0]
    yc = origin[1] + 0.5*(extent[2] + extent[3]) * spacing[1]
    # xd = (extent[1] - extent[0] + 1) * spacing[0]
    yd = (extent[3] - extent[2] + 1) * spacing[1]
    d = camera.GetDistance()
    camera.SetParallelScale(0.5 * yd)
    camera.SetFocalPoint(xc, yc, 0.0)
    camera.SetPosition(xc, yc, d)

    # Render again to set the correct view
    render_window.Render()

    # Interact with the window
    render_window_interactor.Start()
Example #15
0
def main(argv):
    colors = vtk.vtkNamedColors()
    imageData = None

    # Verify input arguments
    if len(argv) > 1:
        # Read the image
        readerFactory = vtk.vtkImageReader2Factory()
        imageReader = readerFactory.CreateImageReader2(argv[1])
        imageReader.SetFileName(argv[1])
        imageReader.Update()
        imageData = imageReader.GetOutput()
    else:
        drawColor1 = 4 * [255]
        drawColor2 = 4 * [255]
        drawColor3 = 4 * [255]
        color1 = colors.GetColor3ub("warm_grey")
        color2 = colors.GetColor3ub("DarkCyan")
        color3 = colors.GetColor3ub("LightCoral")
        for i in range(3):
            drawColor1[i] = color1[i]
            drawColor2[i] = color2[i]
            drawColor3[i] = color3[i]

        canvasSource = vtk.vtkImageCanvasSource2D()
        canvasSource.SetExtent(0, 100, 0, 100, 0, 0)
        canvasSource.SetScalarTypeToUnsignedChar()
        canvasSource.SetNumberOfScalarComponents(3)
        canvasSource.SetDrawColor(drawColor1)
        canvasSource.FillBox(0, 100, 0, 100)
        canvasSource.SetDrawColor(drawColor2)
        canvasSource.FillTriangle(10, 10, 25, 10, 25, 25)
        canvasSource.SetDrawColor(drawColor3)
        canvasSource.FillTube(75, 75, 0, 75, 5.0)
        canvasSource.Update()
        imageData = canvasSource.GetOutput()

    # Create an image actor to display the image
    imageActor = vtk.vtkImageActor()
    imageActor.SetInputData(imageData)

    # Create a renderer to display the image in the background
    backgroundRenderer = vtk.vtkRenderer()

    # Create a superquadric
    superquadricSource = vtk.vtkSuperquadricSource()
    superquadricSource.SetPhiRoundness(1.1)
    superquadricSource.SetThetaRoundness(.2)

    # Create a mapper and actor
    superquadricMapper = vtk.vtkPolyDataMapper()
    superquadricMapper.SetInputConnection(superquadricSource.GetOutputPort())

    superquadricActor = vtk.vtkActor()
    superquadricActor.SetMapper(superquadricMapper)
    superquadricActor.GetProperty().SetColor(colors.GetColor3d("NavajoWhite"))

    sceneRenderer = vtk.vtkRenderer()

    renderWindow = vtk.vtkRenderWindow()

    # Set up the render window and renderers such that there is
    # a background layer and a foreground layer
    backgroundRenderer.SetLayer(0)
    backgroundRenderer.InteractiveOff()
    sceneRenderer.SetLayer(1)
    renderWindow.SetNumberOfLayers(2)
    renderWindow.AddRenderer(backgroundRenderer)
    renderWindow.AddRenderer(sceneRenderer)
    renderWindow.SetWindowName("BackgroundImage")

    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)

    # Add actors to the renderers
    sceneRenderer.AddActor(superquadricActor)
    backgroundRenderer.AddActor(imageActor)

    # Render once to figure out where the background camera will be
    renderWindow.Render()

    # Set up the background camera to fill the renderer with the image
    origin = imageData.GetOrigin()
    spacing = imageData.GetSpacing()
    extent = imageData.GetExtent()

    camera = backgroundRenderer.GetActiveCamera()
    camera.ParallelProjectionOn()

    xc = origin[0] + 0.5 * (extent[0] + extent[1]) * spacing[0]
    yc = origin[1] + 0.5 * (extent[2] + extent[3]) * spacing[1]
    yd = (extent[3] - extent[2] + 1) * spacing[1]
    d = camera.GetDistance()
    camera.SetParallelScale(0.5 * yd)
    camera.SetFocalPoint(xc, yc, 0.0)
    camera.SetPosition(xc, yc, d)

    # Render again to set the correct view
    renderWindow.Render()

    # Interact with the window
    renderWindowInteractor.Start()
#!/usr/bin/env python
import vtk
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# Performs a correlation in frequency domain.
s1 = vtk.vtkImageCanvasSource2D()
s1.SetScalarTypeToFloat()
s1.SetExtent(0,255,0,255,0,0)
s1.SetDrawColor(0)
s1.FillBox(0,255,0,255)
s1.SetDrawColor(2.0)
s1.FillTriangle(10,100,190,150,40,250)
s2 = vtk.vtkImageCanvasSource2D()
s2.SetScalarTypeToFloat()
s2.SetExtent(0,31,0,31,0,0)
s2.SetDrawColor(0.0)
s2.FillBox(0,31,0,31)
s2.SetDrawColor(2.0)
s2.FillTriangle(10,1,25,10,1,5)
fft1 = vtk.vtkImageFFT()
fft1.SetDimensionality(2)
fft1.SetInputConnection(s1.GetOutputPort())
fft1.ReleaseDataFlagOff()
fft1.Update()
# Pad kernel out to same size as image.
pad2 = vtk.vtkImageConstantPad()
pad2.SetInputConnection(s2.GetOutputPort())
pad2.SetOutputWholeExtent(0,255,0,255,0,0)
fft2 = vtk.vtkImageFFT()
fft2.SetDimensionality(2)
Example #17
0
        pass
    def OnMouseWheelForward(self):
        pass

 the above method will not re-load the mouse wheel function
 the real functional method are applied by adding event observer
 Solution:
 Register this event: self.AddObserver(...)

2. AddObserver, Observer function conflict
Solution: call RemoveObservers() first to unregister all event functions
'''

import vtk

drawing = vtk.vtkImageCanvasSource2D()
drawing.SetScalarTypeToUnsignedChar()
drawing.SetNumberOfScalarComponents(3)
drawing.SetExtent(0, 20, 0, 50, 0, 0)
drawing.FillBox(0, 20, 0, 50)

drawing.SetDrawColor(255, 0, 0, 0)
drawing.DrawCircle(9, 10, 5)
drawing.Update()

actor = vtk.vtkImageActor()
actor.GetMapper().SetInputData(drawing.GetOutput())
actor.InterpolateOff()

renderer = vtk.vtkRenderer()
renderWin = vtk.vtkRenderWindow()
Example #18
0
#!/usr/bin/env python
import vtk
from vtk.test import Testing
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# A script to test the threshold filter.
# Values above 2000 are set to 255.
# Values below 2000 are set to 0.
# Image pipeline
imageCanvas = vtk.vtkImageCanvasSource2D()
imageCanvas.SetScalarTypeToUnsignedChar()
imageCanvas.SetNumberOfScalarComponents(3)
imageCanvas.SetExtent(0,300,0,300,0,0)
# background black
imageCanvas.SetDrawColor(0)
imageCanvas.FillBox(0,511,0,511)
jreader = vtk.vtkJPEGReader()
jreader.SetFileName("" + str(VTK_DATA_ROOT) + "/Data/beach.jpg")
jreader.Update()
imageCanvas.DrawImage(100,100,jreader.GetOutput(),0,0,300,300)
imageCanvas.DrawImage(0,100,jreader.GetOutput())
imageCanvas.DrawImage(100,0,jreader.GetOutput(),0,0,300,300)
imageCanvas.DrawImage(0,0,jreader.GetOutput(),50,50,100,100)
imageCanvas.DrawImage(10,10,jreader.GetOutput(),50,50,100,100)
imageCanvas.DrawImage(20,20,jreader.GetOutput(),50,50,100,100)
imageCanvas.DrawImage(30,30,jreader.GetOutput(),50,50,100,100)
imageCanvas.DrawImage(40,40,jreader.GetOutput(),50,50,100,100)
imageCanvas.DrawImage(50,50,jreader.GetOutput(),50,50,100,100)
imageCanvas.DrawImage(60,60,jreader.GetOutput(),50,50,100,100)
imageCanvas.DrawImage(70,70,jreader.GetOutput(),50,50,100,100)
def main():
    colors = vtk.vtkNamedColors()

    # Create an image
    source1 = vtk.vtkImageCanvasSource2D()
    source1.SetScalarTypeToUnsignedChar()
    source1.SetNumberOfScalarComponents(3)
    source1.SetExtent(0, 100, 0, 100, 0, 0)
    source1.SetDrawColor(0, 0, 0, 1)
    source1.FillBox(0, 100, 0, 100)
    source1.SetDrawColor(255, 0, 0, 1)
    source1.FillBox(10, 20, 10, 20)
    source1.FillBox(40, 50, 20, 30)
    source1.Update()

    # Convert the image to a polydata
    imageDataGeometryFilter = vtk.vtkImageDataGeometryFilter()
    # imageDataGeometryFilter = vtk.vtkStructuredPointsGeometryFilter()
    imageDataGeometryFilter.SetInputConnection(source1.GetOutputPort())
    imageDataGeometryFilter.Update()

    # p2c = vtk.vtkPointDataToCellData()
    # p2c.SetInputConnection(imageDataGeometryFilter.GetOutputPort())
    # stripper = vtk.vtkStripper()
    # stripper.SetInputConnection(p2c.GetOutputPort())
    # # stripper.PassCellDataAsFieldDataOn()

    p2c = vtk.vtkPointDataToCellData()
    p2c.PassPointDataOn()
    # p2c.SetInputConnection(source1.GetOutputPort())

    # geom_filter = vtk.vtkGeometryFilter()
    # geom_filter.SetInputConnection(p2c.GetOutputPort())

    # p2c.SetInputConnection(imageDataGeometryFilter.GetOutputPort())
    # stripper = vtk.vtkStripper()
    # stripper.SetInputConnection(p2c.GetOutputPort())
    # stripper.PassCellDataAsFieldDataOn()

    sphere = vtk.vtkSphereSource()
    # Create a mapper and actor
    mapper = vtk.vtkPolyDataMapper()
    # mapper = vtk.vtkPolyDataMapper2D()
    # mapper.SetScalarModeToUseCellData()
    mapper.SetInputConnection(imageDataGeometryFilter.GetOutputPort())
    # mapper.SetInputConnection(geom_filter.GetOutputPort())
    # mapper.SetInputConnection(p2c.GetOutputPort())
    # mapper.SetInputConnection(sphere.GetOutputPort())

    actor = vtk.vtkActor()
    # actor.GetProperty().BackfaceCullingOn()
    # actor.GetProperty().LightingOff()
    # actor.GetProperty().ShadingOn()

    # actor.GetProperty().SetAmbient(1.0)
    # actor.GetProperty().SetDiffuse(0.0)
    # actor.GetProperty().SetSpecular(0.0)
    # actor.GetProperty().SetInterpolationToGouraud()
    # actor.GetProperty().SetInterpolationToFlat()

    # interp = actor.GetProperty().GetInterpolation()
    #
    #
    # print('interp ',interp )
    # actor.GetProperty().SetInterpolationToFlat()
    # actor.GetProperty().SetInterpolation(0)
    # interp = actor.GetProperty().GetInterpolation()
    # print('interp ', interp)
    actor.SetMapper(mapper)
    actor.GetProperty().SetInterpolationToFlat()
    actor.GetProperty().BackfaceCullingOn()
    actor.GetProperty().LightingOff()
    actor.GetProperty().ShadingOn()

    actor.GetProperty().SetAmbient(1.0)
    actor.GetProperty().SetDiffuse(0.0)
    actor.GetProperty().SetSpecular(0.0)
    actor.GetProperty().SetInterpolationToGouraud()
    actor.GetProperty().SetInterpolationToFlat()

    # Visualization
    renderer = vtk.vtkRenderer()
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.AddRenderer(renderer)
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)

    renderer.AddActor(actor)
    renderer.SetBackground(
        colors.GetColor3d("white"))  # Background color white
    renderWindow.Render()
    renderWindowInteractor.Start()
Example #20
0
def main():
    colors = vtk.vtkNamedColors()

    #  Verify input arguments
    fn = get_program_parameters()
    if fn:
        # Read the image
        jpeg_reader = vtk.vtkJPEGReader()
        if not jpeg_reader.CanReadFile(fn):
            print('Error reading file:', fn)
            return

        jpeg_reader.SetFileName(fn)
        jpeg_reader.Update()
        image_data = jpeg_reader.GetOutput()
    else:
        canvas_source = vtk.vtkImageCanvasSource2D()
        canvas_source.SetExtent(0, 100, 0, 100, 0, 0)
        canvas_source.SetScalarTypeToUnsignedChar()
        canvas_source.SetNumberOfScalarComponents(3)
        canvas_source.SetDrawColor(colors.GetColor4ub('warm_grey'))
        canvas_source.FillBox(0, 100, 0, 100)
        canvas_source.SetDrawColor(colors.GetColor4ub('DarkCyan'))
        canvas_source.FillTriangle(10, 10, 25, 10, 25, 25)
        canvas_source.SetDrawColor(colors.GetColor4ub('LightCoral'))
        canvas_source.FillTube(75, 75, 0, 75, 5.0)
        canvas_source.Update()
        image_data = canvas_source.GetOutput()

    # Create an image actor to display the image
    image_actor = vtk.vtkImageActor()
    image_actor.SetInputData(image_data)

    # Create a renderer to display the image in the background
    background_renderer = vtk.vtkRenderer()

    # Create a superquadric
    superquadric_source = vtk.vtkSuperquadricSource()
    superquadric_source.SetPhiRoundness(1.1)
    superquadric_source.SetThetaRoundness(.2)

    # Create a mapper and actor
    superquadric_mapper = vtk.vtkPolyDataMapper()
    superquadric_mapper.SetInputConnection(superquadric_source.GetOutputPort())

    superquadric_actor = vtk.vtkActor()
    superquadric_actor.SetMapper(superquadric_mapper)
    superquadric_actor.GetProperty().SetColor(colors.GetColor3d('NavajoWhite'))

    scene_renderer = vtk.vtkRenderer()
    render_window = vtk.vtkRenderWindow()

    # Set up the render window and renderers such that there is
    # a background layer and a foreground layer
    background_renderer.SetLayer(0)
    background_renderer.InteractiveOff()
    scene_renderer.SetLayer(1)
    render_window.SetNumberOfLayers(2)
    render_window.AddRenderer(background_renderer)
    render_window.AddRenderer(scene_renderer)
    render_window.SetWindowName('BackgroundImage')

    render_window_interactor = vtk.vtkRenderWindowInteractor()
    render_window_interactor.SetRenderWindow(render_window)

    # Add actors to the renderers
    scene_renderer.AddActor(superquadric_actor)
    background_renderer.AddActor(image_actor)

    # Render once to figure out where the background camera will be
    render_window.Render()

    # Set up the background camera to fill the renderer with the image
    origin = image_data.GetOrigin()
    spacing = image_data.GetSpacing()
    extent = image_data.GetExtent()

    camera = background_renderer.GetActiveCamera()
    camera.ParallelProjectionOn()

    xc = origin[0] + 0.5 * (extent[0] + extent[1]) * spacing[0]
    yc = origin[1] + 0.5 * (extent[2] + extent[3]) * spacing[1]
    # xd = (extent[1] - extent[0] + 1) * spacing[0]
    yd = (extent[3] - extent[2] + 1) * spacing[1]
    d = camera.GetDistance()
    camera.SetParallelScale(0.5 * yd)
    camera.SetFocalPoint(xc, yc, 0.0)
    camera.SetPosition(xc, yc, d)

    # Render again to set the correct view
    render_window.Render()

    # Interact with the window
    render_window_interactor.Start()
Example #21
0
import vtk
#
# Test butterfly subdivision of point data
#
sphere = vtk.vtkSphereSource()
sphere.SetPhiResolution(11)
sphere.SetThetaResolution(11)

source1 = vtk.vtkImageCanvasSource2D()
source1.SetScalarTypeToUnsignedChar()
source1.SetNumberOfScalarComponents(3)
source1.SetExtent(0, 100, 0, 100, 0, 0)
source1.SetDrawColor(0, 0, 0, 1)
source1.FillBox(0, 100, 0, 100)
source1.SetDrawColor(255, 0, 0, 1)
source1.FillBox(10, 20, 10, 20)
source1.FillBox(40, 50, 20, 30)
source1.Update()

colorIt = vtk.vtkElevationFilter()
colorIt.SetInputConnection(source1.GetOutputPort())
colorIt.SetLowPoint(0, 0, -.5)
colorIt.SetHighPoint(0, 0, .5)
butterfly = vtk.vtkButterflySubdivisionFilter()
butterfly.SetInputConnection(colorIt.GetOutputPort())
butterfly.SetNumberOfSubdivisions(3)
lut = vtk.vtkLookupTable()
lut.SetNumberOfColors(256)
lut.Build()
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(butterfly.GetOutputPort())
Example #22
0
def main():
    colors = vtk.vtkNamedColors()
    # colors.SetColor("Bkg", 0.2, 0.3, 0.4)

    # A sphere
    sphereSource = vtk.vtkSphereSource()
    sphereSource.SetCenter(0.0, 0.0, 0.0)
    sphereSource.SetRadius(4.0)
    sphereSource.SetPhiResolution(4)
    sphereSource.SetThetaResolution(8)
    sphereSource.Update()

    mapper = vtk.vtkPolyDataMapper()
    mapper.SetInputConnection(sphereSource.GetOutputPort())

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().SetColor(colors.GetColor3d("MistyRose"))

    # A renderer and render window
    renderer = vtk.vtkRenderer()
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.AddRenderer(renderer)
    renderWindow.SetWindowName("LogoWidget")

    renderer.AddActor(actor)

    # An interactor
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)

    # Create an image
    drawing = vtk.vtkImageCanvasSource2D()
    drawing.SetScalarTypeToUnsignedChar()
    drawing.SetNumberOfScalarComponents(3)
    drawing.SetExtent(0, 200, 0, 200, 0, 0)

    drawColor1 = [0, 0, 0]
    color1 = colors.GetColor3ub("Coral")
    drawColor2 = [0, 0, 0]
    color2 = colors.GetColor3ub("Black")
    for i in range(3):
        drawColor1[i] = color1[i]
        drawColor2[i] = color2[i]

    # Clear the image
    # Note: SetDrawColour() uses double values of the rgb colors in the
    #       range [0 ... 255]
    #       So SetDrawColour(255, 255, 255) is white.
    drawing.SetDrawColor(*drawColor1)
    drawing.FillBox(0, 200, 0, 200)
    drawing.SetDrawColor(*drawColor2)
    drawing.DrawCircle(100, 100, 50)
    drawing.Update()

    logoRepresentation = vtk.vtkLogoRepresentation()
    logoRepresentation.SetImage(drawing.GetOutput())
    logoRepresentation.SetPosition(0, 0)
    logoRepresentation.SetPosition2(0.4, 0.4)
    logoRepresentation.GetImageProperty().SetOpacity(.7)

    logoWidget = vtk.vtkLogoWidget()
    logoWidget.SetInteractor(renderWindowInteractor)
    logoWidget.SetRepresentation(logoRepresentation)

    renderWindow.Render()
    logoWidget.On()
    renderer.SetBackground(colors.GetColor3d("MidnightBLue"))
    renderWindow.Render()
    renderWindowInteractor.Start()
Example #23
0
#!/usr/bin/env python
import vtk
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# Use the painter to draw using colors.
# This is not a pipeline object.  It will support pipeline objects.
# Please do not use this object directly.
imageCanvas = vtk.vtkImageCanvasSource2D()
imageCanvas.SetNumberOfScalarComponents(3)
imageCanvas.SetScalarTypeToUnsignedChar()
imageCanvas.SetExtent(0, 320, 0, 320, 0, 0)
imageCanvas.SetDrawColor(0, 0, 0)
imageCanvas.FillBox(0, 511, 0, 511)
# r, g, b
imageCanvas.SetDrawColor(255, 0, 0)
imageCanvas.FillBox(0, 50, 0, 100)
imageCanvas.SetDrawColor(128, 128, 0)
imageCanvas.FillBox(50, 100, 0, 100)
imageCanvas.SetDrawColor(0, 255, 0)
imageCanvas.FillBox(100, 150, 0, 100)
imageCanvas.SetDrawColor(0, 128, 128)
imageCanvas.FillBox(150, 200, 0, 100)
imageCanvas.SetDrawColor(0, 0, 255)
imageCanvas.FillBox(200, 250, 0, 100)
imageCanvas.SetDrawColor(128, 0, 128)
imageCanvas.FillBox(250, 300, 0, 100)
# intensity scale
imageCanvas.SetDrawColor(5, 5, 5)
imageCanvas.FillBox(0, 50, 110, 210)
imageCanvas.SetDrawColor(55, 55, 55)
#!/usr/bin/env python
import vtk
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# Performs a correlation in frequency domain.
s1 = vtk.vtkImageCanvasSource2D()
s1.SetScalarTypeToFloat()
s1.SetExtent(0, 255, 0, 255, 0, 0)
s1.SetDrawColor(0)
s1.FillBox(0, 255, 0, 255)
s1.SetDrawColor(2.0)
s1.FillTriangle(10, 100, 190, 150, 40, 250)
s2 = vtk.vtkImageCanvasSource2D()
s2.SetScalarTypeToFloat()
s2.SetExtent(0, 31, 0, 31, 0, 0)
s2.SetDrawColor(0.0)
s2.FillBox(0, 31, 0, 31)
s2.SetDrawColor(2.0)
s2.FillTriangle(10, 1, 25, 10, 1, 5)
fft1 = vtk.vtkImageFFT()
fft1.SetDimensionality(2)
fft1.SetInputConnection(s1.GetOutputPort())
fft1.ReleaseDataFlagOff()
fft1.Update()
# Pad kernel out to same size as image.
pad2 = vtk.vtkImageConstantPad()
pad2.SetInputConnection(s2.GetOutputPort())
pad2.SetOutputWholeExtent(0, 255, 0, 255, 0, 0)
fft2 = vtk.vtkImageFFT()
fft2.SetDimensionality(2)
Example #25
0
    def testWipe(self):

        # Image pipeline

        renWin = vtk.vtkRenderWindow()

        image1 = vtk.vtkImageCanvasSource2D()
        image1.SetNumberOfScalarComponents(3)
        image1.SetScalarTypeToUnsignedChar()
        image1.SetExtent(0, 79, 0, 79, 0, 0)
        image1.SetDrawColor(255, 255, 0)
        image1.FillBox(0, 79, 0, 79)
        image1.Update()

        image2 = vtk.vtkImageCanvasSource2D()
        image2.SetNumberOfScalarComponents(3)
        image2.SetScalarTypeToUnsignedChar()
        image2.SetExtent(0, 79, 0, 79, 0, 0)
        image2.SetDrawColor(0, 255, 255)
        image2.FillBox(0, 79, 0, 79)
        image2.Update()

        mapper = vtk.vtkImageMapper()
        mapper.SetInputConnection(image1.GetOutputPort())
        mapper.SetColorWindow(255)
        mapper.SetColorLevel(127.5)
        actor = vtk.vtkActor2D()
        actor.SetMapper(mapper)
        imager = vtk.vtkRenderer()
        imager.AddActor2D(actor)

        renWin.AddRenderer(imager)

        wipes = ["Quad", "Horizontal", "Vertical", "LowerLeft", "LowerRight", "UpperLeft", "UpperRight"]

        wiper = dict()
        mapper = dict()
        actor = dict()
        imagers = dict()

        for wipe in wipes:
            wiper.update({wipe:vtk.vtkImageRectilinearWipe()})
            wiper[wipe].SetInput1Data(image1.GetOutput())
            wiper[wipe].SetInput2Data(image2.GetOutput())
            wiper[wipe].SetPosition(20, 20)
            eval('wiper[wipe].SetWipeTo' + wipe + '()')

            mapper.update({wipe:vtk.vtkImageMapper()})
            mapper[wipe].SetInputConnection(wiper[wipe].GetOutputPort())
            mapper[wipe].SetColorWindow(255)
            mapper[wipe].SetColorLevel(127.5)

            actor.update({wipe:vtk.vtkActor2D()})
            actor[wipe].SetMapper(mapper[wipe])

            imagers.update({wipe:vtk.vtkRenderer()})
            imagers[wipe].AddActor2D(actor[wipe])

            renWin.AddRenderer(imagers[wipe])

        imagers["Quad"].SetViewport(0, .5, .25, 1)
        imagers["Horizontal"].SetViewport(.25, .5, .5, 1)
        imagers["Vertical"].SetViewport(.5, .5, .75, 1)
        imagers["LowerLeft"].SetViewport(.75, .5, 1, 1)
        imagers["LowerRight"].SetViewport(0, 0, .25, .5)
        imagers["UpperLeft"].SetViewport(.25, 0, .5, .5)
        imagers["UpperRight"].SetViewport(.5, 0, .75, .5)
        imager.SetViewport(.75, 0, 1, .5)

        renWin.SetSize(400, 200)

        # render and interact with data

        iRen = vtk.vtkRenderWindowInteractor()
        iRen.SetRenderWindow(renWin);
        renWin.Render()

        img_file = "TestWipe.png"
        vtk.test.Testing.compareImage(iRen.GetRenderWindow(), vtk.test.Testing.getAbsImagePath(img_file), threshold=25)
        vtk.test.Testing.interact()
alpha.SetInputConnection(luminance.GetOutputPort())
alpha.SetLookupTable(table)
alpha.SetOutputFormatToLuminance()

# make luminanceAlpha and colorAlpha versions

luminanceAlpha = vtk.vtkImageAppendComponents()
luminanceAlpha.AddInputConnection(luminance.GetOutputPort())
luminanceAlpha.AddInputConnection(alpha.GetOutputPort())

colorAlpha = vtk.vtkImageAppendComponents()
colorAlpha.AddInputConnection(color.GetOutputPort())
colorAlpha.AddInputConnection(alpha.GetOutputPort())

# create pseudo alpha values for background
bmask = vtk.vtkImageCanvasSource2D()
bmask.SetScalarTypeToUnsignedChar()
bmask.SetNumberOfScalarComponents(1)
bmask.SetExtent(0, 127, 0, 127, 0, 0)
bmask.SetDrawColor(0, 0, 0, 0)
bmask.FillBox(0, 127, 0, 127)
bmask.SetDrawColor(255, 0, 0, 0)
bmask.DrawCircle(64, 64, 40)
bmask.FillPixel(64, 64)

backgroundAlpha = vtk.vtkImageAppendComponents()
backgroundAlpha.AddInputConnection(backgroundColor.GetOutputPort())
backgroundAlpha.AddInputConnection(bmask.GetOutputPort())

foregrounds = ["luminance", "luminanceAlpha", "color", "colorAlpha"]
backgrounds = ["backgroundAlpha", "backgroundColor", "backgroundLuminance"]