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 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 return point, color