Skip to content
Snippets Groups Projects
Commit e03b4b09 authored by Guillaume Duret's avatar Guillaume Duret
Browse files

add diameter

parent 9c5d61ba
No related branches found
No related tags found
No related merge requests found
...@@ -6,18 +6,20 @@ from prepare_data import reform_data ...@@ -6,18 +6,20 @@ from prepare_data import reform_data
#from bbox_2d import generate_2d_bbox #from bbox_2d import generate_2d_bbox
#from instance_mask import generate_instance_mask #from instance_mask import generate_instance_mask
from fps_alg import apply_fps from fps_alg import apply_fps
from bbox_3d import generate_3d_bbox from bbox_3d import get_3D_bbox
from compute_features import process_compute from compute_features import process_compute
from utils import compute_categories_id, compute_id_good_occ
import shutil import shutil
import open3d as o3d import open3d as o3d
# Import the library # Import the library
import argparse import argparse
from scipy.spatial import distance
def generate_folders(name, list_categories): def generate_folders(name, list_categories):
is_exist = os.path.exists(name) is_exist = os.path.exists(name)
if not is_exist: if not is_exist:
os.mkdir(name) os.mkdir(name)
folders = ["RGB", "RGB_Gen", "RGB_resized", "Meta_Gen", "Depth", "Mask", "Meta", "Pose", "Bbox_2d", "Bbox_2d_loose", "Instance_Segmentation", "Semantic_Segmentation", "Instance_Mask", "Instance_Mask_resized", "Occlusion", "Models", "Pose_transformed", "Bbox", "FPS", "FPS_resized"] folders = ["RGB", "RGB_Gen", "RGB_resized", "Meta_Gen", "Depth", "Mask", "Meta", "Pose", "Bbox_2d", "Bbox_2d_loose", "Bbox_3d", "Instance_Segmentation", "Semantic_Segmentation", "Instance_Mask", "Instance_Mask_resized", "Occlusion", "Models", "Pose_transformed", "Bbox", "FPS", "FPS_resized"]
for f in folders: for f in folders:
is_exist = os.path.exists(f"{name}/{f}") is_exist = os.path.exists(f"{name}/{f}")
if not is_exist: if not is_exist:
...@@ -29,6 +31,22 @@ def generate_folders(name, list_categories): ...@@ -29,6 +31,22 @@ def generate_folders(name, list_categories):
if not is_exist2: if not is_exist2:
os.makedirs(f"{name}/Generated/{cat}/{f}") os.makedirs(f"{name}/Generated/{cat}/{f}")
def calc_pts_diameter2(pts):
"""Calculates the diameter of a set of 3D points (i.e. the maximum distance
between any two points in the set). Faster but requires more memory than
calc_pts_diameter.
:param pts: nx3 ndarray with 3D points.
:return: The calculated diameter.
"""
dists = distance.cdist(pts, pts, 'euclidean')
diameter = np.max(dists)
return diameter
if __name__ == '__main__': if __name__ == '__main__':
# Create the parser # Create the parser
...@@ -58,22 +76,10 @@ if __name__ == '__main__': ...@@ -58,22 +76,10 @@ if __name__ == '__main__':
#Nb_world = 2 #Nb_world = 2
generate_folders(dataset_name, list_categories) generate_folders(dataset_name, list_categories)
for cat in list_categories: # for cat in list_categories:
src_bbox = f"Models/{cat}/{cat.lower()}.ply" # src_bbox = f"Models/{cat}/{cat.lower()}.ply"
dst_bbox = f"{dataset_name}/Generated/{cat}/{cat.lower()}.ply" # dst_bbox = f"{dataset_name}/Generated/{cat}/{cat.lower()}.ply"
shutil.copy(src_bbox, dst_bbox) # shutil.copy(src_bbox, dst_bbox)
for categories in list_categories:
point_cloud = f'{dataset_name}/Generated/{categories}/{categories.lower()}.ply'
pcd = o3d.io.read_point_cloud(point_cloud)
#print("pcd", pcd)
fps_points = apply_fps(pcd, 8)
#print(fps_points)
np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_fps_3d.txt', fps_points)
...@@ -98,6 +104,45 @@ if __name__ == '__main__': ...@@ -98,6 +104,45 @@ if __name__ == '__main__':
reform_data(dataset_src, dataset_name, dataset_type, Nb_camera, args.World_begin, args.Nb_worlds) reform_data(dataset_src, dataset_name, dataset_type, Nb_camera, args.World_begin, args.Nb_worlds)
for categories in list_categories:
point_cloud = f"Models/{categories}/{categories.lower()}.ply"
pcd = o3d.io.read_point_cloud(point_cloud)
#print("pcd", pcd)
fps_points = apply_fps(pcd, 8)
#print(fps_points)
np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_fps_3d.txt', fps_points)
#point_cloud = f'/home/mahmoud/PycharmProjects/data/GUIMOD_low/Models/{obj}/{obj.lower()}.ply'
#pcd = o3d.io.read_point_cloud(point_cloud)
point_cloud_in_numpy = np.asarray(pcd.points)
dim = calc_pts_diameter2(point_cloud_in_numpy) * 100
print(dim)
np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_diameter.txt', np.array([dim]))
# catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, catergories_label_to_id = compute_categories_id(dataset_name, 1)
# print(f'{dataset_name}/Bbox_3d/1.json')
# with open(f"{dataset_name}/Bbox_3d/1.json", 'r') as f:
# data_Bbox_3d = json.load(f)
# catergories_occ_array = compute_id_good_occ(dataset_name, 1, catergories_instance_array_id_to_cat, catergories_instance_array_cat_to_id, 1)
# print(catergories_occ_array)
# for k in range(len(data_Bbox_3d)):
# if data_Bbox_3d[k]['id'] in catergories_occ_array[categories]:
# size_bb = data_Bbox_3d[k]["size"]
# ext = [x / 2 for x in size_bb]
# bbox = get_3D_bbox(ext)
# np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_bbox_3d.txt', bbox) # save
# break
process_compute(dataset_name, camera, new_camera, new_size, Nb_camera, args.World_begin, args.Nb_worlds, list_categories, occ_target, True) process_compute(dataset_name, camera, new_camera, new_size, Nb_camera, args.World_begin, args.Nb_worlds, list_categories, occ_target, True)
#transform_pose(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) #transform_pose(dataset_name, Nb_camera, Nb_world, list_categories, occ_target)
#generate_2d_bbox(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) #generate_2d_bbox(dataset_name, Nb_camera, Nb_world, list_categories, occ_target)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment