其实不想记录这一块内容,因为实在没啥新意,但又怕时间久了就忘记了。不贴代码,网上一堆。

参考:https://www.cnblogs.com/li-yao7758258/p/6489585.html 主要是不想打字。

配准的实质就是把不同的坐标系中测得到的数据点云进行坐标系的变换,以得到整体的数据模型,问题的关键是如何让得到坐标变换的参数R(旋转矩阵)和T(平移向量),使得两视角下测得的三维数据经坐标变换后的距离最小,,目前配准算法按照过程可以分为整体配准和局部配准。PCL中有单独的配准模块,实现了配准相关的基础数据结构,和经典的配准算法如ICP。

PCL中实现配准算法以及相关的概念

两两配准的简介:一对点云数据集的配准问题是两两配准(pairwise registration 或 pair-wise registration).通常通过应用一个估计得到的表示平移和旋转的4*4刚体变换矩阵来使得一个点云的数据集精确的与另一个点云数据集(目标数据集)进行完美的配准

具体的实现步骤:

(1)首先从两个数据集中按照同样的关键点选取的标准,提取关键点

(2)对选择所有的关键点分别计算其特征描述子

对于(1)(2)步骤,不一定非要选择特征点,也有 直接采用原始点云数据的。具体依赖配准算法。

(3)结合特征描述子在两个数据集中的坐标位置,以两者之间的特征和位置的相似度为基础,来估算它们的对应关系,初步的估计对应点对。

(4)假设数据是有噪声,出去对配准有影响的错误的对应点对

(5)利用剩余的正确的对应关系来估算刚体变换,完整配准。

对应估计(correspondences estimation):假设我们已经得到扫描的点云数据获得的两组特征向量,在此基础基础上,我们必须找到,相似特征再确定数据的重叠部分,然后才能进行配准,根据特征的类型PCL使用不同的方法来搜索特征之间的对应关系

使用点匹配时,使用点的XYZ的坐标作为特征值,针对有序点云和无序点云数据的不同的处理策略:

(1)穷举配准(brute force matching)

(2)kd——数最近邻查询(FLANN)

(3)在有序点云数据的图像空间中查找

(4)在无序点云数据的索引空间中查找

对应关系的去除(correspondence rejection)

由于噪声的影响,通常并不是所有估计的对应关系都是正确的,由于错误的对应关系对于最终的刚体变换矩阵的估算会产生负面的影响,所以必须去除它们,可以采用随机采样一致性估计,或者其他方法剔除错误的对应关系,最终使用对应关系数量只使用一定比例的对应关系,这样既能提高变换矩阵的估计京都也可以提高配准点的速度。

变换矩阵的估算(transormation estimation)

估算对应矩阵的步骤如下

1. 在对应关系的基础上评估一些错误的度量标准

2.在摄像机位姿(运动估算)和最小化错误度量标准下估算一个刚体变换

3.优化点的结构

4.使用刚体变换把源旋转/平移到与目标所在的同一坐标系下,用所有点,点的一个子集或者关键点运算一个内部的ICP循环

5,进行迭代,直到符合收敛性判断标准为止。

迭代最近点算法(Iterative CLosest Point简称ICP算法)

ICP算法对待拼接的2片点云,首先根据一定的准则确立对应点集P与Q,其中对应点对的个数,然后通过最小乘法迭代计算最优的坐标变换,即旋转矩阵R和平移矢量t,使得误差函数最小,ICP处理流程分为四个主要的步骤:

1. 对原始点云数据进行采样

2.确定初始对应点集

3.去除错误对应点对

4.坐标变换的求解

缺点:

A.要剔除不合适的点对(点对距离过大、包含边界点的点对)

B.基于点对的配准,并没有包含局部形状的信息

C.每次迭代都要搜索最近点,计算代价高昂

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倍,其实确定不只这点,因为作者假设点云服从多维高斯分布,因此,按道理应该是点数量越大越好,因此,小批量点云配准,这个算法再调也是调不好的额。
    优点:可以提高鲁棒性

SAC-IA

