(2)nuScenes数据集及点云可视化

nuScenes数据集介绍与点云可视化

1. nuScenes数据集

在这里插入图片描述

nuScenes 数据集是一种用于自动驾驶研究的大规模开放式数据集,其中包含了从多个传感器收集的高清三维激光雷达数据、高清摄像头数据、GPS 和 IMU 数据以及其它传感器等多种数据类型,总数据量达到了超过 1000 小时的行驶数据。各个传感器在车辆的具体位置可参考上图
nuScenes 数据集由 nuTonomy 公司于 2019 年发布,后被 Aptiv 收购并维护。数据集中包含了超过 1000 个行驶场景,每个场景长度约为 20 秒,包括了各种驾驶情况,如城市、高速公路和居住区等场景
nuScenes 数据集中的传感器数据可以用于多种自动驾驶研究任务,如目标检测、语义分割、行为预测等。

nuScenes 官网nuScenes 官网

nuScenes 教程nuScenes 教程

nuScenes mini 数据集下载下载
在这里插入图片描述

2. nuScenes数据格式

例如:
在语言模型中,编码器和解码器都是由一个个的 Transformer 组件拼接在一起形成的。

1.maps
包含有关城市街道的地图数据,包括道路、车道、交叉口、建筑物和树木等信息
2.samples
包含有关车辆传感器数据的信息,如激光雷达、相机和毫米波雷达等一些样本数据
相机数据是以图片的格式存储的,LiDAR 数据是以二进制的格式存储的,Radar 数据则是以 PCD 的格式进行存储的
PCD 全称 Point Cloud Data,是一种用于存储三维点云数据的文件格式。每个 .pcd 文件包含了 x、y、z 的三维坐标以及反射强度等信息
后续点云数据的可视化是读取的 LiDAR_TOP 中的某一个二进制文件
3.sweeps
包含了一系列车辆传感器数据的信息
4.v1.0-mini
包含有关数据集中每个样本的元数据信息,如时间戳、旋转矩阵等。元数据以 JSON 格式存储
5.v1.0-mini.txt
说明文档

3. 点云可视化

其点云数据格式是一个二进制文件,其 shape 为 [n,5]

  • n 代表点云的数量
  • 5 分别代表 x、y、z、intensity、ring index
  • x、y、z 代表基于激光雷达的 3D 坐标
  • intensity 是反射强度,指的是激光接收器接受的反射次数,通常用于区分物体或地面
  • ring index:点所在激光雷达扫描线的编号,比如 32 线激光雷达,其值就为 1-32

3.1 opencv可视化

import numpy as np
import cv2

file = "/media/xx/workspace/workspace/nuScenes-mini/samples/LIDAR_TOP/n008-2018-08-01-15-16-36-0400__LIDAR_TOP__1533151605548192.pcd.bin"

# [x, y, z, intensity, ring index]
pc = np.frombuffer(open(file, "rb").read(), dtype=np.float32)
pc = pc.reshape(-1, 5)[:
要利用NuScenes工具实现点云可视化,可按以下步骤操作: ### 1. 安装必要的库 首先需要安装`nuscenes-devkit`以及其他依赖库,如`matplotlib`、`numpy`等。可以使用`pip`进行安装: ```bash pip install nuscenes-devkit matplotlib numpy ``` ### 2. 下载并准备数据集NuScenes官方网站下载数据集,并将其解压到合适的目录。 ### 3. 编写可视化代码 以下是一个简单的Python代码示例,用于利用NuScenes工具实现点云可视化: ```python from nuscenes.nuscenes import NuScenes import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 初始化NuScenes对象 nusc = NuScenes(version='v1.0-mini', dataroot='/path/to/your/nuscenes', verbose=True) # 选择一个样本 sample = nusc.sample[0] # 获取点云数据的token lidar_token = sample['data']['LIDAR_TOP'] lidar_data = nusc.get('sample_data', lidar_token) lidar_file = nusc.get_sample_data_path(lidar_token) # 读取点云数据 points = np.fromfile(lidar_file, dtype=np.float32).reshape(-1, 5)[:, :3] # 创建3D图形 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 绘制点云 ax.scatter(points[:, 0], points[:, 1], points[:, 2], s=1) # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 显示图形 plt.show() ``` 在上述代码中,首先初始化了`NuScenes`对象,然后选择一个样本,获取其点云数据的文件路径,读取点云数据并使用`matplotlib`进行可视化。 ### 4. 代码解释 - `nusc = NuScenes(version='v1.0-mini', dataroot='/path/to/your/nuscenes', verbose=True)`:初始化`NuScenes`对象,指定数据集版本和数据根目录。 - `sample = nusc.sample[0]`:选择一个样本。 - `lidar_token = sample['data']['LIDAR_TOP']`:获取点云数据的token。 - `points = np.fromfile(lidar_file, dtype=np.float32).reshape(-1, 5)[:, :3]`:读取点云数据并提取前三个维度(X, Y, Z)。 - `ax.scatter(points[:, 0], points[:, 1], points[:, 2], s=1)`:绘制点云。 ### 5. 注意事项 - 请将`/path/to/your/nuscenes`替换为你实际的数据集根目录。 - 如果使用的是完整版本的数据集,需要将`version`参数改为`v1.0-trainval`或`v1.0-test`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值