Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ICP算法

ICP算法

作者头像
徐飞机
发布于 2020-05-31 15:00:38
发布于 2020-05-31 15:00:38
3.1K0
举报

ICP(Iterative Closest Point),即迭代最近点算法,是经典的数据配准算法。其特征在于,通过求取源点云和目标点云之间的对应点对,基于对应点对构造旋转平移矩阵,并利用所求矩阵,将源点云变换到目标点云的坐标系下,估计变换后源点云与目标点云的误差函数,若误差函数值大于阀值,则迭代进行上述运算直到满足给定的误差要求.

ICP算法采用最小二乘估计计算变换矩阵,原理简单且具有较好的精度,但是由于采用了迭代计算,导致算法计算速度较慢,而且采用ICP进行配准计算时,其对配准点云的初始位置有一定要求,若所选初始位置不合理,则会导致算法陷入局部最优。

Align 3D Data

如果空间中两组点云之间的对应关系已经明确,则很容易求得两者之间的刚性变换,即旋转和平移共6个参数,但这种对应关系一般很难事先知道。 ICP算法假设两组点云之间的对应关系由最近点确定,一步步将源点云\(P\)匹配到目标点云\(Q\)。

ICP算法主要包含对应点确定和变换计算更新,简要流程如下

  1. 在源点云 \(P\) 中选择一些随机点 \(p_i, i=1,2, \cdots,n\)
  2. 在目标点云 \(Q\) 中找到每个点 \(p_i\) 的最近点 \(q_i\)
  3. 剔除一些距离较远的点对
  4. 构建距离误差函数\(E\)
  5. 极小化误差函数,如果对应点距离小于给定阈值设置,则算法结束;否则根据计算的旋转平移更新源点云,继续上述步骤。

Basic ICP

传统的ICP算法主要有两种度量函数,即point-to-point和point-to-plane距离,一般来说,point-to-plane距离能够加快收敛速度,也更加常用。

  • Point-to-Point Error Metric

\[E_{p o i n t}=\sum_{i}\left\|\mathrm{R} p_{i}+t-q_{i}\right\|^{2} \]

  • Point-to-Plane Error Metric

\[E_{plane} = \sum_{i}\left[\left(\mathrm{R} p_{i}+t-q_{i}\right) \cdot n_{q_i}\right]^{2} \]

Colored ICP

Colored ICP算法[Park2017]针对有颜色的点云,在原始point-to-plane能量项的基础上,增加了一个对应点对之间的颜色约束,能够有更好的配准结果。其目标函数如下

\[E_{color} = (1-\delta) E_{C}+\delta E_{G} \]

其中\(E_{C}\)是颜色能量项,\(E_{G}\)是几何能量项,$$\delta \in[0,1]$$是两者之间的相对权重。几何能量项就是传统的point-to-plane能量项:

\[E_{G}=\sum_{i}\left[(R p_i + t - q_i) \cdot n_{q_i}\right]^{2} \]

而颜色项衡量点\(p_i\)的颜色\(\boldsymbol{C}(p_i)\)与其投影到\(q_i\)的切平面上的颜色之差:

\[E_{C}=\sum_{i}\left(\boldsymbol{C}_{q_i}(\Pi(R p_i + t))-\boldsymbol{C}(p_i)\right)^{2} \]

其中\(\Pi\)将3D点投影到切平面,\(\boldsymbol{C}_{q_i}\)是提前计算好的定义在\(q_{i}\)的切平面上的连续函数。

Symmetrized ICP

Symmetrized ICP算法极小化到点到由\(n_p\)和\(n_q\)决定的平面的距离平方和,同时优化拆分的旋转 :

\[E_{two-plane}=\sum_{i}\left[\left(\mathrm{R} p_{i}-\mathrm{R}^{-1} q_{i}+t\right) \cdot\left(\mathrm{R} n_{p_i}\right)\right]^{2} + \left[\left(\mathrm{R} p_{i}-\mathrm{R}^{-1} q_{i}+t\right) \cdot\left(\mathrm{R}^{-1} n_{q_i}\right)\right]^{2} \]

