PolyFit: Polygonal Surface Reconstruction from Point Clouds
简介:
从点云重建可以转换为二元标记问题。寻找面的组合,并且获得一个无边界的轻量级模型。
过程:
候选面生成:
面的提取:
用Schnabel等[24]提出的基于RANSAC的原始检测方法,从点云P中检测一组初始平面段S = {si}。这里的 si 是一组点,其距离小于ε平面的阈值,每个点可以分配给不超过一个平面。该平面表示为 si 的支撑平面。
面的细化:
提取的面由于噪音和异常点等因素的影响会存在一些不想要的面,这些面往往朝向随意且且点的分布不符合预期。
使用了一个优化的迭代细化平面段算法
具体步骤:
1.计算所有支撑面之间的夹角
2.选择夹角最小的两个面,如果两个面之间的夹角小于θ且拥有足够的点在支撑面上,则通过一定的方法拟合这两个面得到一个新的面
3.迭代这个过程直到没有满足这两个条件的支撑面对
候选面的生成:
通过点云的边界框裁剪所有平面线段的支撑平面。然后,可以通过与裁剪平面相交来获得候选面,同时要保留面与边之间的关联信息。
面的选择:
面的选择依赖于三个能量项,data-fitting、model complexity、point coverage
data-fitting:该术语旨在评估人面与点云的拟合质量,同时考虑适当的置信度概念 。它被定义为衡量对最终重建没有贡献的点的置信度加权百分比
model complexity: 这个能量项的目的在于倾向于选择让平面变大的边,实际上指的是锐边的比例
point coverage:
这个指标的目的是让面中未被点覆盖的面积尽可能小
为了衡量面 fi 的覆盖程度,首先将所有 ε-邻域内的点投影到面 fi 上。然后,通过从这些投影点中构建 2D α-shape 来提取一个网格 Mαi。在构建 α-shape 时,只使用那些投影在面 fi 内部的点。α-shape 是一种用于从点集合中提取形状的方法,可以将投影在面 fi 内的点连接起来形成一种边界,从而评估面 fi 的覆盖程度。
最终的线性方程: