PCL点云配准(3)
(1)关于点云的配准
1.首先给定源点云与目标点云。
2.提取特征确定对应点
3.估计匹配点对应的变换矩阵
4.应用变换矩阵到源点云到目标点云的变换
配准的流程图
通过特征点的匹配步骤
(1)计算源点云与目标点云的关键点
(2)计算关键点的特征描述子(比如:FPFH等等)
(3)匹配特征点计算出对应关系
(4)从特征点之间的对应关系估算变换矩阵
与Opencv中使用harris 角点等特征点来计算两幅图像之间的变换矩阵的原理是一样的,所以其中用到的算法的思路和工作流程也都很相似
有很多中方法来计算转换矩阵T = (R,t),如果给定了配对点(Di,Mi):
(1)通过点对点的方式
(2)点对平面的方式
(3)平面到平面之间的配对,等等
基于SVD分解的最小化点对点的最小距离的方法(最小方差误差的公式):
那么肯定会有误匹配,去除错误匹配点(局外点)的方法采用RANSAC方法
(1)找出三对对应的匹配点(Di ,Mi)
(2)根据这些点估算转换矩阵(R,t)
(3)对于匹配点满足 一定条件的设为内点
(4)重复上面的步骤N次,直到(R,t)有很多的内点
初始匹配(可以看见非常多的误匹配)
经过RANSAC算法计算后的匹配
找到了特征点之间的转换矩阵之后我们想完全的的对应源点云与目标点云还要用到ICP 算法
如图所示
我们认为M作为模型设置点,S作为对应的场景,我们认为S上的每一个点都有与之对应的M上的点。如果有正确的配准点我们是已知的,就可以找到两者之间的旋转与平移,那么如果找到一个误差最小的配准呢?就要用到ICP算法,其算法流程
算法的伪码如下:
关注微信公众号,加入群聊
PCL点云配准(3)的更多相关文章
- PCL点云配准(1)
在逆向工程,计算机视觉,文物数字化等领域中,由于点云的不完整,旋转错位,平移错位等,使得要得到的完整的点云就需要对局部点云进行配准,为了得到被测物体的完整数据模型,需要确定一个合适的坐标系,将从各个视 ...
- PCL点云配准(2)
(1)正态分布变换进行配准(normal Distributions Transform) 介绍关于如何使用正态分布算法来确定两个大型点云之间的刚体变换,正态分布变换算法是一个配准算法,它应用于三维点 ...
- PCL点云库:ICP算法
ICP(Iterative Closest Point迭代最近点)算法是一种点集对点集配准方法.在VTK.PCL.MRPT.MeshLab等C++库或软件中都有实现,可以参见维基百科中的ICP Alg ...
- 使用正态分布变换(Normal Distributions Transform)进行点云配准
正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.下面是PCL官网上的一个例 ...
- PCL点云特征描述与提取(1)
3D点云特征描述与提取是点云信息处理中最基础也是最关键的一部分,点云的识别.分割,重采样,配准曲面重建等处理大部分算法,都严重依赖特征描述与提取的结果.从尺度上来分,一般分为局部特征的描述和全局特征的 ...
- PCL点云库(Point Cloud Library)简介
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=29 什么是PCL PCL(Point Cloud Library)是在吸收了 ...
- MeshLab中进行点云配准
MeshLab是一个开源.可移植和可扩展的三维几何处理系统,主要用于交互处理和非结构化编辑三维三角形网格.它支持多种文件格式: import:PLY, STL, OFF, OBJ, 3DS, COLL ...
- PCL中点云数据格式之间的转化
(1) 关于pcl::PCLPointCloud2::Ptr和pcl::PointCloud<pcl::PointXYZ>两中数据结构的区别 pcl::PointXYZ::PointXYZ ...
- PCL点云库中的坐标系(CoordinateSystem)
博客转载自:https://blog.csdn.net/qq_33624918/article/details/80488590 引言 世上本没有坐标系,用的人多了,便定义了坐标系统用来定位.地理坐标 ...
随机推荐
- Python基础知识—sys模块初探
有关Python解释器的信息 与所有其他模块一样,必须使用import语句导入sys模块,即import sys. sys模块提供有关Python解释器的常量,函数和方法.dir(系统)给出了可用常量 ...
- Spring MVC中Controller返回值void时报错
Controller如下: 当使用url访问该处理器方法时,报错如下: 26-Jan-2019 21:16:28.105 警告 [http-nio-8080-exec-39] org.springfr ...
- Spring AOP 配置通知方法的时候如何处理方法重载
如何在method属性里指定重载方法中的某一个?
- (转)java程序员进入名企需要掌握哪些,立一个flag
想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,在面试之前到底需要准备哪些东西呢?面试时面试官想了解你的什么专业技能,以下都是一个合格Java软件工程师所要具备的. 一.专业技能 熟练的 ...
- 从web到搭建ssm环境
1:我先建立了个web项目, (1)在pom.xml中添加了如下 <dependencies> <!-- Spring --> <depend ...
- Python ----pip安装模块提示“unknown or unsupported command install”的解决办法
安装pip后,使用pip安装模块时,提示“unknown or unsupported command install” 解决方法: 1.cmd运行"where pip" 找出所有 ...
- 小甲鱼Python第十二讲课后习题---013元组
0. 请用一句话描述什么是列表?再用一句话描述什么是元组? 列表:一个大仓库,你可以随时往里边添加和删除任何东西. 元组:封闭的列表,一旦定义,就不可改变(不能添加.删除或修改). 1. 什么情况下 ...
- poj3190 Stall Reservations(贪心+STL)
https://vjudge.net/problem/POJ-3190 cin和scanf差这么多么..tle和300ms 思路:先对结构体x升序y升序,再对优先队列重载<,按y升序. 然后依次 ...
- React组件通信技巧
效果图 communication.gif 点击查看Github完整源码 1.父向子通信 直接标签中插入参数即可 //number只是个例子 let _number = this.state.numb ...
- 下载Android kernel
方法一: https://source.android.com/setup/building-kernels 方法二: 在按照https://source.android.com/setup/down ...