ICP点云配准原理及优化
ICP算法简介
根据点云数据所包含的空间信息,可以直接利用点云数据进行配准。主流算法为最近迭代算法(ICP,Iterative Closest Point),该算法是根据点云数据首先构造局部几何特征,然后再根据局部几何特征进行点云数据重定位。
一、 ICP原理
假设两个点云数据集合P和G,要通过P转换到G(假设两组点云存在局部几何特征相似的部分),可以通过P叉乘四元矩阵进行旋转平移变换到G,或者SVD法将P转换到G位置,总体思想都是需要一个4x4的旋转平移矩阵。对于每次旋转平移变换后计算P的所有(采样)点到G对应(最近)点的距离,用最小二乘法(求方差)求出最小二乘误差,看是否在要求的范围内,如果最小二乘误差小于设定的值,(或迭代次数达到上限,或每次重新迭代后最小二乘误差总在一个很小的范围内不再发生变化),则计算结束,否则继续进行迭代。
粗配准优化方法:主成分分析法
精配准优化方法:基于正交投影的ICp算法改进
二、粗配准优化
PCA是一种有效的检测数据集简化分析方法,用于减少数据集的维数,同时保持数据集对方差贡献最大特征,对于点集P(x1,x2,…,xn),其中,xi是n维数据,均值和协方差矩阵分别为:
$\bar x = \frac{{\mathop \sum \nolimits_{i = 1}^n {x_i}}}{n}$
${\rm{cov}} = \frac{{\mathop \sum \nolimits_{i = 1}^n \left( {{x_i} - \bar x} \right){{\left( {{x_i} - \bar x} \right)}^T}}}{n}$
协方差矩阵cov的特征向量,即为点集P的主轴。对于三维点云数据,以均值为坐标系的原点,PCA求得的三个特征向量对应XYZ轴,建立点云的参考坐标系。
由于PCA反应了数据集对方差贡献的最大特征,相似度大的两片点云,只要把其参考坐标系调整到一致,即可达到初始配准的目的。由于可能出现坐标轴的两个方向相差180o的情况,需要建立最小包围盒来测试两片点云是否调整重合,通过坐标变换可以将数据点云包围盒变换到模型点云参考坐标系中,使两包围盒的空间位置大体一致。计算包围盒的重合体积,如果大于某一设定的容差,则两片点云大致重合,如果小于设定容差,则反转数据点云参考坐标系坐标轴再次尝试。通过坐标系调整后,即可达到点云的初始配准目的,为下一步的精确配准提供较好的初值。
三、精配准优化
通过初始配准,两片点云大致重合但是误差精度还远远达不到实际应用中的精度要求。为了使用点云间的误差达到最小,还需要对其进行精确配准。ICP算法是最常用的数据精确配准方法,算法在每次迭代的过程中,对数据点云的每一点,在模型点云中寻找欧氏距离最近点作为对应点,通过这组对应点使目标函数s2最小化:
${{\rm{s}}^2} = {\rm{min}}\mathop \sum \limits_{i = 1}^N {\left\| {{Q_i} - \left( {R{P_i} + t} \right)} \right\|^2}$
来得到最优的四维转换矩阵(包含平移和旋转),将四维变换矩阵作用到点云数据上,得到新的数据点云带入下次迭代过程。但是ICP算法具有比较明显的缺陷,要求数据点云上的每一点在模型点云上都要找到对应点,为了寻找对应点,算法需要遍历模型点云上的每一点,配准速度很慢,且容易陷入局部最优解。
由于ICP算法的时间消耗主要花费在计算对应点集上,如果能降低此步骤的时间消耗,即可以提高ICP算法效率,具体计算请参考博客点云对齐。
ICP点云配准原理及优化的更多相关文章
- FPFH+ICP点云配准
A, UniformSampling降噪 B, ISS计算关键点, FPFH特征 在FeatureCloud::setInputCloud中读入点云,并调用processInput进行处理: proc ...
- 使用正态分布变换(Normal Distributions Transform)进行点云配准
正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.下面是PCL官网上的一个例 ...
- PCL点云配准(1)
在逆向工程,计算机视觉,文物数字化等领域中,由于点云的不完整,旋转错位,平移错位等,使得要得到的完整的点云就需要对局部点云进行配准,为了得到被测物体的完整数据模型,需要确定一个合适的坐标系,将从各个视 ...
- 3D点云配准算法简述
蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点云 ...
- CVPR2020:训练多视图三维点云配准
CVPR2020:训练多视图三维点云配准 Learning Multiview 3D Point Cloud Registration 源代码和预训练模型:https://github.com/zgo ...
- MeshLab中进行点云配准
MeshLab是一个开源.可移植和可扩展的三维几何处理系统,主要用于交互处理和非结构化编辑三维三角形网格.它支持多种文件格式: import:PLY, STL, OFF, OBJ, 3DS, COLL ...
- 点云配准的端到端深度神经网络:ICCV2019论文解读
点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...
- 3D点云重建原理及Pytorch实现
3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruc ...
- 【实战分享】又拍云 OpenResty / Nginx 服务优化实践
2018 年 11 月 17 日,由 OpenResty 主办的 OpenResty Con 2018 在杭州举行.本次 OpenResty Con 的主题涉及 OpenResty 的新开源特性.业界 ...
随机推荐
- winform 窗体中 Time 控件的用法
作用: 用于背景进程中.通过引发Timer事件,Timer控件可以有规律的隔一段时间执行一次代码.也就是,你可以根据你自己的需要,给Timer控件设置时间,Timer每隔这段时间,就执行一次代码. 属 ...
- Access to XMLHttpRequest at 'XXX' from origin 'XX' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present o AJAX跨域请求解决方法
今天出现了一个问题找了好久先看代码: 这可能是个BUG吧插入代码: dataType: 'jsonp', crossDomain: true, 最终:
- 常见的NoSQL数据库
NoSQL数据库发展迅猛,据说现在已经有上百种NoSQL数据库了,下面来了解下常见的一些NoSQL数据库 先来看张表,了解下典型的NoSQL数据库的分类 临时性键值存储 永久性键值存储 面向文档的数据 ...
- 前m大的数(hdu1280)
前m大的数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- Mybatis标签bind用法
Mybatis使用bind元素进行模糊查询,不用在乎数据库是mysql还是oracle从而提高可移植性 使用bind元素传递多个参数 public List<Student> findSt ...
- Mybatis的类型处理器
Mybatis在预处理语句(PreparedStatement)中设置一个参数时,会用默认的typeHandler进行处理. 这句话是什么意思呢,当你想用姓名查询一个人的信息时 <select ...
- TCP连接与OKHTTP复用连接池
Android网络编程(八)源码解析OkHttp后篇[复用连接池] 1.引子 在了解OkHttp的复用连接池之前,我们首先要了解几个概念. TCP三次握手 通常我们进行HTTP连接网络的时候我们会进行 ...
- Gson 使用和原理
使用教程: http://blog.csdn.net/axuanqq/article/details/51441590 http://www.jianshu.com/p/fc5c9cdf3aab 源码 ...
- HDU2167(SummerTrainingDay02-D 状态压缩dp)
Pebbles Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- TCP 回顾
报文 状态 从wiki上搬运过来 重要参数 RTT(Round Trip Time) 即链路传输延时,从数据发送到达对端并受到对端ack的一次来回时间.由于TCP是依赖报文确认机制来实现传输的可靠性的 ...