三维重建——Structure from motion
来源:互联网 发布:怎样走网络群众路线 编辑:程序博客网 时间:2024/06/05 18:33
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]场景点都在相机朝向的正前方。 - 利用 bundle adjustment 来merge不同的3D点云
目前我们已经知道两两图像之间的[R|t],比如1 2之间的, 2 3之间的,如何将1,2,3放入同一个参考坐标系,需要使用BA——数学上是最小化投影误差,让所有得出的[R|t]与3D点估计输出的2D点与实际观测点位置最小化
几个概念的区分
- 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
阅读全文
0 0
- 三维重建——Structure from motion
- 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)原理
- 第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV
- POJ 1986 Distance Queries LCA离线算法tarjan
- UDP局域网内广播消息(转载)
- MessageBox用C/C++实现一个提示信…
- magento2 拿到sql后,导入发现错误:Constraint "quote_to_store" references table that does not exist.
- (转载)opencv+GPU
- 三维重建——Structure from motion
- wchar_t与char转换(转载)
- 如何更改VS2010的[默认开发语言]默…
- hyperledger fabric0.6 结构分析(三)
- error C2360: stu1的初…
- 函数名:kbhit():检查当前是否有键…
- linux:终端(Terminal)基本概念&终端登录过程详解
- struct和typedef struct的区…
- vs1015配置opencv