我正在尝试从 MATLAB 中的一组未校准照片进行 3D 重建。我使用 SIFT 来检测图像之间的特征点和匹配。我想先进行投影重建,然后使用自动校准将其更新为公制。

我知道如何通过计算基本矩阵、相机矩阵和三角剖分来估计 2 个图像的 3D 点。现在说我有 3 个图像,a、b 和 c。我计算图像 a 和 b 的相机矩阵和 3D 点。现在我想通过添加图像 c 来更新结构。我通过使用与图像 c 中的 2D 点匹配的已知 3D 点(从 a 和 b 计算)来估计相机矩阵,因为:

但是,当我重建 b 和 c 之间的 3D 点时,它们不会与来自 a 和 b 的现有 3D 点相加。我假设这是因为我不知道这些点的正确深度估计(由上面公式中的 s 表示)。

使用 factorization method of Sturm and Triggs 我可以估计深度并找到结构和运动。但是,为了做到这一点,所有点都必须在所有 View 中可见,而我的图像并非如此。如何估计在所有 View 中都不可见的点的深度?

最佳答案

这不是关于 Matlab 的问题。它是关于一个算法的。

当您看不到图像中点的观察时,在数学上不可能估计图像中 3D 点的位置。

有分解的扩展来处理缺失的数据。然而,该领域似乎已经收敛到 Bundle Adjustment 作为黄金标准。

here 是关于如何实现您想要的目标的优秀教程,它是对工作应用程序进行数年研究的结晶。从投影重建开始到度量升级。

关于matlab - 未校准的多 View 重建深度估计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26203239/

10-12 22:43