如何使用python将itk图像文件转换为vtk?

时间:2012-06-04 22:55:55

标签: python itk

我正在尝试通过itk读取nrrd文件并通过vtk显示它。 但我将itk转换为vtk时遇到了一些麻烦。

import itk


file_name = '/home/yao/workspace/test/1.nrrd'
image_type = itk.Image[itk.UC, 2]
reader = itk.ImageFileReader[image_type].New()
reader.SetFileName( file_name )
reader.Update()

itk_vtk_converter = itk.ImageToVTKImageFilter[image_type].New()
itk_vtk_converter.SetInput(reader.GetOutput())
itk_vtk_converter.Update()

我收到了消息

Traceback (most recent call last):   File "ex1.py", line 11, in <module>
    itk_vtk_converter = itk.ImageToVTKImageFilter[image_type].New()   File "/usr/lib/InsightToolkit/WrapITK/Python/itkLazy.py", line 14, in
__getattribute__
    value = types.ModuleType.__getattribute__(self, attr) AttributeError: 'LazyITKModule' object has no attribute 'ImageToVTKImageFilter'

我正在使用itk3.20,python2.7。 我该如何解决?

问候。

4 个答案:

答案 0 :(得分:1)

C ++过滤器itk :: ImageToVTKImageFilter未包装,但您可以使用itk.VTKImageImport。您可以在http://www.vtk.org/Wiki/VTK/Examples/Python/vtkWithNumpy VTKImageImport中查看。您可以使用itkPyBuffer在numpy数组中转换itkImage

答案 1 :(得分:0)

您的代码是正确的。我想你可能无法在Python中正确构建itk。在我看来,在Python中使用ITK / VTK的最简单方法是使用Pythonxy。你可以尝试一下。

答案 2 :(得分:0)

使用最新版本的ITK 4,它包含这些类的包装(您必须在CMake配置中启用ITKVtkGlue模块)。

答案 3 :(得分:0)

我不知道为什么它没有工作,因为我没有尝试直接从ITK到VTk,但您可以尝试使用此代码。

def itkImageToVtk(image):
    arrayData = sitk.GetArrayFromImage(image)
    print arrayData.flags
    arrayDataC = np.array(arrayData[:,:,1], order='C')
    print arrayDataC.flags
    ArrayDicom = numpy_support.numpy_to_vtk(arrayDataC)

它将2D ITK图像转换为2D VTK