PCL点云匹配 3 之 Point-to-Plane ICP

news2024/9/25 19:17:46

一、概述

已经证明 Point -to-Plane 算法已经比Point-to-Point 的误差都要快更准确一些,在 ICP 算法的每次选代中,产生最小点到平面误差的相对位姿变化通常使用标准的非线性最小二乘法来解决。例如 Levenberg-Marquardt方法。当使用点到平面误差度量时,最小化的对象是每个源点与其对应目标点的切平面之间的平方距离之和。

二、原理介绍

那么我们可以计算间距最小函数,即loss 函数

                                                     J=min\sum((R*Pi+T-Qi)*Ni) ^{2}

参数注释:

         R:表示的是旋转矩阵

         T:表示的是 平移矩阵

         Pi: 表示的是soruce 点云

         Qi:表示的是target 点云

         Ni:表示的是target点云该点对于的法向量

 推导:

点云配准: 刚性ICP中 Point-to-Point 和 Point-to-Plane 公式推导 ==> 帮助你代码实现 - 知乎

准备1 

 

                     J=min\sum((R*Pi+T-Qi)*Ni) ^{2}

 

 

点云刚性配准:point2point 和 point2plane 代码 - 知乎

void ICP::point2plane(float weight, Eigen::MatrixXf& A, Eigen::VectorXf& b)
{

	A.resize(m_srcOfPair.size(), 6);
	b.resize(m_srcOfPair.size());

	for (int j = 0; j < m_srcOfPair.size(); j++)
	{
		Eigen::Vector3f sourceCoordinates;
		sourceCoordinates = m_srcOfPair[j];

		Eigen::Vector3f targetCoordinates;
		targetCoordinates = m_targetOfPair[j];

		Eigen::Vector3f targetNormal;
		targetNormal = m_targetNormalsOfPair[j];

		//两个向量的叉乘结果是一个向量(三个数)
		Eigen::Vector3f sourceMultiplyNormal;
		sourceMultiplyNormal = sourceCoordinates.cross(targetNormal);

		A(j, 0) = sourceMultiplyNormal[0];
		A(j, 1) = sourceMultiplyNormal[1];
		A(j, 2) = sourceMultiplyNormal[2];
		A(j, 3) = targetNormal[0];
		A(j, 4) = targetNormal[1];
		A(j, 5) = targetNormal[2];

		b[j] = -(((sourceCoordinates - targetCoordinates).transpose()).dot(targetNormal));
	}

	A *= weight;
	b *= weight;

}

                            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1324084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vmware安装银河麒麟V10高级服务器操作系统

vmware安装银河麒麟V10高级服务器操作系统 1、下载银河麒麟V10镜像2、VMware安装银河麒麟V10高级服务器操作系统2.1、新建虚拟机2.2、安装虚拟机 3、配置银河麒麟V10高级服务器操作系统3.1、安装vmware tools3.2、配置静态IP地址 和 dns3.3、查看磁盘分区 1、下载银河麒麟V10镜…

机器学习 | 贝叶斯方法

不同于KNN最近邻算法的空间思维&#xff0c;线性算法的线性思维&#xff0c;决策树算法的树状思维&#xff0c;神经网络的网状思维&#xff0c;SVM的升维思维。 贝叶斯方法强调的是 先后的因果思维。 监督式模型分为判别式模型和生成式模型。 判别模型和生成模型的区别&#xf…

Seata:打造行业首个分布式事务产品

作者&#xff1a;季敏&#xff0c;阿里云分布式事务产品负责人、Seata 开源项目创始人 微服务架构下数据一致性的挑战 微服务开发的痛点 在 2019 年&#xff0c;我们基于 Dubbo Ecosystem Meetup&#xff0c;收集了 2000 多份关于“在微服务架构&#xff0c;哪些核心问题是开…

JS - 闭包(Closure)

目录 1&#xff0c;什么是闭包2&#xff0c;创建闭包3&#xff0c;如何销毁闭包2.1&#xff0c;自动创建的闭包2.2&#xff0c;手动创建的闭包 4&#xff0c;闭包的特点和使用场景3.1&#xff0c;特点3.2&#xff0c;使用场景避免全局变量污染函数柯里化 5&#xff0c;闭包经典…

万兆网络之疑难杂症(一)

症状&#xff1a;电话线测线仪4芯全亮&#xff0c;插上话机不亮 由于装修方没有按要求布线&#xff0c;导致没有电话线用&#xff0c;因此分网线用于电话线 测试网线8芯全亮&#xff0c;分四芯用端子接电话线&#xff0c;再压电话线水晶头&#xff0c;再测水晶头全亮&#xf…

