c++ - 在 Structure from Motion 中进行三角剖分后

标签 c++ opencv 3d point-cloud-library

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

  1. 特征匹配
  2. 基本矩阵
  3. 基本矩阵
  4. 相机矩阵P
  5. 通过三角测量,我得到了所有匹配要素的 Point3d 类型值。我将其存储在 pointcloud 变量中。

我希望,我做对了,但从这里开始我很困惑,无法继续前进。接下来我必须做什么?

最佳答案

假设您的计算在这一点上是正确的,您就完成了两个 View 。

从现在开始,您可以通过多种方式来改进重建:

  1. 优化(Bundle Adjustment)非常常见,尽管您只有两个 View (带有相机参数)、匹配点对应关系及其 3D 点。
  2. 计算密集点云,例如使用 cmvsincremental computation
  3. 在图像之间添加更多具有更多点对应(或轨迹)的 View 。为此,您可以使用 Perspective-n-Point problem 的解决方案之一。 .据我所知,RANSAC 论文中假定的方法 (P3P) 非常常见。如需更多信息,请参阅原文 RANSAC paper或来自 Changchang Wu 的信息.

对于最后一个点,优化点和相机参数非常重要,以便为添加的下一个 View 获得良好的解决方案。否则,您会看到重建过程中出现漂移。

关于c++ - 在 Structure from Motion 中进行三角剖分后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31587734/

相关文章:

javascript - 将 .obj 转换为 .js 文件

python - 绘制用 sklearn 制作的回归量的 3d 图

c++ - 无法打开包含文件 : 'cpprest/http_client.h'

c++ - 简单的 C++ 文件 I/O 问题

c++ - QDataStream读取到QVector

Android NDK SDL 弃用

java - 使用 OpenCV 在 Android 上进行数字识别的训练数据

iphone - 微笑的瀑布

python - 每当使用 import cv2 时,OpenCV 都会出错

3d - 在 3ds max 中以 16 位分辨率获取 z-Buffer