三维重构学习笔记(2):理解SFM

在学习笔记(1)中,简略提及了SFM,本部分主要记述我在学习SFM过程中对于一些小问题的理解。本部分的学习主要参考了(“aipiano”关于SFM的系列文章),以及CVPR的文章“Structure-from-Motion Revisited”(以下简称Revisited)。

1、SFM算法

1.1 算法流程

Revisited 中介绍的增量式的SFM的流程如下:
在这里插入图片描述

  1. Feature extraction:特征提取包括多种方法(SIFT,SURF,还有通过结构光源寻找的特征匹配点等)
  2. Matching:将上述过程中寻找到的特征点匹配起来
  3. Geometric verification:几何验证的原因是:匹配起来的特征点不一定完全准确对应空间中的点。SFM利用仿射几何通过估计“匹配图片之间特征点”的变换进行几何验证。几何验证的内容主要是:通过RANSAC等方法去除失配点使本征矩阵更精确OpenCV中函数findEssentialMat用于计算焦距与光心是一致的相机的本征矩阵,本征矩阵的作用是可以通过分解得到两个相机之间的相对变换关系(相对旋转和平移的关系)。(一般地,两幅图片中存在5对匹配点即可求出本征矩阵请参考此博客
  4. Initialization:初始化三维点云,也就是通过双目重构方法对图像序列的前两幅图像进行重构
  5. Image registration:图像匹配。两张图片的三维重构已经完成,现在需要添加新的图片优化点云。添加新的图片之后(图片编号为1,2,3等,此处以3为新图片进行理解图片匹配),将3与2进行匹配,其中得到的匹配点必定存在一些1,2,3共有的,还有2,3独有的。那么2,3 独有的匹配点就是新的匹配点。
  6. Triangulation:图1,2,3中共有的匹配点的特点是:空间坐标已知,且知道这些点在图3中的像素坐标。那么就可以通过OpenCV提供的solvePnPRansac得到第三个相机关于世界(世界的坐标系为了方便计算假设与相机1的坐标重合)的坐标。
  7. Bundle adjustment:光束平差法优化三维点云以及相机相关的矩阵,使变换到像素坐标处误差最小。
  8. Outlier filtering:滤除明显不匹配的点。这一点Revisited中没有介绍,我认为这个地方是滤除离群点的。

1.2 疑问

问题一:SFM中关于相机1坐标系与世界坐标系重合的假设与张正友的相机标定中的假设目标在世界坐标系 z = 0 z=0 z=0处有什么联系,会怎样影响SFM的相机标定?

我认为,张正友相机标定得到的参数中,相机内参不受坐标系变换的影响,并且在SFM算法中,计算本征矩阵时,假设相机1与世界坐标系重叠对于内参数没有任何影响。并且SFM中计算本征矩阵时只用到了匹配点以及相机内参数(焦距和中心点)。得到本征矩阵之后,可以通过其它的数学分解等方式得到相机2关于相机1(世界坐标系) 的坐标。
所以本质上两者是不矛盾的。

问题二:图片3(假设为新加入的图片)相对世界的坐标系得到之后,通过三角测量得到2,3独有的匹配点(之前不存在的)的世界坐标,然后添加到三维点云中。类推到图4情况如何?

类推到图4时,已知数据为:1,2,3的世界坐标,匹配点的并集(1配2并2配3)计算得到的三维点云(也就是匹配点的世界坐标)。
图4与图3寻找匹配点,得到的匹配点中必定存在着空间坐标已知的点(也就是2,3匹配点中与3,4在重合的点)。
这时候就知道了两个条件:one:图4中一部分点对应的空间位置;two:这一部分知道空间位置的点在图4中的像素坐标。知道了这两个条件就可以调用OpenCV中的函数solvePnPRansac得到新图片对应的世界坐标了,然后通过三角测量添加新的独有的点到三维点云。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值