2012-06-04 2 views
1

저는 itk로 nrrd 파일을 읽고 vtk로 보여주고 있습니다. 하지만 itk를 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() 

나는 내가 python2.7를 itk3.20을 사용하고 메시지

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' 

을 얻었다. 어떻게 해결할 수 있습니까?

감사합니다.

야오

답변

1

C++ 필터 ITK는 :: ImageToVTKImageFilter는 포장되지 않은하지만 당신은 itk.VTKImageImport instead.You 행동에 http://www.vtk.org/Wiki/VTK/Examples/Python/vtkWithNumpy VTKImageImport에서 볼 수 있습니다 사용할 수 있습니다. itkPyBuffer를 사용하여 numk 배열로 itkImage를 변환 할 수 있습니다.

0

코드가 정확합니다. 파이썬에서 itk을 올바르게 빌드하지 않았을 수도 있습니다. 제 의견으로는 파이썬에서 ITK/VTK를 사용하는 가장 쉬운 방법은 Pythonxy를 사용하는 것입니다. 너도해볼 수있어.

0

이러한 클래스에 대한 래퍼가있는 ITK 4의 최신 버전을 사용하십시오 (CMake 구성에서 ITKVtkGlue 모듈을 사용해야 함).

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 VTK

에 ITK 2D 이미지 변환