基于RNSAC算法,在原始点云中,选择4点,针对每点在目标点云中选择相似特征的1到多个点(多点随机选1),计算刚体变换矩阵,接着计算变换损失(误差),完成一次迭代,持续迭代,直到所有点数的Huber损失最小。

三维计算机视觉(八)--点云配准相关推荐

  1. AI学习笔记(六)三维计算机视觉与点云模型

    AI学习笔记之三维计算机视觉与点云模型 立体视觉 立体视觉的概念 立体视觉的原理 单目系统 双目系统和视差 对极几何约束 SIFT sift特征的特点 sift算法总体介绍 sift特征提取和匹配具体 ...

  2. 多视图点云配准算法综述

    作者:杨佳琪,张世坤,范世超等 转载自:华中科技大学学报(自然科学版) 编辑:东岸因为@一点人工一点智能 原文:​​多视图点云配准算法综述​​ 摘要:以多视图点云配准为研究对象,对近二十余年的多视图点 ...

  3. 综述|2021最新关于点云配准的全面介绍

    标题:A comprehensive survey on point cloud registration 作者:Xiaoshui Huang[1], Guofeng Mei[2], Jian Zha ...

  4. CVPR2020:训练多视图三维点云配准

    CVPR2020:训练多视图三维点云配准 Learning Multiview 3D Point Cloud Registration 源代码和预训练模型:https://github.com/zgo ...

  5. 该如何学习三维点云配准的相关知识?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 知乎用户 上海交通大学 电子与信息博士在读 点云配准综述 本文意在 ...

  6. 快速精确的体素GICP三维点云配准算法

    标题:Voxelized GICP for Fast and Accurate 3D Point Cloud Registration 作者:Kenji Koide, Masashi Yokozuka ...

  7. 三维计算机视觉(一)--点云处理综述

    转自:http://www.cnblogs.com/ironstark/p/4996929.html 点云模型与三维信息 三维图像是一种特殊的信息表达形式,其特征是表达的空间中三个维度的数据.和二 ...

  8. 干货 | 三维点云配准:ICP 算法原理及推导

    编者荐语 点云配准可以分为粗配准(Coarse Registration)和精配准(Fine Registration)两步.粗配准指的是在两幅点云之间的变换完全未知的情况下进行较为粗糙的配准,目的主 ...

  9. 三维点云配准是什么意思

    对同一个物体进行多次扫描后,会有多个点云数据,然后将两个数据中同一点的点云进行匹配,也就是将两幅点云中相同点的点云放在一起即点云配准

最新文章

  1. Selenium + Python + Chrome 自动化测试 环境搭建
  2. Java学习day011(oop):
  3. net user命令详解
  4. C语言写CGI程序【转】
  5. Spark广播变量使用示例
  6. 业务知识——Logger日志打印规范
  7. Apache Tez介绍,术语,安装,监控等
  8. linux下查看隐藏的文件
  9. 显示消息提示对话框(WebForm)
  10. 怎么汇报一周开发工作情况_如何在没有经验的情况下获得第一份开发人员工作
  11. 2018.8.26 Spring自学如门
  12. python2 安装 pip
  13. 计算机算法设计与分析 递归实现快速排序和随机化实现快速排序
  14. python类库26[web2py之介绍]
  15. 在线ppt转换pdf转换器
  16. Java学习的正确打开方式
  17. Flutter尝鲜:跨平台移动应用开发
  18. HBuilderX使用mac打包ios应用提示苹果根证书没有安装
  19. 《蜗居》触动人心灵的100个瞬间
  20. 电脑视频加水印怎么加?

热门文章

  1. Win10:ssh报错:RSA host key for 192.168.3.10 has changed and you have requested strict checking.
  2. Android usb audio信息获取(一)
  3. Android应用开发:Dialog使用及示例
  4. android之保存Bitmap到文件
  5. ios 怎么判断字符串的字节数_如何用IOS判断字符串是不是纯数字
  6. windows系统bat批处理 bat脚本默认拥有管理员权限
  7. cesium cesium is not defined
  8. 数据结构by王卓老师
  9. 用anaconda配置深度学习的环境,从配置环境到下载各种包,绝对学会,还是没学会留下评论,我看到会回答
  10. php调用rpc,AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程_PHP教程