点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

本文由知乎作者fishmarch授权转载,不得擅自二次转载。原文链接:https://zhuanlan.zhihu.com/p/54197361

引言

SfM 主要分为了增量式、层次式、全局式。目前,增量式是最为流行的。

SfM综述

1.关联搜索

由于图像是无序的,所以需要将有重叠关系的图像关联起来,该部分输出为经过几何验证的关联图像集,及地图点对应的图像投影点。主要包含了一下几步:

特征提取

特征点以及其描述子。例如sift、surf、orb等特征。

匹配

输出可能具有重叠关系的图像对集合,及其相对应的特征

几何验证

验证图像对的重叠关系。

根据不同的空间构型计算不同的几何关系:单应矩阵H(纯旋转或平面特征)、本质矩阵E和基础矩阵F(未标定)。

足够的内点时通过几何验证。因为外点的干扰,使用RANSAC算法。

输出为经过验证的图像对,及其对应的内点,也可包含图像间几何关系。该阶段输出也被称为scene graph,图像为顶点,关联关系为边。

2.增量式重建

输入为scene graph,输出为注册的图像位姿和地图点

初始化

选择合适的初始图像对至关重要。在有较多重叠图像的位置初始化使重建结果更鲁邦准确。而在较少重叠图像初初始化,将使运行速度较快。

图像注册

求解PnP将新的图像添加进来。由于外点的影响,使用RANSAC等方法。

三角化

新注册的图像通过三角化可提供更多地图点

Bundle Adjustment

图像注册和三角化是两个分离过程,都会产生误差,通过BA来减少该误差。

挑战

目前的SfM算法在建图完整性,鲁棒性等方面经常出现问题。

漏注册、错误注册、累计误差等。

原因:

1:关联搜索中由于近似匹配产生了不完整的scene graph,因此没有足够的连通性,且影响精度。

2:重构阶段的失败。由于场景结构的丢失或错误。图像注册与三角化又是一个相互捆绑的问题。

本文贡献

1.Scene Graph 改进

本文采用多模型几何验证策略。

首先,计算基础矩阵F,如果内点较多( ),通过验证。

对同一对图像,计算单应矩阵H下的内点数( )。如果 ,认为相机发生了移动(以纯旋转假设估计效果不好),为一般场景。

对于标定过的计算本质矩阵E,及内点数( )。如果 ,认为标定正确。

如果标定正确,且相机发生了位移,分解本质矩阵E,三角化相应内点,并且计算夹角 ,该夹角可以区分纯旋转和平面特征。

由于网上的照片经常含有水印,时间戳,边框等,处理办法为:计算相似变换下图像四周上的内点,如果内点较多泽舍弃。

对于可靠的图像对,在场景图中标记了类型(一般、纯旋转、平面特征)以及最好模型对应的内点。

在初始化时选择标定好的,非纯旋转的图像对。对于纯旋转,建图过程中并不进行三角化。

2.下一最好图像对(next best)的选择

下一图像对选择至关重要,影响位姿的估计与三角化的精度。

一般的方法是选取看到最多地图点的图像。

实验证明PnP的精度依赖于地图点的数量以及其分布情况。

候选图像:同时可以看到至少 个地图点的所有未被注册的图像。在候选图像中记录地图点数目及其分布。数目较多且分布均匀的将优先选择。

将每张图像划分网格,每个格子用空和满来表示。当某一格子中当点变为可见时,该格子标记为满,且该图像点评分按权重增大。

点越多越均匀,评分越高。在每层中,每个格子内的点只计算一次,权重即为当前层格子的尺寸,具体来说上述四个评分的计算:

3.鲁邦且高效的三角化

为了应对外点,使用了RANSAC。

计算夹角,需要足够大:

两图像中对应的深度值为正:

重投影误差足够小:

4.Bundle Adjustment

每帧之后做一个局部BA,增长一定规模后做全局BA。

参数化

使用Cauchy核函数应对外点,小规模中使用直接求解器,大规模求解使用PCG

滤除

BA后对于不满足模型的观测滤除掉(重投影误差较大)

对每个地图点要满足最小的三角化夹角

全局BA后还要检查退化的图像(相机参数不正确,仅看到外点等)

优化中并没有对相机参数做限制

再三角化

pre-BA RT

post-BA RT

迭代优化

BA、RT、filtering迭代执行,直到滤除对观测和RT点较少

5.分组优化

BA是SfM对一个主要瓶颈。

将图像分组,分成很多小的,较多重叠的组。每组内认为是同一个相机。

在优化过程中,优化较多的是那些新加入的,其它的则仅仅是减小漂移。因此将图像分组优化会更搞笑。

判断两图像的共视程度:

其中向量 每个位描述了该图像中是否看到了对应的地图点。

将图像按照看到的地图点数量排序 ,构建图像组时,从中选择第一个(地图点最多的),接下来找到 最大的。如果 则将该图像加入这一组。否则创建新组。

组内图像BA:


参考文献:

