如何阅读Structured_Points .vtk文件

时间:2016-06-01 15:09:07

标签: opengl-es vtk

我目前有人头部的CT图像数据。它在YZ平面中包含256个切片,在XZ平面中包含256个切片,在XY平面中包含144个切片。

我计划在Android上使用OpenGL-ES 3.0来绘制XY平面中一个切片的点。问题是,我不确定如何将下面的ASCII数据加载到数组和缓冲区中。我已经收到了一小段文件。

# vtk DataFile Version 4.0
vtk output
ASCII
DATASET STRUCTURED_POINTS
DIMENSIONS 256 256 144
SPACING 1 1 1
ORIGIN 0 0 0
POINT_DATA 9437184
SCALARS ImageFile unsigned_short
LOOKUP_TABLE default
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 

如何理解查找表中给出的数据?

编辑:我了解如何查看Paraview等程序中的数据。我想了解数据实际告诉我的内容,因此我可以创建自定义解析器并使用OpenGL-ES自己绘制2D切片。

1 个答案:

答案 0 :(得分:3)

您是否尝试使用vtkDataReader将数据加载到VTK中?据我所知,由于结构点数据是vtkImageData的子类,因此您应该能够使用Python中的vtk执行以下简单操作。

import vtk
from vtk.util import numpy_support

path = 'path_to_file.vtk'

reader = vtk.vtkDataReader()
reader.SetFileName(path)

img = vtk.vtkImageData()
array = numpy_support.vtk_to_numpy(img)

#z_plane of choice
z = 10
plane = array[:,:,10]

如果在C ++中使用类似的代码,我只需使用GetScalarPointer或GetScalarComponentAsDouble函数并在选择的平面上循环,因为您知道GetDimensions()的维度并构建vtkImageData或使用vtkImageReslice函数并传递一个适当的转换