三角测量后如何合并点云

时间:2018-04-27 02:16:09

标签: computer-vision 3d-reconstruction slam

我正在研究Structure from Motion。到目前为止,我已经完成了以下步骤。

  1. 功能匹配
  2. 基本矩阵
  3. 基本矩阵
  4. Camera Matrix P
  5. 从三角测量中,我得到了所有匹配特征的Point3d类型值。我将它存储在pointcloud变量中。
  6. 捆绑调整,优化姿势和pointcloud。
  7. 添加更多视图以进行重建。
  8. 问题发生在7,例如有3个图像,即1,2,3。 并且point_1与point_2的对应关系。 和point_2对应于point_3。 image_1,point_2,point_3分别位于image_1,image_2,image_3。

    三角测量后, point_1和point_2获取结果worldPoint_1 point_2和point_3获取结果worldPoint_2

    wordldPoint_1和worldPoint_2应该是相同的,因为Point_1,2,3与现实世界点的观察相同。但是,由于存在噪音,worldPoint_1和worldPoint_2不相等。

    所以我的问题是如何在添加新图像以重建和进行三角测量后合并点云。

1 个答案:

答案 0 :(得分:1)

单独进行三角测量然后合并不是一个好主意,因为如果其中一个三角测量错误,你怎么能说出来?相反,你应该同时从三个点进行三角测量。我假设您为每个三角测量定义了某种最小二乘问题,如

`argmin_{depth} D(ray_1)+D(ray_2) //for image_1 an image_2`

其中ray_ipoint_i的反投影, inverse(calibration_matrix)*point_i,其中D(.)为您提供3d点到a的距离射线。

我想你应该试试

argmin_{depth} sum_j D(ray_j) //for all your views image_1, ... , image_N

这样,您可以尝试添加M-estimator来过滤掉不良测量值。