我正在尝试使用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我可以估计深度并找到结构和运动。但是,为了做到这一点,所有点都必须在所有视图中都可见,而对于我的图像则不是这样。如何估算所有视图中不可见的点的深度?
答案 0 :(得分:1)
这不是关于Matlab的问题。这是一个算法。
当您未观察到所述图像中的点的观察时,在数学上无法估计图像中3D点的位置。
分解的扩展可用于处理缺失的数据。然而,该领域似乎已经融合为Bundle Adjustment作为黄金标准。
可以找到关于如何实现所需目标的优秀教程here,这是对工作应用程序多年研究的结晶。从投影重建到度量标准升级。