当前位置: 首页 > news >正文

泛化的最近点迭代法(Generalized-ICP)

        Generalized-ICP算法是由斯坦福大学的Aleksandr V. Segal、Dirk Haehnel和Sebastian Thrun提出的,于2009年在Robotics science and system会议上发表。

        GICP是一种ICP算法的变体,其原理与ICP算法相同,之所以称为泛化的ICP算法是因为大多数ICP框架没有被修改,仍用kd树检索临近点以保持速度和简单性,GICP所提出的泛化只处理目标函数的迭代计算,对收敛函数进行优化,将协方差矩阵计算加入误差函数。

        GICP是一种ICP算法的变体,其原理与ICP算法相同,之所以称为泛化的ICP算法是因为大多数ICP框架没有被修改,仍用kd树检索临近点以保持速度和简单性,GICP所提出的泛化只处理目标函数的迭代计算,对收敛函数进行优化,将协方差矩阵计算加入误差函数。

其标准算法可以分为两步: (a)确定两组点云之间的点的对应关系; (b)计算一个使对应点之间的距离最小化的变换;

  ICP算法核心的核心部分在伪码的第五行:在点云A中查找R·bi + t的对应点,为了保持算法的简单性,选择欧式距离最小的点作为对应点;      第七行:寻找最佳的将R·bi + t变换到mi的变换函数。这里最佳变化函数通过使一个特定的损失函数最小化确定,这个损失函数的不同也是本节提到的三种算法的根本区别。

        ICP算法有很多变体,其中point-to-plane的变体利用表面法线信息提高了性能。在标准ICP算法中,通过迭代使得对应点的欧氏距离即∑▒||R·b_i+t−m_i||^2最小化,但point-to-plane变体中,是使源表面上的点沿目标表面的曲面法线投影到切平面子空间上的误差最小化,如图,源表面上的点s1沿目标表面上的点d1的法线方向l1投影到d1的切平面上,投影点到d1的距离即为所求误差。

这一变化是通过改变标准ICP算法Algorithm 1中的第5行完成的,其中表示mi的曲面法线:

 而GICP则是在这一步对目标函数的迭代估计上引入了概率模型,但是对应点的查找仍然使用欧式距离,而非概率度量,从而仍能使用kd树来查找最近点,保持了ICP相对于其他完全依赖概率模型的算法的主要优势——速度和简单性。     假设点云A={ai}和B={bi}(i=1,...,n)是已经完成对应点匹配的两个点云,即ai与bi是对应点。建立一种点云概率模型,假设存在一组潜在的点A ̂={(a_i) ̂}和B ̂={(b_i) ̂}符合高斯分布,且点ai和点bi是从和中选取,即:

ai和bi是点(a_i) ̂和(b_i) ̂的真实位置,{C_i^A}和{C_i^B}是已知的协方差矩阵。定义残差d_i^R,t=b_i− R·a_i−t,则有:

 对于真实位置的变换(R*,t*)则有:

 接下来通过最大似然估计法(Maximum Likelihood Estimation, MLE)对R*和t*进行估计,则有最大似然函数:

由于上式不是凸函数,不便求其最大值,所以将(R,t)放在协方差中再利用MLE进行估算,将优化问题简化为最小化损失函数:

 其中,M_i=(C_i^B+RC_i^AR^T)^−1     上式即是GICP算法的核心内容。容易发现当令{C_i^A}=0和{C_i^B}=1时,得到的正是标准ICP的算式,即标准ICP算法是泛化ICP算法的一种特殊情况。

在这种形式下也简化了梯度计算,用r_i表示残差,即r_i=b_i−R·a_i−t,梯度可以表示为:

   由于这是一个约束优化问题,R必须是一个旋转矩阵,所以不能使用共轭梯度下降来解决。引入欧拉参数对旋转矩阵R进行描述,欧拉参数化的优点是使用了三个独立的参数(θ_x,θ_y,θ_z)。

   由于这是一个约束优化问题,R必须是一个旋转矩阵,所以不能使用共轭梯度下降来解决。引入欧拉参数对旋转矩阵R进行描述,欧拉参数化的优点是使用了三个独立的参数(θ_x,θ_y,θ_z)。

则有R相对于θ的梯度:

通过链式规则,有:

GICP中使用的点云协方差矩阵与传统的点云协方差矩阵的定义不同,由于现实物体表面是分段可微的,因此GICP假设数据集是局部平面的,即点服从平面分布,每个采样点在其局部平面方向上分布的协方差很高,而在曲面法线方向上分布的协方差很低。则可以设计一个模型,使得点在法线方向具有较小的方差,设为,值为0.001;在平面方向具有较大的方差,设为1:

 这里的R_ni是一个旋转矩阵,将基底向量e1旋转到点的法线方向。实际计算中,这个旋转矩阵是通过计算该点附近的点的协方差矩阵,并进行奇异值分解(Singular Value Decomposition,SVD)得到的,即为Σ ̂=UDU^T中的矩阵U。

