コード例 #1
0
def process_sample_data(nuscenes, map_data, sample_data, lidar, config):

    # Render static road geometry masks
    map_masks = nusc_utils.get_map_masks(nuscenes, map_data, sample_data,
                                         config.map_extents,
                                         config.map_resolution)

    # Render dynamic object masks
    obj_masks = nusc_utils.get_object_masks(nuscenes, sample_data,
                                            config.map_extents,
                                            config.map_resolution)
    masks = np.concatenate([map_masks, obj_masks], axis=0)

    # Ignore regions of the BEV which are outside the image
    sensor = nuscenes.get('calibrated_sensor',
                          sample_data['calibrated_sensor_token'])
    intrinsics = np.array(sensor['camera_intrinsic'])
    masks[-1] |= ~get_visible_mask(intrinsics, sample_data['width'],
                                   config.map_extents, config.map_resolution)

    # Transform lidar points into camera coordinates
    cam_transform = nusc_utils.get_sensor_transform(nuscenes, sample_data)
    cam_points = transform(np.linalg.inv(cam_transform), lidar)
    masks[-1] |= get_occlusion_mask(cam_points, config.map_extents,
                                    config.map_resolution)

    # Encode masks as integer bitmask
    labels = encode_binary_labels(masks)

    # Save outputs to disk
    output_path = os.path.join(os.path.expandvars(config.label_root),
                               sample_data['token'] + '.png')
    Image.fromarray(labels.astype(np.int32), mode='I').save(output_path)
コード例 #2
0
def process_sample(nuscenes, map_data, sample, config):

    # Load the lidar point cloud associated with this sample
    lidar_data = nuscenes.get('sample_data', sample['data']['LIDAR_TOP'])
    lidar_pcl = nusc_utils.load_point_cloud(nuscenes, lidar_data)

    # Transform points into world coordinate system
    lidar_transform = nusc_utils.get_sensor_transform(nuscenes, lidar_data)
    lidar_pcl = transform(lidar_transform, lidar_pcl)

    # Iterate over sample data
    for camera in nusc_utils.CAMERA_NAMES:
        sample_data = nuscenes.get('sample_data', sample['data'][camera])
        process_sample_data(nuscenes, map_data, sample_data, lidar_pcl, config)