Spaces:
Running
on
Zero
Running
on
Zero
import os | |
from tqdm import tqdm | |
import point_cloud_utils as pcu | |
from utils import sample_pc | |
import argparse | |
# prepare augments | |
parser = argparse.ArgumentParser() | |
parser.add_argument('--input_dir', type=str) # directory of dense meshes | |
parser.add_argument('--output_dir', type=str) # directory of generated meshes | |
args = parser.parse_args() | |
def main(sample_dir, ref_dir, pc_num=1024): | |
print(sample_dir, ref_dir) | |
mesh_list = [name for name in os.listdir(ref_dir) if name.endswith('.obj')] | |
hausdorff_dists, chamfer_dists = [], [] | |
for mesh_name in tqdm(mesh_list): | |
try: | |
# sample point cloud from input | |
uid = os.path.splitext(mesh_name)[0] | |
ref_path = os.path.join(ref_dir, uid + '.obj') | |
sample_path = os.path.join(sample_dir, uid + '.obj') | |
sample, ref = sample_pc(sample_path, pc_num), sample_pc(ref_path, pc_num) | |
# compute hausdorff and chamfer distance | |
hausdorff_dist = pcu.hausdorff_distance(sample, ref) | |
chamfer_dist = pcu.chamfer_distance(sample, ref) | |
hausdorff_dists.append(hausdorff_dist) | |
chamfer_dists.append(chamfer_dist) | |
except Exception as e: | |
print(e) | |
print('hausdorff distance:', sum(hausdorff_dists) / len(hausdorff_dists)) | |
print('chamfer distance:', sum(chamfer_dists) / len(chamfer_dists)) | |
main(args.input_dir, args.output_dir) | |