相关文章:

泛化的最近点迭代法(Generalized-ICP)

Generalized-ICP算法是由斯坦福大学的Aleksandr V. Segal、Dirk Haehnel和Sebastian Thrun提出的,于2009年在Robotics science and system会议上发表。 GICP是一种ICP算法的变体,其原理与ICP算法相同,之所以称为泛化的ICP算法是因为大多数ICP…...

Java | Leetcode Java题解之第313题超级丑数

题目&#xff1a; 题解&#xff1a; class Solution {public int nthSuperUglyNumber(int n, int[] primes) {int[] dp new int[n 1];int m primes.length;int[] pointers new int[m];int[] nums new int[m];Arrays.fill(nums, 1);for (int i 1; i < n; i) {int minN…...

单细胞数据整合-去除批次效应harmony和CCA (学习)

目录 单细胞批次效应学习 定义 理解 常用的去批次方法-基于Seurat 1&#xff09; Seurat-integration&#xff08;CCA&#xff09; 2&#xff09; Seurat-harmony 去批次代码 ①Seurat-integration&#xff08;CCA&#xff09; ②Seurat-harmony 单细胞批次效应学习 …...

MuRF代码阅读

对图像Size的处理, 以适应Transformer 在MVSPlat 当中使用 Center_Crop 裁剪图像&#xff0c;适用于 Transformer 的32 倍数&#xff0c; 其中 焦距 f 不变化&#xff0c;只改变 cx,cy.MuRF 直接对图像进行 插值&#xff0c;合成理想的 size. 根据 ori_size 和 inference_size…...

pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“

参考博客&#xff1a; 1&#xff09;pycharm中配置pyqt designer和pyside2【功能是在pycharm中可以打开designer,并且可以把.ui文件转换为.py文件】 https://blog.csdn.net/kuntliu/article/details/117219237 2&#xff09;.ui转化为.py后&#xff0c;点击运行&#xff0c;报错…...

c语言指针中“数组名的理解”以及“一维数组传参”的本质

数组名的理解 数组名就是数组首元素的地址。 例如&#xff1a;输入一个数组的所有元素&#xff0c;再打印出来。 另一种写法 以上可以看出&#xff1a;*arri&#xff09; arr[i] 也即是&#xff1a;*(iarr)i[arr] 本质上无区别 1&#xff1a;数组就是数组&#xff0c;是一块…...

计算机毕业设计Python+Flask微博舆情分析 微博情感分析 微博爬虫 微博大数据 舆情监控系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI

基于Python/flask的微博舆情数据分析可视化系统 python爬虫数据分析可视化项目 编程语言&#xff1a;python 涉及技术&#xff1a;flask mysql echarts SnowNlP情感分析 文本分析 系统设计的功能&#xff1a; ①用户注册登录 ②微博数据描述性统计、热词统计、舆情统计 ③微博数…...

KubeBlocks v0.9 解读|最高可管理 10K 实例的 InstanceSet 是什么?

实例&#xff08;Instance&#xff09;是 KubeBlocks 中的基本单元&#xff0c;它由一个 Pod 和若干其它辅助对象组成。为了容易理解&#xff0c;你可以先把它简化为一个 Pod&#xff0c;下文中将统一使用实例这个名字。 InstanceSet 是一个通用 Workload API&#xff0c;负责…...

ZW3D二次开发_菜单_禁用/启用表单按钮

1.如图示&#xff0c;ZW3D可以禁用表单按钮&#xff08;按钮显示灰色&#xff09; 2.禁用系统默认表单按钮&#xff0c;可以在菜单空白处右击&#xff0c;点击自定义&#xff0c;找到相关按钮的名称&#xff0c;如下图。 然后使用代码&#xff1a; char name[] "!FtAllBo…...

windows子系统wsl完成本地化设置locale,LC_ALL

在 Windows 的子系统 Linux&#xff08;WSL&#xff09;环境中&#xff0c;解决本地化设置问题可以采取以下步骤&#xff1a; 1. **检查本地化设置**&#xff1a; 打开你的 WSL 终端&#xff08;比如 Ubuntu、Debian 等&#xff09;&#xff0c;运行以下命令来查看当前的本…...

MYSQL 根据条件order by 动态排序

文章目录 案例1&#xff1a;根据动态值的不同&#xff0c;决定某个字段是升序还是降序案例2&#xff1a;根据动态值的不同&#xff0c;决定使用哪个字段排序 最近在做大数据报表时&#xff0c;遇到这样一种情况&#xff0c;若是A类型&#xff0c;则部门按照正序排序&#xff1b…...

