VTK vtkDataSet к массиву громоздких объемных 3D и обратно - PullRequest
0 голосов
/ 04 июня 2019

Я делаю свои первые шаги в vtk, и я довольно борюсь из-за отсутствия документации.У меня есть файл .vtk, который является объектом типа vtkDataSet, который я не создал.Мне нужно было бы экспортировать его содержимое и преобразовать его в трехмерную матрицу, настроить его и его тензор и записать все в объект vtkDataSet и файл .vtk.

То, что я до сих пор получил, этосохраните координаты точек, которые мне не нужны, в массив numpy, используя vtk.util.numpy_support vtk_to_numpy.Тем не менее, мне нужна трехмерная матрица, представляющая объем ее рендеринга.Говоря о тензоре, я выяснил, как и где сохранить мой 9-элементный тензор в файл.Я просто не уверен, как правильно установить его, чтобы он был связан с точками.Последний шаг, который является трехмерным массивом numpy для vtk, выглядит выполнимым, используя numpy.ravel и numpy_to_vtk из vtk.util.numpy_support.Вот код, который я использую в качестве теста:

# reader for mrtrix vtk file
reader = vtk.vtkDataSetReader()
file_name = 'my_file.vtk'
reader.SetFileName(file_name)
reader.Update()

# get the vtkDataArray
data_set = reader.GetOutput()
# these are the coordinates of the points
# I'd need the 3D numpy volume rendering matrix instead
point_array = data_set.GetPoints().GetData()

# test tensor
# I'd need to save a tensor for every element of the 3D numpy matrix
tensor = numpy_to_vtk(np.zeros([data_set.GetNumberOfPoints(), 9]))
tensor.SetName('Tensors_')
point_data = data_set.GetPointData()
point_data.SetAttribute(tensor, 4)

1 Ответ

0 голосов
/ 04 июня 2019

Это может быть полезно в вашем случае: https://github.com/marcomusy/vtkplotter/blob/master/examples/volumetric/numpy2volume.py

и получить объект numpy, например,

print('numpy array from Volume:', vol.getPointArray().shape)

...