原文地址:http://ghx0x0.github.io/2014/12/30/NDT-match/

By GH

发表于 12月 30 2014

目前三维配准中用的较多的是ICP迭代算法,需要提供一个较好的初值,同时由于算法本身缺陷,最终迭代结果可能会陷入局部最优。本文介绍的是另一种比较好的配准算法,NDT配准。这个配准算法耗时稳定,跟初值相关不大,初值误差大时,也能很好的纠正过来。

绪论:

  • 采样:

    • 3d点云数据在离相机近处点云密度大,远处密度小,所以在下采样时采用统一的采样方法还是会保留密度不均匀;
      一种方法是将空间划分格子,在每个格子内的点云随机取点,点数足够了即可。
    • 短波将会产生更高的分辨率和较少的镜面反射。采用多个深度相机会产生串扰的问题,尤其是镜面反射很厉害的时候。

可以采集图像深度的相机:

  1. 雷达radio
  2. 激光雷达lidar
    • 三角测量法
    • TOF飞行时间法
    • 相位差法
  3. 声呐
  4. 双目视觉
    • 双目视觉是一个被动的三角测量;
      缺点:
      A.双目视觉只有能被检测出来的特征点才能检测出深度,在低对比度的环境中,只有很少的特征点能够检测出;
      B.双目视觉的另一个缺点是岁两个相机之间的距离增大,深度精度减少,盲区增大,主要面向几米远的长距离测量。
      C.对于没有纹理的表面检测不出来。
  5. 投影光三角测量
  6. TOF深度相机
    • 实际上是采用相位偏移法测量;
      TOF深度相机相比lidar的TOF是 采集速度快,硬件便宜
      缺点是噪点很明显,并且需要标定,并且受外界光和本身主动光的影响。 而且曝光时间不容易确定

视图匹配(配准):

  1. ICP
    缺点:

     A.要剔除不合适的点对(点对距离过大、包含边界点的点对)
    B.基于点对的配准,并没有包含局部形状的信息
    C.每次迭代都要搜索最近点,计算代价高昂

    存在多种优化了的变体算法,如八叉树等

  2. IDC
     ICP的一种改进,采用极坐标代替笛卡尔坐标进行最近点搜索匹配
  3. PIC
     考虑了点云的噪音和初始位置的不确定性
  4. Point-based probabilistic registration
     需要首先建立深度图的三角面片
  5. NDT——正态分布变换:
     计算正态分布是一个一次性的工作(初始化),不需要消耗大量代价计算最近邻搜索匹配点
    概率密度函数在两幅图像采集之间的时间可以离线计算出来
  6. Gaussian fields
     和NDT正态分布变换类似,利用高斯混合模型考察点和点的距离和点周围表面的相似性
  7. Quadratic patches
  8. Likelihood-field matching——随机场匹配
  9. CRF匹配
     缺点: 运行速度慢,在3d中实时性能不好,误差大。
  10. Branch-and-bound registration
  11. Registration using local geometric features

NDT算法:

  1. 将空间(reference scan)划分成各个格子cell
  2. 将点云投票到各个格子
  3. 计算格子的正态分布PDF参数

  4. 将第二幅scan的每个点按转移矩阵T的变换

  5. 第二幅scan的点落于reference的哪个 格子,计算响应的概率分布函数

  6. 求所有点的最优值,目标函数为

PDF可以当做表面的近似表达,协方差矩阵的特征向量和特征值可以表达表面信息(朝向、平整度)
格子内少于3个点,经常会协方差矩阵不存在逆矩阵,所以只计算点数大于5的cell,涉及到下采样方法。
  • NDT的优化:
    格子参数最重要,太大导致精度不高,太小导致内存过高,并且只有两幅图像相差不大的情况才能匹配
  1. 固定尺寸
  2. 八叉树建立,格子有大有小
  3. 迭代,每次使用更精细的格子
  4. K聚类,有多少个类就有多少个cell,格子大小不一
  5. Linked-cell
  6. 三线插值 平滑相邻的格子cell导致的不连续,提高精度
    缺点:插值导致时间是普通的4倍
    优点:可以提高鲁棒性

ICP算法:

  1. 给定参考点集P和数据点集Q(在给定初始估计RT时)
  2. 对Q中的每一个点寻找P中的对应最近点,构成匹配点对
  3. 对匹配点对求欧氏距离和作为误差目标函数error
  4. 利用SVD分解求出R和T,使得error最小
  5. 将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任务。