[1] Schönberger, J. L., & Frahm, J. M. (2016). Structure-from-Motion Revisited. In IEEE Conference on Computer Vision & Pattern Recognition.

上述内容,如有侵犯版权,请联系作者,会自行删文。

推荐阅读:

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-知识星球和学术交流群已成立

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导,830+的星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加群或投稿

Structure-from-Motion Revisited相关推荐

  1. 【SLAM】SfM论文推荐(ICCV,CVPR,ECCV等)Structure from Motion

    文章目录 SfM 相关文献 增量式SfM: 全局式SfM: 混合式SfM: SfM 相关文献 增量式SfM: N. Snavely, et al. Modeling the World from In ...

  2. Structure from motion 问题

    1 问题描述 已知一个图像库,里面有很多从不同角度不同具体拍摄同一物体的照片,求 构建该物体的3D模型 找出这些图像的拍照位置 如下图所示: 2 用数学语言描述问题 输入:一批图像,隐含着许多对应点 ...

  3. 【论文阅读笔记】语义三维重建CVPR2011:Semantic Structure from Motion

    前文回顾 [论文阅读笔记]Past, Present, and Future of Simultaneous Localization and Mapping [论文阅读笔记]语义SLAM语义映射模型 ...

  4. 从内外参到 Structure From Motion(SFM)

    去年,我有幸了解到image-based modeling的相关知识.作为一个大三本科生,虽说自己此前也做过一些相关工作,但是要自己实现Structure from motion,确实是费尽了我的脑袋 ...

  5. 2020年ECCV论文DeepSFM: Structure From Motion Via Deep Bundle Adjustment阅读笔记

      这篇博客分享的是2020年发表于ECCV上的一篇论文<DeepSFM: Structure From Motion Via Deep Bundle Adjustment>. 论文地址: ...

  6. Structure From Motion(SFM)入门讲解

    概念: Structure From Motion(SFM) 是从一系列包含视觉运动信息的多幅二维图像序列中估计三维结构的技术. SFM和立体视觉的区别 在立体视觉中,两个相机之间的相对位姿是通过标定 ...

  7. SfM: Structure from motion

    SfM Structure from motion (SfM) is the process of estimating the 3-D structure of a scene from a set ...

  8. Structure from Motion 资料总结

    在学习SFM过程中查看到的网站.博客内容链接集合 一.SFM开源算法和使用说明 1.最完善的开源视觉重建软件VisualSFM,由ChangchangWu博士编写; 2.支持VisualSFM运行的C ...

  9. structure from motion

    1.介绍 SFM(structure-from-motion)算法是一种基于各种收集到序列图片进行三维重建的离线算法.顾名思义是从运动中(不同时间拍摄的图片集)恢复物体的三维结构,这需要估计出图片的R ...

  10. SFM(structure from motion 从运动恢复结构)和MVS(multi-view stereo 多视图立体视觉)

    主要目的: SFM是可以重建稀疏点云的和相机参数(内外), 主要目的是:estimating the geometry of the scene and camera poses from a set ...

最新文章

  1. python.day.10——面向对象(二)
  2. 算法笔记之分支限界法
  3. fieldset在ie8下的margin\padding bug规避
  4. 笔记-项目风险管理-风险应对
  5. context:component-scan扫描使用的use-default-filters
  6. Jetty 的工作原理以及与 Tomcat 的比较
  7. 【IEEE独立出版/EI稳定检索】信息科学、计算机技术与交通运输征稿倒计时
  8. oracle sql 导入mysql数据库备份_使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复...
  9. VMware VCenter Converter Standalone 6.2.0下载地址
  10. 在excel中创建日历
  11. Android之shape属性设置
  12. 快讯 | 科技部公布首批国家人工智能创新平台名单,BAT+科大讯飞入选
  13. OA系统有哪些功能?在企业中发挥怎样的作用?
  14. 台式计算机排行榜2018,CPU天梯图性能排行榜 台式电脑CPU天梯图2018年4月最新版...
  15. 使用nssm将STAF安装为windows系统服务
  16. 华为虚拟服务器密码忘记怎么办,手机云服务器密码忘记了
  17. 《非暴力沟通两性篇》读书笔记
  18. 丹佛斯变频器al13故障_丹佛斯变频器常见故障维修
  19. iOS7适配问题总结
  20. 引擎开发_ 碰撞检测_GJK 算法详细介绍

热门文章

  1. JavaScript 各种遍历方式详解
  2. 手把手教你写移动端瀑布流控件布局篇
  3. 双系统启动boot.ini文件的秘密
  4. 一定要加强SQL数据库SA
  5. leangoo敏捷工具卡片关联上线
  6. scrum看板工具做问题跟踪
  7. 某大厂女程序员哀叹:还不到三十岁,父母竟让自己和一个离异有娃的男人相亲!
  8. Spring Cloud架构的各个组件的原理分析
  9. 高并发系统三大利器之限流
  10. 程序员的工资VS普通人的工资...