Python 稀疏二维激光雷达图像到密集深度图像的修复

Python 稀疏二维激光雷达图像到密集深度图像的修复,python,image-processing,point-clouds,depth,lidar,Python,Image Processing,Point Clouds,Depth,Lidar,我正在研究自动驾驶汽车的分类问题。我使用来自KITTI的数据集,该数据集提供激光雷达和相机数据,并希望使用这两种数据来执行任务 三维激光雷达数据投影到RGB图像的坐标系上,从而生成稀疏激光雷达图像: 使用到点的深度距离对每个像素进行编码:sqrtX²+Y²,比例在0到255之间 为了给我的CNN获得更好的效果,我需要一张密集的激光雷达图像,有人知道如何使用Python吗 我想得到这样的东西 我以前从未使用过点云数据/激光雷达,但由于还没有人回答,我将尽我最大的努力。我不确定修复方法是否可行,尽管

我正在研究自动驾驶汽车的分类问题。我使用来自KITTI的数据集,该数据集提供激光雷达和相机数据,并希望使用这两种数据来执行任务

三维激光雷达数据投影到RGB图像的坐标系上,从而生成稀疏激光雷达图像:

使用到点的深度距离对每个像素进行编码:sqrtX²+Y²,比例在0到255之间

为了给我的CNN获得更好的效果,我需要一张密集的激光雷达图像,有人知道如何使用Python吗

我想得到这样的东西


我以前从未使用过点云数据/激光雷达,但由于还没有人回答,我将尽我最大的努力。我不确定修复方法是否可行,尽管我认为它们可能不会很好地工作,除非是一种变分方法,我认为这种方法相当慢。但是,如果您的目标是将3D激光雷达读数与环形ID和激光强度读数一起投影到密集的2D矩阵中,以便在CNN中使用,那么以下参考可能会证明是有用的。此外,在本文中,他们参考了以前的工作,其中更详细地介绍了极坐标分块技术。看看这些论文,我会尝试在这里总结一下技巧:

基于极坐标分块的稀疏三维数据编码 -第三节介绍了它的预处理技术。将稀疏的3D数据编码为密集的2D矩阵。

1让P表示原始点云,M表示希望输出的多通道密集矩阵。M的大小取决于扫描中使用的激光束数量和扫描仪的水平角分辨率。 2将点云数据聚合到极坐标箱br、c中,其中r表示环id,c=floorR*atanx/z+180/360。 3使用以下映射将料仓br,c映射到矩阵M,mr,c中的相应值,其中p^i是激光强度读数: 4在空箱子的情况下,从其邻域线性插值mr,c的值。 提高稀疏映射的性能 最后,看看下面的文章,他们介绍了在CNN中使用稀疏Velodyne读数的一些技术。也许看看这些能不能提高你的表现

-在第三节A数据准备中描述了它的预处理技术

将范围数据编码为2通道图像

1初始化2信道矩阵I;用零填充 2给定坐标x,y,z,设θ=atan2y,x,设φ=arcinz/sqrtx^2+y^2+z^2 3让δθ和δφ分别等于连续光束发射器之间的平均水平和垂直分辨率。 4设r=地板高度/δθ;设c=地板面积/δφ 5设d=sqrtx^2+y^2 6设Ir,c=d,z;如果投影到同一位置的两个点很少,请使其中一个点更靠近观察者 不等上/下采样

在第一个卷积层,作者在水平方向上减少了4个样本,在垂直方向上减少了2个样本;这是因为对于Velodyne点贴图,水平层中的点更密集。他们在最终的反褶积层中利用相同的因素进行采样,同时预测车辆的“目标性”及其边界框。
所有技术都是针对KITTI数据集/Velodyne激光雷达实现的,因此我认为它们可能会对您的特定用例进行一些修改

我以前从未使用过点云数据/激光雷达,但由于还没有人回答,我将尽我最大的努力。我不确定修复方法是否可行,尽管我认为它们可能不会很好地工作,除非是一种变分方法,我认为这种方法相当慢。但是,如果您的目标是将3D激光雷达读数与环形ID和激光强度读数一起投影到密集的2D矩阵中,以便在CNN中使用,那么以下参考可能会证明是有用的。此外,在本文中,他们参考了以前的工作,其中更详细地介绍了极坐标分块技术。看看这些论文,我会尝试在这里总结一下技巧:

基于极坐标分块的稀疏三维数据编码 -第三节介绍了它的预处理技术。将稀疏的3D数据编码为密集的2D矩阵。

1让P表示原始点云,M表示希望输出的多通道密集矩阵。M的大小取决于扫描中使用的激光束数量和扫描仪的水平角分辨率。 2将点云数据聚合到极坐标箱br、c中,其中r表示环id,c=floorR*atanx/z+180/360。 3使用以下映射将料仓br,c映射到矩阵M,mr,c中的相应值,其中p^i是激光强度读数: 4在空箱子的情况下,从其邻域线性插值mr,c的值。 提高稀疏映射的性能 最后,看看下面的文章,他们介绍了一些使用sp的技术 美国有线电视新闻网的阿瑟·维洛丹读数。也许看看这些能不能提高你的表现

-在第三节A数据准备中描述了它的预处理技术

将范围数据编码为2通道图像

1初始化2信道矩阵I;用零填充 2给定坐标x,y,z,设θ=atan2y,x,设φ=arcinz/sqrtx^2+y^2+z^2 3让δθ和δφ分别等于连续光束发射器之间的平均水平和垂直分辨率。 4设r=地板高度/δθ;设c=地板面积/δφ 5设d=sqrtx^2+y^2 6设Ir,c=d,z;如果投影到同一位置的两个点很少,请使其中一个点更靠近观察者 不等上/下采样

在第一个卷积层,作者在水平方向上减少了4个样本,在垂直方向上减少了2个样本;这是因为对于Velodyne点贴图,水平层中的点更密集。他们在最终的反褶积层中利用相同的因素进行采样,同时预测车辆的“目标性”及其边界框。
所有技术都是针对KITTI数据集/Velodyne激光雷达实现的,因此我认为它们可能会对您的特定用例进行一些修改

非常感谢你的帮助。对于第一个技术,我不知道,所以我要看看它。对于第二种技术,我已经看到并找到了一个实现这一点的python代码:但这是一个360度全景视图,我不想要它。由于kitti数据集的标签位于图像坐标中,因此最好具有与rgb图像相同的图像大小。对于第二种技术,2通道矩阵I的大小应该是多少?另一件要尝试的事情-也许只需在原始平面投影上进行最近邻插值,看看这是否会改善结果。我基于这种极坐标分块编写了一个代码库。很好用,非常感谢你的帮助。对于第一个技术,我不知道,所以我要看看它。对于第二种技术,我已经看到并找到了一个实现这一点的python代码:但这是一个360度全景视图,我不想要它。由于kitti数据集的标签位于图像坐标中,因此最好具有与rgb图像相同的图像大小。对于第二种技术,2通道矩阵I的大小应该是多少?另一件要尝试的事情-也许只需在原始平面投影上进行最近邻插值,看看这是否会改善结果。我基于这种极坐标分块编写了一个代码库。它工作得很好