(pcd, mask_valid, voxel_size=0.01, num_points=100000)
| 30 | return pcd, ~mask_invalid |
| 31 | |
| 32 | def pcd_to_sparsetensor(pcd, mask_valid, voxel_size=0.01, num_points=100000): |
| 33 | pcd_valid = pcd[mask_valid] |
| 34 | block_ = pcd_valid |
| 35 | block = np.zeros_like(block_) |
| 36 | block[:, :3] = block_[:, :3] |
| 37 | |
| 38 | pc_ = np.round(block_[:, :3] / voxel_size) |
| 39 | pc_ -= pc_.min(0, keepdims=1) |
| 40 | feat_ = block |
| 41 | |
| 42 | # transfer point cloud to voxels |
| 43 | inds = sparse_quantize(pc_, |
| 44 | feat_, |
| 45 | return_index=True, |
| 46 | return_invs=False) |
| 47 | if len(inds) > num_points: |
| 48 | inds = np.random.choice(inds, num_points, replace=False) |
| 49 | |
| 50 | pc = pc_[inds] |
| 51 | feat = feat_[inds] |
| 52 | lidar = SparseTensor(feat, pc) |
| 53 | feed_dict = [{'lidar': lidar}] |
| 54 | inputs = sparse_collate_fn(feed_dict) |
| 55 | return inputs |
| 56 | |
| 57 | def pcd_uv_to_sparsetensor(pcd, u_u0, v_v0, mask_valid, f= 500.0, voxel_size=0.01, mask_side=None, num_points=100000): |
| 58 | if mask_side is not None: |
no outgoing calls
no test coverage detected