如何解决苹果应用商城审核拒绝的Guideline 2.1 - Information Needed问题

当你的应用程序在苹果应用商城审核过程中被拒绝时&#xff0c;苹果会向您发送一封邮件&#xff0c;其中提供了关于拒绝原因的详细信息。本文将指导您如何正确处理Guideline 2.1 - Information Needed问题&#xff0c;并提供解决方案&#xff0c;以确保您的应用程序能够通过审核…

WINDOWS(WIN11)通过IP添加网络打印机

点击添加设备 点击手动添加 使用IP地址或主机名添加打印机 选择TCP/IP设备&#xff0c;输入打印机地址 如果有正确驱动就安装&#xff0c;没有就取消。 通过手动设置添加本地打印机或网络打印机 使用现有的端口 根据打印机IP&#xff0c;选择标准端口。 成功&#xff01; 到…

SpringBoot代码混淆与反混淆加密工具详解

目录 反编译 混淆 正文 一共就两步&#xff0c;无需源码&#xff0c;直接对ipa文件进行混淆加密 打开要处理的IPA文件 设置签名使用的证书和描述文件 开始ios ipa重签名 简单就是把代码跑一哈&#xff0c;然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是…

队列(C语言版)

一.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有 先进先出 FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为 队尾 出队列&#xff1a;进行删除操作的一端称为…

关于我对归纳偏置(inductive bias)的概念和应用的详细总结

归纳偏置&#xff08;inductive bias&#xff09; 1.归纳偏置&#xff08;inductive bias&#xff09;的概念2.归纳偏置&#xff08;inductive bias&#xff09;的应用 1.归纳偏置&#xff08;inductive bias&#xff09;的概念 归纳偏置&#xff08;inductive bias&#xff0…

如何在Ubuntu系统中安装VNC并结合内网穿透实现远程访问桌面

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

2023 英特尔On技术创新大会直播 |让更多人了解AI魅力

2023 英特尔On技术创新大会直播 |让更多人了解AI魅力 前言&#xff1a;主要领域:人工智能&#xff1a;使用 OpenVINO™ 落地边缘端生成式 AIOpenVINO™学习总结&#xff1a; 新一代 AI PC计算平台&#xff1a;新一代至强平台&#xff1a;边云协同&#xff1a;先进技术&#xff…

前后端分离跨域问题的OPTIONS请求(预检请求)

本篇文章用于个人的问题记录 问题描述: 使用了springbootvue3做前后端分离,使用sa-token做登录认证 由于sa-token的前后端分离的登录认证需要在请求发起时自定义添加头部satoken 好那么问题来了,我请求的时候看我的请求头是存在satoken这个头部信息的 但我在springboot的拦截…

ansible在ubuntu下的安装和使用

ansible在ubuntu下的安装和使用 本文目录 ansible在ubuntu下的安装和使用安装和配置虚拟机配置安装和验证 简单使用创建 ansible cfg 和 inventory 文件创建剧本并执行使用 ansible vault 加密 安装和配置 中文文档&#xff1a;http://www.ansible.com.cn/docs/intro_installa…

操作系统快速刷题1

操作系统——内存管理之内存分配&#xff08;分页&#xff0c;分段&#xff0c;段页&#xff09; 分页存储概念清晰梳理&#xff08;页面、页表、页表项、页面大小、页内地址等概念&#xff09; 页框&#xff0c;页表&#xff0c;页表项&#xff0c;页面大小&#xff0c;页…

Hazelcast系列(十一):Map(三)备份、过期驱逐与内存格式

系列文章 Hazelcast系列(一)&#xff1a;初识hazelcast Hazelcast系列(二)&#xff1a;hazelcast集成&#xff08;嵌入式&#xff09; Hazelcast系列(三)&#xff1a;hazelcast集成&#xff08;服务器/客户端&#xff09; Hazelcast系列(四)&#xff1a;hazelcast管理中心 …

四川云汇优想教育咨询有限公司电商服务靠谱吗

随着抖音电商的兴起&#xff0c;越来越多的商家开始关注这一领域。四川云汇优想教育咨询有限公司作为一家专注于电商服务的企业&#xff0c;也受到了广泛的关注。那么&#xff0c;四川云汇优想教育咨询有限公司的抖音电商服务靠谱吗&#xff1f;下面我们将从多个方面进行深入剖…

OpenCV技术应用(9)— 视频的暂停播放和继续播放

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就手把手教大家如何控制视频的暂停播放和继续播放&#xff0c;希望大家学习之后能够有所收获~&#xff01;&#x1f308; 目录 &#x1f680;1.技术介绍 &#x1f680;2.实现代码 &#x1f680;1.技术介绍…

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …