【问题标题】:How to get curve from intersection of point cloud and arbitrary plane?如何从点云与任意平面的交点获得曲线?
【发布时间】:2011-12-10 16:32:02
【问题描述】:

我有各种点云定义了来自 DICOM 文件的称为 ROI 的 RT-STRUCT。 DICOM 文件由断层扫描仪形成。每个 ROI 都是由点云形成的,它代表了一些 3D 对象。

目标是得到由平面形成的2D曲线,切割ROI的浊点。问题是我不能只使用与平面相交的点。我可能需要的是将 3D 凹壳与某个平面相交并得到相交轮廓。

是否有任何库已经实现了这些操作?我找到了 PCL 库,可能它应该能够解决我的问题,但我不知道如何使用 PCL 来实现它。此外,我也可以使用 Matlab - 我们通过 C++ 的运行时使用它。

有人遇到过这个问题吗?

附:正如我上面提到的,我需要使用我的 C++ 代码中的解决方案 - 所以它应该是我将通过 Matlab 运行时使用的一些库或 matlab 解决方案。

P.P.S.这种计算的准确性非常重要 - 它将用于用于治疗脑肿瘤的医疗软件中,因此您可以想象错误的后果(:

【问题讨论】:

  • 我迷失了这个问题:( RT_STRUCT?ROI?DICOM?plain == plane?3D 凹面外壳从哪里来?它是 ROI 的一部分吗?我认为 ROI 只包含点?
  • @CygnusX1 抱歉,这只是一个错字。我很着急,只是没有注意到。至于 DICOM 和其他,它只是一个指导信息。我想也许曾经使用这些东西的人可能会偶然发现类似的东西。

标签: c++ math matlab 3d point-clouds


【解决方案1】:

您首先需要从点集形成一个曲面。

如果可以为点选择 2d 方向(即它们在一个视图中形成凸包),您可以在这 2 个坐标中使用简单的 2D Delaunay 三角测量。 否则你需要一个完整的 3D 曲面函数(行进立方体或泊松)

然后,一旦你有了三角形,就很容易计算平面切割它们的轮廓线。

查看Mesh generation from points with x, y and z coordinates中的链接

【讨论】:

    【解决方案2】:

    也许您可以丢弃远离平面的点并将剩余的点投影到平面上。您仍然需要在平面中重建曲线,但有几种很好的方法。参见例如http://www.cse.ohio-state.edu/~tamaldey/curverecon.htmhttp://valis.cs.uiuc.edu/~sariel/research/CG/applets/Crust/Crust.html

    【讨论】:

    • 这可以解决,但可以有一些点,这些点构成了几乎与视图平面平行且与视图平面相距一小段距离的某个表面的一侧。所以在这种情况下,我们不会得到轮廓。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多