主要内容

无组织的组织转换使用球面投影点云

这个例子展示了如何将无组织的使用球面投影点云组织格式。

介绍

三维激光雷达点云通常表示为一组笛卡尔坐标(x, y, z)。点云还包含额外的信息,如强度,和RGB值。与图像像素的分布不同,激光雷达点云通常是稀疏的分布和不规则的。处理稀疏数据是低效的。获得一个紧凑的表示,激光雷达点云投射到一个球体创建一个密集的,基于网格的被称为一个有组织的形式(1]。想要了解更多关于有组织和无组织的点云之间的差异,看到的有组织的和无组织的点云是什么?。地平面提取和关键点检测器方法需要组织点云。此外,你必须把你的点云组织格式如果你想使用最深度学习分割网络,包括SqueezeSegV1 SqueezeSegV2 RangeNet + + (2],SalsaNext [3]。一个例子,演示如何使用深度学习与有组织的点云激光雷达点云的语义分割使用SqueezeSegV2深度学习网络的例子。

激光雷达传感器参数

将一个散乱点云组织格式使用球面投影,您必须指定的参数激光雷达传感器用于创建点云。参考数据表传感器更多地了解传感器的参数。您可以指定以下参数。

  • 梁配置- - - - - -统一的”或“梯度”。指定的统一的如果梁间距平等。指定的梯度如果梁在地平线是紧密的,和那些对传感器的顶部和底部的视野更飘飘然的。

  • 垂直分辨率- - - - - -渠道的垂直方向的,也就是说,激光的数量。典型值是32,64。

  • 垂直的光束角- - - - - -角位置的垂直通道。您必须指定该参数当梁配置梯度”。

  • 向上垂直的视野- - - - - -在垂直方向的视野在地平线(度)。

  • 向下的垂直的视野- - - - - -在垂直方向的视野地平线以下(度)。

  • 水平分辨率- - - - - -水平方向的通道数量。典型值是512和1024。

  • 水平角分辨率- - - - - -每个通道沿水平方向之间的角分辨率。水平分辨率时必须指定这个参数不是数据表中提到的。

  • 水平的视野- - - - - -在水平方向的视野覆盖(度)。在大多数情况下,这个值是360度。

您可以指定最上面的传感器参数使用lidarParameters对象

下台OS-1传感器

读点云使用pcread函数。

文件名= fullfile (matlabroot,“例子”,“deeplearning_shared”,“数据”,“ousterLidarDrivingData.pcd”);ptCloud = pcread(文件名);

检查样本点云的大小。如果点云坐标形式,——- - - - - -N3,这是一个有组织的点云。

isOrganized =大小(ptCloud.Location, 3) = = 3;

删除无效的点和点云转换为无组织的格式使用removeInvalidPoints函数。

如果isOrganized ptCloudUnOrg = removeInvalidPoints (ptCloud);结束

点云数据收集从一个下台OS1 Gen1传感器。指定传感器参数使用lidarParameters函数。

hResolution = 1024;params = lidarParameters (“os1gen1 - 64”,hResolution);

散乱点云转换成组织格式使用pcorganize函数。

ptCloudUnOrg ptCloudOrg = pcorganize (params);

显示通道的原始强度和组织重建的点云。

图蒙太奇({uint8 (ptCloud.Intensity) uint8 (ptCloudOrg.Intensity)});标题(“强度通道的原始点云(上)与重建组织点云”(底部))

图包含一个坐标轴对象。标题强度通道的坐标轴对象原始点云(上)与重建组织点云(底部)包含一个类型的对象的形象。

显示原始点云组织和重构组织使用的点云helperShowUnorgAndOrgPair辅助功能,附加到这个例子作为支持文件。金宝app

display1 = helperShowUnorgAndOrgPair ();zoomFactor = 3.5;display1.plotLidarScan (ptCloud ptCloudOrg, zoomFactor);

图显示原始组织,重建组织点云包含uipanel类型的对象。

调速发电机传感器

读点云使用pcread函数。

ptCloudUnOrg = pcread (“HDL64LidarData.pcd”);

点云数据收集的调速发电机hdl - 64传感器。指定传感器参数使用lidarParameters函数。

hResolution = 1024;params = lidarParameters (“HDL64E”,hResolution);

散乱点云转换成组织格式使用pcorganize函数。

ptCloudUnOrg ptCloudOrg = pcorganize (params);

显示的强度通道重建组织的点云。调整图像更好的可视化。

intensityChannel = ptCloudOrg.Intensity;intensityChannel = imresize (intensityChannel,“规模”1 [3]);图imshow (intensityChannel);

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

显示原始点云组织和重构组织使用的点云helperShowUnorgAndOrgPair辅助功能,附加到这个例子作为支持文件。金宝app

display2 = helperShowUnorgAndOrgPair ();zoomFactor = 2.5;display2.plotLidarScan (ptCloudUnOrg, ptCloudOrg, zoomFactor);

图显示原始组织,重建组织点云包含uipanel类型的对象。

配置传感器参数

对于任何给定的点云,您可以指定传感器参数,如垂直和水平分辨率,垂直和水平视场转换时组织格式。

