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.mzph.cn/news/667483.shtml

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

相关文章

06、全文检索 -- Solr -- Solr 全文检索之在图形界面管理 Core 的 Schema(演示对 普通字段、动态字段、拷贝字段 的添加和删除)

目录 Solr 全文检索之管理 Schema使用Web控制台管理Core的Schema3 种 字段解释:Field:普通字段Dynamic Field:动态字段Copy Field:拷贝字段 演示:添加 普通字段( Field )演示:添加 动…

C++入门的基础

幸福比傲慢更容易蒙住人的眼睛。 ——大仲马 C入门 1、属于C的关键字1、1、C从何而来1、2、C关键字(C98) 2、命名空间2、1、命名空间的定义2、2、命名空间使用 3、C输入和输出4、缺省参数4、1、缺省参数概念4、2、缺省参数分类 5、函数重载5、1、函数重载概念 6、引用6、1、引用…

电脑/机顶盒/ps3/4/连接老电视(只有AV、S-Video接口)解决方案之HDMI转AV/S-Video转换器HAV

HDMI转AV/S-Video转换器功能 01、将HDMI高清信号经过视频处理转换成AV、S-VIDEO(PAL/NTSC)的视频信号输出 02、将HDMI数字音频,经过DAC数模芯片处理转成模拟立体声输出 03、采用先进的视频处理技术,对图像的亮度,对比度及色彩进行增强处理 04…

使用Docker本地部署Jupyter Notebook并结合内网穿透实现远程访问

文章目录 1. 选择与拉取镜像2. 创建容器3. 访问Jupyter工作台4. 远程访问Jupyter工作台4.1 内网穿透工具安装4.2 创建远程连接公网地址4.3 使用固定二级子域名地址远程访问 本文主要介绍如何在Ubuntu系统中使用Docker本地部署Jupyter Notebook,并结合cpolar内网穿透…

01-操作系统_名词_文件下载_反弹

操作系统_名词_文件下载_反弹 一、渗透测试1.1、POC、EXP、Payload与Shellcode1.2、后门1.3、木马1.4、反弹1.5、回显1.6、跳板1.7、黑白盒测试1.8、暴力破解1.9、社会工程学1.10、撞库1.11、ATT&CK 二、案例演示2.1、基础案例1:操作系统-用途&命令&权限…

Android学习之路(27) ProGuard,混淆,R8优化

前言 使用java编写的源代码编译后生成了对于的class文件,但是class文件是一个非常标准的文件,市面上很多软件都可以对class文件进行反编译,为了我们app的安全性,就需要使用到Android代码混淆这一功能。 针对 Java 的混淆&#x…

【Docker】Docker Registry(镜像仓库)

文章目录 一、什么是 Docker Registry二、镜像仓库分类三、镜像仓库工作机制四、常用的镜像仓库五、常用命令镜像仓库命令镜像命令(部分)容器命令(部分) 六、docker镜像仓库实战综合实战一:搭建一个 nginx 服务综合实战二:Docker hub上创建自己私有仓库综…

B站课程评分

Spring6 https://www.bilibili.com/video/BV1Ft4y1g7Fb/ 评价: 推荐一看 配套文档优秀, 老师口齿清晰, 条理不错. mybatis https://www.bilibili.com/video/BV1JP4y1Z73S/?spm_id_from333.337.search-card.all.click 评价: 推荐一看 配套文档优秀, 老师口齿清晰, 条理不错…

等变和不变 、向量神经元(vector neurons)是什么?

等变和不变 等变:如果输入是一个旋转后的椅子,那么输出也应该是一个旋转后的椅子 不变:如果输入是一个旋转后的椅子,那么输出应该是一个椅子,而不是一只狗。 向量神经元(vector neurons) 向量…

如何监控摄像头是否在线?有什么工具推荐

WGCLOUD监控系统 我们项目中,摄像头用的WGCLOUD监控系统来监控的,主要两种方式来监控 一种是监控摄像头的端口,使用WGCLOUD的端口监控模块 一种是PING摄像头的IP,使用WGCLOUD的ping监测模块 这两种方式比较简单,也…

1997-2022年中央对各省份一般公共预算转移支付数据

1997-2022年中央对各省份一般公共预算转移支付数据 1、时间:1997-2022年 2、范围:31省 3、指标:一般公共预算转移支付 4、来源:wind 财政部 5、指标解释:一般性转移支付又称体制性转移支付,是指上级政…

【2024.2.4练习】国王游戏

题目描述 题目思路 涉及排列组合求最优解问题,数据大考虑是否满足某种贪心策略。 假设不除以右手的数字,那么获得金币数量最多的显然为最后一个人。左手数字最大的应排在最后一位。在右手有数字的情况下,不妨也尝试从最后一个人开始排。 假…

Element UI+Spring Boot进行CRUD的实例

ElementUI安装与使用指南 前端代码:点击查看learnelementuispringboot项目源码 后端代码:点击查看 LearnElementUiAndSpringBoot 一、前端配置 安装axios axios官网axios中文文档安装指令:npm install axios 二、后端配置 springboot3m…

BLIP2——采用Q-Former融合视觉语义与LLM能力的方法

BLIP2——采用Q-Former融合视觉语义与LLM能力的方法 FesianXu 20240202 at Baidu Search Team 前言 大规模语言模型(Large Language Model,LLM)是当前的当红炸子鸡,展现出了强大的逻辑推理,语义理解能力,而视觉作为人…

YOLOv8进阶 | 如何用yolov8训练自己的数据集(以安全帽佩戴检测举例)

前言:Hello大家好,我是小哥谈。YOLOv8是一种目标检测算法,它是YOLO(You Only Look Once)系列算法的最新版本。本节课就带领大家如何基于YOLOv8来训练自己的目标检测模型,本次作者就以安全帽佩戴检测为案例进…

华为机考入门python3--(7)牛客7-取近似值

分类:数字 知识点: str转float float(str) 向上取整 math.ceil(float_num) 向下取整 math.floor(float_num) 题目来自【牛客】 import math def round_to_int(float_num): # 如果小数点后的数值大于等于0.5,则向上取整&#xf…

Fink CDC数据同步(一)环境部署

1 背景介绍 Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。 Flink CDC 是 Apache Flink 的一组源连接器,基于数据库日志的…

【SpringBoot】RBAC权限控制

📝个页人主:五敷有你 🔥系列专栏:SpringBoot⛺️稳重求进,晒太阳 权限系统与RBAC模型 权限 为了解决用户和资源的操作关系, 让指定的用户,只能操作指定的资源。 权限功能 菜单权限&a…

windows下安装go

下载golang Go 官网下载地址: https://golang.org/dl/ Go 官方镜像站(推荐): https://golang.google.cn/dl/ 选择安装包 验证有没有安装成功 查看 go 环境 说明 : Go1.11 版本之后无需手动配置环境变量&#xff0c…

29 python快速上手

Python操作MySQL和实战 1. 事务1.1 MySQL客户端1.2 Python代码 2. 锁2.1 排它锁2.2 共享锁 3. 数据库连接池4. SQL工具类4.1 单例和方法4.2 上下文管理 5.其他总结 目标:掌握事务和锁以及Python操作MySQL的各种开发必备知识。 概要: 事务锁数据库连接池…