当前位置: 首页 > article >正文

3D Line Mapping Revisited论文阅读

1. 代码地址

GitHub - cvg/limap: A toolbox for mapping and localization with line features.

2. 项目主页

3D Line Mapping Revisited

3. 摘要

提出了一种基于线的重建算法,Limap,可以从多视图图像中构建3D线地图,通过线三角化、精心设计的评分和track构建以及利用线的重合,平行性和正交性等结构先验来实现的,可以与现有的基于点的SFM算法集成,并且可以利用其3D点来进一步改善线重建的结果。构建的3D线地图也开辟了新的研究方向,即基于线的视觉定位和BA,其中将线与点结合在一起会产生最佳结果。

4. 引言

估计三维几何并建立稀疏地图已经是三维计算机视觉中普遍存在的能力。有很多框架可以用来构建用于定位的地图,为稠密重建提供初始估计以及新视角重建。

目前通过SFM估计场景几何结构和构建稀疏地图主要是基于点的方法,即提取匹配图像中的关键点,然后三角化,BA。但是基于特征点构建点云地图在没有足够稳定的关键点去检测匹配的时候,比如室内场景,往往效果不好。但是这些场景基本都包含丰富的线条,例如在墙壁、窗户、门或天花板,而且线往往表现出更高的定位精度,因为其像素的不确定性较小。线常常以高度结构化的模式出现,通常满足场景范围的几何约束,例如共面性,重合 (线相交),平行和正交性。但是线也会遇到不同的问题,例如线端点定位不良和部分遮挡。然而,最近的线检测器和匹配正在弥合点和线之间的性能差距,目前线图构建的困难在于:

(1)线端点不一致:由于部分遮挡,线通常在图像之间具有不一致的端点。

(2)线割裂:在每个图像中,可能有多个线段属于3D中的同一条线。与构建3D点track相比,创建线的track关联的过程更加复杂。

(3)没有两视图几何验证:点匹配可以通过极几何在两个视图中验证,但线至少需要三个视图来过滤。

(4)退化:在实践中,线三角化更倾向于不稳定的配置 (参见图8),例如每当线与相机运动平行时,线三角化会退化。

(5)较弱的基于描述子的匹配:线段的最新描述子远远落后于基于点的描述子,因此在重建过程中更加强调几何验证和过滤。为此,本篇文章旨在减少基于点的建图解决方案和基于线的建图解决方案之间的差距

本文的主要贡献:

(1)构建了一个新的线建图系统,该系统可以从多视图RGB图像中可靠地重建3D线段。与以前的方法相比,构建的线图更完整、更准确

(2)通过自动识别和利用结构先验 (例如线重合和平行) 来实现这一目标。技术贡献涵盖了线图的所有阶段,包括线三角化,评分,track构建和联合优化。

(3)该框架是灵活的,因此研究人员可以轻松地更改组件 (例如检测器,匹配器,消失点估计器等) 或集成其他传感器数据 (例如深度图或其他3D信息)

(4)通过对合成和真实数据集进行定量评估来对性能进行基准测试,每个场景都有数百张图像,其中LIMAP始终显著优于现有方法

(5)通过在诸如视觉定位和SFM中的BA之类的任务中比纯基于点的方法有所改进,来证明强大的线图的有用性。

5. 推荐的三维线地图流程

输入:图像,还可以额外添加点云模型。假设每个图像的相机姿势是可用的 (例如,来自SfM/SLAM)。算法包括三个主要步骤:

(1)假设生成: 对于每个2D线段,生成一组3D线假设。

(2)假设评分和track关联: 考虑到多视图一致性对每个假设进行评分,为每个2D线选择最佳候选,并将它们关联到一组3D线track中。

(3)联合优化: 与3D点和VP(消失点)方向一起在3D线track上共同执行非线性细化,将附加的结构先验集成为软约束。

5.1. 生成三维线假设

为每个2D线段生成一组3D线假设,给定图像中的一个线段,使用任何现有的线匹配算法来检索n个最接近的图像中的前K个线匹配。

\lambda_1\lambda_2是投影矩阵,让所有假设的三维线的端点位于2D端点对应的相机光线上。对于每个匹配的2D线段,通过代数线三角化生成一个假设。

