我正在致力于融合激光雷达和相机图像,以便使用CNN执行分类对象算法。
我想使用KITTI数据集,它提供同步的激光雷达和rgb图像数据。激光雷达是3D扫描仪,因此输出是3D点云。
我想使用来自点云的深度信息作为CNN的通道。但是我从来没有使用过点云,所以我需要一些帮助。将点云投影到相机图像平面(使用Kitti提供的投影矩阵)可以得到我想要的深度图吗?Python libray pcl有用吗?还是我应该转向c++库?
如果您有任何建议,请提前感谢!
发布于 2019-05-24 23:08:26
我不确定Kitti提供的投影矩阵包括什么,所以答案是视情况而定。如果此投影矩阵仅包含变换矩阵,则无法从它生成深度图。2D图像具有来自2D相机的失真,而点云通常没有失真,因此如果没有内部和外部参数,您无法将点云“精确”映射到rgb图像。
PCL不需要这样做。
深度贴图本质上是将深度值映射到rgb图像。您可以将点云中的每个点(滑块的每个激光)视为rgb图像的像素。因此,我认为你需要做的就是找到点云中的哪个点对应于rgb图像的第一个像素(左上角)。然后根据rgb图像分辨率从点云中读取深度值。
发布于 2021-06-11 05:22:33
你跟相机一点关系都没有。这一切都与点云数据有关。假设你有一千万个点,每个点都有x,y,z,单位为米。如果数据不是以米为单位的,请先转换它。然后你需要激光雷达的位置。当你逐个从所有的点中减去汽车的位置时,你将把激光雷达的位置取到(0,0,0)点,然后你就可以在一张白色图像上打印这个点。剩下的就是简单的数学,可能有很多方法可以做到。首先我想到的是:把rgb想象成二进制数。假设1厘米被缩放为1蓝色,256厘米变化等于1绿色变化,256×256厘米变化等于1红色变化。我们知道凸轮是(0,0,0),如果点的rgb是1,0,0,那么这意味着离相机有256x256x1+0x256+0x1=65536厘米的距离。这可以在C++中完成。如果存在空格,还可以使用插值和最近点算法来填充空白
https://stackoverflow.com/questions/56288806
复制相似问题