Open3D: A Modern Library for 3D Data Processing — Open3D 0.7.0 documentation

点云规范化

需求: 使用传统方法规范化一个长方体形状的不完全点云

image-20211021184842399

1. 分面

image-20211021185231708

通过Open3D的平面提取算法依次提取平面, 同时还可以得到拟合平面的方程, 作为后续优化的初始值.

2. 平面规范化

对四个面创建误差方程, 注意要加上误差权重

  1. 点到面的距离最小
if (isPerpendicular) {
  // 垂直
  return (A1 * A2 + B1 * B2 + C1 * C2) * T(weight);
} else {
  // 平行
  return (normal1 * normal2 - abs(A1 * A2 + B1 * B2 + C1 * C2)) * T(weight);
}
  1. 面与面间的平行垂直误差最小
// a
residual[0] = spatialRelation(plane_a, plane_b, false);
residual[1] = spatialRelation(plane_a, plane_c);
residual[2] = spatialRelation(plane_a, plane_d);
 
// b
residual[3] = spatialRelation(plane_b, plane_c);
residual[4] = spatialRelation(plane_b, plane_d);
 
// c
residual[5] = spatialRelation(plane_c, plane_d);

DeepinScreenshot_jetbrains-clion_20211021200514