Symmetric ICP

Symmetric ICP[Rusinkiewicz2019]是ICP算法的另一种改进。其核心是在原有点到面距离\((p-q) \cdot n_{q}\)上做了一个微小的改动即\((p-q) \cdot\left(n_{p}+n_{q}\right)\),在几乎不增加计算量的基础上,能够有更快更可靠的收敛。其目标函数有两种,第一种是法向旋转版本(Rotated-Normals)的对称ICP目标函数:

\[E_{symm-RN}=\sum_{i}\left[\left(\mathrm{R} p_{i}-\mathrm{R}^{-1} q_{i}+t\right) \cdot\left(\mathrm{R} n_{p_i}+\mathrm{R}^{-1} n_{q_i}\right)\right]^{2} \]

另一种更简单但效果差不多的版本是

\[E_{symm}=\sum_{i}\left[\left(\mathrm{R} p_{i}-\mathrm{R}^{-1} q_{i}+t\right) \cdot\left(n_{p_i}+n_{q_i}\right)\right]^{2} \]

将旋转拆分为两个相同的部分在进行目标函数线性化估计时会带来一些好处,因为在线性化时假设旋转角度很小,优化拆分的旋转即角度的一半使得近似误差更小。

Solve

ICP算法在极小化能量时通常都需要求解一个非线性最小二乘问题,但可以线性化,假设\(\theta \approx 0\),则\(\sin(\theta) \approx \theta\),\(\cos(\theta) \approx 1\),忽略二次项,可以得到一个线性的最小二乘问题,再用Gauss-Newton或者Levenberg-Marquardt算法求解。

Algorithm

Go-ICP

Go-ICP即Globally optimal ICP,提出了在L2误差度量下欧式空间中匹配两组点云的全局最优算法。

Sparse ICP

Code

Reference

  • Dynamic Geometry Processing
  • [Rusinkiewicz2019] Szymon Rusinkiewicz. A Symmetric Objective Function for ICP, SIGGRAOH 2019
  • [Park2017] J. Park, Q.-Y. Zhou, and V. Koltun. Colored Point Cloud Registration Revisited, ICCV 2017.
  • [Bouaziz2013] Sofien Bouaziz, Andrea Tagliasacchi, Mark Pauly. Sparse Iterative Closest Point, SGP 2013.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
对点云匹配算法ICP、PL-ICP、NICP和IMLS-ICP的理解
点云匹配算法是为了匹配两帧点云数据,从而得到传感器(激光雷达或摄像头)前后的位姿差,即里程数据。匹配算法已经从最初的ICP方法发展出了多种改进的算法。他们分别从配准点的寻找,误差方程等等方面进行了优化。下面分别介绍:
首飞
2022/08/17
6.1K0
玻尔兹曼分布
在统计力学和数学中,波兹曼分布(英语:Boltzmann distribution),或称吉布斯分布(英语:Gibbs distribution),是一种机率分布或机率测度,它给出一个系统处于某种状态的机率,是该状态的能量及温度的函数。
为为为什么
2022/08/10
2.2K0
玻尔兹曼分布
点云匹配介绍与ICP算法
 图像配准目的在于比较或融合。针对同一对象在不同条件下获取的图像,因为激光扫描光束受物体遮挡的原因,不可能通过一次扫描完成对整个物体的三维点云的获取。因此需要从不同的位置和角度对物体进行扫描。三维匹配的目的就是把相邻扫描的点云数据拼接在一起。三维匹配重点关注匹配算法,常用的算法有最近点迭代算法 ICP和各种全局匹配算法。   ICP(Iterative Closest Point迭代最近点)算法是一种点集对点集配准方法。如下图所示,PR(红色点云)和RB(蓝色点云)是两个点集,该算法就是计算怎么把PB平移旋转,使PB和PR尽量重叠。
