我有一个点 Cloud ,我已经进行了平面探测 . 现在我想对场景进行三角测量 .
我已经对每架飞机进行了三角测量,看起来像这样:
我想使用 Point Cloud Library
GreedyProjectionTriangulation
来重建场景 . 所以我想调整介入重建的不同功能 .
我挖了 gp3.h
和 gp3.hpp
的代码(可以在 pcl/surface/include/pcl/surface
中找到)并阅读相关的出版物 . 到目前为止,我已经到过这个:
-
我的飞机的每个点都应该在开头标记为条纹 - 并且使用矢量
state_
很容易 . -
我们使用函数
addTriangles
添加平面的三角形,没问题 . -
我不知道如何强制执行边缘 . 有一个
doubleEdges
向量,但我真的不明白它是如何工作的 . 似乎它在一个点上的每次迭代都被重置 . -
我必须在
fringe_queue_
向量中推动我的飞机的点,但addFringe
函数很奇怪,因为它要求2个参数,我不明白为什么 . -
我不明白矢量
part_
的用途 .
我目前的结果如下:
在图像上不是很清楚,但由于我不知道如何强制边缘,我有重叠三角形的问题 .
编辑
我继续挖掘代码 . 我确定了关键部分可能是什么 . 为了避免代码墙,您可以找到有趣的部分here - 它大约位于gp3.hpp中第180行和第285行之间 .
我无法理解 sfn_
和 ffn_
的用途 . 我的直觉是 sfn_[R_]
返回 R_
的第二个边缘邻居, ffn_[R_]
返回 R_
的第一个边缘邻居 . 所以像这样:
如果我是对的,我可以很容易地做到这一点,因为我的飞机轮廓按正确的顺序排序 .
我仍然不知道如何强制属于我的飞机的三角形的边缘 . 看一下代码,我认为关键是在 doubleEdges
向量中,但我不知道如何修改这部分以使其与我的问题相关 .