数据集的详细介绍发表在2019年的ICCV。论文地址
这个数据集有80G.下载地址Segmati KITTI
总共有28个类。每个点都被注释。数据文件夹结构
存储点云数据的.bin文件跟存储标签的.label数据,
.bin文件中存储着每个点,以激光雷达为原点的x,y,z,i信息,其中i是强度。把数据提取出来也很简单。用numpy库。提取出来就是一个n行4列的矩阵。
points = np.fromfile(".bin文件路径", dtype=np.float32).reshape(-1, 4)
接下来就是.label文件,这个文件着实麻烦,不知道里面的各种表示什么。在KITTI API的github中能找到,网址。
里面东西也挺多的,主要就看.label那部分。在remap_semantic_labels.py文件中。终于知道,label中每个值表示什么了。在config目录下的semantic-kitti.yaml文件中。
label = np.fromfile(".label文件路径", dtype=np.uint32)
label = label.reshape((-1))
我把里面的road,parking,sidewalk,othher-ground这几个类认为是地面,用红色点表示,其他非地面点用绿色表示,看看效果。
import open3d as o3d
import numpy as np
points = np.fromfile("D:\\randlanet\\data\\semantic-kitti\\dataset\\sequences\\00\\velodyne\\000000.bin", dtype=np.float32).reshape(-1, 4)
label = np.fromfile("D:\\randlanet\\data\\semantic-kitti\\dataset\\sequences\\00\\labels\\000000.label", dtype=np.uint32).reshape((-1))
clouds=points[:,:3]
colors=np.zeros([len(label),3])
for cla in range(len(label)):
#print(label[cla])
if label[cla] == 40 or label[cla] == 44 or label[cla] == 48 or label[cla] == 49:
colors[cla][0]=1
colors[cla][1]=0
colors[cla][2]=0
else:
colors[cla][0]=0
colors[cla][1]=1
colors[cla][2]=0
test_pcd = o3d.geometry.PointCloud()
test_pcd.points = o3d.utility.Vector3dVector(clouds)
test_pcd.colors = o3d.utility.Vector3dVector(colors)
o3d.visualization.draw_geometries([test_pcd], window_name="Open3D2")
结果如下图所示:
结束。以后差什么,遇到问题时候再接着补这部分吧,不然遇到一个小问题都要全部去学,太花时间了。