我尝试用 python 和 python-vtk 处理 MHD 图像文件。该文件位于谷歌驱动器中:mhd .
我想把它转换成numpy数组,然后根据给定的值“例如500”拆分它们。然后计算汇总信息。我遵循了此
[post] How to convert a 3D vtkDataSet into a numpy array? 的说明
但它不适用于我的情况。
import vtk
imageReader = vtk.vtkMetaImageReader()
imageReader.SetFileName(testfile1)
imageReader.Update()
# from vtk.util.numpy_support import numpy_to_vtk, vtk_to_numpy does not work for the data type issue
image = imageReader.GetOutput()
# List the dimensions of the image, for example
print image.GetDimensions()
pixelspace = imageReader.GetPixelSpacing()
这里出现错误:
AttributeError: GetPixelSpacing
如何实现转换?
当我完成数据拆分后,如何将它们保存回 mhd(或者原始数据会更好?)
最佳答案
适应 from this thread...您可以执行以下操作:
import numpy as np
import vtk
from vtk.util.numpy_support import vtk_to_numpy
imr = vtk.vtkMetaImageReader()
imr.SetFileName('t10-Subvolume-resample_scale-1.mhd')
imr.Update()
im = imr.GetOutput()
rows, cols, _ = im.GetDimensions()
sc = im.GetPointData().GetScalars()
a = vtk_to_numpy(sc)
a = a.reshape(rows, cols, -1)
assert a.shape==im.GetDimensions()
其中 a
将是包含图像数据的 NumPy 数组。
关于python - 如何将 vtkimage 转换为 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230541/