基于图注意力网络的两阶段图匹配点云配准方法
Two-stage graph matching point cloud registration method based on graph attention network— 基于图注意力网络的两阶段图匹配点云配准方法
从两阶段点云配准方法中找一些图匹配的一些灵感。文章提出了两阶段图匹配点云配准网络(TSGM-Net) TSGM-Net

摘要概括
-
首先,我们设计了动态图到点(DGTP)模块来学习点云
局部图的特征表示,以提高局部特征的识别能力。 -
然后,通过Transformer和引入的边缘阈值λ动态建立边缘,并使用图注意网络提取点云的
全局特征以考虑拓扑结构中相似特征之间的关系。 -
同时,从节点本身、局部和全局三个维度计算分数,并求和以进行关键点检测。
-
最后,提出了一种两阶段图匹配方法,将具有高度相似特征的关键点分为不同的点组,并在第一阶段图匹配中建立点组的对应关系。在第二阶段的图匹配中建立了对应点群中的点的对应关系,从而减少了相似特征对点云配准精度的影响。
构造出来的是一个双阶段的点云配准网络。
导言与相关工作
因为自己对3d相关的一些知识接触的比较少,因此对于点云配准的相关经典算法不在进行解释,只是总结一下与本文密切相关的一些信息,着重学习网络和各个模块的设计方法。
两阶段图匹配点云配准网络(TSGM-Net),以更好地处理具有重复几何结构的点云。
-
我们设计了一个动态图到点(DGTP)模块,通过为一个点及其多个最近点构建局部完整图并将图的特征表示为点的特征来提取局部特征。
-
基于局部特征,使用图注意力网络提取点云的全局特征。基于Transformer计算的点间相关性与引入的边缘阈值λ进行比较,为重要节点建立边缘,动态构建点云的全局不完全图。
-
同时,关键点检测模块计算每个点的自得分、局部得分和全局得分,并将三者得分相加得到总得分
-
之后,该模块会将总得分最大的前 N 个点作为关键点,并使用 K 最近邻(KNN)将所选关键点划分为多个点组。对全局视图中的点群进行第一阶段图匹配,然后对局部视图中相应点群中的点进行第二阶段图匹配。
采用两阶段图匹配方法,将特征高度相似的点划分为不同的点组进行匹配,以减少错误对应的产生。

文章的贡献总结
-
我们提出了一种两阶段图匹配方法。 第一阶段对
点群进行图匹配,第二阶段对对应点群中的点进行图匹配,解决特征高度相似导致的对应错误问题。 -
我们设计了一个DGTP模块(动态图到点)。 我们为点云构建局部完整图,并利用图的特征表示作为点的特征,以提高提取
局部特征的能力。 -
我们利用图注意力网络提取全局特征,并引入边缘阈值λ来动态构造重要节点的边缘,构建点云的全局不完全图,以充分利用图注意力网络来聚合拓扑结构。
-
我们从节点本身、局部和全局三个维度计算分数进行关键点检测,从而提高关键点的可靠性。
核心方法—问题描述
- 对于三维空间中的两个点云:X和Y 且 X为源点云,Y 为目标点云。
X = { x j ∈ R 3 ∣ j = 1 , ⋯ , J } and Y = { y k ∈ R 3 ∣ k = 1 , ⋯ , K } X=\left\{x_{j} \in \mathbb{R}^{3} \mid j=1, \cdots, J\right\} \text { and } Y=\left\{y_{k} \in \mathbb{R}^{3} \mid k=1, \cdots, K\right\} X={xj∈R3∣j=1,⋯,J} and Y={yk∈R3∣k=1,⋯,K}
xj 是X中第j个点的坐标,yk 是Y中第k个点的坐标 J 和 K 是 X 和 Y 中的点的个数。
- 点云配准的任务是寻找最优的刚性变换{R,t}对齐两个点云 X 和 Y。其中R代表的是旋转矩阵 t ∈ R3 是平移矩阵
R ∈ S O ( 3 ) R \in S O(3) R∈SO(3)
- 假设 J ==K 且 xj 和 yj 是一对对应点,我们可以通过最小化下面的方程来对齐两个点云。
E ( R , t ) = 1 J ∑ j J ∥ R x j + t − y j ∥ 2 E(R, t)=\frac{1}{J} \sum_{j}^{J}\left\|R x_{j}+t-y_{j}\right\|^{2} E(R,t)=J1j∑J∥Rxj+t−yj∥2
然而,通常情况下,J≠K,并且X和Y中的点的顺序是不同的。 也许xj和yk是一对对应点,并且X中可能没有点与Y中的点对应。
- 对于这种情况,我们决定选择 N 个关键点 点云配准是通过最小化方程来实现的
X k = { x p k ∈ R 3 ∣ p = 1 , ⋯ , N } X^{k}=\left\{x_{p}^{k} \in \mathbb{R}^{3} \mid p=1, \cdots, N\right\} Xk={xpk∈R3∣p=1,⋯,N}
Y k = { y q k ∈ R 3 ∣ q = 1 , ⋯ , N } . Y^{k}=\left\{y_{q}^{k} \in \mathbb{R}^{3} \mid q=1, \cdots, N\right\} . Yk={yqk∈R3∣q=1,⋯,N}.
其中 M 是从 Xk 中的点到 Yk 中的点的映射
E ( M , R , t ) = 1 N ∑ p N ∥ R x p k + t − y M ( x p k ) k ∥ 2 , E(M, R, t)=\frac{1}{N} \sum_{p}^{N}\left\|R x_{p}^{k}+t-y_{M\left(x_{p}^{k}\right)}^{k}\right\|^{2}, E(M,R,t)=N1p∑N Rxpk+t−yM(xpk)k 2,
核心过程具体实现
整体概述
TSGM-Net的架构如图所示

