Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • VTK VTK
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 737
    • Issues 737
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 209
    • Merge requests 209
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • VTK
  • VTKVTK
  • Issues
  • #17935

Closed
Open
Created Jun 17, 2020 by Nil Goyette@nilgoyette

Thin voxels border of ImageImport output

We use vtk 8.1 and 9.0 to take 2D screenshots of several slices in 3D images. When playing with a toy image with disabled interpolation, I discovered that all border voxels are thinner and I'm not sure why. Is this intended by vtk?

vtk

Here's a Python script, based on your ImageImport example.

import numpy as np
import vtk

z = 0
o = 255
data_slice = np.array([
    [z, o, z, o, z],
    [o, z, o, z, o],
    [z, o, z, o, z],
    [o, z, o, z, o],
    [z, o, z, o, z],
], dtype='uint8')

data_importer = vtk.vtkImageImport()
data_str = data_slice.tostring()
data_importer.SetDataSpacing(1.0, 1.0, 1.0)
data_importer.SetDataOrigin(0.0, 0.0, 0.0)
data_importer.SetWholeExtent(0, 4, 0, 4, 0, 0)
data_importer.SetDataExtentToWholeExtent()
data_importer.SetDataScalarTypeToUnsignedChar()
data_importer.SetNumberOfScalarComponents(1)
data_importer.CopyImportVoidPointer(data_str, len(data_str))
data_importer.Update()

actor = vtk.vtkImageActor()
actor.SetInterpolate(False)
actor.SetInputData(data_importer.GetOutput())

renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.ResetCamera()

render_window = vtk.vtkRenderWindow()
render_window.AddRenderer(renderer)

iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(render_window)
iren.Initialize()
iren.Start()
Edited Oct 06, 2020 by Nil Goyette
Assignee
Assign to
Time tracking