点云配准(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 the set of feature descriptors together with their XYZ positions in the two datasets, estimate a set of correspondences, based on the similarities between features and positions;
  • given that the data is assumed to be noisy, not all correspondences are valid, so reject those bad correspondences that contribute negatively to the registration process;
  • from the remaining set of good correspondences, estimate a motion transformation.

针对上述每一个步骤,PCL的registration模块提供了多种算法进行实现 。

Keypoint

诸如 NARF, SIFT and FAST。

Feature descriptors

诸如NARF, FPFH, BRIEF or SIFT。

Correspondences Estimation

point matching

  • brute force matching,
  • kd-tree nearest neighbor search (FLANN),
  • searching in the image space of organized data, and
  • searching in the index space of organized data.

feature matching

  • brute force matching and
  • kd-tree nearest neighbor search (FLANN).

Corresdondences Rejection

使用RANSAC,或者剪出多余数据。

Transformation Estimation

诸如 SVD for motion estimate; - Levenberg-Marquardt with different kernels for motion estimate。

算法案例

其中(1)和(2)是point matching,(3)是feature matching。

(1)ICP

ICP的使用SVD求解转换矩阵,其参考文章:

Least-Squares Estimation of Transformation Parameters Between Two Point Patterns

(2)NDT

参考论文:

1. The Three-Dimensional Normal-Distributions Transform an Efficient Representation for Registration, Surface Analysis, and Loop Detection. MARTIN MAGNUSSON doctoral dissertation。

2. Line Search Algorithm with Guaranteed Sufficient Decrease. 计算迭代步长。

(3)改进版RANSAC

参考论文:

Pose Estimation using Local Structure-Specific Shape and Appearance Context. ICRA 2013.

原文地址:https://www.cnblogs.com/gdut-gordon/p/12260384.html

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

点云配准(Registration)算法——以PCL为例的相关文章

点云配准相关知识

(把自己知乎上的回答搬运了过来作为日志)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

PCL点云配准(3)

(1)关于点云的配准 1.首先给定源点云与目标点云. 2.提取特征确定对应点 3.估计匹配点对应的变换矩阵 4.应用变换矩阵到源点云到目标点云的变换 配准的流程图 通过特征点的匹配步骤 (1)计算源点云与目标点云的关键点 (2)计算关键点的特征描述子(比如:FPFH等等) (3)匹配特征点计算出对应关系 (4)从特征点之间的对应关系估算变换矩阵 与Opencv中使用harris 角点等特征点来计算两幅图像之间的变换矩阵的原理是一样的,所以其中用到的算法的思路和工作流程也都很相似 有很多中方法来计

激光雷达点云数据处理相关算法库收集 【转】

1.CGAL,Computational Geometry Algorithms Library,计算几何算法库,设计目标是,以C++库的形式,提供方便,高效,可靠的几何算法.CGAL可用于各种需要几何计算的领域,如计算机图形学,科学可视化,计算机辅助设计和建模,地理信息系统,分子生物学,医学成像,机器人运动规划,网格生成,数值方法等等. 计算几何算法库(CGAL),提供计算几何相关的数据结构和算法,诸如三角剖分(2D约束三角剖分及二维和三维Delaunay三角剖分),Voronoi图(二维和三

ICP点云配准原理及优化

ICP算法简介 根据点云数据所包含的空间信息,可以直接利用点云数据进行配准.主流算法为最近迭代算法(ICP,Iterative Closest Point),该算法是根据点云数据首先构造局部几何特征,然后再根据局部几何特征进行点云数据重定位. 一. ICP原理 假设两个点云数据集合P和G,要通过P转换到G(假设两组点云存在局部几何特征相似的部分),可以通过P叉乘四元矩阵进行旋转平移变换到G,或者SVD法将P转换到G位置,总体思想都是需要一个4x4的旋转平移矩阵.对于每次旋转平移变换后计算P的所有

基于区域增长(RegionGrowing)的分割算法——参照pcl源码

不想做只会调API的程序员,进而重写了pcl::RegionGrowing类(然而还是基于了pcl的数据结构,哎,学习有点迷茫). 分割,顾名思义,按照一定的规律将点云分成一类类的.方便于接下来对点云的操作处理.不同的应用方向会用到不同的分割方法.本篇介绍的基于区域增长的算法,最终达到的理想效果是 点云按照估计的曲率聚类,但本人做了一些小的demo示例之后其实对于实际的应用还是一头雾水(也可能是比较菜吧 /emoji sad/)然而该算法的思想却是可以给做别的提供一些思路. 算法思想:首先根据点

FPFH+ICP点云配准

A, UniformSampling降噪 B, ISS计算关键点, FPFH特征 在FeatureCloud::setInputCloud中读入点云,并调用processInput进行处理: processInput处理包括: 1,  computeSurfaceNormals () 使用NormalEstimation计算得到表面法向量 2,   computeLocalFeatures () FPFHEstimation KdTree ISSKeypoint3D getKeypointsIn

基于RANSAC的点云面分割算法

该算法在RANSAC和空间检索树的基础上实现的. 算法思路: 1.点云抽希.法线估计 2.出局点索引存储声明 3.平面检测 for (size_t i = 0; i < cloudTemp->points.size(); i++) { 判断为出局点: if (检索一定量的临近点) { 判断搜索点集是否符合要求: 存储搜索的点集 : } RANSAC平面拟合(ransac计算平面模型参数): 判断平面拟合的正确性: /* * 利用拟合平面 计算点云到该面距离, 设置容差  判断点云是否在平面内

牛客网左程云老师的算法视频个人总结

第一节课 第一题:题意与leetcode354的问题相同 算法原型 最长递增子序列问题 /* * 题意:求出给定序列的最长递增子序列的长度,给定序列不是有序的,子序列不是子数组,元素在原数组中不必是连续的 * */ /* * solutions1: 时间复杂度O(n^2),空间复杂度O(n) * 新建一个辅助数组h,h[i]表示以nums[i]结尾的最长递增子序列的长度 * h[i]值的确定,需要nums[i]与nums[j](0<=j<i)做比较,h[i] = h[j] + 1 (when