自我描述
# Structure from Motion
# 增量SfM
# 一
从两视图或三视图作为种子开始进行重建,然后添加新的视图到系统中,最后进行BA。这种方式通常敏感于初始种子选择,和遭受累计误差。像VSFM、COLMAP提出re-triangulate tracks来消除结构误差。
传统的方法过度关注下一个视图选择,并且每次迭代时只注册一个或多个相机,导致BA执行很多次,花费很多计算时间。
在每一次迭代中,所有可见的tracks都三角化和优化,在计算相机位姿时显得冗余。
在摄像机配准过程中,通常忽略极几何测量。
在增量配准期间,错误边缘可能会将低SfM系统的性能。
# 二
首先创建小的3D模型,然后合并不同的模型。
增量SfM都存在累计误差和大计算量。
# 全局SfM
同时估计所有的相机位姿然后BA一次,包含旋转平均和平移平均。
# Rotation Averaging
最开始构建求解该方法的误差函数使用四元数的F-范数。
提出李代数的旋转平均。
使用L1优化方法来求解。
Wilson et al. [43]发现有两个因素影响旋转平均的精度,一个是Edge Graph(EG)结构,另一个是极几何的精度,然后推荐当摄像机分布均匀时,建议先将其群集。
HSfM基于这个理论,提出一个基于社区的旋转平均方法群集,然后贪婪的的合并EG。
# Translation Averaging
很多线性方法通过矩阵分解的方式来求解该方程,但这些方法敏感于极几何的外点。
也有很多方法先剔除极几何的外点,通过回环等,但这些方法需要冗余的图像对。
一些方法局部BA或者多视图tracks的一致性来优化极几何。
也有方法同时求解相机的平移和三维点。
还有方法通过融合辅助的成像信息来获得相机平移。
# track selection and camera prioritization
# 问题
- 在完整的view-graph中执行RA仅仅考虑最大连接的紧密型,而忽视精确度。
- 加速摄像机配准的过程,减少BA的内存占用。
# 解决
- 在view-graph的多个正交最大生成树中执行RA。该精度取决于view-graph的连接紧密性,以及极几何的精度。
- 选择一个子集轨迹来优化注册好的摄像机位姿。
# 问题: 初始种子选择
- 选择特征匹配数量多的图像对
- 通过基础矩阵过滤匹配点
- 要求种子具有底重投影误差和小协方差
# 解决
没有考虑后续摄像机匹配。良好的种子应与视图中其它节点紧密连接。
# 问题:Track Triangulation & Selection
- 在相机注册完,对所有的tracks进行三角化,这样花费大量时间和内存,降低系统的性能。
# 解决
- 在一些global SfM中,采用track selection 来加速三角化,知道所有相机位姿。
- 在增量SfM中,相机位姿是逐步知道的
- 所以考虑,在当前次迭代和下一次迭代中选择tracks给BA。
# RA
- F-范数,李代数,使用IRLS,2016视图结构也会影响RA的精度。然而大多数工作都没有考虑。
- 对于精度,通过局部BA来优化极几何相对位姿,通过三焦量一致性来验证相对位姿,通过longer tracks来一致性来提升相对位姿的精度。
- 将视图选择作为最小成本网络流问题。
- 忽略了结构的约束。
- 对一般和模糊的数据集使用不同的先验因子。
# CSFM
首先,对极几何图划分为单独的社区,然后并行解决每个社区的重建问题,最后通过全局相似度平均方法对重建结果进行合并。
# Rotation-Only BA
BA旨在获得一个优化的结构点和相机位姿通过最小化图像的重投影误差。
在Global SfM框架下,对旋转进行准确的初始猜测很重要。所以一般有改进旋转平均方法 或 相对位姿输入。
然而相对位姿估计仅仅限制于两张图像之间,而旋转平均不直接利用图像测量,即使它们是从具体有不同噪声统计和分布的不同点数估计,它也会平等对待所有相对旋转
方法: 给定旋转的初始估计,使用图像测量作为直接输入执行仅旋转优化。
基于先前一篇的独立于平移的仅优化两图像之间的旋转。
扩展到多个视图。
# ROBUST AND ACCURATE HYBRID STRUCTURE-FROM-MOTION
# 方法:
- 构建一个最大生成树,使用Global SfM重建
- 剩下图片使用增量方式进行重建
# 场景图优化
增量全局方法的输入都是场景图
graph
A[提取一个骨干图]
-->
B[通过回环一致性提出边之间的误差]
-->
C[从最大生成树开始]
# Hybrid
graph
A[HSfM]
-->
B[增量估计平移]
-->
C[子图像全局 剩余图像增量]
# Hybrid Rotation Averaging: A Fast and Robust Rotation Averaging Approach
局部优化方法尽管只是保证局部最优,但是最好的选择
全局优化可以在低噪点的情况下保证全局最优,但通常都不满足该条件
# RA
- 局部求解器,陷入局部最小值
- 全局求解器,敏感于噪点
HSFM,通过global 方法求解旋转,然后相机中心通过P2P方式增量估计,但一些估计的绝对旋转不正确,因此影响后续的重建过程。
# Incremental Rotation Averaging
相比于全局SfM,即时增量SfM效率比较底,但其可以保证精度通过频繁的RANSAC和BA。
大多数全局SfM执行旋转平均和平移平均是一个向后顺序,在执行平移平均时候,旋转是固定的。
又因为旋转平均取决于极几何,其中又受无匹配影响,尤其对一些互联网图片。
为了解决这个问题,
- 去寻找更加鲁棒的损失函数,让优化的过程更加鲁棒。
这些方法中的优化过程在很大程度上取决于初始化,并且由于问题公式复杂而通常效率低下。
- 尝试去剔除EG图的外点。
然而,相对旋转外点过滤和绝对旋转估计是一个鸡与蛋的问题,只有准确估计绝对旋转,才能有效过滤相对旋转异常值。
# 创新点
以增量的方式估计绝对旋转。
使用一些关键点,初始三元组,下一个最佳视图选择策略,迭代参与的加权局部/全局优化,重新旋转平均。
迭代执行外点检测和鲁棒优化,利用部分估计的绝对旋转来有效地检测相对旋转外点,然后使用L2范数来估计绝对旋转。
# 后续
采取分而治之的策略来进行大规模的旋转平均,划分为多个场景图,分别进行旋转平均,最后合并。
# Image-Matching From Paper to Practice
最近的努力已经转向整体的端到端的解决方案。尽管他们有希望但他们尚未超越基于分布解决方案的经典范式的分离主义者
graph
A[提取局部特征 SIFT]
-->
B[描述符]
-->
C[最近邻搜索]
-->
D[RANSAC循环]
-->
E[BA管道]
# A hybrid global structure from motion method for synchronously estimating global rotations and global translations
# 贡献
分层同步解决全局旋转和平移问题,
# To Learn or Not to Learn: Visual Localization from Essential Matrices
最近,已经提出了基于相对姿态估计的学习方法,有望轻松适应新场景。然而,他们目前的准确度明显低于最先进的方法。这里有兴趣分析这种行为。
给定一张查询图像,视觉定位算法的目标是估计其相机姿态。
当前实现最先进的姿态估计方法,基于3D信息,他们首先在查询图像中的2D像素位置和场景中的3D点之间建立2D-3D匹配,然后使用得到的对应关系来估计相机姿态。3D场景几何既可以通过3D点云显示表示,也可以通过卷积神经网络的权重隐式表示。
与基于3D的方法相比,基于相对位姿的视觉定位方法具有理想的特性,即场景表示的简单性和灵活性以及易于适应新场景。此外,利用现代机器学习技术进行相对姿态估计似乎很自然,但为什么基于学习的方法在这中情况下表现不佳呢?
本文提出一种新颖且通用的视觉定位框架,该框架使用新颖的RANSAC方案中的基本矩阵来恢复绝对位姿。
# Essential Matrix Based Location
- 使用图像检索来识别一组图像;
- 对每个检索到的图像计算其与查询图像的本质矩阵;
- 使用检索到的图像的本质矩阵,和已知绝对位姿的查询图像,估计检索图像的绝对位姿。
# Retrieving
通过用3096维DenseVLAD描述符表示每个数据库图像来执行图像检索,这已被证明可以咋具有挑战性的条件下工作。
# Pair Selection
简单地为每个查询图像挑选top-k不足以获得良好的性能。希望确保更大的三角测量角度,同时扔保持足够的视觉重叠以成功进行相对姿态估计。
迭代选择与先前检索图像有一定的最小/最大距离。
# Pairwise Relative Pose Estimation
对于每个图像对,我们计算查询图像和数据库图像之间的相对位姿的本质矩阵。
# Absolute Pose Estimation via RANSAC
使用RANSAC,在每次迭代中,我们对图像对进行采样,并使用他们来估计查询图像的绝对位姿。接下来确定哪些图像对是该绝对位姿假设的内点。
我们首先最小化绝对旋转和相对旋转之间的误差,得到一个绝对旋转,然后用来衡量上面的绝对位姿。
有了旋转后计算平移,测量的平移和预测的绝对位姿中的平移计算余弦相似度,小于一定阈值则视为内点。最后返回最大内点数的位姿。
# Essential Matrix Estimation
# Feature-based
在查询和数据库图像之间建立2D2D匹配,然后通过RANSAC循环内应用5点法图集本质矩阵。
# Learning-based
Relative pose parametrizaiton
Network architecture
一个简单的固定匹配层(EssNet),本质上是来自两个图像的特征图之间的矩阵点积。
可学习的领域共视匹配层,它强制匹配的局部几何一致性。
两个匹配层豆浆ResNet生成的两个特征图组合成一个单一的特征向量,可以看做是一个匹配分数图。
将分数图输入到回归层来预测本质矩阵,回归层由两个卷积层块组成,然后用ReLU进行批量归一化,最后是一个全连接层回归一个近似于本质矩阵的9D向量。然后将近似的前两个奇异值替换为其均值,将其近似投影到一个有效的本质矩阵上。
Loss function
最小化预测的E 和真实E
# Hybrid: Learning Matching + five-Point Solver
作为经典方法和回归方法的结合。通过神经网络学习特征提取和匹配,从而产生一组2D-2D匹配。然后使用RANSAC循环5点法估计本质矩阵。
# 结论
在数据驱动的视觉定位方法能够准确并轻松地推广到新场景之前,还需要进行更多的研究。
# 0919
# View-graph construction framework for robust and efficient structure-from-motion
传统的矩阵分解方式平等对待所有的边,这样在较少特征匹配对会产生外点,而且也会影响其它的边。
为了解决这个问题,我们提出了一个用于视图图构建的增量骨架,具有大量特征匹配的匹配对的鲁棒性被传播到它们的连接图像。
# 方法
首先构建一个经过验证的最大生成树。
对于最大生成树中的每条边,我们执行局部中间并配准其可见相机。
基于局部配准,计算成对的相对几何位姿。
一方面,由于使用了所有特征匹配,因此冗余边缘可能会引入许多错误的边。尽管SfM系统通过几何验证过滤特征匹配异常值,但存在于重复纹理区域中的错误异常值不仅在视觉上相似,而且还可能通过两视图几何验证并形成错误的相对几何。
为了解决歧义问题,方法{20,21}通过一些量身定制的策略顾虑不一致的边缘。
另一方面,两视图极几何通常是通过分解基本矩阵来产生的。对匹配异常值敏感。尽管几何验证利用点对线约束来过滤原理极线的异常值,但无法识别位于极线附近的异常值。虽然BA可以解决该问题,但仍可能还会失败。
为视图图构造提出了一个增量框架,其中自动选择边并通过三视图计算相对几何。为了保证场景的完整性,我们首先从匹配图中构建一个验证的最大生成树,其中边缘由匹配特征的数量加权,并执行验证。对于最大生成树中的每条边,我们通过投票验证相对位姿,并执行局部重建配准可见的相机。根据局部重建中的位姿计算相对位姿。然后将这些计算出的相对位姿插入最大生成树中。迭代执行完局部重建,最后将最大生成树扩展到视图图中。
没有分解基本矩阵,而是利用局部重建来获得相对几何。
# Robust Motion Averaging for Multi-view Registration of Point Sets Based Maximum Correntropy Criterion
运动平均,从相对运动中恢复全局运动,并利用信息冗余来平均累计误差。我们提出了一种新颖的运动平均框架,用于使用基于拉普拉斯核的最大相关熵准则(LMCC)进行多视图配准。利用李代数运动框架和相关熵度量,我们提出了一种新的成本函数,该函数将相对运动提供的所有约束都考虑在内。
获得用于校正全局运动的增量可以进一步表述为在最大化成本函数的优化问题。将优化问题分解为两个子问题,根据当前残差计算每个相对运动的权重,并在下一次迭代中求解增量的二阶锥规划问题。
由于场景或物体的遮挡以及扫描视野有限,大多数扫描设备只能捕获部分点云。为了从不同视点捕获的一系列扫描中准确地恢复整个模型或场景,就会出现点集配准问题。
# Progressive Large-Scale Structure-from-Motion with Orthogonal MSTs
特征匹配不足可能会破坏重建场景的完整性,而冗余对可能会带来许多错误的匹配。外层循环迭代选择图像相似度的最大生成树来执行图像匹配。内层循环配准相机。
首先,基于从词汇树计算的图像描述符,构建图像相似度图,其中节点表示图像,边表示连接图像之间的相似度得分。
然后,选择图相似度的MST进行图像匹配。给定匹配的特征匹配,相机以增量方式校准。不能保证所有相机都可以通过MST校准。
因此,我们迭代地选择正交MST进行相机校准,前一次迭代产生的特征匹配与新选择的MST产生的特征匹配相结合,并且在前一次迭代中校准的相机位姿被继承到当前迭代中。
根据相机标定的反馈,逐步选择图像相似度的多个正交MST进行图像匹配。此前,大多数SfM方法中,所有匹配对都被视为同等重要,并在相机校准中同时考虑。生成的特征轨迹容易被污染。
# TC-SfM: Robust Track-Community-Based Structure-from-Motion
由重复结构引起的模糊性总会导致错误的相机位姿和3D结构。
在本文中,我们建议利用场景中高级信息,即局部区域的空间上下文信息来指导重建。
track-community
每个community由一组track组成,并代表场景中的一个局部片段。
community检测算法用于将场景划分为几个部分。
通过分析track的邻域来检测潜在的模糊片段,并通过检查位姿一致性来进行校正。
对每一个片段进行部分重建,并将它们与一个新颖的双向一致性成本函数对齐,该函数同时考虑3D-3D对应关系和成对的相机位姿。
# Accurate and efficient ground-to-aerial model alignment
为了生成大规模建筑场景的完整3D重建,通常会同时捕获地面和航拍图像。一种常见的方法是首先分别从不同的图像源重建模型,然后将它们对齐。
使用GPS元信息将地面模型和航拍模型转换为地理参考坐标系进行粗略对齐。
通过基于它们之间的3D点对应关系估计的相似性变换来细化粗对齐模型。
a)选择合适的航拍图像子集以正确覆盖地面模型
b)在所选航拍图像的视点下合成来自地面模型的图像
c)获得合成图像与所选航拍图像之间的二维点匹配。
# Progressive Structure from Motion
现有的重建框架都没有完全解决一个渐进的场景,提供一个中间结果。增量方式由于错误的信息陷入局部最小值,全局方式,需要访问完整的视图,也无法提供一个中间结果。
本文提出一种渐进式框架,而不是批处理。
传统方式通常设计为批处理算法,其中图像采集和图像处理分为两个独立的步骤。在以用户为中心的场景中,图像是现场拍摄的,并且由3D建模管道即时处理。
将动态全局视图图与基于连通性得分的局部聚类相结合。
# 方法:
- 逐步建立场景图view graph,并在整个重建过程中作为全局知识。
- 在算法每次迭代中,view graph都会根据本地连通性进行聚类,并在本地处理单个聚类。
- 在每个聚类中旋转平均,并使用增量或全局估算3D结构。
- 通过使用集群间约束来稳健地估计它们之间的相似变换,来估计单个集群的全局变换。
# view graph
通过单链接聚类分层生长,直到两个聚类之间不存在
# Hybrid Camera Pose Estimation With Online Partitioning for SLAM
通过将空间强连接的摄像机聚集到每个块中,显著提高了局部BA的准确性,并即时更新相机运动估计。基于时间和空间共视将摄像机分块。
块之间中间计算值的传播-->1)动态提供良好的初始化;2)有效地避免了重复计算。
- 根据时间和空间特征的对应关系开发了基于协同可见性的分区方案;
- 引入运动平均;
- 动态块间传播和中间计算值的块内广播。
# 局部共视
通过平均在一个3D点集上的相机数量,
# 全局共视
某一块和某一帧的共视
# Revisiting Viewing Graph Solvability: an Effective Approach Based on Cycle Consistency
提供了一种新的共视和一种算法,用于确定view graph是否可解,即唯一地确定一组投影相机。
两幅图像之间存在基本矩阵时,存在一条边。
可解性的定义,当且仅当可用的基本矩阵唯一地确定其余基本矩阵时,图才是可解的,即输入图可以转换为完整图。
# Progressive Structure from Motion by Iteratively Prioritizing and Refining Match Pairs
从有问题的匹配对去恢复正确的重建结果。我们基于所有潜在匹配对构建了一个加权视图图,并提出一种渐进式SfM方法,该方法迭代地优先考虑和细化其匹配对。初始化和扩展。
# 初始化
从多个独立的最小生成树的联合对匹配对进行排序,并通过循环一致性推断的思想进行优化,其旨在通过分析其几何一致性来推断不正确的边。
# 扩展
seed reconstruction 迭代添加新的最小生成树和细化相应的匹配对来逐步扩展,当扩展到一定的完整性时终止。
# colmap
在重复结构或者短基线的情况匹配错误较多
# 算法流程
按照colmap的程序获得所有潜在的匹配对,构建加权视图图,边的权值越小,匹配的正确的可能性越大。
初始化中,生成一个包含多个独立最小生成树的种子视图,并使用CCI过滤种子视图中的异常值。
扩展,迭代将其它最小生成树扩展进来,实现更密集的图。
# IRAv3: Hierarchical Incremental Rotation Averaging on the Fly
# IRA
- Initial Triplet Selection, 从场景图中选出最初的三个顶点;
- NBV Selection, 选择边多的下一个结点;
- 局部优化当前新添加结点的旋转;
- 全局优化所有结点的旋转。
# IRA++
- 在输入的EG上进行社区检测聚类;
- 对每个社区进行基于IRA的旋转平均,获得在局部坐标系中的旋转;
- 基于VSRA的旋转估计,获得每个社区之间的相对旋转;
- 再次执行基于IRA的旋转平均,估计每个社区的绝对旋转;
- 进行旋转对齐和优化。
# IRAv3
- 基于社区检测的种子重建;
- 潜在聚类和顶点预选,下一最佳视图选择和聚类隶属关系,增量绝对旋转计算;
- 3~5 同上