堆栈的2D图像到3D python

问题描述 投票:0回答:1

我有一个3D形状[512, 512, 586](或从这个数组保存的一堆jpeg文件)的二维CT图像。这些图像只有两个像素值:0或255

我需要做的是将此数组转换为可打印的3D模型/网格(STL或任何可能的)

I tried what was described in this post使用简单的itk。但是我没有找到任何关于将卷保存到stl文件的内容

有没有办法做到这一点? (使用简单的itk或任何其他库)

--EDIT--所以这是我的代码使用VTK,但是我很难将numpy数组转换为vtk数组

dataImporter = vtk.vtkImageImport()

data_string = ArrayDicom.tostring()

dataImporter.CopyImportVoidPointer(data_string, len(data_string))

dataImporter.SetDataScalarTypeToUnsignedShort()

dataImporter.SetNumberOfScalarComponents(1)

dataImporter.SetDataExtent(0, heightArray-1, 0, depthArray-1, 0, widthArray-1)
dataImporter.SetWholeExtent(0, heightArray-1, 0, depthArray-1, 0, widthArray-1)

这段代码显示的是一个黑色的窗口,里面什么都没有

其他代码:

print("converting numpy array to VTK array")
CT_Data = reader.GetOutput()
NP_data = numpy_support.numpy_to_vtk(ArrayDicom.ravel(), deep=True, array_type=vtk.VTK_TYPE_INT16)

print("loading vtkImageData")
imageVTK = vtk.vtkImageData()
imageVTK.SetSpacing(CT_Data.GetSpacing())
imageVTK.SetOrigin(CT_Data.GetOrigin())
imageVTK.SetDimensions(CT_Data.GetDimensions())
imageVTK.GetPointData().SetScalars(NP_data)

dmc = vtk.vtkDiscreteMarchingCubes
dmc.SetInputData(imageVTK)

这个得到错误:TypeError:SetInputData()的重载没有0个参数

python numpy 3d vtk itk
1个回答
1
投票

您已阅读3D图像或卷。据我所知,STL文件格式适用于多边形网格。您需要对体积中感兴趣的内容进行分割,然后使用诸如行进立方体之类的东西进行表面提取,然后清理网格以进行打印,然后将其保存为s STL文件以进行打印。

您可能需要考虑使用VTK进行网格操作或像Slicer3D这样的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.