NDT(Normal Distribution Transform) 算法(与ICP对比)和一些常见配准算法的更多相关文章

  1. NDT 算法和一些常见配准算法

    原文链接:http://ghx0x0.github.io/2014/12/30/NDT-match/ 目前三维配准中用的较多的是ICP迭代算法,需要提供一个较好的初值,同时由于算法本身缺陷,最终迭代结 ...

  2. NDT(Normal Distributions Transform)算法原理与公式推导

    正态分布变换(NDT)算法是一个配准算法,它应用于三维点的统计模型,使用标准最优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.下面的公式推导 ...

  3. 使用正态分布变换(Normal Distributions Transform)进行点云配准

    正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.下面是PCL官网上的一个例 ...

  4. 3D点云配准算法简述

    ​蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点云 ...

  5. ICP(迭代最近点)算法

    图像配准是图像处理研究领域中的一个典型问题和技术难点,其目的在于比较或融合针对同一对象在不同条件下获取的图像,例如图像会来自不同的采集设备,取自不同的时间,不同的拍摄视角等等,有时也需要用到针对不同对 ...

  6. 正态分布(Normal distribution)又名高斯分布(Gaussian distribution)

    正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学.物理及project等领域都很重要的概率分布,在统计学的很多方面有着重大的影 ...

  7. 论文阅读 Characterization of Multiple 3D LiDARs for Localization and Mapping using Normal Distributions Transform

    Abstract 在这个文章里, 我们细致的比较了10种不同的3D LiDAR传感器, 用了一般的 Normal Distributions Transform (NDT) 算法. 我们按以下几个任务 ...

  8. Generalized normal distribution and Skew normal distribution

    Density Function The Generalized Gaussian density has the following form: where  (rho) is the " ...

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

    标签: 图像匹配ICP算法机器视觉 2015-12-01 21:09 2217人阅读 评论(0) 收藏 举报 分类: Computer Vision(27) 版权声明:本文为博主原创文章,未经博主允许 ...

随机推荐

  1. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  2. DSP的Gel作用

    转自:http://blog.csdn.net/azhgul/article/details/6660960 最近刚在研究Davinci系,特此MARK下,以资后续学习之用. DSP的Gel作用 1 ...

  3. 【blade利刃出鞘】一起进入移动端webapp开发吧

    前言 在移动浪潮袭来的时候,小钗有幸进入框架组做webapp框架开发,过程中遇到了移动端的各种坑,也产生了各种激情,就我们公司的发展历程来说 第一阶段:使用传统方式开发移动站点,少量引入HTML5元素 ...

  4. 如果你的SharePoint出现了,状态服务问题,InfoPath无法正常使用

    Create a new ‘State Service’ Service Application using Powershell February 14, 2012Leave a commentGo ...

  5. Linux系统安装MySql步骤及截屏

    ➠更多技术干货请戳:听云博客 如下是我工作中的记录,介绍的是linux系统下使用官方编译好的二进制文件进行安装MySql的安装过程和安装截屏,这种安装方式速度快,安装步骤简单! 需要的朋友可以按照如下 ...

  6. 微信小程序热点云笔记demo 开源总结

    因为公司的项目需要,我们自己开发了一个微信小程序的云笔记 开源地址 https://github.com/hotapp888/hotapp-notepad 云笔记功能特点:(1)自动微信登录(2)笔记 ...

  7. DBCC CHECKDB 遭遇Operating system error 112(failed to retrieve text for this error. Reason: 15105) encountered

    我们一个SQL Server服务器在执行YourSQLDBa的作业YourSQLDba_FullBackups_And_Maintenance时遇到了错误: Exec YourSQLDba.Maint ...

  8. mongodb之使用explain和hint性能分析和优化

    当你第一眼看到explain和hint的时候,第一个反应就是mysql中所谓的这两个关键词,确实可以看出,这个就是在mysql中借鉴过来的,既然是借鉴 过来的,我想大家都知道这两个关键字的用处,话不多 ...

  9. 使用httpclient发送get或post请求

    HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建 ...

  10. android px转换为dip/dp

    /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public int dipTopx(Context context, float dpValue) { final floa ...