三角测量后如何合并点云
how to merge point cloud, after triangulation
我正在研究动态结构。到目前为止,我已经完成了以下步骤。
- 特征匹配
- 基本矩阵
- 基本矩阵
- 相机矩阵P
- 通过三角测量,我得到了所有匹配要素的 Point3d 类型值。我将其存储在 pointcloud 变量中。
- Bundle调整,优化姿态和点云。
- 添加更多视图进行重建。
问题出现在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_i
是 point_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
来过滤掉错误的测量结果。
我正在研究动态结构。到目前为止,我已经完成了以下步骤。
- 特征匹配
- 基本矩阵
- 基本矩阵
- 相机矩阵P
- 通过三角测量,我得到了所有匹配要素的 Point3d 类型值。我将其存储在 pointcloud 变量中。
- Bundle调整,优化姿态和点云。
- 添加更多视图进行重建。
问题出现在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_i
是 point_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
来过滤掉错误的测量结果。