From 760e44456a2ea9abc7a0a7bff8ee0d572e1eb2bb Mon Sep 17 00:00:00 2001 From: Kai Zhang Date: Sat, 20 Mar 2021 21:53:21 -0400 Subject: [PATCH] add code snippet to normalize geometry --- colmap_runner/normalize_cam_dict.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/colmap_runner/normalize_cam_dict.py b/colmap_runner/normalize_cam_dict.py index da50c3f..3d4dd06 100644 --- a/colmap_runner/normalize_cam_dict.py +++ b/colmap_runner/normalize_cam_dict.py @@ -1,6 +1,7 @@ import numpy as np import json import copy +import open3d as o3d def get_tf_cams(cam_dict, target_radius=1.): @@ -27,12 +28,26 @@ def get_tf_cams(cam_dict, target_radius=1.): return translate, scale -def normalize_cam_dict(in_cam_dict_file, out_cam_dict_file, target_radius=1.): +def normalize_cam_dict(in_cam_dict_file, out_cam_dict_file, target_radius=1., in_geometry_file=None, out_geometry_file=None): with open(in_cam_dict_file) as fp: in_cam_dict = json.load(fp) translate, scale = get_tf_cams(in_cam_dict, target_radius=target_radius) + if in_geometry_file is not None and out_geometry_file is not None: + # check this page if you encounter issue in file io: http://www.open3d.org/docs/0.9.0/tutorial/Basic/file_io.html + geometry = o3d.io.read_triangle_mesh(in_geometry_file) + + tf_translate = np.eye(4) + tf_translate[:3, 3:4] = translate + tf_scale = np.eye(4) + tf_scale[:3, :3] *= scale + tf = np.matmul(tf_scale, tf_translate) + + geometry_norm = geometry.transform(tf) + o3d.io.write_triangle_mesh(out_geometry_file, geometry_norm) + + mesh_norm = mesh.transform(tf) def transform_pose(W2C, translate, scale): C2W = np.linalg.inv(W2C) cam_center = C2W[:3, 3]