绘制由 3D numpy 数组表示的 3d 体积数据

use*_*434 2 python vtk mayavi

我已经看到 vtkplotter 支持范围广泛的体积图像格式,但它是否支持绘制 numpy 数组?我有一个 .mhd 格式的图像,我将其转换为 .npz 文件,并想使用提到的库绘制它。有没有办法这样做?

import numpy as np
data = np.zeros((3,3,3))
# how to plot this?
Run Code Online (Sandbox Code Playgroud)

如果您知道任何其他适用于医学分析的可视化体积数据的工具,请告诉。我试过 mayavi,但它消耗了太多内存,以至于我的电脑崩溃了。

L.C*_*.C. 5

您可以使用 numpy_support 将 numpy 数组转换为 vtkImageData(即 VTK 3D 图像)。

下面是一个例子,有一个关于类型转换的 numpy 警告:我认为它不相关,但我不是 python 大师......

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()
Run Code Online (Sandbox Code Playgroud)

...并可视化 vtk 体积数据,您可以使用 Paraview。