主要内容

segmentGroundFromLidarData

从有组织的激光雷达数据中分割接地点

描述

例子

groundPtsIdx= segmentGroundFromLidarData (ptCloud部分组织了三维激光雷达数据,ptCloud,分为地面和非地面部分。激光雷达传感器必须水平安装,以便在激光雷达扫描中观察到离传感器最近的所有接地点。

要使用此功能,接地面必须沿x-y飞机。您可以使用pctransform在使用前旋转传感器数据segmentGroundFromLidarData

groundPtsIdx= segmentGroundFromLidarData (ptCloud名称=值使用一个或多个名值对设置属性。将每个属性名用引号括起来。例如,segmentGroundFromLidarData (ptCloud ElevationAngleDelta = 5)

例子

全部折叠

从有组织的激光雷达点云中分割出接地点和非接地点。从这些分割创建有组织的点云,并显示它们。

装上激光雷达,点云。

ld =负载(“drivingLidarPoints.mat”);

从有组织的激光雷达点云中分割地面点。

groundPtsIdx = segmentGroundFromLidarData (ld.ptCloud);

方法创建只包含这些接地点的有组织的点云选择函数。显示此点云。

groundPtCloud =选择(ld.ptCloud groundPtsIdx);图pcshow (groundPtCloud)

创建一个只包含非接地点的有组织的点云。指定0.5米的阈值。

nonGroundPtCloud =选择(ld.ptCloud ~ groundPtsIdx,“OutputSize”“全部”);distThreshold = 0.5;[标签,numClusters] = segmentLidarData (nonGroundPtCloud distThreshold);

显示非地点云团。

图colormap(hsv(numClusters)) pcshow(nonGroundPtCloud.Location,labels) title(“点云集群”

将Velodyne PCAP®加载到工作区。

velodyneFileReaderObj = velodyneFileReader (“lidarData_ConstructionRoad.pcap”“HDL32E”);

使用pcplayer创建一个点云播放器。定义它的x-,y- - - - - -,z-axes限制,以米为单位,并标明其轴线。

Xlimits = [-40 40];Ylimits = [-15 15];Zlimits = [-3 3];球员= pcplayer (xlimits ylimits zlimits);

标记pcplayer的坐标轴。

包含(球员。轴,“X (m)”) ylabel(球员。轴,“Y (m)”) zlabel(球员。轴,“Z (m)”

为标记点设置颜色图。使用RGB三元组指定绿色为地平面点,红色为障碍物点。

Colors = [0 1 0;1 0 0];greenIdx = 1;redIdx = 2;

遍历Velodyne PCAP文件中的点云,使用readFrame读入数据。从每个点云中分割地面点。所有接地点涂成绿色,非接地点涂成红色。绘制最终的激光雷达点云。

colormap (player.Axes、颜色)标题(球员。轴,“激光雷达点云的分段地平面”);我= 1:velodyneFileReaderObj。NumberOfFrames读取当前帧。ptCloud = velodyneFileReaderObj.readFrame(我);创建标签数组。colorLabels = 0(大小(ptCloud.Location, 1),大小(ptCloud.Location 2));找到接地点。groundPtsIdx = segmentGroundFromLidarData (ptCloud);地图颜色的接地点为绿色。colorLabels(groundPtsIdx (:)) = greenIdx;地图颜色非接地点为红色。colorLabels(~groundPtsIdx (:)) = redIdx;画出结果。视图(球员,ptCloud.Location colorLabels)结束

{

输入参数

全部折叠

点云,指定为pointCloud对象。ptCloud是一个有组织的点云,它存储[xyz的点坐标——- - - - - -N3矩阵。

名称-值参数

例子:ElevationAngleDelta = 5将仰角阈值设置为5度。

识别接地点的仰角差阈值,指定为非负标量。该函数计算一个标记接地点与其相邻4个连接点之间的仰角差。如果差值低于阈值,则邻居点标记为地。典型值ElevationAngleDelta都在[5,15]度的范围内。增加该值,以包含来自不平坦地面的更多点。

初始仰角阈值,用于识别扫描线中最靠近激光雷达传感器的接地点,指定为非负标量。当仰角低于此值时,该函数将点标记为地。典型值InitialElevationAngle都在15到30度之间。

输出参数

全部折叠

接地点索引,返回为——- - - - - -N逻辑矩阵。元素与真正的值,1,表示接地点。元素与值,0,表示非接地点。

参考文献

[1] Bogoslavskyi, I.“稀疏三维激光扫描的高效在线分割”。摄影测量、遥感与地球信息科学杂志.2017年第1期第85卷第41-52页。

扩展功能

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

版本历史

介绍了R2018b

Baidu
map