主要内容

scanContextDescriptor

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

描述

例子

描述符= scanContextDescriptor (ptCloud从点云中提取扫描上下文描述符,ptCloud

扫描上下文描述符是点云的二维全局特征描述符,可用于检测循环闭包。该函数首先将三维点云扫描中的点分成同心径向和方位bin,然后选择最大值来计算描述符z-每个容器中点的高度。

描述符= scanContextDescriptor (ptCloud名称,值使用一个或多个名称-值对参数指定选项。

例子

全部折叠

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

veloReader = velodyneFileReader (“lidarData_ConstructionRoad.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”和形式为[numRadialBinsnumAzimuthalBins),numRadialBins是一个正整数,指定同心径向容器的数量和numAzimuthalBins指定同心角容器的数量。要提取更紧凑的描述符,可以减少容器的数量,但这降低了鉴别能力。

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

传感器原点,指定为逗号分隔对,由“SensorOrigin”一个二元向量。元素设置x- - -y分别以世界单位表示的传感器原点的-轴坐标点。该功能将垃圾箱集中在扫描原点附近。

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

输出参数

全部折叠

扫描上下文描述符,作为——- - - - - -N矩阵,N分别为描述符中同心径向箱和角径向箱的数量。这些是由NumBins财产。

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

数据类型:|

提示

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

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

扩展功能

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

另请参阅

对象

功能

介绍了R2020b