本仓库提供了一套完整的ROS数据预处理工具,用于处理和转换自动驾驶数据集。主要功能包括数据格式转换、单目深度估计、法向量估计以及平面检测。
rosbag_reader.py
模块用于从ROS包中提取和同步多相机图像数据与点云数据。支持6个环视相机的图像提取,并将点云数据转换为PLY格式保存。
- rosbag文件:包含多相机图像数据和点云数据的ROS包文件。
- 输出目录:用于存储提取后的图像和点云数据的目录路径。
-
图像数据:提取的多相机图像,按相机名称存储为PNG格式。输出目录结构如下:
-
点云数据:提取的点云数据,存储为PLY格式。
lidar_transform.py
模块用于将雷达点云数据从雷达坐标系转换到世界坐标系。
- 点云数据:原始雷达点云数据(PLY格式)。
- 位姿数据:雷达在世界坐标系下的位姿信息(3*4的RT矩阵,TXT格式)。
- 转换后的点云:世界坐标系下的点云数据(PLY格式)。
depth_estimator.py
模块使用Depth-Anything-V2模型对提取的图像进行单目深度估计。支持处理6个环视相机的图像,并输出深度图和可视化结果。
- 图像数据:从ROS包中提取的多相机图像(PNG格式)。
- 深度图数据:估计的深度图,按相机名称存储为NPZ格式。
normal_estimator.py
模块使用StableNormal模型对提取的图像进行法向量估计。支持处理6个环视相机的图像,并输出法向量图和可视化结果。
- 图像数据:从ROS包中提取的多相机图像(PNG格式)。
- 法向量数据:估计的法向量图,按相机名称存储为PNG格式。
semantic_estimator.py
模块使用DINOv2模型对图像进行语义分割。支持处理6个环视相机的图像,并输出分割结果和可视化图像。
- 图像数据:从ROS包中提取的多相机图像(PNG格式)。
- ego_masks:手动标注的自车mask。
- 分割数据:语义分割结果,存储为NPZ格式。
- 可视化结果:(可选)分割结果的可视化图像。
plane_detector.py
模块用于检测和生成场景中的平面。该模块结合深度图、法向量和语义分割信息,通过区域生长的方式检测平面区域。
- 深度图:从Depth-Anything-V2生成的深度图(NPZ格式)
- 法向量:从StableNormal生成的法向量图(NPZ格式)
- 语义分割:从DINOv2生成的语义分割结果(NPZ格式)
- 平面检测结果:检测到的平面参数和分割结果,存储为NPZ格式,包含:
planes
:平面参数数组 [N, 4],每行为[nx, ny, nz, d]表示平面方程 nxx + nyy + nz*z + d = 0segments
:平面分割结果 [H, W],像素值表示对应的平面ID
- 可视化结果:(可选)平面检测的可视化图像,不同颜色表示不同平面
- images/
- pointcloud/
- depths/
- normals/
- semantic/
- lidar_world/
- planes/
待完成输出:
- planes/ # 平面检测结果