几种点云配准算法比较
参考许多博客,看了点云配准的好多算法,决定对这几天搞得点云配准做一个总结,主要也防止自己忘掉。主要参考下面这个博客,链接已经附上。
https://blog.csdn.net/peach_blossom/article/details/78506184
一、算法实现软硬件环境
CPU:intel corei5-5200 @2.20Hz
显卡:Nvidia GeForce GTX 850M
内存:8GB
操作系统:Windows 10 专业版
开发环境:Vs2013 +pcl1.8.0(release)
点云配准数据集:不同角度下的bunny rabbit
二、点云配准比较
2.1 配准目标
根据原始点云和目标点云,通过配准求出变换矩阵,即旋转矩阵R和平移矩阵T,并计算误差,来比较匹配结果。主要有以下几种比较
(1)基于局部特征描述子(PFH、FPFH、3Dsc);
(2)基于概率分布 (NDT);
(3)icp粗配准比较 。
2.2 配准目标
(1)提取关键点
(2)特征描述
(3)一致性估计
(4)精配准
(5)误差分析:有一片点云,通过一直的旋转变换得到目标点云,让后通过下面几种配准方法,求出R、T,和实际变换矩阵比较,得到误差。
2.3 粗配准比较
粗配准的各种算法原理不加以介绍,好多博客中已经给出了详解。配准中,由于不同点云数据集的特性,需要提取不同关键点。本文统一对数据集进行滤波采样,减少点的数量,来提高算法的效率。
2.3.1 结果图分析
原始图
pfh粗配准
fpfh粗配准
3Dsc粗配准
ndt粗配准
2.3.2 时间分析
2.3.3变换矩阵分析
变换矩阵结构为
R3*3 | T1*3 |
---|---|
0 | 1 |
2.3.4误差分析
2.4 粗配准中的icp用法
icp配准一般用于精配准中,我看了看网上博客,似乎可以直接进行配准,所以对两组不同角度的点云数据集进行配准。得到的结果如下:
t=0.063s
t=0.05s
在icp粗配准,当给不同的数据集时(R、T不同时的点云),icp可能陷入局部最优解,故icp一般用于精配准中,且需要提供良好的初值。
综上,粗配准方案中,算法耗时时间依次为NDT<FPFH<PFH<3Dsc;其中FPFH特征为PFH特征描述子的改进。NDT耗时少,但从上述图中观察,初值提供不够精确。其中旋转矩阵R和平移矩阵T已经列出。
2.4 完全配准比较
下面对上述几种粗配准方案中,加上精配准。然后对结果进行比较。
2.4.1 结果图分析
pfh+icp
fpfh+icp
3Dsc+icp
ndt+icp
2.4.2 时间分析
2.4.3变换矩阵分析
2.4.4误差分析
可以得出,配准精度最高的是3Dsc,但耗时最长。
耗时:ndt<fpfh<pfh<3dsc
代码下载链接
https://download.csdn.net/download/weixin_43236944/10997992
https://download.csdn.net/download/weixin_43236944/10998014
后续两个月更新完
基于PCL的QT开发