DirectX修复工具下载安装指南:电脑dll修复拿下!6种dll缺失修复方法!

在日常使用电脑的过程中&#xff0c;不少用户可能会遇到“DLL文件缺失”的错误提示&#xff0c;这类问题往往导致程序无法正常运行或系统出现不稳定现象。幸运的是&#xff0c;DirectX修复工具作为一款功能强大的系统维护软件&#xff0c;能够有效解决大多数DLL文件缺失问题&am…...

vue3(1)虚拟数字键盘的封装,(2)以及子组件改变父组件变量的值进而使子组件实时响应值的变化,(3)子组件调用父组件中的方法(带参)

父组件 <template><div><!-- 数字键盘 --><NumericKeyboardv-model:myDialogFormVisible"myDialogFormVisible" :myValueRange"myValueRange"submit"numericKeyboardSubmitData"/></div> </template><s…...

反序列化靶机serial

1.创建虚拟机 2.渗透测试过程 探测主机存活&#xff08;目标主机IP地址&#xff09; 使用nmap探测主机存活或者使用Kali里的netdicover进行探测 -PS/-PA/-PU/-PY:这些参数即可以探测主机存活&#xff0c;也可以同时进行端口扫描。&#xff08;例如&#xff1a;-PS&#xff0…...

扎克伯格说Meta训练Llama 4所需的计算能力是Llama 3的10倍

Meta 公司开发了最大的基础开源大型语言模型之一 Llama&#xff0c;该公司认为未来将需要更强的计算能力来训练模型。马克-扎克伯格&#xff08;Mark Zuckerberg&#xff09;在本周二的 Meta 第二季度财报电话会议上表示&#xff0c;为了训练 Llama 4&#xff0c;公司需要比训练…...

CTFHUB-文件上传-双写绕过

开启题目 1.php内容&#xff1a; <?php eval($_POST[cmd]);?> 上传一句话木马 1.php&#xff0c;抓包&#xff0c;双写 php 然后放包&#xff0c;上传成功 蚁剑连接 在“/var/www/html/flag_484225427.php”找到了 flag...

RabbitMQ docker部署,并启用MQTT协议

在Docker中部署RabbitMQ容器并启用MQTT插件的步骤如下&#xff1a; 一、准备工作 安装Docker&#xff1a; 确保系统上已安装Docker。Docker是一个开源的容器化平台&#xff0c;允许以容器的方式运行应用程序。可以在Docker官方网站上找到适合操作系统的安装包&#xff0c;并…...

Python面试宝典第25题:括号生成

题目 数字n代表生成括号的对数&#xff0c;请设计一个函数&#xff0c;用于能够生成所有可能的并且有效的括号组合。 备注&#xff1a;1 < n < 8。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())()"…...

计算机毕业设计选题推荐-社区停车信息管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

Python面试整理-自动化运维

在Python中,自动化运维是一个重要的应用领域。Python凭借其简单易用的语法和强大的库支持,成为了运维工程师的首选工具。以下是一些常见的自动化运维任务以及如何使用Python来实现这些任务: 1. 文件和目录操作 Python的os和shutil模块提供了丰富的文件和目录操作功能。 impo…...

自动化测试与手动测试的区别!

自动化测试与手动测试之间存在显著的区别&#xff0c;这些区别主要体现在以下几个方面&#xff1a; 测试目的&#xff1a; 自动化测试的目的在于“验证”系统没有bug&#xff0c;特别是在系统处于稳定状态时&#xff0c;用于执行重复性的测试任务。 手工测试的目的则在于通过…...

下属“软对抗”,工作阳奉阴违怎么办?4大权谋术,让他不敢造次

下属“软对抗”&#xff0c;工作阳奉阴违怎么办&#xff1f;4大权谋术&#xff0c;让他不敢造次 第一个&#xff1a;强势管理 在企业管理中&#xff0c;领导必须展现足够的强势。 所谓强势的管理&#xff0c;并不仅仅指态度上的强硬&#xff0c;更重要的是在行动中坚持原则和规…...

爬猫眼电ying

免责声明:本文仅做分享... 未优化,dp简单实现 from DrissionPage import ChromiumPage import time urlhttps://www.maoyan.com/films?showType2&offset60 pageChromiumPage()page.get(url) time.sleep(2) for i in range(1,20):# 爬取的页数for iu_list in page.eles(.…...

政安晨:【Keras机器学习示例演绎】(五十七)—— 基于Transformer的推荐系统

