【SFM】《Structure-from-Motion Revisited》

news2024/11/27 1:55:30

论文
论文代码
资料
cvpr2017 COLMAP

文章目录

      • 2. 本文贡献
        • 2.1 Scene Graph Augmentation 场景图增强
        • 2.2 Next Best View Selection下一个最佳视图选择
        • 2.3 鲁棒高效的三角化
      • 2.4 BA(Bundle Adjustment)
        • 2.4.1 参数化求解方法
        • 2.4.2 过滤
        • 2.4.3 再三角化(RT)
        • 2.4.4 迭代精化
      • 2.5 冗余视图处理
      • 3. summary

在这里插入图片描述
在这里插入图片描述

分为Correspondence Search和Incremental Reconstruction两个部分。

Correspondence Search流程如下:

对所有输入图像进行特征提取,一般使用SIFT算法。
使用提取的特征点描述子进行匹配。可以通过暴力方法穷举所有可能的匹配对,但在大场景情况下效率不高。
对匹配完成的图像对中的匹配点对进行精化,利用对极几何关系进行处理,去除误匹配点对。
Incremental Reconstruction流程如下:

初始化阶段,选择一对初始的匹配图像对。这个选择非常重要,对后面的重建过程影响很大。通常需要精心筛选。
利用对极几何关系分解获得初始图像对的位姿,并通过三角化生成三维点。
逐步将新的图像加入重建系统。对于每张新图像,通过PnP估计其位姿,再进行三角化生成新的三维点。
随后进行BA优化,校正位姿和三维点的误差。在BA过程中,会滤除外点,提高重建质量。
重复步骤3和4,直至所有图像都被加入重建系统。
总结:Correspondence Search流程主要是对图像进行特征提取和匹配的过程,用于获取匹配点对。Incremental Reconstruction流程则是根据匹配点对进行逐步的位姿估计、三维点生成和优化,实现增量式的重建过程。

2. 本文贡献

现有的SfM系统在重建的完整性和鲁棒性(completeness and robustness)上还是存在缺陷。本文对此进行了改进,主要贡献包括:

  1. 一种提升初始化和三角化鲁棒性的几何验证方法
  2. 一种最大化鲁棒性和准确性的下一最佳匹配图像选择策略
  3. 一种可以获得更为完整的场景结构且计算代价更小的鲁棒三角化方法
  4. 一种迭代BA、重三角化、外点滤除策略,显著提升重建完整性和精度,减轻漂移影响
  5. 一种用于挖掘密集图像集间的冗余视图的高效BA参数化方法

2.1 Scene Graph Augmentation 场景图增强
  1. 估计F矩阵:通过计算特征点的对极几何关系,得到图像对的基础矩阵F。如果内点数大于预设阈值NF,认为该图像对通过了几何验证。

  2. 估计H矩阵:针对一般场景,通过计算特征点的单应性关系,得到图像对的单应矩阵H,并统计内点数NH。如果NH/NF小于某个预设的阈值εHF,判定为一般场景。

  3. 估计E矩阵:对于经过相机校准的图像,估计图像对的本质矩阵E,并计算内点数NE。如果NE/NF大于某个预设的阈值εEF,判定为校准正确的情况。

  4. 判断场景类型:首先满足步骤2和3,称为一般校准场景。然后根据内点数NE和NF的比例判断场景类型。如果NE/NF大于某个预设的阈值εEF,判定为纯旋转(全景)场景;如果NE/NF小于某个预设的阈值εEF,判定为平面场景。

  5. 检测WTF图像:为了排除带有水印、时间戳、边框等干扰的图像,通过估计图像之间的相似变换并计算边缘内点数NS。如果某对图像的NE/NF或NE/NF超过预设阈值εEF,认为这是一对带有WTF的图像,不将其纳入场景图中。

  6. 场景图类型:根据场景图中图像对的情况,标记场景图的类型为出现最频繁的情形(一般、全景、平面)。

  7. 初始图像对选择:在构建场景图时,倾向于选择非全景的、经过相机校准的图像对作为初始图像对。

2.2 Next Best View Selection下一个最佳视图选择

下一最佳视图选择对位姿估计的质量、三角化的完整性与精度都有很大影响。作者提到,一个流行的方法是,找到一张能观察到最多已经三角化过的点的图像。但是,有时该图像的观测条件数并不好。有研究表明,如果匹配点的分布越均匀,那么其重建的结果也会更好。因此,作者提出一种使用多尺度格网来度量匹配点分布状况的方法。
在这里插入图片描述
如上图所示,作者将图像划分成不同尺度格网,然后对不同尺度的格网点分布状况进行打分,这样可以同时考虑到点的数量与分布的影响。总的来说,点的数量越多,分布越均匀,则该图像的得分越高。上图中纵向是点分布的差异与得分差异的对比,横向是点数量与得分的对比。分数的计算方式如下所示:
在这里插入图片描述
对不同匹配图像进行打分后,选择得分最高的图像作为下一最佳匹配图像。实验表明,使用该策略可以提升重建的鲁棒性和精度。

