NDT 算法和一些常见配准算法
原文链接:http://ghx0x0.github.io/2014/12/30/NDT-match/
目前三维配准中用的较多的是ICP迭代算法,需要提供一个较好的初值,同时由于算法本身缺陷,最终迭代结果可能会陷入局部最优。本文介绍的是另一种比较好的配准算法,NDT配准。这个配准算法耗时稳定,跟初值相关不大,初值误差大时,也能很好的纠正过来。
绪论:
- 采样:
- 3d点云数据在离相机近处点云密度大,远处密度小,所以在下采样时采用统一的采样方法还是会保留密度不均匀;
一种方法是将空间划分格子,在每个格子内的点云随机取点,点数足够了即可。 - 短波将会产生更高的分辨率和较少的镜面反射。采用多个深度相机会产生串扰的问题,尤其是镜面反射很厉害的时候。
- 3d点云数据在离相机近处点云密度大,远处密度小,所以在下采样时采用统一的采样方法还是会保留密度不均匀;
可以采集图像深度的相机:
- 雷达radio
- 激光雷达lidar
- 三角测量法
- TOF飞行时间法
- 相位差法
- 声呐
- 双目视觉
- 双目视觉是一个被动的三角测量;
缺点:
A.双目视觉只有能被检测出来的特征点才能检测出深度,在低对比度的环境中,只有很少的特征点能够检测出;
B.双目视觉的另一个缺点是岁两个相机之间的距离增大,深度精度减少,盲区增大,主要面向几米远的长距离测量。
C.对于没有纹理的表面检测不出来。
- 双目视觉是一个被动的三角测量;
- 投影光三角测量
- TOF深度相机
- 实际上是采用相位偏移法测量;
TOF深度相机相比lidar的TOF是 采集速度快,硬件便宜
缺点是噪点很明显,并且需要标定,并且受外界光和本身主动光的影响。 而且曝光时间不容易确定
- 实际上是采用相位偏移法测量;
视图匹配(配准):
- ICP
缺点:A.要剔除不合适的点对(点对距离过大、包含边界点的点对)B.基于点对的配准,并没有包含局部形状的信息C.每次迭代都要搜索最近点,计算代价高昂
存在多种优化了的变体算法,如八叉树等
- IDC
ICP的一种改进,采用极坐标代替笛卡尔坐标进行最近点搜索匹配
- PIC
考虑了点云的噪音和初始位置的不确定性
- Point-based probabilistic registration
需要首先建立深度图的三角面片
- NDT——正态分布变换:
计算正态分布是一个一次性的工作(初始化),不需要消耗大量代价计算最近邻搜索匹配点 概率密度函数在两幅图像采集之间的时间可以离线计算出来
- Gaussian fields
和NDT正态分布变换类似,利用高斯混合模型考察点和点的距离和点周围表面的相似性
- Quadratic patches
- Likelihood-field matching——随机场匹配
- CRF匹配
缺点: 运行速度慢,在3d中实时性能不好,误差大。
- Branch-and-bound registration
- Registration using local geometric features
NDT算法:
- 将空间(reference scan)划分成各个格子cell
- 将点云投票到各个格子
计算格子的正态分布PDF参数
将第二幅scan的每个点按转移矩阵T的变换
第二幅scan的点落于reference的哪个 格子,计算响应的概率分布函数
求所有点的最优值,目标函数为
PDF可以当做表面的近似表达,协方差矩阵的特征向量和特征值可以表达表面信息(朝向、平整度)
格子内少于3个点,经常会协方差矩阵不存在逆矩阵,所以只计算点数大于5的cell,涉及到下采样方法。
- NDT的优化:
格子参数最重要,太大导致精度不高,太小导致内存过高,并且只有两幅图像相差不大的情况才能匹配
- 固定尺寸
- 八叉树建立,格子有大有小
- 迭代,每次使用更精细的格子
- K聚类,有多少个类就有多少个cell,格子大小不一
- Linked-cell
- 三线插值 平滑相邻的格子cell导致的不连续,提高精度
缺点:插值导致时间是普通的4倍
优点:可以提高鲁棒性
ICP算法:
- 给定参考点集P和数据点集Q(在给定初始估计RT时)
- 对Q中的每一个点寻找P中的对应最近点,构成匹配点对
- 对匹配点对求欧氏距离和作为误差目标函数error
- 利用SVD分解求出R和T,使得error最小
- 将Q按照R和T旋转变化,并以此为基准回到1 重新寻找对应点对
NDT 耗时稳定,跟初值相关不大,初值误差大时,也能很好的纠正过来;
ICP耗时多,容易陷入局部最优; 可以根据格子cell的PDF的协方差矩阵计算特征向量特征值,每个格子有球形状、平面、线型三种类型,根据朝向作以统计,得到局部或者一幅图像的特征直方图
文章来自于Martin Magnusson的The Three-Dimensional Normal-Distributions Transform— an Efficient Representation for Registration,Surface Analysis, and Loop Detection。 作者详细介绍了NDT在各个条件下的配准效果及与其他配准方法的详细实验对比,并利用NDT算法配准矿洞内三维场景,同时完成SLAM任务。
转载于:https://www.cnblogs.com/lvchaoshun/p/7823306.html
NDT 算法和一些常见配准算法相关推荐
- 分类算法列一下有多少种?应用场景?分类算法介绍、常见分类算法优缺点、如何选择分类算法、分类算法评估
分类算法 分类算法介绍 概念 分类算法 常见分类算法 NBS LR SVM算法 ID3算法 C4.5 算法 C5.0算法 KNN 算法 ANN 算法 选择分类算法 分类算法性能评估 分类算法介绍 概念 ...
- 时间复杂度o(n^0.5)_算法基础1.1:算法复杂度计算(二)
1.什么是算法 2.好算法的标准 3.算法复杂度计算方法 例1: 1 int sum = 0;//运行1次2 int total = 0;//运行1次3 for (int i = 1; i <= ...
- 算法设计之五大常用算法设计方法总结
算法设计之五大常用算法设计方法总结 一.[分治法] 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再 ...
- 一文读懂自动驾驶中常用的定位算法之NDT点云配准算法
文中所用图片如无声明来源网络和论文. Paper: The Three-Dimensional Normal-Distributions Transform- an Efficient Represe ...
- 多视图点云配准算法综述
作者:杨佳琪,张世坤,范世超等 转载自:华中科技大学学报(自然科学版) 编辑:东岸因为@一点人工一点智能 原文:多视图点云配准算法综述 摘要:以多视图点云配准为研究对象,对近二十余年的多视图点 ...
- 点云配准——经典配准算法及配准效果对比
目录 点云配准基础知识 什么是点云配准? 点云配准的步骤 粗配准 精配准 点云配准的经典算法 ICP算法 NDT算法 3DSC算法 PFH FPFH 完全配准效果对比 点云配准基础知识 什么是点云配准 ...
- 点云配准算法ICP及其各种变体
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨流川峰 来源丨深蓝AI 介绍 点云配准(Point Cloud Registration)算法指 ...
- 简述3D点云配准算法
蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点 ...
- 3D点云配准算法-4PCS(4点全等集配准算法)
简介 4PCS算法是一种快速的.鲁棒的三维点云配准方案,该方案使用宽基底,对噪声和异常值具有良好的适应性,该算法允许对有噪声的原始数据进行配准,而无需对数据进行预过滤或去噪.此外,该方法大大减少了在噪 ...
- 点云配准——(1)几种点云配准算法比较
几种点云配准算法比较 参考许多博客,看了点云配准的好多算法,决定对这几天搞得点云配准做一个总结,主要也防止自己忘掉.主要参考下面这个博客,链接已经附上. https://blog.csdn.net/p ...
最新文章
- java检索字符串并提取_eclipse 项目中搜索资源(类方法,文件名,文件中的字符串)...
- 如何同时展现不同粒度的度量
- Linux容器演变史
- 手机屏大字滚动_在iPhone手机中,实现长截图的几种方法
- 网页怎么在图片上添加文字_抖音一天可见怎么添加文字-抖音一天可见添加文字文案方法介绍...
- 常用压缩,解压与打包
- knime二次开发节点的项目结构
- 快手2021年营收810亿元 经调整净亏损188亿元
- 130242014057 周陈清 实验一
- C++常成员函数与普通成员函数访问比较
- React Native实践之携程Moles框架
- Excel -- 数据透视表
- Dictionary(字典)
- Elasticsearch:时间点 API
- 数组(初识、创建数组、数组的元素、数组的变量)
- Caicloud 开源 Nirvana:让 API 从对框架的依赖中涅槃重生
- 导数、微分、积分的几何理解
- 源生js封装ajax
- iTOP-4418开发板兼容八核6818开发板介绍
- putty更新linux运行程序,PuTTY for linux
热门文章
- 有多么巨大的工作量,要交接一个月?
- 管理感悟:开会为什么坐到后面
- gstreamer向appsrc发送帧画面的代码
- sqlserver min函数其他set操作消除了null值_数据库常用SQL操作篇
- hashmap为什么8转成红黑树_看了两天HashMap源码,终于把红黑树插入平衡规则搞懂了...
- oracle复制数据库文件,Oracle备份与恢复系列(四)复制数据库 使用原有的控制文件...
- python关闭word_python自动化办公:玩转word之样式秘笈
- 为什么root下不能使用passwd命令_Linux:CentOS 7中常用的基础命令
- excel甘特图模板_项目管理工具之甘特图使用流程
- json转为tfrecord格式文件怎么转_怎么把pdf转换成jpg图片?pdf转图片格式的方法很好用...