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]]