目录 介绍 数据集 设置 准备数据 将电影评分数据转换为序列 定义元数据 创建用于训练和评估的 tf.data.Dataset 创建模型输入 输入特征编码 创建 BST 模型 开展培训和评估实验 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的…...

15.4 zookeeper java client之Curator使用(❤❤❤❤❤)

Curator使用 1. 为什么使用Curator对比Zookeeper原生2. 集成Curator2.1 依赖引入curator-frameworkcurator-recipes2.2 `yml`配置连接信息2.3 CuratorConfig配置类2.4 Curator实现Zookeeper分布式锁业务2.4.1 业务:可重入锁和不可重入锁可重入锁和不可重入锁InterProcessMutex …...

哈默纳科HarmonicDrive谐波减速机的使用寿命计算

在机械传动系统中&#xff0c;减速机的应用无处不在&#xff0c;而HarmonicDrive哈默纳科谐波减速机以其独特的优势&#xff0c;如轻量、小型、传动效率高、减速范围广、精度高等特点&#xff0c;成为了众多领域的选择。然而&#xff0c;任何机械设备都有其使用寿命&#xff0c…...

前后端完全分离实现登录和退出

前后端分离的整合 使用springsecurity前端项目redis完成认证授权的代码 1. 搭建一个前端工程 使用 vue ui搭建&#xff0c;使用webstrom操作 2. 创建一个登录页面 <template><div class"login_container"><!-- 登录盒子 --><div class"l…...

生信技能55 - WisecondorX分析结果过滤和质控

WisecondorX分析CNV,对每条染色的CNV loss和gain进行分组,对每个组求ratio平均值和zscore平均值,基于该数值对CNV进行质控和过滤,并对连续的CNV进行合并,获得可信的CNV。 WisecondorX基本使用方法以及npz文件转换和reference构建参考文章: 生信技能53 - wiseconrdoX自动…...

待办管理软件电脑版哪个好?待办事项清单app

在快节奏的现代社会中&#xff0c;有效地管理时间和任务变得越来越重要。很多人喜欢使用待办管理软件来协助整理琐碎事务、规划工作任务&#xff0c;以此提升工作效率。特别是对于上班族来说&#xff0c;一款能在电脑上便捷使用的待办软件&#xff0c;更是提升工作效率的得力助…...

【Mind+】掌控板入门教程01 “秀”出我创意

我们的好朋友麦乐佳即将举办一场派对&#xff0c;她要求每个参加派对的人都要佩戴一个可以彰显自己独特创意的装置。可以是会发光的帽子&#xff0c;可以是复古的电子表&#xff0c;还可以是其他有创意的作品。而现在&#xff0c;我们的手边刚好有一块掌控板&#xff0c;它自带…...

tk后缀网站是什么网站/东莞今天发生的重大新闻

上一次自己写了一个多线程断点续传下载的demo&#xff0c;过于麻烦&#xff0c;bug超多&#xff0c;所以我学习使用xutils来完成此功能。 先将xutils依赖搭建好&#xff08;上一篇博客已经具体写了方法&#xff09; 先看看效果图&#xff1a; 下面开始代码的逻辑&#xff1a; 在…...

wordpress模板查询/百度账号找回

Spring Boot - 静态资源处理、启动加载、日志处理 回顾 Spring Boot-初识 Hello WorldSpring Boot - Servlet、过滤器、监听器、拦截器我们通过启动日志&#xff0c;可以发现&#xff0c;spring boot 默认提供了静态资源处理。接下来&#xff0c;我们了解下&#xff0c;该如何应…...

重庆大渡口营销型网站建设公司推荐/怎么自己做个网站

PMP&#xff08;Project Management Professional&#xff09;是项目管理专业人士资格认证&#xff0c;是由美国国际认证协会&#xff08;PMI&#xff09;发起的严格评估项目管理人员知识技能是否具有高品质的资格认证考试。目前已在全球190多个国家和地区得到了认可&#xff0…...

一键网站提交/seo 优化是什么

题目.用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead 分别完成在对尾插入节点和在队头删除节点。 该队列类模板如下: 1 template <typename T>2 class CQueue3 {4 public:5 void appendTail(const T& node);6 T deleteHead…...

网站估值/网站功能开发

在我们的日常工作生活中&#xff0c;许多时候需要将手机中的图片文字提取出来&#xff0c;然而很多人都不会&#xff0c;只会照着手打出来&#xff0c;但是这样做不仅效率不高&#xff0c;也很耗时。那么安卓华为手机如何识别图片中的文字&#xff1f;有没有什么快速简单的方法…...

网站营销公司简介/seo排名软件

系列文章目录 Hive3第一章&#xff1a;环境安装 Hive3第二章&#xff1a;简单交互 Hive3第三章&#xff1a;DML数据操作 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、数据导入1. 向表中装载…...