主要内容

scancontextdescriptor.

从点云中提取扫描上下文描述符

描述

例子

描述符= scancontextdescriptor(Ptcloud.的)从点云中提取扫描上下文描述符,Ptcloud.

扫描上下文描述符是可用于检测循环闭环的点云的2-D全局特征描述符。该函数通过从3-D点云扫描到同心径向和方位角箱的第一分叉点计算描述符,然后选择最大值Z.-Height每个垃圾箱的点。

描述符= scancontextdescriptor(Ptcloud.名称,价值的)使用一个或多个名称-值对参数指定选项。

例子

全部收缩

创建一个Velodyne®数据包捕获(PCAP)文件阅读器。

Veloreader = Velodynefilereader('lidardata_constructionsroad.pcap'“HDL32E”);

读取第1,第2和第100次扫描到工作区。

ptCloud1 = readFrame (veloReader, 1);ptCloud2 = readFrame (veloReader 2);ptCloud100 = readFrame (veloReader, 100);

从每个点云中提取扫描上下文描述符。

descriptor1 = scancontextdescriptor(ptcloud1);descriptor2 = scancontextdescriptor(ptcloud2);descriptor100 = scancontextdescriptor(ptcloud100);

计算第1和第2扫描上下文描述符之间的描述符距离,以及在第1和第100次扫描上下文描述符之间。

dist1to2 = scanContextDistance (descriptor1 descriptor2);dist1to100 = scanContextDistance (descriptor1 descriptor100);

显示扫描上下文描述符距离。

disp (“框架1到2的描述符距离:”+ num2str (dist1to2))
从帧1到帧2的描述符距离:0.087646
disp (“从框架1到100的描述符距离:”+ NUM2STR(DIST1TO100))
框架1至100:0.32427的描述符距离

输入参数

全部收缩

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

名称 - 值参数

指定可选的逗号分离对名称,价值参数。姓名是参数名称和价值为对应值。姓名必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“NumBins”,[60]20设置径向垃圾箱的数量20.,方位角箱的数量60.

同心径向和角箱的数量,指定为逗号分隔的配对'numbins'和形式为[numradialbins.numazimuthalbins.], 在哪里numradialbins.是一个正整数,指定同心径向箱的数量和numazimuthalbins.指定同心角容器的数量。要提取更紧凑的描述符,可以减少容器的数量,但这降低了鉴别能力。

描述符中包含的容器的最小点数,指定为逗号分隔对,由'minpointsperbin'一个正整数。不包含最小点数的容器不包含在描述符中。对于这些容器,函数返回。为了减少作为垃圾箱的噪声的机会,增加了这个值。

传感器来源,指定为逗号分隔对'sensororigin'和一个双元素矢量。元素设置了X- - -y- 在世界单位中分别为传感器起源的坐标点。该功能在扫描的原点周围中心中心。

使用融合点时使用的描述符的径向界限,指定为逗号分隔对组成的'RadialRange'以及形式为[rmin.征求].使用这个name-value参数来限制描述符覆盖的空间边界。

输出参数

全部收缩

扫描上下文描述符,返回为一个M.——- - - - - -N.矩阵,M.N.分别在描述符中分别是同心径向和角距的数量。这些由麻木财产。

方法的数据类型地点输入点云的属性。

数据类型:单身的|双倍的

提示

  • 扫描上下文描述符函数假定传感器大致水平安装,并且输入点云位于传感器坐标系中。

  • 方法比较两个扫描上下文描述符之间的距离,以确定候选循环闭包scancontextdists功能。

扩展能力

C / C ++代码生成
使用MATLAB®Coder™生成C和c++代码。

也可以看看

对象

职能

在R2020B中介绍