基于图注意力网络的两阶段图匹配点云配准方法
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…...

基于Springboot的在线问卷调查系统【附源码】
基于Springboot的在线问卷调查系统 效果如下: 系统主页面 问卷列表页面 个人中心页面 系统登陆页面 管理员主页面 问卷管理页面 研究背景 随着互联网技术的飞速发展,传统的问卷调查方式因其时间和地点的限制,难以高效地收集到足够的数据。…...

Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
1. 引言 1.1 背景介绍:MySQL与Redis在高性能场景下的结合 在现代互联网应用中,MySQL作为关系型数据库,承担了大量业务数据的存储任务。然而,随着业务的增长,海量数据的查询性能成为一个瓶颈。为了应对高并发和低延迟…...

【图书介绍】】几本Linux C\C++编程图书
Linux C\C编程,是IT领域比较稳定的职业发展方向,本文介绍几本Linux开发方面的图书。 《Linux C与C一线开发实践(第2版)》 《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文…...

MFC/C++学习系列之简单记录7
MFC/C学习系列之简单记录7 前言句柄的介绍句柄的使用AFX开头的函数都是干什么用的?总结 前言 在MFC的使用中发现了句柄,今天来详细学习一下MFC中如何使用句柄吧! 句柄的介绍 句柄的使用是资源管理和传递的关键机制,通过句柄将系…...

使用GPT进行SCI论文润色常用语句
声明:本文仅作为本人记录学习使用。 You are now a professional academic touch-up specialist. Please polish the English draft I am sending you next. After analyzing the paragraph, give suggestions for polishing in terms of sentence structure, gram…...

Redis密码设置与访问限制(网络安全)
现在用redis缓存热数据越来越常见了,甚至一些配置,开关等等的东西也写到redis里。原因就是redis简单高效。redis里的数据也越来越重要了,例如一些业务的中间数据会暂时存放在redis里,所以限制redis的访问还是很有必要。 本文通过…...

php的线程安全与非线程安全版本的区别
PHP的线程安全(Thread Safe,简称TS)与非线程安全(Non-Thread Safe,简称NTS)版本主要在多线程环境下的行为特性、性能、以及适用场景上存在差异。以下是两者的详细对比: 一、定义与概念 线程安…...

标贝科技受邀出席2024ADD数据应用场景大会 共议数据要素发展新契机
12月13日,由北京市通州区人民政府主办,通州区经济和信息化局、通州区台湖镇人民政府承办的2024-ADD数据应用场景大会成功举办。标贝科技作为AI数据领域代表企业受邀出席大会,与数据要素创业者、投资人一起走进通州台湖,共话数据要…...

electron-vite打包后图标不生效问题
在electron-builder.yml中,通过icon配置自己的图标,以下是正确代码 win:executableName: 名称icon: build/icon.ico nsis:artifactName: ${name}-${version}.${ext}shortcutName: ${productName}uninstallDisplayName: ${productName}createDesktopShor…...

systemverilog中的unique if
1 基本概念 在 SystemVerilog 中,unique if是一种条件判断结构。它用于检查多个互斥的条件,以确保在给定的情况下只有一个条件分支被执行。这有助于提高代码的可读性和可维护性,同时也能帮助发现潜在的逻辑错误,报错原因有以下两个…...