PlanDetector
参考资料
A robust statistics approach for plane detection in unorganized point clouds
代码阅读
PointCloud::DetectPlanarPatches
函数入口
使用 kdtree 统计每个 point 相邻的 point
RobustPlanarityTest
Grow
- 根据噪声度量
min_normal_diff_从小到大排序 queue取出噪声最小的 patch,每个patch和point只使用一次- 判断内点
patch和point法向量点乘大于min_normal_diff- 距离小于
max_point_dist_
Merge
函数入口
对所有 patch 建图,计算它们间的相关关系
- 首先判断法向量点乘差异是否满足阈值
- 遍历所有平面
patch-> 平面包含的点的index-> 每个点的 kdtree 的邻居 - 并查集计算
- 默认顺序建立并查集树,此时根节点没有物理意义,任意
patch都有可能是根节点 - 使用
largest_planes记录成为了根节点的patch叶子节点里面包含point最多的patch - 后续合并就使用
largest_planes指向的点最多的patch作为初始,合并其余的patch
- 默认顺序建立并查集树,此时根节点没有物理意义,任意
- 合并共面
patch根据现有点重新计算max_point_dist_和min_normal_diff_的值
Update
issue
- [[Open3D issue#issue-6550|issue#6650]]