加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 襄阳站长网 (https://www.0710zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

【PCL自学:Registration 1】PCL点云配准一般流程介绍

发布时间:2022-10-18 11:36:01 所属栏目:云计算 来源:
导读:  PCL点云配准相关API一、什么是点云配准?

  将各种三维点云数据视图对齐到一个完整的模型中的问题称为配准。它的目标是找到独立获得的视图在全局坐标系中的相对位置和方向,使它们之间的相交区域完美重叠。
  PCL点云配准相关API一、什么是点云配准?
 
  将各种三维点云数据视图对齐到一个完整的模型中的问题称为配准。它的目标是找到独立获得的视图在全局坐标系中的相对位置和方向,使它们之间的相交区域完美重叠。因此,对于从不同视图获得的每一组点云数据,我们需要一个系统来将它们排列成单一的点云模型,即将这些点云组形成相同的点云。以便应用分割、对象重建等后续的点云处理步骤。
 
  [En]
 
  The problem of aligning various 3D point cloud data views into a complete model is called registration. Its goal is to find the relative position and direction of the separately obtained views in the global coordinate framework, so that the intersecting areas between them overlap perfectly. Therefore, for each set of point cloud data sets obtained from different views, we need a system that can arrange them into a single point cloud model, that is, to form these groups of point clouds into the same point cloud. In order to apply segmentation, object reconstruction and other subsequent point cloud processing steps.
 
  例如将以下六组单片点云拼接组成同一片点云即为点云配准过程。
 
  【PCL自学:Registration 1】PCL点云配准一般流程介绍
 
  上图中给出的例子,使用倾斜的2D激光单元获得了六个独立的点云数据集。由于每个单独的扫描只代表了周围世界的一小部分,因此必须找到将它们配准在一起的方法,从而创建如下图所示的完整的点云模型。
 
  【PCL自学:Registration 1】PCL点云配准一般流程介绍
 
  PCL点云配准库(Registration)中的算法工作的目标是在给定的输入数据集中找到正确的点对应,并估计刚性转换,可以旋转和转换每个单独的数据集到一个一致的全局坐标框架使其组成一片点云。如果输入数据集中的点对应是完全已知的云模型计算,那么这种配准范式就很容易求解。这意味着,从特征表示的角度来看,一个数据集中的选定点列表必须与另一个数据集中的点列表一致。此外,如果估计的点对关系是完美的,则配准问题是一个封闭解。
 
  PCL包含一组强大的算法,允许估计多组点对关系,以及筛除不良点对关系的方法,并以稳健的方式估计来自它们的转换。以下各节将分别对它们进行描述。
 
  ; 二、成对点云配准的算法概述
 
  我们有时把配准一对点云数据集的问题称为成对配准,及其输出通常是一个刚性变换矩阵(4 x4),该矩阵代表旋转和平移量,将其应用于一个原点云数据集即可与目标点云(或称场景点云)完成配准。
 
  在配对注册步骤中执行的具体步骤如下图所示。请注意,这表示算法的单次迭代。用户可以决定循环中的任何或所有步骤。
 
  [En]
 
  The specific steps performed in the pairwise registration step are shown in the following figure. Note that this represents a single iteration of the algorithm. The user can decide any or all of the steps in the loop.
 
  【PCL自学:Registration 1】PCL点云配准一般流程介绍
 
  两个数据集的计算步骤是直接的:
 
  1、从一组点中确定关键点(能最好地表示出两个数据集的关键点);
 
  2、在每个关键点上,计算一个特征描述符;
 
  3、从特征描述符集合及其在两个数据集中的XYZ位置,基于特征和位置之间的相似度,估计一组对应点;
 
  4、假设数据是有噪声的,并不是所有的对应点都是有效的,所以筛除那些对配准过程可能产生负面影响的差的对应点;
 
  5、利用剩余的良好对应点,估计一个运动变换矩阵。
 
  三、PCL中的点云配准(Registration)一般流程
 
  让我们看看上面配准流程中的每个具体步骤:
 
  3.1 关键点提取
 
  关键点是在场景中具有特殊属性的兴趣点,比如书的角落,或者写有PCL的书上的字母P。在PCL中有许多不同的关键点,如NARF、SIFT和FAST。或者,你也可以把每一个点,或者一个子集,作为关键点。将两个kinect数据集直接输入对应估计的问题在于,你在每帧中有300k个点,所以可能有300k^2个对应点,这显然是不理智的,所以一般情况下需要进行降采样后提取少部分关键点。
 
  3.2 描述符(特征)计算
 
  根据提取的关键点,必须提取特征,计算特征描述符的方法有很多,例如NARF, FPFH, BRIEF或SIFT。可以看我以前的博文:点特征直方图
 
  3.3 对应点估计
 
  给定来自两个点云的两组描述符数组,我们必须找到对应的特征描述符,以找到点云数据的重叠部分。根据特征的不同类型,我们可以使用不同的方法来寻找对应关系。
 
  [En]
 
  Given two sets of descriptor arrays from two point clouds, we must find the corresponding feature descriptors to find the overlapping parts of the point cloud data. According to the different types of features, we can use different methods to find the corresponding relationship.
 
  【1】对于点匹配(使用点xyz坐标作为特征),有组织和无组织的点云数据存在不同的方法:
 
  暴力匹配(遍历描述符数组),耗时长不推荐。kd-树最近邻搜索(FLANN),耗时短,推荐。对于有组织的数据可以在图像空间(结构光传感器)或索引空间(线扫描传感器)中进行搜索。推荐。
 
  【2】对于不使用点坐标,而是某些特征,只有以下2种方法:
 
  暴力匹配(遍历描述符数组),耗时长不推荐。kd-树最近邻搜索(FLANN),耗时短,推荐。
 
  【3】除了搜索外,还区分了两类对应点估计:
 
  直接对应点估计(默认),对点云A中的每个点搜索点云B中的对应点。“Reciprocal” (相互)对应估计,即从点云A到点云B的对应点搜索,也从点云B到点云A的对应点搜索,只使用这些对应点的交集。3.4 错误对应点筛除
 
  当然,并不是所有的估计的对应点都是正确的。由于错误的对应点估计会对最终转换的估计产生负面影响,因此需要将其筛除掉。这可以通过RANSAC来完成,或者通过减少数量,只使用找到的一定比例的对应点。
 
  特例是一对多对应,即目标点云中的一个点对应于源点云中的多个点。可以通过只使用距离最小的一个或通过检查附近的其他匹配来过滤这些匹配。
 
  [En]
 
  A special case is an one-to-many correspondence, that is, a point in the target point cloud corresponds to multiple points in the source point cloud. These can be filtered by using only the one with the smallest distance or by checking for other matches nearby.
 
  3.5 仿射变换估计
 
  通常,最后一步是计算这个变换,即计算4×4的转换矩阵。
 
  首先需要通过上一步筛选后的对应点关系估计一个误差度量。然后估计相机姿态(运动估计)和最小化误差度量之间的(刚性)转换。优化点的结构,例如:①SVD分解的运动估计;② 不同核的列文伯格-马夸尔特的运动估计使用刚性转换将源点云旋转和平移到目标点云上,然后可选择的使用ICP(最近邻迭代)对所有点或者对下采样点的点\特征描述符进行迭代运算,直到满足某个收敛准则。
 
  【博主简介】
 
  斯坦福的兔子,男,天津大学机械工程工学硕士。毕业至今从事光学三维成像及点云处理相关工作。因工作中使用的三维处理库为公司内部库,不具有普遍适用性,遂自学开源PCL库及其相关数学知识以备使用。谨此将自学过程与君共享。
 
  博主才华横溢、学识渊博,没有引导能力。如果您有任何问题,请在评论中留言,供大家讨论。
 
  [En]
 
  The blogger has little talent and learning, and does not have the ability of guidance. If you have any questions, please leave a message in the comments for everyone to discuss.
 

(编辑:PHP编程网 - 襄阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!