小白学视觉
2022/09/28
2.8K0
WWW'22「快手」序列推荐:解耦长短期兴趣
4. 最后由于长期和短期兴趣的重要性是动态变化的,通过基于注意力的网络自适应地聚合它们进行预测。
秋枫学习笔记
2022/09/19
9670
3D点云配准(二多幅点云配准)
在上一篇文章 点云配准(一 两两配准)中我们介绍了两两点云之间的配准原理。本篇文章,我们主要介绍一下PCL中对于多幅点云连续配准的实现过程,重点请关注代码行的注释。
3D视觉工坊
2020/12/11
2K0
3D点云配准(二多幅点云配准)
HiFi4G: 通过紧凑高斯进行高保真人体性能渲染
HiFi4G 架构如图 1 所示,(a) 首先使用非刚性跟踪建立了一个粗变形图,并跟踪运动进行高斯优化。(b) HiFi4G 使用 NeuS2 初始化第一帧高斯,并构建细粒度高斯图以增强时间一致性。然后,我们利用 ED 图来扭曲 4D 高斯,对高斯图应用
用户1324186
2024/01/24
6050
HiFi4G: 通过紧凑高斯进行高保真人体性能渲染
Open3d学习计划—高级篇 2(彩色点云配准)
Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。
点云PCL博主
2020/10/26
3.3K0
Open3d学习计划—高级篇 2(彩色点云配准)
Open3d 学习计划—9(ICP配准)
Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。
点云PCL博主
2020/08/17
4.2K0
Open3d 学习计划—9(ICP配准)
深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN
元学习可以被定义为一种序列到序列的问题, 在现存的方法中,元学习器的瓶颈是如何去吸收同化利用过去的经验。 注意力机制可以允许在历史中精准摘取某段具体的信息。
汀丶人工智能
2023/10/11
9070
深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN
一分钟详解PCL中点云配准技术
本文是对前两篇文章:点云配准(一 两两配准)以及3D点云(二 多福点云配准)的补充,希望可以在一定程度上帮助大家对点云配准理解地更为深刻。
计算机视觉
2020/12/11
2.4K0
一分钟详解PCL中点云配准技术
斯坦福NLP课程 | 第10讲 - NLP中的问答系统
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/12
7570
斯坦福NLP课程 | 第10讲 - NLP中的问答系统
WSDM'22「京东」个性化会话推荐:异构全局图神经网络
本文是针对会话推荐提出的相关方法,兼顾历史会话信息和会话中商品间的转换模式,提出异构全局图网络HG-GNN,利用所有会话中的商品转换(历史和当前的会话)来推断用户的偏好。全局图包含会话内的item-item关系,user-item关系和全局item共现关系。同时提出一个个性化会话编码器,结合当前会话的一般用户偏好和临时兴趣来生成个性化会话表征进行推荐。
秋枫学习笔记
2022/09/19
3650
PCL点云配准(1)
在逆向工程,计算机视觉,文物数字化等领域中,由于点云的不完整,旋转错位,平移错位等,使得要得到的完整的点云就需要对局部点云进行配准,为了得到被测物体的完整数据模型,需要确定一个合适的坐标系,将从各个视角得到的点集合并到统一的坐标系下形成一个完整的点云,然后就可以方便进行可视化的操作,这就是点云数据的配准。点云的配准有手动配准依赖仪器的配准,和自动配准,点云的自动配准技术是通过一定的算法或者统计学规律利用计算机计算两块点云之间错位,从而达到两块点云自动配准的效果,其实质就是把不同的坐标系中测得到的数据点云进行坐标系的变换,以得到整体的数据模型,问题的关键是如何让得到坐标变换的参数R(旋转矩阵)和T(平移向量),使得两视角下测得的三维数据经坐标变换后的距离最小,,目前配准算法按照过程可以分为整体配准和局部配准,。PCL中有单独的配准模块,实现了配准相关的基础数据结构,和经典的配准算法如ICP。
点云PCL博主
2019/07/31
2.5K0
PCL点云配准(1)
多项SOTA!SVDFormer-自增强自结构双生点云补全算法-ICCV2023论文详解
目前,点云补全任务只要存在以下两个挑战:利用不完整的点云中生成真实的全局形状,并生成高精度的局部结构。当前的方法要么仅使用3D坐标系,要么导入额外的标注好相机内部参数的图像,来指导模型补全缺失部分的几何。然而,这些方法并不总是完全利用可用于准确高质量点云补全的跨模态自结构信息。
BBuf
2023/09/08
1.4K0
多项SOTA!SVDFormer-自增强自结构双生点云补全算法-ICCV2023论文详解
ICP算法改进--基于曲率特征
算法步骤:利用二次曲面逼近方法求每点的方向矢量以及曲率;根据曲率确定特征点集;根据方向矢量调整对应关系,从而减少ICP算法的搜索量,提高效率。
点云PCL博主
2019/07/30
3.2K0
ICP算法改进--基于曲率特征
2016-PCS-End-to-end optimization of nonlinear transform codes for perceptual quality
这篇文章[1]提出了一个通用的变换编码框架,用于提升假定使用标量量化的端到端的非线性变换编码的率失真性能。结合任意可微的感知度量,这个框架可以用于优化任意可微的分析变换和综合变换对。
hotarugali
2022/03/09
1.3K0
2016-PCS-End-to-end optimization of nonlinear transform codes for perceptual quality
CIKM'21序列推荐|基于区域的embedding捕获用户行为中的偏好
可以先看背景和总结部分,对整个文章做的工作进行了简单的概括,公式太长的可以左右滑动哦~
秋枫学习笔记
2022/09/19
5330
CIKM'23 美团 | DCIN:考虑点击item上下文信息的CTR预估方法
大多数点击率模型聚焦于用户行为建模来提高准确性,往往仅关注与用户发生点击交互的item本身,而忽略被点击item附近同样被展示的其它选品(称为item的上下文),因此导致性能较差。如下图,常见模型只考虑高亮的item本身,忽略了list中同时被展示的其它3个item。为解决这个问题,本文提出了深度上下文兴趣网络(DCIN, Deep Context Interest Network),在构建CTR模型时兼顾考虑item上下文信息,并在离线和在线评估中都取得不错的提升。
秋枫学习笔记
2023/09/11
1K0
CIKM'23 美团 | DCIN:考虑点击item上下文信息的CTR预估方法
其中 U 表示系统内能,Q 表示系统热量, W 表示外界做功( W>0,表示外界对系统做功;W<0,表示系统对外界做功 )
为为为什么
2022/08/10
9570
熵
多视图点云配准算法综述
摘要:以多视图点云配准为研究对象,对近二十余年的多视图点云配准相关研究工作进行了全面的分类归纳及总结。首先,阐述点云数据及多视图点云配准的概念。根据配准的任务不同,将多视图点云配准分为多视图点云粗配准和多视图点云精配准两大类,并对其各自算法的核心思想及算法改进进行介绍,其中,多视图点云粗配准算法进一步分为基于生成树和基于形状生成两类;多视图点云精配准算法进一步分为基于点云的点空间、基于点云的帧空间变换平均、基于深度学习和基于优化四类。然后,介绍了四种多视图点云配准数据集及主流多视图配准评价指标。最后,对该研究领域研究现状进行总结,指出存在的挑战,并给出了未来研究展望。
一点人工一点智能
2023/02/16
4.7K0
多视图点云配准算法综述
相关推荐
对点云匹配算法ICP、PL-ICP、NICP和IMLS-ICP的理解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档