2.3 鲁棒高效的三角化

在这里插入图片描述

2.4.1 参数化求解方法
  使用Cauchy核函数作为鲁棒损失函数来应对outliers的影响。依据不同大小的重建问题,使用不同的求解策略。对于数百张图像的情况,使用sparse方法进行求解;对于更多张的图像,使用PCG进行求解。对不同问题,采用不同的相机模型进行求解。

2.4 BA(Bundle Adjustment)

是作者提出的一种优化策略,旨在减少计算代价。该策略包括参数化求解方法、过滤、再三角化和迭代精化等步骤。

2.4.1 参数化求解方法

为了应对异常值(outliers)的影响,作者使用Cauchy核函数作为鲁棒损失函数。根据重建问题的规模,采用不同的求解策略。对于数百张图像的情况,使用sparse方法进行求解;对于更多张图像,使用PCG进行求解。同时,针对不同的问题,采用不同的相机模型进行求解。

2.4.2 过滤

每次进行BA过程时,会将重投影误差较大的三维点进行过滤。在优化过程中,首先自由优化相机焦距和畸变参数,然后进行全局BA。在全局BA后,对视野不正常或畸变参数较大的相机进行剔除,视为错误估计。

2.4.3 再三角化(RT)

为了提高重建场景的完整性,对于之前被过滤掉但偏差不大的三维点,进行再三角化。此过程不提高三角化的阈值,只对误差低于过滤阈值的观测进行再三角化。

2.4.4 迭代精化

由于漂移或错误的位姿估计,通常会有许多三维点被错误地过滤掉。为了提高结果精度,采用两步BA的迭代精化方法。因此,进行迭代的BA、RT和过滤步骤,直到被过滤掉的观测点和再三角化点减少。在大多数场景下,第二轮迭代后会显著提升结果的精度。

2.5 冗余视图处理

在这里插入图片描述

BA是SfM性能的瓶颈。因此,作者针对大重叠度场景提出一种高效的相机分组优化策略,代替了昂贵的图割操作。与将很多相机聚类到一个子图上相比,作者将场景分割成很多小的、高度重叠的相机组,然后将每组相机使用一个(自由)相机来代替(这样可以减少BA优化过程中自由参数的数量)。
  通过图像之间的共视程度来决定哪幅图像归于同一组。具体的,对于一个具有n个三维点的场景,使用一个{0,1}向量来表示每张图像的观测,若观测到该三维点,则为1,否则为0。然后通过交集/并集来获得共视程度,如下式所示:

3. summary

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1166928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业大数据挖掘平台推荐

大数据挖掘平台适合哪些应用场景呢? 1、适合大型企业 分布式云计算,线性扩展,保证性能,与BI平台无缝整合,一键发布挖掘模型,模型库提高知识复用,减少重复投入,支持跨库…

当科技遇上神器:用Streamlit定制AI可视化问答界面

Streamlit是一个开源的Python库,利用Streamlit可以快速构建机器学习应用的用户界面。 本文主要探讨如何使用Streamlit构建大模型外部知识检索的AI问答可视化界面。 我们先构建了外部知识检索接口,然后让大模型根据检索返回的结果作为上下文来回答问题。…

UPS设备还只知道人工巡检?这个神器你一定要试试!

随着电子设备在我们的生活和工作中扮演越来越重要的角色,电力的可靠性变得至关重要。不间断电源系统作为一种关键设备,可以提供电力备份,以保障设备在电力中断或波动的情况下能够正常运行。然而,UPS设备的有效监控和管理对于确保其…

unity 使用TriLib插件动态读取外部模型

最近在做动态加载读取外部模型的功能使用了triLib插件,废话不多说直接干货。 第一步下载导入插件,直接分享主打白嫖共享,不搞花里胡哨的。 链接:https://pan.baidu.com/s/1DK474wSrIZ0R6i0EBh5V8A 提取码:tado 导入后第…

录屏软件免费版,精选3款,助你轻松录制!

录屏软件在今天的数字时代中扮演着重要的角色,无论是为了创建教育教程、分享游戏成就,还是记录计算机上的操作步骤。然而,许多用户面临付费和高级功能的限制,很难找到合适的免费录屏软件。那录屏软件免费版都有哪些呢?…

SpringBoot整合Activiti7——全局监听器(八)

文章目录 一、全局监听器事件类型配置方式(选)日志监听器代码实现xml文件创建全局监听器全局配置类测试流程部署流程启动流程 一、全局监听器 它是引擎范围的事件监听器,可以捕获所有的Activiti事件。 事件类型 ActivitiEventType 枚举类中包含全部事件类型 配置方…