5.1.1. 线三角化

对每一个匹配的2D线段(x^m_1, x^m_2),都可以利用线三角化生成一个假设,设(R^m, t^m)为匹配视图的相机姿态。然后线性求解端点射线深度\lambda_i

注意:当线段与x_i处的对极线平行时,其解是不稳定的。如果只有一个端点退化,则称之为弱退化;如果两个端点都退化,虽称之为完全退化。

5.1.2. 点线关联

因为上面讲了线三角化会出现退化,为了在退化的情况下获得有意义的假设,利用来自点或相关消失点 (VPs) 的其他几何信息,即2D-3D点对应关系,这可以来自基于点的SfM模型,也可以从匹配的端点进行三角化。对于每个2D线段,将一个像素阈值内的所有2D点关联起来,从而与它们对应的3D点关联起来。借助相关的2D-3D点对应和消失点,为每个2D线段生成第二组假设。

5.1.3. 点引导的线三角化

5.2. 假设评分和轨迹关联

现在图像I中的每个2D线段与每个相邻图像J的一组3D线假设相关联。这部分要对这些假设进行评分并进行track关联。利用不同的评分方法来量化两个3D线段 (L1,L2) 之间的距离。这个距离可以在三维或者二维进行度量。距离度量:有角距离(L1和L2之间的角度),垂直距离(L1的端点到L2跨越最大正交距离)透视距离: 假设L1和L2的端点在相同的光线上,该距离被定义为端点距离,如下图所示。利用2D和3D中的角距离,以及2D中的垂直距离,和透视距离。为了将它们聚合在一起,将尺度因子 τ 关联到每个距离r,得到归一化分数

用S表示所有相应的归一化分数的集合,L1和L2之间的分数为:

现在有了每个线对的唯一分数,然后考虑来自相邻图像j和假设k的所有相邻3D线候选。一致性分数是通过对每个图像的最佳分数求和来定义的:

此时已为每个2D线段分配了唯一的3D线 (其最佳3D线候选)。然后目标是将这些2D线段集成到3D线track中。为此形成一个图,其中2D线段是节点,所有初始线匹配都是边,目标是修剪图中的边缘,以使连接的2D线段共享相似的3D线段。为此提出了两种新的线评分措施,可以应对不同的端点配置和跨图像的可变的尺度:重叠分数:将L1正交投影到L2上,将投影的端点剪切到L2的端点 (如果它们落在L2之外) 以获得线段\Pi(L_1),并将长度与阈值τ进行比较:

内联线段距离:L1的端点垂直地未投影到l2。如果它们落在L2之外,将它们剪切到L2的最接近端点。通过在两个方向上执行此操作,可以定义两个内点线段 (参见图3(c)),并将InnerSeg距离定义为它们端点之间的最大距离。

然后将以3D计算的InnerSeg距离转换为上一段中的归一化分数,并将其与2D和3D中的重叠分数以及使用 (5) 的先前分数相结合。然后对于每个track重新估计单个3D线段。使用来自track中所有节点的3D分配的端点集,应用主成分分析 (PCA),并使用主特征向量和平均3D点来估计无限3D线。然后将所有端点投影在这条无限线上,以获得新的3D端点。

5.3. 线和点联合优化

使用其轨迹信息对获取的3D线进行非线性细化。直接的方法是对重投影误差进行几何细化。有了2D点线关联,可以通过包含其他结构信息来制定联合优化问题。最小化的能量可以写如下:

分别是点优化项,线优化项,线和点联合优化项。

eperp是垂直距离,Lk是3D线段的2D投影,lk是2D线段,w∠是1减去投影和观测线之间的2D角度的余弦的指数。

6. 实验

首先建立了一个评估基准来量化建图的质量,由于没有地面真相 (GT) 3D线,因此使用GT网格模型或点云评估3D线图。使用以下指标:τ (Rτ)处的长度召回 (以米为单位): 距GT模型 τ mm以内的线部分的长度总和。τ (Pτ)处的inlier百分比: 距GT模型 τ mm以内的track的百分比。平均支持: 所有线track上的图像支持和2D线支持的平均数量。将论文算法与两种最先进的方法作为基线进行比较: L3D++和ELSR,使用两个线检测器: 传统的LSD检测器和基于学习的SOLD2。对于ELSR,将输入转换为VisualSfM 格式,并使用来自作者的code(仅支持LSD)。第一个评估是在Hypersim数据集的前八个场景上运行的,每个场景由100个图像组成。

