global_and_partial_global: all
This commit is contained in:
30
utils/pts.py
30
utils/pts.py
@@ -14,16 +14,38 @@ class PtsUtil:
|
||||
downsampled_points = point_cloud[idx_unique]
|
||||
return downsampled_points, idx_unique
|
||||
else:
|
||||
unique_voxels = np.unique(voxel_indices, axis=0, return_inverse=True)
|
||||
return unique_voxels[0]*voxel_size
|
||||
import ipdb; ipdb.set_trace()
|
||||
unique_voxels = np.unique(voxel_indices, axis=0, return_inverse=False)
|
||||
return unique_voxels*voxel_size
|
||||
|
||||
@staticmethod
|
||||
def voxel_downsample_point_cloud_o3d(point_cloud, voxel_size=0.005):
|
||||
pcd = o3d.geometry.PointCloud()
|
||||
pcd.points = o3d.utility.Vector3dVector(point_cloud)
|
||||
pcd = pcd.voxel_down_sample(voxel_size)
|
||||
return np.asarray(pcd.points)
|
||||
|
||||
@staticmethod
|
||||
def random_downsample_point_cloud(point_cloud, num_points, require_idx=False):
|
||||
def voxel_downsample_point_cloud_and_trace_o3d(point_cloud, voxel_size=0.005):
|
||||
pcd = o3d.geometry.PointCloud()
|
||||
pcd.points = o3d.utility.Vector3dVector(point_cloud)
|
||||
max_bound = pcd.get_max_bound()
|
||||
min_bound = pcd.get_min_bound()
|
||||
pcd = pcd.voxel_down_sample_and_trace(voxel_size, max_bound, min_bound, True)
|
||||
|
||||
return np.asarray(pcd.points)
|
||||
|
||||
@staticmethod
|
||||
def random_downsample_point_cloud(point_cloud, num_points, require_idx=False, replace=True):
|
||||
if point_cloud.shape[0] == 0:
|
||||
if require_idx:
|
||||
return point_cloud, np.array([])
|
||||
return point_cloud
|
||||
idx = np.random.choice(len(point_cloud), num_points, replace=True)
|
||||
if not replace and num_points > len(point_cloud):
|
||||
if require_idx:
|
||||
return point_cloud, np.arange(len(point_cloud))
|
||||
return point_cloud
|
||||
idx = np.random.choice(len(point_cloud), num_points, replace=replace)
|
||||
if require_idx:
|
||||
return point_cloud[idx], idx
|
||||
return point_cloud[idx]
|
||||
|
Reference in New Issue
Block a user