主要内容

scanContextDescriptor

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

描述

例子

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

扫描上下文描述符是点云的二维全局特征描述符,可用于检测循环闭包。该函数首先将三维点云扫描中的点分成同心圆径向和方位角两部分,然后选取最大值来计算描述符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.目的。

名称-值参数

指定可选的用逗号分隔的对名称,值论点。的名字参数是name和价值是相应的价值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'numbins',[20 60]将径向容器的数量设置为20.,以及方位角垃圾箱的数量60

同心径向和角状箱体的数量,指定为由“NumBins”和表格的矢量[numRadialBinsnumAzimuthalBins),numRadialBins是一个正整数,指定同心圆径向箱体的数量和numAzimuthalBins指定同心角箱的数量。要提取更紧凑的描述符,可以减少箱数,但这降低了辨别力。

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

传感器原点,指定为由“SensorOrigin”一个二元向量。元素设置x- 和y-轴坐标点,分别为传感器原点的世界单位。该函数将垃圾箱放在扫描原点附近的中心。

分装点时使用的描述符的径向边界,指定为由“RadialRange”和形式的两个元素矢量[rminrmax.]。使用此名称值参数来限制描述符所涵盖的空间范围。

输出参数

全部折叠

扫描上下文描述符,作为-经过-N矩阵,其中N是描述符中同心圆径向和角向格的个数。这些是由NumBins财产。

函数返回继承了数据类型位置输入点云的属性。

数据类型:|

尖端

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

  • 要确定循环关闭候选,请使用该循环闭合候选,比较两个扫描上下文描述符之间的距离scanContextDistance函数。

扩展功能

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

另请参阅

对象

功能

介绍了R2020b