结果显示比竞争对手更好或可比的精度的更完整的线图,同时也显示出明显更高的track质量。

进一步评估了Tanks和Temples数据集的train部分。由于SOLD2是针对室内图像进行训练的,因此仅使用LSD。由于所提供的点云被清理为仅专注于主要目标,因此计算其边界框,将其扩展1米,并且仅评估该区域内的线。这样可以防止错误地惩罚远离主场景的正确线条。

论文方法提高了地图质量。图4显示了其方法和L3D++之间的定性比较。结果显示出更好的完整性,也具有更少的嘈杂的线条,并实现了对细微细节 (例如在地面上) 的更强大的重建。

为了演示所提出的系统的可伸缩性,还在两个大规模数据集上运行其方法: Aachen (6,697图像)和Rome city (16,179图像) 。图7显示了其方法产生具有清晰结构的可靠线图。

为了证明构建的线图对其他应用有效果,比如视觉定位和原本的点云模型的细化等方面,进行了一些实验:针对线辅助的视觉定位:在获取的3D线图之上构建了一个混合视觉定位,其点和线都具有。具体来说,首先使用提出的方法构建HLoc 中的点图和线图。然后分别匹配点和线从3D地图中的轨迹信息获取2D-3D对应关系。鉴于这些对应关系,将四个最小求解器 : P3P,P2P1LL,P1P2LL,P3LL结合在一个具有局部优化的混合RANSAC框架中以获得最终的6自由度姿势。结果在表7,证明了线辅助的定位在室内和室外均比单独的基线获得了更好的结果,从而验证了采用3D线图进行视觉定位的有效性。在图9中,显示了来自7 Scenes的楼梯场景的更详细的结果,因为它是最具挑战性的场景之一。线显著地有利于重新投影结构的对准,从46.8提高到71.1的姿态精度。

细化SFM点云:通过从大致正确的基于点的SFM (例如COLMAP) 构建的3D线图,可以使用3D线及其轨迹信息,通过点与线的联合优化来优化输入的相机姿势。为了验证这一点,在Hypersim的前八个场景上运行COLMAP,在其之后构建线地图,并执行联合BA以优化姿态和内参。

参考文献

3D Line Mapping Revisited

CVPR 2023|Limap:基于3D line的重建算法 - 知乎


http://www.kler.cn/a/232083.html

相关文章:

  • vue-router的push和replace的区别
  • 深入探索 Kubernetes 安全容器:Kata Containers 与 gVisor
  • Java爬虫(HttpURLConnection)详解
  • daos集群部署(单机)
  • 【Vitepress报错】Error: [vitepress] 8 dead link(s) found.
  • [Admin] Dashboard Filter for Mix Report Types
  • POPPPPPJ勒索病毒:了解最新POPPPPPJ,以及如何保护您的数据
  • 自定义指令实现图片懒加载
  • 【数据结构】链表OJ面试题4(题库+解析)
  • sqli-labs-master靶场训练笔记(38-53|boss战)
  • STM32——FLASH(1)简单介绍、分类、读写流程及注意事项
  • 百面嵌入式专栏(面试题)C语言面试题22道
  • 命令行任务管理器的at命令
  • 瑞_力扣LeetCode_二叉树相关题
  • Win10系统备份的几种方案,以后不重装系统,备份系统恢复Backup,系统映像备份
  • Python(21)正则表达式中的“元字符”
  • 05 06 Verilog基础语法与应用讲解
  • 【Django-ninja】在django ninja中处理异常
  • Java代码实现基数排序算法(附带源码)
  • 计算机设计大赛 深度学习 机器视觉 人脸识别系统 - opencv python
  • TCP 传输控制协议
  • JenkinsGitLab完成自动化构建部署
  • 2024.2.6
  • 二叉树中的最大路径和
  • mysql学习打卡day22
  • 20240204金融读报1分钟小得