热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

主流SFM处理方式的梳理

SFM是什么?SFM即Structure-from-motion运动结构重建,从大批量图像数据出发,通过相关处理,获取目标

SFM是什么?

SFM即Structure-from-motion运动结构重建,从大批量图像数据出发,通过相关处理,获取目标图像集3D几何(结构)和摄像机姿态(运动)信息,主要处理流程可分为如下几步:特征提取;特征匹配;姿态估计;束调整。具体处理流程参见下图:
sfm处理流程图
本文主要聚焦于对不同SFM处理方式的梳理总结,对SFM原理部分,可参考该博主的文章:SFM原理简介
总体来说,现有的主流SFM方式可分为如下四类:
全局式SFM
增量式SFM
分层式SFM
混合式SFM
其中后两种处理方式,是近些年来随着三维重建数据量的不断攀升,而逐渐兴起的针对大规模数据处理而诞生的新的处理方式。


全局式SFM

大多数的全局SFM处理可分为如下两步进行。首先,针对场景中的N个视图计算各视图的全局旋转,即旋转平均;然后在该基础上计算各视图的平移,以及结构,即平移平均。而将这两个步骤分开的好处是,即使对于小基线,也可以相当精确地估计相对双视图旋转,而相对平移则不是这样。这些方法考虑了整个极线图,其节点表示视图,并且其中边链接具有足够一致匹配点的视图。图的所有循环都产生多视图约束,也就是说,循环的连续节点中的局部相对运动应该在循环结束时被同一连接。实施这些约束极大地降低了即将介绍的增量方法中所会出现漂移的风险,同时,由于其只需要对数据进行一次全局的BA,因而其对于时间效率的提升也是十分明显的。
但全局式SFM的缺点也是很明显的,由于其是一次性的对所有数据进行处理,因而,其对于噪声特别敏感,如果要使用该处理方式,就必须对数据进行仔细的“过滤”。以去除错误极线信息的影响。
在这里插入图片描述

参考文献:
A Global Linear Method for Camera Pose Registration
Global Structure-from-Motion by Similarity Averaging
Linear Global Translation Estimation from Feature Tracks
Shapefit and Shapekick for Robust, Scalable Structure from Motion
Optimizing the Viewing Graph for Structure-from-Motion
Robust Camera Location Estimation by Convex Programming
Robust Global Translations with 1DSfM
Very Large-Scale Global SfM by Distributed Motion Averagin


增量式SFM

增量式SFM基于两个或三个视图的最小重构开始,然后逐渐添加新的视图
,每次添加之后均需要对场景数据进行一次束调整。目前最广泛使用的增量式sfm是ColMap。它执行多个束调整(BA)以使局部结构和运动刚性化。因此,这是一个相当缓慢的过程。由于在处理过程中,每添加一张影像就需要对数据做一次束调整,因而其时间规模是非常恐怖的,但也正由于这一点的存在,使得该种处理方式非常的稳健。
然而,已知增量方法由于误差的累积和难以处理相机轨迹的循环闭合而存在很致命的漂移危险。同时,增量式SFM重建的质量很大程度上取决于初始图像对的选择和后续图像添加的顺序。
在这里插入图片描述

参考文献:
Adaptive Structure from Motion with a contrario model estimation
Batched Incremental Structure-from-Motion
Modeling the World from Internet Photo Collections
Photo Tourism- Exploring Photo Collections in 3D
Progressive Large-Scale Structure-from-Motion with Orthogonal MSTs
Structure-from-Motion Revisited
Towards linear-time incremental structure from motion


分层式SFM

随着三维处理数据量呈指数式的爆发,对于动辄几万、几十万张的数据量,传统的全局式SFM已经很难满足人们对于数据处理要求,我们迫切的需要寻求一种可以快速进行大批量数据处理的稀疏重建方法,因而分层式SFM应运而生。
该方法的主要思想很简单,就是对传统增量式SFM的改进,针对传统增量式SFM处理速度同数据量呈线性相关的特点,提出了针对大规模数据集分而治之的处理思想,即首先对原数据集进行划分,获得N个相互关联的子图,然后对个子图进行并行的增量式SFM处理(Local SFM),处理完毕后,对各子图进行合并,获取当前数据的最终处理结果。
该方法的优点是显而易见的,即提升了大规模数据的处理效率,但,另一方面,该方法也存在很多缺点,首当其冲的便是不够稳健,目前大多数的算法都是在子图重建成功的假设上进行后续处理的,没有考虑,一旦处理失败,应该如何处理,同时,必须仔细的考虑图割算法的选择,因为此方法,直接关系着后续局部SFM的重建成功与否;最后子图合并过程中,锚节点的选择也是十分重要的,如果选择错误,很容易出现漂移危险。
参考文献:
Efficient large-scale structure from motion using graph partitioning
Improving the efficiency of hierarchical structure-and-motion.
Structure-and-motion pipeline on a hierarchical cluster tree.
Hierarchical structure-and-motion recovery from uncalibrated images.


混合式SFM

混合式SFM,顾名思义,该处理方式结合了上述处理方式的优点所提出的,该方法处理流程大致如下:
实现进行子图分割,获得N组相互关联的子图,之后对各子图分别采用增量式或者全局式sfm处理,获取其全局旋转信息,然后不进行BA,直接进行后续步骤,使用全局式或者增量式SFM对上一步所获得信息进行处理,获取影像的全局平移信息。
坦率地讲,本人对该方法的研究很浅,因而,对其优缺点的表述也不是十分深刻,因而略过。
参考文献:
HSfM Hybrid Structure-from-Motion.
Parallel Structure from Motion from Local Increment to Global Averaging
Multistage SFM: A Coarse-to-Fine Approach for 3D Reconstructio

欢迎补充!


推荐阅读
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
author-avatar
Eminem被注册了
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有