论文阅读:“基于特征检测与深度特征描述的点云粗对齐算法”
文章目录
- 摘要
- 简介
- 相关工作
- 粗对齐
- 传统的粗对齐算法
- 基于深度学习的粗对齐算法
- 特征检测及描述符构建
- 本文算法
- ISS 特征检测
- RANSAC 算法
- 3DMatch 算法
- 实验结果
- 参考文献
摘要
点云对齐是点云数据处理的重要步骤之一,粗对齐则是其中的难点。近年来,基于深度学习的点云对齐取得了较大进展,特别是 3DMatch 方法,能够在噪声、低分辨率以及数据缺失的条件下取得较好的对齐效果。3DMatch 采用随机采样的方式产生待匹配点,当采样点个数较少时会导致匹配率较低,因此对齐效果不佳。为此,利用 ISS 特征点检测代替随机采样,然后以 3DMatch 为特征点生成描述符,最后通过匹配特征描述符实现数据对齐。
由于 ISS 特征点检测具有良好的重复性,同时 3DMatch 能够提供具有高区分度的描述符,因此该方法大大提高了匹配的鲁棒性和准确性。实验结果表明,与随机采样相比,特征点采样在初始点云无噪、弱噪和强噪的情况下对齐效果更好、鲁棒性更强,并且在粗对齐效果相似的情况下,所需特征采样点的个数仅为随机采样点个数的10 %,极大地提高了对齐的效率。
简介
点云对齐是三维模型重建的关键步骤之一。特别是粗对齐,需要在不清楚两片点云的相对位置关系的情况下,通过找到一个变换关系来使两片点云的共同部分较好地重叠在一起。一个好的粗对齐结果能为后续的精细对齐提供良好的初始位置,并避免精细对齐陷入局部最优解。
3DMatch 利用 RGB-D 重构结果生成数百万个对应的标签,对其进行训练后能够得到鲁棒性好、泛化能力强的特征描述符。通过寻找生成特征描述符的匹配关系,即可实现粗对齐。但该方法中的待匹配点是通过随机采样获得的,对于规模较大的点云数据,采样点的重复性差、匹配率低,从而导致粗对齐效果不佳。
针对上述问题,这篇文章基于 ISS 特征检测的方法,对原始点云进行特征点提取,以提高待匹配点的重复性,同时采用深度特征描述符来改善待匹配点的相似度量。
相关工作
粗对齐
粗对齐算法大致可分为两类:一类为传统的粗对齐算法;另一类为基于深度学习的粗对齐算法。
传统的粗对齐算法
4PCS 的基本思想来源于 RANSAC 算法,其优化了寻找两片点云“对应点”的策略。基于共面四点对的仿射不变性,该算法从源点集中选取共面的四点作为基面,然后在目标点集中找到所有与基面近似一致的共面四点对,以此进行粗对齐。该算法尽管能够取得较好的对齐效果,但是在目标点集中找到的与源点集基面对应的 4 个点会存在误匹配点,而剔除错误点会耗费大量的时间,从而降低了对齐效率。
Super 4PCS 算法改进了 4PCS 算法,通过添加额外的约束条件来滤除潜在的错误点对,从而得到了与基面对应的唯一四点集,并加快了算法的执行速度。但是 Super 4PCS 对噪声较大的点云的对齐效果不佳,且对齐时长不稳定。
SAC-IA 算法首先分别计算源点云和目标点云的 FPFH(Fast Point Feature Histograms)特征描述子,然后在目标点云中查找与源点云中采样点具有相似 FPFH 特征的点,最后从这些相似点中随机选取一个点作为源点云与目标点云的对应点,并通过 Huber 惩罚函数计算距离误差和,完成对齐。但是,SAC-IA 在点云数量较多的情况下,计算 FPFH 特征较慢,算法效率低,因此需要对点云进行下采样处理,以减少点的数量,但这会造成部分特征点丢失,从而降低对齐的准确度。
基于深度学习的粗对齐算法
3DShapeNets 将深度学习引入三维建模中,通过计算三维数据的深层特征来提取全局特征,其抗噪性能好,但是细节区分能力差,因此仅当数据重合度很大时才能得到很好的对齐效果。
3DMatch 利用 RGB-D 重构结果中的数百万个正负标签,通过孪生网络结构的 3D 卷积神经网络,训练出鲁棒性高且泛化能力强的描述符,在新的场景下依然能实现粗对齐。
相比传统算法,基于深度学习的对齐算法能够利用训练好的权重为局部特征快速生成描述符以进行对齐,并且对噪声、离群点具有鲁棒性。
特征检测及描述符构建
特征检测及特征描述符构建是三维模型粗对齐中重要的一环。常用的特征检测方法有 SIFT 特征检测、NARF 特征检测、Harris3D 角点检测和 ISS 特征检测。
SIFT 特征检测通过在空间尺度中寻找极值点,来提取其位置、尺度、旋转不变量,因此基于 SIFT 特征检测提取的特征点具有鲁棒性。SIFT 描述符通过对特征点的周围图像区域进行分块,来计算尺度空间内的 128 维向量,并将其作为该区域的特征。但是,SIFT特征检测多适用于带有颜色映射的点云模型。
NARF 特征检测对法向量的估计比较稳定,该算法将点云数据转换成 2D 深度图,其计算量小于直接操作点云数据的方法。NARF 描述符能够描述物体表面以及外部空间形状,对特征点建立唯一的一个局部坐标系并通过距离函数区别特征,从而找到匹配对。但是,NARF 算法适用于较为规则的深度图像。
Harris3D 角点检测是 2D Harris 算法的一种延伸。该算法借助离散点云的法向信息构造协方差矩阵,并根据角点响应函数计算点云中每个角点的响应值,最后将响应值大于设定阈值的局部极大值点判定为特征点。Haris3D 角点检测具有很强的旋转不变性,但通过该方法提取到的特征点数量不如 ISS 特征检测提取到的多,而且在平滑曲面上的差距更为明显。另外,Harris3D 角点检测的效率也远不如 ISS 特征点检测。
ISS 特征检测首先构建基于当前点的局部坐标系,并在该坐标系下对邻域点协方差矩阵进行特征分解,然后得到协方差矩阵的特征值。特征值对应的椭球形态是对邻近点分布状态的抽象总结,因此根据椭球的 3 个主方向的大小关系判断该点是否为特征点。基于ISS特征检测提取的特征点数量多、重复性好,而且对噪声具有鲁棒性,结合 3DMatch 算法,对特征点生成对应的描述符来寻找匹配对,可以较好地实现数据对齐。
本文算法
首先分别对源点云和目标点云进行 ISS 特征检测,然后利用 3DMatch 网络对特征点生成对应的 512 维 DNN 描述符,最后结合 KD-Tree 搜索,对两点的描述符计算 L2 范数来判断这两个点是否为匹配对,并通过 RANSAC 算法求得最优的旋转平移矩阵。
ISS 特征检测
ISS 特征检测算法首先对点云上的每个点都定义一个局部坐标系,然后通过协方差矩阵建模,求得 3 个特征值和特征向量。这 3 个特征值和特征向量定义了一个椭球空间,其中,特征值代表椭球轴的长度,特征向量代表以该点为中心的椭球的 3 个主方向。若某一点的 3 个主方向大小相近,则表明当前点处曲面起伏很大,进而可以判定该点为特征点。
RANSAC 算法
虽然基于ISS特征检测算法提取的点都是特征点,但因受到噪声等影响,特征点集中也会包含错误数据,因此需要对其进行滤除。而 RANSAC 算法能够通过模型估计将数据区分为内点和外点,并能剔除外点,即错误点,因此采用 RANSAC 算法。
RANSAC 算法的基本假设是样本中既包含正确数据又包含错误数据,首先随机选择样本数据集的子空间生成模型估计,测试和评估剩余样本数据集中的点,符合该模型的点称为内点,反之为外点,然后通过不断迭代,最终找出内点个数最多、误差最小的单应性矩阵。此时认为所有的外点均为错误数据并将其滤除。
3DMatch 算法
3DMatch 是一种数据驱动模型,该模型采用自监督的特征学习方法,利用局部体素网格的描述符来建立三维数据之间的对应关系。3DMatch 网络结构如下图所示:

