一、前言
运动结构 (SfM) 是从一组 3-D 图像估计场景的 2-D 结构的过程。此示例演示如何从两个图像估计校准相机的姿势,将场景的三维结构重建为未知比例因子,然后通过检测已知大小的对象来恢复实际比例因子。
此示例演示如何从使用相机校准器应用校准的相机拍摄的一对 3-D 图像重建 2-D 场景。该算法包括以下步骤:
-
匹配两个图像之间的一组稀疏点。有多种方法可以找到两个图像之间的点对应关系。本示例使用该函数检测第一个图像中的角,并使用 将它们跟踪到第二个图像中。
-
估计基本矩阵。
-
使用该函数计算相机的运动。
-
匹配两个图像之间的一组密集点。使用减少重新检测点以获得更多积分。然后使用 将密集点跟踪到第二个图像中。
-
确定匹配点的三维位置。
-
检测已知大小的物体。在这个场景中,有一个地球仪,其半径已知为 10 厘米。用于在点云中查找地球。
-
恢复实际比例,从而进行指标重建。
二、读取一对图像
将一对图像加载到工作区中。
三、加载相机参数
镜头畸变会影响最终重建的准确性。您可以使用该功能消除每个图像的失真。此过程可拉直因镜头径向畸变而弯曲的线条。
四、查找图像之间的点对应关系
检测要跟踪的良好特征。减少以检测更少的点,这些点将更均匀地分布在整个图像中。如果相机的运动不是很大,那么使用 KLT 算法进行跟踪是建立点对应的好方法。
五、估计基本矩阵
使用该函数计算基本矩阵并找到满足极性约束的内在点。
六、计算相机姿势
计算第二个相机相对于第一个相机的位置和方向。请注意,这是一个翻译单位向量,因为翻译只能按比例计算。
七、重建匹配点的三维位置
使用较低的图像重新检测第一个图像中的点以获得更多点。将新点跟踪到第二个图像中。使用该函数估计与匹配点对应的 3-D 位置,该函数实现了直接线性变换 (DLT) 算法 [1]。将原点放在与第一个图像对应的相机光学中心。
八、显示三维点云
使用该函数可视化相机的位置和方向,使用该功能可视化点云。
九、将球体拟合到点云以找到地球
通过使用函数将球体拟合到 3-D 点来查找点云中的地球。
十、场景的度量重建
地球的实际半径为10厘米。现在,您可以确定 3D 点的坐标(以厘米为单位)。
十一、总结
此示例展示了如何从使用校准相机拍摄的两张图像中恢复相机运动并重建场景的 3D 结构。
十二、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
打开下面的“example.mlx”文件,点击运行,就可以看到上述效果。
程序下载:基于matlab使用校准相机拍摄的两张图像中恢复相机运动并重建场景的3D结构资源-CSDN文库