【问题标题】:Converting VTK image (.vti) data to VTK poly (.vtp) data将 VTK 图像 (.vti) 数据转换为 VTK 多边形 (.vtp) 数据
【发布时间】:2020-08-17 12:03:47
【问题描述】:

我正在尝试获取一些从 3-D numpy 数组生成的 VTK 图像数据,并将其转换为多边形数据,以便仅将 .vtp 作为输入格式的包读取它。我选择使用行进立方体算法将我的点/节点数据作为输入,并将多边形数据作为输出。数据分为两个阶段(0 = 黑色,255 = 白色),因此只需要一个轮廓。我尝试使用vtkPolyDataReader 类为vtkMarchingCubes 类创建对象,然后使用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 文档和一些提供的示例,但我不知道我做错了什么。

【问题讨论】:

    标签: python numpy vtk


    【解决方案1】:

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

    【讨论】:

    • 这是有道理的。我将阅读器从vtk.vtkPolyDataReader 更改为vtk.vtkXMLImageDataReader(),但我仍然遇到同样的输出问题。 VTP 文件仍小于 1 KB。你能说出问题出在哪里吗?
    • 您可以发布一个您尝试等值曲面的示例图像吗?
    • 这是卷的一个切片的原始图像 (postimg.cc/PNx0s9nG),以及该切片的 Sauvola 分段版本 (postimg.cc/fJQ7jSKH)。
    • 在对您的代码和图像进行了一些试验后,我无法找出问题所在。当我从阅读器打印出图像时,我得到一个大小为 (1,1,1) 的图像,这显然是错误的。不知道发生了什么。也许尝试在 discourse.vtk.org 上询问。
    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多