add new_added_pts compute

This commit is contained in:
hofee 2024-10-01 14:51:45 +08:00
parent 16d1f8ab67
commit 7b28cf9e91
3 changed files with 19 additions and 0 deletions

5
app.py
View File

@ -177,6 +177,9 @@ def get_frame_data():
frame_data['new_point_cloud'] = sampled_point_cloud.tolist()
frame_data['combined_point_cloud'] = combined_point_cloud.tolist()
new_added_pts = ReconstructionUtil.get_new_added_points(combined_point_cloud, sampled_point_cloud)
frame_data["new_added_pts"] = new_added_pts.tolist()
combined_point_cloud = np.concatenate([combined_point_cloud, sampled_point_cloud], axis=0)
combined_point_cloud = PtsUtil.voxel_downsample_point_cloud(combined_point_cloud, 0.01)
@ -218,6 +221,8 @@ def parse_to_frame_data(inference_result):
coverage_rate = inference_result["coverage_rate_seq"][idx]
frame_data['new_point_cloud'] = target_pts.tolist()
frame_data['combined_point_cloud'] = combined_point_cloud.tolist()
new_added_pts = ReconstructionUtil.get_new_added_points(combined_point_cloud, target_pts)
frame_data["new_added_pts"] = new_added_pts.tolist()
combined_point_cloud = np.concatenate([combined_point_cloud, target_pts], axis=0)
frame_data["coverage_rate"] = float(coverage_rate)
delta_CR = frame_data["coverage_rate"] - last_CR

2
pts.py
View File

@ -19,6 +19,8 @@ class PtsUtil:
@staticmethod
def random_downsample_point_cloud(point_cloud, num_points):
if point_cloud.shape[0] == 0:
return point_cloud
idx = np.random.choice(len(point_cloud), num_points, replace=True)
return point_cloud[idx]

View File

@ -31,6 +31,18 @@ class ReconstructionUtil:
return filtered_sampled_points[:, :3]
@staticmethod
def get_new_added_points(old_combined_pts, new_pts, threshold=0.005):
if old_combined_pts.size == 0:
return new_pts
if new_pts.size == 0:
return np.array([])
tree = cKDTree(old_combined_pts)
distances, _ = tree.query(new_pts, k=1)
new_added_points = new_pts[distances > threshold]
return new_added_points
if __name__ == "__main__":
import os
root = "/media/hofee/data/project/python/nbv_reconstruction/nbv_rec_visualize/data/sample/"