Как создать поверхность сетки из файла MRI сегментации с помощью Python и VTK
У меня есть двоичная маска трехмерных медицинских изображений в формате nifti, "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()
но не уверен, как визуализировать поверхность с помощью vtkDiscreteMarchingCubes(), используя приведенные выше image_data, и вывести вершины с визуализированной поверхности.
Может ли кто-нибудь пролить свет на эту проблему? Извините, я новичок в библиотеке VTK. Спасибо заранее.
1 ответ
Решение
Вы можете создать сетку с 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)