python - 如何将 vtkimage 转换为 numpy 数组

标签 python arrays image numpy vtk

我尝试用 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/

相关文章:

java - 高效地将 XML 引入 Elasticsearch

python - 使用 groupbyvars 作为 cols/index 获取 Pandas.groupby.shift() 结果?

php - 获取用户选择的项目的 id?

javascript - 渲染从 Firebase Firestore 映射的 React 组件

javascript - 展平嵌套对象,保留父对象的属性

python - 使用相同的字符串但附加不同的值在 python 中创建列表

python - 如何用 strip 在 python 中清理这个字符串?

javascript - 让图像尽可能多地占据窗口,而不超出边界

c# - 在 C# 中从 base64 获取图像大小

html - :hover border-style:none not sticking to image within SSI