【接口测试】Postman登录接口鉴权实战案例,跟着大牛通关...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 在做接口测试的时…

双十一快递“当天达”?宏电助力物流分拣系统高效运行

​众所周知,每年双11都是快递业务的高峰期,是对各大物流企业运输能力的一次大考。为了持续提升快递配送的速度,自动化物流仓储建设的速度也在不断的加快,而在一个完整的自动化物流仓储系统中,输送分拣设备是物流自动化…

掌握视频剪辑技巧:高手教您如何批量减少片头时长并调整播放倍速

随着社交媒体的普及,视频已经成为人们传递信息、表达观点的重要方式。而视频剪辑则是在这个过程中不可或缺的一环。在视频剪辑过程中,时长是一个重要的因素。有时候,我们需要对视频进行裁剪,以减少其时长。今天,我们讲…

分享一下在微信小程序里怎么做一个投票链接

在当今信息化社会,投票已成为各行各业收集意见、汇聚智慧的重要手段。传统的投票方式往往需要投入大量人力物力,而如今,借助微信小程序,我们可以在几分钟内创建一个高效、便捷的投票平台。本文将详细介绍如何在微信小程序中添加投…

OpenCV检测圆(Python版本)

文章目录 示例代码示例结果调参 示例代码 import cv2 import numpy as np# 加载图像 image_path DistanceComparison/test_image/1.png image cv2.imread(image_path, cv2.IMREAD_COLOR)# 将图像转换为灰度 gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用高斯模糊消除…

喜讯!云起无垠获评GEEKCON 2023“前沿突破奖“

近日,“GEEKCON 2023”中国站的比赛在上海西岸艺术中心成功举办。这场活动围绕着人工智能与专业安全的前沿技术展开了深入的探讨和实践活动。本次活动特设五大系列专场:“对抗研判 AVSS挑战赛”、“深蓝洞察之特别披露”、“年度主题大碰撞:G…

分享74个Python管理系统源代码总有一个是你想要的

分享74个Python管理系统源代码总有一个是你想要的 源码链接:https://pan.baidu.com/s/1JXFePOOk_ot4Jdu6_RylOg?pwd8888 提取码:8888 项目名称 ais系统后台项目,基于python flask框架 BNUZ教务系统认证爬虫Python语言实现,你…

java服务器环境配置以及项目搭建

一. 内容简介 使用Mavn聚合工程,springboot整合spring,springmvc,mybatis框架,完成项目搭建 二. 软件环境 2.1 java 1.8.0_144 2.2 mysql Ver 8.0.30( 8.10的好像出问题,我给重装了) 2.3 IntelliJ IDEA 2023.1 2.4 Apache Maven 3.9.5 …

冬天女儿的羽绒服就选它了,哈哈很喜欢

长款设计感满满的羽绒服 真的一下子就戳中了我的心巴 90白鸭绒+杜邦三防工艺+精细压线 厚实保暖不臃肿,粉色撞色甜美又可爱

【MongoDB】索引 - 单字段索引

MongoDB支持在集合文档中的任意字段上创建索引,默认情况下所有的集合都有一个_id字段的索引,用户和应用可以新增索引用于查询和操作。 一、准备工作 这里准备一些学生数据 db.students.insertMany([{ _id: 1, name: "张三", age: 20, clas…

springboot整合七牛云oss操作文件

文章目录 springboot整合七牛云oss操作文件核心代码(记得修改application.yml配置参数⭐)maven依赖QiniuOssProperties配置类UploadControllerResponseResult统一封装响应结果ResponseType响应类型枚举OssUploadService接口QiniuOssUploadServiceImpl实现…

劳务派遣派遣人员如何缴纳保险

《劳动合同法》规定:劳务派遣协议应当约定派遣人员的社会保险费的数额与支付方式以及违反协议的责任。可见,由哪一方为劳务派遣人员缴纳各项社会保险是由劳务派遣公司和实际用工单位协商确定的。但不管如何约定,劳务派遣单位或用工单位都必须…

倾斜摄影三维模型的根节点合并的文件大小与质量关系分析

倾斜摄影三维模型的根节点合并的文件大小与质量关系分析 倾斜摄影三维模型的根节点合并过程涉及大量的数据,包括高分辨率图像和点云信息。在进行根节点合并时,文件大小和质量之间存在一定的关系。本文将分析倾斜摄影三维模型的根节点合并的文件大小与质量…

机器学习笔记:RNN值Teacher Forcing

1 基本介绍 Teacher forcing是一种在训练循环神经网络(RNN)时使用的技术,尤其是在序列生成任务中,如机器翻译、文本生成或语音合成。这种方法的目的是更有效地训练网络预测下一个输出,给定一系列先前的观察结果。 1.…