读点云使用pcread函数。

ptCloudUnOrg = pcread (“HDL64LidarData.pcd”);

点云数据收集的调速发电机hdl - 64传感器。您可以配置传感器通过指定不同的参数。

%定义垂直和水平分辨率。vResolution = 32;hResolution = 512;%定义垂直和水平视场。vFoVUp = 2;vFoVDown = -24.9;vFoV = [vFoVUp vFoVDown];hFoV = 270;

指定传感器参数使用lidarParameters函数。

params = lidarParameters (vResolution vFoV hResolution,“HorizontalFoV”,hFoV);

散乱点云转换成组织格式使用pcorganize函数。

ptCloudUnOrg ptCloudOrg = pcorganize (params);

显示的强度通道重建组织的点云。调整图像更好的可视化。

intensityChannel = ptCloudOrg.Intensity;intensityChannel = imresize (intensityChannel,“规模”1 [3]);图imshow (intensityChannel);

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

显示原始点云组织和重构组织使用的点云helperShowUnorgAndOrgPair辅助功能,附加到这个例子作为支持文件。金宝app

display3 = helperShowUnorgAndOrgPair ();display3.plotLidarScan (ptCloudUnOrg, ptCloudOrg, zoomFactor);

图显示原始组织,重建组织点云包含uipanel类型的对象。

Pandar传感器

读点云使用pcread函数。

ptCloudUnOrg = pcread (“Pandar64LidarData.pcd”);

点云数据收集使用pandar - 64传感器(4]。您可以指定以下参数,使用设备数据表中提供的信息(5]。

vResolution = 64;hAngResolution = 0.2;

梁配置的梯度”,这意味着梁间距不均匀。沿着垂直方向指定光束角的值。

vbeamAngles = [15.0000 11.0000 8.0000 5.0000 3.0000 2.0000 1.8333 1.6667 1.5000 1.3333 1.1667 1.0000 0.8333 0.66670 0.5000 0.3333 0.1667 -0.1667 -0.3333 -0.5000 -0.6667 -0.8333 -1.0000 -1.1667 -1.3333 -1.5000 -1.6667-1.8333 -2.0000 -2.1667 -2.3333 -2.5000 -2.6667 -2.8333 -3.0000 -3.1667 -3.3333 -3.5000 -3.6667 -3.8333 -4.0000-4.1667 -4.3333 -4.5000 -4.6667 -4.8333 -5.0000 -5.1667 -5.3333 -5.5000 -5.6667 -5.8333 -6.0000 -7.0000 -8.0000-9.0000 -10.0000 -11.0000 -12.0000 -13.0000 - -14.0000 -19.0000 - -25.0000);

计算水平分辨率。

hResolution =圆(360 / hAngResolution);

定义传感器参数使用lidarParameters函数。

params = lidarParameters (vbeamAngles hResolution);

散乱点云转换成组织格式使用pcorganize函数。

ptCloudUnOrg ptCloudOrg = pcorganize (params);

显示的强度通道重建组织的点云。调整图像和使用histeq为了更好的可视化。

intensityChannel = ptCloudOrg.Intensity;intensityChannel = imresize (intensityChannel,“规模”1 [3]);图histeq (intensityChannel. / max (intensityChannel (:)));

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

显示原始点云组织和重构组织使用的点云helperShowUnorgAndOrgPair辅助功能,附加到这个例子作为支持文件。金宝app

display4 = helperShowUnorgAndOrgPair ();zoomFactor = 4;display4.plotLidarScan (ptCloudUnOrg, ptCloudOrg, zoomFactor);

图显示原始组织,重建组织点云包含uipanel类型的对象。

引用

[1],Bichen, Alvin Wan,翔宇悦,库尔特·Keutzer。“SqueezeSeg:卷积神经网络与复发CRF实时Road-Object从3 d激光雷达点云分割。”In 2018IEEE机器人与自动化国际会议上)举行(“国际机器人与自动化会议”,1887 - 93。布里斯班昆士兰:IEEE 2018。https://doi.org/10.1109/ICRA.2018.8462926

[2]Milioto,安德烈斯,Ignacio Vizzo, Jens Behley Cyrill Stachniss。“RangeNet + +:快速、准确的激光雷达的语义分割。”In 2019IEEE / RSJ智能机器人和系统国际会议(——),4213 - 20所示。中国澳门:IEEE 2019。https://doi.org/10.1109/IROS40897.2019.8967762

[3]Cortinhal、蒂亚戈和乔治•Tzelepis Eren Erdal Aksoy。“SalsaNext:快,Uncertainty-Aware语义分割的激光雷达点云自动驾驶。”ArXiv: 2003.03653 (Cs),2020年7月9日。http://arxiv.org/abs/2003.03653

[4]“PandaSet打开数据集规模。”Accessed December 22, 2020.https://scale.com/open-datasets/pandaset

[5]“Pandar64用户手册”。Accessed December 22, 2020.https://hesaiweb2019.blob.core.chinacloudapi.cn/uploads/Pandar64_User 's_Manual.pdf