代码注释地址

Point Cloud Segmentation

  1. Normal Calculation
    1. 先用 KNN 找临近点。
    2. 然后对这些点使用 PCA。
    3. 得到向量 ,曲率,点尺度(临近点间距离)
  2. Region Growing && Region Merging

Plane Based 3D Line Detection

  1. 3D-2D Projection
    1. 把上面区域生长拿到的平面点都取出来投影到估计的平面上。
    2. 根据第一个投影的点建立二维坐标系然后建立栅格。
  2. 2D Line Detection
    1. 上述栅格或者说二值图腐蚀膨胀。
    2. findContours
    3. 对每个 contour 进行递归的求解直线段
  3. 2D-3D Re-projection

Post-processing

  1. Outliers Removal
    1. remove non-structural planes: 两个最长直线段所在方向的所有直线段长度加和,判断是否大于阈值
    2. remove non-structural lines: 当有大量结构化特征时,可以直接保留下来,或者单条线段质量足够好
  2. Line Merging
    1. 计算两个端点到另一条直线的垂直距离判断是否要合并。
    2. 计算两条直线间的 gap 比例判断是否要合并。
    3. 合并的时候需要注意代码中直线段以向量形式存储,要注意方向问题。