有没有办法在Python中操纵STL的数据点? (医疗申请)

时间:2014-04-21 17:29:46

标签: python 3d transformation euclidean-distance 3d-modelling

新手程序员试图将编程应用于医学研究。我正在使用患者CT扫描制作的Python和STL(3D格式)文件进行生物力学模拟。我正在尝试围绕任意轴旋转一个骨骼区域来模拟关节运动并测量韧带插入点之间的距离(变化),但是如何做到这一点却不知所措。我可以将STL文件中的数据导入点云,并在那里进行基本操作,但我不知道如何重建STL。有没有办法将STL数据视为一种结构并直接进行几何变换?基于新的位置,我正在计算有效的韧带长度(基本上是感兴趣的骨骼区域中一个点与另一个点之间的距离)。基于这些值,我试图“着色”STL并制作3D“热图”,基本上更高的值是红色,更低的蓝色等等。我不能真正让Mayavi工作,我会保持点云,但在Python中绘制和操作的速度非常慢。谢谢你的帮助!

TL; DR下面:

  • 如何对STL文件中的任意轴进行矩阵旋转,或者就任何几何变换进行矩阵旋转?
  • 如何测量单独STL文件上两点之间的距离?
  • 如何根据一组值更改STL三角形/曲面的颜色?

1 个答案:

答案 0 :(得分:1)

此过程涉及许多子任务。您必须对属于每个身体部位的点进行分组,定义旋转点和测量点。

在我看来,这些操作都不适合通过编程(在python或其他方面)执行,因为它们涉及大量用户交互。您可能想要了解如何在3D编辑器中执行这些操作。

Blender是免费的,可以导入STL,虽然学习曲线有点陡峭,但网上有很多学习资料。您需要查看vertex groupsriggingmeasuring distances

一旦设置了基本模型,您就可以轻松地对其进行编程更改,这要感谢blender's extensive python API。有了它,您将能够自动化测试,并在需要时以图形方式检查结果。

请注意,许多可用的文档仍然涉及blender版本系列2.4,而最新版本是2.6。你可能想尝试两种方法。