将 VTK 图像 (.vti) 数据转换为 VTK 多边形 (.vtp) 数据

Converting VTK image (.vti) data to VTK poly (.vtp) data

我正在尝试获取一些从 3-D numpy 数组生成的 VTK 图像数据并将其转换为多边形数据,以便它可以被只采用 .vtp 作为输入格式的包读取.我选择使用行进立方体算法将我的 point/node 数据作为输入,并将多边形数据作为输出。数据被分成两个阶段(0 = 黑色,255 = 白色),因此只需要一个轮廓。我尝试使用 vtkPolyDataReader class 为 vtkMarchingCubes class 创建一个对象,然后使用 vtkPolyDataWriter 获取等高线行进立方体对象并将其保存为VTP 文件:

import vtk
input = 'mydata.vti'

reader = vtk.vtkPolydataReader()
reader.SetFileName(input)
reader.Update()

contour = vtk.vtkMarchingCubes()
contour.SetInputConnection(reader.GetOutputPort())
contour.SetValue(0, 128.)
contour.Update()

writer = vtk.vtkPolyDataWriter()
writer.SetInputData(contour.GetOutput())
writer.SetFileName('mydata.vtp')
writer.Update()
writer.Write()

当我 运行 代码时,它花费的时间比它应该的要少得多(输入文件大约 2 GB),并且代码创建的 VTP 文件小于 1 KB。我一直在用头撞墙,仔细研究 VTK 文档和一些提供的示例,但我无法弄清楚我做错了什么。

要读取 .vtki 文件,您需要使用 vtk.vtkXMLImageDataReader。您正在尝试读取带有 vtk.vtkPolyDataReader 的图像文件,该文件专为读取表面网格而设计。