三维重建学习(七)SFM
三维重建学习(七)运动恢复结构(SfM)系统解析
回顾
单应矩阵
单应矩阵–空间平面在两个摄像机下的投影几何。
捆绑调整BA(Bundle Adjustment)
- 恢复结构和运动的非线性方法。
P3P求解摄像机位姿
核心思路:
- 求解A,B,C三点在当前摄像机坐标系上的坐标;
- 通过A,B,C在当前摄像机下的坐标以及其在世界坐标系下的坐标,估计摄像机相对于世界坐标系的旋转与平移。
SfM系统
输入输出
输入:多张图片
输出:3D点云(structure),摄像机位姿(motion)
问题描述
已知:三维场景的m张图像以及每张图像对应的摄像机内参数矩阵
求解:
- 三维场景结构,即三维场景点坐标;
- m个摄像机的外参数及
特征提取SIFT
相当于为每个像素提取一个梯度方向,并累加。所有梯度方向做累加,看最大的方向朝向。将整个图形旋转同一方向即可对应。
不直接计算像素对比,而是计算梯度对比。
特征匹配
但是里面的点存在错误的匹配点,也就是说数据收到异常值污染。
可以用RANSAC模型拟合方法解决。
2视图欧式结构恢复
三角化:
线性法:
非线性法:
基于增量法的SfM系统(多视图)
预处理
求解SfM
1计算对应点的Tracks
track就是一个点在多张图像里的连接关系。
本质上就是选择能在多张图上匹配的点,track大说明这个点在更多图上出现,更适合作为点云。
2计算联通图
3 选取初始的两张图
也就是在连通图G中选取一条边e。也就是第一张和第二张图片开始重建。 是基础中的基础,选择会严格。
**要求:**所有点对应点三角化时射线夹角中位数不大于60度不小于3度。
角度太小,深度误差很大。角度太大,容易出现遮挡。
4 5 6 两视图重构
4:鲁棒估计e所对应的本质矩阵E
5:分解本质矩阵E,得到两张图片摄像机的位姿(即外参数)
6:三角化的点,作为初始的重建结果
7 删除G中的边e
推进。表示这副图的相对匹配点被使用。
8 增加视图到系统实现多视图重构
如果G中还有边:
- 从G中选取e满足最大化:提高信息利用效果。
- 用PnP方法估计摄像机位姿(外参数):估计新的摄像机的位姿
- 三角化新的tracks
- 删除G中的边e
- 执行Bundle Adjustment 捆绑调整。误差平均。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CJH's blog!