点集配准---迭代最近点算法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.通过欧氏距离找到的两个点云之间距离最近的点对,实际情况中不一定是真实对应的,这种情况就会拉高计算出的点云之间的距离。可以通过赋予不同的权重来优化。

相关推荐
大数据魔法师1 小时前
聚类算法(一)- K-Means聚类
算法·kmeans·聚类
CoderYanger1 小时前
A.每日一题——2141.同时运行N台电脑的最长时间
java·算法·leetcode·职场和发展·1024程序员节
Ayanami_Reii1 小时前
进阶数据结构-线段树
数据结构·算法·线段树
liu****1 小时前
11.字符函数和字符串函数(一)
linux·运维·c语言·开发语言·数据结构·算法
aini_lovee1 小时前
基于UERD算法的JPEG图像隐写MATLAB实现
开发语言·算法·matlab
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——Z字行变换
算法·leetcode·职场和发展·结构与算法
minji...1 小时前
linux 进程控制(一) (fork进程创建,exit进程终止)
linux·运维·服务器·c++·git·算法
埃伊蟹黄面1 小时前
双指针算法
数据结构·c++·算法
java修仙传2 小时前
力扣hot100:反转链表
算法·leetcode·链表