我有一个点 Cloud ,我已经进行了平面探测 . 现在我想对场景进行三角测量 .

我已经对每架飞机进行了三角测量,看起来像这样:
PlaneTriangulation

我想使用 Point Cloud Library GreedyProjectionTriangulation 来重建场景 . 所以我想调整介入重建的不同功能 .

我挖了 gp3.hgp3.hpp 的代码(可以在 pcl/surface/include/pcl/surface 中找到)并阅读相关的出版物 . 到目前为止,我已经到过这个:

  • 我的飞机的每个点都应该在开头标记为条纹 - 并且使用矢量 state_ 很容易 .

  • 我们使用函数 addTriangles 添加平面的三角形,没问题 .

  • 我不知道如何强制执行边缘 . 有一个 doubleEdges 向量,但我真的不明白它是如何工作的 . 似乎它在一个点上的每次迭代都被重置 .

  • 我必须在 fringe_queue_ 向量中推动我的飞机的点,但 addFringe 函数很奇怪,因为它要求2个参数,我不明白为什么 .

  • 我不明白矢量 part_ 的用途 .

我目前的结果如下:
CurrentResult

在图像上不是很清楚,但由于我不知道如何强制边缘,我有重叠三角形的问题 .

编辑

我继续挖掘代码 . 我确定了关键部分可能是什么 . 为了避免代码墙,您可以找到有趣的部分here - 它大约位于gp3.hpp中第180行和第285行之间 .

我无法理解 sfn_ffn_ 的用途 . 我的直觉是 sfn_[R_] 返回 R_ 的第二个边缘邻居, ffn_[R_] 返回 R_ 的第一个边缘邻居 . 所以像这样:
sfn & ffn

如果我是对的,我可以很容易地做到这一点,因为我的飞机轮廓按正确的顺序排序 .

我仍然不知道如何强制属于我的飞机的三角形的边缘 . 看一下代码,我认为关键是在 doubleEdges 向量中,但我不知道如何修改这部分以使其与我的问题相关 .