4

我有一个点云,我已经执行了平面检测。现在我想对场景进行三角测量。

我已经有了每架飞机的三角剖分,看起来像这样: 平面三角剖分

我想用来Point Cloud Library GreedyProjectionTriangulation重建场景。所以我想调整干预重建的不同功能。

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

  • 我的飞机的每个点都应该在一开始就被标记为边缘 - 使用矢量很容易做到这一点state_
  • 我们用函数添加平面的三角形,这addTriangles没问题。
  • 我不知道如何强制执行边缘。有一个doubleEdges向量,但我并不真正了解它是如何工作的。似乎每次迭代都会重置一个点。
  • 我必须将我的平面点推到fringe_queue_向量中,但这个addFringe函数很奇怪,因为它要求 2 个参数,我不明白为什么。
  • 我不明白向量part_的用途。

我目前的结果是这样的: 当前结果

图像上不是很清楚,但由于我不知道如何强制边缘,所以我遇到了重叠三角形的问题。

编辑

我继续挖掘代码。我确定了关键部分可能是什么。为了避免代码墙,你可以在这里找到有趣的部分——它大约在 gp3.hpp 的第 180 和 285 行之间。

我不明白什么sfn_ffn_是为了什么。我的直觉是sfn_[R_]返回 的第二个边缘邻居R_ffn_[R_]返回 的第一个边缘邻居R_所以是这样的: sfn 和 ffn

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

我仍然不知道如何强制执行属于我的平面的三角形的边缘。查看代码,我认为关键在doubleEdges向量中,但我不知道如何修改这部分以使其与我的问题相关。

4

0 回答 0