Segmatic KITTI数据集简单使用

数据集的详细介绍发表在2019年的ICCV。论文地址
这个数据集有80G.下载地址Segmati KITTI
总共有28个类。每个点都被注释。数据文件夹结构
Segmatic KITTI数据集简单使用_第1张图片
存储点云数据的.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))

Segmatic KITTI数据集简单使用_第2张图片
我把里面的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")

结果如下图所示:
Segmatic KITTI数据集简单使用_第3张图片
结束。以后差什么,遇到问题时候再接着补这部分吧,不然遇到一个小问题都要全部去学,太花时间了。

你可能感兴趣的:(pcl)