如何使用 Python 和 VTK 从分割 MRI 文件创建网格表面

How to create mesh surface from segmentation MRI file using Python and VTK

我有一个 nifti 格式的 3D 医学图像二进制掩码,"mask.nii.gz" 我想从中提取表面网格。

我可以将二进制掩码数据加载到 numpy.ndarray 中,如下所示

import numpy as np
import nibabel as nib
filePath = "mask.nii.gz"
image = nib.load(filePath)
image_data = image.get_data()

但不确定如何使用上面的 image_data 使用 vtkDiscreteMarchingCubes() 渲染表面并从渲染表面输出顶点。

有人可以阐明这个问题吗?抱歉,我对这里的 VTK 库很陌生。非常感谢。

您可以使用 skimage.measure 创建网格,使用 marching_cubes 在你的情况下,尝试将 nib.image 转换为 numpy ndarray

image_ndarray = np.array(imgage.dataobj).astype(np.float64)
verts, faces, norm, val = measure.marching_cubes_lewiner(image, threshold, step_size=step_size, allow_degenerate=True)