点集配准---迭代最近点算法ICP(Iterative Closest Point)

迭代最近点算法ICP(Iterative Closest Point)

一、算法流程:

在带匹配的目标点云P和源点云Q中,按照欧氏距离,找到对应的最邻近点pi∈目标点云P,qi∈目标点云Q。然后计算出最优匹配参数R和t,使得误差函数最小。误差函数为E(R,t)为:

https://www.bilibili.com/video/BV1ri421Z7i7/?spm_id_from=333.337.search-card.all.click\&vd_source=fa2de999698ac3d60b845e474ef6d191

二、公式推导:

步骤 1:计算点云质心,消除平移干扰

将两个点集都以质心点为坐标原点。

步骤 2:代入误差函数,分离旋转与平移

注意上图中第二项中仅与平移相关只是在第一项中确定R的情况下的得到的。是先固定旋转矩阵R,再单独分析平移t的最优解,所以在这个阶段,R被视为已知的 "常数",因此第二项只随t变化。 具体解释如下:

步骤 3:求解最优旋转矩阵R

现在需要求旋转矩阵R和平移矩阵T

将其带入目标函数E(R)得到关于θ的函数

对θ求导,当θ等于0时有极大值。

可以求出θ为如下表达式,ai,bi就是点集P和点集Q中的所有点,所以可以求出旋转矩阵的角度θ。

步骤 4:确定平移矩阵t*

由于在步骤二中已经得到平移矩阵的表达式,将求得的旋转矩阵R以及点云质心带入即可。

带入后公式为:Amean和Bmean就是点云质心

https://blog.csdn.net/qq_32618327/article/details/113997681

https://www.doubao.com/chat/32180146044744450

三、优化思路:

1.通过欧氏距离找到的两个点云之间距离最近的点对,实际情况中不一定是真实对应的,这种情况就会拉高计算出的点云之间的距离。可以通过赋予不同的权重来优化。

相关推荐
南境十里·墨染春水2 小时前
C++ 工厂模式:从入门到进阶,彻底掌握对象创建的艺术
开发语言·c++·算法
@insist1232 小时前
系统架构设计师-实时性评价、调度算法与内核架构选型
算法·架构·系统架构·软考·系统架构设计师·软件水平考试
一只齐刘海的猫8 小时前
【Leetcode】找到字符串中所有字母异位词
算法·leetcode·职场和发展
海清河晏1118 小时前
数据结构 | 八大排序
数据结构·算法·排序算法
IronMurphy9 小时前
【算法五十七】146. LRU 缓存
算法·缓存
凌波粒9 小时前
LeetCode--108.将有序数组转换为二叉搜索树(二叉树)
算法·leetcode·职场和发展
liulilittle9 小时前
KCC:在 BBR 思路上的一次探索
网络·tcp/ip·算法·bbr·通信·拥塞控制·kcc
浦信仿真大讲堂10 小时前
达索系统SIMULIA Abaqus 2026接触和约束的增强新功能介绍
人工智能·python·算法·仿真软件·达索软件
点云侠10 小时前
PCL 生成三棱锥点云
c++·算法·最小二乘法