如何从numpy二进制掩码生成3D网格



我用CT获得的三维数据体对一个器官进行了三维分割。分割的输出定义为二进制3D narray,其中1为器官内,0为器官外。

什么是最好的工具来提取这个对象的表面作为一个网格,然后我可以导出到一个网格格式,如。stl?

谢谢!

我不确定这是一个最好的变体,但有一个简单的方法来做到这一点,如果使用MeshLib

安装在Windows上使用py -3.10 -m pip install --upgrade meshlib

执行此操作的脚本如下:
import meshlib.mrmeshpy as mr
import meshlib.mrmeshnumpy as mrn
#convert 3D array to SimpleVolume data
simpleVolume = mrn.simpleVolumeFrom3Darray(inputData)
#convert SimpleVolume to FloatGrid data
floatGrid = mr.simpleVolumeToDenseGrid(simpleVolume )
#make mesh by iso-value = 0.5 and voxel size = (0.1, 0.1, 0.1)
mesh = mr.gridToMesh(floatGrid , mr.Vector3f(0.1, 0.1, 0.1), 0.5)
#save mesh
mr.saveMesh(mesh, "mesh.stl" )

我希望这对你有帮助。