稠密点云获取方法(二)

2023-10-13 00:30
文章标签 方法 获取 点云 稠密

本文主要是介绍稠密点云获取方法(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作为高分辨率三维重建的方法之一,从单张图像生成稠密三维点云在计算机视觉领域中一直有着较高的关注度。

以下文献提出了一种针对二维和三维信息融合的方法以解决三维点云稀疏难以检测远处的目标的问题。

Multimodal Virtual Point 3D Detection

该文献提出一种将 RGB 传感器无缝融合到基于激光雷达的 3D 识别的方法。它采用一组二维检测来生成密集的三维虚拟点,以增强原本稀疏的三维点云。这些虚拟点与常规的激光雷达获得的原始点云一起自然地整合到任何标准的基于激光雷达的三维检测器中。由此产生的多模式检测器简单而有效。

在大规模的nuScenes数据集上的实验结果表明,该框架将强大的 CenterPoint 基线大幅提高了 6.6mAP,并超过具有竞争性的融合方法。

该方法的思路比较简单,具体如下。

该论文的思想借鉴了PointPainting,实际上是利用图像实例分割结果,对激光点云做了稠密化。

PointPainting是获得图像分割结果后,把点云投影到图像上,得到每个点对应的图像分割的label。

假设原来的点云是N×3,就多了一维图像分割的label,变成N×4,然后用常规的点云处理算法处理,基于Point、Voxel或BEV。

同样是将点云投影到图像上,这篇论文反其道行之。

作者提出点云的一个缺点是太稀疏了,比如一辆车上只有几个激光点打了上去,而图像像素是全都“打”了上去。所以提出了一种方法,根据稠密的像素稠密化点云。

其生成虚拟点的方法:

1)首先对与点云对应的二维RGB图像进行语义(实例)分割,将激光点投影到图像(二维RGB相机坐标内)上,这样图像上每个instance上都会有几个激光点投上去。注意:这里仅考虑位于前景点实体分割中的点。

2)然后,对每个instance内的像素进行随机采样K个点(图c红色点),与被激光点投影上的像素(图c黑色点)进行最近邻关联,根据最近的几个原始点云的深度插值出虚拟点的深度。

3)最后,根据联合标定阶段得到坐标系变换矩阵将这些点投影回激光坐标系,得到virual lidar points,同时这些虚拟点包含实体分割中的类别信息。这样就达到了点云稠密化的效果,然后使用现在流行的3D backbone点云处理算法进行处理。 

 上述生成虚拟点的依据可能是对于属于同一个前景目标中的点,其前景深度不会相差很大,所以可以用其周围点的深度信息来对虚拟点的深度信息进行补全。从而到达缓解点云稀疏性的目的。

相比于baseline CenterPoint,从以下述表格中可以看出,使用生成的虚拟点确实能够在一定程度上提高模型的检测性能。此外,相比于同样采用分割结果来进行多模态融合的PointPainting, 该方法也获得了更好的性能。

此外,作者还研究了实体分割精度对于检测性能的影响。

 文中通过使用降低输入分辨率模拟实体分割精度下降的方法,从文中可以看出,本文所提方法对于实例分割的精度还是具有较高的鲁棒性。

此外,作者还在文中提到,其在实验过程中验证了本文中所使用的基于邻近点进行深度估计的精度,平均误差在0.33m左右,可见在同一前景目标中,这种基于临近点的深度估计精度还是比较高的。

这篇关于稠密点云获取方法(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/199502

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方