3

我正在尝试从 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描述)。

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

4

1 回答 1

3

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

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

分解有扩展以处理丢失的数据。然而,该领域似乎已经将捆绑调整作为黄金标准。

可以在此处找到有关如何实现所需目标的出色教程,这是对工作应用程序进行数年研究的结晶。从投影重建到度量升级。

于 2014-10-24T05:00:49.987 回答