我有3D对象的STL文件,我使用numpy STL包将它们转换为网格对象和numpy数组。我还使用pydicom包将DCM数据转换为numpy数组,但是STL文件的numpy数组版本的大小(numpyarray.shape)为4280,与DCM数据的256*256维不匹配。另外,每个STl文件的numpy数组的数据类型包括向量和法线值,我不知道如何解析。任何关于尺寸不匹配的见解或STL numpy数组数据类型的解释都将不胜感激,我已经附上了numpy数组形式的DCM和STL数据的图片
DCM to numpy arraySTL to numpy array
Tags:
如果你曾经做过3D打印,你就会知道你想把STL对象切成片,正如罗伯特·哈夫纳所建议的那样
首先,您需要确保STL对象与Dicom体积对齐,这可能很难,也可能不难,但却是必要的。然后将STL切片为256个切片,就像要进行3D打印一样,将切片输出为256 x 256个图像,现在得到256个256x256像素的图像。因为它在切片之前是对齐的,所以您可以使用这些图像作为遮罩,必要时设置阈值
我建议您在这里采用稍微不同的方法—不要试图在numpy中处理原始dicom和STL数据,而是将dicom转换为PNG,然后在其上覆盖STL
首先要创建DICOM PNG-
我从aprevious comment I made借用了这段代码。我想明确指出的一件事是转换成一个浮点数——看看你的示例图像,它看起来像是整数,这意味着你从DICOM中丢失了很多数据,这会使你的输出变得更糟
下一步是获得STL文件的平面版本,您可以将其推到图像顶部。我不打算深入讨论这个问题,而是建议您使用numpy-stl库,它有一个用于此目的的“展平”函数。该软件包中的示例对于完成此任务应该非常有帮助
相关问题 更多 >
编程相关推荐