structure from motion
来源:互联网 发布:淘宝内部优惠券可信吗 编辑:程序博客网 时间:2024/06/01 10:08
1. 概念
Structure from motion 指的是由图像生成3维点云以及相机姿态,即:
- 输入:一系列图像,拍摄同一场景
- 输出: 每一张图像对应的相机位置和朝向, 场景中的3D点云
2. 算法流程
- 获取相机内参矩阵
对输入图像利用其内部的编码信息获取相机的焦距,计算内参矩阵 - 对相邻图像两两计算匹配特征点
对于3D重建而言, 一般是首先用两张图像作为初始化建出来一个初始的点云,之后不断添加后续的图像进入,并添加入点云。 那么具体添加那一张图像可以采用的方法是:看已有的图像中哪一个与已有点云中的点匹配最多就先选哪张。 - 计算两图像之间的内参矩阵F
关于fundamental matrix的推导可以使用Multiview geometry 242页 9.2.1中的几何推导以及9.2.2中的算术推导,算术推导证明如果两张图像的拍摄是纯相机平移的话,fundamental matrix是计算失败的。计算内参矩阵可以使用8点算法。具体内容参看Multiview geometry 282页 Algorithm 11.1,值得注意的是,在进行8点算法之前,需要使用RANSAC算法对特征点进行提纯(RANSAC算法中的模型使用计算基础矩阵的8点算法,参见Multiview geometry 121页 Algorithm 4.5),同时在输入计算基础矩阵之前,需要对所有的特征点进行normalize,这里是必须要做的,原因参见Multiview geometry 108页,具体做法使用109页 Algorithm 4.2. - 计算相机的essential matrix
使用公式E=K′TFK 其中K 与K′T 分别对应于两个视角的内参矩阵 - 利用essential matrix计算两个相机之间的外参,即[R|t]矩阵
这里参见Multiview geometry 258页 9.6.2. 但是由于符号的关系,会输出出来4中可能的[R|t]矩阵,这个时候我们将所有2D的点利用这四种[R|t]映射到3D空间中去,看哪一种[R|t]对应的3D点的z深度方向全部是正向的。因为准确的[R|t]场景点都在相机朝向的正前方。 - 利用triangular来得出3D点的坐标
参见Multiview Geometry 310页,由于匹配2D点的坐标是有误差的,因此通过对极几何穿过相机中心与2D点发出的射线并不能精确相交于3D点,因此需要做优化得到唯一的3D点坐标。方法有线性法和非线性法两种。
线性法直接优化x×PX=0 x′×PX=0 ,写成AX=0 的形式,最终用DLT以及SVD方法求解。线性法输出的结果不是很精确,最重要的是并不是projective invariant。
非线性法优化重投影点到实际点的坐标,并转换为极线到实际观测的2D点的垂直距离最短。这样做事推荐的triangular方法,参见bible 313页12.3, 具体的算法参见315页12.5. - 利用 bundle adjustment 来merge不同的3D点云
目前我们已经知道两两图像之间的[R|t],比如1 2之间的, 2 3之间的,如何将1,2,3放入同一个参考坐标系,需要使用BA——数学上是最小化投影误差,让所有得出的[R|t]与3D点估计输出的2D点与实际观测点位置最小化。
这里的做法是这样的:
首先建立一个graph的数据结构,记录两个图像之间的匹配特征点 内参矩阵 外参矩阵 以及为即将得到的3D点预先分配好空间
几个概念的区分
- fundamental matrix与homography的区别
fundamental matrix描述的是对极几何的关系,3D场景点在两个视角图像的投影点之间满足的关系,与3D场景无关。具体的,已知基础矩阵F以及3D场景点在一张图像上的映射点x,那么在另外一张图上的映射点的位置应该在基线l=Fx 上寻找。因此,fundamental matrix表征的是一种点与极线一一对应的关系。以外,fundamental matrix的秩为2,homography也可以称作是fundamental matrix的一种特殊情况, 这一点可以参见基础矩阵的几何意义(Multiview geometry 242页 9.2.1)。 Homograohy是指点与点之间的一一对应的关系,其为满秩3, 而且使用场景限于描述平面与平面之间的映射关系
参考链接: https://www.quora.com/Computer-Vision-What-is-the-relationship-of-homography-and-the-fundamental-matrix
阅读全文
1 0
- Structure from motion
- Structure from motion .
- structure from motion
- structure from motion
- structure from motion
- Structure From Motion 笔记
- Structure from Motion (SfM)
- structure from motion
- Structure from motion
- structure from motion
- Structure from Motion Using OpenCV
- A Structure from Motion System
- Structure from Motion 资料总结
- Structure from motion学习笔记(一)
- 运动恢复结构(Structure from Motion)
- Structure from motion(SFM)原理
- 三维重建——Structure from motion
- Structure from Motion 很好的学习资料及代码
- 深入理解 cnn 中pooling 的重要作用
- 在 Laravel 5.1 中使用 Intervention Image 包将图片颜色变灰
- 学习方法
- cocos creater打印日志
- Maven插件声明顺序的微妙差别
- structure from motion
- MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in funct
- 图论总结 上
- Android for Bluetooth Connection State
- ZOJ Problem Set
- html中使用Ajax与后台接口api交互(以登录功能为例)
- 关于java中向数据库中插入数据时,报错Caused by: java.lang.NullPointerException的问题
- Struts 2中的 constant 详解
- DOM简易购物车实例