主要内容

pcregisterndt

用NDT算法配准两点云

描述

例子

tform= pcregisterndt (移动固定网格步返回将移动点云注册到固定点云的刚性转换。点云被体素化成大小的立方体网格步

该配准算法基于正态分布变换(NDT)算法[1][2]这种迭代过程的最佳性能需要调整数据的属性。为了提高注册的准确性和效率,考虑使用点云进行下采样。pcdownsample使用前pcregisterndt

tformmovingReg) = pcregisterndt (移动固定网格步还返回与固定点云对齐的变换点云。

___rmse) = pcregisterndt (移动固定网格步也返回对齐点云之间的欧氏距离的均方根误差,使用前面的任何语法。

___) = pcregisterndt (移动固定网格步名称、值使用一个或多个指定的附加选项名称、值配对参数。

例子

全部崩溃

加载点云数据。

ld =负载(“livingRoom.mat”); moving=ld.livingRoomData{1};fixed=ld.livingRoomData{2};pcshowpair(移动、固定、,“垂直轴”“是的”“垂直方向”“向下”

图中包含一个轴对象。axis对象包含两个散点类型的对象。

为了提高NDT配准算法的效率和精度,对运动点云进行降采样。

movingDownsampled=pcdownsample(移动,“gridAverage”, 0.1);

将点云体素化成边长0.5的立方体。使用NDT算法应用刚性配准。

gridStep=0.5;tform=pcregisterndt(移动下采样,固定,gridStep);

可视化对齐。

movingReg = pctransform(移动,tform);pcshowpair (movingReg,固定,“垂直轴”“是的”“垂直方向”“向下”

图中包含一个轴对象。axis对象包含两个散点类型的对象。

输入参数

全部崩溃

移动点云,指定为点云对象。

定点云,指定为点云对象。

将定点云体素化的三维立方体的大小,指定为正标量。

数据类型:|双重的

名称-值参数

指定可选的逗号分隔的对名称、值论据。的名字参数名和价值是对应的值。的名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:名称1,值1,…,名称,值

例子:“MaxIterations”,20在20次迭代后停止NDT算法。

初始刚性变换,指定为逗号分隔对,由'初始变换”和rigid3d对象。当您提供外部粗略估计时,初始的刚性变换是有用的。

rigid3d对象包含一个平移,该平移将移动点云的中心移动到固定点云的中心。

相对于正态分布的异常值的预期百分比,指定为逗号分隔对,包括“OutlierRatio’和[0,1)范围内的标量。NDT算法假设一个点是由嵌线的正态分布和离群值的均匀分布混合生成的。'的较大值OutlierRatio减少了异常值的影响。

数据类型:|双重的

NDT停止前的最大迭代次数,指定为逗号分隔对,由'MaxIterations'和一个非负整数。

数据类型:|双重的

连续NDT迭代之间的公差,指定为逗号分隔的对,由'容忍'和具有非负值的2元素向量。向量,Tdiff尔迪夫,表示在连续的NDT迭代中估计的平移和旋转绝对差的公差。Tdiff测量两个平移向量之间的欧氏距离。尔迪夫测量角度差(度)。当最近连续迭代中估计的刚性变换之间的差低于指定的公差值时,算法停止。

数据类型:|双重的

显示进度信息,指定为逗号分隔的对,由'冗长的和一个逻辑标量。集冗长的符合事实的显示进度信息。

数据类型:逻辑

输出参数

全部崩溃

刚性转换,返回为rigid3d对象。tform描述了记录移动点云的刚性三维变换,移动,到定点云,固定

变换点云,返回为点云对象。转换后的点云与固定点云对齐,固定

均方根误差,以正数返回。rmse是对齐点云之间的欧几里德距离。

算法

全部崩溃

提示

无损检测注册概述

NDT配准是基于正态分布,而不是其他类型的配准,这些配准通过匹配点或线来找到两个点云之间的转换。NDT方法使用了带有三维盒子(称为体素)的统计模型。

为了配准两个点云,一个移动点云和一个固定点云,使用NDT方法,算法执行如下操作:

  1. 计算固定点云的正态分布,方法是将点云扫描覆盖的区域划分为大小恒定的三维框,称为“体素”。每个体素包含一组点。该算法计算每个体素中点的平均值和协方差矩阵。

  2. 从对变换的初始猜测开始,算法将移动点云对齐到固定点云。然后,根据不动点云的正态分布,找到在移动点云中围绕点的体素中每个对齐点的统计似然和。

  3. 为了改进配准,该算法最大限度地提高了移动点云对定点云正态分布的概率评分。这是通过迭代优化角度和平移估计来实现的。

  4. 使用上一步的新变换重复移动点云与固定点云的对齐,然后重复优化。

  5. 一旦满足最大迭代次数或公差参数,算法将停止。公差是角度和平移估计从一次迭代到另一次迭代的变化程度的度量。

兼容性考虑

全部展开

R2020a中的行为发生了变化

参考文献

[1] Biber,P.和W.Straßer。“正态分布变换:激光扫描匹配的新方法。”IEEE/RSJ智能机器人和系统国际会议记录(IROS)《内华达州拉斯维加斯》,第3卷,2003年11月,第2743-2748页。

[2] Magnusson, M.“三维正态分布变换——配准、表面分析和环路检测的有效表示”博士论文。Örebro大学,Örebro,瑞典,2013。

扩展功能

C/C++代码生成
使用Matlab®编码器生成C和C++代码™.

GPU的代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

介绍了R2018a