| 50 | |
| 51 | |
| 52 | def accuracy(gt_points, rec_points, gt_normals=None, rec_normals=None): |
| 53 | gt_points_kd_tree = KDTree(gt_points) |
| 54 | distances, idx = gt_points_kd_tree.query(rec_points, workers=-1) |
| 55 | acc = np.mean(distances) |
| 56 | |
| 57 | acc_median = np.median(distances) |
| 58 | |
| 59 | if gt_normals is not None and rec_normals is not None: |
| 60 | normal_dot = np.sum(gt_normals[idx] * rec_normals, axis=-1) |
| 61 | normal_dot = np.abs(normal_dot) |
| 62 | |
| 63 | return acc, acc_median, np.mean(normal_dot), np.median(normal_dot) |
| 64 | |
| 65 | return acc, acc_median |
| 66 | |
| 67 | |
| 68 | def completion(gt_points, rec_points, gt_normals=None, rec_normals=None): |