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的重建算法 - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

随机森林超参数的网格优化(机器学习的精华--调参)

随机森林超参数的网格优化(机器学习的精华–调参) 随机森林各个参数对算法的影响 影响力参数⭐⭐⭐⭐⭐几乎总是具有巨大影响力n_estimators(整体学习能力)max_depth(粗剪枝)max_features(随机…

ACM训练题:Fadi and LCM

首先LCM(a,b)X,说明a*b>X,当且仅当a,b互质时相等,题意要让a,b都尽可能小,最好让a*bX,即a,b互质。原因如下: 最小公倍数由a、b中最…

电脑上常见的绘图软件有哪些?

现在在电脑上绘图很流行,不仅可以随时更改,还可以提高绘图效率,绘图软件中有很多工具。市场上的计算机绘图软件种类繁多。包括艺术设计、工业绘图和3D绘图。那么每个绘图软件都有自己的特点。那么,哪个更适合计算机绘画软件呢&…

Redis核心技术与实战【学习笔记】 - 22.浅谈Redis的ACID相关知识

概述 事务是数据库的一个重要功能。所谓的事务,就是指对数据进行读写的一系列操作。事务在执行时,会提供专门的属性保证,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isol…

Android电动汽车充电服务vue+uniAPP微信小程序

本系统利用SSM和Uniapp技术进行开发电动汽车充电服务系统是未来的趋势。该系统使用的编程语言是Java,数据库采用的是MySQL数据库,基本完成了系统设定的目标,建立起了一个较为完整的系统。建立的电动汽车充电服务系统用户使用浏览器就可以对其…

centos 7.7 离线安装docker

centos 7.7 离线安装docker Index of linux/static/stable/x86_64/https://download.docker.com/linux/static/stable/x86_64/ 【1】离线下载docker 压缩包上传至 /usr/local 目录,解压缩,并复制到 /usr/bin/ 目录中。 cd /usr/local/tar -zxvf docke…

一篇文章了解区分指针数组,数组指针,函数指针,链表。

最近在学习指针,发现指针有这许多的知识,其中的奥妙还很多,需要学习的也很多,今天那我就将标题中的有关指针知识,即指针数组,数组指针,函数指针,给捋清楚这些知识点,区分…

两次NAT

两次NAT即Twice NAT,指源IP和目的IP同时转换,该技术应用于内部网络主机地址与外部网络上主机地址重叠的情况。 如图所示,两次NAT转换的过程如下: 内网Host A要访问地址重叠的外部网络Host B,Host A向位于外部网络的DNS服务器发送…

瑞_23种设计模式_建造者模式

文章目录 1 建造者模式(Builder Pattern)1.1 介绍1.2 概述1.3 创作者模式的结构 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 模式拓展 ★★★4.1 重构前4.2 重构后 5 总结5.1 建造者模式优缺点5.2 建造者模式使用场景5.3 建造者模式 …

使用SPM_batch进行批量跑脚本(matlab.m)

软件:spm8matlab2023bwin11 数据格式: F:\ASL\HC\CBF\HC_caishaoqing\CBF.nii F:\ASL\HC\CBF\HC_caishaoqing\T1.nii F:\ASL\HC\CBF\HC_wangdonga\CBF.nii F:\ASL\HC\CBF\HC_wangdonga\T1.nii clear spmdirD:\AnalysisApps\spm8; datadirF:\ASL\HC\CBF…

Haas 开发板连接阿里云上传温湿度和电池电压

目录 一、在阿里云上创建一个产品 二、开发环境的介绍 三、创建wifi示例 四、编写SI7006和ADC驱动 五、wifi配网 六、主要源码 七、查看实现结果 一、在阿里云上创建一个产品 登录自己的阿里云账号, 应该支付宝,淘宝账号都是可以的。 接着根据需求…

Spring IOC 之深入分析 Aware 接口

🎬作者简介:大家好,我是小徐🥇☁️博客首页:CSDN主页小徐的博客🌄每日一句:好学而不勤非真好学者 📜 欢迎大家关注! ❤️ AbstractAutowireCapableBeanFacto…

小程序中封装下拉选择框

小程序中没有现成的下拉选择组件&#xff0c;有个picker组件&#xff0c;但是是底部弹出的&#xff0c;不满足我的需求&#xff0c;所以重新封装了一个。 封装的下拉组件 html部分&#xff1a; <view class"select_all_view"><!-- 内容说明&#xff0c;可…

设计一个可以智能训练神经网络的流程

设计一个可以智能训练神经网络的流程,需要考虑以下几个关键步骤: 初始化参数:设定初始的batch size和learning rate,以及其他的神经网络参数。训练循环:开始训练过程,每次迭代更新网络的权重。监控loss:在每个训练周期(epoch)后,监控loss的变化情况。动态调整:根据l…

python 多线程编程(一)

文章目录 threading - 基于线程的并行线程对象thread 类thread方法thread 属性例子 锁对象递归锁对象 条件对象 队列Queue对象SimpleQueque 对象例子 最近的工作需要用到多线程提升程序的运行效率&#xff0c;以前一直没有机会进行多线程编程&#xff0c;所以一直没有机会学习p…

Intellij IDEA各种调试+开发中常见bug

Intellij IDEA中使用好Debug&#xff0c;主要包括如下内容&#xff1a; 一、Debug开篇 ①、以Debug模式启动服务&#xff0c;左边的一个按钮则是以Run模式启动。在开发中&#xff0c;我一般会直接启动Debug模式&#xff0c;方便随时调试代码。 ②、断点&#xff1a;在左边行…

docker更换镜像源

添加的镜像源 {"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com", "https://reg-mirror.qiniu.com/", "https://docker.mirrors.ustc.edu.cn"] }docker更换镜像源之后一定要重启守卫 systemctl daemon-reloaddock…

虚幻5源码版打包服务端

适用情况&#xff0c;windows系统&#xff0c;已经安装vs2022之类的&#xff0c;和UE5适配的版本 源码版使用 1.下载源码版&#xff0c;推荐下载 压缩包 tar.gz那个&#xff0c;zip和git clone我老是下载不下载来&#xff0c;只是这个压缩包要解压1个多小时… 2.点击 源码的…

在线JSON转SQL工具

在线JSON转SQL - BTool在线工具软件&#xff0c;为开发者提供方便。在线JSON转SQL工具可以将JSON文件中的数据或者JSON对象转换为SQL插入语句&#xff0c;方便用户将数据导入到数据库中。用户可以通过简单的界面上传JSON文件&#xff0c;或者文本框输入&#xff0c;点击JSON转S…

Docker进阶篇-compose容器编排

一、描述 Docker-Compose是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Compose是Docker公司推出的一个工具软件&#xff0c;可以管理多个Docker容器组成一个应用。需要定义 一个YAML格式的配置文件docker-compose.yml&#xff0c;配置好多个容器…