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算法,其算法流程

算法的伪码如下:

关注微信公众号,加入群聊

原文地址:https://www.cnblogs.com/li-yao7758258/p/6605719.html

时间: 2024-10-12 01:32:53

PCL点云配准(3)的相关文章

点云配准(Registration)算法——以PCL为例

本文为PCL官方教程的Registration模块的中文简介版. An Overview of Pairwise Registration 点云配准包括以下步骤: from a set of points, identify interest points (i.e., keypoints) that best represent the scene in both datasets; at each keypoint, compute a feature descriptor; from th

PCL中点云数据格式之间的转化

(1) 关于pcl::PCLPointCloud2::Ptr和pcl::PointCloud<pcl::PointXYZ>两中数据结构的区别 pcl::PointXYZ::PointXYZ ( float_x, float_y, float_z ) 区别: struct PCLPointCloud2 { PCLPointCloud2 () : header (), height (0), width (0), fields (), is_bigendian (false), point_ste

点云配准相关知识

(把自己知乎上的回答搬运了过来作为日志)1.首先,点云配准过程,就是求一个两个点云之间的旋转平移矩阵(rigid transform or euclidean transform 刚性变换或欧式变换),将源点云(source cloud)变换到目标点云(target cloud)相同的坐标系下.可以表示为以下的方程:其中就是target cloud与source cloud中的一对对应点.而我们要求的就是其中的R与T旋转平移矩阵.这里,我们并不知道两个点集中点的对应关系.这也就是配准的核心问题.

MeshLab中进行点云配准

MeshLab是一个开源.可移植和可扩展的三维几何处理系统,主要用于交互处理和非结构化编辑三维三角形网格.它支持多种文件格式: import:PLY, STL, OFF, OBJ, 3DS, COLLADA, PTX, V3D, PTS, APTS, XYZ, GTS, TRI, ASC, X3D, X3DV, VRML, ALN export:PLY, STL, OFF, OBJ, 3DS, COLLADA, VRML, DXF, GTS, U3D, IDTF, X3D 下面来试一下MeshL

《VS2010(X64)&amp;PCL点云库学习》Part 2 A simple test of PCL in MFC

<VS2010(X64)&PCL点云库学习>Part 2 A simple test of PCL in MFC                                                                             本文主要介绍如何将PCL的控制台程序移植到MFC中,基本内容还是按照上一篇PCL配置博文来继续讲解的. 1.新建MFC程序 2.应用程序类型对话框中,勾选基于对话框,一直下一步,或者直接点击完成. 3.配置环境:主要包括添加

Windows下安装PCL点云库

原文链接:http://blog.csdn.net/u012337034/article/details/38270109 简介: 在Windows下安装PCL点云库的方法大概有两种:其一,all-in-one-installer,这个只有两个版本1.5.1和1.6.0,而且顾名思义,安装方法极其简单,这里就不多做介绍了:其二,build PCL out of source,这里我们可以使用PCL的各种版本,而且随着PCL的更新,我们也可以不断的update.接下来我将会详细介绍如何独立安装PC

点云库PCL:NDT配准时出现容器出限的问题及解决

前言 在PCL库中,精配准除了我们最常用的ICP算法以及相关的变形算法,如GICP算法外,另外还包含了NDT算法(正态分布变换),它不需要提供较好的初值,且速度比ICP算法更为快速. 当然,也会有着一定的缺陷:收敛域差.代价函数不连续等,NDT原理以及步骤等具体可查看 https://www.cnblogs.com/li-yao7758258/p/10705228.html,个人觉得,这篇文章写得比较详细具体. 版本 PCL1.8.0 问题 PCL在使用NDT(Normal Distributi

[PCL](1)PCL点云库安装

1.安装文件下载:官网,我还是比较喜欢别人编译好的安装包啊,哈哈. http://www.pointclouds.org/downloads/windows.html 2.傻瓜式安装(下面的依赖项都集成进来了) 写入环境变量,这个很不错,可选. 中间安装了Boost.VTK.Kinect驱动什么的.反正是一路下一步,当然我的机器是Win7系统,之前没有安装过PCL,比较纯净. 之后又单独安装了QT4.8.2的sdk. 3.测试 在安装目录下有share/doc/pcl-1.6/tutorials

[PCL]点云渐进形态学滤波

PCL支持点云的形态学滤波,四种操作:侵蚀.膨胀.开(先侵蚀后膨胀).闭(先膨胀后侵蚀) 在#include <pcl/filters/morphological_filter.h>中定义了枚举类型 1 enum MorphologicalOperators 2 { 3 MORPH_OPEN, 4 MORPH_CLOSE, 5 MORPH_DILATE, 6 MORPH_ERODE 7 }; 具体实现: 1 template <typename PointT> void 2 pcl