利用 3DMatch 进行点云对齐的具体过程如下:
- 对目标点云和源点云进行随机采样,并以每个采样点为中心提取大小为 30 × 30 × 30 30\times 30 \times 30 30×30×30 的体素网格来代表该点,其中每个小体素格子的具体尺寸根据输入点云模型的大小进行自适应调整;
- 计算网格中每个小体素格子的 TDF 值,这些值代表该体素中心与最近的 3D 表面之间的距离,再将这些 TDF 值归一化(1 代表在点云表面上,0 代表远离点云表面);
- 以该点的体素网格作为神经网络的输入生成对应的特征描述符;
- 通过 L2 范数进行相似性度量并结合对比损失函数建模,从而判断两点是否为匹配对。
实验结果
无噪声情况下随机采样与特征检测算法的比较:

弱噪声情况下随机采样与特征检测算法的比较:

强噪声情况下随机采样与特征检测算法的比较:

参考文献
[1] 史文凯,张昭晨,喻孟娟,吴瑞,聂建辉,基于特征检测与深度特征描述的点云粗对齐算法,计算机科学。DOI:10. 11896/jsjkx. 191000069
相关文章:
论文阅读:“基于特征检测与深度特征描述的点云粗对齐算法”
文章目录 摘要简介相关工作粗对齐传统的粗对齐算法基于深度学习的粗对齐算法 特征检测及描述符构建 本文算法ISS 特征检测RANSAC 算法3DMatch 算法 实验结果参考文献 摘要 点云对齐是点云数据处理的重要步骤之一,粗对齐则是其中的难点。近年来,基于深度…...
[python]python筛选excel表格信息并保存到另一个excel
目录 关键词平台说明背景所需库1.安装相关库2.代码实现sourcetarget1 关键词 python、excel、DBC、openpyxl 平台说明 项目Valuepython版本3.6 背景 从一个excel表中遍历删选信息并保存到另一个excel表 所需库 1.openpyxl :是一个用于读写 Excel 文件的 Pyt…...
使用kafka_exporter监控Kafka
prometheus 监控 kafka 常见的有两种开源方案,一种是传统的部署 exporter 的方式,一种是通过 jmx 配置监控, 项目地址: kafka_exporter:https://github.com/danielqsj/kafka_exporterjmx_exporter:https://github.com/prometheus/jmx_exporter本文将采用kafka_exporter方…...
基于Bagging集成学习方法的情绪分类预测模型研究(文末送书)
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
Java算法(八)手写String集合元素去重的两种实现方式 正序 逆序 删除集合中符合条件的字符串
Java算法(八): 实现集合去重 需求:创建一个存储String的集合,内部存储(test, 张三, test,test, 李四)字符串 删除所有的test字符串,删除后&#…...
Linux的简单使用
Linux命令使用技巧 Tab键自动补全连续两次Tab键,给出操作提示使用上下箭头快速调出曾经使用过的命令使用clear命令或者Ctrll快捷键实现清屏Linux的常用命令 命令作用详细说明ls [-al] [dir]显示指定目录下的内容 -a 显示所有文件及目录 (. 开头的隐藏文件也会列出) …...
OpenCV技术应用(4)— 如何改变图像的透明度
前言:Hello大家好,我是小哥谈。本节课就手把手教你如何改变图像的透明度,希望大家学习之后能够有所收获~!🌈 目录 🚀1.技术介绍 🚀2.实现代码 🚀1.技术介绍 改变图像透明度的实…...
SpringCloud之Feign
文章目录 前言一、Feign的介绍二、定义和使用Feign客户端1、导入依赖2、添加EnableFeignClients注解3、编写FeignClient接口4、用Feign客户端代替RestTemplate 三、自定义Feign的配置1、配置文件方式全局生效局部生效 2、java代码方式 四、Feign的性能优化连接池配置 五、Feign…...
股票池(三)
3-股票池 文章目录 3-股票池一. 查询股票池支持的类型二. 查询目前股票池对应的股票信息三 查询股票池内距离今天类型最少/最多的股票数据四. 查询股票的池统计信息 一. 查询股票池支持的类型 接口描述: 接口地址:/StockApi/stockPool/listPoolType 请求方式:GET…...
如何搭建测试环境?一文解决你所有疑惑!
什么是测试环境 测试环境,指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称,简而言之,测试环境硬件软件网络数据准备测试工具。 硬件:指测试必需的服务器、客户端、网络连接等辅助设备。 软件&#…...
【JVM】JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]
文章目录 一、背景二、原因三、 代码验证 一、背景 生产环境日志突然膨胀到100G, 为了定位问题,所以截取了部分报错日志, 问题是 堆栈信息呢? 哪里报的NPE在哪??? 信息如下: [ERROR] 2020-12-09 09:41:50.053 - [taskAppIdTASK-1919-33805-97659]:[156] - wait task qu…...
第十一章 目标检测中的NMS
精度提升 众所周知,非极大值抑制NMS是目标检测常用的后处理算法,用于剔除冗余检测框,本文将对可以提升精度的各种NMS方法及其变体进行阶段性总结。 总体概要: 对NMS进行分类,大致可分为以下六种,这里是依…...
vue项目中使用vant轮播图组件(桌面端)
一. 内容简介 vue使用vant轮播图组件(桌面端) 二. 软件环境 2.1 Visual Studio Code 1.75.0 2.2 chrome浏览器 2.3 node v18.14.0 三.主要流程 3.1 安装环境 3.2 添加代码 3.3 结果展示 四.具体步骤 4.1 安装环境 先安装包 # Vue 3 项目,安装最新版 Va…...
如何做好性能压测 —— 压测环境设计和搭建!
简介:一般来说,保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则。有时候,即便是压测环境和生产环境有很细微的差别,都有可能导致整个压测活动评测出来的结果不准确。 1. 性能环境要考虑的要素 1.1 系…...
手机弱网测试工具:Charles
我们在测试app的时候,需要测试弱网情况下的一些场景,那么使用Charles如何设置弱网呢,请看以下步骤: 前提条件: 手机和电脑要在同一局域网内 Charles连接手机抓包 一、打开Charles,点击代理,…...
Axios七大特性
Axios是一个基于Promise的HTTP客户端,用于浏览器和Node.js环境中发起HTTP请求。它有许多强大的特性,下面将介绍Axios的七大特性。 1. 支持浏览器和Node.js Axios既可以在浏览器中使用,也可以在Node.js环境中使用,提供了统一的AP…...
【机器学习基础】K-Means聚类算法
🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学! ⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战…...
Vite - 配置 - 自动修改 index.html 中的title
需求描述 在Vue3项目的开发过程中,我们为了能区分正式环境和测试环境, 通常会进行环境配置文件的区分, 例如,开发环境一个配置文件、生产环境一个配置文件。因此,我们就希望 在项目的index.html 的 title 标签中&…...
基于安卓android微信小程序美容理发店预约系统app
项目介绍 为美容院设计一个系统以减少员工的工作量就成为了想法的初始状态。紧接着对美容院进行进一步的调查发现我的想法已然落后。基本上每个美容院都以有了自己的信息系统,并且做的已经较完善了。 在这时我突然想到,现在关注美容养生的人越来越多&am…...
*** stack smashing detected ***: terminated
有一个函数返回值是bool类型,但忘了return了,编译可以通过,但是运行的时候报这个错误。...
梯度下降算法:机器学习优化的核心原理与实践
1. 梯度下降:机器学习优化的核心动力第一次接触机器学习时,我被那些能自动识别猫狗图片的算法震撼了。但真正让我着迷的是背后的优化过程——就像教一个孩子学骑自行车,需要不断调整姿势和力度。梯度下降就是这个"教学"过程的核心方…...
避坑指南:ESP32-CAM用I2C驱动0.91寸OLED时,SDA/SCL引脚别接错了
ESP32-CAM与OLED屏的I2C连接避坑实战:从硬件引脚到代码调试的全方位指南 第一次拿到ESP32-CAM和0.91寸OLED屏时,我天真地以为只要按照常规I2C接线就能轻松点亮屏幕。结果在经历了一整天的调试后,才意识到这个看似简单的连接背后藏着不少"…...
Hyper-V虚拟机网络配置避坑指南:从‘网络不可达’到流畅上网,手把手教你配置CentOS/Ubuntu静态IP和DNS
Hyper-V虚拟机网络配置避坑指南:从‘网络不可达’到流畅上网 1. 理解Hyper-V网络架构的核心要素 在开始配置之前,我们需要先理解Hyper-V虚拟网络的基本工作原理。Hyper-V的网络虚拟化架构由三个关键组件构成:虚拟交换机(Virtual Switch)&…...
Hermes Agent框架接入Taotoken自定义模型提供方的配置要点
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent框架接入Taotoken自定义模型提供方的配置要点 Hermes Agent 是一个流行的智能体开发框架,它允许开发者灵活…...
CANN/ops-transformer FlashAttentionScore算子
FlashAttentionScore 【免费下载链接】ops-transformer 本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-transformer 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练…...
Codex CLI与MCP协议集成:打造无缝AI编程工作流
1. 项目概述:当Codex CLI遇上MCP协议如果你和我一样,是个重度AI编程工具使用者,那你肯定对OpenAI的Codex CLI不陌生。这个命令行工具,特别是它最新的GPT-5.4模型,在代码生成和项目理解上的能力,已经让很多开…...
如何搭建个人游戏云:Sunshine串流服务器完全指南
如何搭建个人游戏云:Sunshine串流服务器完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,专为Moonlight…...
CANN/runtime算子信息订阅API
# 19-03 订阅算子信息 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 本章节描述算子信息订阅接口,用于订阅模型中算子的执行信息(类型、名称、耗时等)…...
3步掌握鼠标键盘自动化神器,彻底告别重复劳动
3步掌握鼠标键盘自动化神器,彻底告别重复劳动 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 你是否厌倦了每天…...
智慧树全自动刷课神器:Autovisor三步实现无人值守学习
智慧树全自动刷课神器:Autovisor三步实现无人值守学习 【免费下载链接】Autovisor 2025智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor 还在为智慧树网课而烦恼吗?每天需…...
