File size: 2,443 Bytes
d2410ba |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
import os
import shutil
import numpy as np
import scipy.io as sio
import torch
def load_S3DIS_sample(text_path, sample=False):
data = np.loadtxt(text_path)
point, color = data[:, :3], data[:, 3:]
point = point - point.min(axis=0)
point = point / point.max(axis=0)
color = color / 255.
return point, color
def load_ScanNet_sample(data_path):
all_data = torch.load(data_path)
point = np.array(all_data['coord'])
color = np.array(all_data['color'])
point = point - point.min(axis=0)
point = point / point.max(axis=0)
color = color / 255.
return point, color
def load_KITTI_sample(data_path, close=False):
all_data = np.load(data_path)
point = all_data[:, :3]
color = all_data[:, 3:6]
pmin = point.min(axis=0)
point = point - pmin
pmax = point.max(axis=0)
point = point / pmax
# if close:
# x_min, x_max = 0.3, 0.7
# y_min, y_max = 0.3, 0.8
# filter_mask = (point[:, 0] > x_min) & (point[:, 0] < x_max) & (point[:, 1] > y_min) & (point[:, 1] < y_max)
# point = point[filter_mask]
# color = color[filter_mask]
# pmin = point.min(axis=0)
# point = point - pmin
# pmax = point.max(axis=0)
# point = point / pmax
return point, color
def load_Objaverse_sample(data_path):
all_data = np.load(data_path)
point = all_data[:, :3]
color = all_data[:, 3:6]
pmin = point.min(axis=0)
point = point - pmin
pmax = point.max(axis=0)
point = point / pmax
return point, color
def load_Semantic3D_sample(data_path, id, sample=False):
all_data = np.load(data_path)
point = all_data[:, :3]
color = all_data[:, 3:6]
pmin = point.min(axis=0)
point = point - pmin
pmax = point.max(axis=0)
point = point / pmax
if id > 1: return point, color
if id == 0:
filter_mask = (point[:, 0] > 0.4) & (point[:, 1] > 0.4) & (point[:, 2] < 0.4)
else:
filter_mask = (point[:, 0] > 0.4) & (point[:, 1] < 0.5)
point = point[filter_mask]
color = color[filter_mask]
pmin = point.min(axis=0)
point = point - pmin
pmax = point.max(axis=0)
point = point / pmax
# if sample: #for demo
# indices = np.random.choice(point.shape[0], 600000, replace=False)
# point = point[indices]
# color = color[indices]
return point, color |