您当前的位置: 首页 > 

Structure-from-Motion Revisited

发布时间:2020-04-20 07:00:00 ,浏览量:0

点击上方“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视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加群或投稿

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    105695博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0561s