三角测量后如何合并点云

how to merge point cloud, after triangulation

我正在研究动态结构。到目前为止,我已经完成了以下步骤。

  1. 特征匹配
  2. 基本矩阵
  3. 基本矩阵
  4. 相机矩阵P
  5. 通过三角测量,我得到了所有匹配要素的 Point3d 类型值。我将其存储在 pointcloud 变量中。
  6. Bundle调整,优化姿态和点云。
  7. 添加更多视图进行重建。

问题出现在7,比如有3张图片,即1,2,3。 point_1 对应 point_2。 point_2 对应 point_3。 point_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不相等。

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

分别三角测量然后合并不是一个好主意,因为如果其中一个三角测量错误,您怎么知道?相反,您应该同时从三个点进行三角测量。我假设您已经为每个三角剖分定义了某种最小二乘问题,例如

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

其中 ray_ipoint_i 的反投影, inverse(calibration_matrix)*point_i,其中 D(.) 给出了距离3d 指向一条射线。

我觉得你应该试试

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

这样,您可以尝试添加一个 M-estimator 来过滤掉错误的测量结果。