根据刚性变换 :
{ R i − 1 , t i − 1 } \left\{R_{i-1}, t_{i-1}\right\} {Ri−1,ti−1}
通过 i − 1 次迭代求解从而得到变换后的点云Xi−1。
- 对于输入点云 Xi−1 和 Y,我们使用 DGTP 模块进行局部特征提取,使用图注意网络进行全局特征提取
也就是对应图中的第一个部分和第二个部分所描述的结构。
- 选择质量较高的关键点,并基于KNN将其划分为点组。
通过KNN划分为多个组。
- 基于组的特征提取用于学习每个点组中关键点的拓扑结构并进行图特征表示。
也就是对应图中的第二个部分关键点检测模块和分组的阶段。
- 第一阶段的图匹配是对每个点群的图特征表示进行,以建立点群之间的对应关系。 第二阶段图匹配根据点群与关键点特征的对应关系建立对应关系M
M = { M R , M t } M=\left\{M_{R}, M_{t}\right\} M={MR,Mt}
对应点群中的点。
最后通过SVD的分解运算得到最后所需要第i次迭代的刚性变换的矩阵。


图1 TSGM-Net架构图。 TSGM-Net从点云Xi−1和Y中提取局部和全局特征,并通过关键点检测模块获得关键点。 在两阶段图匹配中,首先将关键点分为点组,并使用图特征表示进行基于组的特征提取。 然后,通过第一阶段的图匹配建立Xi−1和Y之间的点群对应关系Mgroup。 基于Mgroup,对对应点群的关键点进行第二阶段图匹配,得到两个点云之间的对应关系MR和Mt。 最后,使用基于 MR 和 Mt 的 SVD 求解第 i 次迭代的刚性变换 {Ri,ti}
Dynamic Graph-to-Point-DGTP模块
动态图到点模块(DGTP)
论文中对局部特征提取的描述部分
X中的点xj ∈ R3,将xj的3D坐标映射到高维空间,以获得xj的局部特征Fxj。 因此,我们使用DGTP进行特征提取,得到X的局部特征为Fx ∈ RF。

