График объемных данных в виде трехмерного массива - PullRequest
1 голос
/ 16 апреля 2019

Я видел, что vtkplotter поддерживает широкий спектр форматов объемных изображений, но поддерживает ли он построение массивов-пустышек?У меня есть изображение в формате .mhd, которое я преобразовал в файл .npz, и я хотел бы построить его, используя указанную библиотеку.Есть ли способ сделать это?

import numpy as np
data = np.zeros((3,3,3))
# how to plot this?

Если вам известны какие-либо другие инструменты для визуализации объемных данных, подходящие для медицинского анализа, пожалуйста, сообщите об этом.Я пробовал Mayavi, но он потребляет столько памяти, что сбивает мой компьютер.

1 Ответ

3 голосов
/ 17 апреля 2019

Вы можете использовать numpy_support для преобразования numpy массивов в vtkImageData (т.е. 3D-изображение VTK).

Пример, приведенный ниже, содержит недопустимое предупреждение о преобразовании типов: я не думаю, что это уместно, но я не гуру питона ...

from vtk.util import numpy_support
import vtk
import numpy as np

data = np.zeros((3,3,3))

# vtkImageData is the vtk image volume type
imdata = vtk.vtkImageData()
# this is where the conversion happens
depthArray = numpy_support.numpy_to_vtk(data.ravel(), deep=True, array_type=vtk.VTK_DOUBLE)

# fill the vtk image data object
imdata.SetDimensions(data.shape)
imdata.SetSpacing([1,1,1])
imdata.SetOrigin([0,0,0])
imdata.GetPointData().SetScalars(depthArray)

# f.ex. save it as mhd file
writer = vtk.vtkMetaImageWriter()
writer.SetFileName("test.mhd")
writer.SetInputData(imdata)
writer.Write()

... ивизуализировать данные объема vtk вы можете использовать Paraview.

...