对于距离xj最近的点xi,通过MLP建立两点之间的边缘特征fji ∈ RF,并将该边缘特征作为点xi的特征
相关文章:
基于图注意力网络的两阶段图匹配点云配准方法
Two-stage graph matching point cloud registration method based on graph attention network— 基于图注意力网络的两阶段图匹配点云配准方法 从两阶段点云配准方法中找一些图匹配的一些灵感。文章提出了两阶段图匹配点云配准网络(TSGM-Net) TSGM-Ne…...
【半导体光电子器件】课后习题答案和知识点汇总
关注作者了解更多 我的其他CSDN专栏 求职面试 大学英语 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处…...
Unity命令行传递自定义参数 命令行打包
命令行参数增加位置 -executeMethod 某脚本.某方法 参数1 参数2 参数3 ... 例如执行EditorTest.GetCommandLineArgs方法 增加两个命令行参数 Version=125 CDNVersion=100 -executeMethod EditorTest.GetCommandLineArgs Version=125 CDNVersion=100 Unity测试脚本 需要放在…...
web-worker应用在大文件切片上传
当文件体积过大时,传统的文件上传方式往往会导致页面卡顿,用户体验不佳。为了解决这一问题,我们可以利用Web Worker技术来进行大文件的切片上传。本文将详细介绍如何使用Web Worker进行大文件切片上传,并通过具体的例子来演示其实…...
Django 模板分割及多语言支持案例【需求文档】-->【实现方案】
Django 模板分割及多语言支持案例 这个案例旨在提供一个清晰的示范,展示如何将复杂的页面分解为多个可复用的模板组件,使代码更加模块化和易于管理。希望这篇案例文章对你有所帮助。 概述 在 Django 项目开发中,使用模板分割和多语言支持能…...
C中设计不允许继承的类的实现方法是什么?
在C中,设计不允许继承的类可以通过多种方法实现。以下是详细的方法说明及示例: ### 方法一:将构造函数和析构函数设为私有 这种方法的核心思想是通过将构造函数和析构函数设为私有,使得子类无法调用这些函数,从而无法…...
面对小白的C语言学习方法
这是第20篇文章,不来弄一些技术的,弄一些最近的学习心得,怎么更有效地自学C语言 书籍 书籍可以很有效的告知我们专有函数,使用方法还有一些思考方式,缺点是实操差点意思,还是不太能解决实际问题ÿ…...
使用libgif库解码全过程(C语言)-包括扩展块的处理
我看到的所有例程,都把扩展部分的处理跳过了,而我的动画是有透明度的,这就导致解码后的图像在有透明色的像素部分,呈现了很多的黑点,或者闪白的情况出现。经过调试,终于成功。 文件格式 先了解一下GIF的文…...
blazor实现ASP.NET网站用户批量注册方法
ASP.NET网站用户批量注册是许多使用blazor系统开发遇到的问题,为了解决这个问题,我们提出比较完善的解决方法,通过代码实现了一个批量用户注册功能,用于解析一份用户名列表,并通过后台服务注册用户,同时对成功和失败的注册进行记录和反馈。以下是实现功能的详细工作原理描…...
SpringCloud 入门(4)—— 网关
上一篇:SpringCloud 入门(3)—— Nacos配置中心-CSDN博客 Spring Cloud Gateway 作为 Spring Cloud 生态系统的一部分,主要在微服务架构中充当 API 网关的角色。它提供了统一的入口点来处理所有的 HTTP 请求,并将这些请…...
什么是WebAssembly?怎么使用?
一、简述 WebAssembly,也称为Wasm,是基于堆栈的虚拟机的二进制指令格式。它被设计为一个可移植的目标,用于编译C、C和Rust等高级编程语言,允许代码以接近本机速度在web浏览器中运行。WebAssembly于2015年由包括谷歌、微软、Mozill…...
v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。
一、背景、目的、简介。 一般来说,通过uboot将屏幕参数传给kernel,是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里,我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…...
某科技局国产服务器PVE虚拟化技术文档
环境介绍 硬件配置 服务器品牌:黄河 型号:Huanghe 2280 V2 Cpu型号:kunpeng-920 磁盘信息 :480SSD * 2 ,4T*4 网卡:板载四口千兆 如下表 四台服务器同等型号配置,均做单节点虚拟化,数据保护采用底层r…...
中科岩创边坡自动化监测解决方案
行业现状 由于边坡不稳定性因素,可能会造成斜坡上的岩土体沿着某个面不均匀向下向外滑动,形成滑坡;陡峭山坡上岩土体在重力作用下,发生陡然倾落运动,造成崩塌;在沟谷或山坡上产生的夹带大量泥沙、石块等固体…...
GPT-O3:简单介绍
GPT-O3:人工智能领域的重大突破 近日,OpenAI发布了其最新的AI模型GPT-O3,这一模型在AGI评估中取得了惊人的成绩,展现出强大的能力和潜力。GPT-O3的出现标志着人工智能领域的重大进步,预计将在2025年实现更大的突破。 …...
cudnn版本gpu架构
nvcc --help 可以看 --gpu-architecture 写到的支持的架构 NVIDIA 的 GPU 架构是按代次发布的,以下是这些架构的对应说明: NVIDIA Hopper: 这是 NVIDIA 于 2022 年推出的架构之一,面向高性能计算(HPC)和人工智能&…...
数据库安全-redisCouchdb
1.redis未授权访问 默认端口:6379 1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543 介绍:Redis 是一套开源的使用 ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。Redis 如果在没有开启认证的情况下,…...
ubuntu22.04安装PaddleX3
PaddleOCR 安装过程可以参考PaddleX本地安装教程 我的电脑环境配置: ubuntu22.04 cuda11.8(之前安装的是12.4没有匹配的paddle-gpu;这里改成11.8) 一、安装基础环境 1、 conda create -n ppx1 python3.10 2、 conda activate ppx1 3、…...
Flutter 实现全局悬浮按钮学习
Flutter 代码如何实现了一个全局悬浮按钮,当点击按钮时,会显示一个可以拖动并且通过长按可以移除的悬浮控件。 前置知识点学习 Offset Offset 是 Flutter 中的一个类,用于表示二维平面中的位置或位移。它通常用于描述坐标系中的一个点&…...
14-C语言多文件编程
一、各种变量 在学习多文件编程之前,先要了解清楚各种变量的作用范围以及生命周期。 1.普通变量 1.1普通局部变量 定义形式:在复合语句{}里面定义的变量为普通局部变量;作用范围:在复合语句{}里面有效;生命周期&am…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
